Files
EVCS/tools/allers-retours.mjs

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;
}