@visactor/vchart 1.11.7-alpha.3 → 1.11.7-alpha.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.js +7103 -6700
  3. package/build/index.min.js +1 -1
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/chart/base/base-chart.d.ts +1 -0
  6. package/cjs/chart/base/base-chart.js +4 -2
  7. package/cjs/chart/base/base-chart.js.map +1 -1
  8. package/cjs/chart/cartesian/cartesian-transformer.d.ts +4 -0
  9. package/cjs/chart/cartesian/cartesian-transformer.js +25 -10
  10. package/cjs/chart/cartesian/cartesian-transformer.js.map +1 -1
  11. package/cjs/chart/index.d.ts +5 -3
  12. package/cjs/chart/index.js +16 -2
  13. package/cjs/chart/index.js.map +1 -1
  14. package/cjs/chart/interface/type.d.ts +2 -1
  15. package/cjs/chart/interface/type.js +2 -1
  16. package/cjs/chart/interface/type.js.map +1 -1
  17. package/cjs/chart/mosaic/index.d.ts +3 -0
  18. package/cjs/chart/mosaic/index.js +22 -0
  19. package/cjs/chart/mosaic/index.js.map +1 -0
  20. package/cjs/chart/mosaic/interface.d.ts +7 -0
  21. package/cjs/chart/mosaic/interface.js +6 -0
  22. package/cjs/chart/mosaic/interface.js.map +1 -0
  23. package/cjs/chart/mosaic/mosaic-transformer.d.ts +9 -0
  24. package/cjs/chart/mosaic/mosaic-transformer.js +43 -0
  25. package/cjs/chart/mosaic/mosaic-transformer.js.map +1 -0
  26. package/cjs/chart/mosaic/mosaic.d.ts +20 -0
  27. package/cjs/chart/mosaic/mosaic.js +39 -0
  28. package/cjs/chart/mosaic/mosaic.js.map +1 -0
  29. package/cjs/chart/stack.d.ts +11 -1
  30. package/cjs/chart/stack.js +6 -6
  31. package/cjs/chart/stack.js.map +1 -1
  32. package/cjs/compile/grammar-item.js +2 -1
  33. package/cjs/component/axis/cartesian/axis.js.map +1 -1
  34. package/cjs/component/crosshair/cartesian.js +8 -3
  35. package/cjs/component/crosshair/cartesian.js.map +1 -1
  36. package/cjs/component/indicator/indicator.d.ts +1 -1
  37. package/cjs/component/indicator/indicator.js +4 -2
  38. package/cjs/component/indicator/indicator.js.map +1 -1
  39. package/cjs/component/indicator/interface.d.ts +3 -1
  40. package/cjs/component/indicator/interface.js.map +1 -1
  41. package/cjs/component/label/interface.d.ts +2 -1
  42. package/cjs/component/label/interface.js.map +1 -1
  43. package/cjs/component/label/label.js +8 -5
  44. package/cjs/component/label/label.js.map +1 -1
  45. package/cjs/component/label/util.d.ts +9 -0
  46. package/cjs/component/label/util.js +35 -8
  47. package/cjs/component/label/util.js.map +1 -1
  48. package/cjs/component/marker/base-marker.d.ts +4 -3
  49. package/cjs/component/marker/base-marker.js +6 -45
  50. package/cjs/component/marker/base-marker.js.map +1 -1
  51. package/cjs/component/marker/interface.d.ts +3 -3
  52. package/cjs/component/marker/interface.js.map +1 -1
  53. package/cjs/component/marker/mark-area/cartesian-mark-area.d.ts +2 -2
  54. package/cjs/component/marker/mark-area/cartesian-mark-area.js.map +1 -1
  55. package/cjs/component/marker/mark-area/interface/spec.d.ts +3 -2
  56. package/cjs/component/marker/mark-area/interface/spec.js.map +1 -1
  57. package/cjs/component/marker/mark-area/polar-mark-area.d.ts +2 -2
  58. package/cjs/component/marker/mark-area/polar-mark-area.js.map +1 -1
  59. package/cjs/component/marker/mark-line/cartesian-mark-line.d.ts +2 -2
  60. package/cjs/component/marker/mark-line/cartesian-mark-line.js.map +1 -1
  61. package/cjs/component/marker/mark-line/interface/spec.d.ts +5 -5
  62. package/cjs/component/marker/mark-line/interface/spec.js.map +1 -1
  63. package/cjs/component/marker/mark-line/polar-mark-line.d.ts +2 -2
  64. package/cjs/component/marker/mark-line/polar-mark-line.js.map +1 -1
  65. package/cjs/component/marker/mark-point/cartesian-mark-point.d.ts +2 -2
  66. package/cjs/component/marker/mark-point/cartesian-mark-point.js.map +1 -1
  67. package/cjs/component/marker/mark-point/geo-mark-point.d.ts +2 -1
  68. package/cjs/component/marker/mark-point/geo-mark-point.js.map +1 -1
  69. package/cjs/component/marker/mark-point/interface/spec.d.ts +3 -2
  70. package/cjs/component/marker/mark-point/interface/spec.js.map +1 -1
  71. package/cjs/component/marker/mark-point/polar-mark-point.d.ts +2 -1
  72. package/cjs/component/marker/mark-point/polar-mark-point.js.map +1 -1
  73. package/cjs/component/marker/utils.js +11 -0
  74. package/cjs/component/marker/utils.js.map +1 -1
  75. package/cjs/component/tooltip/interface/spec.d.ts +1 -0
  76. package/cjs/component/tooltip/interface/spec.js.map +1 -1
  77. package/cjs/component/tooltip/tooltip.d.ts +2 -1
  78. package/cjs/component/tooltip/tooltip.js +5 -3
  79. package/cjs/component/tooltip/tooltip.js.map +1 -1
  80. package/cjs/constant/hierarchy.js +1 -2
  81. package/cjs/constant/index.d.ts +5 -0
  82. package/cjs/constant/index.js +6 -2
  83. package/cjs/constant/index.js.map +1 -1
  84. package/cjs/constant/scroll-bar.js +2 -1
  85. package/cjs/core/index.d.ts +1 -2
  86. package/cjs/core/index.js +2 -2
  87. package/cjs/core/index.js.map +1 -1
  88. package/cjs/core/vchart.d.ts +2 -0
  89. package/cjs/core/vchart.js +10 -0
  90. package/cjs/core/vchart.js.map +1 -1
  91. package/cjs/data/transforms/aggregation.d.ts +8 -3
  92. package/cjs/data/transforms/aggregation.js +62 -2
  93. package/cjs/data/transforms/aggregation.js.map +1 -1
  94. package/cjs/data/transforms/stack-split.js +2 -2
  95. package/cjs/data/transforms/stack-split.js.map +1 -1
  96. package/cjs/index-wx.d.ts +1 -0
  97. package/cjs/index-wx.js +1 -1
  98. package/cjs/index-wx.js.map +1 -1
  99. package/cjs/series/bar/bar.js +7 -7
  100. package/cjs/series/bar/bar.js.map +1 -1
  101. package/cjs/series/interface/common.d.ts +2 -0
  102. package/cjs/series/interface/common.js.map +1 -1
  103. package/cjs/series/interface/series.d.ts +3 -1
  104. package/cjs/series/interface/series.js.map +1 -1
  105. package/cjs/series/interface/theme.d.ts +2 -0
  106. package/cjs/series/interface/theme.js +2 -1
  107. package/cjs/series/interface/theme.js.map +1 -1
  108. package/cjs/series/interface/type.d.ts +2 -1
  109. package/cjs/series/interface/type.js +1 -1
  110. package/cjs/series/interface/type.js.map +1 -1
  111. package/cjs/series/mosaic/interface.d.ts +16 -0
  112. package/cjs/series/mosaic/interface.js +6 -0
  113. package/cjs/series/mosaic/interface.js.map +1 -0
  114. package/cjs/series/mosaic/mosaic.d.ts +16 -0
  115. package/cjs/series/mosaic/mosaic.js +69 -0
  116. package/cjs/series/mosaic/mosaic.js.map +1 -0
  117. package/cjs/series/progress/linear/linear.d.ts +1 -3
  118. package/cjs/series/progress/linear/linear.js +46 -61
  119. package/cjs/series/progress/linear/linear.js.map +1 -1
  120. package/cjs/series/sankey/interface.d.ts +5 -4
  121. package/cjs/series/sankey/interface.js.map +1 -1
  122. package/cjs/series/sankey/sankey-transformer.d.ts +5 -0
  123. package/cjs/series/sankey/sankey-transformer.js +16 -0
  124. package/cjs/series/sankey/sankey-transformer.js.map +1 -0
  125. package/cjs/series/sankey/sankey.d.ts +7 -2
  126. package/cjs/series/sankey/sankey.js +47 -151
  127. package/cjs/series/sankey/sankey.js.map +1 -1
  128. package/cjs/series/word-cloud/interface.d.ts +1 -1
  129. package/cjs/series/word-cloud/interface.js.map +1 -1
  130. package/cjs/theme/builtin/common/series/index.js +3 -2
  131. package/cjs/theme/builtin/common/series/index.js.map +1 -1
  132. package/cjs/theme/builtin/common/series/mosaic.d.ts +2 -0
  133. package/cjs/theme/builtin/common/series/mosaic.js +27 -0
  134. package/cjs/theme/builtin/common/series/mosaic.js.map +1 -0
  135. package/cjs/theme/builtin/common/series/pie.js +1 -0
  136. package/cjs/theme/builtin/common/series/pie.js.map +1 -1
  137. package/cjs/theme/builtin/common/series/pie3d.js +1 -0
  138. package/cjs/theme/builtin/common/series/pie3d.js.map +1 -1
  139. package/cjs/util/data.d.ts +24 -1
  140. package/cjs/util/data.js +88 -17
  141. package/cjs/util/data.js.map +1 -1
  142. package/cjs/util/style.d.ts +1 -0
  143. package/cjs/util/style.js +11 -2
  144. package/cjs/util/style.js.map +1 -1
  145. package/esm/chart/base/base-chart.d.ts +1 -0
  146. package/esm/chart/base/base-chart.js +4 -2
  147. package/esm/chart/base/base-chart.js.map +1 -1
  148. package/esm/chart/cartesian/cartesian-transformer.d.ts +4 -0
  149. package/esm/chart/cartesian/cartesian-transformer.js +25 -10
  150. package/esm/chart/cartesian/cartesian-transformer.js.map +1 -1
  151. package/esm/chart/index.d.ts +5 -3
  152. package/esm/chart/index.js +4 -2
  153. package/esm/chart/index.js.map +1 -1
  154. package/esm/chart/interface/type.d.ts +2 -1
  155. package/esm/chart/interface/type.js +2 -1
  156. package/esm/chart/interface/type.js.map +1 -1
  157. package/esm/chart/mosaic/index.d.ts +3 -0
  158. package/esm/chart/mosaic/index.js +6 -0
  159. package/esm/chart/mosaic/index.js.map +1 -0
  160. package/esm/chart/mosaic/interface.d.ts +7 -0
  161. package/esm/chart/mosaic/interface.js +2 -0
  162. package/esm/chart/mosaic/interface.js.map +1 -0
  163. package/esm/chart/mosaic/mosaic-transformer.d.ts +9 -0
  164. package/esm/chart/mosaic/mosaic-transformer.js +37 -0
  165. package/esm/chart/mosaic/mosaic-transformer.js.map +1 -0
  166. package/esm/chart/mosaic/mosaic.d.ts +20 -0
  167. package/esm/chart/mosaic/mosaic.js +41 -0
  168. package/esm/chart/mosaic/mosaic.js.map +1 -0
  169. package/esm/chart/stack.d.ts +11 -1
  170. package/esm/chart/stack.js +6 -6
  171. package/esm/chart/stack.js.map +1 -1
  172. package/esm/compile/grammar-item.js +2 -1
  173. package/esm/component/axis/cartesian/axis.js.map +1 -1
  174. package/esm/component/crosshair/cartesian.js +8 -3
  175. package/esm/component/crosshair/cartesian.js.map +1 -1
  176. package/esm/component/indicator/indicator.d.ts +1 -1
  177. package/esm/component/indicator/indicator.js +4 -4
  178. package/esm/component/indicator/indicator.js.map +1 -1
  179. package/esm/component/indicator/interface.d.ts +3 -1
  180. package/esm/component/indicator/interface.js.map +1 -1
  181. package/esm/component/label/interface.d.ts +2 -1
  182. package/esm/component/label/interface.js.map +1 -1
  183. package/esm/component/label/label.js +9 -5
  184. package/esm/component/label/label.js.map +1 -1
  185. package/esm/component/label/util.d.ts +9 -0
  186. package/esm/component/label/util.js +34 -5
  187. package/esm/component/label/util.js.map +1 -1
  188. package/esm/component/marker/base-marker.d.ts +4 -3
  189. package/esm/component/marker/base-marker.js +6 -39
  190. package/esm/component/marker/base-marker.js.map +1 -1
  191. package/esm/component/marker/interface.d.ts +3 -3
  192. package/esm/component/marker/interface.js.map +1 -1
  193. package/esm/component/marker/mark-area/cartesian-mark-area.d.ts +2 -2
  194. package/esm/component/marker/mark-area/cartesian-mark-area.js.map +1 -1
  195. package/esm/component/marker/mark-area/interface/spec.d.ts +3 -2
  196. package/esm/component/marker/mark-area/interface/spec.js.map +1 -1
  197. package/esm/component/marker/mark-area/polar-mark-area.d.ts +2 -2
  198. package/esm/component/marker/mark-area/polar-mark-area.js.map +1 -1
  199. package/esm/component/marker/mark-line/cartesian-mark-line.d.ts +2 -2
  200. package/esm/component/marker/mark-line/cartesian-mark-line.js.map +1 -1
  201. package/esm/component/marker/mark-line/interface/spec.d.ts +5 -5
  202. package/esm/component/marker/mark-line/interface/spec.js.map +1 -1
  203. package/esm/component/marker/mark-line/polar-mark-line.d.ts +2 -2
  204. package/esm/component/marker/mark-line/polar-mark-line.js.map +1 -1
  205. package/esm/component/marker/mark-point/cartesian-mark-point.d.ts +2 -2
  206. package/esm/component/marker/mark-point/cartesian-mark-point.js.map +1 -1
  207. package/esm/component/marker/mark-point/geo-mark-point.d.ts +2 -1
  208. package/esm/component/marker/mark-point/geo-mark-point.js.map +1 -1
  209. package/esm/component/marker/mark-point/interface/spec.d.ts +3 -2
  210. package/esm/component/marker/mark-point/interface/spec.js.map +1 -1
  211. package/esm/component/marker/mark-point/polar-mark-point.d.ts +2 -1
  212. package/esm/component/marker/mark-point/polar-mark-point.js.map +1 -1
  213. package/esm/component/marker/utils.js +11 -0
  214. package/esm/component/marker/utils.js.map +1 -1
  215. package/esm/component/tooltip/interface/spec.d.ts +1 -0
  216. package/esm/component/tooltip/interface/spec.js.map +1 -1
  217. package/esm/component/tooltip/tooltip.d.ts +2 -1
  218. package/esm/component/tooltip/tooltip.js +5 -3
  219. package/esm/component/tooltip/tooltip.js.map +1 -1
  220. package/esm/constant/hierarchy.js +1 -2
  221. package/esm/constant/index.d.ts +5 -0
  222. package/esm/constant/index.js +10 -0
  223. package/esm/constant/index.js.map +1 -1
  224. package/esm/constant/scroll-bar.js +2 -1
  225. package/esm/core/index.d.ts +1 -2
  226. package/esm/core/index.js +1 -3
  227. package/esm/core/index.js.map +1 -1
  228. package/esm/core/vchart.d.ts +2 -0
  229. package/esm/core/vchart.js +10 -0
  230. package/esm/core/vchart.js.map +1 -1
  231. package/esm/data/transforms/aggregation.d.ts +8 -3
  232. package/esm/data/transforms/aggregation.js +60 -2
  233. package/esm/data/transforms/aggregation.js.map +1 -1
  234. package/esm/data/transforms/stack-split.js +2 -2
  235. package/esm/data/transforms/stack-split.js.map +1 -1
  236. package/esm/index-wx.d.ts +1 -0
  237. package/esm/index-wx.js +2 -0
  238. package/esm/index-wx.js.map +1 -1
  239. package/esm/series/bar/bar.js +8 -8
  240. package/esm/series/bar/bar.js.map +1 -1
  241. package/esm/series/interface/common.d.ts +2 -0
  242. package/esm/series/interface/common.js.map +1 -1
  243. package/esm/series/interface/series.d.ts +3 -1
  244. package/esm/series/interface/series.js.map +1 -1
  245. package/esm/series/interface/theme.d.ts +2 -0
  246. package/esm/series/interface/theme.js +2 -1
  247. package/esm/series/interface/theme.js.map +1 -1
  248. package/esm/series/interface/type.d.ts +2 -1
  249. package/esm/series/interface/type.js +1 -1
  250. package/esm/series/interface/type.js.map +1 -1
  251. package/esm/series/mosaic/interface.d.ts +16 -0
  252. package/esm/series/mosaic/interface.js +2 -0
  253. package/esm/series/mosaic/interface.js.map +1 -0
  254. package/esm/series/mosaic/mosaic.d.ts +16 -0
  255. package/esm/series/mosaic/mosaic.js +78 -0
  256. package/esm/series/mosaic/mosaic.js.map +1 -0
  257. package/esm/series/progress/linear/linear.d.ts +1 -3
  258. package/esm/series/progress/linear/linear.js +46 -62
  259. package/esm/series/progress/linear/linear.js.map +1 -1
  260. package/esm/series/sankey/interface.d.ts +5 -4
  261. package/esm/series/sankey/interface.js.map +1 -1
  262. package/esm/series/sankey/sankey-transformer.d.ts +5 -0
  263. package/esm/series/sankey/sankey-transformer.js +8 -0
  264. package/esm/series/sankey/sankey-transformer.js.map +1 -0
  265. package/esm/series/sankey/sankey.d.ts +7 -2
  266. package/esm/series/sankey/sankey.js +49 -147
  267. package/esm/series/sankey/sankey.js.map +1 -1
  268. package/esm/series/word-cloud/interface.d.ts +1 -1
  269. package/esm/series/word-cloud/interface.js.map +1 -1
  270. package/esm/theme/builtin/common/series/index.js +4 -1
  271. package/esm/theme/builtin/common/series/index.js.map +1 -1
  272. package/esm/theme/builtin/common/series/mosaic.d.ts +2 -0
  273. package/esm/theme/builtin/common/series/mosaic.js +23 -0
  274. package/esm/theme/builtin/common/series/mosaic.js.map +1 -0
  275. package/esm/theme/builtin/common/series/pie.js +1 -0
  276. package/esm/theme/builtin/common/series/pie.js.map +1 -1
  277. package/esm/theme/builtin/common/series/pie3d.js +1 -0
  278. package/esm/theme/builtin/common/series/pie3d.js.map +1 -1
  279. package/esm/util/data.d.ts +24 -1
  280. package/esm/util/data.js +86 -17
  281. package/esm/util/data.js.map +1 -1
  282. package/esm/util/style.d.ts +1 -0
  283. package/esm/util/style.js +8 -0
  284. package/esm/util/style.js.map +1 -1
  285. package/package.json +16 -16
