@visactor/vseed 0.1.14 → 0.1.16

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 (169) hide show
  1. package/dist/cjs/index.cjs +3 -1
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/esm/builder/builder/buildAdvanced.js +1 -1
  4. package/dist/esm/builder/builder/buildAdvanced.js.map +1 -1
  5. package/dist/esm/builder/builder/buildSpec.js +2 -3
  6. package/dist/esm/builder/builder/buildSpec.js.map +1 -1
  7. package/dist/esm/builder/builder/builder.d.ts +1113 -9
  8. package/dist/esm/dataReshape/foldMeasures.d.ts +1 -0
  9. package/dist/esm/dataReshape/foldMeasures.js +5 -1
  10. package/dist/esm/dataReshape/foldMeasures.js.map +1 -1
  11. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultDimensions.js +4 -3
  12. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultDimensions.js.map +1 -1
  13. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultMeasures.js +12 -9
  14. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultMeasures.js.map +1 -1
  15. package/dist/esm/pipeline/advanced/chart/pipes/init/initAdvancedVSeed.js +2 -0
  16. package/dist/esm/pipeline/advanced/chart/pipes/init/initAdvancedVSeed.js.map +1 -1
  17. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js +4 -6
  18. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js.map +1 -1
  19. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.js +2 -5
  20. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.js.map +1 -1
  21. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.js +2 -4
  22. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.js.map +1 -1
  23. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js +4 -6
  24. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js.map +1 -1
  25. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithEncoding.js +2 -5
  26. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithEncoding.js.map +1 -1
  27. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.js +2 -4
  28. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.js.map +1 -1
  29. package/dist/esm/pipeline/advanced/table/pipes/default/defaultDimensions.js +13 -7
  30. package/dist/esm/pipeline/advanced/table/pipes/default/defaultDimensions.js.map +1 -1
  31. package/dist/esm/pipeline/advanced/table/pipes/default/defaultMeasures.js +13 -9
  32. package/dist/esm/pipeline/advanced/table/pipes/default/defaultMeasures.js.map +1 -1
  33. package/dist/esm/pipeline/advanced/table/pipes/init/initAdvancedVSeed.js +2 -0
  34. package/dist/esm/pipeline/advanced/table/pipes/init/initAdvancedVSeed.js.map +1 -1
  35. package/dist/esm/pipeline/advanced/table/pipes/reshape/reshapePivotTable.js +2 -1
  36. package/dist/esm/pipeline/advanced/table/pipes/reshape/reshapePivotTable.js.map +1 -1
  37. package/dist/esm/pipeline/spec/chart/pipeline/heatmap.js +1 -3
  38. package/dist/esm/pipeline/spec/chart/pipeline/heatmap.js.map +1 -1
  39. package/dist/esm/pipeline/spec/chart/pipeline/scatter.js +3 -3
  40. package/dist/esm/pipeline/spec/chart/pipeline/scatter.js.map +1 -1
  41. package/dist/esm/pipeline/spec/chart/pipes/axes/format/linearFormat.d.ts +2 -0
  42. package/dist/esm/pipeline/spec/chart/pipes/axes/format/linearFormat.js +11 -0
  43. package/dist/esm/pipeline/spec/chart/pipes/axes/format/linearFormat.js.map +1 -0
  44. package/dist/esm/pipeline/spec/chart/pipes/axes/title/defaultTitleText.d.ts +2 -0
  45. package/dist/esm/pipeline/spec/chart/pipes/axes/title/defaultTitleText.js +14 -0
  46. package/dist/esm/pipeline/spec/chart/pipes/axes/title/defaultTitleText.js.map +1 -0
  47. package/dist/esm/pipeline/spec/chart/pipes/axes/xBand.js +3 -1
  48. package/dist/esm/pipeline/spec/chart/pipes/axes/xBand.js.map +1 -1
  49. package/dist/esm/pipeline/spec/chart/pipes/axes/xLinear.js +8 -5
  50. package/dist/esm/pipeline/spec/chart/pipes/axes/xLinear.js.map +1 -1
  51. package/dist/esm/pipeline/spec/chart/pipes/axes/yBand.js +3 -1
  52. package/dist/esm/pipeline/spec/chart/pipes/axes/yBand.js.map +1 -1
  53. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinear.js +8 -5
  54. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinear.js.map +1 -1
  55. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearPrimary.js +8 -5
  56. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearPrimary.js.map +1 -1
  57. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearSecondary.js +8 -5
  58. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearSecondary.js.map +1 -1
  59. package/dist/esm/pipeline/spec/chart/pipes/label/index.d.ts +1 -1
  60. package/dist/esm/pipeline/spec/chart/pipes/label/index.js +2 -2
  61. package/dist/esm/pipeline/spec/chart/pipes/label/label.d.ts +5 -1
  62. package/dist/esm/pipeline/spec/chart/pipes/label/label.js +41 -33
  63. package/dist/esm/pipeline/spec/chart/pipes/label/label.js.map +1 -1
  64. package/dist/esm/pipeline/spec/chart/pipes/label/labelDualAxis.js +15 -52
  65. package/dist/esm/pipeline/spec/chart/pipes/label/labelDualAxis.js.map +1 -1
  66. package/dist/esm/pipeline/spec/chart/pipes/label/{labelColorInversion.d.ts → labelScatter.d.ts} +1 -1
  67. package/dist/esm/pipeline/spec/chart/pipes/label/labelScatter.js +19 -0
  68. package/dist/esm/pipeline/spec/chart/pipes/label/labelScatter.js.map +1 -0
  69. package/dist/esm/pipeline/spec/chart/pipes/series/series.js +1 -0
  70. package/dist/esm/pipeline/spec/chart/pipes/series/series.js.map +1 -1
  71. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.d.ts +3 -3
  72. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js +13 -30
  73. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js.map +1 -1
  74. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js +6 -6
  75. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js.map +1 -1
  76. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js +6 -18
  77. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js.map +1 -1
  78. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js +6 -18
  79. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js.map +1 -1
  80. package/dist/esm/pipeline/spec/table/pipes/columns/measuresToColumns.js +8 -11
  81. package/dist/esm/pipeline/spec/table/pipes/columns/measuresToColumns.js.map +1 -1
  82. package/dist/esm/pipeline/spec/table/pipes/indicators/pivotIndicators.js +8 -13
  83. package/dist/esm/pipeline/spec/table/pipes/indicators/pivotIndicators.js.map +1 -1
  84. package/dist/esm/pipeline/utils/constant.d.ts +1 -0
  85. package/dist/esm/pipeline/utils/constant.js +2 -1
  86. package/dist/esm/pipeline/utils/constant.js.map +1 -1
  87. package/dist/esm/pipeline/utils/format/createFormatter.d.ts +1 -1
  88. package/dist/esm/pipeline/utils/format/createFormatter.js +3 -2
  89. package/dist/esm/pipeline/utils/format/createFormatter.js.map +1 -1
  90. package/dist/esm/pipeline/utils/format/createFormatterByMeasure.d.ts +2 -0
  91. package/dist/esm/pipeline/utils/format/createFormatterByMeasure.js +14 -0
  92. package/dist/esm/pipeline/utils/format/createFormatterByMeasure.js.map +1 -0
  93. package/dist/esm/pipeline/utils/format/createNumFormatter.d.ts +1 -1
  94. package/dist/esm/pipeline/utils/format/createNumFormatter.js.map +1 -1
  95. package/dist/esm/pipeline/utils/format/index.d.ts +1 -0
  96. package/dist/esm/pipeline/utils/format/index.js +1 -0
  97. package/dist/esm/pipeline/utils/index.d.ts +1 -0
  98. package/dist/esm/pipeline/utils/index.js +1 -0
  99. package/dist/esm/pipeline/utils/valid/checkVSeed.d.ts +2 -0
  100. package/dist/esm/pipeline/utils/valid/checkVSeed.js +11 -0
  101. package/dist/esm/pipeline/utils/valid/checkVSeed.js.map +1 -0
  102. package/dist/esm/pipeline/utils/valid/index.d.ts +1 -0
  103. package/dist/esm/pipeline/utils/valid/index.js +2 -0
  104. package/dist/esm/theme/dark.js +5 -1
  105. package/dist/esm/theme/dark.js.map +1 -1
  106. package/dist/esm/theme/light.js +23 -4
  107. package/dist/esm/theme/light.js.map +1 -1
  108. package/dist/esm/types/advancedVSeed.d.ts +947 -17
  109. package/dist/esm/types/chartType/area/zArea.d.ts +60 -0
  110. package/dist/esm/types/chartType/areaPercent/zAreaPercent.d.ts +60 -0
  111. package/dist/esm/types/chartType/bar/zBar.d.ts +60 -0
  112. package/dist/esm/types/chartType/barParallel/zBarParallel.d.ts +60 -0
  113. package/dist/esm/types/chartType/barPercent/zBarPercent.d.ts +60 -0
  114. package/dist/esm/types/chartType/column/zColumn.d.ts +60 -0
  115. package/dist/esm/types/chartType/columnParallel/zColumnParallel.d.ts +60 -0
  116. package/dist/esm/types/chartType/columnPercent/zColumnPercent.d.ts +60 -0
  117. package/dist/esm/types/chartType/donut/zDonut.d.ts +30 -0
  118. package/dist/esm/types/chartType/dualAxis/zDualAxis.d.ts +270 -0
  119. package/dist/esm/types/chartType/funnel/zFunnel.d.ts +30 -0
  120. package/dist/esm/types/chartType/heatmap/zHeatmap.d.ts +30 -0
  121. package/dist/esm/types/chartType/line/zLine.d.ts +60 -0
  122. package/dist/esm/types/chartType/pie/zPie.d.ts +30 -0
  123. package/dist/esm/types/chartType/pivotTable/zPivotTable.d.ts +30 -0
  124. package/dist/esm/types/chartType/radar/zRadar.d.ts +30 -0
  125. package/dist/esm/types/chartType/rose/zRose.d.ts +30 -0
  126. package/dist/esm/types/chartType/roseParallel/zRoseParallel.d.ts +30 -0
  127. package/dist/esm/types/chartType/scatter/zScatter.d.ts +210 -0
  128. package/dist/esm/types/chartType/table/zTable.d.ts +30 -0
  129. package/dist/esm/types/properties/config/axes/bandAxis.d.ts +146 -3
  130. package/dist/esm/types/properties/config/axes/index.d.ts +0 -2
  131. package/dist/esm/types/properties/config/axes/index.js +0 -1
  132. package/dist/esm/types/properties/config/axes/linearAxis.d.ts +149 -3
  133. package/dist/esm/types/properties/config/axes/zLinearAxis.d.ts +60 -0
  134. package/dist/esm/types/properties/config/axes/zLinearAxis.js +2 -0
  135. package/dist/esm/types/properties/config/axes/zLinearAxis.js.map +1 -1
  136. package/dist/esm/types/properties/config/config.d.ts +916 -16
  137. package/dist/esm/types/properties/config/label/label.d.ts +3 -3
  138. package/dist/esm/types/properties/config/label/zLabel.js +1 -1
  139. package/dist/esm/types/properties/config/label/zLabel.js.map +1 -1
  140. package/dist/esm/types/properties/format/numFormat.js.map +1 -0
  141. package/dist/esm/types/properties/index.d.ts +1 -0
  142. package/dist/esm/types/properties/index.js +1 -0
  143. package/dist/esm/types/properties/measures/index.d.ts +0 -1
  144. package/dist/esm/types/properties/measures/index.js +0 -1
  145. package/dist/esm/types/properties/measures/measures.d.ts +6 -2
  146. package/dist/esm/types/properties/measures/zDualMeasures.d.ts +240 -0
  147. package/dist/esm/types/properties/measures/zMeasures.d.ts +90 -0
  148. package/dist/esm/types/properties/measures/zMeasures.js +2 -1
  149. package/dist/esm/types/properties/measures/zMeasures.js.map +1 -1
  150. package/dist/esm/types/properties/measures/zScatterMeasures.d.ts +240 -0
  151. package/dist/esm/types/properties/theme/customTheme.d.ts +916 -16
  152. package/dist/esm/types/zVseed.d.ts +1389 -99
  153. package/dist/umd/index.js +308 -366
  154. package/dist/umd/index.js.map +1 -1
  155. package/package.json +1 -1
  156. package/dist/esm/pipeline/spec/chart/pipes/label/labelColorInversion.js +0 -13
  157. package/dist/esm/pipeline/spec/chart/pipes/label/labelColorInversion.js.map +0 -1
  158. package/dist/esm/types/properties/config/axes/axis.d.ts +0 -208
  159. package/dist/esm/types/properties/config/axes/axis.js +0 -0
  160. package/dist/esm/types/properties/config/axes/zAxis.d.ts +0 -47
  161. package/dist/esm/types/properties/config/axes/zAxis.js +0 -54
  162. package/dist/esm/types/properties/config/axes/zAxis.js.map +0 -1
  163. package/dist/esm/types/properties/measures/format/numFormat.js.map +0 -1
  164. /package/dist/esm/types/properties/{measures/format → format}/formatter.d.ts +0 -0
  165. /package/dist/esm/types/properties/{measures/format → format}/formatter.js +0 -0
  166. /package/dist/esm/types/properties/{measures/format → format}/index.d.ts +0 -0
  167. /package/dist/esm/types/properties/{measures/format → format}/index.js +0 -0
  168. /package/dist/esm/types/properties/{measures/format → format}/numFormat.d.ts +0 -0
  169. /package/dist/esm/types/properties/{measures/format → format}/numFormat.js +0 -0
