@visactor/vseed 0.2.6 → 0.2.7

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 (84) hide show
  1. package/dist/cjs/index.cjs +1 -1
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/esm/pipeline/advanced/chart/pipeline/area.js +3 -3
  4. package/dist/esm/pipeline/advanced/chart/pipeline/area.js.map +1 -1
  5. package/dist/esm/pipeline/advanced/chart/pipeline/areaPercent.js +3 -3
  6. package/dist/esm/pipeline/advanced/chart/pipeline/areaPercent.js.map +1 -1
  7. package/dist/esm/pipeline/advanced/chart/pipeline/bar.js +3 -3
  8. package/dist/esm/pipeline/advanced/chart/pipeline/bar.js.map +1 -1
  9. package/dist/esm/pipeline/advanced/chart/pipeline/barParallel.js +3 -3
  10. package/dist/esm/pipeline/advanced/chart/pipeline/barParallel.js.map +1 -1
  11. package/dist/esm/pipeline/advanced/chart/pipeline/barPercent.js +3 -3
  12. package/dist/esm/pipeline/advanced/chart/pipeline/barPercent.js.map +1 -1
  13. package/dist/esm/pipeline/advanced/chart/pipeline/boxplot.js +3 -3
  14. package/dist/esm/pipeline/advanced/chart/pipeline/boxplot.js.map +1 -1
  15. package/dist/esm/pipeline/advanced/chart/pipeline/column.js +3 -3
  16. package/dist/esm/pipeline/advanced/chart/pipeline/column.js.map +1 -1
  17. package/dist/esm/pipeline/advanced/chart/pipeline/columnParallel.js +3 -3
  18. package/dist/esm/pipeline/advanced/chart/pipeline/columnParallel.js.map +1 -1
  19. package/dist/esm/pipeline/advanced/chart/pipeline/columnPercent.js +3 -3
  20. package/dist/esm/pipeline/advanced/chart/pipeline/columnPercent.js.map +1 -1
  21. package/dist/esm/pipeline/advanced/chart/pipeline/dualAxis.js +3 -3
  22. package/dist/esm/pipeline/advanced/chart/pipeline/dualAxis.js.map +1 -1
  23. package/dist/esm/pipeline/advanced/chart/pipeline/funnel.js +3 -3
  24. package/dist/esm/pipeline/advanced/chart/pipeline/funnel.js.map +1 -1
  25. package/dist/esm/pipeline/advanced/chart/pipeline/heatmap.js +3 -3
  26. package/dist/esm/pipeline/advanced/chart/pipeline/heatmap.js.map +1 -1
  27. package/dist/esm/pipeline/advanced/chart/pipeline/histogram.js +3 -3
  28. package/dist/esm/pipeline/advanced/chart/pipeline/histogram.js.map +1 -1
  29. package/dist/esm/pipeline/advanced/chart/pipeline/line.js +3 -3
  30. package/dist/esm/pipeline/advanced/chart/pipeline/line.js.map +1 -1
  31. package/dist/esm/pipeline/advanced/chart/pipeline/radar.js +3 -3
  32. package/dist/esm/pipeline/advanced/chart/pipeline/radar.js.map +1 -1
  33. package/dist/esm/pipeline/advanced/chart/pipeline/rose.js +3 -3
  34. package/dist/esm/pipeline/advanced/chart/pipeline/rose.js.map +1 -1
  35. package/dist/esm/pipeline/advanced/chart/pipeline/roseParallel.js +3 -3
  36. package/dist/esm/pipeline/advanced/chart/pipeline/roseParallel.js.map +1 -1
  37. package/dist/esm/pipeline/advanced/chart/pipeline/scatter.js +3 -3
  38. package/dist/esm/pipeline/advanced/chart/pipeline/scatter.js.map +1 -1
  39. package/dist/esm/pipeline/advanced/chart/pipes/encoding/bar.js +8 -7
  40. package/dist/esm/pipeline/advanced/chart/pipes/encoding/bar.js.map +1 -1
  41. package/dist/esm/pipeline/advanced/chart/pipes/encoding/boxplot.js +8 -7
  42. package/dist/esm/pipeline/advanced/chart/pipes/encoding/boxplot.js.map +1 -1
  43. package/dist/esm/pipeline/advanced/chart/pipes/encoding/color/addColorToEncoding.d.ts +7 -0
  44. package/dist/esm/pipeline/advanced/chart/pipes/encoding/color/addColorToEncoding.js +9 -1
  45. package/dist/esm/pipeline/advanced/chart/pipes/encoding/color/addColorToEncoding.js.map +1 -1
  46. package/dist/esm/pipeline/advanced/chart/pipes/encoding/column.js +8 -7
  47. package/dist/esm/pipeline/advanced/chart/pipes/encoding/column.js.map +1 -1
  48. package/dist/esm/pipeline/advanced/chart/pipes/encoding/dualAxis.js +16 -7
  49. package/dist/esm/pipeline/advanced/chart/pipes/encoding/dualAxis.js.map +1 -1
  50. package/dist/esm/pipeline/advanced/chart/pipes/encoding/funnel.js +7 -6
  51. package/dist/esm/pipeline/advanced/chart/pipes/encoding/funnel.js.map +1 -1
  52. package/dist/esm/pipeline/advanced/chart/pipes/encoding/heatmap.js.map +1 -1
  53. package/dist/esm/pipeline/advanced/chart/pipes/encoding/line.js +8 -6
  54. package/dist/esm/pipeline/advanced/chart/pipes/encoding/line.js.map +1 -1
  55. package/dist/esm/pipeline/advanced/chart/pipes/encoding/radar.js +8 -6
  56. package/dist/esm/pipeline/advanced/chart/pipes/encoding/radar.js.map +1 -1
  57. package/dist/esm/pipeline/advanced/chart/pipes/encoding/rose.js +8 -7
  58. package/dist/esm/pipeline/advanced/chart/pipes/encoding/rose.js.map +1 -1
  59. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.js +48 -23
  60. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.js.map +1 -1
  61. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.js +47 -23
  62. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.js.map +1 -1
  63. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js +2 -2
  64. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js.map +1 -1
  65. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js +1 -1
  66. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js.map +1 -1
  67. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.js +1 -1
  68. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.js.map +1 -1
  69. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipElement.js.map +1 -1
  70. package/dist/esm/pipeline/spec/table/pipeline/pivotTable.js +2 -2
  71. package/dist/esm/pipeline/spec/table/pipeline/pivotTable.js.map +1 -1
  72. package/dist/esm/pipeline/spec/table/pipeline/table.js +2 -2
  73. package/dist/esm/pipeline/spec/table/pipeline/table.js.map +1 -1
  74. package/dist/esm/pipeline/spec/table/pipes/cellStyle/pivot.js +16 -4
  75. package/dist/esm/pipeline/spec/table/pipes/cellStyle/pivot.js.map +1 -1
  76. package/dist/esm/pipeline/spec/table/pipes/cellStyle/table.js +16 -4
  77. package/dist/esm/pipeline/spec/table/pipes/cellStyle/table.js.map +1 -1
  78. package/dist/esm/pipeline/spec/table/pipes/indicators/pivotIndicators.js.map +1 -1
  79. package/dist/esm/pipeline/spec/table/pipes/theme/frameStyle.d.ts +1 -1
  80. package/dist/esm/pipeline/spec/table/pipes/theme/frameStyle.js +6 -2
  81. package/dist/esm/pipeline/spec/table/pipes/theme/frameStyle.js.map +1 -1
  82. package/dist/umd/index.js +435 -339
  83. package/dist/umd/index.js.map +1 -1
  84. package/package.json +2 -2
package/dist/umd/index.js CHANGED
@@ -1383,7 +1383,7 @@
1383
1383
  };
1384
1384
  return result;
1385
1385
  };
1386
- const frameStyle = (spec, context)=>{
1386
+ const tableThemeStyle = (spec, context)=>{
1387
1387
  const result = {
1388
1388
  ...spec
1389
1389
  };
@@ -1397,6 +1397,10 @@
1397
1397
  borderLineWidth: 1,
1398
1398
  cornerRadius: 4
1399
1399
  };
1400
+ result.theme.scrollStyle = {
1401
+ visible: 'scrolling',
1402
+ hoverOn: true
1403
+ };
1400
1404
  return result;
1401
1405
  };
