Adam Shaw 8 лет назад
Родитель
Сommit
525bb9496b
3 измененных файлов с 30 добавлено и 23 удалено
  1. 1 1
      src.json
  2. 20 9
      src/models/EventDefinitionCollection.js
  3. 9 13
      src/models/EventInstanceCollection.js

+ 1 - 1
src.json

@@ -51,7 +51,7 @@
     "models/SingleEventDefinition.js",
     "models/RecurringEventDefinition.js",
     "models/EventDefinitionCollection.js",
-    "models/EventPeriod.js",
+    "models/EventInstanceCollection.js",
     "EventManager.js",
     "basic/BasicView.js",
     "basic/MonthView.js",

+ 20 - 9
src/models/EventDefinitionCollection.js

@@ -41,8 +41,23 @@ var EventDefinitionCollection = Class.extend({
 		// TODO
 	},
 
-	buildPeriods: function(start, end) {
-		var eventPeriods = [];
+	buildRenderRanges: function(start, end, calendar) {
+		var renderRanges = [];
+		var instanceGroups = this.buildInstanceCollections(start, end);
+		var constraintRange = new UnzonedRange(start, end);
+		var i;
+
+		for (i = 0; i < instanceGroups.length; i++) {
+			renderRanges.push.apply(renderRanges, // append
+				instanceGroups[i].buildRenderRanges(constraintRange, calendar)
+			);
+		}
+
+		return renderRanges;
+	},
+
+	buildInstanceCollections: function(start, end) {
+		var eventInstanceCollections = [];
 		var eventDefsById = this.eventDefsById;
 		var eventId;
 		var relatedEventDefs;
@@ -62,16 +77,12 @@ var EventDefinitionCollection = Class.extend({
 				);
 			}
 
-			eventPeriods.push(
-				new EventPeriod(
-					relatedEventInstances,
-					new UnzonedRange(start, end),
-					this.calendar // for computing event ends
-				)
+			eventInstanceCollections.push(
+				new EventInstanceCollection(relatedEventInstances)
 			);
 		}
 
-		return eventPeriods;
+		return eventInstanceCollections;
 	}
 
 });

+ 9 - 13
src/models/EventPeriod.js → src/models/EventInstanceCollection.js

@@ -1,17 +1,13 @@
 
-var EventPeriod = Class.extend({
+var EventInstanceCollection = Class.extend({
 
 	eventInstances: null,
-	constraintRange: null,
-	calendar: null,
 
-	constructor: function(eventInstances, constraintRange, calendar) {
+	constructor: function(eventInstances) {
 		this.eventInstances = eventInstances;
-		this.constraintRange = constraintRange;
-		this.calendar = calendar;
 	},
 
-	buildRanges: function() {
+	buildRanges: function(constraintRange, calendar) {
 		var eventRanges = [];
 		var eventInstances = this.eventInstances;
 		var i, eventInstance;
@@ -20,9 +16,9 @@ var EventPeriod = Class.extend({
 		for (i = 0; i < eventInstances.length; i++) {
 			eventInstance = eventInstances[i];
 
-			eventRange = eventInstance.eventDateProfile.buildRange(this.calendar); // merely UnzonedRange here
-			eventRange = new EventRange(eventInstance, range.startMs, range.endMs);
-			eventRange = eventRange.constrainTo(this.constraintRange);
+			eventRange = eventInstance.eventDateProfile.buildRange(calendar);
+			eventRange = new EventRange(eventInstance, eventRange.startMs, eventRange.endMs);
+			eventRange = eventRange.constrainTo(constraintRange);
 
 			if (eventRange) {
 				eventRanges.push(eventRange);
@@ -32,12 +28,12 @@ var EventPeriod = Class.extend({
 		return eventRanges;
 	},
 
-	buildRenderRanges: function() {
+	buildRenderRanges: function(constraintRange, calendar) {
 		var eventInstances = this.eventInstances;
-		var ranges = this.buildRanges();
+		var ranges = this.buildRanges(constraintRange, calendar);
 
 		if (eventInstances.length && eventInstances[0].rendering === 'inverse-background') {
-			ranges = invertEventRanges(ranges, this.constraintRange, eventInstances[0]);
+			ranges = invertEventRanges(ranges, constraintRange, eventInstances[0]);
 		}
 
 		return ranges;