Skip to content

Commit 90c820b

Browse files
committed
fix(getWeekView): use correct width of overlapping events
Fixes mattlewis92/angular-calendar#784
1 parent ae81a95 commit 90c820b

File tree

3 files changed

+5086
-777
lines changed

3 files changed

+5086
-777
lines changed

src/calendar-utils.ts

+33-6
Original file line numberDiff line numberDiff line change
@@ -617,17 +617,44 @@ function getWeekViewHourGrid(
617617
return { ...hour, segments };
618618
});
619619

620+
function getColumnCount(
621+
allEvents: DayViewEvent[],
622+
prevOverlappingEvents: DayViewEvent[]
623+
): number {
624+
const columnCount = Math.max(
625+
...prevOverlappingEvents.map(iEvent => iEvent.left + 1)
626+
);
627+
628+
const nextOverlappingEvents = allEvents
629+
.filter(iEvent => iEvent.left >= columnCount)
630+
.filter(iEvent => {
631+
return (
632+
getOverLappingDayViewEvents(
633+
prevOverlappingEvents,
634+
iEvent.top,
635+
iEvent.top + iEvent.height
636+
).length > 0
637+
);
638+
});
639+
640+
if (nextOverlappingEvents.length > 0) {
641+
return getColumnCount(allEvents, nextOverlappingEvents);
642+
} else {
643+
return columnCount;
644+
}
645+
}
646+
620647
return {
621648
hours,
622649
date: day.date,
623650
events: dayView.events.map(event => {
624-
const overLappingEvents = getOverLappingDayViewEvents(
651+
const columnCount = getColumnCount(
625652
dayView.events,
626-
event.top,
627-
event.top + event.height
628-
);
629-
const columnCount = Math.max(
630-
...overLappingEvents.map(iEvent => iEvent.left + 1)
653+
getOverLappingDayViewEvents(
654+
dayView.events,
655+
event.top,
656+
event.top + event.height
657+
)
631658
);
632659

633660
const width = 100 / columnCount;

0 commit comments

Comments
 (0)