UNPKG

@amcharts/amcharts5

Version:
91 lines 3.45 kB
import { Chart } from "./Chart"; import { Container } from "../../core/render/Container"; import { ListAutoDispose } from "../../core/util/List"; import { p100 } from "../../core/util/Percent"; import * as $array from "../../core/util/Array"; /** * A base class for all series-based charts. */ export class SerialChart extends Chart { constructor() { super(...arguments); /** * A [[Container]] where chart will store all series. * * @default Container.new() */ this.seriesContainer = Container.new(this._root, { width: p100, height: p100, isMeasured: false }); /** * A list of chart's series. */ this.series = new ListAutoDispose(); } _afterNew() { super._afterNew(); this._disposers.push(this.series); const children = this.seriesContainer.children; this._disposers.push(this.series.events.onAll((change) => { if (change.type === "clear") { $array.each(change.oldValues, (series) => { this._removeSeries(series); }); const colors = this.get("colors"); if (colors) { colors.reset(); } const patterns = this.get("patterns"); if (patterns) { patterns.reset(); } } else if (change.type === "push") { children.moveValue(change.newValue); this._processSeries(change.newValue); } else if (change.type === "setIndex") { children.setIndex(change.index, change.newValue); this._processSeries(change.newValue); } else if (change.type === "insertIndex") { children.insertIndex(change.index, change.newValue); this._processSeries(change.newValue); } else if (change.type === "removeIndex") { this._removeSeries(change.oldValue); } else if (change.type === "moveIndex") { children.moveValue(change.value, change.newIndex); this._processSeries(change.value); } else if (change.type === "swap") { const a = change.a; const b = change.b; const aIndex = this.series.indexOf(a); const bIndex = this.series.indexOf(b); children.moveValue(a, bIndex); children.moveValue(b, aIndex); this.series.each((series) => { this._processSeries(series); series.markDirtyValues(); }); } else { throw new Error("Unknown IListEvent type"); } })); } _processSeries(series) { series.chart = this; series._placeBulletsContainer(this); } _removeSeries(series) { series._handleRemoved(); if (!series.isDisposed()) { this.seriesContainer.children.removeValue(series); series._removeBulletsContainer(); } } } SerialChart.className = "SerialChart"; SerialChart.classNames = Chart.classNames.concat([SerialChart.className]); //# sourceMappingURL=SerialChart.js.map