diff --git a/typescript/frontend-marios2/src/content/dashboards/Tickets/TicketList.tsx b/typescript/frontend-marios2/src/content/dashboards/Tickets/TicketList.tsx index fb2e4d715..8abd24df6 100644 --- a/typescript/frontend-marios2/src/content/dashboards/Tickets/TicketList.tsx +++ b/typescript/frontend-marios2/src/content/dashboards/Tickets/TicketList.tsx @@ -55,6 +55,7 @@ function TicketList() { const [tickets, setTickets] = useState([]); const [search, setSearch] = useState(''); const [statusFilter, setStatusFilter] = useState([]); + const [partnerFilter, setPartnerFilter] = useState(''); const [createOpen, setCreateOpen] = useState(false); const [error, setError] = useState(''); @@ -69,6 +70,10 @@ function TicketList() { fetchTickets(); }, []); + const partnerOptions = Array.from( + new Set(tickets.map((t) => t.distributionPartner).filter((p) => p && p.trim() !== '')) + ).sort(); + const filtered = tickets .filter((t) => { const matchesSearch = @@ -76,7 +81,8 @@ function TicketList() { t.subject.toLowerCase().includes(search.toLowerCase()) || t.installationName.toLowerCase().includes(search.toLowerCase()); const matchesStatus = statusFilter.length === 0 || statusFilter.includes(t.status); - return matchesSearch && matchesStatus; + const matchesPartner = partnerFilter === '' || t.distributionPartner === partnerFilter; + return matchesSearch && matchesStatus && matchesPartner; }) .sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime()); @@ -145,6 +151,31 @@ function TicketList() { })} + + + + + + {error && ( diff --git a/typescript/frontend-marios2/src/lang/de.json b/typescript/frontend-marios2/src/lang/de.json index 6bc61aa31..487d1f375 100644 --- a/typescript/frontend-marios2/src/lang/de.json +++ b/typescript/frontend-marios2/src/lang/de.json @@ -559,6 +559,7 @@ "priority": "Priorität", "category": "Kategorie", "allStatuses": "Alle Status", + "allPartners": "Alle Partner", "createdAt": "Erstellt", "noTickets": "Keine Tickets gefunden.", "backToTickets": "Zurück zu Tickets", diff --git a/typescript/frontend-marios2/src/lang/en.json b/typescript/frontend-marios2/src/lang/en.json index 369679c64..550ef6caa 100644 --- a/typescript/frontend-marios2/src/lang/en.json +++ b/typescript/frontend-marios2/src/lang/en.json @@ -307,6 +307,7 @@ "priority": "Priority", "category": "Category", "allStatuses": "All Statuses", + "allPartners": "All Partners", "createdAt": "Created", "noTickets": "No tickets found.", "backToTickets": "Back to Tickets", diff --git a/typescript/frontend-marios2/src/lang/fr.json b/typescript/frontend-marios2/src/lang/fr.json index dae1d5cdd..43a1c3843 100644 --- a/typescript/frontend-marios2/src/lang/fr.json +++ b/typescript/frontend-marios2/src/lang/fr.json @@ -559,6 +559,7 @@ "priority": "Priorité", "category": "Catégorie", "allStatuses": "Tous les statuts", + "allPartners": "Tous les partenaires", "createdAt": "Créé", "noTickets": "Aucun ticket trouvé.", "backToTickets": "Retour aux tickets", diff --git a/typescript/frontend-marios2/src/lang/it.json b/typescript/frontend-marios2/src/lang/it.json index 2f6fdaf90..4eff76e2c 100644 --- a/typescript/frontend-marios2/src/lang/it.json +++ b/typescript/frontend-marios2/src/lang/it.json @@ -559,6 +559,7 @@ "priority": "Priorità", "category": "Categoria", "allStatuses": "Tutti gli stati", + "allPartners": "Tutti i partner", "createdAt": "Creato", "noTickets": "Nessun ticket trovato.", "backToTickets": "Torna ai ticket",