Spaces:
Running
Running
tenho uma ideia para um site que organiza o fluxo de saída de alunos. A ideia é que, quando um aluno quiser sair mais cedo, ele possa fazer uma solicitação através do site. A liberação da saída deve ser aprovada por um responsável, e o sistema oferecerá três opções de responsáveis (ex: pai/mãe, responsável legal, e coordenação escolar). A escola já utiliza uma nuvem para armazenar os dados dos alunos, então gostaria de integrar o site com essa base de dados para automatizar o processo - Initial Deployment
41fb46a verified | <html lang="pt-BR"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Liberação de Alunos - Sistema Escolar</title> | |
| <script src="https://cdn.tailwindcss.com"></script> | |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> | |
| <style> | |
| .gradient-bg { | |
| background: linear-gradient(135deg, #3b82f6 0%, #6366f1 100%); | |
| } | |
| .pulse-animation { | |
| animation: pulse 2s infinite; | |
| } | |
| @keyframes pulse { | |
| 0% { transform: scale(1); } | |
| 50% { transform: scale(1.05); } | |
| 100% { transform: scale(1); } | |
| } | |
| .notification-badge { | |
| position: absolute; | |
| top: -5px; | |
| right: -5px; | |
| width: 20px; | |
| height: 20px; | |
| background-color: #ef4444; | |
| color: white; | |
| border-radius: 50%; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 12px; | |
| } | |
| .sidebar-item:hover { | |
| background-color: rgba(255, 255, 255, 0.1); | |
| border-left: 4px solid white; | |
| } | |
| .sidebar-item.active { | |
| background-color: rgba(255, 255, 255, 0.2); | |
| border-left: 4px solid white; | |
| } | |
| .request-card:hover { | |
| transform: translateY(-5px); | |
| box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1); | |
| } | |
| .request-card { | |
| transition: all 0.3s ease; | |
| } | |
| </style> | |
| </head> | |
| <body class="bg-gray-100 font-sans"> | |
| <div class="flex h-screen overflow-hidden"> | |
| <!-- Sidebar --> | |
| <div class="hidden md:flex md:flex-shrink-0"> | |
| <div class="flex flex-col w-64 gradient-bg text-white"> | |
| <div class="flex items-center justify-center h-16 px-4"> | |
| <div class="flex items-center"> | |
| <i class="fas fa-school text-2xl mr-2"></i> | |
| <span class="text-xl font-semibold">Sistema Escolar</span> | |
| </div> | |
| </div> | |
| <div class="flex flex-col flex-grow px-4 py-4 overflow-y-auto"> | |
| <div class="space-y-1"> | |
| <div class="sidebar-item active flex items-center px-2 py-3 rounded-lg cursor-pointer"> | |
| <i class="fas fa-home mr-3"></i> | |
| <span>Painel</span> | |
| </div> | |
| <div class="sidebar-item flex items-center px-2 py-3 rounded-lg cursor-pointer"> | |
| <i class="fas fa-user-graduate mr-3"></i> | |
| <span>Alunos</span> | |
| </div> | |
| <div class="sidebar-item flex items-center px-2 py-3 rounded-lg cursor-pointer"> | |
| <i class="fas fa-calendar-alt mr-3"></i> | |
| <span>Agenda</span> | |
| </div> | |
| <div class="sidebar-item flex items-center px-2 py-3 rounded-lg cursor-pointer relative"> | |
| <i class="fas fa-envelope mr-3"></i> | |
| <span>Solicitações</span> | |
| <div class="notification-badge">3</div> | |
| </div> | |
| <div class="sidebar-item flex items-center px-2 py-3 rounded-lg cursor-pointer"> | |
| <i class="fas fa-cog mr-3"></i> | |
| <span>Configurações</span> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="px-4 py-4 border-t border-blue-400"> | |
| <div class="flex items-center"> | |
| <img class="h-10 w-10 rounded-full" src="https://randomuser.me/api/portraits/women/44.jpg" alt="User profile"> | |
| <div class="ml-3"> | |
| <p class="text-sm font-medium">Maria Silva</p> | |
| <p class="text-xs text-blue-200">Coordenadora</p> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Main content --> | |
| <div class="flex flex-col flex-1 overflow-hidden"> | |
| <!-- Top navigation --> | |
| <div class="flex items-center justify-between h-16 bg-white border-b border-gray-200 px-4"> | |
| <div class="flex items-center"> | |
| <button class="md:hidden text-gray-500 focus:outline-none"> | |
| <i class="fas fa-bars"></i> | |
| </button> | |
| <h1 class="ml-4 text-lg font-semibold text-gray-800">Liberação de Alunos</h1> | |
| </div> | |
| <div class="flex items-center space-x-4"> | |
| <button class="text-gray-500 focus:outline-none relative"> | |
| <i class="fas fa-bell"></i> | |
| <div class="notification-badge">2</div> | |
| </button> | |
| <button class="text-gray-500 focus:outline-none"> | |
| <i class="fas fa-question-circle"></i> | |
| </button> | |
| </div> | |
| </div> | |
| <!-- Content --> | |
| <div class="flex-1 overflow-y-auto p-4 md:p-6"> | |
| <div class="max-w-7xl mx-auto"> | |
| <!-- Header --> | |
| <div class="flex flex-col md:flex-row md:items-center md:justify-between mb-6"> | |
| <div> | |
| <h2 class="text-2xl font-bold text-gray-800">Solicitações de Saída</h2> | |
| <p class="text-gray-600">Gerencie as solicitações de saída antecipada dos alunos</p> | |
| </div> | |
| <button id="newRequestBtn" class="mt-4 md:mt-0 bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 rounded-lg flex items-center pulse-animation"> | |
| <i class="fas fa-plus mr-2"></i> Nova Solicitação | |
| </button> | |
| </div> | |
| <!-- Stats --> | |
| <div class="grid grid-cols-1 md:grid-cols-3 gap-4 mb-6"> | |
| <div class="bg-white rounded-lg shadow p-4"> | |
| <div class="flex items-center"> | |
| <div class="p-3 rounded-full bg-blue-100 text-blue-600 mr-4"> | |
| <i class="fas fa-clock"></i> | |
| </div> | |
| <div> | |
| <p class="text-sm text-gray-500">Pendentes</p> | |
| <p class="text-xl font-semibold">5</p> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="bg-white rounded-lg shadow p-4"> | |
| <div class="flex items-center"> | |
| <div class="p-3 rounded-full bg-green-100 text-green-600 mr-4"> | |
| <i class="fas fa-check"></i> | |
| </div> | |
| <div> | |
| <p class="text-sm text-gray-500">Aprovadas</p> | |
| <p class="text-xl font-semibold">12</p> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="bg-white rounded-lg shadow p-4"> | |
| <div class="flex items-center"> | |
| <div class="p-3 rounded-full bg-red-100 text-red-600 mr-4"> | |
| <i class="fas fa-times"></i> | |
| </div> | |
| <div> | |
| <p class="text-sm text-gray-500">Recusadas</p> | |
| <p class="text-xl font-semibold">3</p> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Requests --> | |
| <div class="bg-white rounded-lg shadow overflow-hidden mb-6"> | |
| <div class="px-4 py-3 border-b border-gray-200 flex justify-between items-center"> | |
| <h3 class="font-semibold text-gray-800">Últimas Solicitações</h3> | |
| <div class="relative"> | |
| <select class="block appearance-none bg-gray-100 border border-gray-200 text-gray-700 py-1 px-3 pr-8 rounded leading-tight focus:outline-none focus:bg-white focus:border-gray-500 text-sm"> | |
| <option>Filtrar por status</option> | |
| <option>Todas</option> | |
| <option>Pendentes</option> | |
| <option>Aprovadas</option> | |
| <option>Recusadas</option> | |
| </select> | |
| <div class="pointer-events-none absolute inset-y-0 right-0 flex items-center px-2 text-gray-700"> | |
| <i class="fas fa-chevron-down text-xs"></i> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="divide-y divide-gray-200"> | |
| <!-- Request Item --> | |
| <div class="request-card p-4 hover:bg-gray-50 cursor-pointer"> | |
| <div class="flex items-center justify-between"> | |
| <div class="flex items-center"> | |
| <div class="mr-4"> | |
| <div class="h-10 w-10 rounded-full bg-blue-100 flex items-center justify-center text-blue-600"> | |
| <i class="fas fa-user-graduate"></i> | |
| </div> | |
| </div> | |
| <div> | |
| <p class="font-medium">João Pedro Silva</p> | |
| <p class="text-sm text-gray-500">8º Ano - Turma A</p> | |
| </div> | |
| </div> | |
| <div class="text-right"> | |
| <p class="text-sm font-medium text-yellow-600">Pendente</p> | |
| <p class="text-xs text-gray-500">Hoje, 10:30</p> | |
| </div> | |
| </div> | |
| <div class="mt-3 ml-14"> | |
| <p class="text-sm text-gray-700"><span class="font-medium">Motivo:</span> Consulta médica</p> | |
| <p class="text-sm text-gray-700"><span class="font-medium">Responsável:</span> Mãe</p> | |
| <div class="flex space-x-2 mt-2"> | |
| <button class="text-xs bg-green-100 text-green-700 px-2 py-1 rounded hover:bg-green-200"> | |
| <i class="fas fa-check mr-1"></i> Aprovar | |
| </button> | |
| <button class="text-xs bg-red-100 text-red-700 px-2 py-1 rounded hover:bg-red-200"> | |
| <i class="fas fa-times mr-1"></i> Recusar | |
| </button> | |
| <button class="text-xs bg-blue-100 text-blue-700 px-2 py-1 rounded hover:bg-blue-200"> | |
| <i class="fas fa-eye mr-1"></i> Detalhes | |
| </button> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Request Item --> | |
| <div class="request-card p-4 hover:bg-gray-50 cursor-pointer"> | |
| <div class="flex items-center justify-between"> | |
| <div class="flex items-center"> | |
| <div class="mr-4"> | |
| <div class="h-10 w-10 rounded-full bg-blue-100 flex items-center justify-center text-blue-600"> | |
| <i class="fas fa-user-graduate"></i> | |
| </div> | |
| </div> | |
| <div> | |
| <p class="font-medium">Ana Carolina Oliveira</p> | |
| <p class="text-sm text-gray-500">9º Ano - Turma B</p> | |
| </div> | |
| </div> | |
| <div class="text-right"> | |
| <p class="text-sm font-medium text-green-600">Aprovada</p> | |
| <p class="text-xs text-gray-500">Ontem, 14:15</p> | |
| </div> | |
| </div> | |
| <div class="mt-3 ml-14"> | |
| <p class="text-sm text-gray-700"><span class="font-medium">Motivo:</span> Compromisso familiar</p> | |
| <p class="text-sm text-gray-700"><span class="font-medium">Responsável:</span> Pai</p> | |
| <div class="flex space-x-2 mt-2"> | |
| <button class="text-xs bg-blue-100 text-blue-700 px-2 py-1 rounded hover:bg-blue-200"> | |
| <i class="fas fa-eye mr-1"></i> Detalhes | |
| </button> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Request Item --> | |
| <div class="request-card p-4 hover:bg-gray-50 cursor-pointer"> | |
| <div class="flex items-center justify-between"> | |
| <div class="flex items-center"> | |
| <div class="mr-4"> | |
| <div class="h-10 w-10 rounded-full bg-blue-100 flex items-center justify-center text-blue-600"> | |
| <i class="fas fa-user-graduate"></i> | |
| </div> | |
| </div> | |
| <div> | |
| <p class="font-medium">Lucas Mendes</p> | |
| <p class="text-sm text-gray-500">7º Ano - Turma C</p> | |
| </div> | |
| </div> | |
| <div class="text-right"> | |
| <p class="text-sm font-medium text-red-600">Recusada</p> | |
| <p class="text-xs text-gray-500">Ontem, 09:45</p> | |
| </div> | |
| </div> | |
| <div class="mt-3 ml-14"> | |
| <p class="text-sm text-gray-700"><span class="font-medium">Motivo:</span> Atividade extracurricular</p> | |
| <p class="text-sm text-gray-700"><span class="font-medium">Responsável:</span> Coordenação</p> | |
| <p class="text-sm text-red-500"><span class="font-medium">Justificativa:</span> Atividade não autorizada</p> | |
| <div class="flex space-x-2 mt-2"> | |
| <button class="text-xs bg-blue-100 text-blue-700 px-2 py-1 rounded hover:bg-blue-200"> | |
| <i class="fas fa-eye mr-1"></i> Detalhes | |
| </button> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="px-4 py-3 bg-gray-50 text-center"> | |
| <button class="text-blue-600 hover:text-blue-800 text-sm font-medium"> | |
| Carregar mais solicitações <i class="fas fa-chevron-down ml-1"></i> | |
| </button> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- New Request Modal --> | |
| <div id="newRequestModal" class="fixed inset-0 z-50 hidden overflow-y-auto"> | |
| <div class="flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0"> | |
| <div class="fixed inset-0 transition-opacity" aria-hidden="true"> | |
| <div class="absolute inset-0 bg-gray-500 opacity-75"></div> | |
| </div> | |
| <span class="hidden sm:inline-block sm:align-middle sm:h-screen" aria-hidden="true">​</span> | |
| <div class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full"> | |
| <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4"> | |
| <div class="sm:flex sm:items-start"> | |
| <div class="mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"> | |
| <i class="fas fa-sign-out-alt text-blue-600"></i> | |
| </div> | |
| <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | |
| <h3 class="text-lg leading-6 font-medium text-gray-900">Nova Solicitação de Saída</h3> | |
| <div class="mt-2"> | |
| <form id="requestForm"> | |
| <div class="mb-4"> | |
| <label for="student" class="block text-sm font-medium text-gray-700">Aluno</label> | |
| <select id="student" class="mt-1 block w-full pl-3 pr-10 py-2 text-base border-gray-300 focus:outline-none focus:ring-blue-500 focus:border-blue-500 sm:text-sm rounded-md border"> | |
| <option>Selecione um aluno</option> | |
| <option>João Pedro Silva - 8º Ano A</option> | |
| <option>Ana Carolina Oliveira - 9º Ano B</option> | |
| <option>Lucas Mendes - 7º Ano C</option> | |
| <option>Maria Fernanda Costa - 6º Ano A</option> | |
| </select> | |
| </div> | |
| <div class="mb-4"> | |
| <label for="date" class="block text-sm font-medium text-gray-700">Data e Hora</label> | |
| <div class="mt-1 flex rounded-md shadow-sm"> | |
| <input type="date" id="date" class="flex-1 min-w-0 block w-full px-3 py-2 rounded-none rounded-l-md border-gray-300 focus:outline-none focus:ring-blue-500 focus:border-blue-500 sm:text-sm border"> | |
| <input type="time" id="time" class="flex-1 min-w-0 block w-full px-3 py-2 rounded-none rounded-r-md border-gray-300 focus:outline-none focus:ring-blue-500 focus:border-blue-500 sm:text-sm border"> | |
| </div> | |
| </div> | |
| <div class="mb-4"> | |
| <label for="reason" class="block text-sm font-medium text-gray-700">Motivo</label> | |
| <textarea id="reason" rows="3" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500 sm:text-sm p-2" placeholder="Descreva o motivo da saída antecipada"></textarea> | |
| </div> | |
| <div class="mb-4"> | |
| <label class="block text-sm font-medium text-gray-700">Responsável pela liberação</label> | |
| <div class="mt-2 space-y-2"> | |
| <div class="flex items-center"> | |
| <input id="mother" name="responsible" type="radio" class="focus:ring-blue-500 h-4 w-4 text-blue-600 border-gray-300"> | |
| <label for="mother" class="ml-3 block text-sm font-medium text-gray-700">Mãe</label> | |
| </div> | |
| <div class="flex items-center"> | |
| <input id="father" name="responsible" type="radio" class="focus:ring-blue-500 h-4 w-4 text-blue-600 border-gray-300"> | |
| <label for="father" class="ml-3 block text-sm font-medium text-gray-700">Pai</label> | |
| </div> | |
| <div class="flex items-center"> | |
| <input id="legal" name="responsible" type="radio" class="focus:ring-blue-500 h-4 w-4 text-blue-600 border-gray-300"> | |
| <label for="legal" class="ml-3 block text-sm font-medium text-gray-700">Responsável Legal</label> | |
| </div> | |
| <div class="flex items-center"> | |
| <input id="coordination" name="responsible" type="radio" class="focus:ring-blue-500 h-4 w-4 text-blue-600 border-gray-300"> | |
| <label for="coordination" class="ml-3 block text-sm font-medium text-gray-700">Coordenação Escolar</label> | |
| </div> | |
| </div> | |
| </div> | |
| </form> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse"> | |
| <button type="button" class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:ml-3 sm:w-auto sm:text-sm"> | |
| Enviar Solicitação | |
| </button> | |
| <button id="cancelRequestBtn" type="button" class="mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:mt-0 sm:ml-3 sm:w-auto sm:text-sm"> | |
| Cancelar | |
| </button> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Request Details Modal --> | |
| <div id="detailsModal" class="fixed inset-0 z-50 hidden overflow-y-auto"> | |
| <div class="flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0"> | |
| <div class="fixed inset-0 transition-opacity" aria-hidden="true"> | |
| <div class="absolute inset-0 bg-gray-500 opacity-75"></div> | |
| </div> | |
| <span class="hidden sm:inline-block sm:align-middle sm:h-screen" aria-hidden="true">​</span> | |
| <div class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full"> | |
| <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4"> | |
| <div class="sm:flex sm:items-start"> | |
| <div class="mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"> | |
| <i class="fas fa-info-circle text-blue-600"></i> | |
| </div> | |
| <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | |
| <h3 class="text-lg leading-6 font-medium text-gray-900">Detalhes da Solicitação</h3> | |
| <div class="mt-2"> | |
| <div class="space-y-4"> | |
| <div> | |
| <p class="text-sm font-medium text-gray-500">Aluno</p> | |
| <p class="mt-1 text-sm text-gray-900">João Pedro Silva - 8º Ano A</p> | |
| </div> | |
| <div> | |
| <p class="text-sm font-medium text-gray-500">Data e Hora</p> | |
| <p class="mt-1 text-sm text-gray-900">15/06/2023 às 10:30</p> | |
| </div> | |
| <div> | |
| <p class="text-sm font-medium text-gray-500">Motivo</p> | |
| <p class="mt-1 text-sm text-gray-900">Consulta médica com pediatra no Hospital Municipal</p> | |
| </div> | |
| <div> | |
| <p class="text-sm font-medium text-gray-500">Responsável</p> | |
| <p class="mt-1 text-sm text-gray-900">Mãe - Sra. Ana Silva</p> | |
| </div> | |
| <div> | |
| <p class="text-sm font-medium text-gray-500">Status</p> | |
| <p class="mt-1 text-sm font-medium text-yellow-600">Pendente de aprovação</p> | |
| </div> | |
| <div class="border-t border-gray-200 pt-4"> | |
| <p class="text-sm font-medium text-gray-500">Ações</p> | |
| <div class="mt-2 flex space-x-2"> | |
| <button class="inline-flex items-center px-3 py-1 border border-transparent text-sm leading-4 font-medium rounded-md shadow-sm text-white bg-green-600 hover:bg-green-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-500"> | |
| <i class="fas fa-check mr-1"></i> Aprovar | |
| </button> | |
| <button class="inline-flex items-center px-3 py-1 border border-transparent text-sm leading-4 font-medium rounded-md shadow-sm text-white bg-red-600 hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500"> | |
| <i class="fas fa-times mr-1"></i> Recusar | |
| </button> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse"> | |
| <button id="closeDetailsBtn" type="button" class="mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:mt-0 sm:ml-3 sm:w-auto sm:text-sm"> | |
| Fechar | |
| </button> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <script> | |
| // Modal handling | |
| const newRequestBtn = document.getElementById('newRequestBtn'); | |
| const newRequestModal = document.getElementById('newRequestModal'); | |
| const cancelRequestBtn = document.getElementById('cancelRequestBtn'); | |
| const detailsModal = document.getElementById('detailsModal'); | |
| const closeDetailsBtn = document.getElementById('closeDetailsBtn'); | |
| // Show new request modal | |
| newRequestBtn.addEventListener('click', () => { | |
| newRequestModal.classList.remove('hidden'); | |
| }); | |
| // Hide new request modal | |
| cancelRequestBtn.addEventListener('click', () => { | |
| newRequestModal.classList.add('hidden'); | |
| }); | |
| // Show details modal (for demo purposes, would be dynamic in real app) | |
| document.querySelectorAll('.request-card').forEach(card => { | |
| card.addEventListener('click', () => { | |
| detailsModal.classList.remove('hidden'); | |
| }); | |
| }); | |
| // Hide details modal | |
| closeDetailsBtn.addEventListener('click', () => { | |
| detailsModal.classList.add('hidden'); | |
| }); | |
| // Close modals when clicking outside | |
| window.addEventListener('click', (event) => { | |
| if (event.target === newRequestModal) { | |
| newRequestModal.classList.add('hidden'); | |
| } | |
| if (event.target === detailsModal) { | |
| detailsModal.classList.add('hidden'); | |
| } | |
| }); | |
| // Simulate loading students from cloud (integration point) | |
| // In a real implementation, this would be an API call to the school's cloud system | |
| function loadStudentsFromCloud() { | |
| console.log('Carregando dados dos alunos da nuvem escolar...'); | |
| // Aqui você faria a integração com a API da nuvem da escola | |
| // Exemplo: | |
| // fetch('https://api.escola.com/alunos') | |
| // .then(response => response.json()) | |
| // .then(data => populateStudentDropdown(data)) | |
| // .catch(error => console.error('Erro ao carregar alunos:', error)); | |
| } | |
| // Initialize | |
| document.addEventListener('DOMContentLoaded', () => { | |
| loadStudentsFromCloud(); | |
| }); | |
| </script> | |
| <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=pintogames/po" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> | |
| </html> |