From 378d08f2c92adf0c1d14bbe09fcebe9f5e786409 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Sat, 20 Oct 2012 16:49:45 -0700 Subject: [PATCH 1/1] Update leaflet.locationfilter --- app/assets/javascripts/index/browse.js | 6 +- app/assets/javascripts/index/export.js | 4 +- .../assets/leaflet/leaflet.locationfilter.js | 67 +++++++++---------- 3 files changed, 38 insertions(+), 39 deletions(-) diff --git a/app/assets/javascripts/index/browse.js b/app/assets/javascripts/index/browse.js index 98a67a421..61ac51f69 100644 --- a/app/assets/javascripts/index/browse.js +++ b/app/assets/javascripts/index/browse.js @@ -42,10 +42,11 @@ $(document).ready(function () { var locationFilter = new L.LocationFilter({ enableButton: false, - adjustButton: false, - onChange: getData + adjustButton: false }).addTo(map); + locationFilter.on("change", getData); + $("#sidebar_title").html(I18n.t('browse.start_rjs.data_frame_title')); $("#sidebar_content").html(sidebarHtml); @@ -77,6 +78,7 @@ $(document).ready(function () { map.removeLayer(dataLayer); map.removeLayer(locationFilter); map.off("moveend", updateData); + locationFilter.off("change", getData); }); function enableFilter() { diff --git a/app/assets/javascripts/index/export.js b/app/assets/javascripts/index/export.js index e1b079607..04c6b6ff7 100644 --- a/app/assets/javascripts/index/export.js +++ b/app/assets/javascripts/index/export.js @@ -16,9 +16,10 @@ $(document).ready(function () { var locationFilter = new L.LocationFilter({ enableButton: false, adjustButton: false, - onChange: filterChanged }).addTo(map); + locationFilter.on("change", filterChanged); + map.on("moveend", mapMoved); map.on("baselayerchange", htmlUrlChanged); @@ -54,6 +55,7 @@ $(document).ready(function () { map.off("moveend", mapMoved); map.off("baselayerchange", htmlUrlChanged); + locationFilter.off("change", filterChanged); }); function getBounds() { diff --git a/vendor/assets/leaflet/leaflet.locationfilter.js b/vendor/assets/leaflet/leaflet.locationfilter.js index f4e256858..a0019678c 100644 --- a/vendor/assets/leaflet/leaflet.locationfilter.js +++ b/vendor/assets/leaflet/leaflet.locationfilter.js @@ -91,6 +91,8 @@ L.Control.ButtonContainer = L.Control.extend({ }); L.LocationFilter = L.Class.extend({ + includes: L.Mixin.Events, + options: { enableButton: { enableText: "Select area", @@ -136,7 +138,7 @@ L.LocationFilter = L.Class.extend({ this._sw = bounds.getSouthWest(); this._se = bounds.getSouthEast(); this._draw(); - this._callCallback("onChange"); + this.fire("change", {bounds: bounds}); }, isEnabled: function() { @@ -187,10 +189,10 @@ L.LocationFilter = L.Class.extend({ var markerPos = that._moveMarker.getLatLng(), latDelta = markerPos.lat-that._nw.lat, lngDelta = markerPos.lng-that._nw.lng; - that._nw = new L.LatLng(that._nw.lat+latDelta, that._nw.lng+lngDelta); - that._ne = new L.LatLng(that._ne.lat+latDelta, that._ne.lng+lngDelta); - that._sw = new L.LatLng(that._sw.lat+latDelta, that._sw.lng+lngDelta); - that._se = new L.LatLng(that._se.lat+latDelta, that._se.lng+lngDelta); + that._nw = new L.LatLng(that._nw.lat+latDelta, that._nw.lng+lngDelta, true); + that._ne = new L.LatLng(that._ne.lat+latDelta, that._ne.lng+lngDelta, true); + that._sw = new L.LatLng(that._sw.lat+latDelta, that._sw.lng+lngDelta, true); + that._se = new L.LatLng(that._se.lat+latDelta, that._se.lng+lngDelta, true); that._draw(); }); this._setupDragendListener(this._moveMarker); @@ -216,8 +218,8 @@ L.LocationFilter = L.Class.extend({ latMarker = options.moveAlong.lat, lngMarker = options.moveAlong.lng; // Move follower markers when this marker is moved - latMarker.setLatLng(new L.LatLng(curPosition.lat, latMarker.getLatLng().lng)); - lngMarker.setLatLng(new L.LatLng(lngMarker.getLatLng().lat, curPosition.lng)); + latMarker.setLatLng(new L.LatLng(curPosition.lat, latMarker.getLatLng().lng, true)); + lngMarker.setLatLng(new L.LatLng(lngMarker.getLatLng().lat, curPosition.lng, true)); // Sort marker positions in nw, ne, sw, se order var corners = [that._nwMarker.getLatLng(), that._neMarker.getLatLng(), @@ -239,22 +241,13 @@ L.LocationFilter = L.Class.extend({ this._setupDragendListener(marker); }, - /* Call the callback (given by name) if it was supplied in options */ - _callCallback: function(callbackName) { - if (this.options[callbackName]) { - this.options[callbackName](this.getBounds()); - } - }, - - /* Call the onChange callback whenever dragend is triggered on the + /* Emit a change event whenever dragend is triggered on the given marker */ _setupDragendListener: function(marker) { - if (this.options.onChange) { - var that = this; - marker.on('dragend', function(e) { - that._callCallback("onChange"); - }); - } + var that = this; + marker.on('dragend', function(e) { + that.fire("change", {bounds: that.getBounds()}); + }); }, /* Create bounds for the mask rectangles and the location @@ -263,9 +256,9 @@ L.LocationFilter = L.Class.extend({ var mapBounds = this._map.getBounds(), outerBounds = new L.LatLngBounds( new L.LatLng(mapBounds.getSouthWest().lat-0.1, - mapBounds.getSouthWest().lng-0.1), + mapBounds.getSouthWest().lng-0.1, true), new L.LatLng(mapBounds.getNorthEast().lat+0.1, - mapBounds.getNorthEast().lng+0.1) + mapBounds.getNorthEast().lng+0.1, true) ); // The south west and north east points of the mask */ @@ -273,10 +266,10 @@ L.LocationFilter = L.Class.extend({ this._one = outerBounds.getNorthEast(); // Bounds for the mask rectangles - this._northBounds = new L.LatLngBounds(new L.LatLng(this._ne.lat, this._osw.lng), this._one), - this._westBounds = new L.LatLngBounds(new L.LatLng(this._sw.lat, this._osw.lng), this._nw), - this._eastBounds = new L.LatLngBounds(this._se, new L.LatLng(this._ne.lat, this._one.lng)), - this._southBounds = new L.LatLngBounds(this._osw, new L.LatLng(this._sw.lat, this._one.lng)); + this._northBounds = new L.LatLngBounds(new L.LatLng(this._ne.lat, this._osw.lng, true), this._one); + this._westBounds = new L.LatLngBounds(new L.LatLng(this._sw.lat, this._osw.lng, true), this._nw); + this._eastBounds = new L.LatLngBounds(this._se, new L.LatLng(this._ne.lat, this._one.lng, true)); + this._southBounds = new L.LatLngBounds(this._osw, new L.LatLng(this._sw.lat, this._one.lng, true)); }, /* Initializes rectangles and markers */ @@ -411,8 +404,8 @@ L.LocationFilter = L.Class.extend({ this._enabled = true; - // Call the enabled callback - this._callCallback("onEnabled"); + // Fire the enabled event + this.fire("enabled"); }, /* Disable the location filter */ @@ -440,8 +433,8 @@ L.LocationFilter = L.Class.extend({ this._enabled = false; - // Call the disabled callback - this._callCallback("onDisabled"); + // Fire the disabled event + this.fire("disabled"); }, /* Create a button that allows the user to adjust the location @@ -454,7 +447,7 @@ L.LocationFilter = L.Class.extend({ onClick: function(event) { that._adjustToMap(); - that._callCallback("onAdjustToZoomClick"); + that.fire("adjustToZoomClick"); } }).addTo(this._buttonContainer); }, @@ -474,16 +467,18 @@ L.LocationFilter = L.Class.extend({ if (!that._enabled) { // Enable the location filter that.enable(); - that._callCallback("onEnableClick"); + that.fire("enableClick"); } else { // Disable the location filter that.disable(); - that._callCallback("onDisableClick"); + that.fire("disableClick"); } } }).addTo(this._buttonContainer); } - this._buttonContainer.addTo(this._map); + if (this.options.enableButton || this.options.adjustButton) { + this._buttonContainer.addTo(this._map); + } } -}); \ No newline at end of file +}); -- 2.43.2