ColumnSeries.js revision 8648721e29bb657dd5c5ff20f03e86fe50628ce6
f69d245bb21be88752420e834a6b6be37e9b525fTripp/**
f69d245bb21be88752420e834a6b6be37e9b525fTripp * The ColumnSeries class renders columns positioned horizontally along a category or time axis. The columns'
f69d245bb21be88752420e834a6b6be37e9b525fTripp * lengths are proportional to the values they represent along a vertical axis.
f69d245bb21be88752420e834a6b6be37e9b525fTripp * and the relevant data points.
f69d245bb21be88752420e834a6b6be37e9b525fTripp *
f69d245bb21be88752420e834a6b6be37e9b525fTripp * @class ColumnSeries
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @extends MarkerSeries
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @uses Histogram
f69d245bb21be88752420e834a6b6be37e9b525fTripp * @constructor
f69d245bb21be88752420e834a6b6be37e9b525fTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTrippY.ColumnSeries = Y.Base.create("columnSeries", Y.MarkerSeries, [Y.Histogram], {
f69d245bb21be88752420e834a6b6be37e9b525fTripp /**
f69d245bb21be88752420e834a6b6be37e9b525fTripp * @private
f69d245bb21be88752420e834a6b6be37e9b525fTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp _getMarkerDimensions: function(xcoord, ycoord, calculatedSize, offset)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp var config = {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp top: ycoord,
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp left: xcoord + offset
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp };
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp config.calculatedSize = this._bottomOrigin - config.top;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp return config;
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp },
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp /**
f69d245bb21be88752420e834a6b6be37e9b525fTripp * @protected
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp *
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp * Resizes and positions markers based on a mouse interaction.
f69d245bb21be88752420e834a6b6be37e9b525fTripp *
f69d245bb21be88752420e834a6b6be37e9b525fTripp * @method updateMarkerState
f69d245bb21be88752420e834a6b6be37e9b525fTripp * @param {String} type state of the marker
f69d245bb21be88752420e834a6b6be37e9b525fTripp * @param {Number} i index of the marker
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp updateMarkerState: function(type, i)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp if(this._markers[i])
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp var styles = Y.clone(this.get("styles").marker),
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp markerStyles,
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp state = this._getState(type),
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp xcoords = this.get("xcoords"),
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp ycoords = this.get("ycoords"),
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp marker = this._markers[i],
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp graph = this.get("graph"),
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp seriesCollection = graph.seriesTypes[this.get("type")],
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp seriesLen = seriesCollection.length,
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp seriesSize = 0,
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp offset = 0,
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp renderer,
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp n = 0,
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp xs = [],
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp order = this.get("order");
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp markerStyles = state == "off" || !styles[state] ? styles : styles[state];
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp markerStyles.fill.color = this._getItemColor(markerStyles.fill.color, i);
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp markerStyles.border.color = this._getItemColor(markerStyles.border.color, i);
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp markerStyles.height = this._bottomOrigin - ycoords[i];
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp marker.update(markerStyles);
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp for(; n < seriesLen; ++n)
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp {
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp renderer = seriesCollection[n].get("markers")[i];
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp xs[n] = xcoords[i] + seriesSize;
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp seriesSize += renderer.width;
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp if(order > n)
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp {
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp offset = seriesSize;
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp }
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp offset -= seriesSize/2;
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp }
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp for(n = 0; n < seriesLen; ++n)
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp {
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp renderer = Y.one(seriesCollection[n]._graphicNodes[i]);
82d0cf8c731b23f6a2fbb31e3e696e629444363eTripp renderer.setStyle("left", (xs[n] - seriesSize/2) + "px");
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp}, {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp ATTRS: {
f69d245bb21be88752420e834a6b6be37e9b525fTripp /**
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * Read-only attribute indicating the type of series.
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp *
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @attribute type
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @type String
8648721e29bb657dd5c5ff20f03e86fe50628ce6Tripp * @default column
f69d245bb21be88752420e834a6b6be37e9b525fTripp */
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp type: {
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp value: "column"
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp }
e393eced613f9b4a5fb6bdd461d0e0bf5064d5ecTripp});