scichart
Version: 
Fast WebGL JavaScript Charting Library and Framework
149 lines (148 loc) • 6.25 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.chartBuilder = exports.ensureRegistrations = exports.configureChart = exports.buildChart = exports.chartReviver = void 0;
var NumberRange_1 = require("../Core/NumberRange");
var Thickness_1 = require("../Core/Thickness");
var SciChartSurfaceType_1 = require("../types/SciChartSurfaceType");
var buildAnnotations_1 = require("./buildAnnotations");
var buildAxis_1 = require("./buildAxis");
var buildDataSeries_1 = require("./buildDataSeries");
var buildModifiers_1 = require("./buildModifiers");
var buildSeries_1 = require("./buildSeries");
var buildSurface_1 = require("./buildSurface");
// import { chartReviver } from "./chartReviver";
var classFactory_1 = require("./classFactory");
/**
 * The reviver function needed when parsing definitions to JSON
 */
function chartReviver(key, value) {
    switch (key) {
        case "visibleRange":
        case "visibleRangeLimit":
        case "visibleRangeSizeLimit":
        case "growBy":
            return new NumberRange_1.NumberRange(value.min, value.max);
        case "padding":
            var t = value;
            return new Thickness_1.Thickness(t.top, t.right, t.bottom, t.left);
        default:
            // handle NaN serialization/deserialization since NaN is stringified as "null"
            return value === null ? NaN : value;
    }
}
exports.chartReviver = chartReviver;
var getOptionsFromDefinition = function (definition) {
    if ("options" in definition) {
        return definition.options;
    }
    else {
        return definition;
    }
};
/**
 * Builds an entire chart from a definition that can be pure data.
 * @param divElementId The Div Element ID where the surface will reside
 * @param definition a {@link TSurfaceDefinition } or a string which will be parsed to it.
 * @returns A chart of the appropriate type based on the definition
 */
function buildChart(divElementId, definition) {
    var _a;
    if (typeof definition === "string") {
        definition = JSON.parse(definition, chartReviver);
    }
    if (!definition) {
        definition = {};
    }
    var type = (_a = definition === null || definition === void 0 ? void 0 : definition.type) !== null && _a !== void 0 ? _a : SciChartSurfaceType_1.ESciChartSurfaceType.Default2D;
    var spreadDefinition = getOptionsFromDefinition(definition);
    if (type === SciChartSurfaceType_1.ESciChartSurfaceType.Default2D) {
        return (0, buildSurface_1.build2DChart)(divElementId, spreadDefinition);
    }
    else if (type === SciChartSurfaceType_1.ESciChartSurfaceType.Polar2D) {
        return (0, buildSurface_1.build2DPolarChart)(divElementId, spreadDefinition);
    }
    else if (type === SciChartSurfaceType_1.ESciChartSurfaceType.Pie2D) {
        return (0, buildSurface_1.buildPieChart)(divElementId, spreadDefinition);
    }
    else if (type === SciChartSurfaceType_1.ESciChartSurfaceType.Default3D) {
        return (0, buildSurface_1.build3DChart)(divElementId, spreadDefinition);
    }
    else {
        throw new Error("Surface type: ".concat(type, " does not exist. See ESciChartSurfaceType for all available types."));
    }
}
exports.buildChart = buildChart;
/**
 * Configures an existing surface using a definition.
 * This is useful if you need to use the wasmContext in methods or classes you use in your definition
 * @param sciChartSurface
 * @param wasmContext The webassemply context.  Pass undefined for a pie surface.
 * @param definition
 */
var configureChart = function (sciChartSurface, wasmContext, definition) {
    var _a;
    if (typeof definition === "string") {
        definition = JSON.parse(definition, chartReviver);
    }
    if (!definition) {
        definition = {};
    }
    var type = (_a = definition === null || definition === void 0 ? void 0 : definition.type) !== null && _a !== void 0 ? _a : SciChartSurfaceType_1.ESciChartSurfaceType.Default2D;
    var spreadDefinion = getOptionsFromDefinition(definition);
    if (type === SciChartSurfaceType_1.ESciChartSurfaceType.Default2D) {
        (0, buildSurface_1.configure2DSurface)(spreadDefinion, sciChartSurface, wasmContext);
    }
    else if (type === SciChartSurfaceType_1.ESciChartSurfaceType.Pie2D) {
        // await return buildPieChart(divElementId, definition.options);
    }
    else {
        // @ts-ignore
        throw new Error("Surface type: ".concat(type, " is not yet supported by the builder api"));
    }
};
exports.configureChart = configureChart;
/**
 * This is just something to call to ensure that all the registrations are run before a surface is created
 */
var ensureRegistrations = function () { };
exports.ensureRegistrations = ensureRegistrations;
exports.chartBuilder = {
    /** @inheritdoc */
    buildChart: buildChart,
    /** @inheritdoc */
    chartReviver: chartReviver,
    /** @inheritdoc */
    build2DChart: buildSurface_1.build2DChart,
    /** @inheritdoc */
    build2DPolarChart: buildSurface_1.build2DPolarChart,
    /** @inheritdoc */
    buildPieChart: buildSurface_1.buildPieChart,
    /** @inheritdoc */
    configureChart: exports.configureChart,
    /** @inheritdoc */
    buildSeries: buildSeries_1.buildSeries,
    /** @inheritdoc */
    buildDataSeries: buildDataSeries_1.buildDataSeries,
    /** @inheritdoc */
    buildModifiers: buildModifiers_1.buildModifiers,
    /** @inheritdoc */
    buildAxes: buildAxis_1.buildAxes,
    /** @inheritdoc */
    buildAnnotations: buildAnnotations_1.buildAnnotations,
    /** @inheritdoc */
    registerType: classFactory_1.registerType,
    /** @inheritdoc */
    registerWasmType: classFactory_1.registerWasmType,
    /** @inheritdoc */
    registerFunction: classFactory_1.registerFunction,
    /** @inheritdoc */
    build3DChart: buildSurface_1.build3DChart,
    /** @inheritdoc */
    buildAxis3D: buildAxis_1.buildAxis3D,
    /** @inheritdoc */
    buildModifiers3D: buildModifiers_1.buildModifiers3D,
    /** @inheritdoc */
    buildSeries3D: buildSeries_1.buildSeries3D,
    /** @inheritdoc */
    buildDataSeries3D: buildDataSeries_1.buildDataSeries3D
};