Merge pull request #849 from GSA/814-error-message-CSV

814 error message csv
This commit is contained in:
Carlo Costino
2023-10-06 12:17:07 -04:00
committed by GitHub
9 changed files with 238 additions and 211 deletions

View File

@@ -12,6 +12,5 @@
hideBanner: () => $('.banner-dangerous').addClass('display-none'), hideBanner: () => $('.banner-dangerous').addClass('display-none'),
showBanner: () => $('.banner-dangerous') showBanner: () => $('.banner-dangerous')
.removeClass('display-none') .removeClass('display-none')
.trigger('focus'),
}; };
})(window); })(window);

View File

@@ -15,8 +15,8 @@
// The label gets styled like a button and is used to hide the native file upload control. This is so that // The label gets styled like a button and is used to hide the native file upload control. This is so that
// users see a button that looks like the others on the site. // users see a button that looks like the others on the site.
//
this.$form.find('label.file-upload-button').addClass('usa-button margin-bottom-1'); this.$form.find('label.file-upload-button').addClass('usa-button margin-bottom-1').attr( {role: 'button', tabindex: '0'} );
// Clear the form if the user navigates back to the page // Clear the form if the user navigates back to the page
$(window).on("pageshow", () => this.$form[0].reset()); $(window).on("pageshow", () => this.$form[0].reset());

View File

@@ -16,8 +16,6 @@ $(() => GOVUK.modules.start());
$(() => $('.error-message, .usa-error-message').eq(0).parent('label').next('input').trigger('focus')); $(() => $('.error-message, .usa-error-message').eq(0).parent('label').next('input').trigger('focus'));
$(() => $('.banner-dangerous').eq(0).trigger('focus'));
$(() => $('.govuk-header__container').on('click', function() { $(() => $('.govuk-header__container').on('click', function() {
$(this).css('border-color', '#005ea5'); $(this).css('border-color', '#005ea5');
})); }));

View File

@@ -11,7 +11,7 @@
<div class="usa-alert__body"> <div class="usa-alert__body">
<h{{params.header_level}} class="usa-alert__heading">{{params.heading}}</h{{params.header_level}}> <h{{params.header_level}} class="usa-alert__heading">{{params.heading}}</h{{params.header_level}}>
<p class="usa-alert__text"> <p class="usa-alert__text">
{{params.text}} {{params.text | safe }}
</p> </p>
</div> </div>
</div> </div>

View File

@@ -1,7 +1,9 @@
<h1 class='banner-title'> <div class="usa-alert usa-alert--error" role="alert">
Message too long <div class="usa-alert__body">
</h1> <h1 class="usa-alert__heading">Message too long</h1>
<p class="usa-body"> <p class="usa-alert__text">
Text messages cannot be longer than {{ SMS_CHAR_COUNT_LIMIT }} characters. Text messages cannot be longer than {{ SMS_CHAR_COUNT_LIMIT }} characters.
Your message is {{ template.content_count }} characters. Your message is {{ template.content_count }} characters.
</p> </p>
</div>
</div>

View File

@@ -1,12 +1,16 @@
<h1 class='banner-title' data-module="track-error" data-error-type="Trial mode: bad recipients" data-error-label="{{ upload_id }}"> <div class="usa-alert usa-alert--error" role="alert">
<div class="usa-alert__body">
<h1 class="usa-alert__heading">
You cannot send to You cannot send to
{{ 'this' if count_of_recipients == 1 else 'these' }} {{ 'this' if count_of_recipients == 1 else 'these' }}
{{ template_type_label }} {{ template_type_label }}
{%- if count_of_recipients != 1 -%} {%- if count_of_recipients != 1 -%}
{{ 'es' if 'email address' == template_type_label else 's' }} {{ 'es' if 'email address' == template_type_label else 's' }}
{%- endif %} {%- endif %}
</h1> </h1>
<p class="usa-body"> <p class="usa-alert__text">
In <a class="usa-link" href="{{ url_for('.trial_mode_new') }}">trial mode</a> you can only In <a class="usa-link" href="{{ url_for('.trial_mode_new') }}">trial mode</a> you can only
send to yourself and members of your team send to yourself and members of your team
</p> </p>
</div>
</div>

View File

@@ -1,6 +1,8 @@
<h1 class='banner-title' data-module="track-error" data-error-type="File previously sent" data-error-label="{{ upload_id }}"> <div class="usa-alert usa-alert--error" role="alert">
These messages have already been sent today <div class="usa-alert__body">
</h1> <h1 class="usa-alert__heading">These messages have already been sent today</h1>
<p class="usa-body"> <p class="usa-alert__text">
If you need to resend them, rename the file and upload it again. If you need to resend them, rename the file and upload it again.
</p> </p>
</div>
</div>

View File

