nakarte

Source code of https://map.sikmir.ru (fork)
git clone git://git.sikmir.ru/nakarte
Log | Files | Refs | LICENSE

commit 163634d14cd275a9e03ae630e40d3ace09c1adf8
parent e2042845f2ddd63a4007b7e67b3e0944bd3cd206
Author: Sergej Orlov <wladimirych@gmail.com>
Date:   Sat, 18 Feb 2017 16:50:11 +0300

unified stopping mouse events for all controls

Diffstat:
Msrc/App.js | 1+
Msrc/lib/leaflet.control.caption/index.js | 5++---
Asrc/lib/leaflet.control.commons/index.js | 14++++++++++++++
Msrc/lib/leaflet.control.coordinates/index.js | 7++-----
Msrc/lib/leaflet.control.elevation-profile/index.js | 9++-------
Asrc/lib/leaflet.control.layers.events/index.js | 25+++++++++++++++++++++++++
Msrc/lib/leaflet.control.panoramas/index.js | 8+++-----
Msrc/lib/leaflet.control.printPages/control.js | 6++----
Msrc/lib/leaflet.control.track-list/control-ruler.js | 8+++-----
Msrc/lib/leaflet.control.track-list/track-list.js | 6++----
10 files changed, 56 insertions(+), 33 deletions(-)

