From cdff501429ec96f2b2007cc0d1e5689675f1756f Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Thu, 6 Nov 2025 15:39:40 +0530 Subject: [PATCH] treat filter datetime inputs as local; convert to UTC on apply --- src/lib/components/filters/content.svelte | 9 +++++++-- src/lib/components/filters/filtersModal.svelte | 8 ++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/lib/components/filters/content.svelte b/src/lib/components/filters/content.svelte index a42161f436..c4a83c8216 100644 --- a/src/lib/components/filters/content.svelte +++ b/src/lib/components/filters/content.svelte @@ -14,6 +14,7 @@ import type { Column } from '$lib/helpers/types'; import type { Writable } from 'svelte/store'; import { TagList } from '.'; + import { toLocalDateTimeISO } from '$lib/helpers/date'; import { Icon, Layout } from '@appwrite.io/pink-svelte'; import { IconPlus } from '@appwrite.io/pink-icons-svelte'; @@ -79,7 +80,7 @@ value = column?.array ? [] : null; if (column?.type === 'datetime') { const now = new Date(); - value = now.toISOString().slice(0, 16); + value = toLocalDateTimeISO(now.toISOString()).slice(0, 16); } // Initialize spatial data with default values if (column?.type === 'point') { @@ -108,7 +109,11 @@ if (isDistanceOperator && distanceValue !== null && value !== null) { addFilter(columnsArray, columnId, operatorKey, value, arrayValues, distanceValue); } else { - addFilter(columnsArray, columnId, operatorKey, value, arrayValues); + const preparedValue = + column?.type === 'datetime' && typeof value === 'string' && value + ? new Date(value).toISOString() + : value; + addFilter(columnsArray, columnId, operatorKey, preparedValue, arrayValues); } columnId = null; diff --git a/src/lib/components/filters/filtersModal.svelte b/src/lib/components/filters/filtersModal.svelte index e69f2af1a5..0281b43c66 100644 --- a/src/lib/components/filters/filtersModal.svelte +++ b/src/lib/components/filters/filtersModal.svelte @@ -57,7 +57,11 @@ } function addCondition() { - const newTag = generateTag(selectedColumn, operatorKey, value || arrayValues); + const preparedValue = + column?.type === 'datetime' && typeof value === 'string' && value + ? new Date(value).toISOString() + : value; + const newTag = generateTag(selectedColumn, operatorKey, preparedValue || arrayValues); if (localTags.some((t) => t.tag === newTag.tag && t.value === newTag.value)) { return; } else { @@ -66,7 +70,7 @@ { id: selectedColumn, operator: operatorKey, - value: value, + value: preparedValue, arrayValues: arrayValues } ];