UNPKG

echarts

Version:

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

144 lines (143 loc) 4.77 kB
import { DatasetModel } from '../../component/dataset/install.js'; import SeriesModel from '../../model/Series.js'; import { Source } from '../Source.js'; import DataStore from '../DataStore.js'; import { SeriesDataSchema } from './SeriesDataSchema.js'; /** * [REQUIREMENT_MEMO]: * (0) `metaRawOption` means `dimensions`/`sourceHeader`/`seriesLayoutBy` in raw option. * (1) Keep support the feature: `metaRawOption` can be specified both on `series` and * `root-dataset`. Them on `series` has higher priority. * (2) Do not support to set `metaRawOption` on a `non-root-dataset`, because it might * confuse users: whether those props indicate how to visit the upstream source or visit * the transform result source, and some transforms has nothing to do with these props, * and some transforms might have multiple upstream. * (3) Transforms should specify `metaRawOption` in each output, just like they can be * declared in `root-dataset`. * (4) At present only support visit source in `SERIES_LAYOUT_BY_COLUMN` in transforms. * That is for reducing complexity in transforms. * PENDING: Whether to provide transposition transform? * * [IMPLEMENTAION_MEMO]: * "sourceVisitConfig" are calculated from `metaRawOption` and `data`. * They will not be calculated until `source` is about to be visited (to prevent from * duplicate calcuation). `source` is visited only in series and input to transforms. * * [DIMENSION_INHERIT_RULE]: * By default the dimensions are inherited from ancestors, unless a transform return * a new dimensions definition. * Consider the case: * ```js * dataset: [{ * source: [ ['Product', 'Sales', 'Prise'], ['Cookies', 321, 44.21], ...] * }, { * transform: { type: 'filter', ... } * }] * dataset: [{ * dimension: ['Product', 'Sales', 'Prise'], * source: [ ['Cookies', 321, 44.21], ...] * }, { * transform: { type: 'filter', ... } * }] * ``` * The two types of option should have the same behavior after transform. * * * [SCENARIO]: * (1) Provide source data directly: * ```js * series: { * encode: {...}, * dimensions: [...] * seriesLayoutBy: 'row', * data: [[...]] * } * ``` * (2) Series refer to dataset. * ```js * series: [{ * encode: {...} * // Ignore datasetIndex means `datasetIndex: 0` * // and the dimensions defination in dataset is used * }, { * encode: {...}, * seriesLayoutBy: 'column', * datasetIndex: 1 * }] * ``` * (3) dataset transform * ```js * dataset: [{ * source: [...] * }, { * source: [...] * }, { * // By default from 0. * transform: { type: 'filter', config: {...} } * }, { * // Piped. * transform: [ * { type: 'filter', config: {...} }, * { type: 'sort', config: {...} } * ] * }, { * id: 'regressionData', * fromDatasetIndex: 1, * // Third-party transform * transform: { type: 'ecStat:regression', config: {...} } * }, { * // retrieve the extra result. * id: 'regressionFormula', * fromDatasetId: 'regressionData', * fromTransformResult: 1 * }] * ``` */ export declare class SourceManager { private _sourceHost; private _sourceList; private _storeList; private _upstreamSignList; private _versionSignBase; private _dirty; constructor(sourceHost: DatasetModel | SeriesModel); /** * Mark dirty. */ dirty(): void; private _setLocalSource; /** * For detecting whether the upstream source is dirty, so that * the local cached source (in `_sourceList`) should be discarded. */ private _getVersionSign; /** * Always return a source instance. Otherwise throw error. */ prepareSource(): void; private _createSource; private _applyTransform; private _isDirty; /** * @param sourceIndex By default 0, means "main source". * In most cases there is only one source. */ getSource(sourceIndex?: number): Source; /** * * Get a data store which can be shared across series. * Only available for series. * * @param seriesDimRequest Dimensions that are generated in series. * Should have been sorted by `storeDimIndex` asc. */ getSharedDataStore(seriesDimRequest: SeriesDataSchema): DataStore; private _innerGetDataStore; /** * PENDING: Is it fast enough? * If no upstream, return empty array. */ private _getUpstreamSourceManagers; private _getSourceMetaRawOption; } export declare function disableTransformOptionMerge(datasetModel: DatasetModel): void;