From 899891fe8a16934ab98b16456ea95d9f9c81587d Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Fri, 17 Jul 2015 22:19:49 +0100 Subject: [PATCH] Simplify "report a problem" control Defer to the standard attribution control methods as much as possible instead of duplicating them. --- app/assets/javascripts/embed.js.erb | 74 ++++++++--------------------- 1 file changed, 20 insertions(+), 54 deletions(-) diff --git a/app/assets/javascripts/embed.js.erb b/app/assets/javascripts/embed.js.erb index 03c43d386..d5231fea4 100644 --- a/app/assets/javascripts/embed.js.erb +++ b/app/assets/javascripts/embed.js.erb @@ -44,65 +44,31 @@ window.onload = function () { } else { map.fitWorld(); } - (new L.Control.OSMReportAProblem({})).addTo(map); + + map.addControl(new L.Control.OSMReportAProblem()); }; L.Control.OSMReportAProblem = L.Control.Attribution.extend({ - options: { - position: 'bottomright', - prefix: 'Report a problem' - }, - _layerAdd: function(e) - { - if (e.layer.getAttribution) { - this.addAttribution(e.layer.getAttribution()); - } - }, - _layerRemove: function(e) - { - if (e.layer.getAttribution) { - this.removeAttribution(e.layer.getAttribution()); - } - }, - onAdd: function (map) { - this._container = L.DomUtil.create('div', 'leaflet-control-attribution'); - L.DomEvent.disableClickPropagation(this._container); - - // TODO ugly, refactor - for (var i in map._layers) { - if (map._layers[i].getAttribution) { - this.addAttribution(map._layers[i].getAttribution()); - } - } - - this._update(); - map.on('moveend', this._update, this); - map.on('layeradd', this._layerAdd, this); - map.on('layerremove', this._layerRemove, this); + options: { + position: 'bottomright', + prefix: 'Report a problem' + }, - return this._container; - }, - _update: function () { - if (!this._map) { return; } + onAdd: function (map) { + var container = L.Control.Attribution.prototype.onAdd.call(this, map); - var attribs = []; + map.on('moveend', this._update, this); - for (var i in this._attributions) { - if (this._attributions[i]) { - attribs.push(i); - } - } + return container; + }, - var prefixAndAttribs = []; + _update: function () { + L.Control.Attribution.prototype._update.call(this); - if (this.options.prefix) { - prefixAndAttribs.push(this.options.prefix); - } - if (attribs.length) { - prefixAndAttribs.push(attribs.join(', ')); - } - - this._container.innerHTML = prefixAndAttribs.join(' | ').replace('{x}', this._map.getCenter().lat).replace('{y}', this._map.getCenter().lng).replace('{z}', this._map.getZoom()); - } - - }); + this._container.innerHTML = + this._container.innerHTML + .replace('{x}', this._map.getCenter().lat) + .replace('{y}', this._map.getCenter().lng) + .replace('{z}', this._map.getZoom()); + } +}); -- 2.43.2