Remove dot in property name
Otherwise it will break when trying to access it in FormBuilder
This commit is contained in:
parent
0fa834155d
commit
647d8910c0
2 changed files with 23 additions and 3 deletions
|
@ -193,8 +193,7 @@ L.U.FeatureMixin = {
|
|||
if (fallback === undefined) fallback = this.datalayer.options.name
|
||||
const key = this.getOption('labelKey') || 'name'
|
||||
// Variables mode.
|
||||
if (L.Util.hasVar(key))
|
||||
return L.Util.greedyTemplate(key, this.extendedProperties())
|
||||
if (L.Util.hasVar(key)) return L.Util.greedyTemplate(key, this.extendedProperties())
|
||||
// Simple mode.
|
||||
return this.properties[key] || this.properties.title || fallback
|
||||
},
|
||||
|
@ -244,8 +243,17 @@ L.U.FeatureMixin = {
|
|||
}
|
||||
},
|
||||
|
||||
cleanProperty: function ([key, value]) {
|
||||
// dot in key will break the dot based property access
|
||||
// while editing the feature
|
||||
key = key.replace('.', '_')
|
||||
return [key, value]
|
||||
},
|
||||
|
||||
populate: function (feature) {
|
||||
this.properties = L.extend({}, feature.properties)
|
||||
this.properties = Object.fromEntries(
|
||||
Object.entries(feature.properties || {}).map(this.cleanProperty)
|
||||
)
|
||||
this.properties._umap_options = L.extend(
|
||||
{},
|
||||
this.properties._storage_options,
|
||||
|
|
|
@ -148,6 +148,18 @@ describe('L.U.Map', function () {
|
|||
assert.equal(this.datalayer._index.length, 2)
|
||||
})
|
||||
|
||||
it('should remove dot in property name', function () {
|
||||
this.datalayer.empty()
|
||||
assert.equal(this.datalayer._index.length, 0)
|
||||
textarea.value =
|
||||
'{"type": "FeatureCollection", "features": [{"geometry": {"type": "Point", "coordinates": [6.922931671142578, 47.481161607175736]}, "type": "Feature", "properties": {"color": "", "name": "Chez R\u00e9my", "A . in the name": ""}}, {"geometry": {"type": "LineString", "coordinates": [[2.4609375, 48.88639177703194], [2.48291015625, 48.76343113791796], [2.164306640625, 48.719961222646276]]}, "type": "Feature", "properties": {"color": "", "name": "P\u00e9rif", "with a dot.": ""}}]}'
|
||||
changeSelectValue(formatSelect, 'geojson')
|
||||
happen.click(submit)
|
||||
assert.equal(this.datalayer._index.length, 2)
|
||||
assert.ok(this.datalayer._propertiesIndex.includes('A _ in the name'))
|
||||
assert.ok(this.datalayer._propertiesIndex.includes('with a dot_'))
|
||||
})
|
||||
|
||||
it('should import osm from textarea', function () {
|
||||
this.datalayer.empty()
|
||||
happen.click(qs('a.upload-data'))
|
||||
|
|
Loading…
Reference in a new issue