From: John Firebaugh Date: Wed, 2 Oct 2013 21:46:00 +0000 (-0700) Subject: Simplify geolink-related code X-Git-Tag: live~4625^2~233 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/d414ffc61a0f6505f1d06e89e8668fa5b49d607e Simplify geolink-related code #zoom/lat/lon hash format is now used consistently. --- diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 9804e3237..a0ddcf9c2 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -28,13 +28,6 @@ function zoomPrecision(zoom) { return Math.max(0, Math.ceil(Math.log(zoom) / Math.LN2)); } -function normalBounds(bounds) { - if (bounds instanceof L.LatLngBounds) return bounds; - return new L.LatLngBounds( - new L.LatLng(bounds[0][0], bounds[0][1]), - new L.LatLng(bounds[1][0], bounds[1][1])); -} - function remoteEditHandler(bbox, select) { var loaded = false, query = { @@ -69,31 +62,28 @@ function remoteEditHandler(bbox, select) { * Called as the user scrolls/zooms around to maniplate hrefs of the * view tab and various other links */ -function updatelinks(loc, zoom, layers, bounds, object) { +function updatelinks(loc, zoom, layers, object) { $(".geolink").each(function(index, link) { var href = link.href.split(/[?#]/)[0], args = querystring.parse(link.search.substring(1)); - if (bounds && $(link).hasClass("bbox")) args.bbox = normalBounds(bounds).toBBoxString(); if (object && $(link).hasClass("object")) args[object.type] = object.id; var query = querystring.stringify(args); if (query) href += '?' + query; - if ($(link).hasClass("llz")) { - args = { - lat: loc.lat, - lon: loc.lon || loc.lng, - zoom: zoom - }; + args = { + lat: loc.lat, + lon: loc.lon || loc.lng, + zoom: zoom + }; - if (layers && $(link).hasClass("layers")) { - args.layers = layers; - } - - href += OSM.formatHash(args); + if (layers && $(link).hasClass("layers")) { + args.layers = layers; } + href += OSM.formatHash(args); + link.href = href; }); diff --git a/app/assets/javascripts/index.js b/app/assets/javascripts/index.js index d57b76b28..525be7e52 100644 --- a/app/assets/javascripts/index.js +++ b/app/assets/javascripts/index.js @@ -139,7 +139,6 @@ $(document).ready(function () { map.getCenter().wrap(), map.getZoom(), map.getLayersCode(), - map.getBounds().wrap(), map._object); var expiry = new Date(); diff --git a/app/assets/javascripts/index/notes.js.erb b/app/assets/javascripts/index/notes.js.erb index 8972d6bf9..91b2c31e1 100644 --- a/app/assets/javascripts/index/notes.js.erb +++ b/app/assets/javascripts/index/notes.js.erb @@ -190,7 +190,7 @@ function initializeNotes(map, params) { notes[feature.properties.id] = updateMarker(marker, feature); newNote = null; - addNoteButton.removeClass("active").addClass("geolink"); + addNoteButton.removeClass("active"); } } @@ -226,7 +226,7 @@ function initializeNotes(map, params) { if (addNoteButton.hasClass("disabled")) return; if (addNoteButton.hasClass("active")) return; - addNoteButton.removeClass("geolink").addClass("active"); + addNoteButton.addClass("active"); map.addLayer(noteLayer); @@ -263,7 +263,7 @@ function initializeNotes(map, params) { newNote.addTo(noteLayer).bindPopup(popupContent[0], popupOptions()).openPopup(); newNote.on("remove", function (e) { - addNoteButton.removeClass("active").addClass("geolink"); + addNoteButton.removeClass("active"); }).on("dragstart", function (e) { $(newNote).stopTime("removenote"); }).on("dragend", function (e) { diff --git a/app/views/layouts/_header.html.erb b/app/views/layouts/_header.html.erb index 5a72eeeb3..f1eab38ae 100644 --- a/app/views/layouts/_header.html.erb +++ b/app/views/layouts/_header.html.erb @@ -1,6 +1,6 @@

- + <%= image_tag "osm_logo.png", :alt => t('layouts.logo.alt_text'), :class => 'logo' %> <%= t 'layouts.project_name.h1' %> @@ -8,9 +8,9 @@ diff --git a/app/views/site/_potlatch2.html.erb b/app/views/site/_potlatch2.html.erb index a6cde5960..faff8de1e 100644 --- a/app/views/site/_potlatch2.html.erb +++ b/app/views/site/_potlatch2.html.erb @@ -87,8 +87,8 @@ }); }); - var mapMoved = $.throttle(250, function(lon, lat, zoom, minlon, minlat, maxlon, maxlat) { - updatelinks({ lon: lon, lat: lat }, zoom, null, [[minlat, minlon], [maxlat, maxlon]]); + var mapMoved = $.throttle(250, function(lon, lat, zoom) { + updatelinks({ lon: lon, lat: lat }, zoom); var hash = OSM.formatHash({ lon: lon, lat: lat, zoom: zoom }); if (hash !== location.hash) { diff --git a/app/views/site/id.html.erb b/app/views/site/id.html.erb index fde4a07cd..fa47bb00c 100644 --- a/app/views/site/id.html.erb +++ b/app/views/site/id.html.erb @@ -33,24 +33,15 @@ }); id.map().on('move.embed', parent.$.throttle(250, function() { - var extent = id.map().extent(), - zoom = ~~id.map().zoom(), - center = id.map().center(); + var zoom = ~~id.map().zoom(), + center = id.map().center(), + llz = { lon: center[0], lat: center[1], zoom: zoom }; - parent.updatelinks({ - lon: center[0], - lat: center[1] - }, - zoom, - null, - [[extent[0][1], - extent[0][0]], - [extent[1][1], - extent[1][0]]]); + parent.updatelinks(llz, zoom); // Manually resolve URL to avoid iframe JS context weirdness. // http://bl.ocks.org/jfirebaugh/5439412 - var hash = parent.OSM.formatHash({ lon: center[0], lat: center[1], zoom: zoom }); + var hash = parent.OSM.formatHash(llz); if (hash !== parent.location.hash) { parent.location.replace(parent.location.href.replace(/(#.*|$)/, hash)); }