- Fix mustChangePassword session flag for users with pw=NULL - Add PrF (Private Führung) as new ArtFuehrung type - Split datetime-local into separate date + TimePicker5 (5-min steps, auto-repeat) - Responsive Beginn/Ende layout: stacked on mobile, inline on desktop - Sort BEOs alphabetically by Kürzel in selector - Title shows active kuppel; hide user display in header - Selected BEOs show Kürzel only (name stays in dropdown) - Session timeout reduced to 1 hour - Add CLAUDE.md Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
58 lines
1.2 KiB
TypeScript
58 lines
1.2 KiB
TypeScript
export type Kuppel = 'West' | 'Ost' | 'Süd' | 'Pluto';
|
|
export type ArtFuehrung = 'RF' | 'SF' | 'PrF' | 'BEOS' | 'SonF' | 'TD' | 'Beob' | 'ToT' | 'Sonst';
|
|
|
|
export const KUPPELN: Kuppel[] = ['West', 'Ost', 'Süd', 'Pluto'];
|
|
|
|
export const ARTEN_MAP: Record<ArtFuehrung, string> = {
|
|
RF: 'Reguläre Führung',
|
|
SF: 'Sonderführung',
|
|
PrF: 'Private Führung',
|
|
BEOS: 'BEO-Sitzung',
|
|
SonF: 'Sonnenführung',
|
|
TD: 'Technischer Dienst',
|
|
Beob: 'Beobachtung',
|
|
ToT: 'Tag der offenen Tür',
|
|
Sonst:'Sonstiges',
|
|
};
|
|
|
|
export const ARTEN = Object.keys(ARTEN_MAP) as ArtFuehrung[];
|
|
|
|
export interface BeoOption {
|
|
ID: number;
|
|
Kuerzel: string;
|
|
Name: string;
|
|
}
|
|
|
|
export interface ObjektOption {
|
|
ID: number;
|
|
Name: string;
|
|
}
|
|
|
|
export interface SelectedObjekt {
|
|
ID: number | null;
|
|
Name: string;
|
|
}
|
|
|
|
export interface Wetter {
|
|
temp: number;
|
|
feuchte: number;
|
|
druck: number;
|
|
}
|
|
|
|
export interface LogbuchEintrag {
|
|
ID: number;
|
|
Kuppel: Kuppel;
|
|
ArtFuehrung: ArtFuehrung;
|
|
Beginn: string;
|
|
Ende: string;
|
|
Besucher: number;
|
|
Bemerkungen: string | null;
|
|
WetterTemp: number | null;
|
|
WetterFeuchte: number | null;
|
|
WetterDruck: number | null;
|
|
created_by: number | null;
|
|
created_at: string;
|
|
BEOs: string;
|
|
Objekte: string;
|
|
}
|