1402
1406
  const selectionStyle = (spec, context)=>{
@@ -1596,6 +1600,7 @@
1596
1600
  if (!bodyCellStyle) return spec;
1597
1601
  const bodyCellStyleList = array_array(bodyCellStyle);
1598
1602
  const columns = spec.columns || [];
1603
+ const selectedPos = [];
1599
1604
  const setStyleOfColumn = (col)=>{
1600
1605
  const field = col.field;
1601
1606
  const matchedStyles = bodyCellStyleList.filter((style)=>{
@@ -1609,10 +1614,17 @@
1609
1614
  [field]: datum.dataValue
1610
1615
  };
1611
1616
  const mergedStyle = matchedStyles.reduce((result, style)=>{
1612
- if (selector_selector(originalDatum, style.selector)) return {
1613
- ...result,
1614
- ...pickBodyCellStyle(style)
1615
- };
1617
+ if (selector_selector(originalDatum, style.selector)) {
1618
+ if (selectedPos.length && selectedPos[0].col === datum?.col && selectedPos[0].row === datum?.row) selectedPos.length = 0;
1619
+ selectedPos.push({
1620
+ col: datum?.col,
1621
+ row: datum?.row
1622
+ });
1623
+ return {
1624
+ ...result,
1625
+ ...pickBodyCellStyle(style)
1626
+ };
1627
+ }
1616
1628
  return result;
1617
1629
  }, {});
1618
1630
  return mergedStyle;
@@ -1620,6 +1632,10 @@
1620
1632
  return false;
1621
1633
  };
1622
1634
  preorderTraverse(columns, setStyleOfColumn, 'columns');
1635
+ spec.runningConfig = {
1636
+ ...spec.runningConfig || {},
1637
+ selectedPos
1638
+ };
1623
1639
  return spec;
1624
1640
  };
1625
1641
  const tableSpecPipeline = [
@@ -1628,7 +1644,7 @@
1628
1644
  measureTreeToColumns,
1629
1645
  bodyStyle,
1630
1646
  headerStyle,
1631
- frameStyle,
1647
+ tableThemeStyle,
1632
1648
  selectionStyle,
1633
1649
  tableBodyCell
1634
1650
  ];
@@ -2070,6 +2086,7 @@
2070
2086
  if (!bodyCellStyle) return spec;
2071
2087
  const bodyCellStyleList = array_array(bodyCellStyle);
2072
2088
  const indicators = spec.indicators || [];
2089
+ const selectedPos = [];
2073
2090
  const newIndicators = indicators.map((ind)=>{
2074
2091
  const newInd = chunk_SFZGYJFI_t(ind) ? {
2075
2092
  indicatorKey: ind
@@ -2089,10 +2106,17 @@
2089
2106
  });
2090
2107
  if (!chunk_JK3VNB42_n(originalDatum[MeasureId]) && !chunk_JK3VNB42_n(originalDatum[FoldMeasureValue])) originalDatum[originalDatum[MeasureId]] = originalDatum[FoldMeasureValue];
2091
2108
  const mergedStyle = bodyCellStyleList.reduce((result, style)=>{
2092
- if (selector_selector(originalDatum, style.selector)) return {
2093
- ...result,
2094
- ...pickBodyCellStyle(style)
2095
- };
2109
+ if (selector_selector(originalDatum, style.selector)) {
2110
+ if (selectedPos.length && selectedPos[0].col === datum?.col && selectedPos[0].row === datum?.row) selectedPos.length = 0;
2111
+ selectedPos.push({
2112
+ col: datum?.col,
2113
+ row: datum?.row
2114
+ });
2115
+ return {
2116
+ ...result,
2117
+ ...pickBodyCellStyle(style)
2118
+ };
2119
+ }
2096
2120
  return result;
2097
2121
  }, {});
2098
2122
  return mergedStyle;
@@ -2101,6 +2125,10 @@
2101
2125
  });
2102
2126
  return {
2103
2127
  ...spec,
2128
+ runningConfig: {
2129
+ ...spec?.runningConfig || {},
2130
+ selectedPos
2131
+ },
2104
2132
  indicators: newIndicators
2105
2133
  };
2106
2134
  };
@@ -2129,7 +2157,7 @@
2129
2157
  headerStyle,
2130
2158
  rowHeaderStyle,
2131
2159
  cornerHeaderStyle,
2132
- frameStyle,
2160
+ tableThemeStyle,
2133
2161
  selectionStyle,
2134
2162
  dataConfig,
2135
2163
  pivotTableBodyCell
@@ -2231,6 +2259,54 @@
2231
2259
  if (hasEncoding) return execPipeline(hasEncodingPipeline, context, advancedVSeed);
2232
2260
  return execPipeline(noEncodingPipeline, context, advancedVSeed);
2233
2261
  };
2262
+ const buildMeasures = (advancedVSeed)=>{
2263
+ if (isMeasureTreeWithChildren(advancedVSeed.measures)) {
2264
+ advancedVSeed.measures = normalizeMeasureTree(advancedVSeed.measures);
2265
+ return advancedVSeed;
2266
+ }
2267
+ if (isMeasureTreeWithParentId(advancedVSeed.measures)) {
2268
+ advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures);
2269
+ return advancedVSeed;
2270
+ }
2271
+ if (chatType_isPivotChart(advancedVSeed)) advancedVSeed.measures = basicMeasuresToMeasureTree(advancedVSeed.measures);
2272
+ return advancedVSeed;
2273
+ };
2274
+ const generateMeasuresByParentId = (measures)=>{
2275
+ const measureTree = [];
2276
+ measures.forEach((measure)=>{
2277
+ const parent = measureTree.find((item)=>item.id === measure.parentId);
2278
+ if (parent && 'children' in parent) {
2279
+ parent.children = parent.children || [];
2280
+ if (parent.children.length > 0) parent.alias += `-${measure.alias ?? measure.id}`;
2281
+ parent.children.push(measure);
2282
+ } else if (common_isValid(measure.parentId)) measureTree.push({
2283
+ id: measure.parentId,
2284
+ alias: measure.alias ?? measure.id,
2285
+ children: [
2286
+ measure
2287
+ ]
2288
+ });
2289
+ else measureTree.push({
2290
+ id: DEFAULT_PARENT_ID,
2291
+ alias: measure.alias ?? measure.id,
2292
+ children: [
2293
+ measure
2294
+ ]
2295
+ });
2296
+ });
2297
+ return measureTree;
2298
+ };
2299
+ const basicMeasuresToMeasureTree = (measures)=>{
2300
+ const id = measures.map((item)=>item.id).join('-');
2301
+ const alias = measures.map((item)=>item.alias || item.id).join('-');
2302
+ return [
2303
+ {
2304
+ id,
2305
+ alias,
2306
+ children: measures
2307
+ }
2308
+ ];
2309
+ };
2234
2310
  const addColorToEncoding = (dimensions, encoding, isMultiMeasure)=>{
2235
2311
  encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
2236
2312
  const measureId = dimensions.find((item)=>item.id === MeasureId);
@@ -2239,11 +2315,19 @@
2239
2315
  MeasureId
2240
2316
  ];
2241
2317
  };
2318
+ const addDefaultColorEncoding = (uniqueDimIds, encoding, isMultiMeasure)=>{
2319
+ if (1 === uniqueDimIds.length && uniqueDimIds[0] === MeasureId) encoding.color = uniqueDimIds.slice(0);
2320
+ else if (isMultiMeasure) encoding.color = uniqueDimIds.slice(1);
2321
+ else encoding.color = uniqueDimIds.slice(1).filter((d)=>d !== MeasureId);
2322
+ if (0 === encoding.color.length) encoding.color = [
2323
+ MeasureId
2324
+ ];
2325
+ };
2242
2326
  const defaultEncodingForLine = (advancedVSeed)=>{
2243
2327
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
2244
2328
  const measures = findAllMeasures(vseedMeasures);
2245
2329
  const encoding = {};
2246
- line_generateDefaultDimensionEncoding(dimensions, encoding);
2330
+ line_generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(vseedMeasures));
2247
2331
  line_generateDefaultMeasureEncoding(measures, encoding);
2248
2332
  return {
2249
2333
  ...advancedVSeed,
@@ -2256,8 +2340,9 @@
2256
2340
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
2257
2341
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
2258
2342
  const encoding = {};
2259
- if (hasDimensionEncoding) line_generateDimensionEncoding(dimensions, encoding, measures.length > 1);
2260
- else line_generateDefaultDimensionEncoding(dimensions, encoding);
2343
+ const hasMulti = hasMultipleMeasureInSingleView(vseedMeasures);
2344
+ if (hasDimensionEncoding) line_generateDimensionEncoding(dimensions, encoding, hasMulti);
2345
+ else line_generateDefaultDimensionEncoding(dimensions, encoding, hasMulti);
2261
2346
  if (hasMeasureEncoding) line_generateMeasureEncoding(measures, encoding);
2262
2347
  else line_generateDefaultMeasureEncoding(measures, encoding);
2263
2348
  return {
@@ -2265,10 +2350,10 @@
2265
2350
  encoding
2266
2351
  };
2267
2352
  };
2268
- const line_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
2353
+ const line_generateDefaultDimensionEncoding = (dimensions, encoding, isMultiMeasure)=>{
2269
2354
  const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
2270
2355
  encoding.x = uniqueDimIds.slice(0, 1);
2271
- encoding.color = uniqueDimIds.slice(1);
2356
+ addDefaultColorEncoding(uniqueDimIds, encoding, isMultiMeasure);
2272
2357
  encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureId);
2273
2358
  encoding.detail = [];
2274
2359
  encoding.label = [];
