Files
Planification/README.md
T
Quentin Rouiller 54b8f826df docs: clarification audience — coordinateurs DGNSI (pas techniciens)
L'extension est utilisée par les coordinateurs DGNSI qui pilotent dans
EasyVista le planning de l'équipe technicienne. Les techniciens
eux-mêmes consultent leur planning sur leur douchette terrain et
n'utilisent pas cet outil.

Mises à jour cohérentes : 'public cible' dans README et CHANGELOG.
Les mentions 'technicien' qui désignent le sujet du planning (cartes
des techniciens, liste des techniciens cochés, etc.) sont conservées
puisque ce sont les personnes DONT on regarde le planning.
2026-04-27 06:02:12 +02:00

14 KiB
Raw Permalink Blame History

Planification — Extension EasyVista Canton de Vaud

Extension Chrome / Firefox pour visualiser de manière claire et rapide le planning EasyVista de l'équipe technicienne DGNSI (Canton de Vaud).

📖 Documentation utilisateur complète : wiki (Home · Utilisation · Versions · Architecture · Dépannage · Contact)

Aperçu rapide

  • Auteur : Quentin Rouiller (QRO), Technicien DGNSI — Canton de Vaud
  • Public cible : coordinateurs DGNSI qui pilotent dans EasyVista (itsma.etat-de-vaud.ch / itsma.vd.ch) le planning de l'équipe technicienne
  • Démarrage projet : jeudi 16 avril 2026
  • Version actuelle : v2026.5.43 (latest)
  • Contact : voir page wiki Contact ou ouvrir une issue
  • Manifest : V3 (Chrome/Edge/Firefox 140+)
  • Format : .zip (Chromium) + .xpi signé Mozilla (Firefox)
  • Distribution : auto-update natif Firefox via firefox-updates.json

Installation rapide

Firefox 🦊 (recommandé — auto-update)

  1. Télécharger le .xpi signé depuis la release courante.
  2. Drag-and-drop dans about:addons de Firefox.
  3. Cliquer "Ajouter".

À partir de là, l'extension se met à jour automatiquement à chaque nouvelle version (vérification toutes les ~24 h via firefox-updates.json).

Chrome / Edge / Brave 🌐 (manuel)

  1. Télécharger le .zip depuis la release courante.
  2. Décompresser dans un dossier permanent.
  3. chrome://extensions/ (ou edge://extensions/) → activer Mode développeur → "Charger l'extension non empaquetée" → sélectionner le dossier décompressé.

Les mises à jour sont manuelles : à chaque nouvelle release, retélécharger le .zip, écraser le dossier, puis cliquer ⟳ (Recharger) sur la carte de l'extension.

➡ Pour le détail complet (stockage, désinstallation, comparatif), voir wiki Utilisation → Installation et navigateurs.

Fonctionnalités principales

Vue planning

  • Affichage des interventions et réservations groupées par technicien
  • Horaires, contact, lieu, catégorie, statut visibles d'un coup d'œil
  • Équipe configurable depuis le panel admin (détection automatique via EasyVista)
  • Cache local pour réduire les requêtes serveur

Modes d'affichage

  • Vue classique (depuis v1.0.0) : cards en grille, mode compact écran 24" (depuis v2026.5.30)
  • Vue horizontale (depuis v2026.5.32) : timeline par tech, sidebar verticale (depuis v2026.5.36)
    • Depuis v2026.5.40 : barre couleur catégorie + référence + ville sur chaque segment timeline
  • Toggle Vue classique ↔ Vue horizontale via bouton ⊞ dans popup user-badge
  • Persistance localStorage (view_mode)

Tooltips et popups

  • Tooltips au survol (hover) sur chaque intervention
  • Popups épinglables (📌) pour garder ouvert (depuis v4.1.3)
  • Popups timeline persistantes au clic (depuis v4.2.3)
  • Drag-and-drop des popups épinglés (depuis v2026.5.19)
  • Safe area : popups jamais cachés sous topbar/dock (depuis v2026.5.20)
  • Position auto adaptative (4 candidats : droite/gauche/dessous/dessus)

Classification des absences (depuis v2026.5.27)

  • Maladie/Accident : indigo #4338ca
  • Congé / Congés : cyan #06b6d4 (suffixe s adaptatif)
  • Pompier : rouge #b03030
  • Badge + barre gauche colorée + dégradé fond
  • Absences récurrentes (configurées par tech) : cyan (depuis v2026.5.30)

User et session

  • Badge user avec photo/initiales en topbar
  • Badge cliquable (depuis v2026.5.26) : popup avec ⚙ Paramètres + ⊞ Vue + compteur session MM:SS
  • Retry automatique en cas d'échec fetch user (60s, max 10 essais)
  • Compteur de session EasyVista (tick 1s, depuis v5.0.0)
  • Reconnexion automatique

