{% from "components.html" import status_badge %} {% from "components/search_field.html" import search_field %} {% from "components/table_row.html" import table_row %} {% from "components/side_panel.html" import side_panel %} {% from "components/version_diff.html" import value %}

File: {{ state.filename }} {% if mode in ('new_version', 'mapping_update') and preview.counts.Added and not preview.counts.Changed and not preview.counts.Deleted and not preview.counts.Unchanged %} · First import: {{ preview.counts.Added }} {{ 'record' if preview.counts.Added == 1 else 'records' }} will be added to the draft. {% elif mode in ('new_version', 'mapping_update') and not preview.counts.Added and not preview.counts.Changed and not preview.counts.Deleted %} · No changes. The file matches the draft. {% elif mode in ('new_version', 'mapping_update') %} {% if preview.counts.Added or preview.counts.Deleted %} {% set summary_parts = [] %} {% if preview.counts.Added %}{% set _ = summary_parts.append(preview.counts.Added ~ ' added') %}{% endif %} {% if preview.counts.Changed %}{% set _ = summary_parts.append(preview.counts.Changed ~ ' changed') %}{% endif %} {% if preview.counts.Deleted %}{% set _ = summary_parts.append(preview.counts.Deleted ~ ' deleted') %}{% endif %} · {{ summary_parts|join(', ') }} {% endif %} · {{ preview.counts.Added + preview.counts.Changed + preview.counts.Deleted }} {{ 'record' if preview.counts.Added + preview.counts.Changed + preview.counts.Deleted == 1 else 'records' }} will change in the draft {% if preview.counts.Error %} · {{ status_badge('Error', preview.counts.Error) }}{% endif %} {% else %} · First import: {{ preview.counts.Added }} {{ 'record' if preview.counts.Added == 1 else 'records' }} will be added to the draft. {% endif %}

{% if unmapped_fields %}

Not in file: {% for field in unmapped_fields %}{{ field.name }}{{ ', ' if not loop.last else '.' }}{% endfor %} {% if preview.counts.Changed + preview.counts.Unchanged == 0 %}These fields stay empty.{% else %}Existing records keep their values; new records leave these fields empty.{% endif %}

{% endif %} {% set available_statuses = namespace(count=0) %} {% for status in DISPLAY_STATUSES if preview.counts[status] %}{% set available_statuses.count = available_statuses.count + 1 %}{% endfor %} {% set difference_total = preview.counts.Added + preview.counts.Changed + preview.counts.Deleted %} {% if mode in ('new_version', 'mapping_update') %} {% if difference_total > 10 or difference_search %}
{{ search_field('difference-search', 'Search identifier', 'Search identifiers', name='q', value=difference_search, maxlength=MAX_SEARCH) }} {% if available_statuses.count > 1 %}{% endif %}
{% endif %} {% set page_count = ((preview.counts.matching + 49) // 50) %}
{% for item in preview.differences %}{% set panel_id = 'import-record-' ~ loop.index %} {% call table_row(kind='import-difference-row', panel=true) %} {% endcall %} {% else %}{% endfor %}
Changes in this import
IdentifierStatusChanged fields
{{ status_badge(item.status) }} {% if item.status == ChangeStatus.CHANGED %}{% for name, old, new in item.changes %}{{ name }}{% if not loop.last %}, {% endif %}{% endfor %}{% else %}—{% endif %}
No matching changes.
{% for item in preview.differences %} {% set panel_id = 'import-record-' ~ loop.index %} {% set title_id = panel_id ~ '-title' %} {% call side_panel(panel_id, item.identifier, title_id, eyebrow='Import preview', title_suffix=status_badge(item.status)) %}
{% if item.status == ChangeStatus.CHANGED %}
{% for name, old, new in item.changes %}
{{ name }}
Current{{ value(old) }}
New{{ value(new) }}
{% endfor %}
{% set changed_keys = item.changes|map(attribute=0)|list %} {% set unchanged = item.current_values|rejectattr('0', 'in', changed_keys)|list %} {% if unchanged %}
{{ unchanged|length }} unchanged field{{ '' if unchanged|length == 1 else 's' }}
{% for name, current in unchanged %}
{{ name }}
{{ value(current) }}
{% endfor %}
{% endif %} {% else %}

{% if item.status == ChangeStatus.ADDED %}This record will be added.{% else %}This record will be marked as deleted.{% endif %}

{% for name, old, new in item.changes %}
{{ name }}
{{ value(new if item.status == ChangeStatus.ADDED else old) }}
{% endfor %}
{% endif %}
{% endcall %} {% endfor %} {% if page_count > 1 %}{% endif %} {% else %} {% if difference_total > 10 or difference_search %}
{{ search_field('difference-search', 'Search identifier', 'Search identifiers', name='q', value=difference_search, maxlength=MAX_SEARCH) }}
{% endif %} {% set page_count = ((preview.counts.matching + 49) // 50) %}
{% for row in preview_rows %}{% set id_values = [] %}{% for field in preview_fields if field.key in identifier_keys %}{% set cell_value = row[preview_fields.index(field)] %}{% if id_values.append(cell_value) %}{% endif %}{% endfor %}{% set panel_id = 'import-new-record-' ~ loop.index %} {% call table_row(kind='import-difference-row', panel=true) %}{% endcall %} {% else %}{% endfor %}
Changes in this import
IdentifierStatus
{{ status_badge('Added') }}
No matching changes.
{% for row in preview_rows %}{% set id_values = [] %}{% for field in preview_fields if field.key in identifier_keys %}{% set cell_value = row[preview_fields.index(field)] %}{% if id_values.append(cell_value) %}{% endif %}{% endfor %}{% set panel_id = 'import-new-record-' ~ loop.index %}{% set title_id = panel_id ~ '-title' %} {% call side_panel(panel_id, id_values|join(' · '), title_id, eyebrow='Import preview', title_suffix=status_badge('Added')) %}

This record will be added.

{% for field in preview_fields %}
{{ field.name }}
{{ value(row[loop.index0] if row[loop.index0]|trim else none) }}
{% endfor %}
{% endcall %} {% endfor %} {% if page_count > 1 %}{% endif %} {% endif %}