@syncfusion/ej2-charts
Version:
Feature-rich chart control with built-in support for over 25 chart types, technical indictors, trendline, zooming, tooltip, selection, crosshair and trackball.
897 lines (896 loc) • 26.8 kB
TypeScript
import { RectAttributes, Size } from '@syncfusion/ej2-svg-base';
import { Chart3D } from '../chart3D';
import { Chart3DSeries, Chart3DPoint } from '../series/chart-series';
import { Chart3DAxis, Visible3DLabels } from '../axis/axis';
import { BorderModel, FontModel } from '../../common/model/base-model';
import { Chart3DSeriesModel } from '../series/chart-series-model';
import { Matrix3D } from '../utils/chart3dRender';
import { Alignment, ChartTheme, LegendShape, TextOverflow, TitlePosition } from '../../common/utils/enum';
import { ChildProperty } from '@syncfusion/ej2-base';
import { Chart3DTextFontModel, TitleBorderModel } from './chart3d-Interface-model';
/**
* Interface for event argument objects in a 3D chart.
*/
export interface Chart3DEventArgs {
/** Defines the event cancel status. */
cancel: boolean;
}
/**
* Interface for event argument objects representing the "3D loaded" event in a 3D chart.
*/
export interface Chart3DLoadedEventArgs extends Chart3DEventArgs {
/** Defines the chart instance. */
chart: Chart3D;
/** Defines the theme in which the chart renders. */
theme?: ChartTheme;
}
/**
* Represents a string builder with methods for appending, removing, inserting, and converting strings.
*/
export interface Chart3DStringBuilder {
append: (s: string) => Chart3DStringBuilder;
remove: (i: number, j?: number) => Chart3DStringBuilder;
insert: (i: number, s: string) => Chart3DStringBuilder;
toString: (s?: string) => string;
}
/**
* Represents a color using red (R), green (G), and blue (B) components, with an optional alpha (A) component for transparency.
*/
export interface Chart3DColorFormat {
/** The red component of the color. */
red: number;
/** The green component of the color. */
green: number;
/** The blue component of the color. */
blue: number;
/**
* The optional alpha component of the color, representing transparency.
* It can be a number in the range [0, 1] or a string representation (e.g., "0.5").
*/
alpha?: number | string;
}
/**
* Interface for event argument objects representing the rendering of a 3D series in a chart.
*/
export interface Chart3DSeriesRenderEventArgs {
/** Defines the series that is getting rendered. */
series: Chart3DSeries;
/** Defines the current series data source. */
data: Object;
/** Defines the current series fill. */
fill: string;
}
/**
* Interface for event argument objects representing the calculated range of an axis in a 3D chart.
*/
export interface Chart3DAxisRangeCalculatedEventArgs extends Chart3DEventArgs {
/** Defines the current axis. */
axis: Chart3DAxis;
/** Defines axis current range. */
minimum: number;
/** Defines axis current range. */
maximum: number;
/** Defines axis current interval. */
interval: number;
}
/**
* Interface for event argument objects representing the rendering of labels on a 3D axis in a chart.
*/
export interface Chart3DAxisLabelRenderEventArgs extends Chart3DEventArgs {
/** Defines the current axis. */
axis: Chart3DAxis;
/** Defines axis current label text. */
text: string;
/** Defines axis current label value. */
value: number;
/** Defines axis current label font style. */
labelStyle: FontModel;
}
/**
* Interface for a 3D vector with components for x, y, and z coordinates.
*/
export interface Chart3DVector {
/** The x-coordinate of the 3D vector. */
x: number;
/** The y-coordinate of the 3D vector. */
y: number;
/** The z-coordinate of the 3D vector. */
z: number;
}
/**
* Interface for defining the position of ticks in a chart, including their coordinates.
*/
export interface Chart3DTickPosition {
/** The x-coordinate of the starting point of the tick. */
x1: number;
/** The y-coordinate of the starting point of the tick. */
y1: number;
/** The x-coordinate of the ending point of the tick. */
x2: number;
/** The y-coordinate of the ending point of the tick. */
y2: number;
}
/**
* Interface representing properties and attributes for tick elements in a chart.
*/
export interface Chart3DTickElement {
/** The opacity of the tick element (optional). */
opacity?: number;
/** The width of the tick element. */
width: number;
/** The stroke color of the tick element. */
stroke: string;
/** The name of the axis associated with the tick (optional). */
axisName?: string;
/** The child element associated with the tick. */
child: Element;
/** * A tag associated with the tick element. */
tag: string;
/** The unique identifier of the tick element. */
id: string;
/** * The font style for text-based ticks (optional). */
font?: FontModel;
}
/**
* Represents a 3D location with coordinates in a 3D chart.
*
* @private
*/
export interface Chart3DLocation {
/** The x-coordinate of the 3D location.*/
x?: number;
/** The x-coordinate of the 3D location. */
y?: number;
/** The z-coordinate of the 3D location. */
z?: number;
}
/**
* Represents the dimensions of a rectangular wall in 3D space.
*/
export interface Chart3DWallRect {
/** The left coordinate of the wall's bounding box.*/
left: number;
/** The right coordinate of the wall's bounding box. */
right: number;
/** The top coordinate of the wall's bounding box. */
top: number;
/** The bottom coordinate of the wall's bounding box. */
bottom: number;
}
/**
* Represents a labeled rectangle with coordinates and size.
*
*/
export interface Chart3DLabelRect {
/** The x-coordinate of the top-left corner of the rectangle. */
x: number;
/** The y-coordinate of the top-left corner of the rectangle. */
y: number;
/** The size of the rectangle, defined by its width and height. */
size: Size;
}
/**
* Interface representing a label element in a three-dimensional chart.
*
* @interface
*/
export interface Chart3DLabelElement {
/** The width of the label element.*/
width?: number;
/** The height of the label element.*/
height?: number;
/** The content of the label, which can be either a string or an element data.*/
label?: Visible3DLabels | Chart3DDataElement;
/** The text anchor property specifying the alignment of the text.*/
textAnchor?: string;
/** A tag associated with the label element.*/
tag: string;
/** The font settings for the label element.*/
font?: FontModel;
/** The unique identifier for the label element.*/
id?: string;
/** Child element associated with the label.*/
child?: Element;
/** The rotation angle of the label element.*/
angle?: number;
/** The three-dimensional series associated with the label.*/
series?: Chart3DSeries;
/** The index of the data point associated with the label.*/
pointIndex?: number;
/** The three-dimensional data point associated with the label.*/
point?: Chart3DPoint;
/** The index of the series associated with the label.*/
seriesIndex?: number;
/** Additional arguments data associated with the label.*/
argsData?: Chart3DTextRenderEventArgs;
/** The fill color of the label element.*/
fill?: string;
}
/**
* Interface representing element data for a three-dimensional chart.
*
* @interface
*/
export interface Chart3DDataElement {
/** The text content of the element.*/
text: string;
/** The location values associated with the element.*/
location: Chart3DLocation;
/** The three-dimensional series associated with the element.*/
series?: Chart3DSeries;
/** The index of the data point associated with the element.*/
pointIndex?: number;
/** An alternative text property for the element.*/
alternativeText?: string;
}
/**
* Interface representing style options for a three-dimensional chart element.
*
* @interface
*/
export interface Chart3DStyleOptions {
/** The interior color of the element.*/
interior: string;
/** The opacity of the element.*/
opacity: number;
/** The dash array property of the element.*/
dashArray?: string;
}
/**
* Properties required to render a rectangle
*
* @private
*/
export interface Chart3DBoderElements extends RectAttributes {
/**
* Corner radius value of a rectangle
*/
ry?: number;
}
/**
* Represents the properties of a grid element.
*
* @interface Chart3DPathOptions
*/
export interface Chart3DPathOptions {
/** The unique identifier of the grid element.*/
id: string;
/** The name associated with the grid element.*/
name: string;
/** The fill color of the grid element.*/
fill: string;
/** The stroke color of the grid element.*/
stroke: string;
/** The width of the stroke for the grid element.*/
'stroke-width': number;
/** The opacity of the grid element.*/
opacity: number;
/** The description of the grid element.*/
d: string;
}
/**
* Represents a 3D polygon in a chart.
*
* @interface Chart3DPolygon
*/
export interface Chart3DPolygon {
/** * The normal vector of the polygon. */
normal: Chart3DVector;
/** * The array of 3D points defining the polygon. */
points: Chart3DVector[];
/** * An alternate array of 3D points defining the polygon. */
vectorPoints: Chart3DVector[];
/** * The index of the polygon. */
index: number;
/** * The associated chart in 3D space. */
tag: Chart3D;
/** * The name of the polygon. */
name: string;
/** * The thickness of the stroke used to outline the polygon. */
strokeThickness: number;
/** * The opacity of the polygon. */
opacity: number;
/** * The fill color of the polygon. */
fill: string;
/** * An additional numeric property 'd'. */
d: number;
/** * Element information associated with the polygon. */
polygonElement: {
tag: string;
parent: Element;
};
/** * Optional text associated with the polygon. */
text?: string;
/** * Optional element information associated with the polygon, can be null. */
element?: Chart3DTickElement | Chart3DLabelElement | null;
/** * Flag indicating whether the polygon is split.*/
isSplit?: boolean;
}
/**
* Represents attributes associated with a 3D polygon.
*
* @interface Chart3DPolyAttributes
*/
export interface Chart3DPolyAttributes {
/** The index of the polygon.*/
index: number;
/** The result of an operation on the polygon.*/
result: string;
/** The 3D vector associated with the polygon.*/
vector: Chart3DVector;
/** Indicates if the point is a cutting back point.*/
isCuttingBackPoint: boolean;
/** The index of the cutting back pair, if applicable.*/
cuttingBackPairIndex: number | null;
/** Indicates if the polygon has already been cut back.*/
alreadyCutBack: boolean;
/** Indicates if the point is a cutting front point.*/
isCuttingFrontPoint: boolean;
/** The index of the cutting front pair, if applicable.*/
cuttingFrontPairIndex: number | null;
/** Indicates if the polygon has already been cut front.*/
alreadyCutFront: boolean;
/** An optional flag indicating if it is a cutting back point.*/
cuttingBackPoint?: boolean;
/** An optional index of the cutting back pair.*/
alterCuttingBackPairIndex?: number;
/** An optional flag indicating if it is a cutting front point.*/
cuttingFrontPoint?: boolean;
/** An optional index of the cutting front pair.*/
alterCuttingFrontPairIndex?: number;
}
/**
* Represents collections of polygons categorized as back and front.
*
* @interface Chart3DPolyCollections
*/
export interface Chart3DPolyCollections {
/** Collection of polygons categorized as back.*/
backPolygon: Chart3DPolygon[];
/** Collection of polygons categorized as front.*/
frontPolygon: Chart3DPolygon[];
}
/**
* Represents the arguments for the 3D text rendering event in a chart.
*
* @interface Chart3DTextRenderEventArgs
*/
export interface Chart3DTextRenderEventArgs extends Chart3DEventArgs {
/** Defines the text for the data label. */
text: string;
/** Defines data label text style. */
textStyle: Chart3DTextFontModel;
/** Defines the data label border. */
border: BorderModel;
/** Defines the data label template.
*
* @aspType string
*/
template: string | Function;
/** Defines the series information for the data label. */
series: Chart3DSeriesModel;
/** Defines the point information for the data label. */
point: Chart3DPoint;
/** Defines the data label color. */
color: string;
/** Specifies whether to cancel the text render. */
cancel: boolean;
}
/**
* Represents options for rendering text.
*
* @interface Chart3DTextOption
*/
export interface Chart3DTextOption {
/** Unique identifier for the text element. */
id: string;
/** The x-coordinate of the text element. */
x: number;
/** The y-coordinate of the text element. */
y: number;
/** The fill color of the text. */
fill: string;
/** The font size of the text. */
'font-size': string;
/** The font family for the text. */
'font-family': string;
/** The font style (e.g., normal, italic) of the text.*/
'font-style': string;
/** The font weight (e.g., normal, bold) of the text. */
'font-weight': string;
/** The opacity of the text. */
opacity: number;
/**The text anchor position (e.g., start, middle, end).*/
'text-anchor': string;
/**The cursor type for the text element.*/
cursor: string;
/** The transformation applied to the text. */
transform: string;
}
/**
* Represents basic transformation parameters for rendering.
*
* @interface Chart3DBasicTransform
*/
export interface Chart3DBasicTransform {
/** The size of the viewing area. */
viewingArea: Size;
/** The rotation angle. */
rotation: number;
/** The tilt angle. */
tilt: number;
/** The depth of the transformation. */
depth: number;
/** The perspective angle. */
perspectiveAngle: number;
/** Flag indicating whether an update is needed. */
needUpdate: boolean;
/** The centered matrix used in transformation. */
centeredMatrix: number[][];
/** The perspective matrix used in transformation. */
perspective: number[][];
/** The result matrix after transformation.*/
resultMatrix: number[][];
/** The view matrix used in transformation. */
viewMatrix: number[][];
/** Reference to the chart object. */
chartObj?: Matrix3D;
}
/**
* Represents the arguments for 3D tooltip rendering event.
*
* @interface Chart3DTooltipRenderEventArgs
*/
export interface Chart3DTooltipRenderEventArgs extends Chart3DEventArgs {
/** Specifies collections of tooltip text. */
text?: string;
/** Defines tooltip text style. */
textStyle?: FontModel;
/** Defines the header text for the tooltip. */
headerText?: string;
/** Defines the point information for the tooltip. */
data?: Chart3DPointInformation;
/** Defines the tooltip template. */
template?: string;
/** Specifies whether to cancel the tooltip render. */
cancel: boolean;
}
/**
* Represents information about a 3D point.
*
* @interface Chart3DPointInformation
*/
export interface Chart3DPointInformation {
/** point xValue. */
pointX: object;
/** point yValue. */
pointY: object;
/** point index. */
pointIndex: number;
/** series index. */
seriesIndex: number;
/** series name. */
seriesName: string;
/** point text. */
pointText: string;
}
/**
* Represents event arguments for 3D point interactions.
*
* @interface Chart3DPointEventArgs
*/
export interface Chart3DPointEventArgs extends Chart3DEventArgs {
/** Defines the series where the mouse hovered or clicked. */
series: Chart3DSeriesModel;
/** Defines the point where the mouse hovered or clicked. */
point: Chart3DPoint;
/** Defines the point index where the mouse hovered or clicked. */
pointIndex: number;
/** Defines the series index where the mouse hovered or clicked. */
seriesIndex: number;
/** Specifies the current mouse X-coordinate. */
x: number;
/** Specifies the current mouse Y-coordinate. */
y: number;
}
/**
* Represents event arguments for 3D legend rendering.
*
* @interface Chart3DLegendRenderEventArgs
*/
export interface Chart3DLegendRenderEventArgs extends Chart3DEventArgs {
/** Defines the legend text. */
text: string;
/** Defines the legend fill color. */
fill: string;
/** Defines the legend shape. */
shape: LegendShape;
/** Specifies whether to cancel the legend render. */
cancel: boolean;
}
/**
* Represents event arguments for 3D mouse interaction.
*
* @interface Chart3DMouseEventArgs
*/
export interface Chart3DMouseEventArgs extends Chart3DEventArgs {
/** Defines current mouse event target id. */
target: string;
/** Defines current mouse x location. */
x: number;
/** Defines current mouse y location. */
y: number;
}
/**
* Represents event arguments for the completion of 3D selection.
*
* @interface Chart3DSelectionCompleteEventArgs
*/
export interface Chart3DSelectionCompleteEventArgs extends Chart3DEventArgs {
/** Defines current selected Data X, Y values. */
selectedDataValues: {
x?: string | number | Date;
y?: number;
seriesIndex?: number;
pointIndex?: number;
}[];
/**
* Reference to the 3D chart instance.
*/
chart: Chart3D;
}
/**
* Represents event arguments for 3D chart export.
*
* @interface Chart3DExportEventArgs
*/
export interface Chart3DExportEventArgs extends Chart3DEventArgs {
/**
* The width of the exported chart.
*/
width: number;
/**
* The height of the exported chart.
*/
height: number;
}
/**
* Represents the arguments for the 3D print event in a chart.
*
* @interface Chart3DPrintEventArgs
*/
export interface Chart3DPrintEventArgs extends Chart3DEventArgs {
/** Specifies the HTML content to be printed. */
htmlContent: Element;
}
/**
* Represents event arguments for 3D chart printing.
*
* @interface Chart3DPointRenderEventArgs
*/
export interface Chart3DPointRenderEventArgs extends Chart3DEventArgs {
/** Defines the series for the point. */
series: Chart3DSeries;
/** Defines the point. */
point: Chart3DPoint;
/** Defines the point fill color. */
fill: string;
/** Specifies whether to cancel the point render. */
cancel: boolean;
}
/**
* Represents event arguments for 3D chart legend click.
*
* @interface Chart3DLegendClickEventArgs
*/
export interface Chart3DLegendClickEventArgs extends Chart3DEventArgs {
/** Defines the shape of the legend clicked. */
legendShape: LegendShape;
/** Defines the series for the legend clicked. */
series: Chart3DSeries;
/** Defines the legend text. */
legendText: string;
/** Defines the legend fill color. */
cancel: boolean;
}
/**
* Represents event arguments for 3D chart resize.
*
* @interface Chart3DResizeEventArgs
*/
export interface Chart3DResizeEventArgs {
/** Specifies the previous size of the 3D chart. */
previousSize: Size;
/** Specifies the current size of the 3D chart. */
currentSize: Size;
/** Defines the 3D chart instance. */
chart: Chart3D;
}
/**
* Represents event arguments before 3D chart resize.
*
* @interface Chart3DBeforeResizeEventArgs
*/
export interface Chart3DBeforeResizeEventArgs {
/** Specifies whether to cancel the resize event. */
cancel: boolean;
}
/**
* Represents the style settings for 3D chart theme.
*
* @interface Chart3DThemeStyle
*/
export interface Chart3DThemeStyle {
/** The color of axis labels. */
axisLabel: string;
/** The color of axis titles. */
axisTitle: string;
/** The color of major grid lines. */
majorGridLine: string;
/** The color of minor grid lines. */
minorGridLine: string;
/** The color of major tick lines. */
majorTickLine: string;
/** The color of minor tick lines. */
minorTickLine: string;
/** The color of the chart title. */
chartTitle: string;
/** The color of legend labels. */
legendLabel: string;
/** The background color of the chart. */
background: string;
/** The fill color of tooltip. */
tooltipFill: string;
/** The color of bold labels in tooltip. */
tooltipBoldLabel: string;
/** The color of light labels in tooltip. */
tooltipLightLabel: string;
/** The color of the header line in tooltip. */
tooltipHeaderLine: string;
/** The color of tab headers. */
tabColor: string;
/** The font settings for the chart title. */
chartTitleFont: FontModel;
/** The font settings for axis labels. */
axisLabelFont: FontModel;
/** The font settings for legend titles. */
legendTitleFont: FontModel;
/** The font settings for legend labels. */
legendLabelFont: FontModel;
/** The opacity of tooltip. */
tooltipOpacity?: number;
/** The font settings for tooltip labels. */
tooltipLabelFont: FontModel;
/** The font settings for axis titles. */
axisTitleFont: FontModel;
/** The font settings for chart subtitles. */
chartSubTitleFont: FontModel;
/** The font settings for data labels. */
datalabelFont: FontModel;
/** The color of the 3D wall */
backWallColor: string;
/** The color of the 3D wall */
leftWallColor: string;
}
/**
* Represents the position information for a rectangle.
*
* @interface
*/
export interface Chart3DRectPosition {
/** The position value for the rectangle. */
position: number;
/** The count of rectangles. */
rectCount: number;
}
/**
* Represents information about the depth.
*
* @interface
*/
export interface Chart3DDepthInfoType {
/** The starting value of the depth. */
start: number;
/** The ending value of the depth. */
end: number;
/** The change in depth. */
delta: number;
}
/**
* Represents values related to a range.
*
* @interface
*/
export interface Chart3DRangeValues {
/** The starting value of the range. */
start: number;
/** The ending value of the range. */
end: number;
/** The change in value within the range. */
delta: number;
/** The median value within the range. */
median: number;
/** Indicates whether the range is empty. */
isEmpty: boolean;
}
/**
* Interface representing attributes for a 3D chart line.
*
* @interface
*/
export interface Chart3DLineAttributes {
/** The data attribute for the line. */
id: string;
/** The x-coordinate of the starting point of the line. */
'x1': number;
/** The y-coordinate of the starting point of the line. */
'y1': number;
/** The x-coordinate of the ending point of the line. */
'x2': number;
/** The y-coordinate of the ending point of the line. */
'y2': number;
/** The dash pattern of the line stroke. */
'stroke-dasharray': string;
/** The width of the line stroke. */
'stroke-width': number;
/** The color of the line stroke. */
'stroke': string;
/** The opacity of the line. */
'opacity': number;
}
/**
* Defines the tooltip fade out mode of the chart.
* * Click - Used to remove the tooltip on click.
* * Move - Used to remove the tooltip with some delay.
*/
export declare type Chart3DFadeOutMode =
/** Used to remove the tooltip on click */
'Click' |
/** Used to remove the tooltip with some delay */
'Move';
/**
* Configures the fonts in charts.
*/
export declare class Chart3DTextFont extends ChildProperty<Chart3DTextFont> {
/**
* FontStyle for the text.
*
* @default 'Normal'
*/
fontStyle: string;
/**
* Font size for the text.
*
* @default '16px'
*/
size: string;
/**
* FontWeight for the text.
*
* @default 'Normal'
*/
fontWeight: string;
/**
* Color for the text.
*
* @default ''
*/
color: string;
/**
* FontFamily for the text.
*/
fontFamily: string;
/**
* Opacity for the text.
*
* @default 1
*/
opacity: number;
}
/**
* Configures the borders in the 3D chart title.
*/
export declare class TitleBorder extends ChildProperty<TitleBorder> {
/**
* The color of the border that accepts value in hex and rgba as a valid CSS color string.
*
* @default 'transparent'
*/
color: string;
/**
* The width of the border in pixels.
*
* @default 0
*/
width: number;
/**
* corder radius for the border.
*
* @default 0.8
*/
cornerRadius: number;
}
/**
* Configures the title settings in 3D chart.
*/
export declare class TitleSettings extends ChildProperty<TitleSettings> {
/**
* FontStyle for the text.
*
* @default 'Normal'
*/
fontStyle: string;
/**
* Font size for the text.
*
* @default '15px'
*/
size: string;
/**
* FontWeight for the text.
*
* @default '500'
*/
fontWeight: string;
/**
* Color for the text.
*
* @default ''
*/
color: string;
/**
* text alignment.
*
* @default 'Center'
*/
textAlignment: Alignment;
/**
* FontFamily for the text.
*/
fontFamily: string;
/**
* Opacity for the text.
*
* @default 1
*/
opacity: number;
/**
* Specifies the chart title text overflow.
*
* @default 'Wrap'
*/
textOverflow: TextOverflow;
/**
* Defines the position for the chart title.
* * Top: Displays the title at the top of the chart.
* * Left: Displays the title at the left of the chart.
* * Bottom: Displays the title at the bottom of the chart.
* * Right: Displays the title at the right of the chart.
* * Custom: Displays the title based on the given x and y values.
*
* @default 'Top'
*/
position: TitlePosition;
/**
* Defines the X coordinate for the chart title.
*
* @default 0
*/
x: number;
/**
* Defines the Y coordinate for the chart title.
*
* @default 0
*/
y: number;
/**
* Background of the title border.
*
* @default 'transparent'
*/
background: string;
/**
* Options to customize the border of the chart title.
*/
border: TitleBorderModel;
}