2015-12-14 16:53:07 +00:00
{% extends "withnav_template.html" %}
2016-03-07 18:47:05 +00:00
{% from "components/banner.html" import banner_wrapper %}
2016-08-07 09:17:49 +01:00
{% from "components/radios.html" import radio_select %}
2016-04-05 11:16:29 +01:00
{% from "components/table.html" import list_table, field, text_field, index_field, hidden_field_heading %}
2016-02-17 14:20:55 +00:00
{% from "components/file-upload.html" import file_upload %}
2016-01-07 20:11:22 +00:00
{% from "components/page-footer.html" import page_footer %}
2016-06-03 14:48:21 +01:00
{% from "components/message-count-label.html" import message_count_label %}
2016-06-03 13:52:15 +01:00
2017-02-13 15:20:56 +00:00
{% set file_contents_header_id = 'file-preview' %}
{% macro skip_to_file_contents() %}
< p class = "visually-hidden" >
< a href = "#{{ file_contents_header_id }}" > Skip to file contents< / a >
< / p >
{% endmacro %}
2017-02-13 10:45:15 +00:00
{% block service_page_title %}
{{ "Error" if errors else "Preview" }}
2015-11-30 14:20:17 +00:00
{% endblock %}
2015-12-14 16:53:07 +00:00
{% block maincolumn_content %}
2016-10-17 10:20:14 +01:00
{% if recipients.too_many_rows %}
2016-10-14 10:44:28 +01:00
< div class = "bottom-gutter" >
{% call banner_wrapper(type='dangerous') %}
< h1 class = 'banner-title' >
Your file has too many rows
< / h1 >
< p >
Notify can process up to
{{ "{:,}".format(recipients.max_rows) }} rows at once. Your
file has {{ "{:,}".format(recipients|length) }} rows.
< / p >
2017-02-13 15:20:56 +00:00
{{ skip_to_file_contents() }}
2016-10-14 10:44:28 +01:00
{% endcall %}
< / div >
2017-02-27 14:46:01 +00:00
{% elif not count_of_recipients %}
< div class = "bottom-gutter" >
{% call banner_wrapper(type='dangerous') %}
< h1 class = 'banner-title' >
Your file is missing some rows
< / h1 >
< p >
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 >
{{ skip_to_file_contents() }}
{% endcall %}
< / div >
2016-11-10 13:39:05 +00:00
{% elif not recipients.has_recipient_columns %}
2016-06-03 13:52:15 +01:00
2016-04-22 09:36:42 +01:00
< div class = "bottom-gutter" >
{% call banner_wrapper(type='dangerous') %}
< h1 class = 'banner-title' >
2017-05-11 11:11:59 +01:00
Your file needs {{ recipients.recipient_column_headers | formatted_list(
2017-02-16 11:07:26 +00:00
prefix='a column called',
prefix_plural='columns called'
) }}
2016-05-17 09:23:33 +01:00
< / h1 >
< p >
2017-05-11 11:33:25 +01:00
Right now it has {{ recipients.column_headers | formatted_list(
2017-02-13 15:04:12 +00:00
prefix='one column, called ',
prefix_plural='columns called '
2016-06-03 13:52:15 +01:00
) }}.
2016-04-22 09:36:42 +01:00
< / p >
2017-02-13 15:20:56 +00:00
{{ skip_to_file_contents() }}
2016-04-22 09:36:42 +01:00
{% endcall %}
< / div >
2016-06-03 13:52:15 +01:00
{% elif recipients.missing_column_headers %}
< div class = "bottom-gutter" >
{% call banner_wrapper(type='dangerous') %}
< h1 class = 'banner-title' >
The columns in your file need to match the double brackets in
your template
< / h1 >
< p >
2017-05-11 11:22:43 +01:00
Your file is missing {{ recipients.missing_column_headers | formatted_list(
conjunction='and',
2017-02-13 15:04:12 +00:00
prefix='a column called ',
prefix_plural='columns called '
2016-06-03 14:30:17 +01:00
) }}.
2016-06-03 13:52:15 +01:00
< / p >
2017-02-13 15:20:56 +00:00
{{ skip_to_file_contents() }}
2016-06-03 13:52:15 +01:00
{% endcall %}
< / div >
{% elif row_errors %}
2016-03-07 18:47:05 +00:00
< div class = "bottom-gutter" >
{% call banner_wrapper(type='dangerous') %}
2016-06-03 13:52:15 +01:00
{% if row_errors|length == 1 %}
2016-03-07 18:47:05 +00:00
< h1 class = 'banner-title' >
2016-06-03 13:52:15 +01:00
There is a problem with your data
2016-03-07 18:47:05 +00:00
< / h1 >
< p >
2016-06-03 13:52:15 +01:00
You need to {{ row_errors[0] }}
2016-03-07 18:47:05 +00:00
< / p >
{% else %}
< h1 class = 'banner-title' >
2016-06-03 13:52:15 +01:00
There are some problems with your data
2016-03-07 18:47:05 +00:00
< / h1 >
< p >
You need to:
< / p >
< ul class = "list-bullet" >
2016-06-03 13:52:15 +01:00
{% for error in row_errors %}
2016-03-07 18:47:05 +00:00
< li > {{ error }}< / li >
{% endfor %}
< / ul >
{% endif %}
2017-02-13 15:20:56 +00:00
{{ skip_to_file_contents() }}
2016-03-07 18:47:05 +00:00
{% endcall %}
< / div >
2016-06-03 13:52:15 +01:00
{% elif not recipients.allowed_to_send_to %}
< div class = "bottom-gutter" >
{% call banner_wrapper(type='dangerous') %}
< h1 class = 'banner-title' >
You can’ t send to
{{ 'this' if count_of_recipients == 1 else 'these' }}
2017-01-23 17:05:41 +00:00
{{ recipients.recipient_column_headers[0] }}
2016-06-03 13:52:15 +01:00
{%- if count_of_recipients != 1 -%}
2017-01-23 17:05:41 +00:00
{{ 'es' if 'email address' == recipients.recipient_column_headers[0] else 's' }}
2016-06-03 13:52:15 +01:00
{%- endif %}
< / h1 >
< p >
In < a href = "{{ url_for('.trial_mode') }}" > trial mode< / a > you can only
send to yourself and members of your team
< / p >
2017-02-13 15:20:56 +00:00
{{ skip_to_file_contents() }}
2016-06-03 13:52:15 +01:00
{% endcall %}
< / div >
2016-07-25 14:16:34 +01:00
{% elif recipients.more_rows_than_can_send %}
2016-07-25 14:29:01 +01:00
{% include "partials/check/too-many-messages.html" %}
2016-03-07 18:47:05 +00:00
{% else %}
2016-06-03 13:52:15 +01:00
2016-03-07 18:47:05 +00:00
< h1 class = "heading-large" >
2017-02-10 10:23:08 +00:00
Preview of {{ template.name }}
2016-03-07 18:47:05 +00:00
< / h1 >
2017-02-13 15:20:56 +00:00
{{ skip_to_file_contents() }}
2016-06-03 13:52:15 +01:00
2016-02-17 15:49:07 +00:00
{% endif %}
2015-11-30 14:20:17 +00:00
2017-05-19 08:16:41 +01:00
{% if not errors %}
{{ template|string }}
{% endif %}
2016-01-11 15:00:51 +00:00
2017-02-13 15:20:56 +00:00
< div class = "bottom-gutter-3-2" >
2016-07-25 14:16:34 +01:00
{% if errors %}
2016-05-05 08:39:36 +01:00
{% if request.args.from_test %}
< a href = "{{ back_link }}" class = "page-footer-back-link" > Back< / a >
{% else %}
{{file_upload(form.file, button_text='Re-upload your file')}}
{% endif %}
2016-03-07 18:47:05 +00:00
{% else %}
2016-05-05 08:39:36 +01:00
< form method = "post" enctype = "multipart/form-data" action = "{{url_for('main.start_job', service_id=current_service.id, upload_id=upload_id)}}" class = 'page-footer' >
2016-02-17 15:49:07 +00:00
< input type = "hidden" name = "csrf_token" value = "{{ csrf_token() }}" / >
2016-07-05 11:39:07 +01:00
< input type = "hidden" name = "help" value = "{{ '3' if help else 0 }}" / >
2017-04-26 10:49:51 +01:00
{% if choose_time_form and template.template_type != 'letter' %}
2016-08-30 09:27:24 +01:00
{{ radio_select(
choose_time_form.scheduled_for,
wrapping_class='bottom-gutter-2-3'
) }}
{% endif %}
2017-03-10 17:57:48 +00:00
{% if template.template_type != 'letter' or not request.args.from_test %}
2016-06-03 14:48:21 +01:00
< input type = "submit" class = "button" value = "Send {{ count_of_recipients }} {{ message_count_label(count_of_recipients, template.template_type, suffix='') }}" / >
2017-03-10 17:57:48 +00:00
{% else %}
2017-05-11 12:57:25 +01:00
< a href = "{{ url_for('main.check_messages_preview', service_id=current_service.id, template_type=template.template_type, upload_id=upload_id, filetype='pdf') }}" download = "download" class = "button" > Download as a printable PDF< / a >
2017-03-10 17:57:48 +00:00
{% endif %}
2016-05-05 08:39:36 +01:00
< a href = "{{ back_link }}" class = "page-footer-back-link" > Back< / a >
2016-02-17 15:49:07 +00:00
< / form >
{% endif %}
2017-02-13 15:20:56 +00:00
< / div >
2017-05-11 10:55:44 +01:00
{% if not request.args.from_test %}
< h2 class = "heading-medium" id = "{{ file_contents_header_id }}" > {{ original_file_name }}< / h2 >
{% call(item, row_number) list_table(
recipients.initial_annotated_rows_with_errors if row_errors and not recipients.missing_column_headers else recipients.initial_annotated_rows,
caption=original_file_name,
caption_visible=False,
field_headings=[
2017-05-23 14:28:28 +01:00
'< span class = "visually-hidden" > Row in file< / span > < span aria-hidden = "true" class = "{}" > 1< / span > '.format("table-field-invisible-error" if errors else "")|safe
2017-05-11 10:55:44 +01:00
] + recipients.column_headers
) %}
2017-05-23 14:21:59 +01:00
{% call index_field() %}
< span class = "{% if item.index in recipients.rows_with_errors %}table-field-error{% endif %}" >
{{ item.index + 2 }}
< / span >
{% endcall %}
2017-05-11 10:55:44 +01:00
{% for column in recipients.column_headers %}
{% if item['columns'][column].error and not recipients.missing_column_headers %}
{% call field() %}
2017-05-23 14:21:59 +01:00
< span >
2017-05-11 10:55:44 +01:00
< span class = "table-field-error-label" > {{ item['columns'][column].error }}< / span >
{{ item['columns'][column].data if item['columns'][column].data != None }}
< / span >
{% endcall %}
{% elif item['columns'][column].ignore %}
{{ text_field(item['columns'][column].data or '', status='default') }}
{% else %}
{{ text_field(item['columns'][column].data or '') }}
{% endif %}
2016-05-16 15:31:35 +01:00
{% endfor %}
2017-05-11 10:55:44 +01:00
{% if item['columns'].get(None) %}
{% for column in item['columns'][None].data %}
{{ text_field(column, status='default') }}
{% endfor %}
{% endif %}
{% endcall %}
{% endif %}
2015-12-11 17:25:04 +00:00
2016-10-17 10:20:14 +01:00
{% if recipients.too_many_rows %}
< p class = "table-show-more-link" >
Can’ t show the contents of this file
< / p >
{% elif count_of_displayed_recipients < count_of_recipients % }
2016-03-07 18:47:05 +00:00
< p class = "table-show-more-link" >
2016-06-03 14:38:10 +01:00
{% if row_errors and not recipients.missing_column_headers %}
2016-04-07 14:30:28 +01:00
Only showing the first {{ count_of_displayed_recipients }} rows with errors
{% else %}
Only showing the first {{ count_of_displayed_recipients }} rows
{% endif %}
< / p >
2016-06-03 14:38:10 +01:00
{% elif row_errors and not recipients.missing_column_headers %}
2016-04-07 14:30:28 +01:00
< p class = "table-show-more-link" >
Only showing rows with errors
2016-03-07 18:47:05 +00:00
< / p >
{% endif %}
2017-05-19 08:16:41 +01:00
{% if errors %}
< h2 class = "heading-medium" > Preview of {{ template.name }}< / h2 >
{{ template|string }}
{% endif %}
2015-11-30 14:20:17 +00:00
{% endblock %}