UNPKG

scichart

Version:

Fast WebGL JavaScript Charting Library and Framework

446 lines (445 loc) 18.2 kB
import { TSeriesDefinition } from "../../../Builder/buildSeries"; import { SeriesAnimationFiniteStateMachine } from "../../../Core/Animations/AnimationFiniteStateMachine"; import { EventHandler } from "../../../Core/EventHandler"; import { NumberRange } from "../../../Core/NumberRange"; import { ObservableArray } from "../../../Core/ObservableArray"; import { EDataPointWidthMode } from "../../../types/DataPointWidthMode"; import { EDefaultRenderLayer } from "../../../types/DefaultRenderLayer"; import { IOrderedRenderable } from "../../../types/OrderedRenderable"; import { ESeriesType } from "../../../types/SeriesType"; import { SCRTDoubleVector, TSciChart } from "../../../types/TSciChart"; import { EYRangeMode } from "../../../types/YRangeMode"; import { ELineDrawMode, WebGlRenderContext2D } from "../../Drawing/WebGlRenderContext2D"; import { SeriesInfo } from "../../Model/ChartData/SeriesInfo"; import { IDataSeries } from "../../Model/IDataSeries"; import { IPaletteProvider } from "../../Model/IPaletteProvider"; import { IPointSeries } from "../../Model/PointSeries/IPointSeries"; import { CoordinateCalculatorBase } from "../../Numerics/CoordinateCalculators/CoordinateCalculatorBase"; import { EResamplingMode } from "../../Numerics/Resamplers/ResamplingMode"; import { ResamplingParams } from "../../Numerics/Resamplers/ResamplingParams"; import { RenderPassData } from "../../Services/RenderPassData"; import { IThemeProvider } from "../../Themes/IThemeProvider"; import { AxisBase2D } from "../Axis/AxisBase2D"; import { IPointMarker } from "../PointMarkers/IPointMarker"; import { SciChartSurface } from "../SciChartSurface"; import { TDpiChangedEventArgs } from "../TextureManager/DpiHelper"; import { SeriesAnimation } from "./Animations/SeriesAnimation"; import { BaseStackedRenderableSeries } from "./BaseStackedRenderableSeries"; import { BaseDataLabelProvider } from "./DataLabels/BaseDataLabelProvider"; import { TPalettingState } from "./DrawingProviders/BaseSeriesDrawingProvider"; import { ISeriesDrawingProvider } from "./DrawingProviders/ISeriesDrawingProvider"; import { HitTestInfo } from "./HitTest/HitTestInfo"; import { IHitTestProvider } from "./HitTest/IHitTestProvider"; import { IRenderableSeries } from "./IRenderableSeries"; import { RolloverModifierRenderableSeriesProps } from "./RolloverModifier/RolloverModifierRenderableSeriesProps"; import { SeriesHoveredArgs } from "./SeriesHoveredArgs"; import { SeriesSelectedArgs } from "./SeriesSelectedArgs"; import { SeriesVisibleChangedArgs } from "./SeriesVisibleChangedArgs"; import { ShaderEffect } from "./ShaderEffect"; /** * Options to pass to the {@link BaseStackedCollection} constructor */ export interface IBaseStackedCollectionOptions { /** * When true, the series is visible and drawn */ isVisible?: boolean; /** * Sets the bound {@link AxisCore | XAxis} for this {@link BaseRenderableSeries}. * @remarks Does a lookup search on {@link SciChartSurface.xAxes} collection by Id matching {@link xAxisId | this.xAxisId} */ xAxisId?: string; /** * Sets the bound {@link AxisCore | YAxis} for this {@link BaseRenderableSeries}. * @remarks Does a lookup search on {@link SciChartSurface.yAxes} collection by Id matching {@link yAxisId | this.yAxisId} */ yAxisId?: string; /** * Sets 100% mode. When true, the stacked group becomes a 100% stacked chart */ isOneHundredPercent?: boolean; /** Determines whether the y range for this series should consider only the visible data (the default), or include the drawn points just outside the visible range */ yRangeMode?: EYRangeMode; /** An override to allow the series to appear to be drawn on a different surface to the one it is attached to. Only relevant when using subcharts */ surfaceRenderOrder?: number; /** The layer to draw the series on. Defaults to SeriesRenderLayer */ renderLayer?: EDefaultRenderLayer | number; /** The draw order. Larger numbers draw on top. Defaults to the position of the series in the renderableSeries array. */ renderOrder?: number; /** Another series or annotation to draw relative to. The offset can be positive or negative and can (and usually should) be fractional */ renderNextTo?: { renderable: IOrderedRenderable | string; offset: number; }; } /** * A base class for stacked collections, which are used to create stacked mountain or column chart types. * Concrete types are {@link StackedColumnCollection} and {@link StackedMountainCollection} */ export declare abstract class BaseStackedCollection<T extends BaseStackedRenderableSeries> extends ObservableArray<T> implements IRenderableSeries, IOrderedRenderable { /** @inheritDoc */ abstract readonly type: ESeriesType; /** @inheritDoc */ readonly id: string; /** @inheritDoc */ readonly isStacked = true; /** @inheritDoc */ readonly isCollection: boolean; readonly isPolar: boolean; /** @inheritDoc */ readonly supportsResampling = false; /** @inheritDoc */ readonly isSpline = false; /** @inheritDoc */ parentSurface: SciChartSurface; /** @inheritDoc */ invalidateParentCallback: () => void; /** * the accumulated values which are used to draw each column/band for {@link BaseStackedRenderableSeries} */ accumulatedValues0: SCRTDoubleVector; /** @inheritDoc */ enableDrawingOptimisations: boolean; /** * The {@link TSciChart | SciChart WebAssembly Context} containing * native methods and access to our WebGL2 WebAssembly Drawing Engine */ protected webAssemblyContext: TSciChart; protected accumulatedFinalAnimationValues0: SCRTDoubleVector; protected isAccumulatedVectorDirty: boolean; protected firstAnimationRender: boolean; protected animationFSM: SeriesAnimationFiniteStateMachine; protected dataLabelProviderProperty: BaseDataLabelProvider; protected currentRenderPassData: RenderPassData; private isVisibleProperty; private xAxisIdProperty; private yAxisIdProperty; private xAxisProperty; private yAxisProperty; private isOneHundredPercentProperty; private animationQueue; private yRangeModeProperty; private seriesNameProperty; private surfaceRenderOrderProperty; private renderLayerProperty; private renderOrderProperty; private renderNextToProperty; /** * Creates an instance of the {@link BaseStackedCollection} * @param webAssemblyContext The {@link TSciChart | SciChart WebAssembly Context} containing * native methods and access to our WebGL2 WebAssembly Drawing Engine * @param options Optional parameters of type {@link IBaseStackedCollectionOptions} to configure the series */ protected constructor(webAssemblyContext: TSciChart, options?: IBaseStackedCollectionOptions); /** @inheritDoc */ get isVisibleChanged(): EventHandler<SeriesVisibleChangedArgs>; /** @inheritDoc */ get selected(): EventHandler<SeriesSelectedArgs>; /** @inheritDoc */ get hovered(): EventHandler<SeriesHoveredArgs>; /** @inheritDoc */ get isSelected(): boolean; /** @inheritDoc */ set isSelected(isSelected: boolean); /** @inheritDoc */ get isHovered(): boolean; /** @inheritDoc */ set isHovered(isHovered: boolean); /** @inheritDoc */ get isDigitalLine(): boolean; /** @inheritDoc */ set isDigitalLine(isDigitalLine: boolean); /** @inheritDoc */ get isVisible(): boolean; /** @inheritDoc */ set isVisible(isVisible: boolean); /** @inheritDoc */ get xAxisId(): string | undefined; /** @inheritDoc */ set xAxisId(id: string); /** @inheritDoc */ get xAxis(): AxisBase2D | undefined; /** @inheritDoc */ get yAxis(): AxisBase2D | undefined; /** @inheritDoc */ get yAxisId(): string | undefined; /** @inheritDoc */ set yAxisId(id: string); /** @inheritDoc */ get seriesName(): string | undefined; set seriesName(value: string); /** * Gets or sets 100% mode. When true, the stacked group becomes a 100% stacked chart */ get isOneHundredPercent(): boolean; /** * Gets or sets 100% mode. When true, the stacked group becomes a 100% stacked chart */ set isOneHundredPercent(value: boolean); /** @inheritDoc */ get yRangeMode(): EYRangeMode; set yRangeMode(value: EYRangeMode); /** * dataSeries property is not supported for BaseStackedCollection */ get dataSeries(): IDataSeries; /** * dataSeries property is not supported for BaseStackedCollection */ set dataSeries(value: IDataSeries); /** * drawNaNAs property is not supported for BaseStackedCollection */ get drawNaNAs(): ELineDrawMode; /** * drawNaNAs property is not supported for BaseStackedCollection */ set drawNaNAs(value: ELineDrawMode); /** * drawingProviders property is not supported for BaseStackedCollection */ get drawingProviders(): ISeriesDrawingProvider[]; /** * drawingProviders property is not supported for BaseStackedCollection */ set drawingProviders(value: ISeriesDrawingProvider[]); /** * hitTestProvider property is not supported for BaseStackedCollection */ get hitTestProvider(): IHitTestProvider; /** * hitTestProvider property is not supported for BaseStackedCollection */ set hitTestProvider(value: IHitTestProvider); /** * paletteProvider property is not supported for BaseStackedCollection */ get paletteProvider(): IPaletteProvider; /** * paletteProvider property is not supported for BaseStackedCollection */ set paletteProvider(value: IPaletteProvider); /** * pointMarker property is not supported for BaseStackedCollection */ get pointMarker(): IPointMarker; /** * pointMarker property is not supported for BaseStackedCollection */ set pointMarker(value: IPointMarker); /** * rolloverModifierProps property is not supported for BaseStackedCollection */ get rolloverModifierProps(): RolloverModifierRenderableSeriesProps; /** * rolloverModifierProps property is not supported for BaseStackedCollection */ set rolloverModifierProps(value: RolloverModifierRenderableSeriesProps); /** * stroke property is not supported for BaseStackedCollection */ get stroke(): string; /** * stroke property is not supported for BaseStackedCollection */ set stroke(value: string); /** * strokeThickness property is not supported for BaseStackedCollection */ get strokeThickness(): number; /** * strokeThickness property is not supported for BaseStackedCollection */ set strokeThickness(value: number); /** * effect property is not supported for BaseStackedCollection */ get effect(): ShaderEffect; /** * effect property is not supported for BaseStackedCollection */ set effect(effect: ShaderEffect); /** * opacity property is not supported for BaseStackedCollection */ get opacity(): number; /** * opacity property is not supported for BaseStackedCollection */ set opacity(value: number); /** * rolloverModifierProps1() is not supported for BaseStackedCollection */ set rolloverModifierProps1(value: RolloverModifierRenderableSeriesProps); /** * rolloverModifierProps1() is not supported for BaseStackedCollection */ get rolloverModifierProps1(): RolloverModifierRenderableSeriesProps; /** * resamplingMode property is not supported for BaseStackedCollection */ get resamplingMode(): EResamplingMode; set resamplingMode(value: EResamplingMode); /** * resamplingPrecision property is not supported for BaseStackedCollection */ get resamplingPrecision(): number; set resamplingPrecision(value: number); /** @inheritDoc */ getSurfaceRenderOrder(): number; /** @inheritDoc */ setSurfaceRenderOrder(value: number): void; /** * The render layer grouping within which the series will be draw. Defaults to EDefaultRenderLayer.SeriesLayer (5) */ getRenderLayer(): number; /** * The render layer grouping within which the series will be draw. Defaults to EDefaultRenderLayer.SeriesLayer (5) */ setRenderLayer(value: number | EDefaultRenderLayer): void; /** @inheritDoc */ getRenderOrder(): number; /** @inheritDoc */ setRenderOrder(value: number): void; /** @inheritDoc */ setRenderNextTo(renderable: IOrderedRenderable | string, offset?: number): void; /** @inheritDoc */ getRenderNextTo(): { renderable: string | IOrderedRenderable; offset: number; }; /** * Notify the collection that the accumulated values need to be recalculated */ setAccumulatedValuesDirty(): void; /** @inheritDoc */ getIndicesRange(xRange: NumberRange): NumberRange; /** @inheritDoc */ getDataPointWidth(xCoordCalc: CoordinateCalculatorBase, widthFraction: number, widthMode?: EDataPointWidthMode): number; protected get canDraw(): boolean; /** @inheritDoc */ pushPalettedColors?(color: number, palettingState: TPalettingState): void; /** @inheritDoc */ getSeriesInfo(hitTestInfo: HitTestInfo): SeriesInfo; /** @inheritDoc */ applyTheme(themeProvider: IThemeProvider): void; /** @inheritDoc */ delete(): void; /** @inheritDoc */ abstract draw(renderContext: WebGlRenderContext2D, renderPassData: RenderPassData): void; /** @inheritDoc */ notifyPropertyChanged(propertyName: string): void; /** @inheritDoc */ onDpiChanged(args: TDpiChangedEventArgs): void; /** @inheritDoc */ getBaseXValues(): number[]; /** @inheritDoc */ getDataSeriesName(): string; /** @inheritDoc */ getDataSeriesValuesCount(): number; /** * gets if a data animation is currently running */ get isRunningDataAnimation(): boolean; /** @inheritDoc */ getNativeXValues(): SCRTDoubleVector; getNativeYValues(): SCRTDoubleVector; /** @inheritDoc */ abstract getXRange(): NumberRange; /** @inheritDoc */ getYRange(xVisibleRange: NumberRange, isXCategoryAxis: boolean): NumberRange; /** @inheritDoc */ hasDataSeries(): boolean; /** @inheritDoc */ abstract hasDataSeriesValues(): boolean; /** @inheritDoc */ hasStrokePaletteProvider(): boolean; /** @inheritDoc */ hasFillPaletteProvider(): boolean; /** @inheritDoc */ hasPointMarkerPaletteProvider(): boolean; /** @inheritDoc */ onAttach(scs: SciChartSurface): void; /** @inheritDoc */ onDetach(): void; /** * Updates accumulated vectors which are used to draw {@link BaseStackedRenderableSeries} */ abstract updateAccumulatedVectors(): void; /** * Gets visible renderable series array */ getVisibleSeries(): T[]; /** @inheritDoc */ enqueueAnimation(animation: SeriesAnimation): void; /** @inheritDoc */ runAnimation(animation: SeriesAnimation): void; /** * Sets a start up animation class, a child class for {@link BaseAnimation} */ set animation(value: SeriesAnimation); /** @inheritDoc */ get isRunningAnimation(): boolean; /** @inheritDoc */ onAnimate(timeElapsed: number): void; /** * checkIsOutOfDataRange() is not supported for BaseStackedCollection * @param xValue * @param yValue */ checkIsOutOfDataRange(xValue: number, yValue: number): boolean; /** @inheritDoc */ toPointSeries(resamplingParams?: ResamplingParams): IPointSeries; /** * getCurrentRenderPassData method is not supported for BaseStackedCollection */ getCurrentRenderPassData(): RenderPassData; /** @inheritDoc */ setCurrentRenderPassData(renderPassData: RenderPassData): void; /** @inheritDoc */ getResamplingParams(): ResamplingParams; /** @inheritDoc */ get dataLabelProvider(): BaseDataLabelProvider; /** @inheritDoc */ set dataLabelProvider(provider: BaseDataLabelProvider); /** @inheritDoc */ toJSON(excludeData?: boolean): TSeriesDefinition; /** @inheritDoc */ resolveAutoColors(index: number, maxSeries: number, theme: IThemeProvider): void; /** @inheritDoc */ adjustAutoColor(propertyName: string, color: string): string; /** @inheritDoc */ linkAxes(): void; protected isAllDataSeriesSet(): boolean; /** * notifies listeners to {@link invalidateParentCallback} and redraws the {@link SciChartSurface} */ protected invalidateParent(): void; /** * Gets the first series in the collection, else undefined */ protected getFirstSeries(): T; /** * Gets the parent {@link SciChartSurface} */ protected getParentSurface(): SciChartSurface; /** * Runs before the animation starts * @protected */ protected beforeAnimationStart(): void; /** * Runs after the animation is complete * @protected */ protected afterAnimationComplete(): void; /** * Internal method that runs on each animation tick * @param progress The current animation progress, a value from 0 to 1 * @param animationFSM The animation finite state machine * @protected */ protected updateAnimationProperties(progress: number, animationFSM: SeriesAnimationFiniteStateMachine): void; protected updateHitTestProviders(renderPassData: RenderPassData): void; protected isEnoughDataToDraw(): boolean; }