StackedColumnSeries.js revision 510ecacc5f9e1ea3a8250c3205621d15e3e83505
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.StackedColumnSeries = Y.Base.create("stackedColumnSeries", Y.ColumnSeries, [Y.StackingUtil], {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp drawSeries: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(this.get("xcoords").length < 1)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var style = this.get("styles").marker,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = style.width,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = style.height,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp xcoords = this.get("xcoords"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ycoords = this.get("ycoords"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp i = 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp len = xcoords.length,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top = ycoords[0],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type = this.get("type"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graph = this.get("graph"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp seriesCollection = graph.seriesTypes[type],
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ratio,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp order = this.get("order"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp graphOrder = this.get("graphOrder"),
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp left,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lastCollection,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp negativeBaseValues,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp positiveBaseValues,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp useOrigin = order === 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp totalWidth = len * w,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp mnode;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._createMarkerCache();
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(totalWidth > this.get("width"))
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ratio = this.width/totalWidth;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w *= ratio;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp w = Math.max(w, 1);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(!useOrigin)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp lastCollection = seriesCollection[order - 1];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp negativeBaseValues = lastCollection.get("negativeBaseValues");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp positiveBaseValues = lastCollection.get("positiveBaseValues");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp negativeBaseValues = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp positiveBaseValues = [];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("negativeBaseValues", negativeBaseValues);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this.set("positiveBaseValues", positiveBaseValues);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp for(i = 0; i < len; ++i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top = ycoords[i];
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(useOrigin)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = this._bottomOrigin - top;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(top < this._bottomOrigin)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp positiveBaseValues[i] = top;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp negativeBaseValues[i] = this._bottomOrigin;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(top > this._bottomOrigin)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp positiveBaseValues[i] = this._bottomOrigin;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp negativeBaseValues[i] = top;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp positiveBaseValues[i] = top;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp negativeBaseValues[i] = top;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp if(top > this._bottomOrigin)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top += (negativeBaseValues[i] - this._bottomOrigin);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = negativeBaseValues[i] - top;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp negativeBaseValues[i] = top;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp else if(top < this._bottomOrigin)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top = positiveBaseValues[i] - (this._bottomOrigin - ycoords[i]);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp h = positiveBaseValues[i] - top;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp positiveBaseValues[i] = top;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp left = xcoords[i] - w/2;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style.width = w;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp style.height = h;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp marker = this.getMarker(style, graphOrder, i);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp mnode = Y.one(marker.parentNode);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp mnode.setStyle("position", "absolute");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp mnode.setStyle("left", left);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp mnode.setStyle("top", top);
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp this._clearMarkerCache();
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Resizes and positions markers based on a mouse interaction.
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp updateMarkerState: function(type, i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp if(this._markers[i])
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp {
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp var styles,
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp markerStyles,
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp state = this._getState(type),
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp xcoords = this.get("xcoords"),
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp marker = this._markers[i],
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp offset = 0;
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp styles = this.get("styles").marker;
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp markerStyles = state == "off" || !styles[state] ? styles : styles[state];
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp markerStyles.height = marker.height;
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp marker.update(markerStyles);
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp offset = styles.width * 0.5;
510ecacc5f9e1ea3a8250c3205621d15e3e83505Tripp if(marker.parentNode)
510ecacc5f9e1ea3a8250c3205621d15e3e83505Tripp {
510ecacc5f9e1ea3a8250c3205621d15e3e83505Tripp Y.one(marker.parentNode).setStyle("left", (xcoords[i] - offset));
510ecacc5f9e1ea3a8250c3205621d15e3e83505Tripp }
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * @private
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getPlotDefaults: function()
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var defs = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp fill:{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: "solid",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha: 1,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp colors:null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alphas: null,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ratios: null
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp border:{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp weight: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp alpha: 1
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp width: 24,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp height: 24,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp shape: "rect",
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp padding:{
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp left: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp right: 0,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp bottom: 0
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp defs.fill.color = this._getDefaultColor(this.get("graphOrder"), "fill");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp defs.border.color = this._getDefaultColor(this.get("graphOrder"), "border");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return defs;
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: "stackedColumn"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp negativeBaseValues: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: null
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp positiveBaseValues: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: null
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp