]> git.openstreetmap.org Git - rails.git/blobdiff - app/assets/javascripts/leaflet.note.js
Refactor to map.updateLayers
[rails.git] / app / assets / javascripts / leaflet.note.js
index 24f18f7ab3f66de38f3351eb146c68fcf1232491..c0f72af208eee184b3e0de58e0f2bcd3bb9216de 100644 (file)
@@ -1,39 +1,31 @@
-L.Control.Note = L.Control.extend({
-    options: {
-        position: 'topright',
-        title: 'Notes',
-    },
+L.OSM.note = function (options) {
+  var control = L.control(options);
 
-    onAdd: function (map) {
-        var className = 'control-note',
-            container = L.DomUtil.create('div', className);
+  control.onAdd = function (map) {
+    var $container = $('<div>')
+      .attr('class', 'control-note');
 
-        var link = L.DomUtil.create('a', 'control-button', container);
-        link.innerHTML = "<span class='icon note'></span>";
-        link.href = '#';
-        link.title = this.options.title;
+    var link = $('<a>')
+      .attr('class', 'control-button')
+      .attr('href', '#')
+      .html('<span class="icon note"></span>')
+      .appendTo($container);
 
-        L.DomEvent
-            .on(link, 'click', L.DomEvent.stopPropagation)
-            .on(link, 'click', L.DomEvent.preventDefault)
-            .on(link, 'click', this._toggle, this)
-            .on(link, 'dblclick', L.DomEvent.stopPropagation);
+    map.on('zoomend', update);
 
-        this.map = map;
+    update();
 
-        return container;
-    },
-
-    // TODO: this relies on notesLayer on the map
-    _toggle: function() {
-        if (this.map.hasLayer(this.map.noteLayer)) {
-            this.map.removeLayer(this.map.noteLayer);
-        } else {
-            this.map.addLayer(this.map.noteLayer);
-        }
+    function update() {
+      var disabled = map.getZoom() < 12;
+      link
+        .toggleClass('disabled', disabled)
+        .attr('data-original-title', I18n.t(disabled ?
+          'javascripts.site.createnote_disabled_tooltip' :
+          'javascripts.site.createnote_tooltip'));
     }
-});
 
-L.control.note = function(options) {
-    return new L.Control.Note(options);
+    return $container[0];
+  };
+
+  return control;
 };