@@ -1,23 +1,30 @@
<h1 class='banner-title' data-module="track-error" data-error-type="Trial mode: too many recipients" data-error-label="{{ upload_id }}"> <div class="usa-alert usa-alert--error" role="alert">
<div class="usa-alert__body">
<h1 class="usa-alert__heading">
{% if original_file_name %} {% if original_file_name %}
Too many recipients Too many recipients
{% else %} {% else %}
Daily limit reached Daily limit reached
{% endif %} {% endif %}
</h1> </h1>
<p class="usa-body"> <p class="usa-alert__text">
You can only send {{ current_service.message_limit|format_thousands }} messages per day You can only send {{ current_service.message_limit|format_thousands }} messages per day
{%- if current_service.trial_mode %} {%- if current_service.trial_mode %}
in <a class="usa-link" href="{{ url_for('.trial_mode_new')}}">trial mode</a> in <a class="usa-link" href="{{ url_for('.trial_mode_new')}}">trial mode</a>
{%- endif -%} {%- endif -%}
. .
</p> </p>
{% if original_file_name %} {% if original_file_name %}
<p class="usa-body"> <p class="usa-alert__text">
{% if current_service.message_limit != remaining_messages %} {% if current_service.message_limit != remaining_messages %}
You can still send {{ remaining_messages|format_thousands }} messages today, but You can still send {{ remaining_messages|format_thousands }} messages today, but
{% endif %} {% endif %}
{{ original_file_name }} contains {{ original_file_name }} contains
{{ count_of_recipients|recipient_count(template.template_type) }}. {{ count_of_recipients|recipient_count(template.template_type) }}.
</p> </p>
{% endif %} {% endif %}
</div>
</div>

View File

