@@ -21,16 +21,21 @@ function positionFromDate(date, min, step){
2121 return dates . diff ( min , dates . merge ( min , date ) , 'minutes' )
2222}
2323
24- function overlaps ( event , events , { startAccessor, endAccessor } ) {
24+ function overlaps ( event , events , { startAccessor, endAccessor } , last ) {
2525 let eStart = get ( event , startAccessor ) ;
26+ let offset = last ;
2627
2728 function overlap ( eventB ) {
2829 return dates . lt ( eStart , get ( eventB , endAccessor ) )
2930 }
3031
31- return events . reduce ( ( sum , otherEvent ) => {
32- return sum + ( overlap ( otherEvent ) ? 1 : 0 )
33- } , 0 )
32+ if ( ! events . length ) return last - 1
33+ events . reverse ( ) . some ( prevEvent => {
34+ if ( overlap ( prevEvent ) ) return true
35+ offset = offset - 1
36+ } )
37+
38+ return offset
3439}
3540
3641let DaySlot = React . createClass ( {
@@ -120,7 +125,8 @@ let DaySlot = React.createClass({
120125 , selected, eventTimeRangeFormat, eventComponent
121126 , startAccessor, endAccessor, titleAccessor } = this . props ;
122127
123- let EventComponent = eventComponent ;
128+ let EventComponent = eventComponent
129+ , lastLeftOffset = 0 ;
124130
125131 events . sort ( ( a , b ) => + get ( a , startAccessor ) - + get ( b , startAccessor ) )
126132
@@ -130,9 +136,10 @@ let DaySlot = React.createClass({
130136 let startSlot = positionFromDate ( start , min , step ) ;
131137 let endSlot = positionFromDate ( end , min , step ) ;
132138
133- let leftOffset = overlaps ( event , events . slice ( 0 , idx ) , this . props )
139+ lastLeftOffset = Math . max ( 0 ,
140+ overlaps ( event , events . slice ( 0 , idx ) , this . props , lastLeftOffset + 1 ) )
134141
135- let style = this . _slotStyle ( startSlot , endSlot , leftOffset )
142+ let style = this . _slotStyle ( startSlot , endSlot , lastLeftOffset )
136143
137144 let title = get ( event , titleAccessor )
138145 let label = localizer . format ( { start, end } , eventTimeRangeFormat , culture ) ;
@@ -149,7 +156,7 @@ let DaySlot = React.createClass({
149156 onClick = { this . _select . bind ( null , event ) }
150157 className = { cn ( 'rbc-event' , className , {
151158 'rbc-selected' : _isSelected ,
152- 'rbc-event-overlaps' : leftOffset !== 0
159+ 'rbc-event-overlaps' : lastLeftOffset !== 0
153160 } ) }
154161 >
155162 < div className = 'rbc-event-label' > { label } </ div >
0 commit comments