echarts
Version:
Apache ECharts is a powerful, interactive charting and data visualization library for browser
154 lines (153 loc) • 6.1 kB
TypeScript
import SeriesData from '../../data/SeriesData.js';
import { SeriesOption, SeriesOnCartesianOptionMixin, SeriesOnPolarOptionMixin, SeriesOnCalendarOptionMixin, SeriesOnGeoOptionMixin, SeriesOnSingleOptionMixin, OptionDataValue, RoamOptionMixin, SeriesLabelOption, ItemStyleOption, LineStyleOption, SymbolOptionMixin, BoxLayoutOptionMixin, Dictionary, SeriesLineLabelOption, StatesOptionMixin, GraphEdgeItemObject, OptionDataValueNumeric, CallbackDataParams, DefaultEmphasisFocus } from '../../util/types.js';
import SeriesModel from '../../model/Series.js';
import Graph from '../../data/Graph.js';
import GlobalModel from '../../model/Global.js';
import { VectorArray } from 'zrender/lib/core/vector.js';
import { ForceLayoutInstance } from './forceLayout.js';
import { LineDataVisual } from '../../visual/commonVisualTypes.js';
declare type GraphDataValue = OptionDataValue | OptionDataValue[];
interface GraphEdgeLineStyleOption extends LineStyleOption {
curveness?: number;
}
export interface GraphNodeStateOption<TCbParams = never> {
itemStyle?: ItemStyleOption<TCbParams>;
label?: SeriesLabelOption;
}
interface ExtraEmphasisState {
focus?: DefaultEmphasisFocus | 'adjacency';
}
interface GraphNodeStatesMixin {
emphasis?: ExtraEmphasisState;
}
interface GraphEdgeStatesMixin {
emphasis?: ExtraEmphasisState;
}
export interface GraphNodeItemOption extends SymbolOptionMixin, GraphNodeStateOption, StatesOptionMixin<GraphNodeStateOption, GraphNodeStatesMixin> {
id?: string;
name?: string;
value?: GraphDataValue;
/**
* Fixed x position
*/
x?: number;
/**
* Fixed y position
*/
y?: number;
/**
* If this node is fixed during force layout.
*/
fixed?: boolean;
/**
* Index or name of category
*/
category?: number | string;
draggable?: boolean;
cursor?: string;
}
export interface GraphEdgeStateOption {
lineStyle?: GraphEdgeLineStyleOption;
label?: SeriesLineLabelOption;
}
export interface GraphEdgeItemOption extends GraphEdgeStateOption, StatesOptionMixin<GraphEdgeStateOption, GraphEdgeStatesMixin>, GraphEdgeItemObject<OptionDataValueNumeric> {
value?: number;
/**
* Symbol of both line ends
*/
symbol?: string | string[];
symbolSize?: number | number[];
ignoreForceLayout?: boolean;
}
export interface GraphCategoryItemOption extends SymbolOptionMixin, GraphNodeStateOption, StatesOptionMixin<GraphNodeStateOption, GraphNodeStatesMixin> {
name?: string;
value?: OptionDataValue;
}
export interface GraphSeriesOption extends SeriesOption<GraphNodeStateOption<CallbackDataParams>, GraphNodeStatesMixin>, SeriesOnCartesianOptionMixin, SeriesOnPolarOptionMixin, SeriesOnCalendarOptionMixin, SeriesOnGeoOptionMixin, SeriesOnSingleOptionMixin, SymbolOptionMixin<CallbackDataParams>, RoamOptionMixin, BoxLayoutOptionMixin {
type?: 'graph';
coordinateSystem?: string;
legendHoverLink?: boolean;
layout?: 'none' | 'force' | 'circular';
data?: (GraphNodeItemOption | GraphDataValue)[];
nodes?: (GraphNodeItemOption | GraphDataValue)[];
edges?: GraphEdgeItemOption[];
links?: GraphEdgeItemOption[];
categories?: GraphCategoryItemOption[];
/**
* @deprecated
*/
focusNodeAdjacency?: boolean;
/**
* Symbol size scale ratio in roam
*/
nodeScaleRatio?: 0.6;
draggable?: boolean;
edgeSymbol?: string | string[];
edgeSymbolSize?: number | number[];
edgeLabel?: SeriesLineLabelOption;
label?: SeriesLabelOption;
itemStyle?: ItemStyleOption<CallbackDataParams>;
lineStyle?: GraphEdgeLineStyleOption;
emphasis?: {
focus?: Exclude<GraphNodeItemOption['emphasis'], undefined>['focus'];
scale?: boolean | number;
label?: SeriesLabelOption;
edgeLabel?: SeriesLabelOption;
itemStyle?: ItemStyleOption;
lineStyle?: LineStyleOption;
};
blur?: {
label?: SeriesLabelOption;
edgeLabel?: SeriesLabelOption;
itemStyle?: ItemStyleOption;
lineStyle?: LineStyleOption;
};
select?: {
label?: SeriesLabelOption;
edgeLabel?: SeriesLabelOption;
itemStyle?: ItemStyleOption;
lineStyle?: LineStyleOption;
};
circular?: {
rotateLabel?: boolean;
};
force?: {
initLayout?: 'circular' | 'none';
repulsion?: number | number[];
gravity?: number;
friction?: number;
edgeLength?: number | number[];
layoutAnimation?: boolean;
};
/**
* auto curveness for multiple edge, invalid when `lineStyle.curveness` is set
*/
autoCurveness?: boolean | number | number[];
}
declare class GraphSeriesModel extends SeriesModel<GraphSeriesOption> {
static readonly type = "series.graph";
readonly type = "series.graph";
static readonly dependencies: string[];
private _categoriesData;
private _categoriesModels;
/**
* Preserved points during layouting
*/
preservedPoints?: Dictionary<VectorArray>;
forceLayout?: ForceLayoutInstance;
hasSymbolVisual: boolean;
init(option: GraphSeriesOption): void;
mergeOption(option: GraphSeriesOption): void;
mergeDefaultAndTheme(option: GraphSeriesOption): void;
getInitialData(option: GraphSeriesOption, ecModel: GlobalModel): SeriesData;
getGraph(): Graph;
getEdgeData(): SeriesData<GraphSeriesModel, LineDataVisual>;
getCategoriesData(): SeriesData;
formatTooltip(dataIndex: number, multipleSeries: boolean, dataType: string): import("../../component/tooltip/tooltipMarkup").TooltipMarkupSection | import("../../component/tooltip/tooltipMarkup").TooltipMarkupNameValueBlock;
_updateCategoriesData(): void;
setZoom(zoom: number): void;
setCenter(center: number[]): void;
isAnimationEnabled(): boolean;
static defaultOption: GraphSeriesOption;
}
export default GraphSeriesModel;