chore: try to parse naive dates as UTC

This commit is contained in:
Yohan Boniface 2024-04-18 19:03:03 +02:00
parent eb0d17154c
commit 37e0582b30
5 changed files with 29 additions and 9 deletions

View file

@ -1,5 +1,6 @@
import { DomUtil, DomEvent, stamp } from '../../vendors/leaflet/leaflet-src.esm.js' import { DomUtil, DomEvent, stamp } from '../../vendors/leaflet/leaflet-src.esm.js'
import { translate } from './i18n.js' import { translate } from './i18n.js'
import * as Utils from './utils.js'
export default class Facets { export default class Facets {
constructor(map) { constructor(map) {
@ -133,18 +134,15 @@ export default class Facets {
} }
getParser(type) { getParser(type) {
switch(type) { switch (type) {
case 'number': case 'number':
return parseFloat return parseFloat
case 'datetime': case 'datetime':
return (v) => new Date(v) return (v) => new Date(v)
case 'date': case 'date':
return (v) => new Date(new Date(v).toDateString()) // Without time return Utils.parseNaiveDate
default: default:
return (v) => String(v || '') return (v) => String(v || '')
} }
} }
} }

View file

@ -27,9 +27,9 @@ export function checkId(string) {
/** /**
* Compute the impacts for a given list of fields. * Compute the impacts for a given list of fields.
* *
* Return an array of unique impacts. * Return an array of unique impacts.
* *
* @param {fields} list[fields] * @param {fields} list[fields]
* @returns Array[string] * @returns Array[string]
*/ */
@ -356,3 +356,9 @@ export function template(str, data) {
return value return value
}) })
} }
export function parseNaiveDate(value) {
const naive = new Date(value)
// Let's pretend naive date are UTC, and remove time…
return new Date(Date.UTC(naive.getFullYear(), naive.getMonth(), naive.getDate()))
}

View file

@ -504,7 +504,6 @@ U.FeatureMixin = {
case 'number': case 'number':
min = parser(min) min = parser(min)
max = parser(max) max = parser(max)
value = parser(value)
if (!isNaN(min) && !isNaN(value) && min > value) return false if (!isNaN(min) && !isNaN(value) && min > value) return false
if (!isNaN(max) && !isNaN(value) && max < value) return false if (!isNaN(max) && !isNaN(value) && max < value) return false
break break

View file

@ -590,4 +590,21 @@ describe('Utils', function () {
assert.deepEqual(getImpactsFromSchema(['foo', 'bar', 'baz'], schema), ['A', 'B']) assert.deepEqual(getImpactsFromSchema(['foo', 'bar', 'baz'], schema), ['A', 'B'])
}) })
}) })
describe('parseNaiveDate', () => {
it('should parse a date', () => {
assert.equal(Utils.parseNaiveDate("2024/03/04").toISOString(), "2024-03-04T00:00:00.000Z")
})
it('should parse a datetime', () => {
assert.equal(Utils.parseNaiveDate("2024/03/04 12:13:14").toISOString(), "2024-03-04T00:00:00.000Z")
})
it('should parse an iso datetime', () => {
assert.equal(Utils.parseNaiveDate("2024-03-04T00:00:00.000Z").toISOString(), "2024-03-04T00:00:00.000Z")
})
it('should parse a GMT time', () => {
assert.equal(Utils.parseNaiveDate("04 Mar 2024 00:12:00 GMT").toISOString(), "2024-03-04T00:00:00.000Z")
})
it('should parse a GMT time with explicit timezone', () => {
assert.equal(Utils.parseNaiveDate("Thu, 04 Mar 2024 00:00:00 GMT+0300").toISOString(), "2024-03-03T00:00:00.000Z")
})
})
}) })

View file

@ -59,7 +59,7 @@ DATALAYER_DATA2 = {
"mytype": "odd", "mytype": "odd",
"name": "Point 3", "name": "Point 3",
"mynumber": 14, "mynumber": 14,
"mydate": "2024/04/04 10:19:17", "mydate": "2024-04-04T10:19:17.000Z",
}, },
"geometry": {"type": "Point", "coordinates": [4.372559, 47.945786]}, "geometry": {"type": "Point", "coordinates": [4.372559, 47.945786]},
}, },