@@ -21,16 +21,21 @@ function positionFromDate(date, min, step){
21
21
return dates . diff ( min , dates . merge ( min , date ) , 'minutes' )
22
22
}
23
23
24
- function overlaps ( event , events , { startAccessor, endAccessor } ) {
24
+ function overlaps ( event , events , { startAccessor, endAccessor } , last ) {
25
25
let eStart = get ( event , startAccessor ) ;
26
+ let offset = last ;
26
27
27
28
function overlap ( eventB ) {
28
29
return dates . lt ( eStart , get ( eventB , endAccessor ) )
29
30
}
30
31
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
34
39
}
35
40
36
41
let DaySlot = React . createClass ( {
@@ -120,7 +125,8 @@ let DaySlot = React.createClass({
120
125
, selected, eventTimeRangeFormat, eventComponent
121
126
, startAccessor, endAccessor, titleAccessor } = this . props ;
122
127
123
- let EventComponent = eventComponent ;
128
+ let EventComponent = eventComponent
129
+ , lastLeftOffset = 0 ;
124
130
125
131
events . sort ( ( a , b ) => + get ( a , startAccessor ) - + get ( b , startAccessor ) )
126
132
@@ -130,9 +136,10 @@ let DaySlot = React.createClass({
130
136
let startSlot = positionFromDate ( start , min , step ) ;
131
137
let endSlot = positionFromDate ( end , min , step ) ;
132
138
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 ) )
134
141
135
- let style = this . _slotStyle ( startSlot , endSlot , leftOffset )
142
+ let style = this . _slotStyle ( startSlot , endSlot , lastLeftOffset )
136
143
137
144
let title = get ( event , titleAccessor )
138
145
let label = localizer . format ( { start, end } , eventTimeRangeFormat , culture ) ;
@@ -149,7 +156,7 @@ let DaySlot = React.createClass({
149
156
onClick = { this . _select . bind ( null , event ) }
150
157
className = { cn ( 'rbc-event' , className , {
151
158
'rbc-selected' : _isSelected ,
152
- 'rbc-event-overlaps' : leftOffset !== 0
159
+ 'rbc-event-overlaps' : lastLeftOffset !== 0
153
160
} ) }
154
161
>
155
162
< div className = 'rbc-event-label' > { label } </ div >
0 commit comments