Admin et configuration

  • Mode admin : bouton ⚙ Paramètres dans popup user-badge (depuis v2026.5.25)
  • Configuration persistée dans chrome.storage.local (admin_config)
  • Sélecteur de groupe EasyVista (SI-CSS, SI-EXT, …) en tête de l'onglet Équipe (depuis v2026.5.40) — détection automatique via le <select id="plan_group_id"> de la page Planning EV, robuste aux ajouts/renommages côté EV
  • Édition manuelle des domaines EasyVista interne / externe (depuis v2026.5.40)
  • Tri des techniciens : actifs d'abord, puis exclus, alphabétique dans chaque groupe (depuis v2026.5.40)

Versionning — historique et conventions

L'extension a connu 3 systèmes de versionning successifs :

Période Format Exemple
16-17 avril 2026 Versions de base 1.0.0, 2.0.0, 3.0.0
18-20 avril 2026 SemVer classique 4.1.3, 4.2.8, 5.0.12
21 avril 2026 → maintenant ANNÉE.MAJEURE.PATCH 2026.5.162026.5.40

Format actuel : ANNÉE.MAJEURE.PATCH

À partir de la v2026.5.16 (21 avril 2026), l'extension utilise le schéma suivant :

Position Sens Quand ça change
2026 Année À chaque nouvelle année calendaire
5 Majeure À chaque gros changement / ajout important (refonte, nouvelle feature majeure, bump volontaire)
40 Patch À chaque livraison dans la majeure courante (corrections, ajustements, petites features)

Exemples :

  • 2026.5.162026.5.17 : petite correction ou ajustement (patch)
  • 2026.5.402026.6.0 : refonte majeure (par exemple nouvelle vue, nouvelle architecture)
  • 2026.x.y2027.0.0 : passage à la nouvelle année

Le numéro de majeure n'est pas un mois et pas un chiffre lié au calendrier — c'est un compteur de versions importantes propre au projet (la 5 actuelle continue le 5.x qui précédait, repris tel quel lors du passage au format annuel).

⚠️ Important : v2026.5.16 succède chronologiquement à v5.0.12, malgré le numéro qui semble plus petit. Le préfixe 2026 indique l'année.

Versions notables

v2026.5.43 (latest, 27 avril 2026) — Fix Firefox : menu dock + stabilité popup pin/unpin

  • Firefox : le menu hover sur les pastilles du dock (popup réduit) se positionne désormais correctement au-dessus de la pastille.
  • Pin/unpin : la popup épinglée ne bouge plus et garde la même taille quand on la dé-épingle / re-épingle.

v2026.5.42 — Nettoyage de commentaires + exemples génériques

  • Uniformisation des exemples utilisés dans les commentaires de viewer.js (parsing contacts/lieux/références/codes-barres) en placeholders abstraits. Comportement runtime strictement inchangé.

v2026.5.41 — Suppression des hardcodes + UX admin + thème unifié

  • Plus aucun hardcode runtime pour le groupe EV, les domaines, la liste de techniciens ou les absences récurrentes. Tout est piloté par admin_config (chrome.storage.local), persisté entre les mises à jour.
  • Au 1er install : aucun tech sélectionné, aucune absence récurrente. Le viewer affiche un message "Aucun technicien sélectionné" tant que l'utilisateur n'a rien configuré dans Paramètres → Équipe.
  • Édition des domaines : chrome.permissions.request() au save quand l'utilisateur saisit un domaine custom (au-delà des 2 défauts). Manifest optional_host_permissions: ["https://*/*"] pour accepter n'importe quel domaine HTTPS après accord du navigateur.
  • Heures de la journée : bouton ✓ Appliquer explicite (au lieu de save direct), toast de confirmation, refetch automatique du planning. Synchronisation effective avec les requêtes EV (day_start_hour / day_end_hour / begin_hour / end_hour) — avant, l'affichage changeait mais les requêtes restaient sur 8h-19h hardcodés.
  • Thème unifié : le toggle 🌙 de la topbar et le sélecteur Apparence du panel admin écrivent dans la même clé (cfg.theme). Le mode "Automatique" est résolu en JS via prefers-color-scheme (le CSS n'avait pas de bloc @media, ce qui faisait retomber sur le clair même quand l'OS était en sombre). Listener matchMedia pour bascule live en mode auto.
  • Conflit absence/réservation × intervention : si une intervention est planifiée pendant qu'un tech a une absence (toute la journée ou demi-journée) ou une réservation au même créneau, sa carte est peinte en rouge plein (intervention conflictuelle). Logique : full-day → toutes en rouge ; partiel → seules celles en chevauchement.
  • Absences récurrentes génériques : suppression de la fonction hardcodée isXXXAbsentFriday(). L'absence récurrente est désormais générique : RECURRING_ABSENCES[tech.id] lit cfg.recurringAbsences et le label "Absent le X" est calculé dynamiquement depuis le jour de la semaine.
  • Notifications au-dessus du flou : z-index .toast-stack relevé à 11000 (le panel admin est à 10000) pour que les toasts de feedback restent visibles quand l'admin est ouvert.
  • Vue horizontale : popups au survol/clic limités aux candidats dessous/dessus (la sidebar à gauche et la timeline pleine largeur rendent gauche/droite peu praticables).
  • Tri équipe : inclus d'abord, puis exclus, alphabétique dans chaque sous-groupe (ne saute plus quand on coche/décoche).
  • Auto-refresh à l'enregistrement : ajouter/retirer un tech, changer de groupe, modifier les domaines → le planning se met à jour immédiatement (plus besoin de recharger l'extension manuellement).
  • Onglet Statuts retiré (placeholder lecture-seule, jamais utilisé).
  • Ménage de code : suppression de CACHE_DAYS (inutilisée), LS_THEME (clé localStorage obsolète), commentaire historique sur initAdminMenu(). Aucun symbole orphelin restant.

