1ce800b3f4eee6b4b636c68eeefe00ca513d2df0c0d057bc4e048a05394d3881d341c85b01a34efa1726b848edeb7a9c6f3a39f53a72dc460304ffe3edddc9 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import * as clazzUtil from '../util/clazz.js';
  2. import { Dictionary } from 'zrender/lib/core/types.js';
  3. import SeriesData from '../data/SeriesData.js';
  4. import { DimensionName, ScaleDataValue, OptionDataValue, DimensionLoose, ScaleTick } from '../util/types.js';
  5. import { ScaleRawExtentInfo } from '../coord/scaleRawExtentInfo.js';
  6. declare abstract class Scale<SETTING extends Dictionary<unknown> = Dictionary<unknown>> {
  7. type: string;
  8. private _setting;
  9. protected _extent: [number, number];
  10. private _isBlank;
  11. readonly rawExtentInfo: ScaleRawExtentInfo;
  12. constructor(setting?: SETTING);
  13. getSetting<KEY extends keyof SETTING>(name: KEY): SETTING[KEY];
  14. /**
  15. * Parse input val to valid inner number.
  16. * Notice: This would be a trap here, If the implementation
  17. * of this method depends on extent, and this method is used
  18. * before extent set (like in dataZoom), it would be wrong.
  19. * Nevertheless, parse does not depend on extent generally.
  20. */
  21. abstract parse(val: OptionDataValue): number;
  22. /**
  23. * Whether contain the given value.
  24. */
  25. abstract contain(val: ScaleDataValue): boolean;
  26. /**
  27. * Normalize value to linear [0, 1], return 0.5 if extent span is 0.
  28. */
  29. abstract normalize(val: ScaleDataValue): number;
  30. /**
  31. * Scale normalized value to extent.
  32. */
  33. abstract scale(val: number): number;
  34. /**
  35. * Set extent from data
  36. */
  37. unionExtent(other: [number, number]): void;
  38. /**
  39. * Set extent from data
  40. */
  41. unionExtentFromData(data: SeriesData, dim: DimensionName | DimensionLoose): void;
  42. /**
  43. * Get extent
  44. *
  45. * Extent is always in increase order.
  46. */
  47. getExtent(): [number, number];
  48. /**
  49. * Set extent
  50. */
  51. setExtent(start: number, end: number): void;
  52. /**
  53. * If value is in extent range
  54. */
  55. isInExtentRange(value: number): boolean;
  56. /**
  57. * When axis extent depends on data and no data exists,
  58. * axis ticks should not be drawn, which is named 'blank'.
  59. */
  60. isBlank(): boolean;
  61. /**
  62. * When axis extent depends on data and no data exists,
  63. * axis ticks should not be drawn, which is named 'blank'.
  64. */
  65. setBlank(isBlank: boolean): void;
  66. /**
  67. * Update interval and extent of intervals for nice ticks
  68. *
  69. * @param splitNumber Approximated tick numbers. Optional.
  70. * The implementation of `niceTicks` should decide tick numbers
  71. * whether `splitNumber` is given.
  72. * @param minInterval Optional.
  73. * @param maxInterval Optional.
  74. */
  75. abstract calcNiceTicks(splitNumber?: number, minInterval?: number, maxInterval?: number): void;
  76. abstract calcNiceExtent(opt?: {
  77. splitNumber?: number;
  78. fixMin?: boolean;
  79. fixMax?: boolean;
  80. minInterval?: number;
  81. maxInterval?: number;
  82. }): void;
  83. /**
  84. * @return label of the tick.
  85. */
  86. abstract getLabel(tick: ScaleTick): string;
  87. abstract getTicks(): ScaleTick[];
  88. abstract getMinorTicks(splitNumber: number): number[][];
  89. static registerClass: clazzUtil.ClassManager['registerClass'];
  90. static getClass: clazzUtil.ClassManager['getClass'];
  91. }
  92. export default Scale;