@@ -2309,54 +2394,6 @@
2309
2394
  ...tooltip
2310
2395
  ]);
2311
2396
  };
2312
- const buildMeasures = (advancedVSeed)=>{
2313
- if (isMeasureTreeWithChildren(advancedVSeed.measures)) {
2314
- advancedVSeed.measures = normalizeMeasureTree(advancedVSeed.measures);
2315
- return advancedVSeed;
2316
- }
2317
- if (isMeasureTreeWithParentId(advancedVSeed.measures)) {
2318
- advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures);
2319
- return advancedVSeed;
2320
- }
2321
- if (chatType_isPivotChart(advancedVSeed)) advancedVSeed.measures = basicMeasuresToMeasureTree(advancedVSeed.measures);
2322
- return advancedVSeed;
2323
- };
2324
- const generateMeasuresByParentId = (measures)=>{
2325
- const measureTree = [];
2326
- measures.forEach((measure)=>{
2327
- const parent = measureTree.find((item)=>item.id === measure.parentId);
2328
- if (parent && 'children' in parent) {
2329
- parent.children = parent.children || [];
2330
- if (parent.children.length > 0) parent.alias += `-${measure.alias ?? measure.id}`;
2331
- parent.children.push(measure);
2332
- } else if (common_isValid(measure.parentId)) measureTree.push({
2333
- id: measure.parentId,
2334
- alias: measure.alias ?? measure.id,
2335
- children: [
2336
- measure
2337
- ]
2338
- });
2339
- else measureTree.push({
2340
- id: DEFAULT_PARENT_ID,
2341
- alias: measure.alias ?? measure.id,
2342
- children: [
2343
- measure
2344
- ]
2345
- });
2346
- });
2347
- return measureTree;
2348
- };
2349
- const basicMeasuresToMeasureTree = (measures)=>{
2350
- const id = measures.map((item)=>item.id).join('-');
2351
- const alias = measures.map((item)=>item.alias || item.id).join('-');
2352
- return [
2353
- {
2354
- id,
2355
- alias,
2356
- children: measures
2357
- }
2358
- ];
2359
- };
2360
2397
  const deleteMeasureTreeByCallback = (measureTree, callback)=>{
2361
2398
  if (!measureTree) return;
2362
2399
  const stack = [
@@ -2758,11 +2795,11 @@
2758
2795
  defaultDimensions_defaultDimensions,
2759
2796
  defaultMeasureId_defaultMeasureId,
2760
2797
  encodingAdapter([
2761
- defaultEncodingForLine,
2762
- buildMeasures
2798
+ buildMeasures,
2799
+ defaultEncodingForLine
2763
2800
  ], [
2764
- encodingForLine,
2765
2801
  buildMeasures,
2802
+ encodingForLine,
2766
2803
  pickMeasuresForReshape([
2767
2804
  'tooltip',
2768
2805
  'label',
@@ -5712,7 +5749,7 @@
5712
5749
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
5713
5750
  const measures = findAllMeasures(vseedMeasures);
5714
5751
  const encoding = {};
5715
- column_generateDefaultDimensionEncoding(dimensions, encoding);
5752
+ column_generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(vseedMeasures));
5716
5753
  column_generateDefaultMeasureEncoding(measures, encoding);
5717
5754
  return {
5718
5755
  ...advancedVSeed,
@@ -5725,8 +5762,9 @@
5725
5762
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
5726
5763
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
5727
5764
  const encoding = {};
5728
- if (hasDimensionEncoding) column_generateDimensionEncoding(dimensions, encoding, measures.length > 1);
5729
- else column_generateDefaultDimensionEncoding(dimensions, encoding);
5765
+ const hasMulti = hasMultipleMeasureInSingleView(vseedMeasures);
5766
+ if (hasDimensionEncoding) column_generateDimensionEncoding(dimensions, encoding, hasMulti);
5767
+ else column_generateDefaultDimensionEncoding(dimensions, encoding, hasMulti);
5730
5768
  if (hasMeasureEncoding) column_generateMeasureEncoding(measures, encoding);
5731
5769
  else column_generateDefaultMeasureEncoding(measures, encoding);
5732
5770
  return {
@@ -5734,11 +5772,10 @@
5734
5772
  encoding
5735
5773
  };
5736
5774
  };
5737
- const column_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
5738
- const onlyMeasureId = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureId);
5775
+ const column_generateDefaultDimensionEncoding = (dimensions, encoding, isMultiMeasure)=>{
5739
5776
  const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
5740
5777
  encoding.x = uniqueDimIds.slice(0, 1);
5741
- encoding.color = uniqueDimIds.slice(onlyMeasureId ? 0 : 1);
5778
+ addDefaultColorEncoding(uniqueDimIds, encoding, isMultiMeasure);
5742
5779
  encoding.detail = encoding.color;
5743
5780
  encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureId);
5744
5781
  encoding.label = [];
@@ -5844,11 +5881,11 @@
5844
5881
  defaultDimensions_defaultDimensions,
5845
5882
  defaultMeasureId_defaultMeasureId,
5846
5883
  encodingAdapter([
5847
- defaultEncodingForColumn,
5848
- buildMeasures
5884
+ buildMeasures,
5885
+ defaultEncodingForColumn
5849
5886
  ], [
5850
- encodingForColumn,
5851
5887
  buildMeasures,
5888
+ encodingForColumn,
5852
5889
  pickMeasuresForReshape([
5853
5890
  'tooltip',
5854
5891
  'label',
@@ -6728,11 +6765,11 @@
6728
6765
  defaultDimensions_defaultDimensions,
6729
6766
  defaultMeasureId_defaultMeasureId,
6730
6767
  encodingAdapter([
6731
- defaultEncodingForColumn,
6732
- buildMeasures
6768
+ buildMeasures,
6769
+ defaultEncodingForColumn
6733
6770
  ], [
6734
- encodingForColumn,
6735
6771
  buildMeasures,
6772
+ encodingForColumn,
6736
6773
  pickMeasuresForReshape([
6737
6774
  'tooltip',
6738
6775
  'label',
@@ -6894,11 +6931,11 @@
6894
6931
  defaultDimensions_defaultDimensions,
6895
6932
  defaultMeasureId_defaultMeasureId,
6896
6933
  encodingAdapter([
6897
- defaultEncodingForColumn,
6898
- buildMeasures
6934
+ buildMeasures,
6935
+ defaultEncodingForColumn
6899
6936
  ], [
6900
- encodingForColumn,
6901
6937
  buildMeasures,
6938
+ encodingForColumn,
6902
6939
  pickMeasuresForReshape([
6903
6940
  'tooltip',
6904
6941
  'label',
@@ -6990,7 +7027,7 @@
6990
7027
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
6991
7028
  const measures = findAllMeasures(vseedMeasures);
6992
7029
  const encoding = {};
6993
- bar_generateDefaultDimensionEncoding(dimensions, encoding);
7030
+ bar_generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(vseedMeasures));
6994
7031
  bar_generateDefaultMeasureEncoding(measures, encoding);
6995
7032
  return {
6996
7033
  ...advancedVSeed,
@@ -7003,8 +7040,9 @@
7003
7040
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
7004
7041
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
7005
7042
  const encoding = {};
7006
- if (hasDimensionEncoding) bar_generateDimensionEncoding(dimensions, encoding, measures.length > 1);
7007
- else bar_generateDefaultDimensionEncoding(dimensions, encoding);
7043
+ const hasMulti = hasMultipleMeasureInSingleView(vseedMeasures);
7044
+ if (hasDimensionEncoding) bar_generateDimensionEncoding(dimensions, encoding, hasMulti);
7045
+ else bar_generateDefaultDimensionEncoding(dimensions, encoding, hasMulti);
7008
7046
  if (hasMeasureEncoding) bar_generateMeasureEncoding(measures, encoding);
7009
7047
  else bar_generateDefaultMeasureEncoding(measures, encoding);
7010
7048
  return {
@@ -7012,11 +7050,10 @@
7012
7050
  encoding
7013
7051
  };
7014
7052
  };
7015
- const bar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
7016
- const onlyMeasureId = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureId);
7053
+ const bar_generateDefaultDimensionEncoding = (dimensions, encoding, isMultiMeasure)=>{
7017
7054
  const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
7018
7055
  encoding.y = uniqueDimIds.slice(0, 1);
7019
- encoding.color = uniqueDimIds.slice(onlyMeasureId ? 0 : 1);
7056
+ addDefaultColorEncoding(uniqueDimIds, encoding, isMultiMeasure);
7020
7057
  encoding.detail = encoding.color;
7021
7058
  encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureId);
7022
7059
  encoding.label = [];
@@ -7077,11 +7114,11 @@
7077
7114
  defaultDimensions_defaultDimensions,
7078
7115
  defaultMeasureId_defaultMeasureId,
7079
7116
  encodingAdapter([
7080
- defaultEncodingForBar,
7081
- buildMeasures
7117
+ buildMeasures,
7118
+ defaultEncodingForBar
7082
7119
  ], [
7083
- encodingForBar,
7084
7120
  buildMeasures,
7121
+ encodingForBar,
7085
7122
  pickMeasuresForReshape([
7086
7123
  'tooltip',
7087
7124
  'label',
@@ -7344,11 +7381,11 @@
7344
7381
  defaultDimensions_defaultDimensions,
7345
7382
  defaultMeasureId_defaultMeasureId,
7346
7383
  encodingAdapter([
7347
- defaultEncodingForBar,
7348
- buildMeasures
7384
+ buildMeasures,
7385
+ defaultEncodingForBar
7349
7386
  ], [
7350
- encodingForBar,
7351
7387
  buildMeasures,
7388
+ encodingForBar,
7352
7389
  pickMeasuresForReshape([
7353
7390
  'tooltip',
7354
7391
  'label',
@@ -7459,11 +7496,11 @@
7459
7496
  defaultDimensions_defaultDimensions,
7460
7497
  defaultMeasureId_defaultMeasureId,
7461
7498
  encodingAdapter([
7462
- defaultEncodingForBar,
7463
- buildMeasures
7499
+ buildMeasures,
7500
+ defaultEncodingForBar
7464
7501
  ], [
7465
- encodingForBar,
7466
7502
  buildMeasures,
7503
+ encodingForBar,
7467
7504
  pickMeasuresForReshape([
7468
7505
  'tooltip',
7469
7506
  'label',
@@ -7547,11 +7584,11 @@
7547
7584
  defaultDimensions_defaultDimensions,
7548
7585
  defaultMeasureId_defaultMeasureId,
7549
7586
  encodingAdapter([
7550
- defaultEncodingForLine,
7551
- buildMeasures
7587
+ buildMeasures,
7588
+ defaultEncodingForLine
7552
7589
  ], [
7553
- encodingForLine,
7554
7590
  buildMeasures,
7591
+ encodingForLine,
7555
7592
  pickMeasuresForReshape([
7556
7593
  'tooltip',
7557
7594
  'label',
@@ -7745,11 +7782,11 @@
7745
7782
  defaultDimensions_defaultDimensions,
7746
7783
  defaultMeasureId_defaultMeasureId,
7747
7784
  encodingAdapter([
7748
- defaultEncodingForLine,
7749
- buildMeasures
7785
+ buildMeasures,
7786
+ defaultEncodingForLine
7750
7787
  ], [
7751
- encodingForLine,
7752
7788
  buildMeasures,
7789
+ encodingForLine,
7753
7790
  pickMeasuresForReshape([
7754
7791
  'tooltip',
7755
7792
  'label',
@@ -7832,74 +7869,6 @@
7832
7869
  Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
7833
7870
  Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
7834
7871
  };
7835
- const defaultEncodingForScatter = (advancedVSeed)=>{
7836
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7837
- const measures = findAllMeasures(vseedMeasures);
7838
- const encoding = {};
7839
- scatter_generateDefaultDimensionEncoding(dimensions, encoding);
7840
- scatter_generateDefaultMeasureEncoding(measures, encoding);
7841
- return {
7842
- ...advancedVSeed,
7843
- encoding
7844
- };
7845
- };
7846
- const encodingForScatter = (advancedVSeed)=>{
7847
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7848
- const measures = findAllMeasures(vseedMeasures);
7849
- const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
7850
- const hasMeasureEncoding = measures.some((item)=>item.encoding);
7851
- const encoding = {};
7852
- if (hasDimensionEncoding) scatter_generateDimensionEncoding(dimensions, encoding);
7853
- else scatter_generateDefaultDimensionEncoding(dimensions, encoding);
7854
- if (hasMeasureEncoding) scatter_generateMeasureEncoding(measures, encoding);
7855
- else scatter_generateDefaultMeasureEncoding(measures, encoding);
7856
- return {
7857
- ...advancedVSeed,
7858
- encoding
7859
- };
7860
- };
7861
- const scatter_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
7862
- const dimensionsWithoutMeasureId = dimensions.filter((item)=>item.id !== MeasureId);
7863
- const uniqueDimIds = chunk_QJLMYOTX_i(dimensionsWithoutMeasureId.map((d)=>d.id));
7864
- encoding.detail = encoding.color;
7865
- encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureId);
7866
- encoding.label = [];
7867
- encoding.row = [];
7868
- encoding.column = [];
7869
- };
7870
- const scatter_generateDimensionEncoding = (dimensions, encoding)=>{
7871
- encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7872
- encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7873
- if (0 === encoding.detail.length) encoding.detail = [
7874
- MeasureId
7875
- ];
7876
- encoding.tooltip = chunk_QJLMYOTX_i(dimensions.map((item)=>item.id));
7877
- encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureId);
7878
- encoding.label = chunk_QJLMYOTX_i(dimensions.filter((item)=>'label' === item.encoding).map((item)=>item.id));
7879
- encoding.label = encoding.label.filter((d)=>d !== MeasureId);
7880
- };
7881
- const scatter_generateDefaultMeasureEncoding = (measures, encoding)=>{
7882
- encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
7883
- };
7884
- const scatter_generateMeasureEncoding = (measures, encoding)=>{
7885
- encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
7886
- const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7887
- if (color.length > 0) encoding.color = [
7888
- color[0]
7889
- ];
7890
- encoding.size = chunk_QJLMYOTX_i(measures.filter((item)=>'size' === item.encoding).map((item)=>item.id));
7891
- const label = chunk_QJLMYOTX_i(measures.filter((item)=>'label' === item.encoding).map((item)=>item.id));
7892
- encoding.label = chunk_QJLMYOTX_i([
7893
- ...encoding.label || [],
7894
- ...label
7895
- ]);
7896
- const tooltip = chunk_QJLMYOTX_i(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
7897
- encoding.tooltip = chunk_QJLMYOTX_i([
7898
- ...encoding.tooltip || [],
7899
- ...label,
7900
- ...tooltip
7901
- ]);
7902
- };
7903
7872
  const buildMeasuresForScatter = (advancedVSeed, context)=>{
7904
7873
  const { vseed } = context;
7905
7874
  if (isMeasureTreeWithChildren(advancedVSeed.measures)) return advancedVSeed;
@@ -7907,33 +7876,49 @@
7907
7876
  advancedVSeed.measures = buildMeasuresForScatter_generateMeasuresByParentId(advancedVSeed.measures);
7908
7877
  return advancedVSeed;
7909
7878
  }
7910
- const scatterMeasures = vseed.scatterMeasures ? chunk_BCBB46UE_d(vseed.scatterMeasures) : basicMeasuresToScatterMeasures(advancedVSeed.measures || []);
7879
+ if (vseed.scatterMeasures) {
7880
+ advancedVSeed.measures = scatterMeasuresToMeasureTree(chunk_BCBB46UE_d(vseed.scatterMeasures));
7881
+ return advancedVSeed;
7882
+ }
7883
+ const { scatterMeasures, encodedMeasures } = basicMeasuresToScatterMeasures(advancedVSeed.measures || []);
7911
7884
  advancedVSeed.measures = scatterMeasuresToMeasureTree(scatterMeasures);
7885
+ if (encodedMeasures.length) encodedMeasures.forEach((m)=>{
7886
+ advancedVSeed.measures.push(m);
7887
+ });
7912
7888
  return advancedVSeed;
7913
7889
  };
7914
7890
  const basicMeasuresToScatterMeasures = (basicMeasures)=>{
7915
7891
  const yMeasures = [];
7916
7892
  const xMeasures = [];
7893
+ const encodedMeasures = [];
7917
7894
  for(let index = 0; index < basicMeasures.length; index++){
7918
7895
  const item = basicMeasures[index];
7919
- const encoding = Array.isArray(item.encoding) ? item.encoding : [
7920
- item.encoding
7921
- ];
7922
- const isYAxis = encoding.includes('yAxis');
7923
- const isXAxis = encoding.includes('xAxis');
7896
+ const encoding = item.encoding;
7897
+ const isYAxis = 'yAxis' === encoding;
7898
+ const isXAxis = 'xAxis' === encoding;
7899
+ const isOther = encoding && [
7900
+ 'color',
7901
+ 'label',
7902
+ 'tooltip',
7903
+ 'detail'
7904
+ ].includes(encoding);
7924
7905
  if (isYAxis) yMeasures.push(item);
7925
7906
  else if (isXAxis) xMeasures.push(item);
7907
+ else if (isOther) encodedMeasures.push(item);
7926
7908
  else if (0 !== index) yMeasures.push(item);
7927
7909
  else xMeasures.push(item);
7928
7910
  }
7929
7911
  if (0 === yMeasures.length && xMeasures.length > 0) yMeasures.push(xMeasures[0]);
7930
- return [
7931
- {
7932
- id: 'scatterMeasures',
7933
- xMeasures,
7934
- yMeasures
7935
- }
7936
- ];
7912
+ return {
7913
+ scatterMeasures: [
7914
+ {
7915
+ id: 'scatterMeasures',
7916
+ xMeasures,
7917
+ yMeasures
7918
+ }
7919
+ ],
7920
+ encodedMeasures
7921
+ };
7937
7922
  };
7938
7923
  const scatterMeasuresToMeasureTree = (scatterMeasures)=>{
7939
7924
  const measureTree = scatterMeasures.map((item, index)=>{
@@ -7975,6 +7960,7 @@
7975
7960
  };
7976
7961
  const buildMeasuresForScatter_generateMeasuresByParentId = (measures)=>{
7977
7962
  const scatterMeasures = [];
7963
+ const encodedMeasures = [];
7978
7964
  measures.forEach((item)=>{
7979
7965
  const id = item.parentId || DEFAULT_PARENT_ID;
7980
7966
  if (!scatterMeasures.find((d)=>d.id === id)) scatterMeasures.push({
@@ -7984,18 +7970,93 @@
7984
7970
  });
7985
7971
  const scatterChart = scatterMeasures.find((d)=>d.id === id);
7986
7972
  if (!scatterChart || !Array.isArray(scatterChart.yMeasures) || !Array.isArray(scatterChart.xMeasures)) return;
7987
- const encoding = Array.isArray(item.encoding) ? item.encoding : [
7988
- item.encoding
7989
- ].filter(Boolean);
7990
- const isX = encoding.includes('xAxis');
7991
- const isY = encoding.includes('yAxis');
7992
- const isEmpty = !encoding.length;
7993
- if (isY) scatterChart.yMeasures.push(item);
7994
- else if (isX) scatterChart.xMeasures.push(item);
7995
- else if (isEmpty) if (0 !== scatterChart.yMeasures.length) scatterChart.yMeasures.push(item);
7973
+ const isYAxis = 'yAxis' === item.encoding;
7974
+ const isXAxis = 'xAxis' === item.encoding;
7975
+ const isOther = item.encoding && [
7976
+ 'color',
7977
+ 'label',
7978
+ 'tooltip',
7979
+ 'detail'
7980
+ ].includes(item.encoding);
7981
+ if (isYAxis) scatterChart.yMeasures.push(item);
7982
+ else if (isXAxis) scatterChart.xMeasures.push(item);
7983
+ else if (isOther) encodedMeasures.push(item);
7984
+ else if (0 !== scatterChart.yMeasures.length) scatterChart.yMeasures.push(item);
7996
7985
  else scatterChart.xMeasures.push(item);
7997
7986
  });
7998
- return scatterMeasuresToMeasureTree(scatterMeasures);
7987
+ const res = scatterMeasuresToMeasureTree(scatterMeasures);
7988
+ if (encodedMeasures.length) encodedMeasures.forEach((m)=>{
7989
+ res.push(m);
7990
+ });
7991
+ return res;
7992
+ };
7993
+ const defaultEncodingForScatter = (advancedVSeed)=>{
7994
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7995
+ const measures = findAllMeasures(vseedMeasures);
7996
+ const encoding = {};
7997
+ scatter_generateDefaultDimensionEncoding(dimensions, encoding);
7998
+ scatter_generateDefaultMeasureEncoding(measures, encoding);
7999
+ return {
8000
+ ...advancedVSeed,
8001
+ encoding
8002
+ };
8003
+ };
8004
+ const encodingForScatter = (advancedVSeed)=>{
8005
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
8006
+ const measures = findAllMeasures(vseedMeasures);
8007
+ const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
8008
+ const hasMeasureEncoding = measures.some((item)=>item.encoding);
8009
+ const encoding = {};
8010
+ if (hasDimensionEncoding) scatter_generateDimensionEncoding(dimensions, encoding);
8011
+ else scatter_generateDefaultDimensionEncoding(dimensions, encoding);
8012
+ if (hasMeasureEncoding) scatter_generateMeasureEncoding(measures, encoding);
8013
+ else scatter_generateDefaultMeasureEncoding(measures, encoding);
8014
+ return {
8015
+ ...advancedVSeed,
8016
+ encoding
8017
+ };
8018
+ };
8019
+ const scatter_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
8020
+ const dimensionsWithoutMeasureId = dimensions.filter((item)=>item.id !== MeasureId);
8021
+ const uniqueDimIds = chunk_QJLMYOTX_i(dimensionsWithoutMeasureId.map((d)=>d.id));
8022
+ encoding.detail = encoding.color;
8023
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureId);
8024
+ encoding.label = [];
8025
+ encoding.row = [];
8026
+ encoding.column = [];
8027
+ };
8028
+ const scatter_generateDimensionEncoding = (dimensions, encoding)=>{
8029
+ encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
8030
+ encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
8031
+ if (0 === encoding.detail.length) encoding.detail = [
8032
+ MeasureId
8033
+ ];
8034
+ encoding.tooltip = chunk_QJLMYOTX_i(dimensions.map((item)=>item.id));
8035
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureId);
8036
+ encoding.label = chunk_QJLMYOTX_i(dimensions.filter((item)=>'label' === item.encoding).map((item)=>item.id));
8037
+ encoding.label = encoding.label.filter((d)=>d !== MeasureId);
8038
+ };
8039
+ const scatter_generateDefaultMeasureEncoding = (measures, encoding)=>{
8040
+ encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
8041
+ };
8042
+ const scatter_generateMeasureEncoding = (measures, encoding)=>{
8043
+ encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
8044
+ const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
8045
+ if (color.length > 0) encoding.color = [
8046
+ color[0]
8047
+ ];
8048
+ encoding.size = chunk_QJLMYOTX_i(measures.filter((item)=>'size' === item.encoding).map((item)=>item.id));
8049
+ const label = chunk_QJLMYOTX_i(measures.filter((item)=>'label' === item.encoding).map((item)=>item.id));
8050
+ encoding.label = chunk_QJLMYOTX_i([
8051
+ ...encoding.label || [],
8052
+ ...label
8053
+ ]);
8054
+ const tooltip = chunk_QJLMYOTX_i(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
8055
+ encoding.tooltip = chunk_QJLMYOTX_i([
8056
+ ...encoding.tooltip || [],
8057
+ ...label,
8058
+ ...tooltip
8059
+ ]);
7999
8060
  };
8000
8061
  const scatterConfig = (advancedVSeed, context)=>{
8001
8062
  const { vseed } = context;
@@ -8032,7 +8093,7 @@
8032
8093
  const { vseed } = context;
8033
8094
  const { dataset } = vseed;
8034
8095
  const { encoding, chartType } = advancedVSeed;
8035
- const measures = advancedVSeed.reshapeMeasures ?? advancedVSeed.measures ?? [];
8096
+ const measures = (advancedVSeed.reshapeMeasures ?? advancedVSeed.measures ?? []).filter((m)=>m && m.children);
8036
8097
  const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? [];
8037
8098
  if (measures.length > 2) throw new Error('measures can not be more than 2 groups in scatter');
8038
8099
  const foldInfoList = [];
@@ -8164,11 +8225,11 @@
8164
8225
  defaultDimensions_defaultDimensions,
8165
8226
  defaultMeasureId_defaultMeasureId,
8166
8227
  encodingAdapter([
8167
- defaultEncodingForScatter,
8168
- buildMeasuresForScatter
8228
+ buildMeasuresForScatter,
8229
+ defaultEncodingForScatter
8169
8230
  ], [
8170
- encodingForScatter,
8171
8231
  buildMeasuresForScatter,
8232
+ encodingForScatter,
8172
8233
  pickMeasuresForReshape([
8173
8234
  'tooltip',
8174
8235
  'label',
@@ -8894,75 +8955,6 @@
8894
8955
  Builder._advancedPipelineMap.scatter = scatterAdvancedPipeline;
8895
8956
  Builder._specPipelineMap.scatter = scatterSpecPipeline;
8896
8957
  };
8897
- const defaultEncodingForDualAxis = (advancedVSeed)=>{
8898
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
8899
- const measures = findAllMeasures(vseedMeasures);
8900
- const encoding = {};
8901
- dualAxis_generateDefaultDimensionEncoding(dimensions, encoding);
8902
- dualAxis_generateDefaultMeasureEncoding(measures, encoding);
8903
- return {
8904
- ...advancedVSeed,
8905
- encoding
8906
- };
8907
- };
8908
- const encodingForDualAxis = (advancedVSeed)=>{
8909
- const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
8910
- const measures = findAllMeasures(vseedMeasures);
8911
- const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
8912
- const hasMeasureEncoding = measures.some((item)=>item.encoding);
8913
- const encoding = {};
8914
- if (hasDimensionEncoding) dualAxis_generateDimensionEncoding(dimensions, encoding, measures.length > 1);
8915
- else dualAxis_generateDefaultDimensionEncoding(dimensions, encoding);
8916
- if (hasMeasureEncoding) dualAxis_generateMeasureEncoding(measures, encoding);
8917
- else dualAxis_generateDefaultMeasureEncoding(measures, encoding);
8918
- return {
8919
- ...advancedVSeed,
8920
- encoding
8921
- };
8922
- };
8923
- const dualAxis_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
8924
- const onlyMeasureId = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureId);
8925
- const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
8926
- encoding.x = uniqueDimIds.slice(0, 1);
8927
- encoding.color = uniqueDimIds.slice(onlyMeasureId ? 0 : 1);
8928
- encoding.detail = encoding.color;
8929
- encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureId);
8930
- encoding.label = [];
8931
- encoding.row = [];
8932
- encoding.column = [];
8933
- };
8934
- const dualAxis_generateDimensionEncoding = (dimensions, encoding, isMultiMeasure)=>{
8935
- encoding.x = chunk_QJLMYOTX_i(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
8936
- if (0 === encoding.x.length) encoding.x = [
8937
- dimensions[0].id
8938
- ];
8939
- addColorToEncoding(dimensions, encoding, isMultiMeasure);
8940
- encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
8941
- if (0 === encoding.detail.length) encoding.detail = encoding.color;
8942
- encoding.tooltip = chunk_QJLMYOTX_i(dimensions.map((item)=>item.id));
8943
- encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureId);
8944
- encoding.label = chunk_QJLMYOTX_i(dimensions.filter((item)=>'label' === item.encoding).map((item)=>item.id));
8945
- encoding.label = encoding.label.filter((d)=>d !== MeasureId);
8946
- };
8947
- const dualAxis_generateDefaultMeasureEncoding = (measures, encoding)=>{
8948
- encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
8949
- };
8950
- const dualAxis_generateMeasureEncoding = (measures, encoding)=>{
8951
- encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
8952
- const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
8953
- if (color.length > 0) encoding.color = color;
8954
- const label = chunk_QJLMYOTX_i(measures.filter((item)=>'label' === item.encoding).map((item)=>item.id));
8955
- encoding.label = chunk_QJLMYOTX_i([
8956
- ...encoding.label || [],
8957
- ...label
8958
- ]);
8959
- const tooltip = chunk_QJLMYOTX_i(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
8960
- encoding.tooltip = chunk_QJLMYOTX_i([
8961
- ...encoding.tooltip || [],
8962
- ...label,
8963
- ...tooltip
8964
- ]);
8965
- };
8966
8958
  const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
8967
8959
  const { vseed } = context;
8968
8960
  if (isMeasureTreeWithChildren(advancedVSeed.measures)) return advancedVSeed;
@@ -8970,32 +8962,48 @@
8970
8962
  advancedVSeed.measures = buildMeasuresForDualAxis_generateMeasuresByParentId(advancedVSeed.measures);
8971
8963
  return advancedVSeed;
8972
8964
  }
8973
- const dualMeasures = vseed.dualMeasures ? chunk_BCBB46UE_d(vseed.dualMeasures) : basicMeasuresToDualMeasures(advancedVSeed.measures || []);
8965
+ if (vseed.dualMeasures) {
8966
+ advancedVSeed.measures = dualMeasuresToMeasureTree(chunk_BCBB46UE_d(vseed.dualMeasures));
8967
+ return advancedVSeed;
8968
+ }
8969
+ const { dualMeasures, encodedMeasures } = basicMeasuresToDualMeasures(advancedVSeed.measures || []);
8974
8970
  advancedVSeed.measures = dualMeasuresToMeasureTree(dualMeasures);
8971
+ if (encodedMeasures.length) encodedMeasures.forEach((m)=>{
8972
+ advancedVSeed.measures.push(m);
8973
+ });
8975
8974
  return advancedVSeed;
8976
8975
  };
8977
8976
  const basicMeasuresToDualMeasures = (basicMeasures)=>{
8978
8977
  const primaryMeasures = [];
8979
8978
  const secondaryMeasures = [];
8979
+ const encodedMeasures = [];
8980
8980
  for(let index = 0; index < basicMeasures.length; index++){
8981
8981
  const item = basicMeasures[index];
8982
- const encoding = Array.isArray(item.encoding) ? item.encoding : [
8983
- item.encoding
8984
- ];
8985
- const isPrimaryYAxis = encoding.includes('primaryYAxis');
8986
- const isSecondaryYAxis = encoding.includes('secondaryYAxis');
8982
+ const encoding = item.encoding;
8983
+ const isPrimaryYAxis = 'primaryYAxis' === encoding;
8984
+ const isSecondaryYAxis = 'secondaryYAxis' === encoding;
8985
+ const isOtherEncoding = item.encoding && [
8986
+ 'color',
8987
+ 'label',
8988
+ 'tooltip',
8989
+ 'detail'
8990
+ ].includes(item.encoding);
8987
8991
  if (isPrimaryYAxis) primaryMeasures.push(item);
8988
8992
  else if (isSecondaryYAxis) secondaryMeasures.push(item);
8993
+ else if (isOtherEncoding) encodedMeasures.push(item);
8989
8994
  else if (0 === index) primaryMeasures.push(item);
8990
8995
  else secondaryMeasures.push(item);
8991
8996
  }
8992
- return [
8993
- {
8994
- id: 'dualMeasures',
8995
- primaryMeasures,
8996
- secondaryMeasures
8997
- }
8998
- ];
8997
+ return {
8998
+ dualMeasures: [
8999
+ {
9000
+ id: 'dualMeasures',
9001
+ primaryMeasures,
9002
+ secondaryMeasures
9003
+ }
9004
+ ],
9005
+ encodedMeasures
9006
+ };
8999
9007
  };
9000
9008
  const dualMeasuresToMeasureTree = (dualMeasures)=>{
9001
9009
  const measureTree = dualMeasures.map((item, index)=>{
@@ -9037,6 +9045,7 @@
9037
9045
  };
9038
9046
  const buildMeasuresForDualAxis_generateMeasuresByParentId = (measures)=>{
9039
9047
  const dualMeasures = [];
9048
+ const encodedMeasures = [];
9040
9049
  measures.forEach((item)=>{
9041
9050
  const id = item.parentId || DEFAULT_PARENT_ID;
9042
9051
  if (!dualMeasures.find((d)=>d.id === id)) dualMeasures.push({
@@ -9046,18 +9055,103 @@
9046
9055
  });
9047
9056
  const dualChart = dualMeasures.find((d)=>d.id === id);
9048
9057
  if (!dualChart || !Array.isArray(dualChart.primaryMeasures) || !Array.isArray(dualChart.secondaryMeasures)) return;
9049
- const encoding = Array.isArray(item.encoding) ? item.encoding : [
9050
- item.encoding
9051
- ].filter(Boolean);
9052
- const isPrimary = encoding.includes('primaryYAxis');
9053
- const isSecondary = encoding.includes('secondaryYAxis');
9054
- const isEmpty = !item.encoding;
9055
- if (isPrimary) dualChart.primaryMeasures.push(item);
9056
- else if (isSecondary) dualChart.secondaryMeasures.push(item);
9057
- else if (isEmpty) if (0 === dualChart.primaryMeasures.length) dualChart.primaryMeasures.push(item);
9058
+ const encoding = item.encoding;
9059
+ const isPrimaryYAxis = 'primaryYAxis' === encoding;
9060
+ const isSecondaryYAxis = 'secondaryYAxis' === encoding;
9061
+ const isOtherEncoding = item.encoding && [
9062
+ 'color',
9063
+ 'label',
9064
+ 'tooltip',
9065
+ 'detail'
9066
+ ].includes(item.encoding);
9067
+ if (isPrimaryYAxis) dualChart.primaryMeasures.push(item);
9068
+ else if (isSecondaryYAxis) dualChart.secondaryMeasures.push(item);
9069
+ else if (isOtherEncoding) encodedMeasures.push(item);
9070
+ else if (0 === dualChart.primaryMeasures.length) dualChart.primaryMeasures.push(item);
9058
9071
  else dualChart.secondaryMeasures.push(item);
9059
9072
  });
9060
- return dualMeasuresToMeasureTree(dualMeasures);
9073
+ const res = dualMeasuresToMeasureTree(dualMeasures);
9074
+ if (encodedMeasures.length) encodedMeasures.forEach((m)=>{
9075
+ res.push(m);
9076
+ });
9077
+ return res;
9078
+ };
9079
+ const checkSingleViewMultiMeasures = (measures = [])=>measures.length <= 1 && (measures[0].children ?? []).length <= 1;
9080
+ const dualAxis_hasMultipleMeasureInSingleView = (measures = [])=>{
9081
+ const depth = measureDepth(measures);
9082
+ if (depth >= 3) return measures.some((m)=>m && m.children && !checkSingleViewMultiMeasures(m.children));
9083
+ if (2 === depth) return !checkSingleViewMultiMeasures(measures);
9084
+ if (1 === depth) return measures.length >= 1;
9085
+ return false;
9086
+ };
9087
+ const defaultEncodingForDualAxis = (advancedVSeed)=>{
9088
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
9089
+ const measures = findAllMeasures(vseedMeasures);
9090
+ const encoding = {};
9091
+ dualAxis_generateDefaultDimensionEncoding(dimensions, encoding, dualAxis_hasMultipleMeasureInSingleView(vseedMeasures));
9092
+ dualAxis_generateDefaultMeasureEncoding(measures, encoding);
9093
+ return {
9094
+ ...advancedVSeed,
9095
+ encoding
9096
+ };
9097
+ };
9098
+ const encodingForDualAxis = (advancedVSeed)=>{
9099
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
9100
+ const measures = findAllMeasures(vseedMeasures);
9101
+ const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
9102
+ const hasMeasureEncoding = measures.some((item)=>item.encoding);
9103
+ const encoding = {};
9104
+ const hasMulti = dualAxis_hasMultipleMeasureInSingleView(vseedMeasures);
9105
+ if (hasDimensionEncoding) dualAxis_generateDimensionEncoding(dimensions, encoding, hasMulti);
9106
+ else dualAxis_generateDefaultDimensionEncoding(dimensions, encoding, hasMulti);
9107
+ if (hasMeasureEncoding) dualAxis_generateMeasureEncoding(measures, encoding);
9108
+ else dualAxis_generateDefaultMeasureEncoding(measures, encoding);
9109
+ return {
9110
+ ...advancedVSeed,
9111
+ encoding
9112
+ };
9113
+ };
9114
+ const dualAxis_generateDefaultDimensionEncoding = (dimensions, encoding, isMultiMeasure)=>{
9115
+ const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
9116
+ encoding.x = uniqueDimIds.slice(0, 1);
9117
+ addDefaultColorEncoding(uniqueDimIds, encoding, isMultiMeasure);
9118
+ encoding.detail = encoding.color;
9119
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureId);
9120
+ encoding.label = [];
9121
+ encoding.row = [];
9122
+ encoding.column = [];
9123
+ };
9124
+ const dualAxis_generateDimensionEncoding = (dimensions, encoding, isMultiMeasure)=>{
9125
+ encoding.x = chunk_QJLMYOTX_i(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
9126
+ if (0 === encoding.x.length) encoding.x = [
9127
+ dimensions[0].id
9128
+ ];
9129
+ addColorToEncoding(dimensions, encoding, isMultiMeasure);
9130
+ encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
9131
+ if (0 === encoding.detail.length) encoding.detail = encoding.color;
9132
+ encoding.tooltip = chunk_QJLMYOTX_i(dimensions.map((item)=>item.id));
9133
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureId);
9134
+ encoding.label = chunk_QJLMYOTX_i(dimensions.filter((item)=>'label' === item.encoding).map((item)=>item.id));
9135
+ encoding.label = encoding.label.filter((d)=>d !== MeasureId);
9136
+ };
9137
+ const dualAxis_generateDefaultMeasureEncoding = (measures, encoding)=>{
9138
+ encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
9139
+ };
9140
+ const dualAxis_generateMeasureEncoding = (measures, encoding)=>{
9141
+ encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
9142
+ const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
9143
+ if (color.length > 0) encoding.color = color;
9144
+ const label = chunk_QJLMYOTX_i(measures.filter((item)=>'label' === item.encoding).map((item)=>item.id));
9145
+ encoding.label = chunk_QJLMYOTX_i([
9146
+ ...encoding.label || [],
9147
+ ...label
9148
+ ]);
9149
+ const tooltip = chunk_QJLMYOTX_i(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
9150
+ encoding.tooltip = chunk_QJLMYOTX_i([
9151
+ ...encoding.tooltip || [],
9152
+ ...label,
9153
+ ...tooltip
9154
+ ]);
9061
9155
  };
9062
9156
  const reshapeWithDualEncoding = (advancedVSeed, context)=>{
9063
9157
  const result = {
@@ -9066,7 +9160,7 @@
9066
9160
  const { vseed } = context;
9067
9161
  const { dataset } = vseed;
9068
9162
  const { encoding, chartType } = advancedVSeed;
9069
- const measures = advancedVSeed.reshapeMeasures ?? advancedVSeed.measures ?? [];
9163
+ const measures = (advancedVSeed.reshapeMeasures ?? advancedVSeed.measures ?? []).filter((m)=>m && m.children);
9070
9164
  const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? [];
9071
9165
  if (measures.length > 2) throw new Error('measures can not be more than 2 groups in dualAxis');
9072
9166
  const foldInfoList = [];
@@ -9131,9 +9225,9 @@
9131
9225
  const measureGroups = [];
9132
9226
  const depth = measureDepth(measures);
9133
9227
  if (3 === depth) measures.forEach((measure)=>{
9134
- measureGroups.push(measure.children);
9228
+ if (measure.children) measureGroups.push(measure.children);
9135
9229
  });
9136
- else if (2 === depth) measureGroups.push(measures);
9230
+ else if (2 === depth) measureGroups.push(measures.filter((m)=>m && m.children));
9137
9231
  measureGroups.forEach((measures, index)=>{
9138
9232
  if (measures.length > 2) throw new Error('measures can not be more than 2 groups in dualAxis');
9139
9233
  const foldInfoList = [];
@@ -9226,11 +9320,11 @@
9226
9320
  defaultDimensions_defaultDimensions,
9227
9321
  defaultMeasureId_defaultMeasureId,
9228
9322
  encodingAdapter([
9229
- defaultEncodingForDualAxis,
9230
- buildMeasuresForDualAxis
9323
+ buildMeasuresForDualAxis,
9324
+ defaultEncodingForDualAxis
9231
9325
  ], [
9232
- encodingForDualAxis,
9233
9326
  buildMeasuresForDualAxis,
9327
+ encodingForDualAxis,
9234
9328
  pickMeasuresForReshape([
9235
9329
  'tooltip',
9236
9330
  'label',
@@ -10250,7 +10344,7 @@
10250
10344
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
10251
10345
  const measures = findAllMeasures(vseedMeasures);
10252
10346
  const encoding = {};
10253
- rose_generateDefaultDimensionEncoding(dimensions, encoding);
10347
+ rose_generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(vseedMeasures));
10254
10348
  rose_generateDefaultMeasureEncoding(measures, encoding);
10255
10349
  return {
10256
10350
  ...advancedVSeed,
@@ -10263,8 +10357,9 @@
10263
10357
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
10264
10358
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
10265
10359
  const encoding = {};
10266
- if (hasDimensionEncoding) rose_generateDimensionEncoding(dimensions, encoding, measures.length > 1);
10267
- else rose_generateDefaultDimensionEncoding(dimensions, encoding);
10360
+ const hasMulti = hasMultipleMeasureInSingleView(vseedMeasures);
10361
+ if (hasDimensionEncoding) rose_generateDimensionEncoding(dimensions, encoding, hasMulti);
10362
+ else rose_generateDefaultDimensionEncoding(dimensions, encoding, hasMulti);
10268
10363
  if (hasMeasureEncoding) rose_generateMeasureEncoding(measures, encoding);
10269
10364
  else rose_generateDefaultMeasureEncoding(measures, encoding);
10270
10365
  return {
@@ -10272,11 +10367,10 @@
10272
10367
  encoding
10273
10368
  };
10274
10369
  };
10275
- const rose_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
10276
- const onlyMeasureId = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureId);
10370
+ const rose_generateDefaultDimensionEncoding = (dimensions, encoding, isMultiMeasure)=>{
10277
10371
  const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
10278
10372
  encoding.angle = uniqueDimIds.slice(0, 1);
10279
- encoding.color = uniqueDimIds.slice(onlyMeasureId ? 0 : 1);
10373
+ addDefaultColorEncoding(uniqueDimIds, encoding, isMultiMeasure);
10280
10374
  encoding.detail = encoding.color;
10281
10375
  encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureId);
10282
10376
  encoding.label = [];
@@ -10321,11 +10415,11 @@
10321
10415
  defaultDimensions_defaultDimensions,
10322
10416
  defaultMeasureId_defaultMeasureId,
10323
10417
  encodingAdapter([
10324
- defaultEncodingForRose,
10325
- buildMeasures
10418
+ buildMeasures,
10419
+ defaultEncodingForRose
10326
10420
  ], [
10327
- encodingForRose,
10328
10421
  buildMeasures,
10422
+ encodingForRose,
10329
10423
  pickMeasuresForReshape([
10330
10424
  'tooltip',
10331
10425
  'label',
@@ -10474,11 +10568,11 @@
10474
10568
  defaultDimensions_defaultDimensions,
10475
10569
  defaultMeasureId_defaultMeasureId,
10476
10570
  encodingAdapter([
10477
- defaultEncodingForRose,
10478
- buildMeasures
10571
+ buildMeasures,
10572
+ defaultEncodingForRose
10479
10573
  ], [
10480
- encodingForRose,
10481
10574
  buildMeasures,
10575
+ encodingForRose,
10482
10576
  pickMeasuresForReshape([
10483
10577
  'tooltip',
10484
10578
  'label',
@@ -10597,7 +10691,7 @@
10597
10691
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
10598
10692
  const measures = findAllMeasures(vseedMeasures);
10599
10693
  const encoding = {};
10600
- radar_generateDefaultDimensionEncoding(dimensions, encoding);
10694
+ radar_generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(vseedMeasures));
10601
10695
  radar_generateDefaultMeasureEncoding(measures, encoding);
10602
10696
  return {
10603
10697
  ...advancedVSeed,
@@ -10610,8 +10704,9 @@
10610
10704
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
10611
10705
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
10612
10706
  const encoding = {};
10613
- if (hasDimensionEncoding) radar_generateDimensionEncoding(dimensions, encoding, measures.length > 1);
10614
- else radar_generateDefaultDimensionEncoding(dimensions, encoding);
10707
+ const hasMulti = hasMultipleMeasureInSingleView(vseedMeasures);
10708
+ if (hasDimensionEncoding) radar_generateDimensionEncoding(dimensions, encoding, hasMulti);
10709
+ else radar_generateDefaultDimensionEncoding(dimensions, encoding, hasMulti);
10615
10710
  if (hasMeasureEncoding) radar_generateMeasureEncoding(measures, encoding);
10616
10711
  else radar_generateDefaultMeasureEncoding(measures, encoding);
10617
10712
  return {
@@ -10619,10 +10714,10 @@
10619
10714
  encoding
10620
10715
  };
10621
10716
  };
10622
- const radar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
10717
+ const radar_generateDefaultDimensionEncoding = (dimensions, encoding, isMultiMeasure)=>{
10623
10718
  const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
10624
10719
  encoding.angle = uniqueDimIds.slice(0, 1);
10625
- encoding.color = uniqueDimIds.slice(1);
10720
+ addDefaultColorEncoding(uniqueDimIds, encoding, isMultiMeasure);
10626
10721
  encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureId);
10627
10722
  encoding.detail = [];
10628
10723
  encoding.label = [];
@@ -10669,11 +10764,11 @@
10669
10764
  defaultDimensions_defaultDimensions,
10670
10765
  defaultMeasureId_defaultMeasureId,
10671
10766
  encodingAdapter([
10672
- defaultEncodingForRadar,
10673
- buildMeasures
10767
+ buildMeasures,
10768
+ defaultEncodingForRadar
10674
10769
  ], [
10675
- encodingForRadar,
10676
10770
  buildMeasures,
10771
+ encodingForRadar,
10677
10772
  pickMeasuresForReshape([
10678
10773
  'tooltip',
10679
10774
  'label',
@@ -10815,7 +10910,7 @@
10815
10910
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
10816
10911
  const measures = findAllMeasures(vseedMeasures);
10817
10912
  const encoding = {};
10818
- funnel_generateDefaultDimensionEncoding(dimensions, encoding);
10913
+ funnel_generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(vseedMeasures));
10819
10914
  funnel_generateDefaultMeasureEncoding(measures, encoding);
10820
10915
  return {
10821
10916
  ...advancedVSeed,
@@ -10828,8 +10923,9 @@
10828
10923
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
10829
10924
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
10830
10925
  const encoding = {};
10831
- if (hasDimensionEncoding) funnel_generateDimensionEncoding(dimensions, encoding, measures.length > 1);
10832
- else funnel_generateDefaultDimensionEncoding(dimensions, encoding);
10926
+ const hasMulti = hasMultipleMeasureInSingleView(vseedMeasures);
10927
+ if (hasDimensionEncoding) funnel_generateDimensionEncoding(dimensions, encoding, hasMulti);
10928
+ else funnel_generateDefaultDimensionEncoding(dimensions, encoding, hasMulti);
10833
10929
  if (hasMeasureEncoding) funnel_generateMeasureEncoding(measures, encoding);
10834
10930
  else funnel_generateDefaultMeasureEncoding(measures, encoding);
10835
10931
  return {
@@ -10837,9 +10933,9 @@
10837
10933
  encoding
10838
10934
  };
10839
10935
  };
10840
- const funnel_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
10936
+ const funnel_generateDefaultDimensionEncoding = (dimensions, encoding, isMultiMeasure)=>{
10841
10937
  const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
10842
- encoding.color = uniqueDimIds.slice(0);
10938
+ encoding.color = !isMultiMeasure && uniqueDimIds.some((id)=>id !== MeasureId) ? uniqueDimIds.filter((id)=>id !== MeasureId) : uniqueDimIds.slice(0);
10843
10939
  encoding.detail = encoding.color;
10844
10940
  encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureId);
10845
10941
  encoding.label = [];
@@ -10884,11 +10980,11 @@
10884
10980
  defaultDimensions_defaultDimensions,
10885
10981
  defaultMeasureId_defaultMeasureId,
10886
10982
  encodingAdapter([
10887
- defaultEncodingForFunnel,
10888
- buildMeasures
10983
+ buildMeasures,
10984
+ defaultEncodingForFunnel
10889
10985
  ], [
10890
- encodingForFunnel,
10891
10986
  buildMeasures,
10987
+ encodingForFunnel,
10892
10988
  pickMeasuresForReshape([
10893
10989
  'tooltip',
10894
10990
  'label',
@@ -11111,11 +11207,11 @@
11111
11207
  defaultDimensions_defaultDimensions,
11112
11208
  defaultMeasureId_defaultMeasureId,
11113
11209
  encodingAdapter([
11114
- defaultEncodingForHeatmap,
11115
- buildMeasures
11210
+ buildMeasures,
11211
+ defaultEncodingForHeatmap
11116
11212
  ], [
11117
- encodingForHeatmap,
11118
11213
  buildMeasures,
11214
+ encodingForHeatmap,
11119
11215
  pickMeasuresForReshape([
11120
11216
  'tooltip',
11121
11217
  'label'
@@ -11394,7 +11490,7 @@
11394
11490
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
11395
11491
  const measures = findAllMeasures(vseedMeasures);
11396
11492
  const encoding = {};
11397
- boxplot_generateDefaultDimensionEncoding(dimensions, encoding);
11493
+ boxplot_generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(vseedMeasures));
11398
11494
  boxplot_generateDefaultMeasureEncoding(measures, encoding);
11399
11495
  return {
11400
11496
  ...advancedVSeed,
@@ -11407,8 +11503,9 @@
11407
11503
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
11408
11504
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
11409
11505
  const encoding = {};
11410
- if (hasDimensionEncoding) boxplot_generateDimensionEncoding(dimensions, encoding, measures.length > 1);
11411
- else boxplot_generateDefaultDimensionEncoding(dimensions, encoding);
11506
+ const hasMulti = hasMultipleMeasureInSingleView(vseedMeasures);
11507
+ if (hasDimensionEncoding) boxplot_generateDimensionEncoding(dimensions, encoding, hasMulti);
11508
+ else boxplot_generateDefaultDimensionEncoding(dimensions, encoding, hasMulti);
11412
11509
  if (hasMeasureEncoding) boxplot_generateMeasureEncoding(measures, encoding);
11413
11510
  else boxplot_generateDefaultMeasureEncoding(measures, encoding);
11414
11511
  if ((!encoding.value || encoding.value.length <= 1) && encoding.color && encoding.color.length > 1) encoding.color = encoding.color.filter((c)=>c !== MeasureId);
@@ -11417,11 +11514,10 @@
11417
11514
  encoding
11418
11515
  };
11419
11516
  };
11420
- const boxplot_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
11421
- const onlyMeasureId = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureId);
11517
+ const boxplot_generateDefaultDimensionEncoding = (dimensions, encoding, isMultiMeasure)=>{
11422
11518
  const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
11423
11519
  encoding.x = uniqueDimIds.slice(0, 1);
11424
- encoding.color = uniqueDimIds.slice(onlyMeasureId ? 0 : 1);
11520
+ addDefaultColorEncoding(uniqueDimIds, encoding, isMultiMeasure);
11425
11521
  encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureId);
11426
11522
  encoding.label = [];
11427
11523
  encoding.row = [];
@@ -11718,11 +11814,11 @@
11718
11814
  defaultMeasureId_defaultMeasureId,
11719
11815
  boxplotConfig,
11720
11816
  encodingAdapter([
11721
- defaultEncodingForBoxplot,
11722
- buildMeasures
11817
+ buildMeasures,
11818
+ defaultEncodingForBoxplot
11723
11819
  ], [
11724
- encodingForBoxplot,
11725
11820
  buildMeasures,
11821
+ encodingForBoxplot,
11726
11822
  pickMeasuresForReshape([
11727
11823
  'tooltip',
11728
11824
  'label',
@@ -12636,11 +12732,11 @@
12636
12732
  defaultDimensions_defaultDimensions,
12637
12733
  histogramConfig,
12638
12734
  encodingAdapter([
12639
- defaultEncodingForHistogram,
12640
- buildMeasures
12735
+ buildMeasures,
12736
+ defaultEncodingForHistogram
12641
12737
  ], [
12642
- encodingForHistogram,
12643
12738
  buildMeasures,
12739
+ encodingForHistogram,
12644
12740
  pickMeasuresForReshape([
12645
12741
  'tooltip',
12646
12742
  'label',