@visactor/vseed 0.0.39 → 0.1.0

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 +1139 -1875
  8. package/dist/index.cjs.map +1 -1
  9. package/dist/index.d.ts +1 -1
  10. package/dist/index.js +1086 -1831
  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 +10 -1
  46. package/dist/types/chartType/area/zArea.d.ts +14 -0
  47. package/dist/types/chartType/areaPercent/areaPercent.d.ts +10 -1
  48. package/dist/types/chartType/areaPercent/zAreaPercent.d.ts +14 -0
  49. package/dist/types/chartType/bar/bar.d.ts +19 -30
  50. package/dist/types/chartType/bar/zBar.d.ts +14 -0
  51. package/dist/types/chartType/barParallel/barParallel.d.ts +18 -30
  52. package/dist/types/chartType/barParallel/zBarParallel.d.ts +14 -0
  53. package/dist/types/chartType/barPercent/barPercent.d.ts +16 -21
  54. package/dist/types/chartType/barPercent/zBarPercent.d.ts +14 -0
  55. package/dist/types/chartType/column/column.d.ts +16 -28
  56. package/dist/types/chartType/column/zColumn.d.ts +14 -0
  57. package/dist/types/chartType/columnParallel/columnParallel.d.ts +19 -27
  58. package/dist/types/chartType/columnParallel/zColumnParallel.d.ts +14 -0
  59. package/dist/types/chartType/columnPercent/columnPercent.d.ts +16 -25
  60. package/dist/types/chartType/columnPercent/zColumnPercent.d.ts +14 -0
  61. package/dist/types/chartType/donut/donut.d.ts +10 -1
  62. package/dist/types/chartType/donut/zDonut.d.ts +14 -0
  63. package/dist/types/chartType/dualAxis/dualAxis.d.ts +9 -1
  64. package/dist/types/chartType/funnel/funnel.d.ts +9 -1
  65. package/dist/types/chartType/funnel/zFunnel.d.ts +14 -0
  66. package/dist/types/chartType/heatmap/heatmap.d.ts +10 -1
  67. package/dist/types/chartType/index.d.ts +0 -1
  68. package/dist/types/chartType/line/line.d.ts +14 -10
  69. package/dist/types/chartType/line/zLine.d.ts +14 -0
  70. package/dist/types/chartType/pie/pie.d.ts +10 -1
  71. package/dist/types/chartType/pie/zPie.d.ts +14 -0
  72. package/dist/types/chartType/radar/radar.d.ts +10 -1
  73. package/dist/types/chartType/radar/zRadar.d.ts +14 -0
  74. package/dist/types/chartType/rose/rose.d.ts +10 -1
  75. package/dist/types/chartType/rose/zRose.d.ts +14 -0
  76. package/dist/types/chartType/roseParallel/roseParallel.d.ts +10 -1
  77. package/dist/types/chartType/roseParallel/zRoseParallel.d.ts +14 -0
  78. package/dist/types/chartType/scatter/scatter.d.ts +88 -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 +1113 -1855
  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,51 @@ 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
+ const detail = encoding.detail || [];
1489
+ const color = encoding.color || [];
1490
+ const mergedDetail = [
1491
+ ...color.filter((d)=>!x.includes(d)),
1492
+ ...detail
1493
+ ];
1494
+ return {
1495
+ ...advancedVSeed,
1496
+ encoding: {
1497
+ ...encoding,
1498
+ detail: mergedDetail
1499
+ }
1500
+ };
1501
+ }
1502
+ const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
1503
+ const mergedEncoding = {
1504
+ x: dimensions.slice(0, 1).map((item)=>item.id),
1505
+ color: dimensions.slice(1).map((item)=>item.id),
1506
+ detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
1507
+ tooltip: dimensions.map((item)=>item.id),
1508
+ label: [],
1509
+ row: [],
1510
+ column: []
1511
+ };
1512
+ return {
1513
+ ...advancedVSeed,
1514
+ encoding: mergedEncoding
1515
+ };
1516
+ };
1440
1517
  const pivotAdapter = (pipeline, pivotPipeline)=>(advancedVSeed, context)=>{
1441
1518
  const { vseed } = context;
1442
1519
  const usePivotChart = isPivotChart(vseed);
1443
1520
  if (usePivotChart) return execPipeline(pivotPipeline, context, advancedVSeed);
1444
1521
  return execPipeline(pipeline, context, advancedVSeed);
1445
1522
  };
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
1523
  const foldMeasures = (dataset, measures, measureId = FoldMeasureId, measureName = FoldMeasureName, measureValue = FoldMeasureValue)=>{
1456
1524
  const foldInfo = {
1457
1525
  measureId,
@@ -1481,79 +1549,53 @@ const foldMeasures = (dataset, measures, measureId = FoldMeasureId, measureName
1481
1549
  foldInfo
1482
1550
  };
1483
1551
  };
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);
1552
+ const unfoldDimensions = (dataset, dimensions, encoding, options)=>{
1553
+ const { foldMeasureId, separator, colorItemAsId } = options;
1487
1554
  const unfoldInfo = {
1488
- groupName: unfoldGroupName,
1489
- groupId: unfoldGroupId,
1555
+ encodingAngle: AngleEncoding,
1556
+ encodingX: XEncoding,
1557
+ encodingY: YEncoding,
1558
+ encodingDetail: DetailEncoding,
1559
+ encodingColor: ColorEncoding,
1560
+ encodingColorId: ColorIdEncoding,
1490
1561
  colorItems: [],
1491
1562
  colorIdMap: {}
1492
1563
  };
1493
- if (0 === dimensions.length || 0 === measures.length) return {
1494
- dataset,
1495
- unfoldInfo: {
1496
- groupName: unfoldGroupName,
1497
- groupId: unfoldGroupId,
1498
- colorItems: [],
1499
- colorIdMap: {}
1500
- }
1501
- };
1502
- const colorItems = [];
1503
- const colorMap = {};
1564
+ const { color, x, y, detail, angle } = encoding;
1565
+ const angleDimensions = angle ? dimensions.filter((dim)=>angle.includes(dim.id)) : [];
1566
+ const xDimensions = x ? dimensions.filter((dim)=>x.includes(dim.id)) : [];
1567
+ const yDimensions = y ? dimensions.filter((dim)=>y.includes(dim.id)) : [];
1568
+ const colorDimensions = color ? dimensions.filter((dim)=>color.includes(dim.id)) : [];
1569
+ const detailDimensions = detail ? dimensions.filter((dim)=>detail.includes(dim.id)) : [];
1570
+ const colorItems = new Set();
1571
+ const colorIdMap = {};
1504
1572
  for(let i = 0; i < dataset.length; i++){
1505
1573
  const datum = dataset[i];
1506
- const colorName = generateDimGroupName(dimensionsToBeUnfolded, datum, dimensionsSeparator);
1507
- const colorId = datum[foldMeasureId] ? [
1508
- colorName,
1509
- datum[foldMeasureId]
1510
- ].join(dimensionsSeparator) : colorName;
1511
- datum[unfoldGroupName] = colorName;
1512
- datum[unfoldGroupId] = colorId;
1513
- colorItems.push(colorId);
1514
- colorMap[colorId] = colorName;
1574
+ applyEncoding(AngleEncoding, angleDimensions, datum, separator);
1575
+ applyEncoding(XEncoding, xDimensions, datum, separator);
1576
+ applyEncoding(YEncoding, yDimensions, datum, separator);
1577
+ applyEncoding(ColorEncoding, colorDimensions, datum, separator);
1578
+ applyEncoding(DetailEncoding, detailDimensions, datum, separator);
1579
+ if (!datum[ColorEncoding]) continue;
1580
+ const measureId = String(datum[foldMeasureId]);
1581
+ const colorItem = String(datum[ColorEncoding]);
1582
+ const colorId = colorItemAsId ? colorItem : measureId ? [
1583
+ colorItem,
1584
+ measureId
1585
+ ].join(separator) : colorItem;
1586
+ datum[ColorIdEncoding] = colorId;
1587
+ colorIdMap[colorId] = colorItem;
1588
+ colorItems.add(colorId);
1515
1589
  }
1516
- unfoldInfo.colorItems = (0, external_remeda_namespaceObject.unique)(colorItems);
1517
- unfoldInfo.colorIdMap = colorMap;
1590
+ unfoldInfo.colorItems = Array.from(colorItems);
1591
+ unfoldInfo.colorIdMap = colorIdMap;
1518
1592
  return {
1519
1593
  dataset,
1520
1594
  unfoldInfo
1521
1595
  };
1522
1596
  };
1523
- const generateDimGroupName = (dimensionsToBeGrouped, datum, dimensionsSeparator)=>dimensionsToBeGrouped.map((dim)=>String(datum[dim.id])).join(dimensionsSeparator);
1524
- const unfoldZeroDimensions = (dataset, measures, measureName, unfoldGroupName = UnfoldDimensionGroup, unfoldGroupId = UnfoldDimensionGroupId)=>{
1525
- const unfoldInfo = {
1526
- groupName: unfoldGroupName,
1527
- groupId: unfoldGroupId,
1528
- colorItems: [],
1529
- colorIdMap: {}
1530
- };
1531
- if (0 === measures.length) return {
1532
- dataset,
1533
- unfoldInfo: {
1534
- groupName: unfoldGroupName,
1535
- groupId: unfoldGroupId,
1536
- colorItems: [],
1537
- colorIdMap: {}
1538
- }
1539
- };
1540
- const colorItems = [];
1541
- const colorMap = {};
1542
- for(let i = 0; i < dataset.length; i++){
1543
- const datum = dataset[i];
1544
- const colorName = measureName;
1545
- const colorId = measureName;
1546
- datum[unfoldGroupName] = colorName;
1547
- datum[unfoldGroupId] = colorId;
1548
- colorItems.push(colorId);
1549
- colorMap[colorId] = colorName;
1550
- }
1551
- unfoldInfo.colorItems = (0, external_remeda_namespaceObject.unique)(colorItems);
1552
- unfoldInfo.colorIdMap = colorMap;
1553
- return {
1554
- dataset,
1555
- unfoldInfo
1556
- };
1597
+ const applyEncoding = (encoding, dimensions, datum, separator)=>{
1598
+ if (encoding && dimensions.length) datum[encoding] = dimensions.map((dim)=>String(datum[dim.id])).join(separator);
1557
1599
  };
1558
1600
  const emptyReshapeResult = {
1559
1601
  dataset: [],
@@ -1564,69 +1606,47 @@ const emptyReshapeResult = {
1564
1606
  measureValue: ''
1565
1607
  },
1566
1608
  unfoldInfo: {
1567
- groupName: '',
1568
- groupId: '',
1609
+ encodingAngle: AngleEncoding,
1610
+ encodingX: XEncoding,
1611
+ encodingY: YEncoding,
1612
+ encodingDetail: DetailEncoding,
1613
+ encodingColor: ColorEncoding,
1614
+ encodingColorId: ColorIdEncoding,
1569
1615
  colorItems: [],
1570
1616
  colorIdMap: {}
1571
1617
  }
1572
1618
  };
1573
- const dataReshapeFor2D1M0Name = (dataset, dimensions, measures, options)=>{
1574
- const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, unfoldDimensionGroup = UnfoldDimensionGroup, unfoldDimensionGroupId = UnfoldDimensionGroupId } = options || {};
1619
+ const dataReshapeByEncoding = (dataset, dimensions, measures, encoding, options)=>{
1620
+ const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, colorItemAsId = false } = options || {};
1575
1621
  if (0 === dimensions.length && 0 === measures.length) return emptyReshapeResult;
1576
1622
  const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, foldMeasureId, foldMeasureName, foldMeasureValue);
1577
- if (0 === dimensions.length) {
1578
- const { dataset: finalDataset, unfoldInfo } = unfoldZeroDimensions(foldedDataset, [
1579
- {
1580
- id: foldMeasureValue,
1581
- alias: i18n`指标值`
1582
- }
1583
- ], i18n`指标名称`, unfoldDimensionGroup, unfoldDimensionGroupId);
1584
- return {
1585
- dataset: finalDataset,
1586
- foldInfo,
1587
- unfoldInfo
1588
- };
1589
- }
1590
- {
1591
- const onlyOneMeasure = 1 === measures.length;
1592
- const onlyOneDimension = 1 === dimensions.length;
1593
- const dims = [
1594
- ...dimensions
1595
- ];
1596
- if (!onlyOneMeasure || onlyOneDimension) dims.push({
1597
- id: foldMeasureName,
1598
- alias: i18n`指标名称`,
1599
- location: 'dimension'
1600
- });
1601
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dims, [
1602
- {
1603
- id: foldMeasureValue,
1604
- alias: i18n`指标值`
1605
- }
1606
- ], 1, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
1607
- return {
1608
- dataset: finalDataset,
1609
- foldInfo,
1610
- unfoldInfo
1611
- };
1612
- }
1623
+ const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dimensions, encoding, {
1624
+ foldMeasureId,
1625
+ separator: Separator,
1626
+ colorItemAsId
1627
+ });
1628
+ return {
1629
+ dataset: finalDataset,
1630
+ foldInfo,
1631
+ unfoldInfo
1632
+ };
1613
1633
  };
