Planboard: Anzeigelogik fuer Kopfzeile, Tageskopf und Terminzeile mit Tests

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Sonnet 5.5 committed 2026-10-06 06:03:14 +00:00
1 parent dd0bef52e8
commit a0149137ea
2 files changed
+84

No files matched your search

+41
View File
@@ -0,0 +1,41 @@
/* Planboard-Anzeigelogik: reine Texte und Klassen, die PlanboardPage braucht.
Die Terminlogik selbst (Datum lesen, nach Tag gruppieren) steckt in planboard.js. */
import { format, getISOWeek, addDays } from 'date-fns'
import { de } from 'date-fns/locale'
const NOBODY = 'niemand zugewiesen'
// "Kalenderwoche 41 · 5. Oktober bis 11. Oktober · 13 Termine"
export function planboardSubtitle({ weekStart, count, loading = false }) {
const from = format(weekStart, 'd. MMMM', { locale: de })
const to = format(addDays(weekStart, 6), 'd. MMMM', { locale: de })
const rest = loading ? 'Wird geladen …' : `${count} ${count === 1 ? 'Termin' : 'Termine'}`
return `Kalenderwoche ${getISOWeek(weekStart)} · ${from} bis ${to} · ${rest}`
}
export function dayLabels(day) {
return {
weekday: format(day, 'EEEE', { locale: de }),
number: format(day, 'dd.MM'),
full: format(day, 'EEEE, d. MMMM', { locale: de }),
}
}
export function appointmentClass(type) {
return String(type || '').toLowerCase() === 'akquise' ? 'appt akquise' : 'appt'
}
export function appointmentTimeLabel({ time, endTime }) {
if (!time) return 'ohne Uhrzeit'
return endTime ? `${time}–${endTime}` : time
}
// Mit Ticketnummer "#100201 · KNSO", ohne Nummer nur der Mitarbeiter (kein leeres "#")
export function appointmentOwnerLabel({ woid, employeeName, employeeShort }) {
const owner = employeeName ? employeeShort || employeeName : NOBODY
return woid ? `#${woid} · ${owner}` : owner
}
export function appointmentTitle({ woid }) {
return woid ? `Ticket #${woid} öffnen` : 'Ticket öffnen'
}