Skip to content

Commit

Permalink
💫 [FEAT] add current object in detail leaflet overlay
Browse files Browse the repository at this point in the history
  • Loading branch information
juggler31 committed Mar 13, 2024
1 parent d3ec75d commit c449d29
Show file tree
Hide file tree
Showing 6 changed files with 66 additions and 1 deletion.
3 changes: 3 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ CHANGELOG
8.7.0+dev (XXXX-XX-XX)
-----------------------

**Feature**

- Add current object in detail leaflet overlay (related to https://github.com/GeotrekCE/Geotrek-admin/issues/1300)

8.7.0 (2024-02-28)
-----------------------
Expand Down
53 changes: 52 additions & 1 deletion mapentity/static/mapentity/mapentity.detail.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,55 @@ $(document).ready(function () {
if (tab !== null) {
$('#tab-' + tab).click();
}
});

$(window).on('detailmap:ready', function (e, data) {
// Get some current object properties
var verbosename = $('body').attr('data-app-verbosename');
var objectsname = $('body').attr('data-objectsname');
var modelname = $('body').attr('data-modelname');

var layername = `${modelname}_layer`;
var url = window.SETTINGS.urls[layername];
var loaded_layer = false;
var map = data.map;

var style = L.Util.extend({ clickable: false },
window.SETTINGS.map.styles[modelname] || {});

var layer = new L.ObjectsLayer(null, {
modelname: modelname,
style: style,
// Filter to not display current detail object on layer
filter: function filterWithoutCurentPk(el) {
if (el.properties.id === parseInt($('body').attr('data-pk'))) {
return false;
}
return true;
},
});
map.layerscontrol.addOverlay(layer, objectsname, verbosename);

// Change the group layer "verbosename" (current object list) in first position
var allOverlaysLayers = document.getElementsByClassName('leaflet-control-layers-overlays')[0];
allOverlaysLayers.insertBefore(allOverlaysLayers.lastChild, allOverlaysLayers.firstChild);

// Add object family layer (without current object)
map.on('layeradd', function (e) {
var options = e.layer.options || { 'modelname': 'None' };
if (!loaded_layer && options.modelname === modelname && options.modelname !== data.modelname) {
layer.load(url);
map.addLayer(layer);
loaded_layer = true;
}
});

// Remove object family layer (without current object)
map.on('layerremove', function (e) {
var options = e.layer.options || { 'modelname': 'None' };
if (loaded_layer && options.modelname === modelname && options.modelname !== data.modelname) {
map.removeLayer(layer);
loaded_layer = false;
}
});
});
});
4 changes: 4 additions & 0 deletions mapentity/static/mapentity/mapentity.forms.js
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,10 @@ MapEntity.GeometryField = L.GeometryField.extend({
var nameHTML = '<span style="color: '+ style['color'] + ';">&#x25A3;</span>&nbsp;' + objectsname;
map.layerscontrol.addOverlay(objectsLayer, nameHTML, tr("Objects"))

// Change the group layer "Objects" (current object list) in first position
var allOverlaysLayers = document.getElementsByClassName('leaflet-control-layers-overlays')[0];
allOverlaysLayers.insertBefore(allOverlaysLayers.lastChild, allOverlaysLayers.firstChild);

var url = this.modelLayerUrl();
objectsLayer.load(url);
},
Expand Down
5 changes: 5 additions & 0 deletions mapentity/static/mapentity/mapentity.map.js
Original file line number Diff line number Diff line change
Expand Up @@ -347,6 +347,11 @@ $(window).on('entity:map:list', function (e, data) {
prefix: 'list',
}
);

// Change the group layer "Objects" (current object list) in first position
var allOverlaysLayers = document.getElementsByClassName('leaflet-control-layers-overlays')[0];
allOverlaysLayers.insertBefore(allOverlaysLayers.lastChild, allOverlaysLayers.firstChild);

$(window).unload(function () {
MapEntity.Context.saveFullContext(map, {
filter: '#mainfilter',
Expand Down
1 change: 1 addition & 0 deletions mapentity/templates/mapentity/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@
</head>
<body data-viewname="{{ viewname }}"
data-appname="{{ appname }}"
data-app-verbosename="{{ app_verbose_name }}"
data-modelname="{{ modelname }}"
data-objectsname="{{ objectsname }}"
data-pk="{{ object.pk }}">
Expand Down
1 change: 1 addition & 0 deletions mapentity/views/mixins.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ def get_context_data(self, **kwargs):
if model:
context['model'] = model
context['appname'] = model._meta.app_label.lower()
context['app_verbose_name'] = model._meta.app_config.verbose_name
context['modelname'] = model._meta.object_name.lower()
context['objectname'] = model._meta.verbose_name
context['objectsname'] = model._meta.verbose_name_plural
Expand Down

0 comments on commit c449d29

Please sign in to comment.