]> git.openstreetmap.org Git - rails.git/blob - app/assets/javascripts/leaflet.key.js
Merge remote-tracking branch 'upstream/pull/4136'
[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", "section")
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 = ["mapnik", "cyclemap"].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         if (layer === data.layer && zoom >= data.zoomMin && zoom <= data.zoomMax) {
43           $(this).show();
44         } else {
45           $(this).hide();
46         }
47       });
48     }
49   };
50
51   return control;
52 };