瀏覽代碼

fixes to rezone, removeCnt

Adam Shaw 8 年之前
父節點
當前提交
3476d778b1
共有 5 個文件被更改,包括 22 次插入37 次删除
  1. 1 2
      src/Calendar.options.js
  2. 0 14
      src/models/EventManager.js
  3. 0 16
      src/models/EventPeriod.js
  4. 19 5
      src/models/event-source/ArrayEventSource.js
  5. 2 0
      src/util.js

+ 1 - 2
src/Calendar.options.js

@@ -73,8 +73,7 @@ Calendar.mixin({
 				return;
 			}
 			else if (optionName === 'timezone') {
-				this.eventManager.rezoneEvents();
-				this.refetchEvents();
+				this.view.flash('initialEvents');
 				return;
 			}
 		}

+ 0 - 14
src/models/EventManager.js

@@ -198,13 +198,6 @@ var EventManager = Class.extend(EmitterMixin, ListenerMixin, {
 	},
 
 
-	iterEventDefs: function(func) {
-		if (this.currentPeriod) {
-			this.currentPeriod.iterEventDefs(func);
-		}
-	},
-
-
 	addEventDef: function(eventDef, isSticky) {
 		if (isSticky) {
 			this.stickySource.addEventDef(eventDef);
@@ -231,13 +224,6 @@ var EventManager = Class.extend(EmitterMixin, ListenerMixin, {
 	// -----------------------------------------------------------------------------------------------------------------
 
 
-	rezoneEvents: function() {
-		this.iterEventDefs(function(eventDef) {
-			eventDef.rezone();
-		});
-	},
-
-
 	/*
 	Returns an undo function.
 	*/

+ 0 - 16
src/models/EventPeriod.js

@@ -134,22 +134,6 @@ var EventPeriod = Class.extend(EmitterMixin, {
 	},
 
 
-	iterEventDefs: function(func) {
-		var eventDefsById = this.eventDefId;
-		var id;
-		var eventDefs;
-		var i;
-
-		for (id in eventDefsById) {
-			eventDefs = eventDefsById[id];
-
-			for (i = 0; i < eventDefs.length; i++) {
-				func(eventDefs[i]);
-			}
-		}
-	},
-
-
 	addEventDefs: function(eventDefs) {
 		for (var i = 0; i < eventDefs.length; i++) {
 			this.addEventDef(eventDefs[i]);

+ 19 - 5
src/models/event-source/ArrayEventSource.js

@@ -3,6 +3,7 @@ var ArrayEventSource = EventSource.extend({
 
 	rawEventDefs: null, // unparsed
 	eventDefs: null,
+	currentTimezone: null,
 
 
 	constructor: function(calendar) {
@@ -17,11 +18,24 @@ var ArrayEventSource = EventSource.extend({
 	},
 
 
-	/*
-	disregards given start/end arguments
-	*/
-	fetch: function() {
-		return Promise.resolve(this.eventDefs);
+	fetch: function(start, end, timezone) {
+		var eventDefs = this.eventDefs;
+		var i;
+
+		if (
+			this.currentTimezone &&
+			this.currentTimezone !== timezone
+		) {
+			for (i = 0; i < eventDefs.length; i++) {
+				if (eventDefs[i] instanceof SingleEventDef) {
+					eventDefs[i].rezone();
+				}
+			}
+		}
+
+		this.currentTimezone = timezone;
+
+		return Promise.resolve(eventDefs);
 	},
 
 

+ 2 - 0
src/util.js

@@ -937,6 +937,7 @@ function removeMatching(array, testFunc) {
 	while (i < array.length) {
 		if (testFunc(array[i])) { // truthy value means *remove*
 			array.splice(i, 1);
+			removeCnt++;
 		}
 		else {
 			i++;
@@ -954,6 +955,7 @@ function removeExact(array, exactVal) {
 	while (i < array.length) {
 		if (array[i] === exactVal) {
 			array.splice(i, 1);
+			removeCnt++;
 		}
 		else {
 			i++;