UNPKG

echarts

Version:

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

192 lines (191 loc) 7.07 kB
import { DimensionIndex, DimensionName, OptionDataItem, ParsedValue, ParsedValueNumeric } from '../util/types.js'; import { DataProvider } from './helper/dataProvider.js'; import OrdinalMeta from './OrdinalMeta.js'; import { Source } from './Source.js'; export declare const CtorUint32Array: ArrayConstructor | Uint32ArrayConstructor; export declare const CtorUint16Array: ArrayConstructor | Uint16ArrayConstructor; export declare const CtorInt32Array: ArrayConstructor | Int32ArrayConstructor; export declare const CtorFloat64Array: ArrayConstructor | Float64ArrayConstructor; /** * Multi dimensional data store */ declare const dataCtors: { readonly float: ArrayConstructor | Float64ArrayConstructor; readonly int: ArrayConstructor | Int32ArrayConstructor; readonly ordinal: ArrayConstructor; readonly number: ArrayConstructor; readonly time: ArrayConstructor | Float64ArrayConstructor; }; export declare type DataStoreDimensionType = keyof typeof dataCtors; declare type EachCb = (...args: any) => void; declare type FilterCb = (...args: any) => boolean; declare type MapCb = (...args: any) => ParsedValue | ParsedValue[]; export declare type DimValueGetter = (this: DataStore, dataItem: any, property: string, dataIndex: number, dimIndex: DimensionIndex) => ParsedValue; export interface DataStoreDimensionDefine { /** * Default to be float. */ type?: DataStoreDimensionType; /** * Only used in SOURCE_FORMAT_OBJECT_ROWS and SOURCE_FORMAT_KEYED_COLUMNS to retrieve value * by "object property". * For example, in `[{bb: 124, aa: 543}, ...]`, "aa" and "bb" is "object property". * * Deliberately name it as "property" rather than "name" to prevent it from been used in * SOURCE_FORMAT_ARRAY_ROWS, because if it comes from series, it probably * can not be shared by different series. */ property?: string; /** * When using category axis. * Category strings will be collected and stored in ordinalMeta.categories. * And store will store the index of categories. */ ordinalMeta?: OrdinalMeta; /** * Offset for ordinal parsing and collect */ ordinalOffset?: number; } /** * Basically, DataStore API keep immutable. */ declare class DataStore { private _chunks; private _provider; private _rawExtent; private _extent; private _indices; private _count; private _rawCount; private _dimensions; private _dimValueGetter; private _calcDimNameToIdx; defaultDimValueGetter: DimValueGetter; /** * Initialize from data */ initData(provider: DataProvider, inputDimensions: DataStoreDimensionDefine[], dimValueGetter?: DimValueGetter): void; getProvider(): DataProvider; /** * Caution: even when a `source` instance owned by a series, the created data store * may still be shared by different sereis (the source hash does not use all `source` * props, see `sourceManager`). In this case, the `source` props that are not used in * hash (like `source.dimensionDefine`) probably only belongs to a certain series and * thus should not be fetch here. */ getSource(): Source; /** * @caution Only used in dataStack. */ ensureCalculationDimension(dimName: DimensionName, type: DataStoreDimensionType): DimensionIndex; collectOrdinalMeta(dimIdx: number, ordinalMeta: OrdinalMeta): void; getOrdinalMeta(dimIdx: number): OrdinalMeta; getDimensionProperty(dimIndex: DimensionIndex): DataStoreDimensionDefine['property']; /** * Caution: Can be only called on raw data (before `this._indices` created). */ appendData(data: ArrayLike<any>): number[]; appendValues(values: any[][], minFillLen?: number): { start: number; end: number; }; private _initDataFromProvider; count(): number; /** * Get value. Return NaN if idx is out of range. */ get(dim: DimensionIndex, idx: number): ParsedValue; getValues(idx: number): ParsedValue[]; getValues(dimensions: readonly DimensionIndex[], idx?: number): ParsedValue[]; /** * @param dim concrete dim */ getByRawIndex(dim: DimensionIndex, rawIdx: number): ParsedValue; /** * Get sum of data in one dimension */ getSum(dim: DimensionIndex): number; /** * Get median of data in one dimension */ getMedian(dim: DimensionIndex): number; /** * Retrieve the index with given raw data index. */ indexOfRawIndex(rawIndex: number): number; getIndices(): ArrayLike<number>; /** * Data filter. */ filter(dims: DimensionIndex[], cb: FilterCb): DataStore; /** * Select data in range. (For optimization of filter) * (Manually inline code, support 5 million data filtering in data zoom.) */ selectRange(range: { [dimIdx: number]: [number, number]; }): DataStore; /** * Data mapping to a new List with given dimensions */ map(dims: DimensionIndex[], cb: MapCb): DataStore; /** * @caution Danger!! Only used in dataStack. */ modify(dims: DimensionIndex[], cb: MapCb): void; private _updateDims; /** * Large data down sampling using largest-triangle-three-buckets * @param {string} valueDimension * @param {number} targetCount */ lttbDownSample(valueDimension: DimensionIndex, rate: number): DataStore; /** * Large data down sampling using min-max * @param {string} valueDimension * @param {number} rate */ minmaxDownSample(valueDimension: DimensionIndex, rate: number): DataStore; /** * Large data down sampling on given dimension * @param sampleIndex Sample index for name and id */ downSample(dimension: DimensionIndex, rate: number, sampleValue: (frameValues: ArrayLike<ParsedValue>) => ParsedValueNumeric, sampleIndex: (frameValues: ArrayLike<ParsedValue>, value: ParsedValueNumeric) => number): DataStore; /** * Data iteration * @param ctx default this * @example * list.each('x', function (x, idx) {}); * list.each(['x', 'y'], function (x, y, idx) {}); * list.each(function (idx) {}) */ each(dims: DimensionIndex[], cb: EachCb): void; /** * Get extent of data in one dimension */ getDataExtent(dim: DimensionIndex): [number, number]; /** * Get raw data index. * Do not initialize. * Default `getRawIndex`. And it can be changed. */ getRawIndex: (idx: number) => number; /** * Get raw data item */ getRawDataItem(idx: number): OptionDataItem; /** * Clone shallow. * * @param clonedDims Determine which dims to clone. Will share the data if not specified. */ clone(clonedDims?: DimensionIndex[], ignoreIndices?: boolean): DataStore; private _copyCommonProps; private _cloneIndices; private _getRawIdxIdentity; private _getRawIdx; private _updateGetRawIdx; private static internalField; } export default DataStore;