@@ -8,6 +8,7 @@ export declare const foldMeasures: (dataset: Dataset, measures: Measures, option
8
8
  measureName: string;
9
9
  measureValue: string;
10
10
  colorMeasureId?: string;
11
+ allowEmptyFold?: boolean;
11
12
  }) => {
12
13
  dataset: Dataset;
13
14
  foldInfo: FoldInfo;
@@ -1,7 +1,7 @@
1
1
  import { ColorEncoding, ColorIdEncoding, ORIGINAL_DATA } from "./constant.js";
2
2
  import { omit } from "remeda";
3
3
  const foldMeasures = (dataset, measures, options)=>{
4
- const { measureId, measureName, measureValue, colorMeasureId } = options || {};
4
+ const { measureId, measureName, measureValue, colorMeasureId, allowEmptyFold = true } = options || {};
5
5
  const foldInfo = {
6
6
  measureId,
7
7
  measureName,
@@ -16,6 +16,10 @@ const foldMeasures = (dataset, measures, options)=>{
16
16
  },
17
17
  foldMap: {}
18
18
  };
19
+ if (!allowEmptyFold && 0 === measures.length) return {
20
+ dataset,
21
+ foldInfo
22
+ };
19
23
  const result = new Array(dataset.length * measures.length);
20
24
  let index = 0;
21
25
  const ids = measures.map((d)=>d.id);
@@ -1 +1 @@
1
- {"version":3,"file":"dataReshape/foldMeasures.js","sources":["webpack://@visactor/vseed/./src/dataReshape/foldMeasures.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Dataset, FoldInfo, Measures } from 'src/types'\nimport { ColorEncoding, ColorIdEncoding, ORIGINAL_DATA } from './constant'\nimport { omit } from 'remeda'\n\n/**\n * 折叠指定的指标\n * @description 合并指定的指标为1个, 无论多少个, 都能转换为1个, 取名为fold, 意为折叠后混合在一起.\n */\nexport const foldMeasures = (\n dataset: Dataset,\n measures: Measures,\n options: {\n measureId: string\n measureName: string\n measureValue: string\n colorMeasureId?: string\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n} => {\n const { measureId, measureName, measureValue, colorMeasureId } = options || {}\n\n const foldInfo: FoldInfo = {\n measureId,\n measureName,\n measureValue,\n statistics: {\n max: -Infinity,\n min: Infinity,\n sum: 0,\n count: 0,\n colorMin: Infinity,\n colorMax: -Infinity,\n },\n foldMap: {},\n }\n const result: Dataset = new Array(dataset.length * measures.length) as Dataset\n let index = 0\n const ids = measures.map((d) => d.id)\n for (let i = 0; i < dataset.length; i++) {\n for (let j = 0; j < measures.length; j++) {\n const datum: Record<string, any> = omit({ ...dataset[i] }, ids)\n\n datum[ORIGINAL_DATA] = dataset[i]\n\n const measure = measures[j]\n const { id, alias } = measure\n\n datum[id] = dataset[i][id] as unknown\n datum[measureId] = id\n datum[measureName] = alias || id\n datum[measureValue] = dataset[i][id] as unknown\n\n if (colorMeasureId) {\n const value = (datum[ORIGINAL_DATA] as Record<string, string | number>)[colorMeasureId]\n datum[ColorEncoding] = value\n datum[ColorIdEncoding] = colorMeasureId\n\n const valueNumber = Number(value)\n foldInfo.statistics.colorMin = Math.min(foldInfo.statistics.colorMin, valueNumber)\n foldInfo.statistics.colorMax = Math.max(foldInfo.statistics.colorMax, valueNumber)\n }\n\n const valueNumber = Number(datum[id])\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 foldInfo.foldMap[id] = alias\n result[index++] = datum\n }\n }\n\n return {\n dataset: result,\n foldInfo,\n }\n}\n"],"names":["foldMeasures","dataset","measures","options","measureId","measureName","measureValue","colorMeasureId","foldInfo","Infinity","result","Array","index","ids","d","i","j","datum","omit","ORIGINAL_DATA","measure","id","alias","value","ColorEncoding","ColorIdEncoding","valueNumber","Number","Math"],"mappings":";;AASO,MAAMA,eAAe,CAC1BC,SACAC,UACAC;IAUA,MAAM,EAAEC,SAAS,EAAEC,WAAW,EAAEC,YAAY,EAAEC,cAAc,EAAE,GAAGJ,WAAW,CAAC;IAE7E,MAAMK,WAAqB;QACzBJ;QACAC;QACAC;QACA,YAAY;YACV,KAAK,CAACG;YACN,KAAKA;YACL,KAAK;YACL,OAAO;YACP,UAAUA;YACV,UAAU,CAACA;QACb;QACA,SAAS,CAAC;IACZ;IACA,MAAMC,SAAkB,IAAIC,MAAMV,QAAQ,MAAM,GAAGC,SAAS,MAAM;IAClE,IAAIU,QAAQ;IACZ,MAAMC,MAAMX,SAAS,GAAG,CAAC,CAACY,IAAMA,EAAE,EAAE;IACpC,IAAK,IAAIC,IAAI,GAAGA,IAAId,QAAQ,MAAM,EAAEc,IAClC,IAAK,IAAIC,IAAI,GAAGA,IAAId,SAAS,MAAM,EAAEc,IAAK;QACxC,MAAMC,QAA6BC,KAAK;YAAE,GAAGjB,OAAO,CAACc,EAAE;QAAC,GAAGF;QAE3DI,KAAK,CAACE,cAAc,GAAGlB,OAAO,CAACc,EAAE;QAEjC,MAAMK,UAAUlB,QAAQ,CAACc,EAAE;QAC3B,MAAM,EAAEK,EAAE,EAAEC,KAAK,EAAE,GAAGF;QAEtBH,KAAK,CAACI,GAAG,GAAGpB,OAAO,CAACc,EAAE,CAACM,GAAG;QAC1BJ,KAAK,CAACb,UAAU,GAAGiB;QACnBJ,KAAK,CAACZ,YAAY,GAAGiB,SAASD;QAC9BJ,KAAK,CAACX,aAAa,GAAGL,OAAO,CAACc,EAAE,CAACM,GAAG;QAEpC,IAAId,gBAAgB;YAClB,MAAMgB,QAASN,KAAK,CAACE,cAAkD,CAACZ,eAAe;YACvFU,KAAK,CAACO,cAAc,GAAGD;YACvBN,KAAK,CAACQ,gBAAgB,GAAGlB;YAEzB,MAAMmB,cAAcC,OAAOJ;YAC3Bf,SAAS,UAAU,CAAC,QAAQ,GAAGoB,KAAK,GAAG,CAACpB,SAAS,UAAU,CAAC,QAAQ,EAAEkB;YACtElB,SAAS,UAAU,CAAC,QAAQ,GAAGoB,KAAK,GAAG,CAACpB,SAAS,UAAU,CAAC,QAAQ,EAAEkB;QACxE;QAEA,MAAMA,cAAcC,OAAOV,KAAK,CAACI,GAAG;QACpCb,SAAS,UAAU,CAAC,GAAG,GAAGoB,KAAK,GAAG,CAACpB,SAAS,UAAU,CAAC,GAAG,EAAEkB;QAC5DlB,SAAS,UAAU,CAAC,GAAG,GAAGoB,KAAK,GAAG,CAACpB,SAAS,UAAU,CAAC,GAAG,EAAEkB;QAC5DlB,SAAS,UAAU,CAAC,GAAG,IAAIkB;QAC3BlB,SAAS,UAAU,CAAC,KAAK;QAEzBA,SAAS,OAAO,CAACa,GAAG,GAAGC;QACvBZ,MAAM,CAACE,QAAQ,GAAGK;IACpB;IAGF,OAAO;QACL,SAASP;QACTF;IACF;AACF"}
1
+ {"version":3,"file":"dataReshape/foldMeasures.js","sources":["webpack://@visactor/vseed/./src/dataReshape/foldMeasures.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Dataset, FoldInfo, Measures } from 'src/types'\nimport { ColorEncoding, ColorIdEncoding, ORIGINAL_DATA } from './constant'\nimport { omit } from 'remeda'\n\n/**\n * 折叠指定的指标\n * @description 合并指定的指标为1个, 无论多少个, 都能转换为1个, 取名为fold, 意为折叠后混合在一起.\n */\nexport const foldMeasures = (\n dataset: Dataset,\n measures: Measures,\n options: {\n measureId: string\n measureName: string\n measureValue: string\n colorMeasureId?: string\n allowEmptyFold?: boolean\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n} => {\n const { measureId, measureName, measureValue, colorMeasureId, allowEmptyFold = true } = options || {}\n\n const foldInfo: FoldInfo = {\n measureId,\n measureName,\n measureValue,\n statistics: {\n max: -Infinity,\n min: Infinity,\n sum: 0,\n count: 0,\n colorMin: Infinity,\n colorMax: -Infinity,\n },\n foldMap: {},\n }\n\n if (!allowEmptyFold && measures.length === 0) {\n return {\n dataset,\n foldInfo,\n }\n }\n\n const result: Dataset = new Array(dataset.length * measures.length) as Dataset\n let index = 0\n const ids = measures.map((d) => d.id)\n for (let i = 0; i < dataset.length; i++) {\n for (let j = 0; j < measures.length; j++) {\n const datum: Record<string, any> = omit({ ...dataset[i] }, ids)\n\n datum[ORIGINAL_DATA] = dataset[i]\n\n const measure = measures[j]\n const { id, alias } = measure\n\n datum[id] = dataset[i][id] as unknown\n datum[measureId] = id\n datum[measureName] = alias || id\n datum[measureValue] = dataset[i][id] as unknown\n\n if (colorMeasureId) {\n const value = (datum[ORIGINAL_DATA] as Record<string, string | number>)[colorMeasureId]\n datum[ColorEncoding] = value\n datum[ColorIdEncoding] = colorMeasureId\n\n const valueNumber = Number(value)\n foldInfo.statistics.colorMin = Math.min(foldInfo.statistics.colorMin, valueNumber)\n foldInfo.statistics.colorMax = Math.max(foldInfo.statistics.colorMax, valueNumber)\n }\n\n const valueNumber = Number(datum[id])\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 foldInfo.foldMap[id] = alias\n result[index++] = datum\n }\n }\n\n return {\n dataset: result,\n foldInfo,\n }\n}\n"],"names":["foldMeasures","dataset","measures","options","measureId","measureName","measureValue","colorMeasureId","allowEmptyFold","foldInfo","Infinity","result","Array","index","ids","d","i","j","datum","omit","ORIGINAL_DATA","measure","id","alias","value","ColorEncoding","ColorIdEncoding","valueNumber","Number","Math"],"mappings":";;AASO,MAAMA,eAAe,CAC1BC,SACAC,UACAC;IAWA,MAAM,EAAEC,SAAS,EAAEC,WAAW,EAAEC,YAAY,EAAEC,cAAc,EAAEC,iBAAiB,IAAI,EAAE,GAAGL,WAAW,CAAC;IAEpG,MAAMM,WAAqB;QACzBL;QACAC;QACAC;QACA,YAAY;YACV,KAAK,CAACI;YACN,KAAKA;YACL,KAAK;YACL,OAAO;YACP,UAAUA;YACV,UAAU,CAACA;QACb;QACA,SAAS,CAAC;IACZ;IAEA,IAAI,CAACF,kBAAkBN,AAAoB,MAApBA,SAAS,MAAM,EACpC,OAAO;QACLD;QACAQ;IACF;IAGF,MAAME,SAAkB,IAAIC,MAAMX,QAAQ,MAAM,GAAGC,SAAS,MAAM;IAClE,IAAIW,QAAQ;IACZ,MAAMC,MAAMZ,SAAS,GAAG,CAAC,CAACa,IAAMA,EAAE,EAAE;IACpC,IAAK,IAAIC,IAAI,GAAGA,IAAIf,QAAQ,MAAM,EAAEe,IAClC,IAAK,IAAIC,IAAI,GAAGA,IAAIf,SAAS,MAAM,EAAEe,IAAK;QACxC,MAAMC,QAA6BC,KAAK;YAAE,GAAGlB,OAAO,CAACe,EAAE;QAAC,GAAGF;QAE3DI,KAAK,CAACE,cAAc,GAAGnB,OAAO,CAACe,EAAE;QAEjC,MAAMK,UAAUnB,QAAQ,CAACe,EAAE;QAC3B,MAAM,EAAEK,EAAE,EAAEC,KAAK,EAAE,GAAGF;QAEtBH,KAAK,CAACI,GAAG,GAAGrB,OAAO,CAACe,EAAE,CAACM,GAAG;QAC1BJ,KAAK,CAACd,UAAU,GAAGkB;QACnBJ,KAAK,CAACb,YAAY,GAAGkB,SAASD;QAC9BJ,KAAK,CAACZ,aAAa,GAAGL,OAAO,CAACe,EAAE,CAACM,GAAG;QAEpC,IAAIf,gBAAgB;YAClB,MAAMiB,QAASN,KAAK,CAACE,cAAkD,CAACb,eAAe;YACvFW,KAAK,CAACO,cAAc,GAAGD;YACvBN,KAAK,CAACQ,gBAAgB,GAAGnB;YAEzB,MAAMoB,cAAcC,OAAOJ;YAC3Bf,SAAS,UAAU,CAAC,QAAQ,GAAGoB,KAAK,GAAG,CAACpB,SAAS,UAAU,CAAC,QAAQ,EAAEkB;YACtElB,SAAS,UAAU,CAAC,QAAQ,GAAGoB,KAAK,GAAG,CAACpB,SAAS,UAAU,CAAC,QAAQ,EAAEkB;QACxE;QAEA,MAAMA,cAAcC,OAAOV,KAAK,CAACI,GAAG;QACpCb,SAAS,UAAU,CAAC,GAAG,GAAGoB,KAAK,GAAG,CAACpB,SAAS,UAAU,CAAC,GAAG,EAAEkB;QAC5DlB,SAAS,UAAU,CAAC,GAAG,GAAGoB,KAAK,GAAG,CAACpB,SAAS,UAAU,CAAC,GAAG,EAAEkB;QAC5DlB,SAAS,UAAU,CAAC,GAAG,IAAIkB;QAC3BlB,SAAS,UAAU,CAAC,KAAK;QAEzBA,SAAS,OAAO,CAACa,GAAG,GAAGC;QACvBZ,MAAM,CAACE,QAAQ,GAAGK;IACpB;IAGF,OAAO;QACL,SAASP;QACTF;IACF;AACF"}
@@ -8,10 +8,11 @@ const defaultDimensions = (advancedVSeed, context)=>{
8
8
  const { dimensions, dataset } = vseed;
9
9
  if (dimensions && dimensions.length > 0) return {
10
10
  ...result,
11
- dimensions: clone(dimensions)
11
+ dimensions: clone(dimensions.map((dim)=>({
12
+ ...dim,
13
+ alias: dim.alias || dim.id
14
+ })))
12
15
  };
13
- if (!dataset) throw new Error('dataset is required');
14
- if (0 === dataset.length) return result;
15
16
  const measures = findAllMeasures(advancedVSeed.measures);
16
17
  const top100dataset = dataset.slice(0, 100);
17
18
  const sample = top100dataset.reduce((prev, cur)=>({
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/default/defaultDimensions.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/default/defaultDimensions.ts"],"sourcesContent":["import { clone } from 'remeda'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, Dimensions, DimensionTree } from 'src/types'\n\nexport const defaultDimensions: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dimensions, dataset } = vseed\n\n if (dimensions && dimensions.length > 0) {\n return {\n ...result,\n dimensions: clone(dimensions),\n }\n }\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n const measures = findAllMeasures(advancedVSeed.measures as DimensionTree)\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n const newDimensions = Object.keys(sample)\n .filter(\n (key) =>\n top100dataset.some((item) => typeof item[key] === 'string') &&\n !['', null, undefined].includes(key) &&\n !measures.some((measure) => measure.id === key),\n )\n .map((dim) => ({\n id: dim,\n alias: dim,\n })) as Dimensions\n\n return {\n ...result,\n dimensions: newDimensions,\n }\n}\n"],"names":["defaultDimensions","advancedVSeed","context","result","vseed","dimensions","dataset","clone","Error","measures","findAllMeasures","top100dataset","sample","prev","cur","newDimensions","Object","key","item","undefined","measure","dim"],"mappings":";;AAIO,MAAMA,oBAAkC,CAACC,eAAeC;IAC7D,MAAMC,SAAS;QAAE,GAAGF,aAAa;IAAC;IAClC,MAAM,EAAEG,KAAK,EAAE,GAAGF;IAClB,MAAM,EAAEG,UAAU,EAAEC,OAAO,EAAE,GAAGF;IAEhC,IAAIC,cAAcA,WAAW,MAAM,GAAG,GACpC,OAAO;QACL,GAAGF,MAAM;QACT,YAAYI,MAAMF;IACpB;IAGF,IAAI,CAACC,SACH,MAAM,IAAIE,MAAM;IAGlB,IAAIF,AAAmB,MAAnBA,QAAQ,MAAM,EAChB,OAAOH;IAGT,MAAMM,WAAWC,gBAAgBT,cAAc,QAAQ;IAEvD,MAAMU,gBAAgBL,QAAQ,KAAK,CAAC,GAAG;IAEvC,MAAMM,SAASD,cAAc,MAAM,CAAQ,CAACE,MAAMC,MACzC;YAAE,GAAGD,IAAI;YAAE,GAAGC,GAAG;QAAC,IACxB,CAAC;IAEJ,MAAMC,gBAAgBC,OAAO,IAAI,CAACJ,QAC/B,MAAM,CACL,CAACK,MACCN,cAAc,IAAI,CAAC,CAACO,OAAS,AAAqB,YAArB,OAAOA,IAAI,CAACD,IAAI,KAC7C,CAAC;YAAC;YAAI;YAAME;SAAU,CAAC,QAAQ,CAACF,QAChC,CAACR,SAAS,IAAI,CAAC,CAACW,UAAYA,QAAQ,EAAE,KAAKH,MAE9C,GAAG,CAAC,CAACI,MAAS;YACb,IAAIA;YACJ,OAAOA;QACT;IAEF,OAAO;QACL,GAAGlB,MAAM;QACT,YAAYY;IACd;AACF"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/default/defaultDimensions.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/default/defaultDimensions.ts"],"sourcesContent":["import { clone } from 'remeda'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, Dimensions, DimensionTree } from 'src/types'\n\nexport const defaultDimensions: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dimensions, dataset } = vseed\n\n if (dimensions && dimensions.length > 0) {\n return {\n ...result,\n dimensions: clone(dimensions.map((dim) => ({ ...dim, alias: dim.alias || dim.id }))),\n }\n }\n\n const measures = findAllMeasures(advancedVSeed.measures as DimensionTree)\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n const newDimensions = Object.keys(sample)\n .filter(\n (key) =>\n top100dataset.some((item) => typeof item[key] === 'string') &&\n !['', null, undefined].includes(key) &&\n !measures.some((measure) => measure.id === key),\n )\n .map((dim) => ({\n id: dim,\n alias: dim,\n })) as Dimensions\n\n return {\n ...result,\n dimensions: newDimensions,\n }\n}\n"],"names":["defaultDimensions","advancedVSeed","context","result","vseed","dimensions","dataset","clone","dim","measures","findAllMeasures","top100dataset","sample","prev","cur","newDimensions","Object","key","item","undefined","measure"],"mappings":";;AAIO,MAAMA,oBAAkC,CAACC,eAAeC;IAC7D,MAAMC,SAAS;QAAE,GAAGF,aAAa;IAAC;IAClC,MAAM,EAAEG,KAAK,EAAE,GAAGF;IAClB,MAAM,EAAEG,UAAU,EAAEC,OAAO,EAAE,GAAGF;IAEhC,IAAIC,cAAcA,WAAW,MAAM,GAAG,GACpC,OAAO;QACL,GAAGF,MAAM;QACT,YAAYI,MAAMF,WAAW,GAAG,CAAC,CAACG,MAAS;gBAAE,GAAGA,GAAG;gBAAE,OAAOA,IAAI,KAAK,IAAIA,IAAI,EAAE;YAAC;IAClF;IAGF,MAAMC,WAAWC,gBAAgBT,cAAc,QAAQ;IAEvD,MAAMU,gBAAgBL,QAAQ,KAAK,CAAC,GAAG;IAEvC,MAAMM,SAASD,cAAc,MAAM,CAAQ,CAACE,MAAMC,MACzC;YAAE,GAAGD,IAAI;YAAE,GAAGC,GAAG;QAAC,IACxB,CAAC;IAEJ,MAAMC,gBAAgBC,OAAO,IAAI,CAACJ,QAC/B,MAAM,CACL,CAACK,MACCN,cAAc,IAAI,CAAC,CAACO,OAAS,AAAqB,YAArB,OAAOA,IAAI,CAACD,IAAI,KAC7C,CAAC;YAAC;YAAI;YAAME;SAAU,CAAC,QAAQ,CAACF,QAChC,CAACR,SAAS,IAAI,CAAC,CAACW,UAAYA,QAAQ,EAAE,KAAKH,MAE9C,GAAG,CAAC,CAACT,MAAS;YACb,IAAIA;YACJ,OAAOA;QACT;IAEF,OAAO;QACL,GAAGL,MAAM;QACT,YAAYY;IACd;AACF"}
@@ -1,16 +1,19 @@
1
1
  import { clone } from "remeda";
2
+ import { isMeasure, preorderTraverse } from "../../../../utils/index.js";
2
3
  const defaultMeasures_defaultMeasures = (advancedVSeed, context)=>{
3
4
  const { vseed } = context;
4
5
  const { measures, dataset } = vseed;
5
- if (measures && measures.length > 0) return {
6
- ...advancedVSeed,
7
- measures: clone(measures)
8
- };
9
- if (!dataset) throw new Error('dataset is required');
10
- if (0 === dataset.length) return {
11
- ...advancedVSeed,
12
- measures: []
13
- };
6
+ if (measures && measures.length > 0) {
7
+ const clonedMeasures = clone(measures);
8
+ preorderTraverse(clonedMeasures, (node)=>{
9
+ if (isMeasure(node)) node.alias = node.alias || node.id;
10
+ return false;
11
+ });
12
+ return {
13
+ ...advancedVSeed,
14
+ measures: clonedMeasures
15
+ };
16
+ }
14
17
  const top100dataset = dataset.slice(0, 100);
15
18
  const sample = top100dataset.reduce((prev, cur)=>({
16
19
  ...prev,
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/default/defaultMeasures.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/default/defaultMeasures.ts"],"sourcesContent":["import { clone } from 'remeda'\nimport type { AdvancedPipe, Datum } from 'src/types'\n\n/**\n * @description 如果用户没有配置 measures, 则基于 dataset 构建默认的 measures\n */\nexport const defaultMeasures: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { measures, dataset } = vseed\n\n if (measures && measures.length > 0) {\n return {\n ...advancedVSeed,\n measures: clone(measures),\n }\n }\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return {\n ...advancedVSeed,\n measures: [],\n }\n }\n\n const top100dataset = dataset.slice(0, 100)\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n const defaultMeasures = Object.keys(sample)\n .filter((key) => {\n return top100dataset.some((item) => typeof item[key] === 'number') && !['', null, undefined].includes(key)\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n return {\n ...advancedVSeed,\n measures: defaultMeasures,\n }\n}\n"],"names":["defaultMeasures","advancedVSeed","context","vseed","measures","dataset","clone","Error","top100dataset","sample","prev","cur","Object","key","item","undefined","measure"],"mappings":";AAMO,MAAMA,kCAAgC,CAACC,eAAeC;IAC3D,MAAM,EAAEC,KAAK,EAAE,GAAGD;IAClB,MAAM,EAAEE,QAAQ,EAAEC,OAAO,EAAE,GAAGF;IAE9B,IAAIC,YAAYA,SAAS,MAAM,GAAG,GAChC,OAAO;QACL,GAAGH,aAAa;QAChB,UAAUK,MAAMF;IAClB;IAGF,IAAI,CAACC,SACH,MAAM,IAAIE,MAAM;IAGlB,IAAIF,AAAmB,MAAnBA,QAAQ,MAAM,EAChB,OAAO;QACL,GAAGJ,aAAa;QAChB,UAAU,EAAE;IACd;IAGF,MAAMO,gBAAgBH,QAAQ,KAAK,CAAC,GAAG;IACvC,MAAMI,SAASD,cAAc,MAAM,CAAQ,CAACE,MAAMC,MACzC;YAAE,GAAGD,IAAI;YAAE,GAAGC,GAAG;QAAC,IACxB,CAAC;IACJ,MAAMX,kBAAkBY,OAAO,IAAI,CAACH,QACjC,MAAM,CAAC,CAACI,MACAL,cAAc,IAAI,CAAC,CAACM,OAAS,AAAqB,YAArB,OAAOA,IAAI,CAACD,IAAI,KAAkB,CAAC;YAAC;YAAI;YAAME;SAAU,CAAC,QAAQ,CAACF,MAEvG,GAAG,CAAC,CAACG,UAAa;YACjB,IAAIA;YACJ,OAAOA;QACT;IAEF,OAAO;QACL,GAAGf,aAAa;QAChB,UAAUD;IACZ;AACF"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/default/defaultMeasures.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/default/defaultMeasures.ts"],"sourcesContent":["import { clone } from 'remeda'\nimport type { AdvancedPipe, Datum } from 'src/types'\nimport { isMeasure, preorderTraverse } from 'src/pipeline/utils'\n/**\n * @description 如果用户没有配置 measures, 则基于 dataset 构建默认的 measures\n */\nexport const defaultMeasures: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { measures, dataset } = vseed\n\n if (measures && measures.length > 0) {\n const clonedMeasures = clone(measures)\n preorderTraverse(clonedMeasures, (node) => {\n if (isMeasure(node)) {\n node.alias = node.alias || node.id\n }\n return false\n })\n return {\n ...advancedVSeed,\n measures: clonedMeasures,\n }\n }\n\n const top100dataset = dataset.slice(0, 100)\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n const defaultMeasures = Object.keys(sample)\n .filter((key) => {\n return top100dataset.some((item) => typeof item[key] === 'number') && !['', null, undefined].includes(key)\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n return {\n ...advancedVSeed,\n measures: defaultMeasures,\n }\n}\n"],"names":["defaultMeasures","advancedVSeed","context","vseed","measures","dataset","clonedMeasures","clone","preorderTraverse","node","isMeasure","top100dataset","sample","prev","cur","Object","key","item","undefined","measure"],"mappings":";;AAMO,MAAMA,kCAAgC,CAACC,eAAeC;IAC3D,MAAM,EAAEC,KAAK,EAAE,GAAGD;IAClB,MAAM,EAAEE,QAAQ,EAAEC,OAAO,EAAE,GAAGF;IAE9B,IAAIC,YAAYA,SAAS,MAAM,GAAG,GAAG;QACnC,MAAME,iBAAiBC,MAAMH;QAC7BI,iBAAiBF,gBAAgB,CAACG;YAChC,IAAIC,UAAUD,OACZA,KAAK,KAAK,GAAGA,KAAK,KAAK,IAAIA,KAAK,EAAE;YAEpC,OAAO;QACT;QACA,OAAO;YACL,GAAGR,aAAa;YAChB,UAAUK;QACZ;IACF;IAEA,MAAMK,gBAAgBN,QAAQ,KAAK,CAAC,GAAG;IACvC,MAAMO,SAASD,cAAc,MAAM,CAAQ,CAACE,MAAMC,MACzC;YAAE,GAAGD,IAAI;YAAE,GAAGC,GAAG;QAAC,IACxB,CAAC;IACJ,MAAMd,kBAAkBe,OAAO,IAAI,CAACH,QACjC,MAAM,CAAC,CAACI,MACAL,cAAc,IAAI,CAAC,CAACM,OAAS,AAAqB,YAArB,OAAOA,IAAI,CAACD,IAAI,KAAkB,CAAC;YAAC;YAAI;YAAME;SAAU,CAAC,QAAQ,CAACF,MAEvG,GAAG,CAAC,CAACG,UAAa;YACjB,IAAIA;YACJ,OAAOA;QACT;IAEF,OAAO;QACL,GAAGlB,aAAa;QAChB,UAAUD;IACZ;AACF"}
@@ -1,6 +1,8 @@
1
+ import { checkVSeed } from "../../../../utils/index.js";
1
2
  const initAdvancedVSeed = (advancedVSeed, context)=>{
2
3
  const { vseed } = context;
3
4
  const { chartType, locale } = vseed;
5
+ checkVSeed(vseed);
4
6
  return {
5
7
  ...advancedVSeed,
6
8
  chartType,
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/init/initAdvancedVSeed.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/init/initAdvancedVSeed.ts"],"sourcesContent":["import type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const initAdvancedVSeed: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType, locale } = vseed\n return {\n ...advancedVSeed,\n chartType,\n locale: locale || 'zh-CN',\n } as AdvancedVSeed\n}\n"],"names":["initAdvancedVSeed","advancedVSeed","context","vseed","chartType","locale"],"mappings":"AAEO,MAAMA,oBAAkC,CAACC,eAAeC;IAC7D,MAAM,EAAEC,KAAK,EAAE,GAAGD;IAClB,MAAM,EAAEE,SAAS,EAAEC,MAAM,EAAE,GAAGF;IAC9B,OAAO;QACL,GAAGF,aAAa;QAChBG;QACA,QAAQC,UAAU;IACpB;AACF"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/init/initAdvancedVSeed.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/init/initAdvancedVSeed.ts"],"sourcesContent":["import { checkVSeed } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const initAdvancedVSeed: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType, locale } = vseed\n\n checkVSeed(vseed)\n\n return {\n ...advancedVSeed,\n chartType,\n locale: locale || 'zh-CN',\n } as AdvancedVSeed\n}\n"],"names":["initAdvancedVSeed","advancedVSeed","context","vseed","chartType","locale","checkVSeed"],"mappings":";AAGO,MAAMA,oBAAkC,CAACC,eAAeC;IAC7D,MAAM,EAAEC,KAAK,EAAE,GAAGD;IAClB,MAAM,EAAEE,SAAS,EAAEC,MAAM,EAAE,GAAGF;IAE9BG,WAAWH;IAEX,OAAO;QACL,GAAGF,aAAa;QAChBG;QACA,QAAQC,UAAU;IACpB;AACF"}
@@ -8,9 +8,7 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
8
8
  };