v2026.5.40 — Sélection groupe EV + édition domaines + tri équipe + vue horizontale enrichie

  • Onglet Équipe : sélecteur de groupe EasyVista (SI-CSS, SI-EXT, …) en tête de section, détecté automatiquement à l'ouverture du panel via le <select id="plan_group_id"> de la page Planning EV. Robuste aux ajouts/renommages côté EV.
  • ID groupe affiché en italique (ex: ID groupe : 191).
  • Quand on change de groupe, la liste d'équipe se rafraîchit automatiquement avec les membres du nouveau groupe.
  • Plus de bouton "Détecter" : tout est auto à l'ouverture.
  • Tri double des techniciens : inclus d'abord, puis exclus, alphabétique dans chaque sous-groupe.
  • Onglet EasyVista : édition manuelle des deux domaines (interne DGNSI / externe Internet), bouton Réinitialiser, normalisation auto des URLs.
  • Onglet Statuts retiré (placeholder lecture-seule).
  • Vue horizontale enrichie : chaque segment timeline contient désormais une barre verticale couleur catégorie à gauche, la référence (ex: SYYMMDD_NNNNN) en gras, et la ville en gris muted. Hauteur passée de 22px à 32px.
  • Réorganisation interne du repo : src/ pour les sources, dist/ généré, Autres/ pour build.sh + meta files (LICENSE, README, CHANGELOG), Builds/ pour les artefacts distribués.

v2026.5.39 — Séparation Matin / Après-midi + Apparence

  • Pills "MATIN" / "APRÈS-MIDI" entre les interventions de chaque tech
  • Section Apparence dans les paramètres : thème, taille du texte, durée du cache, heures de la journée

➡ Pour l'historique complet (40+ versions depuis le 16 avril 2026), voir le CHANGELOG.md ou la page wiki Versions.

Architecture technique

Planification/                        # Layout du repo Gitea (public)
├── src/                              # Sources de l'extension (chargées par le navigateur)
│   ├── manifest.json                 # Manifest V3 (Chrome) + browser_specific_settings (Firefox)
│   ├── background.js                 # Service worker (~1 600 lignes)
│   ├── viewer.html                   # Interface principale
│   ├── viewer.js                     # Logique UI (~10 700 lignes)
│   ├── viewer.css                    # Styles + thèmes clair/sombre (~4 800 lignes)
│   └── icons/                        # icon16, icon48, icon128
├── build.sh                          # Génère dist/chromium/, dist/firefox/, .zip, .xpi, met à jour firefox-updates.json
├── firefox-updates.json              # Manifest auto-update Firefox (servi via update_url)
├── README.md
├── CHANGELOG.md
├── LICENSE                           # MIT
└── .gitignore

➡ Pour le détail des composants, fonctions clés et flux de données, voir la page wiki Architecture.

Développement

git clone https://gitea.netaplaid.ch/FroSteel/Planification.git
cd Planification

# Modifier les sources dans src/
# Bumper src/manifest.json + entrée CHANGELOG.md
./build.sh
#   → dist/chromium/, dist/firefox/, dist/*.zip, dist/*.xpi
#   → firefox-updates.json mis à jour (sha256 .xpi NON SIGNÉ)

git add -A
git commit -m "vYYYY.M.PATCH — description"
git tag vYYYY.M.PATCH
git push origin main vYYYY.M.PATCH

Pour Firefox : signer le .xpi sur AMO en mode "On your own" (Unlisted), remplacer l'asset .xpi de la release Gitea, puis mettre à jour le sha256 de cette version dans firefox-updates.json.

Licence

MIT License — Copyright (c) 2026 Quentin Rouiller

Auteur

Quentin Rouiller (QRO) Technicien DGNSI — Canton de Vaud Contact : voir page wiki Contact