NOBUG: Fixed file access permissions
[moodle.git] / lib / yuilib / 3.13.0 / series-ohlc / series-ohlc-debug.js
blobed24cbf2feb1d4c4f21d002a030a9c838bfd96d9
1 /*
2 YUI 3.13.0 (build 508226d)
3 Copyright 2013 Yahoo! Inc. All rights reserved.
4 Licensed under the BSD License.
5 http://yuilibrary.com/license/
6 */
8 YUI.add('series-ohlc', function (Y, NAME) {
10 /**
11  * Provides functionality for creating a ohlc series.
12  *
13  * @module charts
14  * @submodule series-ohlc
15  */
16 /**
17  * The OHLCSeries class renders lines representing the open, high, low and close
18  * values for a chart.
19  *
20  * @class OHLCSeries
21  * @extends RangeSeries
22  * @constructor
23  * @param {Object} config (optional) Configuration parameters.
24  * @submodule series-ohlc
25  */
26 function OHLCSeries()
28     OHLCSeries.superclass.constructor.apply(this, arguments);
31 OHLCSeries.NAME = "ohlcSeries";
33 OHLCSeries.ATTRS = {
34     /**
35      * Read-only attribute indicating the type of series.
36      *
37      * @attribute type
38      * @type String
39      * @readOnly
40      * @default ohlc
41      */
42     type: {
43         value: "ohlc"
44     },
46     /**
47      * The graphic in which drawings will be rendered.
48      *
49      * @attribute graphic
50      * @type Graphic
51      */
52     graphic: {
53         lazyAdd: false,
55         setter: function(val) {
56             //woraround for Attribute order of operations bug
57             if(!this.get("rendered")) {
58                 this.set("rendered", true);
59             }
60             this.set("upmarker", val.addShape({
61                type: "path"
62             }));
63             this.set("downmarker", val.addShape({
64                type: "path"
65             }));
66             return val;
67         }
68     },
70     upmarker: {},
72     downmarker: {}
74     /**
75      * Style properties used for drawing markers. This attribute is inherited from `RangeSeries`. Below are the default values:
76      *  <dl>
77      *      <dt>upmarker</dt><dd>Properties for a marker representing a period that closes higher than it opens.
78      *          <dl>
79      *              <dt>fill</dt><dd>A hash containing the following values:
80      *                  <dl>
81      *                      <dt>color</dt><dd>Color of the fill. The default value is "#00aa00".</dd>
82      *                      </dd>
83      *                      <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the marker fill. The default value is 1.</dd>
84      *                  </dl>
85      *              </dd>
86      *              <dt>border</dt><dd>A hash containing the following values:
87      *                  <dl>
88      *                      <dt>color</dt><dd>Color of the border. The default value is "#000000".</dd>
89      *                      <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the marker border. The default value is 1.</dd>
90      *                      <dt>weight</dt><dd>Number indicating the width of the border. The default value is 0.</dd>
91      *                  </dl>
92      *              </dd>
93      *          </dl>
94      *      </dd>
95      *      <dt>downmarker</dt><dd>Properties for a marker representing a period that opens higher than it closes.
96      *          <dl>
97      *              <dt>fill</dt><dd>A hash containing the following values:
98      *                  <dl>
99      *                      <dt>color</dt><dd>Color of the fill. The default value is "#aa0000".</dd>
100      *                      </dd>
101      *                      <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the marker fill. The default value is 1.</dd>
102      *                  </dl>
103      *              </dd>
104      *              <dt>border</dt><dd>A hash containing the following values:
105      *                  <dl>
106      *                      <dt>color</dt><dd>Color of the border. The default value is "#000000".</dd>
107      *                      <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the marker border. The default value is 1.</dd>
108      *                      <dt>weight</dt><dd>Number indicating the width of the border. The default value is 0.</dd>
109      *                  </dl>
110      *              </dd>
111      *          </dl>
112      *      </dd>
113      *  </dl>
114      *
115      * @attribute styles
116      * @type Object
117      */
120 Y.extend(OHLCSeries, Y.RangeSeries, {
121     /**
122      * Draws markers for an OHLC series.
123      *
124      * @method
125      * @param {Array} xcoords The xcoordinates to be plotted.
126      * @param {Array} opencoords The coordinates representing the open values.
127      * @param {Array} highcoords The coordinates representing the high values.
128      * @param {Array} lowcoords The coordinates representing the low values.
129      * @param {Array} closecoords The coordinates representing the close values.
130      * @param {Number} len The number of x coordinates to plot.
131      * @param {Number} width The width of each ohlc marker.
132      * @param {Number} halfwidth Half the width of each ohlc marker.
133      * @param {Object} styles The styles for the series.
134      * @private
135      */
136     _drawMarkers: function(xcoords, opencoords, highcoords, lowcoords, closecoords, len, width, halfwidth, styles)
137     {
138         var upmarker = this.get("upmarker"),
139             downmarker = this.get("downmarker"),
140             opencoord,
141             highcoord,
142             lowcoord,
143             closecoord,
144             left,
145             right,
146             leftPadding = styles.padding.left,
147             marker,
148             up;
149         upmarker.set(styles.upmarker);
150         downmarker.set(styles.downmarker);
151         upmarker.clear();
152         downmarker.clear();
153         for(i = 0; i < len; i = i + 1)
154         {
155             cx = xcoords[i] + leftPadding;
156             left = cx - halfwidth;
157             right = cx + halfwidth;
158             opencoord = opencoords[i];
159             highcoord = highcoords[i];
160             lowcoord = lowcoords[i];
161             closecoord = closecoords[i];
162             up = opencoord > closecoord;
163             height = lowcoord - highcoord;
164             marker = up ? upmarker : downmarker;
165             marker.moveTo(left, opencoord);
166             marker.lineTo(cx, opencoord);
167             marker.moveTo(cx, highcoord);
168             marker.lineTo(cx, lowcoord);
169             marker.moveTo(cx, closecoord);
170             marker.lineTo(right, closecoord);
171         }
172         upmarker.end();
173         downmarker.end();
174     },
176     /**
177      * Toggles visibility
178      *
179      * @method _toggleVisible
180      * @param {Boolean} visible indicates visibilitye
181      * @private
182      */
183     _toggleVisible: function(visible)
184     {
185         this.get("upmarker").set("visible", visible);
186         this.get("downmarker").set("visible", visible);
187     },
189     /**
190      * Destructor implementation for the CartesianSeries class. Calls destroy on all Graphic instances.
191      *
192      * @method destructor
193      * @protected
194      */
195     destructor: function()
196     {
197         var upmarker = this.get("upmarker"),
198             downmarker = this.get("downmarker");
199         if(upmarker)
200         {
201             upmarker.destroy();
202         }
203         if(downmarker)
204         {
205             downmarker.destroy();
206         }
207     },
209     /**
210      * Gets the default value for the `styles` attribute. Overrides
211      * base implementation.
212      *
213      * @method _getDefaultStyles
214      * @return Object
215      * @private
216      */
217     _getDefaultStyles: function()
218     {
219         var styles = {
220             upmarker: {
221                 stroke: {
222                     color: "#00aa00",
223                     alpha: 1,
224                     weight: 1
225                 }
226             },
227             downmarker: {
228                 stroke: {
229                     color: "#aa0000",
230                     alpha: 1,
231                     weight: 1
232                 }
233             }
234         };
235         return this._mergeStyles(styles, OHLCSeries.superclass._getDefaultStyles());
236     }
238 Y.OHLCSeries = OHLCSeries;
241 }, '3.13.0', {"requires": ["series-range"]});