@visactor/vseed 0.1.5 → 0.1.6

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 (52) hide show
  1. package/dist/builder/builder/builder.d.ts +2 -2
  2. package/dist/index.cjs +347 -285
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.js +347 -285
  5. package/dist/index.js.map +1 -1
  6. package/dist/pipeline/advanced/chart/pipes/{init/autoDimensions.d.ts → default/defaultDimensions.d.ts} +1 -1
  7. package/dist/pipeline/advanced/chart/pipes/default/defaultMeasureName.d.ts +2 -0
  8. package/dist/pipeline/advanced/chart/pipes/default/defaultMeasures.d.ts +5 -0
  9. package/dist/pipeline/advanced/chart/pipes/default/index.d.ts +3 -0
  10. package/dist/pipeline/advanced/chart/pipes/encoding/column.d.ts +19 -0
  11. package/dist/pipeline/advanced/chart/pipes/encoding/line.d.ts +17 -0
  12. package/dist/pipeline/advanced/chart/pipes/index.d.ts +1 -0
  13. package/dist/pipeline/advanced/chart/pipes/init/index.d.ts +0 -2
  14. package/dist/pipeline/advanced/chart/pipes/measures/utils.d.ts +3 -18
  15. package/dist/pipeline/advanced/table/pipes/reshape/index.d.ts +1 -0
  16. package/dist/pipeline/advanced/table/pipes/reshape/reshapePivotTable.d.ts +2 -0
  17. package/dist/types/advancedVSeed.d.ts +2 -0
  18. package/dist/types/chartType/area/area.d.ts +20 -3
  19. package/dist/types/chartType/area/zArea.d.ts +2 -0
  20. package/dist/types/chartType/areaPercent/areaPercent.d.ts +16 -0
  21. package/dist/types/chartType/areaPercent/zAreaPercent.d.ts +2 -0
  22. package/dist/types/chartType/bar/zBar.d.ts +2 -0
  23. package/dist/types/chartType/barParallel/zBarParallel.d.ts +2 -0
  24. package/dist/types/chartType/barPercent/zBarPercent.d.ts +2 -0
  25. package/dist/types/chartType/column/column.d.ts +17 -1
  26. package/dist/types/chartType/column/zColumn.d.ts +2 -0
  27. package/dist/types/chartType/columnParallel/columnParallel.d.ts +17 -0
  28. package/dist/types/chartType/columnParallel/zColumnParallel.d.ts +2 -0
  29. package/dist/types/chartType/columnPercent/columnPercent.d.ts +17 -1
  30. package/dist/types/chartType/columnPercent/zColumnPercent.d.ts +2 -0
  31. package/dist/types/chartType/donut/zDonut.d.ts +2 -0
  32. package/dist/types/chartType/dualAxis/zDualAxis.d.ts +10 -0
  33. package/dist/types/chartType/funnel/zFunnel.d.ts +2 -0
  34. package/dist/types/chartType/heatmap/zHeatmap.d.ts +2 -0
  35. package/dist/types/chartType/line/line.d.ts +16 -0
  36. package/dist/types/chartType/line/zLine.d.ts +2 -0
  37. package/dist/types/chartType/pie/zPie.d.ts +2 -0
  38. package/dist/types/chartType/pivotTable/zPivotTable.d.ts +2 -0
  39. package/dist/types/chartType/radar/zRadar.d.ts +2 -0
  40. package/dist/types/chartType/rose/zRose.d.ts +2 -0
  41. package/dist/types/chartType/roseParallel/zRoseParallel.d.ts +2 -0
  42. package/dist/types/chartType/scatter/zScatter.d.ts +10 -0
  43. package/dist/types/chartType/table/zTable.d.ts +2 -0
  44. package/dist/types/properties/measures/measures.d.ts +3 -1
  45. package/dist/types/properties/measures/zDualMeasures.d.ts +16 -0
  46. package/dist/types/properties/measures/zMeasures.d.ts +6 -0
  47. package/dist/types/properties/measures/zScatterMeasures.d.ts +16 -0
  48. package/dist/types/zVseed.d.ts +56 -0
  49. package/dist/umd/index.js +368 -306
  50. package/dist/umd/index.js.map +1 -1
  51. package/package.json +1 -1
  52. package/dist/pipeline/advanced/chart/pipes/init/utils.d.ts +0 -2
package/dist/index.cjs CHANGED
@@ -425,7 +425,8 @@ const autoMeasures = (advancedVSeed, context)=>{
425
425
  void 0
426
426
  ].includes(key)).map((measure)=>({
427
427
  id: measure,
428
- alias: measure
428
+ alias: measure,
429
+ encoding: 'column'
429
430
  }));
430
431
  return result;
431
432
  };
@@ -509,7 +510,7 @@ const autoDimensions = (advancedVSeed, context)=>{
509
510
  ].includes(key) && !measures.some((measure)=>measure.id === key)).map((dim)=>({
510
511
  id: dim,
511
512
  alias: dim,
512
- location: 'dimension'
513
+ encoding: 'column'
513
514
  }));
514
515
  return result;
515
516
  };
@@ -944,10 +945,27 @@ const autoPivotMeasures = (advancedVSeed, context)=>{
944
945
  void 0
945
946
  ].includes(key)).map((measure)=>({
946
947
  id: measure,
947
- alias: measure
948
+ alias: measure,
949
+ encoding: 'detail'
948
950
  }));
949
951
  return result;
950
952
  };
953
+ const ORIGINAL_DATA = '__OriginalData__';
954
+ const Separator = '-';
955
+ const FoldMeasureName = '__MeaName__';
956
+ const FoldMeasureId = '__MeaId__';
957
+ const FoldMeasureValue = '__MeaValue__';
958
+ const MeasureName = FoldMeasureName;
959
+ const FoldPrimaryMeasureValue = '__MeaPrimaryValue__';
960
+ const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
961
+ const FoldXMeasureValue = '__MeaXValue__';
962
+ const FoldYMeasureValue = '__MeaYValue__';
963
+ const XEncoding = '__Dim_X__';
964
+ const YEncoding = '__Dim_Y__';
965
+ const AngleEncoding = '__Dim_Angle__';
966
+ const DetailEncoding = '__Dim_Detail__';
967
+ const ColorEncoding = '__Dim_Color__';
968
+ const ColorIdEncoding = '__Dim_ColorId__';
951
969
  const findAllDimensions = (dimensions = [])=>{
952
970
  if (!dimensions) return [];
953
971
  const result = [];
@@ -964,15 +982,21 @@ const autoPivotDimensions = (advancedVSeed, context)=>{
964
982
  const { vseed } = context;
965
983
  const { dimensions, dataset } = vseed;
966
984
  const measures = findAllMeasures(advancedVSeed.measures);
985
+ const MeaName = {
986
+ id: MeasureName,
987
+ alias: intl.i18n`指标名称`
988
+ };
967
989
  if (!dataset) throw new Error('dataset is required');
968
990
  if (0 === dataset.length) return result;
969
991
  if (dimensions) {
970
992
  const newDimensions = findAllDimensions(dimensions);
993
+ if (!newDimensions.some((dim)=>dim.id === MeasureName)) newDimensions.push(MeaName);
971
994
  result.dimensions = newDimensions.map((item, index)=>{
995
+ if ('row' === item.encoding || 'column' === item.encoding) return item;
972
996
  if ('rowDimension' === item.location || 'columnDimension' === item.location) return item;
973
997
  return {
974
998
  ...item,
975
- location: index % 2 === 0 ? 'columnDimension' : 'rowDimension'
999
+ encoding: index % 2 === 0 ? 'column' : 'row'
976
1000
  };
977
1001
  });
978
1002
  return result;
@@ -982,15 +1006,19 @@ const autoPivotDimensions = (advancedVSeed, context)=>{
982
1006
  ...prev,
983
1007
  ...cur
984
1008
  }), {});
985
- let i = 0;
986
- result.dimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
1009
+ const newDimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
987
1010
  '',
988
1011
  null,
989
1012
  void 0
990
- ].includes(key) && !measures.some((measure)=>measure.id === key)).map((dim)=>({
1013
+ ].includes(key) && !measures.some((measure)=>measure.id === key));
1014
+ result.dimensions = newDimensions.map((dim)=>({
991
1015
  id: dim,
992
- alias: dim,
993
- location: i++ % 2 === 0 ? 'columnDimension' : 'rowDimension'
1016
+ alias: dim
1017
+ }));
1018
+ result.dimensions.push(MeaName);
1019
+ result.dimensions = result.dimensions.map((dim, index)=>({
1020
+ ...dim,
1021
+ encoding: index % 2 === 0 ? 'column' : 'row'
994
1022
  }));
995
1023
  return result;
996
1024
  };
