Adam Shaw 8 rokov pred
rodič
commit
36ce3d9af2
1 zmenil súbory, kde vykonal 25 pridanie a 14 odobranie
  1. 25 14
      src/models/EventMutation.js

+ 25 - 14
src/models/EventMutation.js

@@ -9,14 +9,33 @@ var EventMutation = Class.extend({ // TODO: EventDefMutation
 
 
 	// will not provide an undo function
 	// will not provide an undo function
 	mutateSingleEventDefinition: function(eventDef, isAmbigTimezone) {
 	mutateSingleEventDefinition: function(eventDef, isAmbigTimezone) {
-		eventDef.title = this.newTitle;
-		eventDef.rendering = this.newRendering;
-		$.extend(eventDef.miscProps, this.additionalMiscProps || {});
+		var origTitle = eventDef.title;
+		var origRendering = eventDef.rendering;
+		var origMiscProps = eventDef.miscProps;
+		var undoDateMutation;
 
 
-		this.dateMutation.mutateSingleEventDefinition(
+		if (this.newTitle != null) {
+			eventDef.title = this.newTitle;
+		}
+
+		if (this.newRendering != null) {
+			eventDef.rendering = this.newRendering;
+		}
+
+		$.extend({}, eventDef.miscProps, this.additionalMiscProps || {});
+
+		undoDateMutation = this.dateMutation.mutateSingleEventDefinition(
 			eventDef,
 			eventDef,
 			isAmbigTimezone
 			isAmbigTimezone
 		);
 		);
+
+		return function() {
+			eventDef.title = origTitle;
+			eventDef.rendering = origRendering;
+			eventDef.miscProps = origMiscProps;
+
+			undoDateMutation();
+		};
 	}
 	}
 
 
 });
 });
@@ -27,7 +46,6 @@ EventMutation.createFromRawProps = function(eventInstance, newRawProps, largeUni
 	var newRendering = newRawProps.rendering;
 	var newRendering = newRawProps.rendering;
 	var additionalMiscProps = {};
 	var additionalMiscProps = {};
 	var propName;
 	var propName;
-	var newEventDateProfile;
 	var dateMutation;
 	var dateMutation;
 	var eventMutation;
 	var eventMutation;
 
 
@@ -37,15 +55,8 @@ EventMutation.createFromRawProps = function(eventInstance, newRawProps, largeUni
 		}
 		}
 	}
 	}
 
 
-	newEventDateProfile = new EventDateProfile(
-		calendar.moment(newRawProps.start),
-		newRawProps.end ? calendar.moment(newRawProps.end) : null
-	);
-
-	dateMutation = EventDateMutation.createFromDiff(
-		eventInstance.eventDateProfile,
-		newEventDateProfile,
-		largeUnit
+	dateMutation = EventDateMutation.createFromRawProps(
+		eventInstance, newRawProps, largeUnit, calendar
 	);
 	);
 
 
 	eventMutation = new EventMutation();
 	eventMutation = new EventMutation();