]> git.openstreetmap.org Git - rails.git/blob - app/assets/javascripts/leaflet.key.js
Install endpoint listeners using enable/disable methods
[rails.git] / app / assets / javascripts / leaflet.key.js
1 L.OSM.key = function (options) {
2   var control = L.OSM.sidebarPane(options, "key", null, "javascripts.key.title");
3
4   control.onAddPane = function (map, button, $ui) {
5     var $section = $("<div>")
6       .attr("class", "p-3")
7       .appendTo($ui);
8
9     $ui
10       .on("show", shown)
11       .on("hide", hidden);
12
13     map.on("baselayerchange", updateButton);
14
15     updateButton();
16
17     function shown() {
18       map.on("zoomend baselayerchange", update);
19       $section.load("/key", update);
20     }
21
22     function hidden() {
23       map.off("zoomend baselayerchange", update);
24     }
25
26     function updateButton() {
27       var disabled = OSM.LAYERS_WITH_MAP_KEY.indexOf(map.getMapBaseLayerId()) === -1;
28       button
29         .toggleClass("disabled", disabled)
30         .attr("data-bs-original-title",
31               I18n.t(disabled ?
32                 "javascripts.key.tooltip_disabled" :
33                 "javascripts.key.tooltip"));
34     }
35
36     function update() {
37       var layer = map.getMapBaseLayerId(),
38           zoom = map.getZoom();
39
40       $(".mapkey-table-entry").each(function () {
41         var data = $(this).data();
42         $(this).toggle(
43           layer === data.layer &&
44           (!data.zoomMin || zoom >= data.zoomMin) &&
45           (!data.zoomMax || zoom <= data.zoomMax)
46         );
47       });
48     }
49   };
50
51   return control;
52 };