@visactor/vseed 0.4.11 → 0.4.13

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 (176) hide show
  1. package/dist/cjs/index.cjs +2 -2
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/esm/dataReshape/dataReshapeByEncoding.d.ts +2 -1
  4. package/dist/esm/dataReshape/dataReshapeByEncoding.js +7 -2
  5. package/dist/esm/dataReshape/dataReshapeByEncoding.js.map +1 -1
  6. package/dist/esm/dataReshape/unfoldDimensions.d.ts +1 -0
  7. package/dist/esm/dataReshape/unfoldDimensions.js +5 -4
  8. package/dist/esm/dataReshape/unfoldDimensions.js.map +1 -1
  9. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js +11 -3
  10. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js.map +1 -1
  11. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js +4 -2
  12. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js.map +1 -1
  13. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.js +2 -1
  14. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.js.map +1 -1
  15. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithHistogramEncoding.js +8 -3
  16. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithHistogramEncoding.js.map +1 -1
  17. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.js +4 -2
  18. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.js.map +1 -1
  19. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithBoxplotEncoding.js +11 -2
  20. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithBoxplotEncoding.js.map +1 -1
  21. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js +4 -2
  22. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js.map +1 -1
  23. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithEncoding.js +2 -1
  24. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithEncoding.js.map +1 -1
  25. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithHistogramEncoding.js +8 -2
  26. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithHistogramEncoding.js.map +1 -1
  27. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.js +4 -2
  28. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.js.map +1 -1
  29. package/dist/esm/pipeline/spec/chart/pipeline/area.js +6 -2
  30. package/dist/esm/pipeline/spec/chart/pipeline/area.js.map +1 -1
  31. package/dist/esm/pipeline/spec/chart/pipeline/areaPercent.js +6 -2
  32. package/dist/esm/pipeline/spec/chart/pipeline/areaPercent.js.map +1 -1
  33. package/dist/esm/pipeline/spec/chart/pipeline/bar.js +6 -2
  34. package/dist/esm/pipeline/spec/chart/pipeline/bar.js.map +1 -1
  35. package/dist/esm/pipeline/spec/chart/pipeline/barParallel.js +6 -2
  36. package/dist/esm/pipeline/spec/chart/pipeline/barParallel.js.map +1 -1
  37. package/dist/esm/pipeline/spec/chart/pipeline/barPercent.js +6 -2
  38. package/dist/esm/pipeline/spec/chart/pipeline/barPercent.js.map +1 -1
  39. package/dist/esm/pipeline/spec/chart/pipeline/column.js +6 -2
  40. package/dist/esm/pipeline/spec/chart/pipeline/column.js.map +1 -1
  41. package/dist/esm/pipeline/spec/chart/pipeline/columnParallel.js +6 -2
  42. package/dist/esm/pipeline/spec/chart/pipeline/columnParallel.js.map +1 -1
  43. package/dist/esm/pipeline/spec/chart/pipeline/columnPercent.js +6 -2
  44. package/dist/esm/pipeline/spec/chart/pipeline/columnPercent.js.map +1 -1
  45. package/dist/esm/pipeline/spec/chart/pipeline/donut.js +6 -2
  46. package/dist/esm/pipeline/spec/chart/pipeline/donut.js.map +1 -1
  47. package/dist/esm/pipeline/spec/chart/pipeline/funnel.js +6 -2
  48. package/dist/esm/pipeline/spec/chart/pipeline/funnel.js.map +1 -1
  49. package/dist/esm/pipeline/spec/chart/pipeline/line.js +6 -2
  50. package/dist/esm/pipeline/spec/chart/pipeline/line.js.map +1 -1
  51. package/dist/esm/pipeline/spec/chart/pipeline/pie.js +6 -2
  52. package/dist/esm/pipeline/spec/chart/pipeline/pie.js.map +1 -1
  53. package/dist/esm/pipeline/spec/chart/pipeline/raceBar.js +3 -1
  54. package/dist/esm/pipeline/spec/chart/pipeline/raceBar.js.map +1 -1
  55. package/dist/esm/pipeline/spec/chart/pipeline/raceColumn.js +3 -1
  56. package/dist/esm/pipeline/spec/chart/pipeline/raceColumn.js.map +1 -1
  57. package/dist/esm/pipeline/spec/chart/pipeline/raceDonut.js +3 -1
  58. package/dist/esm/pipeline/spec/chart/pipeline/raceDonut.js.map +1 -1
  59. package/dist/esm/pipeline/spec/chart/pipeline/raceLine.js +3 -1
  60. package/dist/esm/pipeline/spec/chart/pipeline/raceLine.js.map +1 -1
  61. package/dist/esm/pipeline/spec/chart/pipeline/racePie.js +3 -1
  62. package/dist/esm/pipeline/spec/chart/pipeline/racePie.js.map +1 -1
  63. package/dist/esm/pipeline/spec/chart/pipeline/radar.js +6 -2
  64. package/dist/esm/pipeline/spec/chart/pipeline/radar.js.map +1 -1
  65. package/dist/esm/pipeline/spec/chart/pipeline/rose.js +6 -2
  66. package/dist/esm/pipeline/spec/chart/pipeline/rose.js.map +1 -1
  67. package/dist/esm/pipeline/spec/chart/pipeline/roseParallel.js +6 -2
  68. package/dist/esm/pipeline/spec/chart/pipeline/roseParallel.js.map +1 -1
  69. package/dist/esm/pipeline/spec/chart/pipes/axes/heatmapBandAxis.js +14 -0
  70. package/dist/esm/pipeline/spec/chart/pipes/axes/heatmapBandAxis.js.map +1 -1
  71. package/dist/esm/pipeline/spec/chart/pipes/axes/radarAngle.js +27 -1
  72. package/dist/esm/pipeline/spec/chart/pipes/axes/radarAngle.js.map +1 -1
  73. package/dist/esm/pipeline/spec/chart/pipes/axes/xBand.js +15 -2
  74. package/dist/esm/pipeline/spec/chart/pipes/axes/xBand.js.map +1 -1
  75. package/dist/esm/pipeline/spec/chart/pipes/axes/yBand.js +15 -2
  76. package/dist/esm/pipeline/spec/chart/pipes/axes/yBand.js.map +1 -1
  77. package/dist/esm/pipeline/spec/chart/pipes/label/label.d.ts +3 -3
  78. package/dist/esm/pipeline/spec/chart/pipes/label/label.js +4 -3
  79. package/dist/esm/pipeline/spec/chart/pipes/label/label.js.map +1 -1
  80. package/dist/esm/pipeline/spec/chart/pipes/label/labelBoxPlot.js +1 -1
  81. package/dist/esm/pipeline/spec/chart/pipes/label/labelBoxPlot.js.map +1 -1
  82. package/dist/esm/pipeline/spec/chart/pipes/label/labelCirclePacking.js +18 -1
  83. package/dist/esm/pipeline/spec/chart/pipes/label/labelCirclePacking.js.map +1 -1
  84. package/dist/esm/pipeline/spec/chart/pipes/label/labelDualAxis.js +1 -1
  85. package/dist/esm/pipeline/spec/chart/pipes/label/labelDualAxis.js.map +1 -1
  86. package/dist/esm/pipeline/spec/chart/pipes/label/labelPie.js +1 -1
  87. package/dist/esm/pipeline/spec/chart/pipes/label/labelPie.js.map +1 -1
  88. package/dist/esm/pipeline/spec/chart/pipes/label/labelScatter.js +1 -1
  89. package/dist/esm/pipeline/spec/chart/pipes/label/labelScatter.js.map +1 -1
  90. package/dist/esm/pipeline/spec/chart/pipes/label/labelSunburst.js +18 -1
  91. package/dist/esm/pipeline/spec/chart/pipes/label/labelSunburst.js.map +1 -1
  92. package/dist/esm/pipeline/spec/chart/pipes/label/labelTreeMapGroup.js +12 -4
  93. package/dist/esm/pipeline/spec/chart/pipes/label/labelTreeMapGroup.js.map +1 -1
  94. package/dist/esm/pipeline/spec/chart/pipes/label/labelTreeMapLeaf.js +4 -2
  95. package/dist/esm/pipeline/spec/chart/pipes/label/labelTreeMapLeaf.js.map +1 -1
  96. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotColumnDimensions.js +5 -0
  97. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotColumnDimensions.js.map +1 -1
  98. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotRowDimensions.js +5 -0
  99. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotRowDimensions.js.map +1 -1
  100. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.d.ts +5 -3
  101. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js +51 -32
  102. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js.map +1 -1
  103. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.js +8 -7
  104. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.js.map +1 -1
  105. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js +15 -2
  106. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js.map +1 -1
  107. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js +3 -2
  108. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js.map +1 -1
  109. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHierarchy.js +6 -5
  110. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHierarchy.js.map +1 -1
  111. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js +3 -2
  112. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js.map +1 -1
  113. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipTreeMap.js +14 -6
  114. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipTreeMap.js.map +1 -1
  115. package/dist/esm/pipeline/spec/table/pipes/columns/dimensionsToColumns.js +6 -2
  116. package/dist/esm/pipeline/spec/table/pipes/columns/dimensionsToColumns.js.map +1 -1
  117. package/dist/esm/pipeline/spec/table/pipes/columns/pivotColumns.js +8 -3
  118. package/dist/esm/pipeline/spec/table/pipes/columns/pivotColumns.js.map +1 -1
  119. package/dist/esm/pipeline/spec/table/pipes/rows/pivotRows.js +8 -3
  120. package/dist/esm/pipeline/spec/table/pipes/rows/pivotRows.js.map +1 -1
  121. package/dist/esm/pipeline/utils/constant.d.ts +1 -0
  122. package/dist/esm/pipeline/utils/constant.js +1 -0
  123. package/dist/esm/pipeline/utils/constant.js.map +1 -1
  124. package/dist/esm/pipeline/utils/format/createFormatterByDimension.d.ts +2 -0
  125. package/dist/esm/pipeline/utils/format/createFormatterByDimension.js +10 -0
  126. package/dist/esm/pipeline/utils/format/createFormatterByDimension.js.map +1 -0
  127. package/dist/esm/pipeline/utils/format/createTimeFormatter.d.ts +2 -0
  128. package/dist/esm/pipeline/utils/format/createTimeFormatter.js +154 -0
  129. package/dist/esm/pipeline/utils/format/createTimeFormatter.js.map +1 -0
  130. package/dist/esm/pipeline/utils/format/index.d.ts +2 -0
  131. package/dist/esm/pipeline/utils/format/index.js +2 -0
  132. package/dist/esm/types/chartType/area/zArea.d.ts +12 -0
  133. package/dist/esm/types/chartType/areaPercent/zAreaPercent.d.ts +12 -0
  134. package/dist/esm/types/chartType/bar/zBar.d.ts +12 -0
  135. package/dist/esm/types/chartType/barParallel/zBarParallel.d.ts +12 -0
  136. package/dist/esm/types/chartType/barPercent/zBarPercent.d.ts +12 -0
  137. package/dist/esm/types/chartType/boxPlot/zBoxPlot.d.ts +12 -0
  138. package/dist/esm/types/chartType/circlePacking/zCirclePacking.d.ts +12 -0
  139. package/dist/esm/types/chartType/column/zColumn.d.ts +12 -0
  140. package/dist/esm/types/chartType/columnParallel/zColumnParallel.d.ts +12 -0
  141. package/dist/esm/types/chartType/columnPercent/zColumnPercent.d.ts +12 -0
  142. package/dist/esm/types/chartType/donut/zDonut.d.ts +12 -0
  143. package/dist/esm/types/chartType/dualAxis/zDualAxis.d.ts +12 -0
  144. package/dist/esm/types/chartType/funnel/zFunnel.d.ts +12 -0
  145. package/dist/esm/types/chartType/heatmap/zHeatmap.d.ts +12 -0
  146. package/dist/esm/types/chartType/histogram/zHistogram.d.ts +12 -0
  147. package/dist/esm/types/chartType/line/zLine.d.ts +12 -0
  148. package/dist/esm/types/chartType/pie/zPie.d.ts +12 -0
  149. package/dist/esm/types/chartType/pivotTable/zPivotTable.d.ts +12 -0
  150. package/dist/esm/types/chartType/raceBar/zRaceBar.d.ts +12 -0
  151. package/dist/esm/types/chartType/raceColumn/zRaceColumn.d.ts +12 -0
  152. package/dist/esm/types/chartType/raceDonut/zRaceDonut.d.ts +12 -0
  153. package/dist/esm/types/chartType/raceLine/zRaceLine.d.ts +12 -0
  154. package/dist/esm/types/chartType/racePie/zRacePie.d.ts +12 -0
  155. package/dist/esm/types/chartType/raceScatter/zRaceScatter.d.ts +12 -0
  156. package/dist/esm/types/chartType/radar/zRadar.d.ts +12 -0
  157. package/dist/esm/types/chartType/rose/zRose.d.ts +12 -0
  158. package/dist/esm/types/chartType/roseParallel/zRoseParallel.d.ts +12 -0
  159. package/dist/esm/types/chartType/scatter/zScatter.d.ts +12 -0
  160. package/dist/esm/types/chartType/sunburst/zSunburst.d.ts +12 -0
  161. package/dist/esm/types/chartType/table/zTable.d.ts +12 -0
  162. package/dist/esm/types/chartType/treeMap/zTreeMap.d.ts +12 -0
  163. package/dist/esm/types/properties/cellStyle/bodyCellStyle.d.ts +1 -1
  164. package/dist/esm/types/properties/cellStyle/bodyCellStyle.js.map +1 -1
  165. package/dist/esm/types/properties/dimensions/baseDimension.d.ts +5 -0
  166. package/dist/esm/types/properties/dimensions/zDimensions.d.ts +36 -0
  167. package/dist/esm/types/properties/dimensions/zDimensions.js +3 -1
  168. package/dist/esm/types/properties/dimensions/zDimensions.js.map +1 -1
  169. package/dist/esm/types/properties/format/index.d.ts +1 -0
  170. package/dist/esm/types/properties/format/index.js +1 -0
  171. package/dist/esm/types/properties/format/timeFormat.d.ts +20 -0
  172. package/dist/esm/types/properties/format/timeFormat.js +16 -0
  173. package/dist/esm/types/properties/format/timeFormat.js.map +1 -0
  174. package/dist/umd/index.js +592 -147
  175. package/dist/umd/index.js.map +1 -1
  176. package/package.json +13 -13
