- Au démarrage :

Jtimer web tente de récupérer les éléments sur le serveur (findTasks(type de classement)) le serveur va demander à la base de donnée ou au serveur distant de lui fournir la liste des tâches selon un classement spécifié ( sans tache cachée, seulement les récentes... ) et va la fournir à l'UI.


- A l'extinction :

Les tâches dont le chrono n'est pas arrêté font la demande d'ajout de temps au serveur (addTime) et le serveur fait la demande à la base/serveur distant pour que le temps soit ajouté.

Si une tâche doit être caché alors l'information est envoyé au serveur puis à la base


- Création/ Ajout/ Suppression de tâche/ sous-tâche.

Lorsque l'utilisateur souhaite :

1/ Créer une tâche/ sous-tâche : il clique sur l'élément permettant de créer des tâches qui ouvre un éditeur de champ et entre un nom, l'UI demande alors au serveur de créer la tâche (createTask) avec les infos spécifiées, la tâche est ensuite créée et stockée dans la base de donnée (dans le cas d'une sous-tâche le parent est spécifié).

La base de donnée envoie ensuite une réponse success ou fail.

2/ Supprimer une tâche/sous-tâche : il clique sur l'élément qui supprime le tâche,

si la tâche est une tâche feuille, on la supprime, on informe le serveur qui informe la base de donnée.

si la tâche est un nœud (racine ou autre), l'ui s'assure que l'utilisateur est certain de son choix, si l'utilisateur est certain alors on demande au serveur de faire la suppression qui demande à la base la suppression récursive de ces éléments.


-Activation/ Désactivation de tâche qui lance le compteur.

1/ Lorsque l'utilisateur active le chrono l'UI gère seule le chronométrage.

2/ Lorsque l'utilisateur désactive le chrono ou ferme le processus (stopTime) sans avoir désactivé un/plusieurs chrono alors l'UI demande d'ajouter ces informations (temps début,temps fin, tâche caché = false) au serveur qui demande d'enregistrer la date au début et en fin de chrono à la base de données.


- Augmenter/Diminuer le temps passé sur une tâche.

1/ La tâche est en cours de chronométrage, l'UI le prend en compte.

2/ La tâche n'est pas en cours de chronométrage, l'UI envoie une demande de modification de temps (modifyTime) au serveur, il gère alors la demande à la base pour modifier la base de donnée (savoir quelle date modifiée, si il y a eu modification dans la journée ou pas)


- Masquer/ Faire apparaître des tâches.

1/ Bouton au niveau de l'UI changement du statut de la tâche (la tâche passe sous un menu tâche caché ou visible). Lors de l'extinction de l'appli, l'information est envoyé au serveur pour que cette tâche ne soit plus affiché au prochain démarrage, la base est donc mise à jour.


- Commenter une tâche.

1/ Bouton au niveau de l'UI changement de la note sur la tâche (un petit post-it peut être sur la tâche ). Demande serveur pour changer le commentaire sur la tâche, demande à la base.


- Poser/ Enlever des alertes sur une tâche du type :

-temps total à ne pas dépasser par tâche :

clique droit ou clique sur symbole horloge de la tache projet côté UI demande au serveur d'ajouter une contrainte de temps ajout dans la base d'un temps limite pour la tâche.

temps total à ne pas dépasser par jour sur une tâche :

clic droit ou clique sur symbole horloge de la tache projet côté UI

si temps respecté dans la journée alors pas de report reste dans l'UI sinon un popup demande si la contrainte doit être ajoutée pour la fois d'après si oui c'est enregistrer par le serveur dans la base.


-Détection de l'inactivité (techno envisagée go).

Gérer par l'UI, si inactif pas d'incrémentation du temps donc lorsqu'on ferme la fenêtre appel de addTime sans temps pas pris en compte.


-Classement des taches : (tâches récentes ou par tag)

Gérer par l'UI avec un menu défilant, l'affichage change en fonction de ce menu. Si affichage non typique type classement envoyée au serveur pour prochaine ouverture.