@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
package/dist/umd/index.js CHANGED
@@ -115,7 +115,6 @@
115
115
  zMeasures: ()=>zMeasures,
116
116
  zDualAxis: ()=>zDualAxis,
117
117
  FoldMeasureName: ()=>FoldMeasureName,
118
- zDualChartType: ()=>zDualChartType,
119
118
  darkTheme: ()=>darkTheme,
120
119
  isVTable: ()=>isVTable,
121
120
  BoxPlotPivotIndicator: ()=>BoxPlotPivotIndicator,
@@ -140,9 +139,9 @@
140
139
  findMeasureById: ()=>findMeasureById,
141
140
  AngleEncoding: ()=>AngleEncoding,
142
141
  areaPercentAdvancedPipeline: ()=>areaPercentAdvancedPipeline,
143
- findTreeNodesBy: ()=>findTreeNodesBy,
144
- zAreaPercentConfig: ()=>zAreaPercentConfig,
145
142
  zBackgroundColor: ()=>zBackgroundColor,
143
+ zAreaPercentConfig: ()=>zAreaPercentConfig,
144
+ findTreeNodesBy: ()=>findTreeNodesBy,
146
145
  MeasureId: ()=>MeasureId,
147
146
  registerRadar: ()=>registerRadar,
148
147
  zLocale: ()=>zLocale,
@@ -163,14 +162,14 @@
163
162
  zColumnPercent: ()=>zColumnPercent,
164
163
  foldMeasures: ()=>foldMeasures,
165
164
  isPivotTable: ()=>isPivotTable,
166
- zDimensionEncoding: ()=>zDimensionEncoding,
167
165
  registerPie: ()=>registerPie,
166
+ zDimensionEncoding: ()=>zDimensionEncoding,
168
167
  LowerWhisker: ()=>LowerWhisker,
169
168
  zEcdfRegressionLine: ()=>zEcdfRegressionLine,
170
169
  zBarParallelConfig: ()=>zBarParallelConfig,
170
+ lineAdvancedPipeline: ()=>lineAdvancedPipeline,
171
171
  AXIS_LABEL_SPACE: ()=>8,
172
172
  FoldMeasureValue: ()=>FoldMeasureValue,
173
- lineAdvancedPipeline: ()=>lineAdvancedPipeline,
174
173
  zFunnel: ()=>zFunnel,
175
174
  ANNOTATION_Z_INDEX: ()=>1000,
176
175
  Q3MeasureValue: ()=>"__Q3__",
@@ -198,7 +197,6 @@
198
197
  zLinearRegressionLine: ()=>zLinearRegressionLine,
199
198
  zRoseConfig: ()=>zRoseConfig,
200
199
  zBodyCellStyle: ()=>zBodyCellStyle,
201
- zScatterMeasures: ()=>zScatterMeasures,
202
200
  zAnnotation: ()=>zAnnotation,
203
201
  selector: ()=>selector_selector,
204
202
  zKdeRegressionLine: ()=>zKdeRegressionLine,
@@ -230,7 +228,6 @@
230
228
  registerAreaPercent: ()=>registerAreaPercent,
231
229
  zMeasureEncoding: ()=>zMeasureEncoding,
232
230
  zBarPercent: ()=>zBarPercent,
233
- zScatterMeasure: ()=>zScatterMeasure,
234
231
  zTheme: ()=>zTheme,
235
232
  zDatum: ()=>zDatum,
236
233
  barAdvancedPipeline: ()=>barAdvancedPipeline,
@@ -239,9 +236,10 @@
239
236
  registerHeatmap: ()=>registerHeatmap,
240
237
  isBarPercent: ()=>isBarPercent,
241
238
  checkVSeed: ()=>checkVSeed,
242
- zPivotTable: ()=>zPivotTable,
239
+ flatReshapeMeasures: ()=>flatReshapeMeasures,
243
240
  registerLightTheme: ()=>registerLightTheme,
244
241
  selectByDmension: ()=>selectByDmension,
242
+ zPivotTable: ()=>zPivotTable,
245
243
  isPartialDatumSelector: ()=>isPartialDatumSelector,
246
244
  isDimensionGroup: ()=>isDimensionGroup,
247
245
  registerPivotTable: ()=>registerPivotTable,
@@ -312,7 +310,9 @@
312
310
  ColorEncoding: ()=>ColorEncoding,
313
311
  measureDepth: ()=>measureDepth,
314
312
  BinCountMeasureId: ()=>BinCountMeasureId,
313
+ DEFAULT_DUAL_CHART_TYPE: ()=>DEFAULT_DUAL_CHART_TYPE,
315
314
  zAdvancedVSeed: ()=>zAdvancedVSeed,
315
+ isRectungularCoordinate: ()=>isRectungularCoordinate,
316
316
  zAreaPercent: ()=>zAreaPercent,
317
317
  isValueSelector: ()=>isValueSelector,
318
318
  donutAdvancedPipeline: ()=>donutAdvancedPipeline,
@@ -320,12 +320,13 @@
320
320
  zScatterConfig: ()=>zScatterConfig,
321
321
  zTooltip: ()=>zTooltip,
322
322
  isBarLikeChart: ()=>isBarLikeChart,
323
+ isDualAxisChartType: ()=>isDualAxisChartType,
323
324
  barParallelAdvancedPipeline: ()=>barParallelAdvancedPipeline,
324
- barPercentSpecPipeline: ()=>barPercentSpecPipeline,
325
325
  zBarPercentConfig: ()=>zBarPercentConfig,
326
- deleteMeasureTreeByCallback: ()=>deleteMeasureTreeByCallback,
326
+ barPercentSpecPipeline: ()=>barPercentSpecPipeline,
327
327
  dataReshapeByEncoding: ()=>dataReshapeByEncoding,
328
328
  lineSpecPipeline: ()=>lineSpecPipeline,
329
+ deleteMeasureTreeByCallback: ()=>deleteMeasureTreeByCallback,
329
330
  zDimensionGroup: ()=>zDimensionGroup,
330
331
  isPositionMeasure: ()=>isPositionMeasure
331
332
  });
@@ -535,80 +536,20 @@
535
536
  'tooltip',
536
537
  'detail'
537
538
  ].includes(measure.encoding);
538
- const preorderTraverse = (tree, callback, childrenKey = 'children')=>{
539
- if (!tree || 0 === tree.length) return;
540
- const stack = [
541
- ...tree
542
- ].reverse();
543
- while(stack.length > 0){
544
- const node = stack.pop();
545
- const stop = callback(node);
546
- if (true === stop) return;
547
- const children = node[childrenKey];
548
- if (Array.isArray(children) && children.length > 0) for(let i = children.length - 1; i >= 0; i--){
549
- const child = children[i];
550
- stack.push(child);
551
- }
552
- }
553
- };
554
- const findTreeNodesBy = (nodes = [], callback, childrenKey = 'children')=>{
555
- if (!nodes) return [];
556
- const result = [];
557
- preorderTraverse(nodes, (node)=>{
558
- if (!(childrenKey in node)) {
559
- if (callback(node)) result.push(node);
560
- }
561
- return false;
562
- });
563
- return result;
564
- };
565
- const measureDepth = (measures = [])=>{
566
- if (!measures) return 0;
567
- let depth = 1;
568
- preorderTraverse(measures, (node)=>{
569
- if ('children' in node) depth = Math.max(depth, 1 + measureDepth(node.children));
570
- return false;
571
- });
572
- return depth;
573
- };
574
- const isMeasureTreeWithChildren = (measures)=>{
575
- if (!measures) return false;
576
- return measures.some((measure)=>'children' in measure);
577
- };
578
539
  const isMeasureTreeWithParentId = (measures)=>{
579
540
  if (!measures) return false;
580
541
  return measures.some((measure)=>'parentId' in measure);
581
542
  };
582
- const normalizeMeasureTree = (measures)=>{
583
- const createEmptyMeasureGroup = ()=>({
584
- id: 'group',
585
- alias: '',
586
- children: []
587
- });
588
- let currentGroup = createEmptyMeasureGroup();
589
- const measureGroups = [];
590
- for (const measure of measures)if ('children' in measure) {
591
- if (currentGroup.children?.length) {
592
- currentGroup.id = [
593
- currentGroup.id,
594
- ...currentGroup.children.map((item)=>item.id)
595
- ].join('-');
596
- currentGroup.alias = currentGroup.children.map((item)=>item.alias).join('-');
597
- measureGroups.push(currentGroup);
598
- currentGroup = createEmptyMeasureGroup();
599
- }
600
- measureGroups.push(measure);
601
- } else currentGroup.children?.push(measure);
602
- if (currentGroup.children?.length) {
603
- currentGroup.id = [
604
- currentGroup.id,
605
- ...currentGroup.children.map((item)=>item.id)
606
- ].join('-');
607
- currentGroup.alias = currentGroup.children.map((item)=>item.alias).join('-');
608
- measureGroups.push(currentGroup);
609
- currentGroup = createEmptyMeasureGroup();
543
+ const isCommonMeasureEncoding = (encoding)=>[
544
+ 'color',
545
+ 'label',
546
+ 'tooltip'
547
+ ].includes(encoding);
548
+ const ensureParentIdInitialized = (parentId, measuresByView, parentIds)=>{
549
+ if (!measuresByView[parentId]) {
550
+ measuresByView[parentId] = [];
551
+ parentIds.push(parentId);
610
552
  }
611
- return measureGroups;
612
553
  };
613
554
  const DEFAULT_PARENT_ID = '__DefaultParentId__';
614
555
  const ChartTypeEnum = {
@@ -662,28 +603,40 @@
662
603
  const parentIds = vseed.measures?.filter(isPositionMeasure).map((measure)=>measure.parentId || DEFAULT_PARENT_ID);
663
604
  return parentIds && chunk_QJLMYOTX_i(parentIds).length > 1;
664
605
  }
665
- if ('dualAxis' === vseed.chartType || 'scatter' === vseed.chartType) {
666
- if ('scatter' === vseed.chartType) {
667
- if (isMeasureTreeWithChildren(vseed.measures)) {
668
- const depth = measureDepth(vseed.measures);
669
- return 3 === depth;
670
- }
671
- if (vseed.scatterMeasures && vseed.scatterMeasures.length > 1) return true;
672
- return false;
673
- }
674
- if ('dualAxis' === vseed.chartType) {
675
- if (isMeasureTreeWithChildren(vseed.measures)) {
676
- const depth = measureDepth(vseed.measures);
677
- return 3 === depth;
678
- }
679
- if (vseed.dualMeasures && vseed.dualMeasures.length > 1) return true;
680
- }
681
- return false;
682
- }
683
606
  const { measures = [] } = vseed;
684
607
  const hasMeasureGroup = measures && measures.some((measure)=>measure && measure.children);
685
608
  return hasMeasureGroup;
686
609
  };
610
+ const isRectungularCoordinate = (chartType)=>[
611
+ ChartTypeEnum.Bar,
612
+ ChartTypeEnum.BarPercent,
613
+ ChartTypeEnum.BarParallel,
614
+ ChartTypeEnum.Column,
615
+ ChartTypeEnum.ColumnPercent,
616
+ ChartTypeEnum.ColumnParallel,
617
+ ChartTypeEnum.Line,
618
+ ChartTypeEnum.Area,
619
+ ChartTypeEnum.AreaPercent,
620
+ ChartTypeEnum.DualAxis,
621
+ ChartTypeEnum.Boxplot,
622
+ ChartTypeEnum.DualAxis,
623
+ ChartTypeEnum.Scatter,
624
+ ChartTypeEnum.Heatmap,
625
+ ChartTypeEnum.Boxplot
626
+ ].includes(chartType);
627
+ const DEFAULT_DUAL_CHART_TYPE = {
628
+ primary: 'column',
629
+ secondary: 'line'
630
+ };
631
+ const isDualAxisChartType = (chartType)=>chartType && [
632
+ 'column',
633
+ 'columnParallel',
634
+ 'columnPercent',
635
+ 'line',
636
+ 'area',
637
+ 'areaPercent',
638
+ 'scatter'
639
+ ].includes(chartType);
687
640
  const getColorItems = (builder)=>{
688
641
  const advancedVSeed = builder.advancedVSeed;
689
642
  if (!advancedVSeed || isTable(builder.vseed) || isPivotTable(builder.vseed)) return [];
@@ -827,6 +780,33 @@
827
780
  for (let [e, c] of n.entries())r[e] = chunk_BCBB46UE_u(c, o, t);
828
781
  return r;
829
782
  }
783
+ const preorderTraverse = (tree, callback, childrenKey = 'children')=>{
784
+ if (!tree || 0 === tree.length) return;
785
+ const stack = [
786
+ ...tree
787
+ ].reverse();
788
+ while(stack.length > 0){
789
+ const node = stack.pop();
790
+ const stop = callback(node);
791
+ if (true === stop) return;
792
+ const children = node[childrenKey];
793
+ if (Array.isArray(children) && children.length > 0) for(let i = children.length - 1; i >= 0; i--){
794
+ const child = children[i];
795
+ stack.push(child);
796
+ }
797
+ }
798
+ };
799
+ const findTreeNodesBy = (nodes = [], callback, childrenKey = 'children')=>{
800
+ if (!nodes) return [];
801
+ const result = [];
802
+ preorderTraverse(nodes, (node)=>{
803
+ if (!(childrenKey in node)) {
804
+ if (callback(node)) result.push(node);
805
+ }
806
+ return false;
807
+ });
808
+ return result;
809
+ };
830
810
  const defaultMeasures_defaultMeasures = (advancedVSeed, context)=>{
831
811
  const { vseed } = context;
832
812
  const { measures, dataset } = vseed;
@@ -838,7 +818,7 @@
838
818
  });
839
819
  return {
840
820
  ...advancedVSeed,
841
- measures: clonedMeasures
821
+ measureTree: clonedMeasures
842
822
  };
843
823
  }
844
824
  const top100dataset = dataset.slice(0, 100);
@@ -856,7 +836,7 @@
856
836
  }));
857
837
  return {
858
838
  ...advancedVSeed,
859
- measures: defaultMeasures
839
+ measureTree: defaultMeasures
860
840
  };
861
841
  };
862
842
  const isDimension = (dimension)=>!('children' in dimension);
@@ -896,18 +876,8 @@
896
876
  });
897
877
  return result;
898
878
  };
899
- const hasMultipleMeasureInSingleView = (measures = [])=>{
900
- if (measures.every((m)=>!('children' in m))) return measures.length > 1;
901
- let found = false;
902
- preorderTraverse(measures, (node)=>{
903
- if (node.children && node.children.length > 1) {
904
- found = true;
905
- return true;
906
- }
907
- return false;
908
- });
909
- return found;
910
- };
879
+ const hasMultipleMeasureInSingleView = (reshapeMeasures)=>reshapeMeasures.some((m)=>m.length > 1);
880
+ const flatReshapeMeasures = (reshapeMeasures)=>reshapeMeasures.flat();
911
881
  const defaultDimensions = (advancedVSeed, context)=>{
912
882
  const result = {
913
883
  ...advancedVSeed
@@ -922,10 +892,10 @@
922
892
  });
923
893
  return {
924
894
  ...advancedVSeed,
925
- dimensions: clonedDimensions
895
+ dimensionTree: clonedDimensions
926
896
  };
927
897
  }
928
- const measures = findAllMeasures(advancedVSeed.measures);
898
+ const measures = findAllMeasures(advancedVSeed.measureTree);
929
899
  const top100dataset = dataset.slice(0, 100);
930
900
  const sample = top100dataset.reduce((prev, cur)=>({
931
901
  ...prev,
@@ -941,7 +911,7 @@
941
911
  }));
942
912
  return {
943
913
  ...result,
944
- dimensions: newDimensions
914
+ dimensionTree: newDimensions
945
915
  };
946
916
  };
947
917
  function chunk_2T7K3PFL_i(...e) {
@@ -1129,7 +1099,7 @@
1129
1099
  };
1130
1100
  const dimensionTreeToColumns = (spec, context)=>{
1131
1101
  const { advancedVSeed } = context;
1132
- const dimensions = advancedVSeed.dimensions;
1102
+ const dimensionTree = advancedVSeed.dimensionTree;
1133
1103
  const result = {
1134
1104
  ...spec
1135
1105
  };
@@ -1139,7 +1109,7 @@
1139
1109
  };
1140
1110
  return {};
1141
1111
  };
1142
- const columns = treeTreeToColumns(dimensions, eachNode);
1112
+ const columns = treeTreeToColumns(dimensionTree, eachNode);
1143
1113
  return {
1144
1114
  ...result,
1145
1115
  columns: [
@@ -1249,7 +1219,7 @@
1249
1219
  };
1250
1220
  const measureTreeToColumns = (spec, context)=>{
1251
1221
  const { advancedVSeed } = context;
1252
- const measures = advancedVSeed.measures;
1222
+ const measureTree = advancedVSeed.measureTree;
1253
1223
  const result = {
1254
1224
  ...spec
1255
1225
  };
@@ -1260,7 +1230,7 @@
1260
1230
  };
1261
1231
  return {};
1262
1232
  };
