feat: Gespiegelte Belegung in der Wochenansicht zeigen

Sie zaehlt gegen die Tageskapazitaet wie jeder fremde Termin, traegt
aber keinen Betreff und ist gestreift gezeichnet — damit niemand darin
einen Termin vermutet, dem der Titel fehlt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Florian Wilde
2026-09-11 23:04:35 +02:00
co-authored by Claude Opus 5
parent 1281c3ea96
commit 0d0f8503cc
3 changed files with 53 additions and 13 deletions
+1
View File
@@ -187,6 +187,7 @@ export default async function WocheSeite({
ganztaegig: t.ganztaegig,
frei: t.zeigtAls === 'FREI',
kalenderName: t.kalenderName,
gespiegelt: t.gespiegelt,
}))}
aufgaben={aufgaben.map((a) => ({
id: a.id,
+15 -2
View File
@@ -64,6 +64,8 @@ export type RasterTermin = {
ganztaegig: boolean
frei: boolean
kalenderName: string
/** Aus der anderen Instanz gespiegelt: belegt, aber ohne Betreff. */
gespiegelt?: boolean
}
export type RasterSpalte = {
@@ -321,6 +323,11 @@ export function Wochenraster({
eintrag.frei
? 'bg-gedaempft/60 text-gedaempft-vordergrund'
: 'bg-gedaempft text-gedaempft-vordergrund',
// Gespiegeltes gehört sichtbar in eine eigene
// Klasse: gestreift, damit niemand darin einen
// Termin mit fehlendem Betreff vermutet.
eintrag.gespiegelt &&
'border-rand border border-dashed bg-[repeating-linear-gradient(45deg,transparent,transparent_4px,color-mix(in_oklch,currentColor_12%,transparent)_4px,color-mix(in_oklch,currentColor_12%,transparent)_8px)]',
)}
style={{
top: lage.oben,
@@ -328,10 +335,16 @@ export function Wochenraster({
left: `${(spur / spuren) * 100}%`,
width: `${100 / spuren}%`,
}}
title={`${eintrag.betreff ?? 'Termin'} · ${eintrag.kalenderName}`}
title={
eintrag.gespiegelt
? 'Dienstlich belegt – gespiegelt aus der anderen Instanz'
: `${eintrag.betreff ?? 'Termin'} · ${eintrag.kalenderName}`
}
>
<span className="line-clamp-2">
{eintrag.betreff ?? 'Termin'}
{eintrag.gespiegelt
? 'Dienstlich belegt'
: (eintrag.betreff ?? 'Termin')}
</span>
</div>
)