Skip to content

Commit 0eeb43f

Browse files
committed
[fixed] event layout sort
1 parent 0574eed commit 0eeb43f

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

src/utils/eventLevels.js

+13-9
Original file line numberDiff line numberDiff line change
@@ -72,16 +72,20 @@ export function segsOverlap(seg, otherSegs) {
7272

7373

7474
export function sortEvents(evtA, evtB, { startAccessor, endAccessor, allDayAccessor }) {
75-
let durA = dates.duration(
76-
get(evtA, startAccessor)
77-
, get(evtA, endAccessor)
78-
, 'day')
79-
, durB = dates.duration(
75+
let startSort = +dates.startOf(get(evtA, startAccessor), 'day') - +dates.startOf(get(evtB, startAccessor), 'day')
76+
77+
let durA = dates.diff(
78+
get(evtA, startAccessor)
79+
, dates.ceil(get(evtA, endAccessor), 'day')
80+
, 'day');
81+
82+
let durB = dates.diff(
8083
get(evtB, startAccessor)
81-
, get(evtB, endAccessor)
84+
, dates.ceil(get(evtB, endAccessor), 'day')
8285
, 'day');
8386

84-
return (+get(evtA, startAccessor) - +get(evtB, startAccessor))
85-
|| (durB - durA)
86-
|| !!get(evtA, allDayAccessor) - !!get(evtB, allDayAccessor)
87+
return startSort // sort by start Day first
88+
|| Math.max(durB, 1) - Math.max(durA, 1) // events spanning multiple days go first
89+
|| !!get(evtB, allDayAccessor) - !!get(evtA, allDayAccessor) // then allDay single day events
90+
|| +get(evtA, startAccessor) - +get(evtB, startAccessor) // then sort by start time
8791
}

0 commit comments

Comments
 (0)