12 changed files with 206 additions and 1 deletions
@ -0,0 +1,35 @@
|
||||
<article class="app-log-summary"> |
||||
<div class="govuk-grid-row"> |
||||
<div class="govuk-grid-column-two-thirds"> |
||||
<header class="app-log-summary__header"> |
||||
<h2 class="app-log-summary__title govuk-heading-m govuk-!-font-weight-regular" style="white-space: normal; word-break: break-all"> |
||||
<span class="govuk-!-margin-right-1"><%= bulk_upload.filename %></span> |
||||
<span class="app-metadata app-log-summary__details" style="white-space: nowrap;"><%= bulk_upload.year %>/<%= bulk_upload.year + 1 %></span> |
||||
</h2> |
||||
</header> |
||||
<div class="govuk-!-margin-bottom-2"> |
||||
<p class="govuk-hint govuk-!-font-size-16 govuk-!-margin-bottom-1">Uploaded by: <%= bulk_upload.user.name %> (<%= bulk_upload.user.email %>)</p> |
||||
<p class="govuk-hint govuk-!-font-size-16 govuk-!-margin-bottom-1">Uploading organisation: <%= bulk_upload.user.organisation.name %></p> |
||||
<p class="govuk-hint govuk-!-font-size-16 govuk-!-margin-bottom-1">Time of upload: <%= bulk_upload.created_at.to_formatted_s(:govuk_date_and_time) %></p> |
||||
</div> |
||||
<p class="govuk-body govuk-!-margin-bottom-3"> |
||||
<%= download_file_link %> |
||||
<%= view_error_report_link %> |
||||
<%= view_logs_link %> |
||||
</p> |
||||
</div> |
||||
<footer class="govuk-grid-column-one-third app-log-summary__footer"> |
||||
<p class="govuk-body govuk-!-margin-bottom-3"> |
||||
<%= upload_status %> |
||||
</p> |
||||
<div> |
||||
<%= counts( |
||||
[bulk_upload.total_logs_count, "total log"], |
||||
[setup_errors_count, "error on important questions", "errors on important questions"], |
||||
[critical_errors_count, "critical error"], |
||||
[potential_errors_count, "potential error"] |
||||
) %> |
||||
</div> |
||||
</footer> |
||||
</div> |
||||
</article> |
||||
@ -0,0 +1,29 @@
|
||||
class BulkUploadSummaryComponent < ViewComponent::Base |
||||
include BulkUploadHelper |
||||
|
||||
attr_reader :bulk_upload |
||||
|
||||
def initialize(bulk_upload:) |
||||
@bulk_upload = bulk_upload |
||||
@bulk_upload_errors = bulk_upload.bulk_upload_errors |
||||
super |
||||
end |
||||
|
||||
def upload_status |
||||
helpers.status_tag("in_progress") |
||||
end |
||||
|
||||
def setup_errors_count |
||||
@bulk_upload_errors.where(category: "setup").count |
||||
end |
||||
|
||||
def critical_errors_count |
||||
@bulk_upload_errors.where(category: [nil, ""]).count |
||||
end |
||||
|
||||
def potential_errors_count |
||||
@bulk_upload_errors.where(category: "soft_validations").count |
||||
end |
||||
|
||||
|
||||
end |
||||
@ -0,0 +1,49 @@
|
||||
module BulkUploadHelper |
||||
def bulk_upload_title(controller) |
||||
case controller.controller_name |
||||
when "lettings_logs" |
||||
"Lettings Bulk Uploads" |
||||
when "sales_logs" |
||||
"Sales Bulk Uploads" |
||||
else |
||||
"Bulk Uploads" |
||||
end |
||||
end |
||||
|
||||
def bulk_upload_details(bulk_upload) |
||||
content_tag(:span) do |
||||
concat("Uploaded by: #{bulk_upload.user.name} (#{bulk_upload.user.email})<br>".html_safe) |
||||
concat("Uploading organisation: #{bulk_upload.user.organisation.name}<br>".html_safe) |
||||
concat("Time of upload: #{bulk_upload.created_at.to_formatted_s(:govuk_date)}".html_safe) |
||||
end |
||||
end |
||||
|
||||
def formatted_count_text(count, singular_text, plural_text = nil) |
||||
return if count.nil? || count <= 0 |
||||
|
||||
text = count > 1 ? (plural_text || singular_text.pluralize(count)) : singular_text |
||||
content_tag(:p, class: "govuk-hint govuk-!-font-size-16 govuk-!-margin-bottom-1") do |
||||
concat(content_tag(:strong, count)) |
||||
concat(" #{text}") |
||||
end |
||||
end |
||||
|
||||
def counts(*counts_with_texts) |
||||
counts_with_texts.map { |count, singular_text, plural_text| |
||||
formatted_count_text(count, singular_text, plural_text) if count.present? |
||||
}.compact.join("").html_safe |
||||
end |
||||
|
||||
def download_file_link |
||||
link_to "Download file", "#", class: "govuk-link govuk-!-margin-right-2" |
||||
end |
||||
|
||||
def view_error_report_link |
||||
link_to "View error report", "#", class: "govuk-link" |
||||
end |
||||
|
||||
def view_logs_link |
||||
link_to "View logs", "#", class: "govuk-link" |
||||
end |
||||
|
||||
end |
||||
@ -0,0 +1,15 @@
|
||||
<h2 class="govuk-body"> |
||||
<div class="govuk-grid-row app-search__caption"> |
||||
<div class="govuk-grid-column-three-quarters"> |
||||
<%= render(SearchResultCaptionComponent.new(searched:, count: pagy.count, item_label:, total_count:, item: "files uploaded in the last 30 days", filters_count: applied_filters_count(@filter_type))) %> |
||||
</div> |
||||
<div class="govuk-grid-column-one-quarter govuk-!-text-align-right"> |
||||
<% if searched || applied_filters_count(@filter_type).positive? %> |
||||
<br> |
||||
<% end %> |
||||
</div> |
||||
</div> |
||||
</h2> |
||||
<% bulk_uploads.map do |bulk_upload| %> |
||||
<%= render BulkUploadSummaryComponent.new(bulk_upload:) %> |
||||
<% end %> |
||||
@ -0,0 +1,28 @@
|
||||
<% item_label = format_label(@pagy.count, "uploads") %> |
||||
<% title = format_title(@searched, "Lettings bulk uploads", current_user, item_label, @pagy.count, nil) %> |
||||
|
||||
<% content_for :title, title %> |
||||
|
||||
<h1 class="govuk-heading-l govuk-!-margin-bottom-8"> |
||||
<%= "#{log_type_for_controller(controller).capitalize} bulk uploads" %> |
||||
</h1> |
||||
|
||||
<div class="app-filter-layout" data-controller="filter-layout"> |
||||
<%= render partial: "bulk_upload_shared/upload_filters" %> |
||||
|
||||
<div class="app-filter-layout__content"> |
||||
<%= render SearchComponent.new(current_user:, search_label: "Search by file name, user's name or email, or organisation", value: @searched) %> |
||||
<%= govuk_section_break(visible: true, size: "m") %> |
||||
<%= render partial: "bulk_upload_shared/upload_list", |
||||
locals: { |
||||
bulk_uploads: @bulk_uploads, |
||||
title: "Bulk uploads", |
||||
pagy: @pagy, |
||||
searched: @searched, |
||||
item_label:, |
||||
total_count: @total_count, |
||||
filter_type: @filter_type, |
||||
} %> |
||||
<%== render partial: "pagy/nav", locals: { pagy: @pagy, item_name: "bulk uploads" } %> |
||||
</div> |
||||
</div> |
||||
Loading…
Reference in new issue