{# The preparation, one step at a time — crate::pages::import_export::import::ui::ImportStep. Every button that moves between steps swaps this whole block, so each step re-states the answers the next one needs as hidden fields. The page keeps no server-side draft: what the form carries is the entire state of the preparation. #}
{{ nav.tr("import-mapping-hint") }}
{{ nav.tr_args("import-mapping-rows", [("rows", step.source_rows.to_string())]) }}
| {{ nav.tr("import-th-destination") }} | {{ nav.tr("import-th-required") }} | {{ nav.tr("import-th-source") }} | {{ nav.tr("import-th-example") }} |
|---|---|---|---|
{{ row.name }} |
{% if row.required %}{{ nav.tr("common-yes") }}{% else %}{{ nav.tr("common-no") }}{% endif %} | {# The destination travels as its stable identity, so a rename between here and Import moves the mapping with the column instead of leaving it pointing at a name. #} | {{ row.example }} |
{{ nav.tr_args("import-summary-missing-required", [("columns", step.missing_required.join(", "))]) }}
{% endif %}| {{ column }} | {% endfor %}
|---|
| {{ value }} | {% endfor %}
{{ nav.tr_args("import-preview-more-rows", [("rows", step.hidden_rows.to_string())]) }}
{% endif %}{{ nav.tr("import-prepared-csv-hint") }}
{{ step.csv }}