add distribution partner on ticket list

This commit is contained in:
Yinyin Liu 2026-04-29 15:06:15 +02:00
parent 90f6c2a5f9
commit 7f902c7271
5 changed files with 36 additions and 1 deletions

View File

@ -55,6 +55,7 @@ function TicketList() {
const [tickets, setTickets] = useState<TicketSummary[]>([]);
const [search, setSearch] = useState('');
const [statusFilter, setStatusFilter] = useState<number[]>([]);
const [partnerFilter, setPartnerFilter] = useState<string>('');
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() {
})}
</Select>
</FormControl>
<FormControl size="small" sx={{ minWidth: 200 }}>
<InputLabel>
<FormattedMessage
id="distributionPartner"
defaultMessage="Distribution Partner"
/>
</InputLabel>
<Select
value={partnerFilter}
label={intl.formatMessage({
id: 'distributionPartner',
defaultMessage: 'Distribution Partner'
})}
onChange={(e) => setPartnerFilter(e.target.value as string)}
>
<MenuItem value="">
<FormattedMessage id="allPartners" defaultMessage="All Partners" />
</MenuItem>
{partnerOptions.map((p) => (
<MenuItem key={p} value={p}>
{p}
</MenuItem>
))}
</Select>
</FormControl>
</Box>
{error && (

View File

@ -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",

View File

@ -307,6 +307,7 @@
"priority": "Priority",
"category": "Category",
"allStatuses": "All Statuses",
"allPartners": "All Partners",
"createdAt": "Created",
"noTickets": "No tickets found.",
"backToTickets": "Back to Tickets",

View File

@ -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",

View File

@ -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",