Browse Source

drag/resize/helper uses footprints

Adam Shaw 8 years ago
parent
commit
7b0650d89a

+ 8 - 9
src/agenda/AgendaView.js

@@ -333,15 +333,14 @@ var AgendaView = FC.AgendaView = View.extend({
 
 
 	// A returned value of `true` signals that a mock "helper" event has been rendered.
-	renderDrag: function(eventRanges, seg) {
-		var isAllDay = eventRanges.length &&
-			eventRanges[0].eventInstance.dateProfile.isAllDay();
-
-		if (!isAllDay) {
-			return this.timeGrid.renderDrag(eventRanges, seg);
-		}
-		else if (this.dayGrid) {
-			return this.dayGrid.renderDrag(eventRanges, seg);
+	renderDrag: function(eventFootprints, seg) {
+		if (eventFootprints.length) {
+			if (!eventFootprints[0].componentFootprint.isAllDay) {
+				return this.timeGrid.renderDrag(eventFootprints, seg);
+			}
+			else if (this.dayGrid) {
+				return this.dayGrid.renderDrag(eventFootprints, seg);
+			}
 		}
 	},
 

+ 2 - 2
src/common/ChronoComponent.js

@@ -204,8 +204,8 @@ var ChronoComponent = Model.extend({
 	// Renders a visual indication of a event or external-element drag over the given drop zone.
 	// If an external-element, seg will be `null`.
 	// Must return elements used for any mock events.
-	renderDrag: function(eventRanges, seg) {
-		this.callChildren('renderDrag', eventRanges, seg);
+	renderDrag: function(eventFootprints, seg) {
+		this.callChildren('renderDrag', eventFootprints, seg);
 	},
 
 

+ 4 - 6
src/common/DayGrid.js

@@ -317,8 +317,7 @@ var DayGrid = FC.DayGrid = Grid.extend(DayTableMixin, {
 
 	// Renders a visual indication of an event or external element being dragged.
 	// `eventLocation` has zoned start and end (optional)
-	renderDrag: function(eventRanges, seg) {
-		var eventFootprints = this.eventRangesToEventFootprints(eventRanges);
+	renderDrag: function(eventFootprints, seg) {
 		var i;
 
 		for (i = 0; i < eventFootprints.length; i++) {
@@ -327,7 +326,7 @@ var DayGrid = FC.DayGrid = Grid.extend(DayTableMixin, {
 
 		// if a segment from the same calendar but another component is being dragged, render a helper event
 		if (seg && seg.component !== this) {
-			return this.renderHelperEventRanges(eventRanges, seg); // returns mock event elements
+			return this.renderHelperEventFootprints(eventFootprints, seg); // returns mock event elements
 		}
 	},
 
@@ -344,15 +343,14 @@ var DayGrid = FC.DayGrid = Grid.extend(DayTableMixin, {
 
 
 	// Renders a visual indication of an event being resized
-	renderEventResize: function(eventRanges, seg) {
-		var eventFootprints = this.eventRangesToEventFootprints(eventRanges);
+	renderEventResize: function(eventFootprints, seg) {
 		var i;
 
 		for (i = 0; i < eventFootprints.length; i++) {
 			this.renderHighlight(eventFootprints[i].componentFootprint);
 		}
 
-		return this.renderHelperEventRanges(eventRanges, seg); // returns mock event elements
+		return this.renderHelperEventFootprints(eventFootprints, seg); // returns mock event elements
 	},
 
 

+ 28 - 21
src/common/Grid.events.js

@@ -129,10 +129,9 @@ Grid.mixin({
 	// Caller must ask if whole-day business hours are needed.
 	// If no `businessHours` configuration value is specified, assumes the calendar default.
 	buildBusinessHourSegs: function(wholeDay, businessHours) {
-		var eventRanges = this.buildBusinessHourRanges(wholeDay, businessHours);
-		var eventFootprints = this.eventRangesToEventFootprints(eventRanges);
-
-		return this.eventFootprintsToSegs(eventFootprints);
+		return this.eventFootprintsToSegs(
+			this.buildBusinessHourEventFootprints(wholeDay, businessHours)
+		);
 	},
 
 
@@ -140,13 +139,14 @@ Grid.mixin({
 	// Caller must ask if whole-day business hours are needed.
 	// If no `businessHours` configuration value is specified, assumes the calendar default.
 	// FOR RENDERING
-	buildBusinessHourRanges: function(wholeDay, businessHours) {
+	buildBusinessHourEventFootprints: function(wholeDay, businessHours) {
 		var calendar = this.view.calendar;
 		var eventInstanceGroup;
+		var eventRanges;
 
 		if (businessHours == null) {
 			// fallback
-			// access from calendawr. don't access from view. doesn't update with dynamic options.
+			// access from calendar. don't access from view. doesn't update with dynamic options.
 			businessHours = calendar.opt('businessHours');
 		}
 
@@ -158,13 +158,16 @@ Grid.mixin({
 		);
 
 		if (eventInstanceGroup) {
-			return eventInstanceGroup.sliceRenderRanges(
+			eventRanges = eventInstanceGroup.sliceRenderRanges(
 				new UnzonedRange(this.start, this.end),
 				calendar
 			);
 		}
+		else {
+			eventRanges = [];
+		}
 
-		return [];
+		return this.eventRangesToEventFootprints(eventRanges);
 	},
 
 
@@ -396,9 +399,11 @@ Grid.mixin({
 				if (
 					eventDefMutation &&
 					(dragHelperEls = view.renderDrag(
-						mutatedEventInstanceGroup.sliceRenderRanges(
-							new UnzonedRange(_this.start, _this.end),
-							calendar
+						_this.eventRangesToEventFootprints(
+							mutatedEventInstanceGroup.sliceRenderRanges(
+								new UnzonedRange(_this.start, _this.end),
+								calendar
+							)
 						),
 						seg
 					))
@@ -610,9 +615,11 @@ Grid.mixin({
 
 				if (singleEventDef) {
 					_this.renderDrag( // called without a seg parameter
-						mutatedEventInstanceGroup.sliceRenderRanges(
-							new UnzonedRange(_this.start, _this.end),
-							view.calendar
+						_this.eventRangesToEventFootprints(
+							mutatedEventInstanceGroup.sliceRenderRanges(
+								new UnzonedRange(_this.start, _this.end),
+								view.calendar
+							)
 						)
 					);
 				}
@@ -692,11 +699,10 @@ Grid.mixin({
 
 
 	// Renders a visual indication of an event or external element being dragged.
-	// `dropLocation` contains hypothetical start/end/allDay values the event would have if dropped. end can be null.
 	// `seg` is the internal segment object that is being dragged. If dragging an external element, `seg` is null.
 	// A truthy returned value indicates this method has rendered a helper element.
 	// Must return elements used for any mock events.
-	renderDrag: function(eventRanges, seg) {
+	renderDrag: function(eventFootprints, seg) {
 		// subclasses must implement
 	},
 
@@ -774,9 +780,11 @@ Grid.mixin({
 					view.hideEvent(event);
 
 					_this.renderEventResize(
-						mutatedEventInstanceGroup.sliceRenderRanges(
-							new UnzonedRange(_this.start, _this.end),
-							calendar
+						_this.eventRangesToEventFootprints(
+							mutatedEventInstanceGroup.sliceRenderRanges(
+								new UnzonedRange(_this.start, _this.end),
+								calendar
+							)
 						),
 						seg
 					);
@@ -875,9 +883,8 @@ Grid.mixin({
 
 
 	// Renders a visual indication of an event being resized.
-	// `range` has the updated dates of the event. `seg` is the original segment object involved in the drag.
 	// Must return elements used for any mock events.
-	renderEventResize: function(range, seg) {
+	renderEventResize: function(eventFootprints, seg) {
 		// subclasses must implement
 	},
 

+ 0 - 8
src/common/Grid.js

@@ -443,14 +443,6 @@ var Grid = FC.Grid = ChronoComponent.extend({
 	// TODO: should probably move this to Grid.events, like we did event dragging / resizing
 
 
-	// just a convenient connector to renderHelperEventFootprints
-	renderHelperEventRanges: function(eventRanges, sourceSeg) {
-		return this.renderHelperEventFootprints(
-			this.eventRangesToEventFootprints(eventRanges)
-		);
-	},
-
-
 	renderHelperEventFootprints: function(eventFootprints, sourceSeg) {
 		return this.renderHelperEventFootprintEls(eventFootprints, sourceSeg)
 			.addClass('fc-helper');

+ 4 - 7
src/common/TimeGrid.js

@@ -360,20 +360,17 @@ var TimeGrid = FC.TimeGrid = Grid.extend(DayTableMixin, {
 
 	// Renders a visual indication of an event being dragged over the specified date(s).
 	// A returned value of `true` signals that a mock "helper" event has been rendered.
-	renderDrag: function(eventRanges, seg) {
-		var eventFootprints;
+	renderDrag: function(eventFootprints, seg) {
 		var i;
 
 		if (seg) { // if there is event information for this drag, render a helper event
 
 			// returns mock event elements
 			// signal that a helper has been rendered
-			return this.renderHelperEventRanges(eventRanges);
+			return this.renderHelperEventFootprints(eventFootprints);
 		}
 		else { // otherwise, just render a highlight
 
-			eventFootprints = this.eventRangesToEventFootprints(eventRanges);
-
 			for (i = 0; i < eventFootprints.length; i++) {
 				this.renderHighlight(eventFootprints[i].componentFootprint);
 			}
@@ -393,8 +390,8 @@ var TimeGrid = FC.TimeGrid = Grid.extend(DayTableMixin, {
 
 
 	// Renders a visual indication of an event being resized
-	renderEventResize: function(eventRanges, seg) {
-		return this.renderHelperEventRanges(eventRanges, seg); // returns mock event elements
+	renderEventResize: function(eventFootprints, seg) {
+		return this.renderHelperEventFootprints(eventFootprints, seg); // returns mock event elements
 	},