Composables
Vue d’ensemble
Section intitulée « Vue d’ensemble »Les composables (use*) encapsulent la logique métier réactive. Ils sont dans pwa/src/composables/.
Composables coeur
Section intitulée « Composables coeur »useVitalSigns()
Section intitulée « useVitalSigns() »Gestion de l’état patient réactif : paramètres vitaux, alarmes, seuils.
const { vitals, setVital, isAlarming, alarms } = useVitalSigns()
// Modifier un paramètresetVital('hr', 120)
// Vérifier les alarmesif (isAlarming.value) { console.log(alarms.value) // [{ param: 'hr', type: 'high', value: 120 }]}useScenario()
Section intitulée « useScenario() »Chargement, exécution et navigation dans les scénarios JSON.
const { scenario, currentState, start, pause, resume, trigger, goto } = useScenario()
// Charger et démarrerawait scenario.load('acr-fv-adulte')start()
// Navigationtrigger('shock')goto('stable')useSessionLog()
Section intitulée « useSessionLog() »Enregistrement des événements et export.
const { events, log, exportJSON, exportCSV } = useSessionLog()
log('shock_delivered', { energy: 200, rhythm: 'FV' })await exportJSON()useDeviceConnection()
Section intitulée « useDeviceConnection() »Communication WebSocket avec le coordinateur ESP32.
const { isConnected, devices, send, connect } = useDeviceConnection()
connect('ws://192.168.4.1:81')send('SCENARIO_START', { id: 'acr-fv-adulte' })useOfflineSync()
Section intitulée « useOfflineSync() »File de synchronisation IndexedDB ↔ cloud.
const { pendingCount, sync, isOnline } = useOfflineSync()
if (isOnline.value) { await sync()}Composables UI
Section intitulée « Composables UI »useTheme()
Section intitulée « useTheme() »Gestion du thème clair/sombre.
useToast()
Section intitulée « useToast() »Notifications temporaires.
useOnboarding()
Section intitulée « useOnboarding() »Visite guidée pour les nouveaux utilisateurs.
usePWAInstall()
Section intitulée « usePWAInstall() »Détection et gestion de l’installation PWA.
useTimer()
Section intitulée « useTimer() »Chronomètre de session avec pause/resume.
- Un composable = un fichier dans
composables/ - Prefix
use - Retourne des
ref()/computed()réactifs - Pas de dépendance directe aux composants
- Testable indépendamment (90% couverture cible)