@visactor/vseed 0.0.40 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/dist/builder/builder/builder.d.ts +61 -671
  2. package/dist/builder/register/chartType/index.d.ts +0 -1
  3. package/dist/dataReshape/constant.d.ts +17 -2
  4. package/dist/dataReshape/dataReshapeByEncoding.d.ts +11 -0
  5. package/dist/dataReshape/index.d.ts +3 -7
  6. package/dist/dataReshape/unfoldDimensions.d.ts +12 -14
  7. package/dist/index.cjs +1184 -1891
  8. package/dist/index.cjs.map +1 -1
  9. package/dist/index.d.ts +1 -1
  10. package/dist/index.js +1106 -1822
  11. package/dist/index.js.map +1 -1
  12. package/dist/pipeline/advanced/chart/pipeline/index.d.ts +0 -1
  13. package/dist/pipeline/advanced/chart/pipes/analysis/index.d.ts +3 -1
  14. package/dist/pipeline/advanced/chart/pipes/analysis/sort.d.ts +0 -4
  15. package/dist/pipeline/advanced/chart/pipes/{encoding/encodingAR.d.ts → analysis/sortLegend.d.ts} +1 -1
  16. package/dist/pipeline/advanced/chart/pipes/analysis/sortXBand.d.ts +3 -0
  17. package/dist/pipeline/advanced/chart/pipes/{encoding/encodingPie.d.ts → analysis/sortYBand.d.ts} +1 -1
  18. package/dist/pipeline/advanced/chart/pipes/encoding/{encodingFunnel.d.ts → bar.d.ts} +1 -1
  19. package/dist/pipeline/advanced/chart/pipes/encoding/{encodingAreaRange.d.ts → column.d.ts} +1 -1
  20. package/dist/pipeline/advanced/chart/pipes/encoding/dualAxis.d.ts +2 -0
  21. package/dist/pipeline/advanced/chart/pipes/encoding/funnel.d.ts +2 -0
  22. package/dist/pipeline/advanced/chart/pipes/encoding/heatmap.d.ts +2 -0
  23. package/dist/pipeline/advanced/chart/pipes/encoding/index.d.ts +8 -9
  24. package/dist/pipeline/advanced/chart/pipes/encoding/{encodingMatrix.d.ts → pie.d.ts} +1 -1
  25. package/dist/pipeline/advanced/chart/pipes/encoding/radar.d.ts +2 -0
  26. package/dist/pipeline/advanced/chart/pipes/encoding/rose.d.ts +2 -0
  27. package/dist/pipeline/advanced/chart/pipes/encoding/scatter.d.ts +2 -0
  28. package/dist/pipeline/advanced/chart/pipes/init/autoScatterMeasures.d.ts +2 -0
  29. package/dist/pipeline/advanced/chart/pipes/init/index.d.ts +2 -1
  30. package/dist/pipeline/advanced/chart/pipes/reshape/index.d.ts +4 -12
  31. package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.d.ts +2 -0
  32. package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.d.ts +2 -0
  33. package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.d.ts +2 -0
  34. package/dist/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.d.ts +2 -0
  35. package/dist/pipeline/advanced/chart/pipes/reshape/reshapeWithEncoding.d.ts +2 -0
  36. package/dist/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.d.ts +2 -0
  37. package/dist/pipeline/spec/chart/pipeline/index.d.ts +0 -1
  38. package/dist/pipeline/spec/chart/pipes/color/index.d.ts +0 -1
  39. package/dist/pipeline/spec/chart/pipes/{color/linearColor.d.ts → dataset/datasetScatter.d.ts} +1 -1
  40. package/dist/pipeline/spec/chart/pipes/dataset/index.d.ts +1 -0
  41. package/dist/pipeline/spec/chart/pipes/init/index.d.ts +1 -2
  42. package/dist/pipeline/spec/chart/pipes/legend/index.d.ts +0 -1
  43. package/dist/pipeline/spec/chart/pipes/tooltip/index.d.ts +0 -1
  44. package/dist/types/advancedVSeed.d.ts +26 -311
  45. package/dist/types/chartType/area/area.d.ts +13 -1
  46. package/dist/types/chartType/area/zArea.d.ts +14 -0
  47. package/dist/types/chartType/areaPercent/areaPercent.d.ts +13 -1
  48. package/dist/types/chartType/areaPercent/zAreaPercent.d.ts +14 -0
  49. package/dist/types/chartType/bar/bar.d.ts +22 -30
  50. package/dist/types/chartType/bar/zBar.d.ts +14 -0
  51. package/dist/types/chartType/barParallel/barParallel.d.ts +21 -30
  52. package/dist/types/chartType/barParallel/zBarParallel.d.ts +14 -0
  53. package/dist/types/chartType/barPercent/barPercent.d.ts +19 -21
  54. package/dist/types/chartType/barPercent/zBarPercent.d.ts +14 -0
  55. package/dist/types/chartType/column/column.d.ts +19 -28
  56. package/dist/types/chartType/column/zColumn.d.ts +14 -0
  57. package/dist/types/chartType/columnParallel/columnParallel.d.ts +22 -27
  58. package/dist/types/chartType/columnParallel/zColumnParallel.d.ts +14 -0
  59. package/dist/types/chartType/columnPercent/columnPercent.d.ts +19 -25
  60. package/dist/types/chartType/columnPercent/zColumnPercent.d.ts +14 -0
  61. package/dist/types/chartType/donut/donut.d.ts +12 -1
  62. package/dist/types/chartType/donut/zDonut.d.ts +14 -0
  63. package/dist/types/chartType/dualAxis/dualAxis.d.ts +13 -1
  64. package/dist/types/chartType/funnel/funnel.d.ts +12 -1
  65. package/dist/types/chartType/funnel/zFunnel.d.ts +14 -0
  66. package/dist/types/chartType/heatmap/heatmap.d.ts +13 -1
  67. package/dist/types/chartType/index.d.ts +0 -1
  68. package/dist/types/chartType/line/line.d.ts +17 -10
  69. package/dist/types/chartType/line/zLine.d.ts +14 -0
  70. package/dist/types/chartType/pie/pie.d.ts +12 -1
  71. package/dist/types/chartType/pie/zPie.d.ts +14 -0
  72. package/dist/types/chartType/radar/radar.d.ts +13 -1
  73. package/dist/types/chartType/radar/zRadar.d.ts +14 -0
  74. package/dist/types/chartType/rose/rose.d.ts +13 -1
  75. package/dist/types/chartType/rose/zRose.d.ts +14 -0
  76. package/dist/types/chartType/roseParallel/roseParallel.d.ts +13 -1
  77. package/dist/types/chartType/roseParallel/zRoseParallel.d.ts +14 -0
  78. package/dist/types/chartType/scatter/scatter.d.ts +92 -5
  79. package/dist/types/chartType/scatter/zScatter.d.ts +155 -0
  80. package/dist/types/index.d.ts +2 -1
  81. package/dist/types/properties/chartType/chartType.d.ts +1 -3
  82. package/dist/types/properties/config/config.d.ts +0 -307
  83. package/dist/types/properties/datasetReshapeInfo/datasetReshapeInfo.d.ts +13 -38
  84. package/dist/types/properties/datasetReshapeInfo/index.d.ts +1 -1
  85. package/dist/types/properties/datasetReshapeInfo/zDatasetReshapeInfo.d.ts +43 -0
  86. package/dist/types/properties/encoding/encoding.d.ts +49 -16
  87. package/dist/types/properties/encoding/index.d.ts +2 -2
  88. package/dist/types/properties/encoding/zEncoding.d.ts +29 -0
  89. package/dist/types/properties/measures/index.d.ts +4 -2
  90. package/dist/types/properties/measures/scatterMeasures.d.ts +6 -0
  91. package/dist/types/properties/measures/zScatterMeasures.d.ts +283 -0
  92. package/dist/types/properties/theme/customTheme.d.ts +0 -306
  93. package/dist/types/vseed.d.ts +2 -16816
  94. package/dist/types/zVseed.d.ts +15738 -0
  95. package/dist/umd/index.js +1134 -1847
  96. package/dist/umd/index.js.map +1 -1
  97. package/package.json +13 -5
  98. package/dist/builder/register/chartType/areaRange.d.ts +0 -1
  99. package/dist/dataReshape/dataReshapeFor1D.d.ts +0 -19
  100. package/dist/dataReshape/dataReshapeFor1D1M.d.ts +0 -19
  101. package/dist/dataReshape/dataReshapeFor1D2M.d.ts +0 -19
  102. package/dist/dataReshape/dataReshapeFor2D1M.d.ts +0 -19
  103. package/dist/dataReshape/dataReshapeFor2D1M0Name.d.ts +0 -19
  104. package/dist/dataReshape/unfoldZeroDimensions.d.ts +0 -10
  105. package/dist/pipeline/advanced/chart/pipeline/areaRange.d.ts +0 -2
  106. package/dist/pipeline/advanced/chart/pipes/encoding/encodingRose.d.ts +0 -2
  107. package/dist/pipeline/advanced/chart/pipes/encoding/encodingXY.d.ts +0 -2
  108. package/dist/pipeline/advanced/chart/pipes/encoding/encodingXYY.d.ts +0 -2
  109. package/dist/pipeline/advanced/chart/pipes/encoding/encodingYX.d.ts +0 -2
  110. package/dist/pipeline/advanced/chart/pipes/encoding/encodingYY.d.ts +0 -2
  111. package/dist/pipeline/advanced/chart/pipes/init/autoMeasuresBy2M1Group.d.ts +0 -8
  112. package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo1D.d.ts +0 -8
  113. package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo1D1M.d.ts +0 -8
  114. package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo1D2M.d.ts +0 -8
  115. package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo2D1M.d.ts +0 -8
  116. package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo2D1M0Name.d.ts +0 -8
  117. package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo2D2M.d.ts +0 -8
  118. package/dist/pipeline/advanced/chart/pipes/reshape/reshapeTo1D.d.ts +0 -8
  119. package/dist/pipeline/advanced/chart/pipes/reshape/reshapeTo1D1M.d.ts +0 -8
  120. package/dist/pipeline/advanced/chart/pipes/reshape/reshapeTo1D2M.d.ts +0 -8
  121. package/dist/pipeline/advanced/chart/pipes/reshape/reshapeTo2D1M.d.ts +0 -8
  122. package/dist/pipeline/advanced/chart/pipes/reshape/reshapeTo2D1M0Name.d.ts +0 -8
  123. package/dist/pipeline/advanced/chart/pipes/reshape/reshapeTo2D2M.d.ts +0 -8
  124. package/dist/pipeline/spec/chart/pipeline/areaRange.d.ts +0 -1
  125. package/dist/pipeline/spec/chart/pipes/init/areaRange.d.ts +0 -4
  126. package/dist/pipeline/spec/chart/pipes/legend/colorLegend.d.ts +0 -2
  127. package/dist/pipeline/spec/chart/pipes/tooltip/tooltipAreaRange.d.ts +0 -2
  128. package/dist/types/chartType/areaRange/areaRange.d.ts +0 -151
  129. package/dist/types/chartType/areaRange/index.d.ts +0 -2
  130. package/dist/types/chartType/areaRange/zAreaRange.d.ts +0 -1427
  131. /package/dist/pipeline/spec/chart/pipes/init/{initDualAxis.d.ts → dualAxis.d.ts} +0 -0
