chore: add facets.getParser method
This commit is contained in:
parent
b0c6b42c17
commit
eb0d17154c
2 changed files with 23 additions and 9 deletions
|
@ -25,11 +25,12 @@ export default class Facets {
|
||||||
names.forEach((name) => {
|
names.forEach((name) => {
|
||||||
let value = feature.properties[name]
|
let value = feature.properties[name]
|
||||||
const type = defined[name]['type']
|
const type = defined[name]['type']
|
||||||
|
const parser = this.getParser(type)
|
||||||
|
value = parser(value)
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 'date':
|
case 'date':
|
||||||
case 'datetime':
|
case 'datetime':
|
||||||
case 'number':
|
case 'number':
|
||||||
value = type === 'number' ? parseFloat(value) : new Date(value)
|
|
||||||
if (!isNaN(value)) {
|
if (!isNaN(value)) {
|
||||||
if (isNaN(properties[name].min) || properties[name].min > value) {
|
if (isNaN(properties[name].min) || properties[name].min > value) {
|
||||||
properties[name].min = value
|
properties[name].min = value
|
||||||
|
@ -40,7 +41,7 @@ export default class Facets {
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
default:
|
default:
|
||||||
value = String(value || '') || L._('<empty value>')
|
value = value || L._('<empty value>')
|
||||||
if (!properties[name].choices.includes(value)) {
|
if (!properties[name].choices.includes(value)) {
|
||||||
properties[name].choices.push(value)
|
properties[name].choices.push(value)
|
||||||
}
|
}
|
||||||
|
@ -130,4 +131,20 @@ export default class Facets {
|
||||||
return acc
|
return acc
|
||||||
}, {})
|
}, {})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getParser(type) {
|
||||||
|
switch(type) {
|
||||||
|
case 'number':
|
||||||
|
return parseFloat
|
||||||
|
case 'datetime':
|
||||||
|
return (v) => new Date(v)
|
||||||
|
case 'date':
|
||||||
|
return (v) => new Date(new Date(v).toDateString()) // Without time
|
||||||
|
default:
|
||||||
|
return (v) => String(v || '')
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -496,15 +496,12 @@ U.FeatureMixin = {
|
||||||
const selected = this.map.facets.selected
|
const selected = this.map.facets.selected
|
||||||
for (let [name, { type, min, max, choices }] of Object.entries(selected)) {
|
for (let [name, { type, min, max, choices }] of Object.entries(selected)) {
|
||||||
let value = this.properties[name]
|
let value = this.properties[name]
|
||||||
let parser
|
let parser = this.map.facets.getParser(type)
|
||||||
|
value = parser(value)
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 'date':
|
case 'date':
|
||||||
case 'datetime':
|
case 'datetime':
|
||||||
case 'number':
|
case 'number':
|
||||||
if (type === 'number') parser = parseFloat
|
|
||||||
else if (type == 'datetime') parser = (v) => new Date(v)
|
|
||||||
else parser = (v) => new Date(new Date(v).toDateString()) // Without time
|
|
||||||
value = value != null ? value : undefined
|
|
||||||
min = parser(min)
|
min = parser(min)
|
||||||
max = parser(max)
|
max = parser(max)
|
||||||
value = parser(value)
|
value = parser(value)
|
||||||
|
@ -512,8 +509,8 @@ U.FeatureMixin = {
|
||||||
if (!isNaN(max) && !isNaN(value) && max < value) return false
|
if (!isNaN(max) && !isNaN(value) && max < value) return false
|
||||||
break
|
break
|
||||||
default:
|
default:
|
||||||
value = String(value || '') || L._('<empty value>')
|
value = value || L._('<empty value>')
|
||||||
if (choices?.length && (!value || !choices.includes(value))) return false
|
if (choices?.length && !choices.includes(value)) return false
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue