@visactor/vseed 0.1.37 → 0.1.39

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 (255) hide show
  1. package/dist/cjs/index.cjs +2 -2
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/esm/builder/builder/buildAdvanced.js +1 -1
  4. package/dist/esm/builder/builder/buildAdvanced.js.map +1 -1
  5. package/dist/esm/builder/builder/builder.d.ts +4147 -965
  6. package/dist/esm/builder/register/all.js +3 -1
  7. package/dist/esm/builder/register/all.js.map +1 -1
  8. package/dist/esm/builder/register/chartType/boxplot.d.ts +1 -0
  9. package/dist/esm/builder/register/chartType/boxplot.js +9 -0
  10. package/dist/esm/builder/register/chartType/boxplot.js.map +1 -0
  11. package/dist/esm/builder/register/chartType/histogram.d.ts +1 -0
  12. package/dist/esm/builder/register/chartType/histogram.js +9 -0
  13. package/dist/esm/builder/register/chartType/histogram.js.map +1 -0
  14. package/dist/esm/builder/register/chartType/index.d.ts +2 -0
  15. package/dist/esm/builder/register/chartType/index.js +3 -1
  16. package/dist/esm/dataReshape/constant.d.ts +10 -0
  17. package/dist/esm/dataReshape/constant.js +11 -1
  18. package/dist/esm/dataReshape/constant.js.map +1 -1
  19. package/dist/esm/dataReshape/unfoldDimensions.js +2 -2
  20. package/dist/esm/dataReshape/unfoldDimensions.js.map +1 -1
  21. package/dist/esm/index.d.ts +1 -1
  22. package/dist/esm/index.js +2 -2
  23. package/dist/esm/pipeline/advanced/chart/pipeline/boxplot.d.ts +2 -0
  24. package/dist/esm/pipeline/advanced/chart/pipeline/boxplot.js +33 -0
  25. package/dist/esm/pipeline/advanced/chart/pipeline/boxplot.js.map +1 -0
  26. package/dist/esm/pipeline/advanced/chart/pipeline/histogram.d.ts +2 -0
  27. package/dist/esm/pipeline/advanced/chart/pipeline/histogram.js +34 -0
  28. package/dist/esm/pipeline/advanced/chart/pipeline/histogram.js.map +1 -0
  29. package/dist/esm/pipeline/advanced/chart/pipeline/index.d.ts +2 -0
  30. package/dist/esm/pipeline/advanced/chart/pipeline/index.js +3 -1
  31. package/dist/esm/pipeline/advanced/chart/pipes/config/boxplot.d.ts +2 -0
  32. package/dist/esm/pipeline/advanced/chart/pipes/config/boxplot.js +31 -0
  33. package/dist/esm/pipeline/advanced/chart/pipes/config/boxplot.js.map +1 -0
  34. package/dist/esm/pipeline/advanced/chart/pipes/config/dualAxis.js +2 -1
  35. package/dist/esm/pipeline/advanced/chart/pipes/config/dualAxis.js.map +1 -1
  36. package/dist/esm/pipeline/advanced/chart/pipes/config/histogram.d.ts +2 -0
  37. package/dist/esm/pipeline/advanced/chart/pipes/config/histogram.js +33 -0
  38. package/dist/esm/pipeline/advanced/chart/pipes/config/histogram.js.map +1 -0
  39. package/dist/esm/pipeline/advanced/chart/pipes/config/index.d.ts +3 -1
  40. package/dist/esm/pipeline/advanced/chart/pipes/config/index.js +3 -1
  41. package/dist/esm/pipeline/advanced/chart/pipes/config/index.js.map +1 -1
  42. package/dist/esm/pipeline/advanced/chart/pipes/encoding/boxplot.d.ts +3 -0
  43. package/dist/esm/pipeline/advanced/chart/pipes/encoding/boxplot.js +80 -0
  44. package/dist/esm/pipeline/advanced/chart/pipes/encoding/boxplot.js.map +1 -0
  45. package/dist/esm/pipeline/advanced/chart/pipes/encoding/histogram.d.ts +3 -0
  46. package/dist/esm/pipeline/advanced/chart/pipes/encoding/histogram.js +78 -0
  47. package/dist/esm/pipeline/advanced/chart/pipes/encoding/histogram.js.map +1 -0
  48. package/dist/esm/pipeline/advanced/chart/pipes/encoding/index.d.ts +2 -0
  49. package/dist/esm/pipeline/advanced/chart/pipes/encoding/index.js +3 -1
  50. package/dist/esm/pipeline/advanced/chart/pipes/index.d.ts +1 -0
  51. package/dist/esm/pipeline/advanced/chart/pipes/index.js +1 -0
  52. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasures.js.map +1 -1
  53. package/dist/esm/pipeline/advanced/chart/pipes/regressionLine/index.d.ts +1 -0
  54. package/dist/esm/pipeline/advanced/chart/pipes/regressionLine/index.js +2 -0
  55. package/dist/esm/pipeline/advanced/chart/pipes/regressionLine/regressionLine.d.ts +2 -0
  56. package/dist/esm/pipeline/advanced/chart/pipes/regressionLine/regressionLine.js +8 -0
  57. package/dist/esm/pipeline/advanced/chart/pipes/regressionLine/regressionLine.js.map +1 -0
  58. package/dist/esm/pipeline/advanced/chart/pipes/reshape/index.d.ts +4 -0
  59. package/dist/esm/pipeline/advanced/chart/pipes/reshape/index.js +5 -1
  60. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.d.ts +2 -0
  61. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js +96 -0
  62. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js.map +1 -0
  63. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithHistogramEncoding.d.ts +2 -0
  64. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithHistogramEncoding.js +96 -0
  65. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithHistogramEncoding.js.map +1 -0
  66. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithBoxplotEncoding.d.ts +2 -0
  67. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithBoxplotEncoding.js +84 -0
  68. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithBoxplotEncoding.js.map +1 -0
  69. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithHistogramEncoding.d.ts +2 -0
  70. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithHistogramEncoding.js +86 -0
  71. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithHistogramEncoding.js.map +1 -0
  72. package/dist/esm/pipeline/spec/chart/pipeline/bar.js +0 -1
  73. package/dist/esm/pipeline/spec/chart/pipeline/bar.js.map +1 -1
  74. package/dist/esm/pipeline/spec/chart/pipeline/boxplot.d.ts +2 -0
  75. package/dist/esm/pipeline/spec/chart/pipeline/boxplot.js +52 -0
  76. package/dist/esm/pipeline/spec/chart/pipeline/boxplot.js.map +1 -0
  77. package/dist/esm/pipeline/spec/chart/pipeline/dualAxis.js +5 -1
  78. package/dist/esm/pipeline/spec/chart/pipeline/dualAxis.js.map +1 -1
  79. package/dist/esm/pipeline/spec/chart/pipeline/histogram.d.ts +2 -0
  80. package/dist/esm/pipeline/spec/chart/pipeline/histogram.js +52 -0
  81. package/dist/esm/pipeline/spec/chart/pipeline/histogram.js.map +1 -0
  82. package/dist/esm/pipeline/spec/chart/pipeline/index.d.ts +2 -0
  83. package/dist/esm/pipeline/spec/chart/pipeline/index.js +3 -1
  84. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationAreaBand.js.map +1 -1
  85. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPoint.js.map +1 -1
  86. package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetBoxplot.d.ts +2 -0
  87. package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetBoxplot.js +18 -0
  88. package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetBoxplot.js.map +1 -0
  89. package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetHistogram.d.ts +2 -0
  90. package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetHistogram.js +18 -0
  91. package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetHistogram.js.map +1 -0
  92. package/dist/esm/pipeline/spec/chart/pipes/dataset/index.d.ts +2 -0
  93. package/dist/esm/pipeline/spec/chart/pipes/dataset/index.js +3 -1
  94. package/dist/esm/pipeline/spec/chart/pipes/dataset/progressive.js +4 -8
  95. package/dist/esm/pipeline/spec/chart/pipes/dataset/progressive.js.map +1 -1
  96. package/dist/esm/pipeline/spec/chart/pipes/index.d.ts +1 -0
  97. package/dist/esm/pipeline/spec/chart/pipes/index.js +1 -0
  98. package/dist/esm/pipeline/spec/chart/pipes/init/boxplot.d.ts +2 -0
  99. package/dist/esm/pipeline/spec/chart/pipes/init/boxplot.js +37 -0
  100. package/dist/esm/pipeline/spec/chart/pipes/init/boxplot.js.map +1 -0
  101. package/dist/esm/pipeline/spec/chart/pipes/init/histogram.d.ts +2 -0
  102. package/dist/esm/pipeline/spec/chart/pipes/init/histogram.js +21 -0
  103. package/dist/esm/pipeline/spec/chart/pipes/init/histogram.js.map +1 -0
  104. package/dist/esm/pipeline/spec/chart/pipes/init/index.d.ts +2 -0
  105. package/dist/esm/pipeline/spec/chart/pipes/init/index.js +3 -1
  106. package/dist/esm/pipeline/spec/chart/pipes/init/pivot.js +1 -0
  107. package/dist/esm/pipeline/spec/chart/pipes/init/pivot.js.map +1 -1
  108. package/dist/esm/pipeline/spec/chart/pipes/label/label.d.ts +15 -4
  109. package/dist/esm/pipeline/spec/chart/pipes/label/label.js.map +1 -1
  110. package/dist/esm/pipeline/spec/chart/pipes/label/labelDualAxis.js.map +1 -1
  111. package/dist/esm/pipeline/spec/chart/pipes/label/labelPie.js.map +1 -1
  112. package/dist/esm/pipeline/spec/chart/pipes/label/labelScatter.js.map +1 -1
  113. package/dist/esm/pipeline/spec/chart/pipes/legend/pivotColorLegend.js.map +1 -1
  114. package/dist/esm/pipeline/spec/chart/pipes/legend/pivotDiscreteLegend.js.map +1 -1
  115. package/dist/esm/pipeline/spec/chart/pipes/markStyle/pointState.js.map +1 -1
  116. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotColumnDimensions.js.map +1 -1
  117. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotGridStyle.js +49 -14
  118. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotGridStyle.js.map +1 -1
  119. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotIndicators.js.map +1 -1
  120. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotRowDimensions.js.map +1 -1
  121. package/dist/esm/pipeline/spec/chart/pipes/regressionLine/histogramRegressionLine.d.ts +2 -0
  122. package/dist/esm/pipeline/spec/chart/pipes/regressionLine/histogramRegressionLine.js +126 -0
  123. package/dist/esm/pipeline/spec/chart/pipes/regressionLine/histogramRegressionLine.js.map +1 -0
  124. package/dist/esm/pipeline/spec/chart/pipes/regressionLine/index.d.ts +1 -0
  125. package/dist/esm/pipeline/spec/chart/pipes/regressionLine/index.js +1 -0
  126. package/dist/esm/pipeline/spec/chart/pipes/stack/stackCornerRadius.js +1 -0
  127. package/dist/esm/pipeline/spec/chart/pipes/stack/stackCornerRadius.js.map +1 -1
  128. package/dist/esm/pipeline/spec/chart/pipes/tooltip/index.d.ts +2 -0
  129. package/dist/esm/pipeline/spec/chart/pipes/tooltip/index.js +3 -1
  130. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.d.ts +2 -0
  131. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.js +98 -0
  132. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.js.map +1 -0
  133. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHistogram.d.ts +2 -0
  134. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHistogram.js +69 -0
  135. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHistogram.js.map +1 -0
  136. package/dist/esm/pipeline/spec/table/pipes/columns/measuresToColumns.js.map +1 -1
  137. package/dist/esm/pipeline/spec/table/pipes/indicators/pivotDataConfig.js +1 -2
  138. package/dist/esm/pipeline/spec/table/pipes/indicators/pivotDataConfig.js.map +1 -1
  139. package/dist/esm/pipeline/spec/table/pipes/indicators/pivotIndicators.js.map +1 -1
  140. package/dist/esm/pipeline/spec/table/pipes/init/pivotTable.js +1 -0
  141. package/dist/esm/pipeline/spec/table/pipes/init/pivotTable.js.map +1 -1
  142. package/dist/esm/pipeline/spec/table/pipes/init/table.js +1 -0
  143. package/dist/esm/pipeline/spec/table/pipes/init/table.js.map +1 -1
  144. package/dist/esm/pipeline/spec/table/pipes/theme/bodyStyle.js +1 -0
  145. package/dist/esm/pipeline/spec/table/pipes/theme/bodyStyle.js.map +1 -1
  146. package/dist/esm/pipeline/spec/table/pipes/theme/cornerHeaderStyle.js.map +1 -1
  147. package/dist/esm/pipeline/spec/table/pipes/theme/frameStyle.js.map +1 -1
  148. package/dist/esm/pipeline/spec/table/pipes/theme/headerStyle.js.map +1 -1
  149. package/dist/esm/pipeline/spec/table/pipes/theme/rowHeaderStyle.js.map +1 -1
  150. package/dist/esm/pipeline/spec/table/pipes/theme/scrollStyle.js.map +1 -1
  151. package/dist/esm/pipeline/spec/table/pipes/theme/selectionStyle.js.map +1 -1
  152. package/dist/esm/pipeline/spec/table/pipes/theme/type.d.ts +13 -0
  153. package/dist/esm/pipeline/spec/table/pipes/theme/type.js +0 -0
  154. package/dist/esm/pipeline/utils/constant.d.ts +2 -0
  155. package/dist/esm/pipeline/utils/constant.js +3 -1
  156. package/dist/esm/pipeline/utils/constant.js.map +1 -1
  157. package/dist/esm/theme/common/regressionLine.d.ts +4 -0
  158. package/dist/esm/theme/common/regressionLine.js +16 -0
  159. package/dist/esm/theme/common/regressionLine.js.map +1 -0
  160. package/dist/esm/theme/common/table.d.ts +17 -8
  161. package/dist/esm/theme/common/table.js +11 -8
  162. package/dist/esm/theme/common/table.js.map +1 -1
  163. package/dist/esm/theme/dark/dark.js +18 -0
  164. package/dist/esm/theme/dark/dark.js.map +1 -1
  165. package/dist/esm/theme/light/light.js +18 -0
  166. package/dist/esm/theme/light/light.js.map +1 -1
  167. package/dist/esm/types/advancedVSeed.d.ts +1441 -17
  168. package/dist/esm/types/advancedVSeed.js +3 -2
  169. package/dist/esm/types/advancedVSeed.js.map +1 -1
  170. package/dist/esm/types/chartType/area/zArea.d.ts +9 -0
  171. package/dist/esm/types/chartType/areaPercent/zAreaPercent.d.ts +9 -0
  172. package/dist/esm/types/chartType/bar/zBar.d.ts +9 -0
  173. package/dist/esm/types/chartType/barParallel/zBarParallel.d.ts +9 -0
  174. package/dist/esm/types/chartType/barPercent/zBarPercent.d.ts +9 -0
  175. package/dist/esm/types/chartType/boxplot/boxplot.d.ts +144 -0
  176. package/dist/esm/types/chartType/boxplot/boxplot.js +0 -0
  177. package/dist/esm/types/chartType/boxplot/index.d.ts +2 -0
  178. package/dist/esm/types/chartType/boxplot/index.js +1 -0
  179. package/dist/esm/types/chartType/boxplot/zBoxplot.d.ts +1185 -0
  180. package/dist/esm/types/chartType/boxplot/zBoxplot.js +30 -0
  181. package/dist/esm/types/chartType/boxplot/zBoxplot.js.map +1 -0
  182. package/dist/esm/types/chartType/column/zColumn.d.ts +25 -0
  183. package/dist/esm/types/chartType/column/zColumn.js +3 -1
  184. package/dist/esm/types/chartType/column/zColumn.js.map +1 -1
  185. package/dist/esm/types/chartType/columnParallel/zColumnParallel.d.ts +9 -0
  186. package/dist/esm/types/chartType/columnPercent/zColumnPercent.d.ts +9 -0
  187. package/dist/esm/types/chartType/donut/zDonut.d.ts +9 -0
  188. package/dist/esm/types/chartType/funnel/zFunnel.d.ts +9 -0
  189. package/dist/esm/types/chartType/histogram/histogram.d.ts +127 -0
  190. package/dist/esm/types/chartType/histogram/histogram.js +0 -0
  191. package/dist/esm/types/chartType/histogram/index.d.ts +2 -0
  192. package/dist/esm/types/chartType/histogram/index.js +1 -0
  193. package/dist/esm/types/chartType/histogram/zHistogram.d.ts +1377 -0
  194. package/dist/esm/types/chartType/histogram/zHistogram.js +32 -0
  195. package/dist/esm/types/chartType/histogram/zHistogram.js.map +1 -0
  196. package/dist/esm/types/chartType/index.d.ts +3 -0
  197. package/dist/esm/types/chartType/index.js +2 -0
  198. package/dist/esm/types/chartType/line/zLine.d.ts +9 -0
  199. package/dist/esm/types/chartType/pie/zPie.d.ts +9 -0
  200. package/dist/esm/types/chartType/radar/zRadar.d.ts +9 -0
  201. package/dist/esm/types/chartType/rose/zRose.d.ts +9 -0
  202. package/dist/esm/types/chartType/roseParallel/zRoseParallel.d.ts +9 -0
  203. package/dist/esm/types/chartType/scatter/zScatter.d.ts +9 -0
  204. package/dist/esm/types/properties/chartType/chartType.d.ts +3 -1
  205. package/dist/esm/types/properties/chartType/chartType.js +3 -1
  206. package/dist/esm/types/properties/chartType/chartType.js.map +1 -1
  207. package/dist/esm/types/properties/config/area.d.ts +4 -0
  208. package/dist/esm/types/properties/config/bar.d.ts +6 -0
  209. package/dist/esm/types/properties/config/boxplot.d.ts +326 -0
  210. package/dist/esm/types/properties/config/boxplot.js +27 -0
  211. package/dist/esm/types/properties/config/boxplot.js.map +1 -0
  212. package/dist/esm/types/properties/config/column.d.ts +6 -0
  213. package/dist/esm/types/properties/config/config.d.ts +697 -0
  214. package/dist/esm/types/properties/config/config.js +5 -1
  215. package/dist/esm/types/properties/config/config.js.map +1 -1
  216. package/dist/esm/types/properties/config/dualAxis.d.ts +2 -0
  217. package/dist/esm/types/properties/config/funnel.d.ts +2 -0
  218. package/dist/esm/types/properties/config/heatmap.d.ts +2 -0
  219. package/dist/esm/types/properties/config/histogram.d.ts +339 -0
  220. package/dist/esm/types/properties/config/histogram.js +32 -0
  221. package/dist/esm/types/properties/config/histogram.js.map +1 -0
  222. package/dist/esm/types/properties/config/index.d.ts +1 -0
  223. package/dist/esm/types/properties/config/index.js +1 -0
  224. package/dist/esm/types/properties/config/line.d.ts +2 -0
  225. package/dist/esm/types/properties/config/pie.d.ts +6 -0
  226. package/dist/esm/types/properties/config/pivotGrid/pivotGrid.d.ts +2 -0
  227. package/dist/esm/types/properties/config/pivotGrid/pivotGrid.js +3 -1
  228. package/dist/esm/types/properties/config/pivotGrid/pivotGrid.js.map +1 -1
  229. package/dist/esm/types/properties/config/rose.d.ts +4 -0
  230. package/dist/esm/types/properties/config/scatter.d.ts +2 -0
  231. package/dist/esm/types/properties/config/whiskers/index.d.ts +3 -0
  232. package/dist/esm/types/properties/config/whiskers/index.js +5 -0
  233. package/dist/esm/types/properties/config/whiskers/index.js.map +1 -0
  234. package/dist/esm/types/properties/encoding/encoding.d.ts +36 -0
  235. package/dist/esm/types/properties/encoding/measureEncoding.d.ts +1 -1
  236. package/dist/esm/types/properties/encoding/zEncoding.d.ts +9 -0
  237. package/dist/esm/types/properties/encoding/zEncoding.js +10 -1
  238. package/dist/esm/types/properties/encoding/zEncoding.js.map +1 -1
  239. package/dist/esm/types/properties/index.d.ts +1 -0
  240. package/dist/esm/types/properties/index.js +1 -0
  241. package/dist/esm/types/properties/regressionLine/histogramRegressionLine.d.ts +45 -0
  242. package/dist/esm/types/properties/regressionLine/histogramRegressionLine.js +0 -0
  243. package/dist/esm/types/properties/regressionLine/index.d.ts +2 -0
  244. package/dist/esm/types/properties/regressionLine/index.js +1 -0
  245. package/dist/esm/types/properties/regressionLine/zHistogramRegressionLine.d.ts +11 -0
  246. package/dist/esm/types/properties/regressionLine/zHistogramRegressionLine.js +17 -0
  247. package/dist/esm/types/properties/regressionLine/zHistogramRegressionLine.js.map +1 -0
  248. package/dist/esm/types/properties/theme/customTheme.d.ts +1935 -541
  249. package/dist/esm/types/vseed.d.ts +2 -2
  250. package/dist/esm/types/zVseed.d.ts +2717 -0
  251. package/dist/esm/types/zVseed.js +4 -2
  252. package/dist/esm/types/zVseed.js.map +1 -1
  253. package/dist/umd/index.js +1748 -140
  254. package/dist/umd/index.js.map +1 -1
  255. package/package.json +6 -4