@@ -1021,11 +1049,89 @@ const pivotTableConfig = (advancedVSeed, context)=>{
1021
1049
  };
1022
1050
  return result;
1023
1051
  };
1052
+ const foldMeasures = (dataset, measures, options)=>{
1053
+ const { measureId, measureName, measureValue, colorMeasureId } = options || {};
1054
+ const foldInfo = {
1055
+ measureId,
1056
+ measureName,
1057
+ measureValue,
1058
+ colorRange: [
1059
+ 0,
1060
+ 1
1061
+ ],
1062
+ measureRange: [
1063
+ 0,
1064
+ 1
1065
+ ],
1066
+ foldMap: {}
1067
+ };
1068
+ const result = new Array(dataset.length * measures.length);
1069
+ let index = 0;
1070
+ const ids = measures.map((d)=>d.id);
1071
+ for(let i = 0; i < dataset.length; i++)for(let j = 0; j < measures.length; j++){
1072
+ const datum = (0, external_remeda_namespaceObject.omit)({
1073
+ ...dataset[i]
1074
+ }, ids);
1075
+ datum[ORIGINAL_DATA] = dataset[i];
1076
+ const measure = measures[j];
1077
+ const { id, alias } = measure;
1078
+ datum[id] = dataset[i][id];
1079
+ datum[measureId] = id;
1080
+ datum[measureName] = alias || id;
1081
+ datum[measureValue] = dataset[i][id];
1082
+ if (colorMeasureId) {
1083
+ const value = datum[ORIGINAL_DATA][colorMeasureId];
1084
+ datum[ColorEncoding] = value;
1085
+ datum[ColorIdEncoding] = colorMeasureId;
1086
+ foldInfo.colorRange = [
1087
+ Math.min(foldInfo.colorRange[0] || 1 / 0, Number(value)),
1088
+ Math.max(foldInfo.colorRange[1] || -1 / 0, Number(value))
1089
+ ];
1090
+ }
1091
+ foldInfo.measureRange = [
1092
+ Math.min(foldInfo.measureRange[0] || 1 / 0, Number(datum[id])),
1093
+ Math.max(foldInfo.measureRange[1] || -1 / 0, Number(datum[id]))
1094
+ ];
1095
+ foldInfo.foldMap[id] = alias;
1096
+ result[index++] = datum;
1097
+ }
1098
+ return {
1099
+ dataset: result,
1100
+ foldInfo
1101
+ };
1102
+ };
1103
+ const reshapePivotTable = (advancedVSeed, context)=>{
1104
+ const result = {
1105
+ ...advancedVSeed
1106
+ };
1107
+ const { vseed } = context;
1108
+ const { dataset, chartType } = vseed;
1109
+ const { dimensions, measures } = advancedVSeed;
1110
+ const { dataset: newDatasets, foldInfo } = foldMeasures(dataset, findAllMeasures(measures), {
1111
+ measureId: FoldMeasureId,
1112
+ measureName: FoldMeasureName,
1113
+ measureValue: FoldMeasureValue
1114
+ });
1115
+ const datasetReshapeInfo = [
1116
+ {
1117
+ id: String(chartType),
1118
+ index: 0,
1119
+ foldInfo
1120
+ }
1121
+ ];
1122
+ return {
1123
+ ...result,
1124
+ dataset: newDatasets,
1125
+ datasetReshapeInfo: datasetReshapeInfo,
1126
+ dimensions,
1127
+ measures
1128
+ };
1129
+ };
1024
1130
  const pivotTableAdvancedPipeline = [
1025
1131
  initAdvancedVSeed,
1026
1132
  autoPivotMeasures,
1027
1133
  autoPivotDimensions,
1028
- records_records,
1134
+ reshapePivotTable,
1029
1135
  pivotTableConfig,
1030
1136
  theme_theme
1031
1137
  ];
