-
-
- {
- if (!e.target.value) return;
- setEnde(e.target.value + 'T' + (ende.slice(11, 16) || '00:00'));
- }}
- required
- className="flex-1 px-2 py-2 border-2 border-gray-400 rounded-lg bg-white text-sm text-gray-900 focus:border-blue-500 focus:outline-none"
- />
- setEnde(ende.slice(0, 10) + 'T' + t)}
- className="w-24"
- />
-
+
+
+ {
+ if (!e.target.value) return;
+ setBeginn(e.target.value + 'T' + (beginn.slice(11, 16) || '00:00'));
+ setEnde(e.target.value + 'T' + (ende.slice(11, 16) || '00:00'));
+ }}
+ required
+ className="px-2 py-2 border-2 border-gray-400 rounded-lg bg-white text-sm text-gray-900 focus:border-blue-500 focus:outline-none"
+ />
+
+
+
+ {
+ setBeginn(beginn.slice(0, 10) + 'T' + t);
+ setEnde(ende.slice(0, 10) + 'T' + t);
+ }}
+ className="w-24"
+ />
+
+
+
+ setEnde(ende.slice(0, 10) + 'T' + t)}
+ className="w-24"
+ />
{showBesucher && (
-
+
setBesucher(e.target.value === '' ? '' : parseInt(e.target.value) || 0)}
min={0}
max={9999}
- className="w-20 px-2 py-2 border-2 border-gray-400 rounded-lg bg-white text-base focus:border-blue-500 focus:outline-none"
+ className="w-20 px-2 py-2 border-2 border-gray-400 rounded-lg bg-white text-sm focus:border-blue-500 focus:outline-none"
/>
)}
diff --git a/components/LogbuchList.tsx b/components/LogbuchList.tsx
index f3adeb1..491812e 100644
--- a/components/LogbuchList.tsx
+++ b/components/LogbuchList.tsx
@@ -11,15 +11,21 @@ interface Props {
compact?: boolean;
}
-function formatDateTime(dt: string, short = false): string {
+const pad = (n: number) => String(n).padStart(2, '0');
+
+function formatDate(dt: string, short = false): string {
if (!dt) return '';
const d = new Date(dt);
if (isNaN(d.getTime())) return dt;
- if (short) {
- const pad = (n: number) => String(n).padStart(2, '0');
- return `${pad(d.getDate())}.${pad(d.getMonth() + 1)}. ${pad(d.getHours())}:${pad(d.getMinutes())}`;
- }
- return d.toLocaleString('de-DE', { day: '2-digit', month: '2-digit', year: 'numeric', hour: '2-digit', minute: '2-digit' });
+ if (short) return `${pad(d.getDate())}.${pad(d.getMonth() + 1)}.`;
+ return `${pad(d.getDate())}.${pad(d.getMonth() + 1)}.${d.getFullYear()}`;
+}
+
+function formatTime(dt: string): string {
+ if (!dt) return '';
+ const d = new Date(dt);
+ if (isNaN(d.getTime())) return dt;
+ return `${pad(d.getHours())}:${pad(d.getMinutes())}`;
}
export default function LogbuchList({ kuppel, refreshKey, onEdit, limit = 20, compact = false }: Props) {
@@ -65,7 +71,8 @@ export default function LogbuchList({ kuppel, refreshKey, onEdit, limit = 20, co
- | Beginn |
+ Datum |
+ Start |
Ende |
Art |
Bes. |
@@ -78,8 +85,9 @@ export default function LogbuchList({ kuppel, refreshKey, onEdit, limit = 20, co
{entries.map((e) => (
- | {formatDateTime(e.Beginn, compact)} |
- {formatDateTime(e.Ende, compact)} |
+ {formatDate(e.Beginn, compact)} |
+ {formatTime(e.Beginn)} |
+ {formatTime(e.Ende)} |
{e.ArtFuehrung} |
{e.Besucher || ''} |
{e.BEOs || '—'} |
diff --git a/package.json b/package.json
index d90b533..16e0689 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "logbuch",
- "version": "1.1.0",
+ "version": "1.2.0",
"private": true,
"scripts": {
"dev": "next dev",
diff --git a/types/logbuch.ts b/types/logbuch.ts
index 02df80e..a68d144 100644
--- a/types/logbuch.ts
+++ b/types/logbuch.ts
@@ -4,19 +4,23 @@ export type ArtFuehrung = 'RF' | 'SF' | 'PrF' | 'BEOS' | 'SonF' | 'TD' | 'Beob'
export const KUPPELN: Kuppel[] = ['West', 'Ost', 'Süd', 'Pluto'];
export const ARTEN_MAP: Record = {
- RF: 'Reguläre Führung',
- SF: 'Sonderführung',
- PrF: 'Private Führung',
- BEOS: 'BEO-Sitzung',
- SonF: 'Sonnenführung',
- TD: 'Technischer Dienst',
+ RF: 'regulär',
+ SF: 'sonder',
+ PrF: 'privat',
+ BEOS: '',
+ SonF: 'sonnen',
+ TD: '',
Beob: 'Beobachtung',
- ToT: 'Tag der offenen Tür',
- Sonst:'Sonstiges',
+ ToT: '',
+ Sonst: 'Sonstiges',
};
export const ARTEN = Object.keys(ARTEN_MAP) as ArtFuehrung[];
+export function artLabel(a: ArtFuehrung): string {
+ return ARTEN_MAP[a] || a;
+}
+
export interface BeoOption {
ID: number;
Kuerzel: string;