Merge pull request #1490 from umap-project/fix-choropleth-update

Be more explicit on changed fields when updating choropleth form
This commit is contained in:
Yohan Boniface 2024-01-03 20:52:06 +01:00 committed by GitHub
commit fb6230d1db
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -9,7 +9,7 @@ L.U.Layer = {
return []
},
postUpdate: function () {},
onEdit: function () {},
hasDataVisible: function () {
return !!Object.keys(this._layers).length
@ -104,13 +104,13 @@ L.U.Layer.Cluster = L.MarkerClusterGroup.extend({
]
},
postUpdate: function (e) {
if (e.helper.field === 'options.cluster.radius') {
onEdit: function (field, builder) {
if (field === 'options.cluster.radius') {
// No way to reset radius of an already instanciated MarkerClusterGroup...
this.datalayer.resetLayer(true)
return
}
if (e.helper.field === 'options.color') {
if (field === 'options.color') {
this.options.polygonOptions.color = this.datalayer.getColor()
}
},
@ -234,14 +234,17 @@ L.U.Layer.Choropleth = L.FeatureGroup.extend({
L.FeatureGroup.prototype.onAdd.call(this, map)
},
postUpdate: function (e) {
if (e.helper.field === 'options.choropleth.breaks') {
onEdit: function (field, builder) {
// If user touches the breaks, then force manual mode
if (field === 'options.choropleth.breaks') {
this.datalayer.options.choropleth.mode = 'manual'
e.helper.builder.helpers['options.choropleth.mode'].fetch()
builder.helpers['options.choropleth.mode'].fetch()
}
this.computeBreaks()
if (e.helper.field !== 'options.choropleth.breaks') {
e.helper.builder.helpers['options.choropleth.breaks'].fetch()
// If user changes the mode or the number of classes,
// then update the breaks input value
if (field === 'options.choropleth.mode' || field === 'options.choropleth.classes') {
builder.helpers['options.choropleth.breaks'].fetch()
}
},
@ -382,12 +385,12 @@ L.U.Layer.Heat = L.HeatLayer.extend({
]
},
postUpdate: function (e) {
if (e.helper.field === 'options.heat.intensityProperty') {
onEdit: function (field, builder) {
if (field === 'options.heat.intensityProperty') {
this.datalayer.resetLayer(true) // We need to repopulate the latlngs
return
}
if (e.helper.field === 'options.heat.radius') {
if (field === 'options.heat.radius') {
this.options.radius = this.datalayer.options.heat.radius
}
this._updateOptions()
@ -1199,11 +1202,12 @@ L.U.DataLayer = L.Evented.extend({
]
const redrawCallback = function (e) {
const field = e.helper.field,
builder = e.helper.builder
this.hide()
this.layer.postUpdate(e)
this.layer.onEdit(field, builder)
this.show()
}
builder = new L.U.FormBuilder(this, shapeOptions, {
id: 'datalayer-advanced-properties',
callback: redrawCallback,