From d7e57921e0778668c1eb88a33eda72c7b92e334d Mon Sep 17 00:00:00 2001 From: Joseph Date: Tue, 20 Jan 2026 17:38:27 +0000 Subject: [PATCH 1/3] Replace spacetime with Temporal for date handling Refactores ChartFilter to use the Temporal API instead of spacetime for date and time calculations. Adds helper methods for formatting date and time strings. --- frontend/js/class/Filter/ChartFilter.js | 36 ++++++++++++++++++------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/frontend/js/class/Filter/ChartFilter.js b/frontend/js/class/Filter/ChartFilter.js index bf84f21f..e52504fc 100644 --- a/frontend/js/class/Filter/ChartFilter.js +++ b/frontend/js/class/Filter/ChartFilter.js @@ -2,12 +2,8 @@ import { Settings } from '../Settings.js' import { Dataset } from '../Dataset.js' import { Filter } from './Filter.js' import { FilterChip } from '../FilterChip.js' -import spacetime from 'spacetime' export class ChartFilter extends Filter { - #hourDisplayFormat = '{year}-{iso-month}-{date-pad} {hour-24-pad}:00' - #dateDisplayFormat = '{year}-{iso-month}-{date-pad}' - constructor () { super() this.chip = new FilterChip('chart') @@ -157,16 +153,18 @@ export class ChartFilter extends Filter { * @param {int} hours Number of hours */ #createHourGroups (hours) { - let hour = spacetime.now(Settings.getTimezone()).subtract(hours, 'hours') + let hour = Temporal.Now.plainDateTimeISO(Settings.getTimezone()) + hour = hour.subtract({ hours: hours}); + const groups = [] const keys = [] for (let i = 1; i <= hours; i++) { if (i > 1) { - hour = hour.add('1', 'hours') + hour = hour.add({hours: 1}) } - const hourFormatted = hour.format(this.#hourDisplayFormat) + const hourFormatted = this.#formatDateTimeTostring(hour, true) keys.push(hourFormatted) groups.push({ @@ -185,13 +183,15 @@ export class ChartFilter extends Filter { * @param {int} hours Number of days */ #createDayGroups (days) { - let date = spacetime.now(Settings.getTimezone()).subtract(days, 'days') + let date = Temporal.Now.plainDateTimeISO(Settings.getTimezone()) + date = date.subtract({ days: days}); + const groups = [] const keys = [] for (let i = 1; i <= days; i++) { - date = date.add(1, 'day') - const dateFormatted = date.format(this.#dateDisplayFormat) + date = date.add({days: 1}) + const dateFormatted = this.#formatDateTimeTostring(date) keys.push(dateFormatted) groups.push({ @@ -235,4 +235,20 @@ export class ChartFilter extends Filter { hasData: true } } + + #formatDateTimeTostring (dateTime, includeHour = false) + { + var text = `${dateTime.year}-${this.#padNumber(dateTime.month)}-${this.#padNumber(dateTime.day)}` + + if (includeHour === true) { + text += ` ${this.#padNumber(dateTime.hour)}:00` + } + + return text; + } + + #padNumber (number) + { + return String(number).padStart(2, '0'); + } } From 89162b65f163aa8b47f3b023b5db9be887058135 Mon Sep 17 00:00:00 2001 From: Joseph Date: Tue, 20 Jan 2026 17:39:05 +0000 Subject: [PATCH 2/3] Simplify time label formatting in Plot.js Replaces Date object formatting with string splitting for time labels in 'last24hours' and 'last48hours' chart types. --- frontend/js/class/Plot.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/frontend/js/class/Plot.js b/frontend/js/class/Plot.js index 30aee350..e5e7f4c2 100644 --- a/frontend/js/class/Plot.js +++ b/frontend/js/class/Plot.js @@ -50,14 +50,13 @@ export class Plot { callback: function (val, index) { let x = 2 let value = this.getLabelForValue(val) - const time = new Date(value) if (data.type === 'last14days') { x = -1 } if (data.type === 'last24hours' || data.type === 'last48hours') { - value = time.toLocaleString(navigator.languages[0], { hour: 'numeric', minute: 'numeric', hour12: false }) + value = value.split(' ')[1] if (data.type === 'last48hours') { x = 6 From 75a8990c9c777de7d437f83183480009d301a336 Mon Sep 17 00:00:00 2001 From: Joseph Date: Mon, 2 Feb 2026 12:32:42 +0000 Subject: [PATCH 3/3] Update ChartFilter.js --- frontend/js/class/Filter/ChartFilter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/js/class/Filter/ChartFilter.js b/frontend/js/class/Filter/ChartFilter.js index e52504fc..5a2b8adc 100644 --- a/frontend/js/class/Filter/ChartFilter.js +++ b/frontend/js/class/Filter/ChartFilter.js @@ -180,7 +180,7 @@ export class ChartFilter extends Filter { /** * Create day groups - * @param {int} hours Number of days + * @param {int} days Number of days */ #createDayGroups (days) { let date = Temporal.Now.plainDateTimeISO(Settings.getTimezone())