@visactor/vseed 0.2.9 → 0.3.1

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 (396) hide show
  1. package/dist/cjs/index.cjs +1 -1
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/esm/builder/builder/builder.d.ts +154 -118
  4. package/dist/esm/pipeline/advanced/chart/pipeline/area.js +9 -8
  5. package/dist/esm/pipeline/advanced/chart/pipeline/area.js.map +1 -1
  6. package/dist/esm/pipeline/advanced/chart/pipeline/areaPercent.js +9 -8
  7. package/dist/esm/pipeline/advanced/chart/pipeline/areaPercent.js.map +1 -1
  8. package/dist/esm/pipeline/advanced/chart/pipeline/bar.js +9 -8
  9. package/dist/esm/pipeline/advanced/chart/pipeline/bar.js.map +1 -1
  10. package/dist/esm/pipeline/advanced/chart/pipeline/barParallel.js +9 -8
  11. package/dist/esm/pipeline/advanced/chart/pipeline/barParallel.js.map +1 -1
  12. package/dist/esm/pipeline/advanced/chart/pipeline/barPercent.js +9 -8
  13. package/dist/esm/pipeline/advanced/chart/pipeline/barPercent.js.map +1 -1
  14. package/dist/esm/pipeline/advanced/chart/pipeline/boxplot.js +19 -8
  15. package/dist/esm/pipeline/advanced/chart/pipeline/boxplot.js.map +1 -1
  16. package/dist/esm/pipeline/advanced/chart/pipeline/column.js +9 -8
  17. package/dist/esm/pipeline/advanced/chart/pipeline/column.js.map +1 -1
  18. package/dist/esm/pipeline/advanced/chart/pipeline/columnParallel.js +9 -8
  19. package/dist/esm/pipeline/advanced/chart/pipeline/columnParallel.js.map +1 -1
  20. package/dist/esm/pipeline/advanced/chart/pipeline/columnPercent.js +9 -8
  21. package/dist/esm/pipeline/advanced/chart/pipeline/columnPercent.js.map +1 -1
  22. package/dist/esm/pipeline/advanced/chart/pipeline/donut.js +9 -8
  23. package/dist/esm/pipeline/advanced/chart/pipeline/donut.js.map +1 -1
  24. package/dist/esm/pipeline/advanced/chart/pipeline/dualAxis.js +1 -6
  25. package/dist/esm/pipeline/advanced/chart/pipeline/dualAxis.js.map +1 -1
  26. package/dist/esm/pipeline/advanced/chart/pipeline/funnel.js +9 -8
  27. package/dist/esm/pipeline/advanced/chart/pipeline/funnel.js.map +1 -1
  28. package/dist/esm/pipeline/advanced/chart/pipeline/heatmap.js +9 -7
  29. package/dist/esm/pipeline/advanced/chart/pipeline/heatmap.js.map +1 -1
  30. package/dist/esm/pipeline/advanced/chart/pipeline/histogram.js +15 -8
  31. package/dist/esm/pipeline/advanced/chart/pipeline/histogram.js.map +1 -1
  32. package/dist/esm/pipeline/advanced/chart/pipeline/line.js +9 -8
  33. package/dist/esm/pipeline/advanced/chart/pipeline/line.js.map +1 -1
  34. package/dist/esm/pipeline/advanced/chart/pipeline/pie.js +9 -8
  35. package/dist/esm/pipeline/advanced/chart/pipeline/pie.js.map +1 -1
  36. package/dist/esm/pipeline/advanced/chart/pipeline/radar.js +9 -8
  37. package/dist/esm/pipeline/advanced/chart/pipeline/radar.js.map +1 -1
  38. package/dist/esm/pipeline/advanced/chart/pipeline/rose.js +9 -8
  39. package/dist/esm/pipeline/advanced/chart/pipeline/rose.js.map +1 -1
  40. package/dist/esm/pipeline/advanced/chart/pipeline/roseParallel.js +9 -8
  41. package/dist/esm/pipeline/advanced/chart/pipeline/roseParallel.js.map +1 -1
  42. package/dist/esm/pipeline/advanced/chart/pipeline/scatter.js +1 -6
  43. package/dist/esm/pipeline/advanced/chart/pipeline/scatter.js.map +1 -1
  44. package/dist/esm/pipeline/advanced/chart/pipes/config/dualAxis.js +0 -1
  45. package/dist/esm/pipeline/advanced/chart/pipes/config/dualAxis.js.map +1 -1
  46. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultDimensions.js +1 -2
  47. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultDimensions.js.map +1 -1
  48. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultMeasures.js +2 -4
  49. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultMeasures.js.map +1 -1
  50. package/dist/esm/pipeline/advanced/chart/pipes/dimensions/pickDimensionsForReshape.js +4 -4
  51. package/dist/esm/pipeline/advanced/chart/pipes/dimensions/pickDimensionsForReshape.js.map +1 -1
  52. package/dist/esm/pipeline/advanced/chart/pipes/encoding/bar.js +5 -7
  53. package/dist/esm/pipeline/advanced/chart/pipes/encoding/bar.js.map +1 -1
  54. package/dist/esm/pipeline/advanced/chart/pipes/encoding/boxplot.js +5 -7
  55. package/dist/esm/pipeline/advanced/chart/pipes/encoding/boxplot.js.map +1 -1
  56. package/dist/esm/pipeline/advanced/chart/pipes/encoding/column.js +5 -7
  57. package/dist/esm/pipeline/advanced/chart/pipes/encoding/column.js.map +1 -1
  58. package/dist/esm/pipeline/advanced/chart/pipes/encoding/dualAxis.js +5 -15
  59. package/dist/esm/pipeline/advanced/chart/pipes/encoding/dualAxis.js.map +1 -1
  60. package/dist/esm/pipeline/advanced/chart/pipes/encoding/funnel.js +5 -7
  61. package/dist/esm/pipeline/advanced/chart/pipes/encoding/funnel.js.map +1 -1
  62. package/dist/esm/pipeline/advanced/chart/pipes/encoding/heatmap.js +4 -6
  63. package/dist/esm/pipeline/advanced/chart/pipes/encoding/heatmap.js.map +1 -1
  64. package/dist/esm/pipeline/advanced/chart/pipes/encoding/histogram.js +2 -5
  65. package/dist/esm/pipeline/advanced/chart/pipes/encoding/histogram.js.map +1 -1
  66. package/dist/esm/pipeline/advanced/chart/pipes/encoding/line.js +7 -14
  67. package/dist/esm/pipeline/advanced/chart/pipes/encoding/line.js.map +1 -1
  68. package/dist/esm/pipeline/advanced/chart/pipes/encoding/pie.js +5 -7
  69. package/dist/esm/pipeline/advanced/chart/pipes/encoding/pie.js.map +1 -1
  70. package/dist/esm/pipeline/advanced/chart/pipes/encoding/radar.js +5 -7
  71. package/dist/esm/pipeline/advanced/chart/pipes/encoding/radar.js.map +1 -1
  72. package/dist/esm/pipeline/advanced/chart/pipes/encoding/rose.js +5 -7
  73. package/dist/esm/pipeline/advanced/chart/pipes/encoding/rose.js.map +1 -1
  74. package/dist/esm/pipeline/advanced/chart/pipes/encoding/scatter.js +2 -5
  75. package/dist/esm/pipeline/advanced/chart/pipes/encoding/scatter.js.map +1 -1
  76. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasures.d.ts +1 -1
  77. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasures.js +19 -50
  78. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasures.js.map +1 -1
  79. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.js +25 -118
  80. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.js.map +1 -1
  81. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.js +30 -115
  82. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.js.map +1 -1
  83. package/dist/esm/pipeline/advanced/chart/pipes/measures/index.d.ts +0 -1
  84. package/dist/esm/pipeline/advanced/chart/pipes/measures/index.js +1 -2
  85. package/dist/esm/pipeline/advanced/chart/pipes/measures/utils.d.ts +12 -1
  86. package/dist/esm/pipeline/advanced/chart/pipes/measures/utils.js +12 -1
  87. package/dist/esm/pipeline/advanced/chart/pipes/measures/utils.js.map +1 -1
  88. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js +6 -12
  89. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js.map +1 -1
  90. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js +25 -28
  91. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js.map +1 -1
  92. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.js +6 -11
  93. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.js.map +1 -1
  94. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithHistogramEncoding.js +4 -8
  95. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithHistogramEncoding.js.map +1 -1
  96. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.js +23 -35
  97. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.js.map +1 -1
  98. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithBoxplotEncoding.js +3 -8
  99. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithBoxplotEncoding.js.map +1 -1
  100. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js +21 -17
  101. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js.map +1 -1
  102. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithEncoding.js +1 -2
  103. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithEncoding.js.map +1 -1
  104. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithHistogramEncoding.js +4 -9
  105. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithHistogramEncoding.js.map +1 -1
  106. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.js +22 -27
  107. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.js.map +1 -1
  108. package/dist/esm/pipeline/advanced/table/pipes/default/defaultDimensions.js +3 -3
  109. package/dist/esm/pipeline/advanced/table/pipes/default/defaultDimensions.js.map +1 -1
  110. package/dist/esm/pipeline/advanced/table/pipes/default/defaultMeasureId.js +3 -2
  111. package/dist/esm/pipeline/advanced/table/pipes/default/defaultMeasureId.js.map +1 -1
  112. package/dist/esm/pipeline/advanced/table/pipes/default/defaultMeasures.js +2 -2
  113. package/dist/esm/pipeline/advanced/table/pipes/default/defaultMeasures.js.map +1 -1
  114. package/dist/esm/pipeline/advanced/table/pipes/encoding/pivotTable.js +5 -5
  115. package/dist/esm/pipeline/advanced/table/pipes/encoding/pivotTable.js.map +1 -1
  116. package/dist/esm/pipeline/advanced/table/pipes/reshape/reshapePivotTable.js +3 -5
  117. package/dist/esm/pipeline/advanced/table/pipes/reshape/reshapePivotTable.js.map +1 -1
  118. package/dist/esm/pipeline/spec/chart/pipeline/dualAxis.js +17 -45
  119. package/dist/esm/pipeline/spec/chart/pipeline/dualAxis.js.map +1 -1
  120. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPointOfDualAxis.js +3 -3
  121. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPointOfDualAxis.js.map +1 -1
  122. package/dist/esm/pipeline/spec/chart/pipes/axes/histogramXLinear.js +1 -1
  123. package/dist/esm/pipeline/spec/chart/pipes/axes/histogramXLinear.js.map +1 -1
  124. package/dist/esm/pipeline/spec/chart/pipes/axes/title/defaultTitleText.d.ts +2 -2
  125. package/dist/esm/pipeline/spec/chart/pipes/axes/title/defaultTitleText.js +2 -6
  126. package/dist/esm/pipeline/spec/chart/pipes/axes/title/defaultTitleText.js.map +1 -1
  127. package/dist/esm/pipeline/spec/chart/pipes/axes/xBand.js +1 -1
  128. package/dist/esm/pipeline/spec/chart/pipes/axes/xBand.js.map +1 -1
  129. package/dist/esm/pipeline/spec/chart/pipes/axes/xLinear.js +1 -1
  130. package/dist/esm/pipeline/spec/chart/pipes/axes/xLinear.js.map +1 -1
  131. package/dist/esm/pipeline/spec/chart/pipes/axes/yBand.js +1 -1
  132. package/dist/esm/pipeline/spec/chart/pipes/axes/yBand.js.map +1 -1
  133. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinear.js +1 -1
  134. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinear.js.map +1 -1
  135. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearPrimary.js +16 -13
  136. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearPrimary.js.map +1 -1
  137. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearSecondary.js +10 -13
  138. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearSecondary.js.map +1 -1
  139. package/dist/esm/pipeline/spec/chart/pipes/color/colorAdapter.js +1 -3
  140. package/dist/esm/pipeline/spec/chart/pipes/color/colorAdapter.js.map +1 -1
  141. package/dist/esm/pipeline/spec/chart/pipes/color/linearColorForDualAxis.js +4 -12
  142. package/dist/esm/pipeline/spec/chart/pipes/color/linearColorForDualAxis.js.map +1 -1
  143. package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetDualAxis.d.ts +2 -3
  144. package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetDualAxis.js +38 -78
  145. package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetDualAxis.js.map +1 -1
  146. package/dist/esm/pipeline/spec/chart/pipes/dataset/index.d.ts +1 -1
  147. package/dist/esm/pipeline/spec/chart/pipes/dataset/index.js +2 -2
  148. package/dist/esm/pipeline/spec/chart/pipes/dual/dualChartType.d.ts +2 -2
  149. package/dist/esm/pipeline/spec/chart/pipes/dual/dualChartType.js +16 -75
  150. package/dist/esm/pipeline/spec/chart/pipes/dual/dualChartType.js.map +1 -1
  151. package/dist/esm/pipeline/spec/chart/pipes/dual/index.d.ts +1 -1
  152. package/dist/esm/pipeline/spec/chart/pipes/dual/index.js +2 -2
  153. package/dist/esm/pipeline/spec/chart/pipes/init/dualAxis.d.ts +2 -3
  154. package/dist/esm/pipeline/spec/chart/pipes/init/dualAxis.js +16 -32
  155. package/dist/esm/pipeline/spec/chart/pipes/init/dualAxis.js.map +1 -1
  156. package/dist/esm/pipeline/spec/chart/pipes/init/index.d.ts +1 -1
  157. package/dist/esm/pipeline/spec/chart/pipes/init/index.js +2 -2
  158. package/dist/esm/pipeline/spec/chart/pipes/label/index.d.ts +1 -1
  159. package/dist/esm/pipeline/spec/chart/pipes/label/index.js +2 -2
  160. package/dist/esm/pipeline/spec/chart/pipes/label/label.js.map +1 -1
  161. package/dist/esm/pipeline/spec/chart/pipes/label/labelBoxPlot.js.map +1 -1
  162. package/dist/esm/pipeline/spec/chart/pipes/label/labelDualAxis.d.ts +2 -3
  163. package/dist/esm/pipeline/spec/chart/pipes/label/labelDualAxis.js +14 -30
  164. package/dist/esm/pipeline/spec/chart/pipes/label/labelDualAxis.js.map +1 -1
  165. package/dist/esm/pipeline/spec/chart/pipes/label/labelPie.js.map +1 -1
  166. package/dist/esm/pipeline/spec/chart/pipes/label/labelScatter.js.map +1 -1
  167. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotIndicators.js +5 -5
  168. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotIndicators.js.map +1 -1
  169. package/dist/esm/pipeline/spec/chart/pipes/regressionLine/ecdfRegressionLine.js +1 -1
  170. package/dist/esm/pipeline/spec/chart/pipes/regressionLine/ecdfRegressionLine.js.map +1 -1
  171. package/dist/esm/pipeline/spec/chart/pipes/regressionLine/kdeRegressionLine.js +1 -1
  172. package/dist/esm/pipeline/spec/chart/pipes/regressionLine/kdeRegressionLine.js.map +1 -1
  173. package/dist/esm/pipeline/spec/chart/pipes/series/series.d.ts +3 -3
  174. package/dist/esm/pipeline/spec/chart/pipes/series/series.js +45 -17
  175. package/dist/esm/pipeline/spec/chart/pipes/series/series.js.map +1 -1
  176. package/dist/esm/pipeline/spec/chart/pipes/tooltip/index.d.ts +1 -1
  177. package/dist/esm/pipeline/spec/chart/pipes/tooltip/index.js +2 -2
  178. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.d.ts +2 -2
  179. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js +5 -5
  180. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js.map +1 -1
  181. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.js +3 -3
  182. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.js.map +1 -1
  183. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.d.ts +2 -3
  184. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js +28 -62
  185. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js.map +1 -1
  186. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.d.ts +1 -1
  187. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js +4 -4
  188. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js.map +1 -1
  189. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHistogram.js +1 -1
  190. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHistogram.js.map +1 -1
  191. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.d.ts +1 -1
  192. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js +4 -4
  193. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js.map +1 -1
  194. package/dist/esm/pipeline/spec/table/pipes/columns/dimensionsToColumns.js +2 -2
  195. package/dist/esm/pipeline/spec/table/pipes/columns/dimensionsToColumns.js.map +1 -1
  196. package/dist/esm/pipeline/spec/table/pipes/columns/measuresToColumns.js +2 -2
  197. package/dist/esm/pipeline/spec/table/pipes/columns/measuresToColumns.js.map +1 -1
  198. package/dist/esm/pipeline/spec/table/pipes/columns/pivotColumns.js +1 -1
  199. package/dist/esm/pipeline/spec/table/pipes/columns/pivotColumns.js.map +1 -1
  200. package/dist/esm/pipeline/spec/table/pipes/indicators/pivotDataConfig.js +1 -1
  201. package/dist/esm/pipeline/spec/table/pipes/indicators/pivotDataConfig.js.map +1 -1
  202. package/dist/esm/pipeline/spec/table/pipes/indicators/pivotIndicators.js +4 -4
  203. package/dist/esm/pipeline/spec/table/pipes/indicators/pivotIndicators.js.map +1 -1
  204. package/dist/esm/pipeline/spec/table/pipes/rows/pivotRows.js +3 -3
  205. package/dist/esm/pipeline/spec/table/pipes/rows/pivotRows.js.map +1 -1
  206. package/dist/esm/pipeline/utils/chatType.d.ts +9 -0
  207. package/dist/esm/pipeline/utils/chatType.js +33 -21
  208. package/dist/esm/pipeline/utils/chatType.js.map +1 -1
  209. package/dist/esm/pipeline/utils/measures/find.d.ts +2 -1
  210. package/dist/esm/pipeline/utils/measures/find.js +3 -13
  211. package/dist/esm/pipeline/utils/measures/find.js.map +1 -1
  212. package/dist/esm/theme/dark/dark.js +0 -4
  213. package/dist/esm/theme/dark/dark.js.map +1 -1
  214. package/dist/esm/theme/light/light.js +0 -4
  215. package/dist/esm/theme/light/light.js.map +1 -1
  216. package/dist/esm/types/advancedVSeed.d.ts +137 -68
  217. package/dist/esm/types/advancedVSeed.js +8 -6
  218. package/dist/esm/types/advancedVSeed.js.map +1 -1
  219. package/dist/esm/types/chartType/area/area.d.ts +3 -5
  220. package/dist/esm/types/chartType/area/zArea.d.ts +11 -2
  221. package/dist/esm/types/chartType/area/zArea.js +2 -2
  222. package/dist/esm/types/chartType/area/zArea.js.map +1 -1
  223. package/dist/esm/types/chartType/areaPercent/areaPercent.d.ts +3 -5
  224. package/dist/esm/types/chartType/areaPercent/zAreaPercent.d.ts +11 -2
  225. package/dist/esm/types/chartType/areaPercent/zAreaPercent.js +2 -2
  226. package/dist/esm/types/chartType/areaPercent/zAreaPercent.js.map +1 -1
  227. package/dist/esm/types/chartType/bar/bar.d.ts +4 -6
  228. package/dist/esm/types/chartType/bar/zBar.d.ts +11 -2
  229. package/dist/esm/types/chartType/bar/zBar.js +2 -2
  230. package/dist/esm/types/chartType/bar/zBar.js.map +1 -1
  231. package/dist/esm/types/chartType/barParallel/barParallel.d.ts +3 -5
  232. package/dist/esm/types/chartType/barParallel/zBarParallel.d.ts +11 -2
  233. package/dist/esm/types/chartType/barParallel/zBarParallel.js +2 -2
  234. package/dist/esm/types/chartType/barParallel/zBarParallel.js.map +1 -1
  235. package/dist/esm/types/chartType/barPercent/barPercent.d.ts +3 -3
  236. package/dist/esm/types/chartType/barPercent/zBarPercent.d.ts +11 -2
  237. package/dist/esm/types/chartType/barPercent/zBarPercent.js +2 -2
  238. package/dist/esm/types/chartType/barPercent/zBarPercent.js.map +1 -1
  239. package/dist/esm/types/chartType/boxPlot/boxPlot.d.ts +3 -5
  240. package/dist/esm/types/chartType/boxPlot/zBoxPlot.d.ts +11 -2
  241. package/dist/esm/types/chartType/boxPlot/zBoxPlot.js +2 -2
  242. package/dist/esm/types/chartType/boxPlot/zBoxPlot.js.map +1 -1
  243. package/dist/esm/types/chartType/column/column.d.ts +3 -5
  244. package/dist/esm/types/chartType/column/zColumn.d.ts +11 -2
  245. package/dist/esm/types/chartType/column/zColumn.js +2 -2
  246. package/dist/esm/types/chartType/column/zColumn.js.map +1 -1
  247. package/dist/esm/types/chartType/columnParallel/columnParallel.d.ts +4 -6
  248. package/dist/esm/types/chartType/columnParallel/zColumnParallel.d.ts +11 -2
  249. package/dist/esm/types/chartType/columnParallel/zColumnParallel.js +2 -2
  250. package/dist/esm/types/chartType/columnParallel/zColumnParallel.js.map +1 -1
  251. package/dist/esm/types/chartType/columnPercent/columnPercent.d.ts +3 -5
  252. package/dist/esm/types/chartType/columnPercent/zColumnPercent.d.ts +11 -2
  253. package/dist/esm/types/chartType/columnPercent/zColumnPercent.js +2 -2
  254. package/dist/esm/types/chartType/columnPercent/zColumnPercent.js.map +1 -1
  255. package/dist/esm/types/chartType/donut/donut.d.ts +3 -5
  256. package/dist/esm/types/chartType/donut/zDonut.d.ts +11 -2
  257. package/dist/esm/types/chartType/donut/zDonut.js +2 -2
  258. package/dist/esm/types/chartType/donut/zDonut.js.map +1 -1
  259. package/dist/esm/types/chartType/dualAxis/dualAxis.d.ts +7 -88
  260. package/dist/esm/types/chartType/dualAxis/zDualAxis.d.ts +9 -358
  261. package/dist/esm/types/chartType/dualAxis/zDualAxis.js +2 -4
  262. package/dist/esm/types/chartType/dualAxis/zDualAxis.js.map +1 -1
  263. package/dist/esm/types/chartType/funnel/funnel.d.ts +3 -5
  264. package/dist/esm/types/chartType/funnel/zFunnel.d.ts +11 -2
  265. package/dist/esm/types/chartType/funnel/zFunnel.js +2 -2
  266. package/dist/esm/types/chartType/funnel/zFunnel.js.map +1 -1
  267. package/dist/esm/types/chartType/heatmap/heatmap.d.ts +4 -6
  268. package/dist/esm/types/chartType/heatmap/zHeatmap.d.ts +11 -2
  269. package/dist/esm/types/chartType/heatmap/zHeatmap.js +2 -2
  270. package/dist/esm/types/chartType/heatmap/zHeatmap.js.map +1 -1
  271. package/dist/esm/types/chartType/histogram/histogram.d.ts +3 -5
  272. package/dist/esm/types/chartType/histogram/zHistogram.d.ts +11 -2
  273. package/dist/esm/types/chartType/histogram/zHistogram.js +2 -2
  274. package/dist/esm/types/chartType/histogram/zHistogram.js.map +1 -1
  275. package/dist/esm/types/chartType/line/line.d.ts +3 -4
  276. package/dist/esm/types/chartType/line/zLine.d.ts +11 -2
  277. package/dist/esm/types/chartType/line/zLine.js +2 -2
  278. package/dist/esm/types/chartType/line/zLine.js.map +1 -1
  279. package/dist/esm/types/chartType/pie/pie.d.ts +3 -5
  280. package/dist/esm/types/chartType/pie/zPie.d.ts +11 -2
  281. package/dist/esm/types/chartType/pie/zPie.js +2 -2
  282. package/dist/esm/types/chartType/pie/zPie.js.map +1 -1
  283. package/dist/esm/types/chartType/pivotTable/pivotTable.d.ts +4 -4
  284. package/dist/esm/types/chartType/pivotTable/zPivotTable.d.ts +9 -0
  285. package/dist/esm/types/chartType/radar/radar.d.ts +4 -6
  286. package/dist/esm/types/chartType/radar/zRadar.d.ts +11 -2
  287. package/dist/esm/types/chartType/radar/zRadar.js +2 -2
  288. package/dist/esm/types/chartType/radar/zRadar.js.map +1 -1
  289. package/dist/esm/types/chartType/rose/rose.d.ts +4 -6
  290. package/dist/esm/types/chartType/rose/zRose.d.ts +11 -2
  291. package/dist/esm/types/chartType/rose/zRose.js +2 -2
  292. package/dist/esm/types/chartType/rose/zRose.js.map +1 -1
  293. package/dist/esm/types/chartType/roseParallel/roseParallel.d.ts +4 -6
  294. package/dist/esm/types/chartType/roseParallel/zRoseParallel.d.ts +11 -2
  295. package/dist/esm/types/chartType/roseParallel/zRoseParallel.js +2 -2
  296. package/dist/esm/types/chartType/roseParallel/zRoseParallel.js.map +1 -1
  297. package/dist/esm/types/chartType/scatter/scatter.d.ts +5 -75
  298. package/dist/esm/types/chartType/scatter/zScatter.d.ts +10 -310
  299. package/dist/esm/types/chartType/scatter/zScatter.js +2 -3
  300. package/dist/esm/types/chartType/scatter/zScatter.js.map +1 -1
  301. package/dist/esm/types/chartType/table/zTable.d.ts +9 -0
  302. package/dist/esm/types/properties/chartType/index.d.ts +0 -2
  303. package/dist/esm/types/properties/chartType/index.js +1 -2
  304. package/dist/esm/types/properties/config/config.d.ts +0 -31
  305. package/dist/esm/types/properties/config/dualAxis.d.ts +7 -31
  306. package/dist/esm/types/properties/config/dualAxis.js +0 -2
  307. package/dist/esm/types/properties/config/dualAxis.js.map +1 -1
  308. package/dist/esm/types/properties/dimensions/areaDimension.d.ts +3 -0
  309. package/dist/esm/types/properties/dimensions/barDimension.d.ts +16 -0
  310. package/dist/esm/types/properties/dimensions/{dimensions.d.ts → baseDimension.d.ts} +13 -14
  311. package/dist/esm/types/properties/dimensions/boxPlotDimension.d.ts +13 -0
  312. package/dist/esm/types/properties/dimensions/columnDimension.d.ts +19 -0
  313. package/dist/esm/types/properties/dimensions/columnDimension.js +0 -0
  314. package/dist/esm/types/properties/dimensions/donutDimension.d.ts +2 -0
  315. package/dist/esm/types/properties/dimensions/donutDimension.js +0 -0
  316. package/dist/esm/types/properties/dimensions/dualAxisDimension.d.ts +2 -0
  317. package/dist/esm/types/properties/dimensions/dualAxisDimension.js +0 -0
  318. package/dist/esm/types/properties/dimensions/funnelDimension.d.ts +2 -0
  319. package/dist/esm/types/properties/dimensions/funnelDimension.js +0 -0
  320. package/dist/esm/types/properties/dimensions/heatmapDimension.d.ts +13 -0
  321. package/dist/esm/types/properties/dimensions/heatmapDimension.js +0 -0
  322. package/dist/esm/types/properties/dimensions/histogramDimension.d.ts +13 -0
  323. package/dist/esm/types/properties/dimensions/histogramDimension.js +0 -0
  324. package/dist/esm/types/properties/dimensions/index.d.ts +16 -1
  325. package/dist/esm/types/properties/dimensions/lineDimension.d.ts +2 -0
  326. package/dist/esm/types/properties/dimensions/lineDimension.js +0 -0
  327. package/dist/esm/types/properties/dimensions/pieDimension.d.ts +13 -0
  328. package/dist/esm/types/properties/dimensions/pieDimension.js +0 -0
  329. package/dist/esm/types/properties/dimensions/radarDimension.d.ts +14 -0
  330. package/dist/esm/types/properties/dimensions/radarDimension.js +0 -0
  331. package/dist/esm/types/properties/dimensions/roseDimension.d.ts +3 -0
  332. package/dist/esm/types/properties/dimensions/roseDimension.js +0 -0
  333. package/dist/esm/types/properties/dimensions/scatterDimension.d.ts +13 -0
  334. package/dist/esm/types/properties/dimensions/scatterDimension.js +0 -0
  335. package/dist/esm/types/properties/dimensions/tableDimension.d.ts +18 -0
  336. package/dist/esm/types/properties/dimensions/tableDimension.js +0 -0
  337. package/dist/esm/types/properties/dimensions/zDimensions.d.ts +1 -1
  338. package/dist/esm/types/properties/dimensions/zDimensions.js.map +1 -1
  339. package/dist/esm/types/properties/measures/areaMeasure.d.ts +2 -0
  340. package/dist/esm/types/properties/measures/areaMeasure.js +0 -0
  341. package/dist/esm/types/properties/measures/barMeasure.d.ts +14 -0
  342. package/dist/esm/types/properties/measures/barMeasure.js +0 -0
  343. package/dist/esm/types/properties/measures/{measures.d.ts → baseMeasure.d.ts} +29 -13
  344. package/dist/esm/types/properties/measures/baseMeasure.js +0 -0
  345. package/dist/esm/types/properties/measures/boxPlotMeasure.d.ts +18 -0
  346. package/dist/esm/types/properties/measures/boxPlotMeasure.js +0 -0
  347. package/dist/esm/types/properties/measures/columnMeasure.d.ts +14 -0
  348. package/dist/esm/types/properties/measures/columnMeasure.js +0 -0
  349. package/dist/esm/types/properties/measures/dualAxisMeasure.d.ts +23 -0
  350. package/dist/esm/types/properties/measures/dualAxisMeasure.js +0 -0
  351. package/dist/esm/types/properties/measures/funnelMeasure.d.ts +11 -0
  352. package/dist/esm/types/properties/measures/funnelMeasure.js +0 -0
  353. package/dist/esm/types/properties/measures/heatmapMeasure.d.ts +10 -0
  354. package/dist/esm/types/properties/measures/heatmapMeasure.js +0 -0
  355. package/dist/esm/types/properties/measures/histogramMeasure.d.ts +13 -0
  356. package/dist/esm/types/properties/measures/histogramMeasure.js +0 -0
  357. package/dist/esm/types/properties/measures/index.d.ts +15 -4
  358. package/dist/esm/types/properties/measures/index.js +0 -1
  359. package/dist/esm/types/properties/measures/lineMeasure.d.ts +2 -0
  360. package/dist/esm/types/properties/measures/lineMeasure.js +0 -0
  361. package/dist/esm/types/properties/measures/measureTree.d.ts +17 -0
  362. package/dist/esm/types/properties/measures/measureTree.js +0 -0
  363. package/dist/esm/types/properties/measures/pieMeasure.d.ts +12 -0
  364. package/dist/esm/types/properties/measures/pieMeasure.js +0 -0
  365. package/dist/esm/types/properties/measures/radarMeasure.d.ts +13 -0
  366. package/dist/esm/types/properties/measures/radarMeasure.js +0 -0
  367. package/dist/esm/types/properties/measures/scatterMeasure.d.ts +13 -0
  368. package/dist/esm/types/properties/measures/scatterMeasure.js +0 -0
  369. package/dist/esm/types/properties/measures/tableMeasure.d.ts +8 -0
  370. package/dist/esm/types/properties/measures/tableMeasure.js +0 -0
  371. package/dist/esm/types/properties/measures/zDualMeasures.d.ts +154 -612
  372. package/dist/esm/types/properties/measures/zDualMeasures.js +15 -10
  373. package/dist/esm/types/properties/measures/zDualMeasures.js.map +1 -1
  374. package/dist/esm/types/properties/measures/zMeasures.d.ts +28 -1
  375. package/dist/esm/types/properties/measures/zMeasures.js +10 -1
  376. package/dist/esm/types/properties/measures/zMeasures.js.map +1 -1
  377. package/dist/esm/types/properties/theme/customTheme.d.ts +0 -62
  378. package/dist/esm/types/zVseed.d.ts +235 -704
  379. package/dist/umd/index.js +854 -1343
  380. package/dist/umd/index.js.map +1 -1
  381. package/package.json +14 -2
  382. package/dist/esm/pipeline/advanced/chart/pipes/measures/pickMeasuresForReshape.d.ts +0 -2
  383. package/dist/esm/pipeline/advanced/chart/pipes/measures/pickMeasuresForReshape.js +0 -14
  384. package/dist/esm/pipeline/advanced/chart/pipes/measures/pickMeasuresForReshape.js.map +0 -1
  385. package/dist/esm/types/properties/chartType/dualChartType.d.ts +0 -18
  386. package/dist/esm/types/properties/chartType/dualChartType.js +0 -20
  387. package/dist/esm/types/properties/chartType/dualChartType.js.map +0 -1
  388. package/dist/esm/types/properties/measures/dualMeasures.d.ts +0 -7
  389. package/dist/esm/types/properties/measures/scatterMeasures.d.ts +0 -7
  390. package/dist/esm/types/properties/measures/zScatterMeasures.d.ts +0 -619
  391. package/dist/esm/types/properties/measures/zScatterMeasures.js +0 -17
  392. package/dist/esm/types/properties/measures/zScatterMeasures.js.map +0 -1
  393. /package/dist/esm/types/properties/dimensions/{dimensions.js → areaDimension.js} +0 -0
  394. /package/dist/esm/types/properties/{measures/dualMeasures.js → dimensions/barDimension.js} +0 -0
  395. /package/dist/esm/types/properties/{measures/measures.js → dimensions/baseDimension.js} +0 -0
  396. /package/dist/esm/types/properties/{measures/scatterMeasures.js → dimensions/boxPlotDimension.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/measures/buildMeasures.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasures.ts"],"sourcesContent":["import type { AdvancedPipe, MeasureGroup, Measures, MeasureTree, VSeed } from 'src/types'\nimport { isMeasureTreeWithChildren, isMeasureTreeWithParentId, normalizeMeasureTree } from './utils'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\nimport { isValid } from '@visactor/vutils'\n\nexport const buildMeasures: AdvancedPipe = (advancedVSeed) => {\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\n advancedVSeed.measures = normalizeMeasureTree(advancedVSeed.measures as MeasureTree)\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(advancedVSeed.measures)) {\n advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 透视图表, 自动生成指标树\n */\n if (isPivotChart(advancedVSeed as VSeed)) {\n advancedVSeed.measures = basicMeasuresToMeasureTree(advancedVSeed.measures as Measures)\n }\n\n return advancedVSeed\n}\n\nconst generateMeasuresByParentId = (measures: Measures): MeasureTree => {\n const measureTree: MeasureGroup[] = []\n\n measures.forEach((measure) => {\n const parent = measureTree.find((item) => item.id === measure.parentId)\n if (parent && 'children' in parent) {\n parent.children = parent.children || []\n\n if (parent.children.length > 0) {\n parent.alias += `-${measure.alias ?? measure.id}`\n }\n\n parent.children.push(measure)\n } else if (isValid(measure.parentId)) {\n measureTree.push({\n id: measure.parentId,\n alias: measure.alias ?? measure.id,\n children: [measure],\n })\n } else {\n measureTree.push({\n id: DEFAULT_PARENT_ID,\n alias: measure.alias ?? measure.id, // 当分组只有单个指标的时候,分组alias 设置为该指标的别名或者id\n children: [measure],\n })\n }\n })\n\n return measureTree\n}\n\nconst basicMeasuresToMeasureTree = (measures: Measures): MeasureTree => {\n const id = measures.map((item) => item.id).join('-')\n const alias = measures.map((item) => item.alias || item.id).join('-')\n return [\n {\n id,\n alias,\n children: measures,\n },\n ]\n}\n"],"names":["buildMeasures","advancedVSeed","isMeasureTreeWithChildren","normalizeMeasureTree","isMeasureTreeWithParentId","generateMeasuresByParentId","isPivotChart","basicMeasuresToMeasureTree","measures","measureTree","measure","parent","item","isValid","DEFAULT_PARENT_ID","id","alias"],"mappings":";;;;AAMO,MAAMA,gBAA8B,CAACC;IAE1C,IAAIC,0BAA0BD,cAAc,QAAQ,GAAG;QACrDA,cAAc,QAAQ,GAAGE,qBAAqBF,cAAc,QAAQ;QACpE,OAAOA;IACT;IAEA,IAAIG,0BAA0BH,cAAc,QAAQ,GAAG;QACrDA,cAAc,QAAQ,GAAGI,2BAA2BJ,cAAc,QAAQ;QAC1E,OAAOA;IACT;IAKA,IAAIK,aAAaL,gBACfA,cAAc,QAAQ,GAAGM,2BAA2BN,cAAc,QAAQ;IAG5E,OAAOA;AACT;AAEA,MAAMI,6BAA6B,CAACG;IAClC,MAAMC,cAA8B,EAAE;IAEtCD,SAAS,OAAO,CAAC,CAACE;QAChB,MAAMC,SAASF,YAAY,IAAI,CAAC,CAACG,OAASA,KAAK,EAAE,KAAKF,QAAQ,QAAQ;QACtE,IAAIC,UAAU,cAAcA,QAAQ;YAClCA,OAAO,QAAQ,GAAGA,OAAO,QAAQ,IAAI,EAAE;YAEvC,IAAIA,OAAO,QAAQ,CAAC,MAAM,GAAG,GAC3BA,OAAO,KAAK,IAAI,CAAC,CAAC,EAAED,QAAQ,KAAK,IAAIA,QAAQ,EAAE,EAAE;YAGnDC,OAAO,QAAQ,CAAC,IAAI,CAACD;QACvB,OAAO,IAAIG,QAAQH,QAAQ,QAAQ,GACjCD,YAAY,IAAI,CAAC;YACf,IAAIC,QAAQ,QAAQ;YACpB,OAAOA,QAAQ,KAAK,IAAIA,QAAQ,EAAE;YAClC,UAAU;gBAACA;aAAQ;QACrB;aAEAD,YAAY,IAAI,CAAC;YACf,IAAIK;YACJ,OAAOJ,QAAQ,KAAK,IAAIA,QAAQ,EAAE;YAClC,UAAU;gBAACA;aAAQ;QACrB;IAEJ;IAEA,OAAOD;AACT;AAEA,MAAMF,6BAA6B,CAACC;IAClC,MAAMO,KAAKP,SAAS,GAAG,CAAC,CAACI,OAASA,KAAK,EAAE,EAAE,IAAI,CAAC;IAChD,MAAMI,QAAQR,SAAS,GAAG,CAAC,CAACI,OAASA,KAAK,KAAK,IAAIA,KAAK,EAAE,EAAE,IAAI,CAAC;IACjE,OAAO;QACL;YACEG;YACAC;YACA,UAAUR;QACZ;KACD;AACH"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/measures/buildMeasures.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasures.ts"],"sourcesContent":["import type { AdvancedPipe, MeasureEncoding, Measures } from 'src/types'\n\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\nimport { ensureParentIdInitialized, isCommonMeasureEncoding } from './utils'\n\nexport const buildMeasures = (encodingKeys: string[]): AdvancedPipe => {\n return (advancedVSeed) => {\n const { measures = [] } = advancedVSeed\n const measuresByView = {} as { [key: string]: Measures }\n const parentIds: string[] = []\n\n for (let index = 0; index < measures.length; index++) {\n const item = measures[index]\n const encoding = item.encoding\n const parentId = item.parentId || DEFAULT_PARENT_ID\n\n const isOtherEncoding = item.encoding && isCommonMeasureEncoding(encoding as MeasureEncoding)\n\n ensureParentIdInitialized(parentId, measuresByView, parentIds)\n\n if (encodingKeys.includes(encoding as string)) {\n measuresByView[parentId].push(item)\n } else if (!isOtherEncoding) {\n item.encoding = encodingKeys[0] as MeasureEncoding\n measuresByView[parentId].push(item)\n }\n }\n\n advancedVSeed.reshapeMeasures = parentIds.map((pid) => measuresByView[pid]).filter((m) => m.length > 0)\n\n return advancedVSeed\n }\n}\n"],"names":["buildMeasures","encodingKeys","advancedVSeed","measures","measuresByView","parentIds","index","item","encoding","parentId","DEFAULT_PARENT_ID","isOtherEncoding","isCommonMeasureEncoding","ensureParentIdInitialized","pid","m"],"mappings":";;AAKO,MAAMA,gBAAgB,CAACC,eACrB,CAACC;QACN,MAAM,EAAEC,WAAW,EAAE,EAAE,GAAGD;QAC1B,MAAME,iBAAiB,CAAC;QACxB,MAAMC,YAAsB,EAAE;QAE9B,IAAK,IAAIC,QAAQ,GAAGA,QAAQH,SAAS,MAAM,EAAEG,QAAS;YACpD,MAAMC,OAAOJ,QAAQ,CAACG,MAAM;YAC5B,MAAME,WAAWD,KAAK,QAAQ;YAC9B,MAAME,WAAWF,KAAK,QAAQ,IAAIG;YAElC,MAAMC,kBAAkBJ,KAAK,QAAQ,IAAIK,wBAAwBJ;YAEjEK,0BAA0BJ,UAAUL,gBAAgBC;YAEpD,IAAIJ,aAAa,QAAQ,CAACO,WACxBJ,cAAc,CAACK,SAAS,CAAC,IAAI,CAACF;iBACzB,IAAI,CAACI,iBAAiB;gBAC3BJ,KAAK,QAAQ,GAAGN,YAAY,CAAC,EAAE;gBAC/BG,cAAc,CAACK,SAAS,CAAC,IAAI,CAACF;YAChC;QACF;QAEAL,cAAc,eAAe,GAAGG,UAAU,GAAG,CAAC,CAACS,MAAQV,cAAc,CAACU,IAAI,EAAE,MAAM,CAAC,CAACC,IAAMA,EAAE,MAAM,GAAG;QAErG,OAAOb;IACT"}
@@ -1,126 +1,33 @@
1
- import { isMeasureTreeWithChildren, isMeasureTreeWithParentId } from "./utils.js";
2
- import { clone } from "remeda";
3
1
  import { DEFAULT_PARENT_ID } from "../../../../utils/constant.js";
4
- const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
5
- const { vseed } = context;
6
- if (isMeasureTreeWithChildren(advancedVSeed.measures)) return advancedVSeed;
7
- if (isMeasureTreeWithParentId(advancedVSeed.measures)) {
8
- advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures);
9
- return advancedVSeed;
10
- }
11
- if (vseed.dualMeasures) {
12
- advancedVSeed.measures = dualMeasuresToMeasureTree(clone(vseed.dualMeasures));
13
- return advancedVSeed;
14
- }
15
- const { dualMeasures, encodedMeasures } = basicMeasuresToDualMeasures(advancedVSeed.measures || []);
16
- advancedVSeed.measures = dualMeasuresToMeasureTree(dualMeasures);
17
- if (encodedMeasures.length) encodedMeasures.forEach((m)=>{
18
- advancedVSeed.measures.push(m);
19
- });
20
- return advancedVSeed;
21
- };
22
- const basicMeasuresToDualMeasures = (basicMeasures)=>{
23
- const primaryMeasures = [];
24
- const secondaryMeasures = [];
25
- const encodedMeasures = [];
26
- for(let index = 0; index < basicMeasures.length; index++){
27
- const item = basicMeasures[index];
2
+ import { ensureParentIdInitialized, isCommonMeasureEncoding } from "./utils.js";
3
+ import { DEFAULT_DUAL_CHART_TYPE, isDualAxisChartType } from "../../../../utils/chatType.js";
4
+ const buildMeasuresForDualAxis = (advancedVSeed)=>{
5
+ const { measures = [] } = advancedVSeed;
6
+ const measuresByView = {};
7
+ const parentIds = [];
8
+ for(let index = 0; index < measures.length; index++){
9
+ const item = measures[index];
28
10
  const encoding = item.encoding;
11
+ const parentId = item.parentId || DEFAULT_PARENT_ID;
29
12
  const isPrimaryYAxis = 'primaryYAxis' === encoding;
30
13
  const isSecondaryYAxis = 'secondaryYAxis' === encoding;
31
- const isOtherEncoding = item.encoding && [
32
- 'color',
33
- 'label',
34
- 'tooltip',
35
- 'detail'
36
- ].includes(item.encoding);
37
- if (isPrimaryYAxis) primaryMeasures.push(item);
38
- else if (isSecondaryYAxis) secondaryMeasures.push(item);
39
- else if (isOtherEncoding) encodedMeasures.push(item);
40
- else if (0 === index) primaryMeasures.push(item);
41
- else secondaryMeasures.push(item);
42
- }
43
- return {
44
- dualMeasures: [
45
- {
46
- id: 'dualMeasures',
47
- primaryMeasures,
48
- secondaryMeasures
49
- }
50
- ],
51
- encodedMeasures
52
- };
53
- };
54
- const dualMeasuresToMeasureTree = (dualMeasures)=>{
55
- const measureTree = dualMeasures.map((item, index)=>{
56
- const { id, primaryMeasures, secondaryMeasures } = item;
57
- const groupChildren = [];
58
- let groupId = `${id}-`;
59
- if (primaryMeasures) {
60
- const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [
61
- primaryMeasures
62
- ];
63
- const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
64
- groupId += alias;
65
- groupChildren.push({
66
- id: `${index}-primary`,
67
- alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
68
- children: arrPrimaryMeasures
69
- });
70
- }
71
- if (secondaryMeasures) {
72
- const arrSecondaryMeasures = Array.isArray(secondaryMeasures) ? secondaryMeasures : [
73
- secondaryMeasures
74
- ];
75
- const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
76
- groupId += alias;
77
- groupChildren.push({
78
- id: `${index}-secondary`,
79
- alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
80
- children: arrSecondaryMeasures
81
- });
14
+ const isOtherEncoding = item.encoding && isCommonMeasureEncoding(encoding);
15
+ ensureParentIdInitialized(parentId, measuresByView, parentIds);
16
+ if (isPrimaryYAxis) {
17
+ measuresByView[parentId].push(item);
18
+ if (!isDualAxisChartType(item.chartType)) item.chartType = DEFAULT_DUAL_CHART_TYPE.primary;
19
+ } else if (isSecondaryYAxis) {
20
+ measuresByView[parentId].push(item);
21
+ if (!isDualAxisChartType(item.chartType)) item.chartType = DEFAULT_DUAL_CHART_TYPE.secondary;
22
+ } else if (!isOtherEncoding) {
23
+ const primaryCount = measuresByView[parentId].filter((m)=>'primaryYAxis' === m.encoding).length;
24
+ item.encoding = 0 === primaryCount ? 'primaryYAxis' : 'secondaryYAxis';
25
+ if (!isDualAxisChartType(item.chartType)) item.chartType = 'primaryYAxis' === item.encoding ? DEFAULT_DUAL_CHART_TYPE.primary : DEFAULT_DUAL_CHART_TYPE.secondary;
26
+ measuresByView[parentId].push(item);
82
27
  }
83
- return {
84
- id: groupId,
85
- alias: groupId,
86
- children: groupChildren
87
- };
88
- });
89
- if (1 === dualMeasures.length) return measureTree[0].children || [];
90
- return measureTree;
91
- };
92
- const generateMeasuresByParentId = (measures)=>{
93
- const dualMeasures = [];
94
- const encodedMeasures = [];
95
- measures.forEach((item)=>{
96
- const id = item.parentId || DEFAULT_PARENT_ID;
97
- if (!dualMeasures.find((d)=>d.id === id)) dualMeasures.push({
98
- id,
99
- primaryMeasures: [],
100
- secondaryMeasures: []
101
- });
102
- const dualChart = dualMeasures.find((d)=>d.id === id);
103
- if (!dualChart || !Array.isArray(dualChart.primaryMeasures) || !Array.isArray(dualChart.secondaryMeasures)) return;
104
- const encoding = item.encoding;
105
- const isPrimaryYAxis = 'primaryYAxis' === encoding;
106
- const isSecondaryYAxis = 'secondaryYAxis' === encoding;
107
- const isOtherEncoding = item.encoding && [
108
- 'color',
109
- 'label',
110
- 'tooltip',
111
- 'detail'
112
- ].includes(item.encoding);
113
- if (isPrimaryYAxis) dualChart.primaryMeasures.push(item);
114
- else if (isSecondaryYAxis) dualChart.secondaryMeasures.push(item);
115
- else if (isOtherEncoding) encodedMeasures.push(item);
116
- else if (0 === dualChart.primaryMeasures.length) dualChart.primaryMeasures.push(item);
117
- else dualChart.secondaryMeasures.push(item);
118
- });
119
- const res = dualMeasuresToMeasureTree(dualMeasures);
120
- if (encodedMeasures.length) encodedMeasures.forEach((m)=>{
121
- res.push(m);
122
- });
123
- return res;
28
+ }
29
+ advancedVSeed.reshapeMeasures = parentIds.map((pid)=>measuresByView[pid]).filter((m)=>m.length > 0);
30
+ return advancedVSeed;
124
31
  };
125
32
  export { buildMeasuresForDualAxis };
126
33
 
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.ts"],"sourcesContent":["import type { AdvancedPipe, DualAxis, DualMeasures, MeasureGroup, Measures, MeasureTree } from 'src/types'\nimport { isMeasureTreeWithParentId, isMeasureTreeWithChildren } from './utils'\nimport { clone } from 'remeda'\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\n\nexport const buildMeasuresForDualAxis: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: DualAxis\n }\n\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(advancedVSeed.measures)) {\n advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures as Measures)\n return advancedVSeed\n }\n\n if (vseed.dualMeasures) {\n advancedVSeed.measures = dualMeasuresToMeasureTree(clone(vseed.dualMeasures))\n\n return advancedVSeed\n }\n\n const { dualMeasures, encodedMeasures } = basicMeasuresToDualMeasures(advancedVSeed.measures || [])\n advancedVSeed.measures = dualMeasuresToMeasureTree(dualMeasures)\n\n if (encodedMeasures.length) {\n encodedMeasures.forEach((m) => {\n advancedVSeed.measures!.push(m)\n })\n }\n\n return advancedVSeed\n}\n\nconst basicMeasuresToDualMeasures = (basicMeasures: Measures) => {\n const primaryMeasures: Measures = []\n const secondaryMeasures: Measures = []\n const encodedMeasures: Measures = []\n\n for (let index = 0; index < basicMeasures.length; index++) {\n const item = basicMeasures[index]\n const encoding = item.encoding\n const isPrimaryYAxis = encoding === 'primaryYAxis'\n const isSecondaryYAxis = encoding === 'secondaryYAxis'\n const isOtherEncoding = item.encoding && ['color', 'label', 'tooltip', 'detail'].includes(item.encoding)\n\n if (isPrimaryYAxis) {\n primaryMeasures.push(item)\n } else if (isSecondaryYAxis) {\n secondaryMeasures.push(item)\n } else if (!isOtherEncoding) {\n if (index === 0) {\n primaryMeasures.push(item)\n } else {\n secondaryMeasures.push(item)\n }\n } else {\n encodedMeasures.push(item)\n }\n }\n\n return {\n dualMeasures: [{ id: 'dualMeasures', primaryMeasures, secondaryMeasures }],\n encodedMeasures,\n }\n}\n\nconst dualMeasuresToMeasureTree = (dualMeasures: DualMeasures): MeasureTree => {\n const measureTree = dualMeasures.map((item, index): MeasureGroup => {\n const { id, primaryMeasures, secondaryMeasures } = item\n const groupChildren: MeasureGroup[] = []\n\n let groupId: string = `${id}-`\n if (primaryMeasures) {\n const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [primaryMeasures]\n const alias = arrPrimaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-primary`,\n alias: arrPrimaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrPrimaryMeasures,\n })\n }\n if (secondaryMeasures) {\n const arrSecondaryMeasures = Array.isArray(secondaryMeasures) ? secondaryMeasures : [secondaryMeasures]\n const alias = arrSecondaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-secondary`,\n alias: arrSecondaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrSecondaryMeasures,\n })\n }\n\n return {\n id: groupId,\n alias: groupId,\n children: groupChildren,\n }\n })\n\n // 只有1个双轴图, 仅返回2层, vchart 绘制双轴图\n if (dualMeasures.length === 1) {\n return measureTree[0].children || []\n }\n\n // 有多个双轴图, 返回3层, pivot chart 绘制组合双轴图\n return measureTree\n}\n\nconst generateMeasuresByParentId = (measures: Measures) => {\n const dualMeasures: DualMeasures = []\n const encodedMeasures: Measures = []\n\n measures.forEach((item) => {\n const id = item.parentId || DEFAULT_PARENT_ID\n if (!dualMeasures.find((d) => d.id === id)) {\n dualMeasures.push({\n id,\n primaryMeasures: [],\n secondaryMeasures: [],\n })\n }\n\n const dualChart = dualMeasures.find((d) => d.id === id)\n if (!dualChart || !Array.isArray(dualChart.primaryMeasures) || !Array.isArray(dualChart.secondaryMeasures)) {\n return\n }\n\n const encoding = item.encoding\n const isPrimaryYAxis = encoding === 'primaryYAxis'\n const isSecondaryYAxis = encoding === 'secondaryYAxis'\n const isOtherEncoding = item.encoding && ['color', 'label', 'tooltip', 'detail'].includes(item.encoding)\n\n if (isPrimaryYAxis) {\n dualChart.primaryMeasures.push(item)\n } else if (isSecondaryYAxis) {\n dualChart.secondaryMeasures.push(item)\n } else if (!isOtherEncoding) {\n if (dualChart.primaryMeasures.length === 0) {\n dualChart.primaryMeasures.push(item)\n } else {\n dualChart.secondaryMeasures.push(item)\n }\n } else {\n encodedMeasures.push(item)\n }\n })\n\n const res = dualMeasuresToMeasureTree(dualMeasures)\n\n if (encodedMeasures.length) {\n encodedMeasures.forEach((m) => {\n res.push(m)\n })\n }\n\n return res\n}\n"],"names":["buildMeasuresForDualAxis","advancedVSeed","context","vseed","isMeasureTreeWithChildren","isMeasureTreeWithParentId","generateMeasuresByParentId","dualMeasuresToMeasureTree","clone","dualMeasures","encodedMeasures","basicMeasuresToDualMeasures","m","basicMeasures","primaryMeasures","secondaryMeasures","index","item","encoding","isPrimaryYAxis","isSecondaryYAxis","isOtherEncoding","measureTree","id","groupChildren","groupId","arrPrimaryMeasures","Array","alias","arrSecondaryMeasures","measures","DEFAULT_PARENT_ID","d","dualChart","res"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.ts"],"sourcesContent":["import type { AdvancedPipe, DualAxisMeasure, MeasureEncoding, Measures } from 'src/types'\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\nimport { ensureParentIdInitialized, isCommonMeasureEncoding } from './utils'\nimport { DEFAULT_DUAL_CHART_TYPE, isDualAxisChartType } from 'src/pipeline/utils/chatType'\n\nexport const buildMeasuresForDualAxis: AdvancedPipe = (advancedVSeed) => {\n const { measures = [] } = advancedVSeed\n const measuresByView = {} as { [key: string]: Measures }\n const parentIds: string[] = []\n\n for (let index = 0; index < measures.length; index++) {\n const item = measures[index]\n const encoding = item.encoding\n const parentId = item.parentId || DEFAULT_PARENT_ID\n const isPrimaryYAxis = encoding === 'primaryYAxis'\n const isSecondaryYAxis = encoding === 'secondaryYAxis'\n const isOtherEncoding = item.encoding && isCommonMeasureEncoding(encoding as MeasureEncoding)\n\n ensureParentIdInitialized(parentId, measuresByView, parentIds)\n\n if (isPrimaryYAxis) {\n measuresByView[parentId].push(item)\n\n if (!isDualAxisChartType((item as DualAxisMeasure).chartType)) {\n ;(item as any).chartType = DEFAULT_DUAL_CHART_TYPE.primary\n }\n } else if (isSecondaryYAxis) {\n measuresByView[parentId].push(item)\n\n if (!isDualAxisChartType((item as DualAxisMeasure).chartType)) {\n ;(item as any).chartType = DEFAULT_DUAL_CHART_TYPE.secondary\n }\n } else if (!isOtherEncoding) {\n const primaryCount = measuresByView[parentId].filter((m) => m.encoding === 'primaryYAxis').length\n item.encoding = primaryCount === 0 ? 'primaryYAxis' : 'secondaryYAxis'\n\n if (!isDualAxisChartType((item as DualAxisMeasure).chartType)) {\n ;(item as any).chartType =\n item.encoding === 'primaryYAxis' ? DEFAULT_DUAL_CHART_TYPE.primary : DEFAULT_DUAL_CHART_TYPE.secondary\n }\n\n measuresByView[parentId].push(item)\n }\n }\n\n advancedVSeed.reshapeMeasures = parentIds.map((pid) => measuresByView[pid]).filter((m) => m.length > 0)\n\n return advancedVSeed\n}\n"],"names":["buildMeasuresForDualAxis","advancedVSeed","measures","measuresByView","parentIds","index","item","encoding","parentId","DEFAULT_PARENT_ID","isPrimaryYAxis","isSecondaryYAxis","isOtherEncoding","isCommonMeasureEncoding","ensureParentIdInitialized","isDualAxisChartType","DEFAULT_DUAL_CHART_TYPE","primaryCount","m","pid"],"mappings":";;;AAKO,MAAMA,2BAAyC,CAACC;IACrD,MAAM,EAAEC,WAAW,EAAE,EAAE,GAAGD;IAC1B,MAAME,iBAAiB,CAAC;IACxB,MAAMC,YAAsB,EAAE;IAE9B,IAAK,IAAIC,QAAQ,GAAGA,QAAQH,SAAS,MAAM,EAAEG,QAAS;QACpD,MAAMC,OAAOJ,QAAQ,CAACG,MAAM;QAC5B,MAAME,WAAWD,KAAK,QAAQ;QAC9B,MAAME,WAAWF,KAAK,QAAQ,IAAIG;QAClC,MAAMC,iBAAiBH,AAAa,mBAAbA;QACvB,MAAMI,mBAAmBJ,AAAa,qBAAbA;QACzB,MAAMK,kBAAkBN,KAAK,QAAQ,IAAIO,wBAAwBN;QAEjEO,0BAA0BN,UAAUL,gBAAgBC;QAEpD,IAAIM,gBAAgB;YAClBP,cAAc,CAACK,SAAS,CAAC,IAAI,CAACF;YAE9B,IAAI,CAACS,oBAAqBT,KAAyB,SAAS,GACxDA,KAAa,SAAS,GAAGU,wBAAwB,OAAO;QAE9D,OAAO,IAAIL,kBAAkB;YAC3BR,cAAc,CAACK,SAAS,CAAC,IAAI,CAACF;YAE9B,IAAI,CAACS,oBAAqBT,KAAyB,SAAS,GACxDA,KAAa,SAAS,GAAGU,wBAAwB,SAAS;QAEhE,OAAO,IAAI,CAACJ,iBAAiB;YAC3B,MAAMK,eAAed,cAAc,CAACK,SAAS,CAAC,MAAM,CAAC,CAACU,IAAMA,AAAe,mBAAfA,EAAE,QAAQ,EAAqB,MAAM;YACjGZ,KAAK,QAAQ,GAAGW,AAAiB,MAAjBA,eAAqB,iBAAiB;YAEtD,IAAI,CAACF,oBAAqBT,KAAyB,SAAS,GACxDA,KAAa,SAAS,GACtBA,AAAkB,mBAAlBA,KAAK,QAAQ,GAAsBU,wBAAwB,OAAO,GAAGA,wBAAwB,SAAS;YAG1Gb,cAAc,CAACK,SAAS,CAAC,IAAI,CAACF;QAChC;IACF;IAEAL,cAAc,eAAe,GAAGG,UAAU,GAAG,CAAC,CAACe,MAAQhB,cAAc,CAACgB,IAAI,EAAE,MAAM,CAAC,CAACD,IAAMA,EAAE,MAAM,GAAG;IAErG,OAAOjB;AACT"}
@@ -1,126 +1,41 @@
1
- import { isMeasureTreeWithChildren, isMeasureTreeWithParentId } from "./utils.js";
2
1
  import { clone } from "remeda";
3
2
  import { DEFAULT_PARENT_ID } from "../../../../utils/constant.js";
4
- const buildMeasuresForScatter = (advancedVSeed, context)=>{
5
- const { vseed } = context;
6
- if (isMeasureTreeWithChildren(advancedVSeed.measures)) return advancedVSeed;
7
- if (isMeasureTreeWithParentId(advancedVSeed.measures)) {
8
- advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures);
9
- return advancedVSeed;
10
- }
11
- if (vseed.scatterMeasures) {
12
- advancedVSeed.measures = scatterMeasuresToMeasureTree(clone(vseed.scatterMeasures));
13
- return advancedVSeed;
14
- }
15
- const { scatterMeasures, encodedMeasures } = basicMeasuresToScatterMeasures(advancedVSeed.measures || []);
16
- advancedVSeed.measures = scatterMeasuresToMeasureTree(scatterMeasures);
17
- if (encodedMeasures.length) encodedMeasures.forEach((m)=>{
18
- advancedVSeed.measures.push(m);
19
- });
20
- return advancedVSeed;
21
- };
22
- const basicMeasuresToScatterMeasures = (basicMeasures)=>{
23
- const yMeasures = [];
24
- const xMeasures = [];
25
- const encodedMeasures = [];
26
- for(let index = 0; index < basicMeasures.length; index++){
27
- const item = basicMeasures[index];
3
+ import { ensureParentIdInitialized, isCommonMeasureEncoding } from "./utils.js";
4
+ const buildMeasuresForScatter = (advancedVSeed)=>{
5
+ const { measures = [] } = advancedVSeed;
6
+ const measuresByView = {};
7
+ const parentIds = [];
8
+ for(let index = 0; index < measures.length; index++){
9
+ const item = measures[index];
28
10
  const encoding = item.encoding;
11
+ const parentId = item.parentId || DEFAULT_PARENT_ID;
29
12
  const isYAxis = 'yAxis' === encoding;
30
13
  const isXAxis = 'xAxis' === encoding;
31
- const isOther = encoding && [
32
- 'color',
33
- 'label',
34
- 'tooltip',
35
- 'detail'
36
- ].includes(encoding);
37
- if (isYAxis) yMeasures.push(item);
38
- else if (isXAxis) xMeasures.push(item);
39
- else if (isOther) encodedMeasures.push(item);
40
- else if (0 !== index) yMeasures.push(item);
41
- else xMeasures.push(item);
42
- }
43
- if (0 === yMeasures.length && xMeasures.length > 0) yMeasures.push(xMeasures[0]);
44
- return {
45
- scatterMeasures: [
46
- {
47
- id: 'scatterMeasures',
48
- xMeasures,
49
- yMeasures
50
- }
51
- ],
52
- encodedMeasures
53
- };
54
- };
55
- const scatterMeasuresToMeasureTree = (scatterMeasures)=>{
56
- const measureTree = scatterMeasures.map((item, index)=>{
57
- const { id, xMeasures, yMeasures } = item;
58
- const groupChildren = [];
59
- let groupId = `${id}-`;
60
- if (xMeasures) {
61
- const arrPrimaryMeasures = Array.isArray(xMeasures) ? xMeasures : [
62
- xMeasures
63
- ];
64
- const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
65
- groupId += alias;
66
- groupChildren.push({
67
- id: `${index}-x`,
68
- alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
69
- children: arrPrimaryMeasures
70
- });
14
+ const isOtherEncoding = item.encoding && isCommonMeasureEncoding(encoding);
15
+ ensureParentIdInitialized(parentId, measuresByView, parentIds);
16
+ if (isYAxis) measuresByView[parentId].push(item);
17
+ else if (isXAxis) measuresByView[parentId].push(item);
18
+ else if (!isOtherEncoding && 'size' !== encoding) {
19
+ const xCount = measuresByView[parentId].filter((m)=>'xAxis' === m.encoding).length;
20
+ item.encoding = 0 === xCount ? 'xAxis' : 'yAxis';
21
+ measuresByView[parentId].push(item);
71
22
  }
72
- if (yMeasures) {
73
- const arrSecondaryMeasures = Array.isArray(yMeasures) ? yMeasures : [
74
- yMeasures
23
+ }
24
+ advancedVSeed.reshapeMeasures = parentIds.map((pid)=>{
25
+ const basicMeasures = measuresByView[pid];
26
+ const xCount = basicMeasures.filter((m)=>'xAxis' === m.encoding).length;
27
+ const yCount = basicMeasures.filter((m)=>'yAxis' === m.encoding).length;
28
+ if (0 === yCount && xCount > 0) {
29
+ const cloneMeasure = clone(basicMeasures[0]);
30
+ cloneMeasure.encoding = 'yAxis';
31
+ return [
32
+ ...basicMeasures,
33
+ cloneMeasure
75
34
  ];
76
- const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
77
- groupId += alias;
78
- groupChildren.push({
79
- id: `${index}-y`,
80
- alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
81
- children: arrSecondaryMeasures
82
- });
83
35
  }
84
- return {
85
- id: groupId,
86
- alias: groupId,
87
- children: groupChildren
88
- };
89
- });
90
- if (1 === scatterMeasures.length) return measureTree[0].children || [];
91
- return measureTree;
92
- };
93
- const generateMeasuresByParentId = (measures)=>{
94
- const scatterMeasures = [];
95
- const encodedMeasures = [];
96
- measures.forEach((item)=>{
97
- const id = item.parentId || DEFAULT_PARENT_ID;
98
- if (!scatterMeasures.find((d)=>d.id === id)) scatterMeasures.push({
99
- id,
100
- yMeasures: [],
101
- xMeasures: []
102
- });
103
- const scatterChart = scatterMeasures.find((d)=>d.id === id);
104
- if (!scatterChart || !Array.isArray(scatterChart.yMeasures) || !Array.isArray(scatterChart.xMeasures)) return;
105
- const isYAxis = 'yAxis' === item.encoding;
106
- const isXAxis = 'xAxis' === item.encoding;
107
- const isOther = item.encoding && [
108
- 'color',
109
- 'label',
110
- 'tooltip',
111
- 'detail'
112
- ].includes(item.encoding);
113
- if (isYAxis) scatterChart.yMeasures.push(item);
114
- else if (isXAxis) scatterChart.xMeasures.push(item);
115
- else if (isOther) encodedMeasures.push(item);
116
- else if (0 !== scatterChart.yMeasures.length) scatterChart.yMeasures.push(item);
117
- else scatterChart.xMeasures.push(item);
118
- });
119
- const res = scatterMeasuresToMeasureTree(scatterMeasures);
120
- if (encodedMeasures.length) encodedMeasures.forEach((m)=>{
121
- res.push(m);
122
- });
123
- return res;
36
+ return basicMeasures;
37
+ }).filter((m)=>m.length > 0);
38
+ return advancedVSeed;
124
39
  };
125
40
  export { buildMeasuresForScatter };
126
41
 
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.ts"],"sourcesContent":["import type { AdvancedPipe, MeasureGroup, Measures, MeasureTree, Scatter, ScatterMeasures } from 'src/types'\nimport { isMeasureTreeWithParentId, isMeasureTreeWithChildren } from './utils'\nimport { clone } from 'remeda'\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\n\nexport const buildMeasuresForScatter: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: Scatter\n }\n\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(advancedVSeed.measures)) {\n advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 既不是带Children的指标树, 也不是带parentId的指标树, 则自动生成指标\n */\n\n if (vseed.scatterMeasures) {\n advancedVSeed.measures = scatterMeasuresToMeasureTree(clone(vseed.scatterMeasures))\n\n return advancedVSeed\n }\n\n const { scatterMeasures, encodedMeasures } = basicMeasuresToScatterMeasures(advancedVSeed.measures || [])\n advancedVSeed.measures = scatterMeasuresToMeasureTree(scatterMeasures)\n\n if (encodedMeasures.length) {\n encodedMeasures.forEach((m) => {\n advancedVSeed.measures!.push(m)\n })\n }\n\n return advancedVSeed\n}\n\nconst basicMeasuresToScatterMeasures = (basicMeasures: Measures) => {\n const yMeasures: Measures = []\n const xMeasures: Measures = []\n const encodedMeasures: Measures = []\n\n for (let index = 0; index < basicMeasures.length; index++) {\n const item = basicMeasures[index]\n const encoding = item.encoding\n const isYAxis = encoding === 'yAxis'\n const isXAxis = encoding === 'xAxis'\n const isOther = encoding && ['color', 'label', 'tooltip', 'detail'].includes(encoding)\n\n if (isYAxis) {\n yMeasures.push(item)\n } else if (isXAxis) {\n xMeasures.push(item)\n } else if (!isOther) {\n if (index !== 0) {\n yMeasures.push(item)\n } else {\n xMeasures.push(item)\n }\n } else {\n encodedMeasures.push(item)\n }\n }\n\n if (yMeasures.length === 0 && xMeasures.length > 0) {\n yMeasures.push(xMeasures[0])\n }\n\n return {\n scatterMeasures: [{ id: 'scatterMeasures', xMeasures, yMeasures }],\n encodedMeasures,\n }\n}\n\nconst scatterMeasuresToMeasureTree = (scatterMeasures: ScatterMeasures): MeasureTree => {\n const measureTree = scatterMeasures.map((item, index): MeasureGroup => {\n const { id, xMeasures, yMeasures } = item\n const groupChildren: MeasureGroup[] = []\n\n let groupId: string = `${id}-`\n if (xMeasures) {\n const arrPrimaryMeasures = Array.isArray(xMeasures) ? xMeasures : [xMeasures]\n const alias = arrPrimaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-x`,\n alias: arrPrimaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrPrimaryMeasures,\n })\n }\n if (yMeasures) {\n const arrSecondaryMeasures = Array.isArray(yMeasures) ? yMeasures : [yMeasures]\n const alias = arrSecondaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-y`,\n alias: arrSecondaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrSecondaryMeasures,\n })\n }\n\n return {\n id: groupId,\n alias: groupId,\n children: groupChildren,\n }\n })\n\n // 只有1个散点图, 仅返回2层, vchart 绘制散点图\n if (scatterMeasures.length === 1) {\n return measureTree[0].children || []\n }\n\n // 有多个散点图, 返回3层, pivot chart 绘制组合散点图\n return measureTree\n}\n\nconst generateMeasuresByParentId = (measures: Measures) => {\n const scatterMeasures: ScatterMeasures = []\n const encodedMeasures: Measures = []\n\n measures.forEach((item) => {\n const id = item.parentId || DEFAULT_PARENT_ID\n\n if (!scatterMeasures.find((d) => d.id === id)) {\n scatterMeasures.push({\n id,\n yMeasures: [],\n xMeasures: [],\n })\n }\n const scatterChart = scatterMeasures.find((d) => d.id === id)\n if (!scatterChart || !Array.isArray(scatterChart.yMeasures) || !Array.isArray(scatterChart.xMeasures)) {\n return\n }\n\n const isYAxis = item.encoding === 'yAxis'\n const isXAxis = item.encoding === 'xAxis'\n const isOther = item.encoding && ['color', 'label', 'tooltip', 'detail'].includes(item.encoding)\n\n if (isYAxis) {\n scatterChart.yMeasures.push(item)\n } else if (isXAxis) {\n scatterChart.xMeasures.push(item)\n } else if (!isOther) {\n if (scatterChart.yMeasures.length !== 0) {\n scatterChart.yMeasures.push(item)\n } else {\n scatterChart.xMeasures.push(item)\n }\n } else {\n encodedMeasures.push(item)\n }\n })\n\n const res = scatterMeasuresToMeasureTree(scatterMeasures)\n\n if (encodedMeasures.length) {\n encodedMeasures.forEach((m) => {\n res.push(m)\n })\n }\n\n return res\n}\n"],"names":["buildMeasuresForScatter","advancedVSeed","context","vseed","isMeasureTreeWithChildren","isMeasureTreeWithParentId","generateMeasuresByParentId","scatterMeasuresToMeasureTree","clone","scatterMeasures","encodedMeasures","basicMeasuresToScatterMeasures","m","basicMeasures","yMeasures","xMeasures","index","item","encoding","isYAxis","isXAxis","isOther","measureTree","id","groupChildren","groupId","arrPrimaryMeasures","Array","alias","arrSecondaryMeasures","measures","DEFAULT_PARENT_ID","d","scatterChart","res"],"mappings":";;;AAKO,MAAMA,0BAAwC,CAACC,eAAeC;IACnE,MAAM,EAAEC,KAAK,EAAE,GAAGD;IAKlB,IAAIE,0BAA0BH,cAAc,QAAQ,GAClD,OAAOA;IAGT,IAAII,0BAA0BJ,cAAc,QAAQ,GAAG;QACrDA,cAAc,QAAQ,GAAGK,2BAA2BL,cAAc,QAAQ;QAC1E,OAAOA;IACT;IAMA,IAAIE,MAAM,eAAe,EAAE;QACzBF,cAAc,QAAQ,GAAGM,6BAA6BC,MAAML,MAAM,eAAe;QAEjF,OAAOF;IACT;IAEA,MAAM,EAAEQ,eAAe,EAAEC,eAAe,EAAE,GAAGC,+BAA+BV,cAAc,QAAQ,IAAI,EAAE;IACxGA,cAAc,QAAQ,GAAGM,6BAA6BE;IAEtD,IAAIC,gBAAgB,MAAM,EACxBA,gBAAgB,OAAO,CAAC,CAACE;QACvBX,cAAc,QAAQ,CAAE,IAAI,CAACW;IAC/B;IAGF,OAAOX;AACT;AAEA,MAAMU,iCAAiC,CAACE;IACtC,MAAMC,YAAsB,EAAE;IAC9B,MAAMC,YAAsB,EAAE;IAC9B,MAAML,kBAA4B,EAAE;IAEpC,IAAK,IAAIM,QAAQ,GAAGA,QAAQH,cAAc,MAAM,EAAEG,QAAS;QACzD,MAAMC,OAAOJ,aAAa,CAACG,MAAM;QACjC,MAAME,WAAWD,KAAK,QAAQ;QAC9B,MAAME,UAAUD,AAAa,YAAbA;QAChB,MAAME,UAAUF,AAAa,YAAbA;QAChB,MAAMG,UAAUH,YAAY;YAAC;YAAS;YAAS;YAAW;SAAS,CAAC,QAAQ,CAACA;QAE7E,IAAIC,SACFL,UAAU,IAAI,CAACG;aACV,IAAIG,SACTL,UAAU,IAAI,CAACE;aACV,IAAKI,SAOVX,gBAAgB,IAAI,CAACO;aANrB,IAAID,AAAU,MAAVA,OACFF,UAAU,IAAI,CAACG;aAEfF,UAAU,IAAI,CAACE;IAKrB;IAEA,IAAIH,AAAqB,MAArBA,UAAU,MAAM,IAAUC,UAAU,MAAM,GAAG,GAC/CD,UAAU,IAAI,CAACC,SAAS,CAAC,EAAE;IAG7B,OAAO;QACL,iBAAiB;YAAC;gBAAE,IAAI;gBAAmBA;gBAAWD;YAAU;SAAE;QAClEJ;IACF;AACF;AAEA,MAAMH,+BAA+B,CAACE;IACpC,MAAMa,cAAcb,gBAAgB,GAAG,CAAC,CAACQ,MAAMD;QAC7C,MAAM,EAAEO,EAAE,EAAER,SAAS,EAAED,SAAS,EAAE,GAAGG;QACrC,MAAMO,gBAAgC,EAAE;QAExC,IAAIC,UAAkB,GAAGF,GAAG,CAAC,CAAC;QAC9B,IAAIR,WAAW;YACb,MAAMW,qBAAqBC,MAAM,OAAO,CAACZ,aAAaA,YAAY;gBAACA;aAAU;YAC7E,MAAMa,QAAQF,mBAAmB,GAAG,CAAC,CAACT,OAASA,KAAK,KAAK,IAAIA,KAAK,EAAE,EAAE,QAAQ;YAC9EQ,WAAWG;YACXJ,cAAc,IAAI,CAAC;gBACjB,IAAI,GAAGR,MAAM,EAAE,CAAC;gBAChB,OAAOU,mBAAmB,GAAG,CAAC,CAACT,OAASA,KAAK,KAAK,IAAIA,KAAK,EAAE,EAAE,QAAQ;gBACvE,UAAUS;YACZ;QACF;QACA,IAAIZ,WAAW;YACb,MAAMe,uBAAuBF,MAAM,OAAO,CAACb,aAAaA,YAAY;gBAACA;aAAU;YAC/E,MAAMc,QAAQC,qBAAqB,GAAG,CAAC,CAACZ,OAASA,KAAK,KAAK,IAAIA,KAAK,EAAE,EAAE,QAAQ;YAChFQ,WAAWG;YACXJ,cAAc,IAAI,CAAC;gBACjB,IAAI,GAAGR,MAAM,EAAE,CAAC;gBAChB,OAAOa,qBAAqB,GAAG,CAAC,CAACZ,OAASA,KAAK,KAAK,IAAIA,KAAK,EAAE,EAAE,QAAQ;gBACzE,UAAUY;YACZ;QACF;QAEA,OAAO;YACL,IAAIJ;YACJ,OAAOA;YACP,UAAUD;QACZ;IACF;IAGA,IAAIf,AAA2B,MAA3BA,gBAAgB,MAAM,EACxB,OAAOa,WAAW,CAAC,EAAE,CAAC,QAAQ,IAAI,EAAE;IAItC,OAAOA;AACT;AAEA,MAAMhB,6BAA6B,CAACwB;IAClC,MAAMrB,kBAAmC,EAAE;IAC3C,MAAMC,kBAA4B,EAAE;IAEpCoB,SAAS,OAAO,CAAC,CAACb;QAChB,MAAMM,KAAKN,KAAK,QAAQ,IAAIc;QAE5B,IAAI,CAACtB,gBAAgB,IAAI,CAAC,CAACuB,IAAMA,EAAE,EAAE,KAAKT,KACxCd,gBAAgB,IAAI,CAAC;YACnBc;YACA,WAAW,EAAE;YACb,WAAW,EAAE;QACf;QAEF,MAAMU,eAAexB,gBAAgB,IAAI,CAAC,CAACuB,IAAMA,EAAE,EAAE,KAAKT;QAC1D,IAAI,CAACU,gBAAgB,CAACN,MAAM,OAAO,CAACM,aAAa,SAAS,KAAK,CAACN,MAAM,OAAO,CAACM,aAAa,SAAS,GAClG;QAGF,MAAMd,UAAUF,AAAkB,YAAlBA,KAAK,QAAQ;QAC7B,MAAMG,UAAUH,AAAkB,YAAlBA,KAAK,QAAQ;QAC7B,MAAMI,UAAUJ,KAAK,QAAQ,IAAI;YAAC;YAAS;YAAS;YAAW;SAAS,CAAC,QAAQ,CAACA,KAAK,QAAQ;QAE/F,IAAIE,SACFc,aAAa,SAAS,CAAC,IAAI,CAAChB;aACvB,IAAIG,SACTa,aAAa,SAAS,CAAC,IAAI,CAAChB;aACvB,IAAKI,SAOVX,gBAAgB,IAAI,CAACO;aANrB,IAAIgB,AAAkC,MAAlCA,aAAa,SAAS,CAAC,MAAM,EAC/BA,aAAa,SAAS,CAAC,IAAI,CAAChB;aAE5BgB,aAAa,SAAS,CAAC,IAAI,CAAChB;IAKlC;IAEA,MAAMiB,MAAM3B,6BAA6BE;IAEzC,IAAIC,gBAAgB,MAAM,EACxBA,gBAAgB,OAAO,CAAC,CAACE;QACvBsB,IAAI,IAAI,CAACtB;IACX;IAGF,OAAOsB;AACT"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.ts"],"sourcesContent":["import type { AdvancedPipe, MeasureEncoding, Measures } from 'src/types'\nimport { clone } from 'remeda'\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\nimport { ensureParentIdInitialized, isCommonMeasureEncoding } from './utils'\n\nexport const buildMeasuresForScatter: AdvancedPipe = (advancedVSeed) => {\n const { measures = [] } = advancedVSeed\n const measuresByView = {} as { [key: string]: Measures }\n const parentIds: string[] = []\n\n for (let index = 0; index < measures.length; index++) {\n const item = measures[index]\n const encoding = item.encoding\n const parentId = item.parentId || DEFAULT_PARENT_ID\n const isYAxis = encoding === 'yAxis'\n const isXAxis = encoding === 'xAxis'\n const isOtherEncoding = item.encoding && isCommonMeasureEncoding(encoding as MeasureEncoding)\n\n ensureParentIdInitialized(parentId, measuresByView, parentIds)\n\n if (isYAxis) {\n measuresByView[parentId].push(item)\n } else if (isXAxis) {\n measuresByView[parentId].push(item)\n } else if (!isOtherEncoding && encoding !== 'size') {\n const xCount = measuresByView[parentId].filter((m) => m.encoding === 'xAxis').length\n item.encoding = xCount === 0 ? 'xAxis' : 'yAxis'\n measuresByView[parentId].push(item)\n }\n }\n\n advancedVSeed.reshapeMeasures = parentIds\n .map((pid) => {\n const basicMeasures = measuresByView[pid]\n const xCount = basicMeasures.filter((m) => m.encoding === 'xAxis').length\n const yCount = basicMeasures.filter((m) => m.encoding === 'yAxis').length\n\n if (yCount === 0 && xCount > 0) {\n const cloneMeasure = clone(basicMeasures[0])\n cloneMeasure.encoding = 'yAxis'\n\n return [...basicMeasures, cloneMeasure]\n }\n\n return basicMeasures\n })\n .filter((m) => m.length > 0)\n\n return advancedVSeed\n}\n"],"names":["buildMeasuresForScatter","advancedVSeed","measures","measuresByView","parentIds","index","item","encoding","parentId","DEFAULT_PARENT_ID","isYAxis","isXAxis","isOtherEncoding","isCommonMeasureEncoding","ensureParentIdInitialized","xCount","m","pid","basicMeasures","yCount","cloneMeasure","clone"],"mappings":";;;AAKO,MAAMA,0BAAwC,CAACC;IACpD,MAAM,EAAEC,WAAW,EAAE,EAAE,GAAGD;IAC1B,MAAME,iBAAiB,CAAC;IACxB,MAAMC,YAAsB,EAAE;IAE9B,IAAK,IAAIC,QAAQ,GAAGA,QAAQH,SAAS,MAAM,EAAEG,QAAS;QACpD,MAAMC,OAAOJ,QAAQ,CAACG,MAAM;QAC5B,MAAME,WAAWD,KAAK,QAAQ;QAC9B,MAAME,WAAWF,KAAK,QAAQ,IAAIG;QAClC,MAAMC,UAAUH,AAAa,YAAbA;QAChB,MAAMI,UAAUJ,AAAa,YAAbA;QAChB,MAAMK,kBAAkBN,KAAK,QAAQ,IAAIO,wBAAwBN;QAEjEO,0BAA0BN,UAAUL,gBAAgBC;QAEpD,IAAIM,SACFP,cAAc,CAACK,SAAS,CAAC,IAAI,CAACF;aACzB,IAAIK,SACTR,cAAc,CAACK,SAAS,CAAC,IAAI,CAACF;aACzB,IAAI,CAACM,mBAAmBL,AAAa,WAAbA,UAAqB;YAClD,MAAMQ,SAASZ,cAAc,CAACK,SAAS,CAAC,MAAM,CAAC,CAACQ,IAAMA,AAAe,YAAfA,EAAE,QAAQ,EAAc,MAAM;YACpFV,KAAK,QAAQ,GAAGS,AAAW,MAAXA,SAAe,UAAU;YACzCZ,cAAc,CAACK,SAAS,CAAC,IAAI,CAACF;QAChC;IACF;IAEAL,cAAc,eAAe,GAAGG,UAC7B,GAAG,CAAC,CAACa;QACJ,MAAMC,gBAAgBf,cAAc,CAACc,IAAI;QACzC,MAAMF,SAASG,cAAc,MAAM,CAAC,CAACF,IAAMA,AAAe,YAAfA,EAAE,QAAQ,EAAc,MAAM;QACzE,MAAMG,SAASD,cAAc,MAAM,CAAC,CAACF,IAAMA,AAAe,YAAfA,EAAE,QAAQ,EAAc,MAAM;QAEzE,IAAIG,AAAW,MAAXA,UAAgBJ,SAAS,GAAG;YAC9B,MAAMK,eAAeC,MAAMH,aAAa,CAAC,EAAE;YAC3CE,aAAa,QAAQ,GAAG;YAExB,OAAO;mBAAIF;gBAAeE;aAAa;QACzC;QAEA,OAAOF;IACT,GACC,MAAM,CAAC,CAACF,IAAMA,EAAE,MAAM,GAAG;IAE5B,OAAOf;AACT"}
@@ -2,4 +2,3 @@ export * from './utils';
2
2
  export { buildMeasuresForDualAxis } from './buildMeasuresForDualAxis';
3
3
  export { buildMeasures } from './buildMeasures';
4
4
  export { buildMeasuresForScatter } from './buildMeasuresForScatter';
5
- export { pickMeasuresForReshape } from './pickMeasuresForReshape';
@@ -1,6 +1,5 @@
1
1
  import { buildMeasuresForDualAxis } from "./buildMeasuresForDualAxis.js";
2
2
  import { buildMeasures } from "./buildMeasures.js";
3
3
  import { buildMeasuresForScatter } from "./buildMeasuresForScatter.js";
4
- import { pickMeasuresForReshape } from "./pickMeasuresForReshape.js";
5
4
  export * from "./utils.js";
6
- export { buildMeasures, buildMeasuresForDualAxis, buildMeasuresForScatter, pickMeasuresForReshape };
5
+ export { buildMeasures, buildMeasuresForDualAxis, buildMeasuresForScatter };
@@ -1,4 +1,4 @@
1
- import type { MeasureGroup, MeasureTree } from '../../../../../types';
1
+ import type { MeasureEncoding, MeasureGroup, MeasureTree } from '../../../../../types';
2
2
  /**
3
3
  * @description 检查是否为指标树, 指标树深度大于1. 如果存在一个指标为组, 即有children配置, 则认为是指标树.
4
4
  * @param vseed vseed
@@ -17,3 +17,14 @@ export declare const isMeasureTreeWithParentId: <T extends MeasureTree>(measures
17
17
  * @returns
18
18
  */
19
19
  export declare const normalizeMeasureTree: (measures: MeasureTree) => MeasureGroup[];
20
+ export declare const isCommonMeasureEncoding: (encoding: MeasureEncoding) => boolean;
21
+ /**
22
+ * @description Ensures that the measuresByView object has an initialized array for the given parentId.
23
+ * If the parentId doesn't exist in measuresByView, it initializes an empty array and tracks the parentId.
24
+ * @param parentId The parent ID to ensure initialization for
25
+ * @param measuresByView The object mapping parent IDs to measures arrays
26
+ * @param parentIds The array tracking all parent IDs that have been initialized
27
+ */
28
+ export declare const ensureParentIdInitialized: <T>(parentId: string, measuresByView: {
29
+ [key: string]: T[];
30
+ }, parentIds: string[]) => void;
@@ -37,6 +37,17 @@ const normalizeMeasureTree = (measures)=>{
37
37
  }
38
38
  return measureGroups;
39
39
  };
40
- export { isMeasureTreeWithChildren, isMeasureTreeWithParentId, normalizeMeasureTree };
40
+ const isCommonMeasureEncoding = (encoding)=>[
41
+ 'color',
42
+ 'label',
43
+ 'tooltip'
44
+ ].includes(encoding);
45
+ const ensureParentIdInitialized = (parentId, measuresByView, parentIds)=>{
46
+ if (!measuresByView[parentId]) {
47
+ measuresByView[parentId] = [];
48
+ parentIds.push(parentId);
49
+ }
50
+ };
51
+ export { ensureParentIdInitialized, isCommonMeasureEncoding, isMeasureTreeWithChildren, isMeasureTreeWithParentId, normalizeMeasureTree };
41
52
 
42
53
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/measures/utils.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/utils.ts"],"sourcesContent":["import type { MeasureGroup, MeasureTree } from 'src/types'\n\n/**\n * @description 检查是否为指标树, 指标树深度大于1. 如果存在一个指标为组, 即有children配置, 则认为是指标树.\n * @param vseed vseed\n * @returns\n */\nexport const isMeasureTreeWithChildren = <T extends MeasureTree>(measures?: T) => {\n if (!measures) {\n return false\n }\n\n return measures.some((measure) => 'children' in measure)\n}\n\n/**\n * @description 检查是否为指标树, 指标树存在parentId. 如果存在一个指标有parentId, 则认为是指标树.\n * @param vseed vseed\n * @returns\n */\nexport const isMeasureTreeWithParentId = <T extends MeasureTree>(measures?: T) => {\n if (!measures) {\n return false\n }\n\n return measures.some((measure) => 'parentId' in measure)\n}\n\n/**\n * @description 保证指标树中的每一组都有children, 没有children的指标, 会被放到一个默认的指标组中.\n * @param measures 指标树\n * @returns\n */\nexport const normalizeMeasureTree = (measures: MeasureTree) => {\n const createEmptyMeasureGroup = (): MeasureGroup => {\n return {\n id: 'group',\n alias: '',\n children: [],\n }\n }\n\n let currentGroup: MeasureGroup = createEmptyMeasureGroup()\n const measureGroups: MeasureGroup[] = []\n for (const measure of measures) {\n if ('children' in measure) {\n // 当前指标组之前的所有独立指标成组\n if (currentGroup.children?.length) {\n currentGroup.id = [currentGroup.id, ...currentGroup.children.map((item) => item.id)].join('-')\n currentGroup.alias = currentGroup.children.map((item) => item.alias).join('-')\n measureGroups.push(currentGroup)\n currentGroup = createEmptyMeasureGroup()\n }\n // 当前是指标组\n measureGroups.push(measure)\n } else {\n currentGroup.children?.push(measure)\n }\n }\n\n // 最后一组\n if (currentGroup.children?.length) {\n currentGroup.id = [currentGroup.id, ...currentGroup.children.map((item) => item.id)].join('-')\n currentGroup.alias = currentGroup.children.map((item) => item.alias).join('-')\n measureGroups.push(currentGroup)\n currentGroup = createEmptyMeasureGroup()\n }\n\n return measureGroups\n}\n"],"names":["isMeasureTreeWithChildren","measures","measure","isMeasureTreeWithParentId","normalizeMeasureTree","createEmptyMeasureGroup","currentGroup","measureGroups","item"],"mappings":"AAOO,MAAMA,4BAA4B,CAAwBC;IAC/D,IAAI,CAACA,UACH,OAAO;IAGT,OAAOA,SAAS,IAAI,CAAC,CAACC,UAAY,cAAcA;AAClD;AAOO,MAAMC,4BAA4B,CAAwBF;IAC/D,IAAI,CAACA,UACH,OAAO;IAGT,OAAOA,SAAS,IAAI,CAAC,CAACC,UAAY,cAAcA;AAClD;AAOO,MAAME,uBAAuB,CAACH;IACnC,MAAMI,0BAA0B,IACvB;YACL,IAAI;YACJ,OAAO;YACP,UAAU,EAAE;QACd;IAGF,IAAIC,eAA6BD;IACjC,MAAME,gBAAgC,EAAE;IACxC,KAAK,MAAML,WAAWD,SACpB,IAAI,cAAcC,SAAS;QAEzB,IAAII,aAAa,QAAQ,EAAE,QAAQ;YACjCA,aAAa,EAAE,GAAG;gBAACA,aAAa,EAAE;mBAAKA,aAAa,QAAQ,CAAC,GAAG,CAAC,CAACE,OAASA,KAAK,EAAE;aAAE,CAAC,IAAI,CAAC;YAC1FF,aAAa,KAAK,GAAGA,aAAa,QAAQ,CAAC,GAAG,CAAC,CAACE,OAASA,KAAK,KAAK,EAAE,IAAI,CAAC;YAC1ED,cAAc,IAAI,CAACD;YACnBA,eAAeD;QACjB;QAEAE,cAAc,IAAI,CAACL;IACrB,OACEI,aAAa,QAAQ,EAAE,KAAKJ;IAKhC,IAAII,aAAa,QAAQ,EAAE,QAAQ;QACjCA,aAAa,EAAE,GAAG;YAACA,aAAa,EAAE;eAAKA,aAAa,QAAQ,CAAC,GAAG,CAAC,CAACE,OAASA,KAAK,EAAE;SAAE,CAAC,IAAI,CAAC;QAC1FF,aAAa,KAAK,GAAGA,aAAa,QAAQ,CAAC,GAAG,CAAC,CAACE,OAASA,KAAK,KAAK,EAAE,IAAI,CAAC;QAC1ED,cAAc,IAAI,CAACD;QACnBA,eAAeD;IACjB;IAEA,OAAOE;AACT"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/measures/utils.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/utils.ts"],"sourcesContent":["import type { MeasureEncoding, MeasureGroup, MeasureTree } from 'src/types'\n\n/**\n * @description 检查是否为指标树, 指标树深度大于1. 如果存在一个指标为组, 即有children配置, 则认为是指标树.\n * @param vseed vseed\n * @returns\n */\nexport const isMeasureTreeWithChildren = <T extends MeasureTree>(measures?: T) => {\n if (!measures) {\n return false\n }\n\n return measures.some((measure) => 'children' in measure)\n}\n\n/**\n * @description 检查是否为指标树, 指标树存在parentId. 如果存在一个指标有parentId, 则认为是指标树.\n * @param vseed vseed\n * @returns\n */\nexport const isMeasureTreeWithParentId = <T extends MeasureTree>(measures?: T) => {\n if (!measures) {\n return false\n }\n\n return measures.some((measure) => 'parentId' in measure)\n}\n\n/**\n * @description 保证指标树中的每一组都有children, 没有children的指标, 会被放到一个默认的指标组中.\n * @param measures 指标树\n * @returns\n */\nexport const normalizeMeasureTree = (measures: MeasureTree) => {\n const createEmptyMeasureGroup = (): MeasureGroup => {\n return {\n id: 'group',\n alias: '',\n children: [],\n }\n }\n\n let currentGroup: MeasureGroup = createEmptyMeasureGroup()\n const measureGroups: MeasureGroup[] = []\n for (const measure of measures) {\n if ('children' in measure) {\n // 当前指标组之前的所有独立指标成组\n if (currentGroup.children?.length) {\n currentGroup.id = [currentGroup.id, ...currentGroup.children.map((item) => item.id)].join('-')\n currentGroup.alias = currentGroup.children.map((item) => item.alias).join('-')\n measureGroups.push(currentGroup)\n currentGroup = createEmptyMeasureGroup()\n }\n // 当前是指标组\n measureGroups.push(measure)\n } else {\n currentGroup.children?.push(measure)\n }\n }\n\n // 最后一组\n if (currentGroup.children?.length) {\n currentGroup.id = [currentGroup.id, ...currentGroup.children.map((item) => item.id)].join('-')\n currentGroup.alias = currentGroup.children.map((item) => item.alias).join('-')\n measureGroups.push(currentGroup)\n currentGroup = createEmptyMeasureGroup()\n }\n\n return measureGroups\n}\n\nexport const isCommonMeasureEncoding = (encoding: MeasureEncoding) => {\n return ['color', 'label', 'tooltip'].includes(encoding)\n}\n\n/**\n * @description Ensures that the measuresByView object has an initialized array for the given parentId.\n * If the parentId doesn't exist in measuresByView, it initializes an empty array and tracks the parentId.\n * @param parentId The parent ID to ensure initialization for\n * @param measuresByView The object mapping parent IDs to measures arrays\n * @param parentIds The array tracking all parent IDs that have been initialized\n */\nexport const ensureParentIdInitialized = <T>(\n parentId: string,\n measuresByView: { [key: string]: T[] },\n parentIds: string[],\n) => {\n if (!measuresByView[parentId]) {\n measuresByView[parentId] = []\n parentIds.push(parentId)\n }\n}\n"],"names":["isMeasureTreeWithChildren","measures","measure","isMeasureTreeWithParentId","normalizeMeasureTree","createEmptyMeasureGroup","currentGroup","measureGroups","item","isCommonMeasureEncoding","encoding","ensureParentIdInitialized","parentId","measuresByView","parentIds"],"mappings":"AAOO,MAAMA,4BAA4B,CAAwBC;IAC/D,IAAI,CAACA,UACH,OAAO;IAGT,OAAOA,SAAS,IAAI,CAAC,CAACC,UAAY,cAAcA;AAClD;AAOO,MAAMC,4BAA4B,CAAwBF;IAC/D,IAAI,CAACA,UACH,OAAO;IAGT,OAAOA,SAAS,IAAI,CAAC,CAACC,UAAY,cAAcA;AAClD;AAOO,MAAME,uBAAuB,CAACH;IACnC,MAAMI,0BAA0B,IACvB;YACL,IAAI;YACJ,OAAO;YACP,UAAU,EAAE;QACd;IAGF,IAAIC,eAA6BD;IACjC,MAAME,gBAAgC,EAAE;IACxC,KAAK,MAAML,WAAWD,SACpB,IAAI,cAAcC,SAAS;QAEzB,IAAII,aAAa,QAAQ,EAAE,QAAQ;YACjCA,aAAa,EAAE,GAAG;gBAACA,aAAa,EAAE;mBAAKA,aAAa,QAAQ,CAAC,GAAG,CAAC,CAACE,OAASA,KAAK,EAAE;aAAE,CAAC,IAAI,CAAC;YAC1FF,aAAa,KAAK,GAAGA,aAAa,QAAQ,CAAC,GAAG,CAAC,CAACE,OAASA,KAAK,KAAK,EAAE,IAAI,CAAC;YAC1ED,cAAc,IAAI,CAACD;YACnBA,eAAeD;QACjB;QAEAE,cAAc,IAAI,CAACL;IACrB,OACEI,aAAa,QAAQ,EAAE,KAAKJ;IAKhC,IAAII,aAAa,QAAQ,EAAE,QAAQ;QACjCA,aAAa,EAAE,GAAG;YAACA,aAAa,EAAE;eAAKA,aAAa,QAAQ,CAAC,GAAG,CAAC,CAACE,OAASA,KAAK,EAAE;SAAE,CAAC,IAAI,CAAC;QAC1FF,aAAa,KAAK,GAAGA,aAAa,QAAQ,CAAC,GAAG,CAAC,CAACE,OAASA,KAAK,KAAK,EAAE,IAAI,CAAC;QAC1ED,cAAc,IAAI,CAACD;QACnBA,eAAeD;IACjB;IAEA,OAAOE;AACT;AAEO,MAAME,0BAA0B,CAACC,WAC/B;QAAC;QAAS;QAAS;KAAU,CAAC,QAAQ,CAACA;AAUzC,MAAMC,4BAA4B,CACvCC,UACAC,gBACAC;IAEA,IAAI,CAACD,cAAc,CAACD,SAAS,EAAE;QAC7BC,cAAc,CAACD,SAAS,GAAG,EAAE;QAC7BE,UAAU,IAAI,CAACF;IACjB;AACF"}
@@ -1,7 +1,7 @@
1
1
  import { boxplot } from "@visactor/vdataset";
2
2
  import { uniqueBy } from "remeda";
3
3
  import { FoldMeasureId, FoldMeasureName, LowerWhisker, MedianMeasureId, OutliersMeasureId, Q1MeasureValue, Q3MeasureValue, Separator, UpperWhisker, unfoldDimensions } from "../../../../../dataReshape/index.js";
4
- import { revisedBoxPlotFieldKey } from "../../../../utils/index.js";
4
+ import { DEFAULT_PARENT_ID, revisedBoxPlotFieldKey } from "../../../../utils/index.js";
5
5
  const pivotReshapeWithBoxplotEncoding = (advancedVSeed, context)=>{
6
6
  const result = {
7
7
  ...advancedVSeed
@@ -9,30 +9,24 @@ const pivotReshapeWithBoxplotEncoding = (advancedVSeed, context)=>{
9
9
  const { vseed } = context;
10
10
  const { dataset, chartType } = vseed;
11
11
  const { encoding = {}, config } = advancedVSeed;
12
- const measures = advancedVSeed.reshapeMeasures ?? advancedVSeed.measures ?? [];
12
+ const reshapeMeasures = advancedVSeed.reshapeMeasures ?? [];
13
13
  const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? [];
14
14
  const uniqDims = uniqueBy(dimensions, (item)=>item.id);
15
15
  const chartConfig = config?.[chartType];
16
16
  const whiskers = chartConfig?.whiskers;
17
- const measureGroups = [];
18
- if (measures) measures.forEach((measure)=>{
19
- if (measure.children && measure.children.length > 0) measureGroups.push(measure);
20
- });
21
17
  const rowColumnFields = uniqueBy(dimensions.filter((dim)=>'row' === dim.encoding || 'column' === dim.encoding), (item)=>item.id);
22
18
  const datasets = [];
23
19
  const datasetReshapeInfo = [];
24
- measureGroups.forEach((measureGroup, index)=>{
25
- const subMeasures = measureGroup.children;
26
- if (!subMeasures) return;
27
- const groupId = measureGroup.id;
20
+ reshapeMeasures.forEach((measureGroup, index)=>{
21
+ const groupId = measureGroup[0].parentId ?? DEFAULT_PARENT_ID;
28
22
  let newDatasets = [];
29
23
  let foldInfo = {};
30
24
  let unfoldInfo = {};
31
- const validEncodingIds = (encoding.value || []).filter((id)=>subMeasures.find((field)=>field.id === id));
25
+ const validEncodingIds = (encoding.value || []).filter((id)=>measureGroup.find((field)=>field.id === id));
32
26
  if (validEncodingIds.length) {
33
27
  const boxPlotDataList = [];
34
28
  validEncodingIds.forEach((f)=>{
35
- const m = subMeasures.find((m)=>m.id === f);
29
+ const m = measureGroup.find((m)=>m.id === f);
36
30
  const boxPlotData = boxplot(dataset, {
37
31
  field: f,
38
32
  groupField: [
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.ts"],"sourcesContent":["import { boxplot } from '@visactor/vdataset'\nimport { uniqueBy } from 'remeda'\nimport {\n FoldMeasureId,\n FoldMeasureName,\n LowerWhisker,\n MedianMeasureId,\n OutliersMeasureId,\n Q1MeasureValue,\n Q3MeasureValue,\n Separator,\n unfoldDimensions,\n UpperWhisker,\n} from 'src/dataReshape'\nimport { revisedBoxPlotFieldKey } from 'src/pipeline/utils'\nimport type {\n AdvancedPipe,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Dimension,\n Encoding,\n MeasureGroup,\n} from 'src/types'\n\nexport const pivotReshapeWithBoxplotEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { encoding = {}, config } = advancedVSeed\n const measures = advancedVSeed.reshapeMeasures ?? advancedVSeed.measures ?? []\n const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? []\n const uniqDims = uniqueBy(dimensions, (item: Dimension) => item.id)\n const chartConfig = config?.[chartType as 'boxPlot']\n const whiskers = chartConfig?.whiskers\n\n const measureGroups: MeasureGroup[] = []\n if (measures) {\n measures.forEach((measure: MeasureGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n\n const rowColumnFields = uniqueBy(\n dimensions.filter((dim: Dimension) => dim.encoding === 'row' || dim.encoding === 'column'),\n (item: Dimension) => item.id,\n )\n const datasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measureGroups.forEach((measureGroup, index) => {\n const subMeasures = measureGroup.children\n if (!subMeasures) {\n return\n }\n const groupId = measureGroup.id\n let newDatasets: any[] = []\n let foldInfo: any = {}\n let unfoldInfo: any = {}\n const validEncodingIds = (encoding.value || []).filter((id) => subMeasures.find((field) => field.id === id))\n\n if (validEncodingIds.length) {\n const boxPlotDataList: Dataset = []\n validEncodingIds.forEach((f) => {\n const m = subMeasures.find((m) => m.id === f)\n const boxPlotData = boxplot(dataset, {\n field: f,\n groupField: [\n ...(encoding.x ?? []),\n ...(encoding.color ?? []),\n ...rowColumnFields.map((item: Dimension) => item.id),\n ] as string[],\n whiskers,\n outputNames: {\n q1: Q1MeasureValue,\n q3: Q3MeasureValue,\n lowerWhisker: LowerWhisker,\n upperWhisker: UpperWhisker,\n median: MedianMeasureId,\n outliers: OutliersMeasureId,\n },\n }) as Dataset\n\n boxPlotData.forEach((datum) => {\n datum[FoldMeasureId] = f\n datum[FoldMeasureName] = m?.alias ?? f\n datum[revisedBoxPlotFieldKey(Q1MeasureValue, groupId)] = datum[Q1MeasureValue]\n datum[revisedBoxPlotFieldKey(Q3MeasureValue, groupId)] = datum[Q3MeasureValue]\n datum[revisedBoxPlotFieldKey(LowerWhisker, groupId)] = datum[LowerWhisker]\n datum[revisedBoxPlotFieldKey(UpperWhisker, groupId)] = datum[UpperWhisker]\n datum[revisedBoxPlotFieldKey(MedianMeasureId, groupId)] = datum[MedianMeasureId]\n datum[revisedBoxPlotFieldKey(OutliersMeasureId, groupId)] = datum[OutliersMeasureId]\n })\n\n boxPlotDataList.push(...boxPlotData)\n })\n const res = unfoldDimensions(boxPlotDataList, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((d) => {\n newDatasets.push(d)\n })\n unfoldInfo = res.unfoldInfo\n } else if (\n encoding.q1?.length &&\n encoding.q3?.length &&\n encoding.min?.length &&\n encoding.max?.length &&\n encoding.median?.length\n ) {\n const res = unfoldDimensions(dataset, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((datum) => {\n datum[UpperWhisker] = datum[encoding.max![0]]\n datum[revisedBoxPlotFieldKey(Q1MeasureValue, groupId)] = datum[encoding.max![0]]\n datum[LowerWhisker] = datum[encoding.min![0]]\n datum[revisedBoxPlotFieldKey(LowerWhisker, groupId)] = datum[encoding.min![0]]\n datum[Q1MeasureValue] = datum[encoding.q1![0]]\n datum[revisedBoxPlotFieldKey(Q1MeasureValue, groupId)] = datum[encoding.q1![0]]\n datum[Q3MeasureValue] = datum[encoding.q3![0]]\n datum[revisedBoxPlotFieldKey(Q3MeasureValue, groupId)] = datum[encoding.q3![0]]\n datum[MedianMeasureId] = datum[encoding.median![0]]\n datum[revisedBoxPlotFieldKey(MedianMeasureId, groupId)] = datum[encoding.median![0]]\n })\n\n newDatasets = res.dataset\n foldInfo = {}\n unfoldInfo = res.unfoldInfo\n }\n\n const reshapeInfo = {\n id: `${groupId}`,\n index,\n foldInfo,\n unfoldInfo,\n }\n datasets.push(newDatasets)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n"],"names":["pivotReshapeWithBoxplotEncoding","advancedVSeed","context","result","vseed","dataset","chartType","encoding","config","measures","dimensions","uniqDims","uniqueBy","item","chartConfig","whiskers","measureGroups","measure","rowColumnFields","dim","datasets","datasetReshapeInfo","measureGroup","index","subMeasures","groupId","newDatasets","foldInfo","unfoldInfo","validEncodingIds","id","field","boxPlotDataList","f","m","boxPlotData","boxplot","Q1MeasureValue","Q3MeasureValue","LowerWhisker","UpperWhisker","MedianMeasureId","OutliersMeasureId","datum","FoldMeasureId","FoldMeasureName","revisedBoxPlotFieldKey","res","unfoldDimensions","Separator","d","reshapeInfo"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.ts"],"sourcesContent":["import { boxplot } from '@visactor/vdataset'\nimport { uniqueBy } from 'remeda'\nimport {\n FoldMeasureId,\n FoldMeasureName,\n LowerWhisker,\n MedianMeasureId,\n OutliersMeasureId,\n Q1MeasureValue,\n Q3MeasureValue,\n Separator,\n unfoldDimensions,\n UpperWhisker,\n} from 'src/dataReshape'\nimport { DEFAULT_PARENT_ID, revisedBoxPlotFieldKey } from 'src/pipeline/utils'\nimport type { AdvancedPipe, ColumnParallel, Dataset, DatasetReshapeInfo, Dimension, Encoding } from 'src/types'\n\nexport const pivotReshapeWithBoxplotEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { encoding = {}, config } = advancedVSeed\n const reshapeMeasures = advancedVSeed.reshapeMeasures ?? []\n const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? []\n const uniqDims = uniqueBy(dimensions, (item: Dimension) => item.id)\n const chartConfig = config?.[chartType as 'boxPlot']\n const whiskers = chartConfig?.whiskers\n\n const rowColumnFields = uniqueBy(\n dimensions.filter((dim: Dimension) => dim.encoding === 'row' || dim.encoding === 'column'),\n (item: Dimension) => item.id,\n )\n const datasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n reshapeMeasures.forEach((measureGroup, index) => {\n const groupId = measureGroup[0].parentId ?? DEFAULT_PARENT_ID\n let newDatasets: any[] = []\n let foldInfo: any = {}\n let unfoldInfo: any = {}\n const validEncodingIds = (encoding.value || []).filter((id) => measureGroup.find((field) => field.id === id))\n\n if (validEncodingIds.length) {\n const boxPlotDataList: Dataset = []\n validEncodingIds.forEach((f) => {\n const m = measureGroup.find((m) => m.id === f)\n const boxPlotData = boxplot(dataset, {\n field: f,\n groupField: [\n ...(encoding.x ?? []),\n ...(encoding.color ?? []),\n ...rowColumnFields.map((item: Dimension) => item.id),\n ] as string[],\n whiskers,\n outputNames: {\n q1: Q1MeasureValue,\n q3: Q3MeasureValue,\n lowerWhisker: LowerWhisker,\n upperWhisker: UpperWhisker,\n median: MedianMeasureId,\n outliers: OutliersMeasureId,\n },\n }) as Dataset\n\n boxPlotData.forEach((datum) => {\n datum[FoldMeasureId] = f\n datum[FoldMeasureName] = m?.alias ?? f\n datum[revisedBoxPlotFieldKey(Q1MeasureValue, groupId)] = datum[Q1MeasureValue]\n datum[revisedBoxPlotFieldKey(Q3MeasureValue, groupId)] = datum[Q3MeasureValue]\n datum[revisedBoxPlotFieldKey(LowerWhisker, groupId)] = datum[LowerWhisker]\n datum[revisedBoxPlotFieldKey(UpperWhisker, groupId)] = datum[UpperWhisker]\n datum[revisedBoxPlotFieldKey(MedianMeasureId, groupId)] = datum[MedianMeasureId]\n datum[revisedBoxPlotFieldKey(OutliersMeasureId, groupId)] = datum[OutliersMeasureId]\n })\n\n boxPlotDataList.push(...boxPlotData)\n })\n const res = unfoldDimensions(boxPlotDataList, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((d) => {\n newDatasets.push(d)\n })\n unfoldInfo = res.unfoldInfo\n } else if (\n encoding.q1?.length &&\n encoding.q3?.length &&\n encoding.min?.length &&\n encoding.max?.length &&\n encoding.median?.length\n ) {\n const res = unfoldDimensions(dataset, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((datum) => {\n datum[UpperWhisker] = datum[encoding.max![0]]\n datum[revisedBoxPlotFieldKey(Q1MeasureValue, groupId)] = datum[encoding.max![0]]\n datum[LowerWhisker] = datum[encoding.min![0]]\n datum[revisedBoxPlotFieldKey(LowerWhisker, groupId)] = datum[encoding.min![0]]\n datum[Q1MeasureValue] = datum[encoding.q1![0]]\n datum[revisedBoxPlotFieldKey(Q1MeasureValue, groupId)] = datum[encoding.q1![0]]\n datum[Q3MeasureValue] = datum[encoding.q3![0]]\n datum[revisedBoxPlotFieldKey(Q3MeasureValue, groupId)] = datum[encoding.q3![0]]\n datum[MedianMeasureId] = datum[encoding.median![0]]\n datum[revisedBoxPlotFieldKey(MedianMeasureId, groupId)] = datum[encoding.median![0]]\n })\n\n newDatasets = res.dataset\n foldInfo = {}\n unfoldInfo = res.unfoldInfo\n }\n\n const reshapeInfo = {\n id: `${groupId}`,\n index,\n foldInfo,\n unfoldInfo,\n }\n datasets.push(newDatasets)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n"],"names":["pivotReshapeWithBoxplotEncoding","advancedVSeed","context","result","vseed","dataset","chartType","encoding","config","reshapeMeasures","dimensions","uniqDims","uniqueBy","item","chartConfig","whiskers","rowColumnFields","dim","datasets","datasetReshapeInfo","measureGroup","index","groupId","DEFAULT_PARENT_ID","newDatasets","foldInfo","unfoldInfo","validEncodingIds","id","field","boxPlotDataList","f","m","boxPlotData","boxplot","Q1MeasureValue","Q3MeasureValue","LowerWhisker","UpperWhisker","MedianMeasureId","OutliersMeasureId","datum","FoldMeasureId","FoldMeasureName","revisedBoxPlotFieldKey","res","unfoldDimensions","Separator","d","reshapeInfo"],"mappings":"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"}