فهرست منبع

make receiving of external event data work with renderqueue

Adam Shaw 8 سال پیش
والد
کامیت
834de2a6b9
2فایلهای تغییر یافته به همراه20 افزوده شده و 5 حذف شده
  1. 10 2
      src/models/EventManager.js
  2. 10 3
      src/models/EventPeriod.js

+ 10 - 2
src/models/EventManager.js

@@ -197,8 +197,16 @@ var EventManager = Class.extend(EmitterMixin, ListenerMixin, {
 
 
 	bindPeriod: function(eventPeriod) {
-		this.listenToAndEmit(eventPeriod, 'receive');
-		this.listenToAndEmit(eventPeriod, 'clear');
+		var _this = this;
+
+		this.listenToAndEmit(eventPeriod, {
+			'before:receive': function() {
+				_this.calendar.startBatchRender();
+			},
+			'after:receive': function() {
+				_this.calendar.stopBatchRender();
+			}
+		});
 	},
 
 

+ 10 - 3
src/models/EventPeriod.js

@@ -13,7 +13,7 @@ var EventInstanceDataSource = Class.extend(EmitterMixin, {
 
 	tryReset: function() {
 		if (this.isFinalized()) {
-			this.trigger('receive', new EventInstanceChangeset(
+			this.triggerChangeset(new EventInstanceChangeset(
 				true, // isClear
 				null, // removals
 				this.instanceRepo // additions
@@ -55,12 +55,12 @@ var EventInstanceDataSource = Class.extend(EmitterMixin, {
 		if (this.isFinalized()) {
 			if (outboundChangeset) {
 				this.outboundChangeset = null;
-				this.trigger('receive', outboundChangeset);
+				this.triggerChangeset(outboundChangeset);
 			}
 			else {
 				// hack for eventAfterAllRender
 				// also for DateComponents to know an empy, but populated, state
-				this.trigger('receive', new EventInstanceChangeset());
+				this.triggerChangeset(new EventInstanceChangeset());
 			}
 		}
 	},
@@ -68,6 +68,13 @@ var EventInstanceDataSource = Class.extend(EmitterMixin, {
 
 	isFinalized: function() {
 		return !this.freezeDepth;
+	},
+
+
+	triggerChangeset: function(changeset) {
+		this.trigger('before:receive');
+		this.trigger('receive', changeset);
+		this.trigger('after:receive');
 	}
 
 });