From: Tom Hughes Date: Sun, 26 Jan 2025 19:06:27 +0000 (+0000) Subject: Replace uses of var with let or const as appropriate X-Git-Tag: live~160^2 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/c47cb299a842a2eb7d022fcf4f0d02c08001f928?hp=-c Replace uses of var with let or const as appropriate --- c47cb299a842a2eb7d022fcf4f0d02c08001f928 diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 464bbecee..4c9aa8b91 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -76,7 +76,7 @@ window.updateLinks = function (loc, zoom, layers, object) { // Disable the button group and also the buttons to avoid // inconsistent behaviour when zooming - var editDisabled = zoom < 13; + const editDisabled = zoom < 13; $("#edit_tab") .tooltip({ placement: "bottom" }) .tooltip(editDisabled ? "enable" : "disable") @@ -97,7 +97,7 @@ $(document).ready(function () { let moreItemWidth = 0; function updateHeader() { - var windowWidth = $(window).width(); + const windowWidth = $(window).width(); if (windowWidth < breakpointWidth) { $("body").addClass("small-nav"); diff --git a/app/assets/javascripts/diary_entry.js b/app/assets/javascripts/diary_entry.js index bd5fd4dd6..e55d0900d 100644 --- a/app/assets/javascripts/diary_entry.js +++ b/app/assets/javascripts/diary_entry.js @@ -1,5 +1,5 @@ $(document).ready(function () { - var marker, map; + let marker, map; function setLocation(e) { const latlng = e.latlng.wrap(); @@ -21,9 +21,9 @@ $(document).ready(function () { $("#map").show(); $("#usemap").hide(); - var params = $("#map").data(); - var centre = [params.lat, params.lon]; - var position = $("html").attr("dir") === "rtl" ? "topleft" : "topright"; + const params = $("#map").data(); + const centre = [params.lat, params.lon]; + const position = $("html").attr("dir") === "rtl" ? "topleft" : "topright"; map = L.map("map", { attributionControl: false, diff --git a/app/assets/javascripts/embed.js.erb b/app/assets/javascripts/embed.js.erb index 34a8b68bc..aff13add8 100644 --- a/app/assets/javascripts/embed.js.erb +++ b/app/assets/javascripts/embed.js.erb @@ -32,7 +32,7 @@ window.onload = function () { <% end %> }; - var map = L.map("map"); + const map = L.map("map"); map.attributionControl.setPrefix(""); map.removeControl(map.attributionControl); @@ -80,7 +80,7 @@ L.Control.OSMReportAProblem = L.Control.Attribution.extend({ }, onAdd: function (map) { - var container = L.Control.Attribution.prototype.onAdd.call(this, map); + const container = L.Control.Attribution.prototype.onAdd.call(this, map); map.on("moveend", this._update, this); diff --git a/app/assets/javascripts/fixthemap.js b/app/assets/javascripts/fixthemap.js index 221b5355f..2b3101db4 100644 --- a/app/assets/javascripts/fixthemap.js +++ b/app/assets/javascripts/fixthemap.js @@ -1,7 +1,7 @@ $(document).ready(function () { - var params = OSM.params(); + const params = OSM.params(); - var url = "/note/new"; + let url = "/note/new"; if (!params.zoom) params.zoom = 17; if (params.lat && params.lon) url += OSM.formatHash(params); $(".icon.note").attr("href", url); diff --git a/app/assets/javascripts/id.js b/app/assets/javascripts/id.js index 15f77b1c1..f2063ff0e 100644 --- a/app/assets/javascripts/id.js +++ b/app/assets/javascripts/id.js @@ -3,7 +3,7 @@ /* globals iD */ document.addEventListener("DOMContentLoaded", function () { - var container = document.getElementById("id-container"); + const container = document.getElementById("id-container"); if (typeof iD === "undefined" || !iD.utilDetect().support) { container.innerHTML = "This editor is supported " + @@ -11,16 +11,16 @@ document.addEventListener("DOMContentLoaded", function () { "Please upgrade your browser or use JOSM to edit the map."; container.className = "unsupported"; } else { - var idContext = iD.coreContext(); + const idContext = iD.coreContext(); idContext.connection().apiConnections([]); - var url = location.protocol + "//" + location.host; + const url = location.protocol + "//" + location.host; idContext.preauth({ url: url, apiUrl: url === "https://www.openstreetmap.org" ? "https://api.openstreetmap.org" : url, access_token: container.dataset.token }); - var id = idContext + const id = idContext .embed(true) .assetPath("iD/") .assetMap(JSON.parse(container.dataset.assetMap)) @@ -33,18 +33,18 @@ document.addEventListener("DOMContentLoaded", function () { return; } - var hashChangedAutomatically = false; + let hashChangedAutomatically = false; id.map().on("move.embed", parent.$.throttle(250, function () { if (id.inIntro()) return; - var zoom = ~~id.map().zoom(), - center = id.map().center(), - llz = { lon: center[0], lat: center[1], zoom: zoom }; + const zoom = ~~id.map().zoom(), + center = id.map().center(), + llz = { lon: center[0], lat: center[1], zoom: zoom }; parent.updateLinks(llz, zoom); // Manually resolve URL to avoid iframe JS context weirdness. // https://gist.github.com/jfirebaugh/5439412 - var hash = parent.OSM.formatHash(llz); + const hash = parent.OSM.formatHash(llz); if (hash !== parent.location.hash) { hashChangedAutomatically = true; parent.location.replace(parent.location.href.replace(/(#.*|$)/, hash)); @@ -63,7 +63,7 @@ document.addEventListener("DOMContentLoaded", function () { parent.$("body").on("click", "a.set_position", function (e) { e.preventDefault(); - var data = parent.$(this).data(); + const data = parent.$(this).data(); goToLocation(data); }); @@ -73,7 +73,7 @@ document.addEventListener("DOMContentLoaded", function () { return; } e.preventDefault(); - var data = parent.OSM.mapParams(); + const data = parent.OSM.mapParams(); goToLocation(data); }); } diff --git a/app/assets/javascripts/index.js b/app/assets/javascripts/index.js index 810327e3f..194ed82f7 100644 --- a/app/assets/javascripts/index.js +++ b/app/assets/javascripts/index.js @@ -25,7 +25,7 @@ //= require router $(document).ready(function () { - var map = new L.OSM.Map("map", { + const map = new L.OSM.Map("map", { zoomControl: false, layerControl: false, contextmenu: true, @@ -33,7 +33,7 @@ $(document).ready(function () { }); OSM.loadSidebarContent = function (path, callback) { - var content_path = path; + let content_path = path; map.setSidebarOverlaid(false); @@ -78,7 +78,7 @@ $(document).ready(function () { }); }; - var params = OSM.mapParams(); + const params = OSM.mapParams(); map.attributionControl.setPrefix(""); @@ -90,19 +90,19 @@ $(document).ready(function () { } }); - var sidebar = L.OSM.sidebar("#map-ui") + const sidebar = L.OSM.sidebar("#map-ui") .addTo(map); - var position = $("html").attr("dir") === "rtl" ? "topleft" : "topright"; + const position = $("html").attr("dir") === "rtl" ? "topleft" : "topright"; function addControlGroup(controls) { for (const control of controls) control.addTo(map); - var firstContainer = controls[0].getContainer(); + const firstContainer = controls[0].getContainer(); $(firstContainer).find(".control-button").first() .addClass("control-button-first"); - var lastContainer = controls[controls.length - 1].getContainer(); + const lastContainer = controls[controls.length - 1].getContainer(); $(lastContainer).find(".control-button").last() .addClass("control-button-last"); } @@ -166,7 +166,7 @@ $(document).ready(function () { $(".leaflet-control .control-button").tooltip({ placement: "left", container: "body" }); - var expiry = new Date(); + const expiry = new Date(); expiry.setYear(expiry.getFullYear() + 10); map.on("moveend baselayerchange overlayadd overlayremove", function () { @@ -188,11 +188,11 @@ $(document).ready(function () { Cookies.set("_osm_welcome", "hide", { secure: true, expires: expiry, path: "/", samesite: "lax" }); }); - var bannerExpiry = new Date(); + const bannerExpiry = new Date(); bannerExpiry.setYear(bannerExpiry.getFullYear() + 1); $("#banner .btn-close").on("click", function (e) { - var cookieId = e.target.id; + const cookieId = e.target.id; $("#banner").hide(); e.preventDefault(); if (cookieId) { @@ -203,7 +203,7 @@ $(document).ready(function () { if (OSM.MATOMO) { map.on("baselayerchange overlayadd", function (e) { if (e.layer.options) { - var goal = OSM.MATOMO.goals[e.layer.options.layerId]; + const goal = OSM.MATOMO.goals[e.layer.options.layerId]; if (goal) { $("body").trigger("matomogoal", goal); @@ -223,14 +223,14 @@ $(document).ready(function () { } function remoteEditHandler(bbox, object) { - var remoteEditHost = "http://127.0.0.1:8111", - osmHost = location.protocol + "//" + location.host, - query = new URLSearchParams({ - left: bbox.getWest() - 0.0001, - top: bbox.getNorth() + 0.0001, - right: bbox.getEast() + 0.0001, - bottom: bbox.getSouth() - 0.0001 - }); + const remoteEditHost = "http://127.0.0.1:8111", + osmHost = location.protocol + "//" + location.host, + query = new URLSearchParams({ + left: bbox.getWest() - 0.0001, + top: bbox.getNorth() + 0.0001, + right: bbox.getEast() + 0.0001, + bottom: bbox.getSouth() - 0.0001 + }); if (object && object.type !== "note") query.set("select", object.type + object.id); // can't select notes sendRemoteEditCommand(remoteEditHost + "/load_and_zoom?" + query, function () { @@ -253,7 +253,7 @@ $(document).ready(function () { } $("a[data-editor=remote]").click(function (e) { - var params = OSM.mapParams(this.search); + const params = OSM.mapParams(this.search); remoteEditHandler(map.getBounds(), params.object); e.preventDefault(); }); @@ -273,7 +273,7 @@ $(document).ready(function () { } OSM.Index = function (map) { - var page = {}; + const page = {}; page.pushstate = page.popstate = function () { map.setSidebarOverlaid(true); @@ -295,7 +295,7 @@ $(document).ready(function () { }; OSM.Browse = function (map, type) { - var page = {}; + const page = {}; page.pushstate = page.popstate = function (path, id) { OSM.loadSidebarContent(path, function () { @@ -308,7 +308,7 @@ $(document).ready(function () { }; function addObject(type, id, center) { - var hashParams = OSM.parseHash(window.location.hash); + const hashParams = OSM.parseHash(window.location.hash); map.addObject({ type: type, id: parseInt(id, 10) }, function (bounds) { if (!hashParams.center && bounds.isValid() && (center || !map.getBounds().contains(bounds))) { @@ -327,7 +327,7 @@ $(document).ready(function () { }; OSM.OldBrowse = function () { - var page = {}; + const page = {}; page.pushstate = page.popstate = function (path) { OSM.loadSidebarContent(path); @@ -336,7 +336,7 @@ $(document).ready(function () { return page; }; - var history = OSM.History(map); + const history = OSM.History(map); OSM.router = OSM.Router(map, { "/": OSM.Index(map), diff --git a/app/assets/javascripts/index/changeset.js b/app/assets/javascripts/index/changeset.js index d3e61270b..1ec5940b2 100644 --- a/app/assets/javascripts/index/changeset.js +++ b/app/assets/javascripts/index/changeset.js @@ -1,6 +1,6 @@ OSM.Changeset = function (map) { - var page = {}, - content = $("#sidebar_content"); + const page = {}, + content = $("#sidebar_content"); page.pushstate = page.popstate = function (path) { OSM.loadSidebarContent(path, function () { @@ -12,7 +12,7 @@ OSM.Changeset = function (map) { const changesetData = content.find("[data-changeset]").data("changeset"); changesetData.type = "changeset"; - var hashParams = OSM.parseHash(window.location.hash); + const hashParams = OSM.parseHash(window.location.hash); initialize(); map.addObject(changesetData, function (bounds) { if (!hashParams.center && bounds.isValid()) { @@ -24,7 +24,7 @@ OSM.Changeset = function (map) { }; function updateChangeset(method, url, include_data) { - var data; + let data; content.find("#comment-error").prop("hidden", true); content.find("button[data-method][data-url]").prop("disabled", true); @@ -56,8 +56,8 @@ OSM.Changeset = function (map) { function initialize() { content.find("button[data-method][data-url]").on("click", function (e) { e.preventDefault(); - var data = $(e.target).data(); - var include_data = e.target.name === "comment"; + const data = $(e.target).data(); + const include_data = e.target.name === "comment"; updateChangeset(data.method, data.url, include_data); }); diff --git a/app/assets/javascripts/index/contextmenu.js b/app/assets/javascripts/index/contextmenu.js index d7e6b427d..6f85a5252 100644 --- a/app/assets/javascripts/index/contextmenu.js +++ b/app/assets/javascripts/index/contextmenu.js @@ -69,7 +69,7 @@ OSM.initializeContextMenu = function (map) { return $(input).val(); } - var updateMenu = function updateMenu() { + const updateMenu = function updateMenu() { map.contextmenu.setDisabled(2, map.getZoom() < 12); map.contextmenu.setDisabled(4, map.getZoom() < 14); }; diff --git a/app/assets/javascripts/index/directions-endpoint.js b/app/assets/javascripts/index/directions-endpoint.js index 11a70c62f..90e95857f 100644 --- a/app/assets/javascripts/index/directions-endpoint.js +++ b/app/assets/javascripts/index/directions-endpoint.js @@ -1,5 +1,5 @@ OSM.DirectionsEndpoint = function Endpoint(map, input, iconUrl, dragCallback, changeCallback) { - var endpoint = {}; + const endpoint = {}; endpoint.marker = L.marker([0, 0], { icon: L.icon({ @@ -52,7 +52,7 @@ OSM.DirectionsEndpoint = function Endpoint(map, input, iconUrl, dragCallback, ch function inputChangeListener(e) { // make text the same in both text boxes - var value = e.target.value; + const value = e.target.value; endpoint.setValue(value); } @@ -61,8 +61,8 @@ OSM.DirectionsEndpoint = function Endpoint(map, input, iconUrl, dragCallback, ch delete endpoint.geocodeRequest; input.removeClass("is-invalid"); - var coordinatesMatch = value.match(/^\s*([+-]?\d+(?:\.\d*)?)(?:\s+|\s*[/,]\s*)([+-]?\d+(?:\.\d*)?)\s*$/); - var latlng = coordinatesMatch && L.latLng(coordinatesMatch[1], coordinatesMatch[2]); + const coordinatesMatch = value.match(/^\s*([+-]?\d+(?:\.\d*)?)(?:\s+|\s*[/,]\s*)([+-]?\d+(?:\.\d*)?)\s*$/); + const latlng = coordinatesMatch && L.latLng(coordinatesMatch[1], coordinatesMatch[2]); if (latlng && endpoint.cachedReverseGeocode && endpoint.cachedReverseGeocode.latlng.equals(latlng)) { setLatLng(latlng); @@ -92,8 +92,8 @@ OSM.DirectionsEndpoint = function Endpoint(map, input, iconUrl, dragCallback, ch }; endpoint.swapCachedReverseGeocodes = function (otherEndpoint) { - var g0 = endpoint.cachedReverseGeocode; - var g1 = otherEndpoint.cachedReverseGeocode; + const g0 = endpoint.cachedReverseGeocode; + const g1 = otherEndpoint.cachedReverseGeocode; delete endpoint.cachedReverseGeocode; delete otherEndpoint.cachedReverseGeocode; if (g0) otherEndpoint.cachedReverseGeocode = g0; diff --git a/app/assets/javascripts/index/directions.js b/app/assets/javascripts/index/directions.js index 0ac66d9d6..2338f537f 100644 --- a/app/assets/javascripts/index/directions.js +++ b/app/assets/javascripts/index/directions.js @@ -4,59 +4,59 @@ OSM.Directions = function (map) { let controller = null; // the AbortController for the current route request if a route request is in progress - var chosenEngine; + let chosenEngine; - var popup = L.popup({ autoPanPadding: [100, 100] }); + const popup = L.popup({ autoPanPadding: [100, 100] }); - var polyline = L.polyline([], { + const polyline = L.polyline([], { color: "#03f", opacity: 0.3, weight: 10 }); - var highlight = L.polyline([], { + const highlight = L.polyline([], { color: "#ff0", opacity: 0.5, weight: 12 }); - var endpointDragCallback = function (dragging) { + const endpointDragCallback = function (dragging) { if (!map.hasLayer(polyline)) return; if (dragging && !chosenEngine.draggable) return; if (dragging && controller) return; getRoute(false, !dragging); }; - var endpointChangeCallback = function () { + const endpointChangeCallback = function () { getRoute(true, true); }; - var endpoints = [ + const endpoints = [ OSM.DirectionsEndpoint(map, $("input[name='route_from']"), OSM.MARKER_GREEN, endpointDragCallback, endpointChangeCallback), OSM.DirectionsEndpoint(map, $("input[name='route_to']"), OSM.MARKER_RED, endpointDragCallback, endpointChangeCallback) ]; - var expiry = new Date(); + const expiry = new Date(); expiry.setYear(expiry.getFullYear() + 10); - var engines = OSM.Directions.engines; + const engines = OSM.Directions.engines; engines.sort(function (a, b) { - var localised_a = I18n.t("javascripts.directions.engines." + a.id), - localised_b = I18n.t("javascripts.directions.engines." + b.id); + const localised_a = I18n.t("javascripts.directions.engines." + a.id), + localised_b = I18n.t("javascripts.directions.engines." + b.id); return localised_a.localeCompare(localised_b); }); - var select = $("select.routing_engines"); + const select = $("select.routing_engines"); engines.forEach(function (engine, i) { select.append(""); }); $(".directions_form .reverse_directions").on("click", function () { - var coordFrom = endpoints[0].latlng, - coordTo = endpoints[1].latlng, - routeFrom = "", + const coordFrom = endpoints[0].latlng, + coordTo = endpoints[1].latlng; + let routeFrom = "", routeTo = ""; if (coordFrom) { routeFrom = coordFrom.lat + "," + coordFrom.lng; @@ -90,8 +90,8 @@ OSM.Directions = function (map) { } function formatTime(s) { - var m = Math.round(s / 60); - var h = Math.floor(m / 60); + let m = Math.round(s / 60); + const h = Math.floor(m / 60); m -= h * 60; return h + ":" + (m < 10 ? "0" : "") + m; } @@ -136,7 +136,7 @@ OSM.Directions = function (map) { map.fitBounds(polyline.getBounds().pad(0.05)); } - var distanceText = $("

").append( + const distanceText = $("

").append( I18n.t("javascripts.directions.distance") + ": " + formatDistance(route.distance) + ". " + I18n.t("javascripts.directions.time") + ": " + formatTime(route.time) + "."); if (typeof route.ascend !== "undefined" && typeof route.descend !== "undefined") { @@ -146,9 +146,9 @@ OSM.Directions = function (map) { I18n.t("javascripts.directions.descend") + ": " + formatHeight(route.descend) + "."); } - var turnByTurnTable = $("") + const turnByTurnTable = $("
") .append($("")); - var directionsCloseButton = $(""); + const row = $(""); row.append(" "); row.append("
" + instruction); row.append("" + getDistText(dist)); @@ -218,7 +218,7 @@ OSM.Directions = function (map) { } } - var chosenEngineIndex = findEngine("fossgis_osrm_car"); + let chosenEngineIndex = findEngine("fossgis_osrm_car"); if (Cookies.get("_osm_directions_engine")) { chosenEngineIndex = findEngine(Cookies.get("_osm_directions_engine")); } @@ -236,17 +236,17 @@ OSM.Directions = function (map) { }); $(".routing_marker_column img").on("dragstart", function (e) { - var dt = e.originalEvent.dataTransfer; + const dt = e.originalEvent.dataTransfer; dt.effectAllowed = "move"; - var dragData = { type: $(this).data("type") }; + const dragData = { type: $(this).data("type") }; dt.setData("text", JSON.stringify(dragData)); if (dt.setDragImage) { - var img = $("").attr("src", $(e.originalEvent.target).attr("src")); + const img = $("").attr("src", $(e.originalEvent.target).attr("src")); dt.setDragImage(img.get(0), 12, 21); } }); - var page = {}; + const page = {}; page.pushstate = page.popstate = function () { $(".search_form").hide(); @@ -258,12 +258,12 @@ OSM.Directions = function (map) { $("#map").on("drop", function (e) { e.preventDefault(); - var oe = e.originalEvent; - var dragData = JSON.parse(oe.dataTransfer.getData("text")); - var type = dragData.type; - var pt = L.DomEvent.getMousePosition(oe, map.getContainer()); // co-ordinates of the mouse pointer at present + const oe = e.originalEvent; + const dragData = JSON.parse(oe.dataTransfer.getData("text")); + const type = dragData.type; + const pt = L.DomEvent.getMousePosition(oe, map.getContainer()); // co-ordinates of the mouse pointer at present pt.y += 20; - var ll = map.containerPointToLatLng(pt); + const ll = map.containerPointToLatLng(pt); const llWithPrecision = OSM.cropLocation(ll, map.getZoom()); endpoints[type === "from" ? 0 : 1].setValue(llWithPrecision.join(", ")); }); @@ -275,7 +275,7 @@ OSM.Directions = function (map) { route = (params.get("route") || "").split(";"); if (params.has("engine")) { - var engineIndex = findEngine(params.get("engine")); + const engineIndex = findEngine(params.get("engine")); if (engineIndex >= 0) { setEngine(engineIndex); diff --git a/app/assets/javascripts/index/export.js b/app/assets/javascripts/index/export.js index 3b23b9cbf..05d90381b 100644 --- a/app/assets/javascripts/index/export.js +++ b/app/assets/javascripts/index/export.js @@ -1,7 +1,7 @@ OSM.Export = function (map) { - var page = {}; + const page = {}; - var locationFilter = new L.LocationFilter({ + const locationFilter = new L.LocationFilter({ enableButton: false, adjustButton: false }).on("change", update); @@ -13,7 +13,7 @@ OSM.Export = function (map) { } function boundsChanged() { - var bounds = getBounds(); + const bounds = getBounds(); map.fitBounds(bounds); locationFilter.setBounds(bounds); locationFilter.enable(); diff --git a/app/assets/javascripts/index/history.js b/app/assets/javascripts/index/history.js index 52929018b..c36ae5f18 100644 --- a/app/assets/javascripts/index/history.js +++ b/app/assets/javascripts/index/history.js @@ -1,7 +1,7 @@ //= require jquery-simulate/jquery.simulate OSM.History = function (map) { - var page = {}; + const page = {}; $("#sidebar_content") .on("click", ".changeset_more a", loadMore) @@ -12,7 +12,7 @@ OSM.History = function (map) { unHighlightChangeset($(this).data("changeset").id); }); - var group = L.featureGroup() + const group = L.featureGroup() .on("mouseover", function (e) { highlightChangeset(e.layer.id); }) @@ -28,13 +28,13 @@ OSM.History = function (map) { }; function highlightChangeset(id) { - var layer = group.getLayer(id); + const layer = group.getLayer(id); if (layer) layer.setStyle({ fillOpacity: 0.3, color: "#FF6600", weight: 3 }); $("#changeset_" + id).addClass("selected"); } function unHighlightChangeset(id) { - var layer = group.getLayer(id); + const layer = group.getLayer(id); if (layer) layer.setStyle({ fillOpacity: 0, color: "#FF9500", weight: 2 }); $("#changeset_" + id).removeClass("selected"); } @@ -49,8 +49,8 @@ OSM.History = function (map) { function displayMoreChangesets(html) { $("#sidebar_content .changeset_more").replaceWith(html); - var oldList = $("#sidebar_content .changesets ol").first(); - var newList = oldList.next("ol"); + const oldList = $("#sidebar_content .changesets ol").first(); + const newList = oldList.next("ol"); newList.children().appendTo(oldList); newList.remove(); } @@ -60,8 +60,8 @@ OSM.History = function (map) { if (window.location.pathname === "/history") { data.set("bbox", map.getBounds().wrap().toBBoxString()); - var feedLink = $("link[type=\"application/atom+xml\"]"), - feedHref = feedLink.attr("href").split("?")[0]; + const feedLink = $("link[type=\"application/atom+xml\"]"), + feedHref = feedLink.attr("href").split("?")[0]; feedLink.attr("href", feedHref + "?" + data); } @@ -79,7 +79,7 @@ OSM.History = function (map) { e.preventDefault(); e.stopPropagation(); - var div = $(this).parents(".changeset_more"); + const div = $(this).parents(".changeset_more"); $(this).hide(); div.find(".loader").show(); @@ -90,17 +90,17 @@ OSM.History = function (map) { }); } - var changesets = []; + let changesets = []; function updateBounds() { group.clearLayers(); for (const changeset of changesets) { - var bottomLeft = map.project(L.latLng(changeset.bbox.minlat, changeset.bbox.minlon)), - topRight = map.project(L.latLng(changeset.bbox.maxlat, changeset.bbox.maxlon)), - width = topRight.x - bottomLeft.x, - height = bottomLeft.y - topRight.y, - minSize = 20; // Min width/height of changeset in pixels + const bottomLeft = map.project(L.latLng(changeset.bbox.minlat, changeset.bbox.minlon)), + topRight = map.project(L.latLng(changeset.bbox.maxlat, changeset.bbox.maxlon)), + width = topRight.x - bottomLeft.x, + height = bottomLeft.y - topRight.y, + minSize = 20; // Min width/height of changeset in pixels if (width < minSize) { bottomLeft.x -= ((minSize - width) / 2); @@ -138,7 +138,7 @@ OSM.History = function (map) { updateBounds(); if (window.location.pathname !== "/history") { - var bounds = group.getBounds(); + const bounds = group.getBounds(); if (bounds.isValid()) map.fitBounds(bounds); } } diff --git a/app/assets/javascripts/index/layers/data.js b/app/assets/javascripts/index/layers/data.js index 25dc66a28..8925cc480 100644 --- a/app/assets/javascripts/index/layers/data.js +++ b/app/assets/javascripts/index/layers/data.js @@ -40,7 +40,7 @@ OSM.initializeDataLayer = function (map) { }); function updateData() { - var bounds = map.getBounds(); + const bounds = map.getBounds(); if (!loadedBounds || !loadedBounds.contains(bounds)) { getData(); } @@ -78,8 +78,8 @@ OSM.initializeDataLayer = function (map) { } function getData() { - var bounds = map.getBounds(); - var url = "/api/" + OSM.API_VERSION + "/map.json?bbox=" + bounds.toBBoxString(); + const bounds = map.getBounds(); + const url = "/api/" + OSM.API_VERSION + "/map.json?bbox=" + bounds.toBBoxString(); /* * Modern browsers are quite happy showing far more than 100 features in @@ -102,7 +102,7 @@ OSM.initializeDataLayer = function (map) { .then(function (data) { dataLayer.clearLayers(); - var features = dataLayer.buildFeatures(data); + const features = dataLayer.buildFeatures(data); function addFeatures() { $("#browse_status").empty(); diff --git a/app/assets/javascripts/index/layers/notes.js b/app/assets/javascripts/index/layers/notes.js index 9aa1f203f..104f6f2f2 100644 --- a/app/assets/javascripts/index/layers/notes.js +++ b/app/assets/javascripts/index/layers/notes.js @@ -3,7 +3,7 @@ OSM.initializeNotesLayer = function (map) { const noteLayer = map.noteLayer; let notes = {}; - var noteIcons = { + const noteIcons = { "new": L.icon({ iconUrl: OSM.NEW_NOTE_MARKER, iconSize: [25, 40], @@ -39,7 +39,7 @@ OSM.initializeNotesLayer = function (map) { }); function updateMarker(old_marker, feature) { - var marker = old_marker; + let marker = old_marker; if (marker) { marker.setIcon(noteIcons[feature.properties.status]); } else { @@ -67,11 +67,11 @@ OSM.initializeNotesLayer = function (map) { }; function loadNotes() { - var bounds = map.getBounds(); - var size = bounds.getSize(); + const bounds = map.getBounds(); + const size = bounds.getSize(); if (size <= OSM.MAX_NOTE_REQUEST_AREA) { - var url = "/api/" + OSM.API_VERSION + "/notes.json?bbox=" + bounds.toBBoxString(); + const url = "/api/" + OSM.API_VERSION + "/notes.json?bbox=" + bounds.toBBoxString(); if (noteLoader) noteLoader.abort(); @@ -84,15 +84,15 @@ OSM.initializeNotesLayer = function (map) { } function success(json) { - var oldNotes = notes; + const oldNotes = notes; notes = {}; for (const feature of json.features) { - var marker = oldNotes[feature.properties.id]; + const marker = oldNotes[feature.properties.id]; delete oldNotes[feature.properties.id]; notes[feature.properties.id] = updateMarker(marker, feature); } - for (var id in oldNotes) { + for (const id in oldNotes) { noteLayer.removeLayer(oldNotes[id]); } } diff --git a/app/assets/javascripts/index/new_note.js b/app/assets/javascripts/index/new_note.js index a1511a3bc..73fcda97c 100644 --- a/app/assets/javascripts/index/new_note.js +++ b/app/assets/javascripts/index/new_note.js @@ -1,12 +1,12 @@ OSM.NewNote = function (map) { - var noteLayer = map.noteLayer, - content = $("#sidebar_content"), - page = {}, - addNoteButton = $(".control-note .control-button"), - newNoteMarker, + const noteLayer = map.noteLayer, + content = $("#sidebar_content"), + page = {}, + addNoteButton = $(".control-note .control-button"); + let newNoteMarker, halo; - var noteIcons = { + const noteIcons = { "new": L.icon({ iconUrl: OSM.NEW_NOTE_MARKER, iconSize: [25, 40], @@ -48,7 +48,7 @@ OSM.NewNote = function (map) { } function addCreatedNoteMarker(feature) { - var marker = L.marker(feature.geometry.coordinates.reverse(), { + const marker = L.marker(feature.geometry.coordinates.reverse(), { icon: noteIcons[feature.properties.status], opacity: 0.9, interactive: true @@ -132,7 +132,7 @@ OSM.NewNote = function (map) { map.addLayer(noteLayer); const params = new URLSearchParams(path.substring(path.indexOf("?"))); - var markerLatlng; + let markerLatlng; if (params.has("lat") && params.has("lon")) { markerLatlng = L.latLng(params.get("lat"), params.get("lon")); @@ -161,7 +161,7 @@ OSM.NewNote = function (map) { createNote(location, text, (feature) => { if (typeof OSM.user === "undefined") { - var anonymousNotesCount = Number(Cookies.get("_osm_anonymous_notes_count")) || 0; + const anonymousNotesCount = Number(Cookies.get("_osm_anonymous_notes_count")) || 0; Cookies.set("_osm_anonymous_notes_count", anonymousNotesCount + 1, { secure: true, expires: 30, path: "/", samesite: "lax" }); } content.find("textarea").val(""); diff --git a/app/assets/javascripts/index/note.js b/app/assets/javascripts/index/note.js index 4fb512bdd..466a5451e 100644 --- a/app/assets/javascripts/index/note.js +++ b/app/assets/javascripts/index/note.js @@ -1,8 +1,8 @@ OSM.Note = function (map) { - var content = $("#sidebar_content"), - page = {}; + const content = $("#sidebar_content"), + page = {}; - var noteIcons = { + const noteIcons = { "new": L.icon({ iconUrl: OSM.NEW_NOTE_MARKER, iconSize: [25, 40], @@ -22,9 +22,9 @@ OSM.Note = function (map) { page.pushstate = page.popstate = function (path, id) { OSM.loadSidebarContent(path, function () { - var data = $(".details").data(); + const data = $(".details").data(); if (!data) return; - var latLng = L.latLng(data.coordinates.split(",")); + const latLng = L.latLng(data.coordinates.split(",")); initialize(path, id, map.getBounds().contains(latLng)); }); }; @@ -36,9 +36,9 @@ OSM.Note = function (map) { function initialize(path, id, skipMoveToNote) { content.find("button[name]").on("click", function (e) { e.preventDefault(); - var data = $(e.target).data(); - var name = $(e.target).attr("name"); - var ajaxSettings = { + const data = $(e.target).data(); + const name = $(e.target).attr("name"); + const ajaxSettings = { url: data.url, type: data.method, oauth: true, @@ -70,10 +70,10 @@ OSM.Note = function (map) { content.find("textarea").val("").trigger("input"); - var data = $(".details").data(); + const data = $(".details").data(); if (data) { - var hashParams = OSM.parseHash(window.location.hash); + const hashParams = OSM.parseHash(window.location.hash); map.addObject({ type: "note", id: parseInt(id, 10), @@ -81,7 +81,7 @@ OSM.Note = function (map) { icon: noteIcons[data.status] }, function () { if (!hashParams.center && !skipMoveToNote) { - var latLng = L.latLng(data.coordinates.split(",")); + const latLng = L.latLng(data.coordinates.split(",")); OSM.router.withoutMoveListener(function () { map.setView(latLng, 15, { reset: true }); }); @@ -91,8 +91,8 @@ OSM.Note = function (map) { } function updateButtons() { - var resolveButton = content.find("button[name='close']"); - var commentButton = content.find("button[name='comment']"); + const resolveButton = content.find("button[name='close']"); + const commentButton = content.find("button[name='comment']"); content.find("button[name]").prop("disabled", false); if (content.find("textarea").val() === "") { diff --git a/app/assets/javascripts/index/query.js b/app/assets/javascripts/index/query.js index 3673da5db..ee9d3f415 100644 --- a/app/assets/javascripts/index/query.js +++ b/app/assets/javascripts/index/query.js @@ -1,11 +1,11 @@ OSM.Query = function (map) { - var url = OSM.OVERPASS_URL, - credentials = OSM.OVERPASS_CREDENTIALS, - queryButton = $(".control-query .control-button"), - uninterestingTags = ["source", "source_ref", "source:ref", "history", "attribution", "created_by", "tiger:county", "tiger:tlid", "tiger:upload_uuid", "KSJ2:curve_id", "KSJ2:lat", "KSJ2:lon", "KSJ2:coordinate", "KSJ2:filename", "note:ja"], - marker; + const url = OSM.OVERPASS_URL, + credentials = OSM.OVERPASS_CREDENTIALS, + queryButton = $(".control-query .control-button"), + uninterestingTags = ["source", "source_ref", "source:ref", "history", "attribution", "created_by", "tiger:county", "tiger:tlid", "tiger:upload_uuid", "KSJ2:curve_id", "KSJ2:lat", "KSJ2:lon", "KSJ2:coordinate", "KSJ2:filename", "note:ja"]; + let marker; - var featureStyle = { + const featureStyle = { color: "#FF6200", weight: 4, opacity: 1, @@ -37,13 +37,13 @@ OSM.Query = function (map) { }); function showResultGeometry() { - var geometry = $(this).data("geometry"); + const geometry = $(this).data("geometry"); if (geometry) map.addLayer(geometry); $(this).addClass("selected"); } function hideResultGeometry() { - var geometry = $(this).data("geometry"); + const geometry = $(this).data("geometry"); if (geometry) map.removeLayer(geometry); $(this).removeClass("selected"); } @@ -54,7 +54,7 @@ OSM.Query = function (map) { function interestingFeature(feature) { if (feature.tags) { - for (var key in feature.tags) { + for (const key in feature.tags) { if (uninterestingTags.indexOf(key) < 0) { return true; } @@ -65,19 +65,18 @@ OSM.Query = function (map) { } function featurePrefix(feature) { - var tags = feature.tags; - var prefix = ""; + const tags = feature.tags; + let prefix = ""; if (tags.boundary === "administrative" && tags.admin_level) { prefix = I18n.t("geocoder.search_osm_nominatim.admin_levels.level" + tags.admin_level, { defaultValue: I18n.t("geocoder.search_osm_nominatim.prefix.boundary.administrative") }); } else { - var prefixes = I18n.t("geocoder.search_osm_nominatim.prefix"); - var key, value; + const prefixes = I18n.t("geocoder.search_osm_nominatim.prefix"); - for (key in tags) { - value = tags[key]; + for (const key in tags) { + const value = tags[key]; if (prefixes[key]) { if (prefixes[key][value]) { @@ -86,12 +85,12 @@ OSM.Query = function (map) { } } - for (key in tags) { - value = tags[key]; + for (const key in tags) { + const value = tags[key]; if (prefixes[key]) { - var first = value.slice(0, 1).toUpperCase(), - rest = value.slice(1).replace(/_/g, " "); + const first = value.slice(0, 1).toUpperCase(), + rest = value.slice(1).replace(/_/g, " "); return first + rest; } @@ -106,8 +105,8 @@ OSM.Query = function (map) { } function featureName(feature) { - var tags = feature.tags, - locales = OSM.preferred_languages; + const tags = feature.tags, + locales = OSM.preferred_languages; for (const locale of locales) { if (tags["name:" + locale]) { @@ -128,7 +127,7 @@ OSM.Query = function (map) { } function featureGeometry(feature) { - var geometry; + let geometry; if (feature.type === "node" && feature.lat && feature.lon) { geometry = L.circleMarker([feature.lat, feature.lon], featureStyle); @@ -148,7 +147,7 @@ OSM.Query = function (map) { } function runQuery(latlng, radius, query, $section, merge, compare) { - var $ul = $section.find("ul"); + const $ul = $section.find("ul"); $ul.empty(); $section.show(); @@ -168,13 +167,13 @@ OSM.Query = function (map) { }) .then(response => response.json()) .then(function (results) { - var elements; + let elements; $section.find(".loader").hide(); if (merge) { elements = results.elements.reduce(function (hash, element) { - var key = element.type + element.id; + const key = element.type + element.id; if ("geometry" in element) { delete element.bounds; } @@ -196,7 +195,7 @@ OSM.Query = function (map) { for (const element of elements) { if (!interestingFeature(element)) continue; - var $li = $("
  • ") + const $li = $("
  • ") .addClass("list-group-item list-group-item-action") .text(featurePrefix(element) + " ") .appendTo($ul); @@ -236,12 +235,12 @@ OSM.Query = function (map) { } function compareSize(feature1, feature2) { - var width1 = feature1.bounds.maxlon - feature1.bounds.minlon, - height1 = feature1.bounds.maxlat - feature1.bounds.minlat, - area1 = width1 * height1, - width2 = feature2.bounds.maxlat - feature2.bounds.minlat, - height2 = feature2.bounds.maxlat - feature2.bounds.minlat, - area2 = width2 * height2; + const width1 = feature1.bounds.maxlon - feature1.bounds.minlon, + height1 = feature1.bounds.maxlat - feature1.bounds.minlat, + area1 = width1 * height1, + width2 = feature2.bounds.maxlat - feature2.bounds.minlat, + height2 = feature2.bounds.maxlat - feature2.bounds.minlat, + area2 = width2 * height2; return area1 - area2; } @@ -267,20 +266,20 @@ OSM.Query = function (map) { * for each object. */ function queryOverpass(lat, lng) { - var latlng = L.latLng(lat, lng).wrap(), - bounds = map.getBounds().wrap(), - zoom = map.getZoom(), - bbox = [bounds.getSouthWest(), bounds.getNorthEast()] - .map(c => OSM.cropLocation(c, zoom)) - .join(), - geombbox = "geom(" + bbox + ");", - radius = 10 * Math.pow(1.5, 19 - zoom), - around = "(around:" + radius + "," + lat + "," + lng + ")", - nodes = "node" + around, - ways = "way" + around, - relations = "relation" + around, - nearby = "(" + nodes + ";" + ways + ";);out tags " + geombbox + relations + ";out " + geombbox, - isin = "is_in(" + lat + "," + lng + ")->.a;way(pivot.a);out tags bb;out ids " + geombbox + "relation(pivot.a);out tags bb;"; + const latlng = L.latLng(lat, lng).wrap(), + bounds = map.getBounds().wrap(), + zoom = map.getZoom(), + bbox = [bounds.getSouthWest(), bounds.getNorthEast()] + .map(c => OSM.cropLocation(c, zoom)) + .join(), + geombbox = "geom(" + bbox + ");", + radius = 10 * Math.pow(1.5, 19 - zoom), + around = "(around:" + radius + "," + lat + "," + lng + ")", + nodes = "node" + around, + ways = "way" + around, + relations = "relation" + around, + nearby = "(" + nodes + ";" + ways + ";);out tags " + geombbox + relations + ";out " + geombbox, + isin = "is_in(" + lat + "," + lng + ")->.a;way(pivot.a);out tags bb;out ids " + geombbox + "relation(pivot.a);out tags bb;"; $("#sidebar_content .query-intro") .hide(); @@ -315,7 +314,7 @@ OSM.Query = function (map) { queryButton.removeClass("active"); } - var page = {}; + const page = {}; page.pushstate = page.popstate = function (path) { OSM.loadSidebarContent(path, function () { diff --git a/app/assets/javascripts/index/search.js b/app/assets/javascripts/index/search.js index 3c1af5056..42294576b 100644 --- a/app/assets/javascripts/index/search.js +++ b/app/assets/javascripts/index/search.js @@ -9,7 +9,7 @@ OSM.Search = function (map) { $(".search_form a.btn.switch_link").on("click", function (e) { e.preventDefault(); - var query = $(this).closest("form").find("input[name=query]").val(); + const query = $(this).closest("form").find("input[name=query]").val(); let search = ""; if (query) search = "?" + new URLSearchParams({ from: query }); OSM.router.route("/directions" + search + OSM.formatHash(map)); @@ -18,7 +18,7 @@ OSM.Search = function (map) { $(".search_form").on("submit", function (e) { e.preventDefault(); $("header").addClass("closed"); - var query = $(this).find("input[name=query]").val(); + const query = $(this).find("input[name=query]").val(); let search = "/"; if (query) search = "/search?" + new URLSearchParams({ query }); OSM.router.route(search + OSM.formatHash(map)); @@ -38,16 +38,16 @@ OSM.Search = function (map) { .on("mouseover", "li.search_results_entry:has(a.set_position)", showSearchResult) .on("mouseout", "li.search_results_entry:has(a.set_position)", hideSearchResult); - var markers = L.layerGroup().addTo(map); + const markers = L.layerGroup().addTo(map); function clickSearchMore(e) { e.preventDefault(); e.stopPropagation(); - var div = $(this).parents(".search_more"), - csrf_param = $("meta[name=csrf-param]").attr("content"), - csrf_token = $("meta[name=csrf-token]").attr("content"), - params = new URLSearchParams(); + const div = $(this).parents(".search_more"), + csrf_param = $("meta[name=csrf-param]").attr("content"), + csrf_token = $("meta[name=csrf-token]").attr("content"), + params = new URLSearchParams(); $(this).hide(); div.find(".loader").show(); @@ -63,10 +63,10 @@ OSM.Search = function (map) { } function showSearchResult() { - var marker = $(this).data("marker"); + let marker = $(this).data("marker"); if (!marker) { - var data = $(this).find("a.set_position").data(); + const data = $(this).find("a.set_position").data(); marker = L.marker([data.lat, data.lon], { icon: OSM.getUserIcon() }); @@ -77,7 +77,7 @@ OSM.Search = function (map) { } function hideSearchResult() { - var marker = $(this).data("marker"); + const marker = $(this).data("marker"); if (marker) { markers.removeLayer(marker); @@ -93,7 +93,7 @@ OSM.Search = function (map) { } function clickSearchResult(e) { - var data = $(this).data(); + const data = $(this).data(); panToSearchResult(data); @@ -104,7 +104,7 @@ OSM.Search = function (map) { e.stopPropagation(); } - var page = {}; + const page = {}; page.pushstate = page.popstate = function (path) { const params = new URLSearchParams(path.substring(path.indexOf("?"))); @@ -120,16 +120,16 @@ OSM.Search = function (map) { page.load = function () { $(".search_results_entry").each(function (index) { - var entry = $(this), - csrf_param = $("meta[name=csrf-param]").attr("content"), - csrf_token = $("meta[name=csrf-token]").attr("content"), - params = new URLSearchParams({ - zoom: map.getZoom(), - minlon: map.getBounds().getWest(), - minlat: map.getBounds().getSouth(), - maxlon: map.getBounds().getEast(), - maxlat: map.getBounds().getNorth() - }); + const entry = $(this), + csrf_param = $("meta[name=csrf-param]").attr("content"), + csrf_token = $("meta[name=csrf-token]").attr("content"), + params = new URLSearchParams({ + zoom: map.getZoom(), + minlon: map.getBounds().getWest(), + minlat: map.getBounds().getSouth(), + maxlon: map.getBounds().getEast(), + maxlat: map.getBounds().getNorth() + }); params.set(csrf_param, csrf_token); fetch(entry.data("href"), { method: "POST", @@ -140,7 +140,7 @@ OSM.Search = function (map) { entry.html(html); // go to first result of first geocoder if (index === 0) { - var firstResult = entry.find("*[data-lat][data-lon]:first").first(); + const firstResult = entry.find("*[data-lat][data-lon]:first").first(); if (firstResult.length) { panToSearchResult(firstResult.data()); } diff --git a/app/assets/javascripts/leaflet.key.js b/app/assets/javascripts/leaflet.key.js index 090583ced..937d9b052 100644 --- a/app/assets/javascripts/leaflet.key.js +++ b/app/assets/javascripts/leaflet.key.js @@ -1,8 +1,8 @@ L.OSM.key = function (options) { - var control = L.OSM.sidebarPane(options, "key", null, "javascripts.key.title"); + const control = L.OSM.sidebarPane(options, "key", null, "javascripts.key.title"); control.onAddPane = function (map, button, $ui) { - var $section = $("
    ") + const $section = $("
    ") .attr("class", "p-3") .appendTo($ui); @@ -24,7 +24,7 @@ L.OSM.key = function (options) { } function updateButton() { - var disabled = OSM.LAYERS_WITH_MAP_KEY.indexOf(map.getMapBaseLayerId()) === -1; + const disabled = OSM.LAYERS_WITH_MAP_KEY.indexOf(map.getMapBaseLayerId()) === -1; button .toggleClass("disabled", disabled) .attr("data-bs-original-title", @@ -34,11 +34,11 @@ L.OSM.key = function (options) { } function update() { - var layerId = map.getMapBaseLayerId(), - zoom = map.getZoom(); + const layerId = map.getMapBaseLayerId(), + zoom = map.getZoom(); $(".mapkey-table-entry").each(function () { - var data = $(this).data(); + const data = $(this).data(); $(this).toggle( layerId === data.layer && (!data.zoomMin || zoom >= data.zoomMin) && diff --git a/app/assets/javascripts/leaflet.layers.js b/app/assets/javascripts/leaflet.layers.js index a7a2335f3..f7142ead1 100644 --- a/app/assets/javascripts/leaflet.layers.js +++ b/app/assets/javascripts/leaflet.layers.js @@ -1,34 +1,34 @@ L.OSM.layers = function (options) { - var control = L.OSM.sidebarPane(options, "layers", "javascripts.map.layers.title", "javascripts.map.layers.header"); + const control = L.OSM.sidebarPane(options, "layers", "javascripts.map.layers.title", "javascripts.map.layers.header"); control.onAddPane = function (map, button, $ui, toggle) { - var layers = options.layers; + const layers = options.layers; - var baseSection = $("
    ") + const baseSection = $("
    ") .attr("class", "base-layers d-grid gap-3 p-3 border-bottom border-secondary-subtle") .appendTo($ui); layers.forEach(function (layer, i) { - var id = "map-ui-layer-" + i; + const id = "map-ui-layer-" + i; - var buttonContainer = $("
    ") + const buttonContainer = $("
    ") .appendTo(baseSection); - var mapContainer = $("
    ") + const mapContainer = $("
    ") .appendTo(buttonContainer); - var input = $("") + const input = $("") .prop("id", id) .prop("checked", map.hasLayer(layer)) .appendTo(buttonContainer); - var item = $("