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 [tickets, setTickets] = useState<TicketSummary[]>([]);
|
||||||
const [search, setSearch] = useState('');
|
const [search, setSearch] = useState('');
|
||||||
const [statusFilter, setStatusFilter] = useState<number[]>([]);
|
const [statusFilter, setStatusFilter] = useState<number[]>([]);
|
||||||
|
const [partnerFilter, setPartnerFilter] = useState<string>('');
|
||||||
const [createOpen, setCreateOpen] = useState(false);
|
const [createOpen, setCreateOpen] = useState(false);
|
||||||
const [error, setError] = useState('');
|
const [error, setError] = useState('');
|
||||||
|
|
||||||
|
|
@ -69,6 +70,10 @@ function TicketList() {
|
||||||
fetchTickets();
|
fetchTickets();
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
const partnerOptions = Array.from(
|
||||||
|
new Set(tickets.map((t) => t.distributionPartner).filter((p) => p && p.trim() !== ''))
|
||||||
|
).sort();
|
||||||
|
|
||||||
const filtered = tickets
|
const filtered = tickets
|
||||||
.filter((t) => {
|
.filter((t) => {
|
||||||
const matchesSearch =
|
const matchesSearch =
|
||||||
|
|
@ -76,7 +81,8 @@ function TicketList() {
|
||||||
t.subject.toLowerCase().includes(search.toLowerCase()) ||
|
t.subject.toLowerCase().includes(search.toLowerCase()) ||
|
||||||
t.installationName.toLowerCase().includes(search.toLowerCase());
|
t.installationName.toLowerCase().includes(search.toLowerCase());
|
||||||
const matchesStatus = statusFilter.length === 0 || statusFilter.includes(t.status);
|
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());
|
.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
|
||||||
|
|
||||||
|
|
@ -145,6 +151,31 @@ function TicketList() {
|
||||||
})}
|
})}
|
||||||
</Select>
|
</Select>
|
||||||
</FormControl>
|
</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>
|
</Box>
|
||||||
|
|
||||||
{error && (
|
{error && (
|
||||||
|
|
|
||||||
|
|
@ -559,6 +559,7 @@
|
||||||
"priority": "Priorität",
|
"priority": "Priorität",
|
||||||
"category": "Kategorie",
|
"category": "Kategorie",
|
||||||
"allStatuses": "Alle Status",
|
"allStatuses": "Alle Status",
|
||||||
|
"allPartners": "Alle Partner",
|
||||||
"createdAt": "Erstellt",
|
"createdAt": "Erstellt",
|
||||||
"noTickets": "Keine Tickets gefunden.",
|
"noTickets": "Keine Tickets gefunden.",
|
||||||
"backToTickets": "Zurück zu Tickets",
|
"backToTickets": "Zurück zu Tickets",
|
||||||
|
|
|
||||||
|
|
@ -307,6 +307,7 @@
|
||||||
"priority": "Priority",
|
"priority": "Priority",
|
||||||
"category": "Category",
|
"category": "Category",
|
||||||
"allStatuses": "All Statuses",
|
"allStatuses": "All Statuses",
|
||||||
|
"allPartners": "All Partners",
|
||||||
"createdAt": "Created",
|
"createdAt": "Created",
|
||||||
"noTickets": "No tickets found.",
|
"noTickets": "No tickets found.",
|
||||||
"backToTickets": "Back to Tickets",
|
"backToTickets": "Back to Tickets",
|
||||||
|
|
|
||||||
|
|
@ -559,6 +559,7 @@
|
||||||
"priority": "Priorité",
|
"priority": "Priorité",
|
||||||
"category": "Catégorie",
|
"category": "Catégorie",
|
||||||
"allStatuses": "Tous les statuts",
|
"allStatuses": "Tous les statuts",
|
||||||
|
"allPartners": "Tous les partenaires",
|
||||||
"createdAt": "Créé",
|
"createdAt": "Créé",
|
||||||
"noTickets": "Aucun ticket trouvé.",
|
"noTickets": "Aucun ticket trouvé.",
|
||||||
"backToTickets": "Retour aux tickets",
|
"backToTickets": "Retour aux tickets",
|
||||||
|
|
|
||||||
|
|
@ -559,6 +559,7 @@
|
||||||
"priority": "Priorità",
|
"priority": "Priorità",
|
||||||
"category": "Categoria",
|
"category": "Categoria",
|
||||||
"allStatuses": "Tutti gli stati",
|
"allStatuses": "Tutti gli stati",
|
||||||
|
"allPartners": "Tutti i partner",
|
||||||
"createdAt": "Creato",
|
"createdAt": "Creato",
|
||||||
"noTickets": "Nessun ticket trovato.",
|
"noTickets": "Nessun ticket trovato.",
|
||||||
"backToTickets": "Torna ai ticket",
|
"backToTickets": "Torna ai ticket",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue