@@ -5,6 +5,7 @@ import EventRowMixin from './EventRowMixin'
55import { eventLevels } from './utils/eventLevels'
66import range from 'lodash/range'
77
8+ // Modified: Check if a segment spans through this slot (including events that started earlier)
89let isSegmentInSlot = ( seg , slot ) => seg . left <= slot && seg . right >= slot
910let eventsInSlot = ( segments , slot ) =>
1011 segments . filter ( ( seg ) => isSegmentInSlot ( seg , slot ) ) . map ( ( seg ) => seg . event )
@@ -24,10 +25,31 @@ class EventEndingRow extends React.Component {
2425 while ( current <= slots ) {
2526 let key = '_lvl_' + current
2627
28+ // Find segment that starts at or spans through current slot
2729 let { event, left, right, span } =
28- rowSegments . filter ( ( seg ) => isSegmentInSlot ( seg , current ) ) [ 0 ] || { } //eslint-disable-line
30+ rowSegments . filter ( ( seg ) => isSegmentInSlot ( seg , current ) ) [ 0 ] || { }
2931
3032 if ( ! event ) {
33+ // No visible event starts at this slot, but check if we need a "more" button
34+ // for hidden events that span this slot
35+ const hiddenEvents = this . getHiddenEventsForSlot ( segments , current )
36+ if ( hiddenEvents . length > 0 ) {
37+ let gap = current - lastEnd
38+ if ( gap ) {
39+ row . push ( EventRowMixin . renderSpan ( slots , gap , key + '_gap' ) )
40+ }
41+ row . push (
42+ EventRowMixin . renderSpan (
43+ slots ,
44+ 1 ,
45+ key ,
46+ this . renderShowMore ( segments , current )
47+ )
48+ )
49+ lastEnd = current = current + 1
50+ continue
51+ }
52+
3153 current ++
3254 continue
3355 }
@@ -64,6 +86,23 @@ class EventEndingRow extends React.Component {
6486 return < div className = "rbc-row" > { row } </ div >
6587 }
6688
89+ // New helper method to find hidden events for a slot
90+ getHiddenEventsForSlot ( segments , slot ) {
91+ // Get all events (visible and hidden) for this slot
92+ const allEventsInSlot = eventsInSlot ( segments , slot )
93+
94+ // Get visible events for this slot from the first level
95+ const rowSegments = eventLevels ( segments ) . levels [ 0 ]
96+ const visibleEventsInSlot = rowSegments
97+ . filter ( seg => isSegmentInSlot ( seg , slot ) )
98+ . map ( seg => seg . event )
99+
100+ // Return events that are in allEventsInSlot but not in visibleEventsInSlot
101+ return allEventsInSlot . filter (
102+ event => ! visibleEventsInSlot . some ( visEvent => visEvent === event )
103+ )
104+ }
105+
67106 canRenderSlotEvent ( slot , span ) {
68107 let { segments } = this . props
69108
0 commit comments