Implementeaza planul aprobat din docs/raport-comparatie-mockup-5.16.md (T-1..T-9): - T-1/T-8: rand lista 4->2 linii (placuta primar + cod RAR · operatie · data + pill), fallback placuta, eticheta-problema 10px->--fs-xs (_submissions.html, base.html) - T-2: pill slim restilat fill-tint + dot 7px + text colorat per stare (base.html) - T-3: bug 4a coliziune pill/vehicul in preview — col-stare 104->140px (base.html) - T-4: preview 8->5 coloane (scos #, KM, Note; motivul -> title pe pill) - T-5: titlu sectiune "Trimiterile tale" -> sr-only (a11y) + badge/export discret - T-6: linia plan N/60 in corp doar pe avertizare; consum normal in badge+burger - T-7: guard chenar gol chips extra (_chips_prestatii.html) - T-9: "Anuleaza"->"Renunta"; nume operatie emfatic bold Fix boot: init_db reincarca seedul de ~17k operatii (5.18) pe FIECARE pornire, pe API + worker concurent -> "database is locked" la al doilea proces. Guard "_if_empty" pe mapping_suggestions (ca seed_nomenclator_if_empty) -> boot rapid, fara cursa. Teste actualizate (slim 2-linii, fallback placuta, plan in burger). TODOS.md: defer trackuit (eroare HTMX lista, retokenizare px, diacritice). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
99 lines
5.8 KiB
HTML
99 lines
5.8 KiB
HTML
{#
|
|
_coada.html — sectiunea "Trimiterile tale" inclusa pe Acasa, sub zona de upload.
|
|
Filtre + tabel (_submissions.html); detaliul se deschide in modalul global (#modal-detaliu).
|
|
#}
|
|
<section id="trimiteri-section" aria-labelledby="trimiteri-heading"
|
|
style="margin-top:22px; padding-top:18px; border-top:2px solid var(--line);"
|
|
{% if oob %}hx-swap-oob="outerHTML"{% endif %}>
|
|
<div class="card">
|
|
{# US-002 (5.16): titlul de sectiune vizibil ("Trimiterile tale") a fost eliminat —
|
|
lista incepe direct sub filtre. Heading pastrat sr-only pentru a11y (section
|
|
aria-labelledby). Badge-ul de atentie + export CSV stau intr-un rand discret. #}
|
|
<h2 id="trimiteri-heading" class="sr-only">Trimiterile tale</h2>
|
|
{% if blocate_total %}
|
|
<div style="display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin:0 0 10px;">
|
|
<span class="tab-badge" title="{{ blocate_total }} necesita atentie"
|
|
style="display:inline-flex; align-items:center; justify-content:center; min-width:18px; height:18px; padding:0 5px; border-radius:99px; background:var(--err); color:#fff; font-size:11px; font-weight:700;">{{ blocate_total }}</span>
|
|
<span class="muted" style="font-size:var(--fs-sm);">de rezolvat</span>
|
|
<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>
|
|
{% else %}
|
|
<div style="display:flex; justify-content:flex-end; gap:8px; flex-wrap:wrap; margin:0 0 10px;">
|
|
<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>
|
|
</div>
|
|
{% endif %}
|
|
|
|
<!-- Bara de filtre: [quick-pills data STANGA] [cautare vehicul MIJLOC] [pills stare DREAPTA].
|
|
Pill-urile de stare scriu campul hidden status si re-trimit form-ul (filtreazaStare).
|
|
Quick-pills de data apeleaza setDataRange -> seteaza data_de/data_pana + re-submit. -->
|
|
<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:8px 12px; flex-wrap:wrap; align-items:center; margin-bottom:12px;">
|
|
<input type="hidden" id="f-status" name="status" value="{{ status_filtru | default('', true) }}">
|
|
{# Pagina curenta — actualizata prin OOB swap din _submissions.html; inclusa la reincarcari. #}
|
|
<input type="hidden" id="f-page" name="page" value="1">
|
|
|
|
{# === STANGA: Quick-pills de data (preset interval) + buton Custom ===
|
|
Azi / 7 zile / 30 zile → seteaza interval preset si submitr automat.
|
|
Custom → dezvaluie #custom-date-fields pentru introducere manuala (fara submit automat). #}
|
|
<div style="flex:0 0 auto; display:flex; gap:8px; align-items:center; flex-wrap:wrap;">
|
|
<div class="pills-categorii" id="quick-date-pills">
|
|
<button type="button" class="pill-cat pill-data" data-range="azi"
|
|
aria-pressed="false"
|
|
onclick="setDataRange(this,'azi')">Azi</button>
|
|
<button type="button" class="pill-cat pill-data" data-range="7zile"
|
|
aria-pressed="false"
|
|
onclick="setDataRange(this,'7zile')">7 zile</button>
|
|
<button type="button" class="pill-cat pill-data" data-range="30zile"
|
|
aria-pressed="false"
|
|
onclick="setDataRange(this,'30zile')">30 zile</button>
|
|
<button type="button" class="pill-cat pill-data" data-range="custom"
|
|
aria-pressed="false"
|
|
onclick="setDataRange(this,'custom')">Custom</button>
|
|
</div>
|
|
{# Campuri de data pentru modul Custom: ascunse pana la click pe „Custom".
|
|
type="date" (nu hidden) permite interactiunea utilizatorului.
|
|
Campul change pe form re-incarca automat lista via hx-trigger="change". #}
|
|
<div id="custom-date-fields"
|
|
style="display:none; gap:4px; align-items:center; flex-wrap:wrap; font-size:13px;">
|
|
<label for="f-data-de" class="muted" style="font-size:12px; white-space:nowrap;">De:</label>
|
|
<input type="date" id="f-data-de" name="data_de" value=""
|
|
style="font-size:13px; max-width:140px;">
|
|
<label for="f-data-pana" class="muted" style="font-size:12px; white-space:nowrap;">Pana:</label>
|
|
<input type="date" id="f-data-pana" name="data_pana" value=""
|
|
style="font-size:13px; max-width:140px;">
|
|
</div>
|
|
</div>
|
|
|
|
{# === MIJLOC: cautare vehicul (nr/VIN) + buton Filtreaza === #}
|
|
<div style="display:flex; align-items:center; gap:8px; flex:1 1 auto; min-width:160px; flex-wrap:wrap;">
|
|
<input id="f-vehicul" type="text" name="vehicul" placeholder="Vehicul (nr/VIN)"
|
|
style="flex:1 1 auto; min-width:120px;">
|
|
<button type="submit" style="flex:0 0 auto;">Filtreaza</button>
|
|
</div>
|
|
|
|
{# === DREAPTA: pill-uri de stare cu contoare; re-randate via OOB la reincarcarea tabelului === #}
|
|
<span id="pills-categorii" class="pills-categorii" style="margin-left:auto; flex:0 0 auto;">
|
|
{% include '_pills.html' %}
|
|
</span>
|
|
</form>
|
|
|
|
<!-- Tabelul se reincarca la: incarcarea paginii, actiunile tale (trimiteriChanged)
|
|
si auto-refresh periodic din poller (date noi externe). -->
|
|
<div id="submissions-wrap"
|
|
hx-get="/_fragments/submissions"
|
|
hx-trigger="load, trimiteriChanged from:body, reincarcaTrimiteri"
|
|
hx-include="#filtre-trimiteri" hx-swap="innerHTML">
|
|
<div class="empty">se incarca…</div>
|
|
</div>
|
|
</div>
|
|
|
|
</section>
|