line counts à jour, ajout flow ASCII détaillé, layout repo enrichi (firefox-updates.json + CLAUDE.md)
+42
-14
@@ -5,16 +5,18 @@
|
||||
```
|
||||
Planification/
|
||||
├── .gitignore
|
||||
├── build.sh # Génère dist/chromium/, dist/firefox/, .zip, .xpi
|
||||
├── 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)
|
||||
├── CHANGELOG.md
|
||||
├── LICENSE # MIT
|
||||
├── README.md
|
||||
├── CLAUDE.md # Workflow pour Claude Code
|
||||
└── 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)
|
||||
├── manifest.json # Manifest V3 (Chrome) + browser_specific_settings (Firefox)
|
||||
├── background.js # Service worker (~1 600 lignes)
|
||||
├── viewer.html # Interface principale
|
||||
├── viewer.js # Logique (~9 500 lignes)
|
||||
├── viewer.css # Styles + thèmes clair/sombre
|
||||
├── viewer.js # Logique UI (~10 700 lignes)
|
||||
├── viewer.css # Styles + thèmes clair/sombre (~4 800 lignes)
|
||||
└── icons/ # icon16, icon48, icon128
|
||||
```
|
||||
|
||||
@@ -54,17 +56,43 @@ Worker de fond responsable de :
|
||||
## Flux principal
|
||||
|
||||
```
|
||||
Utilisateur clique sur l'icône
|
||||
└─> background.js : ouvre viewer.html
|
||||
└─> viewer.js : init()
|
||||
├─> readCache(date) -> render si dispo
|
||||
├─> findEasyVistaSession (via background)
|
||||
├─> fetchPlanningXml -> parseXML
|
||||
├─> Pour chaque intervention : fetchFiche + parseHtml
|
||||
├─> renderFromData() -> buildCard() x N techs
|
||||
└─> writeCache()
|
||||
┌────────────────┐ clic icône ┌─────────────────────┐
|
||||
│ Navigateur │ ───────────────> │ background.js │
|
||||
│ (Chrome / │ │ (service worker) │
|
||||
│ Firefox) │ <─── viewer.html │ │
|
||||
└────────────────┘ └──────────┬──────────┘
|
||||
│ │
|
||||
│ chrome.runtime.sendMessage │ findEasyVistaSession()
|
||||
│ {type: "fetchPlanning"} │ ↓
|
||||
▼ ▼
|
||||
┌────────────────────────┐ ┌────────────────────┐
|
||||
│ viewer.js (UI) │ │ EasyVista server │
|
||||
│ ─ init() │ │ itsma.vd.ch / │
|
||||
│ ─ loadForDate(iso) │ ◄── XML ── │ etat-de-vaud.ch │
|
||||
│ ─ parseXML │ fiches │ │
|
||||
│ ─ buildCard() x N │ │ planning_xhr.php │
|
||||
│ ─ buildTooltipHTML │ │ index.php (fiches) │
|
||||
│ ─ renderFromData │ │ etc. │
|
||||
│ ─ writeCache │ └────────────────────┘
|
||||
└──────────┬─────────────┘
|
||||
│
|
||||
▼
|
||||
┌────────────────────────────────────────────────┐
|
||||
│ chrome.storage.local │
|
||||
│ ─ admin_config (groupe, équipe, domaines, …) │
|
||||
│ ─ planning_cache_YYYY-MM-DD (par jour) │
|
||||
│ localStorage │
|
||||
│ ─ view_mode (classic / horizontal) │
|
||||
└────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**Étapes clés** (de `init()` à l'affichage) :
|
||||
1. `init()` → charge le thème + la config admin + les bornes de la journée + l'équipe.
|
||||
2. `refreshSessionAndLoad()` → cherche la session EV via `background.js`.
|
||||
3. `loadForDate(isoDate)` → essaye d'abord le cache local (`readCache`), puis fetche le XML calendar_block via `background.fetchPlanningXml`.
|
||||
4. Pour chaque intervention présente dans le XML : on en `buildCard()` immédiatement avec les attributs déjà enrichis (contact/lieu/catégorie). Pour les statuts détaillés, on lance des `fetchFiche` séquentiels en arrière-plan qui mettent à jour le DOM au fur et à mesure.
|
||||
5. À la fin du fetch complet : `writeCache()` sauvegarde tout dans `chrome.storage.local["planning_cache_YYYY-MM-DD"]`.
|
||||
|
||||
## Stack technique
|
||||
|
||||
| Élément | Détail |
|
||||
|
||||
Reference in New Issue
Block a user