From 02eb69a2807a1a555b35a649e753034defbd1cb0 Mon Sep 17 00:00:00 2001 From: Yohan Boniface Date: Tue, 29 Aug 2023 16:56:04 +0200 Subject: [PATCH] Add a button to load remote data from configuration form cf #438 --- umap/static/umap/js/umap.core.js | 9 +++++++++ umap/static/umap/js/umap.layer.js | 11 +++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/umap/static/umap/js/umap.core.js b/umap/static/umap/js/umap.core.js index 2a9aeb03..12917c79 100644 --- a/umap/static/umap/js/umap.core.js +++ b/umap/static/umap/js/umap.core.js @@ -285,6 +285,15 @@ L.DomUtil.createFieldset = (container, legend, options) => { return fieldsEl } +L.DomUtil.createButton = (className, container, content, callback, context) => { + const el = L.DomUtil.add('a', className, container, content) + el.href = '#' + if (callback) { + L.DomEvent.on(el, 'click', L.DomEvent.stop).on(el, 'click', callback, context) + } + return el +} + L.DomUtil.classIf = (el, className, bool) => { if (bool) L.DomUtil.addClass(el, className) else L.DomUtil.removeClass(el, className) diff --git a/umap/static/umap/js/umap.layer.js b/umap/static/umap/js/umap.layer.js index 37fd2a2f..0cd09ae9 100644 --- a/umap/static/umap/js/umap.layer.js +++ b/umap/static/umap/js/umap.layer.js @@ -398,10 +398,10 @@ L.U.DataLayer = L.Evented.extend({ return !((!isNaN(from) && zoom < from) || (!isNaN(to) && zoom > to)) }, - fetchRemoteData: function () { + fetchRemoteData: function (force) { if (!this.isRemoteLayer()) return if (!this.showAtZoom()) return - if (!this.options.remoteData.dynamic && this.hasDataLoaded()) return + if (!this.options.remoteData.dynamic && this.hasDataLoaded() && !force) return if (!this.isVisible()) return let url = this.map.localizeUrl(this.options.remoteData.url) if (this.options.remoteData.proxy) @@ -961,6 +961,13 @@ L.U.DataLayer = L.Evented.extend({ const remoteDataContainer = L.DomUtil.createFieldset(container, L._('Remote data')) builder = new L.U.FormBuilder(this, remoteDataFields) remoteDataContainer.appendChild(builder.build()) + L.DomUtil.createButton( + 'button umap-verify', + remoteDataContainer, + L._('Verify remote URL'), + () => this.fetchRemoteData(true), + this + ) if (this.map.options.urls.datalayer_versions) this.buildVersionsFieldset(container)