Ajouter une vue des tâches et jalons groupés par mois
La frise répond mal à « qu'est-ce qui arrive le mois prochain » : la question traverse les projets, alors que la frise les range précisément en couloirs séparés. Il fallait balayer une colonne de dates à travers tous les couloirs en gardant en tête ce qu'on avait vu plus haut — d'où le tableur ressorti à côté. Deux boutons dans la barre d'outils basculent vers une liste qui déroule toutes les phases, projets mêlés, dans l'ordre du calendrier. Chaque ligne se lit quand, chez qui, puis quoi : période, projet et ses tags, intitulé, statut. Une phase est rattachée au seul mois de son début. La répéter dans chaque mois traversé aurait donné un tableau de charge — utile, mais c'est une autre vue, et le doublon coûte la lecture en diagonale qui fait tout l'intérêt de celle-ci. Sa fin est écrite sur la ligne, ce qui suffit à voir qu'elle déborde. Les mois sans rien ne sont pas représentés : l'absence se lit déjà dans le saut d'un titre au suivant. La liste ne s'édite pas, et ce n'est pas une lacune à combler : déplacer une phase demande de voir ce qu'elle chevauche et ce qu'elle repousse, or c'est justement ce voisinage que l'ordre chronologique dissout. Seules les pastilles de tags restent cliquables — filtrer ne change pas les données. Le filtre par tags vaut pour les deux vues, sans rien changer à sa mécanique, si bien qu'on ne se demande jamais si l'une montre plus que l'autre. L'œil (hidden) écarte un projet de la liste comme il écarte ses barres. La vue choisie n'est pas enregistrée, contrairement à la largeur de la colonne des libellés : cette largeur est un réglage d'écran, la vue est un geste de consultation. L'outil s'ouvre donc sur la frise, celle où l'on modifie. Le défilement horizontal de la frise, lui, est mémorisé le temps de l'aller-retour, puisque masquer un élément lui fait perdre son scrollLeft. Deux extractions au passage, chacune parce que deux vues sœurs en ont besoin et qu'aucune n'a à importer l'autre : les noms de mois et le formatage des dates rejoignent model.js, les pastilles de tags un module tags.js. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
33
README.md
33
README.md
@@ -110,6 +110,25 @@ Une fois un projet en place :
|
||||
Faire défiler jusqu'au bord droit élargit la frise vers le futur, et jusqu'au bord gauche
|
||||
vers le passé. Le bouton **Aujourd'hui** ramène la vue sur la date du jour.
|
||||
|
||||
### La vue par mois
|
||||
|
||||
Les deux boutons **Frise** et **Par mois**, en haut à gauche, changent de regard sur les mêmes
|
||||
données. La vue par mois déroule toutes les tâches et tous les jalons du planning en une seule
|
||||
liste, projets mêlés, groupés par mois — celui où chaque phase **commence**. C'est la réponse à
|
||||
« qu'est-ce qui arrive le mois prochain », que la frise donne mal parce qu'elle sépare les projets
|
||||
en couloirs.
|
||||
|
||||
Chaque ligne se lit dans cet ordre : quand — la période, `31 → 13 nov.` quand la phase déborde du
|
||||
mois —, chez qui — le projet et ses tags —, puis quoi — l'intitulé de la tâche ou du jalon — et
|
||||
enfin son statut. Une phase longue n'est **pas** répétée dans les mois qu'elle traverse : elle
|
||||
n'apparaît qu'à son mois de départ, avec sa date de fin écrite en clair.
|
||||
|
||||
Cette liste se **lit** — elle ne s'édite pas. Déplacer une phase demande de voir ce qu'elle
|
||||
chevauche, donc la frise ; c'est là que les dates se modifient. Seules les pastilles de tags y
|
||||
restent cliquables, puisque filtrer ne change rien aux données. Le bouton **Aujourd'hui** ramène ici
|
||||
sur le mois en cours, et la vue affichée n'est pas mémorisée : l'outil s'ouvre toujours sur la
|
||||
frise.
|
||||
|
||||
### Filtrer par tag
|
||||
|
||||
Un projet peut porter des **tags** — `client`, `interne`, `R&D` —, saisis séparés par des virgules
|
||||
@@ -119,7 +138,8 @@ existants sont proposés en un clic, et un tag disparaît dès que plus aucun pr
|
||||
Ils s'affichent en petites pastilles colorées dans la colonne de gauche, et une barre de filtres
|
||||
apparaît sous la barre d'outils dès qu'un tag existe. Cliquer un tag — dans la barre de filtres ou
|
||||
directement sur la pastille d'un projet — restreint la frise à ceux qui le portent ; recliquer le
|
||||
retire.
|
||||
retire. Le filtre vaut pour les **deux vues** : il ne change pas quand on passe de la frise à la
|
||||
liste par mois.
|
||||
|
||||
Cocher plusieurs tags **cumule les conditions** : `client` + `urgent` ne montre que les projets
|
||||
portant les deux. Le filtre n'est pas enregistré, il ne vaut que pour la session en cours. Le bouton
|
||||
@@ -148,7 +168,10 @@ par les champs du panneau de détail.
|
||||
Il n'y a qu'une seule échelle, donc aucun réglage de zoom à comprendre.
|
||||
- **Une frise sans fin** : elle s'élargit d'elle-même quand le défilement approche d'un
|
||||
bord, ce qui permet d'aller planifier dans un futur qu'aucune phase n'occupe encore.
|
||||
- **Des tags sur les projets**, et un filtre qui restreint la frise à ceux qui les portent tous.
|
||||
- **Une vue par mois** : toutes les tâches et tous les jalons en une liste, projets mêlés, groupés
|
||||
par mois de début. Elle se lit, elle ne s'édite pas.
|
||||
- **Des tags sur les projets**, et un filtre qui restreint les deux vues à ceux qui les portent
|
||||
tous.
|
||||
- **Repère « aujourd'hui »** et masquage d'un projet.
|
||||
|
||||
## Ce que l'outil ne fait pas
|
||||
@@ -208,7 +231,7 @@ go test ./... # le serveur
|
||||
```
|
||||
|
||||
Côté navigateur : validation des dates, bornes d'un projet, calcul de dérive, génération des
|
||||
identifiants, normalisation et filtrage des tags. Côté serveur : lecture et écriture du planning,
|
||||
identifiants, normalisation et filtrage des tags, regroupement des phases par mois. Côté serveur : lecture et écriture du planning,
|
||||
refus des corps invalides, rotation des sauvegardes, écriture atomique, résolution du chemin de
|
||||
données. Aucune dépendance de part ni d'autre, les lanceurs intégrés à Node et à Go suffisent.
|
||||
|
||||
@@ -218,9 +241,11 @@ données. Aucune dépendance de part ni d'autre, les lanceurs intégrés à Node
|
||||
|---|---|
|
||||
| `main.go` | Sert l'interface embarquée, expose `GET`/`PUT` sur `/api/data`, écrit les sauvegardes |
|
||||
| `build.sh` | Compile les binaires des cinq plateformes dans `dist/` |
|
||||
| `js/model.js` | Données et règles métier : CRUD, validation, bornes, référence, dérive, tags |
|
||||
| `js/model.js` | Données et règles métier : CRUD, validation, bornes, référence, dérive, tags, regroupement par mois |
|
||||
| `js/storage.js` | Dialogue avec le serveur, sauvegarde debouncée, indicateur d'état |
|
||||
| `js/timeline.js` | Rendu de la frise : échelle, couloirs, barres, jalons, pli/dépli |
|
||||
| `js/mois.js` | Rendu de la vue par mois : groupes, lignes, ancrage sur le mois courant |
|
||||
| `js/tags.js` | Pastilles de tags, partagées par les deux vues |
|
||||
| `js/drag.js` | Glisser et redimensionner les barres |
|
||||
| `js/detail.js` | Panneau de détail d'une phase |
|
||||
| `js/projet.js` | Panneau des paramètres d'un projet : nom, couleur, tags |
|
||||
|
||||
Reference in New Issue
Block a user