@@ -6,68 +6,78 @@
{% from "components/components/back-link/macro.njk" import usaBackLink %} {% from "components/components/back-link/macro.njk" import usaBackLink %}
{% block service_page_title %} {% block service_page_title %}
Error Error
{% endblock %} {% endblock %}
{% block backLink %} {% block backLink %}
{{ usaBackLink({ "href": back_link }) }} {{ usaBackLink({ "href": back_link }) }}
{% endblock %} {% endblock %}
{% block maincolumn_content %} {% block maincolumn_content %}
<div class=""> <div class="">
{% call banner_wrapper(type='dangerous') %} {% call banner_wrapper(type='dangerous') %}
{% if recipients.too_many_rows %} {% if recipients.too_many_rows %}
<h1 class='banner-title' data-module="track-error" data-error-type="Too many rows" data-error-label="{{ upload_id }}"> <div class="usa-alert usa-alert--error" role="alert">
Your file has too many rows <div class="usa-alert__body">
</h1> <h1 class="usa-alert__heading banner-title" data-module="track-error" data-error-type="Too many rows" data-error-label="{{ upload_id }}">Your file has too many rows</h1>
<p> <p class="usa-alert__text">
Notify can process up to Notify can process up to
{{ "{:,}".format(recipients.max_rows) }} rows at once. Your {{ "{:,}".format(recipients.max_rows) }} rows at once. Your
file has {{ "{:,}".format(recipients|length) }} rows. file has {{ "{:,}".format(recipients|length) }} rows.
</p> </p>
</div>
</div>
{% elif not count_of_recipients %} {% elif not count_of_recipients %}
<h1 class='banner-title' data-module="track-error" data-error-type="No rows" data-error-label="{{ upload_id }}"> <div class="usa-alert usa-alert--error" role="alert">
Your file is missing some rows <div class="usa-alert__body">
<h1 class="usa-alert__heading banner-title" data-module="track-error" data-error-type="No rows"
data-error-label="{{ upload_id }}">Your file is missing some rows
</h1> </h1>
{% if recipients.missing_column_headers %} {% if recipients.missing_column_headers %}
<p> <p class="usa-alert-text">
It needs at least one row of data, and {{ recipients.missing_column_headers | sort() | formatted_list( It needs at least one row of data, and {{ recipients.missing_column_headers | sort() | formatted_list(
prefix='a column called', prefix='a column called',
prefix_plural='columns called' prefix_plural='columns called'
) }}. ) }}.
</p> </p>
{% else %} {% else %}
<p> <p class="usa-alert-text">
It needs at least one row of data. It needs at least one row of data.
</p> </p>
{% endif %} {% endif %}
</div>
</div>
{% elif not recipients.has_recipient_columns %} {% elif not recipients.has_recipient_columns %}
<h1 class='banner-title' data-module="track-error" data-error-type="Missing recipient columns" data-error-label="{{ upload_id }}"> <div class="usa-alert usa-alert--error" role="alert">
Theres a problem with your column names <div class="usa-alert__body">
</h1> <h1 class="usa-alert__heading banner-title" data-module="track-error" data-error-type="Missing recipient columns"
<p> data-error-label="{{ upload_id }}">Theres a problem with your column names</h1>
<p class="usa-alert-text">
Your file needs a column called {{ first_recipient_column }}. Your file needs a column called {{ first_recipient_column }}.
</p> </p>
<p> <p class="usa-alert-text">
Right now it has {{ recipients.column_headers | formatted_list( Right now it has {{ recipients.column_headers | formatted_list(
prefix='one column, called ', prefix='one column, called ',
prefix_plural='columns called ' prefix_plural='columns called '
) }}. ) }}.
</p> </p>
</div>
</div>
{% elif recipients.duplicate_recipient_column_headers %} {% elif recipients.duplicate_recipient_column_headers %}
<h1 class='banner-title' data-module="track-error" data-error-type="Duplicate recipient columns" data-error-label="{{ upload_id }}"> <div class="usa-alert usa-alert--error" role="alert">
Theres a problem with your column names <div class="usa-alert__body">
</h1> <h1 class="usa-alert__heading banner-title" data-module="track-error" data-error-type="Duplicate recipient columns"
<p> data-error-label="{{ upload_id }}">Theres a problem with your column names</h1>
<p class="usa-alert__text">
We found more than one column called {{ ( We found more than one column called {{ (
recipients.duplicate_recipient_column_headers recipients.duplicate_recipient_column_headers
) | formatted_list( ) | formatted_list(
@@ -76,22 +86,27 @@
prefix_plural='' prefix_plural=''
) }}. ) }}.
</p> </p>
<p> <p class="usa-alert__text">
Delete or rename one of these columns and try again. Delete or rename one of these columns and try again.
</p> </p>
</div>
</div>
{% elif recipients.missing_column_headers %} {% elif recipients.missing_column_headers %}
<h1 class='banner-title' data-module="track-error" data-error-type="Missing placeholder columns" data-error-label="{{ upload_id }}"> <div class="usa-alert usa-alert--error" role="alert">
Your column names need to match the double brackets in your template <div class="usa-alert__body">
</h1> <h1 class="usa-alert__heading banner-title" data-module="track-error" data-error-type="Missing placeholder columns"
<p> data-error-label="{{ upload_id }}">Your column names need to match the double brackets in your template</h1>
<p class="usa-alert__text">
Your file is missing {{ recipients.missing_column_headers | formatted_list( Your file is missing {{ recipients.missing_column_headers | formatted_list(
conjunction='and', conjunction='and',
prefix='a column called ', prefix='a column called ',
prefix_plural='columns called ' prefix_plural='columns called '
) }}. ) }}.
</p> </p>
</div>
</div>
{% elif sent_previously %} {% elif sent_previously %}
@@ -113,10 +128,10 @@
{% endif %} {% endif %}
{% endcall %} {% endcall %}
</div> </div>
<div class="js-stick-at-top-when-scrolling"> <div class="js-stick-at-top-when-scrolling">
<div class="form-group"> <div class="form-group">
{% if not request.args.from_test %} {% if not request.args.from_test %}
{{ file_upload( {{ file_upload(
@@ -128,15 +143,16 @@
{% endif %} {% endif %}
</div> </div>
<a href="#content" class="usa-link back-to-top-link">Back to top</a> <a href="#content" class="usa-link back-to-top-link">Back to top</a>
</div> </div>
{% if not request.args.from_test %} {% if not request.args.from_test %}
{% set column_headers = recipients._raw_column_headers if recipients.duplicate_recipient_column_headers else recipients.column_headers %} {% set column_headers = recipients._raw_column_headers if recipients.duplicate_recipient_column_headers else
recipients.column_headers %}
<h2 class="font-body-lg" id="file-preview">{{ original_file_name }}</h2> <h2 class="font-body-lg" id="file-preview">{{ original_file_name }}</h2>
<div class="fullscreen-content" data-module="fullscreen-table"> <div class="fullscreen-content" data-module="fullscreen-table">
{% call(item, row_number) list_table( {% call(item, row_number) list_table(
recipients.displayed_rows, recipients.displayed_rows,
caption=original_file_name, caption=original_file_name,
@@ -172,14 +188,13 @@
{% endif %} {% endif %}
{% endcall %} {% endcall %}
{% endif %} {% endif %}
</div> </div>
{% if recipients.too_many_rows %} {% if recipients.too_many_rows %}
<p class="table-show-more-link"> <p class="table-show-more-link">
Only showing the first {{ count_of_displayed_recipients }} rows Only showing the first {{ count_of_displayed_recipients }} rows
</p> </p>
{% elif count_of_displayed_recipients < count_of_recipients %} {% elif count_of_displayed_recipients < count_of_recipients %} <p class="table-show-more-link">
<p class="table-show-more-link">
{% if row_errors and not recipients.missing_column_headers %} {% if row_errors and not recipients.missing_column_headers %}
Only showing the first {{ count_of_displayed_recipients }} rows with errors Only showing the first {{ count_of_displayed_recipients }} rows with errors
{% else %} {% else %}
@@ -195,4 +210,4 @@
<h2 class="font-body-lg">Preview of {{ template.name }}</h2> <h2 class="font-body-lg">Preview of {{ template.name }}</h2>
{{ template|string }} {{ template|string }}
{% endblock %} {% endblock %}