Update v2026.5.40 — structure repo, sélecteur groupe EV, édition domaines, suppression Statuts
+45
-13
@@ -4,15 +4,18 @@
|
|||||||
|
|
||||||
```
|
```
|
||||||
Planification/
|
Planification/
|
||||||
├── manifest.json # Manifest V3 (Chrome) + gecko_settings (Firefox)
|
├── .gitignore
|
||||||
├── background.js # Service worker (~1 350 lignes)
|
├── build.sh # Génère dist/chromium/, dist/firefox/, .zip, .xpi
|
||||||
├── viewer.html # Interface principale
|
├── CHANGELOG.md
|
||||||
├── viewer.js # Logique (~9 300 lignes)
|
|
||||||
├── viewer.css # Styles + thèmes clair/sombre
|
|
||||||
├── icons/ # icon16, icon48, icon128
|
|
||||||
├── README.md
|
|
||||||
├── LICENSE # MIT
|
├── LICENSE # MIT
|
||||||
└── CHANGELOG.md
|
├── README.md
|
||||||
|
└── src/ # Sources de l'extension (chargées par le navigateur)
|
||||||
|
├── manifest.json # Manifest V3 (Chrome) + gecko_settings (Firefox)
|
||||||
|
├── background.js # Service worker (~1 500 lignes)
|
||||||
|
├── viewer.html # Interface principale
|
||||||
|
├── viewer.js # Logique (~9 500 lignes)
|
||||||
|
├── viewer.css # Styles + thèmes clair/sombre
|
||||||
|
└── icons/ # icon16, icon48, icon128
|
||||||
```
|
```
|
||||||
|
|
||||||
## Composants principaux
|
## Composants principaux
|
||||||
@@ -20,20 +23,24 @@ Planification/
|
|||||||
### `background.js` — Service worker (Manifest V3)
|
### `background.js` — Service worker (Manifest V3)
|
||||||
Worker de fond responsable de :
|
Worker de fond responsable de :
|
||||||
- Récupération de la session EasyVista (PHPSESSID)
|
- Récupération de la session EasyVista (PHPSESSID)
|
||||||
- Fetch du XML `calendar_block` (planning du jour pour les 8 techs)
|
- Fetch du XML `calendar_block` (planning du jour pour les techs configurés)
|
||||||
- Fetch des fiches détaillées (HTML)
|
- Fetch des fiches détaillées (HTML)
|
||||||
- Fetch du timeline JSON (texte action complet)
|
- Fetch du timeline JSON (texte action complet)
|
||||||
- Détection contexte réseau (interne / externe via SSO)
|
- Détection contexte réseau (interne / externe via SSO)
|
||||||
|
- Détection automatique des **groupes EasyVista** disponibles (depuis v2026.5.40) en parsant le `<select id="plan_group_id">` de la page Planning EV
|
||||||
|
- Détection automatique des **membres d'un groupe** (paramétrable par `groupId` depuis v2026.5.40)
|
||||||
- Gestion du cache local (`chrome.storage.local`)
|
- Gestion du cache local (`chrome.storage.local`)
|
||||||
- Nettoyage des vieux caches (cron)
|
- Nettoyage des vieux caches (cron)
|
||||||
|
|
||||||
### `viewer.js` — Interface principale
|
### `viewer.js` — Interface principale
|
||||||
- Parsing du XML calendar_block
|
- Parsing du XML calendar_block
|
||||||
- Construction des cards / rows par tech
|
- Construction des cards / rows par tech
|
||||||
- Timeline visuelle avec segments
|
- Timeline visuelle avec segments (depuis v2026.5.40 : barre couleur catégorie + référence + ville en vue horizontale)
|
||||||
- Tooltips détaillés (épinglables, draggables)
|
- Tooltips détaillés (épinglables, draggables)
|
||||||
- 2 modes d'affichage (classique / horizontale)
|
- 2 modes d'affichage (classique / horizontale)
|
||||||
- Panel admin (Apparence / Équipe / EasyVista / Statuts / Diagnostics / À propos)
|
- Panel admin (Apparence / Équipe / EasyVista / Diagnostics / À propos) — section "Statuts" retirée en v2026.5.40
|
||||||
|
- Onglet **Équipe** : sélecteur de groupe EV (SI-CSS, SI-EXT, …) avec rafraîchissement auto de la liste de membres au changement de groupe (v2026.5.40)
|
||||||
|
- Onglet **EasyVista** : édition manuelle des deux domaines interne / externe (v2026.5.40)
|
||||||
- Module LOG unifié (debug toggle)
|
- Module LOG unifié (debug toggle)
|
||||||
- Handlers globaux d'erreur
|
- Handlers globaux d'erreur
|
||||||
- `sendMessage` avec timeout
|
- `sendMessage` avec timeout
|
||||||
@@ -54,7 +61,7 @@ Utilisateur clique sur l'icône
|
|||||||
├─> findEasyVistaSession (via background)
|
├─> findEasyVistaSession (via background)
|
||||||
├─> fetchPlanningXml -> parseXML
|
├─> fetchPlanningXml -> parseXML
|
||||||
├─> Pour chaque intervention : fetchFiche + parseHtml
|
├─> Pour chaque intervention : fetchFiche + parseHtml
|
||||||
├─> renderFromData() -> buildCard() x 8 techs
|
├─> renderFromData() -> buildCard() x N techs
|
||||||
└─> writeCache()
|
└─> writeCache()
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -65,7 +72,7 @@ Utilisateur clique sur l'icône
|
|||||||
| Manifest | V3 |
|
| Manifest | V3 |
|
||||||
| Browser support | Chrome / Edge / Firefox 140+ |
|
| Browser support | Chrome / Edge / Firefox 140+ |
|
||||||
| Pas de framework | JS vanilla |
|
| Pas de framework | JS vanilla |
|
||||||
| Pas de build step | les fichiers sont chargés tels quels |
|
| Pas de build step navigateur | les fichiers sont chargés tels quels (un script `build.sh` empaquette les sources en `.zip` / `.xpi`) |
|
||||||
| Stockage | `chrome.storage.local` (cache + admin_config) + `localStorage` (préfs UI) |
|
| Stockage | `chrome.storage.local` (cache + admin_config) + `localStorage` (préfs UI) |
|
||||||
| Réseau | `fetch` avec credentials (cookies EV) |
|
| Réseau | `fetch` avec credentials (cookies EV) |
|
||||||
| Logs | console (préfixé + timestamp + version) |
|
| Logs | console (préfixé + timestamp + version) |
|
||||||
@@ -86,6 +93,10 @@ Utilisateur clique sur l'icône
|
|||||||
| `positionTooltipAnchored` | v2026.5.34 | Positionnement tooltip (4 candidats) |
|
| `positionTooltipAnchored` | v2026.5.34 | Positionnement tooltip (4 candidats) |
|
||||||
| `LOG.error/warn/info` | v2026.5.38 | Logger unifié |
|
| `LOG.error/warn/info` | v2026.5.38 | Logger unifié |
|
||||||
| `_applyTextZoom` | v2026.5.39 | Zoom global du texte (slider Apparence) |
|
| `_applyTextZoom` | v2026.5.39 | Zoom global du texte (slider Apparence) |
|
||||||
|
| `renderAdminSectionTeam` | v5.0.0 | Onglet admin Équipe (sélecteur de groupe EV depuis v2026.5.40, tri inclus + alpha) |
|
||||||
|
| `renderAdminSectionEV` | v5.0.0 | Onglet admin EasyVista (édition domaines depuis v2026.5.40) |
|
||||||
|
| `paintGroupOptions` / `refreshTeamForGroup` | v2026.5.40 | Helpers du sélecteur de groupe (peuplement + refresh auto de la liste équipe) |
|
||||||
|
| `_normalizeOrigin` | v2026.5.40 | Normalisation des URLs des domaines EV éditées dans l'admin |
|
||||||
|
|
||||||
## Fonctions clés (background.js)
|
## Fonctions clés (background.js)
|
||||||
|
|
||||||
@@ -97,4 +108,25 @@ Utilisateur clique sur l'icône
|
|||||||
| `fetchTimelineApi` | Fetch JSON timeline d'une fiche (texte action complet) |
|
| `fetchTimelineApi` | Fetch JSON timeline d'une fiche (texte action complet) |
|
||||||
| `fetchCurrentUser` | Identifie l'user EV connecté |
|
| `fetchCurrentUser` | Identifie l'user EV connecté |
|
||||||
| `detectNetworkContext` | Interne (etat-de-vaud.ch) ou externe (vd.ch) |
|
| `detectNetworkContext` | Interne (etat-de-vaud.ch) ou externe (vd.ch) |
|
||||||
|
| `detectGroupsFromEV` (v2026.5.40) | Parse le `<select id="plan_group_id">` de la page Planning → liste `[{id, name}, …]` des groupes disponibles |
|
||||||
|
| `detectTeamFromEV` (paramétrable depuis v2026.5.40) | Liste les membres d'un groupe ; accepte un `groupId` en argument pour basculer entre SI-CSS / SI-EXT |
|
||||||
| `evFetch` | Wrapper fetch avec headers EV (Referer, X-Requested-With) |
|
| `evFetch` | Wrapper fetch avec headers EV (Referer, X-Requested-With) |
|
||||||
|
|
||||||
|
## Configuration persistée
|
||||||
|
|
||||||
|
`chrome.storage.local["admin_config"]` :
|
||||||
|
|
||||||
|
| Clé | Type | Rôle | Introduite |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `team` | `{id: name}` | Liste des techniciens inclus | v5.0.0 |
|
||||||
|
| `recurringAbsences` | `{id: [days]}` | Jours de la semaine d'absence récurrente | v5.0.0 |
|
||||||
|
| `groupId` | string | ID du groupe EV sélectionné | v5.0.0 |
|
||||||
|
| `groupName` | string | Nom du groupe sélectionné (cache d'affichage) | v2026.5.40 |
|
||||||
|
| `detectedGroups` | `[{id, name}]` | Cache de la dernière détection des groupes | v2026.5.40 |
|
||||||
|
| `evOrigins` | `[interne, externe]` | Domaines EasyVista éditables dans l'admin | v2026.5.40 |
|
||||||
|
| `theme` | `auto`/`light`/`dark` | Préférence thème | v2026.5.39 |
|
||||||
|
| `textZoom` | `-2..+2` | Niveau de zoom du texte | v2026.5.39 |
|
||||||
|
| `cacheDays` | number | Durée de rétention du cache (défaut 7) | v2026.5.39 |
|
||||||
|
| `dayStart` / `dayEnd` | number | Plage horaire de la timeline (défaut 8-18) | v2026.5.39 |
|
||||||
|
|
||||||
|
`localStorage["view_mode"]` : `classic` ou `horizontal` (depuis v2026.5.32).
|
||||||
|
|||||||
Reference in New Issue
Block a user