From fff98f2afbc73375fd5242b0f95b98303d84637a Mon Sep 17 00:00:00 2001 From: Anton Khorev Date: Thu, 24 Aug 2023 18:38:03 +0300 Subject: [PATCH 1/3] Move max value of issues counter to settings --- app/helpers/issues_helper.rb | 6 +++--- config/initializers/config.rb | 1 + config/settings.yml | 2 ++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb index 7bc64cb83..aab742bf5 100644 --- a/app/helpers/issues_helper.rb +++ b/app/helpers/issues_helper.rb @@ -26,9 +26,9 @@ module IssuesHelper end def open_issues_count - count = Issue.visible_to(current_user).open.limit(100).size - if count > 99 - tag.span("99+", :class => "badge count-number") + count = Issue.visible_to(current_user).open.limit(Settings.max_issues_count).size + if count >= Settings.max_issues_count + tag.span("#{Settings.max_issues_count - 1}+", :class => "badge count-number") elsif count.positive? tag.span(count, :class => "badge count-number") end diff --git a/config/initializers/config.rb b/config/initializers/config.rb index 983f02266..c1cc522a5 100644 --- a/config/initializers/config.rb +++ b/config/initializers/config.rb @@ -77,6 +77,7 @@ Config.setup do |config| required(:tracepoints_per_page).filled(:int?) required(:max_number_of_way_nodes).filled(:int?) required(:max_number_of_relation_members).filled(:int?) + required(:max_issues_count).filled(:int?) required(:api_timeout).filled(:int?) required(:imagery_blacklist).maybe(:array?) required(:status).filled(:str?, :included_in? => ALLOWED_STATUS) diff --git a/config/settings.yml b/config/settings.yml index 3ea298efc..2274d727c 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -43,6 +43,8 @@ max_note_request_area: 25 default_note_query_limit: 100 # Maximum limit on the number of notes returned by the note search api method max_note_query_limit: 10000 +# Maximum value of open issues counter for moderators, anything equal or over this value "n" is shown as "(n-1)+" +max_issues_count: 100 # Zoom level to use for postcode results from the geocoder postcode_zoom: 15 # Timeout for API calls in seconds From 963b8f43f155b19096ffc2888deea105a7ec569a Mon Sep 17 00:00:00 2001 From: Anton Khorev Date: Fri, 1 Sep 2023 08:05:01 +0300 Subject: [PATCH 2/3] Change issue count logic from (n-1)+ to n+ --- app/helpers/issues_helper.rb | 2 +- config/settings.yml | 4 ++-- test/helpers/issues_helper_test.rb | 30 ++++++++++++++++++++++++++++++ 3 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 test/helpers/issues_helper_test.rb diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb index aab742bf5..453886334 100644 --- a/app/helpers/issues_helper.rb +++ b/app/helpers/issues_helper.rb @@ -28,7 +28,7 @@ module IssuesHelper def open_issues_count count = Issue.visible_to(current_user).open.limit(Settings.max_issues_count).size if count >= Settings.max_issues_count - tag.span("#{Settings.max_issues_count - 1}+", :class => "badge count-number") + tag.span("#{Settings.max_issues_count}+", :class => "badge count-number") elsif count.positive? tag.span(count, :class => "badge count-number") end diff --git a/config/settings.yml b/config/settings.yml index 2274d727c..0352a85e0 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -43,8 +43,8 @@ max_note_request_area: 25 default_note_query_limit: 100 # Maximum limit on the number of notes returned by the note search api method max_note_query_limit: 10000 -# Maximum value of open issues counter for moderators, anything equal or over this value "n" is shown as "(n-1)+" -max_issues_count: 100 +# Maximum value of open issues counter for moderators, anything equal or greater to this value "n" is shown as "n+" +max_issues_count: 99 # Zoom level to use for postcode results from the geocoder postcode_zoom: 15 # Timeout for API calls in seconds diff --git a/test/helpers/issues_helper_test.rb b/test/helpers/issues_helper_test.rb new file mode 100644 index 000000000..f0b7c884a --- /dev/null +++ b/test/helpers/issues_helper_test.rb @@ -0,0 +1,30 @@ +require "test_helper" + +class IssuesHelperTest < ActionView::TestCase + attr_accessor :current_user + + def test_issues_count + target_user = create(:user) + self.current_user = create(:moderator_user) + + n = (Settings.max_issues_count - 1) + n.times do + create(:note_with_comments) do |note| + create(:issue, :reportable => note, :reported_user => target_user, :assigned_role => "moderator") + end + end + expected = <<~HTML.delete("\n") + #{n} + HTML + assert_dom_equal expected, open_issues_count + + n += 1 + create(:note_with_comments) do |note| + create(:issue, :reportable => note, :reported_user => target_user, :assigned_role => "moderator") + end + expected = <<~HTML.delete("\n") + #{n}+ + HTML + assert_dom_equal expected, open_issues_count + end +end From 09225bc02df4eedd0f90376f1b86cb059de38d31 Mon Sep 17 00:00:00 2001 From: Anton Khorev Date: Fri, 1 Sep 2023 08:19:22 +0300 Subject: [PATCH 3/3] Use i18n at_least_pattern in issues count helper --- app/helpers/issues_helper.rb | 2 +- config/locales/en.yml | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb index 453886334..55bd0952f 100644 --- a/app/helpers/issues_helper.rb +++ b/app/helpers/issues_helper.rb @@ -28,7 +28,7 @@ module IssuesHelper def open_issues_count count = Issue.visible_to(current_user).open.limit(Settings.max_issues_count).size if count >= Settings.max_issues_count - tag.span("#{Settings.max_issues_count}+", :class => "badge count-number") + tag.span(I18n.t("count.at_least_pattern", :count => Settings.max_issues_count), :class => "badge count-number") elsif count.positive? tag.span(count, :class => "badge count-number") end diff --git a/config/locales/en.yml b/config/locales/en.yml index 7b415f6b7..98ecbe8a7 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -5,6 +5,8 @@ en: formats: friendly: "%e %B %Y at %H:%M" blog: "%e %B %Y" + count: + at_least_pattern: "%{count}+" helpers: file: prompt: Choose file