Files
Planification/README.md
T
FroSteel dd0b5e1a36 docs: clarification du schéma de versionning ANNÉE.MAJEURE.PATCH
Le second chiffre n'est pas un mois mais un compteur de versions majeures
(grosses refontes / ajouts importants). Le troisième est le patch livré
à chaque petite mise à jour dans la majeure courante.
2026-04-25 19:00:00 +02:00

7.8 KiB

Planification — Extension EasyVista Canton de Vaud

Extension Chrome / Firefox pour visualiser de manière claire et rapide le planning des techniciens IT du Canton de Vaud dans EasyVista.

Aperçu rapide

  • Auteur : Quentin Rouiller (QRO)
  • Cible : techniciens IT Canton de Vaud, EasyVista (itsma.etat-de-vaud.ch / itsma.vd.ch)
  • Démarrage projet : jeudi 16 avril 2026
  • Version actuelle : v2026.5.37
  • Manifest : V3 (Chrome/Edge/Firefox)
  • Format : .zip (Chromium) + .xpi signé (Firefox)

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
  • 8 techniciens hardcodés (équipe IT canton)
  • 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)
  • 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
  • Absence récurrente Pillonel vendredi : 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 caché : bouton ⚙ Paramètres dans popup user-badge (depuis v2026.5.25, remplace les 5 clics secrets sur le titre)
  • Configuration persistée dans localStorage (admin_config)
  • Catégories interventions personnalisables (livraison/recup/remplacement/incident/rollout/reservation/autre)

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.37

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)
37 Patch À chaque livraison dans la majeure courante (corrections, ajustements, petites features)

Exemples :

  • 2026.5.162026.5.17 : petite correction ou ajustement (patch)
  • 2026.5.372026.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.37 (latest, 25 avril 2026) — Refonte vue horizontale

  • Topbar supprimée en vue horizontale, tout passe en sidebar
  • User-badge + titre + bouton "Aujourd'hui" + date/heure + sélecteur + flèches + stats dans sidebar
  • Banderole pompier masquée (badge + barre rouge gauche conservés)

v2026.5.36 — Sidebar verticale

  • Wrapper flex-row #horizontal-wrapper [sidebar 200px] + [main]
  • Déplacement physique des éléments via ELEMENTS_TO_RELOCATE
  • Restauration propre en vue classique

v2026.5.32 — Vue horizontale togglable

  • Bouton ⊞ "Vue" dans popup user-badge
  • Chaque tech = 1 ligne horizontale compacte
  • localStorage view_mode

v2026.5.27 — Classification absences

  • ABSENCE_LABELS : ^(cong[ée]s|maladie|pompier)$
  • Couleurs catégories
  • Topbar une ligne : "Jeudi 23.04.26 • 21:55"

v4.2.3 — Grande popup timeline persistante

  • Clic segment timeline = popup persistante
  • Hover = popup qui suit la souris

v4.1.3 — Tooltips épinglables

  • Introduction de pinTooltip

v1.0.0 (16 avril 2026) — Initiale

  • Premier viewer EasyVista pour le canton

Voir CHANGELOG.md pour l'historique complet (40 versions taggées).

Architecture technique

manifest.json       # Manifest V3 (Chrome) + gecko_settings (Firefox)
background.js       # Worker fond : fetch planning XML, gestion session, fetch fiches
viewer.html         # Interface principale
viewer.js           # Logique (~9000 lignes) — voir détail ci-dessous
viewer.css          # Styles + thèmes clair/sombre
icons/              # icon16, icon48, icon128

viewer.js — fonctions clés

Fonction Introduite Rôle
loadForDate v1.0.0 Fetch + parse planning pour une date donnée
buildTooltipHTML v1.0.0 Construction HTML du tooltip d'intervention
pinTooltip v4.1.3 Épingler un tooltip (le rendre permanent)
bindTimelinePopover v4.2.3 Lier popover timeline aux segments
showTimelinePopover v4.2.3 Afficher popover persistante
openPersistentTimelinePopup v4.2.3 Grande popup détaillée
setTooltipViewportPosition v4.2.4 Détection auto fixed/abs
_softUnpinPopup v4.3.3 Désépinglage mou (popup reste visible)
initAppClock v5.0.0 Horloge HH:MM topbar
initSessionTimer v5.0.0 Compteur session EV (tick 1s)
initAdminMenu v5.0.0 Menu admin (5 clics titre)
_applyViewMode v2026.5.32 Toggle vue classique/horizontale
_maybeRetryFetchUser v2026.5.34 Relance opportuniste fetch user
positionTooltipAnchored v2026.5.34 Positionnement unifié (4 candidats)

Constantes persistantes (toutes versions)

  • 8 techs hardcodés : 76272,83725,66635,92235,90070,40944,72485,86874
  • Pillonel Olivier (ID 40944) : absent tous les vendredis (hardcodé)
  • Group ID EasyVista : 191
  • GUIDs forms EV :
    • Demande : S={C99ECD05-3D48-4C62-ABF0-66292053AED6}
    • Incident : I={07ED9C68-6172-48EA-8A58-90912B0A283E}
  • SSO : Canton ForgeRock OpenAM
  • Storage keys : admin_config, view_mode (depuis v2026.5.32)
  • Domaines : itsma.etat-de-vaud.ch (interne), itsma.vd.ch (externe SSO)

Installation

Firefox

Télécharger le .xpi signé depuis le serveur de mises à jour interne, ou drag-and-drop dans about:addons.

Chrome / Edge

Mode développeur : décompresser le ZIP et charger en tant qu'extension non empaquetée.

Développement

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

# Pour packager une nouvelle version :
# 1. modifier le code
# 2. bump version dans manifest.json
# 3. zip + xpi
git add -A
git commit -m "Version YYYY.M.PATCH — description"
git tag vYYYY.M.PATCH
git push origin main
git push --tags

Licence

MIT License — Copyright (c) 2026 Quentin Rouiller

Auteur

Quentin Rouiller (QRO) Canton de Vaud — Service IT