From 9d450ad980819f1aec2e5a9f792b377b53a38b47 Mon Sep 17 00:00:00 2001 From: Jeferson Lucas Date: Mon, 8 Jun 2020 23:31:32 -0300 Subject: [PATCH] Completed dashboard #5 --- WIKI.md | 159 ----------- api/dashboard/assets/js/app.js | 501 +++------------------------------ api/dashboard/index.html | 138 ++++++--- assets/img/logo-white.ico | Bin 0 -> 13418 bytes assets/img/logo-white.png | Bin 0 -> 43978 bytes 5 files changed, 133 insertions(+), 665 deletions(-) delete mode 100644 WIKI.md create mode 100644 assets/img/logo-white.ico create mode 100644 assets/img/logo-white.png diff --git a/WIKI.md b/WIKI.md deleted file mode 100644 index 7729a04..0000000 --- a/WIKI.md +++ /dev/null @@ -1,159 +0,0 @@ -# Reserve - -O Reserve é um aplicativo de reservas que utiliza as funcionalidades da API - localStorage do navegador para armazenamento da informações. - -## Começando - -Essas instruções fornecerão uma cópia do projeto em execução na sua máquina local. - -### Instalando -Siga passo a passo as seguinte formas de obter o código na sua máquina local. - -**1. Clonando o repositório**. - -Para clonar o esse repositório na sua máquina local, utilize as linhas de comando: - -``` -#Clonar com SSH - -mkdir reserve -cd reserve -git init -git clone git@github.com:JefersonLucas/reserve.git -``` - -``` -#Clonar com HTTPS - -mkdir reserve -cd reserve -git init -git clone https://github.com/JefersonLucas/reserve.git -``` - -**2. Baixando o repositório**. - -Você também pode [baixar](https://github.com/JefersonLucas/reserve/archive/master.zip) o repositório em formato zip. - -## Como funciona? -O aplicativo Reserve funciona baseado na funcionalidade do localStorage do navegador para inserção, leitura, edição e remoção das reservas efetuadas. Com esse aplicativo será possível: -- Efetuar cadastros; -- Visualizar lista cadastradas; -- Pesquisar e filtrar, -- Editar, excluir e imprimir as reservas cadastras. - -### Utilização - - -### Utilização - -1. Primeiro acesso -No primeiro acesso, o aplicativo vai requisitar um nome de **administrador**. Você poderá editar o seu nome de administrador a qualquer hora no menu de configurações. - -**Importante!**: O aplicativo deve ser utilizado um navegador de preferência, pois os dados armazenados são gravados no navegador, ou seja, os dados gravados em um navegador não será repassado pra outro navegador. - -2. Efetuando uma reserva - -Insira os dados do usuário da reserva nos campos de formulário e confirma a reserva, os dados deve ser digitados nos seus devidos campos respectivos. Tudo certo basta confirmar no **botão de cadastro**, se tudo estiver certo, um modal de confirmação da reserva irá ser exibido, caso ao contrário um modal de erro irá ser exibido. Depois da conclusão de uma reserva ela automaticamente exibida em uma tabela com os dados cadastrados. Cada reserva vem exibida junto um status, e botões de opção de reserva. - -3. Botões de opções da reserva: -* **Vizualizar**: exibe em um modal todos os detatlhes da reserva; -* **Editar**: tem a possibilidade de editar uma determinada reserva modificando os seus dados, depois da alteração um modal é exibido contendo os dados modificados; -* **Excluir**: exclui o reserva e todos os seus dados; -* **Verificar**: verifica e checa a reserva modificando o seu status. - -4. As reservas são dividas em três status: -* **Aguardando**: quando o horário da reserva ainda não está no hora prevista, quando atingir a hora um modal de alerta é exibido informando o nome do aluno ou professor responsável pela reserva; -* **Em uso**: Quando a reserva está em uso pelo responsável pelo equipamento; -* **Recolhida**: Quando a reserva já está em poder dos funcionários responsáveis pela equipamento. - -5. Vizualizando uma reserva - -Após ter efetuado uma reserva, procure na coluna "Opções" um botão com um ícone semelhante a uma visão, esse botão dá a possibilidade de visualizar todos os detalhes da reserva desde a hora e data da reserva até a hora de montagem (uso de reserva) e recolhimento da reserva. - -6. Alterando uma reserva - -Caso sinta necessidade de alterar algum item de uma reserva, procure na coluna "Opções" um botão com um ícone de um lápis, esse botão altera os itens da reserva substituindo os valores da antiga e cadastrando novos valores. - - **Atenção**: O aplicativo permite alterar a reserva até no mesmo dia da reserva e 5 minutos antes do horário programado para a reserva ser utilizada, depois disso o aplicativo não permite mais alterações. - -7. Excluindo uma reserva - -Se o usuário sentir necessidade de excluir alguma determinada reserva, na coluna "Opções" tem um botão com um ícone de uma lixeira que apaga do registro do armazenamento as informações da reserva. - -**Atenção**: após confirmação da exclusão da reserva, essa operação não há mais volta, tenha cuidado com essa função. - -8. Verificando uma reserva - -Se alguma reserva já estiver em uso ou ela estiver sido recolhida, na coluna "Opções" um botão com um ícone semelhante há um usuário verificado, esse botão trata com os diferentes status da reserva modificando o status, ele guarda a data e a hora da reserva em uso e a reserva recolhida. - -9. Pesquisando uma reserva - -Para efetuar uma pesquisa basta buscar nos campos os dados que tenha interesse de pesquisa caso tenha tenha um resultado semelhante a pesquisa o aplicativo retorna os dados desejado. - -10. Alerta de reserva - -Quando uma reserva estiver no dia e na hora de seu uso, um alerta será exibido informando todos os detalhes da reserva, facilitando o gerênciamento das reservas. - -## Changelog - -| Versão | Data | Funcionalidades | -| :----: | :--: | :-------------- | -| (v1.0.0) | 20/06/2018 | Cadastro e validação das reservas; Consulta e filtro dos cadastros; Possibilidade de impressão de reservas. | -| (v1.0.1) | 24/06/2018 | Botão visualizar para ver a reserva do responsável detalhadamente; Botão atualizar para recarregar a lista; Página de Reservas listando todas as reservas cadastradas; Link para o site do Colégio e Faculdade Sena Aires; Mudança no padrão das cores dos botões; Validação dupla na pesquisa de filtro e no cadastro de reservas.| -| (v1.0.2) | 24/06/2018 | Indentificação da versão e link do GitHub; Titles dos indentificadores da reservas. | -| (v1.0.3) | 25/06/2018 | Ícone popover da página consulta.html; Remoção do underline do link para o GitHub. | -| (v1.1.0-beta) | 26/06/2018 | Liberada como versão de testes para uso diário. | -| (v1.2.0-beta) | 28/06/2018 | Possibilidade de edição de reserva; Validação da edição de reserva; Visualização mais completa no modo visualização; Limitador de data para cadastro e consulta; Código mais limpo e mais leve. | -| (v1.2.1-beta) | 29/06/2018 | Aprimoramento na validação do cadastro de reservas. | -| (v1.2.2-beta) | 01/07/2018 | Formatação da data no formato EUA para o formato BR. | -| (v1.3.0-beta) | 02/07/2018 | Nova função de lista de consulta exibindo uma coluna "opções" com os botôes de visualização, edição e exclusão; Validação dupla na exclusão da reserva; Recuperendo valores das reservas e setando como default na edição das reservas. | -| (v1.4.0-beta) | 03/07/2018 | Apresentação de um modal de confirmação com as informações do cadastro da quando uma reserva é editada; Revisão no texto de validação. | -| (v1.5.0-beta) | 24/07/2018 | Adição de cadastro, vizualização, edição e exclusão de reservas para Alunos; Todas as funcionalidades em uma única página; Mudança da aparência dos inputs; Alteração do background dos modais e cor do texto das tabelas dos modais; botões; Troca de ícones e botões. | -| (v1.6.0-beta) | 05/08/2018 | Indentificação de usuário; data e relógio exibidos no menu de navegação; alerta de reserva; status de reserva; verificação de reserva; código mais inteligente e funcional. | -| (v1.6.1-beta) **new** | 09/08/2018 | Modificação nas funções de call back por arrow functions; organização das funções; ajuste no texto nos modais e enxutamento do código. | - -### Bugs / Defeitos - -| Correção | Bug | -| :------: | :---| -| (descontinuado na versão 1.0.1) | *Tooltip* continua ativado mesmo com o mouse não estando em cima do botão de filtro. | -| (descontinuado na versão 1.0.1) | Parte do placeholder do input "*data*" some em janela reduzida (somente no navegador Chrome). | -| (corrigido na versão 1.0.1) | Botão de informação com a função *popover* pode ser clicado abaixo do própio botão. | -| (corrigido na versão 1.0.2) | Quebra de alinhamento do link do GitHub e o indentificador do da versão no menu de navegação. | -| *** | A página consulta atualiza quando todos os campos são preenchidos na pesquisa sem retornar nenhum resultado. | - -### Paths / Correções - -| Correção | Versão | -| :------: | :------ | -| Ortografia. | (versão 1.0.0) | -| (versão 1.0.1) | Substituição do placeholder e da variável "*Professor*" por "*Responsável*". | -| (versão 1.0.1) | Realocamento dos botões de visualizar e excluir quando carrega a lista de reserva para quando o usuário filtra as reservas. | -| (versão 1.0.1) | União do horário de início e término em um única coluna na tabela de consulta. | -| (versão 1.2.1-beta) | Validação de cadastro. | -| (versão 1.2.2-beta) | Formatação da data EUA para BR. | -| (versão 1.3.0-beta) | Validação duplas de edição e exclusão de cadastro. | - -## Construído com - -* [Bootstrap](https://getbootstrap.com/) - Framework front end -* [Font Awesome](https://maven.apache.org/) - Framework de pacote de ícones - -## Contribuindo - -Leia o [CONTRIBUTING.md](https://github.com/JefersonLucas/reserve/blob/master/CONTRIBUTING.md) para obter detalhes sobre nosso código de conduta e o processo para enviar solicitações pull para nós. - -## Versionamento - -Usamos o [SemVer](https://semver.org/lang/pt-BR/) para controle de versão. Para as versões disponíveis, consulte as [tags nesse repositório](https://github.com/JefersonLucas/reserve/tags). - -## Autores - -* [@JefersonLucas](https://github.com/JefersonLucas) - _Idealizador_. - -Veja também a lista completa de [contribuidores](https://github.com/JefersonLucas/reserve/contributors) que participaram deste projeto. - -## Licença - -Este projeto está licenciado sob a licença MIT - consulte o arquivo [LICENSE.md](https://github.com/JefersonLucas/reserve/blob/master/LICENSE) para obter detalhes. \ No newline at end of file diff --git a/api/dashboard/assets/js/app.js b/api/dashboard/assets/js/app.js index 7975be8..8d1d55e 100644 --- a/api/dashboard/assets/js/app.js +++ b/api/dashboard/assets/js/app.js @@ -44,21 +44,6 @@ } } // -// CLASSE FILHO / RESERVA DO ALUNO - class ReservaAluno extends Reserva { - constructor(nome, equipamento, status, matricula, serial, dataA, horaA, dataB, horaB, horaC) { - // ACESSO AO ATRIBUTO PAI RESERVA - super(nome, equipamento, status); - this.matricula = matricula; - this.serial = serial; - this.dataA = dataA; - this.dataB = dataB; - this.horaA = horaA; - this.horaB = horaB; - this.horaC = horaC; - } - } -// // CLASSE FUNCIONÁRIO class Funcionario { constructor(nome, dataA, horaA, versao) { @@ -205,28 +190,7 @@ // RETORNA AS RESERVAS return reservas; } - // RECUPERAR DADOS DA RESERVA DO ALUNO - recuperaReservaAluno() { - // DEFINIÇÃO DE UM ARRAY DE RESERVAS - let reservas = Array(); - // PEGANDO O ID DO ALUNO NO LOCAL STORAGE - let id = localStorage.getItem("idAluno"); - // ESTRUTURA FOR PRA EXTRAIR OS IDS DAS RESERVAS - for(let i = 0; i <= id; i++){ - // CONVERTENDO AS RESERVAS EM JSON - let reserva = JSON.parse(localStorage.getItem(i)); - // CASO ALGUM ITEM DA RESERVA SEJA INDEFINIDO CONTINUA E IGNORA A RESERVA - if(reserva === null || reserva.nome === undefined || reserva.equipamento === undefined || reserva.matricula === undefined || reserva.serial === undefined) { - continue; - } - // ID DA RESERVA RECEBE O VALOR DE I - reserva.id = i; - // INSERÇÃO DAS RESERVAS NO ARRAY RESERVAS - reservas.push(reserva); - } - // RETORNA AS RESERVAS - return reservas; - } + // RECUPERAR DADOS DO FUNCIONÁRIO recuperarDadosFuncionario() { // @@ -364,65 +328,6 @@ } } // -// FUNÇÃO CADASTRAR A RESERVA DO ALUNO - function cadastrarReservaAluno() { - // RESGATANDO O VALOR DA RESERVA - let nome = document.getElementById('aluno'); - let equipamento = document.getElementById('equipamento'); - let matricula = document.getElementById('matricula'); - let serial = document.getElementById('serial'); - let dataA = document.getElementById('dataA'); - let horaA = document.getElementById('horaA'); - let status = null; - let horaB = null; - let dataB = null; - let horaC = "00:00:00"; - - if(horaA.value == horaAtualB(0,0) && dataA.value == dataAtual()) { - // STATUS - status = "Em uso"; - // HORA - horaA = horaAtualB(0,0); - horaB = horaAtual(0,0,0); - // DATA - dataA = dataAtual(); - dataB = dataAtual(); - } - else { - // STATUS - status = "Aguardando"; - // HORA - horaA = document.getElementById('horaA').value; - horaB = "00:00:00"; - // DATA - dataA = document.getElementById('dataA').value; - dataB = "0000-00-00"; - } - // - // INSTÂNCIA DA RESERVA DO ALUNO - reserva = new ReservaAluno(nome.value.trim(), equipamento.value.trim(), status, matricula.value.trim(), serial.value.trim(), dataA, horaA, dataB, horaB, horaC); - // VALIDAÇÃO - if(reserva.validarDados()){ - // GRAVA AS INFORMAÇÕES DA RESERVA NA CLASSE BANCODEDADOS - bancodedados.gravar(reserva, "Aluno"); - // MODAL DE SUCESSO - modalCadastar(reserva.nome, tabelaAlunoA("success", reserva.matricula, reserva.equipamento, reserva.serial, dataBR(reserva.dataA), horaSeg(reserva.horaA)), "Aluno"); - // LIMPA OS VALORES - nome.value = ""; - matricula.value = ""; - equipamento.value = ""; - serial.value = ""; - horaA.value = ""; - dataA.value = ""; - // - } else { - // MODAL DE ERRO - modalCadastrarErro(); - // - } - // - } -// // CADASTRAR NOME DO FUNCIONÁRIO function cadastrarFuncionario() { // VERIFICA O NOME NO LOCAL STORAGE @@ -545,114 +450,8 @@ } // //=============================================================|| -// PÁGINA DO ALUNO -// -// LISTA DE RESERVAS DOS ALUNOS - function ListasReservasAlunos() { - // CHAMA FUNÇÕES DO APP - app(); - // - // DECLARAÇÃO DO ARRAY RESERVAS - let reservas = Array(); - // SETANDO O VALOR DO ARRAY NA VARIÁVEL - reservas = bancodedados.recuperaReservaAluno(); - // SELECIONANDO O ELEMENTO TBODY - let listaReservas = document.getElementById("listaAlunos"); - // LISTANTO A RESERVA - reservas.forEach(function(a) { - // CRIANDO A LINHA (TR) - let linha = listaReservas.insertRow(); - // CRIAR AS COLUNAS (TD) - linha.insertCell(0).innerHTML = a.nome; - linha.insertCell(1).innerHTML = a.matricula; - linha.insertCell(2).innerHTML = a.equipamento; - linha.insertCell(3).innerHTML = a.serial; - linha.insertCell(4).innerHTML = cor(a.status); - // INSERÇÃO DO BOTÃO DE VIZUALIZAÇÃO/EDIÇÃO/EXCLUSÃO - linha.insertCell(5).append( - // - botaoVizualizarAluno( a.id, a.nome, a.equipamento, a.status, a.matricula, a.serial, a.dataA, a.horaA, a.dataB, a.horaB, a.horaC)," ", - botaoEditarAluno( a.id, a.nome, a.equipamento, a.status, a.matricula, a.serial, a.dataA, a.horaA, a.dataB, a.horaB, a.horaC)," ", - botaoExcluirAluno( a.id, a.nome, a.equipamento, a.status, a.matricula, a.serial, a.dataA, a.horaA, a.dataB, a.horaB, a.horaC)," ", - botaoVerificarAluno( a.id, a.nome, a.equipamento, a.status, a.matricula, a.serial, a.dataA, a.horaA, a.dataB, a.horaB, a.horaC) - // - ); - // - }) - // - } -// -// PESQUISA RESERVA DO ALUNO - function pesquisarReservaAluno() { - // RESGATANDO O VALOR DA RESERVA - let nome = document.getElementById('aluno').value; - let equipamento = document.getElementById('equipamento').value; - let matricula = document.getElementById('matricula').value; - let serial = document.getElementById('serial').value; - let dataA = document.getElementById('dataA').value; - let horaA = document.getElementById('horaA').value; - let status = ""; - // VALIDAÇÃO DA PESQUISA - if(nome == "" && equipamento == "" && matricula == "" && serial == "" && dataA == "" && horaA == "") { - // MODAL DE ERRO - modalPesquisarErro(); - // - } - else { - // INSTÂNCIA DA RESERVA DO ALUNO - reserva = new ReservaAluno(nome.trim(), equipamento.trim(), status, matricula.trim(), serial.trim(), dataA, horaA); - console.log(reserva); - // INTÂNCIA DA RESERVA SENDO PASSADA PRO MÉTODO DE PESQUISA - let reservas = bancodedados.pesquisaReserva(reserva, "Aluno"); - // SELECIONANDO O ELEMENTO DA TABELA - let listaReservas = document.getElementById("listaAlunos"); - // LIMPANDO TABELA - listaReservas.innerHTML = ""; - // LISTANDO A PESQUISA - reservas.forEach(function(a) { - // CRIANDO A LINHA - let linha = listaReservas.insertRow(); - // CRIAR AS COLUNAS - linha.insertCell(0).innerHTML = a.nome; - linha.insertCell(1).innerHTML = a.matricula; - linha.insertCell(2).innerHTML = a.equipamento; - linha.insertCell(3).innerHTML = a.serial; - linha.insertCell(4).innerHTML = cor(a.status); - // INSERÇÃO DO BOTÃO DE VIZUALIZAÇÃO/EDIÇÃO/EXCLUSÃO - linha.insertCell(5).append( - // - botaoVizualizarAluno( a.id, a.nome, a.equipamento, a.status, a.matricula, a.serial, a.dataA, a.horaA, a.dataB, a.horaB, a.horaC)," ", - botaoEditarAluno( a.id, a.nome, a.equipamento, a.status, a.matricula, a.serial, a.dataA, a.horaA, a.dataB, a.horaB, a.horaC)," ", - botaoExcluirAluno( a.id, a.nome, a.equipamento, a.status, a.matricula, a.serial, a.dataA, a.horaA, a.dataB, a.horaB, a.horaC)," ", - botaoVerificarAluno( a.id, a.nome, a.equipamento, a.status, a.matricula, a.serial, a.dataA, a.horaA, a.dataB, a.horaB, a.horaC) - // - ); - // - }) - } - } -// -//=============================================================|| // FUNÇÕES DOS BOTÕES // -// BOTÃO VIZUALIZAÇÃO - let botaoVizualizarAluno = (id, nome, equipamento, status, matricula, serial, dataA, horaA, dataB, horaB, horaC) => { - // BOTAO DE VIZUALIZAÇÃO - let ver = document.createElement("button"); - ver.className = 'btn btn-outline-info btn-sm'; - ver.title = "Vizualizar"; - ver.innerHTML = ''; - ver.id = `id-ver-${id}`; - // NO CLICAR DO BOTÃO OS DETALHES DA RESERVA SERÁ EXIBIDO EM UM MODAL - ver.onclick = function() { - // MODAL DE VIZUALIÇÃO - modalVizualizar(nome, tabelaAlunoB("info", equipamento, cor(status), matricula, serial, dataBR(dataA), horaSeg(horaA), dataBR(dataB), horaB, horaC), "Aluno"); - // - } - // RETORNO - return ver; - } -// // BOTAO DE VIZUALIZAÇÃO let botaoVizualizarProfessor = (id, nome, equipamento, status, sala, dataA, horaA, dataB, horaB, horaC, horaD) => { // BOTAO DE VIZUALIZAÇÃO @@ -670,71 +469,6 @@ return ver; } // -// BOTÃO EDITAR - let botaoEditarAluno = (id, nome, equipamento, status, matricula, serial, dataA, horaA, dataB, horaB, horaC) => { - // BOTAO DE EDIÇÃO - let editar = document.createElement("button"); - editar.className = 'btn btn-outline-success btn-sm'; - editar.title = "Editar"; - editar.innerHTML = ''; - editar.id = `id-editar-${id}`; - // - editar.onclick = function() { - // DATA DA RESERVA FOR MAIOR OU IGUAL A DATA EXATA - if(dataA >= dataAtual()) { - // HORA 5 MIM ANTES - if(horaAtualB(0,5) <= horaA) { - // STATUS AGUARDANDO - if(status == "Aguardando") { - // VERIFICAÇÃO - let = resposta = prompt("Deseja EDITAR a reserva do(a) Aluno(a) "+nome+"?","Não"); - // VALIDAÇÃO DE VERIFICAÇÃO - if(resposta == "sim" || resposta == "SIM" || resposta == "Sim" || resposta == "s" || resposta == "S") { - // NOVOS VALORES SERÃO RECEBIDOS - let _nome = prompt("Nome do(a) Aluno(a):", nome).trim(); - let _matricula = prompt("Matrícula:", matricula).trim(); - let _equipamento = prompt("Descrição do equipamento:", equipamento).trim(); - let _serial = prompt("Nº de série:", serial).trim(); - let _dataA = prompt("Data:", dataBR(dataA)).trim(); - let _horaA = prompt("Hora:", horaA).trim(); - // CRIAÇÃO DE UMA NOVA INSTÂNCIA RESERVA - reserva = new ReservaAluno(_nome, _equipamento, status, _matricula, _serial, dataEUA(_dataA), _horaA, dataB, horaB, horaC); - // VALIDAR DADOS - if (reserva.validarDados()) { - // FORMATAR O ID - let id = this.id.replace('id-editar-',''); - // REMOVE A RESERVA - bancodedados.removerReserva(id); - // MODAL DE EDIÇÃO - modalEditar(_nome, tabelaAlunoA("success", _equipamento, _matricula, _serial, _dataA, horaSeg(_horaA)), "Aluno"); - // GRAVA AS INFORMAÇÕES NO BANCO DE DADOS - bancodedados.gravar(reserva, "Aluno"); - // - } - // ERRO - else { - // - modalErro(); - // - } - } - } - else { - modalEditarErro(nome, "Aluno"); - } - } - else { - modalEditarErro(nome, "Aluno"); - } - } - else { - modalEditarErro(nome, "Aluno"); - } - } - // RETORNO - return editar; - } -// // let botaoEditarProfessor = (id, nome, equipamento, status, sala, dataA, horaA, dataB, horaB, horaC, horaD) => { // BOTAO DE EDIÇÃO @@ -745,88 +479,43 @@ editar.id = `id-editar-${id}`; // editar.onclick = function() { - // DATA DA RESERVA FOR MAIOR OU IGUAL A DATA EXATA - // if(dataA >= dataAtual()) { - // // HORA 5 MIM ANTES - // if(horaAtualB(0,0) <= horaA) { - // // STATUS AGUARDANDO - // if(status == "Aguardando") { - // VERIFICAÇÃO - let = resposta = prompt("Deseja EDITAR a reserva do(a) Professor(a) "+nome+"?","Não"); - // VALIDAÇÃO DE VERIFICAÇÃO - if(resposta == "sim" || resposta == "SIM" || resposta == "Sim" || resposta == "s" || resposta == "S") { - // NOVOS VALORES SERÃO RECEBIDOS - let _nome = prompt("Nome do(a) Professor(a):", nome).trim(); - let _equipamento = prompt("Descrição do equipamento:",equipamento).trim(); - let _sala = prompt("Nome da sala:",sala).trim(); - let _horaA = prompt("Início da aula:",horaA).trim(); - let _horaB = prompt("Término da aula:",horaB).trim(); - let _dataA = prompt("Data da aula:",dataBR(dataA)).trim(); - // CRIAÇÃO DE UMA NOVA INSTÂNCIA RESERVA - let reserva = new ReservaProfessor(_nome, _equipamento, status, _sala, dataEUA(_dataA), _horaA, dataB, _horaB, horaC, horaD); - // VALIDAR DADOS - if (reserva.validarDados()) { - // FORMATAR O ID - let id = this.id.replace('id-editar-',''); - // REMOVE A RESERVA - bancodedados.removerReserva(id); - // MODAL DE EDIÇÃO - modalEditar(_nome, tabelaProfessorA("success", _equipamento, _sala, _dataA, horaSeg(_horaA), horaSeg(_horaB)), "Professor"); - // GRAVA AS INFORMAÇÕES NO BANCO DE DADOS - bancodedados.gravar(reserva, "Professor"); - // - } - // ERRO - else{ - // - modalErro(); - // - } - } - // } - // else { - // modalEditarErro(nome, "Professor"); - // } - // } - // else { - // modalEditarErro(nome, "Professor"); - // } - // } - // else { - // modalEditarErro(nome, "Professor"); - // } + // VERIFICAÇÃO + let = resposta = prompt("Deseja EDITAR a reserva do(a) Professor(a) "+nome+"?","Não"); + // VALIDAÇÃO DE VERIFICAÇÃO + if(resposta == "sim" || resposta == "SIM" || resposta == "Sim" || resposta == "s" || resposta == "S") { + // NOVOS VALORES SERÃO RECEBIDOS + let _nome = prompt("Nome do(a) Professor(a):", nome).trim(); + let _equipamento = prompt("Descrição do equipamento:",equipamento).trim(); + let _sala = prompt("Nome da sala:",sala).trim(); + let _horaA = prompt("Início da aula:",horaA).trim(); + let _horaB = prompt("Término da aula:",horaB).trim(); + let _dataA = prompt("Data da aula:",dataBR(dataA)).trim(); + // CRIAÇÃO DE UMA NOVA INSTÂNCIA RESERVA + let reserva = new ReservaProfessor(_nome, _equipamento, status, _sala, dataEUA(_dataA), _horaA, dataB, _horaB, horaC, horaD); + // VALIDAR DADOS + if (reserva.validarDados()) { + // FORMATAR O ID + let id = this.id.replace('id-editar-',''); + // REMOVE A RESERVA + bancodedados.removerReserva(id); + // MODAL DE EDIÇÃO + modalEditar(_nome, tabelaProfessorA("success", _equipamento, _sala, _dataA, horaSeg(_horaA), horaSeg(_horaB)), "Professor"); + // GRAVA AS INFORMAÇÕES NO BANCO DE DADOS + bancodedados.gravar(reserva, "Professor"); + // + } + // ERRO + else{ + // + modalErro(); + // + } + } } // RETORNO return editar; } // -// BOTÃO EXCLUIR - let botaoExcluirAluno = (id, nome, equipamento, status, matricula, serial, dataA, horaA, dataB, horaB, horaC) => { - // BOTAO DE EXCLUSÃO - excluir = document.createElement("button"); - excluir.className = 'btn btn-outline-danger btn-sm'; - excluir.title = 'Excluir'; - excluir.innerHTML = ''; - excluir.id = `id-excluir-${id}`; - // - excluir.onclick = function() { - // PRONPT DE VERIFICAÇÃO - let resposta = prompt("Deseja EXCLUIR a reserva do(a) Aluno(a) "+nome+"?", "Não"); - // VALIDAÇÃO DE EXCLUSÃO - if (resposta == 'sim'|| resposta == 'SIM' || resposta == 'Sim' || resposta == 's' || resposta == 'S') { - // FORMATAR O ID - let id = this.id.replace('id-excluir-',''); - // REMOVE A RESERVA - bancodedados.removerReserva(id); - // MODAL DE EXCLUSÃO - modalExcluir(nome, tabelaAlunoB("danger", equipamento, cor(status), matricula, serial, dataBR(dataA), horaSeg(horaA), dataBR(dataB), horaB, horaC), "Aluno"); - // - } - } - // RETORNO - return excluir; - // - } // let botaoExcluirProfessor = (id, nome, equipamento, status, sala, dataA, horaA, dataB, horaB, horaC, horaD) => { // BOTAO DE EXCLUSÃO @@ -855,105 +544,6 @@ // } // -// BOTÃO VERIFICAR - let botaoVerificarAluno = (id, nome, equipamento, status, matricula, serial, dataA, horaA, dataB, horaB, horaC) => { - // BOTÃO VERIFICAR RESERVA - verificar = document.createElement("button"); - verificar.className = "btn btn-outline-primary btn-sm"; - verificar.title = "Verificar"; - verificar.innerHTML = ''; - verificar.id = `id-verifica-${id}`; - // - verificar.onclick = function() { - // STATUS AGUARDANDO - if(status == "Aguardando") { - // PRONPT DE VERIFICAÇÃO - let resposta = prompt("A reserva do(a) Aluno(a) "+nome+" está em uso?", "Não"); - // VALIDAÇÃO DE EXCLUSÃO - if (resposta == 'sim'|| resposta == 'SIM' || resposta == 'Sim' || resposta == 's' || resposta == 'S') { - // NOVOS VALORES - let _nome = nome; - let _equipamento = equipamento; - let _status = "Em uso"; - let _matricula = matricula; - let _serial = serial; - let _dataA = dataA; - let _horaA = horaA; - let _dataB = dataAtual(); - let _horaB = horaAtual(0,0,0); - let _horaC = horaC; - // CRIAÇÃO DE UMA NOVA INSTÂNCIA RESERVA - reserva = new ReservaAluno(_nome, _equipamento, _status, _matricula, _serial, _dataA, _horaA, _dataB, _horaB, _horaC); - // VALIDAÇÃO - if(reserva.validarDados()){ - // FORMATAR O ID - let id = this.id.replace('id-verifica-',''); - // REMOVE A RESERVA - bancodedados.removerReserva(id); - // MODAL DE VERIFICAÇÃO - modalVerificar(_nome, tabelaAlunoB("primary", _equipamento, cor(_status), _matricula, _serial, dataBR(_dataA), horaSeg(_horaA), dataBR(_dataB), _horaB, _horaC), "Aluno", _status); - // GRAVA AS INFORMAÇÕES NO BANCO DE DADOS - bancodedados.gravar(reserva, "Aluno"); - // - } - // ERRO - else { - // - modalErro(); - // - } - } - } - // STATUS EM USO - else if(status == "Em uso") { - // PRONPT DE VERIFICAÇÃO - let resposta = prompt("A reserva do(a) Aluno(a) "+nome+" está recolhida?", "Não"); - // VALIDAÇÃO DE EXCLUSÃO - if (resposta == 'sim'|| resposta == 'SIM' || resposta == 'Sim' || resposta == 's' || resposta == 'S') { - // NOVOS VALORES - let _nome = nome; - let _equipamento = equipamento; - let _status = "Recolhida"; - let _matricula = matricula; - let _serial = serial; - let _dataA = dataA; - let _horaA = horaA; - let _dataB = dataAtual(); - let _horaB = horaB; - let _horaC = horaAtual(0,0,0); - // CRIAÇÃO DE UMA NOVA INSTÂNCIA RESERVA - reserva = new ReservaAluno(_nome, _equipamento, _status, _matricula, _serial, _dataA, _horaA, _dataB, _horaB, _horaC); - // VALIDAÇÃO - if(reserva.validarDados()) { - // FORMATAR O ID - let id = this.id.replace('id-verifica-',''); - // REMOVE A RESERVA - bancodedados.removerReserva(id); - // MODAL DE VERIFICAÇÃO - modalVerificar(_nome, tabelaAlunoB("primary", _equipamento, cor(_status), _matricula, _serial, dataBR(_dataA), horaSeg(_horaA), dataBR(_dataB), _horaB, _horaC), "Aluno", _status); - // GRAVA AS INFORMAÇÕES NO BANCO DE DADOS - bancodedados.gravar(reserva, "Aluno"); - // - } - // ERRO - else { - // - modalErro(); - // - } - } - } - // STATUS RECOLHIDO - else { - // - modalVerificarErro(nome, "Aluno"); - // - } - } - // RETORNO - return verificar; - } -// // BOTÃO VERIFICAR let botaoVerificarProfessor = (id, nome, equipamento, status, sala, dataA, horaA, dataB, horaB, horaC, horaD) => { // BOTÃO VERIFICAR RESERVA @@ -1135,8 +725,9 @@ mensagem = hora >= "12:00:00" && hora <= "18:00:00" ? mensagem = " Boa tarde! " : mensagem; mensagem = hora >= "18:00:00" || hora <= "06:00:00" ? mensagem = " Boa noite! " : mensagem; // - document.getElementById("tempo").innerHTML = mensagem+"hoje é "+dataBR(data)+" e são "+hora+" |"; - // + document.getElementById("mensagem").innerHTML = mensagem; + document.getElementById("calendario").innerHTML = dataBR(data); + document.getElementById("hora-atual").innerHTML = hora; } // // RETORNA A DATA ATUAL @@ -1212,23 +803,6 @@ // } // -// TABELA DO ALUNO - let tabelaAlunoA = (bg, equipamento, matricula, serial, dataA, horaA) => { - // - let tabela = '

