Skip to content
This repository was archived by the owner on Aug 20, 2020. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions Index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<h1>CalendarioProgWeb</h1>
<ul>
<li><a href="#home">Home</a></li>
<li><a href="#sobre">Sobre</a></li>
</ul>
<div id="app"></div>
<script src="compartilhado/rotas.js"></script>
<script src="compartilhado/roteador.js"></script>
<script src="controller/index/index.js"></script>
</body>
</html>
21 changes: 21 additions & 0 deletions License.txt
Original file line number Diff line number Diff line change
@@ -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.
81 changes: 48 additions & 33 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,60 +1,75 @@
# Nome_da_Aplicação
# CalendarioProgWeb

<!--- Exemplos de badges. Acesse https://shields.io para outras opções. Você pode querer incluir informações de dependencias, build, testes, licença, etc. --->
![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:
<!--- Estes são alguns exemplos de requisitos. Adicione, duplique e remove como necessário --->
* Você deve possuir a última versão do `<linguagem/dependencia/etc>` instalado.
* Você deve possuir uma máquina `<Windows/Linux/Mac>`. (Deixe claro qual SO é possível rodar a aplicação, Linux é obrigatório).
* Você deve ler o `<guia/link/documentaçã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:
```
<commando 1>
<commando 2>
....
<commando n>
```
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):
```
<commandos>
```

## 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

<!--- Se não tiver certeza de qual, verifique este site: https://choosealicense.com/--->
Este projeto usa a seguinte licença: [<nome_da_licenca>](<link>).
*Você também deve criar um arquivo chamado LICENSE no projeto*
Este projeto usa a seguinte licença: [MIT License]

27 changes: 27 additions & 0 deletions compartilhado/rotas.js
Original file line number Diff line number Diff line change
@@ -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;
}
}
63 changes: 63 additions & 0 deletions compartilhado/roteador.js
Original file line number Diff line number Diff line change
@@ -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)
}
}
1 change: 1 addition & 0 deletions controller/home/home.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
console.log("Home Ok!")
11 changes: 11 additions & 0 deletions controller/index/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
'use strict';

(function(){
function iniciar(){
var router = new Roteador([
new Rota('home', 'home.html', true)
]);
}

iniciar();
})
1 change: 1 addition & 0 deletions serivce/homeService.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
//implementação dos Serviços a serem consumidos pela Home
1 change: 1 addition & 0 deletions view/home.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<h1>Home</h1>