]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'upstream/pull/3668'
authorTom Hughes <tom@compton.nu>
Wed, 31 Aug 2022 16:44:48 +0000 (17:44 +0100)
committerTom Hughes <tom@compton.nu>
Wed, 31 Aug 2022 16:44:48 +0000 (17:44 +0100)
app/assets/javascripts/index.js
app/assets/javascripts/index/browse.js
app/assets/javascripts/index/directions.js
app/assets/javascripts/leaflet.key.js
app/assets/javascripts/leaflet.layers.js
app/assets/javascripts/leaflet.share.js
app/assets/javascripts/leaflet.sidebar-pane.js [new file with mode: 0644]
app/views/application/_sidebar_header.html.erb
app/views/layouts/_search.html.erb

index 40f546009b0d4e7554d0ee6f0f669a55f4e644f4..5ba36a455db9e3a06ef467a872657844e8f972d9 100644 (file)
@@ -1,5 +1,6 @@
 //= require_self
 //= require leaflet.sidebar
+//= require leaflet.sidebar-pane
 //= require leaflet.locatecontrol/src/L.Control.Locate
 //= require leaflet.layers
 //= require leaflet.key
index 8ef859d855b96650d0a579b49cc7693d6922f8a2..61319f7b4f00be5660f385b3d9335fc7a4925af1 100644 (file)
@@ -48,21 +48,20 @@ OSM.initializeBrowse = function (map) {
 
   function displayFeatureWarning(count, limit, add, cancel) {
     $("#browse_status").html(
-      $("<div>")
-        .append(
-          $("<button type='button' class='btn-close float-end mt-1'>")
-            .click(cancel),
-          $("<h2>")
-            .text(I18n.t("browse.start_rjs.load_data"))
-            .prepend(),
-          $("<div>")
-            .append(
-              $("<p class='alert alert-warning clearfix'></p>")
-                .text(I18n.t("browse.start_rjs.feature_warning", { num_features: count, max_features: limit })))
-            .append(
-              $("<input type='submit' class='btn btn-primary'>")
-                .val(I18n.t("browse.start_rjs.load_data"))
-                .click(add))));
+      $("<div>").append(
+        $("<div class='d-flex'>").append(
+          $("<div class='flex-grow-1 text-break'>").append(
+            $("<h2>")
+              .text(I18n.t("browse.start_rjs.load_data"))),
+          $("<div>").append(
+            $("<button type='button' class='btn-close mt-1'>")
+              .click(cancel))),
+        $("<div>").append(
+          $("<p class='alert alert-warning'></p>")
+            .text(I18n.t("browse.start_rjs.feature_warning", { num_features: count, max_features: limit })),
+          $("<input type='submit' class='btn btn-primary'>")
+            .val(I18n.t("browse.start_rjs.load_data"))
+            .click(add))));
   }
 
   var dataLoader;
index ad780d4f40dffa74d6f7ecd5346120a66764b4fb..0c867a97d69b945661328a9e283522bc16d0762d 100644 (file)
@@ -254,20 +254,31 @@ OSM.Directions = function (map) {
         map.fitBounds(polyline.getBounds().pad(0.05));
       }
 
-      var html = "<a class=\"geolink\" href=\"#\"><button type='button' class='btn-close float-end mt-1'></button></a>" +
-        "<h2>" + I18n.t("javascripts.directions.directions") + "</h2>" +
-        "<p>" +
+      var distanceText = $("<p>").append(
         I18n.t("javascripts.directions.distance") + ": " + formatDistance(route.distance) + ". " +
-        I18n.t("javascripts.directions.time") + ": " + formatTime(route.time) + ".";
+        I18n.t("javascripts.directions.time") + ": " + formatTime(route.time) + ".");
       if (typeof route.ascend !== "undefined" && typeof route.descend !== "undefined") {
-        html += "<br />" +
+        distanceText.append(
+          $("<br>"),
           I18n.t("javascripts.directions.ascend") + ": " + Math.round(route.ascend) + "m. " +
-          I18n.t("javascripts.directions.descend") + ": " + Math.round(route.descend) + "m.";
+          I18n.t("javascripts.directions.descend") + ": " + Math.round(route.descend) + "m.");
       }
-      html += "</p><table id=\"turnbyturn\" class=\"mb-3\"/>";
+
+      var turnByTurnTable = $("<table class='mb-3'>");
 
       $("#sidebar_content")
