transform.d.ts 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. import { TransformComponent, Primitive } from '../runtime';
  2. import { ChannelTypes } from './mark';
  3. export type Transform = StackYTransform | DodgeXTransform | NormalizeYTransform | StackEnterTransform | JitterTransform | JitterXTransform | SymmetryYTransform | DiffYTransform | SelectTransform | SelectXTransform | SelectYTransform | GroupXTransform | GroupYTransform | GroupColorTransform | SortXTransform | SortYTransform | SortColorTransform | GroupTransform | PackTransform | BinXTransform | BinTransform | SampleTransform | FlexXTransform | FilterTransform;
  4. export type TransformTypes = 'dodgeX' | 'stackY' | 'normalizeY' | 'stackEnter' | 'jitter' | 'jitterX' | 'symmetryY' | 'diffY' | 'select' | 'selectY' | 'selectX' | 'groupX' | 'groupY' | 'group' | 'groupColor' | 'sortX' | 'sortColor' | 'sortY' | 'flexX' | 'pack' | 'sample' | 'filter' | 'kde' | TransformComponent;
  5. export type TransformOrder = 'value' | 'sum' | 'series' | 'maxIndex' | string[] | null | ((data: Record<string, Primitive>) => Primitive);
  6. export type DodgeXTransform = {
  7. type?: 'dodgeX';
  8. groupBy?: string | string[];
  9. reverse?: boolean;
  10. orderBy?: TransformOrder;
  11. padding?: number;
  12. };
  13. export type StackYTransform = {
  14. type?: 'stackY';
  15. groupBy?: string | string[];
  16. reverse?: boolean;
  17. orderBy?: TransformOrder;
  18. y?: 'y' | 'y1';
  19. y1?: 'y' | 'y1';
  20. series?: boolean;
  21. };
  22. export type NormalizeYTransform = {
  23. type?: 'normalizeY';
  24. series?: boolean;
  25. groupBy?: string | string[];
  26. basis?: 'deviation' | 'first' | 'last' | 'max' | 'mean' | 'median' | 'min' | 'sum';
  27. };
  28. export type JitterTransform = {
  29. type?: 'jitter';
  30. padding?: number;
  31. paddingX?: number;
  32. paddingY?: number;
  33. random?: () => number;
  34. };
  35. export type JitterXTransform = {
  36. type?: 'jitterX';
  37. padding?: number;
  38. random?: () => number;
  39. };
  40. export type StackEnterTransform = {
  41. type?: 'stackEnter';
  42. groupBy?: string[] | string;
  43. orderBy?: string;
  44. reverse?: boolean;
  45. duration?: number;
  46. reducer?: (I: number[], V: any[]) => any;
  47. };
  48. export type SymmetryYTransform = {
  49. type?: 'symmetryY';
  50. groupBy?: string | string[];
  51. };
  52. export type DiffYTransform = {
  53. type?: 'diffY';
  54. groupBy?: string | string[];
  55. series?: boolean;
  56. };
  57. export type Selector = 'min' | 'max' | 'first' | 'last' | 'mean' | 'median' | ((I: number[], V: number[]) => number[]);
  58. export type SelectTransform = {
  59. type?: 'select';
  60. groupBy?: string | string[];
  61. channel?: ChannelTypes;
  62. selector?: Selector;
  63. };
  64. export type SelectXTransform = {
  65. type?: 'selectX';
  66. groupBy?: string | string[];
  67. selector?: Selector;
  68. };
  69. export type SelectYTransform = {
  70. type?: 'selectY';
  71. groupBy?: string | string[];
  72. selector?: Selector;
  73. };
  74. export type SortColorTransform = {
  75. type?: 'sortColor';
  76. reverse?: boolean;
  77. by?: string;
  78. slice?: number | [number, number];
  79. reducer?: 'max' | 'min' | 'sum' | 'first' | 'last' | 'mean' | 'median' | ((I: number[], V: Primitive[]) => Primitive);
  80. };
  81. export type SortXTransform = {
  82. type?: 'sortX';
  83. reverse?: boolean;
  84. by?: string;
  85. slice?: number | [number, number];
  86. ordinal?: boolean;
  87. reducer?: 'max' | 'min' | 'sum' | 'first' | 'last' | 'mean' | 'median' | ((I: number[], V: Primitive[]) => Primitive);
  88. };
  89. export type SortYTransform = {
  90. type?: 'sortY';
  91. reverse?: boolean;
  92. by?: string;
  93. slice?: number | [number, number];
  94. reducer?: 'max' | 'min' | 'sum' | 'first' | 'last' | 'mean' | 'median' | ((I: number[], V: Primitive[]) => Primitive);
  95. };
  96. export type FlexXTransform = {
  97. type?: 'flexX';
  98. field?: string | ((d: any) => Primitive[]);
  99. channel?: string;
  100. reducer?: 'sum' | ((I: number[], V: Primitive[]) => Primitive);
  101. };
  102. export type PackTransform = {
  103. type?: 'pack';
  104. };
  105. export type Reducer = 'mean' | 'max' | 'count' | 'min' | 'median' | 'sum' | 'first' | 'last' | ((I: number[], V: Primitive[]) => Primitive);
  106. export type GroupXTransform = {
  107. type?: 'groupX';
  108. } & {
  109. [key in ChannelTypes]?: Reducer;
  110. };
  111. export type GroupYTransform = {
  112. type?: 'groupY';
  113. } & {
  114. [key in ChannelTypes]?: Reducer;
  115. };
  116. export type GroupColorTransform = {
  117. type?: 'groupColor';
  118. } & {
  119. [key in ChannelTypes]?: Reducer;
  120. };
  121. export type GroupTransform = {
  122. type?: 'group';
  123. } & {
  124. [key in ChannelTypes]?: Reducer;
  125. };
  126. export type BinXTransform = {
  127. type?: 'binX';
  128. thresholds?: number;
  129. } & {
  130. [key in ChannelTypes]?: Reducer;
  131. };
  132. export type BinTransform = {
  133. type?: 'bin';
  134. thresholdsX?: number;
  135. thresholdsY?: number;
  136. } & {
  137. [key in ChannelTypes]?: Reducer;
  138. };
  139. export type SampleFunction = (I: number[], X: number[], Y: number[], thresholds: number) => number[];
  140. export type SampleTransform = {
  141. type?: 'sample';
  142. /**
  143. * Sample strategy. Default is 'median'.
  144. */
  145. strategy?: 'lttb' | 'median' | 'max' | 'min' | 'first' | 'last' | SampleFunction;
  146. /**
  147. * The thresholds of sample, when data size great then thresholds, sample will take effect.
  148. * Default is 2000.
  149. */
  150. thresholds?: number;
  151. /**
  152. * Group data by fields, for series data.
  153. */
  154. groupBy?: string | string[];
  155. };
  156. export type FilterTransform = {
  157. type?: 'filter';
  158. } & {
  159. [key in ChannelTypes]?: any[] | ((v: Primitive) => boolean);
  160. };