From d928028a972216cf7cf8c5e9d50872bdf3f03e95 Mon Sep 17 00:00:00 2001 From: Yohan Boniface Date: Sat, 2 Dec 2023 10:13:35 +0100 Subject: [PATCH] Allow to control the `interactive` flag from the layer This flag deactivate all interactions for a path. It can be useful when some polygon is used to delimitate an area on the map, but when we don't want this area to be clickable. I've a case where I've many of those polygons in a given map, and they are imported, so I don't want to go one by one to deactivate it. --- umap/static/umap/js/umap.core.js | 2 +- umap/static/umap/js/umap.features.js | 15 +++------------ umap/static/umap/js/umap.forms.js | 6 ++++++ umap/static/umap/js/umap.layer.js | 1 + 4 files changed, 11 insertions(+), 13 deletions(-) diff --git a/umap/static/umap/js/umap.core.js b/umap/static/umap/js/umap.core.js index 02384ec0..7624f077 100644 --- a/umap/static/umap/js/umap.core.js +++ b/umap/static/umap/js/umap.core.js @@ -642,7 +642,7 @@ L.U.Help = L.Class.extend({ facetKey: L._( 'Comma separated list of properties to use for facet search (eg.: mykey,otherkey). To control label, add it after a | (eg.: mykey|My Key,otherkey|Other Key)' ), - interactive: L._('If false, the polygon will act as a part of the underlying map.'), + interactive: L._('If false, the polygon or line will act as a part of the underlying map.'), outlink: L._('Define link to open in a new window on polygon click.'), dynamicRemoteData: L._('Fetch data each time map view changes.'), proxyRemoteData: L._("To use if remote server doesn't allow cross domain (slower)"), diff --git a/umap/static/umap/js/umap.features.js b/umap/static/umap/js/umap.features.js index 46b611c8..e63a0d87 100644 --- a/umap/static/umap/js/umap.features.js +++ b/umap/static/umap/js/umap.features.js @@ -1132,18 +1132,9 @@ L.U.Polygon = L.Polygon.extend({ }, getInteractionOptions: function () { - const options = [ - [ - 'properties._umap_options.interactive', - { - handler: 'Switch', - label: L._('Allow interactions'), - helpEntries: 'interactive', - inheritable: true, - }, - ], - ] - return options.concat(L.U.FeatureMixin.getInteractionOptions()) + const options = L.U.FeatureMixin.getInteractionOptions() + options.push('properties._umap_options.interactive') + return options }, getMeasure: function (shape) { diff --git a/umap/static/umap/js/umap.forms.js b/umap/static/umap/js/umap.forms.js index 2aa84e76..ec104336 100644 --- a/umap/static/umap/js/umap.forms.js +++ b/umap/static/umap/js/umap.forms.js @@ -1255,6 +1255,12 @@ L.U.FormBuilder = L.FormBuilder.extend({ helpText: L._('Optional.'), }, toZoom: { handler: 'IntInput', label: L._('To zoom'), helpText: L._('Optional.') }, + interactive: { + handler: 'Switch', + label: L._('Allow interactions'), + helpEntries: 'interactive', + inheritable: true, + }, }, initialize: function (obj, fields, options) { diff --git a/umap/static/umap/js/umap.layer.js b/umap/static/umap/js/umap.layer.js index ce3d9199..24b799d7 100644 --- a/umap/static/umap/js/umap.layer.js +++ b/umap/static/umap/js/umap.layer.js @@ -1239,6 +1239,7 @@ L.U.DataLayer = L.Evented.extend({ 'options.labelDirection', 'options.labelInteractive', 'options.outlinkTarget', + 'options.interactive', ] builder = new L.U.FormBuilder(this, popupFields, { callback: redrawCallback }) const popupFieldset = L.DomUtil.createFieldset(