diff --git a/geotrek/core/static/core/geotrek.forms.snap.js b/geotrek/core/static/core/geotrek.forms.snap.js index 2143404e54..37a8207923 100644 --- a/geotrek/core/static/core/geotrek.forms.snap.js +++ b/geotrek/core/static/core/geotrek.forms.snap.js @@ -40,7 +40,11 @@ MapEntity.GeometryField.GeometryFieldPathMixin = { * (At least for the fix to propagate events) */ buildPathsLayer: function (objectsLayer) { + var url_path = window.SETTINGS.urls.path_layer var pathsLayer = MapEntity.pathsLayer({style: {clickable: true}, no_draft: objectsLayer.modelname != 'path'}); + if (objectsLayer.modelname != 'path') + url_path += '?no_draft=true'; + pathsLayer.load(url_path, true); this._map.addLayer(pathsLayer); diff --git a/geotrek/core/static/core/main.js b/geotrek/core/static/core/main.js index c6ba921632..90119ce207 100644 --- a/geotrek/core/static/core/main.js +++ b/geotrek/core/static/core/main.js @@ -10,24 +10,16 @@ MapEntity.pathsLayer = function buildPathLayer(options) { pathsLayer.showExtremities(window.SETTINGS.map.paths_line_marker); }); } - - // Start ajax loading at last - url = window.SETTINGS.urls.path_layer - if (options.no_draft){ - pathsLayer.load(url + '?no_draft=true', true); - } - else { - pathsLayer.load(url, true); - } - return pathsLayer; }; $(window).on('entity:map', function (e, data) { var map = data.map; + var loaded_path = false; // Show the path layer only if model is not path, and if we are not // in an editing widget - var is_form_view = /add|update/.test(data.view); + var is_form_view = /add|update/.test(data.viewname); + if (!is_form_view && (data.viewname == 'detail' || data.modelname != 'path')) { var pathsLayer = MapEntity.pathsLayer({ @@ -36,15 +28,30 @@ $(window).on('entity:map', function (e, data) { modelname: 'path', no_draft: data.modelname != 'path', }); - pathsLayer.addTo(map); - + if (data.viewname == 'detail'){ + pathsLayer.load(window.SETTINGS.urls.path_layer); + pathsLayer.addTo(map); + }; pathsLayer.on('loaded', function () { if (pathsLayer._map) pathsLayer.bringToBack(); }); map.on('layeradd', function (e) { + // Start ajax loading at last + url = window.SETTINGS.urls.path_layer + + var options = e.layer.options || {'modelname': 'None'}; + if (! loaded_path){ + if (options.modelname == 'path' && data.viewname != 'detail'){ + e.layer.load(url + '?no_draft=true', true); + loaded_path = true; + }; + + } + if (e.layer === pathsLayer) { + if (!e.layer._map) { return; } diff --git a/geotrek/land/static/land/main.js b/geotrek/land/static/land/main.js index e0db4b1ad2..2a335b2cfc 100644 --- a/geotrek/land/static/land/main.js +++ b/geotrek/land/static/land/main.js @@ -1,38 +1,62 @@ $(window).on('entity:map', function (e, data) { var map = data.map; - - // Add management layers - var managementLayers = [{url: window.SETTINGS.urls.landedge_layer, name: tr('Land type'), id: 'land'}, - {url: window.SETTINGS.urls.physicaledge_layer, name: tr('Physical type'), id: 'physical'}, - {url: window.SETTINGS.urls.competenceedge_layer, name: tr('Competence'), id: 'competence'}, - {url: window.SETTINGS.urls.signagemanagementedge_layer, name: tr('Signage management'), id: 'signagemanagement'}, - {url: window.SETTINGS.urls.workmanagementedge_layer, name: tr('Work management'), id: 'workmanagement'}]; - - // We have a list of colors, each layer has a *color_index*, and will *consume* a color - // from the list. This way we may not have the same color twice on the map. + var loaded_land = false; + var loaded_physical = false; + var loaded_competence = false; + var loaded_signagemanagement = false; + var loaded_workmanagement = false; var colorspools = L.Util.extend({}, window.SETTINGS.map.colorspool); - - for (var i=0; i|'); } - nameHTML += (' ' + managementLayer.name); + nameHTML += (' ' + modelname[0]); map.layerscontrol.addOverlay(layer, nameHTML, tr('Land edges')); - } - + }); + map.on('layeradd', function(e){ + var options = e.layer.options || {'modelname': 'None'}; + if (! loaded_land){ + if (options.modelname == 'land'){ + e.layer.load(window.SETTINGS.urls.landedge_layer); + loaded_land = true; + } + } + if (! loaded_physical){ + if (options.modelname == 'physical'){ + e.layer.load(window.SETTINGS.urls.physicaledge_layer); + loaded_physical = true; + } + } + if (! loaded_competence){ + if (options.modelname == 'competence'){ + e.layer.load(window.SETTINGS.urls.competenceedge_layer); + loaded_competence = true; + } + } + if (! loaded_signagemanagement){ + if (options.modelname == 'signagemanagement'){ + e.layer.load(window.SETTINGS.urls.signagemanagementedge_layer); + loaded_signagemanagement = true; + } + } + if (! loaded_workmanagement){ + if (options.modelname == 'workmanagement'){ + e.layer.load(window.SETTINGS.urls.workmanagementedge_layer); + loaded_workmanagement = true; + } + } + }); function initLandLayer(layergroup) { return function (data, layer) { @@ -41,7 +65,7 @@ $(window).on('entity:map', function (e, data) { console.warn("No proper 'color_index' properties in GeoJSON properties."); idx = 0; } - var colorspool = colorspools[layergroup.id], + var colorspool = colorspools[layergroup[1]], color = colorspool[idx % colorspool.length]; layer.setStyle({color: color}); @@ -50,8 +74,8 @@ $(window).on('entity:map', function (e, data) { MapEntity.showLineLabel(layer, { color: color, text: data.properties.name, - title: layergroup.name, - className: 'landlabel ' + layergroup.id + ' ' + idx + title: layergroup[0], + className: 'landlabel ' + layergroup[1] + ' ' + idx }); } }; diff --git a/geotrek/tourism/static/tourism/main.js b/geotrek/tourism/static/tourism/main.js index 2a3aaf0bde..619e053401 100644 --- a/geotrek/tourism/static/tourism/main.js +++ b/geotrek/tourism/static/tourism/main.js @@ -5,16 +5,32 @@ $(window).on('entity:map', function (e, data) { var map = data.map; - + var loaded_event = false; + var loaded_touristic = false; // Show tourism layer in application maps $.each(['touristiccontent', 'touristicevent'], function (i, modelname) { var layer = new L.ObjectsLayer(null, { modelname: modelname, style: L.Util.extend(window.SETTINGS.map.styles[modelname] || {}, {clickable:false}), }); - var url = window.SETTINGS.urls[modelname + '_layer']; - layer.load(url); map.layerscontrol.addOverlay(layer, tr(modelname), tr('Tourism')); + + map.on('layeradd', function(e){ + var options = e.layer.options || {'modelname': 'None'}; + if (! loaded_event){ + + if (options.modelname == 'touristicevent'){ + e.layer.load(window.SETTINGS.urls.touristicevent_layer); + loaded_event = true; + } + } + if (! loaded_touristic){ + if (options.modelname == 'touristiccontent'){ + e.layer.load(window.SETTINGS.urls.touristiccontent_layer); + loaded_touristic = true; + } + } + }); }); }); diff --git a/geotrek/zoning/static/zoning/main.js b/geotrek/zoning/static/zoning/main.js index dd3700710d..9e64df759f 100644 --- a/geotrek/zoning/static/zoning/main.js +++ b/geotrek/zoning/static/zoning/main.js @@ -1,33 +1,34 @@ $(window).on('entity:map', function (e, data) { var map = data.map; + var loaded_district = false; + var loaded_city = false; - // Add land layers - var landLayers = [{url: window.SETTINGS.urls.district_layer, name: tr("Districts"), id: 'district'}, - {url: window.SETTINGS.urls.city_layer, name: tr("Cities"), id: 'city'}]; - - landLayers = landLayers.concat(window.SETTINGS.map['restricted_area_types']); - - for (var i=0; i⬤ ' + modelname[0]; var layer = new L.ObjectsLayer(null, { - indexing: false, - style: style, - modelname: landLayer.id, + indexing: false, + modelname: modelname[1], + style: style, }); - layer.load(landLayer.url); - - var nameHTML = ' ' + landLayer.name; map.layerscontrol.addOverlay(layer, nameHTML, tr('Zoning')); - } + + map.on('layeradd', function(e){ + var options = e.layer.options || {'modelname': 'None'}; + if (! loaded_district){ + if (options.modelname == 'district'){ + e.layer.load(window.SETTINGS.urls.district_layer); + loaded_district = true; + } + } + if (! loaded_city){ + if (options.modelname == 'city'){ + e.layer.load(window.SETTINGS.urls.city_layer); + loaded_city = true; + } + } + }); + }); }); \ No newline at end of file