From e6046efbe5302497451f3d2e1c7817de7a152c08 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Wed, 4 Sep 2024 14:20:33 +0200 Subject: [PATCH] Bug 36217: Use the server's tz to limit the jobs by "enqueued in the last hour" This patch suggests to revert the previous attempt to fix this problem. The date was using the client-side's tz and so the "last hour" was not matching the one from the server. I have noticed a couple of things when working on this: * We cannot pass a RFC3339 formatted date to the server (will open a separate bug report) * toISOString() and the handling of timezone in dayjs is ambiguous or buggy https://github.com/iamkun/dayjs/issues/2720 https://github.com/iamkun/dayjs/issues/2611 --- koha-tmpl/intranet-tmpl/prog/en/includes/js-date-format.inc | 2 ++ .../intranet-tmpl/prog/en/modules/admin/background_jobs.tt | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/js-date-format.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/js-date-format.inc index bce0620c484..c9b2129749b 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/js-date-format.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/js-date-format.inc @@ -59,6 +59,8 @@ var withtime = (options&&options.withtime)||false; if(dateformat=='rfc3339' && withtime) return m.format(); + if(dateformat=='iso' && withtime) return m.format("YYYY-MM-DDTHH:mm:ss.sssZ"); // Do not use toISOString(), it does not behave as expected + // Might be fixed in a future version of dayjs var timeformat = (options&&options.timeformat)||def_time_format; var date_pattern = get_date_pattern(dateformat); diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/background_jobs.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/background_jobs.tt index fb92ebd0e1e..971768332f6 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/background_jobs.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/background_jobs.tt @@ -264,9 +264,11 @@ let now = new Date(); if ( $("#include_last_hour").is(":checked") ) { now.setHours(now.getHours() - 1); - return { ">": now.toISOString() }; + let now_with_server_tz = $datetime(now.toISOString(), { dateformat: 'iso' }); + return { ">": now_with_server_tz }; } else { - return { "<": now.toISOString() }; + let now_with_server_tz = $datetime(now.toISOString(), { dateformat: 'iso' }); + return { "<": now_with_server_tz }; } } }; -- 2.34.1