mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-02-10 13:23:40 -05:00
223 lines
7.3 KiB
HTML
223 lines
7.3 KiB
HTML
{% extends "withnav_template.html" %}
|
||
{% from "components/banner.html" import banner_wrapper %}
|
||
{% from "components/radios.html" import radio_select %}
|
||
{% from "components/table.html" import list_table, field, text_field, index_field, hidden_field_heading %}
|
||
{% from "components/file-upload.html" import file_upload %}
|
||
{% from "components/components/back-link/macro.njk" import usaBackLink %}
|
||
|
||
{% block service_page_title %}
|
||
Error
|
||
{% endblock %}
|
||
|
||
{% block backLink %}
|
||
<!--hide back link for one-off sends because the user never created a csv file-->
|
||
{% if recipients|length == 1 and not recipients.allowed_to_send_to and not recipients.missing_column_headers %}
|
||
<!--do nothing-->
|
||
{% else %}
|
||
{{ usaBackLink({ "href": back_link }) }}
|
||
{% endif %}
|
||
{% endblock %}
|
||
|
||
{% block maincolumn_content %}
|
||
|
||
<div class="">
|
||
{% call banner_wrapper(type='dangerous') %}
|
||
|
||
{% if recipients.too_many_rows %}
|
||
|
||
<div class="usa-alert usa-alert--error" role="alert">
|
||
<div class="usa-alert__body">
|
||
<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 class="usa-alert__text">
|
||
Notify can process up to
|
||
{{ "{:,}".format(recipients.max_rows) }} rows at once. Your
|
||
file has {{ "{:,}".format(recipients|length) }} rows.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
|
||
{% elif not count_of_recipients %}
|
||
|
||
<div class="usa-alert usa-alert--error" role="alert">
|
||
<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>
|
||
{% if recipients.missing_column_headers %}
|
||
<p class="usa-alert-text">
|
||
It needs at least one row of data, and {{ recipients.missing_column_headers | sort() | formatted_list(
|
||
prefix='a column called',
|
||
prefix_plural='columns called'
|
||
) }}.
|
||
</p>
|
||
{% else %}
|
||
<p class="usa-alert-text">
|
||
It needs at least one row of data.
|
||
</p>
|
||
{% endif %}
|
||
</div>
|
||
</div>
|
||
|
||
{% elif not recipients.has_recipient_columns %}
|
||
|
||
<div class="usa-alert usa-alert--error" role="alert">
|
||
<div class="usa-alert__body">
|
||
<h1 class="usa-alert__heading banner-title" data-module="track-error" data-error-type="Missing recipient columns"
|
||
data-error-label="{{ upload_id }}">There’s a problem with your column names</h1>
|
||
<p class="usa-alert-text">
|
||
Your file needs a column called ‘{{ first_recipient_column }}’.
|
||
</p>
|
||
<p class="usa-alert-text">
|
||
Right now it has {{ recipients.column_headers | formatted_list(
|
||
prefix='one column, called ',
|
||
prefix_plural='columns called '
|
||
) }}.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
|
||
{% elif recipients.duplicate_recipient_column_headers %}
|
||
|
||
<div class="usa-alert usa-alert--error" role="alert">
|
||
<div class="usa-alert__body">
|
||
<h1 class="usa-alert__heading banner-title" data-module="track-error" data-error-type="Duplicate recipient columns"
|
||
data-error-label="{{ upload_id }}">There’s a problem with your column names</h1>
|
||
<p class="usa-alert__text">
|
||
We found more than one column called {{ (
|
||
recipients.duplicate_recipient_column_headers
|
||
) | formatted_list(
|
||
conjunction='or',
|
||
prefix='',
|
||
prefix_plural=''
|
||
) }}.
|
||
</p>
|
||
<p class="usa-alert__text">
|
||
Delete or rename one of these columns and try again.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
|
||
{% elif recipients.missing_column_headers %}
|
||
|
||
<div class="usa-alert usa-alert--error" role="alert">
|
||
<div class="usa-alert__body">
|
||
<h1 class="usa-alert__heading banner-title" data-module="track-error" data-error-type="Missing placeholder columns"
|
||
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(
|
||
conjunction='and',
|
||
prefix='a column called ',
|
||
prefix_plural='columns called '
|
||
) }}.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
|
||
{% elif sent_previously %}
|
||
|
||
{% include "partials/check/sent-previously.html" %}
|
||
|
||
{% elif not recipients.allowed_to_send_to %}
|
||
|
||
{% with
|
||
count_of_recipients=count_of_recipients,
|
||
template_type_label=recipients.recipient_column_headers[0]
|
||
%}
|
||
{% include "partials/check/not-allowed-to-send-to.html" %}
|
||
{% endwith %}
|
||
|
||
{% elif recipients.more_rows_than_can_send %}
|
||
|
||
{% include "partials/check/too-many-messages.html" %}
|
||
|
||
{% endif %}
|
||
|
||
{% endcall %}
|
||
</div>
|
||
|
||
<!--hide the upload button and back to top link for one off sends-->
|
||
{% if recipients|length == 1 and not recipients.allowed_to_send_to and not recipients.missing_column_headers %}
|
||
<!-- do nothing -->
|
||
{% else %}
|
||
<div class="js-stick-at-top-when-scrolling">
|
||
<div class="form-group">
|
||
{% if not request.args.from_test %}
|
||
{{ file_upload(
|
||
form.file,
|
||
allowed_file_extensions=allowed_file_extensions,
|
||
action=url_for('.send_messages', service_id=current_service.id, template_id=template.id),
|
||
button_text='Upload your file again'
|
||
) }}
|
||
{% endif %}
|
||
</div>
|
||
<a href="#content" class="usa-link back-to-top-link">Back to top</a>
|
||
</div>
|
||
{% endif %}
|
||
|
||
{% if not request.args.from_test %}
|
||
|
||
{% 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>
|
||
|
||
<div class="fullscreen-content" data-module="fullscreen-table">
|
||
{% call(item, row_number) list_table(
|
||
recipients.displayed_rows,
|
||
caption=original_file_name,
|
||
caption_visible=False,
|
||
field_headings=[
|
||
'<span class="usa-sr-only">Row in file</span><span aria-hidden="true">1</span>'|safe
|
||
] + column_headers
|
||
) %}
|
||
{% call index_field() %}
|
||
<span>
|
||
{% set displayed_index = item.index + 2 %}
|
||
{{ displayed_index }}
|
||
</span>
|
||
{% endcall %}
|
||
{% for column in column_headers %}
|
||
{% if item[column].error and not recipients.missing_column_headers %}
|
||
{% call field() %}
|
||
<span>
|
||
<span class="table-field-error-label">{{ item[column].error }}</span>
|
||
{{ item[column].data if item[column].data != None }}
|
||
</span>
|
||
{% endcall %}
|
||
{% elif item[column].ignore %}
|
||
{{ text_field(item[column].data or '', status='default') }}
|
||
{% else %}
|
||
{{ text_field(item[column].data or '') }}
|
||
{% endif %}
|
||
{% endfor %}
|
||
{% if item[None].data %}
|
||
{% for column in item[None].data %}
|
||
{{ text_field(column, status='default') }}
|
||
{% endfor %}
|
||
{% endif %}
|
||
{% endcall %}
|
||
{% endif %}
|
||
</div>
|
||
|
||
{% if recipients.too_many_rows %}
|
||
<p class="table-show-more-link">
|
||
Only showing the first {{ count_of_displayed_recipients }} rows
|
||
</p>
|
||
{% elif count_of_displayed_recipients < count_of_recipients %} <p class="table-show-more-link">
|
||
{% if row_errors and not recipients.missing_column_headers %}
|
||
Only showing the first {{ count_of_displayed_recipients }} rows with errors
|
||
{% else %}
|
||
Only showing the first {{ count_of_displayed_recipients }} rows
|
||
{% endif %}
|
||
</p>
|
||
{% elif row_errors and not recipients.missing_column_headers %}
|
||
<p class="table-show-more-link">
|
||
Only showing rows with errors
|
||
</p>
|
||
{% endif %}
|
||
|
||
<h2 class="font-body-lg">Preview of {{ template.name }}</h2>
|
||
{{ template|string }}
|
||
|
||
{% endblock %}
|