@@ -0,0 +1,78 @@
1
+ import { unique } from "remeda";
2
+ import { MeasureName } from "../../../../../dataReshape/index.js";
3
+ import { findAllMeasures } from "../../../../utils/index.js";
4
+ import { addColorToEncoding } from "./color/index.js";
5
+ const defaultEncodingForHistogram = (advancedVSeed)=>{
6
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7
+ const measures = findAllMeasures(vseedMeasures);
8
+ const encoding = {};
9
+ generateDefaultDimensionEncoding(dimensions, encoding);
10
+ generateDefaultMeasureEncoding(measures, encoding);
11
+ return {
12
+ ...advancedVSeed,
13
+ encoding
14
+ };
15
+ };
16
+ const encodingForHistogram = (advancedVSeed)=>{
17
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
18
+ const measures = findAllMeasures(vseedMeasures);
19
+ const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
20
+ const hasMeasureEncoding = measures.some((item)=>item.encoding);
21
+ const encoding = {};
22
+ if (hasDimensionEncoding) generateDimensionEncoding(dimensions, encoding, false);
23
+ else generateDefaultDimensionEncoding(dimensions, encoding);
24
+ if (hasMeasureEncoding) generateMeasureEncoding(measures, encoding);
25
+ else generateDefaultMeasureEncoding(measures, encoding);
26
+ return {
27
+ ...advancedVSeed,
28
+ encoding
29
+ };
30
+ };
31
+ const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
32
+ const dimensionsWithoutMeasureName = dimensions.filter((item)=>item.id !== MeasureName);
33
+ const uniqueDimIds = unique(dimensionsWithoutMeasureName.map((d)=>d.id));
34
+ encoding.detail = encoding.color;
35
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
36
+ encoding.label = [];
37
+ encoding.row = [];
38
+ encoding.column = [];
39
+ };
40
+ const generateDimensionEncoding = (dimensions, encoding, isMultiMeasure)=>{
41
+ addColorToEncoding(dimensions, encoding, isMultiMeasure);
42
+ encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
43
+ if (encoding.detail?.length === 0) encoding.detail = encoding.color;
44
+ encoding.tooltip = unique(dimensions.map((item)=>item.id));
45
+ encoding.tooltip = encoding.tooltip?.filter((d)=>d !== MeasureName);
46
+ encoding.label = unique(dimensions.filter((item)=>'label' === item.encoding).map((item)=>item.id));
47
+ encoding.label = encoding.label?.filter((d)=>d !== MeasureName);
48
+ };
49
+ const generateDefaultMeasureEncoding = (measures, encoding)=>{
50
+ encoding.value = unique(measures.filter((item)=>'value' === item.encoding || !item.encoding).map((item)=>item.id));
51
+ encoding.x0 = unique(measures.filter((item)=>'x0' === item.encoding).map((item)=>item.id));
52
+ encoding.x1 = unique(measures.filter((item)=>'x1' === item.encoding).map((item)=>item.id));
53
+ encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
54
+ };
55
+ const generateMeasureEncoding = (measures, encoding)=>{
56
+ encoding.value = unique(measures.filter((item)=>'value' === item.encoding || !item.encoding).map((item)=>item.id));
57
+ encoding.x0 = unique(measures.filter((item)=>'x0' === item.encoding).map((item)=>item.id));
58
+ encoding.x1 = unique(measures.filter((item)=>'x1' === item.encoding).map((item)=>item.id));
59
+ encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
60
+ const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
61
+ if (color.length > 0) encoding.color = [
62
+ color[0]
63
+ ];
64
+ const label = unique(measures.filter((item)=>'label' === item.encoding).map((item)=>item.id));
65
+ encoding.label = unique([
66
+ ...encoding.label || [],
67
+ ...label
68
+ ]);
69
+ const tooltip = unique(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
70
+ encoding.tooltip = unique([
71
+ ...encoding.tooltip || [],
72
+ ...label,
73
+ ...tooltip
74
+ ]);
75
+ };
76
+ export { defaultEncodingForHistogram, encodingForHistogram };
77
+
78
+ //# sourceMappingURL=histogram.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/encoding/histogram.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/histogram.ts"],"sourcesContent":["import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\n\nexport const defaultEncodingForHistogram: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForHistogram: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, false)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const dimensionsWithoutMeasureName = dimensions.filter((item) => item.id !== MeasureName)\n const uniqueDimIds = unique(dimensionsWithoutMeasureName.map((d) => d.id))\n\n encoding.detail = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d: string) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n // color\n addColorToEncoding(dimensions, encoding, isMultiMeasure)\n\n // detail\n encoding.detail = unique(dimensions.filter((item) => item.encoding === 'detail').map((item) => item.id))\n if (encoding.detail?.length === 0) {\n encoding.detail = encoding.color\n }\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip?.filter((d) => d !== MeasureName)\n\n // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label?.filter((d) => d !== MeasureName)\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.value = unique(measures.filter((item) => item.encoding === 'value' || !item.encoding).map((item) => item.id))\n encoding.x0 = unique(measures.filter((item) => item.encoding === 'x0').map((item) => item.id))\n encoding.x1 = unique(measures.filter((item) => item.encoding === 'x1').map((item) => item.id))\n encoding.y = unique(measures.filter((item) => item.encoding === 'yAxis').map((item) => item.id))\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.value = unique(measures.filter((item) => item.encoding === 'value' || !item.encoding).map((item) => item.id))\n encoding.x0 = unique(measures.filter((item) => item.encoding === 'x0').map((item) => item.id))\n encoding.x1 = unique(measures.filter((item) => item.encoding === 'x1').map((item) => item.id))\n encoding.y = unique(measures.filter((item) => item.encoding === 'yAxis').map((item) => item.id))\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = [color[0]]\n }\n\n // label\n const label = unique(measures.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = unique([...(encoding.label || []), ...label])\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...label, ...tooltip])\n}\n"],"names":["defaultEncodingForHistogram","advancedVSeed","vseedMeasures","dimensions","measures","findAllMeasures","encoding","generateDefaultDimensionEncoding","generateDefaultMeasureEncoding","encodingForHistogram","hasDimensionEncoding","item","hasMeasureEncoding","generateDimensionEncoding","generateMeasureEncoding","dimensionsWithoutMeasureName","MeasureName","uniqueDimIds","unique","d","isMultiMeasure","addColorToEncoding","color","label","tooltip"],"mappings":"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"}
@@ -9,3 +9,5 @@ export { encodingForScatter, defaultEncodingForScatter } from './scatter';
9
9
  export { encodingForLine, defaultEncodingForLine } from './line';
10
10
  export { encodingForRose, defaultEncodingForRose } from './rose';
11
11
  export { encodingAdapter } from './adapter';
12
+ export { encodingForHistogram, defaultEncodingForHistogram } from './histogram';
13
+ export { encodingForBoxplot, defaultEncodingForBoxplot } from './boxplot';
@@ -9,4 +9,6 @@ import { defaultEncodingForScatter, encodingForScatter } from "./scatter.js";
9
9
  import { defaultEncodingForLine, encodingForLine } from "./line.js";
10
10
  import { defaultEncodingForRose, encodingForRose } from "./rose.js";
11
11
  import { encodingAdapter } from "./adapter/index.js";
12
- export { defaultEncodingForBar, defaultEncodingForColumn, defaultEncodingForDualAxis, defaultEncodingForFunnel, defaultEncodingForHeatmap, defaultEncodingForLine, defaultEncodingForPie, defaultEncodingForRadar, defaultEncodingForRose, defaultEncodingForScatter, encodingAdapter, encodingForBar, encodingForColumn, encodingForDualAxis, encodingForFunnel, encodingForHeatmap, encodingForLine, encodingForPie, encodingForRadar, encodingForRose, encodingForScatter };
12
+ import { defaultEncodingForHistogram, encodingForHistogram } from "./histogram.js";
13
+ import { defaultEncodingForBoxplot, encodingForBoxplot } from "./boxplot.js";
14
+ export { defaultEncodingForBar, defaultEncodingForBoxplot, defaultEncodingForColumn, defaultEncodingForDualAxis, defaultEncodingForFunnel, defaultEncodingForHeatmap, defaultEncodingForHistogram, defaultEncodingForLine, defaultEncodingForPie, defaultEncodingForRadar, defaultEncodingForRose, defaultEncodingForScatter, encodingAdapter, encodingForBar, encodingForBoxplot, encodingForColumn, encodingForDualAxis, encodingForFunnel, encodingForHeatmap, encodingForHistogram, encodingForLine, encodingForPie, encodingForRadar, encodingForRose, encodingForScatter };
@@ -10,3 +10,4 @@ export * from './analysis';
10
10
  export * from './measures';
11
11
  export * from './dimensions';
12
12
  export * from './default';
13
+ export * from './regressionLine';
@@ -10,3 +10,4 @@ export * from "./analysis/index.js";
10
10
  export * from "./measures/index.js";
11
11
  export * from "./dimensions/index.js";
12
12
  export * from "./default/index.js";
13
+ export * from "./regressionLine/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/measures/buildMeasures.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasures.ts"],"sourcesContent":["import type { AdvancedPipe, AdvancedVSeed, MeasureGroup, Measures, MeasureTree } from 'src/types'\nimport { isMeasureTreeWithChildren, isMeasureTreeWithParentId, normalizeMeasureTree } from './utils'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\n\nexport const buildMeasures: AdvancedPipe = (advancedVSeed) => {\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\n advancedVSeed.measures = normalizeMeasureTree(advancedVSeed.measures as MeasureTree)\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(advancedVSeed.measures)) {\n advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 透视图表, 自动生成指标树\n */\n if (isPivotChart(advancedVSeed as AdvancedVSeed)) {\n advancedVSeed.measures = basicMeasuresToMeasureTree(advancedVSeed.measures as Measures)\n }\n\n return advancedVSeed\n}\n\nconst generateMeasuresByParentId = (measures: Measures): MeasureTree => {\n const measureTree: MeasureGroup[] = []\n\n measures.forEach((measure) => {\n const parent = measureTree.find((item) => item.id === measure.parentId)\n if (parent && 'children' in parent) {\n parent.children = parent.children || []\n parent.children.push(measure)\n } else if (measure.parentId) {\n measureTree.push({\n id: measure.parentId,\n children: [measure],\n })\n } else {\n measureTree.push({\n id: DEFAULT_PARENT_ID,\n children: [measure],\n })\n }\n })\n\n return measureTree\n}\n\nconst basicMeasuresToMeasureTree = (measures: Measures): MeasureTree => {\n const id = measures.map((item) => item.id).join('-')\n const alias = measures.map((item) => item.alias || item.id).join('-')\n return [\n {\n id,\n alias,\n children: measures,\n },\n ]\n}\n"],"names":["buildMeasures","advancedVSeed","isMeasureTreeWithChildren","normalizeMeasureTree","isMeasureTreeWithParentId","generateMeasuresByParentId","isPivotChart","basicMeasuresToMeasureTree","measures","measureTree","measure","parent","item","DEFAULT_PARENT_ID","id","alias"],"mappings":";;;AAKO,MAAMA,gBAA8B,CAACC;IAE1C,IAAIC,0BAA0BD,cAAc,QAAQ,GAAG;QACrDA,cAAc,QAAQ,GAAGE,qBAAqBF,cAAc,QAAQ;QACpE,OAAOA;IACT;IAEA,IAAIG,0BAA0BH,cAAc,QAAQ,GAAG;QACrDA,cAAc,QAAQ,GAAGI,2BAA2BJ,cAAc,QAAQ;QAC1E,OAAOA;IACT;IAKA,IAAIK,aAAaL,gBACfA,cAAc,QAAQ,GAAGM,2BAA2BN,cAAc,QAAQ;IAG5E,OAAOA;AACT;AAEA,MAAMI,6BAA6B,CAACG;IAClC,MAAMC,cAA8B,EAAE;IAEtCD,SAAS,OAAO,CAAC,CAACE;QAChB,MAAMC,SAASF,YAAY,IAAI,CAAC,CAACG,OAASA,KAAK,EAAE,KAAKF,QAAQ,QAAQ;QACtE,IAAIC,UAAU,cAAcA,QAAQ;YAClCA,OAAO,QAAQ,GAAGA,OAAO,QAAQ,IAAI,EAAE;YACvCA,OAAO,QAAQ,CAAC,IAAI,CAACD;QACvB,OAAO,IAAIA,QAAQ,QAAQ,EACzBD,YAAY,IAAI,CAAC;YACf,IAAIC,QAAQ,QAAQ;YACpB,UAAU;gBAACA;aAAQ;QACrB;aAEAD,YAAY,IAAI,CAAC;YACf,IAAII;YACJ,UAAU;gBAACH;aAAQ;QACrB;IAEJ;IAEA,OAAOD;AACT;AAEA,MAAMF,6BAA6B,CAACC;IAClC,MAAMM,KAAKN,SAAS,GAAG,CAAC,CAACI,OAASA,KAAK,EAAE,EAAE,IAAI,CAAC;IAChD,MAAMG,QAAQP,SAAS,GAAG,CAAC,CAACI,OAASA,KAAK,KAAK,IAAIA,KAAK,EAAE,EAAE,IAAI,CAAC;IACjE,OAAO;QACL;YACEE;YACAC;YACA,UAAUP;QACZ;KACD;AACH"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/measures/buildMeasures.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasures.ts"],"sourcesContent":["import type { AdvancedPipe, MeasureGroup, Measures, MeasureTree, VSeed } from 'src/types'\nimport { isMeasureTreeWithChildren, isMeasureTreeWithParentId, normalizeMeasureTree } from './utils'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\n\nexport const buildMeasures: AdvancedPipe = (advancedVSeed) => {\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\n advancedVSeed.measures = normalizeMeasureTree(advancedVSeed.measures as MeasureTree)\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(advancedVSeed.measures)) {\n advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 透视图表, 自动生成指标树\n */\n if (isPivotChart(advancedVSeed as VSeed)) {\n advancedVSeed.measures = basicMeasuresToMeasureTree(advancedVSeed.measures as Measures)\n }\n\n return advancedVSeed\n}\n\nconst generateMeasuresByParentId = (measures: Measures): MeasureTree => {\n const measureTree: MeasureGroup[] = []\n\n measures.forEach((measure) => {\n const parent = measureTree.find((item) => item.id === measure.parentId)\n if (parent && 'children' in parent) {\n parent.children = parent.children || []\n parent.children.push(measure)\n } else if (measure.parentId) {\n measureTree.push({\n id: measure.parentId,\n children: [measure],\n })\n } else {\n measureTree.push({\n id: DEFAULT_PARENT_ID,\n children: [measure],\n })\n }\n })\n\n return measureTree\n}\n\nconst basicMeasuresToMeasureTree = (measures: Measures): MeasureTree => {\n const id = measures.map((item) => item.id).join('-')\n const alias = measures.map((item) => item.alias || item.id).join('-')\n return [\n {\n id,\n alias,\n children: measures,\n },\n ]\n}\n"],"names":["buildMeasures","advancedVSeed","isMeasureTreeWithChildren","normalizeMeasureTree","isMeasureTreeWithParentId","generateMeasuresByParentId","isPivotChart","basicMeasuresToMeasureTree","measures","measureTree","measure","parent","item","DEFAULT_PARENT_ID","id","alias"],"mappings":";;;AAKO,MAAMA,gBAA8B,CAACC;IAE1C,IAAIC,0BAA0BD,cAAc,QAAQ,GAAG;QACrDA,cAAc,QAAQ,GAAGE,qBAAqBF,cAAc,QAAQ;QACpE,OAAOA;IACT;IAEA,IAAIG,0BAA0BH,cAAc,QAAQ,GAAG;QACrDA,cAAc,QAAQ,GAAGI,2BAA2BJ,cAAc,QAAQ;QAC1E,OAAOA;IACT;IAKA,IAAIK,aAAaL,gBACfA,cAAc,QAAQ,GAAGM,2BAA2BN,cAAc,QAAQ;IAG5E,OAAOA;AACT;AAEA,MAAMI,6BAA6B,CAACG;IAClC,MAAMC,cAA8B,EAAE;IAEtCD,SAAS,OAAO,CAAC,CAACE;QAChB,MAAMC,SAASF,YAAY,IAAI,CAAC,CAACG,OAASA,KAAK,EAAE,KAAKF,QAAQ,QAAQ;QACtE,IAAIC,UAAU,cAAcA,QAAQ;YAClCA,OAAO,QAAQ,GAAGA,OAAO,QAAQ,IAAI,EAAE;YACvCA,OAAO,QAAQ,CAAC,IAAI,CAACD;QACvB,OAAO,IAAIA,QAAQ,QAAQ,EACzBD,YAAY,IAAI,CAAC;YACf,IAAIC,QAAQ,QAAQ;YACpB,UAAU;gBAACA;aAAQ;QACrB;aAEAD,YAAY,IAAI,CAAC;YACf,IAAII;YACJ,UAAU;gBAACH;aAAQ;QACrB;IAEJ;IAEA,OAAOD;AACT;AAEA,MAAMF,6BAA6B,CAACC;IAClC,MAAMM,KAAKN,SAAS,GAAG,CAAC,CAACI,OAASA,KAAK,EAAE,EAAE,IAAI,CAAC;IAChD,MAAMG,QAAQP,SAAS,GAAG,CAAC,CAACI,OAASA,KAAK,KAAK,IAAIA,KAAK,EAAE,EAAE,IAAI,CAAC;IACjE,OAAO;QACL;YACEE;YACAC;YACA,UAAUP;QACZ;KACD;AACH"}
@@ -0,0 +1 @@
1
+ export { regressionLine } from './regressionLine';
@@ -0,0 +1,2 @@
1
+ import { regressionLine } from "./regressionLine.js";
2
+ export { regressionLine };
@@ -0,0 +1,2 @@
1
+ import type { AdvancedPipe } from '../../../../../types';
2
+ export declare const regressionLine: AdvancedPipe;
@@ -0,0 +1,8 @@
1
+ const regressionLine = (advancedVSeed, context)=>{
2
+ const { vseed } = context;
3
+ if ('histogramRegressionLine' in vseed && 'histogram' === vseed.chartType) advancedVSeed.histogramRegressionLine = vseed.histogramRegressionLine;
4
+ return advancedVSeed;
5
+ };
6
+ export { regressionLine };
7
+
8
+ //# sourceMappingURL=regressionLine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/regressionLine/regressionLine.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/regressionLine/regressionLine.ts"],"sourcesContent":["import type { AdvancedPipe } from 'src/types'\n\nexport const regressionLine: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n\n if ('histogramRegressionLine' in vseed && vseed.chartType === 'histogram') {\n advancedVSeed.histogramRegressionLine = vseed.histogramRegressionLine\n }\n\n return advancedVSeed\n}\n"],"names":["regressionLine","advancedVSeed","context","vseed"],"mappings":"AAEO,MAAMA,iBAA+B,CAACC,eAAeC;IAC1D,MAAM,EAAEC,KAAK,EAAE,GAAGD;IAElB,IAAI,6BAA6BC,SAASA,AAAoB,gBAApBA,MAAM,SAAS,EACvDF,cAAc,uBAAuB,GAAGE,MAAM,uBAAuB;IAGvE,OAAOF;AACT"}
@@ -2,3 +2,7 @@ export { pivotReshapeWithEncoding } from './pivotReshapeWithEncoding';
2
2
  export { reshapeWithEncoding } from './reshapeWithEncoding';
