a0f7f1636d3cf7708df0cb637a7b3f7726b97eb8ff220a5e4693eaed08a5d027d5afb5d7a410e6155074536882b630bfa05b2e135ce26efe48b783525c7f91 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. import SeriesModel from '../../model/Series.js';
  2. import { SeriesOption, CircleLayoutOptionMixin, LineStyleOption, ColorString, LabelOption, ItemStyleOption, OptionDataValueNumeric, StatesOptionMixin, SeriesEncodeOptionMixin, DefaultStatesMixinEmphasis, CallbackDataParams } from '../../util/types.js';
  3. import GlobalModel from '../../model/Global.js';
  4. import SeriesData from '../../data/SeriesData.js';
  5. declare type GaugeColorStop = [number, ColorString];
  6. interface LabelFormatter {
  7. (value: number): string;
  8. }
  9. interface PointerOption {
  10. icon?: string;
  11. show?: boolean;
  12. /**
  13. * If pointer shows above title and detail
  14. */
  15. showAbove?: boolean;
  16. keepAspect?: boolean;
  17. itemStyle?: ItemStyleOption;
  18. /**
  19. * Can be percent
  20. */
  21. offsetCenter?: (number | string)[];
  22. length?: number | string;
  23. width?: number;
  24. }
  25. interface AnchorOption {
  26. show?: boolean;
  27. showAbove?: boolean;
  28. size?: number;
  29. icon?: string;
  30. offsetCenter?: (number | string)[];
  31. keepAspect?: boolean;
  32. itemStyle?: ItemStyleOption;
  33. }
  34. interface ProgressOption {
  35. show?: boolean;
  36. overlap?: boolean;
  37. width?: number;
  38. roundCap?: boolean;
  39. clip?: boolean;
  40. itemStyle?: ItemStyleOption;
  41. }
  42. interface TitleOption extends LabelOption {
  43. /**
  44. * [x, y] offset
  45. */
  46. offsetCenter?: (number | string)[];
  47. formatter?: LabelFormatter | string;
  48. /**
  49. * If do value animtion.
  50. */
  51. valueAnimation?: boolean;
  52. }
  53. interface DetailOption extends LabelOption {
  54. /**
  55. * [x, y] offset
  56. */
  57. offsetCenter?: (number | string)[];
  58. formatter?: LabelFormatter | string;
  59. /**
  60. * If do value animtion.
  61. */
  62. valueAnimation?: boolean;
  63. }
  64. interface GaugeStatesMixin {
  65. emphasis?: DefaultStatesMixinEmphasis;
  66. }
  67. export interface GaugeStateOption<TCbParams = never> {
  68. itemStyle?: ItemStyleOption<TCbParams>;
  69. }
  70. export interface GaugeDataItemOption extends GaugeStateOption, StatesOptionMixin<GaugeStateOption<CallbackDataParams>, GaugeStatesMixin> {
  71. name?: string;
  72. value?: OptionDataValueNumeric;
  73. pointer?: PointerOption;
  74. progress?: ProgressOption;
  75. title?: TitleOption;
  76. detail?: DetailOption;
  77. }
  78. export interface GaugeSeriesOption extends SeriesOption<GaugeStateOption, GaugeStatesMixin>, GaugeStateOption<CallbackDataParams>, CircleLayoutOptionMixin, SeriesEncodeOptionMixin {
  79. type?: 'gauge';
  80. radius?: number | string;
  81. startAngle?: number;
  82. endAngle?: number;
  83. clockwise?: boolean;
  84. min?: number;
  85. max?: number;
  86. splitNumber?: number;
  87. itemStyle?: ItemStyleOption;
  88. axisLine?: {
  89. show?: boolean;
  90. roundCap?: boolean;
  91. lineStyle?: Omit<LineStyleOption, 'color'> & {
  92. color?: GaugeColorStop[];
  93. };
  94. };
  95. progress?: ProgressOption;
  96. splitLine?: {
  97. show?: boolean;
  98. /**
  99. * Can be percent
  100. */
  101. length?: number;
  102. distance?: number;
  103. lineStyle?: LineStyleOption;
  104. };
  105. axisTick?: {
  106. show?: boolean;
  107. splitNumber?: number;
  108. /**
  109. * Can be percent
  110. */
  111. length?: number | string;
  112. distance?: number;
  113. lineStyle?: LineStyleOption;
  114. };
  115. axisLabel?: Omit<LabelOption, 'rotate'> & {
  116. formatter?: LabelFormatter | string;
  117. rotate?: 'tangential' | 'radial' | number;
  118. };
  119. pointer?: PointerOption;
  120. anchor?: AnchorOption;
  121. title?: TitleOption;
  122. detail?: DetailOption;
  123. data?: (OptionDataValueNumeric | GaugeDataItemOption)[];
  124. }
  125. declare class GaugeSeriesModel extends SeriesModel<GaugeSeriesOption> {
  126. static type: "series.gauge";
  127. type: "series.gauge";
  128. visualStyleAccessPath: string;
  129. getInitialData(option: GaugeSeriesOption, ecModel: GlobalModel): SeriesData;
  130. static defaultOption: GaugeSeriesOption;
  131. }
  132. export default GaugeSeriesModel;