Parcourir la source

get eventlimit working again

Adam Shaw il y a 8 ans
Parent
commit
ee6d19977f
2 fichiers modifiés avec 24 ajouts et 15 suppressions
  1. 10 9
      src/common/DayGrid.limit.js
  2. 14 6
      src/common/Grid.events.js

+ 10 - 9
src/common/DayGrid.limit.js

@@ -325,19 +325,20 @@ DayGrid.mixin({
 		var dayStart = dayDate.clone();
 		var dayEnd = dayStart.clone().add(1, 'days');
 		var dayRange = new UnzonedRange(dayStart, dayEnd);
+		var newSegs = [];
+		var i;
 
-		// build an array of the original events
-		var eventRanges = $.map(segs, function(seg) {
-			return seg.eventRange.constrainTo(dayRange);
-		});
-
-		var eventSpans = this.eventRangesToSpans(eventRanges);
-		var eventSegs = this.eventSpansToSegs(eventSegs);
+		for (i = 0; i < segs.length; i++) {
+			newSegs.push.apply(newSegs, // append
+				this.eventFootprintToSegs(segs[i].footprint, dayRange)
+			);
+		}
 
 		// force an order because eventsToSegs doesn't guarantee one
-		this.sortEventSegs(eventSegs);
+		// TODO: research if still needed
+		this.sortEventSegs(newSegs);
 
-		return eventSegs;
+		return newSegs;
 	},
 
 

+ 14 - 6
src/common/Grid.events.js

@@ -1100,11 +1100,18 @@ Grid.mixin({
 	// Given an event's span (unzoned start/end and other misc data), and the event itself,
 	// slices into segments and attaches event-derived properties to them.
 	// eventSpan - { start, end, isStart, isEnd, otherthings... }
-	eventFootprintToSegs: function(eventFootprint) {
+	// constraintRange allow additional clipping. optional.
+	eventFootprintToSegs: function(eventFootprint, constraintRange) {
 		var dateRange = eventFootprint.componentFootprint.dateRange;
-		var segs = this.componentFootprintToSegs(eventFootprint.componentFootprint);
+		var segs;
 		var i, seg;
 
+		if (constraintRange) {
+			dateRange = dateRange.constrainTo(constraintRange);
+		}
+
+		segs = this.componentFootprintToSegs(eventFootprint.componentFootprint);
+
 		for (i = 0; i < segs.length; i++) {
 			seg = segs[i];
 
@@ -1116,8 +1123,9 @@ Grid.mixin({
 			}
 
 			seg.event = eventFootprint.eventInstance.toLegacy();
-			seg.eventStartMS = dateRange.startMs;
-			seg.eventDurationMS = dateRange.endMs - dateRange.startMs;
+			seg.footprint = eventFootprint;
+			seg.footprintStartMs = dateRange.startMs;
+			seg.footprintDurationMs = dateRange.endMs - dateRange.startMs;
 		}
 
 		return segs;
@@ -1131,8 +1139,8 @@ Grid.mixin({
 
 	// A cmp function for determining which segments should take visual priority
 	compareEventSegs: function(seg1, seg2) {
-		return seg1.eventStartMS - seg2.eventStartMS || // earlier events go first
-			seg2.eventDurationMS - seg1.eventDurationMS || // tie? longer events go first
+		return seg1.footprintStartMs - seg2.footprintStartMs || // earlier events go first
+			seg2.footprintDurationMs - seg1.footprintDurationMs || // tie? longer events go first
 			seg2.event.allDay - seg1.event.allDay || // tie? put all-day events first (booleans cast to 0/1)
 			compareByFieldSpecs(seg1.event, seg2.event, this.view.eventOrderSpecs);
 	}