diff --git a/WebDisplay/package.json b/WebDisplay/package.json index 150c4a2..179c1e0 100644 --- a/WebDisplay/package.json +++ b/WebDisplay/package.json @@ -1,7 +1,7 @@ { "name": "web-display", "version": "1.0.0", - "packageManager": "pnpm@10.8.1", + "packageManager": "pnpm@10.29.3", "scripts": { "dev": "cross-env NODE_OPTIONS='--no-warnings' vite", "build": "vue-tsc --noEmit && vite build", diff --git a/WebDisplay/src/dateReviver.ts b/WebDisplay/src/dateReviver.ts new file mode 100644 index 0000000..1e1add8 --- /dev/null +++ b/WebDisplay/src/dateReviver.ts @@ -0,0 +1,15 @@ +export function dateReviver(key: string, value: any): any { + if (key.indexOf('Timestamp') == -1) { + return value; + } + + if (typeof value === 'string' && value.match(/^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(?:\.\d+)?(?:Z|[+-]\d\d:\d\d)?$/)) { + const date = new Date(value); + + if (!isNaN(date.getTime())) { + return date; + } + } + + return value; +} diff --git a/WebDisplay/src/models/power/power-status.ts b/WebDisplay/src/models/power/power-status.ts index 28d65b8..fac50de 100644 --- a/WebDisplay/src/models/power/power-status.ts +++ b/WebDisplay/src/models/power/power-status.ts @@ -1,4 +1,5 @@ export default class PowerStatus { + Timestamp: Date | undefined; Generation: number = 0; Consumption: number = 0; } diff --git a/WebDisplay/src/pages/kiosk.vue b/WebDisplay/src/pages/kiosk.vue index ae6499d..5d82676 100644 --- a/WebDisplay/src/pages/kiosk.vue +++ b/WebDisplay/src/pages/kiosk.vue @@ -8,6 +8,8 @@ import LongPressButton from '@/components/LongPressButton.vue'; import PressureTrendArrow from '@/components/PressureTrendArrow.vue'; + const outOfDateDuration = 5000; + const showFeelsLike = ref(true); const weatherStore = useWeatherStore(); @@ -50,8 +52,18 @@ } } + function weatherOutOfDate(): boolean { + return weatherStore.current?.Timestamp !== undefined && Date.now() - weatherStore.current.Timestamp.getTime() >= outOfDateDuration; + } + + function powerOutOfDate(): boolean { + return powerStore.current?.Timestamp !== undefined && Date.now() - powerStore.current.Timestamp.getTime() >= outOfDateDuration; + } + function getTemperatureClass(): string { - if (showFeelsLike.value && weatherStore.current?.WindChill) { + if (weatherOutOfDate()) { + return 'out-of-date-reading'; + } else if (showFeelsLike.value && weatherStore.current?.WindChill) { return 'temperature-wind-chill'; } else if (showFeelsLike.value && weatherStore.current?.HeatIndex) { return 'temperature-heat-index'; @@ -109,6 +121,7 @@