Bläddra i källkod

move mutateEventsWithId into EventPeriod

Adam Shaw 8 år sedan
förälder
incheckning
8aa42015c8
2 ändrade filer med 35 tillägg och 26 borttagningar
  1. 1 26
      src/models/EventManager.js
  2. 34 0
      src/models/EventPeriod.js

+ 1 - 26
src/models/EventManager.js

@@ -303,34 +303,9 @@ var EventManager = Class.extend(EmitterMixin, ListenerMixin, {
 	*/
 	mutateEventsWithId: function(eventDefId, eventDefMutation) {
 		var currentPeriod = this.currentPeriod;
-		var eventDefs;
-		var undoFuncs = [];
 
 		if (currentPeriod) {
-
-			currentPeriod.freeze();
-
-			eventDefs = currentPeriod.getEventDefsById(eventDefId);
-			eventDefs.forEach(function(eventDef) {
-				// add/remove esp because id might change
-				currentPeriod.removeEventDef(eventDef);
-				undoFuncs.push(eventDefMutation.mutateSingle(eventDef));
-				currentPeriod.addEventDef(eventDef);
-			});
-
-			currentPeriod.thaw();
-
-			return function() {
-				currentPeriod.freeze();
-
-				for (var i = 0; i < eventDefs.length; i++) {
-					currentPeriod.removeEventDef(eventDefs[i]);
-					undoFuncs[i]();
-					currentPeriod.addEventDef(eventDefs[i]);
-				}
-
-				currentPeriod.thaw();
-			};
+			return currentPeriod.mutateEventsWithId(eventDefId, eventDefMutation);
 		}
 
 		return function() { };

+ 34 - 0
src/models/EventPeriod.js

@@ -230,6 +230,40 @@ var EventPeriod = Class.extend(EmitterMixin, {
 	},
 
 
+	/*
+	Returns an undo function.
+	*/
+	mutateEventsWithId: function(eventDefId, eventDefMutation) {
+		var _this = this;
+		var eventDefs;
+		var undoFuncs = [];
+
+		this.freeze();
+
+		eventDefs = this.getEventDefsById(eventDefId);
+		eventDefs.forEach(function(eventDef) {
+			// add/remove esp because id might change
+			_this.removeEventDef(eventDef);
+			undoFuncs.push(eventDefMutation.mutateSingle(eventDef));
+			_this.addEventDef(eventDef);
+		});
+
+		this.thaw();
+
+		return function() {
+			_this.freeze();
+
+			for (var i = 0; i < eventDefs.length; i++) {
+				_this.removeEventDef(eventDefs[i]);
+				undoFuncs[i]();
+				_this.addEventDef(eventDefs[i]);
+			}
+
+			_this.thaw();
+		};
+	},
+
+
 	// Reporting and Triggering
 	// -----------------------------------------------------------------------------------------------------------------