Arquitetura¶
Casos de Uso¶
flowchart LR
Servidor((Servidor))
Aluno((Aluno))
subgraph Portal_de_Agendamento [Portal de Agendamento]
UCLoginServidor([Fazer Login - Servidor])
UCFiltrar([Filtrar Salas])
UCCriarSala([Criar Sala])
UCExcluirSala([Excluir Sala])
UCCriarAg([Criar Agendamento])
UCEditarAg([Editar Agendamento])
UCExcluirAg([Excluir Agendamento])
UCLoginAluno([Fazer Login - Aluno])
UCProximas([Visualizar Próximas Aulas])
UCHoje([Visualizar Aulas de Hoje])
end
Servidor --> UCLoginServidor
Servidor --> UCFiltrar
Servidor --> UCCriarSala
Servidor --> UCExcluirSala
Servidor --> UCCriarAg
Servidor --> UCEditarAg
Servidor --> UCExcluirAg
Aluno --> UCLoginAluno
Aluno --> UCProximas
Aluno --> UCHoje
Diagrama de Classes¶
classDiagram
direction TB
class AgendaFuncoes {
+converterHorarioEmMinutos(hhmm)
+existeConflito(novoAgendamento, lista)
+obterStatusSala(salaId, lista, instante?)
+filtrarSalas(listaSalas, filtros)
}
class EstadoAplicacao {
+Sala[] salasCadastradas
+Agendamento[] agendamentosRegistrados
+Flatpickr instanciaCalendario
+mapaDiasSemana: Record<int,string>
+coresPorTipo: Record<string,string>
}
class Renderizadores {
+salas(salasFiltradas?)
+agendamentos()
+filtros()
}
class Manipuladores {
+aplicarFiltros()
+submeterNovaSala(event)
+submeterAgendamento(event)
+cliqueGradeSalas(event)
+cliqueListaAgendamentos(event)
+exibirModalAgendamento(event)
}
class inicializarInterface {
+DOM refs (gradeSalas, listaAgendamentos, formulários…)
+bootstrap.Modal modalAgendarInstancia
+bootstrap.Modal modalNovaSalaInstancia
+document.addEventListener('DOMContentLoaded', inicializarInterface)
}
class Sala {
+number id
+string codigo
+string tipo
+number capacidade
+string localizacao
}
class Agendamento {
+number id
+number salaId
+Periodo periodo
+Horario horario
+number[] diasSemana
+string disciplina
+string professor
+string cpf
}
class Horario {
+string inicio
+string fim
}
class Periodo {
+string inicio
+string fim
}
class DadosAcademicosAluno {
+Sala[] salas
+Agendamento[] agendamentos
}
class FuncoesAlunoJS {
+criarCartaoAgendamento(agendamento, exibirDiasSeparados?)
+renderizarAulas()
}
class LoginJS {
+processarLoginAluno()
+processarLoginServidor()
}
EstadoAplicacao *-- Sala
EstadoAplicacao *-- Agendamento
Agendamento --> Periodo
Agendamento --> Horario
Renderizadores --> EstadoAplicacao : lê
Manipuladores --> EstadoAplicacao : altera
inicializarInterface --> Renderizadores
inicializarInterface --> Manipuladores
inicializarInterface --> AgendaFuncoes : usa
FuncoesAlunoJS --> DadosAcademicosAluno
FuncoesAlunoJS --> AgendaFuncoes : reaproveita
LoginJS --> FuncoesAlunoJS : direciona para aluno.html
LoginJS --> inicializarInterface : direciona para principal.html
Estrutura dos Scripts¶
js/script.jscontémAgendaFuncoes,estadoAplicacao,renderizadores,manipuladorese oinicializarInterface, que integra Bootstrap e Flatpickr.js/aluno.jspossui o módulo de dados acadêmicos e funções de renderização para o painel do aluno.js/login.jslida apenas com os formulários de autenticação simulada.