@sailingrotevista/rotevista-dash 7.0.34 → 7.0.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app.js +19 -12
- package/package.json +1 -1
package/app.js
CHANGED
|
@@ -373,17 +373,18 @@ function processIncomingData(path, val, source, timeMs) {
|
|
|
373
373
|
}
|
|
374
374
|
}
|
|
375
375
|
|
|
376
|
-
|
|
377
|
-
|
|
376
|
+
// Aggiorna lo stato raw e sincronizza il timestamp del watchdog sull'orologio locale (Date.now()) per evitare falsi timeout
|
|
377
|
+
const localNow = Date.now();
|
|
378
|
+
store.timestamps[path] = localNow;
|
|
378
379
|
store.raw[path] = val;
|
|
379
380
|
|
|
380
|
-
// Converte e aggiorna istantaneamente store.raw["navigation.headingTrue"] prima del rate limiter
|
|
381
|
+
// Converte e aggiorna istantaneamente store.raw["navigation.headingTrue"] per la UI prima del rate limiter
|
|
381
382
|
if (path === "navigation.headingMagnetic") {
|
|
382
|
-
const hasNativeTrueHdg = store.timestamps["navigation.headingTrueNative"] && (
|
|
383
|
+
const hasNativeTrueHdg = store.timestamps["navigation.headingTrueNative"] && (localNow - store.timestamps["navigation.headingTrueNative"] < 5000);
|
|
383
384
|
if (!hasNativeTrueHdg) {
|
|
384
385
|
const variation = store.raw["navigation.magneticVariation"] || 0;
|
|
385
386
|
store.raw["navigation.headingTrue"] = (val + variation + 2 * Math.PI) % (2 * Math.PI);
|
|
386
|
-
store.timestamps["navigation.headingTrue"] =
|
|
387
|
+
store.timestamps["navigation.headingTrue"] = localNow;
|
|
387
388
|
}
|
|
388
389
|
}
|
|
389
390
|
|
|
@@ -628,21 +629,27 @@ function updateWindTrend() {
|
|
|
628
629
|
// ==========================================================================
|
|
629
630
|
|
|
630
631
|
/**
|
|
631
|
-
* upUI: Aggiornamento valori digitali
|
|
632
|
+
* upUI: Aggiornamento valori digitali con tolleranza d'emergenza sul dato istantaneo
|
|
632
633
|
*/
|
|
633
634
|
const upUI = (el, obj, instantRaw, isCompass = false) => {
|
|
634
|
-
|
|
635
|
+
// Se la media obj non è momentaneamente disponibile, usa il dato istantaneo raw come paracadute
|
|
636
|
+
const displayRad = (obj && obj.val !== null && !isNaN(obj.val)) ? obj.val : instantRaw;
|
|
637
|
+
|
|
638
|
+
if (displayRad === undefined || displayRad === null || isNaN(displayRad)) {
|
|
635
639
|
el.innerHTML = "---°";
|
|
636
640
|
el.classList.remove('unstable-data');
|
|
637
641
|
} else {
|
|
638
|
-
let valDeg = Math.round(radToDeg(
|
|
642
|
+
let valDeg = Math.round(radToDeg(displayRad));
|
|
639
643
|
let mainVal = (isCompass ? ((valDeg + 360) % 360).toString().padStart(3, '0') : valDeg) + "°";
|
|
640
|
-
let dev = (obj.dev > 1 && obj.dev < 90) ? `<span style="font-size: 0.8em; opacity: 0.4; margin-left: 6px;">±${obj.dev}</span>` : "";
|
|
644
|
+
let dev = (obj && obj.dev > 1 && obj.dev < 90) ? `<span style="font-size: 0.8em; opacity: 0.4; margin-left: 6px;">±${obj.dev}</span>` : "";
|
|
641
645
|
el.innerHTML = mainVal + dev;
|
|
642
646
|
|
|
643
|
-
let diff = Math.abs((radToDeg(instantRaw) - radToDeg(obj.val) + 540) % 360 - 180);
|
|
644
|
-
if (isNavigating && (!obj.stable || obj.dev > CONFIG.averaging.stabilityBreakout || diff > CONFIG.averaging.stabilityBreakout))
|
|
645
|
-
|
|
647
|
+
let diff = (obj && instantRaw !== undefined) ? Math.abs((radToDeg(instantRaw) - radToDeg(obj.val) + 540) % 360 - 180) : 0;
|
|
648
|
+
if (isNavigating && (obj && (!obj.stable || obj.dev > CONFIG.averaging.stabilityBreakout || diff > CONFIG.averaging.stabilityBreakout))) {
|
|
649
|
+
el.classList.add('unstable-data');
|
|
650
|
+
} else {
|
|
651
|
+
el.classList.remove('unstable-data');
|
|
652
|
+
}
|
|
646
653
|
}
|
|
647
654
|
};
|
|
648
655
|
|