a78ef62f3627143f5bb1f0a2f7f06a13c08f3833c5afa421741c9c311480c0295acb4575d93790f19ac206affeaffff9ebd8fd192188657414ddb1367efdad 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. /**
  2. * Linear continuous scale
  3. * http://en.wikipedia.org/wiki/Level_of_measurement
  4. */
  5. import Scale from './Scale.js';
  6. import OrdinalMeta from '../data/OrdinalMeta.js';
  7. import SeriesData from '../data/SeriesData.js';
  8. import { OrdinalRawValue, OrdinalNumber, DimensionLoose, OrdinalSortInfo, OrdinalScaleTick, ScaleTick } from '../util/types.js';
  9. import { CategoryAxisBaseOption } from '../coord/axisCommonTypes.js';
  10. declare type OrdinalScaleSetting = {
  11. ordinalMeta?: OrdinalMeta | CategoryAxisBaseOption['data'];
  12. extent?: [number, number];
  13. };
  14. declare class OrdinalScale extends Scale<OrdinalScaleSetting> {
  15. static type: string;
  16. readonly type = "ordinal";
  17. private _ordinalMeta;
  18. /**
  19. * For example:
  20. * Given original ordinal data:
  21. * ```js
  22. * option = {
  23. * xAxis: {
  24. * // Their raw ordinal numbers are:
  25. * // 0 1 2 3 4 5
  26. * data: ['a', 'b', 'c', 'd', 'e', 'f']
  27. * },
  28. * yAxis: {}
  29. * series: {
  30. * type: 'bar',
  31. * data: [
  32. * ['d', 110], // ordinalNumber: 3
  33. * ['c', 660], // ordinalNumber: 2
  34. * ['f', 220], // ordinalNumber: 5
  35. * ['e', 550] // ordinalNumber: 4
  36. * ],
  37. * realtimeSort: true
  38. * }
  39. * };
  40. * ```
  41. * After realtime sorted (order by yValue desc):
  42. * ```js
  43. * _ordinalNumbersByTick: [
  44. * 2, // tick: 0, yValue: 660
  45. * 5, // tick: 1, yValue: 220
  46. * 3, // tick: 2, yValue: 110
  47. * 4, // tick: 3, yValue: 550
  48. * 0, // tick: 4, yValue: -
  49. * 1, // tick: 5, yValue: -
  50. * ],
  51. * _ticksByOrdinalNumber: [
  52. * 4, // ordinalNumber: 0, yValue: -
  53. * 5, // ordinalNumber: 1, yValue: -
  54. * 0, // ordinalNumber: 2, yValue: 660
  55. * 2, // ordinalNumber: 3, yValue: 110
  56. * 3, // ordinalNumber: 4, yValue: 550
  57. * 1, // ordinalNumber: 5, yValue: 220
  58. * ]
  59. * ```
  60. * The index of this array is from `0` to `ordinalMeta.categories.length`.
  61. *
  62. * @see `Ordinal['getRawOrdinalNumber']`
  63. * @see `OrdinalSortInfo`
  64. */
  65. private _ordinalNumbersByTick;
  66. /**
  67. * This is the inverted map of `_ordinalNumbersByTick`.
  68. * The index of this array is from `0` to `ordinalMeta.categories.length`.
  69. *
  70. * @see `Ordinal['_ordinalNumbersByTick']`
  71. * @see `Ordinal['_getTickNumber']`
  72. * @see `OrdinalSortInfo`
  73. */
  74. private _ticksByOrdinalNumber;
  75. constructor(setting?: OrdinalScaleSetting);
  76. parse(val: OrdinalRawValue | OrdinalNumber): OrdinalNumber;
  77. contain(rank: OrdinalRawValue | OrdinalNumber): boolean;
  78. /**
  79. * Normalize given rank or name to linear [0, 1]
  80. * @param val raw ordinal number.
  81. * @return normalized value in [0, 1].
  82. */
  83. normalize(val: OrdinalRawValue | OrdinalNumber): number;
  84. /**
  85. * @param val normalized value in [0, 1].
  86. * @return raw ordinal number.
  87. */
  88. scale(val: number): OrdinalNumber;
  89. getTicks(): OrdinalScaleTick[];
  90. getMinorTicks(splitNumber: number): number[][];
  91. /**
  92. * @see `Ordinal['_ordinalNumbersByTick']`
  93. */
  94. setSortInfo(info: OrdinalSortInfo): void;
  95. private _getTickNumber;
  96. /**
  97. * @usage
  98. * ```js
  99. * const ordinalNumber = ordinalScale.getRawOrdinalNumber(tickVal);
  100. *
  101. * // case0
  102. * const rawOrdinalValue = axisModel.getCategories()[ordinalNumber];
  103. * // case1
  104. * const rawOrdinalValue = this._ordinalMeta.categories[ordinalNumber];
  105. * // case2
  106. * const coord = axis.dataToCoord(ordinalNumber);
  107. * ```
  108. *
  109. * @param {OrdinalNumber} tickNumber index of display
  110. */
  111. getRawOrdinalNumber(tickNumber: number): OrdinalNumber;
  112. /**
  113. * Get item on tick
  114. */
  115. getLabel(tick: ScaleTick): string;
  116. count(): number;
  117. unionExtentFromData(data: SeriesData, dim: DimensionLoose): void;
  118. /**
  119. * @override
  120. * If value is in extent range
  121. */
  122. isInExtentRange(value: OrdinalNumber): boolean;
  123. getOrdinalMeta(): OrdinalMeta;
  124. calcNiceTicks(): void;
  125. calcNiceExtent(): void;
  126. }
  127. export default OrdinalScale;