From 4d940eefc4337c8802503e9853fb431268c6c313 Mon Sep 17 00:00:00 2001 From: louispaulb Date: Sat, 4 Jul 2026 19:26:57 -0400 Subject: [PATCH] =?UTF-8?q?feat(ui):=20T5=20=E2=80=94=20DynamicFilter=20su?= =?UTF-8?q?r=20Tickets=20(recherche=20+=20chips=20statut/type/priorit?= =?UTF-8?q?=C3=A9=20+=20presets)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remplace search + 3 q-select par ('filter.tickets') ; chipGroups computed (types dynamiques) ; statut défaut = not_closed préservé ; mappe l'état → refs existantes (search/statusFilter/typeFilter/priorityFilter) → resetAndLoad débouncé. La PORTÉE « Mes tickets / Mes départements / Tous » reste un toggle séparé (logique de scope/pagination distincte). Compte redondant retiré. Vérifié préview : 3 groupes, « Non fermés » actif par défaut, chip Urgent 542→3, toggle portée conservé. Build vert, leak 0. Co-Authored-By: Claude Opus 4.8 --- apps/ops/src/pages/TicketsPage.vue | 46 ++++++++++++++---------------- 1 file changed, 21 insertions(+), 25 deletions(-) diff --git a/apps/ops/src/pages/TicketsPage.vue b/apps/ops/src/pages/TicketsPage.vue index 8185e88..cef9aa9 100644 --- a/apps/ops/src/pages/TicketsPage.vue +++ b/apps/ops/src/pages/TicketsPage.vue @@ -2,30 +2,12 @@
-
-
Recherche
- - - +
+
-
Statut
- -
-
-
Type / Departement
- -
-
-
Priorite
- -
-
-
Mes tickets
+
Portée
-
-
{{ total.toLocaleString() }} tickets
-
[ + { key: 'statut', label: 'Statut', icon: 'label', options: statusOptions.filter(o => o.value !== 'all') }, + { key: 'type', label: 'Type', icon: 'category', options: issueTypes.value }, + { key: 'priorite', label: 'Priorité', icon: 'priority_high', options: priorityOptions }, +]) +let filterTimer = null +function onFilterChange (s) { + search.value = s.search || '' + statusFilter.value = s.chips.statut || 'all' + typeFilter.value = s.chips.type || null + priorityFilter.value = s.chips.priorite || null + clearTimeout(filterTimer) + filterTimer = setTimeout(() => resetAndLoad(), 300) +} const tickets = ref([]) // Tri « façon F » : dans les vues scopées (Mes tickets), RANGER par priorité (Urgent→Bas) côté client — // ERPNext+Postgres ne range pas une priorité Select dans l'ORDER BY, et l'ensemble scopé tient sur 1 page.