rework of the event admin UI
This commit is contained in:
60
resources/js/admin/lib/eventTabs.ts
Normal file
60
resources/js/admin/lib/eventTabs.ts
Normal file
@@ -0,0 +1,60 @@
|
||||
import type { TenantEvent } from '../api';
|
||||
import {
|
||||
ADMIN_EVENT_INVITES_PATH,
|
||||
ADMIN_EVENT_PHOTOBOOTH_PATH,
|
||||
ADMIN_EVENT_PHOTOS_PATH,
|
||||
ADMIN_EVENT_TASKS_PATH,
|
||||
ADMIN_EVENT_VIEW_PATH,
|
||||
} from '../constants';
|
||||
|
||||
export type EventTabCounts = Partial<{
|
||||
photos: number;
|
||||
tasks: number;
|
||||
invites: number;
|
||||
}>;
|
||||
|
||||
type Translator = (key: string, fallback: string) => string;
|
||||
|
||||
export function buildEventTabs(event: TenantEvent, translate: Translator, counts: EventTabCounts = {}) {
|
||||
if (!event.slug) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const formatBadge = (value?: number | null): number | undefined => {
|
||||
if (typeof value === 'number' && Number.isFinite(value)) {
|
||||
return value;
|
||||
}
|
||||
return undefined;
|
||||
};
|
||||
|
||||
return [
|
||||
{
|
||||
key: 'overview',
|
||||
label: translate('eventMenu.summary', 'Übersicht'),
|
||||
href: ADMIN_EVENT_VIEW_PATH(event.slug),
|
||||
},
|
||||
{
|
||||
key: 'photos',
|
||||
label: translate('eventMenu.photos', 'Uploads'),
|
||||
href: ADMIN_EVENT_PHOTOS_PATH(event.slug),
|
||||
badge: formatBadge(counts.photos ?? event.photo_count ?? event.pending_photo_count ?? null),
|
||||
},
|
||||
{
|
||||
key: 'tasks',
|
||||
label: translate('eventMenu.tasks', 'Aufgaben'),
|
||||
href: ADMIN_EVENT_TASKS_PATH(event.slug),
|
||||
badge: formatBadge(counts.tasks ?? event.tasks_count ?? null),
|
||||
},
|
||||
{
|
||||
key: 'invites',
|
||||
label: translate('eventMenu.invites', 'Einladungen'),
|
||||
href: ADMIN_EVENT_INVITES_PATH(event.slug),
|
||||
badge: formatBadge(counts.invites ?? event.active_invites_count ?? event.total_invites_count ?? null),
|
||||
},
|
||||
{
|
||||
key: 'photobooth',
|
||||
label: translate('eventMenu.photobooth', 'Photobooth'),
|
||||
href: ADMIN_EVENT_PHOTOBOOTH_PATH(event.slug),
|
||||
},
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user