-        .html(html);
+        .empty()
+        .append(
+          $("<div class='d-flex'>").append(
+            $("<div class='flex-grow-1 text-break'>").append(
+              $("<h2>")
+                .text(I18n.t("javascripts.directions.directions"))),
+            $("<div>").append(
+              $("<a class='geolink' href='#'>").append(
+                $("<button type='button' class='btn-close mt-1'>")))),
+          distanceText,
+          turnByTurnTable
+        );
 
       // Add each row
       route.steps.forEach(function (step) {
@@ -309,7 +320,7 @@ OSM.Directions = function (map) {
           map.removeLayer(highlight);
         });
 
-        $("#turnbyturn").append(row);
+        turnByTurnTable.append(row);
       });
 
       $("#sidebar_content").append("<p class=\"text-center\">" +
index 367c39c1462067ab74ed7fdad466b0814a5b75fa..6a3400d348831ab48ff53b5f1a2f9e991307f52b 100644 (file)
@@ -1,37 +1,11 @@
 L.OSM.key = function (options) {
-  var control = L.control(options);
-
-  control.onAdd = function (map) {
-    var $container = $("<div>")
-      .attr("class", "control-key");
-
-    var button = $("<a>")
-      .attr("class", "control-button")
-      .attr("href", "#")
-      .html("<span class=\"icon key\"></span>")
-      .on("click", toggle)
-      .appendTo($container);
-
-    var $ui = $("<div>")
-      .attr("class", "key-ui");
-
-    $("<div>")
-      .attr("class", "sidebar_heading")
-      .appendTo($ui)
-      .append(
-        $("<button type='button' class='btn-close float-end mt-1'>")
-          .attr("aria-label", I18n.t("javascripts.close"))
-          .bind("click", toggle))
-      .append(
-        $("<h4>")
-          .text(I18n.t("javascripts.key.title")));
+  var control = L.OSM.sidebarPane(options, "key", null, "javascripts.key.title");
 
+  control.onAddPane = function (map, button, $ui) {
     var $section = $("<div>")
       .attr("class", "section")
       .appendTo($ui);
 
-    options.sidebar.addPane($ui);
-
     $ui
       .on("show", shown)
       .on("hide", hidden);
@@ -49,15 +23,6 @@ L.OSM.key = function (options) {
       map.off("zoomend baselayerchange", update);
     }
 
-    function toggle(e) {
-      e.stopPropagation();
-      e.preventDefault();
-      if (!button.hasClass("disabled")) {
-        options.sidebar.togglePane($ui, button);
-      }
-      $(".leaflet-control .control-button").tooltip("hide");
-    }
-
     function updateButton() {
       var disabled = ["mapnik", "cyclemap"].indexOf(map.getMapBaseLayerId()) === -1;
       button
@@ -81,8 +46,6 @@ L.OSM.key = function (options) {
         }
       });
     }
-
-    return $container[0];
   };
 
   return control;
index 038205ca4975d16e593b89d4b0278fef61062367..2633d103794d6e6af8396545b49f7568be3900ae 100644 (file)
@@ -1,34 +1,9 @@
 L.OSM.layers = function (options) {
-  var control = L.control(options);
+  var control = L.OSM.sidebarPane(options, "layers", "javascripts.map.layers.title", "javascripts.map.layers.header");
 
-  control.onAdd = function (map) {
+  control.onAddPane = function (map, button, $ui, toggle) {
     var layers = options.layers;
 
-    var $container = $("<div>")
-      .attr("class", "control-layers");
-
-    var button = $("<a>")
-      .attr("class", "control-button")
-      .attr("href", "#")
-      .attr("title", I18n.t("javascripts.map.layers.title"))
-      .html("<span class=\"icon layers\"></span>")
-      .on("click", toggle)
-      .appendTo($container);
-
-    var $ui = $("<div>")
-      .attr("class", "layers-ui");
-
-    $("<div>")
-      .attr("class", "sidebar_heading")
-      .appendTo($ui)
-      .append(
-        $("<button type='button' class='btn-close float-end mt-1'>")
-          .attr("aria-label", I18n.t("javascripts.close"))
-          .bind("click", toggle))
-      .append(
-        $("<h4>")
-          .text(I18n.t("javascripts.map.layers.header")));
-
     var baseSection = $("<div>")
       .attr("class", "section base-layers")
       .appendTo($ui);
@@ -179,17 +154,6 @@ L.OSM.layers = function (options) {
       addOverlay(map.dataLayer, "data", OSM.MAX_REQUEST_AREA);
       addOverlay(map.gpsLayer, "gps", Number.POSITIVE_INFINITY);
     }
-
-    options.sidebar.addPane($ui);
-
-    function toggle(e) {
-      e.stopPropagation();
-      e.preventDefault();
-      options.sidebar.togglePane($ui, button);
-      $(".leaflet-control .control-button").tooltip("hide");
-    }
-
-    return $container[0];
   };
 
   return control;
index 1817e71ccd03d2b759618cf3dd576e3f08cf69d3..f6ab47cf2fb507467d5b0a06ba44f06a68d3092c 100644 (file)
@@ -1,37 +1,12 @@
 L.OSM.share = function (options) {
-  var control = L.control(options),
+  var control = L.OSM.sidebarPane(options, "share", "javascripts.share.title", "javascripts.share.title"),
       marker = L.marker([0, 0], { draggable: true }),
       locationFilter = new L.LocationFilter({
         enableButton: false,
         adjustButton: false
       });
 
-  control.onAdd = function (map) {
-    var $container = $("<div>")
-      .attr("class", "control-share");
-
-    var button = $("<a>")
-      .attr("class", "control-button")
-      .attr("href", "#")
-      .attr("title", I18n.t("javascripts.share.title"))
-      .html("<span class=\"icon share\"></span>")
-      .on("click", toggle)
-      .appendTo($container);
-
-    var $ui = $("<div>")
-      .attr("class", "share-ui");
-
-    $("<div>")
-      .attr("class", "sidebar_heading")
-      .appendTo($ui)
-      .append(
-        $("<button type='button' class='btn-close float-end mt-1'>")
-          .attr("aria-label", I18n.t("javascripts.close"))
-          .bind("click", toggle))
-      .append(
-        $("<h4>")
-          .text(I18n.t("javascripts.share.title")));
-
+  control.onAddPane = function (map, button, $ui) {
     // Link / Embed
 
     var $linkSection = $("<div>")
@@ -245,11 +220,15 @@ L.OSM.share = function (options) {
     map.on("move", movedMap);
     map.on("moveend layeradd layerremove", update);
 
-    options.sidebar.addPane($ui);
-
     $ui
+      .on("show", shown)
       .on("hide", hidden);
 
+    function shown() {
+      $("#mapnik_scale").val(getScale());
+      update();
+    }
+
     function hidden() {
       map.removeLayer(marker);
       map.options.scrollWheelZoom = map.options.doubleClickZoom = true;
@@ -257,18 +236,6 @@ L.OSM.share = function (options) {
       update();
     }
 
-    function toggle(e) {
-      e.stopPropagation();
-      e.preventDefault();
-
-      $("#mapnik_scale").val(getScale());
-      marker.setLatLng(map.getCenter());
-
-      update();
-      options.sidebar.togglePane($ui, button);
-      $(".leaflet-control .control-button").tooltip("hide");
-    }
-
     function toggleMarker() {
       if ($(this).is(":checked")) {
         marker.setLatLng(map.getCenter());
@@ -413,8 +380,6 @@ L.OSM.share = function (options) {
       var precision = 5 * Math.pow(10, Math.floor(Math.LOG10E * Math.log(scale)) - 2);
       return precision * Math.ceil(scale / precision);
     }
-
-    return $container[0];
   };
 
   return control;
diff --git a/app/assets/javascripts/leaflet.sidebar-pane.js b/app/assets/javascripts/leaflet.sidebar-pane.js
new file mode 100644 (file)
index 0000000..8403c7b
--- /dev/null
@@ -0,0 +1,53 @@
+L.OSM.sidebarPane = function (options, uiClass, buttonTitle, paneTitle) {
+  var control = L.control(options);
+
+  control.onAdd = function (map) {
+    var $container = $("<div>")
+      .attr("class", "control-" + uiClass);
+
+    var button = $("<a>")
+      .attr("class", "control-button")
+      .attr("href", "#")
+      .html("<span class=\"icon " + uiClass + "\"></span>")
+      .on("click", toggle);
+
+    if (buttonTitle) {
+      button.attr("title", I18n.t(buttonTitle));
+    }
+
+    button.appendTo($container);
+
+    var $ui = $("<div>")
+      .attr("class", uiClass + "-ui");
+
+    $("<div class='sidebar_heading d-flex'>")
+      .appendTo($ui)
+      .append($("<div class='flex-grow-1 text-break'>")
+        .append($("<h4>")
+          .text(I18n.t(paneTitle))))
+      .append($("<div>")
+        .append($("<button type='button' class='btn-close mt-1'>")
+          .attr("aria-label", I18n.t("javascripts.close"))
+          .bind("click", toggle)));
+
+    options.sidebar.addPane($ui);
+
+    this.onAddPane(map, button, $ui, toggle);
+
+    function toggle(e) {
+      e.stopPropagation();
+      e.preventDefault();
+      if (!button.hasClass("disabled")) {
+        options.sidebar.togglePane($ui, button);
+      }
+      $(".leaflet-control .control-button").tooltip("hide");
+    }
+
+    return $container[0];
+  };
+
+  // control.onAddPane = function (map, button, $ui, toggle) {
+  // }
+
+  return control;
+};
index 83b1ae1c5415c9a3ff22ccb7ad3472f311c68007..307903fffca8f1d91efb170605dcb1218bbd42d6 100644 (file)
@@ -4,7 +4,7 @@
   </div>
   <div>
     <a class="geolink" href="<%= root_path %>">
-      <button type="button" class="btn-close float-end mt-1"></button>
+      <button type="button" class="btn-close mt-1"></button>
     </a>
   </div>
 </div>
index 47e9ad5578871314d957afe5ed6125af067a28aa..9ce1265b412828f45040be2f7d8ad9b6c988d3bf 100644 (file)
@@ -19,7 +19,7 @@
   </form>
 
   <form method="GET" action="<%= directions_path %>" class="directions_form pb-3">
-    <div class="clearfix px-3 py-3"><button type="button" class="btn-close float-end"></button></div>
+    <div class="d-flex flex-row-reverse px-3 py-3"><button type="button" class="btn-close"></button></div>
 
     <div class="row gx-2 m-1">
       <div class="col-1">