data-forge-to-highstock
Version:
Data-Forge plugin for transforming data to the Highstock format.
90 lines (74 loc) • 2.48 kB
JavaScript
'use strict';
module.exports = function (dataForge) {
var assert = require('chai').assert;
var Enumerable = require('linq');
/**
* Convert the data-frame to Highstock date+OHLC format.
*/
dataForge.DataFrame.prototype.toHighstockOHLC = function () {
var self = this;
var it = self.getIterator();
var columnNames = self.getColumnNames();
var output = [];
while (it.moveNext()) {
var pair = it.getCurrent();
var index = pair[0];
var row = pair[1];
assert.instanceOf(index, Date, "Expected DataFrame index to contain dates!");
assert.isNumber(row.Open, "Expected Open column to contain numbers!");
assert.isNumber(row.High, "Expected High column to contain numbers!");
assert.isNumber(row.Low, "Expected Low column to contain numbers!");
assert.isNumber(row.Close, "Expected Close column to contain numbers!");
output.push([
index.getTime(),
row.Open,
row.High,
row.Low,
row.Close,
]);
}
return output;
};
/**
* Convert the data-frame to Highstock date+value format.
*/
dataForge.DataFrame.prototype.toHighstock = function () {
var self = this;
var it = self.getIterator();
var columnNames = self.getColumnNames();
var output = [];
while (it.moveNext()) {
var pair = it.getCurrent();
var index = pair[0];
var values = pair[1];
assert.instanceOf(index, Date, "Expected index to contain dates!");
var row = Enumerable.from(columnNames)
.select(function (columnName) {
return values[columnName];
})
.toArray();
output.push([
index.getTime(),
row,
]);
}
};
/**
* Convert the column to Highstock date+value format.
*/
dataForge.Series.prototype.toHighstock = function () {
var self = this;
var it = self.getIterator();
var output = [];
while (it.moveNext()) {
var pair = it.getCurrent();
var index = pair[0];
var value = pair[1];
output.push([
index.getTime(),
value,
]);
}
return output;
};
};