From ddf079047c75737c8fa448b19508a6934a5ffadb Mon Sep 17 00:00:00 2001 From: Arthur Campbell Date: Thu, 11 May 2023 10:44:29 +0100 Subject: [PATCH] add a button to the logs list to delete multiple logs style and position of button helpers for displaying the button conditionally depending on user role and what filters and search are active --- app/frontend/styles/application.scss | 3 ++- app/helpers/filters_helper.rb | 11 +++++++++++ app/helpers/log_list_helper.rb | 9 +++++++++ app/views/logs/_log_list.html.erb | 11 ++++++++++- 4 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 app/helpers/log_list_helper.rb diff --git a/app/frontend/styles/application.scss b/app/frontend/styles/application.scss index 03a6ab6f2..2bd4fc487 100644 --- a/app/frontend/styles/application.scss +++ b/app/frontend/styles/application.scss @@ -44,6 +44,7 @@ $govuk-breakpoints: ( @import "search"; @import "sub-navigation"; @import "errors"; +@import "log-list"; // App utilities .app-\!-colour-muted { @@ -52,7 +53,7 @@ $govuk-breakpoints: ( } .app-\!-colour-red { - color: govuk-colour("red"); + color: govuk-colour("red") !important; } .app-\!-font-tabular { diff --git a/app/helpers/filters_helper.rb b/app/helpers/filters_helper.rb index 51472b299..f27b9eb7e 100644 --- a/app/helpers/filters_helper.rb +++ b/app/helpers/filters_helper.rb @@ -11,6 +11,17 @@ module FiltersHelper selected_filters[filter].include?(value.to_s) end + def any_filter_selected? + return false unless session[:logs_filters] + + selected_filters = JSON.parse(session[:logs_filters]) + filter_selected?("user", "yours") || + selected_filters["organisation"]&.present? || + selected_filters["status"]&.compact_blank&.any? || + selected_filters["years"]&.compact_blank&.any? || + selected_filters["bulk_upload_id"]&.compact_blank&.any? + end + def status_filters { "not_started" => "Not started", diff --git a/app/helpers/log_list_helper.rb b/app/helpers/log_list_helper.rb new file mode 100644 index 000000000..e5d705066 --- /dev/null +++ b/app/helpers/log_list_helper.rb @@ -0,0 +1,9 @@ +module LogListHelper + def display_delete_logs? + if @current_user.data_provider? + filter_selected?("user", "yours") + else + any_filter_selected? || @searched.present? + end + end +end diff --git a/app/views/logs/_log_list.html.erb b/app/views/logs/_log_list.html.erb index e92186d4d..a6b97c3f4 100644 --- a/app/views/logs/_log_list.html.erb +++ b/app/views/logs/_log_list.html.erb @@ -1,11 +1,20 @@

+
+
<%= render(SearchResultCaptionComponent.new(searched:, count: pagy.count, item_label:, total_count:, item: "logs", path: request.path)) %> <% if logs&.any? %> <%= govuk_link_to "Download (CSV)", csv_download_url, type: "text/csv", class: "govuk-!-margin-right-4" %> <% if @current_user.support? %> - <%= govuk_link_to "Download (CSV, codes only)", csv_codes_only_download_url, type: "text/csv" %> + <%= govuk_link_to "Download (CSV, codes only)", csv_codes_only_download_url, type: "text/csv", class: "govuk-!-margin-right-4" %> <% end %> <% end %> +
+
+ <% if display_delete_logs? %> + <%= govuk_link_to "Delete logs", "#", class: "app-!-colour-red" %> + <% end %> +
+

<% logs.map do |log| %> <%= render(LogSummaryComponent.new(current_user:, log:)) %>