add distribution partner on ticket list
This commit is contained in:
parent
90f6c2a5f9
commit
7f902c7271
|
|
@ -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 && (
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -307,6 +307,7 @@
|
|||
"priority": "Priority",
|
||||
"category": "Category",
|
||||
"allStatuses": "All Statuses",
|
||||
"allPartners": "All Partners",
|
||||
"createdAt": "Created",
|
||||
"noTickets": "No tickets found.",
|
||||
"backToTickets": "Back to Tickets",
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
Loading…
Reference in New Issue