25 lines
1.1 KiB
JavaScript
25 lines
1.1 KiB
JavaScript
// Transitions d'etat retrouvees dans l'historique HA (06/10/2026).
|
|
// Voir ALLERS_RETOURS_SUIVIS dans historise-evcs.mjs : un aller-retour plus
|
|
// bref qu'un cycle du service ne se voit que par le `last_changed` de HA.
|
|
const txt = (s) => (s ?? '').toString().trim();
|
|
export const ETATS_ABSENTS = new Set(['', 'unavailable', 'unknown']);
|
|
|
|
// Transitions reelles entre `depuisIso` (exclu) et `jusquaIso` (inclus), en
|
|
// partant de l'etat `depart`. Les lectures indisponibles ne comptent pas.
|
|
// Pure (testee) : `serie` = reponse de /api/history/period pour une entite.
|
|
export function transitionsDansSerie(serie, depart, depuisIso, jusquaIso) {
|
|
const depuis = Date.parse(depuisIso), jusqua = Date.parse(jusquaIso);
|
|
const res = [];
|
|
let courant = depart;
|
|
for (const e of serie || []) {
|
|
const t = Date.parse(e.last_changed);
|
|
if (!(t > depuis && t <= jusqua)) continue;
|
|
const etat = txt(e.state);
|
|
if (ETATS_ABSENTS.has(etat) || etat === courant) continue;
|
|
res.push({ avant: courant, apres: etat, a: e.last_changed });
|
|
courant = etat;
|
|
}
|
|
return res;
|
|
}
|
|
|