浏览代码

better system for enforcing renderer dependencies

Adam Shaw 8 年之前
父节点
当前提交
d035880875

+ 1 - 1
src/common/DayGridEventRenderer.js

@@ -9,7 +9,7 @@ var DayGridEventRenderer = EventRenderer.extend({
 
 
 	constructor: function(dayGrid) {
-		EventRenderer.call(this, dayGrid);
+		EventRenderer.apply(this, arguments);
 
 		this.dayGrid = dayGrid;
 	},

+ 1 - 1
src/common/TimeGridEventRenderer.js

@@ -9,7 +9,7 @@ var TimeGridEventRenderer = EventRenderer.extend({
 
 
 	constructor: function(timeGrid) {
-		EventRenderer.call(this, timeGrid);
+		EventRenderer.apply(this, arguments);
 
 		this.timeGrid = timeGrid;
 	},

+ 2 - 2
src/component/BusinessHourRenderer.js

@@ -12,9 +12,9 @@ var BusinessHourRenderer = Class.extend({
 		- eventRangesToEventFootprints
 		- eventFootprintsToSegs
 	*/
-	constructor: function(component) {
+	constructor: function(component, fillRenderer) {
 		this.component = component;
-		this.fillRenderer = component.fillRenderer;
+		this.fillRenderer = fillRenderer;
 	},
 
 

+ 6 - 12
src/component/ChronoComponent.js

@@ -30,22 +30,16 @@ var ChronoComponent = Component.extend({
 			this.fillRenderer = new this.fillRendererClass(this);
 		}
 
-		// NOTE: this.fillRenderer needs to already be assigned!
-		// TODO: make ordering not matter
-		if (this.eventRendererClass) {
-			this.eventRenderer = new this.eventRendererClass(this);
+		if (this.eventRendererClass) { // fillRenderer is optional -----v
+			this.eventRenderer = new this.eventRendererClass(this, this.fillRenderer);
 		}
 
-		// NOTE: this.eventRenderer needs to already be assigned!
-		// TODO: make ordering not matter
-		if (this.helperRendererClass) {
-			this.helperRenderer = new this.helperRendererClass(this);
+		if (this.helperRendererClass && this.eventRenderer) {
+			this.helperRenderer = new this.helperRendererClass(this, this.eventRenderer);
 		}
 
-		// NOTE: this.fillRenderer needs to already be assigned!
-		// TODO: make ordering not matter
-		if (this.businessHourRendererClass) {
-			this.businessHourRenderer = new this.businessHourRendererClass(this);
+		if (this.businessHourRendererClass && this.fillRenderer) {
+			this.businessHourRenderer = new this.businessHourRendererClass(this, this.fillRenderer);
 		}
 	},
 

+ 3 - 3
src/component/EventRenderer.js

@@ -3,7 +3,7 @@ var EventRenderer = Class.extend({
 
 	view: null,
 	component: null,
-	fillRenderer: null,
+	fillRenderer: null, // might remain null
 
 	fgSegs: null,
 	bgSegs: null,
@@ -14,10 +14,10 @@ var EventRenderer = Class.extend({
 	displayEventEnd: null,
 
 
-	constructor: function(component) {
+	constructor: function(component, fillRenderer) { // fillRenderer is optional
 		this.view = component._getView();
 		this.component = component;
-		this.fillRenderer = component.fillRenderer;
+		this.fillRenderer = fillRenderer;
 	},
 
 

+ 2 - 2
src/component/HelperRenderer.js

@@ -6,10 +6,10 @@ var HelperRenderer = Class.extend({
 	eventRenderer: null,
 
 
-	constructor: function(component) {
+	constructor: function(component, eventRenderer) {
 		this.view = component._getView();
 		this.component = component;
-		this.eventRenderer = component.eventRenderer;
+		this.eventRenderer = eventRenderer;
 	},