'+matricula+''+equipamento+''+serial+''+dataA+'
'+horaA+'
'; - // RETORNO - return tabela; - // - } -// - let tabelaAlunoB = (bg, equipamento, status, matricula, serial, dataA, horaA, dataB, horaB, horaC) => { - // - let tabela = '

'+matricula+''+equipamento+''+serial+''+dataA+'
'+horaA+'
'+dataB+'
'+horaB+' / '+horaC+'
'+status+'
'; - // RETORNO - return tabela; - // - } -// // TABELA DO APP let tabelaApp = (nome, versao, dataA, horaA) => { // @@ -1326,7 +900,7 @@ // LISTANTO O FUNCIONÁRIO funcionario.forEach(function(f) { // NOME DO FUNCIONÁRIO É EXIBIDO - document.getElementById("funcionario").innerHTML = f.nome; + document.getElementById("usuario").innerHTML = f.nome; // }) // @@ -1351,7 +925,6 @@ // } // -//=============================================================|| //==============================================================|| // FUNÇÕES MODAIS // diff --git a/api/dashboard/index.html b/api/dashboard/index.html index 461d64c..86098db 100644 --- a/api/dashboard/index.html +++ b/api/dashboard/index.html @@ -1,7 +1,7 @@ @@ -14,34 +14,16 @@ Reserve · Dashboard - - + - - + - - + - - - + + @@ -54,7 +36,7 @@ - + @@ -95,10 +77,7 @@ - - - + + + @@ -162,7 +141,7 @@

Dashboard

-

Reservas

+

Reservas

@@ -181,19 +160,94 @@

Reservas

+ +
+ + + + + + + + + + +
- + diff --git a/assets/img/logo-white.ico b/assets/img/logo-white.ico new file mode 100644 index 0000000000000000000000000000000000000000..27a787e39e2d2234beed9d9d68731821a8ed7ad5 GIT binary patch literal 13418 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

Wltms?2zZ{3w-X!=C!pM7 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

JO1OgfWO|%& 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 F{uf(JET;ef literal 0 HcmV?d00001