From 83b42a8b75adbb6bc310a2f23ba1b89a65beffeb Mon Sep 17 00:00:00 2001 From: nertc Date: Wed, 12 Mar 2025 12:39:13 +0400 Subject: [PATCH] Map Data asynchronous checkbox --- app/assets/javascripts/index/layers/data.js | 14 +++++++++++++- app/assets/javascripts/leaflet.layers.js | 6 ++++++ app/assets/javascripts/leaflet.map.js | 5 +++-- vendor/assets/leaflet/leaflet.osm.js | 15 ++++++++++++--- 4 files changed, 34 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/index/layers/data.js b/app/assets/javascripts/index/layers/data.js index 8925cc480..c0fffd72d 100644 --- a/app/assets/javascripts/index/layers/data.js +++ b/app/assets/javascripts/index/layers/data.js @@ -89,6 +89,15 @@ OSM.initializeDataLayer = function (map) { if (dataLoader) dataLoader.abort(); + $("#layers-data-loading").remove(); + + const spanLoading = $("") + .attr("id", "layers-data-loading") + .attr("class", "spinner-border spinner-border-sm ms-1") + .attr("role", "status") + .html("" + I18n.t("browse.start_rjs.loading") + "") + .appendTo($("#label-layers-data")); + dataLoader = new AbortController(); fetch(url, { signal: dataLoader.signal }) .then(response => { @@ -131,7 +140,10 @@ OSM.initializeDataLayer = function (map) { $("#browse_status").empty(); }); }) - .finally(() => dataLoader = null); + .finally(() => { + dataLoader = null; + spanLoading.remove(); + }); } function onSelect(layer) { diff --git a/app/assets/javascripts/leaflet.layers.js b/app/assets/javascripts/leaflet.layers.js index f7142ead1..57d3fc6c0 100644 --- a/app/assets/javascripts/leaflet.layers.js +++ b/app/assets/javascripts/leaflet.layers.js @@ -100,6 +100,7 @@ L.OSM.layers = function (options) { const label = $("