]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'upstream/pull/4234'
authorTom Hughes <tom@compton.nu>
Wed, 6 Sep 2023 17:36:28 +0000 (18:36 +0100)
committerTom Hughes <tom@compton.nu>
Wed, 6 Sep 2023 17:36:28 +0000 (18:36 +0100)
20 files changed:
.rubocop.yml
app/assets/javascripts/leaflet.layers.js
app/assets/javascripts/leaflet.share.js
app/assets/javascripts/leaflet.sidebar-pane.js
app/assets/stylesheets/common.scss
app/views/site/key.html.erb
test/factories/changeset_comments.rb
test/factories/friendships.rb
test/factories/issues.rb
test/factories/messages.rb
test/factories/oauth_access_grant.rb
test/factories/oauth_access_token.rb
test/factories/oauth_applications.rb
test/factories/old_node.rb
test/factories/old_relation.rb
test/factories/old_relation_member.rb
test/factories/old_way.rb
test/factories/relation_member.rb
test/factories/user_blocks.rb
test/factories/user_role.rb

index dc2a33a35b05d863e828a7afd5649ec8461534b4..f8060f9484cc72939fd84e9ac2f94a98804468b4 100644 (file)
@@ -17,6 +17,11 @@ AllCops:
 Rails:
   Enabled: true
 
+# Config can be removed after https://github.com/rubocop/rubocop-factory_bot/issues/53
+FactoryBot/AssociationStyle:
+  Include:
+    - 'test/factories/**/*'
+
 Layout/ExtraSpacing:
   AllowForAlignment: true
 
