Mode Énergie dans detail_batterie.qml (barres + comparatif) ; axes X unifiés (quadrillage+étiquettes) sur les 4 pages de détail, espacement adapté par période
This commit is contained in:
@@ -194,12 +194,43 @@ Shipheart_page {
|
||||
ctx.fillText(v.toFixed(precisionAffichage), 2, y + 4);
|
||||
}
|
||||
|
||||
// Étiquettes X :
|
||||
var nbLabelsX = 6;
|
||||
for (var j = 0; j <= nbLabelsX; j++) {
|
||||
var t = tMin + (j / nbLabelsX) * (tMax - tMin);
|
||||
var x = px(t);
|
||||
ctx.fillText(Qt.formatDateTime(new Date(t), "HH:mm"), x - 18, height - 8);
|
||||
// Quadrillage vertical ET étiquettes, ensemble, sur les mêmes
|
||||
// paliers ronds - paliers de 5 min (1h), heure pleine (24h) ou
|
||||
// minuit (7j/30j). Remplace l'ancien double affichage (quadrillage
|
||||
// sans étiquette + étiquettes à des positions non alignées).
|
||||
function prochain_palier_rond(instant, periodeIdx) {
|
||||
var d = new Date(instant);
|
||||
if (periodeIdx >= 2) {
|
||||
d.setHours(0, 0, 0, 0);
|
||||
if (d.getTime() < instant) d.setDate(d.getDate() + 1);
|
||||
} else if (periodeIdx === 1) {
|
||||
d.setMinutes(0, 0, 0);
|
||||
if (d.getTime() < instant) d.setHours(d.getHours() + 1);
|
||||
} else {
|
||||
d.setSeconds(0, 0);
|
||||
d.setMinutes(Math.ceil(d.getMinutes() / 5) * 5);
|
||||
if (d.getTime() < instant) d.setMinutes(d.getMinutes() + 5);
|
||||
}
|
||||
return d.getTime();
|
||||
}
|
||||
var pasGrilleMs = (periodeIndex >= 2) ? 86400000 : (periodeIndex === 1) ? 3600000 : 5 * 60000;
|
||||
var formatEtiquette = (periodeIndex >= 2) ? "dd/MM" : "HH:mm";
|
||||
ctx.strokeStyle = "#2a2a2a";
|
||||
ctx.fillStyle = couleur_gris_pale;
|
||||
// Une étiquette sur 3 seulement pour 24h/30j (trop chargé sinon,
|
||||
// 24-25 ou 30 barres) - à partir de la première, quitte à ce que les
|
||||
// 1-2 dernières graduations restent sans étiquette :
|
||||
var pasEtiquette = (periodeIndex === 1 || periodeIndex === 3) ? 3 : 1;
|
||||
var indexGrille = 0;
|
||||
for (var tGrille = prochain_palier_rond(tMin, periodeIndex); tGrille <= tMax; tGrille += pasGrilleMs, indexGrille++) {
|
||||
var xGrille = px(tGrille);
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(xGrille, marge);
|
||||
ctx.lineTo(xGrille, marge + hauteurUtile);
|
||||
ctx.stroke();
|
||||
if (indexGrille % pasEtiquette === 0) {
|
||||
ctx.fillText(Qt.formatDateTime(new Date(tGrille), formatEtiquette), xGrille - 18, height - 8);
|
||||
}
|
||||
}
|
||||
|
||||
// Ligne de la courbe :
|
||||
|
||||
Reference in New Issue
Block a user