UNPKG

echarts

Version:

Apache ECharts is a powerful, interactive charting and data visualization library for browser

161 lines (160 loc) 6.48 kB
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;