index 020876c470c71f134ab5e2543e29a73be8c7b7b8..27311f7c1441c3d22acde08cbcc526702b0e7e4e 100644 (file)
@@ -8,11 +8,12 @@ L.OSM.layers = function (options) {
       .attr("class", "section base-layers")
       .appendTo($ui);
 
-    var baseLayers = $("<ul class='list-unstyled'>")
+    var baseLayers = $("<ul class='list-unstyled mb-0'>")
       .appendTo(baseSection);
 
     layers.forEach(function (layer) {
       var item = $("<li>")
+        .attr("class", "rounded-3")
         .appendTo(baseLayers);
 
       if (map.hasLayer(layer)) {
index 7b1c995c2d1a45fe03cc6fe9e6fe3dffcd13f620..c096a92fcf725b4d2ce3e2d144416cfcdfe726fc 100644 (file)
@@ -23,17 +23,15 @@ L.OSM.share = function (options) {
     $("<div>")
       .attr("class", "form-check mb-3")
       .appendTo($form)
-      .append(
-        $("<label>")
-          .attr("for", "link_marker")
-          .attr("class", "form-check-label")
-          .append(
-            $("<input>")
-              .attr("id", "link_marker")
-              .attr("type", "checkbox")
-              .attr("class", "form-check-input")
-              .bind("change", toggleMarker))
-          .append(I18n.t("javascripts.share.include_marker")));
+      .append($("<label>")
+        .attr("for", "link_marker")
+        .attr("class", "form-check-label")
+        .text(I18n.t("javascripts.share.include_marker")))
+      .append($("<input>")
+        .attr("id", "link_marker")
+        .attr("type", "checkbox")
+        .attr("class", "form-check-input")
+        .bind("change", toggleMarker));
 
     $("<div class='btn-group btn-group-sm mb-2'>")
       .appendTo($form)
@@ -70,6 +68,8 @@ L.OSM.share = function (options) {
       .append($("<input>")
         .attr("id", "long_input")
         .attr("type", "text")
+        .attr("class", "form-control form-control-sm font-monospace")
+        .attr("readonly", true)
         .on("click", select));
 
     $("<div>")
@@ -79,6 +79,8 @@ L.OSM.share = function (options) {
       .append($("<input>")
         .attr("id", "short_input")
         .attr("type", "text")
+        .attr("class", "form-control form-control-sm font-monospace")
+        .attr("readonly", true)
         .on("click", select));
 
     $("<div>")
@@ -88,6 +90,8 @@ L.OSM.share = function (options) {
       .append(
         $("<textarea>")
           .attr("id", "embed_html")
+          .attr("class", "form-control form-control-sm font-monospace")
+          .attr("readonly", true)
           .on("click", select))
       .append(
         $("<p>")
@@ -131,46 +135,61 @@ L.OSM.share = function (options) {
       .attr("method", "post")
       .appendTo($imageSection);
 
-    $("<div>")
-      .attr("class", "mb-3 form-check")
-      .appendTo($form)
-      .append(
-        $("<label>")
-          .attr("for", "image_filter")
-          .attr("class", "form-check-label")
-          .append(
-            $("<input>")
-              .attr("id", "image_filter")
-              .attr("type", "checkbox")
-              .attr("class", "form-check-input")
-              .bind("change", toggleFilter))
-          .append(I18n.t("javascripts.share.custom_dimensions")));
-
     $("<div>")
       .appendTo($form)
-      .append(
-        $("<label>")
-          .attr("for", "mapnik_format")
-          .text(I18n.t("javascripts.share.format")))
-      .append($("<select>")
-        .attr("name", "mapnik_format")
-        .attr("id", "mapnik_format")
-        .append($("<option>").val("png").text("PNG").prop("selected", true))
-        .append($("<option>").val("jpeg").text("JPEG"))
-        .append($("<option>").val("svg").text("SVG"))
-        .append($("<option>").val("pdf").text("PDF")));
+      .attr("class", "row mb-3")
+      .append($("<label>")
+        .attr("for", "mapnik_format")
+        .attr("class", "col-auto col-form-label")
+        .text(I18n.t("javascripts.share.format")))
+      .append($("<div>")
+        .attr("class", "col-auto")
+        .append($("<select>")
+          .attr("name", "mapnik_format")
+          .attr("id", "mapnik_format")
+          .attr("class", "form-select w-auto")
+          .append($("<option>").val("png").text("PNG").prop("selected", true))
+          .append($("<option>").val("jpeg").text("JPEG"))
+          .append($("<option>").val("svg").text("SVG"))
+          .append($("<option>").val("pdf").text("PDF"))));
 
     $("<div>")
       .appendTo($form)
+      .attr("class", "row mb-3")
       .append($("<label>")
         .attr("for", "mapnik_scale")
+        .attr("class", "col-auto col-form-label")
         .text(I18n.t("javascripts.share.scale")))
-      .append("1 : ")
-      .append($("<input>")
-        .attr("name", "mapnik_scale")
-        .attr("id", "mapnik_scale")
-        .attr("type", "text")
-        .on("change", update));
+      .append($("<div>")
+        .attr("class", "col-auto")
+        .append($("<div>")
+          .attr("class", "input-group flex-nowrap")
+          .append($("<span>")
+            .attr("class", "input-group-text")
+            .text("1 : "))
+          .append($("<input>")
+            .attr("name", "mapnik_scale")
+            .attr("id", "mapnik_scale")
+            .attr("type", "text")
+            .attr("class", "form-control")
+            .on("change", update))));
+
+    $("<div>")
+      .attr("class", "row mb-3")
+      .appendTo($form)
+      .append($("<div>")
+        .attr("class", "col-auto")
+        .append($("<div>")
+          .attr("class", "form-check")
+          .append($("<label>")
+            .attr("for", "image_filter")
+            .attr("class", "form-check-label")
+            .text(I18n.t("javascripts.share.custom_dimensions")))
+          .append($("<input>")
+            .attr("id", "image_filter")
+            .attr("type", "checkbox")
+            .attr("class", "form-check-input")
+            .bind("change", toggleFilter))));
 
     ["minlon", "minlat", "maxlon", "maxlat"].forEach(function (name) {
       $("<input>")
index d8213a3767a948aee2c0a9cdadc5498cbf1d4208..516a446c38811994cf4343b8b507340f3b709efa 100644 (file)
@@ -20,9 +20,9 @@ L.OSM.sidebarPane = function (options, uiClass, buttonTitle, paneTitle) {
     var $ui = $("<div>")
       .attr("class", uiClass + "-ui");
 
-    $("<div class='sidebar_heading d-flex'>")
+    $("<div class='d-flex p-3 pb-0'>")
       .appendTo($ui)
-      .append($("<h4 class='flex-grow-1 text-break'>")
+      .append($("<h2 class='flex-grow-1 text-break'>")
         .text(I18n.t(paneTitle)))
       .append($("<div>")
         .append($("<button type='button' class='btn-close'>")
index 60a4bd59c331b94abaa4d737b039bc6c1f8708a3..2cd357845929be2bdff8dfe9947ee3ddfb2ad992 100644 (file)
@@ -486,7 +486,7 @@ body.small-nav {
 
     .section {
       border-bottom: 1px solid $grey;
-      padding: 10px 20px;
+      padding: $spacer;
     }
   }
 }
@@ -573,29 +573,13 @@ body.small-nav {
 }
 
 .share-ui {
-  .share-link {
-    input[type=text],
-    textarea {
-      width: 100%;
-      font-family: monospace;
-      font-size: small;
-      line-height: 1.3;
-    }
-  }
-
-  .share-image {
-    label {
-      margin-right: 10px;
-    }
-  }
-
   #mapnik_scale {
     width: 100px;
   }
 }
 
 .leaflet-top {
-  top: $lineheight/2 !important;
+  top: 10px !important;
   .leaflet-control {
     margin-right: 0px !important;
     margin-top: 0px !important;
@@ -622,13 +606,6 @@ body.small-nav {
 
 /* Rules for the sidebar */
 
-.sidebar_heading {
-  position: relative;
-  padding: $lineheight/2 $lineheight;
-  // background: $offwhite;
-  // border-bottom: 1px solid $grey;
-}
-
 #browse_status {
   input {
     display: block;
@@ -647,6 +624,9 @@ form {
   label {
     font-size: 16px;
   }
+  .col-form-label {
+    font-size: 16px;
+  }
 }
 
 /* Stop bootstrap 5 from floating legends when they don't need to be */
index 370ae3b645b3ee68e069f365a225f8ef302892cc..949121d96f2f64aae1b325d473bbde2f59baa6db 100644 (file)
@@ -1,5 +1,5 @@
 <div id="mapkey">
-  <table class="table table-sm table-borderless mapkey-table">
+  <table class="table table-sm table-borderless mapkey-table mb-0">
     <% YAML.load_file(Rails.root.join("config/key.yml")).each do |name,data| %>
       <% data.each do |entry| %>
         <tr class="mapkey-table-entry" data-layer="<%= name %>" data-zoom-min="<%= entry["min_zoom"] %>" data-zoom-max="<%= entry["max_zoom"] %>">
index 673a0a9d6798c58940b14b6ac00fd4c099604b1a..911e7c1b5d33fa8b397c0862fbcfad1fb2ec2a0f 100644 (file)
@@ -5,6 +5,6 @@ FactoryBot.define do
 
     changeset
 
-    association :author, :factory => :user
+    author :factory => :user
   end
 end
index 4879373a8de63ee47dd042d145a124e079dfede4..12df2a9456e9143dffb5fa729cc42ed927aab3bb 100644 (file)
@@ -1,6 +1,6 @@
 FactoryBot.define do
   factory :friendship do
-    association :befriender, :factory => :user
-    association :befriendee, :factory => :user
+    befriender :factory => :user
+    befriendee :factory => :user
   end
 end
index bb6b2dd5222d517fbe95ca35a812991dc95d2b38..cc6b4c3671576cd241f07732939068cf730107eb 100644 (file)
@@ -1,8 +1,8 @@
 FactoryBot.define do
   factory :issue do
     # Default to reporting users
-    association :reportable, :factory => :user
-    association :reported_user, :factory => :user
+    reportable :factory => :user
+    reported_user :factory => :user
 
     # Default to assigning to an administrator
     assigned_role { "administrator" }
index cd148c7896a2f80720258ab27262a66127a767a4..4f8ee5437fc8a86bcb1897ebbe03b4722da3e78a 100644 (file)
@@ -4,8 +4,8 @@ FactoryBot.define do
     sequence(:body) { |n| "Body text for message #{n}" }
     sent_on { Time.now.utc }
 
-    association :sender, :factory => :user
-    association :recipient, :factory => :user
+    sender :factory => :user
+    recipient :factory => :user
 
     trait :unread do
       message_read { false }
index caddea8155c6abc4a1b35c8478783117e1146541..b9f53890b9afc7876377c6ed2cfdc53dd89b75a5 100644 (file)
@@ -1,7 +1,7 @@
 FactoryBot.define do
   factory :oauth_access_grant, :class => "Doorkeeper::AccessGrant" do
-    association :resource_owner_id, :factory => :user
-    association :application, :factory => :oauth_application
+    resource_owner_id :factory => :user
+    application :factory => :oauth_application
 
     expires_in { 86400 }
     redirect_uri { application.redirect_uri }
index 5b39cb400cf62267a046bc16787ca95e58173c20..3f862fbca752e9887cbf63df02491ea493c83f10 100644 (file)
@@ -1,5 +1,5 @@
 FactoryBot.define do
   factory :oauth_access_token, :class => "Doorkeeper::AccessToken" do
-    association :application, :factory => :oauth_application
+    application :factory => :oauth_application
   end
 end
index 1e62d2c973eaff522ae26cc26aba99cad5b5add3..c865e0237383a0cded35c28064dc73e53adc05be 100644 (file)
@@ -3,6 +3,6 @@ FactoryBot.define do
     sequence(:name) { |n| "OAuth application #{n}" }
     sequence(:redirect_uri) { |n| "https://example.com/app/#{n}" }
 
-    association :owner, :factory => :user
+    owner :factory => :user
   end
 end
index a2ca0a2ee3c7780389d2f11ead22ba60455574a8..985093fad28e0e56c625edc5af60f0b6046d43c8 100644 (file)
@@ -4,7 +4,7 @@ FactoryBot.define do
     longitude { 1 * GeoRecord::SCALE }
 
     changeset
-    association :current_node, :factory => :node
+    current_node :factory => :node
 
     visible { true }
     timestamp { Time.now.utc }
index 1bc1b36cf0c94e7fe2ee2978d10e0df88eaca640..facf06dc0486027086ae1042a50044d9c0203899 100644 (file)
@@ -5,6 +5,6 @@ FactoryBot.define do
     version { 1 }
 
     changeset
-    association :current_relation, :factory => :relation
+    current_relation :factory => :relation
   end
 end
index 17495d7ea862703017f0124ed3506ee533407783..99305cd98bfff94126522bf6df200a51c15f6a72 100644 (file)
@@ -4,6 +4,6 @@ FactoryBot.define do
 
     old_relation
     # Default to creating nodes, but could be ways or relations as members
-    association :member, :factory => :node
+    member :factory => :node
   end
 end
index 265a477d3022c278a5ee11fbd93a2b69397980b5..b91bf8bf53973289c48dc54845891e8defd82073 100644 (file)
@@ -5,6 +5,6 @@ FactoryBot.define do
     version { 1 }
 
     changeset
-    association :current_way, :factory => :way
+    current_way :factory => :way
   end
 end
index b4498a28d1ad780784a8f81b10186a5b9b09be03..bba2e76330d93cadedf45ae41cabd613fbe98a69 100644 (file)
@@ -4,6 +4,6 @@ FactoryBot.define do
 
     relation
     # Default to creating nodes, but could be ways or relations as members
-    association :member, :factory => :node
+    member :factory => :node
   end
 end
index fefbba45ace1b61fbd3932ea1851ba6e5a69fd67..2f68dc8dc6c1162512cee03a7859e22ba91ffba0 100644 (file)
@@ -4,7 +4,7 @@ FactoryBot.define do
     ends_at { Time.now.utc + 1.day }
 
     user
-    association :creator, :factory => :moderator_user
+    creator :factory => :moderator_user
 
     trait :needs_view do
       needs_view { true }
@@ -15,7 +15,7 @@ FactoryBot.define do
     end
 
     trait :revoked do
-      association :revoker, :factory => :moderator_user
+      revoker :factory => :moderator_user
     end
   end
 end
index 6523342f70b1acb0d54fe9aa4b91d1d39a21b633..1916d9b2e9769759477cef313bc17061f191e694 100644 (file)
@@ -1,6 +1,6 @@
 FactoryBot.define do
   factory :user_role do
     user
-    association :granter, :factory => :user
+    granter :factory => :user
   end
 end