From 0517ae59fb0f5e9ca12566b6b8d1a5f237eb6707 Mon Sep 17 00:00:00 2001
From: Claude Agent
Date: Tue, 23 Jun 2026 12:48:05 +0000
Subject: [PATCH] feat(web): cautare + paginare client-side pe tabelele din
Mapari
Maparile pot creste la sute de randuri. Enhancer reutilizabil (data-dt) in
base.html filtreaza si pagineaza DOM-ul deja randat, fara cereri server; re-init
la full load si dupa swap-urile HTMX. Aplicat pe cele 3 tabele (De rezolvat /
operatii salvate / formate coloane).
Randurile cu expun haystack explicit prin data-dt-row (cod_op + cod_rar
+ denumire): altfel optiunile selectului ar pune tot nomenclatorul in textContent
si orice cautare ar potrivi orice rand.
Co-Authored-By: Claude Opus 4.8 (1M context)
---
app/web/templates/_mapari.html | 31 +++++++++++++-
app/web/templates/base.html | 75 ++++++++++++++++++++++++++++++++++
2 files changed, 104 insertions(+), 2 deletions(-)
diff --git a/app/web/templates/_mapari.html b/app/web/templates/_mapari.html
index 6b52bef..1a28c4e 100644
--- a/app/web/templates/_mapari.html
+++ b/app/web/templates/_mapari.html
@@ -37,6 +37,11 @@
Importa un fisier nou daca vrei sa adaugi prezentari.
{% else %}
+
+
+
+
@@ -50,7 +55,9 @@
{% for e in pending %}
{% set top = e.suggestions[0] if e.suggestions else None %}
{% set preselect = top.cod_prestatie if (top and top.score >= 60) else '' %}
-
+ {# data-dt-row = haystack de cautare (randul contine un cu tot nomenclatorul). #}
+
+
Nicio operatie nu se potriveste cautarii.
+
+
{% endif %}
@@ -105,6 +115,11 @@
{% else %}
{# US-005 (5.5): proza explicativa mutata in panoul Ajutor de la "De rezolvat" (o singura data). #}
+
+
+
+
@@ -115,7 +130,8 @@
{% for m in saved_mappings %}
-
+ {# data-dt-row = haystack de cautare (randul contine un cu tot nomenclatorul). #}
+
+
Nicio mapare nu se potriveste cautarii.
+
+
{% endif %}
@@ -179,6 +198,11 @@
Antetele de fisier recunoscute. Un fisier cu alte coloane = format nou separat.
+
+
+
+
+
Niciun format nu se potriveste cautarii.
+
+
{% endif %}
diff --git a/app/web/templates/base.html b/app/web/templates/base.html
index 61a7fea..a716543 100644
--- a/app/web/templates/base.html
+++ b/app/web/templates/base.html
@@ -150,6 +150,18 @@
border-radius:6px; cursor:pointer; min-height:36px; white-space:nowrap; }
.kebab-menu button:hover, .kebab-menu a:hover { background:var(--line); }
.kebab-menu button.danger { color:var(--err); }
+ /* Tabel cu cautare + paginare client-side (data-dt). Maparile pot creste la sute de randuri;
+ filtram/paginez DOM-ul deja randat, fara cereri suplimentare. Vezi scriptul din base.html. */
+ input[type=search] { font:inherit; background:var(--bg); color:var(--ink); border:1px solid var(--line);
+ border-radius:6px; padding:6px 10px; width:100%; }
+ .dt-tools { display:flex; align-items:center; gap:8px; margin:0 0 10px; }
+ .dt-search { flex:1 1 auto; max-width:320px; }
+ .dt-empty { color:var(--muted); padding:16px; text-align:center; font-size:13px; }
+ .dt-pager { display:flex; align-items:center; justify-content:flex-end; gap:10px;
+ margin-top:10px; font-size:13px; color:var(--muted); }
+ .dt-pager button { background:transparent; color:var(--ink); border:1px solid var(--line);
+ padding:5px 12px; min-height:32px; }
+ .dt-pager button:disabled { opacity:.45; cursor:default; }
@@ -295,5 +307,68 @@
window.addEventListener('resize', function() { closeAll(null); });
})();
+