From ee2c13d78d2289c87218068c0231f1386d7da2eb Mon Sep 17 00:00:00 2001 From: Kamil Trzcinski Date: Tue, 26 Sep 2017 13:42:04 +0200 Subject: [PATCH] Add 1000+ counters (instead of inifnite) to jobs controller --- app/helpers/numbers_helper.rb | 11 +++++++++++ app/views/projects/jobs/index.html.haml | 2 +- app/views/shared/builds/_tabs.html.haml | 8 ++++---- .../add-1000-plus-counters-for-jobs-page.yml | 5 +++++ 4 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 app/helpers/numbers_helper.rb create mode 100644 changelogs/unreleased/add-1000-plus-counters-for-jobs-page.yml diff --git a/app/helpers/numbers_helper.rb b/app/helpers/numbers_helper.rb new file mode 100644 index 00000000000..45bd3606076 --- /dev/null +++ b/app/helpers/numbers_helper.rb @@ -0,0 +1,11 @@ +module NumbersHelper + def limited_counter_with_delimiter(resource, **options) + limit = options.fetch(:limit, 1000).to_i + count = resource.limit(limit + 1).count(:all) + if count > limit + number_with_delimiter(count - 1, options) + '+' + else + number_with_delimiter(count, options) + end + end +end diff --git a/app/views/projects/jobs/index.html.haml b/app/views/projects/jobs/index.html.haml index 8604c7d3ea4..82b65844efc 100644 --- a/app/views/projects/jobs/index.html.haml +++ b/app/views/projects/jobs/index.html.haml @@ -9,7 +9,7 @@ .nav-controls - if can?(current_user, :update_build, @project) - - if @all_builds.running_or_pending.any? + - if @all_builds.running_or_pending.limit(1).any? = link_to 'Cancel running', cancel_all_project_jobs_path(@project), data: { confirm: 'Are you sure?' }, class: 'btn btn-danger', method: :post diff --git a/app/views/shared/builds/_tabs.html.haml b/app/views/shared/builds/_tabs.html.haml index 3baa956b910..639f28cc210 100644 --- a/app/views/shared/builds/_tabs.html.haml +++ b/app/views/shared/builds/_tabs.html.haml @@ -3,22 +3,22 @@ = link_to build_path_proc.call(nil) do All %span.badge.js-totalbuilds-count - = number_with_delimiter(all_builds.count(:id)) + = limited_counter_with_delimiter(all_builds) %li{ class: active_when(scope == 'pending') }> = link_to build_path_proc.call('pending') do Pending %span.badge - = number_with_delimiter(all_builds.pending.count(:id)) + = limited_counter_with_delimiter(all_builds.pending) %li{ class: active_when(scope == 'running') }> = link_to build_path_proc.call('running') do Running %span.badge - = number_with_delimiter(all_builds.running.count(:id)) + = limited_counter_with_delimiter(all_builds.running) %li{ class: active_when(scope == 'finished') }> = link_to build_path_proc.call('finished') do Finished %span.badge - = number_with_delimiter(all_builds.finished.count(:id)) + = limited_counter_with_delimiter(all_builds.finished) diff --git a/changelogs/unreleased/add-1000-plus-counters-for-jobs-page.yml b/changelogs/unreleased/add-1000-plus-counters-for-jobs-page.yml new file mode 100644 index 00000000000..5f5a61406da --- /dev/null +++ b/changelogs/unreleased/add-1000-plus-counters-for-jobs-page.yml @@ -0,0 +1,5 @@ +--- +title: Add 1000+ counters to job page +merge_request: +author: +type: fixed