diff --git a/src/app/features/schedule/schedule-week/schedule-week.component.html b/src/app/features/schedule/schedule-week/schedule-week.component.html index 591f8b3ee4..98f99de9f7 100644 --- a/src/app/features/schedule/schedule-week/schedule-week.component.html +++ b/src/app/features/schedule/schedule-week/schedule-week.component.html @@ -93,7 +93,7 @@ } - @for (ev of safeEvents(); track ev.id) { + @for (ev of safeEvents(); track trackEventKey(ev)) { @if (isDraggableSE(ev)) { hourglass_disabled {{ beyondBudgetDay.length }} - @for (ev of beyondBudgetDay; track ev.id) { + @for (ev of beyondBudgetDay; track trackEventKey(ev)) { @if (isDraggableSE(ev)) { this.events() || []); safeBeyondBudget = computed(() => this.beyondBudget() || []); + // Split projections (RepeatProjectionSplit, SplitTaskContinued, …) share the + // task/repeat-cfg id across segments. Combine day + start hour so each visual + // segment has a unique @for track key and Angular can reconcile them. + trackEventKey(ev: ScheduleEvent): string { + return `${ev.id}_${ev.plannedForDay ?? ''}_${ev.startHours}`; + } + newTaskPlaceholder = signal<{ style: string; time: string;