Ver Fonte

no empty mutation operations. null instead

Adam Shaw há 8 anos atrás
pai
commit
ae32204861

+ 6 - 6
src/common/Grid.events.js

@@ -524,10 +524,10 @@ Grid.mixin({
 		dateMutation.clearEnd = clearEnd;
 		dateMutation.forceTimed = forceTimed;
 		dateMutation.forceAllDay = forceAllDay;
-		dateMutation.dateDelta = dateDelta;
+		dateMutation.setDateDelta(dateDelta);
 
 		eventDefMutation = new EventDefMutation();
-		eventDefMutation.dateMutation = dateMutation;
+		eventDefMutation.setDateMutation(dateMutation);
 
 		return eventDefMutation;
 	},
@@ -837,10 +837,10 @@ Grid.mixin({
 		if (event.start.clone().add(startDelta) < eventEnd) {
 
 			dateMutation = new EventDefDateMutation();
-			dateMutation.startDelta = startDelta;
+			dateMutation.setStartDelta(startDelta);
 
 			eventDefMutation = new EventDefMutation();
-			eventDefMutation.dateMutation = dateMutation;
+			eventDefMutation.setDateMutation(dateMutation);
 
 			return eventDefMutation;
 		}
@@ -862,10 +862,10 @@ Grid.mixin({
 		if (eventEnd.add(endDelta) > event.start) {
 
 			dateMutation = new EventDefDateMutation();
-			dateMutation.endDelta = endDelta;
+			dateMutation.setEndDelta(endDelta);
 
 			eventDefMutation = new EventDefMutation();
-			eventDefMutation.dateMutation = dateMutation;
+			eventDefMutation.setDateMutation(dateMutation);
 
 			return eventDefMutation;
 		}

+ 37 - 8
src/models/event/EventDefDateMutation.js

@@ -4,6 +4,9 @@ var EventDefDateMutation = Class.extend({
 	clearEnd: false,
 	forceTimed: false,
 	forceAllDay: false,
+
+	// Durations. if 0-ms duration, will be null instead.
+	// Callers should not set this directly.
 	dateDelta: null,
 	startDelta: null,
 	endDelta: null,
@@ -87,13 +90,39 @@ var EventDefDateMutation = Class.extend({
 	},
 
 
+	setDateDelta: function(dateDelta) {
+		if (dateDelta && dateDelta.valueOf()) {
+			this.dateDelta = dateDelta;
+		}
+		else {
+			this.dateDelta = null;
+		}
+	},
+
+
+	setStartDelta: function(startDelta) {
+		if (startDelta && startDelta.valueOf()) {
+			this.startDelta = startDelta;
+		}
+		else {
+			this.startDelta = null;
+		}
+	},
+
+
+	setEndDelta: function(endDelta) {
+		if (endDelta && endDelta.valueOf()) {
+			this.endDelta = endDelta;
+		}
+		else {
+			this.endDelta = null;
+		}
+	},
+
+
 	isEmpty: function() {
-		return !this.clearEnd &&
-			!this.forceTimed &&
-			!this.forceAllDay &&
-			(!this.dateDelta || !this.dateDelta.valueOf()) &&
-			(!this.startDelta || !this.startDelta.valueOf()) &&
-			(!this.endDelta || !this.endDelta.valueOf());
+		return !this.clearEnd && !this.forceTimed && !this.forceAllDay &&
+			!this.dateDelta && !this.startDelta && !this.endDelta;
 	}
 
 });
@@ -132,8 +161,8 @@ EventDefDateMutation.createFromDiff = function(dateProfile0, dateProfile1, large
 	mutation.clearEnd = clearEnd;
 	mutation.forceTimed = forceTimed;
 	mutation.forceAllDay = forceAllDay;
-	mutation.dateDelta = dateDelta;
-	mutation.endDelta = endDelta;
+	mutation.setDateDelta(dateDelta);
+	mutation.setEndDelta(endDelta);
 
 	return mutation;
 };

+ 13 - 1
src/models/event/EventDefMutation.js

@@ -1,6 +1,8 @@
 
 var EventDefMutation = Class.extend({
 
+	// won't ever be empty. will be null instead.
+	// callers should use setDateMutation for setting.
 	dateMutation: null,
 
 	// hacks to get updateEvent/createFromRawProps to work.
@@ -46,8 +48,18 @@ var EventDefMutation = Class.extend({
 	},
 
 
+	setDateMutation: function(dateMutation) {
+		if (dateMutation && !dateMutation.isEmpty()) {
+			this.dateMutation = dateMutation;
+		}
+		else {
+			this.dateMutation = null;
+		}
+	},
+
+
 	isEmpty: function() {
-		return !this.dateMutation || this.dateMutation.isEmpty();
+		return !this.dateMutation;
 	}
 
 });