1614
- const reshapeTo2D1M0Name = (advancedVSeed, context)=>{
1634
+ const reshapeWithEncoding = (advancedVSeed, context)=>{
1615
1635
  const result = {
1616
1636
  ...advancedVSeed
1617
1637
  };
1618
1638
  const { vseed } = context;
1619
- const { dataset } = vseed;
1620
- const { dimensions, measures } = advancedVSeed;
1621
- if (!measures || !dimensions || !dataset) return result;
1639
+ const { dataset, chartType } = vseed;
1640
+ const { dimensions, measures, encoding } = advancedVSeed;
1641
+ if (!measures || !dimensions || !dataset || !encoding) return result;
1622
1642
  if (0 === measures.length) throw new Error('measures can not be empty');
1623
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M0Name(dataset, dimensions, measures);
1643
+ const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding);
1624
1644
  return {
1625
1645
  ...result,
1626
1646
  dataset: newDatasets,
1627
1647
  datasetReshapeInfo: [
1628
1648
  {
1629
- id: '2D1M',
1649
+ id: String(chartType),
1630
1650
  index: 0,
1631
1651
  foldInfo,
1632
1652
  unfoldInfo
@@ -1636,31 +1656,27 @@ const reshapeTo2D1M0Name = (advancedVSeed, context)=>{
1636
1656
  measures
1637
1657
  };
1638
1658
  };
1639
- const pivotReshapeTo2D1M0Name = (advancedVSeed, context)=>{
1659
+ const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
1640
1660
  const result = {
1641
1661
  ...advancedVSeed
1642
1662
  };
1643
1663
  const { vseed } = context;
1644
1664
  const { dataset } = vseed;
1645
- const { measures } = advancedVSeed;
1646
- const dimensions = advancedVSeed.dimensions;
1647
- if (!measures || !dimensions) return result;
1665
+ const { dimensions, measures, encoding } = advancedVSeed;
1666
+ if (!measures || !dimensions || !dataset || !encoding) return result;
1667
+ if (0 === measures.length) throw new Error('measures can not be empty');
1648
1668
  const measureGroups = [];
1649
1669
  if (measures) measures.forEach((measure)=>{
1650
1670
  if (measure.children && measure.children.length > 0) measureGroups.push(measure);
1651
1671
  });
1652
- const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
1653
- const newDatasets = [];
1672
+ const datasets = [];
1654
1673
  const datasetReshapeInfo = [];
1655
1674
  measureGroups.forEach((measureGroup, index)=>{
1656
1675
  const measures = measureGroup.children;
1657
1676
  if (!measures) return;
1658
1677
  const groupId = measureGroup.id;
1659
- const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeFor2D1M0Name(dataset, commonDimensions, measures, {
1660
- foldMeasureId: FoldMeasureId,
1661
- foldMeasureName: FoldMeasureName,
1662
- foldMeasureValue: FoldMeasureValue + groupId,
1663
- unfoldDimensionGroup: UnfoldDimensionGroup
1678
+ const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding, {
1679
+ foldMeasureValue: `${FoldMeasureValue}${groupId}`
1664
1680
  });
1665
1681
  const reshapeInfo = {
1666
1682
  id: groupId,
@@ -1668,93 +1684,60 @@ const pivotReshapeTo2D1M0Name = (advancedVSeed, context)=>{
1668
1684
  foldInfo,
1669
1685
  unfoldInfo
1670
1686
  };
1671
- newDatasets.push(newSubDataset);
1687
+ datasets.push(newSubDataset);
1672
1688
  datasetReshapeInfo.push(reshapeInfo);
1673
1689
  });
1674
1690
  return {
1675
1691
  ...result,
1676
- dataset: newDatasets,
1692
+ dataset: datasets,
1677
1693
  datasetReshapeInfo: datasetReshapeInfo
1678
1694
  };
1679
1695
  };
1680
- const encodingXY = (advancedVSeed)=>{
1681
- const result = {
1682
- ...advancedVSeed
1683
- };
1684
- const { datasetReshapeInfo, dimensions } = advancedVSeed;
1685
- if (!datasetReshapeInfo || !dimensions) return result;
1686
- const xDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
1687
- const isZeroDimension = 0 === dimensions.length;
1688
- const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
1689
- const { foldInfo, unfoldInfo } = cur;
1690
- const x = [
1691
- isZeroDimension ? foldInfo.measureName : xDimension?.id
1692
- ];
1693
- const y = [
1694
- foldInfo.measureValue
1695
- ];
1696
- const group = [
1697
- unfoldInfo.groupId
1698
- ];
1699
- const color = [
1700
- foldInfo.measureName
1701
- ];
1702
- return [
1703
- ...prev,
1704
- {
1705
- x,
1706
- y,
1707
- group,
1708
- color
1709
- }
1710
- ];
1711
- }, []);
1712
- return {
1713
- ...result,
1714
- encoding
1715
- };
1716
- };
1717
1696
  const sortXBandAxis = (advancedVSeed, context)=>{
1718
1697
  const result = {
1719
1698
  ...advancedVSeed
1720
1699
  };
1721
1700
  const { vseed } = context;
1722
- const { sort: sortAxis, dataset } = vseed;
1723
- const { encoding } = advancedVSeed;
1724
- const xField = encoding?.[0]?.x?.[0];
1701
+ const { sort: sortAxis } = vseed;
1702
+ const { datasetReshapeInfo, dataset } = advancedVSeed;
1703
+ const { unfoldInfo } = datasetReshapeInfo[0];
1704
+ const xField = unfoldInfo.encodingX;
1725
1705
  if (!sortAxis || !xField) return advancedVSeed;
1726
1706
  if (!result.analysis) result.analysis = {};
1727
1707
  if (!result.analysis.orderMapping) result.analysis.orderMapping = {};
1728
- const axisOrderResult = calcOrder(sortAxis, xField, dataset);
1708
+ const axisOrderResult = calcOrder(sortAxis, xField, dataset.flat(2));
1729
1709
  result.analysis.orderMapping[xField] = axisOrderResult;
1730
1710
  return result;
1731
1711
  };
1732
- const sortYBandAxis = (advancedVSeed, context)=>{
1733
- const result = {
1734
- ...advancedVSeed
1735
- };
1736
- const { vseed } = context;
1737
- const { sort: sortAxis, dataset } = vseed;
1738
- const { encoding } = advancedVSeed;
1739
- const yField = encoding?.[0]?.y?.[0];
1740
- if (!sortAxis || !yField) return advancedVSeed;
1741
- if (!result.analysis) result.analysis = {};
1742
- if (!result.analysis.orderMapping) result.analysis.orderMapping = {};
1743
- const axisOrderResult = calcOrder(sortAxis, yField, dataset);
1744
- result.analysis.orderMapping[yField] = axisOrderResult;
1745
- return result;
1712
+ const calcOrder = (sortConfig, id, dataset)=>{
1713
+ if (sortConfig.customOrder) return sortConfig.customOrder;
1714
+ const order = sortConfig.order || 'asc';
1715
+ const orderBy = sortConfig.orderBy;
1716
+ const res = (0, external_remeda_namespaceObject.sort)(dataset, (a, b)=>{
1717
+ const aValue = a[orderBy || id];
1718
+ const bValue = b[orderBy || id];
1719
+ if ('asc' === order) {
1720
+ if (aValue < bValue) return -1;
1721
+ if (aValue > bValue) return 1;
1722
+ return 0;
1723
+ }
1724
+ if (aValue > bValue) return -1;
1725
+ if (aValue < bValue) return 1;
1726
+ return 0;
1727
+ });
1728
+ return (0, external_remeda_namespaceObject.unique)(res.map((item)=>item[id]));
1746
1729
  };
1747
- const sort_sortLegend = (advancedVSeed, context)=>{
1730
+ const sortLegend_sortLegend = (advancedVSeed, context)=>{
1748
1731
  const result = {
1749
1732
  ...advancedVSeed
1750
1733
  };
1751
1734
  const { vseed } = context;
1752
1735
  const { sortLegend } = vseed;
1753
- const { datasetReshapeInfo } = advancedVSeed;
1754
- const groupField = datasetReshapeInfo?.[0]?.unfoldInfo?.groupId;
1736
+ const { datasetReshapeInfo, dataset } = advancedVSeed;
1737
+ const colorId = datasetReshapeInfo?.[0]?.unfoldInfo?.encodingColorId;
1755
1738
  const colorIdMap = datasetReshapeInfo?.[0]?.unfoldInfo?.colorIdMap;
1756
1739
  const colorItems = datasetReshapeInfo?.[0]?.unfoldInfo?.colorItems;
1757
- if (!sortLegend || !groupField || !colorIdMap || !colorItems) return advancedVSeed;
1740
+ if (!sortLegend || !colorId || !colorIdMap || !colorItems) return advancedVSeed;
1758
1741
  if (!result.analysis) result.analysis = {};
1759
1742
  if (!result.analysis.orderMapping) result.analysis.orderMapping = {};
1760
1743
  if (sortLegend.customOrder) {
@@ -1763,15 +1746,14 @@ const sort_sortLegend = (advancedVSeed, context)=>{
1763
1746
  return pre;
1764
1747
  }, {});
1765
1748
  const orderRes = sortLegend.customOrder.map((itemNameOrId)=>nameMap[itemNameOrId] ? nameMap[itemNameOrId] : itemNameOrId);
1766
- result.analysis.orderMapping[groupField] = orderRes;
1749
+ result.analysis.orderMapping[colorId] = orderRes;
1767
1750
  return result;
1768
1751
  }
1769
- const dataset = advancedVSeed.dataset?.flat(2);
1770
- const orderRes = calcOrder(sortLegend, groupField, dataset || []);
1771
- result.analysis.orderMapping[groupField] = orderRes;
1752
+ const orderRes = sortLegend_calcOrder(sortLegend, colorId, dataset?.flat(2) || []);
1753
+ result.analysis.orderMapping[colorId] = orderRes;
1772
1754
  return result;
1773
1755
  };
1774
- const calcOrder = (sortConfig, id, dataset)=>{
1756
+ const sortLegend_calcOrder = (sortConfig, id, dataset)=>{
1775
1757
  if (sortConfig.customOrder) return sortConfig.customOrder;
1776
1758
  const order = sortConfig.order || 'asc';
1777
1759
  const orderBy = sortConfig.orderBy;
@@ -1903,14 +1885,14 @@ const lineAdvancedPipeline = [
1903
1885
  initAdvancedVSeed_initAdvancedVSeed,
1904
1886
  autoMeasures_autoMeasures,
1905
1887
  autoDimensions_autoDimensions,
1888
+ encodingForColumn,
1906
1889
  pivotAdapter([
1907
- reshapeTo2D1M0Name
1890
+ reshapeWithEncoding
1908
1891
  ], [
1909
- pivotReshapeTo2D1M0Name
1892
+ pivotReshapeWithEncoding
1910
1893
  ]),
1911
- encodingXY,
1912
1894
  sortXBandAxis,
1913
- sort_sortLegend,
1895
+ sortLegend_sortLegend,
1914
1896
  lineConfig,
1915
1897
  theme_theme,
1916
1898
  markStyle_markStyle,
@@ -1921,13 +1903,13 @@ const initLine = (spec, context)=>{
1921
1903
  ...spec
1922
1904
  };
1923
1905
  const { advancedVSeed } = context;
1924
- const { encoding } = advancedVSeed;
1925
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
1906
+ const { datasetReshapeInfo } = advancedVSeed;
1907
+ const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
1926
1908
  result.type = 'line';
1927
1909
  result.direction = 'vertical';
1928
- result.xField = encoding[0].x[0];
1929
- result.yField = encoding[0].y[0];
1930
- result.seriesField = encoding[0].group[0];
1910
+ result.xField = unfoldInfo.encodingX;
1911
+ result.yField = foldInfo.measureValue;
1912
+ result.seriesField = unfoldInfo.encodingColorId;
1931
1913
  result.padding = 0;
1932
1914
  result.region = [
1933
1915
  {
@@ -2003,11 +1985,12 @@ const background_backgroundColor = (spec, context)=>{
2003
1985
  };
2004
1986
  const datasetXY = (spec, context)=>{
2005
1987
  const { advancedVSeed, vseed } = context;
2006
- const { encoding, analysis, datasetReshapeInfo } = advancedVSeed;
1988
+ const { analysis, datasetReshapeInfo } = advancedVSeed;
1989
+ const { unfoldInfo } = datasetReshapeInfo[0];
2007
1990
  const orderMapping = analysis?.orderMapping || {};
2008
- const angle = encoding[0]?.angle?.[0];
2009
- const x = encoding[0]?.x?.[0];
2010
- const group = encoding[0]?.group?.[0];
1991
+ const angle = unfoldInfo.encodingAngle;
1992
+ const x = unfoldInfo.encodingX;
1993
+ const colorId = unfoldInfo.encodingColorId;
2011
1994
  const id = datasetReshapeInfo[0].id;
2012
1995
  const fields = {};
2013
1996
  if (angle) fields[angle] = {
@@ -2024,14 +2007,14 @@ const datasetXY = (spec, context)=>{
2024
2007
  sortIndex: 0
2025
2008
  };
2026
2009
  }
2027
- if (group) {
2028
- const order = orderMapping[group];
2029
- if (order) fields[group] = {
2010
+ if (colorId) {
2011
+ const order = orderMapping[colorId];
2012
+ if (order) fields[colorId] = {
2030
2013
  sortIndex: 0,
2031
2014
  domain: order,
2032
2015
  lockStatisticsByDomain: true
2033
2016
  };
2034
- else fields[group] = {
2017
+ else fields[colorId] = {
2035
2018
  sortIndex: 0
2036
2019
  };
2037
2020
  }
@@ -2284,7 +2267,7 @@ const tooltip_tooltip = (spec, context)=>{
2284
2267
  } } = baseConfig;
2285
2268
  const { enable } = tooltip;
2286
2269
  const { measureId, measureValue, measureName } = datasetReshapeInfo[0].foldInfo;
2287
- const { groupName } = datasetReshapeInfo[0].unfoldInfo;
2270
+ const { encodingColor: colorName } = datasetReshapeInfo[0].unfoldInfo;
2288
2271
  result.tooltip = {
2289
2272
  visible: enable,
2290
2273
  mark: {
@@ -2305,7 +2288,7 @@ const tooltip_tooltip = (spec, context)=>{
2305
2288
  {
2306
2289
  visible: true,
2307
2290
  hasShape: true,
2308
- key: (datum)=>datum && datum[measureName || groupName] || '',
2291
+ key: (datum)=>datum && datum[measureName || colorName] || '',
2309
2292
  value: (datum)=>{
2310
2293
  if (!datum) return '';
2311
2294
  const value = datum[measureValue];
@@ -2327,7 +2310,7 @@ const tooltip_tooltip = (spec, context)=>{
2327
2310
  content: [
2328
2311
  {
2329
2312
  visible: true,
2330
- key: (datum)=>datum && datum[groupName] || '',
2313
+ key: (datum)=>datum && datum[colorName] || '',
2331
2314
  value: (datum)=>{
2332
2315
  if (!datum) return '';
2333
2316
  const value = datum[measureValue];
@@ -2665,7 +2648,8 @@ const pointStateDimensionHover = (spec)=>{
2665
2648
  const pointStateHover = (spec, context)=>{
2666
2649
  const point = spec.point || {};
2667
2650
  const { advancedVSeed } = context;
2668
- const { encoding } = advancedVSeed;
2651
+ const { datasetReshapeInfo } = advancedVSeed;
2652
+ const { unfoldInfo } = datasetReshapeInfo[0];
2669
2653
  const result = {
2670
2654
  ...spec,
2671
2655
  point: {
@@ -2676,7 +2660,7 @@ const pointStateHover = (spec, context)=>{
2676
2660
  scaleX: 1.4,
2677
2661
  scaleY: 1.4,
2678
2662
  stroke: (datum, context)=>{
2679
- const field = encoding[0]?.group?.[0];
2663
+ const field = unfoldInfo.encodingColorId;
2680
2664
  const color = context.seriesColor(datum[field]);
2681
2665
  return color;
2682
2666
  },
@@ -2690,7 +2674,8 @@ const pointStateHover = (spec, context)=>{
2690
2674
  };
2691
2675
  const lineStyle_lineStyle = (spec, context)=>{
2692
2676
  const { advancedVSeed } = context;
2693
- const { markStyle, encoding, dataset } = advancedVSeed;
2677
+ const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed;
2678
+ const { unfoldInfo } = datasetReshapeInfo[0];
2694
2679
  const { lineStyle } = markStyle;
2695
2680
  if (!lineStyle) return spec;
2696
2681
  const result = {
@@ -2699,8 +2684,8 @@ const lineStyle_lineStyle = (spec, context)=>{
2699
2684
  const lineStyles = Array.isArray(lineStyle) ? lineStyle : [
2700
2685
  lineStyle
2701
2686
  ];
2702
- const group = encoding[0]?.group?.[0];
2703
- const lineGroups = (0, external_remeda_namespaceObject.groupBy)(dataset, (d)=>d[group ?? '']);
2687
+ const colorId = unfoldInfo.encodingColorId;
2688
+ const lineGroups = (0, external_remeda_namespaceObject.groupBy)(dataset, (d)=>d[colorId ?? '']);
2704
2689
  const customMap = lineStyles.reduce((result, style, index)=>{
2705
2690
  const { lineColor, lineColorOpacity, lineSmooth, lineStyle, lineWidth = 2, lineVisible = true } = style;
2706
2691
  const dashSegment = 2 * lineWidth;
@@ -2721,7 +2706,7 @@ const lineStyle_lineStyle = (spec, context)=>{
2721
2706
  [`custom${index + 1}`]: {
2722
2707
  level: index + 1,
2723
2708
  filter: (datum)=>{
2724
- const lineData = lineGroups[datum[group ?? '']];
2709
+ const lineData = lineGroups[datum[colorId ?? '']];
2725
2710
  for (const d of lineData)if (selector_selector(d, style.selector)) return true;
2726
2711
  return false;
2727
2712
  },
@@ -2816,7 +2801,8 @@ const annotationPoint_annotationPoint = (spec, context)=>{
2816
2801
  };
2817
2802
  const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
2818
2803
  const { advancedVSeed } = context;
2819
- const { annotation, encoding } = advancedVSeed;
2804
+ const { annotation, datasetReshapeInfo } = advancedVSeed;
2805
+ const { unfoldInfo } = datasetReshapeInfo[0];
2820
2806
  if (!annotation || !annotation.annotationVerticalLine) return spec;
2821
2807
  const { annotationVerticalLine } = annotation;
2822
2808
  const annotationVerticalLineList = Array.isArray(annotationVerticalLine) ? annotationVerticalLine : [
@@ -2896,7 +2882,7 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
2896
2882
  }
2897
2883
  const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
2898
2884
  return selectedData.map((datum)=>{
2899
- const x = encoding[0]?.x?.[0];
2885
+ const x = unfoldInfo.encodingX;
2900
2886
  if (!x) return {};
2901
2887
  return generateOneMarkLine(datum[x]);
2902
2888
  });
@@ -2913,7 +2899,8 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
2913
2899
  };
2914
2900
  const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
2915
2901
  const { advancedVSeed } = context;
2916
- const { annotation, encoding } = advancedVSeed;
2902
+ const { annotation, datasetReshapeInfo } = advancedVSeed;
2903
+ const { unfoldInfo } = datasetReshapeInfo[0];
2917
2904
  if (!annotation || !annotation.annotationHorizontalLine) return spec;
2918
2905
  const { annotationHorizontalLine } = annotation;
2919
2906
  const annotationVerticalLineList = Array.isArray(annotationHorizontalLine) ? annotationHorizontalLine : [
@@ -2993,7 +2980,7 @@ const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
2993
2980
  }
2994
2981
  const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
2995
2982
  return selectedData.map((datum)=>{
2996
- const y = encoding[0]?.y?.[0];
2983
+ const y = unfoldInfo.encodingY;
2997
2984
  if (!y) return {};
2998
2985
  return generateOneMarkLine(datum[y]);
2999
2986
  });
@@ -3274,13 +3261,10 @@ const pivotIndicators_pivotIndicators = (chartPipeline)=>(spec, context)=>{
3274
3261
  ...spec
3275
3262
  };
3276
3263
  const { advancedVSeed } = context;
3277
- const { measures, datasetReshapeInfo, encoding, dataset } = advancedVSeed;
3264
+ const { measures, datasetReshapeInfo, dataset } = advancedVSeed;
3278
3265
  const colorItems = (0, external_remeda_namespaceObject.unique)(datasetReshapeInfo.flatMap((d)=>d.unfoldInfo.colorItems));
3279
3266
  const indicators = datasetReshapeInfo.map((reshapeInfo, index)=>{
3280
3267
  const measure = measures?.find((d)=>d.id === reshapeInfo.id);
3281
- const newEncoding = [
3282
- encoding[index]
3283
- ];
3284
3268
  const newDataset = dataset[index];
3285
3269
  const newDatasetReshapeInfo = [
3286
3270
  {
@@ -3296,8 +3280,7 @@ const pivotIndicators_pivotIndicators = (chartPipeline)=>(spec, context)=>{
3296
3280
  advancedVSeed: {
3297
3281
  ...advancedVSeed,
3298
3282
  datasetReshapeInfo: newDatasetReshapeInfo,
3299
- dataset: newDataset,
3300
- encoding: newEncoding
3283
+ dataset: newDataset
3301
3284
  }
3302
3285
  };
3303
3286
  const chartSpec = execPipeline(chartPipeline, newContext, {});
@@ -3483,7 +3466,7 @@ const pivotDiscreteLegend = (spec, context)=>{
3483
3466
  }
3484
3467
  },
3485
3468
  label: {
3486
- formatMethod: (value)=>colorIdMap[String(value)] ?? value,
3469
+ formatMethod: (value)=>colorIdMap[value] ?? value,
3487
3470
  style: {
3488
3471
  fontSize: labelFontSize,
3489
3472
  fill: labelFontColor,
@@ -3566,151 +3549,18 @@ const registerLine = ()=>{
3566
3549
  Builder._advancedPipelineMap.line = lineAdvancedPipeline;
3567
3550
  Builder._specPipelineMap.line = lineSpecPipeline;
3568
3551
  };
3569
- const dataReshapeFor2D1M_emptyReshapeResult = {
3570
- dataset: [],
3571
- foldInfo: {
3572
- foldMap: {},
3573
- measureId: '',
3574
- measureName: '',
3575
- measureValue: ''
3576
- },
3577
- unfoldInfo: {
3578
- groupName: '',
3579
- groupId: '',
3580
- colorItems: [],
3581
- colorIdMap: {}
3582
- }
3583
- };
3584
- const dataReshapeFor2D1M = (dataset, dimensions, measures, options)=>{
3585
- const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, unfoldDimensionGroup = UnfoldDimensionGroup, unfoldDimensionGroupId = UnfoldDimensionGroupId } = options || {};
3586
- if (0 === dimensions.length && 0 === measures.length) return dataReshapeFor2D1M_emptyReshapeResult;
3587
- const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, foldMeasureId, foldMeasureName, foldMeasureValue);
3588
- if (0 === dimensions.length) {
3589
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
3590
- {
3591
- id: foldMeasureId,
3592
- alias: i18n`指标Id`,
3593
- location: 'dimension'
3594
- },
3595
- {
3596
- id: foldMeasureName,
3597
- alias: i18n`指标名称`,
3598
- location: 'dimension'
3599
- }
3600
- ], [
3601
- {
3602
- id: foldMeasureValue,
3603
- alias: i18n`指标值`
3604
- }
3605
- ], 1, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
3606
- return {
3607
- dataset: finalDataset,
3608
- foldInfo,
3609
- unfoldInfo
3610
- };
3611
- }
3612
- {
3613
- const onlyOneMeasure = 1 === measures.length;
3614
- const onlyOneDimension = 1 === dimensions.length;
3615
- const dims = [
3616
- ...dimensions
3617
- ];
3618
- if (!onlyOneMeasure || onlyOneDimension) dims.push({
3619
- id: foldMeasureName,
3620
- alias: i18n`指标名称`,
3621
- location: 'dimension'
3622
- });
3623
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dims, [
3624
- {
3625
- id: foldMeasureValue,
3626
- alias: i18n`指标值`
3627
- }
3628
- ], 1, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
3629
- return {
3630
- dataset: finalDataset,
3631
- foldInfo,
3632
- unfoldInfo
3633
- };
3634
- }
3635
- };
3636
- const reshapeTo2D1M = (advancedVSeed, context)=>{
3637
- const result = {
3638
- ...advancedVSeed
3639
- };
3640
- const { vseed } = context;
3641
- const { dataset } = vseed;
3642
- const { dimensions, measures } = advancedVSeed;
3643
- if (!measures || !dimensions || !dataset) return result;
3644
- if (0 === measures.length) throw new Error('measures can not be empty');
3645
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, dimensions, measures);
3646
- return {
3647
- ...result,
3648
- dataset: newDatasets,
3649
- datasetReshapeInfo: [
3650
- {
3651
- id: '2D1M',
3652
- index: 0,
3653
- foldInfo,
3654
- unfoldInfo
3655
- }
3656
- ],
3657
- dimensions,
3658
- measures
3659
- };
3660
- };
3661
- const pivotReshapeTo2D1M = (advancedVSeed, context)=>{
3662
- const result = {
3663
- ...advancedVSeed
3664
- };
3665
- const { vseed } = context;
3666
- const { dataset } = vseed;
3667
- const { measures } = advancedVSeed;
3668
- const dimensions = advancedVSeed.dimensions;
3669
- if (!measures || !dimensions) return result;
3670
- const measureGroups = [];
3671
- if (measures) measures.forEach((measure)=>{
3672
- if (measure.children && measure.children.length > 0) measureGroups.push(measure);
3673
- });
3674
- const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
3675
- const newDatasets = [];
3676
- const datasetReshapeInfo = [];
3677
- measureGroups.forEach((measureGroup, index)=>{
3678
- const measures = measureGroup.children;
3679
- if (!measures) return;
3680
- const groupId = measureGroup.id;
3681
- const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, commonDimensions, measures, {
3682
- foldMeasureId: FoldMeasureId,
3683
- foldMeasureName: FoldMeasureName,
3684
- foldMeasureValue: FoldMeasureValue + groupId,
3685
- unfoldDimensionGroup: UnfoldDimensionGroup
3686
- });
3687
- const reshapeInfo = {
3688
- id: groupId,
3689
- index,
3690
- foldInfo,
3691
- unfoldInfo
3692
- };
3693
- newDatasets.push(newSubDataset);
3694
- datasetReshapeInfo.push(reshapeInfo);
3695
- });
3696
- return {
3697
- ...result,
3698
- dataset: newDatasets,
3699
- datasetReshapeInfo: datasetReshapeInfo
3700
- };
3701
- };
3702
3552
  const columnAdvancedPipeline = [
3703
3553
  initAdvancedVSeed_initAdvancedVSeed,
3704
3554
  autoMeasures_autoMeasures,
3705
3555
  autoDimensions_autoDimensions,
3556
+ encodingForColumn,
3706
3557
  pivotAdapter([
3707
- reshapeTo2D1M
3558
+ reshapeWithEncoding
3708
3559
  ], [
3709
- pivotReshapeTo2D1M
3560
+ pivotReshapeWithEncoding
3710
3561
  ]),
3711
- encodingXY,
3712
3562
  sortXBandAxis,
3713
- sort_sortLegend,
3563
+ sortLegend_sortLegend,
3714
3564
  columnConfig,
3715
3565
  theme_theme,
3716
3566
  markStyle_markStyle,
@@ -3721,13 +3571,13 @@ const initColumn = (spec, context)=>{
3721
3571
  ...spec
3722
3572
  };
3723
3573
  const { advancedVSeed } = context;
3724
- const { encoding } = advancedVSeed;
3725
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
3574
+ const { datasetReshapeInfo } = advancedVSeed;
3575
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
3726
3576
  result.type = 'bar';
3727
3577
  result.direction = 'vertical';
3728
- result.xField = encoding[0].x[0];
3729
- result.yField = encoding[0].y[0];
3730
- result.seriesField = encoding[0].group[0];
3578
+ result.xField = unfoldInfo.encodingX;
3579
+ result.yField = foldInfo.measureValue;
3580
+ result.seriesField = unfoldInfo.encodingColorId;
3731
3581
  result.padding = 0;
3732
3582
  result.region = [
3733
3583
  {
@@ -4047,14 +3897,14 @@ const columnParallelAdvancedPipeline = [
4047
3897
  initAdvancedVSeed_initAdvancedVSeed,
4048
3898
  autoMeasures_autoMeasures,
4049
3899
  autoDimensions_autoDimensions,
3900
+ encodingForColumn,
4050
3901
  pivotAdapter([
4051
- reshapeTo2D1M
3902
+ reshapeWithEncoding
4052
3903
  ], [
4053
- pivotReshapeTo2D1M
3904
+ pivotReshapeWithEncoding
4054
3905
  ]),
4055
- encodingXY,
4056
3906
  sortXBandAxis,
4057
- sort_sortLegend,
3907
+ sortLegend_sortLegend,
4058
3908
  columnParallelConfig,
4059
3909
  theme_theme,
4060
3910
  markStyle_markStyle,
@@ -4065,17 +3915,19 @@ const initColumnParallel = (spec, context)=>{
4065
3915
  ...spec
4066
3916
  };
4067
3917
  const { advancedVSeed } = context;
4068
- const { encoding, datasetReshapeInfo } = advancedVSeed;
4069
- const { unfoldInfo } = datasetReshapeInfo[0];
4070
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
3918
+ const { datasetReshapeInfo, dimensions } = advancedVSeed;
3919
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
3920
+ const sameDimensionsMode = dimensions.length > 1 && dimensions.every((dim)=>dim.id === dimensions[0].id);
4071
3921
  result.type = 'bar';
4072
3922
  result.direction = 'vertical';
4073
- result.xField = [
4074
- encoding[0].x[0],
4075
- unfoldInfo.groupId
3923
+ result.xField = sameDimensionsMode ? [
3924
+ unfoldInfo.encodingX
3925
+ ] : [
3926
+ unfoldInfo.encodingX,
3927
+ unfoldInfo.encodingDetail
4076
3928
  ];
4077
- result.yField = encoding[0].y[0];
4078
- result.seriesField = encoding[0].group[0];
3929
+ result.yField = foldInfo.measureValue;
3930
+ result.seriesField = unfoldInfo.encodingColorId;
4079
3931
  result.padding = 0;
4080
3932
  result.region = [
4081
3933
  {
@@ -4142,14 +3994,14 @@ const columnPercentAdvancedPipeline = [
4142
3994
  initAdvancedVSeed_initAdvancedVSeed,
4143
3995
  autoMeasures_autoMeasures,
4144
3996
  autoDimensions_autoDimensions,
3997
+ encodingForColumn,
4145
3998
  pivotAdapter([
4146
- reshapeTo2D1M
3999
+ reshapeWithEncoding
4147
4000
  ], [
4148
- pivotReshapeTo2D1M
4001
+ pivotReshapeWithEncoding
4149
4002
  ]),
4150
- encodingXY,
4151
4003
  sortXBandAxis,
4152
- sort_sortLegend,
4004
+ sortLegend_sortLegend,
4153
4005
  columnPercentConfig,
4154
4006
  theme_theme,
4155
4007
  markStyle_markStyle,
@@ -4219,55 +4071,70 @@ const registerColumnPercent = ()=>{
4219
4071
  Builder._advancedPipelineMap.columnPercent = columnPercentAdvancedPipeline;
4220
4072
  Builder._specPipelineMap.columnPercent = columnPercentSpecPipeline;
4221
4073
  };
4222
- const encodingYX = (advancedVSeed)=>{
4223
- const result = {
4224
- ...advancedVSeed
4225
- };
4226
- const { datasetReshapeInfo, dimensions } = advancedVSeed;
4227
- if (!datasetReshapeInfo || !dimensions) return result;
4228
- const yDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
4229
- const isZeroDimension = 0 === dimensions.length;
4230
- const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
4231
- const { foldInfo, unfoldInfo } = cur;
4232
- const y = [
4233
- isZeroDimension ? foldInfo.measureName : yDimension?.id
4234
- ];
4235
- const x = [
4236
- foldInfo.measureValue
4237
- ];
4238
- const group = [
4239
- unfoldInfo.groupId
4240
- ];
4241
- const color = [
4242
- foldInfo.measureName
4074
+ const encodingForBar = (advancedVSeed, context)=>{
4075
+ const { vseed } = context;
4076
+ const { dimensions } = advancedVSeed;
4077
+ if (!dimensions) return advancedVSeed;
4078
+ const encoding = vseed.encoding;
4079
+ if (encoding) {
4080
+ const y = encoding.y || [];
4081
+ const detail = encoding.detail || [];
4082
+ const color = encoding.color || [];
4083
+ const mergedDetail = [
4084
+ ...color.filter((d)=>!y.includes(d)),
4085
+ ...detail
4243
4086
  ];
4244
- return [
4245
- ...prev,
4246
- {
4247
- x,
4248
- y,
4249
- group,
4250
- color
4087
+ return {
4088
+ ...advancedVSeed,
4089
+ encoding: {
4090
+ ...encoding,
4091
+ detail: mergedDetail
4251
4092
  }
4252
- ];
4253
- }, []);
4093
+ };
4094
+ }
4095
+ const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
4096
+ const mergedEncoding = {
4097
+ y: dimensions.slice(0, 1).map((item)=>item.id),
4098
+ color: dimensions.slice(1).map((item)=>item.id),
4099
+ detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
4100
+ tooltip: dimensions.map((item)=>item.id),
4101
+ label: [],
4102
+ row: [],
4103
+ column: []
4104
+ };
4254
4105
  return {
4255
- ...result,
4256
- encoding
4106
+ ...advancedVSeed,
4107
+ encoding: mergedEncoding
4108
+ };
4109
+ };
4110
+ const sortYBandAxis = (advancedVSeed, context)=>{
4111
+ const result = {
4112
+ ...advancedVSeed
4257
4113
  };
4114
+ const { vseed } = context;
4115
+ const { sort: sortAxis } = vseed;
4116
+ const { datasetReshapeInfo, dataset } = advancedVSeed;
4117
+ const { unfoldInfo } = datasetReshapeInfo[0];
4118
+ const yField = unfoldInfo?.encodingY;
4119
+ if (!sortAxis || !yField) return advancedVSeed;
4120
+ if (!result.analysis) result.analysis = {};
4121
+ if (!result.analysis.orderMapping) result.analysis.orderMapping = {};
4122
+ const axisOrderResult = calcOrder(sortAxis, yField, dataset.flat(2));
4123
+ result.analysis.orderMapping[yField] = axisOrderResult;
4124
+ return result;
4258
4125
  };
4259
4126
  const barAdvancedPipeline = [
4260
4127
  initAdvancedVSeed_initAdvancedVSeed,
4261
4128
  autoMeasures_autoMeasures,
4262
4129
  autoDimensions_autoDimensions,
4130
+ encodingForBar,
4263
4131
  pivotAdapter([
4264
- reshapeTo2D1M
4132
+ reshapeWithEncoding
4265
4133
  ], [
4266
- pivotReshapeTo2D1M
4134
+ pivotReshapeWithEncoding
4267
4135
  ]),
4268
- encodingYX,
4269
4136
  sortYBandAxis,
4270
- sort_sortLegend,
4137
+ sortLegend_sortLegend,
4271
4138
  barConfig,
4272
4139
  theme_theme,
4273
4140
  markStyle_markStyle,
@@ -4278,13 +4145,13 @@ const initBar = (spec, context)=>{
4278
4145
  ...spec
4279
4146
  };
4280
4147
  const { advancedVSeed } = context;
4281
- const { encoding } = advancedVSeed;
4282
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
4148
+ const { datasetReshapeInfo } = advancedVSeed;
4149
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
4283
4150
  result.type = 'bar';
4284
4151
  result.direction = 'horizontal';
4285
- result.yField = encoding[0].y?.[0];
4286
- result.xField = encoding[0].x?.[0];
4287
- result.seriesField = encoding[0].group?.[0];
4152
+ result.yField = unfoldInfo.encodingY;
4153
+ result.xField = foldInfo.measureValue;
4154
+ result.seriesField = unfoldInfo.encodingColorId;
4288
4155
  result.padding = 0;
4289
4156
  result.region = [
4290
4157
  {
@@ -4296,11 +4163,12 @@ const initBar = (spec, context)=>{
4296
4163
  };
4297
4164
  const datasetYX = (spec, context)=>{
4298
4165
  const { advancedVSeed, vseed } = context;
4299
- const { encoding, analysis, datasetReshapeInfo } = advancedVSeed;
4166
+ const { analysis, datasetReshapeInfo } = advancedVSeed;
4167
+ const { unfoldInfo } = datasetReshapeInfo[0];
4300
4168
  const orderMapping = analysis?.orderMapping || {};
4301
- const angle = encoding[0]?.angle?.[0];
4302
- const y = encoding[0]?.y?.[0];
4303
- const group = encoding[0]?.group?.[0];
4169
+ const angle = unfoldInfo.encodingAngle;
4170
+ const y = unfoldInfo.encodingY;
4171
+ const colorId = unfoldInfo.encodingColorId;
4304
4172
  const id = datasetReshapeInfo[0].id;
4305
4173
  const fields = {};
4306
4174
  if (angle) fields[angle] = {
@@ -4317,14 +4185,14 @@ const datasetYX = (spec, context)=>{
4317
4185
  sortIndex: 0
4318
4186
  };
4319
4187
  }
4320
- if (group) {
4321
- const order = orderMapping[group];
4322
- if (order) fields[group] = {
4188
+ if (colorId) {
4189
+ const order = orderMapping[colorId];
4190
+ if (order) fields[colorId] = {
4323
4191
  sortIndex: 0,
4324
4192
  domain: order,
4325
4193
  lockStatisticsByDomain: true
4326
4194
  };
4327
- else fields[group] = {
4195
+ else fields[colorId] = {
4328
4196
  sortIndex: 0
4329
4197
  };
4330
4198
  }
@@ -4612,14 +4480,14 @@ const barParallelAdvancedPipeline = [
4612
4480
  initAdvancedVSeed_initAdvancedVSeed,
4613
4481
  autoMeasures_autoMeasures,
4614
4482
  autoDimensions_autoDimensions,
4483
+ encodingForBar,
4615
4484
  pivotAdapter([
4616
- reshapeTo2D1M
4485
+ reshapeWithEncoding
4617
4486
  ], [
4618
- pivotReshapeTo2D1M
4487
+ pivotReshapeWithEncoding
4619
4488
  ]),
4620
- encodingYX,
4621
4489
  sortYBandAxis,
4622
- sort_sortLegend,
4490
+ sortLegend_sortLegend,
4623
4491
  barParallelConfig,
4624
4492
  theme_theme,
4625
4493
  markStyle_markStyle,
@@ -4630,17 +4498,19 @@ const initBarParallel = (spec, context)=>{
4630
4498
  ...spec
4631
4499
  };
4632
4500
  const { advancedVSeed } = context;
4633
- const { encoding, datasetReshapeInfo } = advancedVSeed;
4634
- const { unfoldInfo } = datasetReshapeInfo[0];
4635
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
4501
+ const { datasetReshapeInfo, dimensions } = advancedVSeed;
4502
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
4503
+ const sameDimensionsMode = dimensions.length > 1 && dimensions.every((dim)=>dim.id === dimensions[0].id);
4636
4504
  result.type = 'bar';
4637
4505
  result.direction = 'horizontal';
4638
- result.yField = [
4639
- encoding[0].y[0],
4640
- unfoldInfo.groupId
4506
+ result.yField = sameDimensionsMode ? [
4507
+ unfoldInfo.encodingY
4508
+ ] : [
4509
+ unfoldInfo.encodingY,
4510
+ unfoldInfo.encodingDetail
4641
4511
  ];
4642
- result.xField = encoding[0].x[0];
4643
- result.seriesField = encoding[0].group[0];
4512
+ result.xField = foldInfo.measureValue;
4513
+ result.seriesField = unfoldInfo.encodingColorId;
4644
4514
  result.padding = 0;
4645
4515
  result.region = [
4646
4516
  {
@@ -4706,14 +4576,14 @@ const barPercentAdvancedPipeline = [
4706
4576
  initAdvancedVSeed_initAdvancedVSeed,
4707
4577
  autoMeasures_autoMeasures,
4708
4578
  autoDimensions_autoDimensions,
4579
+ encodingForBar,
4709
4580
  pivotAdapter([
4710
- reshapeTo2D1M
4581
+ reshapeWithEncoding
4711
4582
  ], [
4712
- pivotReshapeTo2D1M
4583
+ pivotReshapeWithEncoding
4713
4584
  ]),
4714
- encodingYX,
4715
4585
  sortYBandAxis,
4716
- sort_sortLegend,
4586
+ sortLegend_sortLegend,
4717
4587
  barPercentConfig,
4718
4588
  theme_theme,
4719
4589
  markStyle_markStyle,
@@ -4777,14 +4647,14 @@ const areaAdvancedPipeline = [
4777
4647
  initAdvancedVSeed_initAdvancedVSeed,
4778
4648
  autoMeasures_autoMeasures,
4779
4649
  autoDimensions_autoDimensions,
4650
+ encodingForColumn,
4780
4651
  pivotAdapter([
4781
- reshapeTo2D1M0Name
4652
+ reshapeWithEncoding
4782
4653
  ], [
4783
- pivotReshapeTo2D1M0Name
4654
+ pivotReshapeWithEncoding
4784
4655
  ]),
4785
- encodingXY,
4786
4656
  sortXBandAxis,
4787
- sort_sortLegend,
4657
+ sortLegend_sortLegend,
4788
4658
  areaConfig,
4789
4659
  theme_theme,
4790
4660
  markStyle_markStyle,
@@ -4795,13 +4665,13 @@ const initArea = (spec, context)=>{
4795
4665
  ...spec
4796
4666
  };
4797
4667
  const { advancedVSeed } = context;
4798
- const { encoding } = advancedVSeed;
4799
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
4668
+ const { datasetReshapeInfo } = advancedVSeed;
4669
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
4800
4670
  result.type = 'area';
4801
4671
  result.direction = 'vertical';
4802
- result.xField = encoding[0].x[0];
4803
- result.yField = encoding[0].y[0];
4804
- result.seriesField = encoding[0].group[0];
4672
+ result.yField = foldInfo.measureValue;
4673
+ result.xField = unfoldInfo.encodingX;
4674
+ result.seriesField = unfoldInfo.encodingColorId;
4805
4675
  result.padding = 0;
4806
4676
  result.region = [
4807
4677
  {
@@ -4813,8 +4683,9 @@ const initArea = (spec, context)=>{
4813
4683
  };
4814
4684
  const areaStyle_areaStyle = (spec, context)=>{
4815
4685
  const { advancedVSeed } = context;
4816
- const { markStyle, encoding, dataset } = advancedVSeed;
4686
+ const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed;
4817
4687
  const { areaStyle } = markStyle;
4688
+ const { unfoldInfo } = datasetReshapeInfo[0];
4818
4689
  if (!areaStyle) return {
4819
4690
  ...spec,
4820
4691
  area: {
@@ -4827,7 +4698,7 @@ const areaStyle_areaStyle = (spec, context)=>{
4827
4698
  const areaStyles = Array.isArray(areaStyle) ? areaStyle : [
4828
4699
  areaStyle
4829
4700
  ];
4830
- const group = encoding[0]?.group?.[0];
4701
+ const group = unfoldInfo.encodingColorId;
4831
4702
  const areaGroups = (0, external_remeda_namespaceObject.groupBy)(dataset, (d)=>d[group ?? '']);
4832
4703
  const customMap = areaStyles.reduce((result, style, index)=>{
4833
4704
  const { areaColor, areaColorOpacity, areaVisible = true } = style;
@@ -4921,14 +4792,14 @@ const areaPercentAdvancedPipeline = [
4921
4792
  initAdvancedVSeed_initAdvancedVSeed,
4922
4793
  autoMeasures_autoMeasures,
4923
4794
  autoDimensions_autoDimensions,
4795
+ encodingForColumn,
4924
4796
  pivotAdapter([
4925
- reshapeTo2D1M0Name
4797
+ reshapeWithEncoding
4926
4798
  ], [
4927
- pivotReshapeTo2D1M0Name
4799
+ pivotReshapeWithEncoding
4928
4800
  ]),
4929
- encodingXY,
4930
4801
  sortXBandAxis,
4931
- sort_sortLegend,
4802
+ sortLegend_sortLegend,
4932
4803
  areaPercentConfig,
4933
4804
  theme_theme,
4934
4805
  markStyle_markStyle,
@@ -4993,16 +4864,20 @@ const registerAreaPercent = ()=>{
4993
4864
  Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
4994
4865
  Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
4995
4866
  };
4996
- const autoMeasuresBy2M1Group = (advancedVSeed, context)=>{
4867
+ const autoScatterMeasures = (advancedVSeed, context)=>{
4997
4868
  const result = {
4998
4869
  ...advancedVSeed
4999
4870
  };
5000
4871
  const { vseed } = context;
5001
- const { measures, dataset } = vseed;
4872
+ const { dataset, scatterMeasures, measures } = vseed;
5002
4873
  if (!dataset) throw new Error('dataset is required');
5003
4874
  if (0 === dataset.length) return result;
5004
- if (measures) {
5005
- result.measures = auto2M1Group(measures);
4875
+ if (scatterMeasures) {
4876
+ result.measures = scatterMeasuresToMeasureTree(scatterMeasures);
4877
+ return result;
4878
+ }
4879
+ if (measures && measureDepth(measures) > 1) {
4880
+ result.measures = measures;
5006
4881
  return result;
5007
4882
  }
5008
4883
  const top100dataset = dataset.slice(0, 100);
@@ -5010,7 +4885,7 @@ const autoMeasuresBy2M1Group = (advancedVSeed, context)=>{
5010
4885
  ...prev,
5011
4886
  ...cur
5012
4887
  }), {});
5013
- const newMeasures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
4888
+ const newMeasures = measures || Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
5014
4889
  '',
5015
4890
  null,
5016
4891
  void 0
@@ -5018,693 +4893,277 @@ const autoMeasuresBy2M1Group = (advancedVSeed, context)=>{
5018
4893
  id: measure,
5019
4894
  alias: measure
5020
4895
  }));
5021
- result.measures = auto2M1Group(newMeasures);
4896
+ if (0 === newMeasures.length) result.measures = [];
4897
+ else if (1 === newMeasures.length) result.measures = [
4898
+ {
4899
+ id: 'primary',
4900
+ alias: 'primary',
4901
+ children: newMeasures
4902
+ }
4903
+ ];
4904
+ else if (newMeasures.length > 1) result.measures = [
4905
+ {
4906
+ id: 'primary',
4907
+ alias: 'primary',
4908
+ children: newMeasures.slice(0, 1)
4909
+ },
4910
+ {
4911
+ id: 'secondary',
4912
+ alias: 'secondary',
4913
+ children: newMeasures.slice(1)
4914
+ }
4915
+ ];
5022
4916
  return result;
5023
4917
  };
5024
- const auto2M1Group = (measures)=>{
5025
- const allMeasures = findAllMeasures(measures);
5026
- if (allMeasures.length <= 2) return allMeasures;
5027
- const groups = measures.filter((measure)=>'children' in measure);
5028
- const singleMeasures = measures.filter((measure)=>!('children' in measure));
5029
- for(let i = 0; i < singleMeasures.length; i += 2){
5030
- const group = autoMeasuresBy2M1Group_createEmptyMeasureGroup();
5031
- group.children = allMeasures.slice(i, i + 2);
5032
- groups.push(group);
5033
- }
5034
- return groups;
5035
- };
5036
- const autoMeasuresBy2M1Group_createEmptyMeasureGroup = ()=>({
5037
- id: '',
5038
- alias: '',
5039
- children: []
4918
+ const scatterMeasuresToMeasureTree = (scatterMeasures)=>{
4919
+ const measureTree = scatterMeasures.map((item, index)=>{
4920
+ const { xMeasures, yMeasures } = item;
4921
+ const groupChildren = [];
4922
+ let id = '';
4923
+ if (xMeasures) {
4924
+ const arrXMeasures = Array.isArray(xMeasures) ? xMeasures : [
4925
+ xMeasures
4926
+ ];
4927
+ const alias = arrXMeasures.map((item)=>item.alias || item.id).toString();
4928
+ id += alias;
4929
+ groupChildren.push({
4930
+ id: `${index}-x`,
4931
+ alias: arrXMeasures.map((item)=>item.alias || item.id).toString(),
4932
+ children: arrXMeasures
4933
+ });
4934
+ }
4935
+ if (yMeasures) {
4936
+ const arrYMeasures = Array.isArray(yMeasures) ? yMeasures : [
4937
+ yMeasures
4938
+ ];
4939
+ const alias = arrYMeasures.map((item)=>item.alias || item.id).toString();
4940
+ id += alias;
4941
+ groupChildren.push({
4942
+ id: `${index}-y`,
4943
+ alias: arrYMeasures.map((item)=>item.alias || item.id).toString(),
4944
+ children: arrYMeasures
4945
+ });
4946
+ }
4947
+ return {
4948
+ id,
4949
+ alias: id,
4950
+ children: groupChildren
4951
+ };
5040
4952
  });
5041
- const dataReshapeFor1D_emptyReshapeResult = {
5042
- dataset: [],
5043
- foldInfo: {
5044
- foldMap: {},
5045
- measureId: '',
5046
- measureName: '',
5047
- measureValue: ''
5048
- },
5049
- unfoldInfo: {
5050
- groupName: '',
5051
- groupId: '',
5052
- colorItems: [],
5053
- colorIdMap: {}
5054
- }
4953
+ if (1 === scatterMeasures.length) return measureTree[0].children || [];
4954
+ return measureTree;
5055
4955
  };
5056
- const dataReshapeFor1D = (dataset, dimensions, measures, options)=>{
5057
- const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, unfoldDimensionGroup = UnfoldDimensionGroup, unfoldDimensionGroupId = UnfoldDimensionGroupId } = options || {};
5058
- if (0 === dimensions.length && 0 === measures.length) return dataReshapeFor1D_emptyReshapeResult;
5059
- if (0 === dimensions.length) {
5060
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(dataset, [], [], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
4956
+ const encodingForScatter = (advancedVSeed, context)=>{
4957
+ const { vseed } = context;
4958
+ const { dimensions } = advancedVSeed;
4959
+ if (!dimensions) return advancedVSeed;
4960
+ const encoding = vseed.encoding;
4961
+ if (encoding) {
4962
+ const detail = encoding.detail || [];
4963
+ const color = encoding.color || [];
4964
+ const mergedDetail = (0, external_remeda_namespaceObject.unique)([
4965
+ ...color,
4966
+ ...detail
4967
+ ]);
5061
4968
  return {
5062
- dataset: finalDataset,
5063
- foldInfo: {
5064
- foldMap: {},
5065
- measureId: foldMeasureId,
5066
- measureName: foldMeasureName,
5067
- measureValue: foldMeasureValue
5068
- },
5069
- unfoldInfo
5070
- };
5071
- }
5072
- {
5073
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(dataset, [
5074
- ...dimensions
5075
- ], [
5076
- {
5077
- id: foldMeasureValue,
5078
- alias: i18n`指标值`
4969
+ ...advancedVSeed,
4970
+ encoding: {
4971
+ ...encoding,
4972
+ detail: mergedDetail
5079
4973
  }
5080
- ], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
5081
- return {
5082
- dataset: finalDataset,
5083
- foldInfo: {
5084
- foldMap: {},
5085
- measureId: foldMeasureId,
5086
- measureName: foldMeasureName,
5087
- measureValue: foldMeasureValue
5088
- },
5089
- unfoldInfo
5090
4974
  };
5091
4975
  }
4976
+ const dimensionsWithoutMeasureName = dimensions.filter((item)=>item.id !== MeasureName);
4977
+ const mergedEncoding = {
4978
+ color: dimensions.slice(0).map((item)=>item.id),
4979
+ detail: dimensionsWithoutMeasureName.slice(0).map((item)=>item.id),
4980
+ tooltip: dimensionsWithoutMeasureName.map((item)=>item.id),
4981
+ label: [],
4982
+ row: [],
4983
+ column: []
4984
+ };
4985
+ return {
4986
+ ...advancedVSeed,
4987
+ encoding: mergedEncoding
4988
+ };
5092
4989
  };
5093
- const reshapeTo1D = (advancedVSeed, context)=>{
4990
+ const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
5094
4991
  const result = {
5095
4992
  ...advancedVSeed
5096
4993
  };
5097
4994
  const { vseed } = context;
5098
4995
  const { dataset } = vseed;
5099
- const { dimensions, measures } = advancedVSeed;
5100
- if (!measures || !dimensions || !dataset) return result;
4996
+ const { dimensions, measures, encoding, chartType } = advancedVSeed;
4997
+ if (!measures || !dimensions || !dataset || !encoding) return result;
5101
4998
  if (0 === measures.length) throw new Error('measures can not be empty');
5102
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D(dataset, dimensions, measures);
4999
+ if (measures.length > 2) throw new Error('measures can not be more than 2');
5000
+ const foldInfoList = [];
5001
+ const unfoldInfoList = [];
5002
+ const datasets = [];
5003
+ const xMeasures = measures[0];
5004
+ const yMeasures = measures[1] || xMeasures;
5005
+ if (xMeasures && xMeasures.children) {
5006
+ const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
5007
+ foldMeasureValue: FoldXMeasureValue,
5008
+ colorItemAsId: true
5009
+ });
5010
+ datasets.push(newDataset);
5011
+ foldInfoList.push(foldInfo);
5012
+ unfoldInfoList.push(unfoldInfo);
5013
+ }
5014
+ if (yMeasures && yMeasures.children) {
5015
+ const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(datasets[0], dimensions, yMeasures.children, encoding, {
5016
+ foldMeasureValue: FoldYMeasureValue,
5017
+ colorItemAsId: true
5018
+ });
5019
+ datasets[0] = newDataset;
5020
+ foldInfoList.push(foldInfo);
5021
+ unfoldInfoList.push(unfoldInfo);
5022
+ }
5023
+ const unfoldInfo = {
5024
+ ...unfoldInfoList[0],
5025
+ colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
5026
+ colorIdMap: unfoldInfoList.reduce((prev, cur)=>({
5027
+ ...prev,
5028
+ ...cur.colorIdMap
5029
+ }), {})
5030
+ };
5103
5031
  return {
5104
5032
  ...result,
5105
- dataset: newDatasets,
5033
+ dataset: datasets[0],
5106
5034
  datasetReshapeInfo: [
5107
5035
  {
5108
- id: '1D2M',
5036
+ id: String(chartType),
5109
5037
  index: 0,
5110
- foldInfo,
5111
- unfoldInfo
5038
+ foldInfo: foldInfoList[0],
5039
+ foldInfoList: foldInfoList,
5040
+ unfoldInfo: unfoldInfo
5112
5041
  }
5113
5042
  ]
5114
5043
  };
5115
5044
  };
5116
- const pivotReshapeTo1D = (advancedVSeed, context)=>{
5045
+ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
5117
5046
  const result = {
5118
5047
  ...advancedVSeed
5119
5048
  };
5120
5049
  const { vseed } = context;
5121
5050
  const { dataset } = vseed;
5122
- const { measures } = advancedVSeed;
5123
- const dimensions = advancedVSeed.dimensions;
5124
- if (!measures || !dimensions) return result;
5051
+ const { dimensions, measures, encoding, chartType } = advancedVSeed;
5052
+ if (!measures || !dimensions || !dataset || !encoding) return result;
5125
5053
  const measureGroups = [];
5126
- if (measures) measures.forEach((measure)=>{
5127
- if (measure.children && measure.children.length > 0) measureGroups.push(measure);
5054
+ const depth = measureDepth(measures);
5055
+ if (3 === depth) measures.forEach((measure)=>{
5056
+ measureGroups.push(measure.children);
5128
5057
  });
5129
- const newDatasets = [];
5058
+ else if (2 === depth) measureGroups.push(measures);
5059
+ const datasetList = [];
5130
5060
  const datasetReshapeInfo = [];
5131
- measureGroups.forEach((measureGroup, index)=>{
5132
- const measures = measureGroup.children;
5133
- if (!measures) return;
5134
- const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
5135
- const groupId = measureGroup.id;
5136
- const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeFor1D(dataset, commonDimensions, measures, {
5137
- foldMeasureId: FoldMeasureId,
5138
- foldMeasureName: FoldMeasureName,
5139
- foldMeasureValue: FoldMeasureValue + groupId,
5140
- unfoldDimensionGroup: UnfoldDimensionGroup
5141
- });
5061
+ measureGroups.forEach((measures, index)=>{
5062
+ if (0 === measures.length) throw new Error('measures can not be empty');
5063
+ if (measures.length > 2) throw new Error('measures can not be more than 2');
5064
+ const foldInfoList = [];
5065
+ const unfoldInfoList = [];
5066
+ const datasets = [];
5067
+ const xMeasures = measures[0];
5068
+ const yMeasures = measures[1] || xMeasures;
5069
+ if (xMeasures && xMeasures.children) {
5070
+ const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
5071
+ foldMeasureValue: `${FoldXMeasureValue}${index}`,
5072
+ colorItemAsId: true
5073
+ });
5074
+ datasets.push(newDataset);
5075
+ foldInfoList.push(foldInfo);
5076
+ unfoldInfoList.push(unfoldInfo);
5077
+ }
5078
+ if (yMeasures && yMeasures.children) {
5079
+ const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, yMeasures.children, encoding, {
5080
+ foldMeasureValue: `${FoldYMeasureValue}${index}`,
5081
+ colorItemAsId: true
5082
+ });
5083
+ datasets.push(newDataset);
5084
+ foldInfoList.push(foldInfo);
5085
+ unfoldInfoList.push(unfoldInfo);
5086
+ }
5087
+ const unfoldInfo = {
5088
+ ...unfoldInfoList[0],
5089
+ colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
5090
+ colorIdMap: unfoldInfoList.reduce((prev, cur)=>({
5091
+ ...prev,
5092
+ ...cur.colorIdMap
5093
+ }), {})
5094
+ };
5142
5095
  const reshapeInfo = {
5143
- id: groupId,
5096
+ id: `${chartType}-${index}`,
5144
5097
  index,
5145
- foldInfo,
5146
- unfoldInfo
5098
+ foldInfo: foldInfoList[0],
5099
+ foldInfoList: foldInfoList,
5100
+ unfoldInfo: unfoldInfo
5147
5101
  };
5148
- newDatasets.push(newSubDataset);
5149
5102
  datasetReshapeInfo.push(reshapeInfo);
5103
+ datasetList.push(datasets[0].map((d, index)=>({
5104
+ ...d,
5105
+ ...datasets[1]?.[index] || {}
5106
+ })));
5150
5107
  });
5151
5108
  return {
5152
5109
  ...result,
5153
- dataset: newDatasets,
5110
+ dataset: datasetList,
5154
5111
  datasetReshapeInfo: datasetReshapeInfo
5155
5112
  };
5156
5113
  };
5157
- const encodingAreaRange = (advancedVSeed)=>{
5158
- const result = {
5159
- ...advancedVSeed
5160
- };
5161
- const { datasetReshapeInfo, measures } = advancedVSeed;
5162
- if (!datasetReshapeInfo || !measures) return result;
5163
- const encoding = datasetReshapeInfo.reduce((prev, cur, index)=>{
5164
- const measure = measures[index];
5165
- if ('children' in measure) {
5166
- const m1 = measure.children?.[0];
5167
- const m2 = measure.children?.[1] || m1;
5168
- const { foldInfo, unfoldInfo } = cur;
5169
- const x = [
5170
- unfoldInfo.groupId
5171
- ];
5172
- const y = [
5173
- m1?.id,
5174
- m2?.id
5175
- ];
5176
- const group = [
5177
- unfoldInfo.groupId
5178
- ];
5179
- const color = [
5180
- foldInfo.measureName
5181
- ];
5182
- return [
5183
- ...prev,
5184
- {
5185
- x,
5186
- y,
5187
- group,
5188
- color
5189
- }
5190
- ];
5191
- }
5192
- {
5193
- const m1 = measures[index];
5194
- const m2 = measures[index + 1] || m1;
5195
- const { foldInfo, unfoldInfo } = cur;
5196
- const x = [
5197
- unfoldInfo.groupId
5198
- ];
5199
- const y = [
5200
- m1.id,
5201
- m2.id
5202
- ];
5203
- const group = [
5204
- unfoldInfo.groupId
5205
- ];
5206
- const color = [
5207
- foldInfo.measureName
5208
- ];
5209
- return [
5210
- ...prev,
5211
- {
5212
- x,
5213
- y,
5214
- group,
5215
- color
5216
- }
5217
- ];
5218
- }
5219
- }, []);
5220
- return {
5221
- ...result,
5222
- encoding
5223
- };
5224
- };
5225
- const areaRangeAdvancedPipeline = [
5114
+ const scatterAdvancedPipeline = [
5226
5115
  initAdvancedVSeed_initAdvancedVSeed,
5227
- autoMeasuresBy2M1Group,
5116
+ autoScatterMeasures,
5228
5117
  autoDimensions_autoDimensions,
5118
+ encodingForScatter,
5229
5119
  pivotAdapter([
5230
- reshapeTo1D
5120
+ reshapeWithScatterEncoding
5231
5121
  ], [
5232
- pivotReshapeTo1D
5122
+ pivotReshapeWithScatterEncoding
5233
5123
  ]),
5234
- encodingAreaRange,
5235
- sortXBandAxis,
5236
- areaConfig,
5124
+ scatterConfig,
5237
5125
  theme_theme,
5238
5126
  markStyle_markStyle,
5239
5127
  annotation_annotation
5240
5128
  ];
5241
- const series = (...args)=>{
5129
+ const initScatter = (spec, context)=>{
5242
5130
  const result = {
5243
- type: 'common',
5244
- padding: 0,
5245
- region: [
5246
- {
5247
- clip: true
5248
- }
5249
- ]
5131
+ ...spec
5250
5132
  };
5251
- return (_, context)=>{
5252
- result.series = args.map((pipeline)=>execPipeline(pipeline, context, {}));
5253
- return result;
5133
+ const { advancedVSeed } = context;
5134
+ const { datasetReshapeInfo } = advancedVSeed;
5135
+ const { unfoldInfo, foldInfoList } = datasetReshapeInfo[0];
5136
+ result.type = 'scatter';
5137
+ result.direction = 'vertical';
5138
+ result.xField = foldInfoList?.[0].measureValue;
5139
+ if (foldInfoList?.[1]) result.yField = foldInfoList[1].measureValue;
5140
+ result.seriesField = unfoldInfo.encodingColorId;
5141
+ result.padding = 0;
5142
+ result.region = [
5143
+ {
5144
+ clip: true
5145
+ }
5146
+ ];
5147
+ result.animation = true;
5148
+ return result;
5149
+ };
5150
+ const datasetScatter = (spec, context)=>{
5151
+ const { advancedVSeed, vseed } = context;
5152
+ const { datasetReshapeInfo } = advancedVSeed;
5153
+ const id = datasetReshapeInfo[0].id;
5154
+ const fields = {};
5155
+ return {
5156
+ ...spec,
5157
+ data: {
5158
+ id,
5159
+ values: isPivotChart(vseed) ? void 0 : advancedVSeed.dataset.flat(),
5160
+ fields: fields
5161
+ }
5254
5162
  };
5255
5163
  };
5256
- const seriesDualAxis = (...args)=>{
5164
+ const horizontalCrosshairLine = (spec, context)=>{
5257
5165
  const result = {
5258
- type: 'common',
5259
- padding: 0,
5260
- region: [
5261
- {
5262
- clip: true
5263
- }
5264
- ]
5265
- };
5266
- const createDualContext = (context, index)=>{
5267
- const { advancedVSeed } = context;
5268
- const dataset = advancedVSeed.dataset[index];
5269
- return {
5270
- ...context,
5271
- advancedVSeed: {
5272
- ...advancedVSeed,
5273
- dataset: dataset
5274
- }
5275
- };
5276
- };
5277
- return (_, context)=>{
5278
- result.series = args.map((pipeline, index)=>{
5279
- const seriesContext = createDualContext(context, index);
5280
- return execPipeline(pipeline, seriesContext, {});
5281
- });
5282
- return result;
5283
- };
5284
- };
5285
- const initAreaRange = (spec, context)=>{
5286
- const result = {
5287
- ...spec
5288
- };
5289
- const { advancedVSeed } = context;
5290
- const { encoding } = advancedVSeed;
5291
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
5292
- const { color } = advancedVSeed.config.areaRange;
5293
- result.type = 'rangeArea';
5294
- result.direction = 'vertical';
5295
- result.stack = false;
5296
- result.xField = encoding[0].x[0];
5297
- result.yField = [
5298
- encoding[0].y[0],
5299
- encoding[0].y[1]
5300
- ];
5301
- result.animation = true;
5302
- result.area = {
5303
- style: {
5304
- fill: color.colorScheme?.[0]
5305
- }
5306
- };
5307
- return result;
5308
- };
5309
- const initAreaRangeLine1 = (spec, context)=>{
5310
- const result = {
5311
- ...spec
5312
- };
5313
- const { advancedVSeed } = context;
5314
- const { encoding } = advancedVSeed;
5315
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
5316
- const { color } = advancedVSeed.config.areaRange;
5317
- result.type = 'line';
5318
- result.direction = 'vertical';
5319
- result.stack = false;
5320
- result.xField = encoding[0].x[0];
5321
- result.yField = [
5322
- encoding[0].y[0]
5323
- ];
5324
- result.animation = true;
5325
- result.line = {
5326
- style: {
5327
- stroke: color.colorScheme?.[0]
5328
- }
5329
- };
5330
- result.point = {
5331
- style: {
5332
- visible: false,
5333
- fill: color.colorScheme?.[0]
5334
- }
5335
- };
5336
- return result;
5337
- };
5338
- const initAreaRangeLine2 = (spec, context)=>{
5339
- const result = {
5340
- ...spec
5341
- };
5342
- const { advancedVSeed } = context;
5343
- const { encoding } = advancedVSeed;
5344
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
5345
- const { color } = advancedVSeed.config.areaRange;
5346
- result.type = 'line';
5347
- result.direction = 'vertical';
5348
- result.stack = false;
5349
- result.xField = encoding[0].x[0];
5350
- result.yField = [
5351
- encoding[0].y[1]
5352
- ];
5353
- result.animation = true;
5354
- result.line = {
5355
- style: {
5356
- stroke: color.colorScheme?.[0]
5357
- }
5358
- };
5359
- result.point = {
5360
- style: {
5361
- visible: false,
5362
- fill: color.colorScheme?.[0]
5363
- }
5364
- };
5365
- return result;
5366
- };
5367
- const tooltipDisable = (spec)=>{
5368
- const result = {
5369
- ...spec
5370
- };
5371
- result.tooltip = {
5372
- visible: false
5373
- };
5374
- return result;
5375
- };
5376
- const tooltipAreaRange = (spec, context)=>{
5377
- const result = {
5378
- ...spec
5379
- };
5380
- const { advancedVSeed } = context;
5381
- const { measures, datasetReshapeInfo, chartType, locale, encoding } = advancedVSeed;
5382
- const baseConfig = advancedVSeed.config[chartType];
5383
- const { tooltip = {
5384
- enable: true
5385
- } } = baseConfig;
5386
- const { enable } = tooltip;
5387
- const { groupName } = datasetReshapeInfo[0].unfoldInfo;
5388
- const y = encoding[0]?.y || [];
5389
- result.tooltip = {
5390
- visible: enable,
5391
- dimension: {
5392
- content: [
5393
- {
5394
- visible: true,
5395
- key: (datum)=>datum && datum[groupName] || '',
5396
- value: (datum)=>{
5397
- if (!datum) return '';
5398
- const text = y.map((id)=>{
5399
- const value = datum[id];
5400
- const measure = findMeasureById(measures, id);
5401
- if (!measure) return String(value);
5402
- const { format = {}, autoFormat = true } = measure;
5403
- if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
5404
- const formatter = createFormatter(format);
5405
- return formatter(value);
5406
- }
5407
- if (autoFormat) return autoFormatter(value, locale);
5408
- return String(value);
5409
- });
5410
- return text.join(' ~ ');
5411
- },
5412
- shapeType: 'rectRound'
5413
- },
5414
- ...y.map((id)=>{
5415
- const measure = findMeasureById(measures, id);
5416
- return {
5417
- visible: true,
5418
- key: measure?.alias || id,
5419
- value: (datum)=>{
5420
- if (!datum) return '';
5421
- const value = datum[id];
5422
- const measure = findMeasureById(measures, id);
5423
- if (!measure) return String(value);
5424
- const { format = {}, autoFormat = true } = measure;
5425
- if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
5426
- const formatter = createFormatter(format);
5427
- return formatter(value);
5428
- }
5429
- if (autoFormat) return autoFormatter(value, locale);
5430
- return String(value);
5431
- },
5432
- shapeType: 'rectRound'
5433
- };
5434
- })
5435
- ]
5436
- }
5437
- };
5438
- return result;
5439
- };
5440
- const areaRange = [
5441
- series([
5442
- initAreaRange,
5443
- areaStyle_areaStyle
5444
- ], [
5445
- initAreaRangeLine1,
5446
- lineStyle_lineStyle,
5447
- pointStyle_pointStyle,
5448
- pointStateDimensionHover,
5449
- tooltipDisable
5450
- ], [
5451
- initAreaRangeLine2,
5452
- lineStyle_lineStyle,
5453
- pointStyle_pointStyle,
5454
- pointStateDimensionHover,
5455
- tooltipDisable
5456
- ]),
5457
- datasetXY,
5458
- progressive,
5459
- background_backgroundColor,
5460
- xBand,
5461
- yLinear,
5462
- label_label,
5463
- tooltipAreaRange,
5464
- verticalCrosshairLine,
5465
- annotationPoint_annotationPoint,
5466
- annotationVerticalLine_annotationVerticalLine,
5467
- annotationHorizontalLine_annotationHorizontalLine,
5468
- annotationArea_annotationArea
5469
- ];
5470
- const pivotAreaRange = [
5471
- initPivot,
5472
- pivotGridStyle,
5473
- pivotIndicators_pivotIndicatorsAsRow,
5474
- datasetPivot,
5475
- pivotIndicators_pivotIndicators([
5476
- series([
5477
- initAreaRange,
5478
- areaStyle_areaStyle
5479
- ], [
5480
- initAreaRangeLine1,
5481
- lineStyle_lineStyle,
5482
- pointStyle_pointStyle,
5483
- pointStateDimensionHover,
5484
- tooltipDisable
5485
- ], [
5486
- initAreaRangeLine2,
5487
- lineStyle_lineStyle,
5488
- pointStyle_pointStyle,
5489
- pointStateDimensionHover,
5490
- tooltipDisable
5491
- ]),
5492
- background_backgroundColor,
5493
- datasetXY,
5494
- progressive,
5495
- xBand,
5496
- yLinear,
5497
- label_label,
5498
- tooltipAreaRange,
5499
- verticalCrosshairLine,
5500
- annotationPoint_annotationPoint,
5501
- annotationVerticalLine_annotationVerticalLine,
5502
- annotationHorizontalLine_annotationHorizontalLine,
5503
- annotationArea_annotationArea
5504
- ]),
5505
- pivotRowDimensions,
5506
- pivotColumnDimensions
5507
- ];
5508
- const areaRangeSpecPipeline = [
5509
- pivotAdapter_pivotAdapter(areaRange, pivotAreaRange)
5510
- ];
5511
- const registerAreaRange = ()=>{
5512
- Builder._advancedPipelineMap.areaRange = areaRangeAdvancedPipeline;
5513
- Builder._specPipelineMap.areaRange = areaRangeSpecPipeline;
5514
- };
5515
- const dataReshapeFor1D2M_emptyReshapeResult = {
5516
- dataset: [],
5517
- foldInfo: {
5518
- foldMap: {},
5519
- measureId: '',
5520
- measureName: '',
5521
- measureValue: ''
5522
- },
5523
- unfoldInfo: {
5524
- groupName: '',
5525
- groupId: '',
5526
- colorItems: [],
5527
- colorIdMap: {}
5528
- }
5529
- };
5530
- const dataReshapeFor1D2M = (dataset, dimensions, measures, options)=>{
5531
- const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, unfoldDimensionGroup = UnfoldDimensionGroup, unfoldDimensionGroupId = UnfoldDimensionGroupId } = options || {};
5532
- if (0 === dimensions.length && 0 === measures.length) return dataReshapeFor1D2M_emptyReshapeResult;
5533
- const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures.length > 1 ? measures.slice(1) : measures, foldMeasureId, foldMeasureName, foldMeasureValue);
5534
- if (0 === dimensions.length) {
5535
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
5536
- {
5537
- id: foldMeasureValue,
5538
- alias: i18n`指标值`,
5539
- location: 'dimension'
5540
- }
5541
- ], [
5542
- {
5543
- id: foldMeasureValue,
5544
- alias: i18n`指标值`
5545
- }
5546
- ], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
5547
- return {
5548
- dataset: finalDataset,
5549
- foldInfo,
5550
- unfoldInfo
5551
- };
5552
- }
5553
- {
5554
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
5555
- ...dimensions
5556
- ], [
5557
- {
5558
- id: foldMeasureValue,
5559
- alias: i18n`指标值`
5560
- }
5561
- ], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
5562
- return {
5563
- dataset: finalDataset,
5564
- foldInfo,
5565
- unfoldInfo
5566
- };
5567
- }
5568
- };
5569
- const reshapeTo1D2M = (advancedVSeed, context)=>{
5570
- const result = {
5571
- ...advancedVSeed
5572
- };
5573
- const { vseed } = context;
5574
- const { dataset } = vseed;
5575
- const { dimensions, measures } = advancedVSeed;
5576
- if (!measures || !dimensions || !dataset) return result;
5577
- if (0 === measures.length) throw new Error('measures can not be empty');
5578
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D2M(dataset, dimensions, measures);
5579
- return {
5580
- ...result,
5581
- dataset: newDatasets,
5582
- datasetReshapeInfo: [
5583
- {
5584
- id: '1D2M',
5585
- index: 0,
5586
- foldInfo,
5587
- unfoldInfo
5588
- }
5589
- ]
5590
- };
5591
- };
5592
- const pivotReshapeTo1D2M = (advancedVSeed, context)=>{
5593
- const result = {
5594
- ...advancedVSeed
5595
- };
5596
- const { vseed } = context;
5597
- const { dataset } = vseed;
5598
- const { measures } = advancedVSeed;
5599
- const dimensions = advancedVSeed.dimensions;
5600
- if (!measures || !dimensions) return result;
5601
- const measureGroups = [];
5602
- if (measures) measures.forEach((measure)=>{
5603
- if (measure.children && measure.children.length > 0) measureGroups.push(measure);
5604
- });
5605
- const newDatasets = [];
5606
- const datasetReshapeInfo = [];
5607
- measureGroups.forEach((measureGroup, index)=>{
5608
- const measures = measureGroup.children;
5609
- if (!measures) return;
5610
- const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
5611
- const groupId = measureGroup.id;
5612
- const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeFor1D2M(dataset, commonDimensions, measures, {
5613
- foldMeasureId: FoldMeasureId,
5614
- foldMeasureName: FoldMeasureName,
5615
- foldMeasureValue: FoldMeasureValue + groupId,
5616
- unfoldDimensionGroup: UnfoldDimensionGroup
5617
- });
5618
- const reshapeInfo = {
5619
- id: groupId,
5620
- index,
5621
- foldInfo,
5622
- unfoldInfo
5623
- };
5624
- newDatasets.push(newSubDataset);
5625
- datasetReshapeInfo.push(reshapeInfo);
5626
- });
5627
- return {
5628
- ...result,
5629
- dataset: newDatasets,
5630
- datasetReshapeInfo: datasetReshapeInfo
5631
- };
5632
- };
5633
- const encodingYY = (advancedVSeed)=>{
5634
- const result = {
5635
- ...advancedVSeed
5636
- };
5637
- const { datasetReshapeInfo, measures } = advancedVSeed;
5638
- if (!datasetReshapeInfo || !measures) return result;
5639
- const firstMeasure = findFirstMeasure(measures);
5640
- const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
5641
- const { foldInfo, unfoldInfo } = cur;
5642
- const x = [
5643
- firstMeasure?.id
5644
- ];
5645
- const y = [
5646
- foldInfo.measureValue
5647
- ];
5648
- const group = [
5649
- unfoldInfo.groupId
5650
- ];
5651
- const color = [
5652
- unfoldInfo.groupId
5653
- ];
5654
- return [
5655
- ...prev,
5656
- {
5657
- x,
5658
- y,
5659
- group,
5660
- color
5661
- }
5662
- ];
5663
- }, []);
5664
- return {
5665
- ...result,
5666
- encoding
5667
- };
5668
- };
5669
- const scatterAdvancedPipeline = [
5670
- initAdvancedVSeed_initAdvancedVSeed,
5671
- autoMeasures_autoMeasures,
5672
- autoDimensions_autoDimensions,
5673
- pivotAdapter([
5674
- reshapeTo1D2M
5675
- ], [
5676
- pivotReshapeTo1D2M
5677
- ]),
5678
- encodingYY,
5679
- scatterConfig,
5680
- theme_theme,
5681
- markStyle_markStyle,
5682
- annotation_annotation
5683
- ];
5684
- const initScatter = (spec, context)=>{
5685
- const result = {
5686
- ...spec
5687
- };
5688
- const { advancedVSeed } = context;
5689
- const { encoding } = advancedVSeed;
5690
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
5691
- result.type = 'scatter';
5692
- result.direction = 'vertical';
5693
- result.xField = encoding[0].x[0];
5694
- result.yField = encoding[0].y[0];
5695
- result.seriesField = encoding[0].group[0];
5696
- result.padding = 0;
5697
- result.region = [
5698
- {
5699
- clip: true
5700
- }
5701
- ];
5702
- result.animation = true;
5703
- return result;
5704
- };
5705
- const horizontalCrosshairLine = (spec, context)=>{
5706
- const result = {
5707
- ...spec
5166
+ ...spec
5708
5167
  };
5709
5168
  const { advancedVSeed, vseed } = context;
5710
5169
  const { chartType } = vseed;
@@ -5750,7 +5209,7 @@ const scatter = [
5750
5209
  initScatter,
5751
5210
  color_color,
5752
5211
  background_backgroundColor,
5753
- datasetXY,
5212
+ datasetScatter,
5754
5213
  progressive,
5755
5214
  xLinear,
5756
5215
  yLinear,
@@ -5775,7 +5234,7 @@ const pivotScatter = [
5775
5234
  initScatter,
5776
5235
  color_color,
5777
5236
  background_backgroundColor,
5778
- datasetXY,
5237
+ datasetScatter,
5779
5238
  progressive,
5780
5239
  xLinear,
5781
5240
  yLinear,
@@ -5801,41 +5260,163 @@ const registerScatter = ()=>{
5801
5260
  Builder._advancedPipelineMap.scatter = scatterAdvancedPipeline;
5802
5261
  Builder._specPipelineMap.scatter = scatterSpecPipeline;
5803
5262
  };
5804
- const reshapeTo2D2M = (advancedVSeed, context)=>{
5263
+ const autoDualMeasures = (advancedVSeed, context)=>{
5264
+ const result = {
5265
+ ...advancedVSeed
5266
+ };
5267
+ const { vseed } = context;
5268
+ const { dataset, dualMeasures, measures } = vseed;
5269
+ if (!dataset) throw new Error('dataset is required');
5270
+ if (0 === dataset.length) return result;
5271
+ if (dualMeasures) {
5272
+ result.measures = dualMeasuresToMeasureTree(dualMeasures);
5273
+ return result;
5274
+ }
5275
+ if (measures && measureDepth(measures) > 1) {
5276
+ result.measures = measures;
5277
+ return result;
5278
+ }
5279
+ const top100dataset = dataset.slice(0, 100);
5280
+ const sample = top100dataset.reduce((prev, cur)=>({
5281
+ ...prev,
5282
+ ...cur
5283
+ }), {});
5284
+ const newMeasures = measures || Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
5285
+ '',
5286
+ null,
5287
+ void 0
5288
+ ].includes(key)).map((measure)=>({
5289
+ id: measure,
5290
+ alias: measure
5291
+ }));
5292
+ if (0 === newMeasures.length) result.measures = [];
5293
+ else if (1 === newMeasures.length) result.measures = [
5294
+ {
5295
+ id: 'primary',
5296
+ alias: 'primary',
5297
+ children: newMeasures
5298
+ }
5299
+ ];
5300
+ else if (newMeasures.length > 1) result.measures = [
5301
+ {
5302
+ id: 'primary',
5303
+ alias: 'primary',
5304
+ children: newMeasures.slice(0, 1)
5305
+ },
5306
+ {
5307
+ id: 'secondary',
5308
+ alias: 'secondary',
5309
+ children: newMeasures.slice(1)
5310
+ }
5311
+ ];
5312
+ return result;
5313
+ };
5314
+ const dualMeasuresToMeasureTree = (dualMeasures)=>{
5315
+ const measureTree = dualMeasures.map((item, index)=>{
5316
+ const { primaryMeasures, secondaryMeasures } = item;
5317
+ const groupChildren = [];
5318
+ let id = '';
5319
+ if (primaryMeasures) {
5320
+ const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [
5321
+ primaryMeasures
5322
+ ];
5323
+ const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
5324
+ id += alias;
5325
+ groupChildren.push({
5326
+ id: `${index}-primary`,
5327
+ alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
5328
+ children: arrPrimaryMeasures
5329
+ });
5330
+ }
5331
+ if (secondaryMeasures) {
5332
+ const arrSecondaryMeasures = Array.isArray(secondaryMeasures) ? secondaryMeasures : [
5333
+ secondaryMeasures
5334
+ ];
5335
+ const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
5336
+ id += alias;
5337
+ groupChildren.push({
5338
+ id: `${index}-secondary`,
5339
+ alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
5340
+ children: arrSecondaryMeasures
5341
+ });
5342
+ }
5343
+ return {
5344
+ id,
5345
+ alias: id,
5346
+ children: groupChildren
5347
+ };
5348
+ });
5349
+ if (1 === dualMeasures.length) return measureTree[0].children || [];
5350
+ return measureTree;
5351
+ };
5352
+ const encodingForDualAxis = (advancedVSeed, context)=>{
5353
+ const { vseed } = context;
5354
+ const { dimensions } = advancedVSeed;
5355
+ if (!dimensions) return advancedVSeed;
5356
+ const encoding = vseed.encoding;
5357
+ if (encoding) {
5358
+ const x = encoding.x || [];
5359
+ const detail = encoding.detail || [];
5360
+ const color = encoding.color || [];
5361
+ const mergedDetail = [
5362
+ ...color.filter((d)=>!x.includes(d)),
5363
+ ...detail
5364
+ ];
5365
+ return {
5366
+ ...advancedVSeed,
5367
+ encoding: {
5368
+ ...encoding,
5369
+ detail: mergedDetail
5370
+ }
5371
+ };
5372
+ }
5373
+ const mergedEncoding = {
5374
+ x: dimensions.slice(0, 1).map((item)=>item.id),
5375
+ color: dimensions.slice(1).map((item)=>item.id),
5376
+ detail: dimensions.slice(1).map((item)=>item.id),
5377
+ tooltip: dimensions.map((item)=>item.id),
5378
+ label: [],
5379
+ row: [],
5380
+ column: []
5381
+ };
5382
+ return {
5383
+ ...advancedVSeed,
5384
+ encoding: mergedEncoding
5385
+ };
5386
+ };
5387
+ const reshapeWithDualEncoding = (advancedVSeed, context)=>{
5805
5388
  const result = {
5806
5389
  ...advancedVSeed
5807
5390
  };
5808
5391
  const { vseed } = context;
5809
5392
  const { dataset } = vseed;
5810
- const { dimensions, measures } = advancedVSeed;
5811
- if (!measures || !dimensions || !dataset) return result;
5393
+ const { dimensions, measures, encoding, chartType } = advancedVSeed;
5394
+ if (!measures || !dimensions || !dataset || !encoding) return result;
5812
5395
  if (0 === measures.length) throw new Error('measures can not be empty');
5813
5396
  if (measures.length > 2) throw new Error('measures can not be more than 2');
5814
- const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
5815
- const datasets = [];
5816
5397
  const foldInfoList = [];
5817
5398
  const unfoldInfoList = [];
5399
+ const datasets = [];
5818
5400
  const primaryMeasures = measures[0];
5819
5401
  const secondaryMeasures = measures[1] || [];
5820
5402
  if (primaryMeasures && primaryMeasures.children) {
5821
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, commonDimensions, primaryMeasures.children, {
5403
+ const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
5822
5404
  foldMeasureValue: FoldPrimaryMeasureValue
5823
5405
  });
5824
- datasets.push(newDatasets);
5406
+ datasets.push(newDataset);
5825
5407
  foldInfoList.push(foldInfo);
5826
5408
  unfoldInfoList.push(unfoldInfo);
5827
5409
  }
5828
5410
  if (secondaryMeasures && secondaryMeasures.children) {
5829
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, commonDimensions, secondaryMeasures.children, {
5411
+ const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding, {
5830
5412
  foldMeasureValue: FoldSecondaryMeasureValue
5831
5413
  });
5832
- datasets.push(newDatasets);
5414
+ datasets.push(newDataset);
5833
5415
  foldInfoList.push(foldInfo);
5834
5416
  unfoldInfoList.push(unfoldInfo);
5835
5417
  }
5836
5418
  const unfoldInfo = {
5837
- groupName: unfoldInfoList[0].groupName,
5838
- groupId: unfoldInfoList[0].groupId,
5419
+ ...unfoldInfoList[0],
5839
5420
  colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
5840
5421
  colorIdMap: unfoldInfoList.reduce((prev, cur)=>({
5841
5422
  ...prev,
@@ -5847,7 +5428,7 @@ const reshapeTo2D2M = (advancedVSeed, context)=>{
5847
5428
  dataset: datasets,
5848
5429
  datasetReshapeInfo: [
5849
5430
  {
5850
- id: '2D2M',
5431
+ id: String(chartType),
5851
5432
  index: 0,
5852
5433
  foldInfo: foldInfoList[0],
5853
5434
  foldInfoList: foldInfoList,
@@ -5856,46 +5437,48 @@ const reshapeTo2D2M = (advancedVSeed, context)=>{
5856
5437
  ]
5857
5438
  };
5858
5439
  };
5859
- const pivotReshapeTo2D2M = (advancedVSeed, context)=>{
5440
+ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
5860
5441
  const result = {
5861
5442
  ...advancedVSeed
5862
5443
  };
5863
5444
  const { vseed } = context;
5864
5445
  const { dataset } = vseed;
5865
- const { dimensions, measures } = advancedVSeed;
5866
- if (!measures || !dimensions || !dataset) return result;
5867
- const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
5446
+ const { dimensions, measures, encoding, chartType } = advancedVSeed;
5447
+ if (!measures || !dimensions || !dataset || !encoding) return result;
5868
5448
  const datasetList = [];
5869
5449
  const datasetReshapeInfo = [];
5870
- measures.forEach((measureGroup, index)=>{
5871
- const measures = measureGroup.children || [];
5450
+ const measureGroups = [];
5451
+ const depth = measureDepth(measures);
5452
+ if (3 === depth) measures.forEach((measure)=>{
5453
+ measureGroups.push(measure.children);
5454
+ });
5455
+ else if (2 === depth) measureGroups.push(measures);
5456
+ measureGroups.forEach((measures, index)=>{
5872
5457
  if (0 === measures.length) throw new Error('measures can not be empty');
5873
5458
  if (measures.length > 2) throw new Error('measures can not be more than 2');
5874
- const datasets = [];
5875
5459
  const foldInfoList = [];
5876
5460
  const unfoldInfoList = [];
5461
+ const datasets = [];
5877
5462
  const primaryMeasures = measures[0];
5878
- const secondaryMeasures = measures[1] || measures[0];
5463
+ const secondaryMeasures = measures[1] || [];
5879
5464
  if (primaryMeasures && primaryMeasures.children) {
5880
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, commonDimensions, primaryMeasures.children, {
5465
+ const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
5881
5466
  foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`
5882
5467
  });
5883
- datasets.push(newDatasets);
5468
+ datasets.push(newDataset);
5884
5469
  foldInfoList.push(foldInfo);
5885
5470
  unfoldInfoList.push(unfoldInfo);
5886
5471
  }
5887
5472
  if (secondaryMeasures && secondaryMeasures.children) {
5888
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, commonDimensions, secondaryMeasures.children, {
5473
+ const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding, {
5889
5474
  foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`
5890
5475
  });
5891
- datasets.push(newDatasets);
5476
+ datasets.push(newDataset);
5892
5477
  foldInfoList.push(foldInfo);
5893
5478
  unfoldInfoList.push(unfoldInfo);
5894
5479
  }
5895
- datasetList.push(datasets.flat(2));
5896
5480
  const unfoldInfo = {
5897
- groupName: unfoldInfoList[0].groupName,
5898
- groupId: unfoldInfoList[0].groupId,
5481
+ ...unfoldInfoList[0],
5899
5482
  colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
5900
5483
  colorIdMap: unfoldInfoList.reduce((prev, cur)=>({
5901
5484
  ...prev,
@@ -5903,53 +5486,19 @@ const pivotReshapeTo2D2M = (advancedVSeed, context)=>{
5903
5486
  }), {})
5904
5487
  };
5905
5488
  const reshapeInfo = {
5906
- id: `2D2M-${index}`,
5489
+ id: `${chartType}-${index}`,
5907
5490
  index,
5908
5491
  foldInfo: foldInfoList[0],
5909
- unfoldInfo: unfoldInfo,
5910
- foldInfoList: foldInfoList
5492
+ foldInfoList: foldInfoList,
5493
+ unfoldInfo: unfoldInfo
5911
5494
  };
5912
5495
  datasetReshapeInfo.push(reshapeInfo);
5496
+ datasetList.push(datasets.flat(2));
5913
5497
  });
5914
5498
  return {
5915
5499
  ...result,
5916
5500
  dataset: datasetList,
5917
- datasetReshapeInfo
5918
- };
5919
- };
5920
- const encodingXYY = (advancedVSeed)=>{
5921
- const result = {
5922
- ...advancedVSeed
5923
- };
5924
- const { datasetReshapeInfo, dimensions } = advancedVSeed;
5925
- if (!datasetReshapeInfo || !dimensions) return result;
5926
- const xDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
5927
- const isZeroDimension = 0 === dimensions.length;
5928
- const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
5929
- const { foldInfoList, unfoldInfo } = cur;
5930
- const x = [
5931
- isZeroDimension ? foldInfoList[0].measureName : xDimension?.id
5932
- ];
5933
- const y = foldInfoList.map((d)=>d.measureValue);
5934
- const group = [
5935
- unfoldInfo.groupId
5936
- ];
5937
- const color = [
5938
- foldInfoList[0].measureName
5939
- ];
5940
- return [
5941
- ...prev,
5942
- {
5943
- x,
5944
- y,
5945
- group,
5946
- color
5947
- }
5948
- ];
5949
- }, []);
5950
- return {
5951
- ...result,
5952
- encoding
5501
+ datasetReshapeInfo: datasetReshapeInfo
5953
5502
  };
5954
5503
  };
5955
5504
  const dualAxisConfig = (advancedVSeed, context)=>{
@@ -5978,125 +5527,80 @@ const dualAxisConfig = (advancedVSeed, context)=>{
5978
5527
  };
5979
5528
  return result;
5980
5529
  };
5981
- const autoDualMeasures = (advancedVSeed, context)=>{
5982
- const result = {
5983
- ...advancedVSeed
5984
- };
5985
- const { vseed } = context;
5986
- const { dataset, dualMeasures, measures } = vseed;
5987
- if (!dataset) throw new Error('dataset is required');
5988
- if (0 === dataset.length) return result;
5989
- if (dualMeasures) {
5990
- result.measures = dualMeasuresToMeasureTree(dualMeasures);
5991
- return result;
5992
- }
5993
- if (measures && measureDepth(measures) > 1) {
5994
- result.measures = measures;
5995
- return result;
5996
- }
5997
- const top100dataset = dataset.slice(0, 100);
5998
- const sample = top100dataset.reduce((prev, cur)=>({
5999
- ...prev,
6000
- ...cur
6001
- }), {});
6002
- const newMeasures = measures || Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
6003
- '',
6004
- null,
6005
- void 0
6006
- ].includes(key)).map((measure)=>({
6007
- id: measure,
6008
- alias: measure
6009
- }));
6010
- if (0 === newMeasures.length) result.measures = [];
6011
- else if (1 === newMeasures.length) result.measures = [
6012
- {
6013
- id: 'primary',
6014
- alias: 'primary',
6015
- children: newMeasures
6016
- }
6017
- ];
6018
- else if (newMeasures.length > 1) result.measures = [
6019
- {
6020
- id: 'primary',
6021
- alias: 'primary',
6022
- children: newMeasures.slice(0, 1)
6023
- },
6024
- {
6025
- id: 'secondary',
6026
- alias: 'secondary',
6027
- children: newMeasures.slice(1)
6028
- }
6029
- ];
6030
- return result;
6031
- };
6032
- const dualMeasuresToMeasureTree = (dualMeasures)=>{
6033
- const measureTree = dualMeasures.map((item, index)=>{
6034
- const { primaryMeasures, secondaryMeasures } = item;
6035
- const groupChildren = [];
6036
- let id = '';
6037
- if (primaryMeasures) {
6038
- const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [
6039
- primaryMeasures
6040
- ];
6041
- const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
6042
- id += alias;
6043
- groupChildren.push({
6044
- id: `${index}-primary`,
6045
- alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
6046
- children: arrPrimaryMeasures
6047
- });
6048
- }
6049
- if (secondaryMeasures) {
6050
- const arrSecondaryMeasures = Array.isArray(secondaryMeasures) ? secondaryMeasures : [
6051
- secondaryMeasures
6052
- ];
6053
- const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
6054
- id += alias;
6055
- groupChildren.push({
6056
- id: `${index}-secondary`,
6057
- alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
6058
- children: arrSecondaryMeasures
6059
- });
6060
- }
6061
- return {
6062
- id,
6063
- alias: id,
6064
- children: groupChildren
6065
- };
6066
- });
6067
- if (1 === dualMeasures.length) return measureTree[0].children || [];
6068
- return measureTree;
6069
- };
6070
5530
  const dualAxisAdvancedPipeline = [
6071
5531
  initAdvancedVSeed_initAdvancedVSeed,
6072
5532
  autoDualMeasures,
6073
5533
  autoDimensions_autoDimensions,
5534
+ encodingForDualAxis,
6074
5535
  pivotAdapter([
6075
- reshapeTo2D2M
5536
+ reshapeWithDualEncoding
6076
5537
  ], [
6077
- pivotReshapeTo2D2M
5538
+ pivotReshapeWithDualEncoding
6078
5539
  ]),
6079
- encodingXYY,
6080
5540
  sortXBandAxis,
6081
- sort_sortLegend,
5541
+ sortLegend_sortLegend,
6082
5542
  dualAxisConfig,
6083
5543
  theme_theme,
6084
5544
  markStyle_markStyle,
6085
5545
  annotation_annotation
6086
5546
  ];
5547
+ const series = (...args)=>{
5548
+ const result = {
5549
+ type: 'common',
5550
+ padding: 0,
5551
+ region: [
5552
+ {
5553
+ clip: true
5554
+ }
5555
+ ]
5556
+ };
5557
+ return (_, context)=>{
5558
+ result.series = args.map((pipeline)=>execPipeline(pipeline, context, {}));
5559
+ return result;
5560
+ };
5561
+ };
5562
+ const seriesDualAxis = (...args)=>{
5563
+ const result = {
5564
+ type: 'common',
5565
+ padding: 0,
5566
+ region: [
5567
+ {
5568
+ clip: true
5569
+ }
5570
+ ]
5571
+ };
5572
+ const createDualContext = (context, index)=>{
5573
+ const { advancedVSeed } = context;
5574
+ const dataset = advancedVSeed.dataset[index];
5575
+ return {
5576
+ ...context,
5577
+ advancedVSeed: {
5578
+ ...advancedVSeed,
5579
+ dataset: dataset
5580
+ }
5581
+ };
5582
+ };
5583
+ return (_, context)=>{
5584
+ result.series = args.map((pipeline, index)=>{
5585
+ const seriesContext = createDualContext(context, index);
5586
+ return execPipeline(pipeline, seriesContext, {});
5587
+ });
5588
+ return result;
5589
+ };
5590
+ };
6087
5591
  const initDualAxisPrimary = (spec, context)=>{
6088
5592
  const result = {
6089
5593
  ...spec
6090
5594
  };
6091
5595
  const { advancedVSeed } = context;
6092
- const { encoding, datasetReshapeInfo } = advancedVSeed;
6093
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
6094
- result.id = `${datasetReshapeInfo[0].id}-primary-series`;
5596
+ const { datasetReshapeInfo } = advancedVSeed;
5597
+ const { unfoldInfo, foldInfoList, id } = datasetReshapeInfo[0];
5598
+ result.id = `${id}-primary-series`;
6095
5599
  result.type = 'bar';
6096
5600
  result.direction = 'vertical';
6097
- result.xField = encoding[0].x[0];
6098
- result.yField = encoding[0].y[0];
6099
- result.seriesField = encoding[0].group[0];
5601
+ result.xField = unfoldInfo.encodingX;
5602
+ result.seriesField = unfoldInfo.encodingColorId;
5603
+ result.yField = foldInfoList?.[0].measureValue;
6100
5604
  result.animation = true;
6101
5605
  return result;
6102
5606
  };
@@ -6105,14 +5609,14 @@ const initDualAxisSecondary = (spec, context)=>{
6105
5609
  ...spec
6106
5610
  };
6107
5611
  const { advancedVSeed } = context;
6108
- const { encoding, datasetReshapeInfo } = advancedVSeed;
6109
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
6110
- result.id = `${datasetReshapeInfo[0].id}-secondary-series`;
5612
+ const { datasetReshapeInfo } = advancedVSeed;
5613
+ const { unfoldInfo, foldInfoList, id } = datasetReshapeInfo[0];
5614
+ result.id = `${id}-secondary-series`;
6111
5615
  result.type = 'line';
6112
5616
  result.direction = 'vertical';
6113
- result.xField = encoding[0].x[0];
6114
- result.yField = encoding[0].y[1];
6115
- result.seriesField = encoding[0].group[0];
5617
+ result.xField = unfoldInfo.encodingX;
5618
+ if (foldInfoList?.[1]) result.yField = foldInfoList[1].measureValue;
5619
+ result.seriesField = unfoldInfo.encodingColorId;
6116
5620
  result.animation = true;
6117
5621
  return result;
6118
5622
  };
@@ -6144,10 +5648,10 @@ const dualChartTypePrimary = (spec, context)=>{
6144
5648
  case 'columnParallel':
6145
5649
  {
6146
5650
  const columnSpec = result;
6147
- if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.groupId);
5651
+ if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.encodingDetail);
6148
5652
  else if (columnSpec.xField) columnSpec.xField = [
6149
5653
  columnSpec.xField,
6150
- datasetReshapeInfo[0].unfoldInfo.groupId
5654
+ datasetReshapeInfo[0].unfoldInfo.encodingDetail
6151
5655
  ];
6152
5656
  columnSpec.type = 'bar';
6153
5657
  result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX;
@@ -6200,10 +5704,10 @@ const dualChartTypeSecondary = (spec, context)=>{
6200
5704
  case 'columnParallel':
6201
5705
  {
6202
5706
  const columnSpec = result;
6203
- if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.groupId);
5707
+ if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.encodingDetail);
6204
5708
  else if (columnSpec.xField) columnSpec.xField = [
6205
5709
  columnSpec.xField,
6206
- datasetReshapeInfo[0].unfoldInfo.groupId
5710
+ datasetReshapeInfo[0].unfoldInfo.encodingDetail
6207
5711
  ];
6208
5712
  columnSpec.type = 'bar';
6209
5713
  result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX;
@@ -6230,10 +5734,11 @@ const dualChartTypeSecondary = (spec, context)=>{
6230
5734
  };
6231
5735
  const datasetPrimary = (spec, context)=>{
6232
5736
  const { advancedVSeed, vseed } = context;
6233
- const { encoding, analysis, datasetReshapeInfo } = advancedVSeed;
5737
+ const { analysis, datasetReshapeInfo } = advancedVSeed;
6234
5738
  const orderMapping = analysis?.orderMapping || {};
6235
- const x = encoding[0]?.x?.[0];
6236
- const group = encoding[0]?.group?.[0];
5739
+ const { unfoldInfo } = datasetReshapeInfo[0];
5740
+ const x = unfoldInfo.encodingX;
5741
+ const colorId = unfoldInfo.encodingColorId;
6237
5742
  const id = datasetReshapeInfo[0].id;
6238
5743
  const fields = {};
6239
5744
  if (x) {
@@ -6247,14 +5752,14 @@ const datasetPrimary = (spec, context)=>{
6247
5752
  sortIndex: 0
6248
5753
  };
6249
5754
  }
6250
- if (group) {
6251
- const order = orderMapping[group];
6252
- if (order) fields[group] = {
5755
+ if (colorId) {
5756
+ const order = orderMapping[colorId];
5757
+ if (order) fields[colorId] = {
6253
5758
  sortIndex: 0,
6254
5759
  domain: order,
6255
5760
  lockStatisticsByDomain: true
6256
5761
  };
6257
- else fields[group] = {
5762
+ else fields[colorId] = {
6258
5763
  sortIndex: 0
6259
5764
  };
6260
5765
  }
@@ -6269,10 +5774,11 @@ const datasetPrimary = (spec, context)=>{
6269
5774
  };
6270
5775
  const datasetSecondary = (spec, context)=>{
6271
5776
  const { advancedVSeed, vseed } = context;
6272
- const { encoding, analysis, datasetReshapeInfo } = advancedVSeed;
5777
+ const { analysis, datasetReshapeInfo } = advancedVSeed;
6273
5778
  const orderMapping = analysis?.orderMapping || {};
6274
- const x = encoding[0]?.x?.[0];
6275
- const group = encoding[0]?.group?.[0];
5779
+ const { unfoldInfo } = datasetReshapeInfo[0];
5780
+ const x = unfoldInfo.encodingX;
5781
+ const colorId = unfoldInfo.encodingColorId;
6276
5782
  const id = datasetReshapeInfo[0].id;
6277
5783
  const fields = {};
6278
5784
  if (x) {
@@ -6286,14 +5792,14 @@ const datasetSecondary = (spec, context)=>{
6286
5792
  sortIndex: 0
6287
5793
  };
6288
5794
  }
6289
- if (group) {
6290
- const order = orderMapping[group];
6291
- if (order) fields[group] = {
5795
+ if (colorId) {
5796
+ const order = orderMapping[colorId];
5797
+ if (order) fields[colorId] = {
6292
5798
  sortIndex: 0,
6293
5799
  domain: order,
6294
5800
  lockStatisticsByDomain: true
6295
5801
  };
6296
- else fields[group] = {
5802
+ else fields[colorId] = {
6297
5803
  sortIndex: 0
6298
5804
  };
6299
5805
  }
@@ -6391,7 +5897,7 @@ const tooltipPrimary = (spec, context)=>{
6391
5897
  const foldInfoList = datasetReshapeInfo[0].foldInfoList;
6392
5898
  const unfoldInfo = datasetReshapeInfo[0].unfoldInfo;
6393
5899
  const { measureId, measureValue, measureName } = foldInfoList[0];
6394
- const { groupName } = unfoldInfo;
5900
+ const { encodingColor: colorName } = unfoldInfo;
6395
5901
  result.tooltip = {
6396
5902
  visible: enable,
6397
5903
  mark: {
@@ -6412,7 +5918,7 @@ const tooltipPrimary = (spec, context)=>{
6412
5918
  {
6413
5919
  visible: true,
6414
5920
  hasShape: true,
6415
- key: (datum)=>datum && datum[measureName || groupName] || '',
5921
+ key: (datum)=>datum && datum[measureName || colorName] || '',
6416
5922
  value: (datum)=>{
6417
5923
  if (!datum) return '';
6418
5924
  const value = datum[measureValue];
@@ -6434,7 +5940,7 @@ const tooltipPrimary = (spec, context)=>{
6434
5940
  content: [
6435
5941
  {
6436
5942
  visible: true,
6437
- key: (datum)=>datum && datum[groupName] || '',
5943
+ key: (datum)=>datum && datum[colorName] || '',
6438
5944
  value: (datum)=>{
6439
5945
  if (!datum) return '';
6440
5946
  const value = datum[measureValue];
@@ -6471,7 +5977,7 @@ const tooltipSecondary = (spec, context)=>{
6471
5977
  const foldInfoList = datasetReshapeInfo[0].foldInfoList;
6472
5978
  const unfoldInfo = datasetReshapeInfo[0].unfoldInfo;
6473
5979
  const { measureId, measureValue, measureName } = foldInfoList[1];
6474
- const { groupName } = unfoldInfo;
5980
+ const { encodingColorId } = unfoldInfo;
6475
5981
  result.tooltip = {
6476
5982
  visible: enable,
6477
5983
  mark: {
@@ -6492,7 +5998,7 @@ const tooltipSecondary = (spec, context)=>{
6492
5998
  {
6493
5999
  visible: true,
6494
6000
  hasShape: true,
6495
- key: (datum)=>datum && datum[measureName || groupName] || '',
6001
+ key: (datum)=>datum && datum[measureName || encodingColorId] || '',
6496
6002
  value: (datum)=>{
6497
6003
  if (!datum) return '';
6498
6004
  const value = datum[measureValue];
@@ -6514,7 +6020,7 @@ const tooltipSecondary = (spec, context)=>{
6514
6020
  content: [
6515
6021
  {
6516
6022
  visible: true,
6517
- key: (datum)=>datum && datum[groupName] || '',
6023
+ key: (datum)=>datum && datum[encodingColorId] || '',
6518
6024
  value: (datum)=>{
6519
6025
  if (!datum) return '';
6520
6026
  const value = datum[measureValue];
@@ -6543,16 +6049,16 @@ const yLinearPrimary = (spec, context)=>{
6543
6049
  const { advancedVSeed, vseed } = context;
6544
6050
  const { chartType } = vseed;
6545
6051
  const { locale, datasetReshapeInfo } = advancedVSeed;
6546
- const index = datasetReshapeInfo[0].index;
6052
+ const { index, id: reshapeInfoId, foldInfoList } = datasetReshapeInfo[0];
6547
6053
  const primaryYAxis = advancedVSeed.config?.[chartType]?.primaryYAxis;
6548
6054
  const yAxisConfig = Array.isArray(primaryYAxis) ? primaryYAxis[index] || primaryYAxis[0] : primaryYAxis;
6549
6055
  const alignTicks = advancedVSeed.config?.[chartType]?.alignTicks;
6550
6056
  const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks;
6551
- if (datasetReshapeInfo[0].foldInfoList?.[0] && (0, external_remeda_namespaceObject.isEmpty)(datasetReshapeInfo[0].foldInfoList[0].foldMap)) return result;
6552
- const id = `${datasetReshapeInfo[0].id}-primary-axis`;
6057
+ if (foldInfoList?.[0] && (0, external_remeda_namespaceObject.isEmpty)(foldInfoList[0].foldMap)) return result;
6058
+ const id = `${reshapeInfoId}-primary-axis`;
6553
6059
  const seriesIds = [
6554
- `${datasetReshapeInfo[0].id}-primary-series`,
6555
- `${datasetReshapeInfo[0].id}-secondary-series`
6060
+ `${reshapeInfoId}-primary-series`,
6061
+ `${reshapeInfoId}-secondary-series`
6556
6062
  ];
6557
6063
  const seriesId = alignTicksConfig ? seriesIds : seriesIds[0];
6558
6064
  if (!result.axes) result.axes = [];
@@ -6640,20 +6146,20 @@ const yLinearSecondary = (spec, context)=>{
6640
6146
  const { advancedVSeed, vseed } = context;
6641
6147
  const { chartType } = vseed;
6642
6148
  const { locale, datasetReshapeInfo } = advancedVSeed;
6643
- const index = datasetReshapeInfo[0].index;
6149
+ const { index, id: reshapeInfoId, foldInfoList } = datasetReshapeInfo[0];
6644
6150
  const secondaryYAxis = advancedVSeed.config?.[chartType]?.secondaryYAxis;
6645
6151
  const yAxisConfig = Array.isArray(secondaryYAxis) ? secondaryYAxis[index] || secondaryYAxis[0] : secondaryYAxis;
6646
6152
  const alignTicks = advancedVSeed.config?.[chartType]?.alignTicks;
6647
6153
  const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks;
6648
- if ((0, external_remeda_namespaceObject.isNullish)(datasetReshapeInfo[0].foldInfoList?.[1])) return result;
6154
+ if ((0, external_remeda_namespaceObject.isNullish)(foldInfoList?.[1])) return result;
6649
6155
  const sync = {
6650
- axisId: `${datasetReshapeInfo[0].id}-primary-axis`,
6156
+ axisId: `${reshapeInfoId}-primary-axis`,
6651
6157
  zeroAlign: true
6652
6158
  };
6653
- const id = `${datasetReshapeInfo[0].id}-secondary-axis`;
6159
+ const id = `${reshapeInfoId}-secondary-axis`;
6654
6160
  const seriesIds = [
6655
- `${datasetReshapeInfo[0].id}-primary-series`,
6656
- `${datasetReshapeInfo[0].id}-secondary-series`
6161
+ `${reshapeInfoId}-primary-series`,
6162
+ `${reshapeInfoId}-secondary-series`
6657
6163
  ];
6658
6164
  const seriesId = alignTicksConfig ? seriesIds : seriesIds[1];
6659
6165
  if (!result.axes) result.axes = [];
@@ -6794,210 +6300,74 @@ const pivotDualAxis = [
6794
6300
  areaStyle_areaStyle
6795
6301
  ], [
6796
6302
  initDualAxisSecondary,
6797
- dualChartTypeSecondary,
6798
- datasetSecondary,
6799
- labelSecondary,
6800
- tooltipSecondary,
6801
- progressive,
6802
- barStyle_barStyle,
6803
- pointStyle_pointStyle,
6804
- pointStateDimensionHover,
6805
- lineStyle_lineStyle,
6806
- areaStyle_areaStyle
6807
- ]),
6808
- xBand,
6809
- yLinearPrimary,
6810
- yLinearSecondary,
6811
- color_color,
6812
- background_backgroundColor,
6813
- verticalCrosshairRect,
6814
- annotationPoint_annotationPoint,
6815
- annotationVerticalLine_annotationVerticalLine,
6816
- annotationHorizontalLine_annotationHorizontalLine,
6817
- annotationArea_annotationArea
6818
- ]),
6819
- pivotRowDimensions,
6820
- pivotColumnDimensions,
6821
- pivotDiscreteLegend
6822
- ];
6823
- const dualAxisSpecPipeline = [
6824
- pivotAdapter_pivotAdapter(dualAxis, pivotDualAxis)
6825
- ];
6826
- const registerDualAxis = ()=>{
6827
- Builder._advancedPipelineMap.dualAxis = dualAxisAdvancedPipeline;
6828
- Builder._specPipelineMap.dualAxis = dualAxisSpecPipeline;
6829
- };
6830
- const dataReshapeFor1D1M_emptyReshapeResult = {
6831
- dataset: [],
6832
- foldInfo: {
6833
- foldMap: {},
6834
- measureId: '',
6835
- measureName: '',
6836
- measureValue: ''
6837
- },
6838
- unfoldInfo: {
6839
- groupName: '',
6840
- groupId: '',
6841
- colorItems: [],
6842
- colorIdMap: {}
6843
- }
6844
- };
6845
- const dataReshapeFor1D1M = (dataset, dimensions, measures, options)=>{
6846
- const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, unfoldDimensionGroup = UnfoldDimensionGroup, unfoldDimensionGroupId = UnfoldDimensionGroupId } = options || {};
6847
- if (0 === dimensions.length && 0 === measures.length) return dataReshapeFor1D1M_emptyReshapeResult;
6848
- const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, foldMeasureId, foldMeasureName, foldMeasureValue);
6849
- if (0 === dimensions.length) {
6850
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
6851
- {
6852
- id: foldMeasureName,
6853
- alias: i18n`指标名称`,
6854
- location: 'dimension'
6855
- }
6856
- ], [
6857
- {
6858
- id: foldMeasureValue,
6859
- alias: i18n`指标值`
6860
- }
6861
- ], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
6862
- return {
6863
- dataset: finalDataset,
6864
- foldInfo,
6865
- unfoldInfo
6866
- };
6867
- }
6868
- {
6869
- const dims = 1 === measures.length ? [
6870
- ...dimensions
6871
- ] : [
6872
- ...dimensions,
6873
- {
6874
- id: foldMeasureName,
6875
- alias: i18n`指标名称`,
6876
- location: 'dimension'
6877
- }
6878
- ];
6879
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dims, [
6880
- {
6881
- id: foldMeasureValue,
6882
- alias: i18n`指标值`
6883
- }
6884
- ], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
6885
- return {
6886
- dataset: finalDataset,
6887
- foldInfo,
6888
- unfoldInfo
6889
- };
6890
- }
6891
- };
6892
- const reshapeTo1D1M = (advancedVSeed, context)=>{
6893
- const result = {
6894
- ...advancedVSeed
6895
- };
6896
- const { vseed } = context;
6897
- const { dataset } = vseed;
6898
- const { dimensions, measures } = advancedVSeed;
6899
- if (!measures || !dimensions || !dataset) return result;
6900
- if (0 === measures.length) throw new Error('measures can not be empty');
6901
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D1M(dataset, dimensions, measures);
6902
- return {
6903
- ...result,
6904
- dataset: newDatasets,
6905
- datasetReshapeInfo: [
6906
- {
6907
- id: '1D1M',
6908
- index: 0,
6909
- foldInfo,
6910
- unfoldInfo
6911
- }
6912
- ]
6913
- };
6303
+ dualChartTypeSecondary,
6304
+ datasetSecondary,
6305
+ labelSecondary,
6306
+ tooltipSecondary,
6307
+ progressive,
6308
+ barStyle_barStyle,
6309
+ pointStyle_pointStyle,
6310
+ pointStateDimensionHover,
6311
+ lineStyle_lineStyle,
6312
+ areaStyle_areaStyle
6313
+ ]),
6314
+ xBand,
6315
+ yLinearPrimary,
6316
+ yLinearSecondary,
6317
+ color_color,
6318
+ background_backgroundColor,
6319
+ verticalCrosshairRect,
6320
+ annotationPoint_annotationPoint,
6321
+ annotationVerticalLine_annotationVerticalLine,
6322
+ annotationHorizontalLine_annotationHorizontalLine,
6323
+ annotationArea_annotationArea
6324
+ ]),
6325
+ pivotRowDimensions,
6326
+ pivotColumnDimensions,
6327
+ pivotDiscreteLegend
6328
+ ];
6329
+ const dualAxisSpecPipeline = [
6330
+ pivotAdapter_pivotAdapter(dualAxis, pivotDualAxis)
6331
+ ];
6332
+ const registerDualAxis = ()=>{
6333
+ Builder._advancedPipelineMap.dualAxis = dualAxisAdvancedPipeline;
6334
+ Builder._specPipelineMap.dualAxis = dualAxisSpecPipeline;
6914
6335
  };
6915
- const pivotReshapeTo1D1M = (advancedVSeed, context)=>{
6916
- const result = {
6917
- ...advancedVSeed
6918
- };
6336
+ const encodingForPie = (advancedVSeed, context)=>{
6919
6337
  const { vseed } = context;
6920
- const { dataset } = vseed;
6921
- const { measures } = advancedVSeed;
6922
- const dimensions = advancedVSeed.dimensions;
6923
- if (!measures || !dimensions) return result;
6924
- const measureGroups = [];
6925
- if (measures) measures.forEach((measure)=>{
6926
- if (measure.children && measure.children.length > 0) measureGroups.push(measure);
6927
- });
6928
- const newDatasets = [];
6929
- const datasetReshapeInfo = [];
6930
- measureGroups.forEach((measureGroup, index)=>{
6931
- const measures = measureGroup.children;
6932
- if (!measures) return;
6933
- const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
6934
- const groupId = measureGroup.id;
6935
- const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeFor1D1M(dataset, commonDimensions, measures, {
6936
- foldMeasureId: FoldMeasureId,
6937
- foldMeasureName: FoldMeasureName,
6938
- foldMeasureValue: FoldMeasureValue + groupId,
6939
- unfoldDimensionGroup: UnfoldDimensionGroup
6940
- });
6941
- const reshapeInfo = {
6942
- id: groupId,
6943
- index,
6944
- foldInfo,
6945
- unfoldInfo
6946
- };
6947
- newDatasets.push(newSubDataset);
6948
- datasetReshapeInfo.push(reshapeInfo);
6949
- });
6950
- return {
6951
- ...result,
6952
- dataset: newDatasets,
6953
- datasetReshapeInfo: datasetReshapeInfo
6338
+ const { dimensions } = advancedVSeed;
6339
+ if (!dimensions) return advancedVSeed;
6340
+ const encoding = vseed.encoding;
6341
+ if (encoding) return {
6342
+ ...advancedVSeed,
6343
+ encoding: {
6344
+ ...encoding
6345
+ }
6954
6346
  };
6955
- };
6956
- const encodingPie = (advancedVSeed)=>{
6957
- const result = {
6958
- ...advancedVSeed
6347
+ const mergedEncoding = {
6348
+ angle: dimensions.slice(0, 1).map((item)=>item.id),
6349
+ color: dimensions.slice(0).map((item)=>item.id),
6350
+ detail: dimensions.slice(0).map((item)=>item.id),
6351
+ tooltip: dimensions.map((item)=>item.id),
6352
+ label: [],
6353
+ row: [],
6354
+ column: []
6959
6355
  };
6960
- const { datasetReshapeInfo } = advancedVSeed;
6961
- if (!datasetReshapeInfo) return result;
6962
- const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
6963
- const { foldInfo, unfoldInfo } = cur;
6964
- const radius = [
6965
- foldInfo.measureValue
6966
- ];
6967
- const angle = [
6968
- unfoldInfo.groupId
6969
- ];
6970
- const group = [
6971
- unfoldInfo.groupId
6972
- ];
6973
- const color = [
6974
- unfoldInfo.groupId
6975
- ];
6976
- return [
6977
- ...prev,
6978
- {
6979
- angle,
6980
- radius,
6981
- group,
6982
- color
6983
- }
6984
- ];
6985
- }, []);
6986
6356
  return {
6987
- ...result,
6988
- encoding
6357
+ ...advancedVSeed,
6358
+ encoding: mergedEncoding
6989
6359
  };
6990
6360
  };
6991
6361
  const pieAdvancedPipeline = [
6992
6362
  initAdvancedVSeed_initAdvancedVSeed,
6993
6363
  autoMeasures_autoMeasures,
6994
6364
  autoDimensions_autoDimensions,
6365
+ encodingForPie,
6995
6366
  pivotAdapter([
6996
- reshapeTo1D1M
6367
+ reshapeWithEncoding
6997
6368
  ], [
6998
- pivotReshapeTo1D1M
6369
+ pivotReshapeWithEncoding
6999
6370
  ]),
7000
- encodingPie,
7001
6371
  pieConfig,
7002
6372
  theme_theme,
7003
6373
  annotation_annotation
@@ -7007,15 +6377,15 @@ const initPie = (spec, context)=>{
7007
6377
  ...spec
7008
6378
  };
7009
6379
  const { advancedVSeed } = context;
7010
- const { encoding, dataset } = advancedVSeed;
7011
- if (!encoding[0].angle || !encoding[0].radius || !encoding[0].group) return result;
6380
+ const { datasetReshapeInfo, dataset } = advancedVSeed;
6381
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
7012
6382
  const showStroke = dataset.length <= 30;
7013
6383
  result.type = 'pie';
7014
6384
  result.outerRadius = 0.8;
7015
6385
  result.innerRadius = 0;
7016
- result.valueField = encoding[0].radius[0];
7017
- result.categoryField = encoding[0].angle[0];
7018
- result.seriesField = encoding[0].group[0];
6386
+ result.valueField = foldInfo.measureValue;
6387
+ result.categoryField = unfoldInfo.encodingAngle;
6388
+ result.seriesField = unfoldInfo.encodingColorId;
7019
6389
  result.padding = 0;
7020
6390
  result.region = [
7021
6391
  {
@@ -7084,12 +6454,12 @@ const donutAdvancedPipeline = [
7084
6454
  initAdvancedVSeed_initAdvancedVSeed,
7085
6455
  autoMeasures_autoMeasures,
7086
6456
  autoDimensions_autoDimensions,
6457
+ encodingForPie,
7087
6458
  pivotAdapter([
7088
- reshapeTo1D1M
6459
+ reshapeWithEncoding
7089
6460
  ], [
7090
- pivotReshapeTo1D1M
6461
+ pivotReshapeWithEncoding
7091
6462
  ]),
7092
- encodingPie,
7093
6463
  donutConfig,
7094
6464
  theme_theme,
7095
6465
  annotation_annotation
@@ -7099,15 +6469,15 @@ const initDonut = (spec, context)=>{
7099
6469
  ...spec
7100
6470
  };
7101
6471
  const { advancedVSeed } = context;
7102
- const { encoding, dataset } = advancedVSeed;
7103
- if (!encoding[0].angle || !encoding[0].radius || !encoding[0].group) return result;
6472
+ const { datasetReshapeInfo, dataset } = advancedVSeed;
6473
+ const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
7104
6474
  const showStroke = dataset.length <= 30;
7105
6475
  result.type = 'pie';
7106
6476
  result.outerRadius = 0.8;
7107
6477
  result.innerRadius = 0.8 * result.outerRadius;
7108
- result.valueField = encoding[0].radius[0];
7109
- result.categoryField = encoding[0].angle[0];
7110
- result.seriesField = encoding[0].group[0];
6478
+ result.valueField = foldInfo.measureValue;
6479
+ result.categoryField = unfoldInfo.encodingDetail;
6480
+ result.seriesField = unfoldInfo.encodingColorId;
7111
6481
  result.padding = 0;
7112
6482
  result.region = [
7113
6483
  {
@@ -7171,54 +6541,52 @@ const registerDonut = ()=>{
7171
6541
  Builder._advancedPipelineMap.donut = donutAdvancedPipeline;
7172
6542
  Builder._specPipelineMap.donut = donutSpecPipeline;
7173
6543
  };
7174
- const encodingRose = (advancedVSeed)=>{
7175
- const result = {
7176
- ...advancedVSeed
7177
- };
7178
- const { datasetReshapeInfo, dimensions, measures } = advancedVSeed;
7179
- if (!datasetReshapeInfo || !dimensions || !measures) return result;
7180
- const angleDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
7181
- const is1D1M = 1 === dimensions.length && 1 === measures.length;
7182
- const isZeroDimension = 0 === dimensions.length;
7183
- const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
7184
- const { foldInfo, unfoldInfo } = cur;
7185
- const radius = [
7186
- foldInfo.measureValue
7187
- ];
7188
- const angle = [
7189
- isZeroDimension ? foldInfo.measureName : angleDimension?.id
7190
- ];
7191
- const group = [
7192
- is1D1M ? angleDimension?.id : unfoldInfo.groupId
7193
- ];
7194
- const color = [
7195
- is1D1M ? angleDimension?.id : unfoldInfo.groupId
6544
+ const encodingForRose = (advancedVSeed, context)=>{
6545
+ const { vseed } = context;
6546
+ const { dimensions } = advancedVSeed;
6547
+ if (!dimensions) return advancedVSeed;
6548
+ const encoding = vseed.encoding;
6549
+ if (encoding) {
6550
+ const angle = encoding.angle || [];
6551
+ const detail = encoding.detail || [];
6552
+ const color = encoding.color || [];
6553
+ const mergedDetail = [
6554
+ ...color.filter((d)=>!angle.includes(d)),
6555
+ ...detail
7196
6556
  ];
7197
- return [
7198
- ...prev,
7199
- {
7200
- angle,
7201
- radius,
7202
- group,
7203
- color
6557
+ return {
6558
+ ...advancedVSeed,
6559
+ encoding: {
6560
+ ...encoding,
6561
+ detail: mergedDetail
7204
6562
  }
7205
- ];
7206
- }, []);
6563
+ };
6564
+ }
6565
+ const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
6566
+ const mergedEncoding = {
6567
+ angle: dimensions.slice(0, 1).map((item)=>item.id),
6568
+ color: dimensions.slice(1).map((item)=>item.id),
6569
+ detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
6570
+ tooltip: dimensions.map((item)=>item.id),
6571
+ label: [],
6572
+ row: [],
6573
+ column: []
6574
+ };
7207
6575
  return {
7208
- ...result,
7209
- encoding
6576
+ ...advancedVSeed,
6577
+ encoding: mergedEncoding
7210
6578
  };
7211
6579
  };
7212
6580
  const roseAdvancedPipeline = [
7213
6581
  initAdvancedVSeed_initAdvancedVSeed,
7214
6582
  autoMeasures_autoMeasures,
7215
6583
  autoDimensions_autoDimensions,
6584
+ encodingForRose,
7216
6585
  pivotAdapter([
7217
- reshapeTo2D1M
6586
+ reshapeWithEncoding
7218
6587
  ], [
7219
- pivotReshapeTo2D1M
6588
+ pivotReshapeWithEncoding
7220
6589
  ]),
7221
- encodingRose,
7222
6590
  roseConfig,
7223
6591
  theme_theme,
7224
6592
  markStyle_markStyle,
@@ -7229,13 +6597,12 @@ const initRose = (spec, context)=>{
7229
6597
  ...spec
7230
6598
  };
7231
6599
  const { advancedVSeed } = context;
7232
- const { encoding, dataset, datasetReshapeInfo } = advancedVSeed;
7233
- const { foldInfo } = datasetReshapeInfo[0];
7234
- if (!encoding[0].radius || !encoding[0].angle || !encoding[0].group) return result;
6600
+ const { dataset, datasetReshapeInfo } = advancedVSeed;
6601
+ const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
7235
6602
  result.type = 'rose';
7236
- result.categoryField = encoding[0].angle[0];
7237
- result.valueField = encoding[0].radius[0];
7238
- result.seriesField = encoding[0].group[0];
6603
+ result.categoryField = unfoldInfo.encodingAngle;
6604
+ result.seriesField = unfoldInfo.encodingColorId;
6605
+ result.valueField = foldInfo.measureValue;
7239
6606
  result.padding = 0;
7240
6607
  result.outerRadius = 0.9;
7241
6608
  result.innerRadius = 0;
@@ -7383,12 +6750,12 @@ const roseParallelAdvancedPipeline = [
7383
6750
  initAdvancedVSeed_initAdvancedVSeed,
7384
6751
  autoMeasures_autoMeasures,
7385
6752
  autoDimensions_autoDimensions,
6753
+ encodingForRose,
7386
6754
  pivotAdapter([
7387
- reshapeTo2D1M
6755
+ reshapeWithEncoding
7388
6756
  ], [
7389
- pivotReshapeTo2D1M
6757
+ pivotReshapeWithEncoding
7390
6758
  ]),
7391
- encodingRose,
7392
6759
  roseParallelConfig,
7393
6760
  theme_theme,
7394
6761
  markStyle_markStyle,
@@ -7399,16 +6766,18 @@ const initRoseParallel = (spec, context)=>{
7399
6766
  ...spec
7400
6767
  };
7401
6768
  const { advancedVSeed } = context;
7402
- const { encoding, datasetReshapeInfo, dataset } = advancedVSeed;
6769
+ const { datasetReshapeInfo, dataset, dimensions } = advancedVSeed;
7403
6770
  const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
7404
- if (!encoding[0].radius || !encoding[0].angle || !encoding[0].group) return result;
6771
+ const sameDimensionsMode = dimensions.length > 1 && dimensions.every((dim)=>dim.id === dimensions[0].id);
7405
6772
  result.type = 'rose';
7406
- result.categoryField = [
7407
- encoding[0].angle[0],
7408
- unfoldInfo.groupId
6773
+ result.categoryField = sameDimensionsMode ? [
6774
+ unfoldInfo.encodingAngle
6775
+ ] : [
6776
+ unfoldInfo.encodingAngle,
6777
+ unfoldInfo.encodingDetail
7409
6778
  ];
7410
- result.valueField = encoding[0].radius[0];
7411
- result.seriesField = encoding[0].group[0];
6779
+ result.valueField = foldInfo.measureValue;
6780
+ result.seriesField = unfoldInfo.encodingColorId;
7412
6781
  result.padding = 0;
7413
6782
  result.outerRadius = 0.9;
7414
6783
  result.innerRadius = 0;
@@ -7485,54 +6854,52 @@ const registerRoseParallel = ()=>{
7485
6854
  Builder._advancedPipelineMap.roseParallel = roseParallelAdvancedPipeline;
7486
6855
  Builder._specPipelineMap.roseParallel = roseParallelSpecPipeline;
7487
6856
  };
7488
- const encodingAR = (advancedVSeed)=>{
7489
- const result = {
7490
- ...advancedVSeed
7491
- };
7492
- const { datasetReshapeInfo, dimensions, measures } = advancedVSeed;
7493
- if (!datasetReshapeInfo || !dimensions || !measures) return result;
7494
- const angleDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
7495
- const isZeroDimension = 0 === dimensions.length;
7496
- const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
7497
- const { foldInfo, unfoldInfo } = cur;
7498
- const angle = [
7499
- isZeroDimension ? foldInfo.measureName : angleDimension?.id
7500
- ];
7501
- const radius = [
7502
- foldInfo.measureValue
7503
- ];
7504
- const group = [
7505
- unfoldInfo.groupId
7506
- ];
7507
- const color = [
7508
- unfoldInfo.groupId
6857
+ const encodingForRadar = (advancedVSeed, context)=>{
6858
+ const { vseed } = context;
6859
+ const { dimensions } = advancedVSeed;
6860
+ if (!dimensions) return advancedVSeed;
6861
+ const encoding = vseed.encoding;
6862
+ if (encoding) {
6863
+ const angle = encoding.angle || [];
6864
+ const detail = encoding.detail || [];
6865
+ const color = encoding.color || [];
6866
+ const mergedDetail = [
6867
+ ...color.filter((d)=>!angle.includes(d)),
6868
+ ...detail
7509
6869
  ];
7510
- return [
7511
- ...prev,
7512
- {
7513
- angle,
7514
- radius,
7515
- group,
7516
- color
6870
+ return {
6871
+ ...advancedVSeed,
6872
+ encoding: {
6873
+ ...encoding,
6874
+ detail: mergedDetail
7517
6875
  }
7518
- ];
7519
- }, []);
6876
+ };
6877
+ }
6878
+ const mergedEncoding = {
6879
+ angle: dimensions.slice(0, 1).map((item)=>item.id),
6880
+ color: dimensions.slice(1).map((item)=>item.id),
6881
+ detail: dimensions.slice(1).map((item)=>item.id),
6882
+ tooltip: dimensions.map((item)=>item.id),
6883
+ label: [],
6884
+ row: [],
6885
+ column: []
6886
+ };
7520
6887
  return {
7521
- ...result,
7522
- encoding
6888
+ ...advancedVSeed,
6889
+ encoding: mergedEncoding
7523
6890
  };
7524
6891
  };
7525
6892
  const radarAdvancedPipeline = [
7526
6893
  initAdvancedVSeed_initAdvancedVSeed,
7527
6894
  autoMeasures_autoMeasures,
7528
6895
  autoDimensions_autoDimensions,
6896
+ encodingForRadar,
7529
6897
  pivotAdapter([
7530
- reshapeTo2D1M0Name
6898
+ reshapeWithEncoding
7531
6899
  ], [
7532
- pivotReshapeTo2D1M0Name
6900
+ pivotReshapeWithEncoding
7533
6901
  ]),
7534
- encodingAR,
7535
- sort_sortLegend,
6902
+ sortLegend_sortLegend,
7536
6903
  radarConfig,
7537
6904
  theme_theme,
7538
6905
  markStyle_markStyle,
@@ -7543,12 +6910,12 @@ const initRadar = (spec, context)=>{
7543
6910
  ...spec
7544
6911
  };
7545
6912
  const { advancedVSeed } = context;
7546
- const { encoding } = advancedVSeed;
7547
- if (!encoding[0].angle || !encoding[0].radius || !encoding[0].group) return result;
6913
+ const { datasetReshapeInfo } = advancedVSeed;
6914
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
7548
6915
  result.type = 'radar';
7549
- result.angleField = encoding[0].angle[0];
7550
- result.radiusField = encoding[0].radius[0];
7551
- result.seriesField = encoding[0].group[0];
6916
+ result.angleField = unfoldInfo.encodingAngle;
6917
+ result.radiusField = foldInfo.measureValue;
6918
+ result.seriesField = unfoldInfo.encodingColorId;
7552
6919
  result.padding = 0;
7553
6920
  result.region = [
7554
6921
  {
@@ -7660,47 +7027,40 @@ const registerRadar = ()=>{
7660
7027
  Builder._advancedPipelineMap.radar = radarAdvancedPipeline;
7661
7028
  Builder._specPipelineMap.radar = radarSpecPipeline;
7662
7029
  };
7663
- const encodingFunnel = (advancedVSeed)=>{
7664
- const result = {
7665
- ...advancedVSeed
7030
+ const encodingForFunnel = (advancedVSeed, context)=>{
7031
+ const { vseed } = context;
7032
+ const { dimensions } = advancedVSeed;
7033
+ if (!dimensions) return advancedVSeed;
7034
+ const encoding = vseed.encoding;
7035
+ if (encoding) return {
7036
+ ...advancedVSeed,
7037
+ encoding: {
7038
+ ...encoding
7039
+ }
7040
+ };
7041
+ const mergedEncoding = {
7042
+ color: dimensions.slice(0).map((item)=>item.id),
7043
+ detail: dimensions.slice(0).map((item)=>item.id),
7044
+ tooltip: dimensions.map((item)=>item.id),
7045
+ label: [],
7046
+ row: [],
7047
+ column: []
7666
7048
  };
7667
- const { datasetReshapeInfo } = advancedVSeed;
7668
- if (!datasetReshapeInfo) return result;
7669
- const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
7670
- const { foldInfo, unfoldInfo } = cur;
7671
- const size = [
7672
- foldInfo.measureValue
7673
- ];
7674
- const group = [
7675
- unfoldInfo.groupId
7676
- ];
7677
- const color = [
7678
- foldInfo.measureValue
7679
- ];
7680
- return [
7681
- ...prev,
7682
- {
7683
- size,
7684
- group,
7685
- color
7686
- }
7687
- ];
7688
- }, []);
7689
7049
  return {
7690
- ...result,
7691
- encoding
7050
+ ...advancedVSeed,
7051
+ encoding: mergedEncoding
7692
7052
  };
7693
7053
  };
7694
7054
  const funnelAdvancedPipeline = [
7695
7055
  initAdvancedVSeed_initAdvancedVSeed,
7696
7056
  autoMeasures_autoMeasures,
7697
7057
  autoDimensions_autoDimensions,
7058
+ encodingForFunnel,
7698
7059
  pivotAdapter([
7699
- reshapeTo1D1M
7060
+ reshapeWithEncoding
7700
7061
  ], [
7701
- pivotReshapeTo1D1M
7062
+ pivotReshapeWithEncoding
7702
7063
  ]),
7703
- encodingFunnel,
7704
7064
  funnelConfig,
7705
7065
  theme_theme,
7706
7066
  annotation_annotation
@@ -7710,11 +7070,12 @@ const initFunnel = (spec, context)=>{
7710
7070
  ...spec
7711
7071
  };
7712
7072
  const { advancedVSeed } = context;
7713
- const { encoding } = advancedVSeed;
7714
- if (!encoding[0].size || !encoding[0].group || !encoding[0].color) return result;
7073
+ const { datasetReshapeInfo } = advancedVSeed;
7074
+ const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
7715
7075
  result.type = 'funnel';
7716
- result.valueField = encoding[0].size[0];
7717
- result.categoryField = encoding[0].group[0];
7076
+ result.valueField = foldInfo.measureValue;
7077
+ result.categoryField = unfoldInfo.encodingDetail;
7078
+ result.seriesField = unfoldInfo.encodingColorId;
7718
7079
  result.padding = 0;
7719
7080
  result.isTransform = true;
7720
7081
  result.shape = 'rect';
@@ -7729,7 +7090,7 @@ const initFunnel = (spec, context)=>{
7729
7090
  style: {
7730
7091
  cornerRadius: 4,
7731
7092
  fill: {
7732
- field: encoding[0].color[0],
7093
+ field: unfoldInfo.encodingColorId,
7733
7094
  scale: 'color'
7734
7095
  }
7735
7096
  },
@@ -7745,99 +7106,13 @@ const initFunnel = (spec, context)=>{
7745
7106
  result.animation = true;
7746
7107
  return result;
7747
7108
  };
7748
- const linearColor = (spec, context)=>{
7749
- const result = {
7750
- ...spec
7751
- };
7752
- const { advancedVSeed } = context;
7753
- const { datasetReshapeInfo, chartType, encoding } = advancedVSeed;
7754
- const baseConfig = advancedVSeed.config[chartType];
7755
- if (!baseConfig || !baseConfig.color) return result;
7756
- const { color } = baseConfig;
7757
- const { colorScheme } = color;
7758
- result.color = {
7759
- type: 'linear',
7760
- domain: [
7761
- {
7762
- dataId: datasetReshapeInfo[0].id,
7763
- fields: encoding?.[0]?.color
7764
- }
7765
- ],
7766
- range: colorScheme
7767
- };
7768
- return result;
7769
- };
7770
- const colorLegend = (spec, context)=>{
7771
- const result = {
7772
- ...spec
7773
- };
7774
- const { advancedVSeed } = context;
7775
- const { chartType } = advancedVSeed;
7776
- const baseConfig = advancedVSeed.config[chartType];
7777
- const { encoding } = advancedVSeed;
7778
- if (!encoding[0].color) return result;
7779
- if (!baseConfig || !baseConfig.legend) return result;
7780
- const { legend } = baseConfig;
7781
- const { enable, position = 'bottom' } = legend || {};
7782
- const orient = [
7783
- 'bottom',
7784
- 'bottomLeft',
7785
- 'bottomRight',
7786
- 'bl',
7787
- 'br'
7788
- ].includes(position) ? 'bottom' : [
7789
- 'top',
7790
- 'topLeft',
7791
- 'topRight',
7792
- 'tl',
7793
- 'tr'
7794
- ].includes(position) ? 'top' : [
7795
- 'left',
7796
- 'leftTop',
7797
- 'leftBottom',
7798
- 'lt',
7799
- 'lb'
7800
- ].includes(position) ? 'left' : 'right';
7801
- const legendPosition = [
7802
- 'topLeft',
7803
- 'bottomLeft',
7804
- 'leftTop',
7805
- 'rightTop',
7806
- 'lt',
7807
- 'rt',
7808
- 'tl',
7809
- 'bl'
7810
- ].includes(position) ? 'start' : [
7811
- 'topRight',
7812
- 'bottomRight',
7813
- 'leftBottom',
7814
- 'rightBottom',
7815
- 'lb',
7816
- 'rb',
7817
- 'rt',
7818
- 'br'
7819
- ].includes(position) ? 'end' : 'middle';
7820
- result.legends = {
7821
- type: 'color',
7822
- visible: enable,
7823
- orient,
7824
- position: legendPosition,
7825
- field: encoding[0].color[0],
7826
- inverse: !![
7827
- 'left',
7828
- 'right'
7829
- ].includes(orient)
7830
- };
7831
- return result;
7832
- };
7833
7109
  const funnel = [
7834
7110
  initFunnel,
7835
- linearColor,
7836
7111
  background_backgroundColor,
7837
7112
  datasetXY,
7838
7113
  label_label,
7839
7114
  tooltip_tooltip,
7840
- colorLegend,
7115
+ discreteLegend,
7841
7116
  annotationPoint_annotationPoint,
7842
7117
  annotationVerticalLine_annotationVerticalLine,
7843
7118
  annotationHorizontalLine_annotationHorizontalLine,
@@ -7850,12 +7125,11 @@ const pivotFunnel = [
7850
7125
  datasetPivot,
7851
7126
  pivotIndicators_pivotIndicators([
7852
7127
  initFunnel,
7853
- linearColor,
7854
7128
  background_backgroundColor,
7855
7129
  datasetXY,
7856
7130
  label_label,
7857
7131
  tooltip_tooltip,
7858
- colorLegend,
7132
+ discreteLegend,
7859
7133
  annotationPoint_annotationPoint,
7860
7134
  annotationVerticalLine_annotationVerticalLine,
7861
7135
  annotationHorizontalLine_annotationHorizontalLine,
@@ -7871,49 +7145,42 @@ const registerFunnel = ()=>{
7871
7145
  Builder._advancedPipelineMap.funnel = funnelAdvancedPipeline;
7872
7146
  Builder._specPipelineMap.funnel = funnelSpecPipeline;
7873
7147
  };
7874
- const encodingMatrix = (advancedVSeed)=>{
7875
- const result = {
7876
- ...advancedVSeed
7148
+ const encodingForHeatmap = (advancedVSeed, context)=>{
7149
+ const { vseed } = context;
7150
+ const { dimensions } = advancedVSeed;
7151
+ if (!dimensions) return advancedVSeed;
7152
+ const encoding = vseed.encoding;
7153
+ if (encoding) return {
7154
+ ...advancedVSeed,
7155
+ encoding: {
7156
+ ...encoding
7157
+ }
7158
+ };
7159
+ const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
7160
+ const mergedEncoding = {
7161
+ x: dimensions.slice(0, 1).map((item)=>item.id),
7162
+ y: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
7163
+ color: dimensions.slice(0).map((item)=>item.id),
7164
+ tooltip: dimensions.map((item)=>item.id),
7165
+ label: [],
7166
+ row: [],
7167
+ column: []
7877
7168
  };
7878
- const { datasetReshapeInfo, dimensions } = advancedVSeed;
7879
- if (!datasetReshapeInfo || !dimensions) return result;
7880
- const xDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
7881
- const isZeroDimension = 0 === dimensions.length;
7882
- const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
7883
- const { foldInfo, unfoldInfo } = cur;
7884
- const x = [
7885
- isZeroDimension ? foldInfo.measureName : xDimension?.id
7886
- ];
7887
- const y = [
7888
- unfoldInfo.groupName
7889
- ];
7890
- const color = [
7891
- foldInfo.measureValue
7892
- ];
7893
- return [
7894
- ...prev,
7895
- {
7896
- x,
7897
- y,
7898
- color
7899
- }
7900
- ];
7901
- }, []);
7902
7169
  return {
7903
- ...result,
7904
- encoding
7170
+ ...advancedVSeed,
7171
+ encoding: mergedEncoding
7905
7172
  };
7906
7173
  };
7907
7174
  const heatmapAdvancedPipeline = [
7908
7175
  initAdvancedVSeed_initAdvancedVSeed,
7909
7176
  autoMeasures_autoMeasures,
7910
7177
  autoDimensions_autoDimensions,
7178
+ encodingForHeatmap,
7911
7179
  pivotAdapter([
7912
- reshapeTo2D1M
7180
+ reshapeWithEncoding
7913
7181
  ], [
7914
- pivotReshapeTo2D1M
7182
+ pivotReshapeWithEncoding
7915
7183
  ]),
7916
- encodingMatrix,
7917
7184
  sortXBandAxis,
7918
7185
  heatmapConfig,
7919
7186
  theme_theme,
@@ -7935,23 +7202,20 @@ const initHeatmap = (spec, context)=>{
7935
7202
  ...spec
7936
7203
  };
7937
7204
  const { advancedVSeed } = context;
7938
- const { encoding } = advancedVSeed;
7939
- if (!encoding[0].y || !encoding[0].x || !encoding[0].color) return result;
7205
+ const { datasetReshapeInfo } = advancedVSeed;
7206
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
7940
7207
  result.type = 'heatmap';
7941
7208
  result.direction = 'vertical';
7942
- result.xField = encoding[0].x[0];
7943
- result.yField = encoding[0].y[0];
7944
- result.valueField = encoding[0].color[0];
7209
+ result.xField = unfoldInfo.encodingX;
7210
+ result.yField = unfoldInfo.encodingY;
7211
+ result.seriesField = unfoldInfo.encodingColorId;
7212
+ result.valueField = foldInfo.measureValue;
7945
7213
  result.padding = 0;
7946
7214
  result.cell = {
7947
7215
  style: {
7948
7216
  shape: 'rect',
7949
7217
  stroke: '#ffffff',
7950
- lineWidth: 1,
7951
- fill: {
7952
- field: encoding[0].color[0],
7953
- scale: 'color'
7954
- }
7218
+ lineWidth: 1
7955
7219
  }
7956
7220
  };
7957
7221
  result.axes = [
@@ -7976,12 +7240,11 @@ const initHeatmap = (spec, context)=>{
7976
7240
  };
7977
7241
  const heatmap = [
7978
7242
  initHeatmap,
7979
- linearColor,
7980
7243
  background_backgroundColor,
7981
7244
  datasetXY,
7982
7245
  label_label,
7983
7246
  labelColorInversion,
7984
- colorLegend,
7247
+ discreteLegend,
7985
7248
  tooltip_tooltip,
7986
7249
  pointStyle_pointStyle,
7987
7250
  pointStateDimensionHover,
@@ -7998,12 +7261,11 @@ const pivotHeatmap = [
7998
7261
  datasetPivot,
7999
7262
  pivotIndicators_pivotIndicators([
8000
7263
  initHeatmap,
8001
- linearColor,
8002
7264
  background_backgroundColor,
8003
7265
  datasetXY,
8004
7266
  label_label,
8005
7267
  labelColorInversion,
8006
- colorLegend,
7268
+ discreteLegend,
8007
7269
  tooltip_tooltip,
8008
7270
  pointStyle_pointStyle,
8009
7271
  pointStateDimensionHover,
@@ -8271,12 +7533,6 @@ const lightTheme = ()=>{
8271
7533
  yAxis: linearAxis,
8272
7534
  crosshairLine
8273
7535
  },
8274
- areaRange: {
8275
- ...baseConfig,
8276
- xAxis: bandAxis,
8277
- yAxis: linearAxis,
8278
- crosshairLine
8279
- },
8280
7536
  scatter: {
8281
7537
  ...baseConfig,
8282
7538
  xAxis: {
@@ -8609,12 +7865,6 @@ const darkTheme = ()=>{
8609
7865
  yAxis: linearAxis,
8610
7866
  crosshairLine: crosshairLine
8611
7867
  },
8612
- areaRange: {
8613
- ...baseConfig,
8614
- xAxis: bandAxis,
8615
- yAxis: linearAxis,
8616
- crosshairLine: crosshairLine
8617
- },
8618
7868
  scatter: {
8619
7869
  ...baseConfig,
8620
7870
  xAxis: {
@@ -8712,7 +7962,6 @@ const registerAll = ()=>{
8712
7962
  registerBarPercent();
8713
7963
  registerArea();
8714
7964
  registerAreaPercent();
8715
- registerAreaRange();
8716
7965
  registerScatter();
8717
7966
  registerDualAxis();
8718
7967
  registerPie();
@@ -8747,7 +7996,6 @@ const zChartType = external_zod_namespaceObject.z["enum"]([
8747
7996
  'barParallel',
8748
7997
  'area',
8749
7998
  'areaPercent',
8750
- 'areaRange',
8751
7999
  'scatter',
8752
8000
  'dualAxis',
8753
8001
  'rose',
@@ -8845,6 +8093,12 @@ const zDualMeasure = external_zod_namespaceObject.z.object({
8845
8093
  secondaryMeasures: external_zod_namespaceObject.z.array(zMeasure).or(zMeasure).optional()
8846
8094
  });
8847
8095
  const zDualMeasures = external_zod_namespaceObject.z.array(zDualMeasure);
8096
+ const zScatterMeasure = external_zod_namespaceObject.z.object({
8097
+ id: external_zod_namespaceObject.z.string(),
8098
+ xMeasures: external_zod_namespaceObject.z.array(zMeasure).or(zMeasure).optional(),
8099
+ yMeasures: external_zod_namespaceObject.z.array(zMeasure).or(zMeasure).optional()
8100
+ });
8101
+ const zScatterMeasures = external_zod_namespaceObject.z.array(zScatterMeasure);
8848
8102
  const zFoldInfo = external_zod_namespaceObject.z.object({
8849
8103
  foldMap: external_zod_namespaceObject.z.record(external_zod_namespaceObject.z.string(), external_zod_namespaceObject.z.string().or(external_zod_namespaceObject.z.undefined())),
8850
8104
  measureId: external_zod_namespaceObject.z.string(),
@@ -8852,10 +8106,14 @@ const zFoldInfo = external_zod_namespaceObject.z.object({
8852
8106
  measureValue: external_zod_namespaceObject.z.string()
8853
8107
  });
8854
8108
  const zUnfoldInfo = external_zod_namespaceObject.z.object({
8109
+ encodingX: external_zod_namespaceObject.z.string(),
8110
+ encodingY: external_zod_namespaceObject.z.string(),
8111
+ encodingColor: external_zod_namespaceObject.z.string(),
8112
+ encodingColorId: external_zod_namespaceObject.z.string(),
8113
+ encodingDetail: external_zod_namespaceObject.z.string(),
8114
+ encodingAngle: external_zod_namespaceObject.z.string(),
8855
8115
  colorItems: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()),
8856
- groupId: external_zod_namespaceObject.z.string(),
8857
- colorIdMap: external_zod_namespaceObject.z.record(external_zod_namespaceObject.z.string(), external_zod_namespaceObject.z.string()),
8858
- groupName: external_zod_namespaceObject.z.string()
8116
+ colorIdMap: external_zod_namespaceObject.z.record(external_zod_namespaceObject.z.string(), external_zod_namespaceObject.z.string())
8859
8117
  });
8860
8118
  const zDatasetReshapeInfo = external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.object({
8861
8119
  id: external_zod_namespaceObject.z.string(),
@@ -8864,16 +8122,21 @@ const zDatasetReshapeInfo = external_zod_namespaceObject.z.array(external_zod_na
8864
8122
  foldInfoList: external_zod_namespaceObject.z.array(zFoldInfo).nullish(),
8865
8123
  unfoldInfo: zUnfoldInfo
8866
8124
  }));
8867
- const zEncoding = external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.object({
8125
+ const zEncoding = external_zod_namespaceObject.z.object({
8868
8126
  x: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8869
8127
  y: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8870
- color: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8871
- group: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8872
8128
  angle: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8873
8129
  radius: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8130
+ detail: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8131
+ color: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8132
+ size: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8874
8133
  tooltip: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8875
- size: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish()
8876
- }));
8134
+ label: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8135
+ row: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8136
+ column: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8137
+ group: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish().describe("\u5DF2\u5F03\u7528, \u8BF7\u4F7F\u7528\u989C\u8272\u66FF\u4EE3")
8138
+ });
8139
+ const zEncodings = external_zod_namespaceObject.z.array(zEncoding);
8877
8140
  const zXBandAxis = external_zod_namespaceObject.z.object({
8878
8141
  visible: external_zod_namespaceObject.z.boolean().default(true).nullish(),
8879
8142
  labelAutoHide: external_zod_namespaceObject.z.boolean().default(true).nullish(),
@@ -9136,7 +8399,6 @@ const zAreaConfig = external_zod_namespaceObject.z.object({
9136
8399
  crosshairLine: zCrosshairLine.nullish()
9137
8400
  });
9138
8401
  const zAreaPercentConfig = zAreaConfig;
9139
- const zAreaRangeConfig = zAreaConfig;
9140
8402
  const zDualAxisConfig = external_zod_namespaceObject.z.object({
9141
8403
  backgroundColor: zBackgroundColor.nullish(),
9142
8404
  label: zLabel.nullish(),
@@ -9191,7 +8453,6 @@ const zConfig = external_zod_namespaceObject.z.object({
9191
8453
  barPercent: zBarPercentConfig.nullish(),
9192
8454
  area: zAreaConfig.nullish(),
9193
8455
  areaPercent: zAreaPercentConfig.nullish(),
9194
- areaRange: zAreaRangeConfig.nullish(),
9195
8456
  scatter: zScatterConfig.nullish(),
9196
8457
  dualAxis: zDualAxisConfig.nullish(),
9197
8458
  rose: zRoseConfig.nullish(),
@@ -9630,6 +8891,7 @@ const zPivotTable = external_zod_namespaceObject.z.object({
9630
8891
  const zLine = external_zod_namespaceObject.z.object({
9631
8892
  chartType: external_zod_namespaceObject.z.literal('line'),
9632
8893
  dataset: zDataset.nullish(),
8894
+ encoding: zEncoding.nullish(),
9633
8895
  dimensions: zDimensions.nullish(),
9634
8896
  measures: zMeasureTree.nullish(),
9635
8897
  backgroundColor: zBackgroundColor.nullish(),
@@ -9654,6 +8916,7 @@ const zLine = external_zod_namespaceObject.z.object({
9654
8916
  const zColumn = external_zod_namespaceObject.z.object({
9655
8917
  chartType: external_zod_namespaceObject.z.literal('column'),
9656
8918
  dataset: zDataset.nullish(),
8919
+ encoding: zEncoding.nullish(),
9657
8920
  dimensions: zDimensions.nullish(),
9658
8921
  measures: zMeasureTree.nullish(),
9659
8922
  backgroundColor: zBackgroundColor.nullish(),
@@ -9676,6 +8939,7 @@ const zColumn = external_zod_namespaceObject.z.object({
9676
8939
  const zColumnParallel = external_zod_namespaceObject.z.object({
9677
8940
  chartType: external_zod_namespaceObject.z.literal('columnParallel'),
9678
8941
  dataset: zDataset.nullish(),
8942
+ encoding: zEncoding.nullish(),
9679
8943
  dimensions: zDimensions.nullish(),
9680
8944
  measures: zMeasureTree.nullish(),
9681
8945
  backgroundColor: zBackgroundColor.nullish(),
@@ -9698,6 +8962,7 @@ const zColumnParallel = external_zod_namespaceObject.z.object({
9698
8962
  const zColumnPercent = external_zod_namespaceObject.z.object({
9699
8963
  chartType: external_zod_namespaceObject.z.literal('columnPercent'),
9700
8964
  dataset: zDataset.nullish(),
8965
+ encoding: zEncoding.nullish(),
9701
8966
  dimensions: zDimensions.nullish(),
9702
8967
  measures: zMeasureTree.nullish(),
9703
8968
  backgroundColor: zBackgroundColor.nullish(),
@@ -9720,6 +8985,7 @@ const zColumnPercent = external_zod_namespaceObject.z.object({
9720
8985
  const zBar = external_zod_namespaceObject.z.object({
9721
8986
  chartType: external_zod_namespaceObject.z.literal('bar'),
9722
8987
  dataset: zDataset.nullish(),
8988
+ encoding: zEncoding.nullish(),
9723
8989
  dimensions: zDimensions.nullish(),
9724
8990
  measures: zMeasureTree.nullish(),
9725
8991
  backgroundColor: zBackgroundColor.nullish(),
@@ -9742,6 +9008,7 @@ const zBar = external_zod_namespaceObject.z.object({
9742
9008
  const zBarParallel = external_zod_namespaceObject.z.object({
9743
9009
  chartType: external_zod_namespaceObject.z.literal('barParallel'),
9744
9010
  dataset: zDataset.nullish(),
9011
+ encoding: zEncoding.nullish(),
9745
9012
  dimensions: zDimensions.nullish(),
9746
9013
  measures: zMeasureTree.nullish(),
9747
9014
  backgroundColor: zBackgroundColor.nullish(),
@@ -9764,6 +9031,7 @@ const zBarParallel = external_zod_namespaceObject.z.object({
9764
9031
  const zBarPercent = external_zod_namespaceObject.z.object({
9765
9032
  chartType: external_zod_namespaceObject.z.literal('barPercent'),
9766
9033
  dataset: zDataset.nullish(),
9034
+ encoding: zEncoding.nullish(),
9767
9035
  dimensions: zDimensions.nullish(),
9768
9036
  measures: zMeasureTree.nullish(),
9769
9037
  backgroundColor: zBackgroundColor.nullish(),
@@ -9786,6 +9054,7 @@ const zBarPercent = external_zod_namespaceObject.z.object({
9786
9054
  const zArea = external_zod_namespaceObject.z.object({
9787
9055
  chartType: external_zod_namespaceObject.z.literal('area'),
9788
9056
  dataset: zDataset.nullish(),
9057
+ encoding: zEncoding.nullish(),
9789
9058
  dimensions: zDimensions.nullish(),
9790
9059
  measures: zMeasureTree.nullish(),
9791
9060
  backgroundColor: zBackgroundColor.nullish(),
@@ -9809,6 +9078,7 @@ const zArea = external_zod_namespaceObject.z.object({
9809
9078
  const zAreaPercent = external_zod_namespaceObject.z.object({
9810
9079
  chartType: external_zod_namespaceObject.z.literal('areaPercent'),
9811
9080
  dataset: zDataset.nullish(),
9081
+ encoding: zEncoding.nullish(),
9812
9082
  dimensions: zDimensions.nullish(),
9813
9083
  measures: zMeasureTree.nullish(),
9814
9084
  backgroundColor: zBackgroundColor.nullish(),
@@ -9829,31 +9099,13 @@ const zAreaPercent = external_zod_namespaceObject.z.object({
9829
9099
  annotationArea: external_zod_namespaceObject.z.array(zAnnotationArea).or(zAnnotationArea).nullish(),
9830
9100
  locale: zLocale.nullish()
9831
9101
  });
9832
- const zAreaRange = external_zod_namespaceObject.z.object({
9833
- chartType: external_zod_namespaceObject.z.literal('areaRange'),
9834
- dataset: zDataset.nullish(),
9835
- dimensions: zDimensions.nullish(),
9836
- measures: zMeasureTree.nullish(),
9837
- backgroundColor: zBackgroundColor.nullish(),
9838
- label: zLabel.nullish(),
9839
- xAxis: zXBandAxis.nullish(),
9840
- yAxis: zYLinearAxis.nullish(),
9841
- crosshairLine: zCrosshairLine.nullish(),
9842
- theme: zTheme.nullish(),
9843
- pointStyle: external_zod_namespaceObject.z.array(zPointStyle).or(zPointStyle).nullish(),
9844
- lineStyle: external_zod_namespaceObject.z.array(zLineStyle).or(zLineStyle).nullish(),
9845
- areaStyle: external_zod_namespaceObject.z.array(zAreaStyle).or(zAreaStyle).nullish(),
9846
- annotationPoint: external_zod_namespaceObject.z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),
9847
- annotationVerticalLine: external_zod_namespaceObject.z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),
9848
- annotationHorizontalLine: external_zod_namespaceObject.z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),
9849
- annotationArea: external_zod_namespaceObject.z.array(zAnnotationArea).or(zAnnotationArea).nullish(),
9850
- locale: zLocale.nullish()
9851
- });
9852
9102
  const zScatter = external_zod_namespaceObject.z.object({
9853
9103
  chartType: external_zod_namespaceObject.z.literal('scatter'),
9854
9104
  dataset: zDataset.nullish(),
9105
+ encoding: zEncoding.nullish(),
9855
9106
  dimensions: zDimensions.nullish(),
9856
9107
  measures: zMeasureTree.nullish(),
9108
+ scatterMeasures: zScatterMeasures.nullish(),
9857
9109
  backgroundColor: zBackgroundColor.nullish(),
9858
9110
  color: zColor.nullish(),
9859
9111
  label: zLabel.nullish(),
@@ -9903,6 +9155,7 @@ const zDualAxis = external_zod_namespaceObject.z.object({
9903
9155
  const zRose = external_zod_namespaceObject.z.object({
9904
9156
  chartType: external_zod_namespaceObject.z.literal('rose'),
9905
9157
  dataset: zDataset.nullish(),
9158
+ encoding: zEncoding.nullish(),
9906
9159
  dimensions: zDimensions.nullish(),
9907
9160
  measures: zMeasureTree.nullish(),
9908
9161
  backgroundColor: zBackgroundColor.nullish(),
@@ -9916,6 +9169,7 @@ const zRose = external_zod_namespaceObject.z.object({
9916
9169
  const zRoseParallel = external_zod_namespaceObject.z.object({
9917
9170
  chartType: external_zod_namespaceObject.z.literal('roseParallel'),
9918
9171
  dataset: zDataset.nullish(),
9172
+ encoding: zEncoding.nullish(),
9919
9173
  dimensions: zDimensions.nullish(),
9920
9174
  measures: zMeasureTree.nullish(),
9921
9175
  backgroundColor: zBackgroundColor.nullish(),
@@ -9929,6 +9183,7 @@ const zRoseParallel = external_zod_namespaceObject.z.object({
9929
9183
  const zPie = external_zod_namespaceObject.z.object({
9930
9184
  chartType: external_zod_namespaceObject.z.literal('pie'),
9931
9185
  dataset: zDataset.nullish(),
9186
+ encoding: zEncoding.nullish(),
9932
9187
  dimensions: zDimensions.nullish(),
9933
9188
  measures: zMeasureTree.nullish(),
9934
9189
  backgroundColor: zBackgroundColor.nullish(),
@@ -9942,6 +9197,7 @@ const zPie = external_zod_namespaceObject.z.object({
9942
9197
  const zDonut = external_zod_namespaceObject.z.object({
9943
9198
  chartType: external_zod_namespaceObject.z.literal('donut'),
9944
9199
  dataset: zDataset.nullish(),
9200
+ encoding: zEncoding.nullish(),
9945
9201
  dimensions: zDimensions.nullish(),
9946
9202
  measures: zMeasureTree.nullish(),
9947
9203
  backgroundColor: zBackgroundColor.nullish(),
@@ -9955,6 +9211,7 @@ const zDonut = external_zod_namespaceObject.z.object({
9955
9211
  const zRadar = external_zod_namespaceObject.z.object({
9956
9212
  chartType: external_zod_namespaceObject.z.literal('radar'),
9957
9213
  dataset: zDataset.nullish(),
9214
+ encoding: zEncoding.nullish(),
9958
9215
  dimensions: zDimensions.nullish(),
9959
9216
  measures: zMeasureTree.nullish(),
9960
9217
  backgroundColor: zBackgroundColor.nullish(),
@@ -9968,6 +9225,7 @@ const zRadar = external_zod_namespaceObject.z.object({
9968
9225
  const zFunnel = external_zod_namespaceObject.z.object({
9969
9226
  chartType: external_zod_namespaceObject.z.literal('funnel'),
9970
9227
  dataset: zDataset.nullish(),
9228
+ encoding: zEncoding.nullish(),
9971
9229
  dimensions: zDimensions.nullish(),
9972
9230
  measures: zMeasureTree.nullish(),
9973
9231
  backgroundColor: zBackgroundColor.nullish(),
@@ -10003,7 +9261,6 @@ const zVSeed = external_zod_namespaceObject.z.discriminatedUnion('chartType', [
10003
9261
  zBarPercent,
10004
9262
  zArea,
10005
9263
  zAreaPercent,
10006
- zAreaRange,
10007
9264
  zScatter,
10008
9265
  zDualAxis,
10009
9266
  zPie,
@@ -10021,6 +9278,7 @@ const zAdvancedVSeed = external_zod_namespaceObject.z.object({
10021
9278
  dimensions: zDimensionTree,
10022
9279
  measures: zMeasureTree,
10023
9280
  encoding: zEncoding,
9281
+ encodings: zEncodings,
10024
9282
  config: zConfig,
10025
9283
  analysis: zAnalysis,
10026
9284
  theme: zTheme,
@@ -10029,21 +9287,28 @@ const zAdvancedVSeed = external_zod_namespaceObject.z.object({
10029
9287
  annotation: zAnnotation,
10030
9288
  locale: zLocale
10031
9289
  });
9290
+ exports.AngleEncoding = __webpack_exports__.AngleEncoding;
10032
9291
  exports.Builder = __webpack_exports__.Builder;
9292
+ exports.ColorEncoding = __webpack_exports__.ColorEncoding;
9293
+ exports.ColorIdEncoding = __webpack_exports__.ColorIdEncoding;
9294
+ exports.DetailEncoding = __webpack_exports__.DetailEncoding;
10033
9295
  exports.FoldMeasureId = __webpack_exports__.FoldMeasureId;
10034
9296
  exports.FoldMeasureName = __webpack_exports__.FoldMeasureName;
10035
9297
  exports.FoldMeasureValue = __webpack_exports__.FoldMeasureValue;
10036
9298
  exports.FoldPrimaryMeasureValue = __webpack_exports__.FoldPrimaryMeasureValue;
10037
9299
  exports.FoldSecondaryMeasureValue = __webpack_exports__.FoldSecondaryMeasureValue;
9300
+ exports.FoldXMeasureValue = __webpack_exports__.FoldXMeasureValue;
9301
+ exports.FoldYMeasureValue = __webpack_exports__.FoldYMeasureValue;
9302
+ exports.MeasureName = __webpack_exports__.MeasureName;
10038
9303
  exports.ORIGINAL_DATA = __webpack_exports__.ORIGINAL_DATA;
10039
9304
  exports.Separator = __webpack_exports__.Separator;
10040
9305
  exports.UnfoldDimensionGroup = __webpack_exports__.UnfoldDimensionGroup;
10041
9306
  exports.UnfoldDimensionGroupId = __webpack_exports__.UnfoldDimensionGroupId;
9307
+ exports.XEncoding = __webpack_exports__.XEncoding;
9308
+ exports.YEncoding = __webpack_exports__.YEncoding;
10042
9309
  exports.areaAdvancedPipeline = __webpack_exports__.areaAdvancedPipeline;
10043
9310
  exports.areaPercentAdvancedPipeline = __webpack_exports__.areaPercentAdvancedPipeline;
10044
9311
  exports.areaPercentSpecPipeline = __webpack_exports__.areaPercentSpecPipeline;
10045
- exports.areaRangeAdvancedPipeline = __webpack_exports__.areaRangeAdvancedPipeline;
10046
- exports.areaRangeSpecPipeline = __webpack_exports__.areaRangeSpecPipeline;
10047
9312
  exports.areaSpecPipeline = __webpack_exports__.areaSpecPipeline;
10048
9313
  exports.autoFormatter = __webpack_exports__.autoFormatter;
10049
9314
  exports.autoNumFormatter = __webpack_exports__.autoNumFormatter;
@@ -10062,11 +9327,7 @@ exports.columnSpecPipeline = __webpack_exports__.columnSpecPipeline;
10062
9327
  exports.createFormatter = __webpack_exports__.createFormatter;
10063
9328
  exports.createNumFormatter = __webpack_exports__.createNumFormatter;
10064
9329
  exports.darkTheme = __webpack_exports__.darkTheme;
10065
- exports.dataReshapeFor1D = __webpack_exports__.dataReshapeFor1D;
10066
- exports.dataReshapeFor1D1M = __webpack_exports__.dataReshapeFor1D1M;
10067
- exports.dataReshapeFor1D2M = __webpack_exports__.dataReshapeFor1D2M;
10068
- exports.dataReshapeFor2D1M = __webpack_exports__.dataReshapeFor2D1M;
10069
- exports.dataReshapeFor2D1M0Name = __webpack_exports__.dataReshapeFor2D1M0Name;
9330
+ exports.dataReshapeByEncoding = __webpack_exports__.dataReshapeByEncoding;
10070
9331
  exports.donutAdvancedPipeline = __webpack_exports__.donutAdvancedPipeline;
10071
9332
  exports.donutSpecPipeline = __webpack_exports__.donutSpecPipeline;
10072
9333
  exports.dualAxisAdvancedPipeline = __webpack_exports__.dualAxisAdvancedPipeline;
@@ -10114,7 +9375,6 @@ exports.radarSpecPipeline = __webpack_exports__.radarSpecPipeline;
10114
9375
  exports.registerAll = __webpack_exports__.registerAll;
10115
9376
  exports.registerArea = __webpack_exports__.registerArea;
10116
9377
  exports.registerAreaPercent = __webpack_exports__.registerAreaPercent;
10117
- exports.registerAreaRange = __webpack_exports__.registerAreaRange;
10118
9378
  exports.registerBar = __webpack_exports__.registerBar;
10119
9379
  exports.registerBarParallel = __webpack_exports__.registerBarParallel;
10120
9380
  exports.registerBarPercent = __webpack_exports__.registerBarPercent;
@@ -10158,8 +9418,6 @@ exports.zArea = __webpack_exports__.zArea;
10158
9418
  exports.zAreaConfig = __webpack_exports__.zAreaConfig;
10159
9419
  exports.zAreaPercent = __webpack_exports__.zAreaPercent;
10160
9420
  exports.zAreaPercentConfig = __webpack_exports__.zAreaPercentConfig;
10161
- exports.zAreaRange = __webpack_exports__.zAreaRange;
10162
- exports.zAreaRangeConfig = __webpack_exports__.zAreaRangeConfig;
10163
9421
  exports.zAreaStyle = __webpack_exports__.zAreaStyle;
10164
9422
  exports.zAxis = __webpack_exports__.zAxis;
10165
9423
  exports.zBackgroundColor = __webpack_exports__.zBackgroundColor;
@@ -10199,6 +9457,7 @@ exports.zDualChartType = __webpack_exports__.zDualChartType;
10199
9457
  exports.zDualMeasure = __webpack_exports__.zDualMeasure;
10200
9458
  exports.zDualMeasures = __webpack_exports__.zDualMeasures;
10201
9459
  exports.zEncoding = __webpack_exports__.zEncoding;
9460
+ exports.zEncodings = __webpack_exports__.zEncodings;
10202
9461
  exports.zFoldInfo = __webpack_exports__.zFoldInfo;
10203
9462
  exports.zFunnel = __webpack_exports__.zFunnel;
10204
9463
  exports.zFunnelConfig = __webpack_exports__.zFunnelConfig;
@@ -10230,6 +9489,8 @@ exports.zRoseParallel = __webpack_exports__.zRoseParallel;
10230
9489
  exports.zRoseParallelConfig = __webpack_exports__.zRoseParallelConfig;
10231
9490
  exports.zScatter = __webpack_exports__.zScatter;
10232
9491
  exports.zScatterConfig = __webpack_exports__.zScatterConfig;
9492
+ exports.zScatterMeasure = __webpack_exports__.zScatterMeasure;
9493
+ exports.zScatterMeasures = __webpack_exports__.zScatterMeasures;
10233
9494
  exports.zSort = __webpack_exports__.zSort;
10234
9495
  exports.zSortLegend = __webpack_exports__.zSortLegend;
10235
9496
  exports.zStackCornerRadius = __webpack_exports__.zStackCornerRadius;
@@ -10244,21 +9505,28 @@ exports.zXLinearAxis = __webpack_exports__.zXLinearAxis;
10244
9505
  exports.zYBandAxis = __webpack_exports__.zYBandAxis;
10245
9506
  exports.zYLinearAxis = __webpack_exports__.zYLinearAxis;
10246
9507
  for(var __webpack_i__ in __webpack_exports__)if (-1 === [
9508
+ "AngleEncoding",
10247
9509
  "Builder",
9510
+ "ColorEncoding",
9511
+ "ColorIdEncoding",
9512
+ "DetailEncoding",
10248
9513
  "FoldMeasureId",
10249
9514
  "FoldMeasureName",
10250
9515
  "FoldMeasureValue",
10251
9516
  "FoldPrimaryMeasureValue",
10252
9517
  "FoldSecondaryMeasureValue",
9518
+ "FoldXMeasureValue",
9519
+ "FoldYMeasureValue",
9520
+ "MeasureName",
10253
9521
  "ORIGINAL_DATA",
10254
9522
  "Separator",
10255
9523
  "UnfoldDimensionGroup",
10256
9524
  "UnfoldDimensionGroupId",
9525
+ "XEncoding",
9526
+ "YEncoding",
10257
9527
  "areaAdvancedPipeline",
10258
9528
  "areaPercentAdvancedPipeline",
10259
9529
  "areaPercentSpecPipeline",
10260
- "areaRangeAdvancedPipeline",
10261
- "areaRangeSpecPipeline",
10262
9530
  "areaSpecPipeline",
10263
9531
  "autoFormatter",
10264
9532
  "autoNumFormatter",
@@ -10277,11 +9545,7 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
10277
9545
  "createFormatter",
10278
9546
  "createNumFormatter",
10279
9547
  "darkTheme",
10280
- "dataReshapeFor1D",
10281
- "dataReshapeFor1D1M",
10282
- "dataReshapeFor1D2M",
10283
- "dataReshapeFor2D1M",
10284
- "dataReshapeFor2D1M0Name",
9548
+ "dataReshapeByEncoding",
10285
9549
  "donutAdvancedPipeline",
10286
9550
  "donutSpecPipeline",
10287
9551
  "dualAxisAdvancedPipeline",
@@ -10329,7 +9593,6 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
10329
9593
  "registerAll",
10330
9594
  "registerArea",
10331
9595
  "registerAreaPercent",
10332
- "registerAreaRange",
10333
9596
  "registerBar",
10334
9597
  "registerBarParallel",
10335
9598
  "registerBarPercent",
@@ -10373,8 +9636,6 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
10373
9636
  "zAreaConfig",
10374
9637
  "zAreaPercent",
10375
9638
  "zAreaPercentConfig",
10376
- "zAreaRange",
10377
- "zAreaRangeConfig",
10378
9639
  "zAreaStyle",
10379
9640
  "zAxis",
10380
9641
  "zBackgroundColor",
@@ -10414,6 +9675,7 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
10414
9675
  "zDualMeasure",
10415
9676
  "zDualMeasures",
10416
9677
  "zEncoding",
9678
+ "zEncodings",
10417
9679
  "zFoldInfo",
10418
9680
  "zFunnel",
10419
9681
  "zFunnelConfig",
@@ -10445,6 +9707,8 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
10445
9707
  "zRoseParallelConfig",
10446
9708
  "zScatter",
10447
9709
  "zScatterConfig",
9710
+ "zScatterMeasure",
9711
+ "zScatterMeasures",
10448
9712
  "zSort",
10449
9713
  "zSortLegend",
10450
9714
  "zStackCornerRadius",