@@ -1,4 +1,4 @@
1
- import type { Dataset, Dimension, Encoding, FoldInfo, Measure, UnfoldInfo } from '../types';
1
+ import type { Dataset, Dimension, Encoding, FoldInfo, Measure, UnfoldInfo, Locale } from '../types';
2
2
  export declare const dataReshapeByEncoding: (dataset: Dataset, dimensions: Dimension[], measures: Measure[], encoding: Encoding, options?: {
3
3
  foldMeasureId?: string;
4
4
  foldMeasureName?: string;
@@ -6,6 +6,7 @@ export declare const dataReshapeByEncoding: (dataset: Dataset, dimensions: Dimen
6
6
  colorItemAsId?: boolean;
7
7
  colorMeasureId?: string;
8
8
  omitIds: string[];
9
+ locale?: Locale;
9
10
  }) => {
10
11
  dataset: Dataset;
11
12
  foldInfo: FoldInfo;
@@ -1,8 +1,9 @@
1
1
  import { foldMeasures } from "./foldMeasures.js";
2
2
  import { FoldMeasureId, FoldMeasureName, FoldMeasureValue, Separator } from "./constant.js";
3
3
  import { unfoldDimensions } from "./unfoldDimensions.js";
4
+ import { createFormatterByDimension } from "../pipeline/utils/index.js";
4
5
  const dataReshapeByEncoding = (dataset, dimensions, measures, encoding, options)=>{
5
- const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, colorItemAsId = false, colorMeasureId, omitIds } = options || {};
6
+ const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, colorItemAsId = false, colorMeasureId, locale, omitIds } = options || {};
6
7
  const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, {
7
8
  measureId: foldMeasureId,
8
9
  measureName: foldMeasureName,
@@ -13,7 +14,11 @@ const dataReshapeByEncoding = (dataset, dimensions, measures, encoding, options)
13
14
  const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dimensions, encoding, {
14
15
  foldMeasureId,
15
16
  separator: Separator,
16
- colorItemAsId
17
+ colorItemAsId,
18
+ formatDimensionValue: (dimension, value)=>{
19
+ const formatter = createFormatterByDimension(dimension, locale);
20
+ return formatter(value);
21
+ }
17
22
  });
18
23
  return {
19
24
  dataset: finalDataset,
@@ -1 +1 @@
1
- {"version":3,"file":"dataReshape/dataReshapeByEncoding.js","sources":["webpack://@visactor/vseed/./src/dataReshape/dataReshapeByEncoding.ts"],"sourcesContent":["import type { Dataset, Dimension, Encoding, FoldInfo, Measure, Measures, UnfoldInfo } from 'src/types'\nimport { foldMeasures } from './foldMeasures'\nimport { FoldMeasureId, FoldMeasureName, FoldMeasureValue, Separator } from './constant'\nimport { unfoldDimensions } from './unfoldDimensions'\n\nexport const dataReshapeByEncoding = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n encoding: Encoding,\n options?: {\n foldMeasureId?: string\n foldMeasureName?: string\n foldMeasureValue?: string\n colorItemAsId?: boolean\n colorMeasureId?: string\n omitIds: string[]\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} => {\n const {\n foldMeasureId = FoldMeasureId,\n foldMeasureName = FoldMeasureName,\n foldMeasureValue = FoldMeasureValue,\n colorItemAsId = false,\n colorMeasureId,\n omitIds,\n } = options || {}\n\n // 合并所有指标为1个指标\n const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures as Measures, {\n measureId: foldMeasureId,\n measureName: foldMeasureName,\n measureValue: foldMeasureValue,\n colorMeasureId,\n omitIds,\n })\n\n // 展开指定的维度为指标\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dimensions, encoding, {\n foldMeasureId,\n separator: Separator,\n colorItemAsId,\n })\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n}\n"],"names":["dataReshapeByEncoding","dataset","dimensions","measures","encoding","options","foldMeasureId","FoldMeasureId","foldMeasureName","FoldMeasureName","foldMeasureValue","FoldMeasureValue","colorItemAsId","colorMeasureId","omitIds","foldedDataset","foldInfo","foldMeasures","finalDataset","unfoldInfo","unfoldDimensions","Separator"],"mappings":";;;AAKO,MAAMA,wBAAwB,CACnCC,SACAC,YACAC,UACAC,UACAC;IAaA,MAAM,EACJC,gBAAgBC,aAAa,EAC7BC,kBAAkBC,eAAe,EACjCC,mBAAmBC,gBAAgB,EACnCC,gBAAgB,KAAK,EACrBC,cAAc,EACdC,OAAO,EACR,GAAGT,WAAW,CAAC;IAGhB,MAAM,EAAE,SAASU,aAAa,EAAEC,QAAQ,EAAE,GAAGC,aAAahB,SAASE,UAAsB;QACvF,WAAWG;QACX,aAAaE;QACb,cAAcE;QACdG;QACAC;IACF;IAGA,MAAM,EAAE,SAASI,YAAY,EAAEC,UAAU,EAAE,GAAGC,iBAAiBL,eAAeb,YAAYE,UAAU;QAClGE;QACA,WAAWe;QACXT;IACF;IACA,OAAO;QAAE,SAASM;QAAcF;QAAUG;IAAW;AACvD"}
1
+ {"version":3,"file":"dataReshape/dataReshapeByEncoding.js","sources":["webpack://@visactor/vseed/./src/dataReshape/dataReshapeByEncoding.ts"],"sourcesContent":["import type { Dataset, Dimension, Encoding, FoldInfo, Measure, Measures, UnfoldInfo, Locale } from 'src/types'\nimport { foldMeasures } from './foldMeasures'\nimport { FoldMeasureId, FoldMeasureName, FoldMeasureValue, Separator } from './constant'\nimport { unfoldDimensions } from './unfoldDimensions'\nimport { createFormatterByDimension } from 'src/pipeline/utils'\n\nexport const dataReshapeByEncoding = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n encoding: Encoding,\n options?: {\n foldMeasureId?: string\n foldMeasureName?: string\n foldMeasureValue?: string\n colorItemAsId?: boolean\n colorMeasureId?: string\n omitIds: string[]\n locale?: Locale\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} => {\n const {\n foldMeasureId = FoldMeasureId,\n foldMeasureName = FoldMeasureName,\n foldMeasureValue = FoldMeasureValue,\n colorItemAsId = false,\n colorMeasureId,\n locale,\n omitIds,\n } = options || {}\n\n // 合并所有指标为1个指标\n const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures as Measures, {\n measureId: foldMeasureId,\n measureName: foldMeasureName,\n measureValue: foldMeasureValue,\n colorMeasureId,\n omitIds,\n })\n\n // 展开指定的维度为指标\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dimensions, encoding, {\n foldMeasureId,\n separator: Separator,\n colorItemAsId,\n formatDimensionValue: (dimension, value) => {\n const formatter = createFormatterByDimension(dimension, locale)\n return formatter(value as string | number)\n },\n })\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n}\n"],"names":["dataReshapeByEncoding","dataset","dimensions","measures","encoding","options","foldMeasureId","FoldMeasureId","foldMeasureName","FoldMeasureName","foldMeasureValue","FoldMeasureValue","colorItemAsId","colorMeasureId","locale","omitIds","foldedDataset","foldInfo","foldMeasures","finalDataset","unfoldInfo","unfoldDimensions","Separator","dimension","value","formatter","createFormatterByDimension"],"mappings":";;;;AAMO,MAAMA,wBAAwB,CACnCC,SACAC,YACAC,UACAC,UACAC;IAcA,MAAM,EACJC,gBAAgBC,aAAa,EAC7BC,kBAAkBC,eAAe,EACjCC,mBAAmBC,gBAAgB,EACnCC,gBAAgB,KAAK,EACrBC,cAAc,EACdC,MAAM,EACNC,OAAO,EACR,GAAGV,WAAW,CAAC;IAGhB,MAAM,EAAE,SAASW,aAAa,EAAEC,QAAQ,EAAE,GAAGC,aAAajB,SAASE,UAAsB;QACvF,WAAWG;QACX,aAAaE;QACb,cAAcE;QACdG;QACAE;IACF;IAGA,MAAM,EAAE,SAASI,YAAY,EAAEC,UAAU,EAAE,GAAGC,iBAAiBL,eAAed,YAAYE,UAAU;QAClGE;QACA,WAAWgB;QACXV;QACA,sBAAsB,CAACW,WAAWC;YAChC,MAAMC,YAAYC,2BAA2BH,WAAWT;YACxD,OAAOW,UAAUD;QACnB;IACF;IACA,OAAO;QAAE,SAASL;QAAcF;QAAUG;IAAW;AACvD"}
@@ -11,6 +11,7 @@ export declare const unfoldDimensions: (dataset: Dataset, dimensions: Dimension[
11
11
  foldMeasureId: string;
12
12
  separator: string;
13
13
  colorItemAsId: boolean;
14
+ formatDimensionValue?: (dimension: Dimension, value: unknown) => string;
14
15
  }) => {
15
16
  dataset: Dataset;
16
17
  unfoldInfo: UnfoldInfo;
@@ -1,6 +1,6 @@
1
1
  import { AngleEncoding, ColorEncoding, ColorIdEncoding, DetailEncoding, HierarchyEncoding, MeasureId, MeasureName, PlayerEncoding, XEncoding, YEncoding } from "./constant.js";
2
2
  const unfoldDimensions = (dataset, dimensions, encoding, options)=>{
3
- const { separator } = options;
3
+ const { separator, formatDimensionValue } = options;
4
4
  const unfoldInfo = {
5
5
  encodingAngle: AngleEncoding,
6
6
  encodingX: XEncoding,
@@ -37,7 +37,7 @@ const unfoldDimensions = (dataset, dimensions, encoding, options)=>{
37
37
  datum[ColorIdEncoding] = colorId;
38
38
  colorIdMap[colorId] = {
39
39
  id: colorId,
40
- alias: getColorAliasItem(ColorEncoding, colorDimensions, datum, separator)
40
+ alias: getColorAliasItem(ColorEncoding, colorDimensions, datum, separator, formatDimensionValue)
41
41
  };
42
42
  colorItems.add(colorId);
43
43
  }
@@ -51,10 +51,11 @@ const unfoldDimensions = (dataset, dimensions, encoding, options)=>{
51
51
  const applyEncoding = (encoding, dimensions, datum, separator)=>{
52
52
  if (encoding && dimensions.length) datum[encoding] = dimensions.map((dim)=>String(datum[dim.id])).join(separator);
53
53
  };
54
- const getColorAliasItem = (encoding, dimensions, datum, separator)=>{
54
+ const getColorAliasItem = (encoding, dimensions, datum, separator, formatDimensionValue)=>{
55
55
  if (encoding && dimensions.length) return dimensions.map((dim)=>{
56
56
  if (dim.id === MeasureId) return String(datum[MeasureName]);
57
- return String(datum[dim.id]);
57
+ const rawValue = datum[dim.id];
58
+ return formatDimensionValue ? formatDimensionValue(dim, rawValue) : String(rawValue);
58
59
  }).join(separator);
59
60
  return '';
60
61
  };
@@ -1 +1 @@
1
- {"version":3,"file":"dataReshape/unfoldDimensions.js","sources":["webpack://@visactor/vseed/./src/dataReshape/unfoldDimensions.ts"],"sourcesContent":["import type { Dataset, Datum, Dimension, Encoding, UnfoldInfo } from 'src/types'\nimport {\n AngleEncoding,\n XEncoding,\n YEncoding,\n ColorEncoding,\n DetailEncoding,\n ColorIdEncoding,\n MeasureId,\n MeasureName,\n PlayerEncoding,\n HierarchyEncoding,\n} from './constant'\n\n/**\n * @description 展开并合并视觉通道的维度, 在foldMeasures后合并维度, 所以不需要进行笛卡尔积\n * @param dataset 原始数据集\n * @param dimensions 维度\n * @param encoding 编码\n * @param options\n * @returns\n */\nexport const unfoldDimensions = (\n dataset: Dataset,\n dimensions: Dimension[],\n encoding: Encoding,\n options: {\n foldMeasureId: string\n separator: string\n colorItemAsId: boolean\n },\n): {\n dataset: Dataset\n unfoldInfo: UnfoldInfo\n} => {\n const { separator } = options\n\n const unfoldInfo: UnfoldInfo = {\n encodingAngle: AngleEncoding,\n encodingX: XEncoding,\n encodingY: YEncoding,\n encodingDetail: DetailEncoding,\n encodingColor: ColorEncoding,\n encodingColorId: ColorIdEncoding,\n encodingPlayer: PlayerEncoding,\n encodingHierarchy: HierarchyEncoding,\n\n colorItems: [],\n colorIdMap: {},\n }\n\n // 每个通道对应的维度\n const { color, x, y, detail, angle, player, hierarchy } = encoding\n const angleDimensions = angle ? dimensions.filter((dim) => angle.includes(dim.id)) : []\n const xDimensions = x ? dimensions.filter((dim) => x.includes(dim.id)) : []\n const yDimensions = y ? dimensions.filter((dim) => y.includes(dim.id)) : []\n const colorDimensions = color ? dimensions.filter((dim) => color.includes(dim.id)) : []\n const detailDimensions = detail ? dimensions.filter((dim) => detail.includes(dim.id)) : []\n const playerDimensions = player ? dimensions.filter((dim) => player.includes(dim.id)) : []\n const hierarchyDimensions = hierarchy ? dimensions.filter((dim) => hierarchy.includes(dim.id)) : []\n\n // 离散图例项\n const colorItems = new Set<string>()\n const colorIdMap: Record<string, { id: string; alias: string }> = {}\n\n // 遍历数据集, 按通道合并维度\n for (let i = 0; i < dataset.length; i++) {\n // 应用编码至Datum上\n const datum = dataset[i]\n\n /**\n * !important 这是全仓库, 最最最重要的五行代码, 贯穿VSeed整个生命周期, 是化繁为简的绝对核心\n * 1. 点睛之笔: 呼应foldMeasures, 此时此刻的datum一定是单点数据, 维度合并不可能造成任何冲突.\n * 2. 数据即通道\n * 3. 利用需要合并的维度, 直接进行join, 即可生成新的维度, 与指标彻底解耦;\n * 4. 以下通道均在一次遍历中完成, 不存在性能问题\n * 5. 以下通道均可放入多个维度\n */\n applyEncoding(AngleEncoding, angleDimensions, datum, separator)\n applyEncoding(XEncoding, xDimensions, datum, separator)\n applyEncoding(YEncoding, yDimensions, datum, separator)\n applyEncoding(ColorEncoding, colorDimensions, datum, separator)\n applyEncoding(DetailEncoding, detailDimensions, datum, separator)\n applyEncoding(PlayerEncoding, playerDimensions, datum, separator)\n applyEncoding(HierarchyEncoding, hierarchyDimensions, datum, separator)\n\n // 处理离散的颜色图例\n if (!colorDimensions.length || !datum[ColorEncoding]) {\n // 无颜色通道, 则跳过\n continue\n }\n const colorId = String(datum[ColorEncoding] ?? '')\n\n datum[ColorIdEncoding] = colorId\n\n colorIdMap[colorId] = {\n id: colorId,\n alias: getColorAliasItem(ColorEncoding, colorDimensions, datum, separator),\n }\n colorItems.add(colorId)\n }\n\n unfoldInfo.colorItems = Array.from(colorItems)\n unfoldInfo.colorIdMap = colorIdMap\n\n return {\n dataset,\n unfoldInfo,\n }\n}\n\n/**\n * @description 应用编码至数据中, 此方法会原地修改数据\n * @param encoding 编码\n * @param dimensions 维度\n * @param datum 数据\n * @param separator 分隔符\n * @returns undefined\n */\nconst applyEncoding = (encoding: string, dimensions: Dimension[], datum: Datum, separator: string) => {\n if (encoding && dimensions.length) {\n datum[encoding] = dimensions.map((dim) => String(datum[dim.id])).join(separator)\n }\n}\n\nconst getColorAliasItem = (encoding: string, dimensions: Dimension[], datum: Datum, separator: string) => {\n if (encoding && dimensions.length) {\n return dimensions\n .map((dim) => {\n if (dim.id === MeasureId) {\n return String(datum[MeasureName])\n }\n\n return String(datum[dim.id])\n })\n .join(separator)\n }\n return ''\n}\n"],"names":["unfoldDimensions","dataset","dimensions","encoding","options","separator","unfoldInfo","AngleEncoding","XEncoding","YEncoding","DetailEncoding","ColorEncoding","ColorIdEncoding","PlayerEncoding","HierarchyEncoding","color","x","y","detail","angle","player","hierarchy","angleDimensions","dim","xDimensions","yDimensions","colorDimensions","detailDimensions","playerDimensions","hierarchyDimensions","colorItems","Set","colorIdMap","i","datum","applyEncoding","colorId","String","getColorAliasItem","Array","MeasureId","MeasureName"],"mappings":"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"}
1
+ {"version":3,"file":"dataReshape/unfoldDimensions.js","sources":["webpack://@visactor/vseed/./src/dataReshape/unfoldDimensions.ts"],"sourcesContent":["import type { Dataset, Datum, Dimension, Encoding, UnfoldInfo } from 'src/types'\nimport {\n AngleEncoding,\n XEncoding,\n YEncoding,\n ColorEncoding,\n DetailEncoding,\n ColorIdEncoding,\n MeasureId,\n MeasureName,\n PlayerEncoding,\n HierarchyEncoding,\n} from './constant'\n\n/**\n * @description 展开并合并视觉通道的维度, 在foldMeasures后合并维度, 所以不需要进行笛卡尔积\n * @param dataset 原始数据集\n * @param dimensions 维度\n * @param encoding 编码\n * @param options\n * @returns\n */\nexport const unfoldDimensions = (\n dataset: Dataset,\n dimensions: Dimension[],\n encoding: Encoding,\n options: {\n foldMeasureId: string\n separator: string\n colorItemAsId: boolean\n formatDimensionValue?: (dimension: Dimension, value: unknown) => string\n },\n): {\n dataset: Dataset\n unfoldInfo: UnfoldInfo\n} => {\n const { separator, formatDimensionValue } = options\n\n const unfoldInfo: UnfoldInfo = {\n encodingAngle: AngleEncoding,\n encodingX: XEncoding,\n encodingY: YEncoding,\n encodingDetail: DetailEncoding,\n encodingColor: ColorEncoding,\n encodingColorId: ColorIdEncoding,\n encodingPlayer: PlayerEncoding,\n encodingHierarchy: HierarchyEncoding,\n\n colorItems: [],\n colorIdMap: {},\n }\n\n // 每个通道对应的维度\n const { color, x, y, detail, angle, player, hierarchy } = encoding\n const angleDimensions = angle ? dimensions.filter((dim) => angle.includes(dim.id)) : []\n const xDimensions = x ? dimensions.filter((dim) => x.includes(dim.id)) : []\n const yDimensions = y ? dimensions.filter((dim) => y.includes(dim.id)) : []\n const colorDimensions = color ? dimensions.filter((dim) => color.includes(dim.id)) : []\n const detailDimensions = detail ? dimensions.filter((dim) => detail.includes(dim.id)) : []\n const playerDimensions = player ? dimensions.filter((dim) => player.includes(dim.id)) : []\n const hierarchyDimensions = hierarchy ? dimensions.filter((dim) => hierarchy.includes(dim.id)) : []\n\n // 离散图例项\n const colorItems = new Set<string>()\n const colorIdMap: Record<string, { id: string; alias: string }> = {}\n\n // 遍历数据集, 按通道合并维度\n for (let i = 0; i < dataset.length; i++) {\n // 应用编码至Datum上\n const datum = dataset[i]\n\n /**\n * !important 这是全仓库, 最最最重要的五行代码, 贯穿VSeed整个生命周期, 是化繁为简的绝对核心\n * 1. 点睛之笔: 呼应foldMeasures, 此时此刻的datum一定是单点数据, 维度合并不可能造成任何冲突.\n * 2. 数据即通道\n * 3. 利用需要合并的维度, 直接进行join, 即可生成新的维度, 与指标彻底解耦;\n * 4. 以下通道均在一次遍历中完成, 不存在性能问题\n * 5. 以下通道均可放入多个维度\n */\n applyEncoding(AngleEncoding, angleDimensions, datum, separator)\n applyEncoding(XEncoding, xDimensions, datum, separator)\n applyEncoding(YEncoding, yDimensions, datum, separator)\n applyEncoding(ColorEncoding, colorDimensions, datum, separator)\n applyEncoding(DetailEncoding, detailDimensions, datum, separator)\n applyEncoding(PlayerEncoding, playerDimensions, datum, separator)\n applyEncoding(HierarchyEncoding, hierarchyDimensions, datum, separator)\n\n // 处理离散的颜色图例\n if (!colorDimensions.length || !datum[ColorEncoding]) {\n // 无颜色通道, 则跳过\n continue\n }\n const colorId = String(datum[ColorEncoding] ?? '')\n\n datum[ColorIdEncoding] = colorId\n\n colorIdMap[colorId] = {\n id: colorId,\n alias: getColorAliasItem(ColorEncoding, colorDimensions, datum, separator, formatDimensionValue),\n }\n colorItems.add(colorId)\n }\n\n unfoldInfo.colorItems = Array.from(colorItems)\n unfoldInfo.colorIdMap = colorIdMap\n\n return {\n dataset,\n unfoldInfo,\n }\n}\n\n/**\n * @description 应用编码至数据中, 此方法会原地修改数据\n * @param encoding 编码\n * @param dimensions 维度\n * @param datum 数据\n * @param separator 分隔符\n * @returns undefined\n */\nconst applyEncoding = (encoding: string, dimensions: Dimension[], datum: Datum, separator: string) => {\n if (encoding && dimensions.length) {\n datum[encoding] = dimensions.map((dim) => String(datum[dim.id])).join(separator)\n }\n}\n\nconst getColorAliasItem = (\n encoding: string,\n dimensions: Dimension[],\n datum: Datum,\n separator: string,\n formatDimensionValue?: (dimension: Dimension, value: unknown) => string,\n) => {\n if (encoding && dimensions.length) {\n return dimensions\n .map((dim) => {\n if (dim.id === MeasureId) {\n return String(datum[MeasureName])\n }\n\n const rawValue = datum[dim.id]\n return formatDimensionValue ? formatDimensionValue(dim, rawValue) : String(rawValue)\n })\n .join(separator)\n }\n return ''\n}\n"],"names":["unfoldDimensions","dataset","dimensions","encoding","options","separator","formatDimensionValue","unfoldInfo","AngleEncoding","XEncoding","YEncoding","DetailEncoding","ColorEncoding","ColorIdEncoding","PlayerEncoding","HierarchyEncoding","color","x","y","detail","angle","player","hierarchy","angleDimensions","dim","xDimensions","yDimensions","colorDimensions","detailDimensions","playerDimensions","hierarchyDimensions","colorItems","Set","colorIdMap","i","datum","applyEncoding","colorId","String","getColorAliasItem","Array","MeasureId","MeasureName","rawValue"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { boxplot } from "@visactor/vdataset";
2
2
  import { uniqueBy } from "remeda";
3
3
  import { FoldMeasureId, FoldMeasureName, LowerWhisker, MedianMeasureId, OutliersMeasureId, Q1MeasureValue, Q3MeasureValue, Separator, UpperWhisker, unfoldDimensions } from "../../../../../dataReshape/index.js";
4
- import { DEFAULT_PARENT_ID, revisedBoxPlotFieldKey } from "../../../../utils/index.js";
4
+ import { DEFAULT_PARENT_ID, createFormatterByDimension, revisedBoxPlotFieldKey } from "../../../../utils/index.js";
5
5
  const pivotReshapeWithBoxplotEncoding = (advancedVSeed, context)=>{
6
6
  const result = {
7
7
  ...advancedVSeed
@@ -59,7 +59,11 @@ const pivotReshapeWithBoxplotEncoding = (advancedVSeed, context)=>{
59
59
  const res = unfoldDimensions(boxPlotDataList, uniqDims, encoding, {
60
60
  foldMeasureId: FoldMeasureId,
61
61
  separator: Separator,
62
- colorItemAsId: false
62
+ colorItemAsId: false,
63
+ formatDimensionValue: (dimension, value)=>{
64
+ const formatter = createFormatterByDimension(dimension, advancedVSeed.locale);
65
+ return formatter(value);
66
+ }
63
67
  });
64
68
  res.dataset.forEach((d)=>{
65
69
  newDatasets.push(d);
@@ -69,7 +73,11 @@ const pivotReshapeWithBoxplotEncoding = (advancedVSeed, context)=>{
69
73
  const res = unfoldDimensions(dataset, uniqDims, encoding, {
70
74
  foldMeasureId: FoldMeasureId,
71
75
  separator: Separator,
72
- colorItemAsId: false
76
+ colorItemAsId: false,
77
+ formatDimensionValue: (dimension, value)=>{
78
+ const formatter = createFormatterByDimension(dimension, advancedVSeed.locale);
79
+ return formatter(value);
80
+ }
73
81
  });
74
82
  res.dataset.forEach((datum)=>{
75
83
  datum[UpperWhisker] = datum[encoding.max[0]];
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.ts"],"sourcesContent":["import { boxplot } from '@visactor/vdataset'\nimport { uniqueBy } from 'remeda'\nimport {\n FoldMeasureId,\n FoldMeasureName,\n LowerWhisker,\n MedianMeasureId,\n OutliersMeasureId,\n Q1MeasureValue,\n Q3MeasureValue,\n Separator,\n unfoldDimensions,\n UpperWhisker,\n} from 'src/dataReshape'\nimport { DEFAULT_PARENT_ID, revisedBoxPlotFieldKey } from 'src/pipeline/utils'\nimport type {\n AdvancedPipe,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Datum,\n Dimension,\n Encoding,\n Measure,\n} from 'src/types'\n\nexport const pivotReshapeWithBoxplotEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { encoding = {}, config } = advancedVSeed\n const reshapeMeasures = advancedVSeed.reshapeMeasures ?? []\n const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? []\n const uniqDims = uniqueBy(dimensions, (item: Dimension) => item.id)\n const chartConfig = config?.[chartType as 'boxPlot']\n const whiskers = chartConfig?.whiskers\n\n const rowColumnFields = uniqueBy(\n dimensions.filter((dim: Dimension) => dim.encoding === 'row' || dim.encoding === 'column'),\n (item: Dimension) => item.id,\n )\n const datasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n reshapeMeasures.forEach((measureGroup: Measure[], index: number) => {\n const groupId = measureGroup[0].parentId ?? DEFAULT_PARENT_ID\n let newDatasets: any[] = []\n let foldInfo: any = {}\n let unfoldInfo: any = {}\n const validEncodingIds = (encoding.value || []).filter((id: string) =>\n measureGroup.find((field) => field.id === id),\n )\n\n if (validEncodingIds.length) {\n const boxPlotDataList: Dataset = []\n validEncodingIds.forEach((f: string) => {\n const m = measureGroup.find((m) => m.id === f)\n const boxPlotData = boxplot(dataset, {\n field: f,\n groupField: [\n ...(encoding.x ?? []),\n ...(encoding.color ?? []),\n ...rowColumnFields.map((item: Dimension) => item.id),\n ] as string[],\n whiskers,\n outputNames: {\n q1: Q1MeasureValue,\n q3: Q3MeasureValue,\n lowerWhisker: LowerWhisker,\n upperWhisker: UpperWhisker,\n median: MedianMeasureId,\n outliers: OutliersMeasureId,\n },\n }) as Dataset\n\n boxPlotData.forEach((datum: Datum) => {\n datum[FoldMeasureId] = f\n datum[FoldMeasureName] = m?.alias ?? f\n datum[revisedBoxPlotFieldKey(Q1MeasureValue, groupId)] = datum[Q1MeasureValue]\n datum[revisedBoxPlotFieldKey(Q3MeasureValue, groupId)] = datum[Q3MeasureValue]\n datum[revisedBoxPlotFieldKey(LowerWhisker, groupId)] = datum[LowerWhisker]\n datum[revisedBoxPlotFieldKey(UpperWhisker, groupId)] = datum[UpperWhisker]\n datum[revisedBoxPlotFieldKey(MedianMeasureId, groupId)] = datum[MedianMeasureId]\n datum[revisedBoxPlotFieldKey(OutliersMeasureId, groupId)] = datum[OutliersMeasureId]\n })\n\n boxPlotDataList.push(...boxPlotData)\n })\n const res = unfoldDimensions(boxPlotDataList, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((d: Datum) => {\n newDatasets.push(d)\n })\n unfoldInfo = res.unfoldInfo\n } else if (\n encoding.q1?.length &&\n encoding.q3?.length &&\n encoding.min?.length &&\n encoding.max?.length &&\n encoding.median?.length\n ) {\n const res = unfoldDimensions(dataset, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((datum: Datum) => {\n datum[UpperWhisker] = datum[encoding.max![0]]\n datum[revisedBoxPlotFieldKey(Q1MeasureValue, groupId)] = datum[encoding.max![0]]\n datum[LowerWhisker] = datum[encoding.min![0]]\n datum[revisedBoxPlotFieldKey(LowerWhisker, groupId)] = datum[encoding.min![0]]\n datum[Q1MeasureValue] = datum[encoding.q1![0]]\n datum[revisedBoxPlotFieldKey(Q1MeasureValue, groupId)] = datum[encoding.q1![0]]\n datum[Q3MeasureValue] = datum[encoding.q3![0]]\n datum[revisedBoxPlotFieldKey(Q3MeasureValue, groupId)] = datum[encoding.q3![0]]\n datum[MedianMeasureId] = datum[encoding.median![0]]\n datum[revisedBoxPlotFieldKey(MedianMeasureId, groupId)] = datum[encoding.median![0]]\n })\n\n newDatasets = res.dataset\n foldInfo = {}\n unfoldInfo = res.unfoldInfo\n }\n\n const reshapeInfo = {\n id: `${groupId}`,\n index,\n foldInfo,\n unfoldInfo,\n }\n datasets.push(newDatasets)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n"],"names":["pivotReshapeWithBoxplotEncoding","advancedVSeed","context","result","vseed","dataset","chartType","encoding","config","reshapeMeasures","dimensions","uniqDims","uniqueBy","item","chartConfig","whiskers","rowColumnFields","dim","datasets","datasetReshapeInfo","measureGroup","index","groupId","DEFAULT_PARENT_ID","newDatasets","foldInfo","unfoldInfo","validEncodingIds","id","field","boxPlotDataList","f","m","boxPlotData","boxplot","Q1MeasureValue","Q3MeasureValue","LowerWhisker","UpperWhisker","MedianMeasureId","OutliersMeasureId","datum","FoldMeasureId","FoldMeasureName","revisedBoxPlotFieldKey","res","unfoldDimensions","Separator","d","reshapeInfo"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.ts"],"sourcesContent":["import { boxplot } from '@visactor/vdataset'\nimport { uniqueBy } from 'remeda'\nimport {\n FoldMeasureId,\n FoldMeasureName,\n LowerWhisker,\n MedianMeasureId,\n OutliersMeasureId,\n Q1MeasureValue,\n Q3MeasureValue,\n Separator,\n unfoldDimensions,\n UpperWhisker,\n} from 'src/dataReshape'\nimport { DEFAULT_PARENT_ID, revisedBoxPlotFieldKey, createFormatterByDimension } from 'src/pipeline/utils'\nimport type {\n AdvancedPipe,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Datum,\n Dimension,\n Encoding,\n Measure,\n} from 'src/types'\n\nexport const pivotReshapeWithBoxplotEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { encoding = {}, config } = advancedVSeed\n const reshapeMeasures = advancedVSeed.reshapeMeasures ?? []\n const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? []\n const uniqDims = uniqueBy(dimensions, (item: Dimension) => item.id)\n const chartConfig = config?.[chartType as 'boxPlot']\n const whiskers = chartConfig?.whiskers\n\n const rowColumnFields = uniqueBy(\n dimensions.filter((dim: Dimension) => dim.encoding === 'row' || dim.encoding === 'column'),\n (item: Dimension) => item.id,\n )\n const datasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n reshapeMeasures.forEach((measureGroup: Measure[], index: number) => {\n const groupId = measureGroup[0].parentId ?? DEFAULT_PARENT_ID\n let newDatasets: any[] = []\n let foldInfo: any = {}\n let unfoldInfo: any = {}\n const validEncodingIds = (encoding.value || []).filter((id: string) =>\n measureGroup.find((field) => field.id === id),\n )\n\n if (validEncodingIds.length) {\n const boxPlotDataList: Dataset = []\n validEncodingIds.forEach((f: string) => {\n const m = measureGroup.find((m) => m.id === f)\n const boxPlotData = boxplot(dataset, {\n field: f,\n groupField: [\n ...(encoding.x ?? []),\n ...(encoding.color ?? []),\n ...rowColumnFields.map((item: Dimension) => item.id),\n ] as string[],\n whiskers,\n outputNames: {\n q1: Q1MeasureValue,\n q3: Q3MeasureValue,\n lowerWhisker: LowerWhisker,\n upperWhisker: UpperWhisker,\n median: MedianMeasureId,\n outliers: OutliersMeasureId,\n },\n }) as Dataset\n\n boxPlotData.forEach((datum: Datum) => {\n datum[FoldMeasureId] = f\n datum[FoldMeasureName] = m?.alias ?? f\n datum[revisedBoxPlotFieldKey(Q1MeasureValue, groupId)] = datum[Q1MeasureValue]\n datum[revisedBoxPlotFieldKey(Q3MeasureValue, groupId)] = datum[Q3MeasureValue]\n datum[revisedBoxPlotFieldKey(LowerWhisker, groupId)] = datum[LowerWhisker]\n datum[revisedBoxPlotFieldKey(UpperWhisker, groupId)] = datum[UpperWhisker]\n datum[revisedBoxPlotFieldKey(MedianMeasureId, groupId)] = datum[MedianMeasureId]\n datum[revisedBoxPlotFieldKey(OutliersMeasureId, groupId)] = datum[OutliersMeasureId]\n })\n\n boxPlotDataList.push(...boxPlotData)\n })\n const res = unfoldDimensions(boxPlotDataList, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n formatDimensionValue: (dimension, value) => {\n const formatter = createFormatterByDimension(dimension, advancedVSeed.locale)\n return formatter(value as string | number)\n },\n })\n\n res.dataset.forEach((d: Datum) => {\n newDatasets.push(d)\n })\n unfoldInfo = res.unfoldInfo\n } else if (\n encoding.q1?.length &&\n encoding.q3?.length &&\n encoding.min?.length &&\n encoding.max?.length &&\n encoding.median?.length\n ) {\n const res = unfoldDimensions(dataset, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n formatDimensionValue: (dimension, value) => {\n const formatter = createFormatterByDimension(dimension, advancedVSeed.locale)\n return formatter(value as string | number)\n },\n })\n\n res.dataset.forEach((datum: Datum) => {\n datum[UpperWhisker] = datum[encoding.max![0]]\n datum[revisedBoxPlotFieldKey(Q1MeasureValue, groupId)] = datum[encoding.max![0]]\n datum[LowerWhisker] = datum[encoding.min![0]]\n datum[revisedBoxPlotFieldKey(LowerWhisker, groupId)] = datum[encoding.min![0]]\n datum[Q1MeasureValue] = datum[encoding.q1![0]]\n datum[revisedBoxPlotFieldKey(Q1MeasureValue, groupId)] = datum[encoding.q1![0]]\n datum[Q3MeasureValue] = datum[encoding.q3![0]]\n datum[revisedBoxPlotFieldKey(Q3MeasureValue, groupId)] = datum[encoding.q3![0]]\n datum[MedianMeasureId] = datum[encoding.median![0]]\n datum[revisedBoxPlotFieldKey(MedianMeasureId, groupId)] = datum[encoding.median![0]]\n })\n\n newDatasets = res.dataset\n foldInfo = {}\n unfoldInfo = res.unfoldInfo\n }\n\n const reshapeInfo = {\n id: `${groupId}`,\n index,\n foldInfo,\n unfoldInfo,\n }\n datasets.push(newDatasets)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n"],"names":["pivotReshapeWithBoxplotEncoding","advancedVSeed","context","result","vseed","dataset","chartType","encoding","config","reshapeMeasures","dimensions","uniqDims","uniqueBy","item","chartConfig","whiskers","rowColumnFields","dim","datasets","datasetReshapeInfo","measureGroup","index","groupId","DEFAULT_PARENT_ID","newDatasets","foldInfo","unfoldInfo","validEncodingIds","id","field","boxPlotDataList","f","m","boxPlotData","boxplot","Q1MeasureValue","Q3MeasureValue","LowerWhisker","UpperWhisker","MedianMeasureId","OutliersMeasureId","datum","FoldMeasureId","FoldMeasureName","revisedBoxPlotFieldKey","res","unfoldDimensions","Separator","dimension","value","formatter","createFormatterByDimension","d","reshapeInfo"],"mappings":"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"}
@@ -29,7 +29,8 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
29
29
  colorItemAsId: false,
30
30
  foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,
31
31
  colorMeasureId: getColorMeasureId(advancedVSeed, vseed),
32
- omitIds: allMeasuresIds
32
+ omitIds: allMeasuresIds,
33
+ locale: advancedVSeed.locale
33
34
  });
34
35
  primaryResult.dataset.forEach((row)=>{
35
36
  row[DimAxisType] = 'primaryYAxis';
@@ -43,7 +44,8 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
43
44
  colorItemAsId: false,
44
45
  foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`,
45
46
  colorMeasureId: getColorMeasureId(advancedVSeed, vseed),
46
- omitIds: allMeasuresIds
47
+ omitIds: allMeasuresIds,
48
+ locale: advancedVSeed.locale
47
49
  });
48
50
  secondaryResult.dataset.forEach((row)=>{
49
51
  row[DimAxisType] = 'secondaryYAxis';
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.ts"],"sourcesContent":["import { uniqueBy, unique } from 'remeda'\nimport { dataReshapeByEncoding, DimAxisType, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue } from 'src/dataReshape'\nimport { DEFAULT_DUAL_CHART_TYPE } from 'src/index'\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 DualAxisMeasure,\n Encoding,\n FoldInfo,\n Measure,\n Measures,\n UnfoldInfo,\n} from 'src/types'\n\nexport const pivotReshapeWithDualEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { encoding, chartType } = advancedVSeed\n const reshapeMeasures = advancedVSeed.reshapeMeasures ?? []\n const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? []\n const allMeasuresIds = reshapeMeasures.flatMap((measureGroup: Measures) => measureGroup.map((m) => m.id))\n\n const datasetList: Dataset[] = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n reshapeMeasures.forEach((measures: Measures, index: number) => {\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const primaryMeasures = measures.filter((m) => m.encoding === 'primaryYAxis')\n const secondaryMeasures = measures.filter((m) => m.encoding === 'secondaryYAxis')\n const primaryChartTypes: string[] = unique(primaryMeasures.map((m) => (m as DualAxisMeasure).chartType!))\n const secondaryChartTypes: string[] = unique(secondaryMeasures.map((m) => (m as DualAxisMeasure).chartType!))\n\n if (!primaryChartTypes.length) {\n primaryChartTypes.push(DEFAULT_DUAL_CHART_TYPE.primary)\n }\n\n if (!secondaryChartTypes.length) {\n secondaryChartTypes.push(DEFAULT_DUAL_CHART_TYPE.secondary)\n }\n\n primaryChartTypes.forEach((chartType) => {\n const primaryResult = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item: Dimension) => item.id),\n uniqueBy(\n primaryMeasures.filter((m) => (m as DualAxisMeasure).chartType! === chartType),\n (item: Measure) => item.id,\n ),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n omitIds: allMeasuresIds,\n },\n )\n\n primaryResult.dataset.forEach((row: Datum) => {\n row[DimAxisType] = 'primaryYAxis'\n })\n\n datasets.push(primaryResult.dataset)\n foldInfoList.push(primaryResult.foldInfo)\n unfoldInfoList.push(primaryResult.unfoldInfo)\n })\n\n secondaryChartTypes.forEach((chartType) => {\n const secondaryResult = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item: Dimension) => item.id),\n uniqueBy(\n secondaryMeasures.filter((m) => (m as DualAxisMeasure).chartType! === chartType),\n (item: Measure) => item.id,\n ),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n omitIds: allMeasuresIds,\n },\n )\n\n secondaryResult.dataset.forEach((row: Datum) => {\n row[DimAxisType] = 'secondaryYAxis'\n })\n\n datasets.push(secondaryResult.dataset)\n foldInfoList.push(secondaryResult.foldInfo)\n unfoldInfoList.push(secondaryResult.unfoldInfo)\n })\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n const reshapeInfo = {\n id: `${chartType}-${index}`,\n index,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n }\n\n datasetReshapeInfo.push(reshapeInfo)\n datasetList.push(datasets.flat(2))\n })\n\n return {\n ...result,\n dataset: datasetList,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n"],"names":["pivotReshapeWithDualEncoding","advancedVSeed","context","result","vseed","dataset","encoding","chartType","reshapeMeasures","dimensions","allMeasuresIds","measureGroup","m","datasetList","datasetReshapeInfo","measures","index","foldInfoList","unfoldInfoList","datasets","primaryMeasures","secondaryMeasures","primaryChartTypes","unique","secondaryChartTypes","DEFAULT_DUAL_CHART_TYPE","primaryResult","dataReshapeByEncoding","uniqueBy","item","FoldPrimaryMeasureValue","getColorMeasureId","row","DimAxisType","secondaryResult","FoldSecondaryMeasureValue","unfoldInfo","d","prev","cur","reshapeInfo"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.ts"],"sourcesContent":["import { uniqueBy, unique } from 'remeda'\nimport { dataReshapeByEncoding, DimAxisType, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue } from 'src/dataReshape'\nimport { DEFAULT_DUAL_CHART_TYPE } from 'src/index'\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 DualAxisMeasure,\n Encoding,\n FoldInfo,\n Measure,\n Measures,\n UnfoldInfo,\n} from 'src/types'\n\nexport const pivotReshapeWithDualEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { encoding, chartType } = advancedVSeed\n const reshapeMeasures = advancedVSeed.reshapeMeasures ?? []\n const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? []\n const allMeasuresIds = reshapeMeasures.flatMap((measureGroup: Measures) => measureGroup.map((m) => m.id))\n\n const datasetList: Dataset[] = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n reshapeMeasures.forEach((measures: Measures, index: number) => {\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const primaryMeasures = measures.filter((m) => m.encoding === 'primaryYAxis')\n const secondaryMeasures = measures.filter((m) => m.encoding === 'secondaryYAxis')\n const primaryChartTypes: string[] = unique(primaryMeasures.map((m) => (m as DualAxisMeasure).chartType!))\n const secondaryChartTypes: string[] = unique(secondaryMeasures.map((m) => (m as DualAxisMeasure).chartType!))\n\n if (!primaryChartTypes.length) {\n primaryChartTypes.push(DEFAULT_DUAL_CHART_TYPE.primary)\n }\n\n if (!secondaryChartTypes.length) {\n secondaryChartTypes.push(DEFAULT_DUAL_CHART_TYPE.secondary)\n }\n\n primaryChartTypes.forEach((chartType) => {\n const primaryResult = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item: Dimension) => item.id),\n uniqueBy(\n primaryMeasures.filter((m) => (m as DualAxisMeasure).chartType! === chartType),\n (item: Measure) => item.id,\n ),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n omitIds: allMeasuresIds,\n locale: advancedVSeed.locale,\n },\n )\n\n primaryResult.dataset.forEach((row: Datum) => {\n row[DimAxisType] = 'primaryYAxis'\n })\n\n datasets.push(primaryResult.dataset)\n foldInfoList.push(primaryResult.foldInfo)\n unfoldInfoList.push(primaryResult.unfoldInfo)\n })\n\n secondaryChartTypes.forEach((chartType) => {\n const secondaryResult = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item: Dimension) => item.id),\n uniqueBy(\n secondaryMeasures.filter((m) => (m as DualAxisMeasure).chartType! === chartType),\n (item: Measure) => item.id,\n ),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n omitIds: allMeasuresIds,\n locale: advancedVSeed.locale,\n },\n )\n\n secondaryResult.dataset.forEach((row: Datum) => {\n row[DimAxisType] = 'secondaryYAxis'\n })\n\n datasets.push(secondaryResult.dataset)\n foldInfoList.push(secondaryResult.foldInfo)\n unfoldInfoList.push(secondaryResult.unfoldInfo)\n })\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n const reshapeInfo = {\n id: `${chartType}-${index}`,\n index,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n }\n\n datasetReshapeInfo.push(reshapeInfo)\n datasetList.push(datasets.flat(2))\n })\n\n return {\n ...result,\n dataset: datasetList,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n"],"names":["pivotReshapeWithDualEncoding","advancedVSeed","context","result","vseed","dataset","encoding","chartType","reshapeMeasures","dimensions","allMeasuresIds","measureGroup","m","datasetList","datasetReshapeInfo","measures","index","foldInfoList","unfoldInfoList","datasets","primaryMeasures","secondaryMeasures","primaryChartTypes","unique","secondaryChartTypes","DEFAULT_DUAL_CHART_TYPE","primaryResult","dataReshapeByEncoding","uniqueBy","item","FoldPrimaryMeasureValue","getColorMeasureId","row","DimAxisType","secondaryResult","FoldSecondaryMeasureValue","unfoldInfo","d","prev","cur","reshapeInfo"],"mappings":"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"}
@@ -21,7 +21,8 @@ const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
21
21
  colorItemAsId: false,
22
22
  foldMeasureValue: `${FoldMeasureValue}${groupId}`,
23
23
  colorMeasureId: getColorMeasureId(advancedVSeed, vseed),
24
- omitIds: allMeasuresIds
24
+ omitIds: allMeasuresIds,
25
+ locale: advancedVSeed.locale
25
26
  });
26
27
  const reshapeInfo = {
27
28
  id: `${groupId}`,
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.ts"],"sourcesContent":["import { uniqueBy } from 'remeda'\nimport { dataReshapeByEncoding, FoldMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Dimension,\n Encoding,\n Measure,\n} from 'src/types'\n\nexport const pivotReshapeWithEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { encoding } = advancedVSeed\n const reshapeMeasures = advancedVSeed.reshapeMeasures ?? []\n const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? []\n\n const allMeasuresIds = reshapeMeasures.flatMap((measureGroup: Measure[]) => measureGroup.map((m) => m.id))\n\n const datasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n reshapeMeasures.forEach((measures: Measure[], index: number) => {\n if (!measures) {\n return\n }\n const groupId = measures[0].parentId ?? DEFAULT_PARENT_ID\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item: Dimension) => item.id),\n uniqueBy(measures, (item: Measure) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldMeasureValue}${groupId}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n omitIds: allMeasuresIds,\n },\n )\n\n const reshapeInfo = {\n id: `${groupId}`,\n index,\n foldInfo,\n unfoldInfo,\n }\n datasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n"],"names":["pivotReshapeWithEncoding","advancedVSeed","context","result","vseed","dataset","encoding","reshapeMeasures","dimensions","allMeasuresIds","measureGroup","m","datasets","datasetReshapeInfo","measures","index","groupId","DEFAULT_PARENT_ID","newSubDataset","foldInfo","unfoldInfo","dataReshapeByEncoding","uniqueBy","item","FoldMeasureValue","getColorMeasureId","reshapeInfo"],"mappings":";;;;AAeO,MAAMA,2BAAyC,CAACC,eAAeC;IACpE,MAAMC,SAAS;QAAE,GAAGF,aAAa;IAAC;IAClC,MAAM,EAAEG,KAAK,EAAE,GAAGF;IAClB,MAAM,EAAEG,OAAO,EAAE,GAAGD;IACpB,MAAM,EAAEE,QAAQ,EAAE,GAAGL;IACrB,MAAMM,kBAAkBN,cAAc,eAAe,IAAI,EAAE;IAC3D,MAAMO,aAAaP,cAAc,iBAAiB,IAAIA,cAAc,UAAU,IAAI,EAAE;IAEpF,MAAMQ,iBAAiBF,gBAAgB,OAAO,CAAC,CAACG,eAA4BA,aAAa,GAAG,CAAC,CAACC,IAAMA,EAAE,EAAE;IAExG,MAAMC,WAAoB,EAAE;IAC5B,MAAMC,qBAAyC,EAAE;IAEjDN,gBAAgB,OAAO,CAAC,CAACO,UAAqBC;QAC5C,IAAI,CAACD,UACH;QAEF,MAAME,UAAUF,QAAQ,CAAC,EAAE,CAAC,QAAQ,IAAIG;QACxC,MAAM,EACJ,SAASC,aAAa,EACtBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBACFhB,SACAiB,SAASd,YAAY,CAACe,OAAoBA,KAAK,EAAE,GACjDD,SAASR,UAAU,CAACS,OAAkBA,KAAK,EAAE,GAC7CjB,UACA;YACE,eAAe;YACf,kBAAkB,GAAGkB,mBAAmBR,SAAS;YACjD,gBAAgBS,kBAAkBxB,eAAgCG;YAClE,SAASK;QACX;QAGF,MAAMiB,cAAc;YAClB,IAAI,GAAGV,SAAS;YAChBD;YACAI;YACAC;QACF;QACAR,SAAS,IAAI,CAACM;QACdL,mBAAmB,IAAI,CAACa;IAC1B;IAEA,OAAO;QACL,GAAGvB,MAAM;QACT,SAASS;QACT,oBAAoBC;IACtB;AACF"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.ts"],"sourcesContent":["import { uniqueBy } from 'remeda'\nimport { dataReshapeByEncoding, FoldMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Dimension,\n Encoding,\n Measure,\n} from 'src/types'\n\nexport const pivotReshapeWithEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { encoding } = advancedVSeed\n const reshapeMeasures = advancedVSeed.reshapeMeasures ?? []\n const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? []\n\n const allMeasuresIds = reshapeMeasures.flatMap((measureGroup: Measure[]) => measureGroup.map((m) => m.id))\n\n const datasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n reshapeMeasures.forEach((measures: Measure[], index: number) => {\n if (!measures) {\n return\n }\n const groupId = measures[0].parentId ?? DEFAULT_PARENT_ID\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item: Dimension) => item.id),\n uniqueBy(measures, (item: Measure) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldMeasureValue}${groupId}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n omitIds: allMeasuresIds,\n locale: advancedVSeed.locale,\n },\n )\n\n const reshapeInfo = {\n id: `${groupId}`,\n index,\n foldInfo,\n unfoldInfo,\n }\n datasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n"],"names":["pivotReshapeWithEncoding","advancedVSeed","context","result","vseed","dataset","encoding","reshapeMeasures","dimensions","allMeasuresIds","measureGroup","m","datasets","datasetReshapeInfo","measures","index","groupId","DEFAULT_PARENT_ID","newSubDataset","foldInfo","unfoldInfo","dataReshapeByEncoding","uniqueBy","item","FoldMeasureValue","getColorMeasureId","reshapeInfo"],"mappings":";;;;AAeO,MAAMA,2BAAyC,CAACC,eAAeC;IACpE,MAAMC,SAAS;QAAE,GAAGF,aAAa;IAAC;IAClC,MAAM,EAAEG,KAAK,EAAE,GAAGF;IAClB,MAAM,EAAEG,OAAO,EAAE,GAAGD;IACpB,MAAM,EAAEE,QAAQ,EAAE,GAAGL;IACrB,MAAMM,kBAAkBN,cAAc,eAAe,IAAI,EAAE;IAC3D,MAAMO,aAAaP,cAAc,iBAAiB,IAAIA,cAAc,UAAU,IAAI,EAAE;IAEpF,MAAMQ,iBAAiBF,gBAAgB,OAAO,CAAC,CAACG,eAA4BA,aAAa,GAAG,CAAC,CAACC,IAAMA,EAAE,EAAE;IAExG,MAAMC,WAAoB,EAAE;IAC5B,MAAMC,qBAAyC,EAAE;IAEjDN,gBAAgB,OAAO,CAAC,CAACO,UAAqBC;QAC5C,IAAI,CAACD,UACH;QAEF,MAAME,UAAUF,QAAQ,CAAC,EAAE,CAAC,QAAQ,IAAIG;QACxC,MAAM,EACJ,SAASC,aAAa,EACtBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBACFhB,SACAiB,SAASd,YAAY,CAACe,OAAoBA,KAAK,EAAE,GACjDD,SAASR,UAAU,CAACS,OAAkBA,KAAK,EAAE,GAC7CjB,UACA;YACE,eAAe;YACf,kBAAkB,GAAGkB,mBAAmBR,SAAS;YACjD,gBAAgBS,kBAAkBxB,eAAgCG;YAClE,SAASK;YACT,QAAQR,cAAc,MAAM;QAC9B;QAGF,MAAMyB,cAAc;YAClB,IAAI,GAAGV,SAAS;YAChBD;YACAI;YACAC;QACF;QACAR,SAAS,IAAI,CAACM;QACdL,mBAAmB,IAAI,CAACa;IAC1B;IAEA,OAAO;QACL,GAAGvB,MAAM;QACT,SAASS;QACT,oBAAoBC;IACtB;AACF"}
@@ -2,7 +2,7 @@ import { bin } from "@visactor/vdataset";
2
2
  import { uniqueBy } from "remeda";
3
3
  import { BinCountMeasureId, BinEndMeasureId, BinPercentageMeasureId, BinStartMeasureId, FoldMeasureId, FoldMeasureName, FoldMeasureValue, Separator, dataReshapeByEncoding, unfoldDimensions } from "../../../../../dataReshape/index.js";
4
4
  import { getColorMeasureId } from "../../../../spec/chart/pipes/index.js";
5
- import { DEFAULT_PARENT_ID } from "../../../../utils/index.js";
5
+ import { DEFAULT_PARENT_ID, createFormatterByDimension } from "../../../../utils/index.js";
6
6
  const pivotReshapeWithHistogramEncoding = (advancedVSeed, context)=>{
7
7
  const result = {
8
8
  ...advancedVSeed
@@ -74,7 +74,11 @@ const pivotReshapeWithHistogramEncoding = (advancedVSeed, context)=>{
74
74
  const res = unfoldDimensions(binData, uniqDims, encoding, {
75
75
  foldMeasureId: FoldMeasureId,
76
76
  separator: Separator,
77
- colorItemAsId: false
77
+ colorItemAsId: false,
78
+ formatDimensionValue: (dimension, value)=>{
79
+ const formatter = createFormatterByDimension(dimension, advancedVSeed.locale);
80
+ return formatter(value);
81
+ }
78
82
  });
79
83
  res.dataset.forEach((d)=>{
80
84
  newDatasets.push(d);
@@ -84,7 +88,8 @@ const pivotReshapeWithHistogramEncoding = (advancedVSeed, context)=>{
84
88
  const res = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (item)=>item.id), subMeasures.filter((item)=>encoding.y?.includes(item.id)).slice(0, 1), encoding, {
85
89
  colorItemAsId: false,
86
90
  colorMeasureId,
87
- omitIds: []
91
+ omitIds: [],
92
+ locale: advancedVSeed.locale
88
93
  });
89
94
  res.dataset.forEach((datum)=>{
90
95
  datum[BinStartMeasureId] = datum[encoding.x0[0]];
@@ -1 +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 { DEFAULT_PARENT_ID } from 'src/pipeline/utils'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Datum,\n Dimension,\n Encoding,\n FoldInfo,\n Measure,\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 { encoding = {}, config } = advancedVSeed\n const reshapeMeasures = advancedVSeed.reshapeMeasures ?? []\n const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? []\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 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 reshapeMeasures.forEach((subMeasures: Measure[], index: number) => {\n if (!subMeasures) {\n return\n }\n const groupId = subMeasures[0].id ?? DEFAULT_PARENT_ID\n\n let newDatasets: any[] = []\n let foldInfo: FoldInfo = {\n foldMap: {},\n measureId: FoldMeasureId,\n measureName: FoldMeasureName,\n measureValue: FoldMeasureValue,\n statistics: {\n max: -Infinity,\n min: Infinity,\n sum: 0,\n count: 0,\n colorMin: Infinity,\n colorMax: -Infinity,\n },\n }\n let unfoldInfo: any = {}\n\n if (encoding.value?.length) {\n const valueField = encoding.value[0]\n const m = subMeasures.find((m: Measure) => m.id === valueField)\n const binData = bin(dataset, {\n field: valueField,\n groupField: [...(encoding.x ?? []), ...(encoding.color ?? [])] as string[],\n facetField: rowColumnFields.map((item: Dimension) => item.id),\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 const valueNumber = binValueType === 'percentage' ? +datum[BinPercentageMeasureId] : +datum[BinCountMeasureId]\n datum[FoldMeasureValue] = valueNumber\n datum[valueField] = valueNumber\n\n foldInfo.statistics.min = Math.min(foldInfo.statistics.min, valueNumber)\n foldInfo.statistics.max = Math.max(foldInfo.statistics.max, valueNumber)\n foldInfo.statistics.sum += valueNumber\n foldInfo.statistics.count++\n })\n if (m?.id) {\n foldInfo.foldMap[m?.id] = m?.alias\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: Datum) => {\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: Measure) => encoding.y?.includes(item.id)).slice(0, 1),\n encoding as Encoding,\n {\n colorItemAsId: false,\n colorMeasureId,\n omitIds: [],\n },\n )\n\n res.dataset.forEach((datum: 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","encoding","config","reshapeMeasures","dimensions","colorMeasureId","getColorMeasureId","uniqDims","uniqueBy","item","chartConfig","binCount","binStep","binValueType","rowColumnFields","dim","datasets","datasetReshapeInfo","subMeasures","index","groupId","DEFAULT_PARENT_ID","newDatasets","foldInfo","FoldMeasureId","FoldMeasureName","FoldMeasureValue","Infinity","unfoldInfo","valueField","m","binData","bin","BinStartMeasureId","BinEndMeasureId","BinCountMeasureId","BinPercentageMeasureId","datum","valueNumber","Math","res","unfoldDimensions","Separator","d","dataReshapeByEncoding","reshapeInfo"],"mappings":"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"}
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 { DEFAULT_PARENT_ID, createFormatterByDimension } from 'src/pipeline/utils'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Datum,\n Dimension,\n Encoding,\n FoldInfo,\n Measure,\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 { encoding = {}, config } = advancedVSeed\n const reshapeMeasures = advancedVSeed.reshapeMeasures ?? []\n const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? []\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 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 reshapeMeasures.forEach((subMeasures: Measure[], index: number) => {\n if (!subMeasures) {\n return\n }\n const groupId = subMeasures[0].id ?? DEFAULT_PARENT_ID\n\n let newDatasets: any[] = []\n let foldInfo: FoldInfo = {\n foldMap: {},\n measureId: FoldMeasureId,\n measureName: FoldMeasureName,\n measureValue: FoldMeasureValue,\n statistics: {\n max: -Infinity,\n min: Infinity,\n sum: 0,\n count: 0,\n colorMin: Infinity,\n colorMax: -Infinity,\n },\n }\n let unfoldInfo: any = {}\n\n if (encoding.value?.length) {\n const valueField = encoding.value[0]\n const m = subMeasures.find((m: Measure) => m.id === valueField)\n const binData = bin(dataset, {\n field: valueField,\n groupField: [...(encoding.x ?? []), ...(encoding.color ?? [])] as string[],\n facetField: rowColumnFields.map((item: Dimension) => item.id),\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 const valueNumber = binValueType === 'percentage' ? +datum[BinPercentageMeasureId] : +datum[BinCountMeasureId]\n datum[FoldMeasureValue] = valueNumber\n datum[valueField] = valueNumber\n\n foldInfo.statistics.min = Math.min(foldInfo.statistics.min, valueNumber)\n foldInfo.statistics.max = Math.max(foldInfo.statistics.max, valueNumber)\n foldInfo.statistics.sum += valueNumber\n foldInfo.statistics.count++\n })\n if (m?.id) {\n foldInfo.foldMap[m?.id] = m?.alias\n }\n\n const res = unfoldDimensions(binData, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n formatDimensionValue: (dimension, value) => {\n const formatter = createFormatterByDimension(dimension, advancedVSeed.locale)\n return formatter(value as string | number)\n },\n })\n\n res.dataset.forEach((d: Datum) => {\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: Measure) => encoding.y?.includes(item.id)).slice(0, 1),\n encoding as Encoding,\n {\n colorItemAsId: false,\n colorMeasureId,\n omitIds: [],\n locale: advancedVSeed.locale,\n },\n )\n\n res.dataset.forEach((datum: 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","encoding","config","reshapeMeasures","dimensions","colorMeasureId","getColorMeasureId","uniqDims","uniqueBy","item","chartConfig","binCount","binStep","binValueType","rowColumnFields","dim","datasets","datasetReshapeInfo","subMeasures","index","groupId","DEFAULT_PARENT_ID","newDatasets","foldInfo","FoldMeasureId","FoldMeasureName","FoldMeasureValue","Infinity","unfoldInfo","valueField","m","binData","bin","BinStartMeasureId","BinEndMeasureId","BinCountMeasureId","BinPercentageMeasureId","datum","valueNumber","Math","res","unfoldDimensions","Separator","dimension","value","formatter","createFormatterByDimension","d","dataReshapeByEncoding","reshapeInfo"],"mappings":"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"}
@@ -25,7 +25,8 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
25
25
  foldMeasureId: FoldXMeasureId,
26
26
  colorItemAsId: true,
27
27
  colorMeasureId: getColorMeasureId(advancedVSeed, vseed),
28
- omitIds: allMeasuresIds
28
+ omitIds: allMeasuresIds,
29
+ locale: advancedVSeed.locale
29
30
  });
30
31
  datasets.push(xResult.dataset);
31
32
  foldInfoList.push(xResult.foldInfo);
@@ -35,7 +36,8 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
35
36
  foldMeasureId: FoldYMeasureId,
36
37
  colorItemAsId: true,
37
38
  colorMeasureId: getColorMeasureId(advancedVSeed, vseed),
38
- omitIds: allMeasuresIds
39
+ omitIds: allMeasuresIds,
40
+ locale: advancedVSeed.locale
39
41
  });
40
42
  datasets.push(yResult.dataset);
41
43
  foldInfoList.push(yResult.foldInfo);
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.ts"],"sourcesContent":["import { unique } from 'remeda'\nimport {\n dataReshapeByEncoding,\n FoldXMeasureId,\n FoldXMeasureValue,\n FoldYMeasureId,\n FoldYMeasureValue,\n ORIGINAL_DATA,\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 Encoding,\n FoldInfo,\n Measure,\n UnfoldInfo,\n} from 'src/types'\n\nexport const pivotReshapeWithScatterEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { encoding, chartType } = advancedVSeed\n const reshapeMeasures = advancedVSeed.reshapeMeasures ?? []\n const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? []\n let allMeasuresIds = unique(reshapeMeasures.flatMap((measureGroup: Measure[]) => measureGroup.map((m) => m.id)))\n\n if (encoding?.size?.length) {\n allMeasuresIds = allMeasuresIds.filter((mId: string) => !encoding.size!.includes(mId))\n }\n\n const datasetList: Dataset[] = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n reshapeMeasures.forEach((measures: Measure[], index: number) => {\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const xMeasures = measures.filter((m) => m.encoding === 'xAxis')\n const yMeasures = measures.filter((m) => m.encoding === 'yAxis')\n\n const xResult = dataReshapeByEncoding(dataset, dimensions, xMeasures, encoding as Encoding, {\n foldMeasureValue: `${FoldXMeasureValue}${index}`,\n foldMeasureId: FoldXMeasureId,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n omitIds: allMeasuresIds,\n })\n\n datasets.push(xResult.dataset)\n foldInfoList.push(xResult.foldInfo)\n unfoldInfoList.push(xResult.unfoldInfo)\n\n const yResult = dataReshapeByEncoding(dataset, dimensions, yMeasures, encoding as Encoding, {\n foldMeasureValue: `${FoldYMeasureValue}${index}`,\n foldMeasureId: FoldYMeasureId,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n omitIds: allMeasuresIds,\n })\n\n datasets.push(yResult.dataset)\n foldInfoList.push(yResult.foldInfo)\n unfoldInfoList.push(yResult.unfoldInfo)\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n const reshapeInfo = {\n id: `${chartType}-${index}`,\n index,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n }\n\n datasetReshapeInfo.push(reshapeInfo)\n datasetList.push(\n datasets[0].flatMap((d: Datum) => {\n return datasets[1]\n .filter((yDatum: Datum) => {\n return yDatum[ORIGINAL_DATA] === d[ORIGINAL_DATA]\n })\n .map((yDatum: Datum) => {\n return {\n ...d,\n ...yDatum,\n }\n })\n }),\n )\n })\n\n return {\n ...result,\n dataset: datasetList,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n"],"names":["pivotReshapeWithScatterEncoding","advancedVSeed","context","result","vseed","dataset","encoding","chartType","reshapeMeasures","dimensions","allMeasuresIds","unique","measureGroup","m","mId","datasetList","datasetReshapeInfo","measures","index","foldInfoList","unfoldInfoList","datasets","xMeasures","yMeasures","xResult","dataReshapeByEncoding","FoldXMeasureValue","FoldXMeasureId","getColorMeasureId","yResult","FoldYMeasureValue","FoldYMeasureId","unfoldInfo","d","prev","cur","reshapeInfo","yDatum","ORIGINAL_DATA"],"mappings":";;;AAuBO,MAAMA,kCAAgD,CAACC,eAAeC;IAC3E,MAAMC,SAAS;QAAE,GAAGF,aAAa;IAAC;IAClC,MAAM,EAAEG,KAAK,EAAE,GAAGF;IAClB,MAAM,EAAEG,OAAO,EAAE,GAAGD;IACpB,MAAM,EAAEE,QAAQ,EAAEC,SAAS,EAAE,GAAGN;IAChC,MAAMO,kBAAkBP,cAAc,eAAe,IAAI,EAAE;IAC3D,MAAMQ,aAAaR,cAAc,iBAAiB,IAAIA,cAAc,UAAU,IAAI,EAAE;IACpF,IAAIS,iBAAiBC,OAAOH,gBAAgB,OAAO,CAAC,CAACI,eAA4BA,aAAa,GAAG,CAAC,CAACC,IAAMA,EAAE,EAAE;IAE7G,IAAIP,UAAU,MAAM,QAClBI,iBAAiBA,eAAe,MAAM,CAAC,CAACI,MAAgB,CAACR,SAAS,IAAI,CAAE,QAAQ,CAACQ;IAGnF,MAAMC,cAAyB,EAAE;IACjC,MAAMC,qBAAyC,EAAE;IAEjDR,gBAAgB,OAAO,CAAC,CAACS,UAAqBC;QAC5C,MAAMC,eAA2B,EAAE;QACnC,MAAMC,iBAA+B,EAAE;QAEvC,MAAMC,WAAsB,EAAE;QAC9B,MAAMC,YAAYL,SAAS,MAAM,CAAC,CAACJ,IAAMA,AAAe,YAAfA,EAAE,QAAQ;QACnD,MAAMU,YAAYN,SAAS,MAAM,CAAC,CAACJ,IAAMA,AAAe,YAAfA,EAAE,QAAQ;QAEnD,MAAMW,UAAUC,sBAAsBpB,SAASI,YAAYa,WAAWhB,UAAsB;YAC1F,kBAAkB,GAAGoB,oBAAoBR,OAAO;YAChD,eAAeS;YACf,eAAe;YACf,gBAAgBC,kBAAkB3B,eAAgCG;YAClE,SAASM;QACX;QAEAW,SAAS,IAAI,CAACG,QAAQ,OAAO;QAC7BL,aAAa,IAAI,CAACK,QAAQ,QAAQ;QAClCJ,eAAe,IAAI,CAACI,QAAQ,UAAU;QAEtC,MAAMK,UAAUJ,sBAAsBpB,SAASI,YAAYc,WAAWjB,UAAsB;YAC1F,kBAAkB,GAAGwB,oBAAoBZ,OAAO;YAChD,eAAea;YACf,eAAe;YACf,gBAAgBH,kBAAkB3B,eAAgCG;YAClE,SAASM;QACX;QAEAW,SAAS,IAAI,CAACQ,QAAQ,OAAO;QAC7BV,aAAa,IAAI,CAACU,QAAQ,QAAQ;QAClCT,eAAe,IAAI,CAACS,QAAQ,UAAU;QAEtC,MAAMG,aAAyB;YAC7B,GAAGZ,cAAc,CAAC,EAAE;YACpB,YAAYA,eAAe,OAAO,CAAC,CAACa,IAAMA,EAAE,UAAU;YACtD,YAAYb,eAAe,MAAM,CAAC,CAACc,MAAMC,MAAS;oBAAE,GAAGD,IAAI;oBAAE,GAAGC,IAAI,UAAU;gBAAC,IAAI,CAAC;QACtF;QAEA,MAAMC,cAAc;YAClB,IAAI,GAAG7B,UAAU,CAAC,EAAEW,OAAO;YAC3BA;YACA,UAAUC,YAAY,CAAC,EAAE;YACzB,cAAcA;YACd,YAAYa;QACd;QAEAhB,mBAAmB,IAAI,CAACoB;QACxBrB,YAAY,IAAI,CACdM,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAACY,IACZZ,QAAQ,CAAC,EAAE,CACf,MAAM,CAAC,CAACgB,SACAA,MAAM,CAACC,cAAc,KAAKL,CAAC,CAACK,cAAc,EAElD,GAAG,CAAC,CAACD,SACG;oBACL,GAAGJ,CAAC;oBACJ,GAAGI,MAAM;gBACX;IAIV;IAEA,OAAO;QACL,GAAGlC,MAAM;QACT,SAASY;QACT,oBAAoBC;IACtB;AACF"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.ts"],"sourcesContent":["import { unique } from 'remeda'\nimport {\n dataReshapeByEncoding,\n FoldXMeasureId,\n FoldXMeasureValue,\n FoldYMeasureId,\n FoldYMeasureValue,\n ORIGINAL_DATA,\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 Encoding,\n FoldInfo,\n Measure,\n UnfoldInfo,\n} from 'src/types'\n\nexport const pivotReshapeWithScatterEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { encoding, chartType } = advancedVSeed\n const reshapeMeasures = advancedVSeed.reshapeMeasures ?? []\n const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? []\n let allMeasuresIds = unique(reshapeMeasures.flatMap((measureGroup: Measure[]) => measureGroup.map((m) => m.id)))\n\n if (encoding?.size?.length) {\n allMeasuresIds = allMeasuresIds.filter((mId: string) => !encoding.size!.includes(mId))\n }\n\n const datasetList: Dataset[] = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n reshapeMeasures.forEach((measures: Measure[], index: number) => {\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const xMeasures = measures.filter((m) => m.encoding === 'xAxis')\n const yMeasures = measures.filter((m) => m.encoding === 'yAxis')\n\n const xResult = dataReshapeByEncoding(dataset, dimensions, xMeasures, encoding as Encoding, {\n foldMeasureValue: `${FoldXMeasureValue}${index}`,\n foldMeasureId: FoldXMeasureId,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n omitIds: allMeasuresIds,\n locale: advancedVSeed.locale,\n })\n\n datasets.push(xResult.dataset)\n foldInfoList.push(xResult.foldInfo)\n unfoldInfoList.push(xResult.unfoldInfo)\n\n const yResult = dataReshapeByEncoding(dataset, dimensions, yMeasures, encoding as Encoding, {\n foldMeasureValue: `${FoldYMeasureValue}${index}`,\n foldMeasureId: FoldYMeasureId,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n omitIds: allMeasuresIds,\n locale: advancedVSeed.locale,\n })\n\n datasets.push(yResult.dataset)\n foldInfoList.push(yResult.foldInfo)\n unfoldInfoList.push(yResult.unfoldInfo)\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n const reshapeInfo = {\n id: `${chartType}-${index}`,\n index,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n }\n\n datasetReshapeInfo.push(reshapeInfo)\n datasetList.push(\n datasets[0].flatMap((d: Datum) => {\n return datasets[1]\n .filter((yDatum: Datum) => {\n return yDatum[ORIGINAL_DATA] === d[ORIGINAL_DATA]\n })\n .map((yDatum: Datum) => {\n return {\n ...d,\n ...yDatum,\n }\n })\n }),\n )\n })\n\n return {\n ...result,\n dataset: datasetList,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n"],"names":["pivotReshapeWithScatterEncoding","advancedVSeed","context","result","vseed","dataset","encoding","chartType","reshapeMeasures","dimensions","allMeasuresIds","unique","measureGroup","m","mId","datasetList","datasetReshapeInfo","measures","index","foldInfoList","unfoldInfoList","datasets","xMeasures","yMeasures","xResult","dataReshapeByEncoding","FoldXMeasureValue","FoldXMeasureId","getColorMeasureId","yResult","FoldYMeasureValue","FoldYMeasureId","unfoldInfo","d","prev","cur","reshapeInfo","yDatum","ORIGINAL_DATA"],"mappings":";;;AAuBO,MAAMA,kCAAgD,CAACC,eAAeC;IAC3E,MAAMC,SAAS;QAAE,GAAGF,aAAa;IAAC;IAClC,MAAM,EAAEG,KAAK,EAAE,GAAGF;IAClB,MAAM,EAAEG,OAAO,EAAE,GAAGD;IACpB,MAAM,EAAEE,QAAQ,EAAEC,SAAS,EAAE,GAAGN;IAChC,MAAMO,kBAAkBP,cAAc,eAAe,IAAI,EAAE;IAC3D,MAAMQ,aAAaR,cAAc,iBAAiB,IAAIA,cAAc,UAAU,IAAI,EAAE;IACpF,IAAIS,iBAAiBC,OAAOH,gBAAgB,OAAO,CAAC,CAACI,eAA4BA,aAAa,GAAG,CAAC,CAACC,IAAMA,EAAE,EAAE;IAE7G,IAAIP,UAAU,MAAM,QAClBI,iBAAiBA,eAAe,MAAM,CAAC,CAACI,MAAgB,CAACR,SAAS,IAAI,CAAE,QAAQ,CAACQ;IAGnF,MAAMC,cAAyB,EAAE;IACjC,MAAMC,qBAAyC,EAAE;IAEjDR,gBAAgB,OAAO,CAAC,CAACS,UAAqBC;QAC5C,MAAMC,eAA2B,EAAE;QACnC,MAAMC,iBAA+B,EAAE;QAEvC,MAAMC,WAAsB,EAAE;QAC9B,MAAMC,YAAYL,SAAS,MAAM,CAAC,CAACJ,IAAMA,AAAe,YAAfA,EAAE,QAAQ;QACnD,MAAMU,YAAYN,SAAS,MAAM,CAAC,CAACJ,IAAMA,AAAe,YAAfA,EAAE,QAAQ;QAEnD,MAAMW,UAAUC,sBAAsBpB,SAASI,YAAYa,WAAWhB,UAAsB;YAC1F,kBAAkB,GAAGoB,oBAAoBR,OAAO;YAChD,eAAeS;YACf,eAAe;YACf,gBAAgBC,kBAAkB3B,eAAgCG;YAClE,SAASM;YACT,QAAQT,cAAc,MAAM;QAC9B;QAEAoB,SAAS,IAAI,CAACG,QAAQ,OAAO;QAC7BL,aAAa,IAAI,CAACK,QAAQ,QAAQ;QAClCJ,eAAe,IAAI,CAACI,QAAQ,UAAU;QAEtC,MAAMK,UAAUJ,sBAAsBpB,SAASI,YAAYc,WAAWjB,UAAsB;YAC1F,kBAAkB,GAAGwB,oBAAoBZ,OAAO;YAChD,eAAea;YACf,eAAe;YACf,gBAAgBH,kBAAkB3B,eAAgCG;YAClE,SAASM;YACT,QAAQT,cAAc,MAAM;QAC9B;QAEAoB,SAAS,IAAI,CAACQ,QAAQ,OAAO;QAC7BV,aAAa,IAAI,CAACU,QAAQ,QAAQ;QAClCT,eAAe,IAAI,CAACS,QAAQ,UAAU;QAEtC,MAAMG,aAAyB;YAC7B,GAAGZ,cAAc,CAAC,EAAE;YACpB,YAAYA,eAAe,OAAO,CAAC,CAACa,IAAMA,EAAE,UAAU;YACtD,YAAYb,eAAe,MAAM,CAAC,CAACc,MAAMC,MAAS;oBAAE,GAAGD,IAAI;oBAAE,GAAGC,IAAI,UAAU;gBAAC,IAAI,CAAC;QACtF;QAEA,MAAMC,cAAc;YAClB,IAAI,GAAG7B,UAAU,CAAC,EAAEW,OAAO;YAC3BA;YACA,UAAUC,YAAY,CAAC,EAAE;YACzB,cAAcA;YACd,YAAYa;QACd;QAEAhB,mBAAmB,IAAI,CAACoB;QACxBrB,YAAY,IAAI,CACdM,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAACY,IACZZ,QAAQ,CAAC,EAAE,CACf,MAAM,CAAC,CAACgB,SACAA,MAAM,CAACC,cAAc,KAAKL,CAAC,CAACK,cAAc,EAElD,GAAG,CAAC,CAACD,SACG;oBACL,GAAGJ,CAAC;oBACJ,GAAGI,MAAM;gBACX;IAIV;IAEA,OAAO;QACL,GAAGlC,MAAM;QACT,SAASY;QACT,oBAAoBC;IACtB;AACF"}
@@ -1,6 +1,7 @@
1
1
  import { FoldMeasureId, FoldMeasureName, LowerWhisker, MedianMeasureId, OutliersMeasureId, Q1MeasureValue, Q3MeasureValue, Separator, UpperWhisker, unfoldDimensions } from "../../../../../dataReshape/index.js";
2
2
  import { boxplot } from "@visactor/vdataset";
3
3
  import { uniqueBy } from "remeda";
4
+ import { createFormatterByDimension } from "../../../../utils/index.js";
4
5
  const reshapeWithBoxplotEncoding = (advancedVSeed, context)=>{
5
6
  const result = {
6
7
  ...advancedVSeed
@@ -43,7 +44,11 @@ const reshapeWithBoxplotEncoding = (advancedVSeed, context)=>{
43
44
  const res = unfoldDimensions(boxPlotDataList, uniqDims, encoding, {
44
45
  foldMeasureId: FoldMeasureId,
45
46
  separator: Separator,
46
- colorItemAsId: false
47
+ colorItemAsId: false,
48
+ formatDimensionValue: (dimension, value)=>{
49
+ const formatter = createFormatterByDimension(dimension, advancedVSeed.locale);
50
+ return formatter(value);
51
+ }
47
52
  });
48
53
  res.dataset.forEach((d)=>{
49
54
  newDatasets.push(d);
@@ -53,7 +58,11 @@ const reshapeWithBoxplotEncoding = (advancedVSeed, context)=>{
53
58
  const res = unfoldDimensions(dataset, uniqDims, encoding, {
54
59
  foldMeasureId: FoldMeasureId,
55
60
  separator: Separator,
56
- colorItemAsId: false
61
+ colorItemAsId: false,
62
+ formatDimensionValue: (dimension, value)=>{
63
+ const formatter = createFormatterByDimension(dimension, advancedVSeed.locale);
64
+ return formatter(value);
65
+ }
57
66
  });
58
67
  res.dataset.forEach((datum)=>{
59
68
  datum[UpperWhisker] = datum[encoding.max[0]];
@@ -1 +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 LowerWhisker,\n MedianMeasureId,\n OutliersMeasureId,\n Q1MeasureValue,\n Q3MeasureValue,\n Separator,\n unfoldDimensions,\n UpperWhisker,\n} from 'src/dataReshape'\nimport type { AdvancedPipe, ColumnParallel, Dataset, Datum, Dimension, 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 { encoding = {}, config, measures = [] } = advancedVSeed\n const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? []\n const uniqDims = uniqueBy(dimensions, (item: Dimension) => 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 if (encoding.value?.length) {\n const boxPlotDataList: Dataset = []\n encoding.value.forEach((f) => {\n const m = measures.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 lowerWhisker: LowerWhisker,\n upperWhisker: UpperWhisker,\n median: MedianMeasureId,\n outliers: OutliersMeasureId,\n },\n }) as Dataset\n\n boxPlotData.forEach((datum: Datum) => {\n datum[FoldMeasureId] = f\n datum[FoldMeasureName] = m?.alias ?? f\n })\n boxPlotDataList.push(...boxPlotData)\n })\n const res = unfoldDimensions(boxPlotDataList, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((d: Datum) => {\n newDatasets.push(d)\n })\n unfoldInfo = res.unfoldInfo\n } else if (\n encoding.q1?.length &&\n encoding.q3?.length &&\n encoding.min?.length &&\n encoding.max?.length &&\n encoding.median?.length\n ) {\n const res = unfoldDimensions(dataset, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((datum: Datum) => {\n datum[UpperWhisker] = datum[encoding.max![0]]\n datum[LowerWhisker] = 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 }\n}\n"],"names":["reshapeWithBoxplotEncoding","advancedVSeed","context","result","vseed","dataset","chartType","encoding","config","measures","dimensions","uniqDims","uniqueBy","item","whiskers","newDatasets","foldInfo","unfoldInfo","boxPlotDataList","f","m","boxPlotData","boxplot","Q1MeasureValue","Q3MeasureValue","LowerWhisker","UpperWhisker","MedianMeasureId","OutliersMeasureId","datum","FoldMeasureId","FoldMeasureName","res","unfoldDimensions","Separator","d","String"],"mappings":";;;AAgBO,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,WAAW,CAAC,CAAC,EAAEC,MAAM,EAAEC,WAAW,EAAE,EAAE,GAAGR;IACjD,MAAMS,aAAaT,cAAc,iBAAiB,IAAIA,cAAc,UAAU,IAAI,EAAE;IACpF,MAAMU,WAAWC,SAASF,YAAY,CAACG,OAAoBA,KAAK,EAAE;IAElE,MAAMC,WAAWN,QAAQ,CAACF,UAAuB,EAAE;IAEnD,IAAIS,cAAqB,EAAE;IAC3B,IAAIC,WAAgB,CAAC;IACrB,IAAIC,aAAkB,CAAC;IAEvB,IAAIV,SAAS,KAAK,EAAE,QAAQ;QAC1B,MAAMW,kBAA2B,EAAE;QACnCX,SAAS,KAAK,CAAC,OAAO,CAAC,CAACY;YACtB,MAAMC,IAAIX,SAAS,IAAI,CAAC,CAACW,IAAMA,EAAE,EAAE,KAAKD;YACxC,MAAME,cAAcC,QAAQjB,SAAS;gBACnC,OAAOc;gBACP,YAAY;uBAAKZ,SAAS,CAAC,IAAI,EAAE;uBAAOA,SAAS,KAAK,IAAI,EAAE;iBAAE;gBAC9DO;gBACA,aAAa;oBACX,IAAIS;oBACJ,IAAIC;oBACJ,cAAcC;oBACd,cAAcC;oBACd,QAAQC;oBACR,UAAUC;gBACZ;YACF;YAEAP,YAAY,OAAO,CAAC,CAACQ;gBACnBA,KAAK,CAACC,cAAc,GAAGX;gBACvBU,KAAK,CAACE,gBAAgB,GAAGX,GAAG,SAASD;YACvC;YACAD,gBAAgB,IAAI,IAAIG;QAC1B;QACA,MAAMW,MAAMC,iBAAiBf,iBAAiBP,UAAUJ,UAAsB;YAC5E,eAAeuB;YACf,WAAWI;YACX,eAAe;QACjB;QAEAF,IAAI,OAAO,CAAC,OAAO,CAAC,CAACG;YACnBpB,YAAY,IAAI,CAACoB;QACnB;QACAlB,aAAae,IAAI,UAAU;IAC7B,OAAO,IACLzB,SAAS,EAAE,EAAE,UACbA,SAAS,EAAE,EAAE,UACbA,SAAS,GAAG,EAAE,UACdA,SAAS,GAAG,EAAE,UACdA,SAAS,MAAM,EAAE,QACjB;QACA,MAAMyB,MAAMC,iBAAiB5B,SAASM,UAAUJ,UAAsB;YACpE,eAAeuB;YACf,WAAWI;YACX,eAAe;QACjB;QAEAF,IAAI,OAAO,CAAC,OAAO,CAAC,CAACH;YACnBA,KAAK,CAACH,aAAa,GAAGG,KAAK,CAACtB,SAAS,GAAI,CAAC,EAAE,CAAC;YAC7CsB,KAAK,CAACJ,aAAa,GAAGI,KAAK,CAACtB,SAAS,GAAI,CAAC,EAAE,CAAC;YAC7CsB,KAAK,CAACN,eAAe,GAAGM,KAAK,CAACtB,SAAS,EAAG,CAAC,EAAE,CAAC;YAC9CsB,KAAK,CAACL,eAAe,GAAGK,KAAK,CAACtB,SAAS,EAAG,CAAC,EAAE,CAAC;YAC9CsB,KAAK,CAACF,gBAAgB,GAAGE,KAAK,CAACtB,SAAS,MAAO,CAAC,EAAE,CAAC;QACrD;QAEAQ,cAAciB,IAAI,OAAO;QACzBhB,WAAW,CAAC;QACZC,aAAae,IAAI,UAAU;IAC7B;IAEA,OAAO;QACL,GAAG7B,MAAM;QACT,SAASY;QACT,oBAAoB;YAClB;gBACE,IAAIqB,OAAO9B;gBACX,OAAO;gBACPU;gBACAC;YACF;SACD;IACH;AACF"}
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 LowerWhisker,\n MedianMeasureId,\n OutliersMeasureId,\n Q1MeasureValue,\n Q3MeasureValue,\n Separator,\n unfoldDimensions,\n UpperWhisker,\n} from 'src/dataReshape'\nimport type { AdvancedPipe, ColumnParallel, Dataset, Datum, Dimension, Encoding } from 'src/types'\nimport { boxplot } from '@visactor/vdataset'\nimport { uniqueBy } from 'remeda'\nimport { createFormatterByDimension } from 'src/pipeline/utils'\n\nexport const reshapeWithBoxplotEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { encoding = {}, config, measures = [] } = advancedVSeed\n const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? []\n const uniqDims = uniqueBy(dimensions, (item: Dimension) => 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 if (encoding.value?.length) {\n const boxPlotDataList: Dataset = []\n encoding.value.forEach((f) => {\n const m = measures.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 lowerWhisker: LowerWhisker,\n upperWhisker: UpperWhisker,\n median: MedianMeasureId,\n outliers: OutliersMeasureId,\n },\n }) as Dataset\n\n boxPlotData.forEach((datum: Datum) => {\n datum[FoldMeasureId] = f\n datum[FoldMeasureName] = m?.alias ?? f\n })\n boxPlotDataList.push(...boxPlotData)\n })\n const res = unfoldDimensions(boxPlotDataList, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n formatDimensionValue: (dimension, value) => {\n const formatter = createFormatterByDimension(dimension, advancedVSeed.locale)\n return formatter(value as string | number)\n },\n })\n\n res.dataset.forEach((d: Datum) => {\n newDatasets.push(d)\n })\n unfoldInfo = res.unfoldInfo\n } else if (\n encoding.q1?.length &&\n encoding.q3?.length &&\n encoding.min?.length &&\n encoding.max?.length &&\n encoding.median?.length\n ) {\n const res = unfoldDimensions(dataset, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n formatDimensionValue: (dimension, value) => {\n const formatter = createFormatterByDimension(dimension, advancedVSeed.locale)\n return formatter(value as string | number)\n },\n })\n\n res.dataset.forEach((datum: Datum) => {\n datum[UpperWhisker] = datum[encoding.max![0]]\n datum[LowerWhisker] = 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 }\n}\n"],"names":["reshapeWithBoxplotEncoding","advancedVSeed","context","result","vseed","dataset","chartType","encoding","config","measures","dimensions","uniqDims","uniqueBy","item","whiskers","newDatasets","foldInfo","unfoldInfo","boxPlotDataList","f","m","boxPlotData","boxplot","Q1MeasureValue","Q3MeasureValue","LowerWhisker","UpperWhisker","MedianMeasureId","OutliersMeasureId","datum","FoldMeasureId","FoldMeasureName","res","unfoldDimensions","Separator","dimension","value","formatter","createFormatterByDimension","d","String"],"mappings":"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"}
@@ -26,7 +26,8 @@ const reshapeWithDualEncoding = (advancedVSeed, context)=>{
26
26
  colorItemAsId: false,
27
27
  foldMeasureValue: FoldPrimaryMeasureValue,
28
28
  colorMeasureId: getColorMeasureId(advancedVSeed, vseed),
29
- omitIds: allMeasuresIds
29
+ omitIds: allMeasuresIds,
30
+ locale: advancedVSeed.locale
30
31
  });
31
32
  primaryResult.dataset.forEach((row)=>{
32
33
  row[DimAxisType] = 'primaryYAxis';
@@ -40,7 +41,8 @@ const reshapeWithDualEncoding = (advancedVSeed, context)=>{
40
41
  colorItemAsId: false,
41
42
  foldMeasureValue: FoldSecondaryMeasureValue,
42
43
  colorMeasureId: getColorMeasureId(advancedVSeed, vseed),
43
- omitIds: allMeasuresIds
44
+ omitIds: allMeasuresIds,
45
+ locale: advancedVSeed.locale
44
46
  });
45
47
  secondaryResult.dataset.forEach((row)=>{
46
48
  row[DimAxisType] = 'secondaryYAxis';
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.ts"],"sourcesContent":["import { uniqueBy, unique } from 'remeda'\nimport { dataReshapeByEncoding, DimAxisType, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { DEFAULT_DUAL_CHART_TYPE } from 'src/pipeline/utils/chatType'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n Datum,\n Dimension,\n DualAxisMeasure,\n Encoding,\n FoldInfo,\n Measure,\n UnfoldInfo,\n} from 'src/types'\n\nexport const reshapeWithDualEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { encoding, chartType } = advancedVSeed\n const measures = (advancedVSeed.reshapeMeasures?.[0] ?? []) as Measure[]\n const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? []\n const allMeasuresIds = measures.map((m: Measure) => m.id)\n\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const primaryMeasures = measures.filter((m) => m.encoding === 'primaryYAxis')\n const secondaryMeasures = measures.filter((m) => m.encoding === 'secondaryYAxis')\n const primaryChartTypes: string[] = unique(primaryMeasures.map((m) => (m as DualAxisMeasure).chartType!))\n const secondaryChartTypes: string[] = unique(secondaryMeasures.map((m) => (m as DualAxisMeasure).chartType!))\n\n if (!primaryChartTypes.length) {\n primaryChartTypes.push(DEFAULT_DUAL_CHART_TYPE.primary)\n }\n\n if (!secondaryChartTypes.length) {\n secondaryChartTypes.push(DEFAULT_DUAL_CHART_TYPE.secondary)\n }\n\n primaryChartTypes.forEach((chartType) => {\n const primaryResult = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item: Dimension) => item.id),\n uniqueBy(\n primaryMeasures.filter((m) => (m as DualAxisMeasure).chartType! === chartType),\n (item: Measure) => item.id,\n ),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: FoldPrimaryMeasureValue,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n omitIds: allMeasuresIds,\n },\n )\n\n primaryResult.dataset.forEach((row: Datum) => {\n row[DimAxisType] = 'primaryYAxis'\n })\n\n datasets.push(primaryResult.dataset)\n foldInfoList.push(primaryResult.foldInfo)\n unfoldInfoList.push(primaryResult.unfoldInfo)\n })\n\n secondaryChartTypes.forEach((chartType) => {\n const secondaryResult = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item: Dimension) => item.id),\n uniqueBy(\n secondaryMeasures.filter((m) => (m as DualAxisMeasure).chartType! === chartType),\n (item: Measure) => item.id,\n ),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: FoldSecondaryMeasureValue,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n omitIds: allMeasuresIds,\n },\n )\n\n secondaryResult.dataset.forEach((row: Datum) => {\n row[DimAxisType] = 'secondaryYAxis'\n })\n\n datasets.push(secondaryResult.dataset)\n foldInfoList.push(secondaryResult.foldInfo)\n unfoldInfoList.push(secondaryResult.unfoldInfo)\n })\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: [\n {\n id: String(chartType),\n index: 0,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n },\n ],\n }\n}\n"],"names":["reshapeWithDualEncoding","advancedVSeed","context","result","vseed","dataset","encoding","chartType","measures","dimensions","allMeasuresIds","m","foldInfoList","unfoldInfoList","datasets","primaryMeasures","secondaryMeasures","primaryChartTypes","unique","secondaryChartTypes","DEFAULT_DUAL_CHART_TYPE","primaryResult","dataReshapeByEncoding","uniqueBy","item","FoldPrimaryMeasureValue","getColorMeasureId","row","DimAxisType","secondaryResult","FoldSecondaryMeasureValue","unfoldInfo","d","prev","cur","String"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.ts"],"sourcesContent":["import { uniqueBy, unique } from 'remeda'\nimport { dataReshapeByEncoding, DimAxisType, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { DEFAULT_DUAL_CHART_TYPE } from 'src/pipeline/utils/chatType'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n Datum,\n Dimension,\n DualAxisMeasure,\n Encoding,\n FoldInfo,\n Measure,\n UnfoldInfo,\n} from 'src/types'\n\nexport const reshapeWithDualEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { encoding, chartType } = advancedVSeed\n const measures = (advancedVSeed.reshapeMeasures?.[0] ?? []) as Measure[]\n const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? []\n const allMeasuresIds = measures.map((m: Measure) => m.id)\n\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const primaryMeasures = measures.filter((m) => m.encoding === 'primaryYAxis')\n const secondaryMeasures = measures.filter((m) => m.encoding === 'secondaryYAxis')\n const primaryChartTypes: string[] = unique(primaryMeasures.map((m) => (m as DualAxisMeasure).chartType!))\n const secondaryChartTypes: string[] = unique(secondaryMeasures.map((m) => (m as DualAxisMeasure).chartType!))\n\n if (!primaryChartTypes.length) {\n primaryChartTypes.push(DEFAULT_DUAL_CHART_TYPE.primary)\n }\n\n if (!secondaryChartTypes.length) {\n secondaryChartTypes.push(DEFAULT_DUAL_CHART_TYPE.secondary)\n }\n\n primaryChartTypes.forEach((chartType) => {\n const primaryResult = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item: Dimension) => item.id),\n uniqueBy(\n primaryMeasures.filter((m) => (m as DualAxisMeasure).chartType! === chartType),\n (item: Measure) => item.id,\n ),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: FoldPrimaryMeasureValue,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n omitIds: allMeasuresIds,\n locale: advancedVSeed.locale,\n },\n )\n\n primaryResult.dataset.forEach((row: Datum) => {\n row[DimAxisType] = 'primaryYAxis'\n })\n\n datasets.push(primaryResult.dataset)\n foldInfoList.push(primaryResult.foldInfo)\n unfoldInfoList.push(primaryResult.unfoldInfo)\n })\n\n secondaryChartTypes.forEach((chartType) => {\n const secondaryResult = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item: Dimension) => item.id),\n uniqueBy(\n secondaryMeasures.filter((m) => (m as DualAxisMeasure).chartType! === chartType),\n (item: Measure) => item.id,\n ),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: FoldSecondaryMeasureValue,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n omitIds: allMeasuresIds,\n locale: advancedVSeed.locale,\n },\n )\n\n secondaryResult.dataset.forEach((row: Datum) => {\n row[DimAxisType] = 'secondaryYAxis'\n })\n\n datasets.push(secondaryResult.dataset)\n foldInfoList.push(secondaryResult.foldInfo)\n unfoldInfoList.push(secondaryResult.unfoldInfo)\n })\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: [\n {\n id: String(chartType),\n index: 0,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n },\n ],\n }\n}\n"],"names":["reshapeWithDualEncoding","advancedVSeed","context","result","vseed","dataset","encoding","chartType","measures","dimensions","allMeasuresIds","m","foldInfoList","unfoldInfoList","datasets","primaryMeasures","secondaryMeasures","primaryChartTypes","unique","secondaryChartTypes","DEFAULT_DUAL_CHART_TYPE","primaryResult","dataReshapeByEncoding","uniqueBy","item","FoldPrimaryMeasureValue","getColorMeasureId","row","DimAxisType","secondaryResult","FoldSecondaryMeasureValue","unfoldInfo","d","prev","cur","String"],"mappings":"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"}
@@ -13,7 +13,8 @@ const reshapeWithEncoding = (advancedVSeed, context)=>{
13
13
  const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, uniqueBy(advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? [], (item)=>item.id), uniqueBy(advancedVSeed.reshapeMeasures?.[0] ?? [], (item)=>item.id), encoding, {
14
14
  colorItemAsId: false,
15
15
  colorMeasureId,
16
- omitIds: allMeasuresIds
16
+ omitIds: allMeasuresIds,
17
+ locale: advancedVSeed.locale
17
18
  });
18
19
  return {
19
20
  ...result,