@visactor/vseed 0.1.4 → 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.
- package/dist/builder/builder/builder.d.ts +2 -2
- package/dist/index.cjs +851 -703
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +851 -703
- package/dist/index.js.map +1 -1
- package/dist/pipeline/advanced/chart/pipes/{init/autoDimensions.d.ts → default/defaultDimensions.d.ts} +1 -1
- package/dist/pipeline/advanced/chart/pipes/default/defaultMeasureName.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/default/defaultMeasures.d.ts +5 -0
- package/dist/pipeline/advanced/chart/pipes/default/index.d.ts +3 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/column.d.ts +19 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/line.d.ts +17 -0
- package/dist/pipeline/advanced/chart/pipes/index.d.ts +1 -0
- package/dist/pipeline/advanced/chart/pipes/init/index.d.ts +0 -2
- package/dist/pipeline/advanced/chart/pipes/measures/utils.d.ts +3 -18
- package/dist/pipeline/advanced/table/pipes/reshape/index.d.ts +1 -0
- package/dist/pipeline/advanced/table/pipes/reshape/reshapePivotTable.d.ts +2 -0
- package/dist/pipeline/spec/chart/pipes/color/colorCellStyleFill.d.ts +2 -0
- package/dist/pipeline/spec/chart/pipes/color/colorFunnelStyleFill.d.ts +2 -0
- package/dist/pipeline/spec/chart/pipes/color/colorPieStyleFill.d.ts +2 -0
- package/dist/pipeline/spec/chart/pipes/color/colorRoseStyleFill.d.ts +2 -0
- package/dist/pipeline/spec/chart/pipes/color/index.d.ts +4 -0
- package/dist/pipeline/spec/chart/pipes/markStyle/cellStyle.d.ts +2 -0
- package/dist/pipeline/spec/chart/pipes/markStyle/funnelStyle.d.ts +2 -0
- package/dist/pipeline/spec/chart/pipes/markStyle/index.d.ts +5 -1
- package/dist/pipeline/spec/chart/pipes/markStyle/pieStyle.d.ts +2 -0
- package/dist/pipeline/spec/chart/pipes/markStyle/roseStyle.d.ts +2 -0
- package/dist/types/advancedVSeed.d.ts +2 -0
- package/dist/types/chartType/area/area.d.ts +20 -3
- package/dist/types/chartType/area/zArea.d.ts +2 -0
- package/dist/types/chartType/areaPercent/areaPercent.d.ts +16 -0
- package/dist/types/chartType/areaPercent/zAreaPercent.d.ts +2 -0
- package/dist/types/chartType/bar/zBar.d.ts +2 -0
- package/dist/types/chartType/barParallel/zBarParallel.d.ts +2 -0
- package/dist/types/chartType/barPercent/zBarPercent.d.ts +2 -0
- package/dist/types/chartType/column/column.d.ts +17 -1
- package/dist/types/chartType/column/zColumn.d.ts +2 -0
- package/dist/types/chartType/columnParallel/columnParallel.d.ts +17 -0
- package/dist/types/chartType/columnParallel/zColumnParallel.d.ts +2 -0
- package/dist/types/chartType/columnPercent/columnPercent.d.ts +17 -1
- package/dist/types/chartType/columnPercent/zColumnPercent.d.ts +2 -0
- package/dist/types/chartType/donut/zDonut.d.ts +2 -0
- package/dist/types/chartType/dualAxis/zDualAxis.d.ts +10 -0
- package/dist/types/chartType/funnel/zFunnel.d.ts +2 -0
- package/dist/types/chartType/heatmap/zHeatmap.d.ts +2 -0
- package/dist/types/chartType/line/line.d.ts +16 -0
- package/dist/types/chartType/line/zLine.d.ts +2 -0
- package/dist/types/chartType/pie/zPie.d.ts +2 -0
- package/dist/types/chartType/pivotTable/zPivotTable.d.ts +2 -0
- package/dist/types/chartType/radar/zRadar.d.ts +2 -0
- package/dist/types/chartType/rose/zRose.d.ts +2 -0
- package/dist/types/chartType/roseParallel/zRoseParallel.d.ts +2 -0
- package/dist/types/chartType/scatter/zScatter.d.ts +10 -0
- package/dist/types/chartType/table/zTable.d.ts +2 -0
- package/dist/types/properties/measures/measures.d.ts +3 -1
- package/dist/types/properties/measures/zDualMeasures.d.ts +16 -0
- package/dist/types/properties/measures/zMeasures.d.ts +6 -0
- package/dist/types/properties/measures/zScatterMeasures.d.ts +16 -0
- package/dist/types/zVseed.d.ts +56 -0
- package/dist/umd/index.js +872 -724
- package/dist/umd/index.js.map +1 -1
- package/package.json +1 -1
- 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
|
-
|
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
|
-
|
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
|
-
|
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))
|
1013
|
+
].includes(key) && !measures.some((measure)=>measure.id === key));
|
1014
|
+
result.dimensions = newDimensions.map((dim)=>({
|
991
1015
|
id: dim,
|
992
|
-
alias: dim
|
993
|
-
|
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
|
-
|
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
|
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
|
-
|
1107
|
-
|
1212
|
+
hideIndicatorName: true,
|
1213
|
+
indicators: [
|
1214
|
+
{
|
1108
1215
|
cellType: 'text',
|
1109
|
-
indicatorKey:
|
1110
|
-
title:
|
1216
|
+
indicatorKey: foldInfo.measureValue,
|
1217
|
+
title: 'indicator',
|
1111
1218
|
width: 'auto',
|
1112
|
-
format: pivotIndicators_fieldFormat(
|
1113
|
-
}
|
1114
|
-
|
1115
|
-
})
|
1219
|
+
format: pivotIndicators_fieldFormat(measures, foldInfo, locale)
|
1220
|
+
}
|
1221
|
+
]
|
1116
1222
|
};
|
1117
1223
|
};
|
1118
|
-
const pivotIndicators_fieldFormat = (
|
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,95 +1383,81 @@ const initAdvancedVSeed_initAdvancedVSeed = (advancedVSeed, context)=>{
|
|
1271
1383
|
locale: locale || 'zh-CN'
|
1272
1384
|
};
|
1273
1385
|
};
|
1274
|
-
const
|
1275
|
-
const
|
1276
|
-
const
|
1277
|
-
|
1278
|
-
|
1279
|
-
|
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`指标名称`,
|
1295
|
-
encoding: 'detail'
|
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
|
1296
1392
|
};
|
1297
1393
|
if (!dataset) throw new Error('dataset is required');
|
1298
|
-
if (0 === dataset.length) return
|
1299
|
-
|
1300
|
-
|
1301
|
-
|
1302
|
-
...dim
|
1303
|
-
}));
|
1304
|
-
if (basicDimensions.some((dim)=>dim.id === MeasureName)) return basicDimensions;
|
1305
|
-
basicDimensions.push(MeaName);
|
1306
|
-
return basicDimensions;
|
1307
|
-
}
|
1394
|
+
if (0 === dataset.length) return {
|
1395
|
+
...advancedVSeed,
|
1396
|
+
measures: []
|
1397
|
+
};
|
1308
1398
|
const top100dataset = dataset.slice(0, 100);
|
1309
1399
|
const sample = top100dataset.reduce((prev, cur)=>({
|
1310
1400
|
...prev,
|
1311
1401
|
...cur
|
1312
1402
|
}), {});
|
1313
|
-
const
|
1403
|
+
const defaultMeasures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
|
1314
1404
|
'',
|
1315
1405
|
null,
|
1316
1406
|
void 0
|
1317
|
-
].includes(key)).map((
|
1318
|
-
id:
|
1319
|
-
alias:
|
1320
|
-
location: 'dimension'
|
1407
|
+
].includes(key)).map((measure)=>({
|
1408
|
+
id: measure,
|
1409
|
+
alias: measure
|
1321
1410
|
}));
|
1322
|
-
|
1323
|
-
|
1324
|
-
|
1325
|
-
|
1326
|
-
const { dataset, measures } = vseed;
|
1327
|
-
if (!measures || 0 === measures.length) return generateMeasuresByDataset(dataset);
|
1328
|
-
return measures;
|
1411
|
+
return {
|
1412
|
+
...advancedVSeed,
|
1413
|
+
measures: defaultMeasures
|
1414
|
+
};
|
1329
1415
|
};
|
1330
|
-
const
|
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
|
+
};
|
1331
1426
|
if (!dataset) throw new Error('dataset is required');
|
1332
|
-
if (0 === dataset.length) return
|
1427
|
+
if (0 === dataset.length) return result;
|
1428
|
+
const measures = findAllMeasures(advancedVSeed.measures);
|
1333
1429
|
const top100dataset = dataset.slice(0, 100);
|
1334
1430
|
const sample = top100dataset.reduce((prev, cur)=>({
|
1335
1431
|
...prev,
|
1336
1432
|
...cur
|
1337
1433
|
}), {});
|
1338
|
-
const
|
1434
|
+
const newDimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
|
1339
1435
|
'',
|
1340
1436
|
null,
|
1341
1437
|
void 0
|
1342
|
-
].includes(key)).map((
|
1343
|
-
id:
|
1344
|
-
alias:
|
1438
|
+
].includes(key) && !measures.some((measure)=>measure.id === key)).map((dim)=>({
|
1439
|
+
id: dim,
|
1440
|
+
alias: dim
|
1345
1441
|
}));
|
1346
|
-
return
|
1347
|
-
|
1348
|
-
|
1349
|
-
|
1350
|
-
if (!measures) return false;
|
1351
|
-
return measures.some((measure)=>'children' in measure);
|
1442
|
+
return {
|
1443
|
+
...result,
|
1444
|
+
dimensions: newDimensions
|
1445
|
+
};
|
1352
1446
|
};
|
1353
|
-
const
|
1354
|
-
const
|
1355
|
-
|
1356
|
-
|
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;
|
1357
1457
|
};
|
1358
|
-
const encodingForLine = (advancedVSeed
|
1359
|
-
const {
|
1360
|
-
const
|
1361
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
1362
|
-
const dimensions = getBasicDimensions(vseed);
|
1458
|
+
const encodingForLine = (advancedVSeed)=>{
|
1459
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
1460
|
+
const measures = findAllMeasures(vseedMeasures);
|
1363
1461
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
1364
1462
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
1365
1463
|
const encoding = {};
|
@@ -1372,36 +1470,46 @@ const encodingForLine = (advancedVSeed, context)=>{
|
|
1372
1470
|
encoding
|
1373
1471
|
};
|
1374
1472
|
};
|
1375
|
-
const generateDefaultMeasureEncoding = (measures, encoding)=>{
|
1376
|
-
encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
|
1377
|
-
encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
1378
|
-
};
|
1379
1473
|
const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
1380
|
-
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
1381
1474
|
const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensions.map((d)=>d.id));
|
1382
1475
|
encoding.x = uniqueDimIds.slice(0, 1);
|
1383
|
-
encoding.color = uniqueDimIds.slice(
|
1384
|
-
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
1476
|
+
encoding.color = uniqueDimIds.slice(1);
|
1385
1477
|
encoding.tooltip = uniqueDimIds;
|
1478
|
+
encoding.detail = [];
|
1386
1479
|
encoding.label = [];
|
1387
1480
|
encoding.row = [];
|
1388
1481
|
encoding.column = [];
|
1389
1482
|
};
|
1390
|
-
const generateMeasureEncoding = (measures, encoding)=>{
|
1391
|
-
encoding.tooltip = measures.map((item)=>item.id);
|
1392
|
-
encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
1393
|
-
const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
1394
|
-
if (color.length > 0) encoding.color = color;
|
1395
|
-
};
|
1396
1483
|
const generateDimensionEncoding = (dimensions, encoding)=>{
|
1397
|
-
encoding.x = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'xAxis' === item.encoding
|
1484
|
+
encoding.x = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
|
1398
1485
|
encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
1399
1486
|
encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
1400
1487
|
if (0 === encoding.x.length) encoding.x = [
|
1401
1488
|
dimensions[0].id
|
1402
1489
|
];
|
1403
|
-
if (0 === encoding.color.length) encoding.color =
|
1404
|
-
|
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);
|
1405
1513
|
};
|
1406
1514
|
const measureDepth = (measures = [])=>{
|
1407
1515
|
if (!measures) return 0;
|
@@ -1461,9 +1569,7 @@ const buildMeasures = (advancedVSeed, context)=>{
|
|
1461
1569
|
advancedVSeed.measures = generateMeasuresByParentId(vseed.measures);
|
1462
1570
|
return advancedVSeed;
|
1463
1571
|
}
|
1464
|
-
|
1465
|
-
if (isPivotChart(vseed)) advancedVSeed.measures = basicMeasuresToMeasureTree(basicMeasures);
|
1466
|
-
else advancedVSeed.measures = basicMeasures;
|
1572
|
+
if (isPivotChart(vseed)) advancedVSeed.measures = basicMeasuresToMeasureTree(advancedVSeed.measures);
|
1467
1573
|
return advancedVSeed;
|
1468
1574
|
};
|
1469
1575
|
const generateMeasuresByParentId = (measures)=>{
|
@@ -1494,102 +1600,12 @@ const basicMeasuresToMeasureTree = (measures)=>{
|
|
1494
1600
|
}
|
1495
1601
|
];
|
1496
1602
|
};
|
1497
|
-
const autoDimensions_autoDimensions = (advancedVSeed, context)=>{
|
1498
|
-
const result = {
|
1499
|
-
...advancedVSeed
|
1500
|
-
};
|
1501
|
-
const { vseed } = context;
|
1502
|
-
const { dimensions, dataset } = vseed;
|
1503
|
-
const measures = findAllMeasures(advancedVSeed.measures);
|
1504
|
-
const MeaName = {
|
1505
|
-
id: MeasureName,
|
1506
|
-
alias: intl.i18n`指标名称`
|
1507
|
-
};
|
1508
|
-
if (!dataset) throw new Error('dataset is required');
|
1509
|
-
if (0 === dataset.length) return result;
|
1510
|
-
if (dimensions) {
|
1511
|
-
result.dimensions = dimensions.map((dim)=>({
|
1512
|
-
location: 'dimension',
|
1513
|
-
...dim
|
1514
|
-
}));
|
1515
|
-
if (result.dimensions.some((dim)=>dim.id === MeasureName)) return result;
|
1516
|
-
result.dimensions.push(MeaName);
|
1517
|
-
return result;
|
1518
|
-
}
|
1519
|
-
const top100dataset = dataset.slice(0, 100);
|
1520
|
-
const sample = top100dataset.reduce((prev, cur)=>({
|
1521
|
-
...prev,
|
1522
|
-
...cur
|
1523
|
-
}), {});
|
1524
|
-
result.dimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
|
1525
|
-
'',
|
1526
|
-
null,
|
1527
|
-
void 0
|
1528
|
-
].includes(key) && !measures.some((measure)=>measure.id === key)).map((dim)=>({
|
1529
|
-
id: dim,
|
1530
|
-
alias: dim,
|
1531
|
-
location: 'dimension'
|
1532
|
-
}));
|
1533
|
-
result.dimensions.push(MeaName);
|
1534
|
-
return result;
|
1535
|
-
};
|
1536
1603
|
const pivotAdapter = (pipeline, pivotPipeline)=>(advancedVSeed, context)=>{
|
1537
1604
|
const { vseed } = context;
|
1538
1605
|
const usePivotChart = isPivotChart(vseed);
|
1539
1606
|
if (usePivotChart) return execPipeline(pivotPipeline, context, advancedVSeed);
|
1540
1607
|
return execPipeline(pipeline, context, advancedVSeed);
|
1541
1608
|
};
|
1542
|
-
const foldMeasures = (dataset, measures, options)=>{
|
1543
|
-
const { measureId, measureName, measureValue, colorMeasureId } = options || {};
|
1544
|
-
const foldInfo = {
|
1545
|
-
measureId,
|
1546
|
-
measureName,
|
1547
|
-
measureValue,
|
1548
|
-
colorRange: [
|
1549
|
-
0,
|
1550
|
-
1
|
1551
|
-
],
|
1552
|
-
measureRange: [
|
1553
|
-
0,
|
1554
|
-
1
|
1555
|
-
],
|
1556
|
-
foldMap: {}
|
1557
|
-
};
|
1558
|
-
const result = new Array(dataset.length * measures.length);
|
1559
|
-
let index = 0;
|
1560
|
-
const ids = measures.map((d)=>d.id);
|
1561
|
-
for(let i = 0; i < dataset.length; i++)for(let j = 0; j < measures.length; j++){
|
1562
|
-
const datum = (0, external_remeda_namespaceObject.omit)({
|
1563
|
-
...dataset[i]
|
1564
|
-
}, ids);
|
1565
|
-
datum[ORIGINAL_DATA] = dataset[i];
|
1566
|
-
const measure = measures[j];
|
1567
|
-
const { id, alias } = measure;
|
1568
|
-
datum[id] = dataset[i][id];
|
1569
|
-
datum[measureId] = id;
|
1570
|
-
datum[measureName] = alias || id;
|
1571
|
-
datum[measureValue] = dataset[i][id];
|
1572
|
-
if (colorMeasureId) {
|
1573
|
-
const value = datum[ORIGINAL_DATA][colorMeasureId];
|
1574
|
-
datum[ColorEncoding] = value;
|
1575
|
-
datum[ColorIdEncoding] = colorMeasureId;
|
1576
|
-
foldInfo.colorRange = [
|
1577
|
-
Math.min(foldInfo.colorRange[0] || 1 / 0, Number(value)),
|
1578
|
-
Math.max(foldInfo.colorRange[1] || -1 / 0, Number(value))
|
1579
|
-
];
|
1580
|
-
}
|
1581
|
-
foldInfo.measureRange = [
|
1582
|
-
Math.min(foldInfo.measureRange[0] || 1 / 0, Number(datum[id])),
|
1583
|
-
Math.max(foldInfo.measureRange[1] || -1 / 0, Number(datum[id]))
|
1584
|
-
];
|
1585
|
-
foldInfo.foldMap[id] = alias;
|
1586
|
-
result[index++] = datum;
|
1587
|
-
}
|
1588
|
-
return {
|
1589
|
-
dataset: result,
|
1590
|
-
foldInfo
|
1591
|
-
};
|
1592
|
-
};
|
1593
1609
|
const unfoldDimensions = (dataset, dimensions, encoding, options)=>{
|
1594
1610
|
const { foldMeasureId, separator, colorItemAsId } = options;
|
1595
1611
|
const unfoldInfo = {
|
@@ -1684,7 +1700,9 @@ const reshapeWithEncoding = (advancedVSeed, context)=>{
|
|
1684
1700
|
const { dimensions, measures, encoding } = advancedVSeed;
|
1685
1701
|
if (!measures || !dimensions || !dataset || !encoding) return result;
|
1686
1702
|
if (0 === measures.length) throw new Error('measures can not be empty');
|
1703
|
+
const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
|
1687
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,
|
1688
1706
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
1689
1707
|
});
|
1690
1708
|
return {
|
@@ -1715,6 +1733,7 @@ const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
|
|
1715
1733
|
if (measures) measures.forEach((measure)=>{
|
1716
1734
|
if (measure.children && measure.children.length > 0) measureGroups.push(measure);
|
1717
1735
|
});
|
1736
|
+
const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
|
1718
1737
|
const datasets = [];
|
1719
1738
|
const datasetReshapeInfo = [];
|
1720
1739
|
measureGroups.forEach((measureGroup, index)=>{
|
@@ -1722,6 +1741,7 @@ const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
|
|
1722
1741
|
if (!measures) return;
|
1723
1742
|
const groupId = measureGroup.id;
|
1724
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,
|
1725
1745
|
foldMeasureValue: `${FoldMeasureValue}${groupId}`,
|
1726
1746
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
1727
1747
|
});
|
@@ -1930,9 +1950,11 @@ const annotation_annotation = (advancedVSeed, context)=>{
|
|
1930
1950
|
};
|
1931
1951
|
const lineAdvancedPipeline = [
|
1932
1952
|
initAdvancedVSeed_initAdvancedVSeed,
|
1953
|
+
defaultMeasures_defaultMeasures,
|
1954
|
+
defaultDimensions,
|
1955
|
+
defaultMeasureName,
|
1933
1956
|
encodingForLine,
|
1934
1957
|
buildMeasures,
|
1935
|
-
autoDimensions_autoDimensions,
|
1936
1958
|
pivotAdapter([
|
1937
1959
|
reshapeWithEncoding
|
1938
1960
|
], [
|
@@ -2279,129 +2301,18 @@ const yLinear = (spec, context)=>{
|
|
2279
2301
|
domainLine: {
|
2280
2302
|
visible: line?.visible,
|
2281
2303
|
style: {
|
2282
|
-
lineWidth: line?.lineWidth,
|
2283
|
-
stroke: line?.lineColor
|
2284
|
-
}
|
2285
|
-
},
|
2286
|
-
innerOffset: {
|
2287
|
-
top: LINEAR_AXIS_INNER_OFFSET_TOP
|
2288
|
-
}
|
2289
|
-
};
|
2290
|
-
result.axes = [
|
2291
|
-
...result.axes,
|
2292
|
-
linearAxis
|
2293
|
-
];
|
2294
|
-
return result;
|
2295
|
-
};
|
2296
|
-
const label_label = (spec, context)=>{
|
2297
|
-
const result = {
|
2298
|
-
...spec
|
2299
|
-
};
|
2300
|
-
const { advancedVSeed } = context;
|
2301
|
-
const { measures, datasetReshapeInfo, locale } = advancedVSeed;
|
2302
|
-
const { chartType } = advancedVSeed;
|
2303
|
-
const baseConfig = advancedVSeed.config[chartType];
|
2304
|
-
if (!baseConfig || !baseConfig.label) return result;
|
2305
|
-
const { measureId, measureValue } = datasetReshapeInfo[0].foldInfo;
|
2306
|
-
const { label } = baseConfig;
|
2307
|
-
const { enable } = label;
|
2308
|
-
result.label = {
|
2309
|
-
visible: enable,
|
2310
|
-
formatMethod: (value, datum)=>{
|
2311
|
-
const result = [];
|
2312
|
-
const formatValue = (value)=>{
|
2313
|
-
const id = datum[measureId];
|
2314
|
-
const measure = findMeasureById(measures, id);
|
2315
|
-
if (!measure) return value;
|
2316
|
-
const { format = {}, autoFormat = true } = measure;
|
2317
|
-
if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
|
2318
|
-
const formatter = createFormatter(format);
|
2319
|
-
return formatter(value);
|
2320
|
-
}
|
2321
|
-
if (autoFormat) return autoFormatter(value, locale);
|
2322
|
-
return String(value);
|
2323
|
-
};
|
2324
|
-
result.push(formatValue(datum[measureValue]));
|
2325
|
-
return result.join(' ');
|
2326
|
-
}
|
2327
|
-
};
|
2328
|
-
return result;
|
2329
|
-
};
|
2330
|
-
const tooltip_tooltip = (spec, context)=>{
|
2331
|
-
const result = {
|
2332
|
-
...spec
|
2333
|
-
};
|
2334
|
-
const { advancedVSeed } = context;
|
2335
|
-
const { measures, datasetReshapeInfo, chartType, locale, dimensions } = advancedVSeed;
|
2336
|
-
const baseConfig = advancedVSeed.config[chartType];
|
2337
|
-
const { tooltip = {
|
2338
|
-
enable: true
|
2339
|
-
} } = baseConfig;
|
2340
|
-
const { enable } = tooltip;
|
2341
|
-
const { measureId, measureValue, measureName } = datasetReshapeInfo[0].foldInfo;
|
2342
|
-
const { encodingColor: colorName } = datasetReshapeInfo[0].unfoldInfo;
|
2343
|
-
result.tooltip = {
|
2344
|
-
visible: enable,
|
2345
|
-
mark: {
|
2346
|
-
title: {
|
2347
|
-
visible: true
|
2348
|
-
},
|
2349
|
-
content: [
|
2350
|
-
...dimensions.map((item)=>({
|
2351
|
-
visible: true,
|
2352
|
-
hasShape: true,
|
2353
|
-
shapeType: 'rectRound',
|
2354
|
-
key: (datum)=>{
|
2355
|
-
if (item.alias || item.id) return item.alias || item.id;
|
2356
|
-
return datum && datum[item.id];
|
2357
|
-
},
|
2358
|
-
value: (datum)=>datum && datum[item.id]
|
2359
|
-
})),
|
2360
|
-
{
|
2361
|
-
visible: true,
|
2362
|
-
hasShape: true,
|
2363
|
-
key: (datum)=>datum && datum[measureName || colorName] || '',
|
2364
|
-
value: (datum)=>{
|
2365
|
-
if (!datum) return '';
|
2366
|
-
const value = datum[measureValue];
|
2367
|
-
const id = datum[measureId];
|
2368
|
-
const measure = findMeasureById(measures, id);
|
2369
|
-
if (!measure) return String(value);
|
2370
|
-
const { format = {}, autoFormat = true } = measure;
|
2371
|
-
if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
|
2372
|
-
const formatter = createFormatter(format);
|
2373
|
-
return formatter(value);
|
2374
|
-
}
|
2375
|
-
if (autoFormat) return autoFormatter(value, locale);
|
2376
|
-
return String(value);
|
2377
|
-
}
|
2378
|
-
}
|
2379
|
-
]
|
2304
|
+
lineWidth: line?.lineWidth,
|
2305
|
+
stroke: line?.lineColor
|
2306
|
+
}
|
2380
2307
|
},
|
2381
|
-
|
2382
|
-
|
2383
|
-
{
|
2384
|
-
visible: true,
|
2385
|
-
key: (datum)=>datum && datum[colorName] || '',
|
2386
|
-
value: (datum)=>{
|
2387
|
-
if (!datum) return '';
|
2388
|
-
const value = datum[measureValue];
|
2389
|
-
const id = datum[measureId];
|
2390
|
-
const measure = findMeasureById(measures, id);
|
2391
|
-
if (!measure) return String(value);
|
2392
|
-
const { format = {}, autoFormat = true } = measure;
|
2393
|
-
if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
|
2394
|
-
const formatter = createFormatter(format);
|
2395
|
-
return formatter(value);
|
2396
|
-
}
|
2397
|
-
if (autoFormat) return autoFormatter(value, locale);
|
2398
|
-
return String(value);
|
2399
|
-
},
|
2400
|
-
shapeType: 'rectRound'
|
2401
|
-
}
|
2402
|
-
]
|
2308
|
+
innerOffset: {
|
2309
|
+
top: LINEAR_AXIS_INNER_OFFSET_TOP
|
2403
2310
|
}
|
2404
2311
|
};
|
2312
|
+
result.axes = [
|
2313
|
+
...result.axes,
|
2314
|
+
linearAxis
|
2315
|
+
];
|
2405
2316
|
return result;
|
2406
2317
|
};
|
2407
2318
|
const verticalCrosshairLine = (spec, context)=>{
|
@@ -2912,6 +2823,117 @@ const lineStyle_lineStyle = (spec, context)=>{
|
|
2912
2823
|
}
|
2913
2824
|
};
|
2914
2825
|
};
|
2826
|
+
const label_label = (spec, context)=>{
|
2827
|
+
const result = {
|
2828
|
+
...spec
|
2829
|
+
};
|
2830
|
+
const { advancedVSeed } = context;
|
2831
|
+
const { measures, datasetReshapeInfo, locale } = advancedVSeed;
|
2832
|
+
const { chartType } = advancedVSeed;
|
2833
|
+
const baseConfig = advancedVSeed.config[chartType];
|
2834
|
+
if (!baseConfig || !baseConfig.label) return result;
|
2835
|
+
const { measureId, measureValue } = datasetReshapeInfo[0].foldInfo;
|
2836
|
+
const { label } = baseConfig;
|
2837
|
+
const { enable } = label;
|
2838
|
+
result.label = {
|
2839
|
+
visible: enable,
|
2840
|
+
formatMethod: (value, datum)=>{
|
2841
|
+
const result = [];
|
2842
|
+
const formatValue = (value)=>{
|
2843
|
+
const id = datum[measureId];
|
2844
|
+
const measure = findMeasureById(measures, id);
|
2845
|
+
if (!measure) return value;
|
2846
|
+
const { format = {}, autoFormat = true } = measure;
|
2847
|
+
if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
|
2848
|
+
const formatter = createFormatter(format);
|
2849
|
+
return formatter(value);
|
2850
|
+
}
|
2851
|
+
if (autoFormat) return autoFormatter(value, locale);
|
2852
|
+
return String(value);
|
2853
|
+
};
|
2854
|
+
result.push(formatValue(datum[measureValue]));
|
2855
|
+
return result.join(' ');
|
2856
|
+
}
|
2857
|
+
};
|
2858
|
+
return result;
|
2859
|
+
};
|
2860
|
+
const tooltip_tooltip = (spec, context)=>{
|
2861
|
+
const result = {
|
2862
|
+
...spec
|
2863
|
+
};
|
2864
|
+
const { advancedVSeed } = context;
|
2865
|
+
const { measures, datasetReshapeInfo, chartType, locale, dimensions } = advancedVSeed;
|
2866
|
+
const baseConfig = advancedVSeed.config[chartType];
|
2867
|
+
const { tooltip = {
|
2868
|
+
enable: true
|
2869
|
+
} } = baseConfig;
|
2870
|
+
const { enable } = tooltip;
|
2871
|
+
const { measureId, measureValue, measureName } = datasetReshapeInfo[0].foldInfo;
|
2872
|
+
const { encodingColor: colorName } = datasetReshapeInfo[0].unfoldInfo;
|
2873
|
+
result.tooltip = {
|
2874
|
+
visible: enable,
|
2875
|
+
mark: {
|
2876
|
+
title: {
|
2877
|
+
visible: true
|
2878
|
+
},
|
2879
|
+
content: [
|
2880
|
+
...dimensions.map((item)=>({
|
2881
|
+
visible: true,
|
2882
|
+
hasShape: true,
|
2883
|
+
shapeType: 'rectRound',
|
2884
|
+
key: (datum)=>{
|
2885
|
+
if (item.alias || item.id) return item.alias || item.id;
|
2886
|
+
return datum && datum[item.id];
|
2887
|
+
},
|
2888
|
+
value: (datum)=>datum && datum[item.id]
|
2889
|
+
})),
|
2890
|
+
{
|
2891
|
+
visible: true,
|
2892
|
+
hasShape: true,
|
2893
|
+
key: (datum)=>datum && datum[measureName || colorName] || '',
|
2894
|
+
value: (datum)=>{
|
2895
|
+
if (!datum) return '';
|
2896
|
+
const value = datum[measureValue];
|
2897
|
+
const id = datum[measureId];
|
2898
|
+
const measure = findMeasureById(measures, id);
|
2899
|
+
if (!measure) return String(value);
|
2900
|
+
const { format = {}, autoFormat = true } = measure;
|
2901
|
+
if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
|
2902
|
+
const formatter = createFormatter(format);
|
2903
|
+
return formatter(value);
|
2904
|
+
}
|
2905
|
+
if (autoFormat) return autoFormatter(value, locale);
|
2906
|
+
return String(value);
|
2907
|
+
}
|
2908
|
+
}
|
2909
|
+
]
|
2910
|
+
},
|
2911
|
+
dimension: {
|
2912
|
+
content: [
|
2913
|
+
{
|
2914
|
+
visible: true,
|
2915
|
+
key: (datum)=>datum && datum[colorName] || '',
|
2916
|
+
value: (datum)=>{
|
2917
|
+
if (!datum) return '';
|
2918
|
+
const value = datum[measureValue];
|
2919
|
+
const id = datum[measureId];
|
2920
|
+
const measure = findMeasureById(measures, id);
|
2921
|
+
if (!measure) return String(value);
|
2922
|
+
const { format = {}, autoFormat = true } = measure;
|
2923
|
+
if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
|
2924
|
+
const formatter = createFormatter(format);
|
2925
|
+
return formatter(value);
|
2926
|
+
}
|
2927
|
+
if (autoFormat) return autoFormatter(value, locale);
|
2928
|
+
return String(value);
|
2929
|
+
},
|
2930
|
+
shapeType: 'rectRound'
|
2931
|
+
}
|
2932
|
+
]
|
2933
|
+
}
|
2934
|
+
};
|
2935
|
+
return result;
|
2936
|
+
};
|
2915
2937
|
const isSubset = (sub, obj)=>Object.entries(sub).every(([key, value])=>{
|
2916
2938
|
if ('string' == typeof value) return obj[key] === value;
|
2917
2939
|
if ('number' == typeof value) return obj[key] === value;
|
@@ -3528,7 +3550,7 @@ const pivotRowDimensions = (spec, context)=>{
|
|
3528
3550
|
const { advancedVSeed } = context;
|
3529
3551
|
const dimensions = advancedVSeed.dimensions;
|
3530
3552
|
if (!dimensions) return result;
|
3531
|
-
const rowDimensions = dimensions.filter((dim)=>'rowDimension' === dim.location);
|
3553
|
+
const rowDimensions = dimensions.filter((dim)=>'rowDimension' === dim.location || 'row' === dim.encoding);
|
3532
3554
|
const rows = rowDimensions.map((dim)=>({
|
3533
3555
|
dimensionKey: dim.id,
|
3534
3556
|
title: dim.alias || dim.id
|
@@ -3545,17 +3567,132 @@ const pivotColumnDimensions = (spec, context)=>{
|
|
3545
3567
|
const { advancedVSeed } = context;
|
3546
3568
|
const dimensions = advancedVSeed.dimensions;
|
3547
3569
|
if (!dimensions) return result;
|
3548
|
-
const columnDimensions = dimensions.filter((dim)=>'columnDimension' === dim.location);
|
3570
|
+
const columnDimensions = dimensions.filter((dim)=>'columnDimension' === dim.location || 'column' === dim.encoding);
|
3549
3571
|
const columns = columnDimensions.map((dim)=>({
|
3550
3572
|
dimensionKey: dim.id,
|
3551
3573
|
title: dim.alias || dim.id
|
3552
3574
|
}));
|
3553
3575
|
return {
|
3554
3576
|
...result,
|
3555
|
-
columns: columns
|
3577
|
+
columns: columns
|
3578
|
+
};
|
3579
|
+
};
|
3580
|
+
const pivotDiscreteLegend = (spec, context)=>{
|
3581
|
+
const result = {
|
3582
|
+
...spec
|
3583
|
+
};
|
3584
|
+
const { advancedVSeed } = context;
|
3585
|
+
const { chartType } = advancedVSeed;
|
3586
|
+
const baseConfig = advancedVSeed.config[chartType];
|
3587
|
+
if (!baseConfig || !baseConfig.legend) return result;
|
3588
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
3589
|
+
const colorItems = (0, external_remeda_namespaceObject.unique)(datasetReshapeInfo.flatMap((d)=>d.unfoldInfo.colorItems));
|
3590
|
+
const colorIdMap = datasetReshapeInfo.reduce((prev, cur)=>({
|
3591
|
+
...prev,
|
3592
|
+
...cur.unfoldInfo.colorIdMap
|
3593
|
+
}), {});
|
3594
|
+
const { legend, color } = baseConfig;
|
3595
|
+
const { colorScheme, colorMapping } = color;
|
3596
|
+
const colorSpecified = createSpecifiedForColorMapping(colorMapping, colorIdMap, colorItems);
|
3597
|
+
const { enable, position = 'bottom', labelFontColor, labelFontSize = 12, labelFontWeight = 400, maxSize = 1, border, shapeType = 'rectRound' } = legend || {};
|
3598
|
+
const orient = [
|
3599
|
+
'bottom',
|
3600
|
+
'bottomLeft',
|
3601
|
+
'bottomRight',
|
3602
|
+
'bl',
|
3603
|
+
'br'
|
3604
|
+
].includes(position) ? 'bottom' : [
|
3605
|
+
'top',
|
3606
|
+
'topLeft',
|
3607
|
+
'topRight',
|
3608
|
+
'tl',
|
3609
|
+
'tr'
|
3610
|
+
].includes(position) ? 'top' : [
|
3611
|
+
'left',
|
3612
|
+
'leftTop',
|
3613
|
+
'leftBottom',
|
3614
|
+
'lt',
|
3615
|
+
'lb'
|
3616
|
+
].includes(position) ? 'left' : 'right';
|
3617
|
+
const legendPosition = [
|
3618
|
+
'topLeft',
|
3619
|
+
'bottomLeft',
|
3620
|
+
'leftTop',
|
3621
|
+
'rightTop',
|
3622
|
+
'lt',
|
3623
|
+
'rt',
|
3624
|
+
'tl',
|
3625
|
+
'bl'
|
3626
|
+
].includes(position) ? 'start' : [
|
3627
|
+
'topRight',
|
3628
|
+
'bottomRight',
|
3629
|
+
'leftBottom',
|
3630
|
+
'rightBottom',
|
3631
|
+
'lb',
|
3632
|
+
'rb',
|
3633
|
+
'rt',
|
3634
|
+
'br'
|
3635
|
+
].includes(position) ? 'end' : 'middle';
|
3636
|
+
const legends = {
|
3637
|
+
visible: enable,
|
3638
|
+
type: 'discrete',
|
3639
|
+
orient,
|
3640
|
+
position: legendPosition,
|
3641
|
+
maxCol: Math.max(1, maxSize),
|
3642
|
+
maxRow: Math.max(1, maxSize),
|
3643
|
+
data: colorItems.map((d, index)=>{
|
3644
|
+
const color = colorSpecified?.[d] ?? colorScheme?.[index % colorScheme.length];
|
3645
|
+
return {
|
3646
|
+
label: d,
|
3647
|
+
shape: {
|
3648
|
+
outerBorder: border ? {
|
3649
|
+
stroke: color,
|
3650
|
+
distance: 3,
|
3651
|
+
lineWidth: 1
|
3652
|
+
} : void 0,
|
3653
|
+
fill: color
|
3654
|
+
}
|
3655
|
+
};
|
3656
|
+
}),
|
3657
|
+
item: {
|
3658
|
+
focus: true,
|
3659
|
+
maxWidth: '30%',
|
3660
|
+
focusIconStyle: {
|
3661
|
+
size: labelFontSize + 2,
|
3662
|
+
fill: labelFontColor,
|
3663
|
+
fontWeight: labelFontWeight
|
3664
|
+
},
|
3665
|
+
shape: {
|
3666
|
+
space: border ? 6 : 4,
|
3667
|
+
style: {
|
3668
|
+
symbolType: shapeType,
|
3669
|
+
size: border ? 8 : 10
|
3670
|
+
}
|
3671
|
+
},
|
3672
|
+
label: {
|
3673
|
+
formatMethod: (value)=>colorIdMap[value] ?? value,
|
3674
|
+
style: {
|
3675
|
+
fontSize: labelFontSize,
|
3676
|
+
fill: labelFontColor,
|
3677
|
+
fontWeight: labelFontWeight
|
3678
|
+
}
|
3679
|
+
},
|
3680
|
+
background: {
|
3681
|
+
state: {
|
3682
|
+
selectedHover: {
|
3683
|
+
fill: labelFontColor,
|
3684
|
+
fillOpacity: 0.05
|
3685
|
+
}
|
3686
|
+
}
|
3687
|
+
}
|
3688
|
+
}
|
3689
|
+
};
|
3690
|
+
return {
|
3691
|
+
...result,
|
3692
|
+
legends
|
3556
3693
|
};
|
3557
3694
|
};
|
3558
|
-
const
|
3695
|
+
const pivotColorLegend = (spec, context)=>{
|
3559
3696
|
const result = {
|
3560
3697
|
...spec
|
3561
3698
|
};
|
@@ -3564,15 +3701,11 @@ const pivotDiscreteLegend = (spec, context)=>{
|
|
3564
3701
|
const baseConfig = advancedVSeed.config[chartType];
|
3565
3702
|
if (!baseConfig || !baseConfig.legend) return result;
|
3566
3703
|
const { datasetReshapeInfo } = advancedVSeed;
|
3567
|
-
const
|
3568
|
-
const
|
3569
|
-
...prev,
|
3570
|
-
...cur.unfoldInfo.colorIdMap
|
3571
|
-
}), {});
|
3704
|
+
const max = Math.max(...datasetReshapeInfo.map((d)=>d.foldInfo.colorRange[1]));
|
3705
|
+
const min = Math.min(...datasetReshapeInfo.map((d)=>d.foldInfo.colorRange[0]));
|
3572
3706
|
const { legend, color } = baseConfig;
|
3573
|
-
const { colorScheme,
|
3574
|
-
const
|
3575
|
-
const { enable, position = 'bottom', labelFontColor, labelFontSize = 12, labelFontWeight = 400, maxSize = 1, border, shapeType = 'rectRound' } = legend || {};
|
3707
|
+
const { colorScheme, linearColorScheme } = color;
|
3708
|
+
const { enable, position = 'bottom', labelFontColor, labelFontSize = 12, labelFontWeight = 400 } = legend || {};
|
3576
3709
|
const orient = [
|
3577
3710
|
'bottom',
|
3578
3711
|
'bottomLeft',
|
@@ -3613,55 +3746,31 @@ const pivotDiscreteLegend = (spec, context)=>{
|
|
3613
3746
|
].includes(position) ? 'end' : 'middle';
|
3614
3747
|
const legends = {
|
3615
3748
|
visible: enable,
|
3616
|
-
type: '
|
3749
|
+
type: 'color',
|
3617
3750
|
orient,
|
3618
3751
|
position: legendPosition,
|
3619
|
-
|
3620
|
-
|
3621
|
-
|
3622
|
-
|
3623
|
-
|
3624
|
-
|
3625
|
-
|
3626
|
-
|
3627
|
-
|
3628
|
-
|
3629
|
-
|
3630
|
-
} : void 0,
|
3631
|
-
fill: color
|
3632
|
-
}
|
3633
|
-
};
|
3634
|
-
}),
|
3635
|
-
item: {
|
3636
|
-
focus: true,
|
3637
|
-
maxWidth: '30%',
|
3638
|
-
focusIconStyle: {
|
3639
|
-
size: labelFontSize + 2,
|
3752
|
+
colors: linearColorScheme || colorScheme || [],
|
3753
|
+
value: [
|
3754
|
+
min,
|
3755
|
+
max
|
3756
|
+
],
|
3757
|
+
min: min,
|
3758
|
+
max: max,
|
3759
|
+
maxWidth: '30%',
|
3760
|
+
startText: {
|
3761
|
+
visible: true,
|
3762
|
+
style: {
|
3640
3763
|
fill: labelFontColor,
|
3764
|
+
fontSize: labelFontSize,
|
3765
|
+
fontWeight: labelFontWeight
|
3766
|
+
}
|
3767
|
+
},
|
3768
|
+
endText: {
|
3769
|
+
visible: true,
|
3770
|
+
style: {
|
3771
|
+
fill: labelFontColor,
|
3772
|
+
fontSize: labelFontSize,
|
3641
3773
|
fontWeight: labelFontWeight
|
3642
|
-
},
|
3643
|
-
shape: {
|
3644
|
-
space: border ? 6 : 4,
|
3645
|
-
style: {
|
3646
|
-
symbolType: shapeType,
|
3647
|
-
size: border ? 8 : 10
|
3648
|
-
}
|
3649
|
-
},
|
3650
|
-
label: {
|
3651
|
-
formatMethod: (value)=>colorIdMap[value] ?? value,
|
3652
|
-
style: {
|
3653
|
-
fontSize: labelFontSize,
|
3654
|
-
fill: labelFontColor,
|
3655
|
-
fontWeight: labelFontWeight
|
3656
|
-
}
|
3657
|
-
},
|
3658
|
-
background: {
|
3659
|
-
state: {
|
3660
|
-
selectedHover: {
|
3661
|
-
fill: labelFontColor,
|
3662
|
-
fillOpacity: 0.05
|
3663
|
-
}
|
3664
|
-
}
|
3665
3774
|
}
|
3666
3775
|
}
|
3667
3776
|
};
|
@@ -3684,13 +3793,13 @@ const line_line = [
|
|
3684
3793
|
progressive,
|
3685
3794
|
xBand,
|
3686
3795
|
yLinear,
|
3687
|
-
label_label,
|
3688
|
-
tooltip_tooltip,
|
3689
3796
|
verticalCrosshairLine,
|
3690
3797
|
colorAdapter(discreteLegend, colorLegend),
|
3691
3798
|
colorPointStyleFill(pointStyle_pointStyle),
|
3692
3799
|
pointStateDimensionHover,
|
3693
3800
|
colorLineStyleFill(lineStyle_lineStyle),
|
3801
|
+
label_label,
|
3802
|
+
tooltip_tooltip,
|
3694
3803
|
annotationPoint_annotationPoint,
|
3695
3804
|
annotationVerticalLine_annotationVerticalLine,
|
3696
3805
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -3703,18 +3812,18 @@ const pivotLine = [
|
|
3703
3812
|
datasetPivot,
|
3704
3813
|
pivotIndicators_pivotIndicators([
|
3705
3814
|
initLine,
|
3706
|
-
color_color,
|
3815
|
+
colorAdapter(color_color, linearColor),
|
3707
3816
|
background_backgroundColor,
|
3708
3817
|
datasetXY,
|
3709
3818
|
progressive,
|
3710
3819
|
xBand,
|
3711
3820
|
yLinear,
|
3712
|
-
label_label,
|
3713
|
-
tooltip_tooltip,
|
3714
3821
|
verticalCrosshairLine,
|
3715
|
-
pointStyle_pointStyle,
|
3822
|
+
colorPointStyleFill(pointStyle_pointStyle),
|
3716
3823
|
pointStateDimensionHover,
|
3717
|
-
lineStyle_lineStyle,
|
3824
|
+
colorLineStyleFill(lineStyle_lineStyle),
|
3825
|
+
label_label,
|
3826
|
+
tooltip_tooltip,
|
3718
3827
|
annotationPoint_annotationPoint,
|
3719
3828
|
annotationVerticalLine_annotationVerticalLine,
|
3720
3829
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -3722,7 +3831,7 @@ const pivotLine = [
|
|
3722
3831
|
]),
|
3723
3832
|
pivotRowDimensions,
|
3724
3833
|
pivotColumnDimensions,
|
3725
|
-
pivotDiscreteLegend
|
3834
|
+
colorAdapter(pivotDiscreteLegend, pivotColorLegend)
|
3726
3835
|
];
|
3727
3836
|
const lineSpecPipeline = [
|
3728
3837
|
pivotAdapter_pivotAdapter(line_line, pivotLine)
|
@@ -3731,11 +3840,9 @@ const registerLine = ()=>{
|
|
3731
3840
|
Builder._advancedPipelineMap.line = lineAdvancedPipeline;
|
3732
3841
|
Builder._specPipelineMap.line = lineSpecPipeline;
|
3733
3842
|
};
|
3734
|
-
const encodingForColumn = (advancedVSeed
|
3735
|
-
const {
|
3736
|
-
const
|
3737
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
3738
|
-
const dimensions = getBasicDimensions(vseed);
|
3843
|
+
const encodingForColumn = (advancedVSeed)=>{
|
3844
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
3845
|
+
const measures = findAllMeasures(vseedMeasures);
|
3739
3846
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
3740
3847
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
3741
3848
|
const encoding = {};
|
@@ -3748,10 +3855,6 @@ const encodingForColumn = (advancedVSeed, context)=>{
|
|
3748
3855
|
encoding
|
3749
3856
|
};
|
3750
3857
|
};
|
3751
|
-
const column_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
3752
|
-
encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
|
3753
|
-
encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
3754
|
-
};
|
3755
3858
|
const column_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
3756
3859
|
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
3757
3860
|
const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensions.map((d)=>d.id));
|
@@ -3763,28 +3866,35 @@ const column_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
|
3763
3866
|
encoding.row = [];
|
3764
3867
|
encoding.column = [];
|
3765
3868
|
};
|
3766
|
-
const column_generateMeasureEncoding = (measures, encoding)=>{
|
3767
|
-
encoding.tooltip = measures.map((item)=>item.id);
|
3768
|
-
encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
3769
|
-
const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
3770
|
-
if (color.length > 0) encoding.color = color;
|
3771
|
-
return encoding;
|
3772
|
-
};
|
3773
3869
|
const column_generateDimensionEncoding = (dimensions, encoding)=>{
|
3774
|
-
encoding.x = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'xAxis' === item.encoding
|
3870
|
+
encoding.x = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
|
3775
3871
|
encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
3776
3872
|
encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
3777
3873
|
if (0 === encoding.x.length) encoding.x = [
|
3778
3874
|
dimensions[0].id
|
3779
3875
|
];
|
3780
|
-
if (0 === encoding.color.length) encoding.color =
|
3781
|
-
|
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;
|
3782
3890
|
};
|
3783
3891
|
const columnAdvancedPipeline = [
|
3784
3892
|
initAdvancedVSeed_initAdvancedVSeed,
|
3893
|
+
defaultMeasures_defaultMeasures,
|
3894
|
+
defaultDimensions,
|
3895
|
+
defaultMeasureName,
|
3785
3896
|
encodingForColumn,
|
3786
3897
|
buildMeasures,
|
3787
|
-
autoDimensions_autoDimensions,
|
3788
3898
|
pivotAdapter([
|
3789
3899
|
reshapeWithEncoding
|
3790
3900
|
], [
|
@@ -4087,93 +4197,6 @@ const annotationAreaBand = (spec, context)=>{
|
|
4087
4197
|
markArea: markArea
|
4088
4198
|
};
|
4089
4199
|
};
|
4090
|
-
const pivotColorLegend = (spec, context)=>{
|
4091
|
-
const result = {
|
4092
|
-
...spec
|
4093
|
-
};
|
4094
|
-
const { advancedVSeed } = context;
|
4095
|
-
const { chartType } = advancedVSeed;
|
4096
|
-
const baseConfig = advancedVSeed.config[chartType];
|
4097
|
-
if (!baseConfig || !baseConfig.legend) return result;
|
4098
|
-
const { datasetReshapeInfo } = advancedVSeed;
|
4099
|
-
const max = Math.max(...datasetReshapeInfo.map((d)=>d.foldInfo.colorRange[1]));
|
4100
|
-
const min = Math.min(...datasetReshapeInfo.map((d)=>d.foldInfo.colorRange[0]));
|
4101
|
-
const { legend, color } = baseConfig;
|
4102
|
-
const { colorScheme, linearColorScheme } = color;
|
4103
|
-
const { enable, position = 'bottom', labelFontColor, labelFontSize = 12, labelFontWeight = 400 } = legend || {};
|
4104
|
-
const orient = [
|
4105
|
-
'bottom',
|
4106
|
-
'bottomLeft',
|
4107
|
-
'bottomRight',
|
4108
|
-
'bl',
|
4109
|
-
'br'
|
4110
|
-
].includes(position) ? 'bottom' : [
|
4111
|
-
'top',
|
4112
|
-
'topLeft',
|
4113
|
-
'topRight',
|
4114
|
-
'tl',
|
4115
|
-
'tr'
|
4116
|
-
].includes(position) ? 'top' : [
|
4117
|
-
'left',
|
4118
|
-
'leftTop',
|
4119
|
-
'leftBottom',
|
4120
|
-
'lt',
|
4121
|
-
'lb'
|
4122
|
-
].includes(position) ? 'left' : 'right';
|
4123
|
-
const legendPosition = [
|
4124
|
-
'topLeft',
|
4125
|
-
'bottomLeft',
|
4126
|
-
'leftTop',
|
4127
|
-
'rightTop',
|
4128
|
-
'lt',
|
4129
|
-
'rt',
|
4130
|
-
'tl',
|
4131
|
-
'bl'
|
4132
|
-
].includes(position) ? 'start' : [
|
4133
|
-
'topRight',
|
4134
|
-
'bottomRight',
|
4135
|
-
'leftBottom',
|
4136
|
-
'rightBottom',
|
4137
|
-
'lb',
|
4138
|
-
'rb',
|
4139
|
-
'rt',
|
4140
|
-
'br'
|
4141
|
-
].includes(position) ? 'end' : 'middle';
|
4142
|
-
const legends = {
|
4143
|
-
visible: enable,
|
4144
|
-
type: 'color',
|
4145
|
-
orient,
|
4146
|
-
position: legendPosition,
|
4147
|
-
colors: linearColorScheme || colorScheme || [],
|
4148
|
-
value: [
|
4149
|
-
min,
|
4150
|
-
max
|
4151
|
-
],
|
4152
|
-
min: min,
|
4153
|
-
max: max,
|
4154
|
-
maxWidth: '30%',
|
4155
|
-
startText: {
|
4156
|
-
visible: true,
|
4157
|
-
style: {
|
4158
|
-
fill: labelFontColor,
|
4159
|
-
fontSize: labelFontSize,
|
4160
|
-
fontWeight: labelFontWeight
|
4161
|
-
}
|
4162
|
-
},
|
4163
|
-
endText: {
|
4164
|
-
visible: true,
|
4165
|
-
style: {
|
4166
|
-
fill: labelFontColor,
|
4167
|
-
fontSize: labelFontSize,
|
4168
|
-
fontWeight: labelFontWeight
|
4169
|
-
}
|
4170
|
-
}
|
4171
|
-
};
|
4172
|
-
return {
|
4173
|
-
...result,
|
4174
|
-
legends
|
4175
|
-
};
|
4176
|
-
};
|
4177
4200
|
const column = [
|
4178
4201
|
initColumn,
|
4179
4202
|
stackCornerRadius_stackCornerRadius,
|
@@ -4231,9 +4254,11 @@ const registerColumn = ()=>{
|
|
4231
4254
|
};
|
4232
4255
|
const columnParallelAdvancedPipeline = [
|
4233
4256
|
initAdvancedVSeed_initAdvancedVSeed,
|
4257
|
+
defaultMeasures_defaultMeasures,
|
4258
|
+
defaultDimensions,
|
4259
|
+
defaultMeasureName,
|
4234
4260
|
encodingForColumn,
|
4235
4261
|
buildMeasures,
|
4236
|
-
autoDimensions_autoDimensions,
|
4237
4262
|
pivotAdapter([
|
4238
4263
|
reshapeWithEncoding
|
4239
4264
|
], [
|
@@ -4328,9 +4353,11 @@ const registerColumnParallel = ()=>{
|
|
4328
4353
|
};
|
4329
4354
|
const columnPercentAdvancedPipeline = [
|
4330
4355
|
initAdvancedVSeed_initAdvancedVSeed,
|
4356
|
+
defaultMeasures_defaultMeasures,
|
4357
|
+
defaultDimensions,
|
4358
|
+
defaultMeasureName,
|
4331
4359
|
encodingForColumn,
|
4332
4360
|
buildMeasures,
|
4333
|
-
autoDimensions_autoDimensions,
|
4334
4361
|
pivotAdapter([
|
4335
4362
|
reshapeWithEncoding
|
4336
4363
|
], [
|
@@ -4407,11 +4434,9 @@ const registerColumnPercent = ()=>{
|
|
4407
4434
|
Builder._advancedPipelineMap.columnPercent = columnPercentAdvancedPipeline;
|
4408
4435
|
Builder._specPipelineMap.columnPercent = columnPercentSpecPipeline;
|
4409
4436
|
};
|
4410
|
-
const encodingForBar = (advancedVSeed
|
4411
|
-
const {
|
4412
|
-
const
|
4413
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
4414
|
-
const dimensions = getBasicDimensions(vseed);
|
4437
|
+
const encodingForBar = (advancedVSeed)=>{
|
4438
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
4439
|
+
const measures = findAllMeasures(vseedMeasures);
|
4415
4440
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
4416
4441
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
4417
4442
|
const encoding = {};
|
@@ -4447,13 +4472,15 @@ const bar_generateMeasureEncoding = (measures, encoding)=>{
|
|
4447
4472
|
return encoding;
|
4448
4473
|
};
|
4449
4474
|
const bar_generateDimensionEncoding = (dimensions, encoding)=>{
|
4450
|
-
encoding.y = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'yAxis' === item.encoding
|
4475
|
+
encoding.y = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
|
4451
4476
|
encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
4452
4477
|
encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
4453
4478
|
if (0 === encoding.y.length) encoding.y = [
|
4454
4479
|
dimensions[0].id
|
4455
4480
|
];
|
4456
|
-
if (0 === encoding.color.length) encoding.color =
|
4481
|
+
if (0 === encoding.color.length) encoding.color = [
|
4482
|
+
MeasureName
|
4483
|
+
];
|
4457
4484
|
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.y?.includes(item.id)).map((item)=>item.id);
|
4458
4485
|
};
|
4459
4486
|
const sortYBandAxis = (advancedVSeed, context)=>{
|
@@ -4474,9 +4501,11 @@ const sortYBandAxis = (advancedVSeed, context)=>{
|
|
4474
4501
|
};
|
4475
4502
|
const barAdvancedPipeline = [
|
4476
4503
|
initAdvancedVSeed_initAdvancedVSeed,
|
4504
|
+
defaultMeasures_defaultMeasures,
|
4505
|
+
defaultDimensions,
|
4506
|
+
defaultMeasureName,
|
4477
4507
|
encodingForBar,
|
4478
4508
|
buildMeasures,
|
4479
|
-
autoDimensions_autoDimensions,
|
4480
4509
|
pivotAdapter([
|
4481
4510
|
reshapeWithEncoding
|
4482
4511
|
], [
|
@@ -4827,9 +4856,11 @@ const registerBar = ()=>{
|
|
4827
4856
|
};
|
4828
4857
|
const barParallelAdvancedPipeline = [
|
4829
4858
|
initAdvancedVSeed_initAdvancedVSeed,
|
4830
|
-
|
4831
|
-
|
4859
|
+
defaultMeasures_defaultMeasures,
|
4860
|
+
defaultDimensions,
|
4861
|
+
defaultMeasureName,
|
4832
4862
|
encodingForBar,
|
4863
|
+
buildMeasures,
|
4833
4864
|
pivotAdapter([
|
4834
4865
|
reshapeWithEncoding
|
4835
4866
|
], [
|
@@ -4923,9 +4954,11 @@ const registerBarParallel = ()=>{
|
|
4923
4954
|
};
|
4924
4955
|
const barPercentAdvancedPipeline = [
|
4925
4956
|
initAdvancedVSeed_initAdvancedVSeed,
|
4926
|
-
|
4927
|
-
|
4957
|
+
defaultMeasures_defaultMeasures,
|
4958
|
+
defaultDimensions,
|
4959
|
+
defaultMeasureName,
|
4928
4960
|
encodingForBar,
|
4961
|
+
buildMeasures,
|
4929
4962
|
pivotAdapter([
|
4930
4963
|
reshapeWithEncoding
|
4931
4964
|
], [
|
@@ -4994,9 +5027,11 @@ const registerBarPercent = ()=>{
|
|
4994
5027
|
};
|
4995
5028
|
const areaAdvancedPipeline = [
|
4996
5029
|
initAdvancedVSeed_initAdvancedVSeed,
|
4997
|
-
|
5030
|
+
defaultMeasures_defaultMeasures,
|
5031
|
+
defaultDimensions,
|
5032
|
+
defaultMeasureName,
|
5033
|
+
encodingForLine,
|
4998
5034
|
buildMeasures,
|
4999
|
-
autoDimensions_autoDimensions,
|
5000
5035
|
pivotAdapter([
|
5001
5036
|
reshapeWithEncoding
|
5002
5037
|
], [
|
@@ -5152,9 +5187,11 @@ const registerArea = ()=>{
|
|
5152
5187
|
};
|
5153
5188
|
const areaPercentAdvancedPipeline = [
|
5154
5189
|
initAdvancedVSeed_initAdvancedVSeed,
|
5155
|
-
|
5190
|
+
defaultMeasures_defaultMeasures,
|
5191
|
+
defaultDimensions,
|
5192
|
+
defaultMeasureName,
|
5193
|
+
encodingForLine,
|
5156
5194
|
buildMeasures,
|
5157
|
-
autoDimensions_autoDimensions,
|
5158
5195
|
pivotAdapter([
|
5159
5196
|
reshapeWithEncoding
|
5160
5197
|
], [
|
@@ -5228,11 +5265,9 @@ const registerAreaPercent = ()=>{
|
|
5228
5265
|
Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
|
5229
5266
|
Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
|
5230
5267
|
};
|
5231
|
-
const encodingForScatter = (advancedVSeed
|
5232
|
-
const {
|
5233
|
-
const
|
5234
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
5235
|
-
const dimensions = getBasicDimensions(vseed);
|
5268
|
+
const encodingForScatter = (advancedVSeed)=>{
|
5269
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
5270
|
+
const measures = findAllMeasures(vseedMeasures);
|
5236
5271
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
5237
5272
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
5238
5273
|
const encoding = {};
|
@@ -5268,7 +5303,9 @@ const scatter_generateMeasureEncoding = (measures, encoding)=>{
|
|
5268
5303
|
const scatter_generateDimensionEncoding = (dimensions, encoding)=>{
|
5269
5304
|
encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5270
5305
|
encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
5271
|
-
if (0 === encoding.color.length) encoding.color =
|
5306
|
+
if (0 === encoding.color.length) encoding.color = [
|
5307
|
+
MeasureName
|
5308
|
+
];
|
5272
5309
|
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
5273
5310
|
};
|
5274
5311
|
const buildMeasuresForScatter = (advancedVSeed, context)=>{
|
@@ -5281,8 +5318,7 @@ const buildMeasuresForScatter = (advancedVSeed, context)=>{
|
|
5281
5318
|
advancedVSeed.measures = buildMeasuresForScatter_generateMeasuresByParentId(vseed.measures);
|
5282
5319
|
return advancedVSeed;
|
5283
5320
|
}
|
5284
|
-
const
|
5285
|
-
const scatterMeasures = vseed.scatterMeasures ? vseed.scatterMeasures : basicMeasuresToScatterMeasures(basicMeasures);
|
5321
|
+
const scatterMeasures = vseed.scatterMeasures ? vseed.scatterMeasures : basicMeasuresToScatterMeasures(advancedVSeed.measures || []);
|
5286
5322
|
advancedVSeed.measures = scatterMeasuresToMeasureTree(scatterMeasures);
|
5287
5323
|
return advancedVSeed;
|
5288
5324
|
};
|
@@ -5501,9 +5537,11 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
|
5501
5537
|
};
|
5502
5538
|
const scatterAdvancedPipeline = [
|
5503
5539
|
initAdvancedVSeed_initAdvancedVSeed,
|
5540
|
+
defaultMeasures_defaultMeasures,
|
5541
|
+
defaultDimensions,
|
5542
|
+
defaultMeasureName,
|
5504
5543
|
encodingForScatter,
|
5505
5544
|
buildMeasuresForScatter,
|
5506
|
-
autoDimensions_autoDimensions,
|
5507
5545
|
pivotAdapter([
|
5508
5546
|
reshapeWithScatterEncoding
|
5509
5547
|
], [
|
@@ -5639,7 +5677,7 @@ const pivotScatter = [
|
|
5639
5677
|
]),
|
5640
5678
|
pivotRowDimensions,
|
5641
5679
|
pivotColumnDimensions,
|
5642
|
-
pivotDiscreteLegend
|
5680
|
+
colorAdapter(pivotDiscreteLegend, pivotColorLegend)
|
5643
5681
|
];
|
5644
5682
|
const scatterSpecPipeline = [
|
5645
5683
|
pivotAdapter_pivotAdapter(scatter, pivotScatter)
|
@@ -5648,11 +5686,9 @@ const registerScatter = ()=>{
|
|
5648
5686
|
Builder._advancedPipelineMap.scatter = scatterAdvancedPipeline;
|
5649
5687
|
Builder._specPipelineMap.scatter = scatterSpecPipeline;
|
5650
5688
|
};
|
5651
|
-
const encodingForDualAxis = (advancedVSeed
|
5652
|
-
const {
|
5653
|
-
const
|
5654
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
5655
|
-
const dimensions = getBasicDimensions(vseed);
|
5689
|
+
const encodingForDualAxis = (advancedVSeed)=>{
|
5690
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
5691
|
+
const measures = findAllMeasures(vseedMeasures);
|
5656
5692
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
5657
5693
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
5658
5694
|
const encoding = {};
|
@@ -5688,13 +5724,15 @@ const dualAxis_generateMeasureEncoding = (measures, encoding)=>{
|
|
5688
5724
|
return encoding;
|
5689
5725
|
};
|
5690
5726
|
const dualAxis_generateDimensionEncoding = (dimensions, encoding)=>{
|
5691
|
-
encoding.x = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'xAxis' === item.encoding
|
5727
|
+
encoding.x = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
|
5692
5728
|
encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5693
5729
|
encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
5694
5730
|
if (0 === encoding.x.length) encoding.x = [
|
5695
5731
|
dimensions[0].id
|
5696
5732
|
];
|
5697
|
-
if (0 === encoding.color.length) encoding.color =
|
5733
|
+
if (0 === encoding.color.length) encoding.color = [
|
5734
|
+
MeasureName
|
5735
|
+
];
|
5698
5736
|
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
5699
5737
|
};
|
5700
5738
|
const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
|
@@ -5707,8 +5745,7 @@ const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
|
|
5707
5745
|
advancedVSeed.measures = buildMeasuresForDualAxis_generateMeasuresByParentId(vseed.measures);
|
5708
5746
|
return advancedVSeed;
|
5709
5747
|
}
|
5710
|
-
const
|
5711
|
-
const dualMeasures = vseed.dualMeasures ? vseed.dualMeasures : basicMeasuresToDualMeasures(basicMeasures);
|
5748
|
+
const dualMeasures = vseed.dualMeasures ? vseed.dualMeasures : basicMeasuresToDualMeasures(advancedVSeed.measures || []);
|
5712
5749
|
advancedVSeed.measures = dualMeasuresToMeasureTree(dualMeasures);
|
5713
5750
|
return advancedVSeed;
|
5714
5751
|
};
|
@@ -5812,8 +5849,10 @@ const reshapeWithDualEncoding = (advancedVSeed, context)=>{
|
|
5812
5849
|
const datasets = [];
|
5813
5850
|
const primaryMeasures = measures[0];
|
5814
5851
|
const secondaryMeasures = measures[1] || [];
|
5852
|
+
const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
|
5815
5853
|
if (primaryMeasures && primaryMeasures.children) {
|
5816
5854
|
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
|
5855
|
+
colorItemAsId: hasEncoding,
|
5817
5856
|
foldMeasureValue: FoldPrimaryMeasureValue,
|
5818
5857
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
5819
5858
|
});
|
@@ -5860,6 +5899,7 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
|
|
5860
5899
|
const { dataset } = vseed;
|
5861
5900
|
const { dimensions, measures, encoding, chartType } = advancedVSeed;
|
5862
5901
|
if (!measures || !dimensions || !dataset || !encoding) return result;
|
5902
|
+
const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
|
5863
5903
|
const datasetList = [];
|
5864
5904
|
const datasetReshapeInfo = [];
|
5865
5905
|
const measureGroups = [];
|
@@ -5878,6 +5918,7 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
|
|
5878
5918
|
const secondaryMeasures = measures[1] || [];
|
5879
5919
|
if (primaryMeasures && primaryMeasures.children) {
|
5880
5920
|
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
|
5921
|
+
colorItemAsId: hasEncoding,
|
5881
5922
|
foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,
|
5882
5923
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
5883
5924
|
});
|
@@ -5946,9 +5987,11 @@ const dualAxisConfig = (advancedVSeed, context)=>{
|
|
5946
5987
|
};
|
5947
5988
|
const dualAxisAdvancedPipeline = [
|
5948
5989
|
initAdvancedVSeed_initAdvancedVSeed,
|
5990
|
+
defaultMeasures_defaultMeasures,
|
5991
|
+
defaultDimensions,
|
5992
|
+
defaultMeasureName,
|
5949
5993
|
encodingForDualAxis,
|
5950
5994
|
buildMeasuresForDualAxis,
|
5951
|
-
autoDimensions_autoDimensions,
|
5952
5995
|
pivotAdapter([
|
5953
5996
|
reshapeWithDualEncoding
|
5954
5997
|
], [
|
@@ -6781,11 +6824,9 @@ const registerDualAxis = ()=>{
|
|
6781
6824
|
Builder._advancedPipelineMap.dualAxis = dualAxisAdvancedPipeline;
|
6782
6825
|
Builder._specPipelineMap.dualAxis = dualAxisSpecPipeline;
|
6783
6826
|
};
|
6784
|
-
const encodingForPie = (advancedVSeed
|
6785
|
-
const {
|
6786
|
-
const
|
6787
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
6788
|
-
const dimensions = getBasicDimensions(vseed);
|
6827
|
+
const encodingForPie = (advancedVSeed)=>{
|
6828
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
6829
|
+
const measures = findAllMeasures(vseedMeasures);
|
6789
6830
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
6790
6831
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
6791
6832
|
const encoding = {};
|
@@ -6820,14 +6861,18 @@ const pie_generateMeasureEncoding = (measures, encoding)=>{
|
|
6820
6861
|
const pie_generateDimensionEncoding = (dimensions, encoding)=>{
|
6821
6862
|
encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
6822
6863
|
encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
6823
|
-
if (0 === encoding.color.length) encoding.color =
|
6864
|
+
if (0 === encoding.color.length) encoding.color = [
|
6865
|
+
MeasureName
|
6866
|
+
];
|
6824
6867
|
if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
|
6825
6868
|
};
|
6826
6869
|
const pieAdvancedPipeline = [
|
6827
6870
|
initAdvancedVSeed_initAdvancedVSeed,
|
6871
|
+
defaultMeasures_defaultMeasures,
|
6872
|
+
defaultDimensions,
|
6873
|
+
defaultMeasureName,
|
6828
6874
|
encodingForPie,
|
6829
6875
|
buildMeasures,
|
6830
|
-
autoDimensions_autoDimensions,
|
6831
6876
|
pivotAdapter([
|
6832
6877
|
reshapeWithEncoding
|
6833
6878
|
], [
|
@@ -6842,44 +6887,70 @@ const initPie = (spec, context)=>{
|
|
6842
6887
|
...spec
|
6843
6888
|
};
|
6844
6889
|
const { advancedVSeed } = context;
|
6845
|
-
const { datasetReshapeInfo
|
6890
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
6846
6891
|
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
6892
|
+
result.type = 'pie';
|
6893
|
+
result.outerRadius = 0.8;
|
6894
|
+
result.innerRadius = 0;
|
6895
|
+
result.valueField = foldInfo.measureValue;
|
6896
|
+
result.categoryField = unfoldInfo.encodingColorId;
|
6897
|
+
result.padding = 0;
|
6898
|
+
result.region = [
|
6899
|
+
{
|
6900
|
+
clip: true
|
6901
|
+
}
|
6902
|
+
];
|
6903
|
+
result.animation = true;
|
6904
|
+
return result;
|
6905
|
+
};
|
6906
|
+
const colorPieStyleFill = (stylePipe)=>(spec, context)=>{
|
6907
|
+
const result = stylePipe(spec, context);
|
6908
|
+
const { advancedVSeed } = context;
|
6909
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
6910
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
6911
|
+
if (isLinearColor(advancedVSeed)) {
|
6912
|
+
if (result?.pie?.style) result.pie.style.fill = {
|
6913
|
+
field: unfoldInfo.encodingColor,
|
6914
|
+
scale: 'color'
|
6915
|
+
};
|
6916
|
+
}
|
6917
|
+
return result;
|
6918
|
+
};
|
6919
|
+
const pieStyle = (spec, context)=>{
|
6920
|
+
const { advancedVSeed } = context;
|
6921
|
+
const { dataset } = advancedVSeed;
|
6847
6922
|
const showStroke = dataset.length <= 30;
|
6848
|
-
result
|
6849
|
-
|
6850
|
-
|
6851
|
-
|
6852
|
-
result.categoryField = unfoldInfo.encodingColorId;
|
6853
|
-
result.padding = 0;
|
6854
|
-
result.region = [
|
6855
|
-
{
|
6856
|
-
clip: true
|
6923
|
+
const result = {
|
6924
|
+
...spec,
|
6925
|
+
pie: {
|
6926
|
+
style: {}
|
6857
6927
|
}
|
6858
|
-
|
6859
|
-
|
6860
|
-
|
6861
|
-
|
6862
|
-
|
6863
|
-
|
6864
|
-
|
6865
|
-
|
6866
|
-
|
6867
|
-
|
6928
|
+
};
|
6929
|
+
return {
|
6930
|
+
...result,
|
6931
|
+
pie: {
|
6932
|
+
style: {
|
6933
|
+
stroke: '#ffffff',
|
6934
|
+
lineWidth: showStroke ? 1 : 0
|
6935
|
+
},
|
6936
|
+
state: {
|
6937
|
+
hover: {
|
6938
|
+
outerRadius: 1.1 * result.outerRadius
|
6939
|
+
}
|
6868
6940
|
}
|
6869
6941
|
}
|
6870
6942
|
};
|
6871
|
-
result.animation = true;
|
6872
|
-
return result;
|
6873
6943
|
};
|
6874
6944
|
const pie = [
|
6875
6945
|
initPie,
|
6876
|
-
color_color,
|
6946
|
+
colorAdapter(color_color, linearColor),
|
6877
6947
|
background_backgroundColor,
|
6878
6948
|
datasetXY,
|
6879
6949
|
progressive,
|
6950
|
+
colorPieStyleFill(pieStyle),
|
6951
|
+
colorAdapter(discreteLegend, colorLegend),
|
6880
6952
|
label_label,
|
6881
6953
|
tooltip_tooltip,
|
6882
|
-
discreteLegend,
|
6883
6954
|
annotationPoint_annotationPoint,
|
6884
6955
|
annotationVerticalLine_annotationVerticalLine,
|
6885
6956
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -6892,10 +6963,11 @@ const pivotPie = [
|
|
6892
6963
|
datasetPivot,
|
6893
6964
|
pivotIndicators_pivotIndicators([
|
6894
6965
|
initPie,
|
6895
|
-
color_color,
|
6966
|
+
colorAdapter(color_color, linearColor),
|
6896
6967
|
background_backgroundColor,
|
6897
6968
|
datasetXY,
|
6898
6969
|
progressive,
|
6970
|
+
colorPieStyleFill(pieStyle),
|
6899
6971
|
label_label,
|
6900
6972
|
tooltip_tooltip,
|
6901
6973
|
annotationPoint_annotationPoint,
|
@@ -6905,7 +6977,7 @@ const pivotPie = [
|
|
6905
6977
|
]),
|
6906
6978
|
pivotRowDimensions,
|
6907
6979
|
pivotColumnDimensions,
|
6908
|
-
pivotDiscreteLegend
|
6980
|
+
colorAdapter(pivotDiscreteLegend, pivotColorLegend)
|
6909
6981
|
];
|
6910
6982
|
const pieSpecPipeline = [
|
6911
6983
|
pivotAdapter_pivotAdapter(pie, pivotPie)
|
@@ -6916,8 +6988,10 @@ const registerPie = ()=>{
|
|
6916
6988
|
};
|
6917
6989
|
const donutAdvancedPipeline = [
|
6918
6990
|
initAdvancedVSeed_initAdvancedVSeed,
|
6991
|
+
defaultMeasures_defaultMeasures,
|
6992
|
+
defaultDimensions,
|
6993
|
+
defaultMeasureName,
|
6919
6994
|
buildMeasures,
|
6920
|
-
autoDimensions_autoDimensions,
|
6921
6995
|
encodingForPie,
|
6922
6996
|
pivotAdapter([
|
6923
6997
|
reshapeWithEncoding
|
@@ -6933,9 +7007,8 @@ const initDonut = (spec, context)=>{
|
|
6933
7007
|
...spec
|
6934
7008
|
};
|
6935
7009
|
const { advancedVSeed } = context;
|
6936
|
-
const { datasetReshapeInfo
|
7010
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
6937
7011
|
const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
|
6938
|
-
const showStroke = dataset.length <= 30;
|
6939
7012
|
result.type = 'pie';
|
6940
7013
|
result.outerRadius = 0.8;
|
6941
7014
|
result.innerRadius = 0.8 * result.outerRadius;
|
@@ -6947,29 +7020,19 @@ const initDonut = (spec, context)=>{
|
|
6947
7020
|
clip: true
|
6948
7021
|
}
|
6949
7022
|
];
|
6950
|
-
result.pie = {
|
6951
|
-
style: {
|
6952
|
-
stroke: '#ffffff',
|
6953
|
-
lineWidth: showStroke ? 1 : 0
|
6954
|
-
},
|
6955
|
-
state: {
|
6956
|
-
hover: {
|
6957
|
-
outerRadius: 1.1 * result.outerRadius
|
6958
|
-
}
|
6959
|
-
}
|
6960
|
-
};
|
6961
7023
|
result.animation = true;
|
6962
7024
|
return result;
|
6963
7025
|
};
|
6964
7026
|
const donut = [
|
6965
7027
|
initDonut,
|
6966
|
-
color_color,
|
7028
|
+
colorAdapter(color_color, linearColor),
|
6967
7029
|
background_backgroundColor,
|
6968
7030
|
datasetXY,
|
6969
7031
|
progressive,
|
6970
7032
|
label_label,
|
7033
|
+
colorPieStyleFill(pieStyle),
|
7034
|
+
colorAdapter(discreteLegend, colorLegend),
|
6971
7035
|
tooltip_tooltip,
|
6972
|
-
discreteLegend,
|
6973
7036
|
annotationPoint_annotationPoint,
|
6974
7037
|
annotationVerticalLine_annotationVerticalLine,
|
6975
7038
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -6982,11 +7045,12 @@ const pivotDonut = [
|
|
6982
7045
|
datasetPivot,
|
6983
7046
|
pivotIndicators_pivotIndicators([
|
6984
7047
|
initDonut,
|
6985
|
-
color_color,
|
7048
|
+
colorAdapter(color_color, linearColor),
|
6986
7049
|
background_backgroundColor,
|
6987
7050
|
datasetXY,
|
6988
7051
|
progressive,
|
6989
7052
|
label_label,
|
7053
|
+
colorPieStyleFill(pieStyle),
|
6990
7054
|
tooltip_tooltip,
|
6991
7055
|
annotationPoint_annotationPoint,
|
6992
7056
|
annotationVerticalLine_annotationVerticalLine,
|
@@ -6995,7 +7059,7 @@ const pivotDonut = [
|
|
6995
7059
|
]),
|
6996
7060
|
pivotRowDimensions,
|
6997
7061
|
pivotColumnDimensions,
|
6998
|
-
pivotDiscreteLegend
|
7062
|
+
colorAdapter(pivotDiscreteLegend, pivotColorLegend)
|
6999
7063
|
];
|
7000
7064
|
const donutSpecPipeline = [
|
7001
7065
|
pivotAdapter_pivotAdapter(donut, pivotDonut)
|
@@ -7004,11 +7068,9 @@ const registerDonut = ()=>{
|
|
7004
7068
|
Builder._advancedPipelineMap.donut = donutAdvancedPipeline;
|
7005
7069
|
Builder._specPipelineMap.donut = donutSpecPipeline;
|
7006
7070
|
};
|
7007
|
-
const encodingForRose = (advancedVSeed
|
7008
|
-
const {
|
7009
|
-
const
|
7010
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7011
|
-
const dimensions = getBasicDimensions(vseed);
|
7071
|
+
const encodingForRose = (advancedVSeed)=>{
|
7072
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
7073
|
+
const measures = findAllMeasures(vseedMeasures);
|
7012
7074
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7013
7075
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7014
7076
|
const encoding = {};
|
@@ -7043,20 +7105,24 @@ const rose_generateMeasureEncoding = (measures, encoding)=>{
|
|
7043
7105
|
if (color.length > 0) encoding.color = color;
|
7044
7106
|
};
|
7045
7107
|
const rose_generateDimensionEncoding = (dimensions, encoding)=>{
|
7046
|
-
encoding.angle = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'angle' === item.encoding
|
7108
|
+
encoding.angle = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'angle' === item.encoding).map((item)=>item.id));
|
7047
7109
|
encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7048
7110
|
encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
7049
7111
|
if (0 === encoding.angle.length) encoding.angle = [
|
7050
7112
|
dimensions[0].id
|
7051
7113
|
];
|
7052
|
-
if (0 === encoding.color.length) encoding.color =
|
7114
|
+
if (0 === encoding.color.length) encoding.color = [
|
7115
|
+
MeasureName
|
7116
|
+
];
|
7053
7117
|
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
|
7054
7118
|
};
|
7055
7119
|
const roseAdvancedPipeline = [
|
7056
7120
|
initAdvancedVSeed_initAdvancedVSeed,
|
7121
|
+
defaultMeasures_defaultMeasures,
|
7122
|
+
defaultDimensions,
|
7123
|
+
defaultMeasureName,
|
7057
7124
|
encodingForRose,
|
7058
7125
|
buildMeasures,
|
7059
|
-
autoDimensions_autoDimensions,
|
7060
7126
|
pivotAdapter([
|
7061
7127
|
reshapeWithEncoding
|
7062
7128
|
], [
|
@@ -7083,18 +7149,6 @@ const initRose = (spec, context)=>{
|
|
7083
7149
|
result.innerRadius = 0;
|
7084
7150
|
const hasNegativeValue = dataset.flat().find((d)=>d[foldInfo.measureValue] < 0);
|
7085
7151
|
if (hasNegativeValue) result.innerRadius = 0.05;
|
7086
|
-
result.rose = {
|
7087
|
-
style: {
|
7088
|
-
stroke: '#ffffff',
|
7089
|
-
lineWidth: 1
|
7090
|
-
},
|
7091
|
-
state: {
|
7092
|
-
hover: {
|
7093
|
-
lineWidth: 1,
|
7094
|
-
fillOpacity: 0.6
|
7095
|
-
}
|
7096
|
-
}
|
7097
|
-
};
|
7098
7152
|
result.region = [
|
7099
7153
|
{
|
7100
7154
|
clip: true
|
@@ -7103,7 +7157,7 @@ const initRose = (spec, context)=>{
|
|
7103
7157
|
result.animation = true;
|
7104
7158
|
return result;
|
7105
7159
|
};
|
7106
|
-
const
|
7160
|
+
const angleAxis = (spec, context)=>{
|
7107
7161
|
const result = {
|
7108
7162
|
...spec
|
7109
7163
|
};
|
@@ -7115,26 +7169,37 @@ const radiusAxis = (spec, context)=>{
|
|
7115
7169
|
const showAxis = !(is0D || is1M1D);
|
7116
7170
|
if (!result.axes) result.axes = [];
|
7117
7171
|
result.axes.push({
|
7118
|
-
orient: '
|
7172
|
+
orient: 'angle',
|
7119
7173
|
visible: showAxis,
|
7120
7174
|
zero: true,
|
7121
7175
|
nice: !!showAxis,
|
7176
|
+
paddingInner: showAxis ? [
|
7177
|
+
0.15,
|
7178
|
+
0.1
|
7179
|
+
] : [
|
7180
|
+
0,
|
7181
|
+
0
|
7182
|
+
],
|
7183
|
+
paddingOuter: showAxis ? [
|
7184
|
+
0.075,
|
7185
|
+
0.1
|
7186
|
+
] : [
|
7187
|
+
0,
|
7188
|
+
0
|
7189
|
+
],
|
7122
7190
|
grid: {
|
7123
7191
|
visible: showAxis
|
7124
7192
|
},
|
7125
|
-
|
7126
|
-
visible: showAxis
|
7127
|
-
},
|
7128
|
-
label: {
|
7193
|
+
domainLine: {
|
7129
7194
|
visible: showAxis
|
7130
7195
|
},
|
7131
|
-
|
7196
|
+
tick: {
|
7132
7197
|
visible: showAxis
|
7133
7198
|
}
|
7134
7199
|
});
|
7135
7200
|
return result;
|
7136
7201
|
};
|
7137
|
-
const
|
7202
|
+
const radiusAxis = (spec, context)=>{
|
7138
7203
|
const result = {
|
7139
7204
|
...spec
|
7140
7205
|
};
|
@@ -7146,50 +7211,79 @@ const angleAxis = (spec, context)=>{
|
|
7146
7211
|
const showAxis = !(is0D || is1M1D);
|
7147
7212
|
if (!result.axes) result.axes = [];
|
7148
7213
|
result.axes.push({
|
7149
|
-
orient: '
|
7214
|
+
orient: 'radius',
|
7150
7215
|
visible: showAxis,
|
7151
7216
|
zero: true,
|
7152
7217
|
nice: !!showAxis,
|
7153
|
-
paddingInner: showAxis ? [
|
7154
|
-
0.15,
|
7155
|
-
0.1
|
7156
|
-
] : [
|
7157
|
-
0,
|
7158
|
-
0
|
7159
|
-
],
|
7160
|
-
paddingOuter: showAxis ? [
|
7161
|
-
0.075,
|
7162
|
-
0.1
|
7163
|
-
] : [
|
7164
|
-
0,
|
7165
|
-
0
|
7166
|
-
],
|
7167
7218
|
grid: {
|
7168
7219
|
visible: showAxis
|
7169
7220
|
},
|
7170
|
-
|
7221
|
+
tick: {
|
7171
7222
|
visible: showAxis
|
7172
7223
|
},
|
7173
|
-
|
7224
|
+
label: {
|
7225
|
+
visible: showAxis
|
7226
|
+
},
|
7227
|
+
domainLine: {
|
7174
7228
|
visible: showAxis
|
7175
7229
|
}
|
7176
7230
|
});
|
7177
7231
|
return result;
|
7178
7232
|
};
|
7233
|
+
const colorRoseStyleFill = (stylePipe)=>(spec, context)=>{
|
7234
|
+
const result = stylePipe(spec, context);
|
7235
|
+
const { advancedVSeed } = context;
|
7236
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
7237
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
7238
|
+
if (isLinearColor(advancedVSeed)) {
|
7239
|
+
if (result?.rose?.style) result.rose.style.fill = {
|
7240
|
+
field: unfoldInfo.encodingColor,
|
7241
|
+
scale: 'color'
|
7242
|
+
};
|
7243
|
+
}
|
7244
|
+
return result;
|
7245
|
+
};
|
7246
|
+
const roseStyle = (spec, context)=>{
|
7247
|
+
const { advancedVSeed } = context;
|
7248
|
+
const { dataset } = advancedVSeed;
|
7249
|
+
const showStroke = dataset.length <= 30;
|
7250
|
+
const result = {
|
7251
|
+
...spec,
|
7252
|
+
rose: {
|
7253
|
+
style: {}
|
7254
|
+
}
|
7255
|
+
};
|
7256
|
+
return {
|
7257
|
+
...result,
|
7258
|
+
rose: {
|
7259
|
+
style: {
|
7260
|
+
stroke: '#ffffff',
|
7261
|
+
lineWidth: showStroke ? 1 : 0
|
7262
|
+
},
|
7263
|
+
state: {
|
7264
|
+
hover: {
|
7265
|
+
lineWidth: 1,
|
7266
|
+
fillOpacity: 0.6
|
7267
|
+
}
|
7268
|
+
}
|
7269
|
+
}
|
7270
|
+
};
|
7271
|
+
};
|
7179
7272
|
const rose = [
|
7180
7273
|
initRose,
|
7181
7274
|
stackCornerRadius_stackCornerRadius,
|
7182
7275
|
stackInverse,
|
7183
|
-
color_color,
|
7276
|
+
colorAdapter(color_color, linearColor),
|
7184
7277
|
background_backgroundColor,
|
7185
7278
|
datasetXY,
|
7186
7279
|
progressive,
|
7187
|
-
radiusAxis,
|
7188
7280
|
angleAxis,
|
7189
|
-
|
7190
|
-
tooltip_tooltip,
|
7281
|
+
radiusAxis,
|
7191
7282
|
verticalCrosshairRect,
|
7192
|
-
|
7283
|
+
colorRoseStyleFill(roseStyle),
|
7284
|
+
colorAdapter(discreteLegend, colorLegend),
|
7285
|
+
label_label,
|
7286
|
+
tooltip_tooltip
|
7193
7287
|
];
|
7194
7288
|
const pivotRose = [
|
7195
7289
|
initPivot,
|
@@ -7200,19 +7294,20 @@ const pivotRose = [
|
|
7200
7294
|
initRose,
|
7201
7295
|
stackCornerRadius_stackCornerRadius,
|
7202
7296
|
stackInverse,
|
7203
|
-
color_color,
|
7297
|
+
colorAdapter(color_color, linearColor),
|
7204
7298
|
background_backgroundColor,
|
7205
7299
|
datasetXY,
|
7206
7300
|
progressive,
|
7207
7301
|
radiusAxis,
|
7208
7302
|
angleAxis,
|
7303
|
+
verticalCrosshairRect,
|
7304
|
+
colorRoseStyleFill(roseStyle),
|
7209
7305
|
label_label,
|
7210
|
-
tooltip_tooltip
|
7211
|
-
verticalCrosshairRect
|
7306
|
+
tooltip_tooltip
|
7212
7307
|
]),
|
7213
7308
|
pivotRowDimensions,
|
7214
7309
|
pivotColumnDimensions,
|
7215
|
-
pivotDiscreteLegend
|
7310
|
+
colorAdapter(pivotDiscreteLegend, pivotColorLegend)
|
7216
7311
|
];
|
7217
7312
|
const roseSpecPipeline = [
|
7218
7313
|
pivotAdapter_pivotAdapter(rose, pivotRose)
|
@@ -7223,9 +7318,11 @@ const registerRose = ()=>{
|
|
7223
7318
|
};
|
7224
7319
|
const roseParallelAdvancedPipeline = [
|
7225
7320
|
initAdvancedVSeed_initAdvancedVSeed,
|
7321
|
+
defaultMeasures_defaultMeasures,
|
7322
|
+
defaultDimensions,
|
7323
|
+
defaultMeasureName,
|
7226
7324
|
encodingForRose,
|
7227
7325
|
buildMeasures,
|
7228
|
-
autoDimensions_autoDimensions,
|
7229
7326
|
pivotAdapter([
|
7230
7327
|
reshapeWithEncoding
|
7231
7328
|
], [
|
@@ -7281,15 +7378,16 @@ const initRoseParallel = (spec, context)=>{
|
|
7281
7378
|
const roseParallel = [
|
7282
7379
|
initRoseParallel,
|
7283
7380
|
stackCornerRadius_stackCornerRadius,
|
7284
|
-
color_color,
|
7381
|
+
colorAdapter(color_color, linearColor),
|
7285
7382
|
background_backgroundColor,
|
7286
7383
|
datasetXY,
|
7287
7384
|
progressive,
|
7288
7385
|
radiusAxis,
|
7289
7386
|
angleAxis,
|
7387
|
+
colorRoseStyleFill(roseStyle),
|
7388
|
+
colorAdapter(discreteLegend, colorLegend),
|
7290
7389
|
label_label,
|
7291
7390
|
tooltip_tooltip,
|
7292
|
-
discreteLegend,
|
7293
7391
|
verticalCrosshairRect,
|
7294
7392
|
annotationPoint_annotationPoint,
|
7295
7393
|
annotationVerticalLine_annotationVerticalLine,
|
@@ -7304,15 +7402,16 @@ const pivotRoseParallel = [
|
|
7304
7402
|
pivotIndicators_pivotIndicators([
|
7305
7403
|
initRoseParallel,
|
7306
7404
|
stackCornerRadius_stackCornerRadius,
|
7307
|
-
color_color,
|
7405
|
+
colorAdapter(color_color, linearColor),
|
7308
7406
|
background_backgroundColor,
|
7309
7407
|
datasetXY,
|
7310
7408
|
progressive,
|
7311
7409
|
radiusAxis,
|
7312
7410
|
angleAxis,
|
7411
|
+
verticalCrosshairRect,
|
7412
|
+
colorRoseStyleFill(roseStyle),
|
7313
7413
|
label_label,
|
7314
7414
|
tooltip_tooltip,
|
7315
|
-
verticalCrosshairRect,
|
7316
7415
|
annotationPoint_annotationPoint,
|
7317
7416
|
annotationVerticalLine_annotationVerticalLine,
|
7318
7417
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -7320,7 +7419,7 @@ const pivotRoseParallel = [
|
|
7320
7419
|
]),
|
7321
7420
|
pivotRowDimensions,
|
7322
7421
|
pivotColumnDimensions,
|
7323
|
-
pivotDiscreteLegend
|
7422
|
+
colorAdapter(pivotDiscreteLegend, pivotColorLegend)
|
7324
7423
|
];
|
7325
7424
|
const roseParallelSpecPipeline = [
|
7326
7425
|
pivotAdapter_pivotAdapter(roseParallel, pivotRoseParallel)
|
@@ -7329,11 +7428,9 @@ const registerRoseParallel = ()=>{
|
|
7329
7428
|
Builder._advancedPipelineMap.roseParallel = roseParallelAdvancedPipeline;
|
7330
7429
|
Builder._specPipelineMap.roseParallel = roseParallelSpecPipeline;
|
7331
7430
|
};
|
7332
|
-
const encodingForRadar = (advancedVSeed
|
7333
|
-
const {
|
7334
|
-
const
|
7335
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7336
|
-
const dimensions = getBasicDimensions(vseed);
|
7431
|
+
const encodingForRadar = (advancedVSeed)=>{
|
7432
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
7433
|
+
const measures = findAllMeasures(vseedMeasures);
|
7337
7434
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7338
7435
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7339
7436
|
const encoding = {};
|
@@ -7351,12 +7448,11 @@ const radar_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
|
7351
7448
|
encoding.radius = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
7352
7449
|
};
|
7353
7450
|
const radar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
7354
|
-
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
7355
7451
|
const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensions.map((d)=>d.id));
|
7356
7452
|
encoding.angle = uniqueDimIds.slice(0, 1);
|
7357
|
-
encoding.color = uniqueDimIds.slice(
|
7358
|
-
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
7453
|
+
encoding.color = uniqueDimIds.slice(1);
|
7359
7454
|
encoding.tooltip = uniqueDimIds;
|
7455
|
+
encoding.detail = [];
|
7360
7456
|
encoding.label = [];
|
7361
7457
|
encoding.row = [];
|
7362
7458
|
encoding.column = [];
|
@@ -7368,20 +7464,23 @@ const radar_generateMeasureEncoding = (measures, encoding)=>{
|
|
7368
7464
|
if (color.length > 0) encoding.color = color;
|
7369
7465
|
};
|
7370
7466
|
const radar_generateDimensionEncoding = (dimensions, encoding)=>{
|
7371
|
-
encoding.angle = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'angle' === item.encoding
|
7467
|
+
encoding.angle = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'angle' === item.encoding).map((item)=>item.id));
|
7372
7468
|
encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7373
|
-
encoding.detail =
|
7469
|
+
encoding.detail = [];
|
7374
7470
|
if (0 === encoding.angle.length) encoding.angle = [
|
7375
7471
|
dimensions[0].id
|
7376
7472
|
];
|
7377
|
-
if (0 === encoding.color.length) encoding.color =
|
7378
|
-
|
7473
|
+
if (0 === encoding.color.length) encoding.color = [
|
7474
|
+
MeasureName
|
7475
|
+
];
|
7379
7476
|
};
|
7380
7477
|
const radarAdvancedPipeline = [
|
7381
7478
|
initAdvancedVSeed_initAdvancedVSeed,
|
7479
|
+
defaultMeasures_defaultMeasures,
|
7480
|
+
defaultDimensions,
|
7481
|
+
defaultMeasureName,
|
7382
7482
|
encodingForRadar,
|
7383
7483
|
buildMeasures,
|
7384
|
-
autoDimensions_autoDimensions,
|
7385
7484
|
pivotAdapter([
|
7386
7485
|
reshapeWithEncoding
|
7387
7486
|
], [
|
@@ -7515,11 +7614,9 @@ const registerRadar = ()=>{
|
|
7515
7614
|
Builder._advancedPipelineMap.radar = radarAdvancedPipeline;
|
7516
7615
|
Builder._specPipelineMap.radar = radarSpecPipeline;
|
7517
7616
|
};
|
7518
|
-
const encodingForFunnel = (advancedVSeed
|
7519
|
-
const {
|
7520
|
-
const
|
7521
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7522
|
-
const dimensions = getBasicDimensions(vseed);
|
7617
|
+
const encodingForFunnel = (advancedVSeed)=>{
|
7618
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
7619
|
+
const measures = findAllMeasures(vseedMeasures);
|
7523
7620
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7524
7621
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7525
7622
|
const encoding = {};
|
@@ -7554,14 +7651,18 @@ const funnel_generateMeasureEncoding = (measures, encoding)=>{
|
|
7554
7651
|
const funnel_generateDimensionEncoding = (dimensions, encoding)=>{
|
7555
7652
|
encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7556
7653
|
encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
7557
|
-
if (0 === encoding.color.length) encoding.color =
|
7654
|
+
if (0 === encoding.color.length) encoding.color = [
|
7655
|
+
MeasureName
|
7656
|
+
];
|
7558
7657
|
if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
|
7559
7658
|
};
|
7560
7659
|
const funnelAdvancedPipeline = [
|
7561
7660
|
initAdvancedVSeed_initAdvancedVSeed,
|
7661
|
+
defaultMeasures_defaultMeasures,
|
7662
|
+
defaultDimensions,
|
7663
|
+
defaultMeasureName,
|
7562
7664
|
encodingForFunnel,
|
7563
7665
|
buildMeasures,
|
7564
|
-
autoDimensions_autoDimensions,
|
7565
7666
|
pivotAdapter([
|
7566
7667
|
reshapeWithEncoding
|
7567
7668
|
], [
|
@@ -7591,34 +7692,55 @@ const initFunnel = (spec, context)=>{
|
|
7591
7692
|
clip: true
|
7592
7693
|
}
|
7593
7694
|
];
|
7594
|
-
result.funnel = {
|
7595
|
-
style: {
|
7596
|
-
cornerRadius: 4,
|
7597
|
-
fill: {
|
7598
|
-
field: unfoldInfo.encodingColorId,
|
7599
|
-
scale: 'color'
|
7600
|
-
}
|
7601
|
-
},
|
7602
|
-
state: {
|
7603
|
-
hover: {
|
7604
|
-
fillOpacity: 0.6
|
7605
|
-
}
|
7606
|
-
}
|
7607
|
-
};
|
7608
7695
|
result.transformLabel = {
|
7609
7696
|
visible: true
|
7610
7697
|
};
|
7611
7698
|
result.animation = true;
|
7612
7699
|
return result;
|
7613
7700
|
};
|
7701
|
+
const colorFunnelStyleFill = (stylePipe)=>(spec, context)=>{
|
7702
|
+
const result = stylePipe(spec, context);
|
7703
|
+
const { advancedVSeed } = context;
|
7704
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
7705
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
7706
|
+
if (isLinearColor(advancedVSeed)) {
|
7707
|
+
if (result?.funnel?.style) result.funnel.style.fill = {
|
7708
|
+
field: unfoldInfo.encodingColor,
|
7709
|
+
scale: 'color'
|
7710
|
+
};
|
7711
|
+
}
|
7712
|
+
return result;
|
7713
|
+
};
|
7714
|
+
const funnelStyle = (spec)=>{
|
7715
|
+
const result = {
|
7716
|
+
...spec,
|
7717
|
+
funnel: {
|
7718
|
+
style: {}
|
7719
|
+
}
|
7720
|
+
};
|
7721
|
+
return {
|
7722
|
+
...result,
|
7723
|
+
funnel: {
|
7724
|
+
style: {
|
7725
|
+
cornerRadius: 4
|
7726
|
+
},
|
7727
|
+
state: {
|
7728
|
+
hover: {
|
7729
|
+
fillOpacity: 0.6
|
7730
|
+
}
|
7731
|
+
}
|
7732
|
+
}
|
7733
|
+
};
|
7734
|
+
};
|
7614
7735
|
const funnel = [
|
7615
7736
|
initFunnel,
|
7616
7737
|
background_backgroundColor,
|
7617
7738
|
datasetXY,
|
7618
|
-
color_color,
|
7739
|
+
colorAdapter(color_color, linearColor),
|
7619
7740
|
label_label,
|
7741
|
+
colorAdapter(discreteLegend, colorLegend),
|
7742
|
+
colorFunnelStyleFill(funnelStyle),
|
7620
7743
|
tooltip_tooltip,
|
7621
|
-
discreteLegend,
|
7622
7744
|
annotationPoint_annotationPoint,
|
7623
7745
|
annotationVerticalLine_annotationVerticalLine,
|
7624
7746
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -7633,17 +7755,18 @@ const pivotFunnel = [
|
|
7633
7755
|
initFunnel,
|
7634
7756
|
background_backgroundColor,
|
7635
7757
|
datasetXY,
|
7636
|
-
color_color,
|
7758
|
+
colorAdapter(color_color, linearColor),
|
7637
7759
|
label_label,
|
7638
7760
|
tooltip_tooltip,
|
7639
|
-
|
7761
|
+
colorFunnelStyleFill(funnelStyle),
|
7640
7762
|
annotationPoint_annotationPoint,
|
7641
7763
|
annotationVerticalLine_annotationVerticalLine,
|
7642
7764
|
annotationHorizontalLine_annotationHorizontalLine,
|
7643
7765
|
annotationArea_annotationArea
|
7644
7766
|
]),
|
7645
7767
|
pivotRowDimensions,
|
7646
|
-
pivotColumnDimensions
|
7768
|
+
pivotColumnDimensions,
|
7769
|
+
colorAdapter(pivotDiscreteLegend, pivotColorLegend)
|
7647
7770
|
];
|
7648
7771
|
const funnelSpecPipeline = [
|
7649
7772
|
pivotAdapter_pivotAdapter(funnel, pivotFunnel)
|
@@ -7652,11 +7775,9 @@ const registerFunnel = ()=>{
|
|
7652
7775
|
Builder._advancedPipelineMap.funnel = funnelAdvancedPipeline;
|
7653
7776
|
Builder._specPipelineMap.funnel = funnelSpecPipeline;
|
7654
7777
|
};
|
7655
|
-
const encodingForHeatmap = (advancedVSeed
|
7656
|
-
const {
|
7657
|
-
const
|
7658
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7659
|
-
const dimensions = getBasicDimensions(vseed);
|
7778
|
+
const encodingForHeatmap = (advancedVSeed)=>{
|
7779
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
7780
|
+
const measures = findAllMeasures(vseedMeasures);
|
7660
7781
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7661
7782
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7662
7783
|
const encoding = {};
|
@@ -7701,14 +7822,18 @@ const heatmap_generateDimensionEncoding = (dimensions, encoding)=>{
|
|
7701
7822
|
];
|
7702
7823
|
if (0 === encoding.y.length) if (dimensions.length > 1) encoding.y = dimensions.slice(1).map((item)=>item.id);
|
7703
7824
|
else encoding.y = dimensions.slice(0).map((item)=>item.id);
|
7704
|
-
if (0 === encoding.color.length) encoding.color =
|
7825
|
+
if (0 === encoding.color.length) encoding.color = [
|
7826
|
+
MeasureName
|
7827
|
+
];
|
7705
7828
|
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
7706
7829
|
};
|
7707
7830
|
const heatmapAdvancedPipeline = [
|
7708
7831
|
initAdvancedVSeed_initAdvancedVSeed,
|
7832
|
+
defaultMeasures_defaultMeasures,
|
7833
|
+
defaultDimensions,
|
7834
|
+
defaultMeasureName,
|
7709
7835
|
encodingForHeatmap,
|
7710
7836
|
buildMeasures,
|
7711
|
-
autoDimensions_autoDimensions,
|
7712
7837
|
pivotAdapter([
|
7713
7838
|
reshapeWithEncoding
|
7714
7839
|
], [
|
@@ -7730,6 +7855,37 @@ const labelColorInversion = (spec)=>{
|
|
7730
7855
|
};
|
7731
7856
|
return result;
|
7732
7857
|
};
|
7858
|
+
const colorCellStyleFill = (stylePipe)=>(spec, context)=>{
|
7859
|
+
const result = stylePipe(spec, context);
|
7860
|
+
const { advancedVSeed } = context;
|
7861
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
7862
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
7863
|
+
if (isLinearColor(advancedVSeed)) {
|
7864
|
+
if (result?.cell?.style) result.cell.style.fill = {
|
7865
|
+
field: unfoldInfo.encodingColor,
|
7866
|
+
scale: 'color'
|
7867
|
+
};
|
7868
|
+
}
|
7869
|
+
return result;
|
7870
|
+
};
|
7871
|
+
const cellStyle = (spec)=>{
|
7872
|
+
const result = {
|
7873
|
+
...spec,
|
7874
|
+
cell: {
|
7875
|
+
style: {}
|
7876
|
+
}
|
7877
|
+
};
|
7878
|
+
return {
|
7879
|
+
...result,
|
7880
|
+
cell: {
|
7881
|
+
style: {
|
7882
|
+
shape: 'rect',
|
7883
|
+
stroke: '#ffffff',
|
7884
|
+
lineWidth: 1
|
7885
|
+
}
|
7886
|
+
}
|
7887
|
+
};
|
7888
|
+
};
|
7733
7889
|
const initHeatmap = (spec, context)=>{
|
7734
7890
|
const result = {
|
7735
7891
|
...spec
|
@@ -7744,13 +7900,6 @@ const initHeatmap = (spec, context)=>{
|
|
7744
7900
|
result.seriesField = unfoldInfo.encodingColorId;
|
7745
7901
|
result.valueField = foldInfo.measureValue;
|
7746
7902
|
result.padding = 0;
|
7747
|
-
result.cell = {
|
7748
|
-
style: {
|
7749
|
-
shape: 'rect',
|
7750
|
-
stroke: '#ffffff',
|
7751
|
-
lineWidth: 1
|
7752
|
-
}
|
7753
|
-
};
|
7754
7903
|
result.axes = [
|
7755
7904
|
{
|
7756
7905
|
type: 'band',
|
@@ -7775,14 +7924,12 @@ const heatmap = [
|
|
7775
7924
|
initHeatmap,
|
7776
7925
|
background_backgroundColor,
|
7777
7926
|
datasetXY,
|
7778
|
-
color_color,
|
7927
|
+
colorAdapter(color_color, linearColor),
|
7779
7928
|
label_label,
|
7780
7929
|
labelColorInversion,
|
7781
|
-
discreteLegend,
|
7930
|
+
colorAdapter(discreteLegend, colorLegend),
|
7931
|
+
colorCellStyleFill(cellStyle),
|
7782
7932
|
tooltip_tooltip,
|
7783
|
-
pointStyle_pointStyle,
|
7784
|
-
pointStateDimensionHover,
|
7785
|
-
lineStyle_lineStyle,
|
7786
7933
|
annotationPoint_annotationPoint,
|
7787
7934
|
annotationVerticalLine_annotationVerticalLine,
|
7788
7935
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -7797,21 +7944,20 @@ const pivotHeatmap = [
|
|
7797
7944
|
initHeatmap,
|
7798
7945
|
background_backgroundColor,
|
7799
7946
|
datasetXY,
|
7800
|
-
color_color,
|
7947
|
+
colorAdapter(color_color, linearColor),
|
7801
7948
|
label_label,
|
7802
7949
|
labelColorInversion,
|
7803
7950
|
discreteLegend,
|
7804
7951
|
tooltip_tooltip,
|
7805
|
-
|
7806
|
-
pointStateDimensionHover,
|
7807
|
-
lineStyle_lineStyle,
|
7952
|
+
colorCellStyleFill(cellStyle),
|
7808
7953
|
annotationPoint_annotationPoint,
|
7809
7954
|
annotationVerticalLine_annotationVerticalLine,
|
7810
7955
|
annotationHorizontalLine_annotationHorizontalLine,
|
7811
7956
|
annotationArea_annotationArea
|
7812
7957
|
]),
|
7813
7958
|
pivotRowDimensions,
|
7814
|
-
pivotColumnDimensions
|
7959
|
+
pivotColumnDimensions,
|
7960
|
+
colorAdapter(pivotDiscreteLegend, pivotColorLegend)
|
7815
7961
|
];
|
7816
7962
|
const heatmapSpecPipeline = [
|
7817
7963
|
pivotAdapter_pivotAdapter(heatmap, pivotHeatmap)
|
@@ -8596,7 +8742,9 @@ const zMeasure = external_zod_namespaceObject.z.object({
|
|
8596
8742
|
'size',
|
8597
8743
|
'color',
|
8598
8744
|
'label',
|
8599
|
-
'tooltip'
|
8745
|
+
'tooltip',
|
8746
|
+
'detail',
|
8747
|
+
'column'
|
8600
8748
|
]).optional(),
|
8601
8749
|
parentId: external_zod_namespaceObject.z.string().optional()
|
8602
8750
|
});
|