9
9
  const { vseed } = context;
10
10
  const { dataset } = vseed;
11
- const { dimensions, measures, encoding, chartType } = advancedVSeed;
12
- if (!measures || !dimensions || !dataset || !encoding) return result;
13
- const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
11
+ const { dimensions = [], measures = [], encoding, chartType } = advancedVSeed;
14
12
  const datasetList = [];
15
13
  const datasetReshapeInfo = [];
16
14
  const measureGroups = [];
@@ -20,8 +18,7 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
20
18
  });
21
19
  else if (2 === depth) measureGroups.push(measures);
22
20
  measureGroups.forEach((measures, index)=>{
23
- if (0 === measures.length) throw new Error('measures can not be empty');
24
- if (measures.length > 2) throw new Error('measures can not be more than 2');
21
+ if (measures.length > 2) throw new Error('measures can not be more than 2 groups in dualAxis');
25
22
  const foldInfoList = [];
26
23
  const unfoldInfoList = [];
27
24
  const datasets = [];
@@ -29,7 +26,7 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
29
26
  const secondaryMeasures = measures[1] || [];
30
27
  if (primaryMeasures && primaryMeasures.children) {
31
28
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (item)=>item.id), uniqueBy(primaryMeasures.children, (item)=>item.id), encoding, {
32
- colorItemAsId: hasEncoding,
29
+ colorItemAsId: false,
33
30
  foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,
34
31
  colorMeasureId: getColorMeasureId(advancedVSeed)
35
32
  });
@@ -39,6 +36,7 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
39
36
  }