@@ -1072,7 +1178,7 @@ const initPivotTable = (spec, context)=>{
1072
1178
  const pivotColumns = (spec, context)=>{
1073
1179
  const { advancedVSeed } = context;
1074
1180
  const dimensions = advancedVSeed.dimensions;
1075
- const columns = dimensions.filter((item)=>'columnDimension' === item['location']);
1181
+ const columns = dimensions.filter((item)=>'columnDimension' === item['location'] || 'column' === item['encoding']);
1076
1182
  return {
1077
1183
  ...spec,
1078
1184
  columns: columns.map((item)=>({
@@ -1085,7 +1191,7 @@ const pivotColumns = (spec, context)=>{
1085
1191
  const pivotRows = (spec, context)=>{
1086
1192
  const { advancedVSeed } = context;
1087
1193
  const dimensions = advancedVSeed.dimensions;
1088
- const rows = dimensions.filter((item)=>'rowDimension' === item['location']);
1194
+ const rows = dimensions.filter((item)=>'rowDimension' === item['location'] || 'row' === item['encoding']);
1089
1195
  return {
1090
1196
  ...spec,
1091
1197
  rows: rows.map((item)=>({
@@ -1097,25 +1203,31 @@ const pivotRows = (spec, context)=>{
1097
1203
  };
1098
1204
  const pivotIndicators = (spec, context)=>{
1099
1205
  const { advancedVSeed } = context;
1100
- const { locale } = advancedVSeed;
1101
- const measures = advancedVSeed.measures;
1206
+ const { locale, measures, datasetReshapeInfo } = advancedVSeed;
1207
+ const { foldInfo } = datasetReshapeInfo[0];
1102
1208
  return {
1103
1209
  ...spec,
1104
1210
  indicatorsAsCol: true,
1105
1211
  indicatorTitle: intl.i18n`指标名称`,
1106
- indicators: measures.map((item)=>{
1107
- if (isMeasure(item)) return {
1212
+ hideIndicatorName: true,
1213
+ indicators: [
1214
+ {
1108
1215
  cellType: 'text',
1109
- indicatorKey: item.id,
1110
- title: item.alias || item.id,
1216
+ indicatorKey: foldInfo.measureValue,
1217
+ title: 'indicator',
1111
1218
  width: 'auto',
1112
- format: pivotIndicators_fieldFormat(item, locale)
1113
- };
1114
- return {};
1115
- })
1219
+ format: pivotIndicators_fieldFormat(measures, foldInfo, locale)
1220
+ }
1221
+ ]
1116
1222
  };
1117
1223
  };
1118
- const pivotIndicators_fieldFormat = (node, locale)=>(value)=>{
1224
+ const pivotIndicators_fieldFormat = (measures, foldInfo, locale)=>(value, col, row, table)=>{
1225
+ if (!(0, external_remeda_namespaceObject.isNumber)(col) || !(0, external_remeda_namespaceObject.isNumber)(row) || !table) return value;
1226
+ const datum = table.getCellOriginRecord(col, row);
1227
+ const { measureId: foldMeasureId } = foldInfo;
1228
+ const measureId = datum[0][foldMeasureId];
1229
+ const node = findMeasureById(measures, measureId);
1230
+ if (!node) return value;
1119
1231
  const { format = {}, autoFormat = true } = node;
1120
1232
  if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
1121
1233
  const formatter = createFormatter(format);
@@ -1271,94 +1383,81 @@ const initAdvancedVSeed_initAdvancedVSeed = (advancedVSeed, context)=>{
1271
1383
  locale: locale || 'zh-CN'
1272
1384
  };
1273
1385
  };
1274
- const ORIGINAL_DATA = '__OriginalData__';
1275
- const Separator = '-';
1276
- const FoldMeasureName = '__MeaName__';
1277
- const FoldMeasureId = '__MeaId__';
1278
- const FoldMeasureValue = '__MeaValue__';
1279
- const MeasureName = FoldMeasureName;
1280
- const FoldPrimaryMeasureValue = '__MeaPrimaryValue__';
1281
- const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
1282
- const FoldXMeasureValue = '__MeaXValue__';
1283
- const FoldYMeasureValue = '__MeaYValue__';
1284
- const XEncoding = '__Dim_X__';
1285
- const YEncoding = '__Dim_Y__';
1286
- const AngleEncoding = '__Dim_Angle__';
1287
- const DetailEncoding = '__Dim_Detail__';
1288
- const ColorEncoding = '__Dim_Color__';
1289
- const ColorIdEncoding = '__Dim_ColorId__';
1290
- const getBasicDimensions = (vseed)=>{
1291
- const { dimensions, dataset } = vseed;
1292
- const MeaName = {
1293
- id: MeasureName,
1294
- alias: intl.i18n`指标名称`
1386
+ const defaultMeasures_defaultMeasures = (advancedVSeed, context)=>{
1387
+ const { vseed } = context;
1388
+ const { measures, dataset } = vseed;
1389
+ if (measures && measures.length > 0) return {
1390
+ ...advancedVSeed,
1391
+ measures
1295
1392
  };
1296
1393
  if (!dataset) throw new Error('dataset is required');
1297
- if (0 === dataset.length) return [];
1298
- if (dimensions) {
1299
- const basicDimensions = dimensions.map((dim)=>({
1300
- location: 'dimension',
1301
- ...dim
1302
- }));
1303
- if (basicDimensions.some((dim)=>dim.id === MeasureName)) return basicDimensions;
1304
- basicDimensions.push(MeaName);
1305
- return basicDimensions;
1306
- }
1394
+ if (0 === dataset.length) return {
1395
+ ...advancedVSeed,
1396
+ measures: []
1397
+ };
1307
1398
  const top100dataset = dataset.slice(0, 100);
1308
1399
  const sample = top100dataset.reduce((prev, cur)=>({
1309
1400
  ...prev,
1310
1401
  ...cur
1311
1402
  }), {});
1312
- const basicDimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
1403
+ const defaultMeasures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
1313
1404
  '',
1314
1405
  null,
1315
1406
  void 0
1316
- ].includes(key)).map((dim)=>({
1317
- id: dim,
1318
- alias: dim,
1319
- location: 'dimension'
1407
+ ].includes(key)).map((measure)=>({
1408
+ id: measure,
1409
+ alias: measure
1320
1410
  }));
1321
- basicDimensions.push(MeaName);
1322
- return basicDimensions;
1323
- };
1324
- const getBasicMeasures = (vseed)=>{
1325
- const { dataset, measures } = vseed;
1326
- if (!measures || 0 === measures.length) return generateMeasuresByDataset(dataset);
1327
- return measures;
1411
+ return {
1412
+ ...advancedVSeed,
1413
+ measures: defaultMeasures
1414
+ };
1328
1415
  };
1329
- const generateMeasuresByDataset = (dataset)=>{
1416
+ const defaultDimensions = (advancedVSeed, context)=>{
1417
+ const result = {
1418
+ ...advancedVSeed
1419
+ };
1420
+ const { vseed } = context;
1421
+ const { dimensions, dataset } = vseed;
1422
+ if (dimensions && dimensions.length > 0) return {
1423
+ ...result,
1424
+ dimensions
1425
+ };
1330
1426
  if (!dataset) throw new Error('dataset is required');
1331
- if (0 === dataset.length) return [];
1427
+ if (0 === dataset.length) return result;
1428
+ const measures = findAllMeasures(advancedVSeed.measures);
1332
1429
  const top100dataset = dataset.slice(0, 100);
1333
1430
  const sample = top100dataset.reduce((prev, cur)=>({
1334
1431
  ...prev,
1335
1432
  ...cur
1336
1433
  }), {});
1337
- const basicMeasures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
1434
+ const newDimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
1338
1435
  '',
1339
1436
  null,
1340
1437
  void 0
1341
- ].includes(key)).map((measure)=>({
1342
- id: measure,
1343
- alias: measure
1438
+ ].includes(key) && !measures.some((measure)=>measure.id === key)).map((dim)=>({
1439
+ id: dim,
1440
+ alias: dim
1344
1441
  }));
1345
- return basicMeasures;
1346
- };
1347
- const isMeasureTreeWithChildren = (vseed)=>{
1348
- const { measures } = vseed;
1349
- if (!measures) return false;
1350
- return measures.some((measure)=>'children' in measure);
1442
+ return {
1443
+ ...result,
1444
+ dimensions: newDimensions
1445
+ };
1351
1446
  };
1352
- const isMeasureTreeWithParentId = (vseed)=>{
1353
- const { measures } = vseed;
1354
- if (!measures) return false;
1355
- return measures.some((measure)=>'parentId' in measure);
1447
+ const defaultMeasureName = (advancedVSeed)=>{
1448
+ const result = {
1449
+ ...advancedVSeed
1450
+ };
1451
+ const MeaName = {
1452
+ id: MeasureName,
1453
+ alias: intl.i18n`指标名称`
1454
+ };
1455
+ if (!result.dimensions?.some((dim)=>dim.id === MeasureName)) result.dimensions?.push(MeaName);
1456
+ return result;
1356
1457
  };
1357
- const encodingForLine = (advancedVSeed, context)=>{
1358
- const { vseed } = context;
1359
- const { measures: vseedMeasures = [] } = vseed;
1360
- const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
1361
- const dimensions = getBasicDimensions(vseed);
1458
+ const encodingForLine = (advancedVSeed)=>{
1459
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
1460
+ const measures = findAllMeasures(vseedMeasures);
1362
1461
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
1363
1462
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
1364
1463
  const encoding = {};
@@ -1371,10 +1470,6 @@ const encodingForLine = (advancedVSeed, context)=>{
1371
1470
  encoding
1372
1471
  };
1373
1472
  };
1374
- const generateDefaultMeasureEncoding = (measures, encoding)=>{
1375
- encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
1376
- encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
1377
- };
1378
1473
  const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
1379
1474
  const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensions.map((d)=>d.id));
1380
1475
  encoding.x = uniqueDimIds.slice(0, 1);
@@ -1385,20 +1480,36 @@ const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
1385
1480
  encoding.row = [];
1386
1481
  encoding.column = [];
1387
1482
  };
1388
- const generateMeasureEncoding = (measures, encoding)=>{
1389
- encoding.tooltip = measures.map((item)=>item.id);
1390
- encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
1391
- const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
1392
- if (color.length > 0) encoding.color = color;
1393
- };
1394
1483
  const generateDimensionEncoding = (dimensions, encoding)=>{
1395
1484
  encoding.x = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
1396
1485
  encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
1397
- encoding.detail = [];
1486
+ encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
1398
1487
  if (0 === encoding.x.length) encoding.x = [
1399
1488
  dimensions[0].id
1400
1489
  ];
1401
- if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
1490
+ if (0 === encoding.color.length) encoding.color = [
1491
+ MeasureName
1492
+ ];
1493
+ };
1494
+ const generateDefaultMeasureEncoding = (measures, encoding)=>{
1495
+ encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
1496
+ encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
1497
+ };
1498
+ const generateMeasureEncoding = (measures, encoding)=>{
1499
+ encoding.tooltip = measures.map((item)=>item.id);
1500
+ encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
1501
+ const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
1502
+ if (color.length > 0) encoding.color = color;
1503
+ };
1504
+ const isMeasureTreeWithChildren = (vseed)=>{
1505
+ const { measures } = vseed;
1506
+ if (!measures) return false;
1507
+ return measures.some((measure)=>'children' in measure);
1508
+ };
1509
+ const isMeasureTreeWithParentId = (vseed)=>{
1510
+ const { measures } = vseed;
1511
+ if (!measures) return false;
1512
+ return measures.some((measure)=>'parentId' in measure);
1402
1513
  };
1403
1514
  const measureDepth = (measures = [])=>{
1404
1515
  if (!measures) return 0;
@@ -1458,9 +1569,7 @@ const buildMeasures = (advancedVSeed, context)=>{
1458
1569
  advancedVSeed.measures = generateMeasuresByParentId(vseed.measures);
1459
1570
  return advancedVSeed;
1460
1571
  }
1461
- const basicMeasures = getBasicMeasures(vseed);
1462
- if (isPivotChart(vseed)) advancedVSeed.measures = basicMeasuresToMeasureTree(basicMeasures);
1463
- else advancedVSeed.measures = basicMeasures;
1572
+ if (isPivotChart(vseed)) advancedVSeed.measures = basicMeasuresToMeasureTree(advancedVSeed.measures);
1464
1573
  return advancedVSeed;
1465
1574
  };
1466
1575
  const generateMeasuresByParentId = (measures)=>{
@@ -1491,102 +1600,12 @@ const basicMeasuresToMeasureTree = (measures)=>{
1491
1600
  }
1492
1601
  ];
1493
1602
  };
1494
- const autoDimensions_autoDimensions = (advancedVSeed, context)=>{
1495
- const result = {
1496
- ...advancedVSeed
1497
- };
1498
- const { vseed } = context;
1499
- const { dimensions, dataset } = vseed;
1500
- const measures = findAllMeasures(advancedVSeed.measures);
1501
- const MeaName = {
1502
- id: MeasureName,
1503
- alias: intl.i18n`指标名称`
1504
- };
1505
- if (!dataset) throw new Error('dataset is required');
1506
- if (0 === dataset.length) return result;
1507
- if (dimensions) {
1508
- result.dimensions = dimensions.map((dim)=>({
1509
- location: 'dimension',
1510
- ...dim
1511
- }));
1512
- if (result.dimensions.some((dim)=>dim.id === MeasureName)) return result;
1513
- result.dimensions.push(MeaName);
1514
- return result;
1515
- }
1516
- const top100dataset = dataset.slice(0, 100);
1517
- const sample = top100dataset.reduce((prev, cur)=>({
1518
- ...prev,
1519
- ...cur
1520
- }), {});
1521
- result.dimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
1522
- '',
1523
- null,
1524
- void 0
1525
- ].includes(key) && !measures.some((measure)=>measure.id === key)).map((dim)=>({
1526
- id: dim,
1527
- alias: dim,
1528
- location: 'dimension'
1529
- }));
1530
- result.dimensions.push(MeaName);
1531
- return result;
1532
- };
1533
1603
  const pivotAdapter = (pipeline, pivotPipeline)=>(advancedVSeed, context)=>{
1534
1604
  const { vseed } = context;
1535
1605
  const usePivotChart = isPivotChart(vseed);
1536
1606
  if (usePivotChart) return execPipeline(pivotPipeline, context, advancedVSeed);
1537
1607
  return execPipeline(pipeline, context, advancedVSeed);
1538
1608
  };
1539
- const foldMeasures = (dataset, measures, options)=>{
1540
- const { measureId, measureName, measureValue, colorMeasureId } = options || {};
1541
- const foldInfo = {
1542
- measureId,
1543
- measureName,
1544
- measureValue,
1545
- colorRange: [
1546
- 0,
1547
- 1
1548
- ],
1549
- measureRange: [
1550
- 0,
1551
- 1
1552
- ],
1553
- foldMap: {}
1554
- };
1555
- const result = new Array(dataset.length * measures.length);
1556
- let index = 0;
1557
- const ids = measures.map((d)=>d.id);
1558
- for(let i = 0; i < dataset.length; i++)for(let j = 0; j < measures.length; j++){
1559
- const datum = (0, external_remeda_namespaceObject.omit)({
1560
- ...dataset[i]
1561
- }, ids);
1562
- datum[ORIGINAL_DATA] = dataset[i];
1563
- const measure = measures[j];
1564
- const { id, alias } = measure;
1565
- datum[id] = dataset[i][id];
1566
- datum[measureId] = id;
1567
- datum[measureName] = alias || id;
1568
- datum[measureValue] = dataset[i][id];
1569
- if (colorMeasureId) {
1570
- const value = datum[ORIGINAL_DATA][colorMeasureId];
1571
- datum[ColorEncoding] = value;
1572
- datum[ColorIdEncoding] = colorMeasureId;
1573
- foldInfo.colorRange = [
1574
- Math.min(foldInfo.colorRange[0] || 1 / 0, Number(value)),
1575
- Math.max(foldInfo.colorRange[1] || -1 / 0, Number(value))
1576
- ];
1577
- }
1578
- foldInfo.measureRange = [
1579
- Math.min(foldInfo.measureRange[0] || 1 / 0, Number(datum[id])),
1580
- Math.max(foldInfo.measureRange[1] || -1 / 0, Number(datum[id]))
1581
- ];
1582
- foldInfo.foldMap[id] = alias;
1583
- result[index++] = datum;
1584
- }
1585
- return {
1586
- dataset: result,
1587
- foldInfo
1588
- };
1589
- };
1590
1609
  const unfoldDimensions = (dataset, dimensions, encoding, options)=>{
1591
1610
  const { foldMeasureId, separator, colorItemAsId } = options;
1592
1611
  const unfoldInfo = {
@@ -1681,7 +1700,9 @@ const reshapeWithEncoding = (advancedVSeed, context)=>{
1681
1700
  const { dimensions, measures, encoding } = advancedVSeed;
1682
1701
  if (!measures || !dimensions || !dataset || !encoding) return result;
1683
1702
  if (0 === measures.length) throw new Error('measures can not be empty');
1703
+ const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
1684
1704
  const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, (0, external_remeda_namespaceObject.uniqueBy)(dimensions, (item)=>item.id), (0, external_remeda_namespaceObject.uniqueBy)(findAllMeasures(measures), (item)=>item.id), encoding, {
1705
+ colorItemAsId: hasEncoding,
1685
1706
  colorMeasureId: getColorMeasureId(advancedVSeed)
1686
1707
  });
1687
1708
  return {
@@ -1712,6 +1733,7 @@ const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
1712
1733
  if (measures) measures.forEach((measure)=>{
1713
1734
  if (measure.children && measure.children.length > 0) measureGroups.push(measure);
1714
1735
  });
1736
+ const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
1715
1737
  const datasets = [];
1716
1738
  const datasetReshapeInfo = [];
1717
1739
  measureGroups.forEach((measureGroup, index)=>{
@@ -1719,6 +1741,7 @@ const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
1719
1741
  if (!measures) return;
1720
1742
  const groupId = measureGroup.id;
1721
1743
  const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, (0, external_remeda_namespaceObject.uniqueBy)(dimensions, (item)=>item.id), (0, external_remeda_namespaceObject.uniqueBy)(measures, (item)=>item.id), encoding, {
1744
+ colorItemAsId: hasEncoding,
1722
1745
  foldMeasureValue: `${FoldMeasureValue}${groupId}`,
1723
1746
  colorMeasureId: getColorMeasureId(advancedVSeed)
1724
1747
  });
@@ -1927,9 +1950,11 @@ const annotation_annotation = (advancedVSeed, context)=>{
1927
1950
  };
1928
1951
  const lineAdvancedPipeline = [
1929
1952
  initAdvancedVSeed_initAdvancedVSeed,
1953
+ defaultMeasures_defaultMeasures,
1954
+ defaultDimensions,
1955
+ defaultMeasureName,
1930
1956
  encodingForLine,
1931
1957
  buildMeasures,
1932
- autoDimensions_autoDimensions,
1933
1958
  pivotAdapter([
1934
1959
  reshapeWithEncoding
1935
1960
  ], [
@@ -3525,7 +3550,7 @@ const pivotRowDimensions = (spec, context)=>{
3525
3550
  const { advancedVSeed } = context;
3526
3551
  const dimensions = advancedVSeed.dimensions;
3527
3552
  if (!dimensions) return result;
3528
- const rowDimensions = dimensions.filter((dim)=>'rowDimension' === dim.location);
3553
+ const rowDimensions = dimensions.filter((dim)=>'rowDimension' === dim.location || 'row' === dim.encoding);
3529
3554
  const rows = rowDimensions.map((dim)=>({
3530
3555
  dimensionKey: dim.id,
3531
3556
  title: dim.alias || dim.id
@@ -3542,7 +3567,7 @@ const pivotColumnDimensions = (spec, context)=>{
3542
3567
  const { advancedVSeed } = context;
3543
3568
  const dimensions = advancedVSeed.dimensions;
3544
3569
  if (!dimensions) return result;
3545
- const columnDimensions = dimensions.filter((dim)=>'columnDimension' === dim.location);
3570
+ const columnDimensions = dimensions.filter((dim)=>'columnDimension' === dim.location || 'column' === dim.encoding);
3546
3571
  const columns = columnDimensions.map((dim)=>({
3547
3572
  dimensionKey: dim.id,
3548
3573
  title: dim.alias || dim.id
@@ -3815,11 +3840,9 @@ const registerLine = ()=>{
3815
3840
  Builder._advancedPipelineMap.line = lineAdvancedPipeline;
3816
3841
  Builder._specPipelineMap.line = lineSpecPipeline;
3817
3842
  };
3818
- const encodingForColumn = (advancedVSeed, context)=>{
3819
- const { vseed } = context;
3820
- const { measures: vseedMeasures = [] } = vseed;
3821
- const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
3822
- const dimensions = getBasicDimensions(vseed);
3843
+ const encodingForColumn = (advancedVSeed)=>{
3844
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
3845
+ const measures = findAllMeasures(vseedMeasures);
3823
3846
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
3824
3847
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
3825
3848
  const encoding = {};
@@ -3832,10 +3855,6 @@ const encodingForColumn = (advancedVSeed, context)=>{
3832
3855
  encoding
3833
3856
  };
3834
3857
  };
3835
- const column_generateDefaultMeasureEncoding = (measures, encoding)=>{
3836
- encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
3837
- encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
3838
- };
3839
3858
  const column_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
3840
3859
  const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
3841
3860
  const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensions.map((d)=>d.id));
@@ -3847,13 +3866,6 @@ const column_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
3847
3866
  encoding.row = [];
3848
3867
  encoding.column = [];
3849
3868
  };
3850
- const column_generateMeasureEncoding = (measures, encoding)=>{
3851
- encoding.tooltip = measures.map((item)=>item.id);
3852
- encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
3853
- const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
3854
- if (color.length > 0) encoding.color = color;
3855
- return encoding;
3856
- };
3857
3869
  const column_generateDimensionEncoding = (dimensions, encoding)=>{
3858
3870
  encoding.x = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
3859
3871
  encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
@@ -3861,14 +3873,28 @@ const column_generateDimensionEncoding = (dimensions, encoding)=>{
3861
3873
  if (0 === encoding.x.length) encoding.x = [
3862
3874
  dimensions[0].id
3863
3875
  ];
3864
- if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
3865
- if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
3876
+ if (0 === encoding.color.length) encoding.color = [
3877
+ MeasureName
3878
+ ];
3879
+ };
3880
+ const column_generateDefaultMeasureEncoding = (measures, encoding)=>{
3881
+ encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
3882
+ encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
3883
+ };
3884
+ const column_generateMeasureEncoding = (measures, encoding)=>{
3885
+ encoding.tooltip = measures.map((item)=>item.id);
3886
+ encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
3887
+ const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
3888
+ if (color.length > 0) encoding.color = color;
3889
+ return encoding;
3866
3890
  };
3867
3891
  const columnAdvancedPipeline = [
3868
3892
  initAdvancedVSeed_initAdvancedVSeed,
3893
+ defaultMeasures_defaultMeasures,
3894
+ defaultDimensions,
3895
+ defaultMeasureName,
3869
3896
  encodingForColumn,
3870
3897
  buildMeasures,
3871
- autoDimensions_autoDimensions,
3872
3898
  pivotAdapter([
3873
3899
  reshapeWithEncoding
3874
3900
  ], [
@@ -4228,9 +4254,11 @@ const registerColumn = ()=>{
4228
4254
  };
4229
4255
  const columnParallelAdvancedPipeline = [
4230
4256
  initAdvancedVSeed_initAdvancedVSeed,
4257
+ defaultMeasures_defaultMeasures,
4258
+ defaultDimensions,
4259
+ defaultMeasureName,
4231
4260
  encodingForColumn,
4232
4261
  buildMeasures,
4233
- autoDimensions_autoDimensions,
4234
4262
  pivotAdapter([
4235
4263
  reshapeWithEncoding
4236
4264
  ], [
@@ -4325,9 +4353,11 @@ const registerColumnParallel = ()=>{
4325
4353
  };
4326
4354
  const columnPercentAdvancedPipeline = [
4327
4355
  initAdvancedVSeed_initAdvancedVSeed,
4356
+ defaultMeasures_defaultMeasures,
4357
+ defaultDimensions,
4358
+ defaultMeasureName,
4328
4359
  encodingForColumn,
4329
4360
  buildMeasures,
4330
- autoDimensions_autoDimensions,
4331
4361
  pivotAdapter([
4332
4362
  reshapeWithEncoding
4333
4363
  ], [
@@ -4404,11 +4434,9 @@ const registerColumnPercent = ()=>{
4404
4434
  Builder._advancedPipelineMap.columnPercent = columnPercentAdvancedPipeline;
4405
4435
  Builder._specPipelineMap.columnPercent = columnPercentSpecPipeline;
4406
4436
  };
4407
- const encodingForBar = (advancedVSeed, context)=>{
4408
- const { vseed } = context;
4409
- const { measures: vseedMeasures = [] } = vseed;
4410
- const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
4411
- const dimensions = getBasicDimensions(vseed);
4437
+ const encodingForBar = (advancedVSeed)=>{
4438
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
4439
+ const measures = findAllMeasures(vseedMeasures);
4412
4440
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
4413
4441
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
4414
4442
  const encoding = {};
@@ -4450,7 +4478,9 @@ const bar_generateDimensionEncoding = (dimensions, encoding)=>{
4450
4478
  if (0 === encoding.y.length) encoding.y = [
4451
4479
  dimensions[0].id
4452
4480
  ];
4453
- if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.y?.includes(item.id)).map((item)=>item.id);
4481
+ if (0 === encoding.color.length) encoding.color = [
4482
+ MeasureName
4483
+ ];
4454
4484
  if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.y?.includes(item.id)).map((item)=>item.id);
4455
4485
  };
4456
4486
  const sortYBandAxis = (advancedVSeed, context)=>{
@@ -4471,9 +4501,11 @@ const sortYBandAxis = (advancedVSeed, context)=>{
4471
4501
  };
4472
4502
  const barAdvancedPipeline = [
4473
4503
  initAdvancedVSeed_initAdvancedVSeed,
4504
+ defaultMeasures_defaultMeasures,
4505
+ defaultDimensions,
4506
+ defaultMeasureName,
4474
4507
  encodingForBar,
4475
4508
  buildMeasures,
4476
- autoDimensions_autoDimensions,
4477
4509
  pivotAdapter([
4478
4510
  reshapeWithEncoding
4479
4511
  ], [
@@ -4824,9 +4856,11 @@ const registerBar = ()=>{
4824
4856
  };
4825
4857
  const barParallelAdvancedPipeline = [
4826
4858
  initAdvancedVSeed_initAdvancedVSeed,
4827
- buildMeasures,
4828
- autoDimensions_autoDimensions,
4859
+ defaultMeasures_defaultMeasures,
4860
+ defaultDimensions,
4861
+ defaultMeasureName,
4829
4862
  encodingForBar,
4863
+ buildMeasures,
4830
4864
  pivotAdapter([
4831
4865
  reshapeWithEncoding
4832
4866
  ], [
@@ -4920,9 +4954,11 @@ const registerBarParallel = ()=>{
4920
4954
  };
4921
4955
  const barPercentAdvancedPipeline = [
4922
4956
  initAdvancedVSeed_initAdvancedVSeed,
4923
- buildMeasures,
4924
- autoDimensions_autoDimensions,
4957
+ defaultMeasures_defaultMeasures,
4958
+ defaultDimensions,
4959
+ defaultMeasureName,
4925
4960
  encodingForBar,
4961
+ buildMeasures,
4926
4962
  pivotAdapter([
4927
4963
  reshapeWithEncoding
4928
4964
  ], [
@@ -4991,9 +5027,11 @@ const registerBarPercent = ()=>{
4991
5027
  };
4992
5028
  const areaAdvancedPipeline = [
4993
5029
  initAdvancedVSeed_initAdvancedVSeed,
5030
+ defaultMeasures_defaultMeasures,
5031
+ defaultDimensions,
5032
+ defaultMeasureName,
4994
5033
  encodingForLine,
4995
5034
  buildMeasures,
4996
- autoDimensions_autoDimensions,
4997
5035
  pivotAdapter([
4998
5036
  reshapeWithEncoding
4999
5037
  ], [
@@ -5149,9 +5187,11 @@ const registerArea = ()=>{
5149
5187
  };
5150
5188
  const areaPercentAdvancedPipeline = [
5151
5189
  initAdvancedVSeed_initAdvancedVSeed,
5190
+ defaultMeasures_defaultMeasures,
5191
+ defaultDimensions,
5192
+ defaultMeasureName,
5152
5193
  encodingForLine,
5153
5194
  buildMeasures,
5154
- autoDimensions_autoDimensions,
5155
5195
  pivotAdapter([
5156
5196
  reshapeWithEncoding
5157
5197
  ], [
@@ -5225,11 +5265,9 @@ const registerAreaPercent = ()=>{
5225
5265
  Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
5226
5266
  Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
5227
5267
  };
5228
- const encodingForScatter = (advancedVSeed, context)=>{
5229
- const { vseed } = context;
5230
- const { measures: vseedMeasures = [] } = vseed;
5231
- const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
5232
- const dimensions = getBasicDimensions(vseed);
5268
+ const encodingForScatter = (advancedVSeed)=>{
5269
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
5270
+ const measures = findAllMeasures(vseedMeasures);
5233
5271
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
5234
5272
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
5235
5273
  const encoding = {};
@@ -5265,7 +5303,9 @@ const scatter_generateMeasureEncoding = (measures, encoding)=>{
5265
5303
  const scatter_generateDimensionEncoding = (dimensions, encoding)=>{
5266
5304
  encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5267
5305
  encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
5268
- if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
5306
+ if (0 === encoding.color.length) encoding.color = [
5307
+ MeasureName
5308
+ ];
5269
5309
  if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
5270
5310
  };
5271
5311
  const buildMeasuresForScatter = (advancedVSeed, context)=>{
@@ -5278,8 +5318,7 @@ const buildMeasuresForScatter = (advancedVSeed, context)=>{
5278
5318
  advancedVSeed.measures = buildMeasuresForScatter_generateMeasuresByParentId(vseed.measures);
5279
5319
  return advancedVSeed;
5280
5320
  }
5281
- const basicMeasures = getBasicMeasures(vseed);
5282
- const scatterMeasures = vseed.scatterMeasures ? vseed.scatterMeasures : basicMeasuresToScatterMeasures(basicMeasures);
5321
+ const scatterMeasures = vseed.scatterMeasures ? vseed.scatterMeasures : basicMeasuresToScatterMeasures(advancedVSeed.measures || []);
5283
5322
  advancedVSeed.measures = scatterMeasuresToMeasureTree(scatterMeasures);
5284
5323
  return advancedVSeed;
5285
5324
  };
@@ -5498,9 +5537,11 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
5498
5537
  };
5499
5538
  const scatterAdvancedPipeline = [
5500
5539
  initAdvancedVSeed_initAdvancedVSeed,
5540
+ defaultMeasures_defaultMeasures,
5541
+ defaultDimensions,
5542
+ defaultMeasureName,
5501
5543
  encodingForScatter,
5502
5544
  buildMeasuresForScatter,
5503
- autoDimensions_autoDimensions,
5504
5545
  pivotAdapter([
5505
5546
  reshapeWithScatterEncoding
5506
5547
  ], [
@@ -5645,11 +5686,9 @@ const registerScatter = ()=>{
5645
5686
  Builder._advancedPipelineMap.scatter = scatterAdvancedPipeline;
5646
5687
  Builder._specPipelineMap.scatter = scatterSpecPipeline;
5647
5688
  };
5648
- const encodingForDualAxis = (advancedVSeed, context)=>{
5649
- const { vseed } = context;
5650
- const { measures: vseedMeasures = [] } = vseed;
5651
- const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
5652
- const dimensions = getBasicDimensions(vseed);
5689
+ const encodingForDualAxis = (advancedVSeed)=>{
5690
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
5691
+ const measures = findAllMeasures(vseedMeasures);
5653
5692
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
5654
5693
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
5655
5694
  const encoding = {};
@@ -5691,7 +5730,9 @@ const dualAxis_generateDimensionEncoding = (dimensions, encoding)=>{
5691
5730
  if (0 === encoding.x.length) encoding.x = [
5692
5731
  dimensions[0].id
5693
5732
  ];
5694
- if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
5733
+ if (0 === encoding.color.length) encoding.color = [
5734
+ MeasureName
5735
+ ];
5695
5736
  if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
5696
5737
  };
5697
5738
  const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
@@ -5704,8 +5745,7 @@ const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
5704
5745
  advancedVSeed.measures = buildMeasuresForDualAxis_generateMeasuresByParentId(vseed.measures);
5705
5746
  return advancedVSeed;
5706
5747
  }
5707
- const basicMeasures = getBasicMeasures(vseed);
5708
- const dualMeasures = vseed.dualMeasures ? vseed.dualMeasures : basicMeasuresToDualMeasures(basicMeasures);
5748
+ const dualMeasures = vseed.dualMeasures ? vseed.dualMeasures : basicMeasuresToDualMeasures(advancedVSeed.measures || []);
5709
5749
  advancedVSeed.measures = dualMeasuresToMeasureTree(dualMeasures);
5710
5750
  return advancedVSeed;
5711
5751
  };
@@ -5809,8 +5849,10 @@ const reshapeWithDualEncoding = (advancedVSeed, context)=>{
5809
5849
  const datasets = [];
5810
5850
  const primaryMeasures = measures[0];
5811
5851
  const secondaryMeasures = measures[1] || [];
5852
+ const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
5812
5853
  if (primaryMeasures && primaryMeasures.children) {
5813
5854
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
5855
+ colorItemAsId: hasEncoding,
5814
5856
  foldMeasureValue: FoldPrimaryMeasureValue,
5815
5857
  colorMeasureId: getColorMeasureId(advancedVSeed)
5816
5858
  });
@@ -5857,6 +5899,7 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
5857
5899
  const { dataset } = vseed;
5858
5900
  const { dimensions, measures, encoding, chartType } = advancedVSeed;
5859
5901
  if (!measures || !dimensions || !dataset || !encoding) return result;
5902
+ const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
5860
5903
  const datasetList = [];
5861
5904
  const datasetReshapeInfo = [];
5862
5905
  const measureGroups = [];
@@ -5875,6 +5918,7 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
5875
5918
  const secondaryMeasures = measures[1] || [];
5876
5919
  if (primaryMeasures && primaryMeasures.children) {
5877
5920
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
5921
+ colorItemAsId: hasEncoding,
5878
5922
  foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,
5879
5923
  colorMeasureId: getColorMeasureId(advancedVSeed)
5880
5924
  });
@@ -5943,9 +5987,11 @@ const dualAxisConfig = (advancedVSeed, context)=>{
5943
5987
  };
5944
5988
  const dualAxisAdvancedPipeline = [
5945
5989
  initAdvancedVSeed_initAdvancedVSeed,
5990
+ defaultMeasures_defaultMeasures,
5991
+ defaultDimensions,
5992
+ defaultMeasureName,
5946
5993
  encodingForDualAxis,
5947
5994
  buildMeasuresForDualAxis,
5948
- autoDimensions_autoDimensions,
5949
5995
  pivotAdapter([
5950
5996
  reshapeWithDualEncoding
5951
5997
  ], [
@@ -6778,11 +6824,9 @@ const registerDualAxis = ()=>{
6778
6824
  Builder._advancedPipelineMap.dualAxis = dualAxisAdvancedPipeline;
6779
6825
  Builder._specPipelineMap.dualAxis = dualAxisSpecPipeline;
6780
6826
  };
6781
- const encodingForPie = (advancedVSeed, context)=>{
6782
- const { vseed } = context;
6783
- const { measures: vseedMeasures = [] } = vseed;
6784
- const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
6785
- const dimensions = getBasicDimensions(vseed);
6827
+ const encodingForPie = (advancedVSeed)=>{
6828
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
6829
+ const measures = findAllMeasures(vseedMeasures);
6786
6830
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
6787
6831
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
6788
6832
  const encoding = {};
@@ -6817,14 +6861,18 @@ const pie_generateMeasureEncoding = (measures, encoding)=>{
6817
6861
  const pie_generateDimensionEncoding = (dimensions, encoding)=>{
6818
6862
  encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
6819
6863
  encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
6820
- if (0 === encoding.color.length) encoding.color = dimensions.map((item)=>item.id);
6864
+ if (0 === encoding.color.length) encoding.color = [
6865
+ MeasureName
6866
+ ];
6821
6867
  if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
6822
6868
  };
6823
6869
  const pieAdvancedPipeline = [
6824
6870
  initAdvancedVSeed_initAdvancedVSeed,
6871
+ defaultMeasures_defaultMeasures,
6872
+ defaultDimensions,
6873
+ defaultMeasureName,
6825
6874
  encodingForPie,
6826
6875
  buildMeasures,
6827
- autoDimensions_autoDimensions,
6828
6876
  pivotAdapter([
6829
6877
  reshapeWithEncoding
6830
6878
  ], [
@@ -6940,8 +6988,10 @@ const registerPie = ()=>{
6940
6988
  };
6941
6989
  const donutAdvancedPipeline = [
6942
6990
  initAdvancedVSeed_initAdvancedVSeed,
6991
+ defaultMeasures_defaultMeasures,
6992
+ defaultDimensions,
6993
+ defaultMeasureName,
6943
6994
  buildMeasures,
6944
- autoDimensions_autoDimensions,
6945
6995
  encodingForPie,
6946
6996
  pivotAdapter([
6947
6997
  reshapeWithEncoding
@@ -7018,11 +7068,9 @@ const registerDonut = ()=>{
7018
7068
  Builder._advancedPipelineMap.donut = donutAdvancedPipeline;
7019
7069
  Builder._specPipelineMap.donut = donutSpecPipeline;
7020
7070
  };
7021
- const encodingForRose = (advancedVSeed, context)=>{
7022
- const { vseed } = context;
7023
- const { measures: vseedMeasures = [] } = vseed;
7024
- const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
7025
- const dimensions = getBasicDimensions(vseed);
7071
+ const encodingForRose = (advancedVSeed)=>{
7072
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7073
+ const measures = findAllMeasures(vseedMeasures);
7026
7074
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
7027
7075
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
7028
7076
  const encoding = {};
@@ -7063,14 +7111,18 @@ const rose_generateDimensionEncoding = (dimensions, encoding)=>{
7063
7111
  if (0 === encoding.angle.length) encoding.angle = [
7064
7112
  dimensions[0].id
7065
7113
  ];
7066
- if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
7114
+ if (0 === encoding.color.length) encoding.color = [
7115
+ MeasureName
7116
+ ];
7067
7117
  if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
7068
7118
  };
7069
7119
  const roseAdvancedPipeline = [
7070
7120
  initAdvancedVSeed_initAdvancedVSeed,
7121
+ defaultMeasures_defaultMeasures,
7122
+ defaultDimensions,
7123
+ defaultMeasureName,
7071
7124
  encodingForRose,
7072
7125
  buildMeasures,
7073
- autoDimensions_autoDimensions,
7074
7126
  pivotAdapter([
7075
7127
  reshapeWithEncoding
7076
7128
  ], [
@@ -7266,9 +7318,11 @@ const registerRose = ()=>{
7266
7318
  };
7267
7319
  const roseParallelAdvancedPipeline = [
7268
7320
  initAdvancedVSeed_initAdvancedVSeed,
7321
+ defaultMeasures_defaultMeasures,
7322
+ defaultDimensions,
7323
+ defaultMeasureName,
7269
7324
  encodingForRose,
7270
7325
  buildMeasures,
7271
- autoDimensions_autoDimensions,
7272
7326
  pivotAdapter([
7273
7327
  reshapeWithEncoding
7274
7328
  ], [
@@ -7374,11 +7428,9 @@ const registerRoseParallel = ()=>{
7374
7428
  Builder._advancedPipelineMap.roseParallel = roseParallelAdvancedPipeline;
7375
7429
  Builder._specPipelineMap.roseParallel = roseParallelSpecPipeline;
7376
7430
  };
7377
- const encodingForRadar = (advancedVSeed, context)=>{
7378
- const { vseed } = context;
7379
- const { measures: vseedMeasures = [] } = vseed;
7380
- const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
7381
- const dimensions = getBasicDimensions(vseed);
7431
+ const encodingForRadar = (advancedVSeed)=>{
7432
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7433
+ const measures = findAllMeasures(vseedMeasures);
7382
7434
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
7383
7435
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
7384
7436
  const encoding = {};
@@ -7418,13 +7470,17 @@ const radar_generateDimensionEncoding = (dimensions, encoding)=>{
7418
7470
  if (0 === encoding.angle.length) encoding.angle = [
7419
7471
  dimensions[0].id
7420
7472
  ];
7421
- if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
7473
+ if (0 === encoding.color.length) encoding.color = [
7474
+ MeasureName
7475
+ ];
7422
7476
  };
7423
7477
  const radarAdvancedPipeline = [
7424
7478
  initAdvancedVSeed_initAdvancedVSeed,
7479
+ defaultMeasures_defaultMeasures,
7480
+ defaultDimensions,
7481
+ defaultMeasureName,
7425
7482
  encodingForRadar,
7426
7483
  buildMeasures,
7427
- autoDimensions_autoDimensions,
7428
7484
  pivotAdapter([
7429
7485
  reshapeWithEncoding
7430
7486
  ], [
@@ -7558,11 +7614,9 @@ const registerRadar = ()=>{
7558
7614
  Builder._advancedPipelineMap.radar = radarAdvancedPipeline;
7559
7615
  Builder._specPipelineMap.radar = radarSpecPipeline;
7560
7616
  };
7561
- const encodingForFunnel = (advancedVSeed, context)=>{
7562
- const { vseed } = context;
7563
- const { measures: vseedMeasures = [] } = vseed;
7564
- const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
7565
- const dimensions = getBasicDimensions(vseed);
7617
+ const encodingForFunnel = (advancedVSeed)=>{
7618
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7619
+ const measures = findAllMeasures(vseedMeasures);
7566
7620
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
7567
7621
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
7568
7622
  const encoding = {};
@@ -7597,14 +7651,18 @@ const funnel_generateMeasureEncoding = (measures, encoding)=>{
7597
7651
  const funnel_generateDimensionEncoding = (dimensions, encoding)=>{
7598
7652
  encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7599
7653
  encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7600
- if (0 === encoding.color.length) encoding.color = dimensions.map((item)=>item.id);
7654
+ if (0 === encoding.color.length) encoding.color = [
7655
+ MeasureName
7656
+ ];
7601
7657
  if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
7602
7658
  };
7603
7659
  const funnelAdvancedPipeline = [
7604
7660
  initAdvancedVSeed_initAdvancedVSeed,
7661
+ defaultMeasures_defaultMeasures,
7662
+ defaultDimensions,
7663
+ defaultMeasureName,
7605
7664
  encodingForFunnel,
7606
7665
  buildMeasures,
7607
- autoDimensions_autoDimensions,
7608
7666
  pivotAdapter([
7609
7667
  reshapeWithEncoding
7610
7668
  ], [
@@ -7717,11 +7775,9 @@ const registerFunnel = ()=>{
7717
7775
  Builder._advancedPipelineMap.funnel = funnelAdvancedPipeline;
7718
7776
  Builder._specPipelineMap.funnel = funnelSpecPipeline;
7719
7777
  };
7720
- const encodingForHeatmap = (advancedVSeed, context)=>{
7721
- const { vseed } = context;
7722
- const { measures: vseedMeasures = [] } = vseed;
7723
- const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
7724
- const dimensions = getBasicDimensions(vseed);
7778
+ const encodingForHeatmap = (advancedVSeed)=>{
7779
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7780
+ const measures = findAllMeasures(vseedMeasures);
7725
7781
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
7726
7782
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
7727
7783
  const encoding = {};
@@ -7766,14 +7822,18 @@ const heatmap_generateDimensionEncoding = (dimensions, encoding)=>{
7766
7822
  ];
7767
7823
  if (0 === encoding.y.length) if (dimensions.length > 1) encoding.y = dimensions.slice(1).map((item)=>item.id);
7768
7824
  else encoding.y = dimensions.slice(0).map((item)=>item.id);
7769
- if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
7825
+ if (0 === encoding.color.length) encoding.color = [
7826
+ MeasureName
7827
+ ];
7770
7828
  if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
7771
7829
  };
7772
7830
  const heatmapAdvancedPipeline = [
7773
7831
  initAdvancedVSeed_initAdvancedVSeed,
7832
+ defaultMeasures_defaultMeasures,
7833
+ defaultDimensions,
7834
+ defaultMeasureName,
7774
7835
  encodingForHeatmap,
7775
7836
  buildMeasures,
7776
- autoDimensions_autoDimensions,
7777
7837
  pivotAdapter([
7778
7838
  reshapeWithEncoding
7779
7839
  ], [
@@ -8682,7 +8742,9 @@ const zMeasure = external_zod_namespaceObject.z.object({
8682
8742
  'size',
8683
8743
  'color',
8684
8744
  'label',
8685
- 'tooltip'
8745
+ 'tooltip',
8746
+ 'detail',
8747
+ 'column'
8686
8748
  ]).optional(),
8687
8749
  parentId: external_zod_namespaceObject.z.string().optional()
8688
8750
  });