echarts
Version:
Apache ECharts is a powerful, interactive charting and data visualization library for browser
191 lines (190 loc) • 5.77 kB
TypeScript
import Model from '../../model/Model.js';
import ComponentModel from '../../model/Component.js';
import { ComponentOption, BoxLayoutOptionMixin, BorderOptionMixin, ColorString, LabelOption, LayoutOrient, CommonTooltipOption, ItemStyleOption, LineStyleOption } from '../../util/types.js';
import { Dictionary } from 'zrender/lib/core/types.js';
import GlobalModel from '../../model/Global.js';
import { ItemStyleProps } from '../../model/mixin/itemStyle.js';
import { LineStyleProps } from './../../model/mixin/lineStyle.js';
import { PathStyleProps } from 'zrender/lib/graphic/Path.js';
declare type SelectorType = 'all' | 'inverse';
export interface LegendSelectorButtonOption {
type?: SelectorType;
title?: string;
}
/**
* T: the type to be extended
* ET: extended type for keys of T
* ST: special type for T to be extended
*/
declare type ExtendPropertyType<T, ET, ST extends {
[key in keyof T]: any;
}> = {
[key in keyof T]: key extends keyof ST ? T[key] | ET | ST[key] : T[key] | ET;
};
export interface LegendItemStyleOption extends ExtendPropertyType<ItemStyleOption, 'inherit', {
borderWidth: 'auto';
}> {
}
export interface LegendLineStyleOption extends ExtendPropertyType<LineStyleOption, 'inherit', {
width: 'auto';
}> {
inactiveColor?: ColorString;
inactiveWidth?: number;
}
export interface LegendStyleOption {
/**
* Icon of the legend items.
* @default 'roundRect'
*/
icon?: string;
/**
* Color when legend item is not selected
*/
inactiveColor?: ColorString;
/**
* Border color when legend item is not selected
*/
inactiveBorderColor?: ColorString;
/**
* Border color when legend item is not selected
*/
inactiveBorderWidth?: number | 'auto';
/**
* Legend label formatter
*/
formatter?: string | ((name: string) => string);
itemStyle?: LegendItemStyleOption;
lineStyle?: LegendLineStyleOption;
textStyle?: LabelOption;
symbolRotate?: number | 'inherit';
/**
* @deprecated
*/
symbolKeepAspect?: boolean;
}
interface DataItem extends LegendStyleOption {
name?: string;
icon?: string;
textStyle?: LabelOption;
tooltip?: unknown;
}
export interface LegendTooltipFormatterParams {
componentType: 'legend';
legendIndex: number;
name: string;
$vars: ['name'];
}
export interface LegendIconParams {
itemWidth: number;
itemHeight: number;
/**
* symbolType is from legend.icon, legend.data.icon, or series visual
*/
icon: string;
iconRotate: number | 'inherit';
symbolKeepAspect: boolean;
itemStyle: PathStyleProps;
lineStyle: LineStyleProps;
}
export interface LegendSymbolStyleOption {
itemStyle?: ItemStyleProps;
lineStyle?: LineStyleProps;
}
export interface LegendOption extends ComponentOption, LegendStyleOption, BoxLayoutOptionMixin, BorderOptionMixin {
mainType?: 'legend';
show?: boolean;
orient?: LayoutOrient;
align?: 'auto' | 'left' | 'right';
backgroundColor?: ColorString;
/**
* Border radius of background rect
* @default 0
*/
borderRadius?: number | number[];
/**
* Padding between legend item and border.
* Support to be a single number or an array.
* @default 5
*/
padding?: number | number[];
/**
* Gap between each legend item.
* @default 10
*/
itemGap?: number;
/**
* Width of legend symbol
*/
itemWidth?: number;
/**
* Height of legend symbol
*/
itemHeight?: number;
selectedMode?: boolean | 'single' | 'multiple';
/**
* selected map of each item. Default to be selected if item is not in the map
*/
selected?: Dictionary<boolean>;
/**
* Buttons for all select or inverse select.
* @example
* selector: [{type: 'all or inverse', title: xxx}]
* selector: true
* selector: ['all', 'inverse']
*/
selector?: (LegendSelectorButtonOption | SelectorType)[] | boolean;
selectorLabel?: LabelOption;
emphasis?: {
selectorLabel?: LabelOption;
};
/**
* Position of selector buttons.
*/
selectorPosition?: 'auto' | 'start' | 'end';
/**
* Gap between each selector button
*/
selectorItemGap?: number;
/**
* Gap between selector buttons group and legend main items.
*/
selectorButtonGap?: number;
data?: (string | DataItem)[];
/**
* Tooltip option
*/
tooltip?: CommonTooltipOption<LegendTooltipFormatterParams>;
}
declare class LegendModel<Ops extends LegendOption = LegendOption> extends ComponentModel<Ops> {
static type: string;
type: string;
static readonly dependencies: string[];
readonly layoutMode: {
readonly type: "box";
readonly ignoreSize: true;
};
private _data;
private _availableNames;
init(option: Ops, parentModel: Model, ecModel: GlobalModel): void;
mergeOption(option: Ops, ecModel: GlobalModel): void;
_updateSelector(option: Ops): void;
optionUpdated(): void;
_updateData(ecModel: GlobalModel): void;
getData(): Model<DataItem>[];
select(name: string): void;
unSelect(name: string): void;
toggleSelected(name: string): void;
allSelect(): void;
inverseSelect(): void;
isSelected(name: string): boolean;
getOrient(): {
index: 0;
name: 'horizontal';
};
getOrient(): {
index: 1;
name: 'vertical';
};
static defaultOption: LegendOption;
}
export default LegendModel;