58f8a403c9beefb9934d93a3e93e7466aff09d96ffb87c093060735a3503425576a7c06e9ca0968377cf0802073db5783bfb52f7c38affbff04b0d40d17f63 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. import * as zrUtil from 'zrender/lib/core/util.js';
  2. import { DataHost, DimensionName, SeriesOption, ZRColor, ScaleDataValue, SeriesDataType, OptionEncodeValue, ColorBy } from '../util/types.js';
  3. import ComponentModel from './Component.js';
  4. import { PaletteMixin } from './mixin/palette.js';
  5. import { DataFormatMixin } from '../model/mixin/dataFormat.js';
  6. import Model from '../model/Model.js';
  7. import GlobalModel from './Global.js';
  8. import { CoordinateSystem } from '../coord/CoordinateSystem.js';
  9. import { ExtendableConstructor, Constructor } from '../util/clazz.js';
  10. import { PipelineContext, SeriesTask } from '../core/Scheduler.js';
  11. import LegendVisualProvider from '../visual/LegendVisualProvider.js';
  12. import SeriesData from '../data/SeriesData.js';
  13. import Axis from '../coord/Axis.js';
  14. import type { BrushCommonSelectorsForSeries, BrushSelectableArea } from '../component/brush/selector.js';
  15. import makeStyleMapper from './mixin/makeStyleMapper.js';
  16. import { SourceManager } from '../data/helper/sourceManager.js';
  17. import { Source } from '../data/Source.js';
  18. import { ECSymbol } from '../util/symbol.js';
  19. import { Group } from '../util/graphic.js';
  20. import { LegendIconParams } from '../component/legend/LegendModel.js';
  21. export declare const SERIES_UNIVERSAL_TRANSITION_PROP = "__universalTransitionEnabled";
  22. interface SeriesModel {
  23. /**
  24. * Convinient for override in extended class.
  25. * Implement it if needed.
  26. */
  27. preventIncremental(): boolean;
  28. /**
  29. * See tooltip.
  30. * Implement it if needed.
  31. * @return Point of tooltip. null/undefined can be returned.
  32. */
  33. getTooltipPosition(dataIndex: number): number[];
  34. /**
  35. * Get data indices for show tooltip content. See tooltip.
  36. * Implement it if needed.
  37. */
  38. getAxisTooltipData(dim: DimensionName[], value: ScaleDataValue, baseAxis: Axis): {
  39. dataIndices: number[];
  40. nestestValue: any;
  41. };
  42. /**
  43. * Get position for marker
  44. */
  45. getMarkerPosition(value: ScaleDataValue[]): number[];
  46. /**
  47. * Get legend icon symbol according to each series type
  48. */
  49. getLegendIcon(opt: LegendIconParams): ECSymbol | Group;
  50. /**
  51. * See `component/brush/selector.js`
  52. * Defined the brush selector for this series.
  53. */
  54. brushSelector(dataIndex: number, data: SeriesData, selectors: BrushCommonSelectorsForSeries, area: BrushSelectableArea): boolean;
  55. enableAriaDecal(): void;
  56. }
  57. declare class SeriesModel<Opt extends SeriesOption = SeriesOption> extends ComponentModel<Opt> {
  58. type: string;
  59. defaultOption: SeriesOption;
  60. seriesIndex: number;
  61. coordinateSystem: CoordinateSystem;
  62. dataTask: SeriesTask;
  63. pipelineContext: PipelineContext;
  64. legendVisualProvider: LegendVisualProvider;
  65. visualStyleAccessPath: string;
  66. visualDrawType: 'fill' | 'stroke';
  67. visualStyleMapper: ReturnType<typeof makeStyleMapper>;
  68. ignoreStyleOnData: boolean;
  69. hasSymbolVisual: boolean;
  70. defaultSymbol: string;
  71. legendIcon: string;
  72. [SERIES_UNIVERSAL_TRANSITION_PROP]: boolean;
  73. private _selectedDataIndicesMap;
  74. readonly preventUsingHoverLayer: boolean;
  75. static protoInitialize: void;
  76. init(option: Opt, parentModel: Model, ecModel: GlobalModel): void;
  77. /**
  78. * Util for merge default and theme to option
  79. */
  80. mergeDefaultAndTheme(option: Opt, ecModel: GlobalModel): void;
  81. mergeOption(newSeriesOption: Opt, ecModel: GlobalModel): void;
  82. fillDataTextStyle(data: ArrayLike<any>): void;
  83. /**
  84. * Init a data structure from data related option in series
  85. * Must be overriden.
  86. */
  87. getInitialData(option: Opt, ecModel: GlobalModel): SeriesData;
  88. /**
  89. * Append data to list
  90. */
  91. appendData(params: {
  92. data: ArrayLike<any>;
  93. }): void;
  94. /**
  95. * Consider some method like `filter`, `map` need make new data,
  96. * We should make sure that `seriesModel.getData()` get correct
  97. * data in the stream procedure. So we fetch data from upstream
  98. * each time `task.perform` called.
  99. */
  100. getData(dataType?: SeriesDataType): SeriesData<this>;
  101. getAllData(): ({
  102. data: SeriesData;
  103. type?: SeriesDataType;
  104. })[];
  105. setData(data: SeriesData): void;
  106. getEncode(): zrUtil.HashMap<OptionEncodeValue, string>;
  107. getSourceManager(): SourceManager;
  108. getSource(): Source;
  109. /**
  110. * Get data before processed
  111. */
  112. getRawData(): SeriesData;
  113. getColorBy(): ColorBy;
  114. isColorBySeries(): boolean;
  115. /**
  116. * Get base axis if has coordinate system and has axis.
  117. * By default use coordSys.getBaseAxis();
  118. * Can be overrided for some chart.
  119. * @return {type} description
  120. */
  121. getBaseAxis(): Axis;
  122. /**
  123. * Default tooltip formatter
  124. *
  125. * @param dataIndex
  126. * @param multipleSeries
  127. * @param dataType
  128. * @param renderMode valid values: 'html'(by default) and 'richText'.
  129. * 'html' is used for rendering tooltip in extra DOM form, and the result
  130. * string is used as DOM HTML content.
  131. * 'richText' is used for rendering tooltip in rich text form, for those where
  132. * DOM operation is not supported.
  133. * @return formatted tooltip with `html` and `markers`
  134. * Notice: The override method can also return string
  135. */
  136. formatTooltip(dataIndex: number, multipleSeries?: boolean, dataType?: SeriesDataType): ReturnType<DataFormatMixin['formatTooltip']>;
  137. isAnimationEnabled(): boolean;
  138. restoreData(): void;
  139. getColorFromPalette(name: string, scope: any, requestColorNum?: number): ZRColor;
  140. /**
  141. * Use `data.mapDimensionsAll(coordDim)` instead.
  142. * @deprecated
  143. */
  144. coordDimToDataDim(coordDim: DimensionName): DimensionName[];
  145. /**
  146. * Get progressive rendering count each step
  147. */
  148. getProgressive(): number | false;
  149. /**
  150. * Get progressive rendering count each step
  151. */
  152. getProgressiveThreshold(): number;
  153. select(innerDataIndices: number[], dataType?: SeriesDataType): void;
  154. unselect(innerDataIndices: number[], dataType?: SeriesDataType): void;
  155. toggleSelect(innerDataIndices: number[], dataType?: SeriesDataType): void;
  156. getSelectedDataIndices(): number[];
  157. isSelected(dataIndex: number, dataType?: SeriesDataType): boolean;
  158. isUniversalTransitionEnabled(): boolean;
  159. private _innerSelect;
  160. private _initSelectedMapFromData;
  161. static registerClass(clz: Constructor): Constructor;
  162. }
  163. interface SeriesModel<Opt extends SeriesOption = SeriesOption> extends DataFormatMixin, PaletteMixin<Opt>, DataHost {
  164. /**
  165. * Get dimension to render shadow in dataZoom component
  166. */
  167. getShadowDim?(): string;
  168. }
  169. export declare type SeriesModelConstructor = typeof SeriesModel & ExtendableConstructor;
  170. export default SeriesModel;