@@ -14,6 +14,7 @@ export declare function mergeFields(targetFields: {
14
14
  }[];
15
15
  export declare function getFieldAlias(dataView: DataView, field: string): any;
16
16
  export interface IStackCacheNode {
17
+ groupField?: string;
17
18
  values: any[];
18
19
  series: {
19
20
  s: ISeries;
@@ -28,8 +29,11 @@ export interface IStackCacheNode {
28
29
  [key: string]: IStackCacheNode;
29
30
  };
30
31
  key: string;
32
+ total?: number;
31
33
  }
32
34
  export interface IStackCacheRoot {
35
+ groupField?: string;
36
+ total?: number;
33
37
  nodes: {
34
38
  [key: string]: IStackCacheNode;
35
39
  };
@@ -51,6 +55,25 @@ export declare function sortStackValueGroup(stackValueGroup: {
51
55
  [key: string]: IStackCacheNode;
52
56
  };
53
57
  export declare function stackTotal(stackData: IStackCacheNode, valueField: string): void;
58
+ export interface IMosaicData {
59
+ groupField?: string;
60
+ groupValue?: string;
61
+ value?: number;
62
+ end?: number;
63
+ start?: number;
64
+ startPercent?: number;
65
+ endPercent?: number;
66
+ }
67
+ export declare function stackMosaicTotal(stackData: IStackCacheNode, valueField: string): void;
68
+ export declare function stackMosaic(s: ISeries, stackCache: IStackCacheNode, mosaicData?: IMosaicData[]): void;
54
69
  export declare function stackOffsetSilhouette(stackCache: IStackCacheNode): void;
55
- export declare function stack(stackCache: IStackCacheNode, stackInverse: boolean, hasPercent?: boolean): void;
70
+ export declare function stack(stackCache: IStackCacheNode, stackInverse: boolean, hasPercent?: boolean, hasMinMax?: boolean, fields?: {
71
+ key: string;
72
+ start: string;
73
+ end: string;
74
+ startPercent: string;
75
+ endPercent: string;
76
+ min?: string;
77
+ max?: string;
78
+ }): void;
56
79
  export declare function stackGroup(s: ISeries, stackData: ISeriesStackDataMeta, stackCache: IStackCacheNode, valueField: string, setInitialValue: boolean, stackSortCache: IStackSortCache, stackKey?: string): void;
package/esm/util/data.js CHANGED
@@ -1,6 +1,6 @@
1
- import { STACK_FIELD_END, STACK_FIELD_START_PERCENT, STACK_FIELD_END_PERCENT, STACK_FIELD_END_OffsetSilhouette, STACK_FIELD_START_OffsetSilhouette, STACK_FIELD_TOTAL, STACK_FIELD_TOTAL_PERCENT, STACK_FIELD_TOTAL_TOP, STACK_FIELD_START, STACK_FIELD_KEY } from "../constant";
1
+ import { STACK_FIELD_END, STACK_FIELD_START_PERCENT, STACK_FIELD_END_PERCENT, STACK_FIELD_END_OffsetSilhouette, STACK_FIELD_START_OffsetSilhouette, STACK_FIELD_TOTAL, STACK_FIELD_TOTAL_PERCENT, STACK_FIELD_TOTAL_TOP, STACK_FIELD_START, STACK_FIELD_KEY, STACK_FIELD_TOTAL_BOTTOM, MOSAIC_CAT_START_PERCENT, MOSAIC_CAT_END_PERCENT, MOSAIC_VALUE_START_PERCENT, MOSAIC_VALUE_END_PERCENT } from "../constant";
2
2
 
3
- import { toValidNumber } from "./type";
3
+ import { isValid, toValidNumber } from "./type";
4
4
 
5
5
  import { max, sum } from "./math";
6
6
 
@@ -42,6 +42,7 @@ export function getRegionStackGroup(region, setInitialValue, filter) {
42
42
  var _a;
43
43
  const stackData = s.getStackData(), stackValue = s.getStackValue(), stackValueField = s.getStackValueField(), filterEnable = !filter || filter(s);
44
44
  stackData && stackValueField && filterEnable && (stackValueGroup[stackValue] = null !== (_a = stackValueGroup[stackValue]) && void 0 !== _a ? _a : {
45
+ groupField: stackData.groupField,
45
46
  nodes: {}
46
47
  }, stackGroup(s, stackData, stackValueGroup[stackValue], stackValueField, setInitialValue, stackSortCache));
47
48
  })), stackSort ? sortStackValueGroup(stackValueGroup, stackSortCache) : stackValueGroup;
@@ -58,13 +59,67 @@ export function stackTotal(stackData, valueField) {
58
59
  if ("values" in stackData && stackData.values.length) {
59
60
  const total = sum(stackData.values, valueField), percent = max(stackData.values, STACK_FIELD_END_PERCENT);
60
61
  stackData.values.forEach((v => {
61
- v[STACK_FIELD_TOTAL] = total, v[STACK_FIELD_TOTAL_PERCENT] = percent, delete v[STACK_FIELD_TOTAL_TOP];
62
+ v[STACK_FIELD_TOTAL] = total, v[STACK_FIELD_TOTAL_PERCENT] = percent;
62
63
  }));
63
- const maxNode = stackData.values.reduce(((max, current) => current[STACK_FIELD_END] > max[STACK_FIELD_END] ? current : max));
64
- maxNode[STACK_FIELD_TOTAL_TOP] = !0;
65
64
  } else for (const key in stackData.nodes) stackTotal(stackData.nodes[key], valueField);
66
65
  }
67
66
 
67
+ export function stackMosaicTotal(stackData, valueField) {
68
+ var _a, _b;
69
+ if ("values" in stackData && stackData.values.length) isValid(null === (_a = stackData.values[0]) || void 0 === _a ? void 0 : _a[STACK_FIELD_TOTAL]) ? stackData.total = null === (_b = stackData.values[0]) || void 0 === _b ? void 0 : _b[STACK_FIELD_TOTAL] : stackData.total = sum(stackData.values, valueField); else {
70
+ for (const key in stackData.nodes) stackMosaicTotal(stackData.nodes[key], valueField);
71
+ stackData.nodes && (stackData.total = sum(Object.keys(stackData.nodes).map((key => stackData.nodes[key])), "total"));
72
+ }
73
+ }
74
+
75
+ export function stackMosaic(s, stackCache, mosaicData) {
76
+ var _a;
77
+ if (stackCache.groupField && stackCache.nodes) {
78
+ const groupValues = (null === (_a = s.getRawDataStatisticsByField(stackCache.groupField, !1)) || void 0 === _a ? void 0 : _a.values) || [], mosaicStackData = {
79
+ key: `${stackCache.groupField}`,
80
+ values: groupValues.map((group => {
81
+ const groupValues = stackCache.nodes[group];
82
+ return {
83
+ groupValue: group,
84
+ value: groupValues.total,
85
+ end: groupValues.total
86
+ };
87
+ }))
88
+ };
89
+ stack(mosaicStackData, !1, !0, !1, {
90
+ key: "groupField",
91
+ start: "start",
92
+ end: "end",
93
+ startPercent: "startPercent",
94
+ endPercent: "endPercent"
95
+ }), mosaicStackData.values.forEach((stackValue => {
96
+ stackCache.nodes[stackValue.groupValue].mosaicData = stackValue;
97
+ }));
98
+ } else if ("values" in stackCache && stackCache.values.length && mosaicData && mosaicData.length) {
99
+ const len = mosaicData.length;
100
+ let catStartPercent = 0, catEndPercent = 1, valueStartPercent = 0, valueEndPercent = 1;
101
+ for (let i = 0; i < len; i++) if (i % 2 == 0) {
102
+ const catDelta = catEndPercent - catStartPercent;
103
+ catEndPercent = catStartPercent + mosaicData[i].endPercent * catDelta, catStartPercent += mosaicData[i].startPercent * catDelta;
104
+ } else {
105
+ const valueDelta = valueEndPercent - valueStartPercent;
106
+ valueEndPercent = valueStartPercent + mosaicData[i].endPercent * valueDelta, valueStartPercent += mosaicData[i].startPercent * valueDelta;
107
+ }
108
+ len % 2 == 0 ? stackCache.values.forEach((v => {
109
+ const delta = catEndPercent - catStartPercent;
110
+ v[MOSAIC_CAT_END_PERCENT] = catStartPercent + delta * v[STACK_FIELD_END_PERCENT],
111
+ v[MOSAIC_CAT_START_PERCENT] = catStartPercent + delta * v[STACK_FIELD_START_PERCENT],
112
+ v[MOSAIC_VALUE_END_PERCENT] = valueEndPercent, v[MOSAIC_VALUE_START_PERCENT] = valueStartPercent;
113
+ })) : stackCache.values.forEach((v => {
114
+ const delta = valueEndPercent - valueStartPercent;
115
+ v[MOSAIC_VALUE_END_PERCENT] = valueStartPercent + delta * v[STACK_FIELD_END_PERCENT],
116
+ v[MOSAIC_VALUE_START_PERCENT] = valueStartPercent + delta * v[STACK_FIELD_START_PERCENT],
117
+ v[MOSAIC_CAT_END_PERCENT] = catEndPercent, v[MOSAIC_CAT_START_PERCENT] = catStartPercent;
118
+ }));
119
+ }
120
+ for (const key in stackCache.nodes) stackMosaic(s, stackCache.nodes[key], stackCache.nodes[key].mosaicData ? mosaicData ? [ ...mosaicData, stackCache.nodes[key].mosaicData ] : [ stackCache.nodes[key].mosaicData ] : null);
121
+ }
122
+
68
123
  export function stackOffsetSilhouette(stackCache) {
69
124
  if (!stackCache.values.length) return;
70
125
  const centerValue = stackCache.values[stackCache.values.length - 1][STACK_FIELD_END] / 2;
@@ -72,28 +127,41 @@ export function stackOffsetSilhouette(stackCache) {
72
127
  stackCache.values[j][STACK_FIELD_END_OffsetSilhouette] = stackCache.values[j][STACK_FIELD_END] - centerValue;
73
128
  }
74
129
 
75
- export function stack(stackCache, stackInverse, hasPercent) {
130
+ export function stack(stackCache, stackInverse, hasPercent, hasMinMax, fields = {
131
+ key: STACK_FIELD_KEY,
132
+ start: STACK_FIELD_START,
133
+ end: STACK_FIELD_END,
134
+ startPercent: STACK_FIELD_START_PERCENT,
135
+ endPercent: STACK_FIELD_END_PERCENT,
136
+ max: STACK_FIELD_TOTAL_TOP,
137
+ min: STACK_FIELD_TOTAL_BOTTOM
138
+ }) {
139
+ const hasMinField = hasMinMax && isValid(fields.min), hasMaxField = hasMinMax && isValid(fields.max);
76
140
  if (stackCache.values.length > 0) {
77
- let positiveStart = 0, negativeStart = 0, sign = 1, value = 0;
141
+ let positiveStart = 0, negativeStart = 0, sign = 1, value = 0, minNode = null, maxNode = null;
78
142
  const maxLength = stackCache.values.length;
79
143
  for (let index = 0; index < maxLength; index++) {
80
144
  const v = stackCache.values[stackInverse ? maxLength - 1 - index : index];
81
- value = v[STACK_FIELD_END], value >= 0 ? (v[STACK_FIELD_START] = positiveStart,
82
- positiveStart += v[STACK_FIELD_END], v[STACK_FIELD_END] = positiveStart) : (v[STACK_FIELD_START] = negativeStart,
83
- negativeStart += v[STACK_FIELD_END], v[STACK_FIELD_END] = negativeStart), v[STACK_FIELD_KEY] = stackCache.key;
145
+ value = v[fields.end], value >= 0 ? (v[fields.start] = positiveStart, positiveStart += v[fields.end],
146
+ v[fields.end] = positiveStart) : (v[fields.start] = negativeStart, negativeStart += v[fields.end],
147
+ v[fields.end] = negativeStart), v[fields.key] = stackCache.key, hasMaxField && (delete v[fields.max],
148
+ (!maxNode || v[fields.end] > maxNode[fields.end]) && (maxNode = v)), hasMinField && (delete v[fields.min],
149
+ (!minNode || v[fields.start] < minNode[fields.start]) && (minNode = v));
84
150
  }
85
- if (hasPercent) for (let index = 0; index < maxLength; index++) {
151
+ if (hasMaxField && maxNode && (maxNode[fields.max] = !0), hasMinField && minNode && (minNode[fields.min] = !0),
152
+ hasPercent) for (let index = 0; index < maxLength; index++) {
86
153
  const v = stackCache.values[stackInverse ? maxLength - 1 - index : index];
87
- value = v[STACK_FIELD_END];
154
+ value = v[fields.end];
88
155
  const denominator = value >= 0 ? positiveStart : negativeStart;
89
- sign = value >= 0 ? 1 : -1, v[STACK_FIELD_START_PERCENT] = 0 === denominator ? 0 : Math.min(1, v[STACK_FIELD_START] / denominator) * sign,
90
- v[STACK_FIELD_END_PERCENT] = 0 === denominator ? 0 : Math.min(1, v[STACK_FIELD_END] / denominator) * sign;
156
+ sign = value >= 0 ? 1 : -1, v[fields.startPercent] = 0 === denominator ? 0 : Math.min(1, v[fields.start] / denominator) * sign,
157
+ v[fields.endPercent] = 0 === denominator ? 0 : Math.min(1, v[fields.end] / denominator) * sign;
91
158
  }
92
159
  }
93
- for (const key in stackCache.nodes) stack(stackCache.nodes[key], stackInverse, hasPercent);
160
+ for (const key in stackCache.nodes) stack(stackCache.nodes[key], stackInverse, hasPercent, hasMinMax, fields);
94
161
  }
95
162
 
96
163
  export function stackGroup(s, stackData, stackCache, valueField, setInitialValue, stackSortCache, stackKey) {
164
+ var _a;
97
165
  if ("values" in stackData) if (setInitialValue && stackData.values.forEach((v => v[STACK_FIELD_END] = toValidNumber(v[valueField]))),
98
166
  stackCache.series.push({
99
167
  s: s,
@@ -109,13 +177,14 @@ export function stackGroup(s, stackData, stackCache, valueField, setInitialValue
109
177
  }));
110
178
  } else stackCache.values.push(...stackData.values); else for (const key in stackData.nodes) {
111
179
  const newStackKey = stackKey ? `${stackKey}_${key}` : key;
112
- !stackCache.nodes[key] && (stackCache.nodes[key] = {
180
+ stackCache.nodes[key] || (stackCache.nodes[key] = {
113
181
  values: [],
114
182
  series: [],
115
183
  nodes: {},
116
184
  sortDatums: [],
117
185
  key: newStackKey
118
- }), stackGroup(s, stackData.nodes[key], stackCache.nodes[key], valueField, setInitialValue, stackSortCache, newStackKey);
186
+ }, isValid(null === (_a = stackData.nodes[key]) || void 0 === _a ? void 0 : _a.groupField) && (stackCache.nodes[key].groupField = stackData.nodes[key].groupField)),
187
+ stackGroup(s, stackData.nodes[key], stackCache.nodes[key], valueField, setInitialValue, stackSortCache, newStackKey);
119
188
  }
120
189
  }
121
190
  //# sourceMappingURL=data.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/util/data.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,uBAAuB,EACvB,gCAAgC,EAChC,kCAAkC,EAClC,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAIlC,MAAM,UAAU,WAAW,CACzB,YAGG,EACH,WAGG;IAKH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC3C,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,EAAE;YACZ,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC5B;aAAM;YACL,OAAO,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SAClF;KACF;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,UAAU,CACjB,IAGG,EACH,QAAgB;IAEhB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC;AAC5C,CAAC;AAGD,MAAM,UAAU,aAAa,CAAC,QAAkB,EAAE,KAAa;;IAC7D,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,CAAC;KACtB;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;IACpC,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,CAAC;KACtB;IACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QAClB,OAAO,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,CAAC;KACtB;IACD,OAAO,MAAA,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,mCAAI,KAAK,CAAC;AACtC,CAAC;AA+BD,MAAM,UAAU,mBAAmB,CAAC,MAAe,EAAE,eAAwB,EAAE,MAA4B;IACzG,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;IAExC,MAAM,eAAe,GAAuC,EAAE,CAAC;IAE/D,IAAI,cAAc,GAAoB,IAAI,CAAC;IAE3C,IAAI,SAAS,EAAE;QAGb,cAAc,GAAG,EAAE,CAAC;QACpB,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAE7B,MAAM,WAAW,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC;YACvC,IAAI,WAAW,EAAE;gBACf,MAAM,SAAS,GAAG,CAAC,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC;gBAC7D,IAAI,SAAS,CAAC,MAAM,EAAE;oBACpB,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE;wBAChC,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;qBAC1D;oBACD,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;wBAChC,IAAI,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE;4BAC5C,cAAc,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC;4BAC5E,cAAc,CAAC,WAAW,CAAC,CAAC,SAAS,EAAE,CAAC;yBACzC;oBACH,CAAC,CAAC,CAAC;iBACJ;aACF;QACH,CAAC,CAAC,CAAC;KACJ;IAED,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;;QAC7B,MAAM,SAAS,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;QACrC,MAAM,eAAe,GAAG,CAAC,CAAC,kBAAkB,EAAE,CAAC;QAC/C,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/C,IAAI,SAAS,IAAI,eAAe,IAAI,YAAY,EAAE;YAChD,eAAe,CAAC,UAAU,CAAC,GAAG,MAAA,eAAe,CAAC,UAAU,CAAC,mCAAI;gBAC3D,KAAK,EAAE,EAAE;aACV,CAAC;YAEF,UAAU,CACR,CAAC,EACD,SAAS,EACT,eAAe,CAAC,UAAU,CAAoB,EAC9C,eAAe,EACf,eAAe,EACf,cAAc,CACf,CAAC;SACH;IACH,CAAC,CAAC,CAAC;IACH,OAAO,SAAS;QACd,CAAC,CAAC,mBAAmB,CAAC,eAAqD,EAAE,cAAc,CAAC;QAC5F,CAAC,CAAC,eAAe,CAAC;AACtB,CAAC;AAGD,MAAM,UAAU,mBAAmB,CACjC,eAAmD,EACnD,cAA+B;;IAE/B,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE;QACjC,IAAI,MAAA,eAAe,CAAC,GAAG,CAAC,CAAC,UAAU,0CAAE,MAAM,EAAE;YAC3C,eAAe,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;YAClE,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;SACnF;aAAM;YACL,mBAAmB,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;SACjE;KACF;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,SAA0B,EAAE,UAAkB;IACvE,IAAI,QAAQ,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE;QACpD,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;QAC/D,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC3B,CAAC,CAAC,iBAAiB,CAAC,GAAG,KAAK,CAAC;YAC7B,CAAC,CAAC,yBAAyB,CAAC,GAAG,OAAO,CAAC;YACvC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;YACvD,OAAO,OAAO,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QACzE,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,qBAAqB,CAAC,GAAG,IAAI,CAAC;QACtC,OAAO;KACR;IACD,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,KAAK,EAAE;QACjC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;KAC9C;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,UAA2B;IAC/D,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE;QAC7B,OAAO;KACR;IACD,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IACzF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACjD,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,kCAAkC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,WAAW,CAAC;QACjH,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,gCAAgC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,WAAW,CAAC;KAC9G;AACH,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,UAA2B,EAAE,YAAqB,EAAE,UAAoB;IAC5F,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;QAEhC,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,aAAa,GAAG,CAAC,CAAC;QAEtB,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,KAAK,GAAG,CAAC,CAAC;QAGd,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,EAAE,KAAK,EAAE,EAAE;YAC9C,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC1E,KAAK,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC;YAC3B,IAAI,KAAK,IAAI,CAAC,EAAE;gBACd,CAAC,CAAC,iBAAiB,CAAC,GAAG,aAAa,CAAC;gBACrC,aAAa,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC;gBACpC,CAAC,CAAC,eAAe,CAAC,GAAG,aAAa,CAAC;aACpC;iBAAM;gBACL,CAAC,CAAC,iBAAiB,CAAC,GAAG,aAAa,CAAC;gBACrC,aAAa,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC;gBACpC,CAAC,CAAC,eAAe,CAAC,GAAG,aAAa,CAAC;aACpC;YACD,CAAC,CAAC,eAAe,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC;SACrC;QACD,IAAI,UAAU,EAAE;YAEd,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,EAAE,KAAK,EAAE,EAAE;gBAC9C,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC1E,KAAK,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC;gBAC3B,MAAM,WAAW,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC;gBAC/D,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3B,CAAC,CAAC,yBAAyB,CAAC,GAAG,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC;gBAC9G,CAAC,CAAC,uBAAuB,CAAC,GAAG,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC;aAC3G;SACF;KACF;IAED,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE;QAClC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;KACxD;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,CAAU,EACV,SAA+B,EAC/B,UAA2B,EAC3B,UAAkB,EAClB,eAAwB,EACxB,cAA+B,EAC/B,QAAiB;IAEjB,IAAI,QAAQ,IAAI,SAAS,EAAE;QACzB,eAAe,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACtG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QAE3D,IAAI,cAAc,EAAE;YAElB,MAAM,WAAW,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC;YACvC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAC3B,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;oBACzB,MAAM,EAAE,CAAC;oBACT,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC1E,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;SACJ;aAAM;YAEL,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;SAC7C;QACD,OAAO;KACR;IACD,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,KAAK,EAAE;QACjC,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAC1D,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;YACpB,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;gBACvB,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,EAAE;gBACT,UAAU,EAAE,EAAE;gBACd,GAAG,EAAE,WAAW;aACjB,CAAC,CAAC;QACL,UAAU,CACR,CAAC,EACD,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EACpB,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EACrB,UAAU,EACV,eAAe,EACf,cAAc,EACd,WAAW,CACZ,CAAC;KACH;AACH,CAAC","file":"data.js","sourcesContent":["import type { DataView } from '@visactor/vdataset';\nimport type { StatisticOperations } from '../data/transforms/dimension-statistics';\nimport {\n STACK_FIELD_END,\n STACK_FIELD_START_PERCENT,\n STACK_FIELD_END_PERCENT,\n STACK_FIELD_END_OffsetSilhouette,\n STACK_FIELD_START_OffsetSilhouette,\n STACK_FIELD_TOTAL,\n STACK_FIELD_TOTAL_PERCENT,\n STACK_FIELD_TOTAL_TOP,\n STACK_FIELD_START,\n STACK_FIELD_KEY\n} from '../constant';\nimport { toValidNumber } from './type';\nimport { max, sum } from './math';\nimport type { ISeries, ISeriesStackDataMeta } from '../series/interface';\nimport type { IRegion } from '../region/interface';\n\nexport function mergeFields(\n targetFields: {\n key: string;\n operations: StatisticOperations;\n }[],\n mergeFields: {\n key: string;\n operations: StatisticOperations;\n }[]\n): {\n key: string;\n operations: StatisticOperations;\n}[] {\n for (let i = 0; i < mergeFields.length; i++) {\n const element = mergeFields[i];\n const _target = findFields(targetFields, element.key);\n if (!_target) {\n targetFields.push(element);\n } else {\n _target.operations = [...new Set(_target.operations.concat(element.operations))];\n }\n }\n return targetFields;\n}\n\nfunction findFields(\n list: {\n key: string;\n operations: StatisticOperations;\n }[],\n fieldKey: string\n) {\n return list.find(i => i.key === fieldKey);\n}\n\n// 如果不存在别名就返回 field\nexport function getFieldAlias(dataView: DataView, field: string) {\n if (!dataView) {\n return field ?? null;\n }\n const fields = dataView.getFields();\n if (!fields) {\n return field ?? null;\n }\n if (!fields[field]) {\n return field ?? null;\n }\n return fields[field].alias ?? field;\n}\n\nexport interface IStackCacheNode {\n values: any[];\n series: {\n s: ISeries;\n values: any[];\n }[];\n sortDatums: {\n datum: any;\n index: number;\n series: ISeries;\n }[];\n nodes: {\n [key: string]: IStackCacheNode;\n };\n key: string;\n}\nexport interface IStackCacheRoot {\n nodes: {\n [key: string]: IStackCacheNode;\n };\n}\n\nexport interface IStackSortCache {\n [key: string]: {\n lastIndex: number;\n sort: { [key: string]: number };\n };\n}\n\nexport function getRegionStackGroup(region: IRegion, setInitialValue: boolean, filter?: (s: any) => boolean) {\n const stackSort = region.getStackSort();\n\n const stackValueGroup: { [key: string]: IStackCacheRoot } = {};\n // 堆积排序 {维度key: { lastIndex: 0, sort:{[值]: 值序号}}}\n let stackSortCache: IStackSortCache = null;\n // 如果有排序\n if (stackSort) {\n // 先遍历系列,得到基于 seriesField 的排序信息\n // 这里性能消耗应该很小\n stackSortCache = {};\n region.getSeries().forEach(s => {\n // 拿到系列的 seriesField 做排序准备\n const seriesField = s.getSeriesField();\n if (seriesField) {\n const fieldInfo = s.getRawDataStatisticsByField(seriesField);\n if (fieldInfo.values) {\n if (!stackSortCache[seriesField]) {\n stackSortCache[seriesField] = { lastIndex: 0, sort: {} };\n }\n fieldInfo.values.forEach((v, i) => {\n if (!(v in stackSortCache[seriesField].sort)) {\n stackSortCache[seriesField].sort[v] = stackSortCache[seriesField].lastIndex;\n stackSortCache[seriesField].lastIndex++;\n }\n });\n }\n }\n });\n }\n\n region.getSeries().forEach(s => {\n const stackData = s.getStackData();\n const stackValue = s.getStackValue();\n const stackValueField = s.getStackValueField();\n const filterEnable = filter ? filter(s) : true;\n if (stackData && stackValueField && filterEnable) {\n stackValueGroup[stackValue] = stackValueGroup[stackValue] ?? {\n nodes: {}\n };\n\n stackGroup(\n s,\n stackData,\n stackValueGroup[stackValue] as IStackCacheNode,\n stackValueField,\n setInitialValue,\n stackSortCache\n );\n }\n });\n return stackSort\n ? sortStackValueGroup(stackValueGroup as { [key: string]: IStackCacheNode }, stackSortCache)\n : stackValueGroup;\n}\n\n// 排序\nexport function sortStackValueGroup(\n stackValueGroup: { [key: string]: IStackCacheNode },\n stackSortCache: IStackSortCache\n) {\n for (const key in stackValueGroup) {\n if (stackValueGroup[key].sortDatums?.length) {\n stackValueGroup[key].sortDatums.sort((a, b) => a.index - b.index);\n stackValueGroup[key].values = stackValueGroup[key].sortDatums.map(sd => sd.datum);\n } else {\n sortStackValueGroup(stackValueGroup[key].nodes, stackSortCache);\n }\n }\n return stackValueGroup;\n}\n\nexport function stackTotal(stackData: IStackCacheNode, valueField: string) {\n if ('values' in stackData && stackData.values.length) {\n const total = sum(stackData.values, valueField);\n const percent = max(stackData.values, STACK_FIELD_END_PERCENT);\n stackData.values.forEach(v => {\n v[STACK_FIELD_TOTAL] = total;\n v[STACK_FIELD_TOTAL_PERCENT] = percent;\n delete v[STACK_FIELD_TOTAL_TOP];\n });\n const maxNode = stackData.values.reduce((max, current) => {\n return current[STACK_FIELD_END] > max[STACK_FIELD_END] ? current : max;\n });\n maxNode[STACK_FIELD_TOTAL_TOP] = true;\n return;\n }\n for (const key in stackData.nodes) {\n stackTotal(stackData.nodes[key], valueField);\n }\n}\n\nexport function stackOffsetSilhouette(stackCache: IStackCacheNode) {\n if (!stackCache.values.length) {\n return;\n }\n const centerValue = stackCache.values[stackCache.values.length - 1][STACK_FIELD_END] / 2;\n for (let j = 0; j < stackCache.values.length; j++) {\n stackCache.values[j][STACK_FIELD_START_OffsetSilhouette] = stackCache.values[j][STACK_FIELD_START] - centerValue;\n stackCache.values[j][STACK_FIELD_END_OffsetSilhouette] = stackCache.values[j][STACK_FIELD_END] - centerValue;\n }\n}\n\nexport function stack(stackCache: IStackCacheNode, stackInverse: boolean, hasPercent?: boolean) {\n if (stackCache.values.length > 0) {\n // 设置一个小数以保证 log 计算不会报错\n let positiveStart = 0;\n let negativeStart = 0;\n // temp\n let sign = 1;\n let value = 0;\n\n // stack\n const maxLength = stackCache.values.length;\n for (let index = 0; index < maxLength; index++) {\n const v = stackCache.values[stackInverse ? maxLength - 1 - index : index];\n value = v[STACK_FIELD_END];\n if (value >= 0) {\n v[STACK_FIELD_START] = positiveStart;\n positiveStart += v[STACK_FIELD_END];\n v[STACK_FIELD_END] = positiveStart;\n } else {\n v[STACK_FIELD_START] = negativeStart;\n negativeStart += v[STACK_FIELD_END];\n v[STACK_FIELD_END] = negativeStart;\n }\n v[STACK_FIELD_KEY] = stackCache.key;\n }\n if (hasPercent) {\n // normalize\n for (let index = 0; index < maxLength; index++) {\n const v = stackCache.values[stackInverse ? maxLength - 1 - index : index];\n value = v[STACK_FIELD_END];\n const denominator = value >= 0 ? positiveStart : negativeStart;\n sign = value >= 0 ? 1 : -1;\n v[STACK_FIELD_START_PERCENT] = denominator === 0 ? 0 : Math.min(1, v[STACK_FIELD_START] / denominator) * sign;\n v[STACK_FIELD_END_PERCENT] = denominator === 0 ? 0 : Math.min(1, v[STACK_FIELD_END] / denominator) * sign;\n }\n }\n }\n\n for (const key in stackCache.nodes) {\n stack(stackCache.nodes[key], stackInverse, hasPercent);\n }\n}\n\nexport function stackGroup(\n s: ISeries,\n stackData: ISeriesStackDataMeta,\n stackCache: IStackCacheNode,\n valueField: string,\n setInitialValue: boolean,\n stackSortCache: IStackSortCache,\n stackKey?: string\n) {\n if ('values' in stackData) {\n setInitialValue && stackData.values.forEach(v => (v[STACK_FIELD_END] = toValidNumber(v[valueField])));\n stackCache.series.push({ s: s, values: stackData.values });\n // 如果有排序\n if (stackSortCache) {\n // 系列的 seriesField\n const seriesField = s.getSeriesField();\n stackData.values.forEach(d => {\n stackCache.sortDatums.push({\n series: s,\n datum: d,\n index: seriesField ? stackSortCache[seriesField].sort[d[seriesField]] : 0\n });\n });\n } else {\n // 如果没有排序,直接生成 values 数组\n stackCache.values.push(...stackData.values);\n }\n return;\n }\n for (const key in stackData.nodes) {\n const newStackKey = stackKey ? `${stackKey}_${key}` : key;\n !stackCache.nodes[key] &&\n (stackCache.nodes[key] = {\n values: [],\n series: [],\n nodes: {},\n sortDatums: [],\n key: newStackKey\n });\n stackGroup(\n s,\n stackData.nodes[key],\n stackCache.nodes[key],\n valueField,\n setInitialValue,\n stackSortCache,\n newStackKey\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/util/data.ts"],"names":[],"mappings":"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","file":"data.js","sourcesContent":["import type { DataView } from '@visactor/vdataset';\nimport type { StatisticOperations } from '../data/transforms/dimension-statistics';\nimport {\n STACK_FIELD_END,\n STACK_FIELD_START_PERCENT,\n STACK_FIELD_END_PERCENT,\n STACK_FIELD_END_OffsetSilhouette,\n STACK_FIELD_START_OffsetSilhouette,\n STACK_FIELD_TOTAL,\n STACK_FIELD_TOTAL_PERCENT,\n STACK_FIELD_TOTAL_TOP,\n STACK_FIELD_START,\n STACK_FIELD_KEY,\n STACK_FIELD_TOTAL_BOTTOM,\n MOSAIC_CAT_START_PERCENT,\n MOSAIC_CAT_END_PERCENT,\n MOSAIC_VALUE_START_PERCENT,\n MOSAIC_VALUE_END_PERCENT\n} from '../constant';\nimport { isValid, toValidNumber } from './type';\nimport { max, sum } from './math';\nimport type { ISeries, ISeriesStackDataMeta } from '../series/interface';\nimport type { IRegion } from '../region/interface';\n\nexport function mergeFields(\n targetFields: {\n key: string;\n operations: StatisticOperations;\n }[],\n mergeFields: {\n key: string;\n operations: StatisticOperations;\n }[]\n): {\n key: string;\n operations: StatisticOperations;\n}[] {\n for (let i = 0; i < mergeFields.length; i++) {\n const element = mergeFields[i];\n const _target = findFields(targetFields, element.key);\n if (!_target) {\n targetFields.push(element);\n } else {\n _target.operations = [...new Set(_target.operations.concat(element.operations))];\n }\n }\n return targetFields;\n}\n\nfunction findFields(\n list: {\n key: string;\n operations: StatisticOperations;\n }[],\n fieldKey: string\n) {\n return list.find(i => i.key === fieldKey);\n}\n\n// 如果不存在别名就返回 field\nexport function getFieldAlias(dataView: DataView, field: string) {\n if (!dataView) {\n return field ?? null;\n }\n const fields = dataView.getFields();\n if (!fields) {\n return field ?? null;\n }\n if (!fields[field]) {\n return field ?? null;\n }\n return fields[field].alias ?? field;\n}\n\nexport interface IStackCacheNode {\n groupField?: string;\n values: any[];\n series: {\n s: ISeries;\n values: any[];\n }[];\n sortDatums: {\n datum: any;\n index: number;\n series: ISeries;\n }[];\n nodes: {\n [key: string]: IStackCacheNode;\n };\n key: string;\n total?: number;\n}\nexport interface IStackCacheRoot {\n groupField?: string;\n total?: number;\n nodes: {\n [key: string]: IStackCacheNode;\n };\n}\n\nexport interface IStackSortCache {\n [key: string]: {\n lastIndex: number;\n sort: { [key: string]: number };\n };\n}\n\nexport function getRegionStackGroup(region: IRegion, setInitialValue: boolean, filter?: (s: any) => boolean) {\n const stackSort = region.getStackSort();\n\n const stackValueGroup: { [key: string]: IStackCacheRoot } = {};\n // 堆积排序 {维度key: { lastIndex: 0, sort:{[值]: 值序号}}}\n let stackSortCache: IStackSortCache = null;\n // 如果有排序\n if (stackSort) {\n // 先遍历系列,得到基于 seriesField 的排序信息\n // 这里性能消耗应该很小\n stackSortCache = {};\n region.getSeries().forEach(s => {\n // 拿到系列的 seriesField 做排序准备\n const seriesField = s.getSeriesField();\n if (seriesField) {\n const fieldInfo = s.getRawDataStatisticsByField(seriesField);\n if (fieldInfo.values) {\n if (!stackSortCache[seriesField]) {\n stackSortCache[seriesField] = { lastIndex: 0, sort: {} };\n }\n fieldInfo.values.forEach((v, i) => {\n if (!(v in stackSortCache[seriesField].sort)) {\n stackSortCache[seriesField].sort[v] = stackSortCache[seriesField].lastIndex;\n stackSortCache[seriesField].lastIndex++;\n }\n });\n }\n }\n });\n }\n\n region.getSeries().forEach(s => {\n const stackData = s.getStackData();\n const stackValue = s.getStackValue();\n const stackValueField = s.getStackValueField();\n const filterEnable = filter ? filter(s) : true;\n if (stackData && stackValueField && filterEnable) {\n stackValueGroup[stackValue] = stackValueGroup[stackValue] ?? {\n groupField: stackData.groupField,\n nodes: {}\n };\n\n stackGroup(\n s,\n stackData,\n stackValueGroup[stackValue] as IStackCacheNode,\n stackValueField,\n setInitialValue,\n stackSortCache\n );\n }\n });\n return stackSort\n ? sortStackValueGroup(stackValueGroup as { [key: string]: IStackCacheNode }, stackSortCache)\n : stackValueGroup;\n}\n\n// 排序\nexport function sortStackValueGroup(\n stackValueGroup: { [key: string]: IStackCacheNode },\n stackSortCache: IStackSortCache\n) {\n for (const key in stackValueGroup) {\n if (stackValueGroup[key].sortDatums?.length) {\n stackValueGroup[key].sortDatums.sort((a, b) => a.index - b.index);\n stackValueGroup[key].values = stackValueGroup[key].sortDatums.map(sd => sd.datum);\n } else {\n sortStackValueGroup(stackValueGroup[key].nodes, stackSortCache);\n }\n }\n return stackValueGroup;\n}\n\nexport function stackTotal(stackData: IStackCacheNode, valueField: string) {\n if ('values' in stackData && stackData.values.length) {\n const total = sum(stackData.values, valueField);\n const percent = max(stackData.values, STACK_FIELD_END_PERCENT);\n\n stackData.values.forEach(v => {\n v[STACK_FIELD_TOTAL] = total;\n v[STACK_FIELD_TOTAL_PERCENT] = percent;\n });\n\n return;\n }\n for (const key in stackData.nodes) {\n stackTotal(stackData.nodes[key], valueField);\n }\n return;\n}\n\nexport interface IMosaicData {\n groupField?: string;\n groupValue?: string;\n value?: number;\n end?: number;\n start?: number;\n startPercent?: number;\n endPercent?: number;\n}\n\nexport function stackMosaicTotal(stackData: IStackCacheNode, valueField: string) {\n if ('values' in stackData && stackData.values.length) {\n if (isValid(stackData.values[0]?.[STACK_FIELD_TOTAL])) {\n stackData.total = stackData.values[0]?.[STACK_FIELD_TOTAL];\n } else {\n stackData.total = sum(stackData.values, valueField);\n }\n return;\n }\n for (const key in stackData.nodes) {\n stackMosaicTotal(stackData.nodes[key], valueField);\n }\n\n if (stackData.nodes) {\n stackData.total = sum(\n Object.keys(stackData.nodes).map(key => stackData.nodes[key]),\n 'total'\n );\n }\n\n return;\n}\n\nexport function stackMosaic(s: ISeries, stackCache: IStackCacheNode, mosaicData?: IMosaicData[]) {\n if (stackCache.groupField && stackCache.nodes) {\n const groupValues = s.getRawDataStatisticsByField(stackCache.groupField, false)?.values || [];\n const mosaicStackData = {\n key: `${stackCache.groupField}`,\n values: groupValues.map(group => {\n const groupValues = stackCache.nodes[group];\n\n return {\n groupValue: group,\n value: groupValues.total,\n end: groupValues.total\n };\n })\n };\n\n stack(mosaicStackData as IStackCacheNode, false, true, false, {\n key: 'groupField',\n start: 'start',\n end: 'end',\n startPercent: 'startPercent',\n endPercent: 'endPercent'\n });\n\n mosaicStackData.values.forEach(stackValue => {\n (stackCache.nodes[stackValue.groupValue] as any).mosaicData = stackValue;\n });\n } else if ('values' in stackCache && stackCache.values.length && mosaicData && mosaicData.length) {\n const len = mosaicData.length;\n let catStartPercent = 0;\n let catEndPercent = 1;\n let valueStartPercent = 0;\n let valueEndPercent = 1;\n\n for (let i = 0; i < len; i++) {\n if (i % 2 === 0) {\n const catDelta = catEndPercent - catStartPercent;\n\n catEndPercent = catStartPercent + mosaicData[i].endPercent * catDelta;\n catStartPercent = catStartPercent + mosaicData[i].startPercent * catDelta;\n } else {\n const valueDelta = valueEndPercent - valueStartPercent;\n\n valueEndPercent = valueStartPercent + mosaicData[i].endPercent * valueDelta;\n valueStartPercent = valueStartPercent + mosaicData[i].startPercent * valueDelta;\n }\n }\n\n if (len % 2 === 0) {\n stackCache.values.forEach(v => {\n const delta = catEndPercent - catStartPercent;\n v[MOSAIC_CAT_END_PERCENT] = catStartPercent + delta * v[STACK_FIELD_END_PERCENT];\n v[MOSAIC_CAT_START_PERCENT] = catStartPercent + delta * v[STACK_FIELD_START_PERCENT];\n v[MOSAIC_VALUE_END_PERCENT] = valueEndPercent;\n v[MOSAIC_VALUE_START_PERCENT] = valueStartPercent;\n });\n } else {\n stackCache.values.forEach(v => {\n const delta = valueEndPercent - valueStartPercent;\n v[MOSAIC_VALUE_END_PERCENT] = valueStartPercent + delta * v[STACK_FIELD_END_PERCENT];\n v[MOSAIC_VALUE_START_PERCENT] = valueStartPercent + delta * v[STACK_FIELD_START_PERCENT];\n v[MOSAIC_CAT_END_PERCENT] = catEndPercent;\n v[MOSAIC_CAT_START_PERCENT] = catStartPercent;\n });\n }\n }\n\n for (const key in stackCache.nodes) {\n stackMosaic(\n s,\n stackCache.nodes[key],\n (stackCache.nodes[key] as any).mosaicData\n ? mosaicData\n ? [...mosaicData, (stackCache.nodes[key] as any).mosaicData]\n : [(stackCache.nodes[key] as any).mosaicData]\n : null\n );\n }\n}\n\nexport function stackOffsetSilhouette(stackCache: IStackCacheNode) {\n if (!stackCache.values.length) {\n return;\n }\n const centerValue = stackCache.values[stackCache.values.length - 1][STACK_FIELD_END] / 2;\n for (let j = 0; j < stackCache.values.length; j++) {\n stackCache.values[j][STACK_FIELD_START_OffsetSilhouette] = stackCache.values[j][STACK_FIELD_START] - centerValue;\n stackCache.values[j][STACK_FIELD_END_OffsetSilhouette] = stackCache.values[j][STACK_FIELD_END] - centerValue;\n }\n}\n\nexport function stack(\n stackCache: IStackCacheNode,\n stackInverse: boolean,\n hasPercent?: boolean,\n hasMinMax?: boolean,\n fields: {\n key: string;\n start: string;\n end: string;\n startPercent: string;\n endPercent: string;\n min?: string;\n max?: string;\n } = {\n key: STACK_FIELD_KEY,\n start: STACK_FIELD_START,\n end: STACK_FIELD_END,\n startPercent: STACK_FIELD_START_PERCENT,\n endPercent: STACK_FIELD_END_PERCENT,\n max: STACK_FIELD_TOTAL_TOP,\n min: STACK_FIELD_TOTAL_BOTTOM\n }\n) {\n const hasMinField = hasMinMax && isValid(fields.min);\n const hasMaxField = hasMinMax && isValid(fields.max);\n\n if (stackCache.values.length > 0) {\n // 设置一个小数以保证 log 计算不会报错\n let positiveStart = 0;\n let negativeStart = 0;\n // temp\n let sign = 1;\n let value = 0;\n let minNode: any = null;\n let maxNode: any = null;\n\n // stack\n const maxLength = stackCache.values.length;\n for (let index = 0; index < maxLength; index++) {\n const v = stackCache.values[stackInverse ? maxLength - 1 - index : index];\n value = v[fields.end];\n if (value >= 0) {\n v[fields.start] = positiveStart;\n positiveStart += v[fields.end];\n v[fields.end] = positiveStart;\n } else {\n v[fields.start] = negativeStart;\n negativeStart += v[fields.end];\n v[fields.end] = negativeStart;\n }\n v[fields.key] = stackCache.key;\n\n if (hasMaxField) {\n delete v[fields.max];\n if (!maxNode || v[fields.end] > maxNode[fields.end]) {\n maxNode = v;\n }\n }\n if (hasMinField) {\n delete v[fields.min];\n if (!minNode || v[fields.start] < minNode[fields.start]) {\n minNode = v;\n }\n }\n }\n\n hasMaxField && maxNode && (maxNode[fields.max] = true);\n hasMinField && minNode && (minNode[fields.min] = true);\n\n if (hasPercent) {\n // normalize\n for (let index = 0; index < maxLength; index++) {\n const v = stackCache.values[stackInverse ? maxLength - 1 - index : index];\n value = v[fields.end];\n const denominator = value >= 0 ? positiveStart : negativeStart;\n sign = value >= 0 ? 1 : -1;\n v[fields.startPercent] = denominator === 0 ? 0 : Math.min(1, v[fields.start] / denominator) * sign;\n v[fields.endPercent] = denominator === 0 ? 0 : Math.min(1, v[fields.end] / denominator) * sign;\n }\n }\n }\n\n for (const key in stackCache.nodes) {\n stack(stackCache.nodes[key], stackInverse, hasPercent, hasMinMax, fields);\n }\n}\n\nexport function stackGroup(\n s: ISeries,\n stackData: ISeriesStackDataMeta,\n stackCache: IStackCacheNode,\n valueField: string,\n setInitialValue: boolean,\n stackSortCache: IStackSortCache,\n stackKey?: string\n) {\n if ('values' in stackData) {\n setInitialValue && stackData.values.forEach(v => (v[STACK_FIELD_END] = toValidNumber(v[valueField])));\n stackCache.series.push({ s: s, values: stackData.values });\n // 如果有排序\n if (stackSortCache) {\n // 系列的 seriesField\n const seriesField = s.getSeriesField();\n stackData.values.forEach(d => {\n stackCache.sortDatums.push({\n series: s,\n datum: d,\n index: seriesField ? stackSortCache[seriesField].sort[d[seriesField]] : 0\n });\n });\n } else {\n // 如果没有排序,直接生成 values 数组\n stackCache.values.push(...stackData.values);\n }\n return;\n }\n for (const key in stackData.nodes) {\n const newStackKey = stackKey ? `${stackKey}_${key}` : key;\n\n if (!stackCache.nodes[key]) {\n stackCache.nodes[key] = {\n values: [],\n series: [],\n nodes: {},\n sortDatums: [],\n key: newStackKey\n };\n\n if (isValid(stackData.nodes[key]?.groupField)) {\n stackCache.nodes[key].groupField = stackData.nodes[key].groupField;\n }\n }\n\n stackGroup(\n s,\n stackData.nodes[key],\n stackCache.nodes[key],\n valueField,\n setInitialValue,\n stackSortCache,\n newStackKey\n );\n }\n}\n"]}
@@ -1,4 +1,5 @@
1
1
  export declare function transformComponentStyle(cfg?: any): any;
2
2
  export declare function transformStateStyle(stateStyle: any): {};
3
3
  export declare function transformAxisLabelStateStyle(stateStyle: any): {};
4
+ export declare function transformIndicatorStyle(style: any, datum: any): any;
4
5
  export declare function transformToGraphic(style: any): any;
package/esm/util/style.js CHANGED
@@ -28,6 +28,14 @@ export function transformAxisLabelStateStyle(stateStyle) {
28
28
  })), newStateStyle;
29
29
  }
30
30
 
31
+ export function transformIndicatorStyle(style, datum) {
32
+ if (isEmpty(style)) return null;
33
+ const newStateStyle = {};
34
+ return Object.keys(style).forEach((key => {
35
+ isFunction(style[key]) ? newStateStyle[key] = style[key](datum) : newStateStyle[key] = style[key];
36
+ })), transformToGraphic(newStateStyle);
37
+ }
38
+
31
39
  export function transformToGraphic(style) {
32
40
  return (null == style ? void 0 : style.angle) && (style.angle = degreeToRadian(style.angle)),
33
41
  style;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/util/style.ts"],"names":[],"mappings":"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","file":"style.js","sourcesContent":["import { degreeToRadian, isEmpty, isFunction } from '@visactor/vutils';\nimport type { Datum } from '../typings';\nimport type { LegendItemDatum } from '@visactor/vrender-components';\n\n/**\n * 针对一些可以配置状态样式的属性的转换函数,结构如下:\n * { style: {}, state: { hover: {} } }\n * @param cfg\n * @returns\n */\nexport function transformComponentStyle(cfg: any = {}) {\n const newConfig = {\n ...cfg\n };\n\n if (isFunction(cfg.style)) {\n newConfig.style = (item: LegendItemDatum, isSelected: boolean, index: number, allItems: LegendItemDatum[]) =>\n transformToGraphic(cfg.style(item, isSelected, index, allItems));\n } else if (!isEmpty(cfg.style)) {\n newConfig.style = transformToGraphic(cfg.style);\n }\n\n if (!isEmpty(cfg.state)) {\n const newStateStyle = {};\n Object.keys(cfg.state).forEach(key => {\n if (isFunction(cfg.state[key])) {\n newStateStyle[key] = (item: LegendItemDatum, isSelected: boolean, index: number, allItems: LegendItemDatum[]) =>\n transformToGraphic(cfg.state[key](item, isSelected, index, allItems));\n } else if (!isEmpty(cfg.state[key])) {\n newStateStyle[key] = transformToGraphic(cfg.state[key]);\n }\n });\n newConfig.state = newStateStyle;\n }\n\n return newConfig;\n}\n\nexport function transformStateStyle(stateStyle: any) {\n if (isEmpty(stateStyle)) {\n return null;\n }\n const newStateStyle = {};\n Object.keys(stateStyle).forEach(key => {\n if (isFunction(stateStyle[key])) {\n newStateStyle[key] = (value: any, index: number, datum: Datum, data: Datum[]) =>\n transformToGraphic(stateStyle[key](value, index, datum, data));\n } else if (!isEmpty(stateStyle[key])) {\n newStateStyle[key] = transformToGraphic(stateStyle[key]);\n }\n });\n\n return newStateStyle;\n}\n\nexport function transformAxisLabelStateStyle(stateStyle: any) {\n if (isEmpty(stateStyle)) {\n return null;\n }\n const newStateStyle = {};\n Object.keys(stateStyle).forEach(key => {\n if (isFunction(stateStyle[key])) {\n newStateStyle[key] = (datum: Datum, index: number, data: Datum[], layer?: number) => {\n return transformToGraphic(stateStyle[key](datum.rawValue, index, datum, data, layer));\n };\n } else if (!isEmpty(stateStyle[key])) {\n newStateStyle[key] = transformToGraphic(stateStyle[key]);\n }\n });\n\n return newStateStyle;\n}\n\nexport function transformToGraphic(style: any) {\n if (style?.angle) {\n style.angle = degreeToRadian(style.angle);\n }\n\n return style;\n}\n"]}
1
+ {"version":3,"sources":["../src/util/style.ts"],"names":[],"mappings":"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","file":"style.js","sourcesContent":["import { degreeToRadian, isEmpty, isFunction } from '@visactor/vutils';\nimport type { Datum } from '../typings';\nimport type { LegendItemDatum } from '@visactor/vrender-components';\n\n/**\n * 针对一些可以配置状态样式的属性的转换函数,结构如下:\n * { style: {}, state: { hover: {} } }\n * @param cfg\n * @returns\n */\nexport function transformComponentStyle(cfg: any = {}) {\n const newConfig = {\n ...cfg\n };\n\n if (isFunction(cfg.style)) {\n newConfig.style = (item: LegendItemDatum, isSelected: boolean, index: number, allItems: LegendItemDatum[]) =>\n transformToGraphic(cfg.style(item, isSelected, index, allItems));\n } else if (!isEmpty(cfg.style)) {\n newConfig.style = transformToGraphic(cfg.style);\n }\n\n if (!isEmpty(cfg.state)) {\n const newStateStyle = {};\n Object.keys(cfg.state).forEach(key => {\n if (isFunction(cfg.state[key])) {\n newStateStyle[key] = (item: LegendItemDatum, isSelected: boolean, index: number, allItems: LegendItemDatum[]) =>\n transformToGraphic(cfg.state[key](item, isSelected, index, allItems));\n } else if (!isEmpty(cfg.state[key])) {\n newStateStyle[key] = transformToGraphic(cfg.state[key]);\n }\n });\n newConfig.state = newStateStyle;\n }\n\n return newConfig;\n}\n\nexport function transformStateStyle(stateStyle: any) {\n if (isEmpty(stateStyle)) {\n return null;\n }\n const newStateStyle = {};\n Object.keys(stateStyle).forEach(key => {\n if (isFunction(stateStyle[key])) {\n newStateStyle[key] = (value: any, index: number, datum: Datum, data: Datum[]) =>\n transformToGraphic(stateStyle[key](value, index, datum, data));\n } else if (!isEmpty(stateStyle[key])) {\n newStateStyle[key] = transformToGraphic(stateStyle[key]);\n }\n });\n\n return newStateStyle;\n}\n\nexport function transformAxisLabelStateStyle(stateStyle: any) {\n if (isEmpty(stateStyle)) {\n return null;\n }\n const newStateStyle = {};\n Object.keys(stateStyle).forEach(key => {\n if (isFunction(stateStyle[key])) {\n newStateStyle[key] = (datum: Datum, index: number, data: Datum[], layer?: number) => {\n return transformToGraphic(stateStyle[key](datum.rawValue, index, datum, data, layer));\n };\n } else if (!isEmpty(stateStyle[key])) {\n newStateStyle[key] = transformToGraphic(stateStyle[key]);\n }\n });\n\n return newStateStyle;\n}\n\nexport function transformIndicatorStyle(style: any, datum: any) {\n if (isEmpty(style)) {\n return null;\n }\n const newStateStyle = {};\n Object.keys(style).forEach(key => {\n if (isFunction(style[key])) {\n newStateStyle[key] = style[key](datum);\n } else {\n newStateStyle[key] = style[key];\n }\n });\n return transformToGraphic(newStateStyle);\n}\n\nexport function transformToGraphic(style: any) {\n if (style?.angle) {\n style.angle = degreeToRadian(style.angle);\n }\n\n return style;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visactor/vchart",
3
- "version": "1.11.7-alpha.3",
3
+ "version": "1.11.7-alpha.9",
4
4
  "description": "charts lib based @visactor/VGrammar",
5
5
  "main": "cjs/index.js",
6
6
  "module": "esm/index.js",
@@ -81,27 +81,27 @@
81
81
  "@size-limit/file": "9.0.0",
82
82
  "rimraf": "3.0.2",
83
83
  "cross-env": "^7.0.3",
84
- "@internal/typescript-json-schema": "0.0.1",
85
- "@internal/bundler": "0.0.1",
84
+ "@internal/ts-config": "0.0.1",
86
85
  "@internal/eslint-config": "0.0.1",
87
- "@internal/ts-config": "0.0.1"
86
+ "@internal/typescript-json-schema": "0.0.1",
87
+ "@internal/bundler": "0.0.1"
88
88
  },
89
89
  "dependencies": {
90
90
  "@visactor/vutils": "~0.18.10",
91
91
  "@visactor/vdataset": "~0.18.10",
92
92
  "@visactor/vscale": "~0.18.10",
93
- "@visactor/vrender-core": "0.19.15",
94
- "@visactor/vrender-kits": "0.19.15",
95
- "@visactor/vrender-components": "0.19.15",
96
- "@visactor/vgrammar-core": "0.13.12",
97
- "@visactor/vgrammar-projection": "0.13.12",
98
- "@visactor/vgrammar-wordcloud": "0.13.12",
99
- "@visactor/vgrammar-wordcloud-shape": "0.13.12",
100
- "@visactor/vgrammar-hierarchy": "0.13.12",
101
- "@visactor/vgrammar-sankey": "0.13.12",
102
- "@visactor/vgrammar-venn": "0.13.12",
103
- "@visactor/vgrammar-util": "0.13.12",
104
- "@visactor/vutils-extension": "1.11.7-alpha.3"
93
+ "@visactor/vrender-core": "0.19.17",
94
+ "@visactor/vrender-kits": "0.19.17",
95
+ "@visactor/vrender-components": "0.19.17",
96
+ "@visactor/vgrammar-core": "0.13.14",
97
+ "@visactor/vgrammar-projection": "0.13.14",
98
+ "@visactor/vgrammar-wordcloud": "0.13.14",
99
+ "@visactor/vgrammar-wordcloud-shape": "0.13.14",
100
+ "@visactor/vgrammar-hierarchy": "0.13.14",
101
+ "@visactor/vgrammar-sankey": "0.13.14",
102
+ "@visactor/vgrammar-venn": "0.13.14",
103
+ "@visactor/vgrammar-util": "0.13.14",
104
+ "@visactor/vutils-extension": "1.11.7-alpha.9"
105
105
  },
106
106
  "publishConfig": {
107
107
  "access": "public",