]> git.openstreetmap.org Git - rails.git/commitdiff
Merge branch 'master' into tooltips-enable-disable
authorAnton Khorev <tony29@yandex.ru>
Fri, 23 Sep 2022 09:43:31 +0000 (12:43 +0300)
committerAnton Khorev <tony29@yandex.ru>
Fri, 23 Sep 2022 09:43:31 +0000 (12:43 +0300)
app/assets/javascripts/application.js
app/assets/javascripts/leaflet.layers.js
config/eslint.json
test/system/site_test.rb

index 89f60847fb9261f2432051e5c2441b32b96744e9..8b8beb5b4a5164ca10a2c26652ef5662458b0024 100644 (file)
@@ -57,15 +57,19 @@ window.updateLinks = function (loc, zoom, layers, object) {
   });
 
   var editDisabled = zoom < 13;
-  $("#edit_tab")
-    .tooltip({ placement: "bottom" })
-    .attr("data-bs-original-title", editDisabled ?
-      I18n.t("javascripts.site.edit_disabled_tooltip") : "")
+  var editTab = $("#edit_tab");
+  editTab
     // Disable the button group and also the buttons to avoid
     // inconsistent behaviour when zooming
     .toggleClass("disabled", editDisabled)
     .find("a")
     .toggleClass("disabled", editDisabled);
+  var editTooltip = bootstrap.Tooltip.getOrCreateInstance(editTab[0], { placement: "bottom" });
+  if (editDisabled) {
+    editTooltip.enable();
+  } else {
+    editTooltip.disable();
+  }
 };
 
 window.maximiseMap = function () {
@@ -77,6 +81,9 @@ window.minimiseMap = function () {
 };
 
 $(document).ready(function () {
+  $("#edit_tab")
+    .attr("title", I18n.t("javascripts.site.edit_disabled_tooltip"));
+
   var headerWidth = 0,
       compactWidth = 0;
 
index 2633d103794d6e6af8396545b49f7568be3900ae..f372b86cfbe5819886b78726d9b87f9651fa1e5b 100644 (file)
@@ -98,11 +98,15 @@ L.OSM.layers = function (options) {
 
       var addOverlay = function (layer, name, maxArea) {
         var item = $("<li>")
-          .tooltip({
-            placement: "top"
-          })
           .appendTo(overlays);
 
+        var tooltip;
+        if (name === "notes" || name === "data") {
+          item.attr("title", I18n.t("javascripts.site.map_" + name + "_zoom_in_tooltip"));
+          tooltip = new bootstrap.Tooltip(item[0]);
+          tooltip.disable();
+        }
+
         var label = $("<label>")
           .attr("class", "form-check-label")
           .appendTo(item);
@@ -145,8 +149,13 @@ L.OSM.layers = function (options) {
           }
 
           $(item).attr("class", disabled ? "disabled" : "");
-          item.attr("data-bs-original-title", disabled ?
-            I18n.t("javascripts.site.map_" + name + "_zoom_in_tooltip") : "");
+          if (tooltip) {
+            if (disabled) {
+              tooltip.enable();
+            } else {
+              tooltip.disable();
+            }
+          }
         });
       };
 
index 3b878d48a8cb813955fb399243ed01af1e892fef..b54c8855f47806cc420b2a7259354786942cd70c 100644 (file)
@@ -7,6 +7,7 @@
     "eslint:recommended"
   ],
   "globals": {
+    "bootstrap": "readonly",
     "Cookies": "readonly",
     "I18n": "readonly",
     "L": "readonly",
index a08f7f344cd55672a935b85fc7b5af00e53f4f93..0ed755a0953d066b0381da4f95a70ab2b77e9b9d 100644 (file)
@@ -49,23 +49,45 @@ class SiteTest < ApplicationSystemTestCase
     tooltip.assert_no_text "Zoom in"
   end
 
-  test "tooltip shows for query button when zoomed out" do
-    visit "/#map=10/0/0"
+  [
+    "#edit_tab",
+    ".control-note .control-button",
+    ".control-query .control-button"
+  ].each do |selector|
+    test "tooltips on low zoom levels for disabled control '#{selector}'" do
+      visit "/#map=10/0/0"
 
-    assert_no_selector ".tooltip"
-    button = find ".control-query .control-button"
-    button.hover
-    tooltip = find ".tooltip"
-    tooltip.assert_text "Zoom in to query features"
+      assert_no_selector ".tooltip"
+      find(selector).hover
+      assert_selector ".tooltip", :text => "Zoom in"
+    end
+
+    test "no zoom-in tooltips on high zoom levels, then tooltips appear after zoom out for control '#{selector}'" do
+      visit "/#map=14/0/0"
+
+      assert_no_selector ".tooltip"
+      find(selector).hover
+      assert_no_selector ".tooltip", :text => "Zoom in"
+      find("h1").hover # un-hover original element
+
+      visit "/#map=10/0/0"
+      find(selector).hover
+      assert_selector ".tooltip", :text => "Zoom in"
+    end
   end
 
-  test "tooltip shows for edit button when zoomed out" do
-    visit "/#map=11/0/0"
+  test "notes layer tooltip appears on zoom out" do
+    visit "/#map=9/40/-4" # depends on zoom levels where notes are allowed
 
-    assert_no_selector ".tooltip"
-    button = find "#edit_tab"
-    button.hover
-    tooltip = find ".tooltip"
-    tooltip.assert_text "Zoom in to edit the map"
+    find(".control-layers .control-button").click
+    li = find(".layers-ui .overlay-layers li:first-child")
+    li.not_matches_css? ".disabled"
+    li.hover # try to trigger disabled tooltip
+    zoomout = find(".control-button.zoomout")
+    zoomout.hover # un-hover the tooltip that's being tested
+    zoomout.click
+    li.matches_css? ".disabled"
+    li.hover
+    assert_selector ".tooltip", :text => "Zoom in"
   end
 end