FroSteel a5dc0b3365 v2026.5.39 — Séparation matin/après-midi + Apparence (thème, taille, cache, heures) + À propos
Séparation matin / après-midi
- Pill "MATIN" / "APRÈS-MIDI" entre interventions (vue classique), grise
  neutre, ligne 3px épaisse. Affiché aussi entre les absences partielles.
- Si une période est vide, son séparateur n'apparaît pas.

Timeline — coupure midi très visible
- Bande verticale composée d'un trait massif + stripes diagonales (effet
  césure). Visible immédiatement, sans label superflu.

Vue horizontale (sidebar)
- Tout centré horizontalement (align-items + text-align)
- min-height: calc(100vh * --zoom-inv) — sidebar atteint toujours le bas
  de l'écran, même quand le user dézoom le texte
- Bouton "Aujourd'hui" : style identique aux autres boutons (Absence,
  Douchette...), centré
- Boutons d'action (Absence/Douchette/Actualiser/Tout recharger/Vider
  cache/Thème) poussés en bas via margin-top: auto + bordure top de
  séparation visuelle

Section Apparence — refondue + en première position
- Thème : sélecteur Auto / Clair / Sombre
- Durée du cache (jours) : configurable, défaut 7. Lue par viewer (purge
  auto en cas de quota) ET background (au boot). Tooltip au survol qui
  montre l'emplacement physique du cache (adapté browser + OS)
- Taille du texte : slider horizontal avec 5 dots, 5 paliers (-30%, -15%,
  100%, +10%, +20%). Zoom appliqué uniquement au release (pas pendant le
  drag) pour éviter l'effet yo-yo. Couvre TOUS les textes visibles
  (interventions, popups, absences, réservations, "En pompier du...",
  date+heure de la même taille, etc.)
- Heures de la journée : 2 inputs Début/Fin, défaut 8h-18h. Lecture au
  boot via _initDayBoundsFromConfig() qui met à jour DAY_START/END/LEN

Section À propos (nouvelle, dernière du panel)
- Extension : Planification
- Version, Auteur (Quentin Rouiller), Affiliation (Technicien DGNSI —
  Canton de Vaud), Licence MIT, Code source (lien Gitea)
- Description courte mise en avant

Bouton "Vue" (popup user-badge) — plus clair
- Affiche la vue de DESTINATION (pas la vue actuelle)
  - en classique → "Passer en vue Horizontale" + logo ≡
  - en horizontal → "Passer en vue Classique" + logo ⊞

Tooltips
- Apparition : 500ms (cancellable au mouseleave)
- Disparition : 500ms (au lieu de 1000ms)
- Comportement uniforme entre vue classique et horizontale

Stats
- "X tech. dispo" (nouveau) : disponibles = pas absent + pas réservé
  toute la journée. Pompier compte comme disponible.
2026-04-26 02:20:00 +02:00

Planification — Extension EasyVista Canton de Vaud

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

Aperçu rapide

  • Auteur : Quentin Rouiller (QRO)
  • Cible : techniciens DGNSI (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) Technicien DGNSI — Canton de Vaud

S
Description
Extension Chrome/Firefox : vue claire et rapide du planning EasyVista pour coordinateurs DGNSI (Canton de Vaud).
https://gitea.netaplaid.ch/FroSteel/Planification/wiki
Readme MIT 4.5 MiB
v2026.5.45 Latest
2026-05-08 16:31:09 +02:00
Languages
JavaScript 78.6%
CSS 20.1%
HTML 0.9%
Shell 0.4%