diff --git a/src/App.js b/src/App.js @@ -22,6 +22,7 @@ import enableLayersConfig from 'lib/leaflet.control.layers.configure'; import hashState from 'lib/leaflet.hashState/hashState'; import raiseControlsOnFocus from 'lib/leaflet.controls.raise-on-focus'; import getLayers from 'layers'; +import 'lib/leaflet.control.layers.events'; diff --git a/src/lib/leaflet.control.caption/index.js b/src/lib/leaflet.control.caption/index.js @@ -1,5 +1,6 @@ import L from 'leaflet'; import './style.css'; +import 'lib/leaflet.control.commons'; L.Control.Caption = L.Control.extend({ options: { @@ -14,10 +15,8 @@ L.Control.Caption = L.Control.extend({ onAdd: function (map) { this._container = L.DomUtil.create('div', this.options.className); + this._stopContainerEvents(); this._container.innerHTML = this._contents; - if (L.DomEvent) { - L.DomEvent.disableClickPropagation(this._container); - } return this._container; } diff --git a/src/lib/leaflet.control.commons/index.js b/src/lib/leaflet.control.commons/index.js @@ -0,0 +1,14 @@ +import L from 'leaflet'; + +L.Control.include({ + _stopContainerEvents: function() { + const container = this._container; + L.DomEvent.disableClickPropagation(container); + if (!L.Browser.touch) { + L.DomEvent.disableScrollPropagation(container); + } else { + L.DomEvent.on(container, 'mousemove', L.DomEvent.stop); + } + + } +}); diff --git a/src/lib/leaflet.control.coordinates/index.js b/src/lib/leaflet.control.coordinates/index.js @@ -2,6 +2,7 @@ import L from 'leaflet' import './coordinates.css'; import copyToClipboard from 'lib/clipboardCopy'; import Contextmenu from 'lib/contextmenu'; +import 'lib/leaflet.control.commons'; function pad(s, n) { var j = s.indexOf('.'); @@ -23,15 +24,11 @@ L.Control.Coordinates = L.Control.extend({ onAdd: function(map) { this._map = map; var container = this._container = L.DomUtil.create('div', 'leaflet-control leaflet-control-button leaflet-control-coordinates'); - L.DomEvent.disableClickPropagation(container); - if (!L.Browser.touch) { - L.DomEvent.disableScrollPropagation(container); - } + this._stopContainerEvents(); this._field_lat = L.DomUtil.create('div', 'leaflet-control-coordinates-text', container); this._field_lon = L.DomUtil.create('div', 'leaflet-control-coordinates-text', container); L.DomEvent .on(container, { - 'dblclick': L.DomEvent.stop, 'click': this.onClick }, this); map.on('mousemove', this.onMouseMove, this); diff --git a/src/lib/leaflet.control.elevation-profile/index.js b/src/lib/leaflet.control.elevation-profile/index.js @@ -2,6 +2,7 @@ import L from 'leaflet'; import './elevation-profile.css'; import {fetch} from 'lib/xhr-promise'; import config from 'config'; +import 'lib/leaflet.control.commons'; function createSvg(tagName, attributes, parent) { var element = document.createElementNS('http://www.w3.org/2000/svg', tagName); @@ -218,13 +219,7 @@ L.Control.ElevationProfile = L.Class.extend({ addTo: function(map) { this._map = map; var container = this._container = L.DomUtil.create('div', 'elevation-profile-container'); - if (!L.Browser.touch) { - L.DomEvent - .disableClickPropagation(container) - .disableScrollPropagation(container); - } else { - L.DomEvent.on(container, 'click', L.DomEvent.stopPropagation); - } + L.Control.prototype._stopContainerEvents.call(this); this._map._controlContainer.appendChild(container); this.setupContainerLayout(); this.updateGraph(); diff --git a/src/lib/leaflet.control.layers.events/index.js b/src/lib/leaflet.control.layers.events/index.js @@ -0,0 +1,25 @@ +import L from 'leaflet'; +import 'lib/leaflet.control.commons'; + +const originalLayerOnAdd = L.Control.Layers.prototype.onAdd; + +L.Control.Layers.include({ + onAdd: function(map) { + const container = originalLayerOnAdd.call(this, map); + this._stopContainerEvents(); + return container; + + } +}); + +const originalZoomOnAdd = L.Control.Zoom.prototype.onAdd; + +L.Control.Zoom.include({ + onAdd: function(map) { + const container = originalZoomOnAdd.call(this, map); + this._container = container; + this._stopContainerEvents(); + return container; + + } +}); diff --git a/src/lib/leaflet.control.panoramas/index.js b/src/lib/leaflet.control.panoramas/index.js @@ -3,6 +3,7 @@ import './style.css'; import 'lib/controls-styles/controls-styles.css'; import getGoogle from 'lib/googleMapsApi'; import 'lib/leaflet.hashState/leaflet.hashState'; +import 'lib/leaflet.control.commons'; L.Control.Panoramas = L.Control.extend({ includes: L.Mixin.Events, @@ -25,12 +26,9 @@ L.Control.Panoramas = L.Control.extend({ onAdd: function(map) { this._map = map; - const container = L.DomUtil.create('a', 'leaflet-control leaflet-control-button leaflet-contol-panoramas'); + const container = this._container = L.DomUtil.create('a', 'leaflet-control leaflet-control-button leaflet-contol-panoramas'); + this._stopContainerEvents(); container.title = 'Show panoramas'; - L.DomEvent.disableClickPropagation(container); - if (!L.Browser.touch) { - L.DomEvent.disableScrollPropagation(container); - } L.DomEvent.on(container, 'click', this.onButtonClick, this); map.createPane('rasterOverlay').style.zIndex = 300; diff --git a/src/lib/leaflet.control.printPages/control.js b/src/lib/leaflet.control.printPages/control.js @@ -12,6 +12,7 @@ import {makePdf} from './pdf'; import {saveAs} from 'browser-filesaver'; import {blobFromString} from 'lib/binary-strings'; import 'lib/leaflet.hashState/leaflet.hashState'; +import 'lib/leaflet.control.commons'; ko.extenders.checkNumberRange = function(target, range) { return ko.pureComputed({ @@ -87,10 +88,7 @@ L.Control.PrintPages = L.Control.extend({ this._map = map; const container = this._container = L.DomUtil.create('div', 'leaflet-control control-form control-print-pages'); - L.DomEvent.disableClickPropagation(container); - if (!L.Browser.touch) { - L.DomEvent.disableScrollPropagation(container); - } + this._stopContainerEvents(); map.on('move', this.updateFormZooms, this); container.innerHTML = formHtml; diff --git a/src/lib/leaflet.control.track-list/control-ruler.js b/src/lib/leaflet.control.track-list/control-ruler.js @@ -3,6 +3,7 @@ import './track-list'; import './ruler.css'; import 'lib/controls-styles/controls-styles.css'; import './track-list'; +import 'lib/leaflet.control.commons'; L.Control.TrackList.Ruler = L.Control.extend({ options: { @@ -16,11 +17,8 @@ L.Control.TrackList.Ruler = L.Control.extend({ onAdd: function(map) { this._map = map; - const container = L.DomUtil.create('div', 'leaflet-control leaflet-control-button leaflet-control-ruler'); - L.DomEvent.disableClickPropagation(container); - if (!L.Browser.touch) { - L.DomEvent.disableScrollPropagation(container); - } + const container = this._container = L.DomUtil.create('div', 'leaflet-control leaflet-control-button leaflet-control-ruler'); + this._stopContainerEvents(); L.DomEvent.on(container, 'click', this.onClick, this); return container; }, diff --git a/src/lib/leaflet.control.track-list/track-list.js b/src/lib/leaflet.control.track-list/track-list.js @@ -17,6 +17,7 @@ import 'lib/leaflet.lineutil.simplifyLatLngs'; import iconFromBackgroundImage from 'lib/iconFromBackgroundImage'; import 'lib/controls-styles/controls-styles.css'; import 'lib/leaflet.control.elevation-profile'; +import 'lib/leaflet.control.commons'; var MeasuredEditableLine = L.MeasuredLine.extend({}); MeasuredEditableLine.include(L.Polyline.EditMixin); @@ -42,10 +43,7 @@ L.Control.TrackList = L.Control.extend({ this.map = map; this.tracks.removeAll(); var container = this._container = L.DomUtil.create('div', 'leaflet-control leaflet-control-tracklist'); - L.DomEvent.disableClickPropagation(container); - if (!L.Browser.touch) { - L.DomEvent.disableScrollPropagation(container); - } + this._stopContainerEvents(); container.innerHTML = ` <div class="leaflet-control-button-toggle" data-bind="click: setExpanded"></div>