@@ -72,16 +72,20 @@ export function segsOverlap(seg, otherSegs) {
72
72
73
73
74
74
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 (
80
83
get ( evtB , startAccessor )
81
- , get ( evtB , endAccessor )
84
+ , dates . ceil ( get ( evtB , endAccessor ) , 'day' )
82
85
, 'day' ) ;
83
86
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
87
91
}
0 commit comments