@visactor/vseed 0.1.3 → 0.1.4
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 +4 -2
- package/dist/dataReshape/foldMeasures.d.ts +2 -2
- package/dist/index.cjs +520 -370
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +533 -383
- package/dist/index.js.map +1 -1
- package/dist/pipeline/advanced/chart/pipes/init/index.d.ts +1 -0
- package/dist/pipeline/advanced/chart/pipes/init/utils.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/measures/index.d.ts +1 -0
- package/dist/types/advancedVSeed.d.ts +16 -5
- package/dist/types/chartType/area/zArea.d.ts +16 -5
- package/dist/types/chartType/areaPercent/zAreaPercent.d.ts +16 -5
- package/dist/types/chartType/bar/zBar.d.ts +16 -5
- package/dist/types/chartType/barParallel/zBarParallel.d.ts +16 -5
- package/dist/types/chartType/barPercent/zBarPercent.d.ts +16 -5
- package/dist/types/chartType/column/zColumn.d.ts +16 -5
- package/dist/types/chartType/columnParallel/zColumnParallel.d.ts +16 -5
- package/dist/types/chartType/columnPercent/zColumnPercent.d.ts +16 -5
- package/dist/types/chartType/donut/zDonut.d.ts +16 -5
- package/dist/types/chartType/dualAxis/zDualAxis.d.ts +36 -25
- package/dist/types/chartType/funnel/zFunnel.d.ts +16 -5
- package/dist/types/chartType/heatmap/zHeatmap.d.ts +16 -5
- package/dist/types/chartType/line/zLine.d.ts +16 -5
- package/dist/types/chartType/pie/zPie.d.ts +16 -5
- package/dist/types/chartType/pivotTable/zPivotTable.d.ts +16 -5
- package/dist/types/chartType/radar/zRadar.d.ts +16 -5
- package/dist/types/chartType/rose/zRose.d.ts +16 -5
- package/dist/types/chartType/roseParallel/zRoseParallel.d.ts +16 -5
- package/dist/types/chartType/scatter/zScatter.d.ts +36 -25
- package/dist/types/chartType/table/zTable.d.ts +16 -5
- package/dist/types/properties/dimensions/dimensions.d.ts +16 -0
- package/dist/types/properties/dimensions/zDimensions.d.ts +33 -0
- package/dist/types/properties/measures/zDualMeasures.d.ts +40 -40
- package/dist/types/properties/measures/zMeasures.d.ts +15 -15
- package/dist/types/properties/measures/zScatterMeasures.d.ts +40 -40
- package/dist/types/zVseed.d.ts +360 -140
- package/dist/umd/index.js +534 -370
- package/dist/umd/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { clone, groupBy, isArray, isEmpty, isNullish, isNumber, isObjectType, isString, merge, mergeDeep, omit, pick, sort, unique } from "remeda";
|
1
|
+
import { clone, groupBy, isArray, isEmpty as external_remeda_isEmpty, isNullish, isNumber, isObjectType, isString, merge, mergeDeep, omit, pick, sort, unique, uniqueBy } from "remeda";
|
2
2
|
import { z } from "zod";
|
3
3
|
const execPipeline = (pipeline, context, initialValue = {})=>{
|
4
4
|
const result = pipeline.reduce((prev, cur)=>cur(prev, context), initialValue);
|
@@ -519,7 +519,7 @@ const measureTreeToColumns = (spec, context)=>{
|
|
519
519
|
const fieldFormat = (node, locale)=>(datum)=>{
|
520
520
|
const { format = {}, autoFormat = true, id } = node;
|
521
521
|
const value = datum[id];
|
522
|
-
if (!
|
522
|
+
if (!external_remeda_isEmpty(format)) {
|
523
523
|
const formatter = createFormatter(format);
|
524
524
|
return formatter(value);
|
525
525
|
}
|
@@ -882,7 +882,7 @@ const pivotIndicators = (spec, context)=>{
|
|
882
882
|
};
|
883
883
|
const pivotIndicators_fieldFormat = (node, locale)=>(value)=>{
|
884
884
|
const { format = {}, autoFormat = true } = node;
|
885
|
-
if (!
|
885
|
+
if (!external_remeda_isEmpty(format)) {
|
886
886
|
const formatter = createFormatter(format);
|
887
887
|
return formatter(value);
|
888
888
|
}
|
@@ -1036,6 +1036,57 @@ const initAdvancedVSeed_initAdvancedVSeed = (advancedVSeed, context)=>{
|
|
1036
1036
|
locale: locale || 'zh-CN'
|
1037
1037
|
};
|
1038
1038
|
};
|
1039
|
+
const ORIGINAL_DATA = '__OriginalData__';
|
1040
|
+
const Separator = '-';
|
1041
|
+
const FoldMeasureName = '__MeaName__';
|
1042
|
+
const FoldMeasureId = '__MeaId__';
|
1043
|
+
const FoldMeasureValue = '__MeaValue__';
|
1044
|
+
const MeasureName = FoldMeasureName;
|
1045
|
+
const FoldPrimaryMeasureValue = '__MeaPrimaryValue__';
|
1046
|
+
const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
|
1047
|
+
const FoldXMeasureValue = '__MeaXValue__';
|
1048
|
+
const FoldYMeasureValue = '__MeaYValue__';
|
1049
|
+
const XEncoding = '__Dim_X__';
|
1050
|
+
const YEncoding = '__Dim_Y__';
|
1051
|
+
const AngleEncoding = '__Dim_Angle__';
|
1052
|
+
const DetailEncoding = '__Dim_Detail__';
|
1053
|
+
const ColorEncoding = '__Dim_Color__';
|
1054
|
+
const ColorIdEncoding = '__Dim_ColorId__';
|
1055
|
+
const getBasicDimensions = (vseed)=>{
|
1056
|
+
const { dimensions, dataset } = vseed;
|
1057
|
+
const MeaName = {
|
1058
|
+
id: MeasureName,
|
1059
|
+
alias: intl.i18n`指标名称`,
|
1060
|
+
encoding: 'detail'
|
1061
|
+
};
|
1062
|
+
if (!dataset) throw new Error('dataset is required');
|
1063
|
+
if (0 === dataset.length) return [];
|
1064
|
+
if (dimensions) {
|
1065
|
+
const basicDimensions = dimensions.map((dim)=>({
|
1066
|
+
location: 'dimension',
|
1067
|
+
...dim
|
1068
|
+
}));
|
1069
|
+
if (basicDimensions.some((dim)=>dim.id === MeasureName)) return basicDimensions;
|
1070
|
+
basicDimensions.push(MeaName);
|
1071
|
+
return basicDimensions;
|
1072
|
+
}
|
1073
|
+
const top100dataset = dataset.slice(0, 100);
|
1074
|
+
const sample = top100dataset.reduce((prev, cur)=>({
|
1075
|
+
...prev,
|
1076
|
+
...cur
|
1077
|
+
}), {});
|
1078
|
+
const basicDimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
|
1079
|
+
'',
|
1080
|
+
null,
|
1081
|
+
void 0
|
1082
|
+
].includes(key)).map((dim)=>({
|
1083
|
+
id: dim,
|
1084
|
+
alias: dim,
|
1085
|
+
location: 'dimension'
|
1086
|
+
}));
|
1087
|
+
basicDimensions.push(MeaName);
|
1088
|
+
return basicDimensions;
|
1089
|
+
};
|
1039
1090
|
const getBasicMeasures = (vseed)=>{
|
1040
1091
|
const { dataset, measures } = vseed;
|
1041
1092
|
if (!measures || 0 === measures.length) return generateMeasuresByDataset(dataset);
|
@@ -1069,6 +1120,54 @@ const isMeasureTreeWithParentId = (vseed)=>{
|
|
1069
1120
|
if (!measures) return false;
|
1070
1121
|
return measures.some((measure)=>'parentId' in measure);
|
1071
1122
|
};
|
1123
|
+
const encodingForLine = (advancedVSeed, context)=>{
|
1124
|
+
const { vseed } = context;
|
1125
|
+
const { measures: vseedMeasures = [] } = vseed;
|
1126
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
1127
|
+
const dimensions = getBasicDimensions(vseed);
|
1128
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
1129
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
1130
|
+
const encoding = {};
|
1131
|
+
if (hasDimensionEncoding) generateDimensionEncoding(dimensions, encoding);
|
1132
|
+
else generateDefaultDimensionEncoding(dimensions, encoding);
|
1133
|
+
if (hasMeasureEncoding) generateMeasureEncoding(measures, encoding);
|
1134
|
+
else generateDefaultMeasureEncoding(measures, encoding);
|
1135
|
+
return {
|
1136
|
+
...advancedVSeed,
|
1137
|
+
encoding
|
1138
|
+
};
|
1139
|
+
};
|
1140
|
+
const generateDefaultMeasureEncoding = (measures, encoding)=>{
|
1141
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
1142
|
+
encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
1143
|
+
};
|
1144
|
+
const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
1145
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
1146
|
+
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
1147
|
+
encoding.x = uniqueDimIds.slice(0, 1);
|
1148
|
+
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
1149
|
+
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
1150
|
+
encoding.tooltip = uniqueDimIds;
|
1151
|
+
encoding.label = [];
|
1152
|
+
encoding.row = [];
|
1153
|
+
encoding.column = [];
|
1154
|
+
};
|
1155
|
+
const generateMeasureEncoding = (measures, encoding)=>{
|
1156
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
1157
|
+
encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
1158
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
1159
|
+
if (color.length > 0) encoding.color = color;
|
1160
|
+
};
|
1161
|
+
const generateDimensionEncoding = (dimensions, encoding)=>{
|
1162
|
+
encoding.x = unique(dimensions.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
1163
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
1164
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
1165
|
+
if (0 === encoding.x.length) encoding.x = [
|
1166
|
+
dimensions[0].id
|
1167
|
+
];
|
1168
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
1169
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
1170
|
+
};
|
1072
1171
|
const measureDepth = (measures = [])=>{
|
1073
1172
|
if (!measures) return 0;
|
1074
1173
|
let depth = 1;
|
@@ -1089,7 +1188,7 @@ const isPivotChart = (vseed)=>{
|
|
1089
1188
|
if (isVTable(vseed)) return false;
|
1090
1189
|
if (isMeasureTreeWithParentId(vseed)) {
|
1091
1190
|
const parentIds = vseed.measures?.map((measure)=>measure.parentId);
|
1092
|
-
return parentIds && parentIds.length > 1;
|
1191
|
+
return parentIds && unique(parentIds).length > 1;
|
1093
1192
|
}
|
1094
1193
|
if ('dualAxis' === vseed.chartType || 'scatter' === vseed.chartType) {
|
1095
1194
|
const { dimensions = [] } = vseed;
|
@@ -1160,22 +1259,6 @@ const basicMeasuresToMeasureTree = (measures)=>{
|
|
1160
1259
|
}
|
1161
1260
|
];
|
1162
1261
|
};
|
1163
|
-
const ORIGINAL_DATA = '__OriginalData__';
|
1164
|
-
const Separator = '-';
|
1165
|
-
const FoldMeasureName = '__MeaName__';
|
1166
|
-
const FoldMeasureId = '__MeaId__';
|
1167
|
-
const FoldMeasureValue = '__MeaValue__';
|
1168
|
-
const MeasureName = FoldMeasureName;
|
1169
|
-
const FoldPrimaryMeasureValue = '__MeaPrimaryValue__';
|
1170
|
-
const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
|
1171
|
-
const FoldXMeasureValue = '__MeaXValue__';
|
1172
|
-
const FoldYMeasureValue = '__MeaYValue__';
|
1173
|
-
const XEncoding = '__Dim_X__';
|
1174
|
-
const YEncoding = '__Dim_Y__';
|
1175
|
-
const AngleEncoding = '__Dim_Angle__';
|
1176
|
-
const DetailEncoding = '__Dim_Detail__';
|
1177
|
-
const ColorEncoding = '__Dim_Color__';
|
1178
|
-
const ColorIdEncoding = '__Dim_ColorId__';
|
1179
1262
|
const autoDimensions_autoDimensions = (advancedVSeed, context)=>{
|
1180
1263
|
const result = {
|
1181
1264
|
...advancedVSeed
|
@@ -1215,52 +1298,13 @@ const autoDimensions_autoDimensions = (advancedVSeed, context)=>{
|
|
1215
1298
|
result.dimensions.push(MeaName);
|
1216
1299
|
return result;
|
1217
1300
|
};
|
1218
|
-
const encodingForLine = (advancedVSeed, context)=>{
|
1219
|
-
const { vseed } = context;
|
1220
|
-
const { dimensions } = advancedVSeed;
|
1221
|
-
if (!dimensions) return advancedVSeed;
|
1222
|
-
const encoding = vseed.encoding;
|
1223
|
-
if (encoding) {
|
1224
|
-
const x = encoding.x || [
|
1225
|
-
dimensions[0].id
|
1226
|
-
];
|
1227
|
-
const color = encoding.color || [
|
1228
|
-
(dimensions[1] || dimensions[0]).id
|
1229
|
-
];
|
1230
|
-
const detail = encoding.detail || [];
|
1231
|
-
const mergedDetail = 0 === detail.length ? dimensions.map((d)=>d.id).filter((id)=>!x.includes(id)) : encoding.detail;
|
1232
|
-
return {
|
1233
|
-
...advancedVSeed,
|
1234
|
-
encoding: {
|
1235
|
-
...encoding,
|
1236
|
-
x,
|
1237
|
-
color,
|
1238
|
-
detail: mergedDetail
|
1239
|
-
}
|
1240
|
-
};
|
1241
|
-
}
|
1242
|
-
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
1243
|
-
const mergedEncoding = {
|
1244
|
-
x: dimensions.slice(0, 1).map((item)=>item.id),
|
1245
|
-
color: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
1246
|
-
detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
1247
|
-
tooltip: dimensions.map((item)=>item.id),
|
1248
|
-
label: [],
|
1249
|
-
row: [],
|
1250
|
-
column: []
|
1251
|
-
};
|
1252
|
-
return {
|
1253
|
-
...advancedVSeed,
|
1254
|
-
encoding: mergedEncoding
|
1255
|
-
};
|
1256
|
-
};
|
1257
1301
|
const pivotAdapter = (pipeline, pivotPipeline)=>(advancedVSeed, context)=>{
|
1258
1302
|
const { vseed } = context;
|
1259
1303
|
const usePivotChart = isPivotChart(vseed);
|
1260
1304
|
if (usePivotChart) return execPipeline(pivotPipeline, context, advancedVSeed);
|
1261
1305
|
return execPipeline(pipeline, context, advancedVSeed);
|
1262
1306
|
};
|
1263
|
-
const foldMeasures = (dataset, measures,
|
1307
|
+
const foldMeasures = (dataset, measures, options)=>{
|
1264
1308
|
const { measureId, measureName, measureValue, colorMeasureId } = options || {};
|
1265
1309
|
const foldInfo = {
|
1266
1310
|
measureId,
|
@@ -1361,7 +1405,7 @@ const applyEncoding = (encoding, dimensions, datum, separator)=>{
|
|
1361
1405
|
};
|
1362
1406
|
const dataReshapeByEncoding = (dataset, dimensions, measures, encoding, options)=>{
|
1363
1407
|
const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, colorItemAsId = false, colorMeasureId } = options || {};
|
1364
|
-
const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures,
|
1408
|
+
const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, {
|
1365
1409
|
measureId: foldMeasureId,
|
1366
1410
|
measureName: foldMeasureName,
|
1367
1411
|
measureValue: foldMeasureValue,
|
@@ -1405,7 +1449,7 @@ const reshapeWithEncoding = (advancedVSeed, context)=>{
|
|
1405
1449
|
const { dimensions, measures, encoding } = advancedVSeed;
|
1406
1450
|
if (!measures || !dimensions || !dataset || !encoding) return result;
|
1407
1451
|
if (0 === measures.length) throw new Error('measures can not be empty');
|
1408
|
-
const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding, {
|
1452
|
+
const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (item)=>item.id), uniqueBy(findAllMeasures(measures), (item)=>item.id), encoding, {
|
1409
1453
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
1410
1454
|
});
|
1411
1455
|
return {
|
@@ -1442,7 +1486,7 @@ const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
|
|
1442
1486
|
const measures = measureGroup.children;
|
1443
1487
|
if (!measures) return;
|
1444
1488
|
const groupId = measureGroup.id;
|
1445
|
-
const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding, {
|
1489
|
+
const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (item)=>item.id), uniqueBy(measures, (item)=>item.id), encoding, {
|
1446
1490
|
foldMeasureValue: `${FoldMeasureValue}${groupId}`,
|
1447
1491
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
1448
1492
|
});
|
@@ -1651,9 +1695,9 @@ const annotation_annotation = (advancedVSeed, context)=>{
|
|
1651
1695
|
};
|
1652
1696
|
const lineAdvancedPipeline = [
|
1653
1697
|
initAdvancedVSeed_initAdvancedVSeed,
|
1698
|
+
encodingForLine,
|
1654
1699
|
buildMeasures,
|
1655
1700
|
autoDimensions_autoDimensions,
|
1656
|
-
encodingForLine,
|
1657
1701
|
pivotAdapter([
|
1658
1702
|
reshapeWithEncoding
|
1659
1703
|
], [
|
@@ -2035,7 +2079,7 @@ const label_label = (spec, context)=>{
|
|
2035
2079
|
const measure = findMeasureById(measures, id);
|
2036
2080
|
if (!measure) return value;
|
2037
2081
|
const { format = {}, autoFormat = true } = measure;
|
2038
|
-
if (!
|
2082
|
+
if (!external_remeda_isEmpty(format)) {
|
2039
2083
|
const formatter = createFormatter(format);
|
2040
2084
|
return formatter(value);
|
2041
2085
|
}
|
@@ -2089,7 +2133,7 @@ const tooltip_tooltip = (spec, context)=>{
|
|
2089
2133
|
const measure = findMeasureById(measures, id);
|
2090
2134
|
if (!measure) return String(value);
|
2091
2135
|
const { format = {}, autoFormat = true } = measure;
|
2092
|
-
if (!
|
2136
|
+
if (!external_remeda_isEmpty(format)) {
|
2093
2137
|
const formatter = createFormatter(format);
|
2094
2138
|
return formatter(value);
|
2095
2139
|
}
|
@@ -2111,7 +2155,7 @@ const tooltip_tooltip = (spec, context)=>{
|
|
2111
2155
|
const measure = findMeasureById(measures, id);
|
2112
2156
|
if (!measure) return String(value);
|
2113
2157
|
const { format = {}, autoFormat = true } = measure;
|
2114
|
-
if (!
|
2158
|
+
if (!external_remeda_isEmpty(format)) {
|
2115
2159
|
const formatter = createFormatter(format);
|
2116
2160
|
return formatter(value);
|
2117
2161
|
}
|
@@ -3454,51 +3498,58 @@ const registerLine = ()=>{
|
|
3454
3498
|
};
|
3455
3499
|
const encodingForColumn = (advancedVSeed, context)=>{
|
3456
3500
|
const { vseed } = context;
|
3457
|
-
const {
|
3458
|
-
|
3459
|
-
const
|
3460
|
-
|
3461
|
-
|
3462
|
-
|
3463
|
-
|
3464
|
-
|
3465
|
-
|
3466
|
-
|
3467
|
-
const detail = encoding.detail || [];
|
3468
|
-
const mergedDetail = 0 === detail.length ? unique([
|
3469
|
-
...color,
|
3470
|
-
...detail
|
3471
|
-
]) : detail;
|
3472
|
-
return {
|
3473
|
-
...advancedVSeed,
|
3474
|
-
encoding: {
|
3475
|
-
...encoding,
|
3476
|
-
x,
|
3477
|
-
color,
|
3478
|
-
detail: mergedDetail
|
3479
|
-
}
|
3480
|
-
};
|
3481
|
-
}
|
3482
|
-
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
3483
|
-
const mergedEncoding = {
|
3484
|
-
x: dimensions.slice(0, 1).map((item)=>item.id),
|
3485
|
-
color: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
3486
|
-
detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
3487
|
-
tooltip: dimensions.map((item)=>item.id),
|
3488
|
-
label: [],
|
3489
|
-
row: [],
|
3490
|
-
column: []
|
3491
|
-
};
|
3501
|
+
const { measures: vseedMeasures = [] } = vseed;
|
3502
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
3503
|
+
const dimensions = getBasicDimensions(vseed);
|
3504
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
3505
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
3506
|
+
const encoding = {};
|
3507
|
+
if (hasDimensionEncoding) column_generateDimensionEncoding(dimensions, encoding);
|
3508
|
+
else column_generateDefaultDimensionEncoding(dimensions, encoding);
|
3509
|
+
if (hasMeasureEncoding) column_generateMeasureEncoding(measures, encoding);
|
3510
|
+
else column_generateDefaultMeasureEncoding(measures, encoding);
|
3492
3511
|
return {
|
3493
3512
|
...advancedVSeed,
|
3494
|
-
encoding
|
3513
|
+
encoding
|
3495
3514
|
};
|
3496
3515
|
};
|
3516
|
+
const column_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
3517
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
3518
|
+
encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
3519
|
+
};
|
3520
|
+
const column_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
3521
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
3522
|
+
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
3523
|
+
encoding.x = uniqueDimIds.slice(0, 1);
|
3524
|
+
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
3525
|
+
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
3526
|
+
encoding.tooltip = uniqueDimIds;
|
3527
|
+
encoding.label = [];
|
3528
|
+
encoding.row = [];
|
3529
|
+
encoding.column = [];
|
3530
|
+
};
|
3531
|
+
const column_generateMeasureEncoding = (measures, encoding)=>{
|
3532
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
3533
|
+
encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
3534
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
3535
|
+
if (color.length > 0) encoding.color = color;
|
3536
|
+
return encoding;
|
3537
|
+
};
|
3538
|
+
const column_generateDimensionEncoding = (dimensions, encoding)=>{
|
3539
|
+
encoding.x = unique(dimensions.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
3540
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
3541
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
3542
|
+
if (0 === encoding.x.length) encoding.x = [
|
3543
|
+
dimensions[0].id
|
3544
|
+
];
|
3545
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
3546
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
3547
|
+
};
|
3497
3548
|
const columnAdvancedPipeline = [
|
3498
3549
|
initAdvancedVSeed_initAdvancedVSeed,
|
3550
|
+
encodingForColumn,
|
3499
3551
|
buildMeasures,
|
3500
3552
|
autoDimensions_autoDimensions,
|
3501
|
-
encodingForColumn,
|
3502
3553
|
pivotAdapter([
|
3503
3554
|
reshapeWithEncoding
|
3504
3555
|
], [
|
@@ -3945,9 +3996,9 @@ const registerColumn = ()=>{
|
|
3945
3996
|
};
|
3946
3997
|
const columnParallelAdvancedPipeline = [
|
3947
3998
|
initAdvancedVSeed_initAdvancedVSeed,
|
3999
|
+
encodingForColumn,
|
3948
4000
|
buildMeasures,
|
3949
4001
|
autoDimensions_autoDimensions,
|
3950
|
-
encodingForColumn,
|
3951
4002
|
pivotAdapter([
|
3952
4003
|
reshapeWithEncoding
|
3953
4004
|
], [
|
@@ -4042,9 +4093,9 @@ const registerColumnParallel = ()=>{
|
|
4042
4093
|
};
|
4043
4094
|
const columnPercentAdvancedPipeline = [
|
4044
4095
|
initAdvancedVSeed_initAdvancedVSeed,
|
4096
|
+
encodingForColumn,
|
4045
4097
|
buildMeasures,
|
4046
4098
|
autoDimensions_autoDimensions,
|
4047
|
-
encodingForColumn,
|
4048
4099
|
pivotAdapter([
|
4049
4100
|
reshapeWithEncoding
|
4050
4101
|
], [
|
@@ -4123,46 +4174,53 @@ const registerColumnPercent = ()=>{
|
|
4123
4174
|
};
|
4124
4175
|
const encodingForBar = (advancedVSeed, context)=>{
|
4125
4176
|
const { vseed } = context;
|
4126
|
-
const {
|
4127
|
-
|
4128
|
-
const
|
4129
|
-
|
4130
|
-
|
4131
|
-
|
4132
|
-
|
4133
|
-
|
4134
|
-
|
4135
|
-
|
4136
|
-
const detail = encoding.detail || [];
|
4137
|
-
const mergedDetail = 0 === detail.length ? unique([
|
4138
|
-
...color,
|
4139
|
-
...detail
|
4140
|
-
]) : detail;
|
4141
|
-
return {
|
4142
|
-
...advancedVSeed,
|
4143
|
-
encoding: {
|
4144
|
-
...encoding,
|
4145
|
-
y,
|
4146
|
-
color,
|
4147
|
-
detail: mergedDetail
|
4148
|
-
}
|
4149
|
-
};
|
4150
|
-
}
|
4151
|
-
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
4152
|
-
const mergedEncoding = {
|
4153
|
-
y: dimensions.slice(0, 1).map((item)=>item.id),
|
4154
|
-
color: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
4155
|
-
detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
4156
|
-
tooltip: dimensions.map((item)=>item.id),
|
4157
|
-
label: [],
|
4158
|
-
row: [],
|
4159
|
-
column: []
|
4160
|
-
};
|
4177
|
+
const { measures: vseedMeasures = [] } = vseed;
|
4178
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
4179
|
+
const dimensions = getBasicDimensions(vseed);
|
4180
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
4181
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
4182
|
+
const encoding = {};
|
4183
|
+
if (hasDimensionEncoding) bar_generateDimensionEncoding(dimensions, encoding);
|
4184
|
+
else bar_generateDefaultDimensionEncoding(dimensions, encoding);
|
4185
|
+
if (hasMeasureEncoding) bar_generateMeasureEncoding(measures, encoding);
|
4186
|
+
else bar_generateDefaultMeasureEncoding(measures, encoding);
|
4161
4187
|
return {
|
4162
4188
|
...advancedVSeed,
|
4163
|
-
encoding
|
4189
|
+
encoding
|
4164
4190
|
};
|
4165
4191
|
};
|
4192
|
+
const bar_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
4193
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
4194
|
+
encoding.x = unique(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
4195
|
+
};
|
4196
|
+
const bar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
4197
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
4198
|
+
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
4199
|
+
encoding.y = uniqueDimIds.slice(0, 1);
|
4200
|
+
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
4201
|
+
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
4202
|
+
encoding.tooltip = uniqueDimIds;
|
4203
|
+
encoding.label = [];
|
4204
|
+
encoding.row = [];
|
4205
|
+
encoding.column = [];
|
4206
|
+
};
|
4207
|
+
const bar_generateMeasureEncoding = (measures, encoding)=>{
|
4208
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
4209
|
+
encoding.x = unique(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
4210
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
4211
|
+
if (color.length > 0) encoding.color = color;
|
4212
|
+
return encoding;
|
4213
|
+
};
|
4214
|
+
const bar_generateDimensionEncoding = (dimensions, encoding)=>{
|
4215
|
+
encoding.y = unique(dimensions.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
4216
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
4217
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
4218
|
+
if (0 === encoding.y.length) encoding.y = [
|
4219
|
+
dimensions[0].id
|
4220
|
+
];
|
4221
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.y?.includes(item.id)).map((item)=>item.id);
|
4222
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.y?.includes(item.id)).map((item)=>item.id);
|
4223
|
+
};
|
4166
4224
|
const sortYBandAxis = (advancedVSeed, context)=>{
|
4167
4225
|
const result = {
|
4168
4226
|
...advancedVSeed
|
@@ -4181,9 +4239,9 @@ const sortYBandAxis = (advancedVSeed, context)=>{
|
|
4181
4239
|
};
|
4182
4240
|
const barAdvancedPipeline = [
|
4183
4241
|
initAdvancedVSeed_initAdvancedVSeed,
|
4242
|
+
encodingForBar,
|
4184
4243
|
buildMeasures,
|
4185
4244
|
autoDimensions_autoDimensions,
|
4186
|
-
encodingForBar,
|
4187
4245
|
pivotAdapter([
|
4188
4246
|
reshapeWithEncoding
|
4189
4247
|
], [
|
@@ -4701,9 +4759,9 @@ const registerBarPercent = ()=>{
|
|
4701
4759
|
};
|
4702
4760
|
const areaAdvancedPipeline = [
|
4703
4761
|
initAdvancedVSeed_initAdvancedVSeed,
|
4762
|
+
encodingForColumn,
|
4704
4763
|
buildMeasures,
|
4705
4764
|
autoDimensions_autoDimensions,
|
4706
|
-
encodingForColumn,
|
4707
4765
|
pivotAdapter([
|
4708
4766
|
reshapeWithEncoding
|
4709
4767
|
], [
|
@@ -4859,9 +4917,9 @@ const registerArea = ()=>{
|
|
4859
4917
|
};
|
4860
4918
|
const areaPercentAdvancedPipeline = [
|
4861
4919
|
initAdvancedVSeed_initAdvancedVSeed,
|
4920
|
+
encodingForColumn,
|
4862
4921
|
buildMeasures,
|
4863
4922
|
autoDimensions_autoDimensions,
|
4864
|
-
encodingForColumn,
|
4865
4923
|
pivotAdapter([
|
4866
4924
|
reshapeWithEncoding
|
4867
4925
|
], [
|
@@ -4935,6 +4993,49 @@ const registerAreaPercent = ()=>{
|
|
4935
4993
|
Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
|
4936
4994
|
Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
|
4937
4995
|
};
|
4996
|
+
const encodingForScatter = (advancedVSeed, context)=>{
|
4997
|
+
const { vseed } = context;
|
4998
|
+
const { measures: vseedMeasures = [] } = vseed;
|
4999
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
5000
|
+
const dimensions = getBasicDimensions(vseed);
|
5001
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
5002
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
5003
|
+
const encoding = {};
|
5004
|
+
if (hasDimensionEncoding) scatter_generateDimensionEncoding(dimensions, encoding);
|
5005
|
+
else scatter_generateDefaultDimensionEncoding(dimensions, encoding);
|
5006
|
+
if (hasMeasureEncoding) scatter_generateMeasureEncoding(measures, encoding);
|
5007
|
+
else scatter_generateDefaultMeasureEncoding(measures, encoding);
|
5008
|
+
return {
|
5009
|
+
...advancedVSeed,
|
5010
|
+
encoding
|
5011
|
+
};
|
5012
|
+
};
|
5013
|
+
const scatter_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
5014
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
5015
|
+
encoding.y = unique(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5016
|
+
};
|
5017
|
+
const scatter_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
5018
|
+
const dimensionsWithoutMeasureName = dimensions.filter((item)=>item.id !== MeasureName);
|
5019
|
+
const uniqueDimIds = unique(dimensionsWithoutMeasureName.map((d)=>d.id));
|
5020
|
+
encoding.color = uniqueDimIds.slice(0);
|
5021
|
+
encoding.detail = uniqueDimIds.slice(0);
|
5022
|
+
encoding.tooltip = uniqueDimIds;
|
5023
|
+
encoding.label = [];
|
5024
|
+
encoding.row = [];
|
5025
|
+
encoding.column = [];
|
5026
|
+
};
|
5027
|
+
const scatter_generateMeasureEncoding = (measures, encoding)=>{
|
5028
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
5029
|
+
encoding.y = unique(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5030
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5031
|
+
if (color.length > 0) encoding.color = color;
|
5032
|
+
};
|
5033
|
+
const scatter_generateDimensionEncoding = (dimensions, encoding)=>{
|
5034
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5035
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
5036
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
5037
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
5038
|
+
};
|
4938
5039
|
const buildMeasuresForScatter = (advancedVSeed, context)=>{
|
4939
5040
|
const { vseed } = context;
|
4940
5041
|
if (isMeasureTreeWithChildren(vseed)) {
|
@@ -5025,52 +5126,16 @@ const buildMeasuresForScatter_generateMeasuresByParentId = (measures)=>{
|
|
5025
5126
|
const encoding = Array.isArray(item.encoding) ? item.encoding : [
|
5026
5127
|
item.encoding
|
5027
5128
|
];
|
5028
|
-
const isY = encoding.includes('yAxis');
|
5029
5129
|
const isX = encoding.includes('xAxis');
|
5130
|
+
const isY = encoding.includes('yAxis');
|
5131
|
+
const isEmpty = !encoding.length;
|
5030
5132
|
if (isY) scatterChart.yMeasures.push(item);
|
5031
5133
|
else if (isX) scatterChart.xMeasures.push(item);
|
5032
|
-
else if (
|
5134
|
+
else if (isEmpty) if (0 === scatterChart.yMeasures.length) scatterChart.yMeasures.push(item);
|
5033
5135
|
else scatterChart.xMeasures.push(item);
|
5034
5136
|
});
|
5035
5137
|
return scatterMeasuresToMeasureTree(scatterMeasures);
|
5036
5138
|
};
|
5037
|
-
const encodingForScatter = (advancedVSeed, context)=>{
|
5038
|
-
const { vseed } = context;
|
5039
|
-
const { dimensions } = advancedVSeed;
|
5040
|
-
if (!dimensions) return advancedVSeed;
|
5041
|
-
const encoding = vseed.encoding;
|
5042
|
-
if (encoding) {
|
5043
|
-
const detail = encoding.detail || [];
|
5044
|
-
const color = encoding.color || [
|
5045
|
-
(dimensions[1] || dimensions[0]).id
|
5046
|
-
];
|
5047
|
-
const mergedDetail = 0 === detail.length ? unique([
|
5048
|
-
...color,
|
5049
|
-
...detail
|
5050
|
-
]) : detail;
|
5051
|
-
return {
|
5052
|
-
...advancedVSeed,
|
5053
|
-
encoding: {
|
5054
|
-
...encoding,
|
5055
|
-
color,
|
5056
|
-
detail: mergedDetail
|
5057
|
-
}
|
5058
|
-
};
|
5059
|
-
}
|
5060
|
-
const dimensionsWithoutMeasureName = dimensions.filter((item)=>item.id !== MeasureName);
|
5061
|
-
const mergedEncoding = {
|
5062
|
-
color: dimensions.slice(0).map((item)=>item.id),
|
5063
|
-
detail: dimensionsWithoutMeasureName.slice(0).map((item)=>item.id),
|
5064
|
-
tooltip: dimensionsWithoutMeasureName.map((item)=>item.id),
|
5065
|
-
label: [],
|
5066
|
-
row: [],
|
5067
|
-
column: []
|
5068
|
-
};
|
5069
|
-
return {
|
5070
|
-
...advancedVSeed,
|
5071
|
-
encoding: mergedEncoding
|
5072
|
-
};
|
5073
|
-
};
|
5074
5139
|
const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
5075
5140
|
const result = {
|
5076
5141
|
...advancedVSeed
|
@@ -5087,7 +5152,7 @@ const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
|
5087
5152
|
const xMeasures = measures[0];
|
5088
5153
|
const yMeasures = measures[1] || xMeasures;
|
5089
5154
|
if (xMeasures && xMeasures.children) {
|
5090
|
-
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
|
5155
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (d)=>d.id), uniqueBy(xMeasures.children, (d)=>d.id), encoding, {
|
5091
5156
|
foldMeasureValue: FoldXMeasureValue,
|
5092
5157
|
colorItemAsId: true,
|
5093
5158
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
@@ -5097,7 +5162,7 @@ const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
|
5097
5162
|
unfoldInfoList.push(unfoldInfo);
|
5098
5163
|
}
|
5099
5164
|
if (yMeasures && yMeasures.children) {
|
5100
|
-
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(datasets[0], dimensions, yMeasures.children, encoding, {
|
5165
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(datasets[0], uniqueBy(dimensions, (d)=>d.id), uniqueBy(yMeasures.children, (d)=>d.id), encoding, {
|
5101
5166
|
foldMeasureValue: FoldYMeasureValue,
|
5102
5167
|
colorItemAsId: true,
|
5103
5168
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
@@ -5201,9 +5266,9 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
|
5201
5266
|
};
|
5202
5267
|
const scatterAdvancedPipeline = [
|
5203
5268
|
initAdvancedVSeed_initAdvancedVSeed,
|
5269
|
+
encodingForScatter,
|
5204
5270
|
buildMeasuresForScatter,
|
5205
5271
|
autoDimensions_autoDimensions,
|
5206
|
-
encodingForScatter,
|
5207
5272
|
pivotAdapter([
|
5208
5273
|
reshapeWithScatterEncoding
|
5209
5274
|
], [
|
@@ -5348,6 +5413,55 @@ const registerScatter = ()=>{
|
|
5348
5413
|
Builder._advancedPipelineMap.scatter = scatterAdvancedPipeline;
|
5349
5414
|
Builder._specPipelineMap.scatter = scatterSpecPipeline;
|
5350
5415
|
};
|
5416
|
+
const encodingForDualAxis = (advancedVSeed, context)=>{
|
5417
|
+
const { vseed } = context;
|
5418
|
+
const { measures: vseedMeasures = [] } = vseed;
|
5419
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
5420
|
+
const dimensions = getBasicDimensions(vseed);
|
5421
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
5422
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
5423
|
+
const encoding = {};
|
5424
|
+
if (hasDimensionEncoding) dualAxis_generateDimensionEncoding(dimensions, encoding);
|
5425
|
+
else dualAxis_generateDefaultDimensionEncoding(dimensions, encoding);
|
5426
|
+
if (hasMeasureEncoding) dualAxis_generateMeasureEncoding(measures, encoding);
|
5427
|
+
else dualAxis_generateDefaultMeasureEncoding(measures, encoding);
|
5428
|
+
return {
|
5429
|
+
...advancedVSeed,
|
5430
|
+
encoding
|
5431
|
+
};
|
5432
|
+
};
|
5433
|
+
const dualAxis_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
5434
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
5435
|
+
encoding.y = unique(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5436
|
+
};
|
5437
|
+
const dualAxis_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
5438
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
5439
|
+
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
5440
|
+
encoding.x = uniqueDimIds.slice(0, 1);
|
5441
|
+
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
5442
|
+
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
5443
|
+
encoding.tooltip = uniqueDimIds;
|
5444
|
+
encoding.label = [];
|
5445
|
+
encoding.row = [];
|
5446
|
+
encoding.column = [];
|
5447
|
+
};
|
5448
|
+
const dualAxis_generateMeasureEncoding = (measures, encoding)=>{
|
5449
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
5450
|
+
encoding.y = unique(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5451
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5452
|
+
if (color.length > 0) encoding.color = color;
|
5453
|
+
return encoding;
|
5454
|
+
};
|
5455
|
+
const dualAxis_generateDimensionEncoding = (dimensions, encoding)=>{
|
5456
|
+
encoding.x = unique(dimensions.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5457
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5458
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
5459
|
+
if (0 === encoding.x.length) encoding.x = [
|
5460
|
+
dimensions[0].id
|
5461
|
+
];
|
5462
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
5463
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
5464
|
+
};
|
5351
5465
|
const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
|
5352
5466
|
const { vseed } = context;
|
5353
5467
|
if (isMeasureTreeWithChildren(vseed)) {
|
@@ -5440,54 +5554,14 @@ const buildMeasuresForDualAxis_generateMeasuresByParentId = (measures)=>{
|
|
5440
5554
|
];
|
5441
5555
|
const isPrimary = encoding.includes('primaryYAxis');
|
5442
5556
|
const isSecondary = encoding.includes('secondaryYAxis');
|
5557
|
+
const isEmpty = !item.encoding;
|
5443
5558
|
if (isPrimary) dualChart.primaryMeasures.push(item);
|
5444
5559
|
else if (isSecondary) dualChart.secondaryMeasures.push(item);
|
5445
|
-
else if (
|
5560
|
+
else if (isEmpty) if (0 === dualChart.primaryMeasures.length) dualChart.primaryMeasures.push(item);
|
5446
5561
|
else dualChart.secondaryMeasures.push(item);
|
5447
5562
|
});
|
5448
5563
|
return dualMeasuresToMeasureTree(dualMeasures);
|
5449
5564
|
};
|
5450
|
-
const encodingForDualAxis = (advancedVSeed, context)=>{
|
5451
|
-
const { vseed } = context;
|
5452
|
-
const { dimensions } = advancedVSeed;
|
5453
|
-
if (!dimensions) return advancedVSeed;
|
5454
|
-
const encoding = vseed.encoding;
|
5455
|
-
if (encoding) {
|
5456
|
-
const x = encoding.x || [
|
5457
|
-
dimensions[0].id
|
5458
|
-
];
|
5459
|
-
const color = encoding.color || [
|
5460
|
-
(dimensions[1] || dimensions[0]).id
|
5461
|
-
];
|
5462
|
-
const detail = encoding.detail || [];
|
5463
|
-
const mergedDetail = 0 === detail.length ? unique([
|
5464
|
-
...color,
|
5465
|
-
...detail
|
5466
|
-
]) : detail;
|
5467
|
-
return {
|
5468
|
-
...advancedVSeed,
|
5469
|
-
encoding: {
|
5470
|
-
...encoding,
|
5471
|
-
x,
|
5472
|
-
color,
|
5473
|
-
detail: mergedDetail
|
5474
|
-
}
|
5475
|
-
};
|
5476
|
-
}
|
5477
|
-
const mergedEncoding = {
|
5478
|
-
x: dimensions.slice(0, 1).map((item)=>item.id),
|
5479
|
-
color: dimensions.slice(1).map((item)=>item.id),
|
5480
|
-
detail: dimensions.slice(1).map((item)=>item.id),
|
5481
|
-
tooltip: dimensions.map((item)=>item.id),
|
5482
|
-
label: [],
|
5483
|
-
row: [],
|
5484
|
-
column: []
|
5485
|
-
};
|
5486
|
-
return {
|
5487
|
-
...advancedVSeed,
|
5488
|
-
encoding: mergedEncoding
|
5489
|
-
};
|
5490
|
-
};
|
5491
5565
|
const reshapeWithDualEncoding = (advancedVSeed, context)=>{
|
5492
5566
|
const result = {
|
5493
5567
|
...advancedVSeed
|
@@ -5637,9 +5711,9 @@ const dualAxisConfig = (advancedVSeed, context)=>{
|
|
5637
5711
|
};
|
5638
5712
|
const dualAxisAdvancedPipeline = [
|
5639
5713
|
initAdvancedVSeed_initAdvancedVSeed,
|
5714
|
+
encodingForDualAxis,
|
5640
5715
|
buildMeasuresForDualAxis,
|
5641
5716
|
autoDimensions_autoDimensions,
|
5642
|
-
encodingForDualAxis,
|
5643
5717
|
pivotAdapter([
|
5644
5718
|
reshapeWithDualEncoding
|
5645
5719
|
], [
|
@@ -5942,7 +6016,7 @@ const labelPrimary = (spec, context)=>{
|
|
5942
6016
|
const measure = findMeasureById(measures, id);
|
5943
6017
|
if (!measure) return value;
|
5944
6018
|
const { format = {}, autoFormat = true } = measure;
|
5945
|
-
if (!
|
6019
|
+
if (!external_remeda_isEmpty(format)) {
|
5946
6020
|
const formatter = createFormatter(format);
|
5947
6021
|
return formatter(value);
|
5948
6022
|
}
|
@@ -5978,7 +6052,7 @@ const labelSecondary = (spec, context)=>{
|
|
5978
6052
|
const measure = findMeasureById(measures, id);
|
5979
6053
|
if (!measure) return value;
|
5980
6054
|
const { format = {}, autoFormat = true } = measure;
|
5981
|
-
if (!
|
6055
|
+
if (!external_remeda_isEmpty(format)) {
|
5982
6056
|
const formatter = createFormatter(format);
|
5983
6057
|
return formatter(value);
|
5984
6058
|
}
|
@@ -6034,7 +6108,7 @@ const tooltipPrimary = (spec, context)=>{
|
|
6034
6108
|
const measure = findMeasureById(measures, id);
|
6035
6109
|
if (!measure) return String(value);
|
6036
6110
|
const { format = {}, autoFormat = true } = measure;
|
6037
|
-
if (!
|
6111
|
+
if (!external_remeda_isEmpty(format)) {
|
6038
6112
|
const formatter = createFormatter(format);
|
6039
6113
|
return formatter(value);
|
6040
6114
|
}
|
@@ -6056,7 +6130,7 @@ const tooltipPrimary = (spec, context)=>{
|
|
6056
6130
|
const measure = findMeasureById(measures, id);
|
6057
6131
|
if (!measure) return String(value);
|
6058
6132
|
const { format = {}, autoFormat = true } = measure;
|
6059
|
-
if (!
|
6133
|
+
if (!external_remeda_isEmpty(format)) {
|
6060
6134
|
const formatter = createFormatter(format);
|
6061
6135
|
return formatter(value);
|
6062
6136
|
}
|
@@ -6114,7 +6188,7 @@ const tooltipSecondary = (spec, context)=>{
|
|
6114
6188
|
const measure = findMeasureById(measures, id);
|
6115
6189
|
if (!measure) return String(value);
|
6116
6190
|
const { format = {}, autoFormat = true } = measure;
|
6117
|
-
if (!
|
6191
|
+
if (!external_remeda_isEmpty(format)) {
|
6118
6192
|
const formatter = createFormatter(format);
|
6119
6193
|
return formatter(value);
|
6120
6194
|
}
|
@@ -6136,7 +6210,7 @@ const tooltipSecondary = (spec, context)=>{
|
|
6136
6210
|
const measure = findMeasureById(measures, id);
|
6137
6211
|
if (!measure) return String(value);
|
6138
6212
|
const { format = {}, autoFormat = true } = measure;
|
6139
|
-
if (!
|
6213
|
+
if (!external_remeda_isEmpty(format)) {
|
6140
6214
|
const formatter = createFormatter(format);
|
6141
6215
|
return formatter(value);
|
6142
6216
|
}
|
@@ -6162,7 +6236,7 @@ const yLinearPrimary = (spec, context)=>{
|
|
6162
6236
|
const yAxisConfig = Array.isArray(primaryYAxis) ? primaryYAxis[index] || primaryYAxis[0] : primaryYAxis;
|
6163
6237
|
const alignTicks = advancedVSeed.config?.[chartType]?.alignTicks;
|
6164
6238
|
const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks;
|
6165
|
-
if (foldInfoList?.[0] &&
|
6239
|
+
if (foldInfoList?.[0] && external_remeda_isEmpty(foldInfoList[0].foldMap)) return result;
|
6166
6240
|
const id = `${reshapeInfoId}-primary-axis`;
|
6167
6241
|
const seriesIds = [
|
6168
6242
|
`${reshapeInfoId}-primary-series`,
|
@@ -6474,33 +6548,51 @@ const registerDualAxis = ()=>{
|
|
6474
6548
|
};
|
6475
6549
|
const encodingForPie = (advancedVSeed, context)=>{
|
6476
6550
|
const { vseed } = context;
|
6477
|
-
const {
|
6478
|
-
|
6479
|
-
const
|
6480
|
-
|
6481
|
-
|
6482
|
-
|
6483
|
-
|
6484
|
-
|
6485
|
-
|
6486
|
-
|
6487
|
-
color: dimensions.slice(0).map((item)=>item.id),
|
6488
|
-
detail: dimensions.slice(0).map((item)=>item.id),
|
6489
|
-
tooltip: dimensions.map((item)=>item.id),
|
6490
|
-
label: [],
|
6491
|
-
row: [],
|
6492
|
-
column: []
|
6493
|
-
};
|
6551
|
+
const { measures: vseedMeasures = [] } = vseed;
|
6552
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
6553
|
+
const dimensions = getBasicDimensions(vseed);
|
6554
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
6555
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
6556
|
+
const encoding = {};
|
6557
|
+
if (hasDimensionEncoding) pie_generateDimensionEncoding(dimensions, encoding);
|
6558
|
+
else pie_generateDefaultDimensionEncoding(dimensions, encoding);
|
6559
|
+
if (hasMeasureEncoding) pie_generateMeasureEncoding(measures, encoding);
|
6560
|
+
else pie_generateDefaultMeasureEncoding(measures, encoding);
|
6494
6561
|
return {
|
6495
6562
|
...advancedVSeed,
|
6496
|
-
encoding
|
6497
|
-
};
|
6563
|
+
encoding
|
6564
|
+
};
|
6565
|
+
};
|
6566
|
+
const pie_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
6567
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
6568
|
+
encoding.angle = unique(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
|
6569
|
+
};
|
6570
|
+
const pie_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
6571
|
+
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
6572
|
+
encoding.color = uniqueDimIds.slice(0);
|
6573
|
+
encoding.detail = uniqueDimIds.slice(0);
|
6574
|
+
encoding.tooltip = uniqueDimIds;
|
6575
|
+
encoding.label = [];
|
6576
|
+
encoding.row = [];
|
6577
|
+
encoding.column = [];
|
6578
|
+
};
|
6579
|
+
const pie_generateMeasureEncoding = (measures, encoding)=>{
|
6580
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
6581
|
+
encoding.angle = unique(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
|
6582
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
6583
|
+
if (color.length > 0) encoding.color = color;
|
6584
|
+
};
|
6585
|
+
const pie_generateDimensionEncoding = (dimensions, encoding)=>{
|
6586
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
6587
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
6588
|
+
if (0 === encoding.color.length) encoding.color = dimensions.map((item)=>item.id);
|
6589
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
|
6498
6590
|
};
|
6499
6591
|
const pieAdvancedPipeline = [
|
6500
6592
|
initAdvancedVSeed_initAdvancedVSeed,
|
6593
|
+
encodingForPie,
|
6501
6594
|
buildMeasures,
|
6502
6595
|
autoDimensions_autoDimensions,
|
6503
|
-
encodingForPie,
|
6504
6596
|
pivotAdapter([
|
6505
6597
|
reshapeWithEncoding
|
6506
6598
|
], [
|
@@ -6679,51 +6771,57 @@ const registerDonut = ()=>{
|
|
6679
6771
|
};
|
6680
6772
|
const encodingForRose = (advancedVSeed, context)=>{
|
6681
6773
|
const { vseed } = context;
|
6682
|
-
const {
|
6683
|
-
|
6684
|
-
const
|
6685
|
-
|
6686
|
-
|
6687
|
-
|
6688
|
-
|
6689
|
-
|
6690
|
-
|
6691
|
-
|
6692
|
-
const detail = encoding.detail || [];
|
6693
|
-
const mergedDetail = 0 === detail.length ? unique([
|
6694
|
-
...color,
|
6695
|
-
...detail
|
6696
|
-
]) : detail;
|
6697
|
-
return {
|
6698
|
-
...advancedVSeed,
|
6699
|
-
encoding: {
|
6700
|
-
...encoding,
|
6701
|
-
angle,
|
6702
|
-
color,
|
6703
|
-
detail: mergedDetail
|
6704
|
-
}
|
6705
|
-
};
|
6706
|
-
}
|
6707
|
-
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
6708
|
-
const mergedEncoding = {
|
6709
|
-
angle: dimensions.slice(0, 1).map((item)=>item.id),
|
6710
|
-
color: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
6711
|
-
detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
6712
|
-
tooltip: dimensions.map((item)=>item.id),
|
6713
|
-
label: [],
|
6714
|
-
row: [],
|
6715
|
-
column: []
|
6716
|
-
};
|
6774
|
+
const { measures: vseedMeasures = [] } = vseed;
|
6775
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
6776
|
+
const dimensions = getBasicDimensions(vseed);
|
6777
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
6778
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
6779
|
+
const encoding = {};
|
6780
|
+
if (hasDimensionEncoding) rose_generateDimensionEncoding(dimensions, encoding);
|
6781
|
+
else rose_generateDefaultDimensionEncoding(dimensions, encoding);
|
6782
|
+
if (hasMeasureEncoding) rose_generateMeasureEncoding(measures, encoding);
|
6783
|
+
else rose_generateDefaultMeasureEncoding(measures, encoding);
|
6717
6784
|
return {
|
6718
6785
|
...advancedVSeed,
|
6719
|
-
encoding
|
6786
|
+
encoding
|
6720
6787
|
};
|
6721
6788
|
};
|
6789
|
+
const rose_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
6790
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
6791
|
+
encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
6792
|
+
};
|
6793
|
+
const rose_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
6794
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
6795
|
+
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
6796
|
+
encoding.angle = uniqueDimIds.slice(0, 1);
|
6797
|
+
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
6798
|
+
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
6799
|
+
encoding.tooltip = uniqueDimIds;
|
6800
|
+
encoding.label = [];
|
6801
|
+
encoding.row = [];
|
6802
|
+
encoding.column = [];
|
6803
|
+
};
|
6804
|
+
const rose_generateMeasureEncoding = (measures, encoding)=>{
|
6805
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
6806
|
+
encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
6807
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
6808
|
+
if (color.length > 0) encoding.color = color;
|
6809
|
+
};
|
6810
|
+
const rose_generateDimensionEncoding = (dimensions, encoding)=>{
|
6811
|
+
encoding.angle = unique(dimensions.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
|
6812
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
6813
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
6814
|
+
if (0 === encoding.angle.length) encoding.angle = [
|
6815
|
+
dimensions[0].id
|
6816
|
+
];
|
6817
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
|
6818
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
|
6819
|
+
};
|
6722
6820
|
const roseAdvancedPipeline = [
|
6723
6821
|
initAdvancedVSeed_initAdvancedVSeed,
|
6822
|
+
encodingForRose,
|
6724
6823
|
buildMeasures,
|
6725
6824
|
autoDimensions_autoDimensions,
|
6726
|
-
encodingForRose,
|
6727
6825
|
pivotAdapter([
|
6728
6826
|
reshapeWithEncoding
|
6729
6827
|
], [
|
@@ -6890,9 +6988,9 @@ const registerRose = ()=>{
|
|
6890
6988
|
};
|
6891
6989
|
const roseParallelAdvancedPipeline = [
|
6892
6990
|
initAdvancedVSeed_initAdvancedVSeed,
|
6991
|
+
encodingForRose,
|
6893
6992
|
buildMeasures,
|
6894
6993
|
autoDimensions_autoDimensions,
|
6895
|
-
encodingForRose,
|
6896
6994
|
pivotAdapter([
|
6897
6995
|
reshapeWithEncoding
|
6898
6996
|
], [
|
@@ -6998,50 +7096,57 @@ const registerRoseParallel = ()=>{
|
|
6998
7096
|
};
|
6999
7097
|
const encodingForRadar = (advancedVSeed, context)=>{
|
7000
7098
|
const { vseed } = context;
|
7001
|
-
const {
|
7002
|
-
|
7003
|
-
const
|
7004
|
-
|
7005
|
-
|
7006
|
-
|
7007
|
-
|
7008
|
-
|
7009
|
-
|
7010
|
-
|
7011
|
-
const detail = encoding.detail || [];
|
7012
|
-
const mergedDetail = 0 === detail.length ? unique([
|
7013
|
-
...color,
|
7014
|
-
...detail
|
7015
|
-
]) : detail;
|
7016
|
-
return {
|
7017
|
-
...advancedVSeed,
|
7018
|
-
encoding: {
|
7019
|
-
...encoding,
|
7020
|
-
angle,
|
7021
|
-
color,
|
7022
|
-
detail: mergedDetail
|
7023
|
-
}
|
7024
|
-
};
|
7025
|
-
}
|
7026
|
-
const mergedEncoding = {
|
7027
|
-
angle: dimensions.slice(0, 1).map((item)=>item.id),
|
7028
|
-
color: dimensions.slice(1).map((item)=>item.id),
|
7029
|
-
detail: dimensions.slice(1).map((item)=>item.id),
|
7030
|
-
tooltip: dimensions.map((item)=>item.id),
|
7031
|
-
label: [],
|
7032
|
-
row: [],
|
7033
|
-
column: []
|
7034
|
-
};
|
7099
|
+
const { measures: vseedMeasures = [] } = vseed;
|
7100
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7101
|
+
const dimensions = getBasicDimensions(vseed);
|
7102
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7103
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7104
|
+
const encoding = {};
|
7105
|
+
if (hasDimensionEncoding) radar_generateDimensionEncoding(dimensions, encoding);
|
7106
|
+
else radar_generateDefaultDimensionEncoding(dimensions, encoding);
|
7107
|
+
if (hasMeasureEncoding) radar_generateMeasureEncoding(measures, encoding);
|
7108
|
+
else radar_generateDefaultMeasureEncoding(measures, encoding);
|
7035
7109
|
return {
|
7036
7110
|
...advancedVSeed,
|
7037
|
-
encoding
|
7111
|
+
encoding
|
7038
7112
|
};
|
7039
7113
|
};
|
7114
|
+
const radar_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
7115
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
7116
|
+
encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
7117
|
+
};
|
7118
|
+
const radar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
7119
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
7120
|
+
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
7121
|
+
encoding.angle = uniqueDimIds.slice(0, 1);
|
7122
|
+
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
7123
|
+
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
7124
|
+
encoding.tooltip = uniqueDimIds;
|
7125
|
+
encoding.label = [];
|
7126
|
+
encoding.row = [];
|
7127
|
+
encoding.column = [];
|
7128
|
+
};
|
7129
|
+
const radar_generateMeasureEncoding = (measures, encoding)=>{
|
7130
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
7131
|
+
encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
7132
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7133
|
+
if (color.length > 0) encoding.color = color;
|
7134
|
+
};
|
7135
|
+
const radar_generateDimensionEncoding = (dimensions, encoding)=>{
|
7136
|
+
encoding.angle = unique(dimensions.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
|
7137
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7138
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
7139
|
+
if (0 === encoding.angle.length) encoding.angle = [
|
7140
|
+
dimensions[0].id
|
7141
|
+
];
|
7142
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
|
7143
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
|
7144
|
+
};
|
7040
7145
|
const radarAdvancedPipeline = [
|
7041
7146
|
initAdvancedVSeed_initAdvancedVSeed,
|
7147
|
+
encodingForRadar,
|
7042
7148
|
buildMeasures,
|
7043
7149
|
autoDimensions_autoDimensions,
|
7044
|
-
encodingForRadar,
|
7045
7150
|
pivotAdapter([
|
7046
7151
|
reshapeWithEncoding
|
7047
7152
|
], [
|
@@ -7177,33 +7282,51 @@ const registerRadar = ()=>{
|
|
7177
7282
|
};
|
7178
7283
|
const encodingForFunnel = (advancedVSeed, context)=>{
|
7179
7284
|
const { vseed } = context;
|
7180
|
-
const {
|
7181
|
-
|
7182
|
-
const
|
7183
|
-
|
7184
|
-
|
7185
|
-
|
7186
|
-
|
7187
|
-
|
7188
|
-
|
7189
|
-
|
7190
|
-
color: dimensions.slice(0).map((item)=>item.id),
|
7191
|
-
detail: dimensions.slice(0).map((item)=>item.id),
|
7192
|
-
tooltip: dimensions.map((item)=>item.id),
|
7193
|
-
label: [],
|
7194
|
-
row: [],
|
7195
|
-
column: []
|
7196
|
-
};
|
7285
|
+
const { measures: vseedMeasures = [] } = vseed;
|
7286
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7287
|
+
const dimensions = getBasicDimensions(vseed);
|
7288
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7289
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7290
|
+
const encoding = {};
|
7291
|
+
if (hasDimensionEncoding) funnel_generateDimensionEncoding(dimensions, encoding);
|
7292
|
+
else funnel_generateDefaultDimensionEncoding(dimensions, encoding);
|
7293
|
+
if (hasMeasureEncoding) funnel_generateMeasureEncoding(measures, encoding);
|
7294
|
+
else funnel_generateDefaultMeasureEncoding(measures, encoding);
|
7197
7295
|
return {
|
7198
7296
|
...advancedVSeed,
|
7199
|
-
encoding
|
7200
|
-
};
|
7297
|
+
encoding
|
7298
|
+
};
|
7299
|
+
};
|
7300
|
+
const funnel_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
7301
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
7302
|
+
encoding.size = unique(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
|
7303
|
+
};
|
7304
|
+
const funnel_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
7305
|
+
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
7306
|
+
encoding.color = uniqueDimIds.slice(0);
|
7307
|
+
encoding.detail = uniqueDimIds.slice(0);
|
7308
|
+
encoding.tooltip = uniqueDimIds;
|
7309
|
+
encoding.label = [];
|
7310
|
+
encoding.row = [];
|
7311
|
+
encoding.column = [];
|
7312
|
+
};
|
7313
|
+
const funnel_generateMeasureEncoding = (measures, encoding)=>{
|
7314
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
7315
|
+
encoding.size = unique(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
|
7316
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7317
|
+
if (color.length > 0) encoding.color = color;
|
7318
|
+
};
|
7319
|
+
const funnel_generateDimensionEncoding = (dimensions, encoding)=>{
|
7320
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7321
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
7322
|
+
if (0 === encoding.color.length) encoding.color = dimensions.map((item)=>item.id);
|
7323
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
|
7201
7324
|
};
|
7202
7325
|
const funnelAdvancedPipeline = [
|
7203
7326
|
initAdvancedVSeed_initAdvancedVSeed,
|
7327
|
+
encodingForFunnel,
|
7204
7328
|
buildMeasures,
|
7205
7329
|
autoDimensions_autoDimensions,
|
7206
|
-
encodingForFunnel,
|
7207
7330
|
pivotAdapter([
|
7208
7331
|
reshapeWithEncoding
|
7209
7332
|
], [
|
@@ -7296,45 +7419,61 @@ const registerFunnel = ()=>{
|
|
7296
7419
|
};
|
7297
7420
|
const encodingForHeatmap = (advancedVSeed, context)=>{
|
7298
7421
|
const { vseed } = context;
|
7299
|
-
const {
|
7300
|
-
|
7301
|
-
const
|
7302
|
-
|
7303
|
-
|
7304
|
-
|
7305
|
-
|
7306
|
-
|
7307
|
-
|
7308
|
-
|
7309
|
-
return {
|
7310
|
-
...advancedVSeed,
|
7311
|
-
encoding: {
|
7312
|
-
x,
|
7313
|
-
y,
|
7314
|
-
...encoding
|
7315
|
-
}
|
7316
|
-
};
|
7317
|
-
}
|
7318
|
-
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
7319
|
-
const mergedEncoding = {
|
7320
|
-
x: dimensions.slice(0, 1).map((item)=>item.id),
|
7321
|
-
y: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
7322
|
-
color: dimensions.slice(0).map((item)=>item.id),
|
7323
|
-
tooltip: dimensions.map((item)=>item.id),
|
7324
|
-
label: [],
|
7325
|
-
row: [],
|
7326
|
-
column: []
|
7327
|
-
};
|
7422
|
+
const { measures: vseedMeasures = [] } = vseed;
|
7423
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7424
|
+
const dimensions = getBasicDimensions(vseed);
|
7425
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7426
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7427
|
+
const encoding = {};
|
7428
|
+
if (hasDimensionEncoding) heatmap_generateDimensionEncoding(dimensions, encoding);
|
7429
|
+
else heatmap_generateDefaultDimensionEncoding(dimensions, encoding);
|
7430
|
+
if (hasMeasureEncoding) heatmap_generateMeasureEncoding(measures, encoding);
|
7431
|
+
else heatmap_generateDefaultMeasureEncoding(measures, encoding);
|
7328
7432
|
return {
|
7329
7433
|
...advancedVSeed,
|
7330
|
-
encoding
|
7434
|
+
encoding
|
7331
7435
|
};
|
7332
7436
|
};
|
7437
|
+
const heatmap_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
7438
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
7439
|
+
encoding.color = unique(measures.filter((item)=>'color' === item.encoding || !item.encoding).map((item)=>item.id));
|
7440
|
+
};
|
7441
|
+
const heatmap_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
7442
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
7443
|
+
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
7444
|
+
encoding.x = uniqueDimIds.slice(0, 1);
|
7445
|
+
encoding.y = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
7446
|
+
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
7447
|
+
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
7448
|
+
encoding.tooltip = uniqueDimIds;
|
7449
|
+
encoding.label = [];
|
7450
|
+
encoding.row = [];
|
7451
|
+
encoding.column = [];
|
7452
|
+
};
|
7453
|
+
const heatmap_generateMeasureEncoding = (measures, encoding)=>{
|
7454
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
7455
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7456
|
+
if (color.length > 0) encoding.color = color;
|
7457
|
+
return encoding;
|
7458
|
+
};
|
7459
|
+
const heatmap_generateDimensionEncoding = (dimensions, encoding)=>{
|
7460
|
+
encoding.x = unique(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
|
7461
|
+
encoding.y = unique(dimensions.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
|
7462
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7463
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
7464
|
+
if (0 === encoding.x.length) encoding.x = [
|
7465
|
+
dimensions[0].id
|
7466
|
+
];
|
7467
|
+
if (0 === encoding.y.length) if (dimensions.length > 1) encoding.y = dimensions.slice(1).map((item)=>item.id);
|
7468
|
+
else encoding.y = dimensions.slice(0).map((item)=>item.id);
|
7469
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
7470
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
7471
|
+
};
|
7333
7472
|
const heatmapAdvancedPipeline = [
|
7334
7473
|
initAdvancedVSeed_initAdvancedVSeed,
|
7474
|
+
encodingForHeatmap,
|
7335
7475
|
buildMeasures,
|
7336
7476
|
autoDimensions_autoDimensions,
|
7337
|
-
encodingForHeatmap,
|
7338
7477
|
pivotAdapter([
|
7339
7478
|
reshapeWithEncoding
|
7340
7479
|
], [
|
@@ -8154,7 +8293,18 @@ const zDimension = z.object({
|
|
8154
8293
|
'dimension',
|
8155
8294
|
'rowDimension',
|
8156
8295
|
'columnDimension'
|
8157
|
-
]).default('dimension')
|
8296
|
+
]).default('dimension'),
|
8297
|
+
encoding: z["enum"]([
|
8298
|
+
'xAxis',
|
8299
|
+
'yAxis',
|
8300
|
+
'angle',
|
8301
|
+
'color',
|
8302
|
+
'detail',
|
8303
|
+
'tooltip',
|
8304
|
+
'label',
|
8305
|
+
'row',
|
8306
|
+
'column'
|
8307
|
+
]).optional()
|
8158
8308
|
});
|
8159
8309
|
const zDimensionGroup = z.object({
|
8160
8310
|
id: z.string(),
|