echarts
Version:
Apache ECharts is a powerful, interactive charting and data visualization library for browser
161 lines (160 loc) • 6.48 kB
TypeScript
import * as zrUtil from 'zrender/lib/core/util.js';
import { AllPropTypes, Dictionary } from 'zrender/lib/core/types.js';
import { ColorString, BuiltinVisualProperty, VisualOptionPiecewise, VisualOptionUnit, ParsedValue } from '../util/types.js';
declare type RawValue = ParsedValue;
declare type VisualValue = AllPropTypes<VisualOptionUnit>;
declare type NormalizedValue = number;
declare type MappingMethod = 'linear' | 'piecewise' | 'category' | 'fixed';
interface Normalizer {
(this: VisualMapping, value?: RawValue): NormalizedValue;
}
interface ColorMapper {
(this: VisualMapping, value: RawValue | NormalizedValue, isNormalized?: boolean, out?: number[]): ColorString | number[];
}
interface DoMap {
(this: VisualMapping, normalzied?: NormalizedValue, value?: RawValue): VisualValue;
}
interface VisualValueGetter {
(key: string): VisualValue;
}
interface VisualValueSetter {
(key: string, value: VisualValue): void;
}
interface VisualHandler {
applyVisual(this: VisualMapping, value: RawValue, getter: VisualValueGetter, setter: VisualValueSetter): void;
_normalizedToVisual: {
linear(this: VisualMapping, normalized: NormalizedValue): VisualValue;
category(this: VisualMapping, normalized: NormalizedValue): VisualValue;
piecewise(this: VisualMapping, normalzied: NormalizedValue, value: RawValue): VisualValue;
fixed(this: VisualMapping): VisualValue;
};
/**
* Get color mapping for the outside usage.
* Currently only used in `color` visual.
*
* The last parameter out is cached color array.
*/
getColorMapper?: (this: VisualMapping) => ColorMapper;
}
interface VisualMappingPiece {
index?: number;
value?: number | string;
interval?: [number, number];
close?: [0 | 1, 0 | 1];
text?: string;
visual?: VisualOptionPiecewise;
}
export interface VisualMappingOption {
type?: BuiltinVisualProperty;
mappingMethod?: MappingMethod;
/**
* required when mappingMethod is 'linear'
*/
dataExtent?: [number, number];
/**
* required when mappingMethod is 'piecewise'.
* Visual for only each piece can be specified
* [
* {value: someValue},
* {interval: [min1, max1], visual: {...}},
* {interval: [min2, max2]}
* ],.
*/
pieceList?: VisualMappingPiece[];
/**
* required when mappingMethod is 'category'. If no option.categories, categories is set as [0, 1, 2, ...].
*/
categories?: (string | number)[];
/**
* Whether loop mapping when mappingMethod is 'category'.
* @default false
*/
loop?: boolean;
/**
* Visual data
* when mappingMethod is 'category', visual data can be array or object
* (like: {cate1: '#222', none: '#fff'})
* or primary types (which represents default category visual), otherwise visual
* can be array or primary (which will be normalized to array).
*/
visual?: VisualValue[] | Dictionary<VisualValue> | VisualValue;
}
interface VisualMappingInnerPiece extends VisualMappingPiece {
originIndex: number;
}
interface VisualMappingInnerOption extends VisualMappingOption {
hasSpecialVisual: boolean;
pieceList: VisualMappingInnerPiece[];
/**
* Map to get category index
*/
categoryMap: Dictionary<number>;
/**
* Cached parsed rgba array from string to avoid parse every time.
*/
parsedVisual: number[][];
visual?: VisualValue[] | Dictionary<VisualValue>;
}
declare class VisualMapping {
option: VisualMappingInnerOption;
type: BuiltinVisualProperty;
mappingMethod: MappingMethod;
applyVisual: VisualHandler['applyVisual'];
getColorMapper: VisualHandler['getColorMapper'];
_normalizeData: Normalizer;
_normalizedToVisual: DoMap;
constructor(option: VisualMappingOption);
mapValueToVisual(value: RawValue): VisualValue;
getNormalizer(): zrUtil.Bind1<Normalizer, this>;
static visualHandlers: {
[key in BuiltinVisualProperty]: VisualHandler;
};
/**
* List available visual types.
*
* @public
* @return {Array.<string>}
*/
static listVisualTypes(): ("symbol" | "color" | "opacity" | "decal" | "symbolSize" | "liftZ" | "colorAlpha" | "colorLightness" | "colorSaturation" | "colorHue")[];
/**
* @public
*/
static isValidType(visualType: string): boolean;
/**
* Convenient method.
* Visual can be Object or Array or primary type.
*/
static eachVisual<Ctx, T>(visual: T | T[] | Dictionary<T>, callback: (visual: T, key?: string | number) => void, context?: Ctx): void;
static mapVisual<Ctx, T>(visual: T, callback: (visual: T, key?: string | number) => T, context?: Ctx): T;
static mapVisual<Ctx, T>(visual: T[], callback: (visual: T, key?: string | number) => T[], context?: Ctx): T[];
static mapVisual<Ctx, T>(visual: Dictionary<T>, callback: (visual: T, key?: string | number) => Dictionary<T>, context?: Ctx): Dictionary<T>;
/**
* Retrieve visual properties from given object.
*/
static retrieveVisuals(obj: Dictionary<any>): VisualOptionPiecewise;
/**
* Give order to visual types, considering colorSaturation, colorAlpha depends on color.
*
* @public
* @param {(Object|Array)} visualTypes If Object, like: {color: ..., colorSaturation: ...}
* IF Array, like: ['color', 'symbol', 'colorSaturation']
* @return {Array.<string>} Sorted visual types.
*/
static prepareVisualTypes(visualTypes: {
[key in BuiltinVisualProperty]?: any;
} | BuiltinVisualProperty[]): (keyof VisualOptionUnit)[];
/**
* 'color', 'colorSaturation', 'colorAlpha', ... are depends on 'color'.
* Other visuals are only depends on themself.
*/
static dependsOn(visualType1: BuiltinVisualProperty, visualType2: BuiltinVisualProperty): boolean;
/**
* @param value
* @param pieceList [{value: ..., interval: [min, max]}, ...]
* Always from small to big.
* @param findClosestWhenOutside Default to be false
* @return index
*/
static findPieceIndex(value: number, pieceList: VisualMappingPiece[], findClosestWhenOutside?: boolean): number;
}
export default VisualMapping;