40
37
  if (secondaryMeasures && secondaryMeasures.children) {
41
38
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (item)=>item.id), uniqueBy(secondaryMeasures.children, (item)=>item.id), encoding, {
39
+ colorItemAsId: false,
42
40
  foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`,
43
41
  colorMeasureId: getColorMeasureId(advancedVSeed)
44
42
  });
@@ -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 } from 'remeda'\nimport { dataReshapeByEncoding, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { measureDepth } from 'src/pipeline/utils'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Dimension,\n Encoding,\n FoldInfo,\n MeasureGroup,\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 { dimensions, measures, encoding, chartType } = advancedVSeed\n\n if (!measures || !dimensions || !dataset || !encoding) {\n return result\n }\n const hasEncoding = (vseed.dimensions || []).some((item: Dimension) => item.encoding)\n\n const datasetList: Dataset[] = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n const measureGroups: Array<MeasureGroup[]> = []\n\n const depth = measureDepth(measures)\n if (depth === 3) {\n measures.forEach((measure: MeasureGroup) => {\n measureGroups.push(measure.children as unknown as MeasureGroup[])\n })\n } else if (depth === 2) {\n measureGroups.push(measures as unknown as MeasureGroup[])\n }\n\n measureGroups.forEach((measures: MeasureGroup[], index) => {\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2')\n }\n\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const primaryMeasures = measures[0]\n const secondaryMeasures = measures[1] || []\n\n if (primaryMeasures && primaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(primaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: hasEncoding,\n foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (secondaryMeasures && secondaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(secondaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(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","dimensions","measures","encoding","chartType","hasEncoding","item","datasetList","datasetReshapeInfo","measureGroups","depth","measureDepth","measure","index","Error","foldInfoList","unfoldInfoList","datasets","primaryMeasures","secondaryMeasures","newDataset","foldInfo","unfoldInfo","dataReshapeByEncoding","uniqueBy","FoldPrimaryMeasureValue","getColorMeasureId","FoldSecondaryMeasureValue","d","prev","cur","reshapeInfo"],"mappings":";;;;AAiBO,MAAMA,+BAA6C,CAACC,eAAeC;IACxE,MAAMC,SAAS;QAAE,GAAGF,aAAa;IAAC;IAClC,MAAM,EAAEG,KAAK,EAAE,GAAGF;IAClB,MAAM,EAAEG,OAAO,EAAE,GAAGD;IACpB,MAAM,EAAEE,UAAU,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,SAAS,EAAE,GAAGR;IAEtD,IAAI,CAACM,YAAY,CAACD,cAAc,CAACD,WAAW,CAACG,UAC3C,OAAOL;IAET,MAAMO,cAAeN,AAAAA,CAAAA,MAAM,UAAU,IAAI,EAAC,EAAG,IAAI,CAAC,CAACO,OAAoBA,KAAK,QAAQ;IAEpF,MAAMC,cAAyB,EAAE;IACjC,MAAMC,qBAAyC,EAAE;IAEjD,MAAMC,gBAAuC,EAAE;IAE/C,MAAMC,QAAQC,aAAaT;IAC3B,IAAIQ,AAAU,MAAVA,OACFR,SAAS,OAAO,CAAC,CAACU;QAChBH,cAAc,IAAI,CAACG,QAAQ,QAAQ;IACrC;SACK,IAAIF,AAAU,MAAVA,OACTD,cAAc,IAAI,CAACP;IAGrBO,cAAc,OAAO,CAAC,CAACP,UAA0BW;QAC/C,IAAIX,AAAoB,MAApBA,SAAS,MAAM,EACjB,MAAM,IAAIY,MAAM;QAGlB,IAAIZ,SAAS,MAAM,GAAG,GACpB,MAAM,IAAIY,MAAM;QAGlB,MAAMC,eAA2B,EAAE;QACnC,MAAMC,iBAA+B,EAAE;QAEvC,MAAMC,WAAsB,EAAE;QAC9B,MAAMC,kBAAkBhB,QAAQ,CAAC,EAAE;QACnC,MAAMiB,oBAAoBjB,QAAQ,CAAC,EAAE,IAAI,EAAE;QAE3C,IAAIgB,mBAAmBA,gBAAgB,QAAQ,EAAE;YAC/C,MAAM,EACJ,SAASE,UAAU,EACnBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBACFvB,SACAwB,SAASvB,YAAY,CAACK,OAASA,KAAK,EAAE,GACtCkB,SAASN,gBAAgB,QAAQ,EAAE,CAACZ,OAASA,KAAK,EAAE,GACpDH,UACA;gBACE,eAAeE;gBACf,kBAAkB,GAAGoB,0BAA0BZ,OAAO;gBACtD,gBAAgBa,kBAAkB9B;YACpC;YAGFqB,SAAS,IAAI,CAACG;YACdL,aAAa,IAAI,CAACM;YAClBL,eAAe,IAAI,CAACM;QACtB;QAEA,IAAIH,qBAAqBA,kBAAkB,QAAQ,EAAE;YACnD,MAAM,EACJ,SAASC,UAAU,EACnBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBACFvB,SACAwB,SAASvB,YAAY,CAACK,OAASA,KAAK,EAAE,GACtCkB,SAASL,kBAAkB,QAAQ,EAAE,CAACb,OAASA,KAAK,EAAE,GACtDH,UACA;gBACE,kBAAkB,GAAGwB,4BAA4Bd,OAAO;gBACxD,gBAAgBa,kBAAkB9B;YACpC;YAGFqB,SAAS,IAAI,CAACG;YACdL,aAAa,IAAI,CAACM;YAClBL,eAAe,IAAI,CAACM;QACtB;QAEA,MAAMA,aAAyB;YAC7B,GAAGN,cAAc,CAAC,EAAE;YACpB,YAAYA,eAAe,OAAO,CAAC,CAACY,IAAMA,EAAE,UAAU;YACtD,YAAYZ,eAAe,MAAM,CAAC,CAACa,MAAMC,MAAS;oBAAE,GAAGD,IAAI;oBAAE,GAAGC,IAAI,UAAU;gBAAC,IAAI,CAAC;QACtF;QAEA,MAAMC,cAAc;YAClB,IAAI,GAAG3B,UAAU,CAAC,EAAES,OAAO;YAC3BA;YACA,UAAUE,YAAY,CAAC,EAAE;YACzB,cAAcA;YACd,YAAYO;QACd;QAEAd,mBAAmB,IAAI,CAACuB;QACxBxB,YAAY,IAAI,CAACU,SAAS,IAAI,CAAC;IACjC;IAEA,OAAO;QACL,GAAGnB,MAAM;QACT,SAASS;QACT,oBAAoBC;IACtB;AACF"}
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 } from 'remeda'\nimport { dataReshapeByEncoding, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { measureDepth } from 'src/pipeline/utils'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Dimension,\n Encoding,\n FoldInfo,\n MeasureGroup,\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 { dimensions = [], measures = [], encoding, chartType } = advancedVSeed\n\n const datasetList: Dataset[] = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n const measureGroups: Array<MeasureGroup[]> = []\n\n const depth = measureDepth(measures)\n if (depth === 3) {\n measures.forEach((measure: MeasureGroup) => {\n measureGroups.push(measure.children as unknown as MeasureGroup[])\n })\n } else if (depth === 2) {\n measureGroups.push(measures as unknown as MeasureGroup[])\n }\n\n measureGroups.forEach((measures: MeasureGroup[], index) => {\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2 groups in dualAxis')\n }\n\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const primaryMeasures = measures[0]\n const secondaryMeasures = measures[1] || []\n\n if (primaryMeasures && primaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(primaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (secondaryMeasures && secondaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(secondaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(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","dimensions","measures","encoding","chartType","datasetList","datasetReshapeInfo","measureGroups","depth","measureDepth","measure","index","Error","foldInfoList","unfoldInfoList","datasets","primaryMeasures","secondaryMeasures","newDataset","foldInfo","unfoldInfo","dataReshapeByEncoding","uniqueBy","item","FoldPrimaryMeasureValue","getColorMeasureId","FoldSecondaryMeasureValue","d","prev","cur","reshapeInfo"],"mappings":";;;;AAiBO,MAAMA,+BAA6C,CAACC,eAAeC;IACxE,MAAMC,SAAS;QAAE,GAAGF,aAAa;IAAC;IAClC,MAAM,EAAEG,KAAK,EAAE,GAAGF;IAClB,MAAM,EAAEG,OAAO,EAAE,GAAGD;IACpB,MAAM,EAAEE,aAAa,EAAE,EAAEC,WAAW,EAAE,EAAEC,QAAQ,EAAEC,SAAS,EAAE,GAAGR;IAEhE,MAAMS,cAAyB,EAAE;IACjC,MAAMC,qBAAyC,EAAE;IAEjD,MAAMC,gBAAuC,EAAE;IAE/C,MAAMC,QAAQC,aAAaP;IAC3B,IAAIM,AAAU,MAAVA,OACFN,SAAS,OAAO,CAAC,CAACQ;QAChBH,cAAc,IAAI,CAACG,QAAQ,QAAQ;IACrC;SACK,IAAIF,AAAU,MAAVA,OACTD,cAAc,IAAI,CAACL;IAGrBK,cAAc,OAAO,CAAC,CAACL,UAA0BS;QAC/C,IAAIT,SAAS,MAAM,GAAG,GACpB,MAAM,IAAIU,MAAM;QAGlB,MAAMC,eAA2B,EAAE;QACnC,MAAMC,iBAA+B,EAAE;QAEvC,MAAMC,WAAsB,EAAE;QAC9B,MAAMC,kBAAkBd,QAAQ,CAAC,EAAE;QACnC,MAAMe,oBAAoBf,QAAQ,CAAC,EAAE,IAAI,EAAE;QAE3C,IAAIc,mBAAmBA,gBAAgB,QAAQ,EAAE;YAC/C,MAAM,EACJ,SAASE,UAAU,EACnBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBACFrB,SACAsB,SAASrB,YAAY,CAACsB,OAASA,KAAK,EAAE,GACtCD,SAASN,gBAAgB,QAAQ,EAAE,CAACO,OAASA,KAAK,EAAE,GACpDpB,UACA;gBACE,eAAe;gBACf,kBAAkB,GAAGqB,0BAA0Bb,OAAO;gBACtD,gBAAgBc,kBAAkB7B;YACpC;YAGFmB,SAAS,IAAI,CAACG;YACdL,aAAa,IAAI,CAACM;YAClBL,eAAe,IAAI,CAACM;QACtB;QAEA,IAAIH,qBAAqBA,kBAAkB,QAAQ,EAAE;YACnD,MAAM,EACJ,SAASC,UAAU,EACnBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBACFrB,SACAsB,SAASrB,YAAY,CAACsB,OAASA,KAAK,EAAE,GACtCD,SAASL,kBAAkB,QAAQ,EAAE,CAACM,OAASA,KAAK,EAAE,GACtDpB,UACA;gBACE,eAAe;gBACf,kBAAkB,GAAGuB,4BAA4Bf,OAAO;gBACxD,gBAAgBc,kBAAkB7B;YACpC;YAGFmB,SAAS,IAAI,CAACG;YACdL,aAAa,IAAI,CAACM;YAClBL,eAAe,IAAI,CAACM;QACtB;QAEA,MAAMA,aAAyB;YAC7B,GAAGN,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,GAAG1B,UAAU,CAAC,EAAEO,OAAO;YAC3BA;YACA,UAAUE,YAAY,CAAC,EAAE;YACzB,cAAcA;YACd,YAAYO;QACd;QAEAd,mBAAmB,IAAI,CAACwB;QACxBzB,YAAY,IAAI,CAACU,SAAS,IAAI,CAAC;IACjC;IAEA,OAAO;QACL,GAAGjB,MAAM;QACT,SAASO;QACT,oBAAoBC;IACtB;AACF"}
@@ -7,14 +7,11 @@ const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
7
7
  };
8
8
  const { vseed } = context;
9
9
  const { dataset } = vseed;
10
- const { dimensions, measures, encoding } = advancedVSeed;
11
- if (!measures || !dimensions || !dataset || !encoding) return result;
12
- if (0 === measures.length) throw new Error('measures can not be empty');
10
+ const { dimensions = [], measures = [], encoding } = advancedVSeed;
13
11
  const measureGroups = [];
14
12
  if (measures) measures.forEach((measure)=>{
15
13
  if (measure.children && measure.children.length > 0) measureGroups.push(measure);
16
14
  });
17
- const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
18
15
  const datasets = [];
19
16
  const datasetReshapeInfo = [];
20
17
  measureGroups.forEach((measureGroup, index)=>{
@@ -22,7 +19,7 @@ const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
22
19
  if (!measures) return;
23
20
  const groupId = measureGroup.id;
24
21
  const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (item)=>item.id), uniqueBy(measures, (item)=>item.id), encoding, {
25
- colorItemAsId: hasEncoding,
22
+ colorItemAsId: false,
26
23
  foldMeasureValue: `${FoldMeasureValue}${groupId}`,
27
24
  colorMeasureId: getColorMeasureId(advancedVSeed)
28
25
  });
@@ -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 type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Dimension,\n Encoding,\n MeasureGroup,\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 { dimensions, measures, encoding } = advancedVSeed\n if (!measures || !dimensions || !dataset || !encoding) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n const measureGroups: MeasureGroup[] = []\n if (measures) {\n measures.forEach((measure: MeasureGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n const hasEncoding = (vseed.dimensions || []).some((item: Dimension) => item.encoding)\n\n const datasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measureGroups.forEach((measureGroup, index) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(measures, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: hasEncoding,\n foldMeasureValue: `${FoldMeasureValue}${groupId}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\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","dimensions","measures","encoding","Error","measureGroups","measure","hasEncoding","item","datasets","datasetReshapeInfo","measureGroup","index","groupId","newSubDataset","foldInfo","unfoldInfo","dataReshapeByEncoding","uniqueBy","FoldMeasureValue","getColorMeasureId","reshapeInfo"],"mappings":";;;AAcO,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,UAAU,EAAEC,QAAQ,EAAEC,QAAQ,EAAE,GAAGP;IAC3C,IAAI,CAACM,YAAY,CAACD,cAAc,CAACD,WAAW,CAACG,UAC3C,OAAOL;IAGT,IAAII,AAAoB,MAApBA,SAAS,MAAM,EACjB,MAAM,IAAIE,MAAM;IAGlB,MAAMC,gBAAgC,EAAE;IACxC,IAAIH,UACFA,SAAS,OAAO,CAAC,CAACI;QAChB,IAAIA,QAAQ,QAAQ,IAAIA,QAAQ,QAAQ,CAAC,MAAM,GAAG,GAChDD,cAAc,IAAI,CAACC;IAEvB;IAEF,MAAMC,cAAeR,AAAAA,CAAAA,MAAM,UAAU,IAAI,EAAC,EAAG,IAAI,CAAC,CAACS,OAAoBA,KAAK,QAAQ;IAEpF,MAAMC,WAAoB,EAAE;IAC5B,MAAMC,qBAAyC,EAAE;IAEjDL,cAAc,OAAO,CAAC,CAACM,cAAcC;QACnC,MAAMV,WAAWS,aAAa,QAAQ;QACtC,IAAI,CAACT,UACH;QAEF,MAAMW,UAAUF,aAAa,EAAE;QAC/B,MAAM,EACJ,SAASG,aAAa,EACtBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBACFjB,SACAkB,SAASjB,YAAY,CAACO,OAASA,KAAK,EAAE,GACtCU,SAAShB,UAAU,CAACM,OAASA,KAAK,EAAE,GACpCL,UACA;YACE,eAAeI;YACf,kBAAkB,GAAGY,mBAAmBN,SAAS;YACjD,gBAAgBO,kBAAkBxB;QACpC;QAGF,MAAMyB,cAAc;YAClB,IAAIR;YACJD;YACAG;YACAC;QACF;QACAP,SAAS,IAAI,CAACK;QACdJ,mBAAmB,IAAI,CAACW;IAC1B;IAEA,OAAO;QACL,GAAGvB,MAAM;QACT,SAASW;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 type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Dimension,\n Encoding,\n MeasureGroup,\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 { dimensions = [], measures = [], encoding } = advancedVSeed\n\n const measureGroups: MeasureGroup[] = []\n if (measures) {\n measures.forEach((measure: MeasureGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n\n const datasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measureGroups.forEach((measureGroup, index) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(measures, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldMeasureValue}${groupId}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\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","dimensions","measures","encoding","measureGroups","measure","datasets","datasetReshapeInfo","measureGroup","index","groupId","newSubDataset","foldInfo","unfoldInfo","dataReshapeByEncoding","uniqueBy","item","FoldMeasureValue","getColorMeasureId","reshapeInfo"],"mappings":";;;AAcO,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,aAAa,EAAE,EAAEC,WAAW,EAAE,EAAEC,QAAQ,EAAE,GAAGP;IAErD,MAAMQ,gBAAgC,EAAE;IACxC,IAAIF,UACFA,SAAS,OAAO,CAAC,CAACG;QAChB,IAAIA,QAAQ,QAAQ,IAAIA,QAAQ,QAAQ,CAAC,MAAM,GAAG,GAChDD,cAAc,IAAI,CAACC;IAEvB;IAGF,MAAMC,WAAoB,EAAE;IAC5B,MAAMC,qBAAyC,EAAE;IAEjDH,cAAc,OAAO,CAAC,CAACI,cAAcC;QACnC,MAAMP,WAAWM,aAAa,QAAQ;QACtC,IAAI,CAACN,UACH;QAEF,MAAMQ,UAAUF,aAAa,EAAE;QAC/B,MAAM,EACJ,SAASG,aAAa,EACtBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBACFd,SACAe,SAASd,YAAY,CAACe,OAASA,KAAK,EAAE,GACtCD,SAASb,UAAU,CAACc,OAASA,KAAK,EAAE,GACpCb,UACA;YACE,eAAe;YACf,kBAAkB,GAAGc,mBAAmBP,SAAS;YACjD,gBAAgBQ,kBAAkBtB;QACpC;QAGF,MAAMuB,cAAc;YAClB,IAAIT;YACJD;YACAG;YACAC;QACF;QACAP,SAAS,IAAI,CAACK;QACdJ,mBAAmB,IAAI,CAACY;IAC1B;IAEA,OAAO;QACL,GAAGrB,MAAM;QACT,SAASQ;QACT,oBAAoBC;IACtB;AACF"}
@@ -7,8 +7,7 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
7
7
  };
8
8
  const { vseed } = context;
9
9
  const { dataset } = vseed;
10
- const { dimensions, measures, encoding, chartType } = advancedVSeed;
11
- if (!measures || !dimensions || !dataset || !encoding) return result;
10
+ const { dimensions = [], measures = [], encoding, chartType } = advancedVSeed;
12
11
  const measureGroups = [];
13
12
  const depth = measureDepth(measures);
14
13
  if (3 === depth) measures.forEach((measure)=>{
@@ -18,8 +17,7 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
18
17
  const datasetList = [];
19
18
  const datasetReshapeInfo = [];
20
19
  measureGroups.forEach((measures, index)=>{
21
- if (0 === measures.length) throw new Error('measures can not be empty');
22
- if (measures.length > 2) throw new Error('measures can not be more than 2');
20
+ if (measures.length > 2) throw new Error('measures can not be more than 2 groups in scatter');
23
21
  const foldInfoList = [];
24
22
  const unfoldInfoList = [];
25
23
  const datasets = [];
@@ -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 { dataReshapeByEncoding, FoldXMeasureValue, FoldYMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { measureDepth } from 'src/pipeline/utils'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Encoding,\n FoldInfo,\n MeasureGroup,\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 { dimensions, measures, encoding, chartType } = advancedVSeed\n\n if (!measures || !dimensions || !dataset || !encoding) {\n return result\n }\n\n const measureGroups: Array<MeasureGroup[]> = []\n\n const depth = measureDepth(measures)\n if (depth === 3) {\n measures.forEach((measure: MeasureGroup) => {\n measureGroups.push(measure.children as unknown as MeasureGroup[])\n })\n } else if (depth === 2) {\n measureGroups.push(measures)\n }\n\n const datasetList: Dataset[] = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measureGroups.forEach((measures: MeasureGroup[], index) => {\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2')\n }\n\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const xMeasures = measures[0]\n const yMeasures = measures[1] || xMeasures\n\n if (xMeasures && xMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding as Encoding, {\n foldMeasureValue: `${FoldXMeasureValue}${index}`,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n })\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (yMeasures && yMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(dataset, dimensions, yMeasures.children, encoding as Encoding, {\n foldMeasureValue: `${FoldYMeasureValue}${index}`,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n })\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(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[0].map((d, index) => ({ ...d, ...(datasets[1]?.[index] || {}) })))\n })\n\n return {\n ...result,\n dataset: datasetList,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n"],"names":["pivotReshapeWithScatterEncoding","advancedVSeed","context","result","vseed","dataset","dimensions","measures","encoding","chartType","measureGroups","depth","measureDepth","measure","datasetList","datasetReshapeInfo","index","Error","foldInfoList","unfoldInfoList","datasets","xMeasures","yMeasures","newDataset","foldInfo","unfoldInfo","dataReshapeByEncoding","FoldXMeasureValue","getColorMeasureId","FoldYMeasureValue","d","prev","cur","reshapeInfo"],"mappings":";;;AAeO,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,UAAU,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,SAAS,EAAE,GAAGR;IAEtD,IAAI,CAACM,YAAY,CAACD,cAAc,CAACD,WAAW,CAACG,UAC3C,OAAOL;IAGT,MAAMO,gBAAuC,EAAE;IAE/C,MAAMC,QAAQC,aAAaL;IAC3B,IAAII,AAAU,MAAVA,OACFJ,SAAS,OAAO,CAAC,CAACM;QAChBH,cAAc,IAAI,CAACG,QAAQ,QAAQ;IACrC;SACK,IAAIF,AAAU,MAAVA,OACTD,cAAc,IAAI,CAACH;IAGrB,MAAMO,cAAyB,EAAE;IACjC,MAAMC,qBAAyC,EAAE;IAEjDL,cAAc,OAAO,CAAC,CAACH,UAA0BS;QAC/C,IAAIT,AAAoB,MAApBA,SAAS,MAAM,EACjB,MAAM,IAAIU,MAAM;QAGlB,IAAIV,SAAS,MAAM,GAAG,GACpB,MAAM,IAAIU,MAAM;QAGlB,MAAMC,eAA2B,EAAE;QACnC,MAAMC,iBAA+B,EAAE;QAEvC,MAAMC,WAAsB,EAAE;QAC9B,MAAMC,YAAYd,QAAQ,CAAC,EAAE;QAC7B,MAAMe,YAAYf,QAAQ,CAAC,EAAE,IAAIc;QAEjC,IAAIA,aAAaA,UAAU,QAAQ,EAAE;YACnC,MAAM,EACJ,SAASE,UAAU,EACnBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBAAsBrB,SAASC,YAAYe,UAAU,QAAQ,EAAEb,UAAsB;gBACvF,kBAAkB,GAAGmB,oBAAoBX,OAAO;gBAChD,eAAe;gBACf,gBAAgBY,kBAAkB3B;YACpC;YAEAmB,SAAS,IAAI,CAACG;YACdL,aAAa,IAAI,CAACM;YAClBL,eAAe,IAAI,CAACM;QACtB;QAEA,IAAIH,aAAaA,UAAU,QAAQ,EAAE;YACnC,MAAM,EACJ,SAASC,UAAU,EACnBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBAAsBrB,SAASC,YAAYgB,UAAU,QAAQ,EAAEd,UAAsB;gBACvF,kBAAkB,GAAGqB,oBAAoBb,OAAO;gBAChD,eAAe;gBACf,gBAAgBY,kBAAkB3B;YACpC;YAEAmB,SAAS,IAAI,CAACG;YACdL,aAAa,IAAI,CAACM;YAClBL,eAAe,IAAI,CAACM;QACtB;QAEA,MAAMA,aAAyB;YAC7B,GAAGN,cAAc,CAAC,EAAE;YACpB,YAAYA,eAAe,OAAO,CAAC,CAACW,IAAMA,EAAE,UAAU;YACtD,YAAYX,eAAe,MAAM,CAAC,CAACY,MAAMC,MAAS;oBAAE,GAAGD,IAAI;oBAAE,GAAGC,IAAI,UAAU;gBAAC,IAAI,CAAC;QACtF;QAEA,MAAMC,cAAc;YAClB,IAAI,GAAGxB,UAAU,CAAC,EAAEO,OAAO;YAC3BA;YACA,UAAUE,YAAY,CAAC,EAAE;YACzB,cAAcA;YACd,YAAYO;QACd;QAEAV,mBAAmB,IAAI,CAACkB;QACxBnB,YAAY,IAAI,CAACM,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAACU,GAAGd,QAAW;gBAAE,GAAGc,CAAC;gBAAE,GAAIV,QAAQ,CAAC,EAAE,EAAE,CAACJ,MAAM,IAAI,CAAC,CAAC;YAAE;IAC1F;IAEA,OAAO;QACL,GAAGb,MAAM;QACT,SAASW;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 { dataReshapeByEncoding, FoldXMeasureValue, FoldYMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { measureDepth } from 'src/pipeline/utils'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Encoding,\n FoldInfo,\n MeasureGroup,\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 { dimensions = [], measures = [], encoding, chartType } = advancedVSeed\n\n const measureGroups: Array<MeasureGroup[]> = []\n\n const depth = measureDepth(measures)\n if (depth === 3) {\n measures.forEach((measure: MeasureGroup) => {\n measureGroups.push(measure.children as unknown as MeasureGroup[])\n })\n } else if (depth === 2) {\n measureGroups.push(measures)\n }\n\n const datasetList: Dataset[] = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measureGroups.forEach((measures: MeasureGroup[], index) => {\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2 groups in scatter')\n }\n\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const xMeasures = measures[0]\n const yMeasures = measures[1] || xMeasures\n\n if (xMeasures && xMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding as Encoding, {\n foldMeasureValue: `${FoldXMeasureValue}${index}`,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n })\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (yMeasures && yMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(dataset, dimensions, yMeasures.children, encoding as Encoding, {\n foldMeasureValue: `${FoldYMeasureValue}${index}`,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n })\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(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[0].map((d, index) => ({ ...d, ...(datasets[1]?.[index] || {}) })))\n })\n\n return {\n ...result,\n dataset: datasetList,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n"],"names":["pivotReshapeWithScatterEncoding","advancedVSeed","context","result","vseed","dataset","dimensions","measures","encoding","chartType","measureGroups","depth","measureDepth","measure","datasetList","datasetReshapeInfo","index","Error","foldInfoList","unfoldInfoList","datasets","xMeasures","yMeasures","newDataset","foldInfo","unfoldInfo","dataReshapeByEncoding","FoldXMeasureValue","getColorMeasureId","FoldYMeasureValue","d","prev","cur","reshapeInfo"],"mappings":";;;AAeO,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,aAAa,EAAE,EAAEC,WAAW,EAAE,EAAEC,QAAQ,EAAEC,SAAS,EAAE,GAAGR;IAEhE,MAAMS,gBAAuC,EAAE;IAE/C,MAAMC,QAAQC,aAAaL;IAC3B,IAAII,AAAU,MAAVA,OACFJ,SAAS,OAAO,CAAC,CAACM;QAChBH,cAAc,IAAI,CAACG,QAAQ,QAAQ;IACrC;SACK,IAAIF,AAAU,MAAVA,OACTD,cAAc,IAAI,CAACH;IAGrB,MAAMO,cAAyB,EAAE;IACjC,MAAMC,qBAAyC,EAAE;IAEjDL,cAAc,OAAO,CAAC,CAACH,UAA0BS;QAC/C,IAAIT,SAAS,MAAM,GAAG,GACpB,MAAM,IAAIU,MAAM;QAGlB,MAAMC,eAA2B,EAAE;QACnC,MAAMC,iBAA+B,EAAE;QAEvC,MAAMC,WAAsB,EAAE;QAC9B,MAAMC,YAAYd,QAAQ,CAAC,EAAE;QAC7B,MAAMe,YAAYf,QAAQ,CAAC,EAAE,IAAIc;QAEjC,IAAIA,aAAaA,UAAU,QAAQ,EAAE;YACnC,MAAM,EACJ,SAASE,UAAU,EACnBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBAAsBrB,SAASC,YAAYe,UAAU,QAAQ,EAAEb,UAAsB;gBACvF,kBAAkB,GAAGmB,oBAAoBX,OAAO;gBAChD,eAAe;gBACf,gBAAgBY,kBAAkB3B;YACpC;YAEAmB,SAAS,IAAI,CAACG;YACdL,aAAa,IAAI,CAACM;YAClBL,eAAe,IAAI,CAACM;QACtB;QAEA,IAAIH,aAAaA,UAAU,QAAQ,EAAE;YACnC,MAAM,EACJ,SAASC,UAAU,EACnBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBAAsBrB,SAASC,YAAYgB,UAAU,QAAQ,EAAEd,UAAsB;gBACvF,kBAAkB,GAAGqB,oBAAoBb,OAAO;gBAChD,eAAe;gBACf,gBAAgBY,kBAAkB3B;YACpC;YAEAmB,SAAS,IAAI,CAACG;YACdL,aAAa,IAAI,CAACM;YAClBL,eAAe,IAAI,CAACM;QACtB;QAEA,MAAMA,aAAyB;YAC7B,GAAGN,cAAc,CAAC,EAAE;YACpB,YAAYA,eAAe,OAAO,CAAC,CAACW,IAAMA,EAAE,UAAU;YACtD,YAAYX,eAAe,MAAM,CAAC,CAACY,MAAMC,MAAS;oBAAE,GAAGD,IAAI;oBAAE,GAAGC,IAAI,UAAU;gBAAC,IAAI,CAAC;QACtF;QAEA,MAAMC,cAAc;YAClB,IAAI,GAAGxB,UAAU,CAAC,EAAEO,OAAO;YAC3BA;YACA,UAAUE,YAAY,CAAC,EAAE;YACzB,cAAcA;YACd,YAAYO;QACd;QAEAV,mBAAmB,IAAI,CAACkB;QACxBnB,YAAY,IAAI,CAACM,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAACU,GAAGd,QAAW;gBAAE,GAAGc,CAAC;gBAAE,GAAIV,QAAQ,CAAC,EAAE,EAAE,CAACJ,MAAM,IAAI,CAAC,CAAC;YAAE;IAC1F;IAEA,OAAO;QACL,GAAGb,MAAM;QACT,SAASW;QACT,oBAAoBC;IACtB;AACF"}
@@ -7,19 +7,16 @@ const reshapeWithDualEncoding = (advancedVSeed, context)=>{
7
7
  };
8
8
  const { vseed } = context;
9
9
  const { dataset } = vseed;
10
- const { dimensions, measures, encoding, chartType } = advancedVSeed;
11
- if (!measures || !dimensions || !dataset || !encoding) return result;
12
- if (0 === measures.length) throw new Error('measures can not be empty');
13
- if (measures.length > 2) throw new Error('measures can not be more than 2');
10
+ const { dimensions = [], measures = [], encoding, chartType } = advancedVSeed;
11
+ if (measures.length > 2) throw new Error('measures can not be more than 2 groups in dualAxis');
14
12
  const foldInfoList = [];
15
13
  const unfoldInfoList = [];
16
14
  const datasets = [];
17
15
  const primaryMeasures = measures[0];
18
16
  const secondaryMeasures = measures[1] || [];
19
- const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
20
17
  if (primaryMeasures && primaryMeasures.children) {
21
18
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (item)=>item.id), uniqueBy(primaryMeasures.children, (item)=>item.id), encoding, {
22
- colorItemAsId: hasEncoding,
19
+ colorItemAsId: false,
23
20
  foldMeasureValue: FoldPrimaryMeasureValue,
24
21
  colorMeasureId: getColorMeasureId(advancedVSeed)
25
22
  });
@@ -29,6 +26,7 @@ const reshapeWithDualEncoding = (advancedVSeed, context)=>{
29
26
  }
30
27
  if (secondaryMeasures && secondaryMeasures.children) {
31
28
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (item)=>item.id), uniqueBy(secondaryMeasures.children, (item)=>item.id), encoding, {
29
+ colorItemAsId: false,
32
30
  foldMeasureValue: FoldSecondaryMeasureValue,
33
31
  colorMeasureId: getColorMeasureId(advancedVSeed)
34
32
  });
@@ -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 } from 'remeda'\nimport { dataReshapeByEncoding, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n Dimension,\n Encoding,\n FoldInfo,\n MeasureGroup,\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 { dimensions, measures, encoding, chartType } = advancedVSeed\n\n if (!measures || !dimensions || !dataset || !encoding) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2')\n }\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const primaryMeasures = measures[0] as MeasureGroup\n const secondaryMeasures = (measures[1] || []) as MeasureGroup\n const hasEncoding = (vseed.dimensions || []).some((item: Dimension) => item.encoding)\n\n if (primaryMeasures && primaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(primaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: hasEncoding,\n foldMeasureValue: FoldPrimaryMeasureValue,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (secondaryMeasures && secondaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(secondaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n foldMeasureValue: FoldSecondaryMeasureValue,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(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","dimensions","measures","encoding","chartType","Error","foldInfoList","unfoldInfoList","datasets","primaryMeasures","secondaryMeasures","hasEncoding","item","newDataset","foldInfo","unfoldInfo","dataReshapeByEncoding","uniqueBy","FoldPrimaryMeasureValue","getColorMeasureId","FoldSecondaryMeasureValue","d","prev","cur","String"],"mappings":";;;AAeO,MAAMA,0BAAwC,CAACC,eAAeC;IACnE,MAAMC,SAAS;QAAE,GAAGF,aAAa;IAAC;IAClC,MAAM,EAAEG,KAAK,EAAE,GAAGF;IAClB,MAAM,EAAEG,OAAO,EAAE,GAAGD;IACpB,MAAM,EAAEE,UAAU,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,SAAS,EAAE,GAAGR;IAEtD,IAAI,CAACM,YAAY,CAACD,cAAc,CAACD,WAAW,CAACG,UAC3C,OAAOL;IAGT,IAAII,AAAoB,MAApBA,SAAS,MAAM,EACjB,MAAM,IAAIG,MAAM;IAGlB,IAAIH,SAAS,MAAM,GAAG,GACpB,MAAM,IAAIG,MAAM;IAElB,MAAMC,eAA2B,EAAE;IACnC,MAAMC,iBAA+B,EAAE;IAEvC,MAAMC,WAAsB,EAAE;IAC9B,MAAMC,kBAAkBP,QAAQ,CAAC,EAAE;IACnC,MAAMQ,oBAAqBR,QAAQ,CAAC,EAAE,IAAI,EAAE;IAC5C,MAAMS,cAAeZ,AAAAA,CAAAA,MAAM,UAAU,IAAI,EAAC,EAAG,IAAI,CAAC,CAACa,OAAoBA,KAAK,QAAQ;IAEpF,IAAIH,mBAAmBA,gBAAgB,QAAQ,EAAE;QAC/C,MAAM,EACJ,SAASI,UAAU,EACnBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBACFhB,SACAiB,SAAShB,YAAY,CAACW,OAASA,KAAK,EAAE,GACtCK,SAASR,gBAAgB,QAAQ,EAAE,CAACG,OAASA,KAAK,EAAE,GACpDT,UACA;YACE,eAAeQ;YACf,kBAAkBO;YAClB,gBAAgBC,kBAAkBvB;QACpC;QAGFY,SAAS,IAAI,CAACK;QACdP,aAAa,IAAI,CAACQ;QAClBP,eAAe,IAAI,CAACQ;IACtB;IAEA,IAAIL,qBAAqBA,kBAAkB,QAAQ,EAAE;QACnD,MAAM,EACJ,SAASG,UAAU,EACnBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBACFhB,SACAiB,SAAShB,YAAY,CAACW,OAASA,KAAK,EAAE,GACtCK,SAASP,kBAAkB,QAAQ,EAAE,CAACE,OAASA,KAAK,EAAE,GACtDT,UACA;YACE,kBAAkBiB;YAClB,gBAAgBD,kBAAkBvB;QACpC;QAGFY,SAAS,IAAI,CAACK;QACdP,aAAa,IAAI,CAACQ;QAClBP,eAAe,IAAI,CAACQ;IACtB;IAEA,MAAMA,aAAyB;QAC7B,GAAGR,cAAc,CAAC,EAAE;QACpB,YAAYA,eAAe,OAAO,CAAC,CAACc,IAAMA,EAAE,UAAU;QACtD,YAAYd,eAAe,MAAM,CAAC,CAACe,MAAMC,MAAS;gBAAE,GAAGD,IAAI;gBAAE,GAAGC,IAAI,UAAU;YAAC,IAAI,CAAC;IACtF;IAEA,OAAO;QACL,GAAGzB,MAAM;QACT,SAASU;QACT,oBAAoB;YAClB;gBACE,IAAIgB,OAAOpB;gBACX,OAAO;gBACP,UAAUE,YAAY,CAAC,EAAE;gBACzB,cAAcA;gBACd,YAAYS;YACd;SACD;IACH;AACF"}
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 } from 'remeda'\nimport { dataReshapeByEncoding, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n Dimension,\n Encoding,\n FoldInfo,\n MeasureGroup,\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 { dimensions = [], measures = [], encoding, chartType } = advancedVSeed\n\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2 groups in dualAxis')\n }\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const primaryMeasures = measures[0] as MeasureGroup\n const secondaryMeasures = (measures[1] || []) as MeasureGroup\n\n if (primaryMeasures && primaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(primaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: FoldPrimaryMeasureValue,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (secondaryMeasures && secondaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(secondaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: FoldSecondaryMeasureValue,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(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","dimensions","measures","encoding","chartType","Error","foldInfoList","unfoldInfoList","datasets","primaryMeasures","secondaryMeasures","newDataset","foldInfo","unfoldInfo","dataReshapeByEncoding","uniqueBy","item","FoldPrimaryMeasureValue","getColorMeasureId","FoldSecondaryMeasureValue","d","prev","cur","String"],"mappings":";;;AAeO,MAAMA,0BAAwC,CAACC,eAAeC;IACnE,MAAMC,SAAS;QAAE,GAAGF,aAAa;IAAC;IAClC,MAAM,EAAEG,KAAK,EAAE,GAAGF;IAClB,MAAM,EAAEG,OAAO,EAAE,GAAGD;IACpB,MAAM,EAAEE,aAAa,EAAE,EAAEC,WAAW,EAAE,EAAEC,QAAQ,EAAEC,SAAS,EAAE,GAAGR;IAEhE,IAAIM,SAAS,MAAM,GAAG,GACpB,MAAM,IAAIG,MAAM;IAElB,MAAMC,eAA2B,EAAE;IACnC,MAAMC,iBAA+B,EAAE;IAEvC,MAAMC,WAAsB,EAAE;IAC9B,MAAMC,kBAAkBP,QAAQ,CAAC,EAAE;IACnC,MAAMQ,oBAAqBR,QAAQ,CAAC,EAAE,IAAI,EAAE;IAE5C,IAAIO,mBAAmBA,gBAAgB,QAAQ,EAAE;QAC/C,MAAM,EACJ,SAASE,UAAU,EACnBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBACFd,SACAe,SAASd,YAAY,CAACe,OAASA,KAAK,EAAE,GACtCD,SAASN,gBAAgB,QAAQ,EAAE,CAACO,OAASA,KAAK,EAAE,GACpDb,UACA;YACE,eAAe;YACf,kBAAkBc;YAClB,gBAAgBC,kBAAkBtB;QACpC;QAGFY,SAAS,IAAI,CAACG;QACdL,aAAa,IAAI,CAACM;QAClBL,eAAe,IAAI,CAACM;IACtB;IAEA,IAAIH,qBAAqBA,kBAAkB,QAAQ,EAAE;QACnD,MAAM,EACJ,SAASC,UAAU,EACnBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBACFd,SACAe,SAASd,YAAY,CAACe,OAASA,KAAK,EAAE,GACtCD,SAASL,kBAAkB,QAAQ,EAAE,CAACM,OAASA,KAAK,EAAE,GACtDb,UACA;YACE,eAAe;YACf,kBAAkBgB;YAClB,gBAAgBD,kBAAkBtB;QACpC;QAGFY,SAAS,IAAI,CAACG;QACdL,aAAa,IAAI,CAACM;QAClBL,eAAe,IAAI,CAACM;IACtB;IAEA,MAAMA,aAAyB;QAC7B,GAAGN,cAAc,CAAC,EAAE;QACpB,YAAYA,eAAe,OAAO,CAAC,CAACa,IAAMA,EAAE,UAAU;QACtD,YAAYb,eAAe,MAAM,CAAC,CAACc,MAAMC,MAAS;gBAAE,GAAGD,IAAI;gBAAE,GAAGC,IAAI,UAAU;YAAC,IAAI,CAAC;IACtF;IAEA,OAAO;QACL,GAAGxB,MAAM;QACT,SAASU;QACT,oBAAoB;YAClB;gBACE,IAAIe,OAAOnB;gBACX,OAAO;gBACP,UAAUE,YAAY,CAAC,EAAE;gBACzB,cAAcA;gBACd,YAAYO;YACd;SACD;IACH;AACF"}
@@ -8,12 +8,9 @@ const reshapeWithEncoding = (advancedVSeed, context)=>{
8
8
  };
9
9
  const { vseed } = context;
10
10
  const { dataset, chartType } = vseed;
11
- const { dimensions, measures, encoding } = advancedVSeed;
12
- if (!measures || !dimensions || !dataset || !encoding) return result;
13
- if (0 === measures.length) throw new Error('measures can not be empty');
14
- const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
11
+ const { dimensions = [], measures = [], encoding } = advancedVSeed;
15
12
  const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (item)=>item.id), uniqueBy(findAllMeasures(measures), (item)=>item.id), encoding, {
16
- colorItemAsId: hasEncoding,
13
+ colorItemAsId: false,
17
14
  colorMeasureId: getColorMeasureId(advancedVSeed)
18
15
  });
19
16
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/reshape/reshapeWithEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeWithEncoding.ts"],"sourcesContent":["import { uniqueBy } from 'remeda'\nimport { dataReshapeByEncoding } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, ColumnParallel, Dimension, Encoding } from 'src/types'\n\nexport const reshapeWithEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { dimensions, measures, encoding } = advancedVSeed\n\n if (!measures || !dimensions || !dataset || !encoding) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n const hasEncoding = (vseed.dimensions || []).some((item: Dimension) => item.encoding)\n\n const {\n dataset: newDatasets,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(findAllMeasures(measures), (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: hasEncoding,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n },\n )\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: String(chartType),\n index: 0,\n foldInfo,\n unfoldInfo,\n },\n ],\n dimensions,\n measures,\n }\n}\n"],"names":["reshapeWithEncoding","advancedVSeed","context","result","vseed","dataset","chartType","dimensions","measures","encoding","Error","hasEncoding","item","newDatasets","foldInfo","unfoldInfo","dataReshapeByEncoding","uniqueBy","findAllMeasures","getColorMeasureId","String"],"mappings":";;;;AAMO,MAAMA,sBAAoC,CAACC,eAAeC;IAC/D,MAAMC,SAAS;QAAE,GAAGF,aAAa;IAAC;IAClC,MAAM,EAAEG,KAAK,EAAE,GAAGF;IAClB,MAAM,EAAEG,OAAO,EAAEC,SAAS,EAAE,GAAGF;IAC/B,MAAM,EAAEG,UAAU,EAAEC,QAAQ,EAAEC,QAAQ,EAAE,GAAGR;IAE3C,IAAI,CAACO,YAAY,CAACD,cAAc,CAACF,WAAW,CAACI,UAC3C,OAAON;IAGT,IAAIK,AAAoB,MAApBA,SAAS,MAAM,EACjB,MAAM,IAAIE,MAAM;IAGlB,MAAMC,cAAeP,AAAAA,CAAAA,MAAM,UAAU,IAAI,EAAC,EAAG,IAAI,CAAC,CAACQ,OAAoBA,KAAK,QAAQ;IAEpF,MAAM,EACJ,SAASC,WAAW,EACpBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBACFX,SACAY,SAASV,YAAY,CAACK,OAASA,KAAK,EAAE,GACtCK,SAASC,gBAAgBV,WAAW,CAACI,OAASA,KAAK,EAAE,GACrDH,UACA;QACE,eAAeE;QACf,gBAAgBQ,kBAAkBlB;IACpC;IAGF,OAAO;QACL,GAAGE,MAAM;QACT,SAASU;QACT,oBAAoB;YAClB;gBACE,IAAIO,OAAOd;gBACX,OAAO;gBACPQ;gBACAC;YACF;SACD;QACDR;QACAC;IACF;AACF"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/reshape/reshapeWithEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeWithEncoding.ts"],"sourcesContent":["import { uniqueBy } from 'remeda'\nimport { dataReshapeByEncoding } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, ColumnParallel, Dimension, Encoding } from 'src/types'\n\nexport const reshapeWithEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding } = advancedVSeed\n\n const {\n dataset: newDatasets,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(findAllMeasures(measures), (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n },\n )\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: String(chartType),\n index: 0,\n foldInfo,\n unfoldInfo,\n },\n ],\n dimensions,\n measures,\n }\n}\n"],"names":["reshapeWithEncoding","advancedVSeed","context","result","vseed","dataset","chartType","dimensions","measures","encoding","newDatasets","foldInfo","unfoldInfo","dataReshapeByEncoding","uniqueBy","item","findAllMeasures","getColorMeasureId","String"],"mappings":";;;;AAMO,MAAMA,sBAAoC,CAACC,eAAeC;IAC/D,MAAMC,SAAS;QAAE,GAAGF,aAAa;IAAC;IAClC,MAAM,EAAEG,KAAK,EAAE,GAAGF;IAClB,MAAM,EAAEG,OAAO,EAAEC,SAAS,EAAE,GAAGF;IAC/B,MAAM,EAAEG,aAAa,EAAE,EAAEC,WAAW,EAAE,EAAEC,QAAQ,EAAE,GAAGR;IAErD,MAAM,EACJ,SAASS,WAAW,EACpBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBACFR,SACAS,SAASP,YAAY,CAACQ,OAASA,KAAK,EAAE,GACtCD,SAASE,gBAAgBR,WAAW,CAACO,OAASA,KAAK,EAAE,GACrDN,UACA;QACE,eAAe;QACf,gBAAgBQ,kBAAkBhB;IACpC;IAGF,OAAO;QACL,GAAGE,MAAM;QACT,SAASO;QACT,oBAAoB;YAClB;gBACE,IAAIQ,OAAOZ;gBACX,OAAO;gBACPK;gBACAC;YACF;SACD;QACDL;QACAC;IACF;AACF"}
@@ -7,10 +7,8 @@ const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
7
7
  };
