From: Tom MacWright Date: Mon, 10 Jun 2013 23:00:36 +0000 (-0700) Subject: Refactoring 4 life X-Git-Tag: live~4838^2~44 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/64f5b3f5113e5e2dcf4f44921c200c2335066779?hp=3a6c476833a0097ea50a5139dc57d39d0f03a651 Refactoring 4 life --- diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 808f30e92..c9eddfb9c 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -5,6 +5,7 @@ //= require augment //= require leaflet //= require leaflet.osm +//= require leaflet.extend //= require leaflet.locationfilter //= require i18n/translations //= require oauth @@ -78,9 +79,7 @@ function updatelinks(loc, zoom, layers, bounds, object) { var minzoom = $(link).data("minzoom"); if (minzoom) { var name = link.id.replace(/anchor$/, ""); - $(link).off("click.minzoom"); - if (zoom >= minzoom) { $(link).attr("title", I18n.t("javascripts.site." + name + "_tooltip")) .removeClass("disabled"); diff --git a/app/assets/javascripts/browse.js b/app/assets/javascripts/browse.js index 4edee5952..9caaa3714 100644 --- a/app/assets/javascripts/browse.js +++ b/app/assets/javascripts/browse.js @@ -8,23 +8,17 @@ $(document).ready(function () { $("#linkloader").load(function () { loaded = true; }); - if (select) { - $("#linkloader").attr("src", "http://127.0.0.1:8111/load_and_zoom?" + - querystring.stringify({ - left: left, - top: top, - right: right, - bottom: bottom, - select: select - })); - } else { - $("#linkloader").attr("src", "http://127.0.0.1:8111/load_and_zoom?" + querystring.stringify({ - left: left, - top: top, - right: right, - bottom: bottom - })); - } + var query = { + left: left, + top: top, + right: right, + bottom: bottom, + select: select + }; + + if (select) query.select = select; + $("#linkloader").attr("src", "http://127.0.0.1:8111/load_and_zoom?" + + querystring.stringify(query)); setTimeout(function () { if (!loaded) alert(I18n.t('site.index.remote_failed')); diff --git a/app/assets/javascripts/embed.js.erb b/app/assets/javascripts/embed.js.erb index 742061fa6..57572ca48 100644 --- a/app/assets/javascripts/embed.js.erb +++ b/app/assets/javascripts/embed.js.erb @@ -40,5 +40,5 @@ window.onload = function () { L.latLng(args.bbox[3], args.bbox[2])]) } else { map.fitWorld(); - } + } }; diff --git a/app/assets/javascripts/index.js b/app/assets/javascripts/index.js index 29e943386..60f88380d 100644 --- a/app/assets/javascripts/index.js +++ b/app/assets/javascripts/index.js @@ -29,7 +29,7 @@ $(document).ready(function () { layerCode: "M", name: I18n.t("javascripts.map.base.standard") }, { - layer: new L.OSM.CycleMap( { + layer: new L.OSM.CycleMap({ attribution: "Tiles courtesy of Andy Allan", }), keyid: "cyclemap", diff --git a/app/assets/javascripts/leaflet.extend.js.erb b/app/assets/javascripts/leaflet.extend.js.erb new file mode 100644 index 000000000..3b505302f --- /dev/null +++ b/app/assets/javascripts/leaflet.extend.js.erb @@ -0,0 +1,31 @@ +L.extend(L.LatLngBounds.prototype, { + getSize: function () { + return (this._northEast.lat - this._southWest.lat) * + (this._northEast.lng - this._southWest.lng); + }, + + wrap: function () { + return new L.LatLngBounds(this._southWest.wrap(), this._northEast.wrap()); + } +}); + +L.extend(L.Map.prototype, { + getLayersCode: function() { + var layerConfig = ''; + for (var i in this._layers) { // TODO: map.eachLayer + var layer = this._layers[i]; + if (layer.options && layer.options.code) { + layerConfig += layer.options.code; + } + } + return layerConfig; + }, + getMapBaseLayerId: function() { + for (var i in this._layers) { // TODO: map.eachLayer + var layer = this._layers[i]; + if (layer.options && layer.options.keyid) return layer.options.keyid; + } + } +}); + +L.Icon.Default.imagePath = <%= "#{asset_prefix}/images".to_json %>; diff --git a/app/assets/javascripts/map.js.erb b/app/assets/javascripts/map.js.erb index 70801306b..6d26763f8 100644 --- a/app/assets/javascripts/map.js.erb +++ b/app/assets/javascripts/map.js.erb @@ -1,18 +1,3 @@ -// Leaflet extensions -L.extend(L.LatLngBounds.prototype, { - getSize: function () { - return (this._northEast.lat - this._southWest.lat) * - (this._northEast.lng - this._southWest.lng); - }, - - wrap: function () { - return new L.LatLngBounds(this._southWest.wrap(), this._northEast.wrap()); - } -}); - -L.Icon.Default.imagePath = <%= "#{asset_prefix}/images".to_json %>; - -var objectLayer; var objectLoader; function getUserIcon(url) { @@ -28,13 +13,13 @@ function getUserIcon(url) { function addObjectToMap(object, map, options) { if (objectLoader) objectLoader.abort(); - if (objectLayer) map.removeLayer(objectLayer); + if (map.objectLayer) map.removeLayer(map.objectLayer); objectLoader = $.ajax({ url: OSM.apiUrl(object), dataType: "xml", success: function (xml) { - objectLayer = new L.OSM.DataLayer(null, { + map.objectLayer = new L.OSM.DataLayer(null, { styles: { node: options.style, way: options.style, @@ -42,7 +27,7 @@ function addObjectToMap(object, map, options) { } }); - objectLayer.interestingNode = function (node, ways, relations) { + map.objectLayer.interestingNode = function (node, ways, relations) { if (object.type === "node") { return true; } else if (object.type === "relation") { @@ -54,12 +39,12 @@ function addObjectToMap(object, map, options) { } }; - objectLayer.addData(xml); + map.objectLayer.addData(xml); - if (options.zoom) map.fitBounds(objectLayer.getBounds()); - if (options.callback) options.callback(objectLayer.getBounds()); + if (options.zoom) map.fitBounds(map.objectLayer.getBounds()); + if (options.callback) options.callback(map.objectLayer.getBounds()); - objectLayer.addTo(map); + map.objectLayer.addTo(map); } }); }