diff --git a/Index.html b/Index.html new file mode 100644 index 00000000..5608d364 --- /dev/null +++ b/Index.html @@ -0,0 +1,16 @@ + + + + + +

CalendarioProgWeb

+ +
+ + + + + \ No newline at end of file diff --git a/License.txt b/License.txt new file mode 100644 index 00000000..c06e2ad4 --- /dev/null +++ b/License.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) [2020] [Fábio Shiniti Nakazato; Flavio Augusto Corrêa de Souza + Helionardo Pereira Justi; Jéssica Abe de Almeida] + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md index be58e6da..2ba75498 100644 --- a/README.md +++ b/README.md @@ -1,60 +1,75 @@ -# Nome_da_Aplicação +# CalendarioProgWeb ![GitHub repo size](https://img.shields.io/github/repo-size/hsborges/progweb-template) ![GitHub contributors](https://img.shields.io/github/contributors/hsborges/progweb-template) -Nome_da_Aplicação é um/uma ... que permite/tem por objetivo/visa/etc .... - -Coloque aqui linhas adicionais com informações sobre o que a aplicação faz. Sua introdução deve ser de no máximo 3 parágrafos, seja simples e objetivo para não sobrecarregar de detalhes desnecessários este espaço. Se necessário, crie novas seções abaixo. +CalendarioProgWeb é uma aplicação web que tem por objetivo facilitar a organização da agenda de compromissos e rotina do usuário, permitindo assinalar diversos eventos durante o decorrer do dia. Dentre outras funcionalidades. + ## Pré-requisitos Antes de iniciar, certifique-se de cumprir os seguintes requisitos: - -* Você deve possuir a última versão do `` instalado. -* Você deve possuir uma máquina ``. (Deixe claro qual SO é possível rodar a aplicação, Linux é obrigatório). -* Você deve ler o `` dos termos de uso. -* (outros ...) + - É necessário que o usuário possua acesso à Internet + - É necessário que o usuário possua acesso a um Browser Moderno + - É necessário que o usuário leia e tenha consentimento dos termos de uso. -## Como executar -Para fazer o deploy da aplicação siga os seguintes passos: +## Como executar -Linux e/ou macOS: -``` - - -.... - -``` +Acesse a URL do produto. Após isso cadastre-se como usuário da aplicação informando os dados necessários para o cadastro. Uma vez cadastrado o usuário pode ter acesso ao calendário com a todas as funcionalidades que seu nível de usuário possui. (as quais serão descritas mais abaixo) -Windows (opcional): -``` - -``` -## Usando Nome_da_Aplicação +## Usando CalendarioProgWeb -Para usar Nome_da_Aplicação, siga os seguintes passos (exemplos): +Para usar CalendarioProgWeb, siga os seguintes passos (exemplos): * Abra o navegador e digite o seguinte endereço: `http://localhost/....` -* Ao abrir a aplicação você poderá: - * Navegar pelo conteúdo público, ou - * Entrar com usuário e senha para .... -* *Continua ...* +* Ao abrir a aplicação você deve: + * Entrar com usuário e senha para conectar no sistema e ver a própria agenda. +* Clique em inserir um novo evento e configure escolhendo o nome, data, hora, duração e local. +* Um evento pode ser excluído ou alterado de acordo com a necessidade do usuário. +* Recuperação de Senha/E-mail - + Caso o Usuário não consiga efetuar acesso utilizando seu e-mail e senha, por não se lembrar de qualquer uma das credenciais, é possível efetuar reaver o cadastro de qualquer uma das das duas informações utilizando-se da credencial que consegue se lembrar assim como o CPF e a Data de Aniversário do Usuário. Caso preenchida essas três informações corretamente, o usuário poderá cadastrar uma nova credencial que perdeu o acesso. + +* Calendário - + Ao efetuar acesso com suas credenciais o usuário estará logado, e agora poderá ter acesso ao calendário contendo os itens de sua agenda, O mês que o calendário abre inicialmente é o mês corrente em que o usuário se encontra. + A exibição dos dias será feita através de “Cards”, contendo o dia do mês em destaque, o da semana. Também está assinalado a quantidade de compromissos que existem naquele dia e a outras informações importantes (como por exemplo se é feriado e etc). Ao clicar em qualquer um dos cards o usuário é encaminhado para a tela de “Dia” daquele usuário. + +* Dia - + A tela de informações do dia, exibe ao usuário primeiramente a data escolhida ao usuário, em seguida ela exibe outras informações de menos destaque como o dia da semana, se é feriado e etc. + Após isso ela exibe uma lista de eventos que o usuário tem cadastrado para aquele dia, contendo a hora inicial e final. Todos os itens da lista podem ser clicados para o usuário ser encaminhado para a tela de detalhes do evento. + Por fim é exibida ao usuário uma lista de convites para eventos que foram encaminhados ao usuário, onde ele poderá confirmar ou rejeitar a presença em tal. Também é possível clicar sobre o item da lista, onde o usuário será encaminhado para a tela de detalhes do evento. Ainda assim, mesmo que o Evento esteja com a situação de rejeitado o usuário ainda consegue visualizar o convite (e consequentemente o evento) afim de mudar a opção da situação do evento. + +* Evento - + A tela de detalhe do evento exibe informações mais detalhadas sobre o evento, como descrição, uma imagem sobre o evento, data, valores de entrada, número de pessoas que confirmaram presença, Assim como as opções de Confirmar Presença ou Rejeitar Presença, para o criador do evento são disponibilizadas as funções de Editar e Cancelar um Evento, assim como Convidar pessoas. -*Descreva as principais atividades, e/ou fluxos, que são possíveis de serem realizadas na aplicação.* +* Editar Evento - + Ao acessar um evento que seja administrador, é possível editar um evento, qualquer informação incluida no momento da inserção do evento pode ser alterada posteriormente. Ao efetuar qualquer alteração nos dados do evento todos os usuários que foram convidados serão notificados sobre as mudanças + +* Cancelar Evento - + Ao acessar um evento o qual o usuário seja administrador, é possível cancelar o evento, no momento do cancelamento é possível incluir uma justificativa do cancelamento, uma vez cancelado todos os usuários notificados do cancelamento, podendo visualizar a justificativa de tal cancelamento. Da mesma forma, o evento deixará de ser visível aos usuários que foram convidados, se tornando visível apenas ao administrador do mesmo (para futuras consultas e etc) + +* Convidar Pessoas - + No momento da criação de um evento ou posteriormente o administrador poderá convidar outros usuários para seu evento, que serão notificados sobre o convite, bem como tal evento estará disponível dentro do calendário pessoal de cada participante do evento. + +* Notificações - + Determinados acontecimentos podem disparar notificações aos usuários, para que estes fiquem cientes da mudança de status quo dentro de um evento, alertas gerais sobre situações atípicas que podem alterar a rotina ou agenda do usuário, dentre outras informações que devem ser disparadas ao mesmo. As mesmas serão exibidas como forma de Lista em ordem da mais recente para a mais antiga, agrupada por datas.Todas as notificações ao serem clicadas abrem a tela de detalhes. + +* Detalhes de Notificações - + A tela de detalhes de uma notificação, exibe informações mais precisas sobre o conteúdo da notificação, como por exemplo o que foi alterado em um evento, ou os motivos do cancelamento do mesmo. Também pode exibir outras informações como alertas sanitários, ou gerais do sistema dentre outras informaçöes. ## Contribuidores As seguintes pessoas contribuiram para este projeto: -* [Meu nome](https://github.com/meu_nome) -* *.... (liste todos os membros da equipe)* +* [Fábio Shiniti Nakazato](https://github.com/Fabnaka) +* [Flavio Augusto Corrêa de Souza](https://github.com/flaviocsouza) +* [Helionardo Pereira Justi](https://github.com/helionardo) +* [Jéssica Abe de Almeida](https://github.com/Abejyou) ## Licença de uso -Este projeto usa a seguinte licença: [](). -*Você também deve criar um arquivo chamado LICENSE no projeto* +Este projeto usa a seguinte licença: [MIT License] + diff --git a/compartilhado/rotas.js b/compartilhado/rotas.js new file mode 100644 index 00000000..1d01eafe --- /dev/null +++ b/compartilhado/rotas.js @@ -0,0 +1,27 @@ +'use strict' + +function Rota(nome, caminho, rotaPadrao){ + try{ + if(!nome || !caminho){ + throw `Erro: É necessário informar o Nome e o Caminho da Página` + } + this.constructor(nome, caminho, rotaPadrao); + } + catch(e){ + console.log(e); + } +} + +Rota.prototype = { + nome: undefined, + caminho: undefined, + rotaPadrao: undefined, + constructor: function(nome, caminho, rotaPadrao){ + this.nome = nome; + this.caminho = caminho; + this.rotaPadrao = rotaPadrao; + }, + ehRotaAtiva: function(caminhoHash){ + return caminhoHash.replace('#', '') === this.name; + } +} \ No newline at end of file diff --git a/compartilhado/roteador.js b/compartilhado/roteador.js new file mode 100644 index 00000000..23b3097f --- /dev/null +++ b/compartilhado/roteador.js @@ -0,0 +1,63 @@ +'use strict'; + +function Roteador(rotas){ + try{ + if(!rotas){ + throw 'Erro: rotas é um parâmetro Obrigatório' + } + this.constructor(rotas); + this.iniciar(); + } + catch(e){ + console.log(e); + } +} + +Roteador.prototype = { + rotas: undefined, + elementoRaiz: undefined, + constructor: function(rotas){ + this.rotas = rotas; + this.elementoRaiz = document.querySelector('#app'); + }, + iniciar: function(){ + let rot = this.rotas; + (function(scope, rot){ + window.addEventListener('hashchange', function(e){ + scope.mudou(this, rot) + }); + })(this, rot); + this.mudou(this, rot); + }, + mudou: function(scope, rot){ + if(window.location.hash.length > 0){ + for(let i = 0; i < rot.length; i++){ + let rota = rot[i]; + if(rota.rotaAtiva(window.location.hash.substr(1))){ + scope.irPara(rota.caminho); + } + } + } + else { + for(let i = 0; i < rot.length; i++){ + let rota = rot[i]; + if(rota.rotaPadrao){ + scope.irPara(rota.caminho); + } + } + } + }, + irPara: function(caminho){ + (function(scope){ + let url = `views/${caminho}` + let xhttp = new XMLHttpRequest(); + + xhttp.onreadystatechange = function(){ + if(this.readyState === 4 && this.status === 200) + scope.elementoRaiz.innerHtml = this.responseText; + }; + xhttp.open('GET', url, true); + xhttp.send(); + })(this) + } +} \ No newline at end of file diff --git a/controller/home/home.js b/controller/home/home.js new file mode 100644 index 00000000..739a7238 --- /dev/null +++ b/controller/home/home.js @@ -0,0 +1 @@ +console.log("Home Ok!") \ No newline at end of file diff --git a/controller/index/index.js b/controller/index/index.js new file mode 100644 index 00000000..0e53a9f7 --- /dev/null +++ b/controller/index/index.js @@ -0,0 +1,11 @@ +'use strict'; + +(function(){ + function iniciar(){ + var router = new Roteador([ + new Rota('home', 'home.html', true) + ]); + } + + iniciar(); +}) \ No newline at end of file diff --git a/serivce/homeService.js b/serivce/homeService.js new file mode 100644 index 00000000..91b10452 --- /dev/null +++ b/serivce/homeService.js @@ -0,0 +1 @@ +//implementação dos Serviços a serem consumidos pela Home \ No newline at end of file diff --git a/view/home.html b/view/home.html new file mode 100644 index 00000000..1cc855df --- /dev/null +++ b/view/home.html @@ -0,0 +1 @@ +

Home

\ No newline at end of file