You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
4.0 KiB
116 lines
4.0 KiB
/** |
|
* jqPlot |
|
* Pure JavaScript plotting plugin using jQuery |
|
* |
|
* Version: 1.0.8 |
|
* Revision: 1250 |
|
* |
|
* Copyright (c) 2009-2013 Chris Leonello |
|
* jqPlot is currently available for use in all personal or commercial projects |
|
* under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL |
|
* version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can |
|
* choose the license that best suits your project and use it accordingly. |
|
* |
|
* Although not required, the author would appreciate an email letting him |
|
* know of any substantial use of jqPlot. You can reach the author at: |
|
* chris at jqplot dot com or see http://www.jqplot.com/info.php . |
|
* |
|
* If you are feeling kind and generous, consider supporting the project by |
|
* making a donation at: http://www.jqplot.com/donate.php . |
|
* |
|
* sprintf functions contained in jqplot.sprintf.js by Ash Searle: |
|
* |
|
* version 2007.04.27 |
|
* author Ash Searle |
|
* http://hexmen.com/blog/2007/03/printf-sprintf/ |
|
* http://hexmen.com/js/sprintf.js |
|
* The author (Ash Searle) has placed this code in the public domain: |
|
* "This code is unrestricted: you are free to use it however you like." |
|
* |
|
*/ |
|
(function($) { |
|
/** |
|
* Class: $.jqplot.ciParser |
|
* Data Renderer function which converts a custom JSON data object into jqPlot data format. |
|
* Set this as a callable on the jqplot dataRenderer plot option: |
|
* |
|
* > plot = $.jqplot('mychart', [data], { dataRenderer: $.jqplot.ciParser, ... }); |
|
* |
|
* Where data is an object in JSON format or a JSON encoded string conforming to the |
|
* City Index API spec. |
|
* |
|
* Note that calling the renderer function is handled internally by jqPlot. The |
|
* user does not have to call the function. The parameters described below will |
|
* automatically be passed to the ciParser function. |
|
* |
|
* Parameters: |
|
* data - JSON encoded string or object. |
|
* plot - reference to jqPlot Plot object. |
|
* |
|
* Returns: |
|
* data array in jqPlot format. |
|
* |
|
*/ |
|
$.jqplot.ciParser = function (data, plot) { |
|
var ret = [], |
|
line, |
|
temp, |
|
i, j, k, kk; |
|
|
|
if (typeof(data) == "string") { |
|
data = $.jqplot.JSON.parse(data, handleStrings); |
|
} |
|
|
|
else if (typeof(data) == "object") { |
|
for (k in data) { |
|
for (i=0; i<data[k].length; i++) { |
|
for (kk in data[k][i]) { |
|
data[k][i][kk] = handleStrings(kk, data[k][i][kk]); |
|
} |
|
} |
|
} |
|
} |
|
|
|
else { |
|
return null; |
|
} |
|
|
|
// function handleStrings |
|
// Checks any JSON encoded strings to see if they are |
|
// encoded dates. If so, pull out the timestamp. |
|
// Expects dates to be represented by js timestamps. |
|
|
|
function handleStrings(key, value) { |
|
var a; |
|
if (value != null) { |
|
if (value.toString().indexOf('Date') >= 0) { |
|
//here we will try to extract the ticks from the Date string in the "value" fields of JSON returned data |
|
a = /^\/Date\((-?[0-9]+)\)\/$/.exec(value); |
|
if (a) { |
|
return parseInt(a[1], 10); |
|
} |
|
} |
|
return value; |
|
} |
|
} |
|
|
|
for (var prop in data) { |
|
line = []; |
|
temp = data[prop]; |
|
switch (prop) { |
|
case "PriceTicks": |
|
for (i=0; i<temp.length; i++) { |
|
line.push([temp[i]['TickDate'], temp[i]['Price']]); |
|
} |
|
break; |
|
case "PriceBars": |
|
for (i=0; i<temp.length; i++) { |
|
line.push([temp[i]['BarDate'], temp[i]['Open'], temp[i]['High'], temp[i]['Low'], temp[i]['Close']]); |
|
} |
|
break; |
|
} |
|
ret.push(line); |
|
} |
|
return ret; |
|
}; |
|
})(jQuery); |