Просмотр исходного кода

bug where business hours wouldnt be repositioned after zoom

Adam Shaw 11 лет назад
Родитель
Сommit
f02ee4a99d
2 измененных файлов с 14 добавлено и 10 удалено
  1. 7 8
      src/common/TimeGrid.events.js
  2. 7 2
      src/common/TimeGrid.js

+ 7 - 8
src/common/TimeGrid.events.js

@@ -72,18 +72,17 @@ $.extend(TimeGrid.prototype, {
 
 
 	// Refreshes the CSS top/bottom coordinates for each segment element. Probably after a window resize/zoom.
+	// Repositions business hours segs too, so not just for events. Maybe shouldn't be here.
 	updateSegVerticals: function() {
-		var segs = this.segs;
+		var allSegs = (this.segs || []).concat(this.businessHourSegs || []);
 		var i;
 
-		if (segs) {
-			this.computeSegVerticals(segs);
+		this.computeSegVerticals(allSegs);
 
-			for (i = 0; i < segs.length; i++) {
-				segs[i].el.css(
-					this.generateSegVerticalCss(segs[i])
-				);
-			}
+		for (i = 0; i < allSegs.length; i++) {
+			allSegs[i].el.css(
+				this.generateSegVerticalCss(allSegs[i])
+			);
 		}
 	},
 

+ 7 - 2
src/common/TimeGrid.js

@@ -23,6 +23,8 @@ $.extend(TimeGrid.prototype, {
 
 	helperEl: null, // cell skeleton element for rendering the mock event "helper"
 
+	businessHourSegs: null,
+
 
 	// Renders the time grid into `this.el`, which should already be assigned.
 	// Relies on the view's colCnt. In the future, this component should probably be self-sufficient.
@@ -44,7 +46,7 @@ $.extend(TimeGrid.prototype, {
 
 	renderBusinessHours: function() {
 		var events = this.view.calendar.getBusinessHoursEvents();
-		this.renderFill('businessHours', this.eventsToSegs(events), 'bgevent');
+		this.businessHourSegs = this.renderFill('businessHours', this.eventsToSegs(events), 'bgevent');
 	},
 
 
@@ -396,7 +398,8 @@ $.extend(TimeGrid.prototype, {
 	------------------------------------------------------------------------------------------------------------------*/
 
 
-	// Renders a set of rectangles over the given time segments
+	// Renders a set of rectangles over the given time segments.
+	// Only returns segments that successfully rendered.
 	renderFill: function(type, segs, className) {
 		var view = this.view;
 		var segCols;
@@ -446,6 +449,8 @@ $.extend(TimeGrid.prototype, {
 			this.el.append(skeletonEl);
 			this.elsByFill[type] = skeletonEl;
 		}
+
+		return segs;
 	}
 
 });