- /**
- * Provides functionality for creating a ohlc series.
- *
- * @module charts
- * @submodule series-ohlc
- */
- /**
- * The OHLCSeries class renders lines representing the open, high, low and close
- * values for a chart.
- *
- * @class OHLCSeries
- * @extends RangeSeries
- * @constructor
- * @param {Object} config (optional) Configuration parameters.
- * @submodule series-ohlc
- */
- function OHLCSeries()
- {
- OHLCSeries.superclass.constructor.apply(this, arguments);
- }
-
- OHLCSeries.NAME = "ohlcSeries";
-
- OHLCSeries.ATTRS = {
- /**
- * Read-only attribute indicating the type of series.
- *
- * @attribute type
- * @type String
- * @readOnly
- * @default ohlc
- */
- type: {
- value: "ohlc"
- },
-
- /**
- * The graphic in which drawings will be rendered.
- *
- * @attribute graphic
- * @type Graphic
- */
- graphic: {
- lazyAdd: false,
-
- setter: function(val) {
- //woraround for Attribute order of operations bug
- if(!this.get("rendered")) {
- this.set("rendered", true);
- }
- this.set("upmarker", val.addShape({
- type: "path"
- }));
- this.set("downmarker", val.addShape({
- type: "path"
- }));
- return val;
- }
- },
-
- upmarker: {},
-
- downmarker: {}
-
- /**
- * Style properties used for drawing markers. This attribute is inherited from `RangeSeries`. Below are the default values:
- * <dl>
- * <dt>upmarker</dt><dd>Properties for a marker representing a period that closes higher than it opens.
- * <dl>
- * <dt>fill</dt><dd>A hash containing the following values:
- * <dl>
- * <dt>color</dt><dd>Color of the fill. The default value is "#00aa00".</dd>
- * </dd>
- * <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the marker fill. The default value is 1.</dd>
- * </dl>
- * </dd>
- * <dt>border</dt><dd>A hash containing the following values:
- * <dl>
- * <dt>color</dt><dd>Color of the border. The default value is "#000000".</dd>
- * <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the marker border. The default value is 1.</dd>
- * <dt>weight</dt><dd>Number indicating the width of the border. The default value is 0.</dd>
- * </dl>
- * </dd>
- * </dl>
- * </dd>
- * <dt>downmarker</dt><dd>Properties for a marker representing a period that opens higher than it closes.
- * <dl>
- * <dt>fill</dt><dd>A hash containing the following values:
- * <dl>
- * <dt>color</dt><dd>Color of the fill. The default value is "#aa0000".</dd>
- * </dd>
- * <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the marker fill. The default value is 1.</dd>
- * </dl>
- * </dd>
- * <dt>border</dt><dd>A hash containing the following values:
- * <dl>
- * <dt>color</dt><dd>Color of the border. The default value is "#000000".</dd>
- * <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the marker border. The default value is 1.</dd>
- * <dt>weight</dt><dd>Number indicating the width of the border. The default value is 0.</dd>
- * </dl>
- * </dd>
- * </dl>
- * </dd>
- * </dl>
- *
- * @attribute styles
- * @type Object
- */
- };
-
- Y.extend(OHLCSeries, Y.RangeSeries, {
- /**
- * Draws markers for an OHLC series.
- *
- * @method
- * @param {Array} xcoords The xcoordinates to be plotted.
- * @param {Array} opencoords The coordinates representing the open values.
- * @param {Array} highcoords The coordinates representing the high values.
- * @param {Array} lowcoords The coordinates representing the low values.
- * @param {Array} closecoords The coordinates representing the close values.
- * @param {Number} len The number of x coordinates to plot.
- * @param {Number} width The width of each ohlc marker.
- * @param {Number} halfwidth Half the width of each ohlc marker.
- * @param {Object} styles The styles for the series.
- * @private
- */
- _drawMarkers: function(xcoords, opencoords, highcoords, lowcoords, closecoords, len, width, halfwidth, styles)
- {
- var upmarker = this.get("upmarker"),
- downmarker = this.get("downmarker"),
- opencoord,
- highcoord,
- lowcoord,
- closecoord,
- left,
- right,
- leftPadding = styles.padding.left,
- marker,
- up,
- cx,
- i,
- height;
- upmarker.set(styles.upmarker);
- downmarker.set(styles.downmarker);
- upmarker.clear();
- downmarker.clear();
- for(i = 0; i < len; i = i + 1)
- {
- cx = xcoords[i] + leftPadding;
- left = cx - halfwidth;
- right = cx + halfwidth;
- opencoord = opencoords[i];
- highcoord = highcoords[i];
- lowcoord = lowcoords[i];
- closecoord = closecoords[i];
- up = opencoord > closecoord;
- height = lowcoord - highcoord;
- marker = up ? upmarker : downmarker;
- marker.moveTo(left, opencoord);
- marker.lineTo(cx, opencoord);
- marker.moveTo(cx, highcoord);
- marker.lineTo(cx, lowcoord);
- marker.moveTo(cx, closecoord);
- marker.lineTo(right, closecoord);
- }
- upmarker.end();
- downmarker.end();
- },
-
- /**
- * Toggles visibility
- *
- * @method _toggleVisible
- * @param {Boolean} visible indicates visibilitye
- * @private
- */
- _toggleVisible: function(visible)
- {
- this.get("upmarker").set("visible", visible);
- this.get("downmarker").set("visible", visible);
- },
-
- /**
- * Destructor implementation for the CartesianSeries class. Calls destroy on all Graphic instances.
- *
- * @method destructor
- * @protected
- */
- destructor: function()
- {
- var upmarker = this.get("upmarker"),
- downmarker = this.get("downmarker");
- if(upmarker)
- {
- upmarker.destroy();
- }
- if(downmarker)
- {
- downmarker.destroy();
- }
- },
-
- /**
- * Gets the default value for the `styles` attribute. Overrides
- * base implementation.
- *
- * @method _getDefaultStyles
- * @return Object
- * @private
- */
- _getDefaultStyles: function()
- {
- var styles = {
- upmarker: {
- stroke: {
- color: "#00aa00",
- alpha: 1,
- weight: 1
- }
- },
- downmarker: {
- stroke: {
- color: "#aa0000",
- alpha: 1,
- weight: 1
- }
- }
- };
- return this._mergeStyles(styles, OHLCSeries.superclass._getDefaultStyles());
- }
- });
- Y.OHLCSeries = OHLCSeries;
-
-