1263
- const columns = measuresToColumns_treeTreeToColumns(measures, eachNode);
1233
+ const columns = measuresToColumns_treeTreeToColumns(measureTree, eachNode);
1264
1234
  return {
1265
1235
  ...result,
1266
1236
  columns: [
@@ -1692,8 +1662,8 @@
1692
1662
  const result = {
1693
1663
  ...advancedVSeed
1694
1664
  };
1695
- const measures = findAllMeasures(advancedVSeed.measures);
1696
- if (measures.length > 1 && !result.dimensions?.some((dim)=>dim.id === MeasureName)) result.dimensions?.push({
1665
+ const measures = findAllMeasures(advancedVSeed.measureTree);
1666
+ if (measures.length > 1 && !findTreeNodesBy(advancedVSeed.dimensionTree, (dim)=>dim.id === MeasureId || dim.id === MeasureName).length) result.dimensionTree.push({
1697
1667
  id: MeasureId,
1698
1668
  alias: intl.i18n`指标名称`,
1699
1669
  encoding: 'row'
@@ -1701,13 +1671,13 @@
1701
1671
  return result;
1702
1672
  };
1703
1673
  const encodingForPivotTable = (advancedVSeed)=>{
1704
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
1705
- const measures = findAllMeasures(vseedMeasures);
1706
- const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
1674
+ const { measureTree = [], dimensionTree = [] } = advancedVSeed;
1675
+ const measures = findAllMeasures(measureTree);
1676
+ const hasDimensionEncoding = dimensionTree.some((item)=>item.encoding);
1707
1677
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
1708
1678
  const encoding = {};
1709
- if (hasDimensionEncoding) generateDimensionEncoding(dimensions, encoding);
1710
- else generateDefaultDimensionEncoding(dimensions, encoding);
1679
+ if (hasDimensionEncoding) generateDimensionEncoding(dimensionTree, encoding);
1680
+ else generateDefaultDimensionEncoding(dimensionTree, encoding);
1711
1681
  if (hasMeasureEncoding) generateMeasureEncoding(measures, encoding);
1712
1682
  else generateDefaultMeasureEncoding(measures, encoding);
1713
1683
  return {
@@ -1810,8 +1780,8 @@
1810
1780
  };
1811
1781
  const { vseed } = context;
1812
1782
  const { dataset, chartType } = vseed;
1813
- const { dimensions, measures } = advancedVSeed;
1814
- const { dataset: newDatasets, foldInfo } = foldMeasures(dataset, findAllMeasures(measures), {
1783
+ const { measureTree } = advancedVSeed;
1784
+ const { dataset: newDatasets, foldInfo } = foldMeasures(dataset, findAllMeasures(measureTree), {
1815
1785
  measureId: FoldMeasureId,
1816
1786
  measureName: FoldMeasureName,
1817
1787
  measureValue: FoldMeasureValue,
@@ -1827,9 +1797,7 @@
1827
1797
  return {
1828
1798
  ...result,
1829
1799
  dataset: newDatasets,
1830
- datasetReshapeInfo: datasetReshapeInfo,
1831
- dimensions,
1832
- measures
1800
+ datasetReshapeInfo: datasetReshapeInfo
1833
1801
  };
1834
1802
  };
1835
1803
  const pivotTableConfig = (advancedVSeed, context)=>{
@@ -1915,7 +1883,7 @@
1915
1883
  const pivotColumns = (spec, context)=>{
1916
1884
  const { advancedVSeed } = context;
1917
1885
  const { encoding } = advancedVSeed;
1918
- const dimensions = advancedVSeed.dimensions;
1886
+ const dimensions = advancedVSeed.dimensionTree;
1919
1887
  const columns = dimensions.filter((item)=>encoding.column?.includes(item.id));
1920
1888
  return {
1921
1889
  ...spec,
@@ -1928,10 +1896,10 @@
1928
1896
  };
1929
1897
  const pivotRows = (spec, context)=>{
1930
1898
  const { advancedVSeed } = context;
1931
- const dimensions = advancedVSeed.dimensions;
1932
- const { encoding, measures } = advancedVSeed;
1899
+ const dimensions = advancedVSeed.dimensionTree;
1900
+ const { encoding } = advancedVSeed;
1933
1901
  const rows = dimensions.filter((item)=>encoding.row?.includes(item.id));
1934
- const allMeasures = findAllMeasures(measures);
1902
+ const allMeasures = findAllMeasures(advancedVSeed.measureTree);
1935
1903
  return {
1936
1904
  ...spec,
1937
1905
  rows: rows.map((item)=>{
@@ -1959,7 +1927,7 @@
1959
1927
  };
1960
1928
  const pivotIndicators = (spec, context)=>{
1961
1929
  const { advancedVSeed } = context;
1962
- const { measures, datasetReshapeInfo } = advancedVSeed;
1930
+ const { measureTree, datasetReshapeInfo } = advancedVSeed;
1963
1931
  const { foldInfo } = datasetReshapeInfo[0];
1964
1932
  const hasRow = spec?.rows?.length > 0;
1965
1933
  const foldMapValues = Object.values(foldInfo.foldMap);
@@ -1974,18 +1942,18 @@
1974
1942
  indicatorKey: foldInfo.measureValue,
1975
1943
  title: foldMapValues.length > 1 ? '' : foldMapValues[0],
1976
1944
  width: 'auto',
1977
- format: pivotIndicators_fieldFormat(measures, foldInfo)
1945
+ format: pivotIndicators_fieldFormat(measureTree, foldInfo)
1978
1946
  }
1979
1947
  ]
1980
1948
  };
1981
1949
  };
1982
- const pivotIndicators_fieldFormat = (measures, foldInfo)=>(value, col, row, table)=>{
1950
+ const pivotIndicators_fieldFormat = (measureTree, foldInfo)=>(value, col, row, table)=>{
1983
1951
  if (!chunk_6GTAPB47_e(col) || !chunk_6GTAPB47_e(row) || !table) return value;
1984
1952
  const datum = table.getCellOriginRecord(col, row);
1985
1953
  if (!datum[0]) return value;
1986
1954
  const { measureId: foldMeasureId } = foldInfo;
1987
1955
  const measureId = datum[0][foldMeasureId];
1988
- const measure = findMeasureById(measures, measureId);
1956
+ const measure = findMeasureById(measureTree, measureId);
1989
1957
  const formatter = createFormatterByMeasure(measure);
1990
1958
  return formatter(value);
1991
1959
  };
@@ -2143,7 +2111,7 @@
2143
2111
  };
2144
2112
  const dataConfig = (spec, context)=>{
2145
2113
  const { advancedVSeed } = context;
2146
- const measures = findAllMeasures(advancedVSeed.measures);
2114
+ const measures = findAllMeasures(advancedVSeed.measureTree);
2147
2115
  const aggregationRules = measures.map((measure)=>({
2148
2116
  field: measure.id,
2149
2117
  aggregationType: 'NONE',
@@ -2190,9 +2158,8 @@
2190
2158
  const { measures, dataset } = vseed;
2191
2159
  if (measures && measures.length > 0) {
2192
2160
  const clonedMeasures = chunk_BCBB46UE_d(measures);
2193
- preorderTraverse(clonedMeasures, (node)=>{
2194
- node.alias = node.alias || node.id;
2195
- return false;
2161
+ clonedMeasures.forEach((m)=>{
2162
+ m.alias = m.alias ?? m.id;
2196
2163
  });
2197
2164
  return {
2198
2165
  ...advancedVSeed,
@@ -2230,7 +2197,7 @@
2230
2197
  alias: dim.alias || dim.id
2231
2198
  })))
2232
2199
  };
2233
- const measures = findAllMeasures(advancedVSeed.measures);
2200
+ const measures = advancedVSeed.measures;
2234
2201
  const top100dataset = dataset.slice(0, 100);
2235
2202
  const sample = top100dataset.reduce((prev, cur)=>({
2236
2203
  ...prev,
@@ -2268,54 +2235,25 @@
2268
2235
  if (hasEncoding) return execPipeline(hasEncodingPipeline, context, advancedVSeed);
2269
2236
  return execPipeline(noEncodingPipeline, context, advancedVSeed);
2270
2237
  };
2271
- const buildMeasures = (advancedVSeed)=>{
2272
- if (isMeasureTreeWithChildren(advancedVSeed.measures)) {
2273
- advancedVSeed.measures = normalizeMeasureTree(advancedVSeed.measures);
2274
- return advancedVSeed;
2275
- }
2276
- if (isMeasureTreeWithParentId(advancedVSeed.measures)) {
2277
- advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures);
2278
- return advancedVSeed;
2279
- }
2280
- if (chatType_isPivotChart(advancedVSeed)) advancedVSeed.measures = basicMeasuresToMeasureTree(advancedVSeed.measures);
2281
- return advancedVSeed;
2282
- };
2283
- const generateMeasuresByParentId = (measures)=>{
2284
- const measureTree = [];
2285
- measures.forEach((measure)=>{
2286
- const parent = measureTree.find((item)=>item.id === measure.parentId);
2287
- if (parent && 'children' in parent) {
2288
- parent.children = parent.children || [];
2289
- if (parent.children.length > 0) parent.alias += `-${measure.alias ?? measure.id}`;
2290
- parent.children.push(measure);
2291
- } else if (common_isValid(measure.parentId)) measureTree.push({
2292
- id: measure.parentId,
2293
- alias: measure.alias ?? measure.id,
2294
- children: [
2295
- measure
2296
- ]
2297
- });
2298
- else measureTree.push({
2299
- id: DEFAULT_PARENT_ID,
2300
- alias: measure.alias ?? measure.id,
2301
- children: [
2302
- measure
2303
- ]
2304
- });
2305
- });
2306
- return measureTree;
2307
- };
2308
- const basicMeasuresToMeasureTree = (measures)=>{
2309
- const id = measures.map((item)=>item.id).join('-');
2310
- const alias = measures.map((item)=>item.alias || item.id).join('-');
2311
- return [
2312
- {
2313
- id,
2314
- alias,
2315
- children: measures
2238
+ const buildMeasures = (encodingKeys)=>(advancedVSeed)=>{
2239
+ const { measures = [] } = advancedVSeed;
2240
+ const measuresByView = {};
2241
+ const parentIds = [];
2242
+ for(let index = 0; index < measures.length; index++){
2243
+ const item = measures[index];
2244
+ const encoding = item.encoding;
2245
+ const parentId = item.parentId || DEFAULT_PARENT_ID;
2246
+ const isOtherEncoding = item.encoding && isCommonMeasureEncoding(encoding);
2247
+ ensureParentIdInitialized(parentId, measuresByView, parentIds);
2248
+ if (encodingKeys.includes(encoding)) measuresByView[parentId].push(item);
2249
+ else if (!isOtherEncoding) {
2250
+ item.encoding = encodingKeys[0];
2251
+ measuresByView[parentId].push(item);
2252
+ }
2316
2253
  }
2317
- ];
2318
- };
2254
+ advancedVSeed.reshapeMeasures = parentIds.map((pid)=>measuresByView[pid]).filter((m)=>m.length > 0);
2255
+ return advancedVSeed;
2256
+ };
2319
2257
  const addColorToEncoding = (dimensions, encoding, isMultiMeasure)=>{
2320
2258
  encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
2321
2259
  const measureId = dimensions.find((item)=>item.id === MeasureId);
@@ -2333,27 +2271,23 @@
2333
2271
  ];
2334
2272
  };
2335
2273
  const defaultEncodingForLine = (advancedVSeed)=>{
2336
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
2337
- const measures = findAllMeasures(vseedMeasures);
2274
+ const { reshapeMeasures = [], measures = [], dimensions = [] } = advancedVSeed;
2338
2275
  const encoding = {};
2339
- line_generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(vseedMeasures));
2340
- line_generateDefaultMeasureEncoding(measures, encoding);
2276
+ line_generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(reshapeMeasures));
2277
+ line_generateMeasureEncoding(measures, encoding);
2341
2278
  return {
2342
2279
  ...advancedVSeed,
2343
2280
  encoding
2344
2281
  };
2345
2282
  };
2346
2283
  const encodingForLine = (advancedVSeed)=>{
2347
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
2348
- const measures = findAllMeasures(vseedMeasures);
2284
+ const { reshapeMeasures = [], measures = [], dimensions = [] } = advancedVSeed;
2349
2285
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
2350
- const hasMeasureEncoding = measures.some((item)=>item.encoding);
2351
2286
  const encoding = {};
2352
- const hasMulti = hasMultipleMeasureInSingleView(vseedMeasures);
2287
+ const hasMulti = hasMultipleMeasureInSingleView(reshapeMeasures);
2353
2288
  if (hasDimensionEncoding) line_generateDimensionEncoding(dimensions, encoding, hasMulti);
2354
2289
  else line_generateDefaultDimensionEncoding(dimensions, encoding, hasMulti);
2355
- if (hasMeasureEncoding) line_generateMeasureEncoding(measures, encoding);
2356
- else line_generateDefaultMeasureEncoding(measures, encoding);
2290
+ line_generateMeasureEncoding(measures, encoding);
2357
2291
  return {
2358
2292
  ...advancedVSeed,
2359
2293
  encoding
@@ -2384,9 +2318,6 @@
2384
2318
  encoding.label = chunk_QJLMYOTX_i(dimensions.filter((item)=>'label' === item.encoding).map((item)=>item.id));
2385
2319
  encoding.label = encoding.label.filter((d)=>d !== MeasureId);
2386
2320
  };
2387
- const line_generateDefaultMeasureEncoding = (measures, encoding)=>{
2388
- encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
2389
- };
2390
2321
  const line_generateMeasureEncoding = (measures, encoding)=>{
2391
2322
  encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
2392
2323
  const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
@@ -2403,95 +2334,12 @@
2403
2334
  ...tooltip
2404
2335
  ]);
2405
2336
  };
2406
- const deleteMeasureTreeByCallback = (measureTree, callback)=>{
2407
- if (!measureTree) return;
2408
- const stack = [
2409
- ...measureTree
2410
- ].reverse();
2411
- const parents = new Map();
2412
- measureTree.forEach((node)=>{
2413
- parents.set(node, measureTree);
2414
- });
2415
- const nodesToProcess = [];
2416
- const visited = new Set();
2417
- while(stack.length > 0){
2418
- const node = stack[stack.length - 1];
2419
- if (isMeasureGroup(node) && node.children && !visited.has(node)) {
2420
- visited.add(node);
2421
- const children = node.children.slice().reverse();
2422
- for (const child of children){
2423
- parents.set(child, node.children);
2424
- stack.push(child);
2425
- }
2426
- } else {
2427
- stack.pop();
2428
- nodesToProcess.push(node);
2429
- }
2430
- }
2431
- const deleted = [];
2432
- for (const node of nodesToProcess){
2433
- const parentList = parents.get(node);
2434
- if (parentList) {
2435
- const index = parentList.indexOf(node);
2436
- if (isMeasure(node)) {
2437
- if (callback?.(node, index, parentList)) {
2438
- parentList.splice(index, 1);
2439
- deleted.push(node);
2440
- }
2441
- }
2442
- }
2443
- }
2444
- return deleted;
2445
- };
2446
- const pickMeasuresForReshape = (encodingKeys)=>(advancedVSeed)=>{
2447
- const clonedMeasures = chunk_BCBB46UE_d(advancedVSeed.measures);
2448
- const deleteBy = (measure)=>encodingKeys.includes(measure.encoding);
2449
- deleteMeasureTreeByCallback(clonedMeasures, deleteBy);
2450
- return {
2451
- ...advancedVSeed,
2452
- reshapeMeasures: clonedMeasures
2453
- };
2454
- };
2455
- const deleteDimensionTreeByCallback = (dimensionTree, callback)=>{
2456
- if (!dimensionTree) return dimensionTree;
2457
- const stack = [
2458
- ...dimensionTree
2459
- ].reverse();
2460
- const parents = new Map();
2461
- dimensionTree.forEach((node)=>{
2462
- parents.set(node, dimensionTree);
2463
- });
2464
- const nodesToProcess = [];
2465
- const visited = new Set();
2466
- while(stack.length > 0){
2467
- const node = stack[stack.length - 1];
2468
- if (isDimensionGroup(node) && node.children && !visited.has(node)) {
2469
- visited.add(node);
2470
- const children = node.children.slice().reverse();
2471
- for (const child of children){
2472
- parents.set(child, node.children);
2473
- stack.push(child);
2474
- }
2475
- } else {
2476
- stack.pop();
2477
- nodesToProcess.push(node);
2478
- }
2479
- }
2480
- for (const node of nodesToProcess){
2481
- const parentList = parents.get(node);
2482
- if (parentList) {
2483
- const index = parentList.indexOf(node);
2484
- if (isDimension(node)) {
2485
- if (callback?.(node, index, parentList)) parentList.splice(index, 1);
2486
- }
2487
- }
2488
- }
2489
- return dimensionTree;
2490
- };
2491
2337
  const pickDimensionsForReshape = (advancedVSeed)=>{
2492
2338
  const deleteBy = (dimension)=>'tooltip' === dimension.encoding || 'label' === dimension.encoding;
2493
- const reshapeDimensions = chunk_BCBB46UE_d(advancedVSeed.dimensions);
2494
- deleteDimensionTreeByCallback(reshapeDimensions, deleteBy);
2339
+ const reshapeDimensions = [];
2340
+ (advancedVSeed.dimensions ?? []).forEach((d)=>{
2341
+ if (!deleteBy(d)) reshapeDimensions.push(d);
2342
+ });
2495
2343
  return {
2496
2344
  ...advancedVSeed,
2497
2345
  reshapeDimensions
@@ -2599,8 +2447,7 @@
2599
2447
  }
2600
2448
  const isLinearColor = (advancedVSeed, vseed)=>{
2601
2449
  const { encoding } = advancedVSeed;
2602
- const measures = vseed.measures || advancedVSeed.measures;
2603
- const measureIdList = findAllMeasures(measures).map((measure)=>measure.id);
2450
+ const measureIdList = (vseed.measures || advancedVSeed.measures).map((measure)=>measure.id);
2604
2451
  const { color } = encoding;
2605
2452
  return color?.length === 1 && measureIdList.includes(color[0]);
2606
2453
  };
@@ -2619,7 +2466,7 @@
2619
2466
  const { dataset, chartType } = vseed;
2620
2467
  const { encoding } = advancedVSeed;
2621
2468
  const colorMeasureId = getColorMeasureId(advancedVSeed, vseed);
2622
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, T(advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? [], (item)=>item.id), T(findAllMeasures(advancedVSeed.reshapeMeasures ?? advancedVSeed.measures), (item)=>item.id), encoding, {
2469
+ const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, T(advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? [], (item)=>item.id), T(advancedVSeed.reshapeMeasures?.[0] ?? [], (item)=>item.id), encoding, {
2623
2470
  colorItemAsId: false,
2624
2471
  colorMeasureId
2625
2472
  });
@@ -2643,24 +2490,19 @@
2643
2490
  const { vseed } = context;
2644
2491
  const { dataset } = vseed;
2645
2492
  const { encoding } = advancedVSeed;
2646
- const measures = advancedVSeed.reshapeMeasures ?? advancedVSeed.measures ?? [];
2493
+ const reshapeMeasures = advancedVSeed.reshapeMeasures ?? [];
2647
2494
  const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? [];
2648
- const allMeasures = findAllMeasures(measures);
2649
- const measureGroups = [];
2650
- if (measures) measures.forEach((measure)=>{
2651
- if (measure.children && measure.children.length > 0) measureGroups.push(measure);
2652
- });
2495
+ const allMeasuresIds = reshapeMeasures.flatMap((measureGroup)=>measureGroup.map((m)=>m.id));
2653
2496
  const datasets = [];
2654
2497
  const datasetReshapeInfo = [];
2655
- measureGroups.forEach((measureGroup, index)=>{
2656
- const measures = measureGroup.children;
2498
+ reshapeMeasures.forEach((measures, index)=>{
2657
2499
  if (!measures) return;
2658
- const groupId = measureGroup.id;
2500
+ const groupId = measures[0].parentId ?? DEFAULT_PARENT_ID;
2659
2501
  const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, T(dimensions, (item)=>item.id), T(measures, (item)=>item.id), encoding, {
2660
2502
  colorItemAsId: false,
2661
2503
  foldMeasureValue: `${FoldMeasureValue}${groupId}`,
2662
2504
  colorMeasureId: getColorMeasureId(advancedVSeed, vseed),
2663
- omitIds: allMeasures.map((item)=>item.id)
2505
+ omitIds: allMeasuresIds
2664
2506
  });
2665
2507
  const reshapeInfo = {
2666
2508
  id: `${groupId}`,
@@ -2804,16 +2646,17 @@
2804
2646
  defaultDimensions_defaultDimensions,
2805
2647
  defaultMeasureId_defaultMeasureId,
2806
2648
  encodingAdapter([
2807
- buildMeasures,
2649
+ buildMeasures([
2650
+ 'yAxis',
2651
+ 'detail'
2652
+ ]),
2808
2653
  defaultEncodingForLine
2809
2654
  ], [
2810
- buildMeasures,
2811
- encodingForLine,
2812
- pickMeasuresForReshape([
2813
- 'tooltip',
2814
- 'label',
2815
- 'color'
2655
+ buildMeasures([
2656
+ 'yAxis',
2657
+ 'detail'
2816
2658
  ]),
2659
+ encodingForLine,
2817
2660
  pickDimensionsForReshape
2818
2661
  ]),
2819
2662
  pivotAdapter([
@@ -2992,16 +2835,13 @@
2992
2835
  result.progressiveThreshold = 1 / 0;
2993
2836
  return result;
2994
2837
  };
2995
- const defaultTitleText = (measures, dimensions, idList = [])=>{
2996
- const allMeasures = findAllMeasures(measures);
2997
- return idList.map((id)=>{
2838
+ const defaultTitleText = (measures, dimensions, idList = [])=>idList.map((id)=>{
2998
2839
  const alias = [
2999
- ...allMeasures,
2840
+ ...measures,
3000
2841
  ...dimensions
3001
2842
  ].find((f)=>f.id === id)?.alias || '';
3002
2843
  return alias;
3003
2844
  }).join(' & ');
3004
- };
3005
2845
  const isNull = (value)=>null === value;
3006
2846
  const common_isNull = isNull;
3007
2847
  const bandAxisStyle = (config)=>{
@@ -3071,7 +2911,7 @@
3071
2911
  };
3072
2912
  const { advancedVSeed, vseed } = context;
3073
2913
  const { chartType } = vseed;
3074
- const { measures, dimensions, encoding, datasetReshapeInfo, pivotAllDatasetReshapeInfo } = advancedVSeed;
2914
+ const { measures = [], dimensions = [], encoding, datasetReshapeInfo, pivotAllDatasetReshapeInfo } = advancedVSeed;
3075
2915
  const config = advancedVSeed.config?.[chartType]?.xAxis ?? {};
3076
2916
  if (!result.axes) result.axes = [];
3077
2917
  const { labelAutoLimitLength = 80 } = config;
@@ -3194,7 +3034,7 @@
3194
3034
  };
3195
3035
  const { advancedVSeed, vseed } = context;
3196
3036
  const { chartType } = vseed;
3197
- const { measures, dimensions, encoding } = advancedVSeed;
3037
+ const { measures = [], dimensions = [], encoding } = advancedVSeed;
3198
3038
  const config = advancedVSeed.config?.[chartType]?.yAxis ?? {};
3199
3039
  if (!result.axes) result.axes = [];
3200
3040
  const isPivot = chatType_isPivotChart(vseed);
@@ -3860,7 +3700,7 @@
3860
3700
  ...spec
3861
3701
  };
3862
3702
  const { advancedVSeed, vseed } = context;
3863
- const { measures, datasetReshapeInfo, chartType, dimensions, encoding } = advancedVSeed;
3703
+ const { measures = [], datasetReshapeInfo, chartType, dimensions = [], encoding } = advancedVSeed;
3864
3704
  const baseConfig = advancedVSeed.config[chartType];
3865
3705
  const { tooltip = {
3866
3706
  enable: true
@@ -3874,7 +3714,7 @@
3874
3714
  title: {
3875
3715
  visible: false
3876
3716
  },
3877
- content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), foldInfo, unfoldInfo)
3717
+ content: createMarkContent(encoding.tooltip || [], dimensions, vseed.measures, foldInfo, unfoldInfo)
3878
3718
  },
3879
3719
  dimension: {
3880
3720
  title: {
@@ -3886,7 +3726,7 @@
3886
3726
  };
3887
3727
  return result;
3888
3728
  };
3889
- const createDimensionContent = (dimensions, measures, foldInfo, unfoldInfo)=>{
3729
+ const createDimensionContent = (dimensions = [], measures = [], foldInfo, unfoldInfo)=>{
3890
3730
  const { measureId, measureValue, foldMap } = foldInfo;
3891
3731
  const { encodingColor } = unfoldInfo;
3892
3732
  return [
@@ -3915,7 +3755,7 @@
3915
3755
  }
3916
3756
  ];
3917
3757
  };
3918
- const createMarkContent = (tooltip, dimensions, measures, foldInfo, unfoldInfo)=>{
3758
+ const createMarkContent = (tooltip, dimensions = [], measures = [], foldInfo, unfoldInfo)=>{
3919
3759
  const dims = C(dimensions.filter((item)=>tooltip.includes(item.id)), T((item)=>item.id), T((item)=>item.alias));
3920
3760
  const meas = C(measures.filter((item)=>tooltip.includes(item.id)), T((item)=>item.id), T((item)=>item.alias));
3921
3761
  const dimContent = dims.map((item)=>({
@@ -5276,12 +5116,12 @@
5276
5116
  ...spec
5277
5117
  };
5278
5118
  const { advancedVSeed } = context;
5279
- const { measures, datasetReshapeInfo, dataset, encoding } = advancedVSeed;
5119
+ const { datasetReshapeInfo, dataset, encoding, reshapeMeasures = [] } = advancedVSeed;
5280
5120
  const colorItems = chunk_QJLMYOTX_i(datasetReshapeInfo.flatMap((d)=>d.unfoldInfo.colorItems));
5281
5121
  const allMeasureIds = chunk_QJLMYOTX_i(datasetReshapeInfo.flatMap((d)=>Object.keys(d.foldInfo.foldMap || {})));
5282
5122
  const indicators = datasetReshapeInfo.map((reshapeInfo, index)=>{
5283
- const measureGroup = measures?.find((d)=>`${d.id}` === reshapeInfo.id);
5284
- const subMeasuresId = (measureGroup?.children || []).map((d)=>d.id);
5123
+ const subMeasures = reshapeMeasures[index] || [];
5124
+ const subMeasuresId = (reshapeMeasures[index] || []).map((d)=>d.id);
5285
5125
  const invalideMeasuresIds = allMeasureIds.filter((id)=>!subMeasuresId.includes(id));
5286
5126
  const newDataset = dataset[index];
5287
5127
  const newDatasetReshapeInfo = [
@@ -5309,7 +5149,7 @@
5309
5149
  const chartSpec = execPipeline(chartPipeline, newContext, {});
5310
5150
  return {
5311
5151
  indicatorKey: `${reshapeInfo.id}`,
5312
- title: measureGroup?.alias,
5152
+ title: isRectungularCoordinate(advancedVSeed.chartType) ? '' : subMeasures.map((m)=>m.alias ?? m.id).join('-'),
5313
5153
  cellType: 'chart',
5314
5154
  chartModule: 'vchart',
5315
5155
  chartSpec: chartSpec,
@@ -5758,10 +5598,9 @@
5758
5598
  Builder._specPipelineMap.line = lineSpecPipeline;
5759
5599
  };
5760
5600
  const defaultEncodingForColumn = (advancedVSeed)=>{
5761
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
5762
- const measures = findAllMeasures(vseedMeasures);
5601
+ const { measures = [], reshapeMeasures = [], dimensions = [] } = advancedVSeed;
5763
5602
  const encoding = {};
5764
- column_generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(vseedMeasures));
5603
+ column_generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(reshapeMeasures));
5765
5604
  column_generateDefaultMeasureEncoding(measures, encoding);
5766
5605
  return {
5767
5606
  ...advancedVSeed,
@@ -5769,12 +5608,11 @@
5769
5608
  };
5770
5609
  };
5771
5610
  const encodingForColumn = (advancedVSeed)=>{
5772
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
5773
- const measures = findAllMeasures(vseedMeasures);
5611
+ const { measures = [], reshapeMeasures = [], dimensions = [] } = advancedVSeed;
5774
5612
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
5775
5613
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
5776
5614
  const encoding = {};
5777
- const hasMulti = hasMultipleMeasureInSingleView(vseedMeasures);
5615
+ const hasMulti = hasMultipleMeasureInSingleView(reshapeMeasures);
5778
5616
  if (hasDimensionEncoding) column_generateDimensionEncoding(dimensions, encoding, hasMulti);
5779
5617
  else column_generateDefaultDimensionEncoding(dimensions, encoding, hasMulti);
5780
5618
  if (hasMeasureEncoding) column_generateMeasureEncoding(measures, encoding);
@@ -5893,16 +5731,17 @@
5893
5731
  defaultDimensions_defaultDimensions,
5894
5732
  defaultMeasureId_defaultMeasureId,
5895
5733
  encodingAdapter([
5896
- buildMeasures,
5734
+ buildMeasures([
5735
+ 'yAxis',
5736
+ 'detail'
5737
+ ]),
5897
5738
  defaultEncodingForColumn
5898
5739
  ], [
5899
- buildMeasures,
5900
- encodingForColumn,
5901
- pickMeasuresForReshape([
5902
- 'tooltip',
5903
- 'label',
5904
- 'color'
5740
+ buildMeasures([
5741
+ 'yAxis',
5742
+ 'detail'
5905
5743
  ]),
5744
+ encodingForColumn,
5906
5745
  pickDimensionsForReshape
5907
5746
  ]),
5908
5747
  pivotAdapter([
@@ -6782,16 +6621,17 @@
6782
6621
  defaultDimensions_defaultDimensions,
6783
6622
  defaultMeasureId_defaultMeasureId,
6784
6623
  encodingAdapter([
6785
- buildMeasures,
6624
+ buildMeasures([
6625
+ 'yAxis',
6626
+ 'detail'
6627
+ ]),
6786
6628
  defaultEncodingForColumn
6787
6629
  ], [
6788
- buildMeasures,
6789
- encodingForColumn,
6790
- pickMeasuresForReshape([
6791
- 'tooltip',
6792
- 'label',
6793
- 'color'
6630
+ buildMeasures([
6631
+ 'yAxis',
6632
+ 'detail'
6794
6633
  ]),
6634
+ encodingForColumn,
6795
6635
  pickDimensionsForReshape
6796
6636
  ]),
6797
6637
  pivotAdapter([
@@ -6948,16 +6788,17 @@
6948
6788
  defaultDimensions_defaultDimensions,
6949
6789
  defaultMeasureId_defaultMeasureId,
6950
6790
  encodingAdapter([
6951
- buildMeasures,
6791
+ buildMeasures([
6792
+ 'yAxis',
6793
+ 'detail'
6794
+ ]),
6952
6795
  defaultEncodingForColumn
6953
6796
  ], [
6954
- buildMeasures,
6955
- encodingForColumn,
6956
- pickMeasuresForReshape([
6957
- 'tooltip',
6958
- 'label',
6959
- 'color'
6797
+ buildMeasures([
6798
+ 'yAxis',
6799
+ 'detail'
6960
6800
  ]),
6801
+ encodingForColumn,
6961
6802
  pickDimensionsForReshape
6962
6803
  ]),
6963
6804
  pivotAdapter([
@@ -7041,10 +6882,9 @@
7041
6882
  Builder._specPipelineMap.columnPercent = columnPercentSpecPipeline;
7042
6883
  };
7043
6884
  const defaultEncodingForBar = (advancedVSeed)=>{
7044
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7045
- const measures = findAllMeasures(vseedMeasures);
6885
+ const { measures = [], reshapeMeasures = [], dimensions = [] } = advancedVSeed;
7046
6886
  const encoding = {};
7047
- bar_generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(vseedMeasures));
6887
+ bar_generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(reshapeMeasures));
7048
6888
  bar_generateDefaultMeasureEncoding(measures, encoding);
7049
6889
  return {
7050
6890
  ...advancedVSeed,
@@ -7052,12 +6892,11 @@
7052
6892
  };
7053
6893
  };
7054
6894
  const encodingForBar = (advancedVSeed)=>{
7055
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7056
- const measures = findAllMeasures(vseedMeasures);
6895
+ const { measures = [], reshapeMeasures = [], dimensions = [] } = advancedVSeed;
7057
6896
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
7058
6897
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
7059
6898
  const encoding = {};
7060
- const hasMulti = hasMultipleMeasureInSingleView(vseedMeasures);
6899
+ const hasMulti = hasMultipleMeasureInSingleView(reshapeMeasures);
7061
6900
  if (hasDimensionEncoding) bar_generateDimensionEncoding(dimensions, encoding, hasMulti);
7062
6901
  else bar_generateDefaultDimensionEncoding(dimensions, encoding, hasMulti);
7063
6902
  if (hasMeasureEncoding) bar_generateMeasureEncoding(measures, encoding);
@@ -7131,16 +6970,17 @@
7131
6970
  defaultDimensions_defaultDimensions,
7132
6971
  defaultMeasureId_defaultMeasureId,
7133
6972
  encodingAdapter([
7134
- buildMeasures,
6973
+ buildMeasures([
6974
+ 'xAxis',
6975
+ 'detail'
6976
+ ]),
7135
6977
  defaultEncodingForBar
7136
6978
  ], [
7137
- buildMeasures,
7138
- encodingForBar,
7139
- pickMeasuresForReshape([
7140
- 'tooltip',
7141
- 'label',
7142
- 'color'
6979
+ buildMeasures([
6980
+ 'xAxis',
6981
+ 'detail'
7143
6982
  ]),
6983
+ encodingForBar,
7144
6984
  pickDimensionsForReshape
7145
6985
  ]),
7146
6986
  pivotAdapter([
@@ -7225,7 +7065,7 @@
7225
7065
  ...spec
7226
7066
  };
7227
7067
  const { advancedVSeed, vseed } = context;
7228
- const { encoding, dimensions, measures } = advancedVSeed;
7068
+ const { encoding, dimensions = [], measures = [] } = advancedVSeed;
7229
7069
  const { chartType } = vseed;
7230
7070
  const config = advancedVSeed.config?.[chartType]?.xAxis ?? {};
7231
7071
  if (!result.axes) result.axes = [];
@@ -7259,7 +7099,7 @@
7259
7099
  };
7260
7100
  const { advancedVSeed, vseed } = context;
7261
7101
  const { chartType } = vseed;
7262
- const { measures, dimensions, encoding, datasetReshapeInfo, pivotAllDatasetReshapeInfo } = advancedVSeed;
7102
+ const { measures = [], dimensions = [], encoding, datasetReshapeInfo, pivotAllDatasetReshapeInfo } = advancedVSeed;
7263
7103
  const config = advancedVSeed.config?.[chartType]?.yAxis ?? {};
7264
7104
  if (!result.axes) result.axes = [];
7265
7105
  const { labelAutoLimitLength = 80 } = config;
@@ -7398,16 +7238,17 @@
7398
7238
  defaultDimensions_defaultDimensions,
7399
7239
  defaultMeasureId_defaultMeasureId,
7400
7240
  encodingAdapter([
7401
- buildMeasures,
7241
+ buildMeasures([
7242
+ 'xAxis',
7243
+ 'detail'
7244
+ ]),
7402
7245
  defaultEncodingForBar
7403
7246
  ], [
7404
- buildMeasures,
7405
- encodingForBar,
7406
- pickMeasuresForReshape([
7407
- 'tooltip',
7408
- 'label',
7409
- 'color'
7247
+ buildMeasures([
7248
+ 'xAxis',
7249
+ 'detail'
7410
7250
  ]),
7251
+ encodingForBar,
7411
7252
  pickDimensionsForReshape
7412
7253
  ]),
7413
7254
  pivotAdapter([
@@ -7513,16 +7354,17 @@
7513
7354
  defaultDimensions_defaultDimensions,
7514
7355
  defaultMeasureId_defaultMeasureId,
7515
7356
  encodingAdapter([
7516
- buildMeasures,
7517
- defaultEncodingForBar
7357
+ buildMeasures([
7358
+ 'xAxis',
7359
+ 'detail'
7360
+ ]),
7361
+ defaultEncodingForBar
7518
7362
  ], [
7519
- buildMeasures,
7520
- encodingForBar,
7521
- pickMeasuresForReshape([
7522
- 'tooltip',
7523
- 'label',
7524
- 'color'
7363
+ buildMeasures([
7364
+ 'xAxis',
7365
+ 'detail'
7525
7366
  ]),
7367
+ encodingForBar,
7526
7368
  pickDimensionsForReshape
7527
7369
  ]),
7528
7370
  pivotAdapter([
@@ -7601,16 +7443,17 @@
7601
7443
  defaultDimensions_defaultDimensions,
7602
7444
  defaultMeasureId_defaultMeasureId,
7603
7445
  encodingAdapter([
7604
- buildMeasures,
7446
+ buildMeasures([
7447
+ 'yAxis',
7448
+ 'detail'
7449
+ ]),
7605
7450
  defaultEncodingForLine
7606
7451
  ], [
7607
- buildMeasures,
7608
- encodingForLine,
7609
- pickMeasuresForReshape([
7610
- 'tooltip',
7611
- 'label',
7612
- 'color'
7452
+ buildMeasures([
7453
+ 'yAxis',
7454
+ 'detail'
7613
7455
  ]),
7456
+ encodingForLine,
7614
7457
  pickDimensionsForReshape
7615
7458
  ]),
7616
7459
  pivotAdapter([
@@ -7799,16 +7642,17 @@
7799
7642
  defaultDimensions_defaultDimensions,
7800
7643
  defaultMeasureId_defaultMeasureId,
7801
7644
  encodingAdapter([
7802
- buildMeasures,
7645
+ buildMeasures([
7646
+ 'yAxis',
7647
+ 'detail'
7648
+ ]),
7803
7649
  defaultEncodingForLine
7804
7650
  ], [
7805
- buildMeasures,
7806
- encodingForLine,
7807
- pickMeasuresForReshape([
7808
- 'tooltip',
7809
- 'label',
7810
- 'color'
7651
+ buildMeasures([
7652
+ 'yAxis',
7653
+ 'detail'
7811
7654
  ]),
7655
+ encodingForLine,
7812
7656
  pickDimensionsForReshape
7813
7657
  ]),
7814
7658
  pivotAdapter([
@@ -7886,130 +7730,44 @@
7886
7730
  Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
7887
7731
  Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
7888
7732
  };
7889
- const buildMeasuresForScatter = (advancedVSeed, context)=>{
7890
- const { vseed } = context;
7891
- if (isMeasureTreeWithChildren(advancedVSeed.measures)) return advancedVSeed;
7892
- if (isMeasureTreeWithParentId(advancedVSeed.measures)) {
7893
- advancedVSeed.measures = buildMeasuresForScatter_generateMeasuresByParentId(advancedVSeed.measures);
7894
- return advancedVSeed;
7895
- }
7896
- if (vseed.scatterMeasures) {
7897
- advancedVSeed.measures = scatterMeasuresToMeasureTree(chunk_BCBB46UE_d(vseed.scatterMeasures));
7898
- return advancedVSeed;
7899
- }
7900
- const { scatterMeasures, encodedMeasures } = basicMeasuresToScatterMeasures(advancedVSeed.measures || []);
7901
- advancedVSeed.measures = scatterMeasuresToMeasureTree(scatterMeasures);
7902
- if (encodedMeasures.length) encodedMeasures.forEach((m)=>{
7903
- advancedVSeed.measures.push(m);
7904
- });
7905
- return advancedVSeed;
7906
- };
7907
- const basicMeasuresToScatterMeasures = (basicMeasures)=>{
7908
- const yMeasures = [];
7909
- const xMeasures = [];
7910
- const encodedMeasures = [];
7911
- for(let index = 0; index < basicMeasures.length; index++){
7912
- const item = basicMeasures[index];
7733
+ const buildMeasuresForScatter = (advancedVSeed)=>{
7734
+ const { measures = [] } = advancedVSeed;
7735
+ const measuresByView = {};
7736
+ const parentIds = [];
7737
+ for(let index = 0; index < measures.length; index++){
7738
+ const item = measures[index];
7913
7739
  const encoding = item.encoding;
7740
+ const parentId = item.parentId || DEFAULT_PARENT_ID;
7914
7741
  const isYAxis = 'yAxis' === encoding;
7915
7742
  const isXAxis = 'xAxis' === encoding;
7916
- const isOther = encoding && [
7917
- 'color',
7918
- 'label',
7919
- 'tooltip',
7920
- 'detail'
7921
- ].includes(encoding);
7922
- if (isYAxis) yMeasures.push(item);
7923
- else if (isXAxis) xMeasures.push(item);
7924
- else if (isOther) encodedMeasures.push(item);
7925
- else if (0 !== index) yMeasures.push(item);
7926
- else xMeasures.push(item);
7927
- }
7928
- if (0 === yMeasures.length && xMeasures.length > 0) yMeasures.push(xMeasures[0]);
7929
- return {
7930
- scatterMeasures: [
7931
- {
7932
- id: 'scatterMeasures',
7933
- xMeasures,
7934
- yMeasures
7935
- }
7936
- ],
7937
- encodedMeasures
7938
- };
7939
- };
7940
- const scatterMeasuresToMeasureTree = (scatterMeasures)=>{
7941
- const measureTree = scatterMeasures.map((item, index)=>{
7942
- const { id, xMeasures, yMeasures } = item;
7943
- const groupChildren = [];
7944
- let groupId = `${id}-`;
7945
- if (xMeasures) {
7946
- const arrPrimaryMeasures = Array.isArray(xMeasures) ? xMeasures : [
7947
- xMeasures
7948
- ];
7949
- const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
7950
- groupId += alias;
7951
- groupChildren.push({
7952
- id: `${index}-x`,
7953
- alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
7954
- children: arrPrimaryMeasures
7955
- });
7743
+ const isOtherEncoding = item.encoding && isCommonMeasureEncoding(encoding);
7744
+ ensureParentIdInitialized(parentId, measuresByView, parentIds);
7745
+ if (isYAxis) measuresByView[parentId].push(item);
7746
+ else if (isXAxis) measuresByView[parentId].push(item);
7747
+ else if (!isOtherEncoding && 'size' !== encoding) {
7748
+ const xCount = measuresByView[parentId].filter((m)=>'xAxis' === m.encoding).length;
7749
+ item.encoding = 0 === xCount ? 'xAxis' : 'yAxis';
7750
+ measuresByView[parentId].push(item);
7956
7751
  }
7957
- if (yMeasures) {
7958
- const arrSecondaryMeasures = Array.isArray(yMeasures) ? yMeasures : [
7959
- yMeasures
7752
+ }
7753
+ advancedVSeed.reshapeMeasures = parentIds.map((pid)=>{
7754
+ const basicMeasures = measuresByView[pid];
7755
+ const xCount = basicMeasures.filter((m)=>'xAxis' === m.encoding).length;
7756
+ const yCount = basicMeasures.filter((m)=>'yAxis' === m.encoding).length;
7757
+ if (0 === yCount && xCount > 0) {
7758
+ const cloneMeasure = chunk_BCBB46UE_d(basicMeasures[0]);
7759
+ cloneMeasure.encoding = 'yAxis';
7760
+ return [
7761
+ ...basicMeasures,
7762
+ cloneMeasure
7960
7763
  ];
7961
- const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
7962
- groupId += alias;
7963
- groupChildren.push({
7964
- id: `${index}-y`,
7965
- alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
7966
- children: arrSecondaryMeasures
7967
- });
7968
7764
  }
7969
- return {
7970
- id: groupId,
7971
- alias: groupId,
7972
- children: groupChildren
7973
- };
7974
- });
7975
- if (1 === scatterMeasures.length) return measureTree[0].children || [];
7976
- return measureTree;
7977
- };
7978
- const buildMeasuresForScatter_generateMeasuresByParentId = (measures)=>{
7979
- const scatterMeasures = [];
7980
- const encodedMeasures = [];
7981
- measures.forEach((item)=>{
7982
- const id = item.parentId || DEFAULT_PARENT_ID;
7983
- if (!scatterMeasures.find((d)=>d.id === id)) scatterMeasures.push({
7984
- id,
7985
- yMeasures: [],
7986
- xMeasures: []
7987
- });
7988
- const scatterChart = scatterMeasures.find((d)=>d.id === id);
7989
- if (!scatterChart || !Array.isArray(scatterChart.yMeasures) || !Array.isArray(scatterChart.xMeasures)) return;
7990
- const isYAxis = 'yAxis' === item.encoding;
7991
- const isXAxis = 'xAxis' === item.encoding;
7992
- const isOther = item.encoding && [
7993
- 'color',
7994
- 'label',
7995
- 'tooltip',
7996
- 'detail'
7997
- ].includes(item.encoding);
7998
- if (isYAxis) scatterChart.yMeasures.push(item);
7999
- else if (isXAxis) scatterChart.xMeasures.push(item);
8000
- else if (isOther) encodedMeasures.push(item);
8001
- else if (0 !== scatterChart.yMeasures.length) scatterChart.yMeasures.push(item);
8002
- else scatterChart.xMeasures.push(item);
8003
- });
8004
- const res = scatterMeasuresToMeasureTree(scatterMeasures);
8005
- if (encodedMeasures.length) encodedMeasures.forEach((m)=>{
8006
- res.push(m);
8007
- });
8008
- return res;
7765
+ return basicMeasures;
7766
+ }).filter((m)=>m.length > 0);
7767
+ return advancedVSeed;
8009
7768
  };
8010
7769
  const defaultEncodingForScatter = (advancedVSeed)=>{
8011
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
8012
- const measures = findAllMeasures(vseedMeasures);
7770
+ const { measures = [], dimensions = [] } = advancedVSeed;
8013
7771
  const encoding = {};
8014
7772
  scatter_generateDefaultDimensionEncoding(dimensions, encoding);
8015
7773
  scatter_generateDefaultMeasureEncoding(measures, encoding);
@@ -8019,8 +7777,7 @@
8019
7777
  };
8020
7778
  };
8021
7779
  const encodingForScatter = (advancedVSeed)=>{
8022
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
8023
- const measures = findAllMeasures(vseedMeasures);
7780
+ const { measures = [], dimensions = [] } = advancedVSeed;
8024
7781
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
8025
7782
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
8026
7783
  const encoding = {};
@@ -8109,37 +7866,32 @@
8109
7866
  };
8110
7867
  const { vseed } = context;
8111
7868
  const { dataset } = vseed;
8112
- const { encoding, chartType } = advancedVSeed;
8113
- const measures = (advancedVSeed.reshapeMeasures ?? advancedVSeed.measures ?? []).filter((m)=>m && m.children);
7869
+ const { encoding, chartType, reshapeMeasures } = advancedVSeed;
8114
7870
  const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? [];
8115
- if (measures.length > 2) throw new Error('measures can not be more than 2 groups in scatter');
7871
+ const measures = reshapeMeasures?.[0] ?? [];
8116
7872
  const foldInfoList = [];
8117
7873
  const unfoldInfoList = [];
8118
7874
  const datasets = [];
8119
- const xMeasures = measures[0];
8120
- const yMeasures = measures[1] || xMeasures;
8121
- if (xMeasures && xMeasures.children) {
8122
- const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, T(dimensions, (d)=>d.id), T(xMeasures.children, (d)=>d.id), encoding, {
8123
- foldMeasureValue: FoldXMeasureValue,
8124
- foldMeasureId: FoldXMeasureId,
8125
- colorItemAsId: true,
8126
- colorMeasureId: getColorMeasureId(advancedVSeed, vseed)
8127
- });
8128
- datasets.push(newDataset);
8129
- foldInfoList.push(foldInfo);
8130
- unfoldInfoList.push(unfoldInfo);
8131
- }
8132
- if (yMeasures && yMeasures.children) {
8133
- const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(datasets[0], T(dimensions, (d)=>d.id), T(yMeasures.children, (d)=>d.id), encoding, {
8134
- foldMeasureValue: FoldYMeasureValue,
8135
- foldMeasureId: FoldYMeasureId,
8136
- colorItemAsId: true,
8137
- colorMeasureId: getColorMeasureId(advancedVSeed, vseed)
8138
- });
8139
- datasets[0] = newDataset;
8140
- foldInfoList.push(foldInfo);
8141
- unfoldInfoList.push(unfoldInfo);
8142
- }
7875
+ const xMeasures = measures.filter((m)=>'xAxis' === m.encoding);
7876
+ const yMeasures = measures.filter((m)=>'yAxis' === m.encoding);
7877
+ const xResult = dataReshapeByEncoding(dataset, T(dimensions, (d)=>d.id), T(xMeasures, (d)=>d.id), encoding, {
7878
+ foldMeasureValue: FoldXMeasureValue,
7879
+ foldMeasureId: FoldXMeasureId,
7880
+ colorItemAsId: true,
7881
+ colorMeasureId: getColorMeasureId(advancedVSeed, vseed)
7882
+ });
7883
+ datasets.push(xResult.dataset);
7884
+ foldInfoList.push(xResult.foldInfo);
7885
+ unfoldInfoList.push(xResult.unfoldInfo);
7886
+ const yResult = dataReshapeByEncoding(datasets[0], T(dimensions, (d)=>d.id), T(yMeasures, (d)=>d.id), encoding, {
7887
+ foldMeasureValue: FoldYMeasureValue,
7888
+ foldMeasureId: FoldYMeasureId,
7889
+ colorItemAsId: true,
7890
+ colorMeasureId: getColorMeasureId(advancedVSeed, vseed)
7891
+ });
7892
+ datasets[0] = yResult.dataset;
7893
+ foldInfoList.push(yResult.foldInfo);
7894
+ unfoldInfoList.push(yResult.unfoldInfo);
8143
7895
  const unfoldInfo = {
8144
7896
  ...unfoldInfoList[0],
8145
7897
  colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
@@ -8169,46 +7921,35 @@
8169
7921
  const { vseed } = context;
8170
7922
  const { dataset } = vseed;
8171
7923
  const { encoding, chartType } = advancedVSeed;
8172
- const measures = advancedVSeed.reshapeMeasures ?? advancedVSeed.measures ?? [];
7924
+ const reshapeMeasures = advancedVSeed.reshapeMeasures ?? [];
8173
7925
  const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? [];
8174
- const allMeasures = findAllMeasures(measures);
8175
- const measureGroups = [];
8176
- const depth = measureDepth(measures);
8177
- if (3 === depth) measures.forEach((measure)=>{
8178
- measureGroups.push(measure.children);
8179
- });
8180
- else if (2 === depth) measureGroups.push(measures);
7926
+ const allMeasuresIds = reshapeMeasures.flatMap((measureGroup)=>measureGroup.map((m)=>m.id));
8181
7927
  const datasetList = [];
8182
7928
  const datasetReshapeInfo = [];
8183
- measureGroups.forEach((measures, index)=>{
8184
- if (measures.length > 2) throw new Error('measures can not be more than 2 groups in scatter');
7929
+ reshapeMeasures.forEach((measures, index)=>{
8185
7930
  const foldInfoList = [];
8186
7931
  const unfoldInfoList = [];
8187
7932
  const datasets = [];
8188
- const xMeasures = measures[0];
8189
- const yMeasures = measures[1] || xMeasures;
8190
- if (xMeasures && xMeasures.children) {
8191
- const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
8192
- foldMeasureValue: `${FoldXMeasureValue}${index}`,
8193
- colorItemAsId: true,
8194
- colorMeasureId: getColorMeasureId(advancedVSeed, vseed),
8195
- omitIds: allMeasures.map((item)=>item.id)
8196
- });
8197
- datasets.push(newDataset);
8198
- foldInfoList.push(foldInfo);
8199
- unfoldInfoList.push(unfoldInfo);
8200
- }
8201
- if (yMeasures && yMeasures.children) {
8202
- const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, yMeasures.children, encoding, {
8203
- foldMeasureValue: `${FoldYMeasureValue}${index}`,
8204
- colorItemAsId: true,
8205
- colorMeasureId: getColorMeasureId(advancedVSeed, vseed),
8206
- omitIds: allMeasures.map((item)=>item.id)
8207
- });
8208
- datasets.push(newDataset);
8209
- foldInfoList.push(foldInfo);
8210
- unfoldInfoList.push(unfoldInfo);
8211
- }
7933
+ const xMeasures = measures.filter((m)=>'xAxis' === m.encoding);
7934
+ const yMeasures = measures.filter((m)=>'yAxis' === m.encoding);
7935
+ const xResult = dataReshapeByEncoding(dataset, dimensions, xMeasures, encoding, {
7936
+ foldMeasureValue: `${FoldXMeasureValue}${index}`,
7937
+ colorItemAsId: true,
7938
+ colorMeasureId: getColorMeasureId(advancedVSeed, vseed),
7939
+ omitIds: allMeasuresIds
7940
+ });
7941
+ datasets.push(xResult.dataset);
7942
+ foldInfoList.push(xResult.foldInfo);
7943
+ unfoldInfoList.push(xResult.unfoldInfo);
7944
+ const yResult = dataReshapeByEncoding(dataset, dimensions, yMeasures, encoding, {
7945
+ foldMeasureValue: `${FoldYMeasureValue}${index}`,
7946
+ colorItemAsId: true,
7947
+ colorMeasureId: getColorMeasureId(advancedVSeed, vseed),
7948
+ omitIds: allMeasuresIds
7949
+ });
7950
+ datasets.push(yResult.dataset);
7951
+ foldInfoList.push(yResult.foldInfo);
7952
+ unfoldInfoList.push(yResult.unfoldInfo);
8212
7953
  const unfoldInfo = {
8213
7954
  ...unfoldInfoList[0],
8214
7955
  colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
@@ -8247,11 +7988,6 @@
8247
7988
  ], [
8248
7989
  buildMeasuresForScatter,
8249
7990
  encodingForScatter,
8250
- pickMeasuresForReshape([
8251
- 'tooltip',
8252
- 'label',
8253
- 'size'
8254
- ]),
8255
7991
  pickDimensionsForReshape
8256
7992
  ]),
8257
7993
  pivotAdapter([
@@ -8338,7 +8074,7 @@
8338
8074
  ...spec
8339
8075
  };
8340
8076
  const { advancedVSeed, vseed } = context;
8341
- const { datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
8077
+ const { datasetReshapeInfo, chartType, locale, dimensions = [], encoding } = advancedVSeed;
8342
8078
  const baseConfig = advancedVSeed.config[chartType];
8343
8079
  const { tooltip = {
8344
8080
  enable: true
@@ -8352,7 +8088,7 @@
8352
8088
  title: {
8353
8089
  visible: false
8354
8090
  },
8355
- content: tooltipScatter_createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), locale, foldInfoList)
8091
+ content: tooltipScatter_createMarkContent(encoding.tooltip || [], dimensions, vseed.measures, locale, foldInfoList)
8356
8092
  },
8357
8093
  dimension: {
8358
8094
  visible: false
@@ -8361,7 +8097,7 @@
8361
8097
  };
8362
8098
  return result;
8363
8099
  };
8364
- const tooltipScatter_createMarkContent = (tooltip, dimensions, measures, locale, foldInfoList)=>{
8100
+ const tooltipScatter_createMarkContent = (tooltip, dimensions, measures = [], locale, foldInfoList)=>{
8365
8101
  const dims = T(dimensions.filter((item)=>tooltip.includes(item.id)), (item)=>item.id);
8366
8102
  const meas = T(measures.filter((item)=>tooltip.includes(item.id)), (item)=>item.id);
8367
8103
  const dimContent = dims.map((item)=>({
@@ -8976,140 +8712,38 @@
8976
8712
  Builder._advancedPipelineMap.scatter = scatterAdvancedPipeline;
8977
8713
  Builder._specPipelineMap.scatter = scatterSpecPipeline;
8978
8714
  };
8979
- const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
8980
- const { vseed } = context;
8981
- if (isMeasureTreeWithChildren(advancedVSeed.measures)) return advancedVSeed;
8982
- if (isMeasureTreeWithParentId(advancedVSeed.measures)) {
8983
- advancedVSeed.measures = buildMeasuresForDualAxis_generateMeasuresByParentId(advancedVSeed.measures);
8984
- return advancedVSeed;
8985
- }
8986
- if (vseed.dualMeasures) {
8987
- advancedVSeed.measures = dualMeasuresToMeasureTree(chunk_BCBB46UE_d(vseed.dualMeasures));
8988
- return advancedVSeed;
8989
- }
8990
- const { dualMeasures, encodedMeasures } = basicMeasuresToDualMeasures(advancedVSeed.measures || []);
8991
- advancedVSeed.measures = dualMeasuresToMeasureTree(dualMeasures);
8992
- if (encodedMeasures.length) encodedMeasures.forEach((m)=>{
8993
- advancedVSeed.measures.push(m);
8994
- });
8995
- return advancedVSeed;
8996
- };
8997
- const basicMeasuresToDualMeasures = (basicMeasures)=>{
8998
- const primaryMeasures = [];
8999
- const secondaryMeasures = [];
9000
- const encodedMeasures = [];
9001
- for(let index = 0; index < basicMeasures.length; index++){
9002
- const item = basicMeasures[index];
8715
+ const buildMeasuresForDualAxis = (advancedVSeed)=>{
8716
+ const { measures = [] } = advancedVSeed;
8717
+ const measuresByView = {};
8718
+ const parentIds = [];
8719
+ for(let index = 0; index < measures.length; index++){
8720
+ const item = measures[index];
9003
8721
  const encoding = item.encoding;
8722
+ const parentId = item.parentId || DEFAULT_PARENT_ID;
9004
8723
  const isPrimaryYAxis = 'primaryYAxis' === encoding;
9005
8724
  const isSecondaryYAxis = 'secondaryYAxis' === encoding;
9006
- const isOtherEncoding = item.encoding && [
9007
- 'color',
9008
- 'label',
9009
- 'tooltip',
9010
- 'detail'
9011
- ].includes(item.encoding);
9012
- if (isPrimaryYAxis) primaryMeasures.push(item);
9013
- else if (isSecondaryYAxis) secondaryMeasures.push(item);
9014
- else if (isOtherEncoding) encodedMeasures.push(item);
9015
- else if (0 === index) primaryMeasures.push(item);
9016
- else secondaryMeasures.push(item);
9017
- }
9018
- return {
9019
- dualMeasures: [
9020
- {
9021
- id: 'dualMeasures',
9022
- primaryMeasures,
9023
- secondaryMeasures
9024
- }
9025
- ],
9026
- encodedMeasures
9027
- };
9028
- };
9029
- const dualMeasuresToMeasureTree = (dualMeasures)=>{
9030
- const measureTree = dualMeasures.map((item, index)=>{
9031
- const { id, primaryMeasures, secondaryMeasures } = item;
9032
- const groupChildren = [];
9033
- let groupId = `${id}-`;
9034
- if (primaryMeasures) {
9035
- const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [
9036
- primaryMeasures
9037
- ];
9038
- const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
9039
- groupId += alias;
9040
- groupChildren.push({
9041
- id: `${index}-primary`,
9042
- alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
9043
- children: arrPrimaryMeasures
9044
- });
9045
- }
9046
- if (secondaryMeasures) {
9047
- const arrSecondaryMeasures = Array.isArray(secondaryMeasures) ? secondaryMeasures : [
9048
- secondaryMeasures
9049
- ];
9050
- const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
9051
- groupId += alias;
9052
- groupChildren.push({
9053
- id: `${index}-secondary`,
9054
- alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
9055
- children: arrSecondaryMeasures
9056
- });
8725
+ const isOtherEncoding = item.encoding && isCommonMeasureEncoding(encoding);
8726
+ ensureParentIdInitialized(parentId, measuresByView, parentIds);
8727
+ if (isPrimaryYAxis) {
8728
+ measuresByView[parentId].push(item);
8729
+ if (!isDualAxisChartType(item.chartType)) item.chartType = DEFAULT_DUAL_CHART_TYPE.primary;
8730
+ } else if (isSecondaryYAxis) {
8731
+ measuresByView[parentId].push(item);
8732
+ if (!isDualAxisChartType(item.chartType)) item.chartType = DEFAULT_DUAL_CHART_TYPE.secondary;
8733
+ } else if (!isOtherEncoding) {
8734
+ const primaryCount = measuresByView[parentId].filter((m)=>'primaryYAxis' === m.encoding).length;
8735
+ item.encoding = 0 === primaryCount ? 'primaryYAxis' : 'secondaryYAxis';
8736
+ if (!isDualAxisChartType(item.chartType)) item.chartType = 'primaryYAxis' === item.encoding ? DEFAULT_DUAL_CHART_TYPE.primary : DEFAULT_DUAL_CHART_TYPE.secondary;
8737
+ measuresByView[parentId].push(item);
9057
8738
  }
9058
- return {
9059
- id: groupId,
9060
- alias: groupId,
9061
- children: groupChildren
9062
- };
9063
- });
9064
- if (1 === dualMeasures.length) return measureTree[0].children || [];
9065
- return measureTree;
9066
- };
9067
- const buildMeasuresForDualAxis_generateMeasuresByParentId = (measures)=>{
9068
- const dualMeasures = [];
9069
- const encodedMeasures = [];
9070
- measures.forEach((item)=>{
9071
- const id = item.parentId || DEFAULT_PARENT_ID;
9072
- if (!dualMeasures.find((d)=>d.id === id)) dualMeasures.push({
9073
- id,
9074
- primaryMeasures: [],
9075
- secondaryMeasures: []
9076
- });
9077
- const dualChart = dualMeasures.find((d)=>d.id === id);
9078
- if (!dualChart || !Array.isArray(dualChart.primaryMeasures) || !Array.isArray(dualChart.secondaryMeasures)) return;
9079
- const encoding = item.encoding;
9080
- const isPrimaryYAxis = 'primaryYAxis' === encoding;
9081
- const isSecondaryYAxis = 'secondaryYAxis' === encoding;
9082
- const isOtherEncoding = item.encoding && [
9083
- 'color',
9084
- 'label',
9085
- 'tooltip',
9086
- 'detail'
9087
- ].includes(item.encoding);
9088
- if (isPrimaryYAxis) dualChart.primaryMeasures.push(item);
9089
- else if (isSecondaryYAxis) dualChart.secondaryMeasures.push(item);
9090
- else if (isOtherEncoding) encodedMeasures.push(item);
9091
- else if (0 === dualChart.primaryMeasures.length) dualChart.primaryMeasures.push(item);
9092
- else dualChart.secondaryMeasures.push(item);
9093
- });
9094
- const res = dualMeasuresToMeasureTree(dualMeasures);
9095
- if (encodedMeasures.length) encodedMeasures.forEach((m)=>{
9096
- res.push(m);
9097
- });
9098
- return res;
9099
- };
9100
- const checkSingleViewMultiMeasures = (measures = [])=>measures.length <= 1 && (measures[0].children ?? []).length <= 1;
9101
- const dualAxis_hasMultipleMeasureInSingleView = (measures = [])=>{
9102
- const depth = measureDepth(measures);
9103
- if (depth >= 3) return measures.some((m)=>m && m.children && !checkSingleViewMultiMeasures(m.children));
9104
- if (2 === depth) return !checkSingleViewMultiMeasures(measures);
9105
- if (1 === depth) return measures.length >= 1;
9106
- return false;
8739
+ }
8740
+ advancedVSeed.reshapeMeasures = parentIds.map((pid)=>measuresByView[pid]).filter((m)=>m.length > 0);
8741
+ return advancedVSeed;
9107
8742
  };
9108
8743
  const defaultEncodingForDualAxis = (advancedVSeed)=>{
9109
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
9110
- const measures = findAllMeasures(vseedMeasures);
8744
+ const { measures = [], reshapeMeasures = [], dimensions = [] } = advancedVSeed;
9111
8745
  const encoding = {};
9112
- dualAxis_generateDefaultDimensionEncoding(dimensions, encoding, dualAxis_hasMultipleMeasureInSingleView(vseedMeasures));
8746
+ dualAxis_generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(reshapeMeasures));
9113
8747
  dualAxis_generateDefaultMeasureEncoding(measures, encoding);
9114
8748
  return {
9115
8749
  ...advancedVSeed,
@@ -9117,12 +8751,11 @@
9117
8751
  };
9118
8752
  };
9119
8753
  const encodingForDualAxis = (advancedVSeed)=>{
9120
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
9121
- const measures = findAllMeasures(vseedMeasures);
8754
+ const { measures = [], reshapeMeasures = [], dimensions = [] } = advancedVSeed;
9122
8755
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
9123
8756
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
9124
8757
  const encoding = {};
9125
- const hasMulti = dualAxis_hasMultipleMeasureInSingleView(vseedMeasures);
8758
+ const hasMulti = hasMultipleMeasureInSingleView(reshapeMeasures);
9126
8759
  if (hasDimensionEncoding) dualAxis_generateDimensionEncoding(dimensions, encoding, hasMulti);
9127
8760
  else dualAxis_generateDefaultDimensionEncoding(dimensions, encoding, hasMulti);
9128
8761
  if (hasMeasureEncoding) dualAxis_generateMeasureEncoding(measures, encoding);
@@ -9181,34 +8814,37 @@
9181
8814
  const { vseed } = context;
9182
8815
  const { dataset } = vseed;
9183
8816
  const { encoding, chartType } = advancedVSeed;
9184
- const measures = (advancedVSeed.reshapeMeasures ?? advancedVSeed.measures ?? []).filter((m)=>m && m.children);
8817
+ const measures = advancedVSeed.reshapeMeasures?.[0] ?? [];
9185
8818
  const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? [];
9186
- if (measures.length > 2) throw new Error('measures can not be more than 2 groups in dualAxis');
9187
8819
  const foldInfoList = [];
9188
8820
  const unfoldInfoList = [];
9189
8821
  const datasets = [];
9190
- const primaryMeasures = measures[0];
9191
- const secondaryMeasures = measures[1] || [];
9192
- if (primaryMeasures && primaryMeasures.children) {
9193
- const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, T(dimensions, (item)=>item.id), T(primaryMeasures.children, (item)=>item.id), encoding, {
8822
+ const primaryMeasures = measures.filter((m)=>'primaryYAxis' === m.encoding);
8823
+ const secondaryMeasures = measures.filter((m)=>'secondaryYAxis' === m.encoding);
8824
+ const primaryChartTypes = chunk_QJLMYOTX_i(primaryMeasures.map((m)=>m.chartType));
8825
+ const secondaryChartTypes = chunk_QJLMYOTX_i(secondaryMeasures.map((m)=>m.chartType));
8826
+ if (!primaryChartTypes.length) primaryChartTypes.push(DEFAULT_DUAL_CHART_TYPE.primary);
8827
+ if (!secondaryChartTypes.length) secondaryChartTypes.push(DEFAULT_DUAL_CHART_TYPE.secondary);
8828
+ primaryChartTypes.forEach((chartType)=>{
8829
+ const primaryResult = dataReshapeByEncoding(dataset, T(dimensions, (item)=>item.id), T(primaryMeasures.filter((m)=>m.chartType === chartType), (item)=>item.id), encoding, {
9194
8830
  colorItemAsId: false,
9195
8831
  foldMeasureValue: FoldPrimaryMeasureValue,
9196
8832
  colorMeasureId: getColorMeasureId(advancedVSeed, vseed)
9197
8833
  });
9198
- datasets.push(newDataset);
9199
- foldInfoList.push(foldInfo);
9200
- unfoldInfoList.push(unfoldInfo);
9201
- }
9202
- if (secondaryMeasures && secondaryMeasures.children) {
9203
- const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, T(dimensions, (item)=>item.id), T(secondaryMeasures.children, (item)=>item.id), encoding, {
8834
+ datasets.push(primaryResult.dataset);
8835
+ foldInfoList.push(primaryResult.foldInfo);
8836
+ unfoldInfoList.push(primaryResult.unfoldInfo);
8837
+ });
8838
+ secondaryChartTypes.forEach((chartType)=>{
8839
+ const secondaryResult = dataReshapeByEncoding(dataset, T(dimensions, (item)=>item.id), T(secondaryMeasures.filter((m)=>m.chartType === chartType), (item)=>item.id), encoding, {
9204
8840
  colorItemAsId: false,
9205
8841
  foldMeasureValue: FoldSecondaryMeasureValue,
9206
8842
  colorMeasureId: getColorMeasureId(advancedVSeed, vseed)
9207
8843
  });
9208
- datasets.push(newDataset);
9209
- foldInfoList.push(foldInfo);
9210
- unfoldInfoList.push(unfoldInfo);
9211
- }
8844
+ datasets.push(secondaryResult.dataset);
8845
+ foldInfoList.push(secondaryResult.foldInfo);
8846
+ unfoldInfoList.push(secondaryResult.unfoldInfo);
8847
+ });
9212
8848
  const unfoldInfo = {
9213
8849
  ...unfoldInfoList[0],
9214
8850
  colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
@@ -9238,46 +8874,43 @@
9238
8874
  const { vseed } = context;
9239
8875
  const { dataset } = vseed;
9240
8876
  const { encoding, chartType } = advancedVSeed;
9241
- const measures = advancedVSeed.reshapeMeasures ?? advancedVSeed.measures ?? [];
8877
+ const reshapeMeasures = advancedVSeed.reshapeMeasures ?? [];
9242
8878
  const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? [];
9243
- const allMeasures = findAllMeasures(measures);
8879
+ const allMeasuresIds = reshapeMeasures.flatMap((measureGroup)=>measureGroup.map((m)=>m.id));
9244
8880
  const datasetList = [];
9245
8881
  const datasetReshapeInfo = [];
9246
- const measureGroups = [];
9247
- const depth = measureDepth(measures);
9248
- if (3 === depth) measures.forEach((measure)=>{
9249
- if (measure.children) measureGroups.push(measure.children);
9250
- });
9251
- else if (2 === depth) measureGroups.push(measures.filter((m)=>m && m.children));
9252
- measureGroups.forEach((measures, index)=>{
9253
- if (measures.length > 2) throw new Error('measures can not be more than 2 groups in dualAxis');
8882
+ reshapeMeasures.forEach((measures, index)=>{
9254
8883
  const foldInfoList = [];
9255
8884
  const unfoldInfoList = [];
9256
8885
  const datasets = [];
9257
- const primaryMeasures = measures[0];
9258
- const secondaryMeasures = measures[1] || [];
9259
- if (primaryMeasures && primaryMeasures.children) {
9260
- const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, T(dimensions, (item)=>item.id), T(primaryMeasures.children, (item)=>item.id), encoding, {
8886
+ const primaryMeasures = measures.filter((m)=>'primaryYAxis' === m.encoding);
8887
+ const secondaryMeasures = measures.filter((m)=>'secondaryYAxis' === m.encoding);
8888
+ const primaryChartTypes = chunk_QJLMYOTX_i(primaryMeasures.map((m)=>m.chartType));
8889
+ const secondaryChartTypes = chunk_QJLMYOTX_i(secondaryMeasures.map((m)=>m.chartType));
8890
+ if (!primaryChartTypes.length) primaryChartTypes.push(DEFAULT_DUAL_CHART_TYPE.primary);
8891
+ if (!secondaryChartTypes.length) secondaryChartTypes.push(DEFAULT_DUAL_CHART_TYPE.secondary);
8892
+ primaryChartTypes.forEach((chartType)=>{
8893
+ const primaryResult = dataReshapeByEncoding(dataset, T(dimensions, (item)=>item.id), T(primaryMeasures.filter((m)=>m.chartType === chartType), (item)=>item.id), encoding, {
9261
8894
  colorItemAsId: false,
9262
8895
  foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,
9263
8896
  colorMeasureId: getColorMeasureId(advancedVSeed, vseed),
9264
- omitIds: allMeasures.map((item)=>item.id)
8897
+ omitIds: allMeasuresIds
9265
8898
  });
9266
- datasets.push(newDataset);
9267
- foldInfoList.push(foldInfo);
9268
- unfoldInfoList.push(unfoldInfo);
9269
- }
9270
- if (secondaryMeasures && secondaryMeasures.children) {
9271
- const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, T(dimensions, (item)=>item.id), T(secondaryMeasures.children, (item)=>item.id), encoding, {
8899
+ datasets.push(primaryResult.dataset);
8900
+ foldInfoList.push(primaryResult.foldInfo);
8901
+ unfoldInfoList.push(primaryResult.unfoldInfo);
8902
+ });
8903
+ secondaryChartTypes.forEach((chartType)=>{
8904
+ const secondaryResult = dataReshapeByEncoding(dataset, T(dimensions, (item)=>item.id), T(secondaryMeasures.filter((m)=>m.chartType === chartType), (item)=>item.id), encoding, {
9272
8905
  colorItemAsId: false,
9273
8906
  foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`,
9274
8907
  colorMeasureId: getColorMeasureId(advancedVSeed, vseed),
9275
- omitIds: allMeasures.map((item)=>item.id)
8908
+ omitIds: allMeasuresIds
9276
8909
  });
9277
- datasets.push(newDataset);
9278
- foldInfoList.push(foldInfo);
9279
- unfoldInfoList.push(unfoldInfo);
9280
- }
8910
+ datasets.push(secondaryResult.dataset);
8911
+ foldInfoList.push(secondaryResult.foldInfo);
8912
+ unfoldInfoList.push(secondaryResult.unfoldInfo);
8913
+ });
9281
8914
  const unfoldInfo = {
9282
8915
  ...unfoldInfoList[0],
9283
8916
  colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
@@ -9315,7 +8948,6 @@
9315
8948
  'legend',
9316
8949
  'tooltip',
9317
8950
  'xAxis',
9318
- 'dualChartType',
9319
8951
  'alignTicks',
9320
8952
  'primaryYAxis',
9321
8953
  'secondaryYAxis',
@@ -9346,11 +8978,6 @@
9346
8978
  ], [
9347
8979
  buildMeasuresForDualAxis,
9348
8980
  encodingForDualAxis,
9349
- pickMeasuresForReshape([
9350
- 'tooltip',
9351
- 'label',
9352
- 'color'
9353
- ]),
9354
8981
  pickDimensionsForReshape
9355
8982
  ]),
9356
8983
  pivotAdapter([
@@ -9365,7 +8992,7 @@
9365
8992
  markStyle_markStyle,
9366
8993
  annotation_annotation
9367
8994
  ];
9368
- const series_series = (...args)=>{
8995
+ const series_series = (pipeByAxis, pipes)=>{
9369
8996
  const result = {
9370
8997
  type: 'common',
9371
8998
  padding: 0,
@@ -9376,11 +9003,28 @@
9376
9003
  ]
9377
9004
  };
9378
9005
  return (_, context)=>{
9379
- result.series = args.map((pipeline)=>execPipeline(pipeline, context, {}));
9006
+ const { advancedVSeed } = context;
9007
+ const { datasetReshapeInfo, reshapeMeasures = [] } = advancedVSeed;
9008
+ const { foldInfoList = [], index } = datasetReshapeInfo[0];
9009
+ result.series = foldInfoList.map((foldInfo)=>{
9010
+ const measureId = Object.keys(foldInfo.foldMap)[0];
9011
+ const axisType = foldInfo.measureValue === `${FoldPrimaryMeasureValue}${index}` ? 'primary' : 'secondary';
9012
+ const measure = (reshapeMeasures[index] ?? []).find((m)=>m.id === measureId);
9013
+ const options = {
9014
+ axisType,
9015
+ chartType: measure?.chartType ?? ('primary' === axisType ? DEFAULT_DUAL_CHART_TYPE.primary : DEFAULT_DUAL_CHART_TYPE.secondary),
9016
+ foldInfo
9017
+ };
9018
+ const pipeline = [
9019
+ ...pipeByAxis.map((p)=>p(options)),
9020
+ ...pipes
9021
+ ];
9022
+ return execPipeline(pipeline, context, {});
9023
+ });
9380
9024
  return result;
9381
9025
  };
9382
9026
  };
9383
- const seriesDualAxis = (...args)=>{
9027
+ const seriesDualAxis = (pipeByAxis, pipes)=>{
9384
9028
  const result = {
9385
9029
  type: 'common',
9386
9030
  padding: 0,
@@ -9391,129 +9035,52 @@
9391
9035
  }
9392
9036
  ]
9393
9037
  };
9394
- const createDualContext = (context, index)=>{
9395
- const { advancedVSeed } = context;
9396
- const dataset = advancedVSeed.dataset[index];
9397
- return {
9398
- ...context,
9399
- advancedVSeed: {
9400
- ...advancedVSeed,
9401
- dataset: dataset
9402
- }
9403
- };
9404
- };
9405
9038
  return (_, context)=>{
9406
- result.series = args.map((pipeline, index)=>{
9407
- const seriesContext = createDualContext(context, index);
9039
+ const { advancedVSeed } = context;
9040
+ const { datasetReshapeInfo, dataset, reshapeMeasures = [] } = advancedVSeed;
9041
+ result.series = dataset.map((d, index)=>{
9042
+ const seriesContext = {
9043
+ ...context,
9044
+ advancedVSeed: {
9045
+ ...advancedVSeed,
9046
+ dataset: d
9047
+ }
9048
+ };
9049
+ const foldInfo = datasetReshapeInfo[0].foldInfoList[index];
9050
+ const measureId = Object.keys(foldInfo.foldMap)[0];
9051
+ const axisType = foldInfo.measureValue === FoldPrimaryMeasureValue ? 'primary' : 'secondary';
9052
+ const measure = (reshapeMeasures[0] ?? []).find((m)=>m.id === measureId);
9053
+ const options = {
9054
+ axisType,
9055
+ chartType: measure?.chartType ?? ('primary' === axisType ? DEFAULT_DUAL_CHART_TYPE.primary : DEFAULT_DUAL_CHART_TYPE.secondary),
9056
+ foldInfo
9057
+ };
9058
+ const pipeline = [
9059
+ ...pipeByAxis.map((p)=>p(options)),
9060
+ ...pipes
9061
+ ];
9408
9062
  return execPipeline(pipeline, seriesContext, {});
9409
9063
  });
9410
9064
  return result;
9411
9065
  };
9412
9066
  };
9413
- const initDualAxisPrimary = (spec, context)=>{
9414
- const result = {
9415
- ...spec
9416
- };
9417
- const { advancedVSeed } = context;
9418
- const { datasetReshapeInfo } = advancedVSeed;
9419
- const { unfoldInfo, foldInfoList, id } = datasetReshapeInfo[0];
9420
- result.id = `${id}-primary-series`;
9421
- result.type = 'bar';
9422
- result.direction = 'vertical';
9423
- result.xField = unfoldInfo.encodingX;
9424
- result.seriesField = unfoldInfo.encodingColorId;
9425
- result.yField = foldInfoList?.[0].measureValue;
9426
- result.animation = true;
9427
- return result;
9428
- };
9429
- const initDualAxisSecondary = (spec, context)=>{
9430
- const result = {
9431
- ...spec
9432
- };
9433
- const { advancedVSeed, vseed } = context;
9434
- const { datasetReshapeInfo } = advancedVSeed;
9435
- const { unfoldInfo, foldInfoList, id } = datasetReshapeInfo[0];
9436
- result.id = `${id}-secondary-series`;
9437
- result.type = 'line';
9438
- result.direction = 'vertical';
9439
- result.xField = unfoldInfo.encodingX;
9440
- if (foldInfoList?.[1]) result.yField = foldInfoList[1].measureValue;
9441
- result.seriesField = isLinearColor(advancedVSeed, vseed) ? unfoldInfo.encodingDetail : unfoldInfo.encodingColorId;
9442
- result.animation = true;
9443
- return result;
9444
- };
9445
- const DEFAULT_DUAL_CHART_TYPE = {
9446
- primary: 'column',
9447
- secondary: 'line'
9448
- };
9449
- const dualChartTypePrimary = (spec, context)=>{
9450
- const result = {
9451
- ...spec,
9452
- zIndex: 1001
9453
- };
9454
- const { advancedVSeed, vseed } = context;
9455
- const { chartType } = vseed;
9456
- const { datasetReshapeInfo } = advancedVSeed;
9457
- const index = datasetReshapeInfo[0].index;
9458
- const config = advancedVSeed.config?.[chartType]?.dualChartType || DEFAULT_DUAL_CHART_TYPE;
9459
- const primary = (Array.isArray(config) ? config[index]?.primary || config[0]?.primary : config.primary) ?? DEFAULT_DUAL_CHART_TYPE.primary;
9460
- const secondary = (Array.isArray(config) ? config[index]?.secondary || config[0]?.secondary : config.secondary) ?? DEFAULT_DUAL_CHART_TYPE.secondary;
9461
- const bothColumn = 'column' === primary && 'column' === secondary;
9462
- const type = bothColumn ? 'columnParallel' : primary;
9463
- switch(type){
9464
- case 'line':
9465
- result.type = 'line';
9466
- break;
9467
- case 'column':
9468
- result.type = 'bar';
9469
- result.zIndex = 1000;
9470
- break;
9471
- case 'columnParallel':
9472
- {
9473
- const columnSpec = result;
9474
- if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.encodingDetail);
9475
- else if (columnSpec.xField) columnSpec.xField = [
9476
- columnSpec.xField,
9477
- datasetReshapeInfo[0].unfoldInfo.encodingDetail
9478
- ];
9479
- columnSpec.type = 'bar';
9480
- result.zIndex = 1000;
9481
- break;
9482
- }
9483
- case 'columnPercent':
9484
- result.type = 'bar';
9485
- result.percent = true;
9486
- result.zIndex = 1000;
9487
- break;
9488
- case 'area':
9489
- result.type = 'area';
9490
- break;
9491
- case 'areaPercent':
9492
- result.type = 'area';
9493
- result.percent = true;
9494
- break;
9495
- case 'scatter':
9496
- result.type = 'scatter';
9497
- break;
9498
- default:
9499
- result.type = primary;
9500
- }
9501
- return result;
9502
- };
9503
- const dualChartTypeSecondary = (spec, context)=>{
9504
- const result = {
9505
- ...spec,
9506
- zIndex: 1001
9067
+ const initDualAxis = (options)=>(spec, context)=>{
9068
+ const result = {
9069
+ ...spec
9070
+ };
9071
+ const { advancedVSeed, vseed } = context;
9072
+ const { datasetReshapeInfo } = advancedVSeed;
9073
+ const { unfoldInfo, id } = datasetReshapeInfo[0];
9074
+ result.id = `${id}-${options.axisType}-${options.chartType}`;
9075
+ result.type = 'line' === options.chartType ? 'line' : 'bar';
9076
+ result.direction = 'vertical';
9077
+ result.xField = unfoldInfo.encodingX;
9078
+ result.seriesField = isLinearColor(advancedVSeed, vseed) ? unfoldInfo.encodingDetail : unfoldInfo.encodingColorId;
9079
+ result.yField = options.foldInfo.measureValue;
9080
+ result.animation = true;
9081
+ return result;
9507
9082
  };
9508
- const { advancedVSeed, vseed } = context;
9509
- const { chartType } = vseed;
9510
- const { datasetReshapeInfo } = advancedVSeed;
9511
- const config = advancedVSeed.config?.[chartType]?.dualChartType || DEFAULT_DUAL_CHART_TYPE;
9512
- const index = datasetReshapeInfo[0].index;
9513
- const primary = (Array.isArray(config) ? config[index]?.primary || config[0]?.primary : config.primary) ?? DEFAULT_DUAL_CHART_TYPE.primary;
9514
- const secondary = (Array.isArray(config) ? config[index]?.secondary || config[0]?.secondary : config.secondary) ?? DEFAULT_DUAL_CHART_TYPE.secondary;
9515
- const bothColumn = 'column' === primary && 'column' === secondary;
9516
- const type = bothColumn ? 'columnParallel' : secondary;
9083
+ function applyChartType(result, type, datasetReshapeInfo) {
9517
9084
  switch(type){
9518
9085
  case 'line':
9519
9086
  result.type = 'line';
@@ -9550,181 +9117,105 @@
9550
9117
  result.type = 'scatter';
9551
9118
  break;
9552
9119
  default:
9553
- result.type = secondary ?? DEFAULT_DUAL_CHART_TYPE.secondary;
9554
- }
9555
- return result;
9556
- };
9557
- const datasetPrimary = (spec, context)=>{
9558
- const { advancedVSeed, vseed } = context;
9559
- const { analysis, datasetReshapeInfo } = advancedVSeed;
9560
- const orderMapping = analysis?.orderMapping || {};
9561
- const { unfoldInfo } = datasetReshapeInfo[0];
9562
- const x = unfoldInfo.encodingX;
9563
- const colorId = unfoldInfo.encodingColorId;
9564
- const id = datasetReshapeInfo[0].id;
9565
- const fields = {};
9566
- if (x) {
9567
- const order = orderMapping[x];
9568
- if (order) fields[x] = {
9569
- sortIndex: 0,
9570
- domain: order,
9571
- lockStatisticsByDomain: true
9572
- };
9573
- else fields[x] = {
9574
- sortIndex: 0
9575
- };
9120
+ result.type = type;
9576
9121
  }
9577
- if (colorId) {
9578
- const order = orderMapping[colorId];
9579
- if (order) fields[colorId] = {
9580
- sortIndex: 0,
9581
- domain: order,
9582
- lockStatisticsByDomain: true
9583
- };
9584
- else fields[colorId] = {
9585
- sortIndex: 0
9122
+ }
9123
+ const dualChartType = (options)=>(spec, context)=>{
9124
+ const result = {
9125
+ ...spec,
9126
+ zIndex: 1001
9586
9127
  };
9587
- }
9588
- return {
9589
- ...spec,
9590
- data: {
9591
- id: `${id}-primary-dataset`,
9592
- values: chatType_isPivotChart(vseed) ? void 0 : advancedVSeed.dataset,
9593
- fields: fields
9594
- }
9128
+ const { advancedVSeed } = context;
9129
+ const { datasetReshapeInfo, reshapeMeasures = [] } = advancedVSeed;
9130
+ const index = datasetReshapeInfo[0].index;
9131
+ const chartTypes = reshapeMeasures[index].map((m)=>m.chartType);
9132
+ const type = chartTypes.every((ct)=>'column' === ct) && reshapeMeasures[index].length > 1 && reshapeMeasures[index].some((m)=>'primaryYAxis' === m.encoding) && reshapeMeasures[index].some((m)=>'secondaryYAxis' === m.encoding) ? 'columnParallel' : options.chartType;
9133
+ applyChartType(result, type, datasetReshapeInfo);
9134
+ return result;
9595
9135
  };
9596
- };
9597
- const datasetSecondary = (spec, context)=>{
9598
- const { advancedVSeed, vseed } = context;
9599
- const { analysis, datasetReshapeInfo } = advancedVSeed;
9600
- const orderMapping = analysis?.orderMapping || {};
9601
- const { unfoldInfo } = datasetReshapeInfo[0];
9602
- const x = unfoldInfo.encodingX;
9603
- const colorId = unfoldInfo.encodingColorId;
9604
- const id = datasetReshapeInfo[0].id;
9605
- const fields = {};
9606
- if (x) {
9607
- const order = orderMapping[x];
9608
- if (order) fields[x] = {
9609
- sortIndex: 0,
9610
- domain: order,
9611
- lockStatisticsByDomain: true
9612
- };
9613
- else fields[x] = {
9614
- sortIndex: 0
9615
- };
9616
- }
9617
- if (colorId) {
9618
- const order = orderMapping[colorId];
9619
- if (order) fields[colorId] = {
9620
- sortIndex: 0,
9621
- domain: order,
9622
- lockStatisticsByDomain: true
9623
- };
9624
- else fields[colorId] = {
9625
- sortIndex: 0
9626
- };
9627
- }
9628
- return {
9629
- ...spec,
9630
- data: {
9631
- id: `${id}-secondary-dataset`,
9632
- values: chatType_isPivotChart(vseed) ? void 0 : advancedVSeed.dataset,
9633
- fields: fields
9136
+ const datasetDualAxis = (options)=>(spec, context)=>{
9137
+ const { advancedVSeed, vseed } = context;
9138
+ const { analysis, datasetReshapeInfo } = advancedVSeed;
9139
+ const orderMapping = analysis?.orderMapping || {};
9140
+ const { unfoldInfo } = datasetReshapeInfo[0];
9141
+ const x = unfoldInfo.encodingX;
9142
+ const colorId = unfoldInfo.encodingColorId;
9143
+ const id = datasetReshapeInfo[0].id;
9144
+ const fields = {};
9145
+ if (x) {
9146
+ const order = orderMapping[x];
9147
+ if (order) fields[x] = {
9148
+ sortIndex: 0,
9149
+ domain: order,
9150
+ lockStatisticsByDomain: true
9151
+ };
9152
+ else fields[x] = {
9153
+ sortIndex: 0
9154
+ };
9634
9155
  }
9635
- };
9636
- };
9637
- const labelPrimary = (spec, context)=>{
9638
- const result = {
9639
- ...spec
9640
- };
9641
- const { advancedVSeed, vseed } = context;
9642
- const { datasetReshapeInfo, encoding } = advancedVSeed;
9643
- const { chartType } = advancedVSeed;
9644
- const baseConfig = advancedVSeed.config[chartType];
9645
- const foldInfoList = datasetReshapeInfo[0].foldInfoList;
9646
- result.label = buildLabel(baseConfig.label, vseed.measures, vseed.dimensions, advancedVSeed.dimensions, advancedVSeed.measures, encoding, [
9647
- foldInfoList[0]
9648
- ]);
9649
- result.label.zIndex = 1002;
9650
- return result;
9651
- };
9652
- const labelSecondary = (spec, context)=>{
9653
- const result = {
9654
- ...spec
9655
- };
9656
- const { advancedVSeed, vseed } = context;
9657
- const { datasetReshapeInfo, encoding } = advancedVSeed;
9658
- const { chartType } = advancedVSeed;
9659
- const baseConfig = advancedVSeed.config[chartType];
9660
- const foldInfoList = datasetReshapeInfo[0].foldInfoList;
9661
- result.label = buildLabel(baseConfig.label, vseed.measures, vseed.dimensions, advancedVSeed.dimensions, advancedVSeed.measures, encoding, [
9662
- foldInfoList[1]
9663
- ]);
9664
- result.label.zIndex = 1002;
9665
- return result;
9666
- };
9667
- const tooltipPrimary = (spec, context)=>{
9668
- const result = {
9669
- ...spec
9670
- };
9671
- const { advancedVSeed, vseed } = context;
9672
- const { measures, datasetReshapeInfo, chartType, dimensions, encoding } = advancedVSeed;
9673
- const baseConfig = advancedVSeed.config[chartType];
9674
- const { tooltip = {
9675
- enable: true
9676
- } } = baseConfig;
9677
- const { enable } = tooltip;
9678
- const foldInfoList = datasetReshapeInfo[0].foldInfoList;
9679
- const unfoldInfo = datasetReshapeInfo[0].unfoldInfo;
9680
- result.tooltip = {
9681
- visible: enable,
9682
- mark: {
9683
- title: {
9684
- visible: false
9685
- },
9686
- content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), foldInfoList[0], unfoldInfo)
9687
- },
9688
- dimension: {
9689
- title: {
9690
- visible: true
9691
- },
9692
- content: createDimensionContent(dimensions, measures, foldInfoList[0], unfoldInfo)
9156
+ if (colorId) {
9157
+ const order = orderMapping[colorId];
9158
+ if (order) fields[colorId] = {
9159
+ sortIndex: 0,
9160
+ domain: order,
9161
+ lockStatisticsByDomain: true
9162
+ };
9163
+ else fields[colorId] = {
9164
+ sortIndex: 0
9165
+ };
9693
9166
  }
9167
+ return {
9168
+ ...spec,
9169
+ data: {
9170
+ id: `${id}-${options.axisType}-${options.chartType}`,
9171
+ values: chatType_isPivotChart(vseed) ? void 0 : advancedVSeed.dataset,
9172
+ fields: fields
9173
+ }
9174
+ };
9694
9175
  };
9695
- return result;
9696
- };
9697
- const tooltipSecondary = (spec, context)=>{
9698
- const result = {
9699
- ...spec
9176
+ const labelDualAxis = (options)=>(spec, context)=>{
9177
+ const result = {
9178
+ ...spec
9179
+ };
9180
+ const { advancedVSeed, vseed } = context;
9181
+ const { encoding } = advancedVSeed;
9182
+ const { chartType } = advancedVSeed;
9183
+ const baseConfig = advancedVSeed.config[chartType];
9184
+ result.label = buildLabel(baseConfig.label, vseed.measures, vseed.dimensions, advancedVSeed.dimensions, advancedVSeed.measures, encoding, [
9185
+ options.foldInfo
9186
+ ]);
9187
+ result.label.zIndex = 1002;
9188
+ return result;
9700
9189
  };
9701
- const { advancedVSeed, vseed } = context;
9702
- const { measures, datasetReshapeInfo, chartType, dimensions, encoding } = advancedVSeed;
9703
- const baseConfig = advancedVSeed.config[chartType];
9704
- const { tooltip = {
9705
- enable: true
9706
- } } = baseConfig;
9707
- const { enable } = tooltip;
9708
- if (chunk_JK3VNB42_n(datasetReshapeInfo[0].foldInfoList?.[1])) return result;
9709
- const foldInfoList = datasetReshapeInfo[0].foldInfoList;
9710
- const unfoldInfo = datasetReshapeInfo[0].unfoldInfo;
9711
- result.tooltip = {
9712
- visible: enable,
9713
- mark: {
9714
- title: {
9715
- visible: false
9716
- },
9717
- content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), foldInfoList[1], unfoldInfo)
9718
- },
9719
- dimension: {
9720
- title: {
9721
- visible: true
9190
+ const tooltipOfDualAxisSeries = (options)=>(spec, context)=>{
9191
+ const result = {
9192
+ ...spec
9193
+ };
9194
+ const { advancedVSeed, vseed } = context;
9195
+ const { measures = [], datasetReshapeInfo, chartType, dimensions = [], encoding } = advancedVSeed;
9196
+ const baseConfig = advancedVSeed.config[chartType];
9197
+ const { tooltip = {
9198
+ enable: true
9199
+ } } = baseConfig;
9200
+ const { enable } = tooltip;
9201
+ const unfoldInfo = datasetReshapeInfo[0].unfoldInfo;
9202
+ result.tooltip = {
9203
+ visible: enable,
9204
+ mark: {
9205
+ title: {
9206
+ visible: false
9207
+ },
9208
+ content: createMarkContent(encoding.tooltip || [], dimensions, vseed.measures, options.foldInfo, unfoldInfo)
9722
9209
  },
9723
- content: createDimensionContent(dimensions, measures, foldInfoList[1], unfoldInfo)
9724
- }
9210
+ dimension: {
9211
+ title: {
9212
+ visible: true
9213
+ },
9214
+ content: createDimensionContent(dimensions, measures, options.foldInfo, unfoldInfo)
9215
+ }
9216
+ };
9217
+ return result;
9725
9218
  };
9726
- return result;
9727
- };
9728
9219
  const tooltipDualAxis = (spec, context)=>{
9729
9220
  const result = {
9730
9221
  ...spec
@@ -9763,25 +9254,29 @@
9763
9254
  };
9764
9255
  const { advancedVSeed, vseed } = context;
9765
9256
  const { chartType } = vseed;
9766
- const { datasetReshapeInfo, encoding, measures, dimensions } = advancedVSeed;
9257
+ const { datasetReshapeInfo, reshapeMeasures = [] } = advancedVSeed;
9767
9258
  const { index, id: reshapeInfoId, foldInfoList } = datasetReshapeInfo[0];
9768
9259
  const primaryYAxis = advancedVSeed.config?.[chartType]?.primaryYAxis;
9769
9260
  const yAxisConfig = Array.isArray(primaryYAxis) ? primaryYAxis[index] || primaryYAxis[0] : primaryYAxis;
9770
9261
  const alignTicks = advancedVSeed.config?.[chartType]?.alignTicks;
9771
9262
  const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks;
9772
- if (chunk_JK3VNB42_n(foldInfoList?.[0])) return result;
9773
- const isEmptySecondary = chunk_VCYTMP4D_n(foldInfoList?.[0].foldMap);
9263
+ if (!foldInfoList) return result;
9264
+ const primaryFoldInfoList = foldInfoList.filter((f)=>f.measureValue.startsWith(FoldPrimaryMeasureValue));
9265
+ const isEmpty = !primaryFoldInfoList.length || primaryFoldInfoList.every((foldInfo)=>!Object.keys(foldInfo.foldMap).length);
9774
9266
  const id = `${reshapeInfoId}-primary-axis`;
9775
- const seriesIds = [
9776
- `${reshapeInfoId}-primary-series`,
9777
- `${reshapeInfoId}-secondary-series`
9778
- ];
9779
- const seriesId = alignTicksConfig ? seriesIds : seriesIds[0];
9267
+ const seriesId = alignTicksConfig ? spec.series.map((s)=>s.id) : spec.series.filter((s)=>s.yField.startsWith(FoldPrimaryMeasureValue)).map((s)=>s.id);
9780
9268
  if (!result.axes) result.axes = [];
9781
9269
  const { autoFormat, numFormat = {} } = yAxisConfig ?? {};
9782
9270
  const formatter = createNumFormatter(numFormat);
9783
9271
  const formatMethod = (value)=>createLinearFormat(value, autoFormat, numFormat, formatter);
9784
- const titleText = yAxisConfig?.title?.titleText || defaultTitleText(measures, dimensions, encoding.y);
9272
+ const measures = flatReshapeMeasures(reshapeMeasures);
9273
+ const measureIds = primaryFoldInfoList.reduce((res, foldInfo)=>{
9274
+ Object.keys(foldInfo.foldMap).forEach((k)=>{
9275
+ if (!res.includes(k)) res.push(k);
9276
+ });
9277
+ return res;
9278
+ }, []);
9279
+ const titleText = yAxisConfig?.title?.titleText || measures.filter((m)=>'primaryYAxis' === m.encoding && measureIds.includes(m.id)).map((m)=>m.alias ?? m.id).join(' & ');
9785
9280
  const linearAxis = {
9786
9281
  ...linearAxisStyle({
9787
9282
  ...yAxisConfig,
@@ -9791,7 +9286,7 @@
9791
9286
  id,
9792
9287
  seriesId
9793
9288
  }),
9794
- visible: isEmptySecondary ? false : yAxisConfig?.visible ?? true
9289
+ visible: isEmpty ? false : yAxisConfig?.visible ?? true
9795
9290
  };
9796
9291
  result.axes = [
9797
9292
  ...result.axes,
@@ -9805,30 +9300,28 @@
9805
9300
  };
9806
9301
  const { advancedVSeed, vseed } = context;
9807
9302
  const { chartType } = vseed;
9808
- const { datasetReshapeInfo, measures, dimensions, encoding } = advancedVSeed;
9303
+ const { datasetReshapeInfo, reshapeMeasures = [] } = advancedVSeed;
9809
9304
  const { index, id: reshapeInfoId, foldInfoList } = datasetReshapeInfo[0];
9810
9305
  const secondaryYAxis = advancedVSeed.config?.[chartType]?.secondaryYAxis;
9811
9306
  const yAxisConfig = Array.isArray(secondaryYAxis) ? secondaryYAxis[index] || secondaryYAxis[0] : secondaryYAxis;
9812
9307
  const alignTicks = advancedVSeed.config?.[chartType]?.alignTicks;
9813
9308
  const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks;
9814
- if (chunk_JK3VNB42_n(foldInfoList?.[1])) return result;
9815
- const isEmptySecondary = chunk_VCYTMP4D_n(foldInfoList?.[1].foldMap);
9816
- const onlySecondary = chunk_VCYTMP4D_n(foldInfoList?.[0].foldMap) && !isEmptySecondary;
9309
+ if (!foldInfoList) return result;
9310
+ const secondaryFoldInfoList = foldInfoList.filter((f)=>f.measureValue.startsWith(FoldSecondaryMeasureValue));
9311
+ const isEmptySecondary = !secondaryFoldInfoList.length || secondaryFoldInfoList.every((foldInfo)=>!Object.keys(foldInfo.foldMap).length);
9312
+ const onlySecondary = !isEmptySecondary && foldInfoList.length && foldInfoList.every((f)=>f.measureValue.startsWith(FoldSecondaryMeasureValue) || 0 === Object.keys(f.foldMap).length);
9817
9313
  const sync = {
9818
9314
  axisId: `${reshapeInfoId}-primary-axis`,
9819
9315
  zeroAlign: true
9820
9316
  };
9821
9317
  const id = `${reshapeInfoId}-secondary-axis`;
9822
- const seriesIds = [
9823
- `${reshapeInfoId}-primary-series`,
9824
- `${reshapeInfoId}-secondary-series`
9825
- ];
9826
- const seriesId = alignTicksConfig ? seriesIds : seriesIds[1];
9318
+ const seriesId = alignTicksConfig ? spec.series.map((s)=>s.id) : spec.series.filter((s)=>s.yField.startsWith(FoldSecondaryMeasureValue)).map((s)=>s.id);
9827
9319
  if (!result.axes) result.axes = [];
9828
9320
  const { autoFormat, numFormat = {} } = yAxisConfig ?? {};
9829
9321
  const formatter = createNumFormatter(numFormat);
9830
9322
  const formatMethod = (value)=>createLinearFormat(value, autoFormat, numFormat, formatter);
9831
- const titleText = yAxisConfig?.title?.titleText || defaultTitleText(measures, dimensions, encoding.y);
9323
+ const measures = flatReshapeMeasures(reshapeMeasures);
9324
+ const titleText = yAxisConfig?.title?.titleText || measures.filter((m)=>'secondaryYAxis' === m.encoding).map((m)=>m.alias ?? m.id).join(' & ');
9832
9325
  const baseStyle = linearAxisStyle({
9833
9326
  ...yAxisConfig,
9834
9327
  orient: 'right',
@@ -9858,7 +9351,7 @@
9858
9351
  };
9859
9352
  const { advancedVSeed } = context;
9860
9353
  const { datasetReshapeInfo, chartType } = advancedVSeed;
9861
- const { unfoldInfo, id } = datasetReshapeInfo[0];
9354
+ const { unfoldInfo } = datasetReshapeInfo[0];
9862
9355
  const baseConfig = advancedVSeed.config[chartType];
9863
9356
  if (!baseConfig || !baseConfig.color) return result;
9864
9357
  const { color } = baseConfig;
@@ -9866,20 +9359,12 @@
9866
9359
  result.color = {
9867
9360
  type: 'linear',
9868
9361
  range: linearColorScheme || colorScheme || [],
9869
- domain: [
9870
- {
9871
- dataId: `${id}-primary-dataset`,
9872
- fields: [
9873
- unfoldInfo.encodingColor
9874
- ]
9875
- },
9876
- {
9877
- dataId: `${id}-secondary-dataset`,
9362
+ domain: spec.series.map((s)=>({
9363
+ dataId: s.data.id,
9878
9364
  fields: [
9879
9365
  unfoldInfo.encodingColor
9880
9366
  ]
9881
- }
9882
- ]
9367
+ }))
9883
9368
  };
9884
9369
  return result;
9885
9370
  };
@@ -9912,14 +9397,14 @@
9912
9397
  const annotationPointOfDualAxis = generateAnnotationPointPipe({
9913
9398
  findSelectedDatas: (dataset, s, spec, context)=>dataset.reduce((res, d)=>{
9914
9399
  const { advancedVSeed } = context;
9915
- const allMeasureIds = findAllMeasures(advancedVSeed.reshapeMeasures ?? advancedVSeed.measures).map((m)=>m.id);
9400
+ const allMeasureIds = flatReshapeMeasures(advancedVSeed.reshapeMeasures ?? []).map((m)=>m.id);
9916
9401
  const pickedDatum = pickWithout(d, allMeasureIds.filter((id)=>id !== d[MeasureId]));
9917
9402
  if (selector_selector(pickedDatum, s)) res.push(pickedDatum);
9918
9403
  return res;
9919
9404
  }, []),
9920
9405
  generateMarkPoint: (datum, spec, context)=>{
9921
9406
  const { advancedVSeed } = context;
9922
- const allMeasureIds = findAllMeasures(advancedVSeed.reshapeMeasures ?? advancedVSeed.measures).map((m)=>m.id);
9407
+ const allMeasureIds = flatReshapeMeasures(advancedVSeed.reshapeMeasures ?? []).map((m)=>m.id);
9923
9408
  return spec.series?.map((s, index)=>({
9924
9409
  relativeSeriesIndex: index,
9925
9410
  coordinate: (data)=>data.find((item)=>isSubset(datum, item, allMeasureIds.filter((id)=>id !== item[MeasureId])))
@@ -9928,26 +9413,12 @@
9928
9413
  });
9929
9414
  const dualAxis = [
9930
9415
  seriesDualAxis([
9931
- initDualAxisPrimary,
9932
- dualChartTypePrimary,
9933
- datasetPrimary,
9934
- labelPrimary,
9935
- tooltipPrimary,
9936
- progressive,
9937
- barMaxWidth_barMaxWidth,
9938
- barGapInGroup_barGapInGroup,
9939
- stackCornerRadius_stackCornerRadius,
9940
- barStyleFilter(colorBarStyleFill(barStyle_barStyle)),
9941
- pointStyleFilter(colorPointStyleFill(pointStyle_pointStyle)),
9942
- pointStyleFilter(pointStateDimensionHover),
9943
- lineStyleFilter(colorLineStyleFill(lineStyle_lineStyle)),
9944
- areaStyleFilter(colorAreaStyleFill(areaStyle_areaStyle))
9416
+ initDualAxis,
9417
+ dualChartType,
9418
+ datasetDualAxis,
9419
+ labelDualAxis,
9420
+ tooltipOfDualAxisSeries
9945
9421
  ], [
9946
- initDualAxisSecondary,
9947
- dualChartTypeSecondary,
9948
- datasetSecondary,
9949
- labelSecondary,
9950
- tooltipSecondary,
9951
9422
  progressive,
9952
9423
  barMaxWidth_barMaxWidth,
9953
9424
  barGapInGroup_barGapInGroup,
@@ -9978,35 +9449,21 @@
9978
9449
  datasetPivot,
9979
9450
  pivotIndicators_pivotIndicators([
9980
9451
  series_series([
9981
- initDualAxisPrimary,
9982
- dualChartTypePrimary,
9983
- datasetPrimary,
9984
- labelPrimary,
9985
- tooltipPrimary,
9986
- progressive,
9987
- stackCornerRadius_stackCornerRadius,
9988
- barMaxWidth_barMaxWidth,
9989
- barGapInGroup_barGapInGroup,
9990
- colorBarStyleFill(barStyle_barStyle),
9991
- colorPointStyleFill(pointStyle_pointStyle),
9992
- pointStateDimensionHover,
9993
- colorLineStyleFill(lineStyle_lineStyle),
9994
- colorAreaStyleFill(areaStyle_areaStyle)
9452
+ initDualAxis,
9453
+ dualChartType,
9454
+ datasetDualAxis,
9455
+ labelDualAxis,
9456
+ tooltipOfDualAxisSeries
9995
9457
  ], [
9996
- initDualAxisSecondary,
9997
- dualChartTypeSecondary,
9998
- datasetSecondary,
9999
- labelSecondary,
10000
- tooltipSecondary,
10001
9458
  progressive,
10002
- stackCornerRadius_stackCornerRadius,
10003
9459
  barMaxWidth_barMaxWidth,
10004
9460
  barGapInGroup_barGapInGroup,
10005
- colorBarStyleFill(barStyle_barStyle),
10006
- colorPointStyleFill(pointStyle_pointStyle),
10007
- pointStateDimensionHover,
10008
- colorLineStyleFill(lineStyle_lineStyle),
10009
- colorAreaStyleFill(areaStyle_areaStyle)
9461
+ stackCornerRadius_stackCornerRadius,
9462
+ barStyleFilter(colorBarStyleFill(barStyle_barStyle)),
9463
+ pointStyleFilter(colorPointStyleFill(pointStyle_pointStyle)),
9464
+ pointStyleFilter(pointStateDimensionHover),
9465
+ lineStyleFilter(colorLineStyleFill(lineStyle_lineStyle)),
9466
+ areaStyleFilter(colorAreaStyleFill(areaStyle_areaStyle))
10010
9467
  ]),
10011
9468
  xBand,
10012
9469
  yLinearPrimary,
@@ -10034,10 +9491,9 @@
10034
9491
  Builder._specPipelineMap.dualAxis = dualAxisSpecPipeline;
10035
9492
  };
10036
9493
  const defaultEncodingForPie = (advancedVSeed)=>{
10037
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
10038
- const measures = findAllMeasures(vseedMeasures);
9494
+ const { measures = [], reshapeMeasures = [], dimensions = [] } = advancedVSeed;
10039
9495
  const encoding = {};
10040
- pie_generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(vseedMeasures));
9496
+ pie_generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(reshapeMeasures));
10041
9497
  pie_generateDefaultMeasureEncoding(measures, encoding);
10042
9498
  return {
10043
9499
  ...advancedVSeed,
@@ -10045,12 +9501,11 @@
10045
9501
  };
10046
9502
  };
10047
9503
  const encodingForPie = (advancedVSeed)=>{
10048
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
10049
- const measures = findAllMeasures(vseedMeasures);
9504
+ const { measures = [], reshapeMeasures = [], dimensions = [] } = advancedVSeed;
10050
9505
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
10051
9506
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
10052
9507
  const encoding = {};
10053
- const hasMulti = hasMultipleMeasureInSingleView(vseedMeasures);
9508
+ const hasMulti = hasMultipleMeasureInSingleView(reshapeMeasures);
10054
9509
  if (hasDimensionEncoding) pie_generateDimensionEncoding(dimensions, encoding, hasMulti);
10055
9510
  else pie_generateDefaultDimensionEncoding(dimensions, encoding, hasMulti);
10056
9511
  if (hasMeasureEncoding) pie_generateMeasureEncoding(measures, encoding);
@@ -10106,16 +9561,17 @@
10106
9561
  defaultDimensions_defaultDimensions,
10107
9562
  defaultMeasureId_defaultMeasureId,
10108
9563
  encodingAdapter([
10109
- buildMeasures,
9564
+ buildMeasures([
9565
+ 'angle',
9566
+ 'detail'
9567
+ ]),
10110
9568
  defaultEncodingForPie
10111
9569
  ], [
10112
- buildMeasures,
10113
- encodingForPie,
10114
- pickMeasuresForReshape([
10115
- 'tooltip',
10116
- 'label',
10117
- 'color'
9570
+ buildMeasures([
9571
+ 'angle',
9572
+ 'detail'
10118
9573
  ]),
9574
+ encodingForPie,
10119
9575
  pickDimensionsForReshape
10120
9576
  ]),
10121
9577
  pivotAdapter([
@@ -10271,16 +9727,17 @@
10271
9727
  defaultDimensions_defaultDimensions,
10272
9728
  defaultMeasureId_defaultMeasureId,
10273
9729
  encodingAdapter([
10274
- buildMeasures,
9730
+ buildMeasures([
9731
+ 'angle',
9732
+ 'detail'
9733
+ ]),
10275
9734
  defaultEncodingForPie
10276
9735
  ], [
10277
- buildMeasures,
10278
- encodingForPie,
10279
- pickMeasuresForReshape([
10280
- 'tooltip',
10281
- 'label',
10282
- 'color'
9736
+ buildMeasures([
9737
+ 'angle',
9738
+ 'detail'
10283
9739
  ]),
9740
+ encodingForPie,
10284
9741
  pickDimensionsForReshape
10285
9742
  ]),
10286
9743
  pivotAdapter([
@@ -10362,10 +9819,9 @@
10362
9819
  Builder._specPipelineMap.donut = donutSpecPipeline;
10363
9820
  };
10364
9821
  const defaultEncodingForRose = (advancedVSeed)=>{
10365
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
10366
- const measures = findAllMeasures(vseedMeasures);
9822
+ const { measures = [], reshapeMeasures = [], dimensions = [] } = advancedVSeed;
10367
9823
  const encoding = {};
10368
- rose_generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(vseedMeasures));
9824
+ rose_generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(reshapeMeasures));
10369
9825
  rose_generateDefaultMeasureEncoding(measures, encoding);
10370
9826
  return {
10371
9827
  ...advancedVSeed,
@@ -10373,12 +9829,11 @@
10373
9829
  };
10374
9830
  };
10375
9831
  const encodingForRose = (advancedVSeed)=>{
10376
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
10377
- const measures = findAllMeasures(vseedMeasures);
9832
+ const { measures = [], reshapeMeasures = [], dimensions = [] } = advancedVSeed;
10378
9833
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
10379
9834
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
10380
9835
  const encoding = {};
10381
- const hasMulti = hasMultipleMeasureInSingleView(vseedMeasures);
9836
+ const hasMulti = hasMultipleMeasureInSingleView(reshapeMeasures);
10382
9837
  if (hasDimensionEncoding) rose_generateDimensionEncoding(dimensions, encoding, hasMulti);
10383
9838
  else rose_generateDefaultDimensionEncoding(dimensions, encoding, hasMulti);
10384
9839
  if (hasMeasureEncoding) rose_generateMeasureEncoding(measures, encoding);
@@ -10436,16 +9891,17 @@
10436
9891
  defaultDimensions_defaultDimensions,
10437
9892
  defaultMeasureId_defaultMeasureId,
10438
9893
  encodingAdapter([
10439
- buildMeasures,
9894
+ buildMeasures([
9895
+ 'angle',
9896
+ 'detail'
9897
+ ]),
10440
9898
  defaultEncodingForRose
10441
9899
  ], [
10442
- buildMeasures,
10443
- encodingForRose,
10444
- pickMeasuresForReshape([
10445
- 'tooltip',
10446
- 'label',
10447
- 'color'
9900
+ buildMeasures([
9901
+ 'angle',
9902
+ 'detail'
10448
9903
  ]),
9904
+ encodingForRose,
10449
9905
  pickDimensionsForReshape
10450
9906
  ]),
10451
9907
  pivotAdapter([
@@ -10589,16 +10045,17 @@
10589
10045
  defaultDimensions_defaultDimensions,
10590
10046
  defaultMeasureId_defaultMeasureId,
10591
10047
  encodingAdapter([
10592
- buildMeasures,
10048
+ buildMeasures([
10049
+ 'radius',
10050
+ 'detail'
10051
+ ]),
10593
10052
  defaultEncodingForRose
10594
10053
  ], [
10595
- buildMeasures,
10596
- encodingForRose,
10597
- pickMeasuresForReshape([
10598
- 'tooltip',
10599
- 'label',
10600
- 'color'
10054
+ buildMeasures([
10055
+ 'radius',
10056
+ 'detail'
10601
10057
  ]),
10058
+ encodingForRose,
10602
10059
  pickDimensionsForReshape
10603
10060
  ]),
10604
10061
  pivotAdapter([
@@ -10709,10 +10166,9 @@
10709
10166
  Builder._specPipelineMap.roseParallel = roseParallelSpecPipeline;
10710
10167
  };
10711
10168
  const defaultEncodingForRadar = (advancedVSeed)=>{
10712
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
10713
- const measures = findAllMeasures(vseedMeasures);
10169
+ const { measures = [], reshapeMeasures = [], dimensions = [] } = advancedVSeed;
10714
10170
  const encoding = {};
10715
- radar_generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(vseedMeasures));
10171
+ radar_generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(reshapeMeasures));
10716
10172
  radar_generateDefaultMeasureEncoding(measures, encoding);
10717
10173
  return {
10718
10174
  ...advancedVSeed,
@@ -10720,12 +10176,11 @@
10720
10176
  };
10721
10177
  };
10722
10178
  const encodingForRadar = (advancedVSeed)=>{
10723
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
10724
- const measures = findAllMeasures(vseedMeasures);
10179
+ const { measures = [], reshapeMeasures = [], dimensions = [] } = advancedVSeed;
10725
10180
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
10726
10181
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
10727
10182
  const encoding = {};
10728
- const hasMulti = hasMultipleMeasureInSingleView(vseedMeasures);
10183
+ const hasMulti = hasMultipleMeasureInSingleView(reshapeMeasures);
10729
10184
  if (hasDimensionEncoding) radar_generateDimensionEncoding(dimensions, encoding, hasMulti);
10730
10185
  else radar_generateDefaultDimensionEncoding(dimensions, encoding, hasMulti);
10731
10186
  if (hasMeasureEncoding) radar_generateMeasureEncoding(measures, encoding);
@@ -10785,16 +10240,17 @@
10785
10240
  defaultDimensions_defaultDimensions,
10786
10241
  defaultMeasureId_defaultMeasureId,
10787
10242
  encodingAdapter([
10788
- buildMeasures,
10243
+ buildMeasures([
10244
+ 'radius',
10245
+ 'detail'
10246
+ ]),
10789
10247
  defaultEncodingForRadar
10790
10248
  ], [
10791
- buildMeasures,
10792
- encodingForRadar,
10793
- pickMeasuresForReshape([
10794
- 'tooltip',
10795
- 'label',
10796
- 'color'
10249
+ buildMeasures([
10250
+ 'radius',
10251
+ 'detail'
10797
10252
  ]),
10253
+ encodingForRadar,
10798
10254
  pickDimensionsForReshape
10799
10255
  ]),
10800
10256
  pivotAdapter([
@@ -10928,10 +10384,9 @@
10928
10384
  Builder._specPipelineMap.radar = radarSpecPipeline;
10929
10385
  };
10930
10386
  const defaultEncodingForFunnel = (advancedVSeed)=>{
10931
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
10932
- const measures = findAllMeasures(vseedMeasures);
10387
+ const { measures = [], reshapeMeasures = [], dimensions = [] } = advancedVSeed;
10933
10388
  const encoding = {};
10934
- funnel_generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(vseedMeasures));
10389
+ funnel_generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(reshapeMeasures));
10935
10390
  funnel_generateDefaultMeasureEncoding(measures, encoding);
10936
10391
  return {
10937
10392
  ...advancedVSeed,
@@ -10939,12 +10394,11 @@
10939
10394
  };
10940
10395
  };
10941
10396
  const encodingForFunnel = (advancedVSeed)=>{
10942
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
10943
- const measures = findAllMeasures(vseedMeasures);
10397
+ const { measures = [], reshapeMeasures = [], dimensions = [] } = advancedVSeed;
10944
10398
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
10945
10399
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
10946
10400
  const encoding = {};
10947
- const hasMulti = hasMultipleMeasureInSingleView(vseedMeasures);
10401
+ const hasMulti = hasMultipleMeasureInSingleView(reshapeMeasures);
10948
10402
  if (hasDimensionEncoding) funnel_generateDimensionEncoding(dimensions, encoding, hasMulti);
10949
10403
  else funnel_generateDefaultDimensionEncoding(dimensions, encoding, hasMulti);
10950
10404
  if (hasMeasureEncoding) funnel_generateMeasureEncoding(measures, encoding);
@@ -11001,16 +10455,17 @@
11001
10455
  defaultDimensions_defaultDimensions,
11002
10456
  defaultMeasureId_defaultMeasureId,
11003
10457
  encodingAdapter([
11004
- buildMeasures,
10458
+ buildMeasures([
10459
+ 'size',
10460
+ 'detail'
10461
+ ]),
11005
10462
  defaultEncodingForFunnel
11006
10463
  ], [
11007
- buildMeasures,
11008
- encodingForFunnel,
11009
- pickMeasuresForReshape([
11010
- 'tooltip',
11011
- 'label',
11012
- 'color'
10464
+ buildMeasures([
10465
+ 'size',
10466
+ 'detail'
11013
10467
  ]),
10468
+ encodingForFunnel,
11014
10469
  pickDimensionsForReshape
11015
10470
  ]),
11016
10471
  pivotAdapter([
@@ -11146,8 +10601,7 @@
11146
10601
  Builder._specPipelineMap.funnel = funnelSpecPipeline;
11147
10602
  };
11148
10603
  const defaultEncodingForHeatmap = (advancedVSeed)=>{
11149
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
11150
- const measures = findAllMeasures(vseedMeasures);
10604
+ const { measures = [], dimensions = [] } = advancedVSeed;
11151
10605
  const encoding = {};
11152
10606
  heatmap_generateDefaultDimensionEncoding(dimensions, encoding);
11153
10607
  heatmap_generateDefaultMeasureEncoding(measures, encoding);
@@ -11157,12 +10611,11 @@
11157
10611
  };
11158
10612
  };
11159
10613
  const encodingForHeatmap = (advancedVSeed)=>{
11160
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
11161
- const measures = findAllMeasures(vseedMeasures);
10614
+ const { measures = [], reshapeMeasures = [], dimensions = [] } = advancedVSeed;
11162
10615
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
11163
10616
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
11164
10617
  const encoding = {};
11165
- if (hasDimensionEncoding) heatmap_generateDimensionEncoding(dimensions, encoding, measures.length > 1);
10618
+ if (hasDimensionEncoding) heatmap_generateDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(reshapeMeasures));
11166
10619
  else heatmap_generateDefaultDimensionEncoding(dimensions, encoding);
11167
10620
  if (hasMeasureEncoding) heatmap_generateMeasureEncoding(measures, encoding);
11168
10621
  else heatmap_generateDefaultMeasureEncoding(measures, encoding);
@@ -11228,15 +10681,17 @@
11228
10681
  defaultDimensions_defaultDimensions,
11229
10682
  defaultMeasureId_defaultMeasureId,
11230
10683
  encodingAdapter([
11231
- buildMeasures,
10684
+ buildMeasures([
10685
+ 'color',
10686
+ 'detail'
10687
+ ]),
11232
10688
  defaultEncodingForHeatmap
11233
10689
  ], [
11234
- buildMeasures,
11235
- encodingForHeatmap,
11236
- pickMeasuresForReshape([
11237
- 'tooltip',
11238
- 'label'
10690
+ buildMeasures([
10691
+ 'color',
10692
+ 'detail'
11239
10693
  ]),
10694
+ encodingForHeatmap,
11240
10695
  pickDimensionsForReshape
11241
10696
  ]),
11242
10697
  pivotAdapter([
@@ -11324,7 +10779,7 @@
11324
10779
  ...spec
11325
10780
  };
11326
10781
  const { advancedVSeed, vseed } = context;
11327
- const { datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
10782
+ const { datasetReshapeInfo, chartType, locale, dimensions = [], encoding } = advancedVSeed;
11328
10783
  const baseConfig = advancedVSeed.config[chartType];
11329
10784
  const { tooltip = {
11330
10785
  enable: true
@@ -11338,7 +10793,7 @@
11338
10793
  title: {
11339
10794
  visible: false
11340
10795
  },
11341
- content: tooltipHeatmap_createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), locale, foldInfo)
10796
+ content: tooltipHeatmap_createMarkContent(encoding.tooltip || [], dimensions, vseed.measures, locale, foldInfo)
11342
10797
  },
11343
10798
  dimension: {
11344
10799
  visible: false
@@ -11347,7 +10802,7 @@
11347
10802
  };
11348
10803
  return result;
11349
10804
  };
11350
- const tooltipHeatmap_createMarkContent = (tooltip, dimensions, measures, locale, foldInfo)=>{
10805
+ const tooltipHeatmap_createMarkContent = (tooltip, dimensions, measures = [], locale, foldInfo)=>{
11351
10806
  const dims = T(dimensions.filter((item)=>tooltip.includes(item.id)), (item)=>item.id);
11352
10807
  const meas = T(measures.filter((item)=>tooltip.includes(item.id)), (item)=>item.id);
11353
10808
  const dimContent = dims.map((item)=>({
@@ -11508,10 +10963,9 @@
11508
10963
  return result;
11509
10964
  };
11510
10965
  const defaultEncodingForBoxplot = (advancedVSeed)=>{
11511
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
11512
- const measures = findAllMeasures(vseedMeasures);
10966
+ const { measures = [], reshapeMeasures = [], dimensions = [] } = advancedVSeed;
11513
10967
  const encoding = {};
11514
- boxplot_generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(vseedMeasures));
10968
+ boxplot_generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(reshapeMeasures));
11515
10969
  boxplot_generateDefaultMeasureEncoding(measures, encoding);
11516
10970
  return {
11517
10971
  ...advancedVSeed,
@@ -11519,12 +10973,11 @@
11519
10973
  };
11520
10974
  };
11521
10975
  const encodingForBoxplot = (advancedVSeed)=>{
11522
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
11523
- const measures = findAllMeasures(vseedMeasures);
10976
+ const { measures = [], reshapeMeasures = [], dimensions = [] } = advancedVSeed;
11524
10977
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
11525
10978
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
11526
10979
  const encoding = {};
11527
- const hasMulti = hasMultipleMeasureInSingleView(vseedMeasures);
10980
+ const hasMulti = hasMultipleMeasureInSingleView(reshapeMeasures);
11528
10981
  if (hasDimensionEncoding) boxplot_generateDimensionEncoding(dimensions, encoding, hasMulti);
11529
10982
  else boxplot_generateDefaultDimensionEncoding(dimensions, encoding, hasMulti);
11530
10983
  if (hasMeasureEncoding) boxplot_generateMeasureEncoding(measures, encoding);
@@ -11642,19 +11095,17 @@
11642
11095
  };
11643
11096
  const { vseed } = context;
11644
11097
  const { dataset, chartType } = vseed;
11645
- const { encoding = {}, config } = advancedVSeed;
11646
- const measures = advancedVSeed.reshapeMeasures ?? advancedVSeed.measures ?? [];
11098
+ const { encoding = {}, config, measures = [] } = advancedVSeed;
11647
11099
  const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? [];
11648
11100
  const uniqDims = T(dimensions, (item)=>item.id);
11649
11101
  const whiskers = config?.[chartType]?.whiskers;
11650
11102
  let newDatasets = [];
11651
11103
  let foldInfo = {};
11652
11104
  let unfoldInfo = {};
11653
- const allMeasures = findAllMeasures(measures);
11654
11105
  if (encoding.value?.length) {
11655
11106
  const boxPlotDataList = [];
11656
11107
  encoding.value.forEach((f)=>{
11657
- const m = allMeasures.find((m)=>m.id === f);
11108
+ const m = measures.find((m)=>m.id === f);
11658
11109
  const boxPlotData = boxplot_boxplot(dataset, {
11659
11110
  field: f,
11660
11111
  groupField: [
@@ -11713,9 +11164,7 @@
11713
11164
  foldInfo,
11714
11165
  unfoldInfo
11715
11166
  }
11716
- ],
11717
- dimensions,
11718
- measures
11167
+ ]
11719
11168
  };
11720
11169
  };
11721
11170
  const revisedBoxPlotFieldKey = (fieldKey, groupId, isPivotChart = true)=>{
@@ -11729,30 +11178,24 @@
11729
11178
  const { vseed } = context;
11730
11179
  const { dataset, chartType } = vseed;
11731
11180
  const { encoding = {}, config } = advancedVSeed;
11732
- const measures = advancedVSeed.reshapeMeasures ?? advancedVSeed.measures ?? [];
11181
+ const reshapeMeasures = advancedVSeed.reshapeMeasures ?? [];
11733
11182
  const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? [];
11734
11183
  const uniqDims = T(dimensions, (item)=>item.id);
11735
11184
  const chartConfig = config?.[chartType];
11736
11185
  const whiskers = chartConfig?.whiskers;
11737
- const measureGroups = [];
11738
- if (measures) measures.forEach((measure)=>{
11739
- if (measure.children && measure.children.length > 0) measureGroups.push(measure);
11740
- });
11741
11186
  const rowColumnFields = T(dimensions.filter((dim)=>'row' === dim.encoding || 'column' === dim.encoding), (item)=>item.id);
11742
11187
  const datasets = [];
11743
11188
  const datasetReshapeInfo = [];
11744
- measureGroups.forEach((measureGroup, index)=>{
11745
- const subMeasures = measureGroup.children;
11746
- if (!subMeasures) return;
11747
- const groupId = measureGroup.id;
11189
+ reshapeMeasures.forEach((measureGroup, index)=>{
11190
+ const groupId = measureGroup[0].parentId ?? DEFAULT_PARENT_ID;
11748
11191
  let newDatasets = [];
11749
11192
  let foldInfo = {};
11750
11193
  let unfoldInfo = {};
11751
- const validEncodingIds = (encoding.value || []).filter((id)=>subMeasures.find((field)=>field.id === id));
11194
+ const validEncodingIds = (encoding.value || []).filter((id)=>measureGroup.find((field)=>field.id === id));
11752
11195
  if (validEncodingIds.length) {
11753
11196
  const boxPlotDataList = [];
11754
11197
  validEncodingIds.forEach((f)=>{
11755
- const m = subMeasures.find((m)=>m.id === f);
11198
+ const m = measureGroup.find((m)=>m.id === f);
11756
11199
  const boxPlotData = boxplot_boxplot(dataset, {
11757
11200
  field: f,
11758
11201
  groupField: [
@@ -11835,16 +11278,27 @@
11835
11278
  defaultMeasureId_defaultMeasureId,
11836
11279
  boxplotConfig,
11837
11280
  encodingAdapter([
11838
- buildMeasures,
11281
+ buildMeasures([
11282
+ 'value',
11283
+ 'q1',
11284
+ 'q3',
11285
+ 'min',
11286
+ 'max',
11287
+ 'median',
11288
+ 'outliers'
11289
+ ]),
11839
11290
  defaultEncodingForBoxplot
11840
11291
  ], [
11841
- buildMeasures,
11842
- encodingForBoxplot,
11843
- pickMeasuresForReshape([
11844
- 'tooltip',
11845
- 'label',
11846
- 'color'
11292
+ buildMeasures([
11293
+ 'value',
11294
+ 'q1',
11295
+ 'q3',
11296
+ 'min',
11297
+ 'max',
11298
+ 'median',
11299
+ 'outliers'
11847
11300
  ]),
11301
+ encodingForBoxplot,
11848
11302
  pickDimensionsForReshape
11849
11303
  ]),
11850
11304
  pivotAdapter([
@@ -11953,13 +11407,13 @@
11953
11407
  ...spec
11954
11408
  };
11955
11409
  const { advancedVSeed, vseed } = context;
11956
- const { chartType, dimensions, encoding, datasetReshapeInfo } = advancedVSeed;
11410
+ const { chartType, dimensions = [], encoding, datasetReshapeInfo } = advancedVSeed;
11957
11411
  const baseConfig = advancedVSeed.config[chartType];
11958
11412
  const { tooltip = {
11959
11413
  enable: true
11960
11414
  } } = baseConfig;
11961
11415
  const { enable } = tooltip;
11962
- const meas = findAllMeasures(vseed.measures);
11416
+ const meas = vseed.measures ?? [];
11963
11417
  const valueMeasure = meas.find((item)=>'value' === item.encoding || chunk_JK3VNB42_n(item.encoding));
11964
11418
  const defaultFormatter = valueMeasure ? createFormatterByMeasure(valueMeasure) : (v)=>v;
11965
11419
  const measureAliasMapping = {
@@ -12383,8 +11837,7 @@
12383
11837
  return result;
12384
11838
  };
12385
11839
  const defaultEncodingForHistogram = (advancedVSeed)=>{
12386
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
12387
- const measures = findAllMeasures(vseedMeasures);
11840
+ const { measures = [], dimensions = [] } = advancedVSeed;
12388
11841
  const encoding = {};
12389
11842
  histogram_generateDefaultDimensionEncoding(dimensions, encoding);
12390
11843
  histogram_generateDefaultMeasureEncoding(measures, encoding);
@@ -12394,8 +11847,7 @@
12394
11847
  };
12395
11848
  };
12396
11849
  const encodingForHistogram = (advancedVSeed)=>{
12397
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
12398
- const measures = findAllMeasures(vseedMeasures);
11850
+ const { measures = [], dimensions = [] } = advancedVSeed;
12399
11851
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
12400
11852
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
12401
11853
  const encoding = {};
@@ -12595,8 +12047,7 @@
12595
12047
  };
12596
12048
  const { vseed } = context;
12597
12049
  const { dataset, chartType } = vseed;
12598
- const { encoding = {}, config } = advancedVSeed;
12599
- const measures = advancedVSeed.reshapeMeasures ?? advancedVSeed.measures ?? [];
12050
+ const { encoding = {}, config, measures = [] } = advancedVSeed;
12600
12051
  const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? [];
12601
12052
  const uniqDims = T(dimensions, (item)=>item.id);
12602
12053
  const chartConfig = config?.[chartType];
@@ -12620,10 +12071,9 @@
12620
12071
  };
12621
12072
  let unfoldInfo = {};
12622
12073
  const colorMeasureId = getColorMeasureId(advancedVSeed, vseed);
12623
- const allMeasures = findAllMeasures(measures);
12624
12074
  if (encoding.value?.length) {
12625
12075
  const valueField = encoding.value[0];
12626
- const m = allMeasures.find((m)=>m.id === valueField);
12076
+ const m = measures.find((m)=>m.id === valueField);
12627
12077
  const binData = bin_bin(dataset, {
12628
12078
  field: valueField,
12629
12079
  groupField: [
@@ -12661,7 +12111,7 @@
12661
12111
  });
12662
12112
  unfoldInfo = res.unfoldInfo;
12663
12113
  } else if (encoding.x0?.length && encoding.x1?.length && encoding.y?.length) {
12664
- const res = dataReshapeByEncoding(dataset, T(dimensions, (item)=>item.id), findAllMeasures(measures).filter((item)=>encoding.y?.includes(item.id)).slice(0, 1), encoding, {
12114
+ const res = dataReshapeByEncoding(dataset, T(dimensions, (item)=>item.id), measures.filter((item)=>encoding.y?.includes(item.id)).slice(0, 1), encoding, {
12665
12115
  colorItemAsId: false,
12666
12116
  colorMeasureId
12667
12117
  });
@@ -12683,9 +12133,7 @@
12683
12133
  foldInfo,
12684
12134
  unfoldInfo
12685
12135
  }
12686
- ],
12687
- dimensions,
12688
- measures
12136
+ ]
12689
12137
  };
12690
12138
  };
12691
12139
  const pivotReshapeWithHistogramEncoding = (advancedVSeed, context)=>{
@@ -12695,7 +12143,7 @@
12695
12143
  const { vseed } = context;
12696
12144
  const { dataset, chartType } = vseed;
12697
12145
  const { encoding = {}, config } = advancedVSeed;
12698
- const measures = advancedVSeed.reshapeMeasures ?? advancedVSeed.measures ?? [];
12146
+ const reshapeMeasures = advancedVSeed.reshapeMeasures ?? [];
12699
12147
  const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? [];
12700
12148
  const colorMeasureId = getColorMeasureId(advancedVSeed, vseed);
12701
12149
  const uniqDims = T(dimensions, (item)=>item.id);
@@ -12703,17 +12151,12 @@
12703
12151
  const binCount = chartConfig?.binCount;
12704
12152
  const binStep = chartConfig?.binStep;
12705
12153
  const binValueType = chartConfig?.binValueType;
12706
- const measureGroups = [];
12707
- if (measures) measures.forEach((measure)=>{
12708
- if (measure.children && measure.children.length > 0) measureGroups.push(measure);
12709
- });
12710
12154
  const rowColumnFields = T(dimensions.filter((dim)=>'row' === dim.encoding || 'column' === dim.encoding), (item)=>item.id);
12711
12155
  const datasets = [];
12712
12156
  const datasetReshapeInfo = [];
12713
- measureGroups.forEach((measureGroup, index)=>{
12714
- const subMeasures = measureGroup.children;
12157
+ reshapeMeasures.forEach((subMeasures, index)=>{
12715
12158
  if (!subMeasures) return;
12716
- const groupId = measureGroup.id;
12159
+ const groupId = subMeasures[0].id ?? DEFAULT_PARENT_ID;
12717
12160
  let newDatasets = [];
12718
12161
  let foldInfo = {
12719
12162
  foldMap: {},
@@ -12805,16 +12248,23 @@
12805
12248
  defaultDimensions_defaultDimensions,
12806
12249
  histogramConfig,
12807
12250
  encodingAdapter([
12808
- buildMeasures,
12251
+ buildMeasures([
12252
+ 'value',
12253
+ 'x0',
12254
+ 'x1',
12255
+ 'yAxis',
12256
+ 'detail'
12257
+ ]),
12809
12258
  defaultEncodingForHistogram
12810
12259
  ], [
12811
- buildMeasures,
12812
- encodingForHistogram,
12813
- pickMeasuresForReshape([
12814
- 'tooltip',
12815
- 'label',
12816
- 'color'
12260
+ buildMeasures([
12261
+ 'value',
12262
+ 'x0',
12263
+ 'x1',
12264
+ 'yAxis',
12265
+ 'detail'
12817
12266
  ]),
12267
+ encodingForHistogram,
12818
12268
  pickDimensionsForReshape
12819
12269
  ]),
12820
12270
  pivotAdapter([
@@ -12869,7 +12319,7 @@
12869
12319
  ...spec
12870
12320
  };
12871
12321
  const { advancedVSeed, vseed } = context;
12872
- const { encoding, dimensions, measures, dataset } = advancedVSeed;
12322
+ const { encoding, dimensions = [], measures = [], dataset } = advancedVSeed;
12873
12323
  const { chartType } = vseed;
12874
12324
  const config = advancedVSeed.config?.[chartType]?.xAxis ?? {};
12875
12325
  if (!result.axes) result.axes = [];
@@ -12922,7 +12372,7 @@
12922
12372
  ...spec
12923
12373
  };
12924
12374
  const { advancedVSeed } = context;
12925
- const { chartType, dimensions, encoding } = advancedVSeed;
12375
+ const { chartType, dimensions = [], encoding } = advancedVSeed;
12926
12376
  const baseConfig = advancedVSeed.config[chartType];
12927
12377
  const { binValueType, tooltip = {
12928
12378
  enable: true
@@ -13134,7 +12584,7 @@
13134
12584
  ...spec
13135
12585
  };
13136
12586
  const { advancedVSeed, vseed } = context;
13137
- const { chartType, encoding = {}, dimensions, regressionLine } = advancedVSeed;
12587
+ const { chartType, encoding = {}, dimensions = [], regressionLine } = advancedVSeed;
13138
12588
  const { dataset } = vseed;
13139
12589
  const lineTheme = advancedVSeed.config[chartType]?.regressionLine;
13140
12590
  const binValueType = advancedVSeed.config[chartType]?.binValueType;
@@ -13278,7 +12728,7 @@
13278
12728
  ...spec
13279
12729
  };
13280
12730
  const { advancedVSeed, vseed } = context;
13281
- const { chartType, encoding = {}, dimensions, regressionLine } = advancedVSeed;
12731
+ const { chartType, encoding = {}, dimensions = [], regressionLine } = advancedVSeed;
13282
12732
  const { dataset } = vseed;
13283
12733
  const lineTheme = advancedVSeed.config[chartType]?.regressionLine;
13284
12734
  if (!regressionLine || !regressionLine.ecdfRegressionLine) return result;
@@ -14211,10 +13661,6 @@
14211
13661
  visible: false
14212
13662
  }
14213
13663
  },
14214
- dualChartType: {
14215
- primary: 'column',
14216
- secondary: 'line'
14217
- },
14218
13664
  crosshairRect,
14219
13665
  pivotGrid: getLightPivotChartGridConfig(),
14220
13666
  annotation: getLightAnnotation()
@@ -14479,10 +13925,6 @@
14479
13925
  visible: false
14480
13926
  }
14481
13927
  },
14482
- dualChartType: {
14483
- primary: 'column',
14484
- secondary: 'line'
14485
- },
14486
13928
  crosshairRect,
14487
13929
  pivotGrid: getDarkPivotChartGridConfig(),
14488
13930
  annotation: getDarkAnnotation()
@@ -14613,6 +14055,91 @@
14613
14055
  const updateSpec = (chartType, specPipe)=>{
14614
14056
  Builder._customSpecPipe[chartType] = specPipe;
14615
14057
  };
14058
+ const measureDepth = (measures = [])=>{
14059
+ if (!measures) return 0;
14060
+ let depth = 1;
14061
+ preorderTraverse(measures, (node)=>{
14062
+ if ('children' in node) depth = Math.max(depth, 1 + measureDepth(node.children));
14063
+ return false;
14064
+ });
14065
+ return depth;
14066
+ };
14067
+ const deleteMeasureTreeByCallback = (measureTree, callback)=>{
14068
+ if (!measureTree) return;
14069
+ const stack = [
14070
+ ...measureTree
14071
+ ].reverse();
14072
+ const parents = new Map();
14073
+ measureTree.forEach((node)=>{
14074
+ parents.set(node, measureTree);
14075
+ });
14076
+ const nodesToProcess = [];
14077
+ const visited = new Set();
14078
+ while(stack.length > 0){
14079
+ const node = stack[stack.length - 1];
14080
+ if (isMeasureGroup(node) && node.children && !visited.has(node)) {
14081
+ visited.add(node);
14082
+ const children = node.children.slice().reverse();
14083
+ for (const child of children){
14084
+ parents.set(child, node.children);
14085
+ stack.push(child);
14086
+ }
14087
+ } else {
14088
+ stack.pop();
14089
+ nodesToProcess.push(node);
14090
+ }
14091
+ }
14092
+ const deleted = [];
14093
+ for (const node of nodesToProcess){
14094
+ const parentList = parents.get(node);
14095
+ if (parentList) {
14096
+ const index = parentList.indexOf(node);
14097
+ if (isMeasure(node)) {
14098
+ if (callback?.(node, index, parentList)) {
14099
+ parentList.splice(index, 1);
14100
+ deleted.push(node);
14101
+ }
14102
+ }
14103
+ }
14104
+ }
14105
+ return deleted;
14106
+ };
14107
+ const deleteDimensionTreeByCallback = (dimensionTree, callback)=>{
14108
+ if (!dimensionTree) return dimensionTree;
14109
+ const stack = [
14110
+ ...dimensionTree
14111
+ ].reverse();
14112
+ const parents = new Map();
14113
+ dimensionTree.forEach((node)=>{
14114
+ parents.set(node, dimensionTree);
14115
+ });
14116
+ const nodesToProcess = [];
14117
+ const visited = new Set();
14118
+ while(stack.length > 0){
14119
+ const node = stack[stack.length - 1];
14120
+ if (isDimensionGroup(node) && node.children && !visited.has(node)) {
14121
+ visited.add(node);
14122
+ const children = node.children.slice().reverse();
14123
+ for (const child of children){
14124
+ parents.set(child, node.children);
14125
+ stack.push(child);
14126
+ }
14127
+ } else {
14128
+ stack.pop();
14129
+ nodesToProcess.push(node);
14130
+ }
14131
+ }
14132
+ for (const node of nodesToProcess){
14133
+ const parentList = parents.get(node);
14134
+ if (parentList) {
14135
+ const index = parentList.indexOf(node);
14136
+ if (isDimension(node)) {
14137
+ if (callback?.(node, index, parentList)) parentList.splice(index, 1);
14138
+ }
14139
+ }
14140
+ }
14141
+ return dimensionTree;
14142
+ };
14616
14143
  Object.freeze({
14617
14144
  status: "aborted"
14618
14145
  });
@@ -17927,22 +17454,6 @@
17927
17454
  'boxPlot',
17928
17455
  'histogram'
17929
17456
  ]);
17930
- const zDualChartType = schemas_object({
17931
- primary: schemas_enum([
17932
- 'line',
17933
- 'column',
17934
- 'columnParallel',
17935
- 'area',
17936
- 'scatter'
17937
- ]).default('column'),
17938
- secondary: schemas_enum([
17939
- 'line',
17940
- 'column',
17941
- 'columnParallel',
17942
- 'area',
17943
- 'scatter'
17944
- ]).default('line')
17945
- });
17946
17457
  const zDatum = record(schemas_string().or(schemas_number()), any());
17947
17458
  const zDataset = schemas_array(zDatum);
17948
17459
  const zDimension = schemas_object({
@@ -18028,7 +17539,16 @@
18028
17539
  'x0',
18029
17540
  'x1'
18030
17541
  ]).optional(),
18031
- parentId: schemas_string().optional()
17542
+ parentId: schemas_string().optional(),
17543
+ chartType: schemas_enum([
17544
+ 'line',
17545
+ 'column',
17546
+ 'columnParallel',
17547
+ 'columnPercent',
17548
+ 'area',
17549
+ 'areaPercent',
17550
+ 'scatter'
17551
+ ]).optional()
18032
17552
  });
18033
17553
  const zMeasureGroup = schemas_object({
18034
17554
  id: schemas_string(),
@@ -18039,30 +17559,23 @@
18039
17559
  });
18040
17560
  const zMeasures = schemas_array(zMeasure);
18041
17561
  const zMeasureTree = schemas_array(zMeasureGroup.or(zMeasure));
18042
- const zDualMeasure = schemas_object({
18043
- id: schemas_string(),
18044
- primaryMeasures: schemas_array(zMeasure.omit({
18045
- encoding: true,
18046
- parentId: true
18047
- })).or(zMeasure.omit({
18048
- parentId: true,
18049
- encoding: true
18050
- })).optional(),
18051
- secondaryMeasures: schemas_array(zMeasure).or(zMeasure).optional()
17562
+ const zDualMeasure = zMeasure.extend({
17563
+ chartType: schemas_enum([
17564
+ 'line',
17565
+ 'column',
17566
+ 'columnParallel',
17567
+ 'area',
17568
+ 'scatter'
17569
+ ]).optional(),
17570
+ encoding: schemas_enum([
17571
+ 'primaryYAxis',
17572
+ 'secondaryYAxis',
17573
+ 'color',
17574
+ 'label',
17575
+ 'tooltip'
17576
+ ]).optional()
18052
17577
  });
18053
17578
  const zDualMeasures = schemas_array(zDualMeasure);
18054
- const zScatterMeasure = schemas_object({
18055
- id: schemas_string(),
18056
- xMeasures: schemas_array(zMeasure.omit({
18057
- parentId: true,
18058
- encoding: true
18059
- })).or(zMeasure).optional(),
18060
- yMeasures: schemas_array(zMeasure.omit({
18061
- parentId: true,
18062
- encoding: true
18063
- })).or(zMeasure).optional()
18064
- });
18065
- const zScatterMeasures = schemas_array(zScatterMeasure);
18066
17579
  const zFoldInfo = schemas_object({
18067
17580
  foldMap: record(schemas_string(), schemas_string().or(schemas_undefined())),
18068
17581
  statistics: schemas_object({
@@ -18810,7 +18323,6 @@
18810
18323
  color: zColor.nullish(),
18811
18324
  tooltip: zTooltip.nullish(),
18812
18325
  legend: zLegend.nullish(),
18813
- dualChartType: schemas_array(zDualChartType).or(zDualChartType).nullish(),
18814
18326
  alignTicks: schemas_array(schemas_boolean()).or(schemas_boolean()).nullish(),
18815
18327
  primaryYAxis: schemas_array(zYLinearAxis).or(zYLinearAxis).nullish(),
18816
18328
  secondaryYAxis: schemas_array(zYLinearAxis).or(zYLinearAxis).nullish(),
@@ -19189,7 +18701,7 @@
19189
18701
  dataset: zDataset.nullish(),
19190
18702
  encoding: zEncoding.nullish(),
19191
18703
  dimensions: zDimensions.nullish(),
19192
- measures: zMeasureTree.nullish(),
18704
+ measures: zMeasures.nullish(),
19193
18705
  backgroundColor: zBackgroundColor.nullish(),
19194
18706
  color: zColor.nullish(),
19195
18707
  label: zLabel.nullish(),
@@ -19215,7 +18727,7 @@
19215
18727
  dataset: zDataset.nullish(),
19216
18728
  encoding: zEncoding.nullish(),
19217
18729
  dimensions: zDimensions.nullish(),
19218
- measures: zMeasureTree.nullish(),
18730
+ measures: zMeasures.nullish(),
19219
18731
  backgroundColor: zBackgroundColor.nullish(),
19220
18732
  color: zColor.nullish(),
19221
18733
  label: zLabel.nullish(),
@@ -19243,7 +18755,7 @@
19243
18755
  dataset: zDataset.nullish(),
19244
18756
  encoding: zEncoding.nullish(),
19245
18757
  dimensions: zDimensions.nullish(),
19246
- measures: zMeasureTree.nullish(),
18758
+ measures: zMeasures.nullish(),
19247
18759
  backgroundColor: zBackgroundColor.nullish(),
19248
18760
  color: zColor.nullish(),
19249
18761
  label: zLabel.nullish(),
@@ -19269,7 +18781,7 @@
19269
18781
  dataset: zDataset.nullish(),
19270
18782
  encoding: zEncoding.nullish(),
19271
18783
  dimensions: zDimensions.nullish(),
19272
- measures: zMeasureTree.nullish(),
18784
+ measures: zMeasures.nullish(),
19273
18785
  backgroundColor: zBackgroundColor.nullish(),
19274
18786
  color: zColor.nullish(),
19275
18787
  label: zLabel.nullish(),
@@ -19294,7 +18806,7 @@
19294
18806
  dataset: zDataset.nullish(),
19295
18807
  encoding: zEncoding.nullish(),
19296
18808
  dimensions: zDimensions.nullish(),
19297
- measures: zMeasureTree.nullish(),
18809
+ measures: zMeasures.nullish(),
19298
18810
  backgroundColor: zBackgroundColor.nullish(),
19299
18811
  color: zColor.nullish(),
19300
18812
  label: zLabel.nullish(),
@@ -19319,7 +18831,7 @@
19319
18831
  dataset: zDataset.nullish(),
19320
18832
  encoding: zEncoding.nullish(),
19321
18833
  dimensions: zDimensions.nullish(),
19322
- measures: zMeasureTree.nullish(),
18834
+ measures: zMeasures.nullish(),
19323
18835
  backgroundColor: zBackgroundColor.nullish(),
19324
18836
  color: zColor.nullish(),
19325
18837
  label: zLabel.nullish(),
@@ -19345,7 +18857,7 @@
19345
18857
  dataset: zDataset.nullish(),
19346
18858
  encoding: zEncoding.nullish(),
19347
18859
  dimensions: zDimensions.nullish(),
19348
- measures: zMeasureTree.nullish(),
18860
+ measures: zMeasures.nullish(),
19349
18861
  backgroundColor: zBackgroundColor.nullish(),
19350
18862
  color: zColor.nullish(),
19351
18863
  label: zLabel.nullish(),
@@ -19370,7 +18882,7 @@
19370
18882
  dataset: zDataset.nullish(),
19371
18883
  encoding: zEncoding.nullish(),
19372
18884
  dimensions: zDimensions.nullish(),
19373
- measures: zMeasureTree.nullish(),
18885
+ measures: zMeasures.nullish(),
19374
18886
  backgroundColor: zBackgroundColor.nullish(),
19375
18887
  color: zColor.nullish(),
19376
18888
  label: zLabel.nullish(),
@@ -19395,7 +18907,7 @@
19395
18907
  dataset: zDataset.nullish(),
19396
18908
  encoding: zEncoding.nullish(),
19397
18909
  dimensions: zDimensions.nullish(),
19398
- measures: zMeasureTree.nullish(),
18910
+ measures: zMeasures.nullish(),
19399
18911
  backgroundColor: zBackgroundColor.nullish(),
19400
18912
  color: zColor.nullish(),
19401
18913
  label: zLabel.nullish(),
@@ -19420,8 +18932,7 @@
19420
18932
  dataset: zDataset.nullish(),
19421
18933
  encoding: zEncoding.nullish(),
19422
18934
  dimensions: zDimensions.nullish(),
19423
- measures: zMeasureTree.nullish(),
19424
- scatterMeasures: zScatterMeasures.nullish(),
18935
+ measures: zMeasures.nullish(),
19425
18936
  backgroundColor: zBackgroundColor.nullish(),
19426
18937
  size: schemas_number().or(schemas_array(schemas_number())).nullish(),
19427
18938
  sizeRange: schemas_number().or(schemas_array(schemas_number())).nullish(),
@@ -19449,9 +18960,7 @@
19449
18960
  chartType: literal('dualAxis'),
19450
18961
  dataset: zDataset.nullish(),
19451
18962
  dimensions: zDimensions.nullish(),
19452
- measures: zMeasureTree.nullish(),
19453
- dualMeasures: zDualMeasures.nullish(),
19454
- dualChartType: schemas_array(zDualChartType).or(zDualChartType).nullish(),
18963
+ measures: zDualMeasures.nullish(),
19455
18964
  alignTicks: schemas_array(schemas_boolean()).or(schemas_boolean()).nullish(),
19456
18965
  primaryYAxis: schemas_array(zYLinearAxis).or(zYLinearAxis).nullish(),
19457
18966
  secondaryYAxis: schemas_array(zYLinearAxis).or(zYLinearAxis).nullish(),
@@ -19483,7 +18992,7 @@
19483
18992
  dataset: zDataset.nullish(),
19484
18993
  encoding: zEncoding.nullish(),
19485
18994
  dimensions: zDimensions.nullish(),
19486
- measures: zMeasureTree.nullish(),
18995
+ measures: zMeasures.nullish(),
19487
18996
  backgroundColor: zBackgroundColor.nullish(),
19488
18997
  color: zColor.nullish(),
19489
18998
  label: zLabel.nullish(),
@@ -19511,7 +19020,7 @@
19511
19020
  dataset: zDataset.nullish(),
19512
19021
  encoding: zEncoding.nullish(),
19513
19022
  dimensions: zDimensions.nullish(),
19514
- measures: zMeasureTree.nullish(),
19023
+ measures: zMeasures.nullish(),
19515
19024
  backgroundColor: zBackgroundColor.nullish(),
19516
19025
  color: zColor.nullish(),
19517
19026
  label: zLabel.nullish(),
@@ -19525,7 +19034,7 @@
19525
19034
  dataset: zDataset.nullish(),
19526
19035
  encoding: zEncoding.nullish(),
19527
19036
  dimensions: zDimensions.nullish(),
19528
- measures: zMeasureTree.nullish(),
19037
+ measures: zMeasures.nullish(),
19529
19038
  backgroundColor: zBackgroundColor.nullish(),
19530
19039
  color: zColor.nullish(),
19531
19040
  label: zLabel.nullish(),
@@ -19539,7 +19048,7 @@
19539
19048
  dataset: zDataset.nullish(),
19540
19049
  encoding: zEncoding.nullish(),
19541
19050
  dimensions: zDimensions.nullish(),
19542
- measures: zMeasureTree.nullish(),
19051
+ measures: zMeasures.nullish(),
19543
19052
  backgroundColor: zBackgroundColor.nullish(),
19544
19053
  color: zColor.nullish(),
19545
19054
  label: zPieLabel.nullish(),
@@ -19553,7 +19062,7 @@
19553
19062
  dataset: zDataset.nullish(),
19554
19063
  encoding: zEncoding.nullish(),
19555
19064
  dimensions: zDimensions.nullish(),
19556
- measures: zMeasureTree.nullish(),
19065
+ measures: zMeasures.nullish(),
19557
19066
  backgroundColor: zBackgroundColor.nullish(),
19558
19067
  color: zColor.nullish(),
19559
19068
  label: zPieLabel.nullish(),
@@ -19567,7 +19076,7 @@
19567
19076
  dataset: zDataset.nullish(),
19568
19077
  encoding: zEncoding.nullish(),
19569
19078
  dimensions: zDimensions.nullish(),
19570
- measures: zMeasureTree.nullish(),
19079
+ measures: zMeasures.nullish(),
19571
19080
  backgroundColor: zBackgroundColor.nullish(),
19572
19081
  color: zColor.nullish(),
19573
19082
  label: zLabel.nullish(),
@@ -19581,7 +19090,7 @@
19581
19090
  dataset: zDataset.nullish(),
19582
19091
  encoding: zEncoding.nullish(),
19583
19092
  dimensions: zDimensions.nullish(),
19584
- measures: zMeasureTree.nullish(),
19093
+ measures: zMeasures.nullish(),
19585
19094
  backgroundColor: zBackgroundColor.nullish(),
19586
19095
  color: zColor.nullish(),
19587
19096
  label: zLabel.nullish(),
@@ -19594,7 +19103,7 @@
19594
19103
  chartType: literal('heatmap'),
19595
19104
  dataset: zDataset.nullish(),
19596
19105
  dimensions: zDimensions.nullish(),
19597
- measures: zMeasureTree.nullish(),
19106
+ measures: zMeasures.nullish(),
19598
19107
  backgroundColor: zBackgroundColor.nullish(),
19599
19108
  color: zColor.nullish(),
19600
19109
  label: zLabel.nullish(),
@@ -19608,7 +19117,7 @@
19608
19117
  dataset: zDataset.nullish(),
19609
19118
  encoding: zEncoding.nullish(),
19610
19119
  dimensions: zDimensions.nullish(),
19611
- measures: zMeasureTree.nullish(),
19120
+ measures: zMeasures.nullish(),
19612
19121
  backgroundColor: zBackgroundColor.nullish(),
19613
19122
  color: zColor.nullish(),
19614
19123
  label: zLabel.nullish(),
@@ -19664,10 +19173,12 @@
19664
19173
  dataset: zDataset,
19665
19174
  datasetReshapeInfo: zDatasetReshapeInfo,
19666
19175
  pivotAllDatasetReshapeInfo: zDatasetReshapeInfo,
19667
- dimensions: zDimensionTree,
19668
- measures: zMeasureTree,
19669
- reshapeMeasures: zMeasureTree.optional(),
19670
- reshapeDimensions: zDimensionTree.optional(),
19176
+ dimensions: zDimensions.optional(),
19177
+ measures: zMeasures.optional(),
19178
+ reshapeMeasures: schemas_array(zMeasures).optional(),
19179
+ reshapeDimensions: zDimensions.optional(),
19180
+ measureTree: zMeasureTree.optional(),
19181
+ dimensionTree: zDimensionTree.optional(),
19671
19182
  encoding: zEncoding,
19672
19183
  config: zConfig,
19673
19184
  analysis: zAnalysis,