381a9541246f758b881a61605ce270e6937de4a2ff901463c589625cfe9f4a1f947c876c5617e5b79726d9652d27ef74b48e0826006058fa5b8f32f54a125f 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import SeriesModel from '../../model/Series.js';
  2. import { SeriesOption, CallbackDataParams, CircleLayoutOptionMixin, LabelLineOption, ItemStyleOption, BoxLayoutOptionMixin, OptionDataValueNumeric, SeriesEncodeOptionMixin, OptionDataItemObject, StatesOptionMixin, SeriesLabelOption, DefaultEmphasisFocus } from '../../util/types.js';
  3. import SeriesData from '../../data/SeriesData.js';
  4. interface PieItemStyleOption<TCbParams = never> extends ItemStyleOption<TCbParams> {
  5. borderRadius?: (number | string)[] | number | string;
  6. }
  7. export interface PieCallbackDataParams extends CallbackDataParams {
  8. percent: number;
  9. }
  10. export interface PieStateOption<TCbParams = never> {
  11. itemStyle?: PieItemStyleOption<TCbParams>;
  12. label?: PieLabelOption;
  13. labelLine?: PieLabelLineOption;
  14. }
  15. interface PieLabelOption extends Omit<SeriesLabelOption, 'rotate' | 'position'> {
  16. rotate?: number | boolean | 'radial' | 'tangential';
  17. alignTo?: 'none' | 'labelLine' | 'edge';
  18. edgeDistance?: string | number;
  19. /**
  20. * @deprecated Use `edgeDistance` instead
  21. */
  22. margin?: string | number;
  23. bleedMargin?: number;
  24. distanceToLabelLine?: number;
  25. position?: SeriesLabelOption['position'] | 'outer' | 'inner' | 'center' | 'outside';
  26. }
  27. interface PieLabelLineOption extends LabelLineOption {
  28. /**
  29. * Max angle between labelLine and surface normal.
  30. * 0 - 180
  31. */
  32. maxSurfaceAngle?: number;
  33. }
  34. interface ExtraStateOption {
  35. emphasis?: {
  36. focus?: DefaultEmphasisFocus;
  37. scale?: boolean;
  38. scaleSize?: number;
  39. };
  40. }
  41. export interface PieDataItemOption extends OptionDataItemObject<OptionDataValueNumeric>, PieStateOption, StatesOptionMixin<PieStateOption, ExtraStateOption> {
  42. cursor?: string;
  43. }
  44. export interface PieSeriesOption extends Omit<SeriesOption<PieStateOption<PieCallbackDataParams>, ExtraStateOption>, 'labelLine'>, PieStateOption<PieCallbackDataParams>, CircleLayoutOptionMixin, BoxLayoutOptionMixin, SeriesEncodeOptionMixin {
  45. type?: 'pie';
  46. roseType?: 'radius' | 'area';
  47. clockwise?: boolean;
  48. startAngle?: number;
  49. minAngle?: number;
  50. minShowLabelAngle?: number;
  51. selectedOffset?: number;
  52. avoidLabelOverlap?: boolean;
  53. percentPrecision?: number;
  54. stillShowZeroSum?: boolean;
  55. animationType?: 'expansion' | 'scale';
  56. animationTypeUpdate?: 'transition' | 'expansion';
  57. showEmptyCircle?: boolean;
  58. emptyCircleStyle?: PieItemStyleOption;
  59. data?: (OptionDataValueNumeric | OptionDataValueNumeric[] | PieDataItemOption)[];
  60. }
  61. declare class PieSeriesModel extends SeriesModel<PieSeriesOption> {
  62. static type: "series.pie";
  63. seats: number[];
  64. /**
  65. * @overwrite
  66. */
  67. init(option: PieSeriesOption): void;
  68. /**
  69. * @overwrite
  70. */
  71. mergeOption(): void;
  72. /**
  73. * @overwrite
  74. */
  75. getInitialData(this: PieSeriesModel): SeriesData;
  76. /**
  77. * @overwrite
  78. */
  79. getDataParams(dataIndex: number): PieCallbackDataParams;
  80. private _defaultLabelLine;
  81. static defaultOption: Omit<PieSeriesOption, 'type'>;
  82. }
  83. export default PieSeriesModel;