8
8
  const { vseed } = context;
9
9
  const { dataset } = vseed;
10
- const { dimensions, measures, encoding, chartType } = advancedVSeed;
11
- if (!measures || !dimensions || !dataset || !encoding) return result;
12
- if (0 === measures.length) throw new Error('measures can not be empty');
13
- if (measures.length > 2) throw new Error('measures can not be more than 2');
10
+ const { dimensions = [], measures = [], encoding, chartType } = advancedVSeed;
11
+ if (measures.length > 2) throw new Error('measures can not be more than 2 groups in scatter');
14
12
  const foldInfoList = [];
15
13
  const unfoldInfoList = [];
16
14
  const datasets = [];
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.ts"],"sourcesContent":["import { uniqueBy } from 'remeda'\nimport { dataReshapeByEncoding, FoldXMeasureId, FoldXMeasureValue, FoldYMeasureId, FoldYMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n Encoding,\n FoldInfo,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\nexport const reshapeWithScatterEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { dimensions, measures, encoding, chartType } = advancedVSeed\n\n if (!measures || !dimensions || !dataset || !encoding) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2')\n }\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const xMeasures = measures[0] as MeasureGroup\n const yMeasures = (measures[1] || xMeasures) as MeasureGroup\n\n if (xMeasures && xMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (d) => d.id),\n uniqueBy(xMeasures.children, (d) => d.id),\n encoding as Encoding,\n {\n foldMeasureValue: FoldXMeasureValue,\n foldMeasureId: FoldXMeasureId,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (yMeasures && yMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n datasets[0],\n uniqueBy(dimensions, (d) => d.id),\n uniqueBy(yMeasures.children, (d) => d.id),\n encoding as Encoding,\n {\n foldMeasureValue: FoldYMeasureValue,\n foldMeasureId: FoldYMeasureId,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n },\n )\n\n datasets[0] = newDataset\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(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[0],\n\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":["reshapeWithScatterEncoding","advancedVSeed","context","result","vseed","dataset","dimensions","measures","encoding","chartType","Error","foldInfoList","unfoldInfoList","datasets","xMeasures","yMeasures","newDataset","foldInfo","unfoldInfo","dataReshapeByEncoding","uniqueBy","d","FoldXMeasureValue","FoldXMeasureId","getColorMeasureId","FoldYMeasureValue","FoldYMeasureId","prev","cur","String"],"mappings":";;;AAcO,MAAMA,6BAA2C,CAACC,eAAeC;IACtE,MAAMC,SAAS;QAAE,GAAGF,aAAa;IAAC;IAClC,MAAM,EAAEG,KAAK,EAAE,GAAGF;IAClB,MAAM,EAAEG,OAAO,EAAE,GAAGD;IACpB,MAAM,EAAEE,UAAU,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,SAAS,EAAE,GAAGR;IAEtD,IAAI,CAACM,YAAY,CAACD,cAAc,CAACD,WAAW,CAACG,UAC3C,OAAOL;IAGT,IAAII,AAAoB,MAApBA,SAAS,MAAM,EACjB,MAAM,IAAIG,MAAM;IAGlB,IAAIH,SAAS,MAAM,GAAG,GACpB,MAAM,IAAIG,MAAM;IAElB,MAAMC,eAA2B,EAAE;IACnC,MAAMC,iBAA+B,EAAE;IAEvC,MAAMC,WAAsB,EAAE;IAC9B,MAAMC,YAAYP,QAAQ,CAAC,EAAE;IAC7B,MAAMQ,YAAaR,QAAQ,CAAC,EAAE,IAAIO;IAElC,IAAIA,aAAaA,UAAU,QAAQ,EAAE;QACnC,MAAM,EACJ,SAASE,UAAU,EACnBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBACFd,SACAe,SAASd,YAAY,CAACe,IAAMA,EAAE,EAAE,GAChCD,SAASN,UAAU,QAAQ,EAAE,CAACO,IAAMA,EAAE,EAAE,GACxCb,UACA;YACE,kBAAkBc;YAClB,eAAeC;YACf,eAAe;YACf,gBAAgBC,kBAAkBvB;QACpC;QAGFY,SAAS,IAAI,CAACG;QACdL,aAAa,IAAI,CAACM;QAClBL,eAAe,IAAI,CAACM;IACtB;IAEA,IAAIH,aAAaA,UAAU,QAAQ,EAAE;QACnC,MAAM,EACJ,SAASC,UAAU,EACnBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBACFN,QAAQ,CAAC,EAAE,EACXO,SAASd,YAAY,CAACe,IAAMA,EAAE,EAAE,GAChCD,SAASL,UAAU,QAAQ,EAAE,CAACM,IAAMA,EAAE,EAAE,GACxCb,UACA;YACE,kBAAkBiB;YAClB,eAAeC;YACf,eAAe;YACf,gBAAgBF,kBAAkBvB;QACpC;QAGFY,QAAQ,CAAC,EAAE,GAAGG;QACdL,aAAa,IAAI,CAACM;QAClBL,eAAe,IAAI,CAACM;IACtB;IAEA,MAAMA,aAAyB;QAC7B,GAAGN,cAAc,CAAC,EAAE;QACpB,YAAYA,eAAe,OAAO,CAAC,CAACS,IAAMA,EAAE,UAAU;QACtD,YAAYT,eAAe,MAAM,CAAC,CAACe,MAAMC,MAAS;gBAAE,GAAGD,IAAI;gBAAE,GAAGC,IAAI,UAAU;YAAC,IAAI,CAAC;IACtF;IAEA,OAAO;QACL,GAAGzB,MAAM;QACT,SAASU,QAAQ,CAAC,EAAE;QAEpB,oBAAoB;YAClB;gBACE,IAAIgB,OAAOpB;gBACX,OAAO;gBACP,UAAUE,YAAY,CAAC,EAAE;gBACzB,cAAcA;gBACd,YAAYO;YACd;SACD;IACH;AACF"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.ts"],"sourcesContent":["import { uniqueBy } from 'remeda'\nimport {\n dataReshapeByEncoding,\n FoldXMeasureId,\n FoldXMeasureValue,\n FoldYMeasureId,\n FoldYMeasureValue,\n} from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n Encoding,\n FoldInfo,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\nexport const reshapeWithScatterEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding, chartType } = advancedVSeed\n\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2 groups in scatter')\n }\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const xMeasures = measures[0] as MeasureGroup\n const yMeasures = (measures[1] || xMeasures) as MeasureGroup\n\n if (xMeasures && xMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (d) => d.id),\n uniqueBy(xMeasures.children, (d) => d.id),\n encoding as Encoding,\n {\n foldMeasureValue: FoldXMeasureValue,\n foldMeasureId: FoldXMeasureId,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (yMeasures && yMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n datasets[0],\n uniqueBy(dimensions, (d) => d.id),\n uniqueBy(yMeasures.children, (d) => d.id),\n encoding as Encoding,\n {\n foldMeasureValue: FoldYMeasureValue,\n foldMeasureId: FoldYMeasureId,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n },\n )\n\n datasets[0] = newDataset\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(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[0],\n\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":["reshapeWithScatterEncoding","advancedVSeed","context","result","vseed","dataset","dimensions","measures","encoding","chartType","Error","foldInfoList","unfoldInfoList","datasets","xMeasures","yMeasures","newDataset","foldInfo","unfoldInfo","dataReshapeByEncoding","uniqueBy","d","FoldXMeasureValue","FoldXMeasureId","getColorMeasureId","FoldYMeasureValue","FoldYMeasureId","prev","cur","String"],"mappings":";;;AAoBO,MAAMA,6BAA2C,CAACC,eAAeC;IACtE,MAAMC,SAAS;QAAE,GAAGF,aAAa;IAAC;IAClC,MAAM,EAAEG,KAAK,EAAE,GAAGF;IAClB,MAAM,EAAEG,OAAO,EAAE,GAAGD;IACpB,MAAM,EAAEE,aAAa,EAAE,EAAEC,WAAW,EAAE,EAAEC,QAAQ,EAAEC,SAAS,EAAE,GAAGR;IAEhE,IAAIM,SAAS,MAAM,GAAG,GACpB,MAAM,IAAIG,MAAM;IAElB,MAAMC,eAA2B,EAAE;IACnC,MAAMC,iBAA+B,EAAE;IAEvC,MAAMC,WAAsB,EAAE;IAC9B,MAAMC,YAAYP,QAAQ,CAAC,EAAE;IAC7B,MAAMQ,YAAaR,QAAQ,CAAC,EAAE,IAAIO;IAElC,IAAIA,aAAaA,UAAU,QAAQ,EAAE;QACnC,MAAM,EACJ,SAASE,UAAU,EACnBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBACFd,SACAe,SAASd,YAAY,CAACe,IAAMA,EAAE,EAAE,GAChCD,SAASN,UAAU,QAAQ,EAAE,CAACO,IAAMA,EAAE,EAAE,GACxCb,UACA;YACE,kBAAkBc;YAClB,eAAeC;YACf,eAAe;YACf,gBAAgBC,kBAAkBvB;QACpC;QAGFY,SAAS,IAAI,CAACG;QACdL,aAAa,IAAI,CAACM;QAClBL,eAAe,IAAI,CAACM;IACtB;IAEA,IAAIH,aAAaA,UAAU,QAAQ,EAAE;QACnC,MAAM,EACJ,SAASC,UAAU,EACnBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBACFN,QAAQ,CAAC,EAAE,EACXO,SAASd,YAAY,CAACe,IAAMA,EAAE,EAAE,GAChCD,SAASL,UAAU,QAAQ,EAAE,CAACM,IAAMA,EAAE,EAAE,GACxCb,UACA;YACE,kBAAkBiB;YAClB,eAAeC;YACf,eAAe;YACf,gBAAgBF,kBAAkBvB;QACpC;QAGFY,QAAQ,CAAC,EAAE,GAAGG;QACdL,aAAa,IAAI,CAACM;QAClBL,eAAe,IAAI,CAACM;IACtB;IAEA,MAAMA,aAAyB;QAC7B,GAAGN,cAAc,CAAC,EAAE;QACpB,YAAYA,eAAe,OAAO,CAAC,CAACS,IAAMA,EAAE,UAAU;QACtD,YAAYT,eAAe,MAAM,CAAC,CAACe,MAAMC,MAAS;gBAAE,GAAGD,IAAI;gBAAE,GAAGC,IAAI,UAAU;YAAC,IAAI,CAAC;IACtF;IAEA,OAAO;QACL,GAAGzB,MAAM;QACT,SAASU,QAAQ,CAAC,EAAE;QAEpB,oBAAoB;YAClB;gBACE,IAAIgB,OAAOpB;gBACX,OAAO;gBACP,UAAUE,YAAY,CAAC,EAAE;gBACzB,cAAcA;gBACd,YAAYO;YACd;SACD;IACH;AACF"}
@@ -1,16 +1,22 @@
1
- import { findAllMeasures } from "../../../../utils/index.js";
1
+ import { clone } from "remeda";
2
+ import { findAllMeasures, isDimension, preorderTraverse } from "../../../../utils/index.js";
2
3
  const defaultDimensions = (advancedVSeed, context)=>{
3
4
  const result = {
4
5
  ...advancedVSeed
5
6
  };
6
7
  const { vseed } = context;
7
8
  const { dimensions, dataset } = vseed;
8
- if (dimensions && dimensions.length > 0) return {
9
- ...result,
10
- dimensions
11
- };
12
- if (!dataset) throw new Error('dataset is required');
13
- if (0 === dataset.length) return result;
9
+ if (dimensions && dimensions.length > 0) {
10
+ const clonedDimensions = clone(dimensions);
11
+ preorderTraverse(clonedDimensions, (node)=>{
12
+ if (isDimension(node)) node.alias = node.alias || node.id;
13
+ return false;
14
+ });
15
+ return {
16
+ ...advancedVSeed,
17
+ dimensions: clonedDimensions
18
+ };
19
+ }
14
20
  const measures = findAllMeasures(advancedVSeed.measures);
15
21
  const top100dataset = dataset.slice(0, 100);
16
22
  const sample = top100dataset.reduce((prev, cur)=>({
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/table/pipes/default/defaultDimensions.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/default/defaultDimensions.ts"],"sourcesContent":["import { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, Dimensions, DimensionTree } from 'src/types'\n\nexport const defaultDimensions: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dimensions, dataset } = vseed\n\n if (dimensions && dimensions.length > 0) {\n return {\n ...result,\n dimensions,\n }\n }\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n const measures = findAllMeasures(advancedVSeed.measures as DimensionTree)\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n const newDimensions = Object.keys(sample)\n .filter(\n (key) =>\n top100dataset.some((item) => typeof item[key] === 'string') &&\n !['', null, undefined].includes(key) &&\n !measures.some((measure) => measure.id === key),\n )\n .map((dim) => ({\n id: dim,\n alias: dim,\n })) as Dimensions\n\n return {\n ...result,\n dimensions: newDimensions,\n }\n}\n"],"names":["defaultDimensions","advancedVSeed","context","result","vseed","dimensions","dataset","Error","measures","findAllMeasures","top100dataset","sample","prev","cur","newDimensions","Object","key","item","undefined","measure","dim"],"mappings":";AAGO,MAAMA,oBAAkC,CAACC,eAAeC;IAC7D,MAAMC,SAAS;QAAE,GAAGF,aAAa;IAAC;IAClC,MAAM,EAAEG,KAAK,EAAE,GAAGF;IAClB,MAAM,EAAEG,UAAU,EAAEC,OAAO,EAAE,GAAGF;IAEhC,IAAIC,cAAcA,WAAW,MAAM,GAAG,GACpC,OAAO;QACL,GAAGF,MAAM;QACTE;IACF;IAGF,IAAI,CAACC,SACH,MAAM,IAAIC,MAAM;IAGlB,IAAID,AAAmB,MAAnBA,QAAQ,MAAM,EAChB,OAAOH;IAGT,MAAMK,WAAWC,gBAAgBR,cAAc,QAAQ;IAEvD,MAAMS,gBAAgBJ,QAAQ,KAAK,CAAC,GAAG;IAEvC,MAAMK,SAASD,cAAc,MAAM,CAAQ,CAACE,MAAMC,MACzC;YAAE,GAAGD,IAAI;YAAE,GAAGC,GAAG;QAAC,IACxB,CAAC;IAEJ,MAAMC,gBAAgBC,OAAO,IAAI,CAACJ,QAC/B,MAAM,CACL,CAACK,MACCN,cAAc,IAAI,CAAC,CAACO,OAAS,AAAqB,YAArB,OAAOA,IAAI,CAACD,IAAI,KAC7C,CAAC;YAAC;YAAI;YAAME;SAAU,CAAC,QAAQ,CAACF,QAChC,CAACR,SAAS,IAAI,CAAC,CAACW,UAAYA,QAAQ,EAAE,KAAKH,MAE9C,GAAG,CAAC,CAACI,MAAS;YACb,IAAIA;YACJ,OAAOA;QACT;IAEF,OAAO;QACL,GAAGjB,MAAM;QACT,YAAYW;IACd;AACF"}
1
+ {"version":3,"file":"pipeline/advanced/table/pipes/default/defaultDimensions.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/default/defaultDimensions.ts"],"sourcesContent":["import { clone } from 'remeda'\nimport { findAllMeasures, isDimension, preorderTraverse } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, Dimensions, DimensionTree } from 'src/types'\n\nexport const defaultDimensions: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dimensions, dataset } = vseed\n\n if (dimensions && dimensions.length > 0) {\n const clonedDimensions = clone(dimensions)\n preorderTraverse(clonedDimensions, (node) => {\n if (isDimension(node)) {\n node.alias = node.alias || node.id\n }\n return false\n })\n return {\n ...advancedVSeed,\n dimensions: clonedDimensions,\n }\n }\n\n const measures = findAllMeasures(advancedVSeed.measures as DimensionTree)\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n const newDimensions = Object.keys(sample)\n .filter(\n (key) =>\n top100dataset.some((item) => typeof item[key] === 'string') &&\n !['', null, undefined].includes(key) &&\n !measures.some((measure) => measure.id === key),\n )\n .map((dim) => ({\n id: dim,\n alias: dim,\n })) as Dimensions\n\n return {\n ...result,\n dimensions: newDimensions,\n }\n}\n"],"names":["defaultDimensions","advancedVSeed","context","result","vseed","dimensions","dataset","clonedDimensions","clone","preorderTraverse","node","isDimension","measures","findAllMeasures","top100dataset","sample","prev","cur","newDimensions","Object","key","item","undefined","measure","dim"],"mappings":";;AAIO,MAAMA,oBAAkC,CAACC,eAAeC;IAC7D,MAAMC,SAAS;QAAE,GAAGF,aAAa;IAAC;IAClC,MAAM,EAAEG,KAAK,EAAE,GAAGF;IAClB,MAAM,EAAEG,UAAU,EAAEC,OAAO,EAAE,GAAGF;IAEhC,IAAIC,cAAcA,WAAW,MAAM,GAAG,GAAG;QACvC,MAAME,mBAAmBC,MAAMH;QAC/BI,iBAAiBF,kBAAkB,CAACG;YAClC,IAAIC,YAAYD,OACdA,KAAK,KAAK,GAAGA,KAAK,KAAK,IAAIA,KAAK,EAAE;YAEpC,OAAO;QACT;QACA,OAAO;YACL,GAAGT,aAAa;YAChB,YAAYM;QACd;IACF;IAEA,MAAMK,WAAWC,gBAAgBZ,cAAc,QAAQ;IAEvD,MAAMa,gBAAgBR,QAAQ,KAAK,CAAC,GAAG;IAEvC,MAAMS,SAASD,cAAc,MAAM,CAAQ,CAACE,MAAMC,MACzC;YAAE,GAAGD,IAAI;YAAE,GAAGC,GAAG;QAAC,IACxB,CAAC;IAEJ,MAAMC,gBAAgBC,OAAO,IAAI,CAACJ,QAC/B,MAAM,CACL,CAACK,MACCN,cAAc,IAAI,CAAC,CAACO,OAAS,AAAqB,YAArB,OAAOA,IAAI,CAACD,IAAI,KAC7C,CAAC;YAAC;YAAI;YAAME;SAAU,CAAC,QAAQ,CAACF,QAChC,CAACR,SAAS,IAAI,CAAC,CAACW,UAAYA,QAAQ,EAAE,KAAKH,MAE9C,GAAG,CAAC,CAACI,MAAS;YACb,IAAIA;YACJ,OAAOA;QACT;IAEF,OAAO;QACL,GAAGrB,MAAM;QACT,YAAYe;IACd;AACF"}
@@ -1,15 +1,19 @@
1
+ import { clone } from "remeda";
2
+ import { isMeasure, preorderTraverse } from "../../../../utils/index.js";
1
3
  const defaultMeasures_defaultMeasures = (advancedVSeed, context)=>{
2
4
  const { vseed } = context;
3
5
  const { measures, dataset } = vseed;
4
- if (measures && measures.length > 0) return {
5
- ...advancedVSeed,
6
- measures
7
- };
8
- if (!dataset) throw new Error('dataset is required');
9
- if (0 === dataset.length) return {
10
- ...advancedVSeed,
11
- measures: []
12
- };
6
+ if (measures && measures.length > 0) {
7
+ const clonedMeasures = clone(measures);
8
+ preorderTraverse(clonedMeasures, (node)=>{
9
+ if (isMeasure(node)) node.alias = node.alias || node.id;
10
+ return false;
11
+ });
12
+ return {
13
+ ...advancedVSeed,
14
+ measures: clonedMeasures
15
+ };
16
+ }
13
17
  const top100dataset = dataset.slice(0, 100);
14
18
  const sample = top100dataset.reduce((prev, cur)=>({
15
19
  ...prev,
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/table/pipes/default/defaultMeasures.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/default/defaultMeasures.ts"],"sourcesContent":["import type { AdvancedPipe, Datum } from 'src/types'\n\n/**\n * @description 如果用户没有配置 measures, 则基于 dataset 构建默认的 measures\n */\nexport const defaultMeasures: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { measures, dataset } = vseed\n\n if (measures && measures.length > 0) {\n return {\n ...advancedVSeed,\n measures,\n }\n }\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return {\n ...advancedVSeed,\n measures: [],\n }\n }\n\n const top100dataset = dataset.slice(0, 100)\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n const defaultMeasures = Object.keys(sample)\n .filter((key) => {\n return top100dataset.some((item) => typeof item[key] === 'number') && !['', null, undefined].includes(key)\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n return {\n ...advancedVSeed,\n measures: defaultMeasures,\n }\n}\n"],"names":["defaultMeasures","advancedVSeed","context","vseed","measures","dataset","Error","top100dataset","sample","prev","cur","Object","key","item","undefined","measure"],"mappings":"AAKO,MAAMA,kCAAgC,CAACC,eAAeC;IAC3D,MAAM,EAAEC,KAAK,EAAE,GAAGD;IAClB,MAAM,EAAEE,QAAQ,EAAEC,OAAO,EAAE,GAAGF;IAE9B,IAAIC,YAAYA,SAAS,MAAM,GAAG,GAChC,OAAO;QACL,GAAGH,aAAa;QAChBG;IACF;IAGF,IAAI,CAACC,SACH,MAAM,IAAIC,MAAM;IAGlB,IAAID,AAAmB,MAAnBA,QAAQ,MAAM,EAChB,OAAO;QACL,GAAGJ,aAAa;QAChB,UAAU,EAAE;IACd;IAGF,MAAMM,gBAAgBF,QAAQ,KAAK,CAAC,GAAG;IACvC,MAAMG,SAASD,cAAc,MAAM,CAAQ,CAACE,MAAMC,MACzC;YAAE,GAAGD,IAAI;YAAE,GAAGC,GAAG;QAAC,IACxB,CAAC;IACJ,MAAMV,kBAAkBW,OAAO,IAAI,CAACH,QACjC,MAAM,CAAC,CAACI,MACAL,cAAc,IAAI,CAAC,CAACM,OAAS,AAAqB,YAArB,OAAOA,IAAI,CAACD,IAAI,KAAkB,CAAC;YAAC;YAAI;YAAME;SAAU,CAAC,QAAQ,CAACF,MAEvG,GAAG,CAAC,CAACG,UAAa;YACjB,IAAIA;YACJ,OAAOA;QACT;IAEF,OAAO;QACL,GAAGd,aAAa;QAChB,UAAUD;IACZ;AACF"}
1
+ {"version":3,"file":"pipeline/advanced/table/pipes/default/defaultMeasures.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/default/defaultMeasures.ts"],"sourcesContent":["import { clone } from 'remeda'\nimport { isMeasure, preorderTraverse } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum } from 'src/types'\n\n/**\n * @description 如果用户没有配置 measures, 则基于 dataset 构建默认的 measures\n */\nexport const defaultMeasures: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { measures, dataset } = vseed\n\n if (measures && measures.length > 0) {\n const clonedMeasures = clone(measures)\n preorderTraverse(clonedMeasures, (node) => {\n if (isMeasure(node)) {\n node.alias = node.alias || node.id\n }\n return false\n })\n return {\n ...advancedVSeed,\n measures: clonedMeasures,\n }\n }\n\n const top100dataset = dataset.slice(0, 100)\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n const defaultMeasures = Object.keys(sample)\n .filter((key) => {\n return top100dataset.some((item) => typeof item[key] === 'number') && !['', null, undefined].includes(key)\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n return {\n ...advancedVSeed,\n measures: defaultMeasures,\n }\n}\n"],"names":["defaultMeasures","advancedVSeed","context","vseed","measures","dataset","clonedMeasures","clone","preorderTraverse","node","isMeasure","top100dataset","sample","prev","cur","Object","key","item","undefined","measure"],"mappings":";;AAOO,MAAMA,kCAAgC,CAACC,eAAeC;IAC3D,MAAM,EAAEC,KAAK,EAAE,GAAGD;IAClB,MAAM,EAAEE,QAAQ,EAAEC,OAAO,EAAE,GAAGF;IAE9B,IAAIC,YAAYA,SAAS,MAAM,GAAG,GAAG;QACnC,MAAME,iBAAiBC,MAAMH;QAC7BI,iBAAiBF,gBAAgB,CAACG;YAChC,IAAIC,UAAUD,OACZA,KAAK,KAAK,GAAGA,KAAK,KAAK,IAAIA,KAAK,EAAE;YAEpC,OAAO;QACT;QACA,OAAO;YACL,GAAGR,aAAa;YAChB,UAAUK;QACZ;IACF;IAEA,MAAMK,gBAAgBN,QAAQ,KAAK,CAAC,GAAG;IACvC,MAAMO,SAASD,cAAc,MAAM,CAAQ,CAACE,MAAMC,MACzC;YAAE,GAAGD,IAAI;YAAE,GAAGC,GAAG;QAAC,IACxB,CAAC;IACJ,MAAMd,kBAAkBe,OAAO,IAAI,CAACH,QACjC,MAAM,CAAC,CAACI,MACAL,cAAc,IAAI,CAAC,CAACM,OAAS,AAAqB,YAArB,OAAOA,IAAI,CAACD,IAAI,KAAkB,CAAC;YAAC;YAAI;YAAME;SAAU,CAAC,QAAQ,CAACF,MAEvG,GAAG,CAAC,CAACG,UAAa;YACjB,IAAIA;YACJ,OAAOA;QACT;IAEF,OAAO;QACL,GAAGlB,aAAa;QAChB,UAAUD;IACZ;AACF"}
@@ -1,6 +1,8 @@
1
+ import { checkVSeed } from "../../../../utils/index.js";
1
2
  const initAdvancedVSeed = (advancedVSeed, context)=>{
2
3
  const { vseed } = context;
3
4
  const { chartType, locale } = vseed;
5
+ checkVSeed(vseed);
4
6
  return {
5
7
  ...advancedVSeed,
6
8
  chartType,
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/table/pipes/init/initAdvancedVSeed.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/init/initAdvancedVSeed.ts"],"sourcesContent":["import type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const initAdvancedVSeed: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType, locale } = vseed\n return {\n ...advancedVSeed,\n chartType,\n locale: locale || 'zh-CN',\n } as AdvancedVSeed\n}\n"],"names":["initAdvancedVSeed","advancedVSeed","context","vseed","chartType","locale"],"mappings":"AAEO,MAAMA,oBAAkC,CAACC,eAAeC;IAC7D,MAAM,EAAEC,KAAK,EAAE,GAAGD;IAClB,MAAM,EAAEE,SAAS,EAAEC,MAAM,EAAE,GAAGF;IAC9B,OAAO;QACL,GAAGF,aAAa;QAChBG;QACA,QAAQC,UAAU;IACpB;AACF"}
1
+ {"version":3,"file":"pipeline/advanced/table/pipes/init/initAdvancedVSeed.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/init/initAdvancedVSeed.ts"],"sourcesContent":["import { checkVSeed } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const initAdvancedVSeed: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType, locale } = vseed\n\n checkVSeed(vseed)\n\n return {\n ...advancedVSeed,\n chartType,\n locale: locale || 'zh-CN',\n } as AdvancedVSeed\n}\n"],"names":["initAdvancedVSeed","advancedVSeed","context","vseed","chartType","locale","checkVSeed"],"mappings":";AAGO,MAAMA,oBAAkC,CAACC,eAAeC;IAC7D,MAAM,EAAEC,KAAK,EAAE,GAAGD;IAClB,MAAM,EAAEE,SAAS,EAAEC,MAAM,EAAE,GAAGF;IAE9BG,WAAWH;IAEX,OAAO;QACL,GAAGF,aAAa;QAChBG;QACA,QAAQC,UAAU;IACpB;AACF"}