3
3
  export { reshapeWithDualEncoding } from './reshapeWithDualEncoding';
4
4
  export { pivotReshapeWithDualEncoding } from './pivotReshapeWithDualEncoding';
5
+ export { reshapeWithBoxplotEncoding } from './reshapeWithBoxplotEncoding';
6
+ export { reshapeWithHistogramEncoding } from './reshapeWithHistogramEncoding';
7
+ export { pivotReshapeWithHistogramEncoding } from './pivotReshapeWithHistogramEncoding';
8
+ export { pivotReshapeWithBoxplotEncoding } from './pivotReshapeWithBoxplotEncoding';
@@ -2,4 +2,8 @@ import { pivotReshapeWithEncoding } from "./pivotReshapeWithEncoding.js";
2
2
  import { reshapeWithEncoding } from "./reshapeWithEncoding.js";
3
3
  import { reshapeWithDualEncoding } from "./reshapeWithDualEncoding.js";
4
4
  import { pivotReshapeWithDualEncoding } from "./pivotReshapeWithDualEncoding.js";
5
- export { pivotReshapeWithDualEncoding, pivotReshapeWithEncoding, reshapeWithDualEncoding, reshapeWithEncoding };
5
+ import { reshapeWithBoxplotEncoding } from "./reshapeWithBoxplotEncoding.js";
6
+ import { reshapeWithHistogramEncoding } from "./reshapeWithHistogramEncoding.js";
7
+ import { pivotReshapeWithHistogramEncoding } from "./pivotReshapeWithHistogramEncoding.js";
8
+ import { pivotReshapeWithBoxplotEncoding } from "./pivotReshapeWithBoxplotEncoding.js";
9
+ export { pivotReshapeWithBoxplotEncoding, pivotReshapeWithDualEncoding, pivotReshapeWithEncoding, pivotReshapeWithHistogramEncoding, reshapeWithBoxplotEncoding, reshapeWithDualEncoding, reshapeWithEncoding, reshapeWithHistogramEncoding };
@@ -0,0 +1,2 @@
1
+ import type { AdvancedPipe } from '../../../../../types';
2
+ export declare const pivotReshapeWithBoxplotEncoding: AdvancedPipe;
@@ -0,0 +1,96 @@
1
+ import { boxplot } from "@visactor/vdataset";
2
+ import { uniqueBy } from "remeda";
3
+ import { FoldMeasureId, FoldMeasureName, MaxMeasureId, MedianMeasureId, MinMeasureId, OutliersMeasureId, Q1MeasureValue, Q3MeasureValue, Separator, unfoldDimensions } from "../../../../../dataReshape/index.js";
4
+ const pivotReshapeWithBoxplotEncoding = (advancedVSeed, context)=>{
5
+ const result = {
6
+ ...advancedVSeed
7
+ };
8
+ const { vseed } = context;
9
+ const { dataset, chartType } = vseed;
10
+ const { dimensions = [], measures = [], encoding = {}, config } = advancedVSeed;
11
+ const uniqDims = uniqueBy(dimensions, (item)=>item.id);
12
+ const chartConfig = config?.[chartType];
13
+ const whiskers = chartConfig?.whiskers;
14
+ const measureGroups = [];
15
+ if (measures) measures.forEach((measure)=>{
16
+ if (measure.children && measure.children.length > 0) measureGroups.push(measure);
17
+ });
18
+ const rowColumnFields = uniqueBy(dimensions.filter((dim)=>'row' === dim.encoding || 'column' === dim.encoding), (item)=>item.id);
19
+ const datasets = [];
20
+ const datasetReshapeInfo = [];
21
+ measureGroups.forEach((measureGroup, index)=>{
22
+ const subMeasures = measureGroup.children;
23
+ if (!subMeasures) return;
24
+ const groupId = measureGroup.id;
25
+ let newDatasets = [];
26
+ let foldInfo = {};
27
+ let unfoldInfo = {};
28
+ if (encoding.value?.length) encoding.value.forEach((f)=>{
29
+ const m = subMeasures.find((m)=>m.id === f);
30
+ const boxPlotData = boxplot(dataset, {
31
+ field: f,
32
+ groupField: [
33
+ ...encoding.x ?? [],
34
+ ...encoding.color ?? [],
35
+ ...rowColumnFields.map((item)=>item.id)
36
+ ],
37
+ whiskers,
38
+ outputNames: {
39
+ q1: Q1MeasureValue,
40
+ q3: Q3MeasureValue,
41
+ min: MinMeasureId,
42
+ max: MaxMeasureId,
43
+ median: MedianMeasureId,
44
+ outliers: OutliersMeasureId
45
+ }
46
+ });
47
+ boxPlotData.forEach((datum)=>{
48
+ datum[FoldMeasureId] = f;
49
+ datum[FoldMeasureName] = m?.alias ?? f;
50
+ });
51
+ const res = unfoldDimensions(boxPlotData, uniqDims, encoding, {
52
+ foldMeasureId: FoldMeasureId,
53
+ separator: Separator,
54
+ colorItemAsId: false
55
+ });
56
+ res.dataset.forEach((d)=>{
57
+ newDatasets.push(d);
58
+ });
59
+ unfoldInfo = res.unfoldInfo;
60
+ });
61
+ else if (encoding.q1?.length && encoding.q3?.length && encoding.min?.length && encoding.max?.length && encoding.median?.length) {
62
+ const res = unfoldDimensions(dataset, uniqDims, encoding, {
63
+ foldMeasureId: FoldMeasureId,
64
+ separator: Separator,
65
+ colorItemAsId: false
66
+ });
67
+ res.dataset.forEach((datum)=>{
68
+ datum[MaxMeasureId] = datum[encoding.max[0]];
69
+ datum[MinMeasureId] = datum[encoding.min[0]];
70
+ datum[Q1MeasureValue] = datum[encoding.q1[0]];
71
+ datum[Q3MeasureValue] = datum[encoding.q3[0]];
72
+ datum[MedianMeasureId] = datum[encoding.median[0]];
73
+ });
74
+ newDatasets = res.dataset;
75
+ foldInfo = {};
76
+ unfoldInfo = res.unfoldInfo;
77
+ }
78
+ const reshapeInfo = {
79
+ id: groupId,
80
+ index,
81
+ foldInfo,
82
+ unfoldInfo
83
+ };
84
+ datasets.push(newDatasets);
85
+ datasetReshapeInfo.push(reshapeInfo);
86
+ });
87
+ console.log(datasets);
88
+ return {
89
+ ...result,
90
+ dataset: datasets,
91
+ datasetReshapeInfo: datasetReshapeInfo
92
+ };
93
+ };
94
+ export { pivotReshapeWithBoxplotEncoding };
95
+
96
+ //# sourceMappingURL=pivotReshapeWithBoxplotEncoding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.ts"],"sourcesContent":["import { boxplot } from '@visactor/vdataset'\nimport { uniqueBy } from 'remeda'\nimport {\n FoldMeasureId,\n FoldMeasureName,\n MaxMeasureId,\n MedianMeasureId,\n MinMeasureId,\n OutliersMeasureId,\n Q1MeasureValue,\n Q3MeasureValue,\n Separator,\n unfoldDimensions,\n} from 'src/dataReshape'\nimport type {\n AdvancedPipe,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Dimension,\n Encoding,\n MeasureGroup,\n} from 'src/types'\n\nexport const pivotReshapeWithBoxplotEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding = {}, config } = advancedVSeed\n const uniqDims = uniqueBy(dimensions, (item: Dimension) => item.id)\n const chartConfig = config?.[chartType as 'boxPlot']\n const whiskers = chartConfig?.whiskers\n\n const measureGroups: MeasureGroup[] = []\n if (measures) {\n measures.forEach((measure: MeasureGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n\n const rowColumnFields = uniqueBy(\n dimensions.filter((dim: Dimension) => dim.encoding === 'row' || dim.encoding === 'column'),\n (item: Dimension) => item.id,\n )\n const datasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measureGroups.forEach((measureGroup, index) => {\n const subMeasures = measureGroup.children\n if (!subMeasures) {\n return\n }\n const groupId = measureGroup.id\n let newDatasets: any[] = []\n let foldInfo: any = {}\n let unfoldInfo: any = {}\n\n if (encoding.value?.length) {\n encoding.value.forEach((f) => {\n const m = subMeasures.find((m) => m.id === f)\n const boxPlotData = boxplot(dataset, {\n field: f,\n groupField: [\n ...(encoding.x ?? []),\n ...(encoding.color ?? []),\n ...rowColumnFields.map((item: Dimension) => item.id),\n ] as string[],\n whiskers,\n outputNames: {\n q1: Q1MeasureValue,\n q3: Q3MeasureValue,\n min: MinMeasureId,\n max: MaxMeasureId,\n median: MedianMeasureId,\n outliers: OutliersMeasureId,\n },\n }) as Dataset\n\n boxPlotData.forEach((datum) => {\n datum[FoldMeasureId] = f\n datum[FoldMeasureName] = m?.alias ?? f\n })\n\n const res = unfoldDimensions(boxPlotData, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((d) => {\n newDatasets.push(d)\n })\n unfoldInfo = res.unfoldInfo\n })\n } else if (\n encoding.q1?.length &&\n encoding.q3?.length &&\n encoding.min?.length &&\n encoding.max?.length &&\n encoding.median?.length\n ) {\n const res = unfoldDimensions(dataset, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((datum) => {\n datum[MaxMeasureId] = datum[encoding.max![0]]\n datum[MinMeasureId] = datum[encoding.min![0]]\n datum[Q1MeasureValue] = datum[encoding.q1![0]]\n datum[Q3MeasureValue] = datum[encoding.q3![0]]\n datum[MedianMeasureId] = datum[encoding.median![0]]\n })\n\n newDatasets = res.dataset\n foldInfo = {}\n unfoldInfo = res.unfoldInfo\n }\n\n const reshapeInfo = {\n id: groupId,\n index,\n foldInfo,\n unfoldInfo,\n }\n datasets.push(newDatasets)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n console.log(datasets)\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n"],"names":["pivotReshapeWithBoxplotEncoding","advancedVSeed","context","result","vseed","dataset","chartType","dimensions","measures","encoding","config","uniqDims","uniqueBy","item","chartConfig","whiskers","measureGroups","measure","rowColumnFields","dim","datasets","datasetReshapeInfo","measureGroup","index","subMeasures","groupId","newDatasets","foldInfo","unfoldInfo","f","m","boxPlotData","boxplot","Q1MeasureValue","Q3MeasureValue","MinMeasureId","MaxMeasureId","MedianMeasureId","OutliersMeasureId","datum","FoldMeasureId","FoldMeasureName","res","unfoldDimensions","Separator","d","reshapeInfo","console"],"mappings":";;;AAwBO,MAAMA,kCAAgD,CAACC,eAAeC;IAC3E,MAAMC,SAAS;QAAE,GAAGF,aAAa;IAAC;IAClC,MAAM,EAAEG,KAAK,EAAE,GAAGF;IAClB,MAAM,EAAEG,OAAO,EAAEC,SAAS,EAAE,GAAGF;IAC/B,MAAM,EAAEG,aAAa,EAAE,EAAEC,WAAW,EAAE,EAAEC,WAAW,CAAC,CAAC,EAAEC,MAAM,EAAE,GAAGT;IAClE,MAAMU,WAAWC,SAASL,YAAY,CAACM,OAAoBA,KAAK,EAAE;IAClE,MAAMC,cAAcJ,QAAQ,CAACJ,UAAuB;IACpD,MAAMS,WAAWD,aAAa;IAE9B,MAAME,gBAAgC,EAAE;IACxC,IAAIR,UACFA,SAAS,OAAO,CAAC,CAACS;QAChB,IAAIA,QAAQ,QAAQ,IAAIA,QAAQ,QAAQ,CAAC,MAAM,GAAG,GAChDD,cAAc,IAAI,CAACC;IAEvB;IAGF,MAAMC,kBAAkBN,SACtBL,WAAW,MAAM,CAAC,CAACY,MAAmBA,AAAiB,UAAjBA,IAAI,QAAQ,IAAcA,AAAiB,aAAjBA,IAAI,QAAQ,GAC5E,CAACN,OAAoBA,KAAK,EAAE;IAE9B,MAAMO,WAAoB,EAAE;IAC5B,MAAMC,qBAAyC,EAAE;IAEjDL,cAAc,OAAO,CAAC,CAACM,cAAcC;QACnC,MAAMC,cAAcF,aAAa,QAAQ;QACzC,IAAI,CAACE,aACH;QAEF,MAAMC,UAAUH,aAAa,EAAE;QAC/B,IAAII,cAAqB,EAAE;QAC3B,IAAIC,WAAgB,CAAC;QACrB,IAAIC,aAAkB,CAAC;QAEvB,IAAInB,SAAS,KAAK,EAAE,QAClBA,SAAS,KAAK,CAAC,OAAO,CAAC,CAACoB;YACtB,MAAMC,IAAIN,YAAY,IAAI,CAAC,CAACM,IAAMA,EAAE,EAAE,KAAKD;YAC3C,MAAME,cAAcC,QAAQ3B,SAAS;gBACnC,OAAOwB;gBACP,YAAY;uBACNpB,SAAS,CAAC,IAAI,EAAE;uBAChBA,SAAS,KAAK,IAAI,EAAE;uBACrBS,gBAAgB,GAAG,CAAC,CAACL,OAAoBA,KAAK,EAAE;iBACpD;gBACDE;gBACA,aAAa;oBACX,IAAIkB;oBACJ,IAAIC;oBACJ,KAAKC;oBACL,KAAKC;oBACL,QAAQC;oBACR,UAAUC;gBACZ;YACF;YAEAP,YAAY,OAAO,CAAC,CAACQ;gBACnBA,KAAK,CAACC,cAAc,GAAGX;gBACvBU,KAAK,CAACE,gBAAgB,GAAGX,GAAG,SAASD;YACvC;YAEA,MAAMa,MAAMC,iBAAiBZ,aAAapB,UAAUF,UAAsB;gBACxE,eAAe+B;gBACf,WAAWI;gBACX,eAAe;YACjB;YAEAF,IAAI,OAAO,CAAC,OAAO,CAAC,CAACG;gBACnBnB,YAAY,IAAI,CAACmB;YACnB;YACAjB,aAAac,IAAI,UAAU;QAC7B;aACK,IACLjC,SAAS,EAAE,EAAE,UACbA,SAAS,EAAE,EAAE,UACbA,SAAS,GAAG,EAAE,UACdA,SAAS,GAAG,EAAE,UACdA,SAAS,MAAM,EAAE,QACjB;YACA,MAAMiC,MAAMC,iBAAiBtC,SAASM,UAAUF,UAAsB;gBACpE,eAAe+B;gBACf,WAAWI;gBACX,eAAe;YACjB;YAEAF,IAAI,OAAO,CAAC,OAAO,CAAC,CAACH;gBACnBA,KAAK,CAACH,aAAa,GAAGG,KAAK,CAAC9B,SAAS,GAAI,CAAC,EAAE,CAAC;gBAC7C8B,KAAK,CAACJ,aAAa,GAAGI,KAAK,CAAC9B,SAAS,GAAI,CAAC,EAAE,CAAC;gBAC7C8B,KAAK,CAACN,eAAe,GAAGM,KAAK,CAAC9B,SAAS,EAAG,CAAC,EAAE,CAAC;gBAC9C8B,KAAK,CAACL,eAAe,GAAGK,KAAK,CAAC9B,SAAS,EAAG,CAAC,EAAE,CAAC;gBAC9C8B,KAAK,CAACF,gBAAgB,GAAGE,KAAK,CAAC9B,SAAS,MAAO,CAAC,EAAE,CAAC;YACrD;YAEAiB,cAAcgB,IAAI,OAAO;YACzBf,WAAW,CAAC;YACZC,aAAac,IAAI,UAAU;QAC7B;QAEA,MAAMI,cAAc;YAClB,IAAIrB;YACJF;YACAI;YACAC;QACF;QACAR,SAAS,IAAI,CAACM;QACdL,mBAAmB,IAAI,CAACyB;IAC1B;IAEAC,QAAQ,GAAG,CAAC3B;IAEZ,OAAO;QACL,GAAGjB,MAAM;QACT,SAASiB;QACT,oBAAoBC;IACtB;AACF"}
@@ -0,0 +1,2 @@
1
+ import type { AdvancedPipe } from '../../../../../types';
2
+ export declare const pivotReshapeWithHistogramEncoding: AdvancedPipe;
@@ -0,0 +1,96 @@
1
+ import { bin } from "@visactor/vdataset";
2
+ import { uniqueBy } from "remeda";
3
+ import { BinCountMeasureId, BinEndMeasureId, BinPercentageMeasureId, BinStartMeasureId, FoldMeasureId, FoldMeasureName, FoldMeasureValue, Separator, dataReshapeByEncoding, unfoldDimensions } from "../../../../../dataReshape/index.js";
4
+ import { getColorMeasureId } from "../../../../spec/chart/pipes/index.js";
5
+ const pivotReshapeWithHistogramEncoding = (advancedVSeed, context)=>{
6
+ const result = {
7
+ ...advancedVSeed
8
+ };
9
+ const { vseed } = context;
10
+ const { dataset, chartType } = vseed;
11
+ const { dimensions = [], measures = [], encoding = {}, config } = advancedVSeed;
12
+ const colorMeasureId = getColorMeasureId(advancedVSeed, vseed);
13
+ const uniqDims = uniqueBy(dimensions, (item)=>item.id);
14
+ const chartConfig = config?.[chartType];
15
+ const binCount = chartConfig?.binCount;
16
+ const binStep = chartConfig?.binStep;
17
+ const binValueType = chartConfig?.binValueType;
18
+ const measureGroups = [];
19
+ if (measures) measures.forEach((measure)=>{
20
+ if (measure.children && measure.children.length > 0) measureGroups.push(measure);
21
+ });
22
+ const rowColumnFields = uniqueBy(dimensions.filter((dim)=>'row' === dim.encoding || 'column' === dim.encoding), (item)=>item.id);
23
+ const datasets = [];
24
+ const datasetReshapeInfo = [];
25
+ measureGroups.forEach((measureGroup, index)=>{
26
+ const subMeasures = measureGroup.children;
27
+ if (!subMeasures) return;
28
+ const groupId = measureGroup.id;
29
+ let newDatasets = [];
30
+ let foldInfo = {};
31
+ let unfoldInfo = {};
32
+ if (encoding.value?.length) {
33
+ const valueField = encoding.value[0];
34
+ const m = subMeasures.find((m)=>m.id === valueField);
35
+ const binData = bin(dataset, {
36
+ field: valueField,
37
+ groupField: [
38
+ ...encoding.x ?? [],
39
+ ...encoding.color ?? [],
40
+ ...rowColumnFields.map((item)=>item.id)
41
+ ],
42
+ bins: binCount,
43
+ step: binStep,
44
+ outputNames: {
45
+ x0: BinStartMeasureId,
46
+ x1: BinEndMeasureId,
47
+ count: BinCountMeasureId,
48
+ percentage: BinPercentageMeasureId
49
+ }
50
+ });
51
+ binData.forEach((datum)=>{
52
+ datum[FoldMeasureId] = valueField;
53
+ datum[FoldMeasureName] = m?.alias ?? valueField;
54
+ datum[FoldMeasureValue] = 'percentage' === binValueType ? datum[BinPercentageMeasureId] : datum[BinCountMeasureId];
55
+ });
56
+ const res = unfoldDimensions(binData, uniqDims, encoding, {
57
+ foldMeasureId: FoldMeasureId,
58
+ separator: Separator,
59
+ colorItemAsId: false
60
+ });
61
+ res.dataset.forEach((d)=>{
62
+ newDatasets.push(d);
63
+ });
64
+ unfoldInfo = res.unfoldInfo;
65
+ } else if (encoding.x0?.length && encoding.x1?.length && encoding.y?.length) {
66
+ const res = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (item)=>item.id), subMeasures.filter((item)=>encoding.y?.includes(item.id)).slice(0, 1), encoding, {
67
+ colorItemAsId: false,
68
+ colorMeasureId
69
+ });
70
+ res.dataset.forEach((datum)=>{
71
+ datum[BinStartMeasureId] = datum[encoding.x0[0]];
72
+ datum[BinEndMeasureId] = datum[encoding.x1[0]];
73
+ datum[FoldMeasureId] = datum[encoding.y[0]];
74
+ });
75
+ newDatasets = res.dataset;
76
+ foldInfo = res.foldInfo;
77
+ unfoldInfo = res.unfoldInfo;
78
+ }
79
+ const reshapeInfo = {
80
+ id: groupId,
81
+ index,
82
+ foldInfo,
83
+ unfoldInfo
84
+ };
85
+ datasets.push(newDatasets);
86
+ datasetReshapeInfo.push(reshapeInfo);
87
+ });
88
+ return {
89
+ ...result,
90
+ dataset: datasets,
91
+ datasetReshapeInfo: datasetReshapeInfo
92
+ };
93
+ };
94
+ export { pivotReshapeWithHistogramEncoding };
95
+
96
+ //# sourceMappingURL=pivotReshapeWithHistogramEncoding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/reshape/pivotReshapeWithHistogramEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithHistogramEncoding.ts"],"sourcesContent":["import { bin } from '@visactor/vdataset'\nimport { uniqueBy } from 'remeda'\nimport {\n BinCountMeasureId,\n BinEndMeasureId,\n BinPercentageMeasureId,\n BinStartMeasureId,\n dataReshapeByEncoding,\n FoldMeasureId,\n FoldMeasureName,\n FoldMeasureValue,\n Separator,\n unfoldDimensions,\n} from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Datum,\n Dimension,\n Encoding,\n MeasureGroup,\n} from 'src/types'\n\nexport const pivotReshapeWithHistogramEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding = {}, config } = advancedVSeed\n const colorMeasureId = getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed)\n const uniqDims = uniqueBy(dimensions, (item: Dimension) => item.id)\n const chartConfig = config?.[chartType as 'histogram']\n const binCount = chartConfig?.binCount\n const binStep = chartConfig?.binStep\n const binValueType = chartConfig?.binValueType\n\n const measureGroups: MeasureGroup[] = []\n if (measures) {\n measures.forEach((measure: MeasureGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n const rowColumnFields = uniqueBy(\n dimensions.filter((dim: Dimension) => dim.encoding === 'row' || dim.encoding === 'column'),\n (item: Dimension) => item.id,\n )\n\n const datasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measureGroups.forEach((measureGroup, index) => {\n const subMeasures = measureGroup.children\n if (!subMeasures) {\n return\n }\n const groupId = measureGroup.id\n\n let newDatasets: any[] = []\n let foldInfo: any = {}\n let unfoldInfo: any = {}\n\n if (encoding.value?.length) {\n const valueField = encoding.value[0]\n const m = subMeasures.find((m) => m.id === valueField)\n const binData = bin(dataset, {\n field: valueField,\n groupField: [\n ...(encoding.x ?? []),\n ...(encoding.color ?? []),\n ...rowColumnFields.map((item: Dimension) => item.id),\n ] as string[],\n bins: binCount,\n step: binStep,\n outputNames: {\n x0: BinStartMeasureId,\n x1: BinEndMeasureId,\n count: BinCountMeasureId,\n percentage: BinPercentageMeasureId,\n },\n }) as Dataset\n\n binData.forEach((datum: Datum) => {\n datum[FoldMeasureId] = valueField\n datum[FoldMeasureName] = m?.alias ?? valueField\n datum[FoldMeasureValue] =\n binValueType === 'percentage' ? datum[BinPercentageMeasureId] : datum[BinCountMeasureId]\n })\n\n const res = unfoldDimensions(binData, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((d) => {\n newDatasets.push(d)\n })\n unfoldInfo = res.unfoldInfo\n } else if (encoding.x0?.length && encoding.x1?.length && encoding.y?.length) {\n const res = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item: Dimension) => item.id),\n subMeasures.filter((item) => encoding.y?.includes(item.id)).slice(0, 1),\n encoding as Encoding,\n {\n colorItemAsId: false,\n colorMeasureId,\n },\n )\n\n res.dataset.forEach((datum) => {\n datum[BinStartMeasureId] = datum[encoding.x0![0]]\n datum[BinEndMeasureId] = datum[encoding.x1![0]]\n datum[FoldMeasureId] = datum[encoding.y![0]]\n })\n\n newDatasets = res.dataset\n foldInfo = res.foldInfo\n unfoldInfo = res.unfoldInfo\n }\n\n const reshapeInfo = {\n id: groupId,\n index,\n foldInfo,\n unfoldInfo,\n }\n datasets.push(newDatasets)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n"],"names":["pivotReshapeWithHistogramEncoding","advancedVSeed","context","result","vseed","dataset","chartType","dimensions","measures","encoding","config","colorMeasureId","getColorMeasureId","uniqDims","uniqueBy","item","chartConfig","binCount","binStep","binValueType","measureGroups","measure","rowColumnFields","dim","datasets","datasetReshapeInfo","measureGroup","index","subMeasures","groupId","newDatasets","foldInfo","unfoldInfo","valueField","m","binData","bin","BinStartMeasureId","BinEndMeasureId","BinCountMeasureId","BinPercentageMeasureId","datum","FoldMeasureId","FoldMeasureName","FoldMeasureValue","res","unfoldDimensions","Separator","d","dataReshapeByEncoding","reshapeInfo"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { AdvancedPipe } from '../../../../../types';
2
+ export declare const reshapeWithBoxplotEncoding: AdvancedPipe;
@@ -0,0 +1,84 @@
1
+ import { FoldMeasureId, FoldMeasureName, MaxMeasureId, MedianMeasureId, MinMeasureId, OutliersMeasureId, Q1MeasureValue, Q3MeasureValue, Separator, unfoldDimensions } from "../../../../../dataReshape/index.js";
2
+ import { findAllMeasures } from "../../../../utils/index.js";
3
+ import { boxplot } from "@visactor/vdataset";
4
+ import { uniqueBy } from "remeda";
5
+ const reshapeWithBoxplotEncoding = (advancedVSeed, context)=>{
6
+ const result = {
7
+ ...advancedVSeed
8
+ };
9
+ const { vseed } = context;
10
+ const { dataset, chartType } = vseed;
11
+ const { dimensions = [], measures = [], encoding = {}, config } = advancedVSeed;
12
+ const uniqDims = uniqueBy(dimensions, (item)=>item.id);
13
+ const whiskers = config?.[chartType]?.whiskers;
14
+ let newDatasets = [];
15
+ let foldInfo = {};
16
+ let unfoldInfo = {};
17
+ const allMeasures = findAllMeasures(measures);
18
+ if (encoding.value?.length) encoding.value.forEach((f)=>{
19
+ const m = allMeasures.find((m)=>m.id === f);
20
+ const boxPlotData = boxplot(dataset, {
21
+ field: f,
22
+ groupField: [
23
+ ...encoding.x ?? [],
24
+ ...encoding.color ?? []
25
+ ],
26
+ whiskers,
27
+ outputNames: {
28
+ q1: Q1MeasureValue,
29
+ q3: Q3MeasureValue,
30
+ min: MinMeasureId,
31
+ max: MaxMeasureId,
32
+ median: MedianMeasureId,
33
+ outliers: OutliersMeasureId
34
+ }
35
+ });
36
+ boxPlotData.forEach((datum)=>{
37
+ datum[FoldMeasureId] = f;
38
+ datum[FoldMeasureName] = m?.alias ?? f;
39
+ });
40
+ const res = unfoldDimensions(boxPlotData, uniqDims, encoding, {
41
+ foldMeasureId: FoldMeasureId,
42
+ separator: Separator,
43
+ colorItemAsId: false
44
+ });
45
+ res.dataset.forEach((d)=>{
46
+ newDatasets.push(d);
47
+ });
48
+ unfoldInfo = res.unfoldInfo;
49
+ });
50
+ else if (encoding.q1?.length && encoding.q3?.length && encoding.min?.length && encoding.max?.length && encoding.median?.length) {
51
+ const res = unfoldDimensions(dataset, uniqDims, encoding, {
52
+ foldMeasureId: FoldMeasureId,
53
+ separator: Separator,
54
+ colorItemAsId: false
55
+ });
56
+ res.dataset.forEach((datum)=>{
57
+ datum[MaxMeasureId] = datum[encoding.max[0]];
58
+ datum[MinMeasureId] = datum[encoding.min[0]];
59
+ datum[Q1MeasureValue] = datum[encoding.q1[0]];
60
+ datum[Q3MeasureValue] = datum[encoding.q3[0]];
61
+ datum[MedianMeasureId] = datum[encoding.median[0]];
62
+ });
63
+ newDatasets = res.dataset;
64
+ foldInfo = {};
65
+ unfoldInfo = res.unfoldInfo;
66
+ }
67
+ return {
68
+ ...result,
69
+ dataset: newDatasets,
70
+ datasetReshapeInfo: [
71
+ {
72
+ id: String(chartType),
73
+ index: 0,
74
+ foldInfo,
75
+ unfoldInfo
76
+ }
77
+ ],
78
+ dimensions,
79
+ measures
80
+ };
81
+ };
82
+ export { reshapeWithBoxplotEncoding };
83
+
84
+ //# sourceMappingURL=reshapeWithBoxplotEncoding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/reshape/reshapeWithBoxplotEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeWithBoxplotEncoding.ts"],"sourcesContent":["import {\n FoldMeasureId,\n FoldMeasureName,\n MaxMeasureId,\n MedianMeasureId,\n MinMeasureId,\n OutliersMeasureId,\n Q1MeasureValue,\n Q3MeasureValue,\n Separator,\n unfoldDimensions,\n} from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, ColumnParallel, Dataset, Encoding } from 'src/types'\nimport { boxplot } from '@visactor/vdataset'\nimport { uniqueBy } from 'remeda'\n\nexport const reshapeWithBoxplotEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding = {}, config } = advancedVSeed\n const uniqDims = uniqueBy(dimensions, (item) => item.id)\n\n const whiskers = config?.[chartType as 'boxPlot']?.whiskers\n\n let newDatasets: any[] = []\n let foldInfo: any = {}\n let unfoldInfo: any = {}\n\n const allMeasures = findAllMeasures(measures)\n\n if (encoding.value?.length) {\n encoding.value.forEach((f) => {\n const m = allMeasures.find((m) => m.id === f)\n const boxPlotData = boxplot(dataset, {\n field: f,\n groupField: [...(encoding.x ?? []), ...(encoding.color ?? [])] as string[],\n whiskers,\n outputNames: {\n q1: Q1MeasureValue,\n q3: Q3MeasureValue,\n min: MinMeasureId,\n max: MaxMeasureId,\n median: MedianMeasureId,\n outliers: OutliersMeasureId,\n },\n }) as Dataset\n\n boxPlotData.forEach((datum) => {\n datum[FoldMeasureId] = f\n datum[FoldMeasureName] = m?.alias ?? f\n })\n\n const res = unfoldDimensions(boxPlotData, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((d) => {\n newDatasets.push(d)\n })\n unfoldInfo = res.unfoldInfo\n })\n } else if (\n encoding.q1?.length &&\n encoding.q3?.length &&\n encoding.min?.length &&\n encoding.max?.length &&\n encoding.median?.length\n ) {\n const res = unfoldDimensions(dataset, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((datum) => {\n datum[MaxMeasureId] = datum[encoding.max![0]]\n datum[MinMeasureId] = datum[encoding.min![0]]\n datum[Q1MeasureValue] = datum[encoding.q1![0]]\n datum[Q3MeasureValue] = datum[encoding.q3![0]]\n datum[MedianMeasureId] = datum[encoding.median![0]]\n })\n\n newDatasets = res.dataset\n foldInfo = {}\n unfoldInfo = res.unfoldInfo\n }\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: String(chartType),\n index: 0,\n foldInfo,\n unfoldInfo,\n },\n ],\n dimensions,\n measures,\n }\n}\n"],"names":["reshapeWithBoxplotEncoding","advancedVSeed","context","result","vseed","dataset","chartType","dimensions","measures","encoding","config","uniqDims","uniqueBy","item","whiskers","newDatasets","foldInfo","unfoldInfo","allMeasures","findAllMeasures","f","m","boxPlotData","boxplot","Q1MeasureValue","Q3MeasureValue","MinMeasureId","MaxMeasureId","MedianMeasureId","OutliersMeasureId","datum","FoldMeasureId","FoldMeasureName","res","unfoldDimensions","Separator","d","String"],"mappings":";;;;AAiBO,MAAMA,6BAA2C,CAACC,eAAeC;IACtE,MAAMC,SAAS;QAAE,GAAGF,aAAa;IAAC;IAClC,MAAM,EAAEG,KAAK,EAAE,GAAGF;IAClB,MAAM,EAAEG,OAAO,EAAEC,SAAS,EAAE,GAAGF;IAC/B,MAAM,EAAEG,aAAa,EAAE,EAAEC,WAAW,EAAE,EAAEC,WAAW,CAAC,CAAC,EAAEC,MAAM,EAAE,GAAGT;IAClE,MAAMU,WAAWC,SAASL,YAAY,CAACM,OAASA,KAAK,EAAE;IAEvD,MAAMC,WAAWJ,QAAQ,CAACJ,UAAuB,EAAE;IAEnD,IAAIS,cAAqB,EAAE;IAC3B,IAAIC,WAAgB,CAAC;IACrB,IAAIC,aAAkB,CAAC;IAEvB,MAAMC,cAAcC,gBAAgBX;IAEpC,IAAIC,SAAS,KAAK,EAAE,QAClBA,SAAS,KAAK,CAAC,OAAO,CAAC,CAACW;QACtB,MAAMC,IAAIH,YAAY,IAAI,CAAC,CAACG,IAAMA,EAAE,EAAE,KAAKD;QAC3C,MAAME,cAAcC,QAAQlB,SAAS;YACnC,OAAOe;YACP,YAAY;mBAAKX,SAAS,CAAC,IAAI,EAAE;mBAAOA,SAAS,KAAK,IAAI,EAAE;aAAE;YAC9DK;YACA,aAAa;gBACX,IAAIU;gBACJ,IAAIC;gBACJ,KAAKC;gBACL,KAAKC;gBACL,QAAQC;gBACR,UAAUC;YACZ;QACF;QAEAP,YAAY,OAAO,CAAC,CAACQ;YACnBA,KAAK,CAACC,cAAc,GAAGX;YACvBU,KAAK,CAACE,gBAAgB,GAAGX,GAAG,SAASD;QACvC;QAEA,MAAMa,MAAMC,iBAAiBZ,aAAaX,UAAUF,UAAsB;YACxE,eAAesB;YACf,WAAWI;YACX,eAAe;QACjB;QAEAF,IAAI,OAAO,CAAC,OAAO,CAAC,CAACG;YACnBrB,YAAY,IAAI,CAACqB;QACnB;QACAnB,aAAagB,IAAI,UAAU;IAC7B;SACK,IACLxB,SAAS,EAAE,EAAE,UACbA,SAAS,EAAE,EAAE,UACbA,SAAS,GAAG,EAAE,UACdA,SAAS,GAAG,EAAE,UACdA,SAAS,MAAM,EAAE,QACjB;QACA,MAAMwB,MAAMC,iBAAiB7B,SAASM,UAAUF,UAAsB;YACpE,eAAesB;YACf,WAAWI;YACX,eAAe;QACjB;QAEAF,IAAI,OAAO,CAAC,OAAO,CAAC,CAACH;YACnBA,KAAK,CAACH,aAAa,GAAGG,KAAK,CAACrB,SAAS,GAAI,CAAC,EAAE,CAAC;YAC7CqB,KAAK,CAACJ,aAAa,GAAGI,KAAK,CAACrB,SAAS,GAAI,CAAC,EAAE,CAAC;YAC7CqB,KAAK,CAACN,eAAe,GAAGM,KAAK,CAACrB,SAAS,EAAG,CAAC,EAAE,CAAC;YAC9CqB,KAAK,CAACL,eAAe,GAAGK,KAAK,CAACrB,SAAS,EAAG,CAAC,EAAE,CAAC;YAC9CqB,KAAK,CAACF,gBAAgB,GAAGE,KAAK,CAACrB,SAAS,MAAO,CAAC,EAAE,CAAC;QACrD;QAEAM,cAAckB,IAAI,OAAO;QACzBjB,WAAW,CAAC;QACZC,aAAagB,IAAI,UAAU;IAC7B;IAEA,OAAO;QACL,GAAG9B,MAAM;QACT,SAASY;QACT,oBAAoB;YAClB;gBACE,IAAIsB,OAAO/B;gBACX,OAAO;gBACPU;gBACAC;YACF;SACD;QACDV;QACAC;IACF;AACF"}
@@ -0,0 +1,2 @@
1
+ import type { AdvancedPipe } from '../../../../../types';
2
+ export declare const reshapeWithHistogramEncoding: AdvancedPipe;
@@ -0,0 +1,86 @@
1
+ import { BinCountMeasureId, BinEndMeasureId, BinPercentageMeasureId, BinStartMeasureId, FoldMeasureId, FoldMeasureName, FoldMeasureValue, Separator, dataReshapeByEncoding, unfoldDimensions } from "../../../../../dataReshape/index.js";
2
+ import { findAllMeasures } from "../../../../utils/index.js";
3
+ import { bin } from "@visactor/vdataset";
4
+ import { uniqueBy } from "remeda";
5
+ import { getColorMeasureId } from "../../../../spec/chart/pipes/color/colorAdapter.js";
6
+ const reshapeWithHistogramEncoding = (advancedVSeed, context)=>{
7
+ const result = {
8
+ ...advancedVSeed
9
+ };
10
+ const { vseed } = context;
11
+ const { dataset, chartType } = vseed;
12
+ const { dimensions = [], measures = [], encoding = {}, config } = advancedVSeed;
13
+ const uniqDims = uniqueBy(dimensions, (item)=>item.id);
14
+ const chartConfig = config?.[chartType];
15
+ const binCount = chartConfig?.binCount;
16
+ const binStep = chartConfig?.binStep;
17
+ const binValueType = chartConfig?.binValueType;
18
+ let newDatasets = [];
19
+ let foldInfo = {};
20
+ let unfoldInfo = {};
21
+ const colorMeasureId = getColorMeasureId(advancedVSeed, vseed);
22
+ const allMeasures = findAllMeasures(measures);
23
+ if (encoding.value?.length) {
24
+ const valueField = encoding.value[0];
25
+ const m = allMeasures.find((m)=>m.id === valueField);
26
+ const binData = bin(dataset, {
27
+ field: valueField,
28
+ groupField: [
29
+ ...encoding.x ?? [],
30
+ ...encoding.color ?? []
31
+ ],
32
+ bins: binCount,
33
+ step: binStep,
34
+ outputNames: {
35
+ x0: BinStartMeasureId,
36
+ x1: BinEndMeasureId,
37
+ count: BinCountMeasureId,
38
+ percentage: BinPercentageMeasureId
39
+ }
40
+ });
41
+ binData.forEach((datum)=>{
42
+ datum[FoldMeasureId] = valueField;
43
+ datum[FoldMeasureName] = m?.alias ?? valueField;
44
+ datum[FoldMeasureValue] = 'percentage' === binValueType ? datum[BinPercentageMeasureId] : datum[BinCountMeasureId];
45
+ });
46
+ const res = unfoldDimensions(binData, uniqDims, encoding, {
47
+ foldMeasureId: FoldMeasureId,
48
+ separator: Separator,
49
+ colorItemAsId: false
50
+ });
51
+ res.dataset.forEach((d)=>{
52
+ newDatasets.push(d);
53
+ });
54
+ unfoldInfo = res.unfoldInfo;
55
+ } else if (encoding.x0?.length && encoding.x1?.length && encoding.y?.length) {
56
+ const res = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (item)=>item.id), findAllMeasures(measures).filter((item)=>encoding.y?.includes(item.id)).slice(0, 1), encoding, {
57
+ colorItemAsId: false,
58
+ colorMeasureId
59
+ });
60
+ res.dataset.forEach((datum)=>{
61
+ datum[BinStartMeasureId] = datum[encoding.x0[0]];
62
+ datum[BinEndMeasureId] = datum[encoding.x1[0]];
63
+ datum[FoldMeasureId] = datum[encoding.y[0]];
64
+ });
65
+ newDatasets = res.dataset;
66
+ foldInfo = res.foldInfo;
67
+ unfoldInfo = res.unfoldInfo;
68
+ }
69
+ return {
70
+ ...result,
71
+ dataset: newDatasets,
72
+ datasetReshapeInfo: [
73
+ {
74
+ id: String(chartType),
75
+ index: 0,
76
+ foldInfo,
77
+ unfoldInfo
78
+ }
79
+ ],
80
+ dimensions,
81
+ measures
82
+ };
83
+ };
84
+ export { reshapeWithHistogramEncoding };
85
+
86
+ //# sourceMappingURL=reshapeWithHistogramEncoding.js.map