scichart
Version:
Fast WebGL JavaScript Charting Library and Framework
127 lines (126 loc) • 6.53 kB
TypeScript
import { TEasingFn } from "../../Core/Animations/EasingFunctions";
import { IIncludable } from "../../Core/IIncludable";
import { ObservableArray } from "../../Core/ObservableArray";
import { Thickness } from "../../Core/Thickness";
import { TChartTitleStyle } from "../../types/TextStyle";
import { TSciChart } from "../../types/TSciChart";
import { RenderSurface } from "../Drawing/RenderSurface";
import { WebGlRenderContext2D } from "../Drawing/WebGlRenderContext2D";
import { LayoutManager } from "../LayoutManager/LayoutManager";
import { IChartTitleRenderer } from "../Services/TitleRenderer";
import { AxisBase2D } from "./Axis/AxisBase2D";
import { ISciChartSubSurface } from "./ISciChartSubSurface";
import { ISciChartSurfaceNative } from "./ISciChartSurfaceNative";
import { IRenderableSeries } from "./RenderableSeries/IRenderableSeries";
export interface ISciChartSurface extends ISciChartSurfaceNative {
/**
* @summary Gets the collection of {@link AxisBase2D} - the X Axis on a {@link ISciChartSurface}
* @description A {@link ISciChartSurface} can have one to many {@link AxisBase2D | XAxes}.
*
* Axis may be positioned on the left, right, top or bottom of the chart by using {@link AxisBase2D.axisAlignment}.
*
* XAxis may be positioned on the top/bottom (default) or left/right in the case of a rotated or vertical chart.
*
* Series and annotations may be linked to an axis via the {@link AxisCore.id}, {@link BaseRenderableSeries.xAxisId} and
* {@link AnnotationBase.xAxisId} property.
* @remarks
* Adding an Axis to the chart causes it to automatically redraw. Note that Axis by default do not zoom to fit data.
* See the {@link AxisBase2D.autoRange} property for more information.
*/
readonly xAxes: ObservableArray<AxisBase2D>;
/**
* @summary Gets the collection of {@link AxisBase2D} - the Y Axis on a {@link ISciChartSurface}
* @description A {@link ISciChartSurface} can have one to many {@link AxisBase2D | YAxes}.
*
* Axis may be positioned on the left, right, top or bottom of the chart by using {@link AxisBase2D.axisAlignment}.
*
* YAxis may be positioned on the left/right (default) or bottom/top in the case of a rotated or vertical chart.
*
* Series and annotations may be linked to an axis via the {@link AxisCore.id}, {@link BaseRenderableSeries.yAxisId} and
* {@link AnnotationBase.yAxisId} property.
* @remarks
* Adding an Axis to the chart causes it to automatically redraw. Note that Axis by default do not zoom to fit data.
* See the {@link AxisBase2D.autoRange} property for more information.
*/
readonly yAxes: ObservableArray<AxisBase2D>;
/**
* @summary Gets the collection of {@link IRenderableSeries} - the chart types or series on this {@link ISciChartSurface}
* @description A {@link ISciChartSurface} can have zero to many {@link IRenderableSeries | RenderableSeries}.
*
* The RenderableSeries are drawn as chart types, e.g. {@link FastLineRenderableSeries | Line series},
* {@link XyScatterRenderableSeries | Scatter series}. Each RenderableSeries
* must have a {@link BaseDataSeries | DataSeries}.
*
* Use this collection to add and remove series to the chart.
* @remarks
* Adding a series to the chart causes it to automatically redraw. To zoom to fit the data after adding a series, either set
* {@link AxisCore.autoRange} or call {@link SciChartSurface.zoomExtents}
*/
readonly renderableSeries: ObservableArray<IRenderableSeries>;
/**
* Gets the sub-chart counter value
*/
readonly subChartCounter: number;
/**
* The {@link TSciChart | SciChart 2D WebAssembly Context} containing native methods and
* access to our WebGL2 Engine and WebAssembly numerical methods
*/
readonly webAssemblyContext2D: TSciChart;
/**
* Gets or sets the Padding between the {@link ISciChartSurface} and its inner elements, in order top, right, bottom, left
*/
padding: Thickness;
/**
* Used internally - gets or sets the {@link LayoutManager}
*/
layoutManager: LayoutManager;
renderSurface: RenderSurface;
/**
* Gets or sets the title text style and placement for the SciChartSurface as {@link TChartTitleStyle}
*/
titleStyle: TChartTitleStyle;
/**
* Controls the rendering of {@link SiCharSurface.title}
*/
chartTitleRenderer: IChartTitleRenderer;
isSubSurface: boolean;
/**
* @summary Zooms the {@link SciChartSurface} in the Y direction to extents of all data (zoom to fit)
* @description
* @param animationDurationMs An optional animation duration. Default value is 0, which means 'no animation'
* @param easingFunction An optional easing function for animations. See {@link TEasingFn} for a list of values
*/
zoomExtentsY(animationDurationMs?: number, easingFunction?: TEasingFn, axisSelectorFn?: (t: IIncludable) => boolean): void;
/**
* Gets the {@link AxisBase2D | XAxis} which matches the axisId. Returns undefined if not axis found
* @param axisId The AxisId to search for
*/
getXAxisById(axisId: string): AxisBase2D | undefined;
/**
* Gets the {@link AxisBase2D | YAxis} which matches the axisId. Returns undefined if no axis found
* @param axisId The AxisId to search for
*/
getYAxisById(axisId: string): AxisBase2D;
/**
* Gets the default {@link AxisBase2D | XAxis}, which is the first one X axis attached to the surface.
*/
getDefaultXAxis(): AxisBase2D | undefined;
/**
* Gets the default {@link AxisBase2D | YAxis}, which is the first one Y axis attached to the surface.
*/
getDefaultYAxis(): AxisBase2D;
/**
* Used internally - Adds a sub-chart
*/
addSubChartInternal(subSurface: ISciChartSubSurface): void;
/**
* Runs the drawing loop. Get context and pass drawing to SciChartRenderer
*/
doDrawingLoop(context: WebGlRenderContext2D | undefined): void;
/**
* Gets or sets the drawing order for surfaces and their subsurfaces.
* This allows for a parent surface to draw over a subsurface.
* This does not affect the drawing order of separate surfaces - use z-index on the container div to control that.
*/
getSurfaceRenderOrder(): number;
}