Bladeren bron

start to kill renderRange

Adam Shaw 8 jaren geleden
bovenliggende
commit
a85ed53823

+ 1 - 1
src/Calendar.render.js

@@ -257,7 +257,7 @@ Calendar.mixin({
 		if (
 			!this.ignoreWindowResize &&
 			ev.target === window && // so we don't process jqui "resize" events that have bubbled up
-			this.view.renderRange // view has already been rendered
+			this.view.renderUnzonedRange // view has already been rendered
 		) {
 			if (this.updateSize(true)) {
 				this.view.publiclyTrigger('windowResize', this.el[0]);

+ 2 - 2
src/agenda/AgendaView.js

@@ -65,10 +65,10 @@ var AgendaView = FC.AgendaView = View.extend({
 	// Renders the view into `this.el`, which has already been assigned
 	renderDates: function() {
 
-		this.timeGrid.setRange(this.renderRange);
+		this.timeGrid.setRange(this.renderUnzonedRange.getZonedRange(this.calendar, this.isRangeAllDay));
 
 		if (this.dayGrid) {
-			this.dayGrid.setRange(this.renderRange);
+			this.dayGrid.setRange(this.renderUnzonedRange.getZonedRange(this.calendar, this.isRangeAllDay));
 		}
 
 		this.el.addClass('fc-agenda-view').html(this.renderSkeletonHtml());

+ 1 - 1
src/basic/BasicView.js

@@ -64,7 +64,7 @@ var BasicView = FC.BasicView = View.extend({
 	renderDates: function() {
 
 		this.dayGrid.breakOnWeeks = /year|month|week/.test(this.currentRangeUnit); // do before Grid::setRange
-		this.dayGrid.setRange(this.renderRange);
+		this.dayGrid.setRange(this.renderUnzonedRange.getZonedRange(this.calendar, this.isRangeAllDay));
 
 		this.dayNumbersVisible = this.dayGrid.rowCnt > 1; // TODO: make grid responsible
 		if (this.opt('weekNumbers')) {

+ 2 - 2
src/common/View.date-range.js

@@ -10,7 +10,7 @@ View.mixin({
 
 	// date range with a rendered skeleton
 	// includes not-active days that need some sort of DOM
-	renderRange: null,
+	renderUnzonedRange: null, // was renderRange
 
 	// dates that display events and accept drag-n-drop
 	activeRange: null,
@@ -41,7 +41,7 @@ View.mixin({
 		this.currentUnzonedRange = new UnzonedRange(dateProfile.currentRange.start, dateProfile.currentRange.end);
 		this.currentRangeUnit = dateProfile.currentRangeUnit;
 		this.isRangeAllDay = dateProfile.isRangeAllDay;
-		this.renderRange = dateProfile.renderRange;
+		this.renderUnzonedRange = new UnzonedRange(dateProfile.renderRange.start, dateProfile.renderRange.end);
 		this.activeRange = dateProfile.activeRange;
 		this.validRange = dateProfile.validRange;
 		this.dateIncrement = dateProfile.dateIncrement;

+ 4 - 4
src/list/ListView.js

@@ -43,7 +43,7 @@ var ListView = View.extend({
 	},
 
 	renderDates: function() {
-		this.grid.setRange(this.renderRange); // needs to process range-related options
+		this.grid.setRange(this.renderUnzonedRange.getZonedRange(this.calendar, this.isRangeAllDay)); // needs to process range-related options
 	},
 
 	isEventResizable: function(event) {
@@ -68,12 +68,12 @@ var ListViewGrid = Grid.extend({
 	// slices by day
 	componentFootprintToSegs: function(footprint) {
 		var view = this.view;
-		var dayStart = view.renderRange.start.clone().time(0); // timed, so segs get times!
+		var dayStart = this.start.clone().time(0); // timed, so segs get times!
 		var dayIndex = 0;
 		var seg;
 		var segs = [];
 
-		while (dayStart < view.renderRange.end) {
+		while (dayStart < this.end) {
 
 			seg = intersectRanges(footprint.unzonedRange.getRange(), {
 				start: dayStart,
@@ -165,7 +165,7 @@ var ListViewGrid = Grid.extend({
 
 				// append a day header
 				tbodyEl.append(this.dayHeaderHtml(
-					this.view.renderRange.start.clone().add(dayIndex, 'days')
+					this.start.clone().add(dayIndex, 'days')
 				));
 
 				this.sortEventSegs(daySegs);

+ 15 - 0
src/models/UnzonedRange.js

@@ -97,6 +97,21 @@ var UnzonedRange = FC.UnzonedRange = Class.extend({
 
 	getRange: function() {
 		return { start: this.getStart(), end: this.getEnd() };
+	},
+
+	getZonedRange: function(calendar, isAllDay) {
+		var start = FC.moment.utc(this.startMs);
+		var end = FC.moment.utc(this.endMs);
+
+		if (isAllDay) {
+			start.stripTime();
+			end.stripTime();
+		}
+
+		start = calendar.moment(start);
+		end = calendar.moment(end);
+
+		return { start: start, end: end };
 	}
 
 });

+ 5 - 2
tests/view-dates/ViewDateUtils.js

@@ -3,12 +3,15 @@ var ViewDateUtils = {
 
 	expectRenderRange: function(start, end) {
 		var currentView = currentCalendar.getView();
-		expect(currentView.renderRange.start).toEqualMoment(start);
-		expect(currentView.renderRange.end).toEqualMoment(end);
+		var renderRange = currentView.renderUnzonedRange.getZonedRange(currentCalendar, currentView.isRangeAllDay);
+
+		expect(renderRange.start).toEqualMoment(start);
+		expect(renderRange.end).toEqualMoment(end);
 	},
 
 	expectActiveRange: function(start, end) {
 		var currentView = currentCalendar.getView();
+
 		expect(currentView.activeRange.start).toEqualMoment(start);
 		expect(currentView.activeRange.end).toEqualMoment(end);
 	}