X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/0f3e5a28c04a1a7899a39d594eb05a2f48d5db6d..d8d3d21a2c072b9bd7238d918445d6a4d0894fff:/public/javascripts/site.js?ds=sidebyside diff --git a/public/javascripts/site.js b/public/javascripts/site.js index 06b4152df..e0c18a27b 100644 --- a/public/javascripts/site.js +++ b/public/javascripts/site.js @@ -1,6 +1,8 @@ -//Called as the user scrolls/zooms around. -//Maniplate hrefs of the view tab and various other links -function updatelinks(lon,lat,zoom,layers,extents) { +/* + * Called as the user scrolls/zooms around to aniplate hrefs of the + * view tab and various other links + */ +function updatelinks(lon,lat,zoom,layers,minlon,minlat,maxlon,maxlat) { var decimals = Math.pow(10, Math.floor(zoom/3)); var node; @@ -45,7 +47,7 @@ function updatelinks(lon,lat,zoom,layers,extents) { node = document.getElementById("editanchor"); if (node) { - if (zoom >= 11) { + if (zoom >= 13) { var args = new Object(); args.lat = lat; args.lon = lon; @@ -63,16 +65,19 @@ function updatelinks(lon,lat,zoom,layers,extents) { if (zoom >= 11) { var args = new Object(); //set bbox param from 'extents' object - minlon = extents.left; - minlat = extents.bottom; - maxlon = extents.right; - maxlat = extents.top; - minlon = Math.round(minlon * decimals) / decimals; - minlat = Math.round(minlat * decimals) / decimals; - maxlon = Math.round(maxlon * decimals) / decimals; - maxlat = Math.round(maxlat * decimals) / decimals; - args.bbox = minlon + "," + minlat + "," + maxlon + "," + maxlat; - node.href = setArgs("history/", args); + if (typeof minlon == "number" && + typeof minlat == "number" && + typeof maxlon == "number" && + typeof maxlat == "number") { + + minlon = Math.round(minlon * decimals) / decimals; + minlat = Math.round(minlat * decimals) / decimals; + maxlon = Math.round(maxlon * decimals) / decimals; + maxlat = Math.round(maxlat * decimals) / decimals; + args.bbox = minlon + "," + minlat + "," + maxlon + "," + maxlat; + } + + node.href = setArgs("/history", args); node.style.fontStyle = 'normal'; } else { node.href = 'javascript:alert("zoom in to see editing history");'; @@ -101,6 +106,9 @@ function getArgs(url) { return args; } +/* + * Called to set the arguments on a URL from the given hash. + */ function setArgs(url, args) { var queryitems = new Array(); @@ -116,6 +124,9 @@ function setArgs(url, args) { return url.replace(/\?.*$/, "") + "?" + queryitems.join("&"); } +/* + * Called to get the arguments from a URL as a hash. + */ function getStyle(el, property) { var style; @@ -129,3 +140,21 @@ function getStyle(el, property) { return style; } + +/* + * Called to interpolate JavaScript variables in strings using a + * similar syntax to rails I18n string interpolation - the only + * difference is that [[foo]] is the placeholder syntax instead + * of {{foo}} which allows the same string to be processed by both + * rails and then later by javascript. + */ +function i18n(string, keys) { + for (var key in keys) { + var re_key = '\\[\\[' + key + '\\]\\]'; + var re = new RegExp(re_key, "g"); + + string = string.replace(re, keys[key]); + } + + return string; +}