5.12 (livrat): editare in modal a randurilor de preview, cont obligatoriu inainte de import, formular editare extras (_form_editare, _editare_preview_modal), plus suita de teste aferenta (preview edit/compact, mapare op, form editare, signup, admin panel). Design + planificare: - docs/design.md: sistem de design (tokeni, breakpoints, scara control, componente, a11y). - docs/prd/prd-5.12-* si prd-5.13-* (5.13 cu raport /autoplan: CEO+Design+Eng, audit trail). Curatare: sterse PNG-urile de test/mockup temporare din radacina. Nota: implementarea CSS 5.13 (responsive compact + sistem butoane) NU e inca facuta — planul revizuit cere refactorul testelor fragile din test_web_responsive.py INAINTE de CSS. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
53 lines
3.0 KiB
HTML
53 lines
3.0 KiB
HTML
{# Macro-uri partajate intre template-urile de import si mapari. #}
|
|
|
|
{# US-002 (PRD 5.11): autosend_toggle neutralizat — auto_send nu mai tine randuri (US-001).
|
|
Simbolul pastrat (apelat in _mapari.html, _preview_import.html, _trimitere_detaliu.html)
|
|
dar intoarce string gol. Coloanele DB raman (default 1, ne-citite pentru hold). #}
|
|
{% macro autosend_toggle(form_id='', checked=True, label='') -%}{%- endmacro %}
|
|
|
|
{# US-005 (PRD 5.12): macro `camp` partajat — extras din _trimitere_detaliu.html si
|
|
_preview_rand.html. Suporta tip='date' (calendar nativ, D#10/R3) si tip='text' (default).
|
|
|
|
Parametri:
|
|
nome — name="" al input-ului (si cheie in err_map/fix_map)
|
|
eticheta — text pentru label
|
|
valoare — valoarea curenta (pre-fill)
|
|
tip — type="" al input-ului: 'text' (default) sau 'date' (calendar nativ)
|
|
err_map — dict {field_name: mesaj_eroare}; default {}
|
|
fix_map — dict {field_name: hint_fix}; default {}
|
|
vin_context — string VIN pentru aria-label cu context (default '')
|
|
id_prefix — prefix pentru id="" al input-ului (default 'c'; preview poate folosi 'e-N')
|
|
#}
|
|
{% macro camp(nome, eticheta, valoare, tip='text', err_map={}, fix_map={}, vin_context='', id_prefix='c') %}
|
|
<div style="margin-bottom:10px;">
|
|
<label for="{{ id_prefix }}-{{ nome }}" class="muted" style="font-size:12px; display:block;">{{ eticheta }}</label>
|
|
{% if tip == 'date' %}
|
|
{# D#10/R3: degradare grijulie pentru valori ne-YYYY-MM-DD.
|
|
Daca valoarea nu e in formatul corect, inputul ramane gol + hint + hidden cu valoarea bruta
|
|
(ca sa nu se piarda tacut la submit). #}
|
|
{%- set _dp_ok = (valoare and valoare|length == 10 and valoare[4:5] == '-' and valoare[7:8] == '-') -%}
|
|
<input id="{{ id_prefix }}-{{ nome }}" type="date" name="{{ nome }}"
|
|
value="{{ valoare if _dp_ok else '' }}"
|
|
style="width:100%; {% if err_map.get(nome) %}border-color:var(--err);{% endif %}"
|
|
aria-label="{{ eticheta }}{% if vin_context %} (VIN: {{ vin_context }}){% endif %}"
|
|
{% if err_map.get(nome) %}aria-invalid="true"{% endif %}>
|
|
{% if not _dp_ok and valoare %}
|
|
<input type="hidden" name="data_prestatie_raw" value="{{ valoare }}">
|
|
<span class="camp-fix" style="font-size:12px;">Valoarea originala: {{ valoare }}</span>
|
|
{% endif %}
|
|
{% else %}
|
|
<input id="{{ id_prefix }}-{{ nome }}" type="{{ tip }}" name="{{ nome }}"
|
|
value="{{ valoare or '' }}"
|
|
style="width:100%; {% if err_map.get(nome) %}border-color:var(--err);{% endif %}"
|
|
{% if vin_context %}aria-label="{{ eticheta }} (VIN: {{ vin_context }})"{% endif %}
|
|
{% if err_map.get(nome) %}aria-invalid="true"{% endif %}>
|
|
{% endif %}
|
|
{% if err_map.get(nome) %}
|
|
<div class="s-error" style="font-size:12px; margin-top:2px;">{{ err_map.get(nome) }}</div>
|
|
{% endif %}
|
|
{% if fix_map.get(nome) %}
|
|
<span class="camp-fix" style="font-size:12px;">{{ fix_map.get(nome) }}</span>
|
|
{% endif %}
|
|
</div>
|
|
{% endmacro %}
|