UNPKG

scichart

Version:

Fast WebGL JavaScript Charting Library and Framework

183 lines (182 loc) 9.18 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildDataSeries = void 0; var HlcScaleOffsetFilter_1 = require("../Charting/Model/Filters/HlcScaleOffsetFilter"); var OhlcScaleOffsetFilter_1 = require("../Charting/Model/Filters/OhlcScaleOffsetFilter"); var XyLinearTrendFilter_1 = require("../Charting/Model/Filters/XyLinearTrendFilter"); var XyMovingAverageFilter_1 = require("../Charting/Model/Filters/XyMovingAverageFilter"); var XyRatioFilter_1 = require("../Charting/Model/Filters/XyRatioFilter"); var XyScaleOffsetFilter_1 = require("../Charting/Model/Filters/XyScaleOffsetFilter"); var XyyScaleOffsetFilter_1 = require("../Charting/Model/Filters/XyyScaleOffsetFilter"); var XyzScaleOffsetFilter_1 = require("../Charting/Model/Filters/XyzScaleOffsetFilter"); var HlcDataSeries_1 = require("../Charting/Model/HlcDataSeries"); var IDataSeries_1 = require("../Charting/Model/IDataSeries"); var NonUniformHeatmapDataSeries_1 = require("../Charting/Model/NonUniformHeatmapDataSeries"); var OhlcDataSeries_1 = require("../Charting/Model/OhlcDataSeries"); var UniformHeatmapDataSeries_1 = require("../Charting/Model/UniformHeatmapDataSeries"); var XyDataSeries_1 = require("../Charting/Model/XyDataSeries"); var XyTextDataSeries_1 = require("../Charting/Model/XyTextDataSeries"); var XyyDataSeries_1 = require("../Charting/Model/XyyDataSeries"); var XyzDataSeries_1 = require("../Charting/Model/XyzDataSeries"); var DataFilterType_1 = require("../types/DataFilterType"); var chartBuilder_1 = require("./chartBuilder"); /** * Build a data series from a definition that can be pure data. * @param wasmContext A {@link TSciChart | SciChart 2D WebAssembly Context} or {@link TSciChart | SciChart 3D WebAssembly Context} * @param definition A {@link TSeriesDefinition} * @param sharedData Optional {@link TSharedDataDefinition} to define shared data which can be referenced by the data series * @param originalDataSeries Optional {@Link IDataSeries} to define original data for filter * @returns An {@link IDataSeries} */ var buildDataSeries = function (wasmContext, dataSeriesDefinition, sharedData, originalDataSeries) { if (!dataSeriesDefinition) { return undefined; } if (typeof dataSeriesDefinition === "string") { dataSeriesDefinition = JSON.parse(dataSeriesDefinition, chartBuilder_1.chartReviver); } if (typeof sharedData === "string") { sharedData = JSON.parse(sharedData, chartBuilder_1.chartReviver); } var dataSeries; var filterDef; dataSeries = createDataSeries(wasmContext, dataSeriesDefinition, sharedData); if ("filter" in dataSeriesDefinition.options) { // @ts-ignore filterDef = dataSeriesDefinition.options.filter; } if (filterDef && dataSeriesDefinition.type !== IDataSeries_1.EDataSeriesType.HeatmapUniform && dataSeriesDefinition.type !== IDataSeries_1.EDataSeriesType.HeatmapNonUniform) { if (dataSeries) { var filter = buildFilter((originalDataSeries !== null && originalDataSeries !== void 0 ? originalDataSeries : dataSeries), filterDef); if (filter) { dataSeries = filter; } } } return dataSeries; }; exports.buildDataSeries = buildDataSeries; var buildFilter = function (dataSeries, definition) { if (definition.type === DataFilterType_1.EDataFilterType.HlcScaleOffset) { return new HlcScaleOffsetFilter_1.HlcScaleOffsetFilter(dataSeries, definition.options); } else if (definition.type === DataFilterType_1.EDataFilterType.OhlcScaleOffset) { return new OhlcScaleOffsetFilter_1.OhlcScaleOffsetFilter(dataSeries, definition.options); } else if (definition.type === DataFilterType_1.EDataFilterType.XyLinearTrend) { return new XyLinearTrendFilter_1.XyLinearTrendFilter(dataSeries, definition.options); } else if (definition.type === DataFilterType_1.EDataFilterType.XyMovingAverage) { return new XyMovingAverageFilter_1.XyMovingAverageFilter(dataSeries, definition.options); } else if (definition.type === DataFilterType_1.EDataFilterType.XyRatio) { var options = definition.options; if (Array.isArray(options.divisorSeries)) { var xValues = new Array(dataSeries.count()).fill(0); definition.options.divisorSeries = new XyDataSeries_1.XyDataSeries(dataSeries.webAssemblyContext, { xValues: xValues, yValues: options.divisorSeries }); } return new XyRatioFilter_1.XyRatioFilter(dataSeries, definition.options); } else if (definition.type === DataFilterType_1.EDataFilterType.XyScaleOffset) { return new XyScaleOffsetFilter_1.XyScaleOffsetFilter(dataSeries, definition.options); } else if (definition.type === DataFilterType_1.EDataFilterType.XyyScaleOffset) { return new XyyScaleOffsetFilter_1.XyyScaleOffsetFilter(dataSeries, definition.options); } else if (definition.type === DataFilterType_1.EDataFilterType.XyzScaleOffset) { return new XyzScaleOffsetFilter_1.XyzScaleOffsetFilter(dataSeries, definition.options); } else { return undefined; } }; var createDataSeries = function (wasmContext, dataSeriesDefinition, sharedData) { var rawOptions = __assign({}, dataSeriesDefinition.options); switch (dataSeriesDefinition.type) { case IDataSeries_1.EDataSeriesType.Xy: { var data = rawOptions; if (sharedData && data.xDataId) { data.xValues = sharedData[data.xDataId]; data.yValues = sharedData[data.yDataId]; } return new XyDataSeries_1.XyDataSeries(wasmContext, data); } case IDataSeries_1.EDataSeriesType.Xyy: { var data = rawOptions; if (sharedData && data.xDataId) { data.xValues = sharedData[data.xDataId]; data.yValues = sharedData[data.yDataId]; data.y1Values = sharedData[data.y1DataId]; } return new XyyDataSeries_1.XyyDataSeries(wasmContext, data); } case IDataSeries_1.EDataSeriesType.Xyz: { var data = rawOptions; if (sharedData && data.xDataId) { data.xValues = sharedData[data.xDataId]; data.yValues = sharedData[data.yDataId]; data.zValues = sharedData[data.zDataId]; } return new XyzDataSeries_1.XyzDataSeries(wasmContext, data); } case IDataSeries_1.EDataSeriesType.XyText: { var data = rawOptions; if (sharedData && data.xDataId) { data.xValues = sharedData[data.xDataId]; data.yValues = sharedData[data.yDataId]; } return new XyTextDataSeries_1.XyTextDataSeries(wasmContext, data); } case IDataSeries_1.EDataSeriesType.Hlc: { var data = rawOptions; if (sharedData && data.xDataId) { data.xValues = sharedData[data.xDataId]; data.highValues = sharedData[data.highDataId]; data.lowValues = sharedData[data.lowDataId]; data.yValues = sharedData[data.closeDataId]; } return new HlcDataSeries_1.HlcDataSeries(wasmContext, data); } case IDataSeries_1.EDataSeriesType.Ohlc: { var data = rawOptions; if (sharedData && data.xDataId) { data.xValues = sharedData[data.xDataId]; data.openValues = sharedData[data.openDataId]; data.highValues = sharedData[data.highDataId]; data.lowValues = sharedData[data.lowDataId]; data.closeValues = sharedData[data.closeDataId]; } return new OhlcDataSeries_1.OhlcDataSeries(wasmContext, data); } case IDataSeries_1.EDataSeriesType.HeatmapUniform: { var data = rawOptions; return new UniformHeatmapDataSeries_1.UniformHeatmapDataSeries(wasmContext, data); } case IDataSeries_1.EDataSeriesType.HeatmapNonUniform: { var data = rawOptions; return new NonUniformHeatmapDataSeries_1.NonUniformHeatmapDataSeries(wasmContext, data); } default: { var handleInvalidDataSeriesType = function (type) { throw new Error("Invalid Data Series Type value: \"".concat(type, "\"!")); }; return handleInvalidDataSeriesType(dataSeriesDefinition.type); } } };