29 lines
1.2 KiB
JavaScript
29 lines
1.2 KiB
JavaScript
/* Adressen der Ticketseite: /tickets/<woid oder $id> mit dem Reiter Details (ohne Zusatz)
|
|
oder Arbeitsblaetter. Alle Links auf Tickets entstehen hier. */
|
|
|
|
// Reiter der Ticketseite; "details" hat keinen eigenen Pfadteil
|
|
export const TICKET_TABS = ['details', 'arbeitsblaetter']
|
|
|
|
// Das Ticket wird ueber seine woid adressiert, sonst ueber die $id (nie ueber die Kurznummer)
|
|
export function ticketRef(ticket) {
|
|
return String(ticket?.woid ?? '').trim() || String(ticket?.$id ?? '')
|
|
}
|
|
|
|
export function ticketPath(ref, tab) {
|
|
const id = String(ref ?? '').trim()
|
|
if (!id) return '/tickets'
|
|
return '/tickets/' + encodeURIComponent(id) + (tab === 'arbeitsblaetter' ? '/arbeitsblaetter' : '')
|
|
}
|
|
|
|
// Reiter aus der Adresse: fehlt er, gilt "details", ein unbekannter Wert ergibt null
|
|
export function resolveTicketTab(tab) {
|
|
if (tab === undefined) return 'details'
|
|
return TICKET_TABS.includes(tab) ? tab : null
|
|
}
|
|
|
|
// Zurueck zur Liste mit dem gemerkten Suchteil (nur "?..." mit Inhalt, sonst kein Fremdtext in der Adresse)
|
|
export function listBackPath(locationState) {
|
|
const search = locationState?.listSearch
|
|
return typeof search === 'string' && search.startsWith('?') && search.length > 1 ? '/tickets' + search : '/tickets'
|
|
}
|