- base.html: #modal-detaliu (role=dialog, aria-modal) + #detaliu-modal-body swap target; focus-trap, inert+aria-hidden pe <main>, Esc/backdrop/x inchid, listener trimiteriChanged (R5/R7) - _coada.html: ancora modal in afara #submissions-wrap; sters #trimitere-detaliu inert vechi - _submissions.html: randul declanseaza modalul; sters tr.detaliu-rand sibling (R3) - _trimitere_detaliu.html: script rescris pentru modal, fara marcheazaDetaliuDeschis/scrollIntoView (R4) - teste: test_web_modal.py nou (3); test_web_detaliu_inline.py sters; test_acasa_trimiteri.py curatat (R3) - gates: pytest PASS (suita completa 819). Browser E2E + design-review deferate la VERIFY. Salvat manual: iteratiile Ralph 2-12 au ramas fara turns (30) inainte de commit. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
75 lines
4.2 KiB
HTML
75 lines
4.2 KiB
HTML
{#
|
|
_coada.html — repurposat in 3.6 (US-003).
|
|
Nu mai e un tab/panou separat: e sectiunea "Trimiterile tale" inclusa pe Acasa,
|
|
sub zona de upload. Pastreaza filtrele (US-009) si tabelul (_submissions.html); detaliul
|
|
se deschide acum in modalul global (#modal-detaliu). Poll aliniat la 15s (anti dublu-poll, M5).
|
|
#}
|
|
<section id="trimiteri-section" aria-labelledby="trimiteri-heading"
|
|
style="margin-top:22px; padding-top:18px; border-top:2px solid var(--line);">
|
|
<div class="card">
|
|
<div style="display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin:0 0 12px;">
|
|
<h2 id="trimiteri-heading" style="font-size:15px; margin:0;">
|
|
Trimiterile tale
|
|
{% if blocate_total %}
|
|
<span class="tab-badge" title="{{ blocate_total }} necesita atentie"
|
|
style="display:inline-flex; align-items:center; justify-content:center; min-width:18px; height:18px; margin-left:6px; padding:0 5px; border-radius:99px; background:var(--err); color:#fff; font-size:11px; font-weight:700;">{{ blocate_total }}</span>
|
|
{% endif %}
|
|
</h2>
|
|
<span style="margin-left:auto; display:flex; gap:8px; flex-wrap:wrap;">
|
|
<a class="cardlink" href="/v1/audit/export?status=sent" download>export CSV: trimise</a>
|
|
<a class="cardlink" href="/v1/audit/export?status=all" download>toate</a>
|
|
</span>
|
|
</div>
|
|
|
|
<!-- Filtre (US-009): reincarca tabelul; poll-ul re-trimite filtrul curent prin hx-include -->
|
|
<form id="filtre-trimiteri"
|
|
hx-get="/_fragments/submissions"
|
|
hx-target="#submissions-wrap"
|
|
hx-swap="innerHTML"
|
|
hx-trigger="submit, change, keyup delay:400ms from:input[name='vehicul']"
|
|
style="display:flex; gap:10px; flex-wrap:wrap; align-items:flex-end; margin-bottom:12px;">
|
|
<div>
|
|
<label for="f-status" class="muted" style="display:block; font-size:12px;">Stare</label>
|
|
{# US-014/T13: status_filtru (din deep-link ?tab=acasa&status=) pre-selecteaza
|
|
starea, iar submissions-wrap (hx-include #filtre-trimiteri) o incarca filtrat. #}
|
|
{% set sf = status_filtru | default('') %}
|
|
<select id="f-status" name="status">
|
|
<option value="" {% if not sf %}selected{% endif %}>toate</option>
|
|
<option value="queued" {% if sf == 'queued' %}selected{% endif %}>in asteptare</option>
|
|
<option value="sent" {% if sf == 'sent' %}selected{% endif %}>declarate la RAR</option>
|
|
<option value="needs_mapping" {% if sf == 'needs_mapping' %}selected{% endif %}>lipsa cod</option>
|
|
<option value="needs_data" {% if sf == 'needs_data' %}selected{% endif %}>date incomplete</option>
|
|
<option value="error" {% if sf == 'error' %}selected{% endif %}>eroare</option>
|
|
<option value="sending" {% if sf == 'sending' %}selected{% endif %}>se trimite</option>
|
|
</select>
|
|
</div>
|
|
<div>
|
|
<label for="f-vehicul" class="muted" style="display:block; font-size:12px;">Vehicul (nr/VIN)</label>
|
|
<input id="f-vehicul" type="text" name="vehicul" placeholder="ex. B123 sau VIN" style="max-width:180px;">
|
|
</div>
|
|
<div>
|
|
<label for="f-data-de" class="muted" style="display:block; font-size:12px;">Data de la</label>
|
|
<input id="f-data-de" type="date" name="data_de">
|
|
</div>
|
|
<div>
|
|
<label for="f-data-pana" class="muted" style="display:block; font-size:12px;">pana la</label>
|
|
<input id="f-data-pana" type="date" name="data_pana">
|
|
</div>
|
|
<button type="submit">Filtreaza</button>
|
|
</form>
|
|
|
|
<!-- Poll aliniat la 15s ca status-ul (M5: nu doua timere perpetue pe pagina mereu deschisa) -->
|
|
<div id="submissions-wrap"
|
|
hx-get="/_fragments/submissions"
|
|
hx-trigger="load, every 15s, trimiteriChanged from:body"
|
|
hx-include="#filtre-trimiteri" hx-swap="innerHTML">
|
|
<div class="empty">se incarca…</div>
|
|
</div>
|
|
</div>
|
|
|
|
{# PRD 5.9 US-003: detaliul s-a mutat intr-un MODAL global (#modal-detaliu in base.html),
|
|
in afara #submissions-wrap -> poll-ul de 15s nu-l mai atinge. Randul declanseaza
|
|
deschiderea (hx-target=#detaliu-modal-body). Vechiul panou inert #trimitere-detaliu
|
|
a fost eliminat (rol preluat de modal). #}
|
|
</section>
|