package/dist/index.cjs CHANGED
@@ -34,14 +34,16 @@ __webpack_require__.d(__webpack_exports__, {
34
34
  isTable: ()=>isTable,
35
35
  zDonut: ()=>zDonut,
36
36
  zDualMeasures: ()=>zDualMeasures,
37
- zPie: ()=>zPie,
37
+ XEncoding: ()=>XEncoding,
38
38
  findFirstMeasure: ()=>findFirstMeasure,
39
39
  scatterAdvancedPipeline: ()=>scatterAdvancedPipeline,
40
+ zPie: ()=>zPie,
40
41
  zRoseConfig: ()=>zRoseConfig,
41
42
  updateSpec: ()=>updateSpec,
42
43
  zCrosshairRect: ()=>zCrosshairRect,
43
44
  scatterSpecPipeline: ()=>scatterSpecPipeline,
44
45
  intl: ()=>intl,
46
+ zScatterMeasures: ()=>zScatterMeasures,
45
47
  columnPercentAdvancedPipeline: ()=>columnPercentAdvancedPipeline,
46
48
  zColumnConfig: ()=>zColumnConfig,
47
49
  zAnnotation: ()=>zAnnotation,
@@ -51,12 +53,11 @@ __webpack_require__.d(__webpack_exports__, {
51
53
  pivotTableAdvancedPipeline: ()=>pivotTableAdvancedPipeline,
52
54
  isMeasures: ()=>isMeasures,
53
55
  zYBandAxis: ()=>zYBandAxis,
54
- dataReshapeFor1D2M: ()=>dataReshapeFor1D2M,
55
56
  zAnnotationHorizontalLine: ()=>zAnnotationHorizontalLine,
57
+ zYLinearAxis: ()=>zYLinearAxis,
56
58
  zMarkStyle: ()=>zMarkStyle,
57
59
  registerFunnel: ()=>registerFunnel,
58
60
  Separator: ()=>Separator,
59
- zYLinearAxis: ()=>zYLinearAxis,
60
61
  columnAdvancedPipeline: ()=>columnAdvancedPipeline,
61
62
  zLabel: ()=>zLabel,
62
63
  registerColumn: ()=>registerColumn,
@@ -69,16 +70,16 @@ __webpack_require__.d(__webpack_exports__, {
69
70
  zDimensionTree: ()=>zDimensionTree,
70
71
  roseParallelSpecPipeline: ()=>roseParallelSpecPipeline,
71
72
  zLineStyle: ()=>zLineStyle,
72
- dataReshapeFor1D1M: ()=>dataReshapeFor1D1M,
73
73
  registerArea: ()=>registerArea,
74
74
  zRoseParallel: ()=>zRoseParallel,
75
+ MeasureName: ()=>MeasureName,
75
76
  zDataset: ()=>zDataset,
76
77
  UnfoldDimensionGroupId: ()=>UnfoldDimensionGroupId,
77
78
  zNumFormat: ()=>zNumFormat,
78
79
  barPercentAdvancedPipeline: ()=>barPercentAdvancedPipeline,
79
80
  findAllDimensions: ()=>findAllDimensions,
81
+ FoldYMeasureValue: ()=>FoldYMeasureValue,
80
82
  findDimensionById: ()=>findDimensionById,
81
- zAreaRangeConfig: ()=>zAreaRangeConfig,
82
83
  zPivotTableConfig: ()=>zPivotTableConfig,
83
84
  zArea: ()=>zArea,
84
85
  zColumnParallel: ()=>zColumnParallel,
@@ -90,25 +91,26 @@ __webpack_require__.d(__webpack_exports__, {
90
91
  registerAreaPercent: ()=>registerAreaPercent,
91
92
  zHeatmap: ()=>zHeatmap,
92
93
  zBarPercent: ()=>zBarPercent,
94
+ zScatterMeasure: ()=>zScatterMeasure,
93
95
  zTheme: ()=>zTheme,
94
96
  zDatum: ()=>zDatum,
95
97
  barAdvancedPipeline: ()=>barAdvancedPipeline,
96
98
  zCustomThemeConfig: ()=>zCustomThemeConfig,
97
99
  registerColumnPercent: ()=>registerColumnPercent,
98
100
  registerHeatmap: ()=>registerHeatmap,
99
- registerAreaRange: ()=>registerAreaRange,
100
- roseSpecPipeline: ()=>roseSpecPipeline,
101
- dataReshapeFor2D1M0Name: ()=>dataReshapeFor2D1M0Name,
102
101
  registerBarPercent: ()=>registerBarPercent,
102
+ roseSpecPipeline: ()=>roseSpecPipeline,
103
+ ColorIdEncoding: ()=>ColorIdEncoding,
104
+ zCrosshairLine: ()=>zCrosshairLine,
103
105
  registerLightTheme: ()=>registerLightTheme,
104
106
  roseAdvancedPipeline: ()=>roseAdvancedPipeline,
105
107
  zBarParallel: ()=>zBarParallel,
106
108
  registerDarkTheme: ()=>registerDarkTheme,
107
109
  registerPivotTable: ()=>registerPivotTable,
108
110
  isPartialDatumSelector: ()=>isPartialDatumSelector,
111
+ pieSpecPipeline: ()=>pieSpecPipeline,
109
112
  isDimensionGroup: ()=>isDimensionGroup,
110
113
  dualAxisSpecPipeline: ()=>dualAxisSpecPipeline,
111
- pieSpecPipeline: ()=>pieSpecPipeline,
112
114
  tableAdvancedPipeline: ()=>tableAdvancedPipeline,
113
115
  barSpecPipeline: ()=>barSpecPipeline,
114
116
  zAnnotationVerticalLine: ()=>zAnnotationVerticalLine,
@@ -117,15 +119,15 @@ __webpack_require__.d(__webpack_exports__, {
117
119
  unfoldDimensions: ()=>unfoldDimensions,
118
120
  roseParallelAdvancedPipeline: ()=>roseParallelAdvancedPipeline,
119
121
  registerTable: ()=>registerTable,
120
- autoFormatter: ()=>autoFormatter,
122
+ Builder: ()=>Builder,
121
123
  isMeasureGroup: ()=>isMeasureGroup,
122
- findFirstDimension: ()=>findFirstDimension,
124
+ YEncoding: ()=>YEncoding,
123
125
  registerAll: ()=>registerAll,
124
126
  registerBar: ()=>registerBar,
125
127
  isVChart: ()=>isVChart,
126
128
  radarSpecPipeline: ()=>radarSpecPipeline,
127
- Builder: ()=>Builder,
128
- zCrosshairLine: ()=>zCrosshairLine,
129
+ findFirstDimension: ()=>findFirstDimension,
130
+ autoFormatter: ()=>autoFormatter,
129
131
  zMeasureTree: ()=>zMeasureTree,
130
132
  zPieConfig: ()=>zPieConfig,
131
133
  registerLine: ()=>registerLine,
@@ -159,8 +161,9 @@ __webpack_require__.d(__webpack_exports__, {
159
161
  zRadarConfig: ()=>zRadarConfig,
160
162
  zAnnotationArea: ()=>zAnnotationArea,
161
163
  zStackCornerRadius: ()=>zStackCornerRadius,
162
- zUnfoldInfo: ()=>zUnfoldInfo,
164
+ DetailEncoding: ()=>DetailEncoding,
163
165
  zRose: ()=>zRose,
166
+ zUnfoldInfo: ()=>zUnfoldInfo,
164
167
  columnParallelSpecPipeline: ()=>columnParallelSpecPipeline,
165
168
  i18n: ()=>i18n,
166
169
  zPointStyle: ()=>zPointStyle,
@@ -182,30 +185,30 @@ __webpack_require__.d(__webpack_exports__, {
182
185
  FoldPrimaryMeasureValue: ()=>FoldPrimaryMeasureValue,
183
186
  zTableConfig: ()=>zTableConfig,
184
187
  zXBandAxis: ()=>zXBandAxis,
185
- dataReshapeFor1D: ()=>dataReshapeFor1D,
186
188
  zColumnPercentConfig: ()=>zColumnPercentConfig,
187
189
  findMeasureById: ()=>findMeasureById,
188
190
  zVSeed: ()=>zVSeed,
191
+ AngleEncoding: ()=>AngleEncoding,
189
192
  areaPercentAdvancedPipeline: ()=>areaPercentAdvancedPipeline,
190
193
  radarAdvancedPipeline: ()=>radarAdvancedPipeline,
191
- zBackgroundColor: ()=>zBackgroundColor,
192
194
  zAreaPercentConfig: ()=>zAreaPercentConfig,
195
+ zBackgroundColor: ()=>zBackgroundColor,
193
196
  registerBarParallel: ()=>registerBarParallel,
194
197
  registerRadar: ()=>registerRadar,
195
- zLocale: ()=>zLocale,
198
+ zEncodings: ()=>zEncodings,
196
199
  isDimension: ()=>isDimension,
197
200
  pivotTableSpecPipeline: ()=>pivotTableSpecPipeline,
198
- areaRangeSpecPipeline: ()=>areaRangeSpecPipeline,
199
- areaRangeAdvancedPipeline: ()=>areaRangeAdvancedPipeline,
201
+ zLocale: ()=>zLocale,
202
+ FoldXMeasureValue: ()=>FoldXMeasureValue,
200
203
  dualAxisAdvancedPipeline: ()=>dualAxisAdvancedPipeline,
201
204
  registerScatter: ()=>registerScatter,
202
- zAreaRange: ()=>zAreaRange,
203
- measureDepth: ()=>measureDepth,
205
+ zEncoding: ()=>zEncoding,
206
+ ColorEncoding: ()=>ColorEncoding,
204
207
  autoNumFormatter: ()=>autoNumFormatter,
205
- zAdvancedVSeed: ()=>zAdvancedVSeed,
208
+ measureDepth: ()=>measureDepth,
206
209
  tableSpecPipeline: ()=>tableSpecPipeline,
210
+ zAdvancedVSeed: ()=>zAdvancedVSeed,
207
211
  zConfig: ()=>zConfig,
208
- zEncoding: ()=>zEncoding,
209
212
  zBarStyle: ()=>zBarStyle,
210
213
  zMeasure: ()=>zMeasure,
211
214
  zRoseParallelConfig: ()=>zRoseParallelConfig,
@@ -216,20 +219,20 @@ __webpack_require__.d(__webpack_exports__, {
216
219
  donutAdvancedPipeline: ()=>donutAdvancedPipeline,
217
220
  zColumnPercent: ()=>zColumnPercent,
218
221
  registerPie: ()=>registerPie,
219
- dataReshapeFor2D1M: ()=>dataReshapeFor2D1M,
220
222
  foldMeasures: ()=>foldMeasures,
221
223
  isPivotTable: ()=>isPivotTable,
222
224
  zFunnel: ()=>zFunnel,
223
225
  zScatter: ()=>zScatter,
226
+ zScatterConfig: ()=>zScatterConfig,
224
227
  zBarParallelConfig: ()=>zBarParallelConfig,
225
228
  barParallelAdvancedPipeline: ()=>barParallelAdvancedPipeline,
226
229
  FoldMeasureValue: ()=>FoldMeasureValue,
227
230
  barPercentSpecPipeline: ()=>barPercentSpecPipeline,
228
231
  lineAdvancedPipeline: ()=>lineAdvancedPipeline,
229
- zBarPercentConfig: ()=>zBarPercentConfig,
232
+ dataReshapeByEncoding: ()=>dataReshapeByEncoding,
230
233
  lineSpecPipeline: ()=>lineSpecPipeline,
231
234
  isDimensions: ()=>isDimensions,
232
- zScatterConfig: ()=>zScatterConfig,
235
+ zBarPercentConfig: ()=>zBarPercentConfig,
233
236
  createFormatter: ()=>createFormatter,
234
237
  zDimensionGroup: ()=>zDimensionGroup,
235
238
  isMeasureSelector: ()=>isMeasureSelector,
@@ -1320,13 +1323,26 @@ const isVTable = (vseed)=>[
1320
1323
  const isVChart = (vseed)=>!isVTable(vseed);
1321
1324
  const isPivotChart = (vseed)=>{
1322
1325
  if (isVTable(vseed)) return false;
1323
- if ('dualAxis' === vseed.chartType) {
1324
- if (vseed.measures) {
1325
- const depth = measureDepth(vseed.measures);
1326
- if (3 === depth) return true;
1327
- return false;
1326
+ if ('dualAxis' === vseed.chartType || 'scatter' === vseed.chartType) {
1327
+ const { dimensions = [] } = vseed;
1328
+ const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'rowDimension' === dimension.location || 'columnDimension' === dimension.location);
1329
+ if (hasRowOrColumnDimension) return true;
1330
+ if ('scatter' === vseed.chartType) {
1331
+ if (vseed.measures) {
1332
+ const depth = measureDepth(vseed.measures);
1333
+ if (3 === depth) return true;
1334
+ return false;
1335
+ }
1336
+ if (vseed.scatterMeasures && vseed.scatterMeasures.length > 1) return true;
1337
+ }
1338
+ if ('dualAxis' === vseed.chartType) {
1339
+ if (vseed.measures) {
1340
+ const depth = measureDepth(vseed.measures);
1341
+ if (3 === depth) return true;
1342
+ return false;
1343
+ }
1344
+ if (vseed.dualMeasures && vseed.dualMeasures.length > 1) return true;
1328
1345
  }
1329
- if (vseed.dualMeasures && vseed.dualMeasures.length > 1) return true;
1330
1346
  return false;
1331
1347
  }
1332
1348
  const { measures = [], dimensions = [] } = vseed;
@@ -1405,6 +1421,24 @@ const createEmptyMeasureGroup = ()=>({
1405
1421
  alias: '',
1406
1422
  children: []
1407
1423
  });
1424
+ const ORIGINAL_DATA = '__OriginalData__';
1425
+ const Separator = '-';
1426
+ const FoldMeasureName = '__MeaName__';
1427
+ const FoldMeasureId = '__MeaId__';
1428
+ const FoldMeasureValue = '__MeaValue__';
1429
+ const MeasureName = FoldMeasureName;
1430
+ const FoldPrimaryMeasureValue = '__MeaPrimaryValue__';
1431
+ const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
1432
+ const FoldXMeasureValue = '__MeaXValue__';
1433
+ const FoldYMeasureValue = '__MeaYValue__';
1434
+ const XEncoding = '__Dim_X__';
1435
+ const YEncoding = '__Dim_Y__';
1436
+ const AngleEncoding = '__Dim_Angle__';
1437
+ const DetailEncoding = '__Dim_Detail__';
1438
+ const ColorEncoding = '__Dim_Color__';
1439
+ const ColorIdEncoding = '__Dim_ColorId__';
1440
+ const UnfoldDimensionGroup = '__DimGroup__';
1441
+ const UnfoldDimensionGroupId = '__DimGroupID__';
1408
1442
  const autoDimensions_autoDimensions = (advancedVSeed, context)=>{
1409
1443
  const result = {
1410
1444
  ...advancedVSeed
@@ -1412,6 +1446,10 @@ const autoDimensions_autoDimensions = (advancedVSeed, context)=>{
1412
1446
  const { vseed } = context;
1413
1447
  const { dimensions, dataset } = vseed;
1414
1448
  const measures = findAllMeasures(advancedVSeed.measures);
1449
+ const MeaName = {
1450
+ id: MeasureName,
1451
+ alias: intl.i18n`指标名称`
1452
+ };
1415
1453
  if (!dataset) throw new Error('dataset is required');
1416
1454
  if (0 === dataset.length) return result;
1417
1455
  if (dimensions) {
@@ -1419,6 +1457,8 @@ const autoDimensions_autoDimensions = (advancedVSeed, context)=>{
1419
1457
  location: 'dimension',
1420
1458
  ...dim
1421
1459
  }));
1460
+ if (result.dimensions.some((dim)=>dim.id === MeasureName)) return result;
1461
+ result.dimensions.push(MeaName);
1422
1462
  return result;
1423
1463
  }
1424
1464
  const top100dataset = dataset.slice(0, 100);
@@ -1435,23 +1475,57 @@ const autoDimensions_autoDimensions = (advancedVSeed, context)=>{
1435
1475
  alias: dim,
1436
1476
  location: 'dimension'
1437
1477
  }));
1478
+ result.dimensions.push(MeaName);
1438
1479
  return result;
1439
1480
  };
1481
+ const encodingForColumn = (advancedVSeed, context)=>{
1482
+ const { vseed } = context;
1483
+ const { dimensions } = advancedVSeed;
1484
+ if (!dimensions) return advancedVSeed;
1485
+ const encoding = vseed.encoding;
1486
+ if (encoding) {
1487
+ const x = encoding.x || [
1488
+ dimensions[0].id
1489
+ ];
1490
+ const color = encoding.color || [
1491
+ (dimensions[1] || dimensions[0]).id
1492
+ ];
1493
+ const detail = encoding.detail || [];
1494
+ const mergedDetail = (0, external_remeda_namespaceObject.unique)([
1495
+ ...color,
1496
+ ...detail
1497
+ ]);
1498
+ return {
1499
+ ...advancedVSeed,
1500
+ encoding: {
1501
+ ...encoding,
1502
+ x,
1503
+ color,
1504
+ detail: mergedDetail
1505
+ }
1506
+ };
1507
+ }
1508
+ const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
1509
+ const mergedEncoding = {
1510
+ x: dimensions.slice(0, 1).map((item)=>item.id),
1511
+ color: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
1512
+ detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
1513
+ tooltip: dimensions.map((item)=>item.id),
1514
+ label: [],
1515
+ row: [],
1516
+ column: []
1517
+ };
1518
+ return {
1519
+ ...advancedVSeed,
1520
+ encoding: mergedEncoding
1521
+ };
1522
+ };
1440
1523
  const pivotAdapter = (pipeline, pivotPipeline)=>(advancedVSeed, context)=>{
1441
1524
  const { vseed } = context;
1442
1525
  const usePivotChart = isPivotChart(vseed);
1443
1526
  if (usePivotChart) return execPipeline(pivotPipeline, context, advancedVSeed);
1444
1527
  return execPipeline(pipeline, context, advancedVSeed);
1445
1528
  };
1446
- const FoldMeasureName = '__MeaName__';
1447
- const FoldMeasureId = '__MeaId__';
1448
- const FoldMeasureValue = '__MeaValue__';
1449
- const FoldPrimaryMeasureValue = '__MeaPrimaryValue__';
1450
- const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
1451
- const UnfoldDimensionGroup = '__DimGroup__';
1452
- const UnfoldDimensionGroupId = '__DimGroupID__';
1453
- const Separator = '-';
1454
- const ORIGINAL_DATA = '__OriginalData__';
1455
1529
  const foldMeasures = (dataset, measures, measureId = FoldMeasureId, measureName = FoldMeasureName, measureValue = FoldMeasureValue)=>{
1456
1530
  const foldInfo = {
1457
1531
  measureId,
@@ -1481,84 +1555,53 @@ const foldMeasures = (dataset, measures, measureId = FoldMeasureId, measureName
1481
1555
  foldInfo
1482
1556
  };
1483
1557
  };
1484
- const unfoldDimensions = (dataset, dimensions, measures, unfoldStartIndex = 0, unfoldGroupName = UnfoldDimensionGroup, unfoldGroupId = UnfoldDimensionGroupId, foldMeasureId = FoldMeasureId, dimensionsSeparator = Separator)=>{
1485
- if (unfoldStartIndex < 0 || unfoldStartIndex >= dimensions.length) throw new Error('unfoldStartIndex is out of range');
1486
- const dimensionsToBeUnfolded = dimensions.slice(unfoldStartIndex);
1487
- const dimensionsToBeRemain = dimensions.slice(0, unfoldStartIndex);
1558
+ const unfoldDimensions = (dataset, dimensions, encoding, options)=>{
1559
+ const { foldMeasureId, separator, colorItemAsId } = options;
1488
1560
  const unfoldInfo = {
1489
- groupName: unfoldGroupName,
1490
- groupId: unfoldGroupId,
1561
+ encodingAngle: AngleEncoding,
1562
+ encodingX: XEncoding,
1563
+ encodingY: YEncoding,
1564
+ encodingDetail: DetailEncoding,
1565
+ encodingColor: ColorEncoding,
1566
+ encodingColorId: ColorIdEncoding,
1491
1567
  colorItems: [],
1492
1568
  colorIdMap: {}
1493
1569
  };
1494
- if (0 === dimensions.length || 0 === measures.length) return {
1495
- dataset,
1496
- unfoldInfo: {
1497
- groupName: unfoldGroupName,
1498
- groupId: unfoldGroupId,
1499
- colorItems: [],
1500
- colorIdMap: {}
1501
- }
1502
- };
1503
- const colorItems = [];
1504
- const colorMap = {};
1570
+ const { color, x, y, detail, angle } = encoding;
1571
+ const angleDimensions = angle ? dimensions.filter((dim)=>angle.includes(dim.id)) : [];
1572
+ const xDimensions = x ? dimensions.filter((dim)=>x.includes(dim.id)) : [];
1573
+ const yDimensions = y ? dimensions.filter((dim)=>y.includes(dim.id)) : [];
1574
+ const colorDimensions = color ? dimensions.filter((dim)=>color.includes(dim.id)) : [];
1575
+ const detailDimensions = detail ? dimensions.filter((dim)=>detail.includes(dim.id)) : [];
1576
+ const colorItems = new Set();
1577
+ const colorIdMap = {};
1505
1578
  for(let i = 0; i < dataset.length; i++){
1506
1579
  const datum = dataset[i];
1507
- const colorName = generateDimGroupName(dimensionsToBeUnfolded, datum, dimensionsSeparator);
1508
- const colorId = datum[foldMeasureId] ? [
1509
- colorName,
1510
- datum[foldMeasureId]
1511
- ].join(dimensionsSeparator) : colorName;
1512
- datum[unfoldGroupName] = colorName;
1513
- datum[unfoldGroupId] = colorId;
1514
- colorItems.push(colorId);
1515
- colorMap[colorId] = colorName;
1516
- if (dimensionsToBeRemain.length > 0) for (const dim of dimensionsToBeRemain){
1517
- const dimValue = datum[dim.id];
1518
- if ('number' == typeof dimValue) datum[dim.id] = String(dimValue);
1519
- }
1580
+ applyEncoding(AngleEncoding, angleDimensions, datum, separator);
1581
+ applyEncoding(XEncoding, xDimensions, datum, separator);
1582
+ applyEncoding(YEncoding, yDimensions, datum, separator);
1583
+ applyEncoding(ColorEncoding, colorDimensions, datum, separator);
1584
+ applyEncoding(DetailEncoding, detailDimensions, datum, separator);
1585
+ if (!datum[ColorEncoding]) continue;
1586
+ const measureId = String(datum[foldMeasureId]);
1587
+ const colorItem = String(datum[ColorEncoding]);
1588
+ const colorId = colorItemAsId ? colorItem : measureId ? [
1589
+ colorItem,
1590
+ measureId
1591
+ ].join(separator) : colorItem;
1592
+ datum[ColorIdEncoding] = colorId;
1593
+ colorIdMap[colorId] = colorItem;
1594
+ colorItems.add(colorId);
1520
1595
  }
1521
- unfoldInfo.colorItems = (0, external_remeda_namespaceObject.unique)(colorItems);
1522
- unfoldInfo.colorIdMap = colorMap;
1596
+ unfoldInfo.colorItems = Array.from(colorItems);
1597
+ unfoldInfo.colorIdMap = colorIdMap;
1523
1598
  return {
1524
1599
  dataset,
1525
1600
  unfoldInfo
1526
1601
  };
1527
1602
  };
1528
- const generateDimGroupName = (dimensionsToBeGrouped, datum, dimensionsSeparator)=>dimensionsToBeGrouped.map((dim)=>String(datum[dim.id])).join(dimensionsSeparator);
1529
- const unfoldZeroDimensions = (dataset, measures, measureName, unfoldGroupName = UnfoldDimensionGroup, unfoldGroupId = UnfoldDimensionGroupId)=>{
1530
- const unfoldInfo = {
1531
- groupName: unfoldGroupName,
1532
- groupId: unfoldGroupId,
1533
- colorItems: [],
1534
- colorIdMap: {}
1535
- };
1536
- if (0 === measures.length) return {
1537
- dataset,
1538
- unfoldInfo: {
1539
- groupName: unfoldGroupName,
1540
- groupId: unfoldGroupId,
1541
- colorItems: [],
1542
- colorIdMap: {}
1543
- }
1544
- };
1545
- const colorItems = [];
1546
- const colorMap = {};
1547
- for(let i = 0; i < dataset.length; i++){
1548
- const datum = dataset[i];
1549
- const colorName = measureName;
1550
- const colorId = measureName;
1551
- datum[unfoldGroupName] = colorName;
1552
- datum[unfoldGroupId] = colorId;
1553
- colorItems.push(colorId);
1554
- colorMap[colorId] = colorName;
1555
- }
1556
- unfoldInfo.colorItems = (0, external_remeda_namespaceObject.unique)(colorItems);
1557
- unfoldInfo.colorIdMap = colorMap;
1558
- return {
1559
- dataset,
1560
- unfoldInfo
1561
- };
1603
+ const applyEncoding = (encoding, dimensions, datum, separator)=>{
1604
+ if (encoding && dimensions.length) datum[encoding] = dimensions.map((dim)=>String(datum[dim.id])).join(separator);
1562
1605
  };
1563
1606
  const emptyReshapeResult = {
1564
1607
  dataset: [],
@@ -1569,69 +1612,47 @@ const emptyReshapeResult = {
1569
1612
  measureValue: ''
1570
1613
  },
1571
1614
  unfoldInfo: {
1572
- groupName: '',
1573
- groupId: '',
1615
+ encodingAngle: AngleEncoding,
1616
+ encodingX: XEncoding,
1617
+ encodingY: YEncoding,
1618
+ encodingDetail: DetailEncoding,
1619
+ encodingColor: ColorEncoding,
1620
+ encodingColorId: ColorIdEncoding,
1574
1621
  colorItems: [],
1575
1622
  colorIdMap: {}
1576
1623
  }
1577
1624
  };
1578
- const dataReshapeFor2D1M0Name = (dataset, dimensions, measures, options)=>{
1579
- const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, unfoldDimensionGroup = UnfoldDimensionGroup, unfoldDimensionGroupId = UnfoldDimensionGroupId } = options || {};
1625
+ const dataReshapeByEncoding = (dataset, dimensions, measures, encoding, options)=>{
1626
+ const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, colorItemAsId = false } = options || {};
1580
1627
  if (0 === dimensions.length && 0 === measures.length) return emptyReshapeResult;
1581
1628
  const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, foldMeasureId, foldMeasureName, foldMeasureValue);
1582
- if (0 === dimensions.length) {
1583
- const { dataset: finalDataset, unfoldInfo } = unfoldZeroDimensions(foldedDataset, [
1584
- {
1585
- id: foldMeasureValue,
1586
- alias: i18n`指标值`
1587
- }
1588
- ], i18n`指标名称`, unfoldDimensionGroup, unfoldDimensionGroupId);
1589
- return {
1590
- dataset: finalDataset,
1591
- foldInfo,
1592
- unfoldInfo
1593
- };
1594
- }
1595
- {
1596
- const onlyOneMeasure = 1 === measures.length;
1597
- const onlyOneDimension = 1 === dimensions.length;
1598
- const dims = [
1599
- ...dimensions
1600
- ];
1601
- if (!onlyOneMeasure || onlyOneDimension) dims.push({
1602
- id: foldMeasureName,
1603
- alias: i18n`指标名称`,
1604
- location: 'dimension'
1605
- });
1606
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dims, [
1607
- {
1608
- id: foldMeasureValue,
1609
- alias: i18n`指标值`
1610
- }
1611
- ], 1, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
1612
- return {
1613
- dataset: finalDataset,
1614
- foldInfo,
1615
- unfoldInfo
1616
- };
1617
- }
1629
+ const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dimensions, encoding, {
1630
+ foldMeasureId,
1631
+ separator: Separator,
1632
+ colorItemAsId
1633
+ });
1634
+ return {
1635
+ dataset: finalDataset,
1636
+ foldInfo,
1637
+ unfoldInfo
1638
+ };
1618
1639
  };
1619
- const reshapeTo2D1M0Name = (advancedVSeed, context)=>{
1640
+ const reshapeWithEncoding = (advancedVSeed, context)=>{
1620
1641
  const result = {
1621
1642
  ...advancedVSeed
1622
1643
  };
1623
1644
  const { vseed } = context;
1624
- const { dataset } = vseed;
1625
- const { dimensions, measures } = advancedVSeed;
1626
- if (!measures || !dimensions || !dataset) return result;
1645
+ const { dataset, chartType } = vseed;
1646
+ const { dimensions, measures, encoding } = advancedVSeed;
1647
+ if (!measures || !dimensions || !dataset || !encoding) return result;
1627
1648
  if (0 === measures.length) throw new Error('measures can not be empty');
1628
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M0Name(dataset, dimensions, measures);
1649
+ const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding);
1629
1650
  return {
1630
1651
  ...result,
1631
1652
  dataset: newDatasets,
1632
1653
  datasetReshapeInfo: [
1633
1654
  {
1634
- id: '2D1M',
1655
+ id: String(chartType),
1635
1656
  index: 0,
1636
1657
  foldInfo,
1637
1658
  unfoldInfo
@@ -1641,31 +1662,27 @@ const reshapeTo2D1M0Name = (advancedVSeed, context)=>{
1641
1662
  measures
1642
1663
  };
1643
1664
  };
1644
- const pivotReshapeTo2D1M0Name = (advancedVSeed, context)=>{
1665
+ const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
1645
1666
  const result = {
1646
1667
  ...advancedVSeed
1647
1668
  };
1648
1669
  const { vseed } = context;
1649
1670
  const { dataset } = vseed;
1650
- const { measures } = advancedVSeed;
1651
- const dimensions = advancedVSeed.dimensions;
1652
- if (!measures || !dimensions) return result;
1671
+ const { dimensions, measures, encoding } = advancedVSeed;
1672
+ if (!measures || !dimensions || !dataset || !encoding) return result;
1673
+ if (0 === measures.length) throw new Error('measures can not be empty');
1653
1674
  const measureGroups = [];
1654
1675
  if (measures) measures.forEach((measure)=>{
1655
1676
  if (measure.children && measure.children.length > 0) measureGroups.push(measure);
1656
1677
  });
1657
- const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
1658
- const newDatasets = [];
1678
+ const datasets = [];
1659
1679
  const datasetReshapeInfo = [];
1660
1680
  measureGroups.forEach((measureGroup, index)=>{
1661
1681
  const measures = measureGroup.children;
1662
1682
  if (!measures) return;
1663
1683
  const groupId = measureGroup.id;
1664
- const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeFor2D1M0Name(dataset, commonDimensions, measures, {
1665
- foldMeasureId: FoldMeasureId,
1666
- foldMeasureName: FoldMeasureName,
1667
- foldMeasureValue: FoldMeasureValue + groupId,
1668
- unfoldDimensionGroup: UnfoldDimensionGroup
1684
+ const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding, {
1685
+ foldMeasureValue: `${FoldMeasureValue}${groupId}`
1669
1686
  });
1670
1687
  const reshapeInfo = {
1671
1688
  id: groupId,
@@ -1673,93 +1690,60 @@ const pivotReshapeTo2D1M0Name = (advancedVSeed, context)=>{
1673
1690
  foldInfo,
1674
1691
  unfoldInfo
1675
1692
  };
1676
- newDatasets.push(newSubDataset);
1693
+ datasets.push(newSubDataset);
1677
1694
  datasetReshapeInfo.push(reshapeInfo);
1678
1695
  });
1679
1696
  return {
1680
1697
  ...result,
1681
- dataset: newDatasets,
1698
+ dataset: datasets,
1682
1699
  datasetReshapeInfo: datasetReshapeInfo
1683
1700
  };
1684
1701
  };
1685
- const encodingXY = (advancedVSeed)=>{
1686
- const result = {
1687
- ...advancedVSeed
1688
- };
1689
- const { datasetReshapeInfo, dimensions } = advancedVSeed;
1690
- if (!datasetReshapeInfo || !dimensions) return result;
1691
- const xDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
1692
- const isZeroDimension = 0 === dimensions.length;
1693
- const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
1694
- const { foldInfo, unfoldInfo } = cur;
1695
- const x = [
1696
- isZeroDimension ? foldInfo.measureName : xDimension?.id
1697
- ];
1698
- const y = [
1699
- foldInfo.measureValue
1700
- ];
1701
- const group = [
1702
- unfoldInfo.groupId
1703
- ];
1704
- const color = [
1705
- foldInfo.measureName
1706
- ];
1707
- return [
1708
- ...prev,
1709
- {
1710
- x,
1711
- y,
1712
- group,
1713
- color
1714
- }
1715
- ];
1716
- }, []);
1717
- return {
1718
- ...result,
1719
- encoding
1720
- };
1721
- };
1722
1702
  const sortXBandAxis = (advancedVSeed, context)=>{
1723
1703
  const result = {
1724
1704
  ...advancedVSeed
1725
1705
  };
1726
1706
  const { vseed } = context;
1727
- const { sort: sortAxis, dataset } = vseed;
1728
- const { encoding } = advancedVSeed;
1729
- const xField = encoding?.[0]?.x?.[0];
1707
+ const { sort: sortAxis } = vseed;
1708
+ const { datasetReshapeInfo, dataset } = advancedVSeed;
1709
+ const { unfoldInfo } = datasetReshapeInfo[0];
1710
+ const xField = unfoldInfo.encodingX;
1730
1711
  if (!sortAxis || !xField) return advancedVSeed;
1731
1712
  if (!result.analysis) result.analysis = {};
1732
1713
  if (!result.analysis.orderMapping) result.analysis.orderMapping = {};
1733
- const axisOrderResult = calcOrder(sortAxis, xField, dataset);
1714
+ const axisOrderResult = calcOrder(sortAxis, xField, dataset.flat(2));
1734
1715
  result.analysis.orderMapping[xField] = axisOrderResult;
1735
1716
  return result;
1736
1717
  };
1737
- const sortYBandAxis = (advancedVSeed, context)=>{
1738
- const result = {
1739
- ...advancedVSeed
1740
- };
1741
- const { vseed } = context;
1742
- const { sort: sortAxis, dataset } = vseed;
1743
- const { encoding } = advancedVSeed;
1744
- const yField = encoding?.[0]?.y?.[0];
1745
- if (!sortAxis || !yField) return advancedVSeed;
1746
- if (!result.analysis) result.analysis = {};
1747
- if (!result.analysis.orderMapping) result.analysis.orderMapping = {};
1748
- const axisOrderResult = calcOrder(sortAxis, yField, dataset);
1749
- result.analysis.orderMapping[yField] = axisOrderResult;
1750
- return result;
1718
+ const calcOrder = (sortConfig, id, dataset)=>{
1719
+ if (sortConfig.customOrder) return sortConfig.customOrder;
1720
+ const order = sortConfig.order || 'asc';
1721
+ const orderBy = sortConfig.orderBy;
1722
+ const res = (0, external_remeda_namespaceObject.sort)(dataset, (a, b)=>{
1723
+ const aValue = a[orderBy || id];
1724
+ const bValue = b[orderBy || id];
1725
+ if ('asc' === order) {
1726
+ if (aValue < bValue) return -1;
1727
+ if (aValue > bValue) return 1;
1728
+ return 0;
1729
+ }
1730
+ if (aValue > bValue) return -1;
1731
+ if (aValue < bValue) return 1;
1732
+ return 0;
1733
+ });
1734
+ return (0, external_remeda_namespaceObject.unique)(res.map((item)=>item[id]));
1751
1735
  };
1752
- const sort_sortLegend = (advancedVSeed, context)=>{
1736
+ const sortLegend_sortLegend = (advancedVSeed, context)=>{
1753
1737
  const result = {
1754
1738
  ...advancedVSeed
1755
1739
  };
1756
1740
  const { vseed } = context;
1757
1741
  const { sortLegend } = vseed;
1758
- const { datasetReshapeInfo } = advancedVSeed;
1759
- const groupField = datasetReshapeInfo?.[0]?.unfoldInfo?.groupId;
1742
+ const { datasetReshapeInfo, dataset } = advancedVSeed;
1743
+ const colorId = datasetReshapeInfo?.[0]?.unfoldInfo?.encodingColorId;
1760
1744
  const colorIdMap = datasetReshapeInfo?.[0]?.unfoldInfo?.colorIdMap;
1761
1745
  const colorItems = datasetReshapeInfo?.[0]?.unfoldInfo?.colorItems;
1762
- if (!sortLegend || !groupField || !colorIdMap || !colorItems) return advancedVSeed;
1746
+ if (!sortLegend || !colorId || !colorIdMap || !colorItems) return advancedVSeed;
1763
1747
  if (!result.analysis) result.analysis = {};
1764
1748
  if (!result.analysis.orderMapping) result.analysis.orderMapping = {};
1765
1749
  if (sortLegend.customOrder) {
@@ -1768,15 +1752,14 @@ const sort_sortLegend = (advancedVSeed, context)=>{
1768
1752
  return pre;
1769
1753
  }, {});
1770
1754
  const orderRes = sortLegend.customOrder.map((itemNameOrId)=>nameMap[itemNameOrId] ? nameMap[itemNameOrId] : itemNameOrId);
1771
- result.analysis.orderMapping[groupField] = orderRes;
1755
+ result.analysis.orderMapping[colorId] = orderRes;
1772
1756
  return result;
1773
1757
  }
1774
- const dataset = advancedVSeed.dataset?.flat(2);
1775
- const orderRes = calcOrder(sortLegend, groupField, dataset || []);
1776
- result.analysis.orderMapping[groupField] = orderRes;
1758
+ const orderRes = sortLegend_calcOrder(sortLegend, colorId, dataset?.flat(2) || []);
1759
+ result.analysis.orderMapping[colorId] = orderRes;
1777
1760
  return result;
1778
1761
  };
1779
- const calcOrder = (sortConfig, id, dataset)=>{
1762
+ const sortLegend_calcOrder = (sortConfig, id, dataset)=>{
1780
1763
  if (sortConfig.customOrder) return sortConfig.customOrder;
1781
1764
  const order = sortConfig.order || 'asc';
1782
1765
  const orderBy = sortConfig.orderBy;
@@ -1908,14 +1891,14 @@ const lineAdvancedPipeline = [
1908
1891
  initAdvancedVSeed_initAdvancedVSeed,
1909
1892
  autoMeasures_autoMeasures,
1910
1893
  autoDimensions_autoDimensions,
1894
+ encodingForColumn,
1911
1895
  pivotAdapter([
1912
- reshapeTo2D1M0Name
1896
+ reshapeWithEncoding
1913
1897
  ], [
1914
- pivotReshapeTo2D1M0Name
1898
+ pivotReshapeWithEncoding
1915
1899
  ]),
1916
- encodingXY,
1917
1900
  sortXBandAxis,
1918
- sort_sortLegend,
1901
+ sortLegend_sortLegend,
1919
1902
  lineConfig,
1920
1903
  theme_theme,
1921
1904
  markStyle_markStyle,
@@ -1926,13 +1909,13 @@ const initLine = (spec, context)=>{
1926
1909
  ...spec
1927
1910
  };
1928
1911
  const { advancedVSeed } = context;
1929
- const { encoding } = advancedVSeed;
1930
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
1912
+ const { datasetReshapeInfo } = advancedVSeed;
1913
+ const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
1931
1914
  result.type = 'line';
1932
1915
  result.direction = 'vertical';
1933
- result.xField = encoding[0].x[0];
1934
- result.yField = encoding[0].y[0];
1935
- result.seriesField = encoding[0].group[0];
1916
+ result.xField = unfoldInfo.encodingX;
1917
+ result.yField = foldInfo.measureValue;
1918
+ result.seriesField = unfoldInfo.encodingColorId;
1936
1919
  result.padding = 0;
1937
1920
  result.region = [
1938
1921
  {
@@ -2008,11 +1991,12 @@ const background_backgroundColor = (spec, context)=>{
2008
1991
  };
2009
1992
  const datasetXY = (spec, context)=>{
2010
1993
  const { advancedVSeed, vseed } = context;
2011
- const { encoding, analysis, datasetReshapeInfo } = advancedVSeed;
1994
+ const { analysis, datasetReshapeInfo } = advancedVSeed;
1995
+ const { unfoldInfo } = datasetReshapeInfo[0];
2012
1996
  const orderMapping = analysis?.orderMapping || {};
2013
- const angle = encoding[0]?.angle?.[0];
2014
- const x = encoding[0]?.x?.[0];
2015
- const group = encoding[0]?.group?.[0];
1997
+ const angle = unfoldInfo.encodingAngle;
1998
+ const x = unfoldInfo.encodingX;
1999
+ const colorId = unfoldInfo.encodingColorId;
2016
2000
  const id = datasetReshapeInfo[0].id;
2017
2001
  const fields = {};
2018
2002
  if (angle) fields[angle] = {
@@ -2029,14 +2013,14 @@ const datasetXY = (spec, context)=>{
2029
2013
  sortIndex: 0
2030
2014
  };
2031
2015
  }
2032
- if (group) {
2033
- const order = orderMapping[group];
2034
- if (order) fields[group] = {
2016
+ if (colorId) {
2017
+ const order = orderMapping[colorId];
2018
+ if (order) fields[colorId] = {
2035
2019
  sortIndex: 0,
2036
2020
  domain: order,
2037
2021
  lockStatisticsByDomain: true
2038
2022
  };
2039
- else fields[group] = {
2023
+ else fields[colorId] = {
2040
2024
  sortIndex: 0
2041
2025
  };
2042
2026
  }
@@ -2289,7 +2273,7 @@ const tooltip_tooltip = (spec, context)=>{
2289
2273
  } } = baseConfig;
2290
2274
  const { enable } = tooltip;
2291
2275
  const { measureId, measureValue, measureName } = datasetReshapeInfo[0].foldInfo;
2292
- const { groupName } = datasetReshapeInfo[0].unfoldInfo;
2276
+ const { encodingColor: colorName } = datasetReshapeInfo[0].unfoldInfo;
2293
2277
  result.tooltip = {
2294
2278
  visible: enable,
2295
2279
  mark: {
@@ -2310,7 +2294,7 @@ const tooltip_tooltip = (spec, context)=>{
2310
2294
  {
2311
2295
  visible: true,
2312
2296
  hasShape: true,
2313
- key: (datum)=>datum && datum[measureName || groupName] || '',
2297
+ key: (datum)=>datum && datum[measureName || colorName] || '',
2314
2298
  value: (datum)=>{
2315
2299
  if (!datum) return '';
2316
2300
  const value = datum[measureValue];
@@ -2332,7 +2316,7 @@ const tooltip_tooltip = (spec, context)=>{
2332
2316
  content: [
2333
2317
  {
2334
2318
  visible: true,
2335
- key: (datum)=>datum && datum[groupName] || '',
2319
+ key: (datum)=>datum && datum[colorName] || '',
2336
2320
  value: (datum)=>{
2337
2321
  if (!datum) return '';
2338
2322
  const value = datum[measureValue];
@@ -2670,7 +2654,8 @@ const pointStateDimensionHover = (spec)=>{
2670
2654
  const pointStateHover = (spec, context)=>{
2671
2655
  const point = spec.point || {};
2672
2656
  const { advancedVSeed } = context;
2673
- const { encoding } = advancedVSeed;
2657
+ const { datasetReshapeInfo } = advancedVSeed;
2658
+ const { unfoldInfo } = datasetReshapeInfo[0];
2674
2659
  const result = {
2675
2660
  ...spec,
2676
2661
  point: {
@@ -2681,7 +2666,7 @@ const pointStateHover = (spec, context)=>{
2681
2666
  scaleX: 1.4,
2682
2667
  scaleY: 1.4,
2683
2668
  stroke: (datum, context)=>{
2684
- const field = encoding[0]?.group?.[0];
2669
+ const field = unfoldInfo.encodingColorId;
2685
2670
  const color = context.seriesColor(datum[field]);
2686
2671
  return color;
2687
2672
  },
@@ -2695,7 +2680,8 @@ const pointStateHover = (spec, context)=>{
2695
2680
  };
2696
2681
  const lineStyle_lineStyle = (spec, context)=>{
2697
2682
  const { advancedVSeed } = context;
2698
- const { markStyle, encoding, dataset } = advancedVSeed;
2683
+ const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed;
2684
+ const { unfoldInfo } = datasetReshapeInfo[0];
2699
2685
  const { lineStyle } = markStyle;
2700
2686
  if (!lineStyle) return spec;
2701
2687
  const result = {
@@ -2704,8 +2690,8 @@ const lineStyle_lineStyle = (spec, context)=>{
2704
2690
  const lineStyles = Array.isArray(lineStyle) ? lineStyle : [
2705
2691
  lineStyle
2706
2692
  ];
2707
- const group = encoding[0]?.group?.[0];
2708
- const lineGroups = (0, external_remeda_namespaceObject.groupBy)(dataset, (d)=>d[group ?? '']);
2693
+ const colorId = unfoldInfo.encodingColorId;
2694
+ const lineGroups = (0, external_remeda_namespaceObject.groupBy)(dataset, (d)=>d[colorId ?? '']);
2709
2695
  const customMap = lineStyles.reduce((result, style, index)=>{
2710
2696
  const { lineColor, lineColorOpacity, lineSmooth, lineStyle, lineWidth = 2, lineVisible = true } = style;
2711
2697
  const dashSegment = 2 * lineWidth;
@@ -2726,7 +2712,7 @@ const lineStyle_lineStyle = (spec, context)=>{
2726
2712
  [`custom${index + 1}`]: {
2727
2713
  level: index + 1,
2728
2714
  filter: (datum)=>{
2729
- const lineData = lineGroups[datum[group ?? '']];
2715
+ const lineData = lineGroups[datum[colorId ?? '']];
2730
2716
  for (const d of lineData)if (selector_selector(d, style.selector)) return true;
2731
2717
  return false;
2732
2718
  },
@@ -2821,7 +2807,8 @@ const annotationPoint_annotationPoint = (spec, context)=>{
2821
2807
  };
2822
2808
  const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
2823
2809
  const { advancedVSeed } = context;
2824
- const { annotation, encoding } = advancedVSeed;
2810
+ const { annotation, datasetReshapeInfo } = advancedVSeed;
2811
+ const { unfoldInfo } = datasetReshapeInfo[0];
2825
2812
  if (!annotation || !annotation.annotationVerticalLine) return spec;
2826
2813
  const { annotationVerticalLine } = annotation;
2827
2814
  const annotationVerticalLineList = Array.isArray(annotationVerticalLine) ? annotationVerticalLine : [
@@ -2901,7 +2888,7 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
2901
2888
  }
2902
2889
  const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
2903
2890
  return selectedData.map((datum)=>{
2904
- const x = encoding[0]?.x?.[0];
2891
+ const x = unfoldInfo.encodingX;
2905
2892
  if (!x) return {};
2906
2893
  return generateOneMarkLine(datum[x]);
2907
2894
  });
@@ -2918,7 +2905,8 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
2918
2905
  };
2919
2906
  const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
2920
2907
  const { advancedVSeed } = context;
2921
- const { annotation, encoding } = advancedVSeed;
2908
+ const { annotation, datasetReshapeInfo } = advancedVSeed;
2909
+ const { unfoldInfo } = datasetReshapeInfo[0];
2922
2910
  if (!annotation || !annotation.annotationHorizontalLine) return spec;
2923
2911
  const { annotationHorizontalLine } = annotation;
2924
2912
  const annotationVerticalLineList = Array.isArray(annotationHorizontalLine) ? annotationHorizontalLine : [
@@ -2998,7 +2986,7 @@ const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
2998
2986
  }
2999
2987
  const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
3000
2988
  return selectedData.map((datum)=>{
3001
- const y = encoding[0]?.y?.[0];
2989
+ const y = unfoldInfo.encodingY;
3002
2990
  if (!y) return {};
3003
2991
  return generateOneMarkLine(datum[y]);
3004
2992
  });
@@ -3279,13 +3267,10 @@ const pivotIndicators_pivotIndicators = (chartPipeline)=>(spec, context)=>{
3279
3267
  ...spec
3280
3268
  };
3281
3269
  const { advancedVSeed } = context;
3282
- const { measures, datasetReshapeInfo, encoding, dataset } = advancedVSeed;
3270
+ const { measures, datasetReshapeInfo, dataset } = advancedVSeed;
3283
3271
  const colorItems = (0, external_remeda_namespaceObject.unique)(datasetReshapeInfo.flatMap((d)=>d.unfoldInfo.colorItems));
3284
3272
  const indicators = datasetReshapeInfo.map((reshapeInfo, index)=>{
3285
3273
  const measure = measures?.find((d)=>d.id === reshapeInfo.id);
3286
- const newEncoding = [
3287
- encoding[index]
3288
- ];
3289
3274
  const newDataset = dataset[index];
3290
3275
  const newDatasetReshapeInfo = [
3291
3276
  {
@@ -3301,8 +3286,7 @@ const pivotIndicators_pivotIndicators = (chartPipeline)=>(spec, context)=>{
3301
3286
  advancedVSeed: {
3302
3287
  ...advancedVSeed,
3303
3288
  datasetReshapeInfo: newDatasetReshapeInfo,
3304
- dataset: newDataset,
3305
- encoding: newEncoding
3289
+ dataset: newDataset
3306
3290
  }
3307
3291
  };
3308
3292
  const chartSpec = execPipeline(chartPipeline, newContext, {});
@@ -3488,7 +3472,7 @@ const pivotDiscreteLegend = (spec, context)=>{
3488
3472
  }
3489
3473
  },
3490
3474
  label: {
3491
- formatMethod: (value)=>colorIdMap[String(value)] ?? value,
3475
+ formatMethod: (value)=>colorIdMap[value] ?? value,
3492
3476
  style: {
3493
3477
  fontSize: labelFontSize,
3494
3478
  fill: labelFontColor,
@@ -3571,189 +3555,56 @@ const registerLine = ()=>{
3571
3555
  Builder._advancedPipelineMap.line = lineAdvancedPipeline;
3572
3556
  Builder._specPipelineMap.line = lineSpecPipeline;
3573
3557
  };
3574
- const dataReshapeFor2D1M_emptyReshapeResult = {
3575
- dataset: [],
3576
- foldInfo: {
3577
- foldMap: {},
3578
- measureId: '',
3579
- measureName: '',
3580
- measureValue: ''
3581
- },
3582
- unfoldInfo: {
3583
- groupName: '',
3584
- groupId: '',
3585
- colorItems: [],
3586
- colorIdMap: {}
3587
- }
3558
+ const columnAdvancedPipeline = [
3559
+ initAdvancedVSeed_initAdvancedVSeed,
3560
+ autoMeasures_autoMeasures,
3561
+ autoDimensions_autoDimensions,
3562
+ encodingForColumn,
3563
+ pivotAdapter([
3564
+ reshapeWithEncoding
3565
+ ], [
3566
+ pivotReshapeWithEncoding
3567
+ ]),
3568
+ sortXBandAxis,
3569
+ sortLegend_sortLegend,
3570
+ columnConfig,
3571
+ theme_theme,
3572
+ markStyle_markStyle,
3573
+ annotation_annotation
3574
+ ];
3575
+ const initColumn = (spec, context)=>{
3576
+ const result = {
3577
+ ...spec
3578
+ };
3579
+ const { advancedVSeed } = context;
3580
+ const { datasetReshapeInfo } = advancedVSeed;
3581
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
3582
+ result.type = 'bar';
3583
+ result.direction = 'vertical';
3584
+ result.xField = unfoldInfo.encodingX;
3585
+ result.yField = foldInfo.measureValue;
3586
+ result.seriesField = unfoldInfo.encodingColorId;
3587
+ result.padding = 0;
3588
+ result.region = [
3589
+ {
3590
+ clip: true
3591
+ }
3592
+ ];
3593
+ result.animation = true;
3594
+ return result;
3588
3595
  };
3589
- const dataReshapeFor2D1M = (dataset, dimensions, measures, options)=>{
3590
- const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, unfoldDimensionGroup = UnfoldDimensionGroup, unfoldDimensionGroupId = UnfoldDimensionGroupId } = options || {};
3591
- if (0 === dimensions.length && 0 === measures.length) return dataReshapeFor2D1M_emptyReshapeResult;
3592
- const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, foldMeasureId, foldMeasureName, foldMeasureValue);
3593
- if (0 === dimensions.length) {
3594
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
3595
- {
3596
- id: foldMeasureId,
3597
- alias: i18n`指标Id`,
3598
- location: 'dimension'
3599
- },
3600
- {
3601
- id: foldMeasureName,
3602
- alias: i18n`指标名称`,
3603
- location: 'dimension'
3604
- }
3605
- ], [
3606
- {
3607
- id: foldMeasureValue,
3608
- alias: i18n`指标值`
3609
- }
3610
- ], 1, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
3611
- return {
3612
- dataset: finalDataset,
3613
- foldInfo,
3614
- unfoldInfo
3615
- };
3616
- }
3617
- {
3618
- const onlyOneMeasure = 1 === measures.length;
3619
- const onlyOneDimension = 1 === dimensions.length;
3620
- const dims = [
3621
- ...dimensions
3622
- ];
3623
- if (!onlyOneMeasure || onlyOneDimension) dims.push({
3624
- id: foldMeasureName,
3625
- alias: i18n`指标名称`,
3626
- location: 'dimension'
3627
- });
3628
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dims, [
3629
- {
3630
- id: foldMeasureValue,
3631
- alias: i18n`指标值`
3632
- }
3633
- ], 1, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
3634
- return {
3635
- dataset: finalDataset,
3636
- foldInfo,
3637
- unfoldInfo
3638
- };
3639
- }
3596
+ const stackCornerRadius_stackCornerRadius = (spec, context)=>{
3597
+ const { advancedVSeed, vseed } = context;
3598
+ const { chartType } = vseed;
3599
+ const stackCornerRadius = advancedVSeed.config?.[chartType]?.stackCornerRadius;
3600
+ return {
3601
+ ...spec,
3602
+ stackCornerRadius
3603
+ };
3640
3604
  };
3641
- const reshapeTo2D1M = (advancedVSeed, context)=>{
3605
+ const stackInverse = (spec)=>{
3642
3606
  const result = {
3643
- ...advancedVSeed
3644
- };
3645
- const { vseed } = context;
3646
- const { dataset } = vseed;
3647
- const { dimensions, measures } = advancedVSeed;
3648
- if (!measures || !dimensions || !dataset) return result;
3649
- if (0 === measures.length) throw new Error('measures can not be empty');
3650
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, dimensions, measures);
3651
- return {
3652
- ...result,
3653
- dataset: newDatasets,
3654
- datasetReshapeInfo: [
3655
- {
3656
- id: '2D1M',
3657
- index: 0,
3658
- foldInfo,
3659
- unfoldInfo
3660
- }
3661
- ],
3662
- dimensions,
3663
- measures
3664
- };
3665
- };
3666
- const pivotReshapeTo2D1M = (advancedVSeed, context)=>{
3667
- const result = {
3668
- ...advancedVSeed
3669
- };
3670
- const { vseed } = context;
3671
- const { dataset } = vseed;
3672
- const { measures } = advancedVSeed;
3673
- const dimensions = advancedVSeed.dimensions;
3674
- if (!measures || !dimensions) return result;
3675
- const measureGroups = [];
3676
- if (measures) measures.forEach((measure)=>{
3677
- if (measure.children && measure.children.length > 0) measureGroups.push(measure);
3678
- });
3679
- const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
3680
- const newDatasets = [];
3681
- const datasetReshapeInfo = [];
3682
- measureGroups.forEach((measureGroup, index)=>{
3683
- const measures = measureGroup.children;
3684
- if (!measures) return;
3685
- const groupId = measureGroup.id;
3686
- const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, commonDimensions, measures, {
3687
- foldMeasureId: FoldMeasureId,
3688
- foldMeasureName: FoldMeasureName,
3689
- foldMeasureValue: FoldMeasureValue + groupId,
3690
- unfoldDimensionGroup: UnfoldDimensionGroup
3691
- });
3692
- const reshapeInfo = {
3693
- id: groupId,
3694
- index,
3695
- foldInfo,
3696
- unfoldInfo
3697
- };
3698
- newDatasets.push(newSubDataset);
3699
- datasetReshapeInfo.push(reshapeInfo);
3700
- });
3701
- return {
3702
- ...result,
3703
- dataset: newDatasets,
3704
- datasetReshapeInfo: datasetReshapeInfo
3705
- };
3706
- };
3707
- const columnAdvancedPipeline = [
3708
- initAdvancedVSeed_initAdvancedVSeed,
3709
- autoMeasures_autoMeasures,
3710
- autoDimensions_autoDimensions,
3711
- pivotAdapter([
3712
- reshapeTo2D1M
3713
- ], [
3714
- pivotReshapeTo2D1M
3715
- ]),
3716
- encodingXY,
3717
- sortXBandAxis,
3718
- sort_sortLegend,
3719
- columnConfig,
3720
- theme_theme,
3721
- markStyle_markStyle,
3722
- annotation_annotation
3723
- ];
3724
- const initColumn = (spec, context)=>{
3725
- const result = {
3726
- ...spec
3727
- };
3728
- const { advancedVSeed } = context;
3729
- const { encoding } = advancedVSeed;
3730
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
3731
- result.type = 'bar';
3732
- result.direction = 'vertical';
3733
- result.xField = encoding[0].x[0];
3734
- result.yField = encoding[0].y[0];
3735
- result.seriesField = encoding[0].group[0];
3736
- result.padding = 0;
3737
- result.region = [
3738
- {
3739
- clip: true
3740
- }
3741
- ];
3742
- result.animation = true;
3743
- return result;
3744
- };
3745
- const stackCornerRadius_stackCornerRadius = (spec, context)=>{
3746
- const { advancedVSeed, vseed } = context;
3747
- const { chartType } = vseed;
3748
- const stackCornerRadius = advancedVSeed.config?.[chartType]?.stackCornerRadius;
3749
- return {
3750
- ...spec,
3751
- stackCornerRadius
3752
- };
3753
- };
3754
- const stackInverse = (spec)=>{
3755
- const result = {
3756
- ...spec
3607
+ ...spec
3757
3608
  };
3758
3609
  result.stackInverse = true;
3759
3610
  return result;
@@ -4052,14 +3903,14 @@ const columnParallelAdvancedPipeline = [
4052
3903
  initAdvancedVSeed_initAdvancedVSeed,
4053
3904
  autoMeasures_autoMeasures,
4054
3905
  autoDimensions_autoDimensions,
3906
+ encodingForColumn,
4055
3907
  pivotAdapter([
4056
- reshapeTo2D1M
3908
+ reshapeWithEncoding
4057
3909
  ], [
4058
- pivotReshapeTo2D1M
3910
+ pivotReshapeWithEncoding
4059
3911
  ]),
4060
- encodingXY,
4061
3912
  sortXBandAxis,
4062
- sort_sortLegend,
3913
+ sortLegend_sortLegend,
4063
3914
  columnParallelConfig,
4064
3915
  theme_theme,
4065
3916
  markStyle_markStyle,
@@ -4070,20 +3921,19 @@ const initColumnParallel = (spec, context)=>{
4070
3921
  ...spec
4071
3922
  };
4072
3923
  const { advancedVSeed } = context;
4073
- const { encoding, datasetReshapeInfo, dimensions } = advancedVSeed;
4074
- const { unfoldInfo } = datasetReshapeInfo[0];
4075
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
3924
+ const { datasetReshapeInfo, dimensions } = advancedVSeed;
3925
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
4076
3926
  const sameDimensionsMode = dimensions.length > 1 && dimensions.every((dim)=>dim.id === dimensions[0].id);
4077
3927
  result.type = 'bar';
4078
3928
  result.direction = 'vertical';
4079
3929
  result.xField = sameDimensionsMode ? [
4080
- encoding[0].x[0]
3930
+ unfoldInfo.encodingX
4081
3931
  ] : [
4082
- encoding[0].x[0],
4083
- unfoldInfo.groupId
3932
+ unfoldInfo.encodingX,
3933
+ unfoldInfo.encodingDetail
4084
3934
  ];
4085
- result.yField = encoding[0].y[0];
4086
- result.seriesField = encoding[0].group[0];
3935
+ result.yField = foldInfo.measureValue;
3936
+ result.seriesField = unfoldInfo.encodingColorId;
4087
3937
  result.padding = 0;
4088
3938
  result.region = [
4089
3939
  {
@@ -4150,14 +4000,14 @@ const columnPercentAdvancedPipeline = [
4150
4000
  initAdvancedVSeed_initAdvancedVSeed,
4151
4001
  autoMeasures_autoMeasures,
4152
4002
  autoDimensions_autoDimensions,
4003
+ encodingForColumn,
4153
4004
  pivotAdapter([
4154
- reshapeTo2D1M
4005
+ reshapeWithEncoding
4155
4006
  ], [
4156
- pivotReshapeTo2D1M
4007
+ pivotReshapeWithEncoding
4157
4008
  ]),
4158
- encodingXY,
4159
4009
  sortXBandAxis,
4160
- sort_sortLegend,
4010
+ sortLegend_sortLegend,
4161
4011
  columnPercentConfig,
4162
4012
  theme_theme,
4163
4013
  markStyle_markStyle,
@@ -4227,55 +4077,76 @@ const registerColumnPercent = ()=>{
4227
4077
  Builder._advancedPipelineMap.columnPercent = columnPercentAdvancedPipeline;
4228
4078
  Builder._specPipelineMap.columnPercent = columnPercentSpecPipeline;
4229
4079
  };
4230
- const encodingYX = (advancedVSeed)=>{
4231
- const result = {
4232
- ...advancedVSeed
4233
- };
4234
- const { datasetReshapeInfo, dimensions } = advancedVSeed;
4235
- if (!datasetReshapeInfo || !dimensions) return result;
4236
- const yDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
4237
- const isZeroDimension = 0 === dimensions.length;
4238
- const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
4239
- const { foldInfo, unfoldInfo } = cur;
4240
- const y = [
4241
- isZeroDimension ? foldInfo.measureName : yDimension?.id
4242
- ];
4243
- const x = [
4244
- foldInfo.measureValue
4245
- ];
4246
- const group = [
4247
- unfoldInfo.groupId
4080
+ const encodingForBar = (advancedVSeed, context)=>{
4081
+ const { vseed } = context;
4082
+ const { dimensions } = advancedVSeed;
4083
+ if (!dimensions) return advancedVSeed;
4084
+ const encoding = vseed.encoding;
4085
+ if (encoding) {
4086
+ const y = encoding.y || [
4087
+ dimensions[0].id
4248
4088
  ];
4249
- const color = [
4250
- foldInfo.measureName
4089
+ const color = encoding.color || [
4090
+ (dimensions[1] || dimensions[0]).id
4251
4091
  ];
4252
- return [
4253
- ...prev,
4254
- {
4255
- x,
4092
+ const detail = encoding.detail || [];
4093
+ const mergedDetail = (0, external_remeda_namespaceObject.unique)([
4094
+ ...color,
4095
+ ...detail
4096
+ ]);
4097
+ return {
4098
+ ...advancedVSeed,
4099
+ encoding: {
4100
+ ...encoding,
4256
4101
  y,
4257
- group,
4258
- color
4102
+ color,
4103
+ detail: mergedDetail
4259
4104
  }
4260
- ];
4261
- }, []);
4105
+ };
4106
+ }
4107
+ const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
4108
+ const mergedEncoding = {
4109
+ y: dimensions.slice(0, 1).map((item)=>item.id),
4110
+ color: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
4111
+ detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
4112
+ tooltip: dimensions.map((item)=>item.id),
4113
+ label: [],
4114
+ row: [],
4115
+ column: []
4116
+ };
4262
4117
  return {
4263
- ...result,
4264
- encoding
4118
+ ...advancedVSeed,
4119
+ encoding: mergedEncoding
4120
+ };
4121
+ };
4122
+ const sortYBandAxis = (advancedVSeed, context)=>{
4123
+ const result = {
4124
+ ...advancedVSeed
4265
4125
  };
4126
+ const { vseed } = context;
4127
+ const { sort: sortAxis } = vseed;
4128
+ const { datasetReshapeInfo, dataset } = advancedVSeed;
4129
+ const { unfoldInfo } = datasetReshapeInfo[0];
4130
+ const yField = unfoldInfo?.encodingY;
4131
+ if (!sortAxis || !yField) return advancedVSeed;
4132
+ if (!result.analysis) result.analysis = {};
4133
+ if (!result.analysis.orderMapping) result.analysis.orderMapping = {};
4134
+ const axisOrderResult = calcOrder(sortAxis, yField, dataset.flat(2));
4135
+ result.analysis.orderMapping[yField] = axisOrderResult;
4136
+ return result;
4266
4137
  };
4267
4138
  const barAdvancedPipeline = [
4268
4139
  initAdvancedVSeed_initAdvancedVSeed,
4269
4140
  autoMeasures_autoMeasures,
4270
4141
  autoDimensions_autoDimensions,
4142
+ encodingForBar,
4271
4143
  pivotAdapter([
4272
- reshapeTo2D1M
4144
+ reshapeWithEncoding
4273
4145
  ], [
4274
- pivotReshapeTo2D1M
4146
+ pivotReshapeWithEncoding
4275
4147
  ]),
4276
- encodingYX,
4277
4148
  sortYBandAxis,
4278
- sort_sortLegend,
4149
+ sortLegend_sortLegend,
4279
4150
  barConfig,
4280
4151
  theme_theme,
4281
4152
  markStyle_markStyle,
@@ -4286,13 +4157,13 @@ const initBar = (spec, context)=>{
4286
4157
  ...spec
4287
4158
  };
4288
4159
  const { advancedVSeed } = context;
4289
- const { encoding } = advancedVSeed;
4290
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
4160
+ const { datasetReshapeInfo } = advancedVSeed;
4161
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
4291
4162
  result.type = 'bar';
4292
4163
  result.direction = 'horizontal';
4293
- result.yField = encoding[0].y?.[0];
4294
- result.xField = encoding[0].x?.[0];
4295
- result.seriesField = encoding[0].group?.[0];
4164
+ result.yField = unfoldInfo.encodingY;
4165
+ result.xField = foldInfo.measureValue;
4166
+ result.seriesField = unfoldInfo.encodingColorId;
4296
4167
  result.padding = 0;
4297
4168
  result.region = [
4298
4169
  {
@@ -4304,11 +4175,12 @@ const initBar = (spec, context)=>{
4304
4175
  };
4305
4176
  const datasetYX = (spec, context)=>{
4306
4177
  const { advancedVSeed, vseed } = context;
4307
- const { encoding, analysis, datasetReshapeInfo } = advancedVSeed;
4178
+ const { analysis, datasetReshapeInfo } = advancedVSeed;
4179
+ const { unfoldInfo } = datasetReshapeInfo[0];
4308
4180
  const orderMapping = analysis?.orderMapping || {};
4309
- const angle = encoding[0]?.angle?.[0];
4310
- const y = encoding[0]?.y?.[0];
4311
- const group = encoding[0]?.group?.[0];
4181
+ const angle = unfoldInfo.encodingAngle;
4182
+ const y = unfoldInfo.encodingY;
4183
+ const colorId = unfoldInfo.encodingColorId;
4312
4184
  const id = datasetReshapeInfo[0].id;
4313
4185
  const fields = {};
4314
4186
  if (angle) fields[angle] = {
@@ -4325,14 +4197,14 @@ const datasetYX = (spec, context)=>{
4325
4197
  sortIndex: 0
4326
4198
  };
4327
4199
  }
4328
- if (group) {
4329
- const order = orderMapping[group];
4330
- if (order) fields[group] = {
4200
+ if (colorId) {
4201
+ const order = orderMapping[colorId];
4202
+ if (order) fields[colorId] = {
4331
4203
  sortIndex: 0,
4332
4204
  domain: order,
4333
4205
  lockStatisticsByDomain: true
4334
4206
  };
4335
- else fields[group] = {
4207
+ else fields[colorId] = {
4336
4208
  sortIndex: 0
4337
4209
  };
4338
4210
  }
@@ -4620,14 +4492,14 @@ const barParallelAdvancedPipeline = [
4620
4492
  initAdvancedVSeed_initAdvancedVSeed,
4621
4493
  autoMeasures_autoMeasures,
4622
4494
  autoDimensions_autoDimensions,
4495
+ encodingForBar,
4623
4496
  pivotAdapter([
4624
- reshapeTo2D1M
4497
+ reshapeWithEncoding
4625
4498
  ], [
4626
- pivotReshapeTo2D1M
4499
+ pivotReshapeWithEncoding
4627
4500
  ]),
4628
- encodingYX,
4629
4501
  sortYBandAxis,
4630
- sort_sortLegend,
4502
+ sortLegend_sortLegend,
4631
4503
  barParallelConfig,
4632
4504
  theme_theme,
4633
4505
  markStyle_markStyle,
@@ -4638,20 +4510,19 @@ const initBarParallel = (spec, context)=>{
4638
4510
  ...spec
4639
4511
  };
4640
4512
  const { advancedVSeed } = context;
4641
- const { encoding, datasetReshapeInfo, dimensions } = advancedVSeed;
4642
- const { unfoldInfo } = datasetReshapeInfo[0];
4643
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
4513
+ const { datasetReshapeInfo, dimensions } = advancedVSeed;
4514
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
4644
4515
  const sameDimensionsMode = dimensions.length > 1 && dimensions.every((dim)=>dim.id === dimensions[0].id);
4645
4516
  result.type = 'bar';
4646
4517
  result.direction = 'horizontal';
4647
4518
  result.yField = sameDimensionsMode ? [
4648
- encoding[0].y[0]
4519
+ unfoldInfo.encodingY
4649
4520
  ] : [
4650
- encoding[0].y[0],
4651
- unfoldInfo.groupId
4521
+ unfoldInfo.encodingY,
4522
+ unfoldInfo.encodingDetail
4652
4523
  ];
4653
- result.xField = encoding[0].x[0];
4654
- result.seriesField = encoding[0].group[0];
4524
+ result.xField = foldInfo.measureValue;
4525
+ result.seriesField = unfoldInfo.encodingColorId;
4655
4526
  result.padding = 0;
4656
4527
  result.region = [
4657
4528
  {
@@ -4717,14 +4588,14 @@ const barPercentAdvancedPipeline = [
4717
4588
  initAdvancedVSeed_initAdvancedVSeed,
4718
4589
  autoMeasures_autoMeasures,
4719
4590
  autoDimensions_autoDimensions,
4591
+ encodingForBar,
4720
4592
  pivotAdapter([
4721
- reshapeTo2D1M
4593
+ reshapeWithEncoding
4722
4594
  ], [
4723
- pivotReshapeTo2D1M
4595
+ pivotReshapeWithEncoding
4724
4596
  ]),
4725
- encodingYX,
4726
4597
  sortYBandAxis,
4727
- sort_sortLegend,
4598
+ sortLegend_sortLegend,
4728
4599
  barPercentConfig,
4729
4600
  theme_theme,
4730
4601
  markStyle_markStyle,
@@ -4788,14 +4659,14 @@ const areaAdvancedPipeline = [
4788
4659
  initAdvancedVSeed_initAdvancedVSeed,
4789
4660
  autoMeasures_autoMeasures,
4790
4661
  autoDimensions_autoDimensions,
4662
+ encodingForColumn,
4791
4663
  pivotAdapter([
4792
- reshapeTo2D1M0Name
4664
+ reshapeWithEncoding
4793
4665
  ], [
4794
- pivotReshapeTo2D1M0Name
4666
+ pivotReshapeWithEncoding
4795
4667
  ]),
4796
- encodingXY,
4797
4668
  sortXBandAxis,
4798
- sort_sortLegend,
4669
+ sortLegend_sortLegend,
4799
4670
  areaConfig,
4800
4671
  theme_theme,
4801
4672
  markStyle_markStyle,
@@ -4806,13 +4677,13 @@ const initArea = (spec, context)=>{
4806
4677
  ...spec
4807
4678
  };
4808
4679
  const { advancedVSeed } = context;
4809
- const { encoding } = advancedVSeed;
4810
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
4680
+ const { datasetReshapeInfo } = advancedVSeed;
4681
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
4811
4682
  result.type = 'area';
4812
4683
  result.direction = 'vertical';
4813
- result.xField = encoding[0].x[0];
4814
- result.yField = encoding[0].y[0];
4815
- result.seriesField = encoding[0].group[0];
4684
+ result.yField = foldInfo.measureValue;
4685
+ result.xField = unfoldInfo.encodingX;
4686
+ result.seriesField = unfoldInfo.encodingColorId;
4816
4687
  result.padding = 0;
4817
4688
  result.region = [
4818
4689
  {
@@ -4824,8 +4695,9 @@ const initArea = (spec, context)=>{
4824
4695
  };
4825
4696
  const areaStyle_areaStyle = (spec, context)=>{
4826
4697
  const { advancedVSeed } = context;
4827
- const { markStyle, encoding, dataset } = advancedVSeed;
4698
+ const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed;
4828
4699
  const { areaStyle } = markStyle;
4700
+ const { unfoldInfo } = datasetReshapeInfo[0];
4829
4701
  if (!areaStyle) return {
4830
4702
  ...spec,
4831
4703
  area: {
@@ -4838,7 +4710,7 @@ const areaStyle_areaStyle = (spec, context)=>{
4838
4710
  const areaStyles = Array.isArray(areaStyle) ? areaStyle : [
4839
4711
  areaStyle
4840
4712
  ];
4841
- const group = encoding[0]?.group?.[0];
4713
+ const group = unfoldInfo.encodingColorId;
4842
4714
  const areaGroups = (0, external_remeda_namespaceObject.groupBy)(dataset, (d)=>d[group ?? '']);
4843
4715
  const customMap = areaStyles.reduce((result, style, index)=>{
4844
4716
  const { areaColor, areaColorOpacity, areaVisible = true } = style;
@@ -4932,14 +4804,14 @@ const areaPercentAdvancedPipeline = [
4932
4804
  initAdvancedVSeed_initAdvancedVSeed,
4933
4805
  autoMeasures_autoMeasures,
4934
4806
  autoDimensions_autoDimensions,
4807
+ encodingForColumn,
4935
4808
  pivotAdapter([
4936
- reshapeTo2D1M0Name
4809
+ reshapeWithEncoding
4937
4810
  ], [
4938
- pivotReshapeTo2D1M0Name
4811
+ pivotReshapeWithEncoding
4939
4812
  ]),
4940
- encodingXY,
4941
4813
  sortXBandAxis,
4942
- sort_sortLegend,
4814
+ sortLegend_sortLegend,
4943
4815
  areaPercentConfig,
4944
4816
  theme_theme,
4945
4817
  markStyle_markStyle,
@@ -5004,16 +4876,20 @@ const registerAreaPercent = ()=>{
5004
4876
  Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
5005
4877
  Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
5006
4878
  };
5007
- const autoMeasuresBy2M1Group = (advancedVSeed, context)=>{
4879
+ const autoScatterMeasures = (advancedVSeed, context)=>{
5008
4880
  const result = {
5009
4881
  ...advancedVSeed
5010
4882
  };
5011
4883
  const { vseed } = context;
5012
- const { measures, dataset } = vseed;
4884
+ const { dataset, scatterMeasures, measures } = vseed;
5013
4885
  if (!dataset) throw new Error('dataset is required');
5014
4886
  if (0 === dataset.length) return result;
5015
- if (measures) {
5016
- result.measures = auto2M1Group(measures);
4887
+ if (scatterMeasures) {
4888
+ result.measures = scatterMeasuresToMeasureTree(scatterMeasures);
4889
+ return result;
4890
+ }
4891
+ if (measures && measureDepth(measures) > 1) {
4892
+ result.measures = measures;
5017
4893
  return result;
5018
4894
  }
5019
4895
  const top100dataset = dataset.slice(0, 100);
@@ -5021,7 +4897,7 @@ const autoMeasuresBy2M1Group = (advancedVSeed, context)=>{
5021
4897
  ...prev,
5022
4898
  ...cur
5023
4899
  }), {});
5024
- const newMeasures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
4900
+ const newMeasures = measures || Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
5025
4901
  '',
5026
4902
  null,
5027
4903
  void 0
@@ -5029,664 +4905,237 @@ const autoMeasuresBy2M1Group = (advancedVSeed, context)=>{
5029
4905
  id: measure,
5030
4906
  alias: measure
5031
4907
  }));
5032
- result.measures = auto2M1Group(newMeasures);
4908
+ if (0 === newMeasures.length) result.measures = [];
4909
+ else if (1 === newMeasures.length) result.measures = [
4910
+ {
4911
+ id: 'primary',
4912
+ alias: 'primary',
4913
+ children: newMeasures
4914
+ }
4915
+ ];
4916
+ else if (newMeasures.length > 1) result.measures = [
4917
+ {
4918
+ id: 'primary',
4919
+ alias: 'primary',
4920
+ children: newMeasures.slice(0, 1)
4921
+ },
4922
+ {
4923
+ id: 'secondary',
4924
+ alias: 'secondary',
4925
+ children: newMeasures.slice(1)
4926
+ }
4927
+ ];
5033
4928
  return result;
5034
4929
  };
5035
- const auto2M1Group = (measures)=>{
5036
- const allMeasures = findAllMeasures(measures);
5037
- if (allMeasures.length <= 2) return allMeasures;
5038
- const groups = measures.filter((measure)=>'children' in measure);
5039
- const singleMeasures = measures.filter((measure)=>!('children' in measure));
5040
- for(let i = 0; i < singleMeasures.length; i += 2){
5041
- const group = autoMeasuresBy2M1Group_createEmptyMeasureGroup();
5042
- group.children = allMeasures.slice(i, i + 2);
5043
- groups.push(group);
5044
- }
5045
- return groups;
5046
- };
5047
- const autoMeasuresBy2M1Group_createEmptyMeasureGroup = ()=>({
5048
- id: '',
5049
- alias: '',
5050
- children: []
4930
+ const scatterMeasuresToMeasureTree = (scatterMeasures)=>{
4931
+ const measureTree = scatterMeasures.map((item, index)=>{
4932
+ const { xMeasures, yMeasures } = item;
4933
+ const groupChildren = [];
4934
+ let id = '';
4935
+ if (xMeasures) {
4936
+ const arrXMeasures = Array.isArray(xMeasures) ? xMeasures : [
4937
+ xMeasures
4938
+ ];
4939
+ const alias = arrXMeasures.map((item)=>item.alias || item.id).toString();
4940
+ id += alias;
4941
+ groupChildren.push({
4942
+ id: `${index}-x`,
4943
+ alias: arrXMeasures.map((item)=>item.alias || item.id).toString(),
4944
+ children: arrXMeasures
4945
+ });
4946
+ }
4947
+ if (yMeasures) {
4948
+ const arrYMeasures = Array.isArray(yMeasures) ? yMeasures : [
4949
+ yMeasures
4950
+ ];
4951
+ const alias = arrYMeasures.map((item)=>item.alias || item.id).toString();
4952
+ id += alias;
4953
+ groupChildren.push({
4954
+ id: `${index}-y`,
4955
+ alias: arrYMeasures.map((item)=>item.alias || item.id).toString(),
4956
+ children: arrYMeasures
4957
+ });
4958
+ }
4959
+ return {
4960
+ id,
4961
+ alias: id,
4962
+ children: groupChildren
4963
+ };
5051
4964
  });
5052
- const dataReshapeFor1D_emptyReshapeResult = {
5053
- dataset: [],
5054
- foldInfo: {
5055
- foldMap: {},
5056
- measureId: '',
5057
- measureName: '',
5058
- measureValue: ''
5059
- },
5060
- unfoldInfo: {
5061
- groupName: '',
5062
- groupId: '',
5063
- colorItems: [],
5064
- colorIdMap: {}
5065
- }
4965
+ if (1 === scatterMeasures.length) return measureTree[0].children || [];
4966
+ return measureTree;
5066
4967
  };
5067
- const dataReshapeFor1D = (dataset, dimensions, measures, options)=>{
5068
- const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, unfoldDimensionGroup = UnfoldDimensionGroup, unfoldDimensionGroupId = UnfoldDimensionGroupId } = options || {};
5069
- if (0 === dimensions.length && 0 === measures.length) return dataReshapeFor1D_emptyReshapeResult;
5070
- if (0 === dimensions.length) {
5071
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(dataset, [], [], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
4968
+ const encodingForScatter = (advancedVSeed, context)=>{
4969
+ const { vseed } = context;
4970
+ const { dimensions } = advancedVSeed;
4971
+ if (!dimensions) return advancedVSeed;
4972
+ const encoding = vseed.encoding;
4973
+ if (encoding) {
4974
+ const detail = encoding.detail || [];
4975
+ const color = encoding.color || [
4976
+ (dimensions[1] || dimensions[0]).id
4977
+ ];
4978
+ const mergedDetail = (0, external_remeda_namespaceObject.unique)([
4979
+ ...color,
4980
+ ...detail
4981
+ ]);
5072
4982
  return {
5073
- dataset: finalDataset,
5074
- foldInfo: {
5075
- foldMap: {},
5076
- measureId: foldMeasureId,
5077
- measureName: foldMeasureName,
5078
- measureValue: foldMeasureValue
5079
- },
5080
- unfoldInfo
5081
- };
5082
- }
5083
- {
5084
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(dataset, [
5085
- ...dimensions
5086
- ], [
5087
- {
5088
- id: foldMeasureValue,
5089
- alias: i18n`指标值`
4983
+ ...advancedVSeed,
4984
+ encoding: {
4985
+ ...encoding,
4986
+ color,
4987
+ detail: mergedDetail
5090
4988
  }
5091
- ], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
5092
- return {
5093
- dataset: finalDataset,
5094
- foldInfo: {
5095
- foldMap: {},
5096
- measureId: foldMeasureId,
5097
- measureName: foldMeasureName,
5098
- measureValue: foldMeasureValue
5099
- },
5100
- unfoldInfo
5101
4989
  };
5102
4990
  }
4991
+ const dimensionsWithoutMeasureName = dimensions.filter((item)=>item.id !== MeasureName);
4992
+ const mergedEncoding = {
4993
+ color: dimensions.slice(0).map((item)=>item.id),
4994
+ detail: dimensionsWithoutMeasureName.slice(0).map((item)=>item.id),
4995
+ tooltip: dimensionsWithoutMeasureName.map((item)=>item.id),
4996
+ label: [],
4997
+ row: [],
4998
+ column: []
4999
+ };
5000
+ return {
5001
+ ...advancedVSeed,
5002
+ encoding: mergedEncoding
5003
+ };
5103
5004
  };
5104
- const reshapeTo1D = (advancedVSeed, context)=>{
5005
+ const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
5105
5006
  const result = {
5106
5007
  ...advancedVSeed
5107
5008
  };
5108
5009
  const { vseed } = context;
5109
5010
  const { dataset } = vseed;
5110
- const { dimensions, measures } = advancedVSeed;
5111
- if (!measures || !dimensions || !dataset) return result;
5011
+ const { dimensions, measures, encoding, chartType } = advancedVSeed;
5012
+ if (!measures || !dimensions || !dataset || !encoding) return result;
5112
5013
  if (0 === measures.length) throw new Error('measures can not be empty');
5113
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D(dataset, dimensions, measures);
5014
+ if (measures.length > 2) throw new Error('measures can not be more than 2');
5015
+ const foldInfoList = [];
5016
+ const unfoldInfoList = [];
5017
+ const datasets = [];
5018
+ const xMeasures = measures[0];
5019
+ const yMeasures = measures[1] || xMeasures;
5020
+ if (xMeasures && xMeasures.children) {
5021
+ const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
5022
+ foldMeasureValue: FoldXMeasureValue,
5023
+ colorItemAsId: true
5024
+ });
5025
+ datasets.push(newDataset);
5026
+ foldInfoList.push(foldInfo);
5027
+ unfoldInfoList.push(unfoldInfo);
5028
+ }
5029
+ if (yMeasures && yMeasures.children) {
5030
+ const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(datasets[0], dimensions, yMeasures.children, encoding, {
5031
+ foldMeasureValue: FoldYMeasureValue,
5032
+ colorItemAsId: true
5033
+ });
5034
+ datasets[0] = newDataset;
5035
+ foldInfoList.push(foldInfo);
5036
+ unfoldInfoList.push(unfoldInfo);
5037
+ }
5038
+ const unfoldInfo = {
5039
+ ...unfoldInfoList[0],
5040
+ colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
5041
+ colorIdMap: unfoldInfoList.reduce((prev, cur)=>({
5042
+ ...prev,
5043
+ ...cur.colorIdMap
5044
+ }), {})
5045
+ };
5114
5046
  return {
5115
5047
  ...result,
5116
- dataset: newDatasets,
5048
+ dataset: datasets[0],
5117
5049
  datasetReshapeInfo: [
5118
5050
  {
5119
- id: '1D2M',
5051
+ id: String(chartType),
5120
5052
  index: 0,
5121
- foldInfo,
5122
- unfoldInfo
5053
+ foldInfo: foldInfoList[0],
5054
+ foldInfoList: foldInfoList,
5055
+ unfoldInfo: unfoldInfo
5123
5056
  }
5124
5057
  ]
5125
5058
  };
5126
5059
  };
5127
- const pivotReshapeTo1D = (advancedVSeed, context)=>{
5060
+ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
5128
5061
  const result = {
5129
5062
  ...advancedVSeed
5130
5063
  };
5131
5064
  const { vseed } = context;
5132
5065
  const { dataset } = vseed;
5133
- const { measures } = advancedVSeed;
5134
- const dimensions = advancedVSeed.dimensions;
5135
- if (!measures || !dimensions) return result;
5066
+ const { dimensions, measures, encoding, chartType } = advancedVSeed;
5067
+ if (!measures || !dimensions || !dataset || !encoding) return result;
5136
5068
  const measureGroups = [];
5137
- if (measures) measures.forEach((measure)=>{
5138
- if (measure.children && measure.children.length > 0) measureGroups.push(measure);
5069
+ const depth = measureDepth(measures);
5070
+ if (3 === depth) measures.forEach((measure)=>{
5071
+ measureGroups.push(measure.children);
5139
5072
  });
5140
- const newDatasets = [];
5073
+ else if (2 === depth) measureGroups.push(measures);
5074
+ const datasetList = [];
5141
5075
  const datasetReshapeInfo = [];
5142
- measureGroups.forEach((measureGroup, index)=>{
5143
- const measures = measureGroup.children;
5144
- if (!measures) return;
5145
- const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
5146
- const groupId = measureGroup.id;
5147
- const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeFor1D(dataset, commonDimensions, measures, {
5148
- foldMeasureId: FoldMeasureId,
5149
- foldMeasureName: FoldMeasureName,
5150
- foldMeasureValue: FoldMeasureValue + groupId,
5151
- unfoldDimensionGroup: UnfoldDimensionGroup
5152
- });
5076
+ measureGroups.forEach((measures, index)=>{
5077
+ if (0 === measures.length) throw new Error('measures can not be empty');
5078
+ if (measures.length > 2) throw new Error('measures can not be more than 2');
5079
+ const foldInfoList = [];
5080
+ const unfoldInfoList = [];
5081
+ const datasets = [];
5082
+ const xMeasures = measures[0];
5083
+ const yMeasures = measures[1] || xMeasures;
5084
+ if (xMeasures && xMeasures.children) {
5085
+ const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
5086
+ foldMeasureValue: `${FoldXMeasureValue}${index}`,
5087
+ colorItemAsId: true
5088
+ });
5089
+ datasets.push(newDataset);
5090
+ foldInfoList.push(foldInfo);
5091
+ unfoldInfoList.push(unfoldInfo);
5092
+ }
5093
+ if (yMeasures && yMeasures.children) {
5094
+ const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, yMeasures.children, encoding, {
5095
+ foldMeasureValue: `${FoldYMeasureValue}${index}`,
5096
+ colorItemAsId: true
5097
+ });
5098
+ datasets.push(newDataset);
5099
+ foldInfoList.push(foldInfo);
5100
+ unfoldInfoList.push(unfoldInfo);
5101
+ }
5102
+ const unfoldInfo = {
5103
+ ...unfoldInfoList[0],
5104
+ colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
5105
+ colorIdMap: unfoldInfoList.reduce((prev, cur)=>({
5106
+ ...prev,
5107
+ ...cur.colorIdMap
5108
+ }), {})
5109
+ };
5153
5110
  const reshapeInfo = {
5154
- id: groupId,
5111
+ id: `${chartType}-${index}`,
5155
5112
  index,
5156
- foldInfo,
5157
- unfoldInfo
5158
- };
5159
- newDatasets.push(newSubDataset);
5160
- datasetReshapeInfo.push(reshapeInfo);
5161
- });
5162
- return {
5163
- ...result,
5164
- dataset: newDatasets,
5165
- datasetReshapeInfo: datasetReshapeInfo
5166
- };
5167
- };
5168
- const encodingAreaRange = (advancedVSeed)=>{
5169
- const result = {
5170
- ...advancedVSeed
5171
- };
5172
- const { datasetReshapeInfo, measures } = advancedVSeed;
5173
- if (!datasetReshapeInfo || !measures) return result;
5174
- const encoding = datasetReshapeInfo.reduce((prev, cur, index)=>{
5175
- const measure = measures[index];
5176
- if ('children' in measure) {
5177
- const m1 = measure.children?.[0];
5178
- const m2 = measure.children?.[1] || m1;
5179
- const { foldInfo, unfoldInfo } = cur;
5180
- const x = [
5181
- unfoldInfo.groupId
5182
- ];
5183
- const y = [
5184
- m1?.id,
5185
- m2?.id
5186
- ];
5187
- const group = [
5188
- unfoldInfo.groupId
5189
- ];
5190
- const color = [
5191
- foldInfo.measureName
5192
- ];
5193
- return [
5194
- ...prev,
5195
- {
5196
- x,
5197
- y,
5198
- group,
5199
- color
5200
- }
5201
- ];
5202
- }
5203
- {
5204
- const m1 = measures[index];
5205
- const m2 = measures[index + 1] || m1;
5206
- const { foldInfo, unfoldInfo } = cur;
5207
- const x = [
5208
- unfoldInfo.groupId
5209
- ];
5210
- const y = [
5211
- m1.id,
5212
- m2.id
5213
- ];
5214
- const group = [
5215
- unfoldInfo.groupId
5216
- ];
5217
- const color = [
5218
- foldInfo.measureName
5219
- ];
5220
- return [
5221
- ...prev,
5222
- {
5223
- x,
5224
- y,
5225
- group,
5226
- color
5227
- }
5228
- ];
5229
- }
5230
- }, []);
5231
- return {
5232
- ...result,
5233
- encoding
5234
- };
5235
- };
5236
- const areaRangeAdvancedPipeline = [
5237
- initAdvancedVSeed_initAdvancedVSeed,
5238
- autoMeasuresBy2M1Group,
5239
- autoDimensions_autoDimensions,
5240
- pivotAdapter([
5241
- reshapeTo1D
5242
- ], [
5243
- pivotReshapeTo1D
5244
- ]),
5245
- encodingAreaRange,
5246
- sortXBandAxis,
5247
- areaConfig,
5248
- theme_theme,
5249
- markStyle_markStyle,
5250
- annotation_annotation
5251
- ];
5252
- const series = (...args)=>{
5253
- const result = {
5254
- type: 'common',
5255
- padding: 0,
5256
- region: [
5257
- {
5258
- clip: true
5259
- }
5260
- ]
5261
- };
5262
- return (_, context)=>{
5263
- result.series = args.map((pipeline)=>execPipeline(pipeline, context, {}));
5264
- return result;
5265
- };
5266
- };
5267
- const seriesDualAxis = (...args)=>{
5268
- const result = {
5269
- type: 'common',
5270
- padding: 0,
5271
- region: [
5272
- {
5273
- clip: true
5274
- }
5275
- ]
5276
- };
5277
- const createDualContext = (context, index)=>{
5278
- const { advancedVSeed } = context;
5279
- const dataset = advancedVSeed.dataset[index];
5280
- return {
5281
- ...context,
5282
- advancedVSeed: {
5283
- ...advancedVSeed,
5284
- dataset: dataset
5285
- }
5286
- };
5287
- };
5288
- return (_, context)=>{
5289
- result.series = args.map((pipeline, index)=>{
5290
- const seriesContext = createDualContext(context, index);
5291
- return execPipeline(pipeline, seriesContext, {});
5292
- });
5293
- return result;
5294
- };
5295
- };
5296
- const initAreaRange = (spec, context)=>{
5297
- const result = {
5298
- ...spec
5299
- };
5300
- const { advancedVSeed } = context;
5301
- const { encoding } = advancedVSeed;
5302
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
5303
- const { color } = advancedVSeed.config.areaRange;
5304
- result.type = 'rangeArea';
5305
- result.direction = 'vertical';
5306
- result.stack = false;
5307
- result.xField = encoding[0].x[0];
5308
- result.yField = [
5309
- encoding[0].y[0],
5310
- encoding[0].y[1]
5311
- ];
5312
- result.animation = true;
5313
- result.area = {
5314
- style: {
5315
- fill: color.colorScheme?.[0]
5316
- }
5317
- };
5318
- return result;
5319
- };
5320
- const initAreaRangeLine1 = (spec, context)=>{
5321
- const result = {
5322
- ...spec
5323
- };
5324
- const { advancedVSeed } = context;
5325
- const { encoding } = advancedVSeed;
5326
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
5327
- const { color } = advancedVSeed.config.areaRange;
5328
- result.type = 'line';
5329
- result.direction = 'vertical';
5330
- result.stack = false;
5331
- result.xField = encoding[0].x[0];
5332
- result.yField = [
5333
- encoding[0].y[0]
5334
- ];
5335
- result.animation = true;
5336
- result.line = {
5337
- style: {
5338
- stroke: color.colorScheme?.[0]
5339
- }
5340
- };
5341
- result.point = {
5342
- style: {
5343
- visible: false,
5344
- fill: color.colorScheme?.[0]
5345
- }
5346
- };
5347
- return result;
5348
- };
5349
- const initAreaRangeLine2 = (spec, context)=>{
5350
- const result = {
5351
- ...spec
5352
- };
5353
- const { advancedVSeed } = context;
5354
- const { encoding } = advancedVSeed;
5355
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
5356
- const { color } = advancedVSeed.config.areaRange;
5357
- result.type = 'line';
5358
- result.direction = 'vertical';
5359
- result.stack = false;
5360
- result.xField = encoding[0].x[0];
5361
- result.yField = [
5362
- encoding[0].y[1]
5363
- ];
5364
- result.animation = true;
5365
- result.line = {
5366
- style: {
5367
- stroke: color.colorScheme?.[0]
5368
- }
5369
- };
5370
- result.point = {
5371
- style: {
5372
- visible: false,
5373
- fill: color.colorScheme?.[0]
5374
- }
5375
- };
5376
- return result;
5377
- };
5378
- const tooltipDisable = (spec)=>{
5379
- const result = {
5380
- ...spec
5381
- };
5382
- result.tooltip = {
5383
- visible: false
5384
- };
5385
- return result;
5386
- };
5387
- const tooltipAreaRange = (spec, context)=>{
5388
- const result = {
5389
- ...spec
5390
- };
5391
- const { advancedVSeed } = context;
5392
- const { measures, datasetReshapeInfo, chartType, locale, encoding } = advancedVSeed;
5393
- const baseConfig = advancedVSeed.config[chartType];
5394
- const { tooltip = {
5395
- enable: true
5396
- } } = baseConfig;
5397
- const { enable } = tooltip;
5398
- const { groupName } = datasetReshapeInfo[0].unfoldInfo;
5399
- const y = encoding[0]?.y || [];
5400
- result.tooltip = {
5401
- visible: enable,
5402
- dimension: {
5403
- content: [
5404
- {
5405
- visible: true,
5406
- key: (datum)=>datum && datum[groupName] || '',
5407
- value: (datum)=>{
5408
- if (!datum) return '';
5409
- const text = y.map((id)=>{
5410
- const value = datum[id];
5411
- const measure = findMeasureById(measures, id);
5412
- if (!measure) return String(value);
5413
- const { format = {}, autoFormat = true } = measure;
5414
- if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
5415
- const formatter = createFormatter(format);
5416
- return formatter(value);
5417
- }
5418
- if (autoFormat) return autoFormatter(value, locale);
5419
- return String(value);
5420
- });
5421
- return text.join(' ~ ');
5422
- },
5423
- shapeType: 'rectRound'
5424
- },
5425
- ...y.map((id)=>{
5426
- const measure = findMeasureById(measures, id);
5427
- return {
5428
- visible: true,
5429
- key: measure?.alias || id,
5430
- value: (datum)=>{
5431
- if (!datum) return '';
5432
- const value = datum[id];
5433
- const measure = findMeasureById(measures, id);
5434
- if (!measure) return String(value);
5435
- const { format = {}, autoFormat = true } = measure;
5436
- if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
5437
- const formatter = createFormatter(format);
5438
- return formatter(value);
5439
- }
5440
- if (autoFormat) return autoFormatter(value, locale);
5441
- return String(value);
5442
- },
5443
- shapeType: 'rectRound'
5444
- };
5445
- })
5446
- ]
5447
- }
5448
- };
5449
- return result;
5450
- };
5451
- const areaRange = [
5452
- series([
5453
- initAreaRange,
5454
- areaStyle_areaStyle
5455
- ], [
5456
- initAreaRangeLine1,
5457
- lineStyle_lineStyle,
5458
- pointStyle_pointStyle,
5459
- pointStateDimensionHover,
5460
- tooltipDisable
5461
- ], [
5462
- initAreaRangeLine2,
5463
- lineStyle_lineStyle,
5464
- pointStyle_pointStyle,
5465
- pointStateDimensionHover,
5466
- tooltipDisable
5467
- ]),
5468
- datasetXY,
5469
- progressive,
5470
- background_backgroundColor,
5471
- xBand,
5472
- yLinear,
5473
- label_label,
5474
- tooltipAreaRange,
5475
- verticalCrosshairLine,
5476
- annotationPoint_annotationPoint,
5477
- annotationVerticalLine_annotationVerticalLine,
5478
- annotationHorizontalLine_annotationHorizontalLine,
5479
- annotationArea_annotationArea
5480
- ];
5481
- const pivotAreaRange = [
5482
- initPivot,
5483
- pivotGridStyle,
5484
- pivotIndicators_pivotIndicatorsAsRow,
5485
- datasetPivot,
5486
- pivotIndicators_pivotIndicators([
5487
- series([
5488
- initAreaRange,
5489
- areaStyle_areaStyle
5490
- ], [
5491
- initAreaRangeLine1,
5492
- lineStyle_lineStyle,
5493
- pointStyle_pointStyle,
5494
- pointStateDimensionHover,
5495
- tooltipDisable
5496
- ], [
5497
- initAreaRangeLine2,
5498
- lineStyle_lineStyle,
5499
- pointStyle_pointStyle,
5500
- pointStateDimensionHover,
5501
- tooltipDisable
5502
- ]),
5503
- background_backgroundColor,
5504
- datasetXY,
5505
- progressive,
5506
- xBand,
5507
- yLinear,
5508
- label_label,
5509
- tooltipAreaRange,
5510
- verticalCrosshairLine,
5511
- annotationPoint_annotationPoint,
5512
- annotationVerticalLine_annotationVerticalLine,
5513
- annotationHorizontalLine_annotationHorizontalLine,
5514
- annotationArea_annotationArea
5515
- ]),
5516
- pivotRowDimensions,
5517
- pivotColumnDimensions
5518
- ];
5519
- const areaRangeSpecPipeline = [
5520
- pivotAdapter_pivotAdapter(areaRange, pivotAreaRange)
5521
- ];
5522
- const registerAreaRange = ()=>{
5523
- Builder._advancedPipelineMap.areaRange = areaRangeAdvancedPipeline;
5524
- Builder._specPipelineMap.areaRange = areaRangeSpecPipeline;
5525
- };
5526
- const dataReshapeFor1D2M_emptyReshapeResult = {
5527
- dataset: [],
5528
- foldInfo: {
5529
- foldMap: {},
5530
- measureId: '',
5531
- measureName: '',
5532
- measureValue: ''
5533
- },
5534
- unfoldInfo: {
5535
- groupName: '',
5536
- groupId: '',
5537
- colorItems: [],
5538
- colorIdMap: {}
5539
- }
5540
- };
5541
- const dataReshapeFor1D2M = (dataset, dimensions, measures, options)=>{
5542
- const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, unfoldDimensionGroup = UnfoldDimensionGroup, unfoldDimensionGroupId = UnfoldDimensionGroupId } = options || {};
5543
- if (0 === dimensions.length && 0 === measures.length) return dataReshapeFor1D2M_emptyReshapeResult;
5544
- const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures.length > 1 ? measures.slice(1) : measures, foldMeasureId, foldMeasureName, foldMeasureValue);
5545
- if (0 === dimensions.length) {
5546
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
5547
- {
5548
- id: foldMeasureValue,
5549
- alias: i18n`指标值`,
5550
- location: 'dimension'
5551
- }
5552
- ], [
5553
- {
5554
- id: foldMeasureValue,
5555
- alias: i18n`指标值`
5556
- }
5557
- ], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
5558
- return {
5559
- dataset: finalDataset,
5560
- foldInfo,
5561
- unfoldInfo
5562
- };
5563
- }
5564
- {
5565
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
5566
- ...dimensions
5567
- ], [
5568
- {
5569
- id: foldMeasureValue,
5570
- alias: i18n`指标值`
5571
- }
5572
- ], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
5573
- return {
5574
- dataset: finalDataset,
5575
- foldInfo,
5576
- unfoldInfo
5577
- };
5578
- }
5579
- };
5580
- const reshapeTo1D2M = (advancedVSeed, context)=>{
5581
- const result = {
5582
- ...advancedVSeed
5583
- };
5584
- const { vseed } = context;
5585
- const { dataset } = vseed;
5586
- const { dimensions, measures } = advancedVSeed;
5587
- if (!measures || !dimensions || !dataset) return result;
5588
- if (0 === measures.length) throw new Error('measures can not be empty');
5589
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D2M(dataset, dimensions, measures);
5590
- return {
5591
- ...result,
5592
- dataset: newDatasets,
5593
- datasetReshapeInfo: [
5594
- {
5595
- id: '1D2M',
5596
- index: 0,
5597
- foldInfo,
5598
- unfoldInfo
5599
- }
5600
- ]
5601
- };
5602
- };
5603
- const pivotReshapeTo1D2M = (advancedVSeed, context)=>{
5604
- const result = {
5605
- ...advancedVSeed
5606
- };
5607
- const { vseed } = context;
5608
- const { dataset } = vseed;
5609
- const { measures } = advancedVSeed;
5610
- const dimensions = advancedVSeed.dimensions;
5611
- if (!measures || !dimensions) return result;
5612
- const measureGroups = [];
5613
- if (measures) measures.forEach((measure)=>{
5614
- if (measure.children && measure.children.length > 0) measureGroups.push(measure);
5615
- });
5616
- const newDatasets = [];
5617
- const datasetReshapeInfo = [];
5618
- measureGroups.forEach((measureGroup, index)=>{
5619
- const measures = measureGroup.children;
5620
- if (!measures) return;
5621
- const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
5622
- const groupId = measureGroup.id;
5623
- const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeFor1D2M(dataset, commonDimensions, measures, {
5624
- foldMeasureId: FoldMeasureId,
5625
- foldMeasureName: FoldMeasureName,
5626
- foldMeasureValue: FoldMeasureValue + groupId,
5627
- unfoldDimensionGroup: UnfoldDimensionGroup
5628
- });
5629
- const reshapeInfo = {
5630
- id: groupId,
5631
- index,
5632
- foldInfo,
5633
- unfoldInfo
5113
+ foldInfo: foldInfoList[0],
5114
+ foldInfoList: foldInfoList,
5115
+ unfoldInfo: unfoldInfo
5634
5116
  };
5635
- newDatasets.push(newSubDataset);
5636
5117
  datasetReshapeInfo.push(reshapeInfo);
5118
+ datasetList.push(datasets[0].map((d, index)=>({
5119
+ ...d,
5120
+ ...datasets[1]?.[index] || {}
5121
+ })));
5637
5122
  });
5638
5123
  return {
5639
5124
  ...result,
5640
- dataset: newDatasets,
5125
+ dataset: datasetList,
5641
5126
  datasetReshapeInfo: datasetReshapeInfo
5642
5127
  };
5643
5128
  };
5644
- const encodingYY = (advancedVSeed)=>{
5645
- const result = {
5646
- ...advancedVSeed
5647
- };
5648
- const { datasetReshapeInfo, measures } = advancedVSeed;
5649
- if (!datasetReshapeInfo || !measures) return result;
5650
- const firstMeasure = findFirstMeasure(measures);
5651
- const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
5652
- const { foldInfo, unfoldInfo } = cur;
5653
- const x = [
5654
- firstMeasure?.id
5655
- ];
5656
- const y = [
5657
- foldInfo.measureValue
5658
- ];
5659
- const group = [
5660
- unfoldInfo.groupId
5661
- ];
5662
- const color = [
5663
- unfoldInfo.groupId
5664
- ];
5665
- return [
5666
- ...prev,
5667
- {
5668
- x,
5669
- y,
5670
- group,
5671
- color
5672
- }
5673
- ];
5674
- }, []);
5675
- return {
5676
- ...result,
5677
- encoding
5678
- };
5679
- };
5680
5129
  const scatterAdvancedPipeline = [
5681
5130
  initAdvancedVSeed_initAdvancedVSeed,
5682
- autoMeasures_autoMeasures,
5131
+ autoScatterMeasures,
5683
5132
  autoDimensions_autoDimensions,
5133
+ encodingForScatter,
5684
5134
  pivotAdapter([
5685
- reshapeTo1D2M
5135
+ reshapeWithScatterEncoding
5686
5136
  ], [
5687
- pivotReshapeTo1D2M
5137
+ pivotReshapeWithScatterEncoding
5688
5138
  ]),
5689
- encodingYY,
5690
5139
  scatterConfig,
5691
5140
  theme_theme,
5692
5141
  markStyle_markStyle,
@@ -5697,13 +5146,13 @@ const initScatter = (spec, context)=>{
5697
5146
  ...spec
5698
5147
  };
5699
5148
  const { advancedVSeed } = context;
5700
- const { encoding } = advancedVSeed;
5701
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
5149
+ const { datasetReshapeInfo } = advancedVSeed;
5150
+ const { unfoldInfo, foldInfoList } = datasetReshapeInfo[0];
5702
5151
  result.type = 'scatter';
5703
5152
  result.direction = 'vertical';
5704
- result.xField = encoding[0].x[0];
5705
- result.yField = encoding[0].y[0];
5706
- result.seriesField = encoding[0].group[0];
5153
+ result.xField = foldInfoList?.[0].measureValue;
5154
+ if (foldInfoList?.[1]) result.yField = foldInfoList[1].measureValue;
5155
+ result.seriesField = unfoldInfo.encodingColorId;
5707
5156
  result.padding = 0;
5708
5157
  result.region = [
5709
5158
  {
@@ -5713,6 +5162,20 @@ const initScatter = (spec, context)=>{
5713
5162
  result.animation = true;
5714
5163
  return result;
5715
5164
  };
5165
+ const datasetScatter = (spec, context)=>{
5166
+ const { advancedVSeed, vseed } = context;
5167
+ const { datasetReshapeInfo } = advancedVSeed;
5168
+ const id = datasetReshapeInfo[0].id;
5169
+ const fields = {};
5170
+ return {
5171
+ ...spec,
5172
+ data: {
5173
+ id,
5174
+ values: isPivotChart(vseed) ? void 0 : advancedVSeed.dataset.flat(),
5175
+ fields: fields
5176
+ }
5177
+ };
5178
+ };
5716
5179
  const horizontalCrosshairLine = (spec, context)=>{
5717
5180
  const result = {
5718
5181
  ...spec
@@ -5761,7 +5224,7 @@ const scatter = [
5761
5224
  initScatter,
5762
5225
  color_color,
5763
5226
  background_backgroundColor,
5764
- datasetXY,
5227
+ datasetScatter,
5765
5228
  progressive,
5766
5229
  xLinear,
5767
5230
  yLinear,
@@ -5786,7 +5249,7 @@ const pivotScatter = [
5786
5249
  initScatter,
5787
5250
  color_color,
5788
5251
  background_backgroundColor,
5789
- datasetXY,
5252
+ datasetScatter,
5790
5253
  progressive,
5791
5254
  xLinear,
5792
5255
  yLinear,
@@ -5812,41 +5275,169 @@ const registerScatter = ()=>{
5812
5275
  Builder._advancedPipelineMap.scatter = scatterAdvancedPipeline;
5813
5276
  Builder._specPipelineMap.scatter = scatterSpecPipeline;
5814
5277
  };
5815
- const reshapeTo2D2M = (advancedVSeed, context)=>{
5278
+ const autoDualMeasures = (advancedVSeed, context)=>{
5279
+ const result = {
5280
+ ...advancedVSeed
5281
+ };
5282
+ const { vseed } = context;
5283
+ const { dataset, dualMeasures, measures } = vseed;
5284
+ if (!dataset) throw new Error('dataset is required');
5285
+ if (0 === dataset.length) return result;
5286
+ if (dualMeasures) {
5287
+ result.measures = dualMeasuresToMeasureTree(dualMeasures);
5288
+ return result;
5289
+ }
5290
+ if (measures && measureDepth(measures) > 1) {
5291
+ result.measures = measures;
5292
+ return result;
5293
+ }
5294
+ const top100dataset = dataset.slice(0, 100);
5295
+ const sample = top100dataset.reduce((prev, cur)=>({
5296
+ ...prev,
5297
+ ...cur
5298
+ }), {});
5299
+ const newMeasures = measures || Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
5300
+ '',
5301
+ null,
5302
+ void 0
5303
+ ].includes(key)).map((measure)=>({
5304
+ id: measure,
5305
+ alias: measure
5306
+ }));
5307
+ if (0 === newMeasures.length) result.measures = [];
5308
+ else if (1 === newMeasures.length) result.measures = [
5309
+ {
5310
+ id: 'primary',
5311
+ alias: 'primary',
5312
+ children: newMeasures
5313
+ }
5314
+ ];
5315
+ else if (newMeasures.length > 1) result.measures = [
5316
+ {
5317
+ id: 'primary',
5318
+ alias: 'primary',
5319
+ children: newMeasures.slice(0, 1)
5320
+ },
5321
+ {
5322
+ id: 'secondary',
5323
+ alias: 'secondary',
5324
+ children: newMeasures.slice(1)
5325
+ }
5326
+ ];
5327
+ return result;
5328
+ };
5329
+ const dualMeasuresToMeasureTree = (dualMeasures)=>{
5330
+ const measureTree = dualMeasures.map((item, index)=>{
5331
+ const { primaryMeasures, secondaryMeasures } = item;
5332
+ const groupChildren = [];
5333
+ let id = '';
5334
+ if (primaryMeasures) {
5335
+ const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [
5336
+ primaryMeasures
5337
+ ];
5338
+ const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
5339
+ id += alias;
5340
+ groupChildren.push({
5341
+ id: `${index}-primary`,
5342
+ alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
5343
+ children: arrPrimaryMeasures
5344
+ });
5345
+ }
5346
+ if (secondaryMeasures) {
5347
+ const arrSecondaryMeasures = Array.isArray(secondaryMeasures) ? secondaryMeasures : [
5348
+ secondaryMeasures
5349
+ ];
5350
+ const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
5351
+ id += alias;
5352
+ groupChildren.push({
5353
+ id: `${index}-secondary`,
5354
+ alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
5355
+ children: arrSecondaryMeasures
5356
+ });
5357
+ }
5358
+ return {
5359
+ id,
5360
+ alias: id,
5361
+ children: groupChildren
5362
+ };
5363
+ });
5364
+ if (1 === dualMeasures.length) return measureTree[0].children || [];
5365
+ return measureTree;
5366
+ };
5367
+ const encodingForDualAxis = (advancedVSeed, context)=>{
5368
+ const { vseed } = context;
5369
+ const { dimensions } = advancedVSeed;
5370
+ if (!dimensions) return advancedVSeed;
5371
+ const encoding = vseed.encoding;
5372
+ if (encoding) {
5373
+ const x = encoding.x || [
5374
+ dimensions[0].id
5375
+ ];
5376
+ const color = encoding.color || [
5377
+ (dimensions[1] || dimensions[0]).id
5378
+ ];
5379
+ const detail = encoding.detail || [];
5380
+ const mergedDetail = (0, external_remeda_namespaceObject.unique)([
5381
+ ...color,
5382
+ ...detail
5383
+ ]);
5384
+ return {
5385
+ ...advancedVSeed,
5386
+ encoding: {
5387
+ ...encoding,
5388
+ x,
5389
+ color,
5390
+ detail: mergedDetail
5391
+ }
5392
+ };
5393
+ }
5394
+ const mergedEncoding = {
5395
+ x: dimensions.slice(0, 1).map((item)=>item.id),
5396
+ color: dimensions.slice(1).map((item)=>item.id),
5397
+ detail: dimensions.slice(1).map((item)=>item.id),
5398
+ tooltip: dimensions.map((item)=>item.id),
5399
+ label: [],
5400
+ row: [],
5401
+ column: []
5402
+ };
5403
+ return {
5404
+ ...advancedVSeed,
5405
+ encoding: mergedEncoding
5406
+ };
5407
+ };
5408
+ const reshapeWithDualEncoding = (advancedVSeed, context)=>{
5816
5409
  const result = {
5817
5410
  ...advancedVSeed
5818
5411
  };
5819
5412
  const { vseed } = context;
5820
5413
  const { dataset } = vseed;
5821
- const { dimensions, measures } = advancedVSeed;
5822
- if (!measures || !dimensions || !dataset) return result;
5414
+ const { dimensions, measures, encoding, chartType } = advancedVSeed;
5415
+ if (!measures || !dimensions || !dataset || !encoding) return result;
5823
5416
  if (0 === measures.length) throw new Error('measures can not be empty');
5824
5417
  if (measures.length > 2) throw new Error('measures can not be more than 2');
5825
- const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
5826
- const datasets = [];
5827
5418
  const foldInfoList = [];
5828
5419
  const unfoldInfoList = [];
5420
+ const datasets = [];
5829
5421
  const primaryMeasures = measures[0];
5830
5422
  const secondaryMeasures = measures[1] || [];
5831
5423
  if (primaryMeasures && primaryMeasures.children) {
5832
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, commonDimensions, primaryMeasures.children, {
5424
+ const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
5833
5425
  foldMeasureValue: FoldPrimaryMeasureValue
5834
5426
  });
5835
- datasets.push(newDatasets);
5427
+ datasets.push(newDataset);
5836
5428
  foldInfoList.push(foldInfo);
5837
5429
  unfoldInfoList.push(unfoldInfo);
5838
5430
  }
5839
5431
  if (secondaryMeasures && secondaryMeasures.children) {
5840
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, commonDimensions, secondaryMeasures.children, {
5432
+ const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding, {
5841
5433
  foldMeasureValue: FoldSecondaryMeasureValue
5842
5434
  });
5843
- datasets.push(newDatasets);
5435
+ datasets.push(newDataset);
5844
5436
  foldInfoList.push(foldInfo);
5845
5437
  unfoldInfoList.push(unfoldInfo);
5846
5438
  }
5847
5439
  const unfoldInfo = {
5848
- groupName: unfoldInfoList[0].groupName,
5849
- groupId: unfoldInfoList[0].groupId,
5440
+ ...unfoldInfoList[0],
5850
5441
  colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
5851
5442
  colorIdMap: unfoldInfoList.reduce((prev, cur)=>({
5852
5443
  ...prev,
@@ -5858,7 +5449,7 @@ const reshapeTo2D2M = (advancedVSeed, context)=>{
5858
5449
  dataset: datasets,
5859
5450
  datasetReshapeInfo: [
5860
5451
  {
5861
- id: '2D2M',
5452
+ id: String(chartType),
5862
5453
  index: 0,
5863
5454
  foldInfo: foldInfoList[0],
5864
5455
  foldInfoList: foldInfoList,
@@ -5867,46 +5458,48 @@ const reshapeTo2D2M = (advancedVSeed, context)=>{
5867
5458
  ]
5868
5459
  };
5869
5460
  };
5870
- const pivotReshapeTo2D2M = (advancedVSeed, context)=>{
5461
+ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
5871
5462
  const result = {
5872
5463
  ...advancedVSeed
5873
5464
  };
5874
5465
  const { vseed } = context;
5875
5466
  const { dataset } = vseed;
5876
- const { dimensions, measures } = advancedVSeed;
5877
- if (!measures || !dimensions || !dataset) return result;
5878
- const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
5467
+ const { dimensions, measures, encoding, chartType } = advancedVSeed;
5468
+ if (!measures || !dimensions || !dataset || !encoding) return result;
5879
5469
  const datasetList = [];
5880
5470
  const datasetReshapeInfo = [];
5881
- measures.forEach((measureGroup, index)=>{
5882
- const measures = measureGroup.children || [];
5471
+ const measureGroups = [];
5472
+ const depth = measureDepth(measures);
5473
+ if (3 === depth) measures.forEach((measure)=>{
5474
+ measureGroups.push(measure.children);
5475
+ });
5476
+ else if (2 === depth) measureGroups.push(measures);
5477
+ measureGroups.forEach((measures, index)=>{
5883
5478
  if (0 === measures.length) throw new Error('measures can not be empty');
5884
5479
  if (measures.length > 2) throw new Error('measures can not be more than 2');
5885
- const datasets = [];
5886
5480
  const foldInfoList = [];
5887
5481
  const unfoldInfoList = [];
5482
+ const datasets = [];
5888
5483
  const primaryMeasures = measures[0];
5889
- const secondaryMeasures = measures[1] || measures[0];
5484
+ const secondaryMeasures = measures[1] || [];
5890
5485
  if (primaryMeasures && primaryMeasures.children) {
5891
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, commonDimensions, primaryMeasures.children, {
5486
+ const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
5892
5487
  foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`
5893
5488
  });
5894
- datasets.push(newDatasets);
5489
+ datasets.push(newDataset);
5895
5490
  foldInfoList.push(foldInfo);
5896
5491
  unfoldInfoList.push(unfoldInfo);
5897
5492
  }
5898
5493
  if (secondaryMeasures && secondaryMeasures.children) {
5899
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, commonDimensions, secondaryMeasures.children, {
5494
+ const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding, {
5900
5495
  foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`
5901
5496
  });
5902
- datasets.push(newDatasets);
5497
+ datasets.push(newDataset);
5903
5498
  foldInfoList.push(foldInfo);
5904
5499
  unfoldInfoList.push(unfoldInfo);
5905
5500
  }
5906
- datasetList.push(datasets.flat(2));
5907
5501
  const unfoldInfo = {
5908
- groupName: unfoldInfoList[0].groupName,
5909
- groupId: unfoldInfoList[0].groupId,
5502
+ ...unfoldInfoList[0],
5910
5503
  colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
5911
5504
  colorIdMap: unfoldInfoList.reduce((prev, cur)=>({
5912
5505
  ...prev,
@@ -5914,53 +5507,19 @@ const pivotReshapeTo2D2M = (advancedVSeed, context)=>{
5914
5507
  }), {})
5915
5508
  };
5916
5509
  const reshapeInfo = {
5917
- id: `2D2M-${index}`,
5510
+ id: `${chartType}-${index}`,
5918
5511
  index,
5919
5512
  foldInfo: foldInfoList[0],
5920
- unfoldInfo: unfoldInfo,
5921
- foldInfoList: foldInfoList
5513
+ foldInfoList: foldInfoList,
5514
+ unfoldInfo: unfoldInfo
5922
5515
  };
5923
5516
  datasetReshapeInfo.push(reshapeInfo);
5517
+ datasetList.push(datasets.flat(2));
5924
5518
  });
5925
5519
  return {
5926
5520
  ...result,
5927
5521
  dataset: datasetList,
5928
- datasetReshapeInfo
5929
- };
5930
- };
5931
- const encodingXYY = (advancedVSeed)=>{
5932
- const result = {
5933
- ...advancedVSeed
5934
- };
5935
- const { datasetReshapeInfo, dimensions } = advancedVSeed;
5936
- if (!datasetReshapeInfo || !dimensions) return result;
5937
- const xDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
5938
- const isZeroDimension = 0 === dimensions.length;
5939
- const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
5940
- const { foldInfoList, unfoldInfo } = cur;
5941
- const x = [
5942
- isZeroDimension ? foldInfoList[0].measureName : xDimension?.id
5943
- ];
5944
- const y = foldInfoList.map((d)=>d.measureValue);
5945
- const group = [
5946
- unfoldInfo.groupId
5947
- ];
5948
- const color = [
5949
- foldInfoList[0].measureName
5950
- ];
5951
- return [
5952
- ...prev,
5953
- {
5954
- x,
5955
- y,
5956
- group,
5957
- color
5958
- }
5959
- ];
5960
- }, []);
5961
- return {
5962
- ...result,
5963
- encoding
5522
+ datasetReshapeInfo: datasetReshapeInfo
5964
5523
  };
5965
5524
  };
5966
5525
  const dualAxisConfig = (advancedVSeed, context)=>{
@@ -5989,125 +5548,80 @@ const dualAxisConfig = (advancedVSeed, context)=>{
5989
5548
  };
5990
5549
  return result;
5991
5550
  };
5992
- const autoDualMeasures = (advancedVSeed, context)=>{
5993
- const result = {
5994
- ...advancedVSeed
5995
- };
5996
- const { vseed } = context;
5997
- const { dataset, dualMeasures, measures } = vseed;
5998
- if (!dataset) throw new Error('dataset is required');
5999
- if (0 === dataset.length) return result;
6000
- if (dualMeasures) {
6001
- result.measures = dualMeasuresToMeasureTree(dualMeasures);
6002
- return result;
6003
- }
6004
- if (measures && measureDepth(measures) > 1) {
6005
- result.measures = measures;
6006
- return result;
6007
- }
6008
- const top100dataset = dataset.slice(0, 100);
6009
- const sample = top100dataset.reduce((prev, cur)=>({
6010
- ...prev,
6011
- ...cur
6012
- }), {});
6013
- const newMeasures = measures || Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
6014
- '',
6015
- null,
6016
- void 0
6017
- ].includes(key)).map((measure)=>({
6018
- id: measure,
6019
- alias: measure
6020
- }));
6021
- if (0 === newMeasures.length) result.measures = [];
6022
- else if (1 === newMeasures.length) result.measures = [
6023
- {
6024
- id: 'primary',
6025
- alias: 'primary',
6026
- children: newMeasures
6027
- }
6028
- ];
6029
- else if (newMeasures.length > 1) result.measures = [
6030
- {
6031
- id: 'primary',
6032
- alias: 'primary',
6033
- children: newMeasures.slice(0, 1)
6034
- },
6035
- {
6036
- id: 'secondary',
6037
- alias: 'secondary',
6038
- children: newMeasures.slice(1)
6039
- }
6040
- ];
6041
- return result;
6042
- };
6043
- const dualMeasuresToMeasureTree = (dualMeasures)=>{
6044
- const measureTree = dualMeasures.map((item, index)=>{
6045
- const { primaryMeasures, secondaryMeasures } = item;
6046
- const groupChildren = [];
6047
- let id = '';
6048
- if (primaryMeasures) {
6049
- const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [
6050
- primaryMeasures
6051
- ];
6052
- const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
6053
- id += alias;
6054
- groupChildren.push({
6055
- id: `${index}-primary`,
6056
- alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
6057
- children: arrPrimaryMeasures
6058
- });
6059
- }
6060
- if (secondaryMeasures) {
6061
- const arrSecondaryMeasures = Array.isArray(secondaryMeasures) ? secondaryMeasures : [
6062
- secondaryMeasures
6063
- ];
6064
- const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
6065
- id += alias;
6066
- groupChildren.push({
6067
- id: `${index}-secondary`,
6068
- alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
6069
- children: arrSecondaryMeasures
6070
- });
6071
- }
6072
- return {
6073
- id,
6074
- alias: id,
6075
- children: groupChildren
6076
- };
6077
- });
6078
- if (1 === dualMeasures.length) return measureTree[0].children || [];
6079
- return measureTree;
6080
- };
6081
5551
  const dualAxisAdvancedPipeline = [
6082
5552
  initAdvancedVSeed_initAdvancedVSeed,
6083
5553
  autoDualMeasures,
6084
5554
  autoDimensions_autoDimensions,
5555
+ encodingForDualAxis,
6085
5556
  pivotAdapter([
6086
- reshapeTo2D2M
5557
+ reshapeWithDualEncoding
6087
5558
  ], [
6088
- pivotReshapeTo2D2M
5559
+ pivotReshapeWithDualEncoding
6089
5560
  ]),
6090
- encodingXYY,
6091
5561
  sortXBandAxis,
6092
- sort_sortLegend,
5562
+ sortLegend_sortLegend,
6093
5563
  dualAxisConfig,
6094
5564
  theme_theme,
6095
5565
  markStyle_markStyle,
6096
5566
  annotation_annotation
6097
5567
  ];
5568
+ const series = (...args)=>{
5569
+ const result = {
5570
+ type: 'common',
5571
+ padding: 0,
5572
+ region: [
5573
+ {
5574
+ clip: true
5575
+ }
5576
+ ]
5577
+ };
5578
+ return (_, context)=>{
5579
+ result.series = args.map((pipeline)=>execPipeline(pipeline, context, {}));
5580
+ return result;
5581
+ };
5582
+ };
5583
+ const seriesDualAxis = (...args)=>{
5584
+ const result = {
5585
+ type: 'common',
5586
+ padding: 0,
5587
+ region: [
5588
+ {
5589
+ clip: true
5590
+ }
5591
+ ]
5592
+ };
5593
+ const createDualContext = (context, index)=>{
5594
+ const { advancedVSeed } = context;
5595
+ const dataset = advancedVSeed.dataset[index];
5596
+ return {
5597
+ ...context,
5598
+ advancedVSeed: {
5599
+ ...advancedVSeed,
5600
+ dataset: dataset
5601
+ }
5602
+ };
5603
+ };
5604
+ return (_, context)=>{
5605
+ result.series = args.map((pipeline, index)=>{
5606
+ const seriesContext = createDualContext(context, index);
5607
+ return execPipeline(pipeline, seriesContext, {});
5608
+ });
5609
+ return result;
5610
+ };
5611
+ };
6098
5612
  const initDualAxisPrimary = (spec, context)=>{
6099
5613
  const result = {
6100
5614
  ...spec
6101
5615
  };
6102
5616
  const { advancedVSeed } = context;
6103
- const { encoding, datasetReshapeInfo } = advancedVSeed;
6104
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
6105
- result.id = `${datasetReshapeInfo[0].id}-primary-series`;
5617
+ const { datasetReshapeInfo } = advancedVSeed;
5618
+ const { unfoldInfo, foldInfoList, id } = datasetReshapeInfo[0];
5619
+ result.id = `${id}-primary-series`;
6106
5620
  result.type = 'bar';
6107
5621
  result.direction = 'vertical';
6108
- result.xField = encoding[0].x[0];
6109
- result.yField = encoding[0].y[0];
6110
- result.seriesField = encoding[0].group[0];
5622
+ result.xField = unfoldInfo.encodingX;
5623
+ result.seriesField = unfoldInfo.encodingColorId;
5624
+ result.yField = foldInfoList?.[0].measureValue;
6111
5625
  result.animation = true;
6112
5626
  return result;
6113
5627
  };
@@ -6116,14 +5630,14 @@ const initDualAxisSecondary = (spec, context)=>{
6116
5630
  ...spec
6117
5631
  };
6118
5632
  const { advancedVSeed } = context;
6119
- const { encoding, datasetReshapeInfo } = advancedVSeed;
6120
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
6121
- result.id = `${datasetReshapeInfo[0].id}-secondary-series`;
5633
+ const { datasetReshapeInfo } = advancedVSeed;
5634
+ const { unfoldInfo, foldInfoList, id } = datasetReshapeInfo[0];
5635
+ result.id = `${id}-secondary-series`;
6122
5636
  result.type = 'line';
6123
5637
  result.direction = 'vertical';
6124
- result.xField = encoding[0].x[0];
6125
- result.yField = encoding[0].y[1];
6126
- result.seriesField = encoding[0].group[0];
5638
+ result.xField = unfoldInfo.encodingX;
5639
+ if (foldInfoList?.[1]) result.yField = foldInfoList[1].measureValue;
5640
+ result.seriesField = unfoldInfo.encodingColorId;
6127
5641
  result.animation = true;
6128
5642
  return result;
6129
5643
  };
@@ -6155,10 +5669,10 @@ const dualChartTypePrimary = (spec, context)=>{
6155
5669
  case 'columnParallel':
6156
5670
  {
6157
5671
  const columnSpec = result;
6158
- if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.groupId);
5672
+ if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.encodingDetail);
6159
5673
  else if (columnSpec.xField) columnSpec.xField = [
6160
5674
  columnSpec.xField,
6161
- datasetReshapeInfo[0].unfoldInfo.groupId
5675
+ datasetReshapeInfo[0].unfoldInfo.encodingDetail
6162
5676
  ];
6163
5677
  columnSpec.type = 'bar';
6164
5678
  result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX;
@@ -6211,10 +5725,10 @@ const dualChartTypeSecondary = (spec, context)=>{
6211
5725
  case 'columnParallel':
6212
5726
  {
6213
5727
  const columnSpec = result;
6214
- if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.groupId);
5728
+ if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.encodingDetail);
6215
5729
  else if (columnSpec.xField) columnSpec.xField = [
6216
5730
  columnSpec.xField,
6217
- datasetReshapeInfo[0].unfoldInfo.groupId
5731
+ datasetReshapeInfo[0].unfoldInfo.encodingDetail
6218
5732
  ];
6219
5733
  columnSpec.type = 'bar';
6220
5734
  result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX;
@@ -6241,10 +5755,11 @@ const dualChartTypeSecondary = (spec, context)=>{
6241
5755
  };
6242
5756
  const datasetPrimary = (spec, context)=>{
6243
5757
  const { advancedVSeed, vseed } = context;
6244
- const { encoding, analysis, datasetReshapeInfo } = advancedVSeed;
5758
+ const { analysis, datasetReshapeInfo } = advancedVSeed;
6245
5759
  const orderMapping = analysis?.orderMapping || {};
6246
- const x = encoding[0]?.x?.[0];
6247
- const group = encoding[0]?.group?.[0];
5760
+ const { unfoldInfo } = datasetReshapeInfo[0];
5761
+ const x = unfoldInfo.encodingX;
5762
+ const colorId = unfoldInfo.encodingColorId;
6248
5763
  const id = datasetReshapeInfo[0].id;
6249
5764
  const fields = {};
6250
5765
  if (x) {
@@ -6258,14 +5773,14 @@ const datasetPrimary = (spec, context)=>{
6258
5773
  sortIndex: 0
6259
5774
  };
6260
5775
  }
6261
- if (group) {
6262
- const order = orderMapping[group];
6263
- if (order) fields[group] = {
5776
+ if (colorId) {
5777
+ const order = orderMapping[colorId];
5778
+ if (order) fields[colorId] = {
6264
5779
  sortIndex: 0,
6265
5780
  domain: order,
6266
5781
  lockStatisticsByDomain: true
6267
5782
  };
6268
- else fields[group] = {
5783
+ else fields[colorId] = {
6269
5784
  sortIndex: 0
6270
5785
  };
6271
5786
  }
@@ -6280,10 +5795,11 @@ const datasetPrimary = (spec, context)=>{
6280
5795
  };
6281
5796
  const datasetSecondary = (spec, context)=>{
6282
5797
  const { advancedVSeed, vseed } = context;
6283
- const { encoding, analysis, datasetReshapeInfo } = advancedVSeed;
5798
+ const { analysis, datasetReshapeInfo } = advancedVSeed;
6284
5799
  const orderMapping = analysis?.orderMapping || {};
6285
- const x = encoding[0]?.x?.[0];
6286
- const group = encoding[0]?.group?.[0];
5800
+ const { unfoldInfo } = datasetReshapeInfo[0];
5801
+ const x = unfoldInfo.encodingX;
5802
+ const colorId = unfoldInfo.encodingColorId;
6287
5803
  const id = datasetReshapeInfo[0].id;
6288
5804
  const fields = {};
6289
5805
  if (x) {
@@ -6297,14 +5813,14 @@ const datasetSecondary = (spec, context)=>{
6297
5813
  sortIndex: 0
6298
5814
  };
6299
5815
  }
6300
- if (group) {
6301
- const order = orderMapping[group];
6302
- if (order) fields[group] = {
5816
+ if (colorId) {
5817
+ const order = orderMapping[colorId];
5818
+ if (order) fields[colorId] = {
6303
5819
  sortIndex: 0,
6304
5820
  domain: order,
6305
5821
  lockStatisticsByDomain: true
6306
5822
  };
6307
- else fields[group] = {
5823
+ else fields[colorId] = {
6308
5824
  sortIndex: 0
6309
5825
  };
6310
5826
  }
@@ -6402,7 +5918,7 @@ const tooltipPrimary = (spec, context)=>{
6402
5918
  const foldInfoList = datasetReshapeInfo[0].foldInfoList;
6403
5919
  const unfoldInfo = datasetReshapeInfo[0].unfoldInfo;
6404
5920
  const { measureId, measureValue, measureName } = foldInfoList[0];
6405
- const { groupName } = unfoldInfo;
5921
+ const { encodingColor: colorName } = unfoldInfo;
6406
5922
  result.tooltip = {
6407
5923
  visible: enable,
6408
5924
  mark: {
@@ -6423,7 +5939,7 @@ const tooltipPrimary = (spec, context)=>{
6423
5939
  {
6424
5940
  visible: true,
6425
5941
  hasShape: true,
6426
- key: (datum)=>datum && datum[measureName || groupName] || '',
5942
+ key: (datum)=>datum && datum[measureName || colorName] || '',
6427
5943
  value: (datum)=>{
6428
5944
  if (!datum) return '';
6429
5945
  const value = datum[measureValue];
@@ -6445,7 +5961,7 @@ const tooltipPrimary = (spec, context)=>{
6445
5961
  content: [
6446
5962
  {
6447
5963
  visible: true,
6448
- key: (datum)=>datum && datum[groupName] || '',
5964
+ key: (datum)=>datum && datum[colorName] || '',
6449
5965
  value: (datum)=>{
6450
5966
  if (!datum) return '';
6451
5967
  const value = datum[measureValue];
@@ -6482,7 +5998,7 @@ const tooltipSecondary = (spec, context)=>{
6482
5998
  const foldInfoList = datasetReshapeInfo[0].foldInfoList;
6483
5999
  const unfoldInfo = datasetReshapeInfo[0].unfoldInfo;
6484
6000
  const { measureId, measureValue, measureName } = foldInfoList[1];
6485
- const { groupName } = unfoldInfo;
6001
+ const { encodingColorId } = unfoldInfo;
6486
6002
  result.tooltip = {
6487
6003
  visible: enable,
6488
6004
  mark: {
@@ -6503,7 +6019,7 @@ const tooltipSecondary = (spec, context)=>{
6503
6019
  {
6504
6020
  visible: true,
6505
6021
  hasShape: true,
6506
- key: (datum)=>datum && datum[measureName || groupName] || '',
6022
+ key: (datum)=>datum && datum[measureName || encodingColorId] || '',
6507
6023
  value: (datum)=>{
6508
6024
  if (!datum) return '';
6509
6025
  const value = datum[measureValue];
@@ -6525,7 +6041,7 @@ const tooltipSecondary = (spec, context)=>{
6525
6041
  content: [
6526
6042
  {
6527
6043
  visible: true,
6528
- key: (datum)=>datum && datum[groupName] || '',
6044
+ key: (datum)=>datum && datum[encodingColorId] || '',
6529
6045
  value: (datum)=>{
6530
6046
  if (!datum) return '';
6531
6047
  const value = datum[measureValue];
@@ -6554,16 +6070,16 @@ const yLinearPrimary = (spec, context)=>{
6554
6070
  const { advancedVSeed, vseed } = context;
6555
6071
  const { chartType } = vseed;
6556
6072
  const { locale, datasetReshapeInfo } = advancedVSeed;
6557
- const index = datasetReshapeInfo[0].index;
6073
+ const { index, id: reshapeInfoId, foldInfoList } = datasetReshapeInfo[0];
6558
6074
  const primaryYAxis = advancedVSeed.config?.[chartType]?.primaryYAxis;
6559
6075
  const yAxisConfig = Array.isArray(primaryYAxis) ? primaryYAxis[index] || primaryYAxis[0] : primaryYAxis;
6560
6076
  const alignTicks = advancedVSeed.config?.[chartType]?.alignTicks;
6561
6077
  const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks;
6562
- if (datasetReshapeInfo[0].foldInfoList?.[0] && (0, external_remeda_namespaceObject.isEmpty)(datasetReshapeInfo[0].foldInfoList[0].foldMap)) return result;
6563
- const id = `${datasetReshapeInfo[0].id}-primary-axis`;
6078
+ if (foldInfoList?.[0] && (0, external_remeda_namespaceObject.isEmpty)(foldInfoList[0].foldMap)) return result;
6079
+ const id = `${reshapeInfoId}-primary-axis`;
6564
6080
  const seriesIds = [
6565
- `${datasetReshapeInfo[0].id}-primary-series`,
6566
- `${datasetReshapeInfo[0].id}-secondary-series`
6081
+ `${reshapeInfoId}-primary-series`,
6082
+ `${reshapeInfoId}-secondary-series`
6567
6083
  ];
6568
6084
  const seriesId = alignTicksConfig ? seriesIds : seriesIds[0];
6569
6085
  if (!result.axes) result.axes = [];
@@ -6651,20 +6167,20 @@ const yLinearSecondary = (spec, context)=>{
6651
6167
  const { advancedVSeed, vseed } = context;
6652
6168
  const { chartType } = vseed;
6653
6169
  const { locale, datasetReshapeInfo } = advancedVSeed;
6654
- const index = datasetReshapeInfo[0].index;
6170
+ const { index, id: reshapeInfoId, foldInfoList } = datasetReshapeInfo[0];
6655
6171
  const secondaryYAxis = advancedVSeed.config?.[chartType]?.secondaryYAxis;
6656
6172
  const yAxisConfig = Array.isArray(secondaryYAxis) ? secondaryYAxis[index] || secondaryYAxis[0] : secondaryYAxis;
6657
6173
  const alignTicks = advancedVSeed.config?.[chartType]?.alignTicks;
6658
6174
  const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks;
6659
- if ((0, external_remeda_namespaceObject.isNullish)(datasetReshapeInfo[0].foldInfoList?.[1])) return result;
6175
+ if ((0, external_remeda_namespaceObject.isNullish)(foldInfoList?.[1])) return result;
6660
6176
  const sync = {
6661
- axisId: `${datasetReshapeInfo[0].id}-primary-axis`,
6177
+ axisId: `${reshapeInfoId}-primary-axis`,
6662
6178
  zeroAlign: true
6663
6179
  };
6664
- const id = `${datasetReshapeInfo[0].id}-secondary-axis`;
6180
+ const id = `${reshapeInfoId}-secondary-axis`;
6665
6181
  const seriesIds = [
6666
- `${datasetReshapeInfo[0].id}-primary-series`,
6667
- `${datasetReshapeInfo[0].id}-secondary-series`
6182
+ `${reshapeInfoId}-primary-series`,
6183
+ `${reshapeInfoId}-secondary-series`
6668
6184
  ];
6669
6185
  const seriesId = alignTicksConfig ? seriesIds : seriesIds[1];
6670
6186
  if (!result.axes) result.axes = [];
@@ -6807,208 +6323,71 @@ const pivotDualAxis = [
6807
6323
  initDualAxisSecondary,
6808
6324
  dualChartTypeSecondary,
6809
6325
  datasetSecondary,
6810
- labelSecondary,
6811
- tooltipSecondary,
6812
- progressive,
6813
- barStyle_barStyle,
6814
- pointStyle_pointStyle,
6815
- pointStateDimensionHover,
6816
- lineStyle_lineStyle,
6817
- areaStyle_areaStyle
6818
- ]),
6819
- xBand,
6820
- yLinearPrimary,
6821
- yLinearSecondary,
6822
- color_color,
6823
- background_backgroundColor,
6824
- verticalCrosshairRect,
6825
- annotationPoint_annotationPoint,
6826
- annotationVerticalLine_annotationVerticalLine,
6827
- annotationHorizontalLine_annotationHorizontalLine,
6828
- annotationArea_annotationArea
6829
- ]),
6830
- pivotRowDimensions,
6831
- pivotColumnDimensions,
6832
- pivotDiscreteLegend
6833
- ];
6834
- const dualAxisSpecPipeline = [
6835
- pivotAdapter_pivotAdapter(dualAxis, pivotDualAxis)
6836
- ];
6837
- const registerDualAxis = ()=>{
6838
- Builder._advancedPipelineMap.dualAxis = dualAxisAdvancedPipeline;
6839
- Builder._specPipelineMap.dualAxis = dualAxisSpecPipeline;
6840
- };
6841
- const dataReshapeFor1D1M_emptyReshapeResult = {
6842
- dataset: [],
6843
- foldInfo: {
6844
- foldMap: {},
6845
- measureId: '',
6846
- measureName: '',
6847
- measureValue: ''
6848
- },
6849
- unfoldInfo: {
6850
- groupName: '',
6851
- groupId: '',
6852
- colorItems: [],
6853
- colorIdMap: {}
6854
- }
6855
- };
6856
- const dataReshapeFor1D1M = (dataset, dimensions, measures, options)=>{
6857
- const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, unfoldDimensionGroup = UnfoldDimensionGroup, unfoldDimensionGroupId = UnfoldDimensionGroupId } = options || {};
6858
- if (0 === dimensions.length && 0 === measures.length) return dataReshapeFor1D1M_emptyReshapeResult;
6859
- const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, foldMeasureId, foldMeasureName, foldMeasureValue);
6860
- if (0 === dimensions.length) {
6861
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
6862
- {
6863
- id: foldMeasureName,
6864
- alias: i18n`指标名称`,
6865
- location: 'dimension'
6866
- }
6867
- ], [
6868
- {
6869
- id: foldMeasureValue,
6870
- alias: i18n`指标值`
6871
- }
6872
- ], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
6873
- return {
6874
- dataset: finalDataset,
6875
- foldInfo,
6876
- unfoldInfo
6877
- };
6878
- }
6879
- {
6880
- const dims = 1 === measures.length ? [
6881
- ...dimensions
6882
- ] : [
6883
- ...dimensions,
6884
- {
6885
- id: foldMeasureName,
6886
- alias: i18n`指标名称`,
6887
- location: 'dimension'
6888
- }
6889
- ];
6890
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dims, [
6891
- {
6892
- id: foldMeasureValue,
6893
- alias: i18n`指标值`
6894
- }
6895
- ], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
6896
- return {
6897
- dataset: finalDataset,
6898
- foldInfo,
6899
- unfoldInfo
6900
- };
6901
- }
6902
- };
6903
- const reshapeTo1D1M = (advancedVSeed, context)=>{
6904
- const result = {
6905
- ...advancedVSeed
6906
- };
6907
- const { vseed } = context;
6908
- const { dataset } = vseed;
6909
- const { dimensions, measures } = advancedVSeed;
6910
- if (!measures || !dimensions || !dataset) return result;
6911
- if (0 === measures.length) throw new Error('measures can not be empty');
6912
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D1M(dataset, dimensions, measures);
6913
- return {
6914
- ...result,
6915
- dataset: newDatasets,
6916
- datasetReshapeInfo: [
6917
- {
6918
- id: '1D1M',
6919
- index: 0,
6920
- foldInfo,
6921
- unfoldInfo
6922
- }
6923
- ]
6924
- };
6326
+ labelSecondary,
6327
+ tooltipSecondary,
6328
+ progressive,
6329
+ barStyle_barStyle,
6330
+ pointStyle_pointStyle,
6331
+ pointStateDimensionHover,
6332
+ lineStyle_lineStyle,
6333
+ areaStyle_areaStyle
6334
+ ]),
6335
+ xBand,
6336
+ yLinearPrimary,
6337
+ yLinearSecondary,
6338
+ color_color,
6339
+ background_backgroundColor,
6340
+ verticalCrosshairRect,
6341
+ annotationPoint_annotationPoint,
6342
+ annotationVerticalLine_annotationVerticalLine,
6343
+ annotationHorizontalLine_annotationHorizontalLine,
6344
+ annotationArea_annotationArea
6345
+ ]),
6346
+ pivotRowDimensions,
6347
+ pivotColumnDimensions,
6348
+ pivotDiscreteLegend
6349
+ ];
6350
+ const dualAxisSpecPipeline = [
6351
+ pivotAdapter_pivotAdapter(dualAxis, pivotDualAxis)
6352
+ ];
6353
+ const registerDualAxis = ()=>{
6354
+ Builder._advancedPipelineMap.dualAxis = dualAxisAdvancedPipeline;
6355
+ Builder._specPipelineMap.dualAxis = dualAxisSpecPipeline;
6925
6356
  };
6926
- const pivotReshapeTo1D1M = (advancedVSeed, context)=>{
6927
- const result = {
6928
- ...advancedVSeed
6929
- };
6357
+ const encodingForPie = (advancedVSeed, context)=>{
6930
6358
  const { vseed } = context;
6931
- const { dataset } = vseed;
6932
- const { measures } = advancedVSeed;
6933
- const dimensions = advancedVSeed.dimensions;
6934
- if (!measures || !dimensions) return result;
6935
- const measureGroups = [];
6936
- if (measures) measures.forEach((measure)=>{
6937
- if (measure.children && measure.children.length > 0) measureGroups.push(measure);
6938
- });
6939
- const newDatasets = [];
6940
- const datasetReshapeInfo = [];
6941
- measureGroups.forEach((measureGroup, index)=>{
6942
- const measures = measureGroup.children;
6943
- if (!measures) return;
6944
- const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
6945
- const groupId = measureGroup.id;
6946
- const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeFor1D1M(dataset, commonDimensions, measures, {
6947
- foldMeasureId: FoldMeasureId,
6948
- foldMeasureName: FoldMeasureName,
6949
- foldMeasureValue: FoldMeasureValue + groupId,
6950
- unfoldDimensionGroup: UnfoldDimensionGroup
6951
- });
6952
- const reshapeInfo = {
6953
- id: groupId,
6954
- index,
6955
- foldInfo,
6956
- unfoldInfo
6957
- };
6958
- newDatasets.push(newSubDataset);
6959
- datasetReshapeInfo.push(reshapeInfo);
6960
- });
6961
- return {
6962
- ...result,
6963
- dataset: newDatasets,
6964
- datasetReshapeInfo: datasetReshapeInfo
6359
+ const { dimensions } = advancedVSeed;
6360
+ if (!dimensions) return advancedVSeed;
6361
+ const encoding = vseed.encoding;
6362
+ if (encoding) return {
6363
+ ...advancedVSeed,
6364
+ encoding: {
6365
+ ...encoding
6366
+ }
6965
6367
  };
6966
- };
6967
- const encodingPie = (advancedVSeed)=>{
6968
- const result = {
6969
- ...advancedVSeed
6368
+ const mergedEncoding = {
6369
+ color: dimensions.slice(0).map((item)=>item.id),
6370
+ detail: dimensions.slice(0).map((item)=>item.id),
6371
+ tooltip: dimensions.map((item)=>item.id),
6372
+ label: [],
6373
+ row: [],
6374
+ column: []
6970
6375
  };
6971
- const { datasetReshapeInfo } = advancedVSeed;
6972
- if (!datasetReshapeInfo) return result;
6973
- const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
6974
- const { foldInfo, unfoldInfo } = cur;
6975
- const radius = [
6976
- foldInfo.measureValue
6977
- ];
6978
- const angle = [
6979
- unfoldInfo.groupId
6980
- ];
6981
- const group = [
6982
- unfoldInfo.groupId
6983
- ];
6984
- const color = [
6985
- unfoldInfo.groupId
6986
- ];
6987
- return [
6988
- ...prev,
6989
- {
6990
- angle,
6991
- radius,
6992
- group,
6993
- color
6994
- }
6995
- ];
6996
- }, []);
6997
6376
  return {
6998
- ...result,
6999
- encoding
6377
+ ...advancedVSeed,
6378
+ encoding: mergedEncoding
7000
6379
  };
7001
6380
  };
7002
6381
  const pieAdvancedPipeline = [
7003
6382
  initAdvancedVSeed_initAdvancedVSeed,
7004
6383
  autoMeasures_autoMeasures,
7005
6384
  autoDimensions_autoDimensions,
6385
+ encodingForPie,
7006
6386
  pivotAdapter([
7007
- reshapeTo1D1M
6387
+ reshapeWithEncoding
7008
6388
  ], [
7009
- pivotReshapeTo1D1M
6389
+ pivotReshapeWithEncoding
7010
6390
  ]),
7011
- encodingPie,
7012
6391
  pieConfig,
7013
6392
  theme_theme,
7014
6393
  annotation_annotation
@@ -7018,15 +6397,14 @@ const initPie = (spec, context)=>{
7018
6397
  ...spec
7019
6398
  };
7020
6399
  const { advancedVSeed } = context;
7021
- const { encoding, dataset } = advancedVSeed;
7022
- if (!encoding[0].angle || !encoding[0].radius || !encoding[0].group) return result;
6400
+ const { datasetReshapeInfo, dataset } = advancedVSeed;
6401
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
7023
6402
  const showStroke = dataset.length <= 30;
7024
6403
  result.type = 'pie';
7025
6404
  result.outerRadius = 0.8;
7026
6405
  result.innerRadius = 0;
7027
- result.valueField = encoding[0].radius[0];
7028
- result.categoryField = encoding[0].angle[0];
7029
- result.seriesField = encoding[0].group[0];
6406
+ result.valueField = foldInfo.measureValue;
6407
+ result.categoryField = unfoldInfo.encodingColorId;
7030
6408
  result.padding = 0;
7031
6409
  result.region = [
7032
6410
  {
@@ -7095,12 +6473,12 @@ const donutAdvancedPipeline = [
7095
6473
  initAdvancedVSeed_initAdvancedVSeed,
7096
6474
  autoMeasures_autoMeasures,
7097
6475
  autoDimensions_autoDimensions,
6476
+ encodingForPie,
7098
6477
  pivotAdapter([
7099
- reshapeTo1D1M
6478
+ reshapeWithEncoding
7100
6479
  ], [
7101
- pivotReshapeTo1D1M
6480
+ pivotReshapeWithEncoding
7102
6481
  ]),
7103
- encodingPie,
7104
6482
  donutConfig,
7105
6483
  theme_theme,
7106
6484
  annotation_annotation
@@ -7110,15 +6488,14 @@ const initDonut = (spec, context)=>{
7110
6488
  ...spec
7111
6489
  };
7112
6490
  const { advancedVSeed } = context;
7113
- const { encoding, dataset } = advancedVSeed;
7114
- if (!encoding[0].angle || !encoding[0].radius || !encoding[0].group) return result;
6491
+ const { datasetReshapeInfo, dataset } = advancedVSeed;
6492
+ const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
7115
6493
  const showStroke = dataset.length <= 30;
7116
6494
  result.type = 'pie';
7117
6495
  result.outerRadius = 0.8;
7118
6496
  result.innerRadius = 0.8 * result.outerRadius;
7119
- result.valueField = encoding[0].radius[0];
7120
- result.categoryField = encoding[0].angle[0];
7121
- result.seriesField = encoding[0].group[0];
6497
+ result.valueField = foldInfo.measureValue;
6498
+ result.categoryField = unfoldInfo.encodingColorId;
7122
6499
  result.padding = 0;
7123
6500
  result.region = [
7124
6501
  {
@@ -7182,54 +6559,58 @@ const registerDonut = ()=>{
7182
6559
  Builder._advancedPipelineMap.donut = donutAdvancedPipeline;
7183
6560
  Builder._specPipelineMap.donut = donutSpecPipeline;
7184
6561
  };
7185
- const encodingRose = (advancedVSeed)=>{
7186
- const result = {
7187
- ...advancedVSeed
7188
- };
7189
- const { datasetReshapeInfo, dimensions, measures } = advancedVSeed;
7190
- if (!datasetReshapeInfo || !dimensions || !measures) return result;
7191
- const angleDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
7192
- const is1D1M = 1 === dimensions.length && 1 === measures.length;
7193
- const isZeroDimension = 0 === dimensions.length;
7194
- const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
7195
- const { foldInfo, unfoldInfo } = cur;
7196
- const radius = [
7197
- foldInfo.measureValue
7198
- ];
7199
- const angle = [
7200
- isZeroDimension ? foldInfo.measureName : angleDimension?.id
7201
- ];
7202
- const group = [
7203
- is1D1M ? angleDimension?.id : unfoldInfo.groupId
6562
+ const encodingForRose = (advancedVSeed, context)=>{
6563
+ const { vseed } = context;
6564
+ const { dimensions } = advancedVSeed;
6565
+ if (!dimensions) return advancedVSeed;
6566
+ const encoding = vseed.encoding;
6567
+ if (encoding) {
6568
+ const angle = encoding.angle || [
6569
+ dimensions[0].id
7204
6570
  ];
7205
- const color = [
7206
- is1D1M ? angleDimension?.id : unfoldInfo.groupId
6571
+ const color = encoding.color || [
6572
+ (dimensions[1] || dimensions[0]).id
7207
6573
  ];
7208
- return [
7209
- ...prev,
7210
- {
6574
+ const detail = encoding.detail || [];
6575
+ const mergedDetail = (0, external_remeda_namespaceObject.unique)([
6576
+ ...color,
6577
+ ...detail
6578
+ ]);
6579
+ return {
6580
+ ...advancedVSeed,
6581
+ encoding: {
6582
+ ...encoding,
7211
6583
  angle,
7212
- radius,
7213
- group,
7214
- color
6584
+ color,
6585
+ detail: mergedDetail
7215
6586
  }
7216
- ];
7217
- }, []);
6587
+ };
6588
+ }
6589
+ const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
6590
+ const mergedEncoding = {
6591
+ angle: dimensions.slice(0, 1).map((item)=>item.id),
6592
+ color: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
6593
+ detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
6594
+ tooltip: dimensions.map((item)=>item.id),
6595
+ label: [],
6596
+ row: [],
6597
+ column: []
6598
+ };
7218
6599
  return {
7219
- ...result,
7220
- encoding
6600
+ ...advancedVSeed,
6601
+ encoding: mergedEncoding
7221
6602
  };
7222
6603
  };
7223
6604
  const roseAdvancedPipeline = [
7224
6605
  initAdvancedVSeed_initAdvancedVSeed,
7225
6606
  autoMeasures_autoMeasures,
7226
6607
  autoDimensions_autoDimensions,
6608
+ encodingForRose,
7227
6609
  pivotAdapter([
7228
- reshapeTo2D1M
6610
+ reshapeWithEncoding
7229
6611
  ], [
7230
- pivotReshapeTo2D1M
6612
+ pivotReshapeWithEncoding
7231
6613
  ]),
7232
- encodingRose,
7233
6614
  roseConfig,
7234
6615
  theme_theme,
7235
6616
  markStyle_markStyle,
@@ -7240,13 +6621,12 @@ const initRose = (spec, context)=>{
7240
6621
  ...spec
7241
6622
  };
7242
6623
  const { advancedVSeed } = context;
7243
- const { encoding, dataset, datasetReshapeInfo } = advancedVSeed;
7244
- const { foldInfo } = datasetReshapeInfo[0];
7245
- if (!encoding[0].radius || !encoding[0].angle || !encoding[0].group) return result;
6624
+ const { dataset, datasetReshapeInfo } = advancedVSeed;
6625
+ const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
7246
6626
  result.type = 'rose';
7247
- result.categoryField = encoding[0].angle[0];
7248
- result.valueField = encoding[0].radius[0];
7249
- result.seriesField = encoding[0].group[0];
6627
+ result.angleField = unfoldInfo.encodingAngle;
6628
+ result.seriesField = unfoldInfo.encodingColorId;
6629
+ result.valueField = foldInfo.measureValue;
7250
6630
  result.padding = 0;
7251
6631
  result.outerRadius = 0.9;
7252
6632
  result.innerRadius = 0;
@@ -7394,12 +6774,12 @@ const roseParallelAdvancedPipeline = [
7394
6774
  initAdvancedVSeed_initAdvancedVSeed,
7395
6775
  autoMeasures_autoMeasures,
7396
6776
  autoDimensions_autoDimensions,
6777
+ encodingForRose,
7397
6778
  pivotAdapter([
7398
- reshapeTo2D1M
6779
+ reshapeWithEncoding
7399
6780
  ], [
7400
- pivotReshapeTo2D1M
6781
+ pivotReshapeWithEncoding
7401
6782
  ]),
7402
- encodingRose,
7403
6783
  roseParallelConfig,
7404
6784
  theme_theme,
7405
6785
  markStyle_markStyle,
@@ -7410,19 +6790,18 @@ const initRoseParallel = (spec, context)=>{
7410
6790
  ...spec
7411
6791
  };
7412
6792
  const { advancedVSeed } = context;
7413
- const { encoding, datasetReshapeInfo, dataset, dimensions } = advancedVSeed;
6793
+ const { datasetReshapeInfo, dataset, dimensions } = advancedVSeed;
7414
6794
  const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
7415
- if (!encoding[0].radius || !encoding[0].angle || !encoding[0].group) return result;
7416
6795
  const sameDimensionsMode = dimensions.length > 1 && dimensions.every((dim)=>dim.id === dimensions[0].id);
7417
6796
  result.type = 'rose';
7418
- result.categoryField = sameDimensionsMode ? [
7419
- encoding[0].angle[0]
6797
+ result.angleField = sameDimensionsMode ? [
6798
+ unfoldInfo.encodingAngle
7420
6799
  ] : [
7421
- encoding[0].angle[0],
7422
- unfoldInfo.groupId
6800
+ unfoldInfo.encodingAngle,
6801
+ unfoldInfo.encodingDetail
7423
6802
  ];
7424
- result.valueField = encoding[0].radius[0];
7425
- result.seriesField = encoding[0].group[0];
6803
+ result.valueField = foldInfo.measureValue;
6804
+ result.seriesField = unfoldInfo.encodingColorId;
7426
6805
  result.padding = 0;
7427
6806
  result.outerRadius = 0.9;
7428
6807
  result.innerRadius = 0;
@@ -7499,54 +6878,58 @@ const registerRoseParallel = ()=>{
7499
6878
  Builder._advancedPipelineMap.roseParallel = roseParallelAdvancedPipeline;
7500
6879
  Builder._specPipelineMap.roseParallel = roseParallelSpecPipeline;
7501
6880
  };
7502
- const encodingAR = (advancedVSeed)=>{
7503
- const result = {
7504
- ...advancedVSeed
7505
- };
7506
- const { datasetReshapeInfo, dimensions, measures } = advancedVSeed;
7507
- if (!datasetReshapeInfo || !dimensions || !measures) return result;
7508
- const angleDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
7509
- const isZeroDimension = 0 === dimensions.length;
7510
- const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
7511
- const { foldInfo, unfoldInfo } = cur;
7512
- const angle = [
7513
- isZeroDimension ? foldInfo.measureName : angleDimension?.id
7514
- ];
7515
- const radius = [
7516
- foldInfo.measureValue
7517
- ];
7518
- const group = [
7519
- unfoldInfo.groupId
6881
+ const encodingForRadar = (advancedVSeed, context)=>{
6882
+ const { vseed } = context;
6883
+ const { dimensions } = advancedVSeed;
6884
+ if (!dimensions) return advancedVSeed;
6885
+ const encoding = vseed.encoding;
6886
+ if (encoding) {
6887
+ const angle = encoding.angle || [
6888
+ dimensions[0].id
7520
6889
  ];
7521
- const color = [
7522
- unfoldInfo.groupId
6890
+ const color = encoding.color || [
6891
+ (dimensions[1] || dimensions[0]).id
7523
6892
  ];
7524
- return [
7525
- ...prev,
7526
- {
6893
+ const detail = encoding.detail || [];
6894
+ const mergedDetail = (0, external_remeda_namespaceObject.unique)([
6895
+ ...color,
6896
+ ...detail
6897
+ ]);
6898
+ return {
6899
+ ...advancedVSeed,
6900
+ encoding: {
6901
+ ...encoding,
7527
6902
  angle,
7528
- radius,
7529
- group,
7530
- color
6903
+ color,
6904
+ detail: mergedDetail
7531
6905
  }
7532
- ];
7533
- }, []);
6906
+ };
6907
+ }
6908
+ const mergedEncoding = {
6909
+ angle: dimensions.slice(0, 1).map((item)=>item.id),
6910
+ color: dimensions.slice(1).map((item)=>item.id),
6911
+ detail: dimensions.slice(1).map((item)=>item.id),
6912
+ tooltip: dimensions.map((item)=>item.id),
6913
+ label: [],
6914
+ row: [],
6915
+ column: []
6916
+ };
7534
6917
  return {
7535
- ...result,
7536
- encoding
6918
+ ...advancedVSeed,
6919
+ encoding: mergedEncoding
7537
6920
  };
7538
6921
  };
7539
6922
  const radarAdvancedPipeline = [
7540
6923
  initAdvancedVSeed_initAdvancedVSeed,
7541
6924
  autoMeasures_autoMeasures,
7542
6925
  autoDimensions_autoDimensions,
6926
+ encodingForRadar,
7543
6927
  pivotAdapter([
7544
- reshapeTo2D1M0Name
6928
+ reshapeWithEncoding
7545
6929
  ], [
7546
- pivotReshapeTo2D1M0Name
6930
+ pivotReshapeWithEncoding
7547
6931
  ]),
7548
- encodingAR,
7549
- sort_sortLegend,
6932
+ sortLegend_sortLegend,
7550
6933
  radarConfig,
7551
6934
  theme_theme,
7552
6935
  markStyle_markStyle,
@@ -7557,12 +6940,12 @@ const initRadar = (spec, context)=>{
7557
6940
  ...spec
7558
6941
  };
7559
6942
  const { advancedVSeed } = context;
7560
- const { encoding } = advancedVSeed;
7561
- if (!encoding[0].angle || !encoding[0].radius || !encoding[0].group) return result;
6943
+ const { datasetReshapeInfo } = advancedVSeed;
6944
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
7562
6945
  result.type = 'radar';
7563
- result.angleField = encoding[0].angle[0];
7564
- result.radiusField = encoding[0].radius[0];
7565
- result.seriesField = encoding[0].group[0];
6946
+ result.angleField = unfoldInfo.encodingAngle;
6947
+ result.radiusField = foldInfo.measureValue;
6948
+ result.seriesField = unfoldInfo.encodingColorId;
7566
6949
  result.padding = 0;
7567
6950
  result.region = [
7568
6951
  {
@@ -7674,47 +7057,40 @@ const registerRadar = ()=>{
7674
7057
  Builder._advancedPipelineMap.radar = radarAdvancedPipeline;
7675
7058
  Builder._specPipelineMap.radar = radarSpecPipeline;
7676
7059
  };
7677
- const encodingFunnel = (advancedVSeed)=>{
7678
- const result = {
7679
- ...advancedVSeed
7060
+ const encodingForFunnel = (advancedVSeed, context)=>{
7061
+ const { vseed } = context;
7062
+ const { dimensions } = advancedVSeed;
7063
+ if (!dimensions) return advancedVSeed;
7064
+ const encoding = vseed.encoding;
7065
+ if (encoding) return {
7066
+ ...advancedVSeed,
7067
+ encoding: {
7068
+ ...encoding
7069
+ }
7070
+ };
7071
+ const mergedEncoding = {
7072
+ color: dimensions.slice(0).map((item)=>item.id),
7073
+ detail: dimensions.slice(0).map((item)=>item.id),
7074
+ tooltip: dimensions.map((item)=>item.id),
7075
+ label: [],
7076
+ row: [],
7077
+ column: []
7680
7078
  };
7681
- const { datasetReshapeInfo } = advancedVSeed;
7682
- if (!datasetReshapeInfo) return result;
7683
- const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
7684
- const { foldInfo, unfoldInfo } = cur;
7685
- const size = [
7686
- foldInfo.measureValue
7687
- ];
7688
- const group = [
7689
- unfoldInfo.groupId
7690
- ];
7691
- const color = [
7692
- foldInfo.measureValue
7693
- ];
7694
- return [
7695
- ...prev,
7696
- {
7697
- size,
7698
- group,
7699
- color
7700
- }
7701
- ];
7702
- }, []);
7703
7079
  return {
7704
- ...result,
7705
- encoding
7080
+ ...advancedVSeed,
7081
+ encoding: mergedEncoding
7706
7082
  };
7707
7083
  };
7708
7084
  const funnelAdvancedPipeline = [
7709
7085
  initAdvancedVSeed_initAdvancedVSeed,
7710
7086
  autoMeasures_autoMeasures,
7711
7087
  autoDimensions_autoDimensions,
7088
+ encodingForFunnel,
7712
7089
  pivotAdapter([
7713
- reshapeTo1D1M
7090
+ reshapeWithEncoding
7714
7091
  ], [
7715
- pivotReshapeTo1D1M
7092
+ pivotReshapeWithEncoding
7716
7093
  ]),
7717
- encodingFunnel,
7718
7094
  funnelConfig,
7719
7095
  theme_theme,
7720
7096
  annotation_annotation
@@ -7724,11 +7100,11 @@ const initFunnel = (spec, context)=>{
7724
7100
  ...spec
7725
7101
  };
7726
7102
  const { advancedVSeed } = context;
7727
- const { encoding } = advancedVSeed;
7728
- if (!encoding[0].size || !encoding[0].group || !encoding[0].color) return result;
7103
+ const { datasetReshapeInfo } = advancedVSeed;
7104
+ const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
7729
7105
  result.type = 'funnel';
7730
- result.valueField = encoding[0].size[0];
7731
- result.categoryField = encoding[0].group[0];
7106
+ result.valueField = foldInfo.measureValue;
7107
+ result.categoryField = unfoldInfo.encodingColorId;
7732
7108
  result.padding = 0;
7733
7109
  result.isTransform = true;
7734
7110
  result.shape = 'rect';
@@ -7743,7 +7119,7 @@ const initFunnel = (spec, context)=>{
7743
7119
  style: {
7744
7120
  cornerRadius: 4,
7745
7121
  fill: {
7746
- field: encoding[0].color[0],
7122
+ field: unfoldInfo.encodingColorId,
7747
7123
  scale: 'color'
7748
7124
  }
7749
7125
  },
@@ -7759,99 +7135,14 @@ const initFunnel = (spec, context)=>{
7759
7135
  result.animation = true;
7760
7136
  return result;
7761
7137
  };
7762
- const linearColor = (spec, context)=>{
7763
- const result = {
7764
- ...spec
7765
- };
7766
- const { advancedVSeed } = context;
7767
- const { datasetReshapeInfo, chartType, encoding } = advancedVSeed;
7768
- const baseConfig = advancedVSeed.config[chartType];
7769
- if (!baseConfig || !baseConfig.color) return result;
7770
- const { color } = baseConfig;
7771
- const { colorScheme } = color;
7772
- result.color = {
7773
- type: 'linear',
7774
- domain: [
7775
- {
7776
- dataId: datasetReshapeInfo[0].id,
7777
- fields: encoding?.[0]?.color
7778
- }
7779
- ],
7780
- range: colorScheme
7781
- };
7782
- return result;
7783
- };
7784
- const colorLegend = (spec, context)=>{
7785
- const result = {
7786
- ...spec
7787
- };
7788
- const { advancedVSeed } = context;
7789
- const { chartType } = advancedVSeed;
7790
- const baseConfig = advancedVSeed.config[chartType];
7791
- const { encoding } = advancedVSeed;
7792
- if (!encoding[0].color) return result;
7793
- if (!baseConfig || !baseConfig.legend) return result;
7794
- const { legend } = baseConfig;
7795
- const { enable, position = 'bottom' } = legend || {};
7796
- const orient = [
7797
- 'bottom',
7798
- 'bottomLeft',
7799
- 'bottomRight',
7800
- 'bl',
7801
- 'br'
7802
- ].includes(position) ? 'bottom' : [
7803
- 'top',
7804
- 'topLeft',
7805
- 'topRight',
7806
- 'tl',
7807
- 'tr'
7808
- ].includes(position) ? 'top' : [
7809
- 'left',
7810
- 'leftTop',
7811
- 'leftBottom',
7812
- 'lt',
7813
- 'lb'
7814
- ].includes(position) ? 'left' : 'right';
7815
- const legendPosition = [
7816
- 'topLeft',
7817
- 'bottomLeft',
7818
- 'leftTop',
7819
- 'rightTop',
7820
- 'lt',
7821
- 'rt',
7822
- 'tl',
7823
- 'bl'
7824
- ].includes(position) ? 'start' : [
7825
- 'topRight',
7826
- 'bottomRight',
7827
- 'leftBottom',
7828
- 'rightBottom',
7829
- 'lb',
7830
- 'rb',
7831
- 'rt',
7832
- 'br'
7833
- ].includes(position) ? 'end' : 'middle';
7834
- result.legends = {
7835
- type: 'color',
7836
- visible: enable,
7837
- orient,
7838
- position: legendPosition,
7839
- field: encoding[0].color[0],
7840
- inverse: !![
7841
- 'left',
7842
- 'right'
7843
- ].includes(orient)
7844
- };
7845
- return result;
7846
- };
7847
7138
  const funnel = [
7848
7139
  initFunnel,
7849
- linearColor,
7850
7140
  background_backgroundColor,
7851
7141
  datasetXY,
7142
+ color_color,
7852
7143
  label_label,
7853
7144
  tooltip_tooltip,
7854
- colorLegend,
7145
+ discreteLegend,
7855
7146
  annotationPoint_annotationPoint,
7856
7147
  annotationVerticalLine_annotationVerticalLine,
7857
7148
  annotationHorizontalLine_annotationHorizontalLine,
@@ -7864,12 +7155,12 @@ const pivotFunnel = [
7864
7155
  datasetPivot,
7865
7156
  pivotIndicators_pivotIndicators([
7866
7157
  initFunnel,
7867
- linearColor,
7868
7158
  background_backgroundColor,
7869
7159
  datasetXY,
7160
+ color_color,
7870
7161
  label_label,
7871
7162
  tooltip_tooltip,
7872
- colorLegend,
7163
+ discreteLegend,
7873
7164
  annotationPoint_annotationPoint,
7874
7165
  annotationVerticalLine_annotationVerticalLine,
7875
7166
  annotationHorizontalLine_annotationHorizontalLine,
@@ -7885,49 +7176,52 @@ const registerFunnel = ()=>{
7885
7176
  Builder._advancedPipelineMap.funnel = funnelAdvancedPipeline;
7886
7177
  Builder._specPipelineMap.funnel = funnelSpecPipeline;
7887
7178
  };
7888
- const encodingMatrix = (advancedVSeed)=>{
7889
- const result = {
7890
- ...advancedVSeed
7891
- };
7892
- const { datasetReshapeInfo, dimensions } = advancedVSeed;
7893
- if (!datasetReshapeInfo || !dimensions) return result;
7894
- const xDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
7895
- const isZeroDimension = 0 === dimensions.length;
7896
- const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
7897
- const { foldInfo, unfoldInfo } = cur;
7898
- const x = [
7899
- isZeroDimension ? foldInfo.measureName : xDimension?.id
7900
- ];
7901
- const y = [
7902
- unfoldInfo.groupName
7179
+ const encodingForHeatmap = (advancedVSeed, context)=>{
7180
+ const { vseed } = context;
7181
+ const { dimensions } = advancedVSeed;
7182
+ if (!dimensions) return advancedVSeed;
7183
+ const encoding = vseed.encoding;
7184
+ if (encoding) {
7185
+ const x = encoding.x || [
7186
+ dimensions[0].id
7903
7187
  ];
7904
- const color = [
7905
- foldInfo.measureValue
7188
+ const y = encoding.y || [
7189
+ (dimensions[1] || dimensions[0]).id
7906
7190
  ];
7907
- return [
7908
- ...prev,
7909
- {
7191
+ return {
7192
+ ...advancedVSeed,
7193
+ encoding: {
7910
7194
  x,
7911
7195
  y,
7912
- color
7196
+ ...encoding
7913
7197
  }
7914
- ];
7915
- }, []);
7198
+ };
7199
+ }
7200
+ const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
7201
+ const mergedEncoding = {
7202
+ x: dimensions.slice(0, 1).map((item)=>item.id),
7203
+ y: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
7204
+ color: dimensions.slice(0).map((item)=>item.id),
7205
+ tooltip: dimensions.map((item)=>item.id),
7206
+ label: [],
7207
+ row: [],
7208
+ column: []
7209
+ };
7916
7210
  return {
7917
- ...result,
7918
- encoding
7211
+ ...advancedVSeed,
7212
+ encoding: mergedEncoding
7919
7213
  };
7920
7214
  };
7921
7215
  const heatmapAdvancedPipeline = [
7922
7216
  initAdvancedVSeed_initAdvancedVSeed,
7923
7217
  autoMeasures_autoMeasures,
7924
7218
  autoDimensions_autoDimensions,
7219
+ encodingForHeatmap,
7925
7220
  pivotAdapter([
7926
- reshapeTo2D1M
7221
+ reshapeWithEncoding
7927
7222
  ], [
7928
- pivotReshapeTo2D1M
7223
+ pivotReshapeWithEncoding
7929
7224
  ]),
7930
- encodingMatrix,
7931
7225
  sortXBandAxis,
7932
7226
  heatmapConfig,
7933
7227
  theme_theme,
@@ -7949,23 +7243,20 @@ const initHeatmap = (spec, context)=>{
7949
7243
  ...spec
7950
7244
  };
7951
7245
  const { advancedVSeed } = context;
7952
- const { encoding } = advancedVSeed;
7953
- if (!encoding[0].y || !encoding[0].x || !encoding[0].color) return result;
7246
+ const { datasetReshapeInfo } = advancedVSeed;
7247
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
7954
7248
  result.type = 'heatmap';
7955
7249
  result.direction = 'vertical';
7956
- result.xField = encoding[0].x[0];
7957
- result.yField = encoding[0].y[0];
7958
- result.valueField = encoding[0].color[0];
7250
+ result.xField = unfoldInfo.encodingX;
7251
+ result.yField = unfoldInfo.encodingY;
7252
+ result.seriesField = unfoldInfo.encodingColorId;
7253
+ result.valueField = foldInfo.measureValue;
7959
7254
  result.padding = 0;
7960
7255
  result.cell = {
7961
7256
  style: {
7962
7257
  shape: 'rect',
7963
7258
  stroke: '#ffffff',
7964
- lineWidth: 1,
7965
- fill: {
7966
- field: encoding[0].color[0],
7967
- scale: 'color'
7968
- }
7259
+ lineWidth: 1
7969
7260
  }
7970
7261
  };
7971
7262
  result.axes = [
@@ -7990,12 +7281,12 @@ const initHeatmap = (spec, context)=>{
7990
7281
  };
7991
7282
  const heatmap = [
7992
7283
  initHeatmap,
7993
- linearColor,
7994
7284
  background_backgroundColor,
7995
7285
  datasetXY,
7286
+ color_color,
7996
7287
  label_label,
7997
7288
  labelColorInversion,
7998
- colorLegend,
7289
+ discreteLegend,
7999
7290
  tooltip_tooltip,
8000
7291
  pointStyle_pointStyle,
8001
7292
  pointStateDimensionHover,
@@ -8012,12 +7303,12 @@ const pivotHeatmap = [
8012
7303
  datasetPivot,
8013
7304
  pivotIndicators_pivotIndicators([
8014
7305
  initHeatmap,
8015
- linearColor,
8016
7306
  background_backgroundColor,
8017
7307
  datasetXY,
7308
+ color_color,
8018
7309
  label_label,
8019
7310
  labelColorInversion,
8020
- colorLegend,
7311
+ discreteLegend,
8021
7312
  tooltip_tooltip,
8022
7313
  pointStyle_pointStyle,
8023
7314
  pointStateDimensionHover,
@@ -8285,12 +7576,6 @@ const lightTheme = ()=>{
8285
7576
  yAxis: linearAxis,
8286
7577
  crosshairLine
8287
7578
  },
8288
- areaRange: {
8289
- ...baseConfig,
8290
- xAxis: bandAxis,
8291
- yAxis: linearAxis,
8292
- crosshairLine
8293
- },
8294
7579
  scatter: {
8295
7580
  ...baseConfig,
8296
7581
  xAxis: {
@@ -8623,12 +7908,6 @@ const darkTheme = ()=>{
8623
7908
  yAxis: linearAxis,
8624
7909
  crosshairLine: crosshairLine
8625
7910
  },
8626
- areaRange: {
8627
- ...baseConfig,
8628
- xAxis: bandAxis,
8629
- yAxis: linearAxis,
8630
- crosshairLine: crosshairLine
8631
- },
8632
7911
  scatter: {
8633
7912
  ...baseConfig,
8634
7913
  xAxis: {
@@ -8726,7 +8005,6 @@ const registerAll = ()=>{
8726
8005
  registerBarPercent();
8727
8006
  registerArea();
8728
8007
  registerAreaPercent();
8729
- registerAreaRange();
8730
8008
  registerScatter();
8731
8009
  registerDualAxis();
8732
8010
  registerPie();
@@ -8761,7 +8039,6 @@ const zChartType = external_zod_namespaceObject.z["enum"]([
8761
8039
  'barParallel',
8762
8040
  'area',
8763
8041
  'areaPercent',
8764
- 'areaRange',
8765
8042
  'scatter',
8766
8043
  'dualAxis',
8767
8044
  'rose',
@@ -8859,6 +8136,12 @@ const zDualMeasure = external_zod_namespaceObject.z.object({
8859
8136
  secondaryMeasures: external_zod_namespaceObject.z.array(zMeasure).or(zMeasure).optional()
8860
8137
  });
8861
8138
  const zDualMeasures = external_zod_namespaceObject.z.array(zDualMeasure);
8139
+ const zScatterMeasure = external_zod_namespaceObject.z.object({
8140
+ id: external_zod_namespaceObject.z.string(),
8141
+ xMeasures: external_zod_namespaceObject.z.array(zMeasure).or(zMeasure).optional(),
8142
+ yMeasures: external_zod_namespaceObject.z.array(zMeasure).or(zMeasure).optional()
8143
+ });
8144
+ const zScatterMeasures = external_zod_namespaceObject.z.array(zScatterMeasure);
8862
8145
  const zFoldInfo = external_zod_namespaceObject.z.object({
8863
8146
  foldMap: external_zod_namespaceObject.z.record(external_zod_namespaceObject.z.string(), external_zod_namespaceObject.z.string().or(external_zod_namespaceObject.z.undefined())),
8864
8147
  measureId: external_zod_namespaceObject.z.string(),
@@ -8866,10 +8149,14 @@ const zFoldInfo = external_zod_namespaceObject.z.object({
8866
8149
  measureValue: external_zod_namespaceObject.z.string()
8867
8150
  });
8868
8151
  const zUnfoldInfo = external_zod_namespaceObject.z.object({
8152
+ encodingX: external_zod_namespaceObject.z.string(),
8153
+ encodingY: external_zod_namespaceObject.z.string(),
8154
+ encodingColor: external_zod_namespaceObject.z.string(),
8155
+ encodingColorId: external_zod_namespaceObject.z.string(),
8156
+ encodingDetail: external_zod_namespaceObject.z.string(),
8157
+ encodingAngle: external_zod_namespaceObject.z.string(),
8869
8158
  colorItems: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()),
8870
- groupId: external_zod_namespaceObject.z.string(),
8871
- colorIdMap: external_zod_namespaceObject.z.record(external_zod_namespaceObject.z.string(), external_zod_namespaceObject.z.string()),
8872
- groupName: external_zod_namespaceObject.z.string()
8159
+ colorIdMap: external_zod_namespaceObject.z.record(external_zod_namespaceObject.z.string(), external_zod_namespaceObject.z.string())
8873
8160
  });
8874
8161
  const zDatasetReshapeInfo = external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.object({
8875
8162
  id: external_zod_namespaceObject.z.string(),
@@ -8878,16 +8165,21 @@ const zDatasetReshapeInfo = external_zod_namespaceObject.z.array(external_zod_na
8878
8165
  foldInfoList: external_zod_namespaceObject.z.array(zFoldInfo).nullish(),
8879
8166
  unfoldInfo: zUnfoldInfo
8880
8167
  }));
8881
- const zEncoding = external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.object({
8168
+ const zEncoding = external_zod_namespaceObject.z.object({
8882
8169
  x: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8883
8170
  y: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8884
- color: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8885
- group: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8886
8171
  angle: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8887
8172
  radius: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8173
+ detail: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8174
+ color: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8175
+ size: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8888
8176
  tooltip: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8889
- size: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish()
8890
- }));
8177
+ label: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8178
+ row: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8179
+ column: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8180
+ group: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish().describe("\u5DF2\u5F03\u7528, \u8BF7\u4F7F\u7528\u989C\u8272\u66FF\u4EE3")
8181
+ });
8182
+ const zEncodings = external_zod_namespaceObject.z.array(zEncoding);
8891
8183
  const zXBandAxis = external_zod_namespaceObject.z.object({
8892
8184
  visible: external_zod_namespaceObject.z.boolean().default(true).nullish(),
8893
8185
  labelAutoHide: external_zod_namespaceObject.z.boolean().default(true).nullish(),
@@ -9150,7 +8442,6 @@ const zAreaConfig = external_zod_namespaceObject.z.object({
9150
8442
  crosshairLine: zCrosshairLine.nullish()
9151
8443
  });
9152
8444
  const zAreaPercentConfig = zAreaConfig;
9153
- const zAreaRangeConfig = zAreaConfig;
9154
8445
  const zDualAxisConfig = external_zod_namespaceObject.z.object({
9155
8446
  backgroundColor: zBackgroundColor.nullish(),
9156
8447
  label: zLabel.nullish(),
@@ -9205,7 +8496,6 @@ const zConfig = external_zod_namespaceObject.z.object({
9205
8496
  barPercent: zBarPercentConfig.nullish(),
9206
8497
  area: zAreaConfig.nullish(),
9207
8498
  areaPercent: zAreaPercentConfig.nullish(),
9208
- areaRange: zAreaRangeConfig.nullish(),
9209
8499
  scatter: zScatterConfig.nullish(),
9210
8500
  dualAxis: zDualAxisConfig.nullish(),
9211
8501
  rose: zRoseConfig.nullish(),
@@ -9644,6 +8934,7 @@ const zPivotTable = external_zod_namespaceObject.z.object({
9644
8934
  const zLine = external_zod_namespaceObject.z.object({
9645
8935
  chartType: external_zod_namespaceObject.z.literal('line'),
9646
8936
  dataset: zDataset.nullish(),
8937
+ encoding: zEncoding.nullish(),
9647
8938
  dimensions: zDimensions.nullish(),
9648
8939
  measures: zMeasureTree.nullish(),
9649
8940
  backgroundColor: zBackgroundColor.nullish(),
@@ -9668,6 +8959,7 @@ const zLine = external_zod_namespaceObject.z.object({
9668
8959
  const zColumn = external_zod_namespaceObject.z.object({
9669
8960
  chartType: external_zod_namespaceObject.z.literal('column'),
9670
8961
  dataset: zDataset.nullish(),
8962
+ encoding: zEncoding.nullish(),
9671
8963
  dimensions: zDimensions.nullish(),
9672
8964
  measures: zMeasureTree.nullish(),
9673
8965
  backgroundColor: zBackgroundColor.nullish(),
@@ -9690,6 +8982,7 @@ const zColumn = external_zod_namespaceObject.z.object({
9690
8982
  const zColumnParallel = external_zod_namespaceObject.z.object({
9691
8983
  chartType: external_zod_namespaceObject.z.literal('columnParallel'),
9692
8984
  dataset: zDataset.nullish(),
8985
+ encoding: zEncoding.nullish(),
9693
8986
  dimensions: zDimensions.nullish(),
9694
8987
  measures: zMeasureTree.nullish(),
9695
8988
  backgroundColor: zBackgroundColor.nullish(),
@@ -9712,6 +9005,7 @@ const zColumnParallel = external_zod_namespaceObject.z.object({
9712
9005
  const zColumnPercent = external_zod_namespaceObject.z.object({
9713
9006
  chartType: external_zod_namespaceObject.z.literal('columnPercent'),
9714
9007
  dataset: zDataset.nullish(),
9008
+ encoding: zEncoding.nullish(),
9715
9009
  dimensions: zDimensions.nullish(),
9716
9010
  measures: zMeasureTree.nullish(),
9717
9011
  backgroundColor: zBackgroundColor.nullish(),
@@ -9734,6 +9028,7 @@ const zColumnPercent = external_zod_namespaceObject.z.object({
9734
9028
  const zBar = external_zod_namespaceObject.z.object({
9735
9029
  chartType: external_zod_namespaceObject.z.literal('bar'),
9736
9030
  dataset: zDataset.nullish(),
9031
+ encoding: zEncoding.nullish(),
9737
9032
  dimensions: zDimensions.nullish(),
9738
9033
  measures: zMeasureTree.nullish(),
9739
9034
  backgroundColor: zBackgroundColor.nullish(),
@@ -9756,6 +9051,7 @@ const zBar = external_zod_namespaceObject.z.object({
9756
9051
  const zBarParallel = external_zod_namespaceObject.z.object({
9757
9052
  chartType: external_zod_namespaceObject.z.literal('barParallel'),
9758
9053
  dataset: zDataset.nullish(),
9054
+ encoding: zEncoding.nullish(),
9759
9055
  dimensions: zDimensions.nullish(),
9760
9056
  measures: zMeasureTree.nullish(),
9761
9057
  backgroundColor: zBackgroundColor.nullish(),
@@ -9778,6 +9074,7 @@ const zBarParallel = external_zod_namespaceObject.z.object({
9778
9074
  const zBarPercent = external_zod_namespaceObject.z.object({
9779
9075
  chartType: external_zod_namespaceObject.z.literal('barPercent'),
9780
9076
  dataset: zDataset.nullish(),
9077
+ encoding: zEncoding.nullish(),
9781
9078
  dimensions: zDimensions.nullish(),
9782
9079
  measures: zMeasureTree.nullish(),
9783
9080
  backgroundColor: zBackgroundColor.nullish(),
@@ -9800,6 +9097,7 @@ const zBarPercent = external_zod_namespaceObject.z.object({
9800
9097
  const zArea = external_zod_namespaceObject.z.object({
9801
9098
  chartType: external_zod_namespaceObject.z.literal('area'),
9802
9099
  dataset: zDataset.nullish(),
9100
+ encoding: zEncoding.nullish(),
9803
9101
  dimensions: zDimensions.nullish(),
9804
9102
  measures: zMeasureTree.nullish(),
9805
9103
  backgroundColor: zBackgroundColor.nullish(),
@@ -9823,6 +9121,7 @@ const zArea = external_zod_namespaceObject.z.object({
9823
9121
  const zAreaPercent = external_zod_namespaceObject.z.object({
9824
9122
  chartType: external_zod_namespaceObject.z.literal('areaPercent'),
9825
9123
  dataset: zDataset.nullish(),
9124
+ encoding: zEncoding.nullish(),
9826
9125
  dimensions: zDimensions.nullish(),
9827
9126
  measures: zMeasureTree.nullish(),
9828
9127
  backgroundColor: zBackgroundColor.nullish(),
@@ -9843,31 +9142,13 @@ const zAreaPercent = external_zod_namespaceObject.z.object({
9843
9142
  annotationArea: external_zod_namespaceObject.z.array(zAnnotationArea).or(zAnnotationArea).nullish(),
9844
9143
  locale: zLocale.nullish()
9845
9144
  });
9846
- const zAreaRange = external_zod_namespaceObject.z.object({
9847
- chartType: external_zod_namespaceObject.z.literal('areaRange'),
9848
- dataset: zDataset.nullish(),
9849
- dimensions: zDimensions.nullish(),
9850
- measures: zMeasureTree.nullish(),
9851
- backgroundColor: zBackgroundColor.nullish(),
9852
- label: zLabel.nullish(),
9853
- xAxis: zXBandAxis.nullish(),
9854
- yAxis: zYLinearAxis.nullish(),
9855
- crosshairLine: zCrosshairLine.nullish(),
9856
- theme: zTheme.nullish(),
9857
- pointStyle: external_zod_namespaceObject.z.array(zPointStyle).or(zPointStyle).nullish(),
9858
- lineStyle: external_zod_namespaceObject.z.array(zLineStyle).or(zLineStyle).nullish(),
9859
- areaStyle: external_zod_namespaceObject.z.array(zAreaStyle).or(zAreaStyle).nullish(),
9860
- annotationPoint: external_zod_namespaceObject.z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),
9861
- annotationVerticalLine: external_zod_namespaceObject.z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),
9862
- annotationHorizontalLine: external_zod_namespaceObject.z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),
9863
- annotationArea: external_zod_namespaceObject.z.array(zAnnotationArea).or(zAnnotationArea).nullish(),
9864
- locale: zLocale.nullish()
9865
- });
9866
9145
  const zScatter = external_zod_namespaceObject.z.object({
9867
9146
  chartType: external_zod_namespaceObject.z.literal('scatter'),
9868
9147
  dataset: zDataset.nullish(),
9148
+ encoding: zEncoding.nullish(),
9869
9149
  dimensions: zDimensions.nullish(),
9870
9150
  measures: zMeasureTree.nullish(),
9151
+ scatterMeasures: zScatterMeasures.nullish(),
9871
9152
  backgroundColor: zBackgroundColor.nullish(),
9872
9153
  color: zColor.nullish(),
9873
9154
  label: zLabel.nullish(),
@@ -9917,6 +9198,7 @@ const zDualAxis = external_zod_namespaceObject.z.object({
9917
9198
  const zRose = external_zod_namespaceObject.z.object({
9918
9199
  chartType: external_zod_namespaceObject.z.literal('rose'),
9919
9200
  dataset: zDataset.nullish(),
9201
+ encoding: zEncoding.nullish(),
9920
9202
  dimensions: zDimensions.nullish(),
9921
9203
  measures: zMeasureTree.nullish(),
9922
9204
  backgroundColor: zBackgroundColor.nullish(),
@@ -9930,6 +9212,7 @@ const zRose = external_zod_namespaceObject.z.object({
9930
9212
  const zRoseParallel = external_zod_namespaceObject.z.object({
9931
9213
  chartType: external_zod_namespaceObject.z.literal('roseParallel'),
9932
9214
  dataset: zDataset.nullish(),
9215
+ encoding: zEncoding.nullish(),
9933
9216
  dimensions: zDimensions.nullish(),
9934
9217
  measures: zMeasureTree.nullish(),
9935
9218
  backgroundColor: zBackgroundColor.nullish(),
@@ -9943,6 +9226,7 @@ const zRoseParallel = external_zod_namespaceObject.z.object({
9943
9226
  const zPie = external_zod_namespaceObject.z.object({
9944
9227
  chartType: external_zod_namespaceObject.z.literal('pie'),
9945
9228
  dataset: zDataset.nullish(),
9229
+ encoding: zEncoding.nullish(),
9946
9230
  dimensions: zDimensions.nullish(),
9947
9231
  measures: zMeasureTree.nullish(),
9948
9232
  backgroundColor: zBackgroundColor.nullish(),
@@ -9956,6 +9240,7 @@ const zPie = external_zod_namespaceObject.z.object({
9956
9240
  const zDonut = external_zod_namespaceObject.z.object({
9957
9241
  chartType: external_zod_namespaceObject.z.literal('donut'),
9958
9242
  dataset: zDataset.nullish(),
9243
+ encoding: zEncoding.nullish(),
9959
9244
  dimensions: zDimensions.nullish(),
9960
9245
  measures: zMeasureTree.nullish(),
9961
9246
  backgroundColor: zBackgroundColor.nullish(),
@@ -9969,6 +9254,7 @@ const zDonut = external_zod_namespaceObject.z.object({
9969
9254
  const zRadar = external_zod_namespaceObject.z.object({
9970
9255
  chartType: external_zod_namespaceObject.z.literal('radar'),
9971
9256
  dataset: zDataset.nullish(),
9257
+ encoding: zEncoding.nullish(),
9972
9258
  dimensions: zDimensions.nullish(),
9973
9259
  measures: zMeasureTree.nullish(),
9974
9260
  backgroundColor: zBackgroundColor.nullish(),
@@ -9982,6 +9268,7 @@ const zRadar = external_zod_namespaceObject.z.object({
9982
9268
  const zFunnel = external_zod_namespaceObject.z.object({
9983
9269
  chartType: external_zod_namespaceObject.z.literal('funnel'),
9984
9270
  dataset: zDataset.nullish(),
9271
+ encoding: zEncoding.nullish(),
9985
9272
  dimensions: zDimensions.nullish(),
9986
9273
  measures: zMeasureTree.nullish(),
9987
9274
  backgroundColor: zBackgroundColor.nullish(),
@@ -10017,7 +9304,6 @@ const zVSeed = external_zod_namespaceObject.z.discriminatedUnion('chartType', [
10017
9304
  zBarPercent,
10018
9305
  zArea,
10019
9306
  zAreaPercent,
10020
- zAreaRange,
10021
9307
  zScatter,
10022
9308
  zDualAxis,
10023
9309
  zPie,
@@ -10035,6 +9321,7 @@ const zAdvancedVSeed = external_zod_namespaceObject.z.object({
10035
9321
  dimensions: zDimensionTree,
10036
9322
  measures: zMeasureTree,
10037
9323
  encoding: zEncoding,
9324
+ encodings: zEncodings,
10038
9325
  config: zConfig,
10039
9326
  analysis: zAnalysis,
10040
9327
  theme: zTheme,
@@ -10043,21 +9330,28 @@ const zAdvancedVSeed = external_zod_namespaceObject.z.object({
10043
9330
  annotation: zAnnotation,
10044
9331
  locale: zLocale
10045
9332
  });
9333
+ exports.AngleEncoding = __webpack_exports__.AngleEncoding;
10046
9334
  exports.Builder = __webpack_exports__.Builder;
9335
+ exports.ColorEncoding = __webpack_exports__.ColorEncoding;
9336
+ exports.ColorIdEncoding = __webpack_exports__.ColorIdEncoding;
9337
+ exports.DetailEncoding = __webpack_exports__.DetailEncoding;
10047
9338
  exports.FoldMeasureId = __webpack_exports__.FoldMeasureId;
10048
9339
  exports.FoldMeasureName = __webpack_exports__.FoldMeasureName;
10049
9340
  exports.FoldMeasureValue = __webpack_exports__.FoldMeasureValue;
10050
9341
  exports.FoldPrimaryMeasureValue = __webpack_exports__.FoldPrimaryMeasureValue;
10051
9342
  exports.FoldSecondaryMeasureValue = __webpack_exports__.FoldSecondaryMeasureValue;
9343
+ exports.FoldXMeasureValue = __webpack_exports__.FoldXMeasureValue;
9344
+ exports.FoldYMeasureValue = __webpack_exports__.FoldYMeasureValue;
9345
+ exports.MeasureName = __webpack_exports__.MeasureName;
10052
9346
  exports.ORIGINAL_DATA = __webpack_exports__.ORIGINAL_DATA;
10053
9347
  exports.Separator = __webpack_exports__.Separator;
10054
9348
  exports.UnfoldDimensionGroup = __webpack_exports__.UnfoldDimensionGroup;
10055
9349
  exports.UnfoldDimensionGroupId = __webpack_exports__.UnfoldDimensionGroupId;
9350
+ exports.XEncoding = __webpack_exports__.XEncoding;
9351
+ exports.YEncoding = __webpack_exports__.YEncoding;
10056
9352
  exports.areaAdvancedPipeline = __webpack_exports__.areaAdvancedPipeline;
10057
9353
  exports.areaPercentAdvancedPipeline = __webpack_exports__.areaPercentAdvancedPipeline;
10058
9354
  exports.areaPercentSpecPipeline = __webpack_exports__.areaPercentSpecPipeline;
10059
- exports.areaRangeAdvancedPipeline = __webpack_exports__.areaRangeAdvancedPipeline;
10060
- exports.areaRangeSpecPipeline = __webpack_exports__.areaRangeSpecPipeline;
10061
9355
  exports.areaSpecPipeline = __webpack_exports__.areaSpecPipeline;
10062
9356
  exports.autoFormatter = __webpack_exports__.autoFormatter;
10063
9357
  exports.autoNumFormatter = __webpack_exports__.autoNumFormatter;
@@ -10076,11 +9370,7 @@ exports.columnSpecPipeline = __webpack_exports__.columnSpecPipeline;
10076
9370
  exports.createFormatter = __webpack_exports__.createFormatter;
10077
9371
  exports.createNumFormatter = __webpack_exports__.createNumFormatter;
10078
9372
  exports.darkTheme = __webpack_exports__.darkTheme;
10079
- exports.dataReshapeFor1D = __webpack_exports__.dataReshapeFor1D;
10080
- exports.dataReshapeFor1D1M = __webpack_exports__.dataReshapeFor1D1M;
10081
- exports.dataReshapeFor1D2M = __webpack_exports__.dataReshapeFor1D2M;
10082
- exports.dataReshapeFor2D1M = __webpack_exports__.dataReshapeFor2D1M;
10083
- exports.dataReshapeFor2D1M0Name = __webpack_exports__.dataReshapeFor2D1M0Name;
9373
+ exports.dataReshapeByEncoding = __webpack_exports__.dataReshapeByEncoding;
10084
9374
  exports.donutAdvancedPipeline = __webpack_exports__.donutAdvancedPipeline;
10085
9375
  exports.donutSpecPipeline = __webpack_exports__.donutSpecPipeline;
10086
9376
  exports.dualAxisAdvancedPipeline = __webpack_exports__.dualAxisAdvancedPipeline;
@@ -10128,7 +9418,6 @@ exports.radarSpecPipeline = __webpack_exports__.radarSpecPipeline;
10128
9418
  exports.registerAll = __webpack_exports__.registerAll;
10129
9419
  exports.registerArea = __webpack_exports__.registerArea;
10130
9420
  exports.registerAreaPercent = __webpack_exports__.registerAreaPercent;
10131
- exports.registerAreaRange = __webpack_exports__.registerAreaRange;
10132
9421
  exports.registerBar = __webpack_exports__.registerBar;
10133
9422
  exports.registerBarParallel = __webpack_exports__.registerBarParallel;
10134
9423
  exports.registerBarPercent = __webpack_exports__.registerBarPercent;
@@ -10172,8 +9461,6 @@ exports.zArea = __webpack_exports__.zArea;
10172
9461
  exports.zAreaConfig = __webpack_exports__.zAreaConfig;
10173
9462
  exports.zAreaPercent = __webpack_exports__.zAreaPercent;
10174
9463
  exports.zAreaPercentConfig = __webpack_exports__.zAreaPercentConfig;
10175
- exports.zAreaRange = __webpack_exports__.zAreaRange;
10176
- exports.zAreaRangeConfig = __webpack_exports__.zAreaRangeConfig;
10177
9464
  exports.zAreaStyle = __webpack_exports__.zAreaStyle;
10178
9465
  exports.zAxis = __webpack_exports__.zAxis;
10179
9466
  exports.zBackgroundColor = __webpack_exports__.zBackgroundColor;
@@ -10213,6 +9500,7 @@ exports.zDualChartType = __webpack_exports__.zDualChartType;
10213
9500
  exports.zDualMeasure = __webpack_exports__.zDualMeasure;
10214
9501
  exports.zDualMeasures = __webpack_exports__.zDualMeasures;
10215
9502
  exports.zEncoding = __webpack_exports__.zEncoding;
9503
+ exports.zEncodings = __webpack_exports__.zEncodings;
10216
9504
  exports.zFoldInfo = __webpack_exports__.zFoldInfo;
10217
9505
  exports.zFunnel = __webpack_exports__.zFunnel;
10218
9506
  exports.zFunnelConfig = __webpack_exports__.zFunnelConfig;
@@ -10244,6 +9532,8 @@ exports.zRoseParallel = __webpack_exports__.zRoseParallel;
10244
9532
  exports.zRoseParallelConfig = __webpack_exports__.zRoseParallelConfig;
10245
9533
  exports.zScatter = __webpack_exports__.zScatter;
10246
9534
  exports.zScatterConfig = __webpack_exports__.zScatterConfig;
9535
+ exports.zScatterMeasure = __webpack_exports__.zScatterMeasure;
9536
+ exports.zScatterMeasures = __webpack_exports__.zScatterMeasures;
10247
9537
  exports.zSort = __webpack_exports__.zSort;
10248
9538
  exports.zSortLegend = __webpack_exports__.zSortLegend;
10249
9539
  exports.zStackCornerRadius = __webpack_exports__.zStackCornerRadius;
@@ -10258,21 +9548,28 @@ exports.zXLinearAxis = __webpack_exports__.zXLinearAxis;
10258
9548
  exports.zYBandAxis = __webpack_exports__.zYBandAxis;
10259
9549
  exports.zYLinearAxis = __webpack_exports__.zYLinearAxis;
10260
9550
  for(var __webpack_i__ in __webpack_exports__)if (-1 === [
9551
+ "AngleEncoding",
10261
9552
  "Builder",
9553
+ "ColorEncoding",
9554
+ "ColorIdEncoding",
9555
+ "DetailEncoding",
10262
9556
  "FoldMeasureId",
10263
9557
  "FoldMeasureName",
10264
9558
  "FoldMeasureValue",
10265
9559
  "FoldPrimaryMeasureValue",
10266
9560
  "FoldSecondaryMeasureValue",
9561
+ "FoldXMeasureValue",
9562
+ "FoldYMeasureValue",
9563
+ "MeasureName",
10267
9564
  "ORIGINAL_DATA",
10268
9565
  "Separator",
10269
9566
  "UnfoldDimensionGroup",
10270
9567
  "UnfoldDimensionGroupId",
9568
+ "XEncoding",
9569
+ "YEncoding",
10271
9570
  "areaAdvancedPipeline",
10272
9571
  "areaPercentAdvancedPipeline",
10273
9572
  "areaPercentSpecPipeline",
10274
- "areaRangeAdvancedPipeline",
10275
- "areaRangeSpecPipeline",
10276
9573
  "areaSpecPipeline",
10277
9574
  "autoFormatter",
10278
9575
  "autoNumFormatter",
@@ -10291,11 +9588,7 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
10291
9588
  "createFormatter",
10292
9589
  "createNumFormatter",
10293
9590
  "darkTheme",
10294
- "dataReshapeFor1D",
10295
- "dataReshapeFor1D1M",
10296
- "dataReshapeFor1D2M",
10297
- "dataReshapeFor2D1M",
10298
- "dataReshapeFor2D1M0Name",
9591
+ "dataReshapeByEncoding",
10299
9592
  "donutAdvancedPipeline",
10300
9593
  "donutSpecPipeline",
10301
9594
  "dualAxisAdvancedPipeline",
@@ -10343,7 +9636,6 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
10343
9636
  "registerAll",
10344
9637
  "registerArea",
10345
9638
  "registerAreaPercent",
10346
- "registerAreaRange",
10347
9639
  "registerBar",
10348
9640
  "registerBarParallel",
10349
9641
  "registerBarPercent",
@@ -10387,8 +9679,6 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
10387
9679
  "zAreaConfig",
10388
9680
  "zAreaPercent",
10389
9681
  "zAreaPercentConfig",
10390
- "zAreaRange",
10391
- "zAreaRangeConfig",
10392
9682
  "zAreaStyle",
10393
9683
  "zAxis",
10394
9684
  "zBackgroundColor",
@@ -10428,6 +9718,7 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
10428
9718
  "zDualMeasure",
10429
9719
  "zDualMeasures",
10430
9720
  "zEncoding",
9721
+ "zEncodings",
10431
9722
  "zFoldInfo",
10432
9723
  "zFunnel",
10433
9724
  "zFunnelConfig",
@@ -10459,6 +9750,8 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
10459
9750
  "zRoseParallelConfig",
10460
9751
  "zScatter",
10461
9752
  "zScatterConfig",
9753
+ "zScatterMeasure",
9754
+ "zScatterMeasures",
10462
9755
  "zSort",
10463
9756
  "zSortLegend",
10464
9757
  "zStackCornerRadius",