@visactor/vseed 0.0.40 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/builder/builder/builder.d.ts +61 -671
- package/dist/builder/register/chartType/index.d.ts +0 -1
- package/dist/dataReshape/constant.d.ts +17 -2
- package/dist/dataReshape/dataReshapeByEncoding.d.ts +11 -0
- package/dist/dataReshape/index.d.ts +3 -7
- package/dist/dataReshape/unfoldDimensions.d.ts +12 -14
- package/dist/index.cjs +1130 -1880
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1076 -1835
- package/dist/index.js.map +1 -1
- package/dist/pipeline/advanced/chart/pipeline/index.d.ts +0 -1
- package/dist/pipeline/advanced/chart/pipes/analysis/index.d.ts +3 -1
- package/dist/pipeline/advanced/chart/pipes/analysis/sort.d.ts +0 -4
- package/dist/pipeline/advanced/chart/pipes/{encoding/encodingAR.d.ts → analysis/sortLegend.d.ts} +1 -1
- package/dist/pipeline/advanced/chart/pipes/analysis/sortXBand.d.ts +3 -0
- package/dist/pipeline/advanced/chart/pipes/{encoding/encodingPie.d.ts → analysis/sortYBand.d.ts} +1 -1
- package/dist/pipeline/advanced/chart/pipes/encoding/{encodingFunnel.d.ts → bar.d.ts} +1 -1
- package/dist/pipeline/advanced/chart/pipes/encoding/{encodingAreaRange.d.ts → column.d.ts} +1 -1
- package/dist/pipeline/advanced/chart/pipes/encoding/dualAxis.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/funnel.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/heatmap.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/index.d.ts +8 -9
- package/dist/pipeline/advanced/chart/pipes/encoding/{encodingMatrix.d.ts → pie.d.ts} +1 -1
- package/dist/pipeline/advanced/chart/pipes/encoding/radar.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/rose.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/scatter.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/init/autoScatterMeasures.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/init/index.d.ts +2 -1
- package/dist/pipeline/advanced/chart/pipes/reshape/index.d.ts +4 -12
- package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/reshape/reshapeWithEncoding.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.d.ts +2 -0
- package/dist/pipeline/spec/chart/pipeline/index.d.ts +0 -1
- package/dist/pipeline/spec/chart/pipes/color/index.d.ts +0 -1
- package/dist/pipeline/spec/chart/pipes/{color/linearColor.d.ts → dataset/datasetScatter.d.ts} +1 -1
- package/dist/pipeline/spec/chart/pipes/dataset/index.d.ts +1 -0
- package/dist/pipeline/spec/chart/pipes/init/index.d.ts +1 -2
- package/dist/pipeline/spec/chart/pipes/legend/index.d.ts +0 -1
- package/dist/pipeline/spec/chart/pipes/tooltip/index.d.ts +0 -1
- package/dist/types/advancedVSeed.d.ts +26 -311
- package/dist/types/chartType/area/area.d.ts +10 -1
- package/dist/types/chartType/area/zArea.d.ts +14 -0
- package/dist/types/chartType/areaPercent/areaPercent.d.ts +10 -1
- package/dist/types/chartType/areaPercent/zAreaPercent.d.ts +14 -0
- package/dist/types/chartType/bar/bar.d.ts +19 -30
- package/dist/types/chartType/bar/zBar.d.ts +14 -0
- package/dist/types/chartType/barParallel/barParallel.d.ts +18 -30
- package/dist/types/chartType/barParallel/zBarParallel.d.ts +14 -0
- package/dist/types/chartType/barPercent/barPercent.d.ts +16 -21
- package/dist/types/chartType/barPercent/zBarPercent.d.ts +14 -0
- package/dist/types/chartType/column/column.d.ts +16 -28
- package/dist/types/chartType/column/zColumn.d.ts +14 -0
- package/dist/types/chartType/columnParallel/columnParallel.d.ts +19 -27
- package/dist/types/chartType/columnParallel/zColumnParallel.d.ts +14 -0
- package/dist/types/chartType/columnPercent/columnPercent.d.ts +16 -25
- package/dist/types/chartType/columnPercent/zColumnPercent.d.ts +14 -0
- package/dist/types/chartType/donut/donut.d.ts +10 -1
- package/dist/types/chartType/donut/zDonut.d.ts +14 -0
- package/dist/types/chartType/dualAxis/dualAxis.d.ts +9 -1
- package/dist/types/chartType/funnel/funnel.d.ts +9 -1
- package/dist/types/chartType/funnel/zFunnel.d.ts +14 -0
- package/dist/types/chartType/heatmap/heatmap.d.ts +10 -1
- package/dist/types/chartType/index.d.ts +0 -1
- package/dist/types/chartType/line/line.d.ts +14 -10
- package/dist/types/chartType/line/zLine.d.ts +14 -0
- package/dist/types/chartType/pie/pie.d.ts +10 -1
- package/dist/types/chartType/pie/zPie.d.ts +14 -0
- package/dist/types/chartType/radar/radar.d.ts +10 -1
- package/dist/types/chartType/radar/zRadar.d.ts +14 -0
- package/dist/types/chartType/rose/rose.d.ts +10 -1
- package/dist/types/chartType/rose/zRose.d.ts +14 -0
- package/dist/types/chartType/roseParallel/roseParallel.d.ts +10 -1
- package/dist/types/chartType/roseParallel/zRoseParallel.d.ts +14 -0
- package/dist/types/chartType/scatter/scatter.d.ts +88 -5
- package/dist/types/chartType/scatter/zScatter.d.ts +155 -0
- package/dist/types/index.d.ts +2 -1
- package/dist/types/properties/chartType/chartType.d.ts +1 -3
- package/dist/types/properties/config/config.d.ts +0 -307
- package/dist/types/properties/datasetReshapeInfo/datasetReshapeInfo.d.ts +13 -38
- package/dist/types/properties/datasetReshapeInfo/index.d.ts +1 -1
- package/dist/types/properties/datasetReshapeInfo/zDatasetReshapeInfo.d.ts +43 -0
- package/dist/types/properties/encoding/encoding.d.ts +49 -16
- package/dist/types/properties/encoding/index.d.ts +2 -2
- package/dist/types/properties/encoding/zEncoding.d.ts +29 -0
- package/dist/types/properties/measures/index.d.ts +4 -2
- package/dist/types/properties/measures/scatterMeasures.d.ts +6 -0
- package/dist/types/properties/measures/zScatterMeasures.d.ts +283 -0
- package/dist/types/properties/theme/customTheme.d.ts +0 -306
- package/dist/types/vseed.d.ts +2 -16816
- package/dist/types/zVseed.d.ts +15738 -0
- package/dist/umd/index.js +1104 -1860
- package/dist/umd/index.js.map +1 -1
- package/package.json +13 -5
- package/dist/builder/register/chartType/areaRange.d.ts +0 -1
- package/dist/dataReshape/dataReshapeFor1D.d.ts +0 -19
- package/dist/dataReshape/dataReshapeFor1D1M.d.ts +0 -19
- package/dist/dataReshape/dataReshapeFor1D2M.d.ts +0 -19
- package/dist/dataReshape/dataReshapeFor2D1M.d.ts +0 -19
- package/dist/dataReshape/dataReshapeFor2D1M0Name.d.ts +0 -19
- package/dist/dataReshape/unfoldZeroDimensions.d.ts +0 -10
- package/dist/pipeline/advanced/chart/pipeline/areaRange.d.ts +0 -2
- package/dist/pipeline/advanced/chart/pipes/encoding/encodingRose.d.ts +0 -2
- package/dist/pipeline/advanced/chart/pipes/encoding/encodingXY.d.ts +0 -2
- package/dist/pipeline/advanced/chart/pipes/encoding/encodingXYY.d.ts +0 -2
- package/dist/pipeline/advanced/chart/pipes/encoding/encodingYX.d.ts +0 -2
- package/dist/pipeline/advanced/chart/pipes/encoding/encodingYY.d.ts +0 -2
- package/dist/pipeline/advanced/chart/pipes/init/autoMeasuresBy2M1Group.d.ts +0 -8
- package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo1D.d.ts +0 -8
- package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo1D1M.d.ts +0 -8
- package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo1D2M.d.ts +0 -8
- package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo2D1M.d.ts +0 -8
- package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo2D1M0Name.d.ts +0 -8
- package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo2D2M.d.ts +0 -8
- package/dist/pipeline/advanced/chart/pipes/reshape/reshapeTo1D.d.ts +0 -8
- package/dist/pipeline/advanced/chart/pipes/reshape/reshapeTo1D1M.d.ts +0 -8
- package/dist/pipeline/advanced/chart/pipes/reshape/reshapeTo1D2M.d.ts +0 -8
- package/dist/pipeline/advanced/chart/pipes/reshape/reshapeTo2D1M.d.ts +0 -8
- package/dist/pipeline/advanced/chart/pipes/reshape/reshapeTo2D1M0Name.d.ts +0 -8
- package/dist/pipeline/advanced/chart/pipes/reshape/reshapeTo2D2M.d.ts +0 -8
- package/dist/pipeline/spec/chart/pipeline/areaRange.d.ts +0 -1
- package/dist/pipeline/spec/chart/pipes/init/areaRange.d.ts +0 -4
- package/dist/pipeline/spec/chart/pipes/legend/colorLegend.d.ts +0 -2
- package/dist/pipeline/spec/chart/pipes/tooltip/tooltipAreaRange.d.ts +0 -2
- package/dist/types/chartType/areaRange/areaRange.d.ts +0 -151
- package/dist/types/chartType/areaRange/index.d.ts +0 -2
- package/dist/types/chartType/areaRange/zAreaRange.d.ts +0 -1427
- /package/dist/pipeline/spec/chart/pipes/init/{initDualAxis.d.ts → dualAxis.d.ts} +0 -0
package/dist/index.js
CHANGED
@@ -1080,13 +1080,26 @@ const isVTable = (vseed)=>[
|
|
1080
1080
|
const isVChart = (vseed)=>!isVTable(vseed);
|
1081
1081
|
const isPivotChart = (vseed)=>{
|
1082
1082
|
if (isVTable(vseed)) return false;
|
1083
|
-
if ('dualAxis' === vseed.chartType) {
|
1084
|
-
|
1085
|
-
|
1086
|
-
|
1087
|
-
|
1083
|
+
if ('dualAxis' === vseed.chartType || 'scatter' === vseed.chartType) {
|
1084
|
+
const { dimensions = [] } = vseed;
|
1085
|
+
const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'rowDimension' === dimension.location || 'columnDimension' === dimension.location);
|
1086
|
+
if (hasRowOrColumnDimension) return true;
|
1087
|
+
if ('scatter' === vseed.chartType) {
|
1088
|
+
if (vseed.measures) {
|
1089
|
+
const depth = measureDepth(vseed.measures);
|
1090
|
+
if (3 === depth) return true;
|
1091
|
+
return false;
|
1092
|
+
}
|
1093
|
+
if (vseed.scatterMeasures && vseed.scatterMeasures.length > 1) return true;
|
1094
|
+
}
|
1095
|
+
if ('dualAxis' === vseed.chartType) {
|
1096
|
+
if (vseed.measures) {
|
1097
|
+
const depth = measureDepth(vseed.measures);
|
1098
|
+
if (3 === depth) return true;
|
1099
|
+
return false;
|
1100
|
+
}
|
1101
|
+
if (vseed.dualMeasures && vseed.dualMeasures.length > 1) return true;
|
1088
1102
|
}
|
1089
|
-
if (vseed.dualMeasures && vseed.dualMeasures.length > 1) return true;
|
1090
1103
|
return false;
|
1091
1104
|
}
|
1092
1105
|
const { measures = [], dimensions = [] } = vseed;
|
@@ -1165,6 +1178,24 @@ const createEmptyMeasureGroup = ()=>({
|
|
1165
1178
|
alias: '',
|
1166
1179
|
children: []
|
1167
1180
|
});
|
1181
|
+
const ORIGINAL_DATA = '__OriginalData__';
|
1182
|
+
const Separator = '-';
|
1183
|
+
const FoldMeasureName = '__MeaName__';
|
1184
|
+
const FoldMeasureId = '__MeaId__';
|
1185
|
+
const FoldMeasureValue = '__MeaValue__';
|
1186
|
+
const MeasureName = FoldMeasureName;
|
1187
|
+
const FoldPrimaryMeasureValue = '__MeaPrimaryValue__';
|
1188
|
+
const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
|
1189
|
+
const FoldXMeasureValue = '__MeaXValue__';
|
1190
|
+
const FoldYMeasureValue = '__MeaYValue__';
|
1191
|
+
const XEncoding = '__Dim_X__';
|
1192
|
+
const YEncoding = '__Dim_Y__';
|
1193
|
+
const AngleEncoding = '__Dim_Angle__';
|
1194
|
+
const DetailEncoding = '__Dim_Detail__';
|
1195
|
+
const ColorEncoding = '__Dim_Color__';
|
1196
|
+
const ColorIdEncoding = '__Dim_ColorId__';
|
1197
|
+
const UnfoldDimensionGroup = '__DimGroup__';
|
1198
|
+
const UnfoldDimensionGroupId = '__DimGroupID__';
|
1168
1199
|
const autoDimensions_autoDimensions = (advancedVSeed, context)=>{
|
1169
1200
|
const result = {
|
1170
1201
|
...advancedVSeed
|
@@ -1172,6 +1203,10 @@ const autoDimensions_autoDimensions = (advancedVSeed, context)=>{
|
|
1172
1203
|
const { vseed } = context;
|
1173
1204
|
const { dimensions, dataset } = vseed;
|
1174
1205
|
const measures = findAllMeasures(advancedVSeed.measures);
|
1206
|
+
const MeaName = {
|
1207
|
+
id: MeasureName,
|
1208
|
+
alias: intl.i18n`指标名称`
|
1209
|
+
};
|
1175
1210
|
if (!dataset) throw new Error('dataset is required');
|
1176
1211
|
if (0 === dataset.length) return result;
|
1177
1212
|
if (dimensions) {
|
@@ -1179,6 +1214,8 @@ const autoDimensions_autoDimensions = (advancedVSeed, context)=>{
|
|
1179
1214
|
location: 'dimension',
|
1180
1215
|
...dim
|
1181
1216
|
}));
|
1217
|
+
if (result.dimensions.some((dim)=>dim.id === MeasureName)) return result;
|
1218
|
+
result.dimensions.push(MeaName);
|
1182
1219
|
return result;
|
1183
1220
|
}
|
1184
1221
|
const top100dataset = dataset.slice(0, 100);
|
@@ -1195,23 +1232,51 @@ const autoDimensions_autoDimensions = (advancedVSeed, context)=>{
|
|
1195
1232
|
alias: dim,
|
1196
1233
|
location: 'dimension'
|
1197
1234
|
}));
|
1235
|
+
result.dimensions.push(MeaName);
|
1198
1236
|
return result;
|
1199
1237
|
};
|
1238
|
+
const encodingForColumn = (advancedVSeed, context)=>{
|
1239
|
+
const { vseed } = context;
|
1240
|
+
const { dimensions } = advancedVSeed;
|
1241
|
+
if (!dimensions) return advancedVSeed;
|
1242
|
+
const encoding = vseed.encoding;
|
1243
|
+
if (encoding) {
|
1244
|
+
const x = encoding.x || [];
|
1245
|
+
const detail = encoding.detail || [];
|
1246
|
+
const color = encoding.color || [];
|
1247
|
+
const mergedDetail = [
|
1248
|
+
...color.filter((d)=>!x.includes(d)),
|
1249
|
+
...detail
|
1250
|
+
];
|
1251
|
+
return {
|
1252
|
+
...advancedVSeed,
|
1253
|
+
encoding: {
|
1254
|
+
...encoding,
|
1255
|
+
detail: mergedDetail
|
1256
|
+
}
|
1257
|
+
};
|
1258
|
+
}
|
1259
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
1260
|
+
const mergedEncoding = {
|
1261
|
+
x: dimensions.slice(0, 1).map((item)=>item.id),
|
1262
|
+
color: dimensions.slice(1).map((item)=>item.id),
|
1263
|
+
detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
1264
|
+
tooltip: dimensions.map((item)=>item.id),
|
1265
|
+
label: [],
|
1266
|
+
row: [],
|
1267
|
+
column: []
|
1268
|
+
};
|
1269
|
+
return {
|
1270
|
+
...advancedVSeed,
|
1271
|
+
encoding: mergedEncoding
|
1272
|
+
};
|
1273
|
+
};
|
1200
1274
|
const pivotAdapter = (pipeline, pivotPipeline)=>(advancedVSeed, context)=>{
|
1201
1275
|
const { vseed } = context;
|
1202
1276
|
const usePivotChart = isPivotChart(vseed);
|
1203
1277
|
if (usePivotChart) return execPipeline(pivotPipeline, context, advancedVSeed);
|
1204
1278
|
return execPipeline(pipeline, context, advancedVSeed);
|
1205
1279
|
};
|
1206
|
-
const FoldMeasureName = '__MeaName__';
|
1207
|
-
const FoldMeasureId = '__MeaId__';
|
1208
|
-
const FoldMeasureValue = '__MeaValue__';
|
1209
|
-
const FoldPrimaryMeasureValue = '__MeaPrimaryValue__';
|
1210
|
-
const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
|
1211
|
-
const UnfoldDimensionGroup = '__DimGroup__';
|
1212
|
-
const UnfoldDimensionGroupId = '__DimGroupID__';
|
1213
|
-
const Separator = '-';
|
1214
|
-
const ORIGINAL_DATA = '__OriginalData__';
|
1215
1280
|
const foldMeasures = (dataset, measures, measureId = FoldMeasureId, measureName = FoldMeasureName, measureValue = FoldMeasureValue)=>{
|
1216
1281
|
const foldInfo = {
|
1217
1282
|
measureId,
|
@@ -1241,84 +1306,53 @@ const foldMeasures = (dataset, measures, measureId = FoldMeasureId, measureName
|
|
1241
1306
|
foldInfo
|
1242
1307
|
};
|
1243
1308
|
};
|
1244
|
-
const unfoldDimensions = (dataset, dimensions,
|
1245
|
-
|
1246
|
-
const dimensionsToBeUnfolded = dimensions.slice(unfoldStartIndex);
|
1247
|
-
const dimensionsToBeRemain = dimensions.slice(0, unfoldStartIndex);
|
1309
|
+
const unfoldDimensions = (dataset, dimensions, encoding, options)=>{
|
1310
|
+
const { foldMeasureId, separator, colorItemAsId } = options;
|
1248
1311
|
const unfoldInfo = {
|
1249
|
-
|
1250
|
-
|
1312
|
+
encodingAngle: AngleEncoding,
|
1313
|
+
encodingX: XEncoding,
|
1314
|
+
encodingY: YEncoding,
|
1315
|
+
encodingDetail: DetailEncoding,
|
1316
|
+
encodingColor: ColorEncoding,
|
1317
|
+
encodingColorId: ColorIdEncoding,
|
1251
1318
|
colorItems: [],
|
1252
1319
|
colorIdMap: {}
|
1253
1320
|
};
|
1254
|
-
|
1255
|
-
|
1256
|
-
|
1257
|
-
|
1258
|
-
|
1259
|
-
|
1260
|
-
|
1261
|
-
|
1262
|
-
};
|
1263
|
-
const colorItems = [];
|
1264
|
-
const colorMap = {};
|
1321
|
+
const { color, x, y, detail, angle } = encoding;
|
1322
|
+
const angleDimensions = angle ? dimensions.filter((dim)=>angle.includes(dim.id)) : [];
|
1323
|
+
const xDimensions = x ? dimensions.filter((dim)=>x.includes(dim.id)) : [];
|
1324
|
+
const yDimensions = y ? dimensions.filter((dim)=>y.includes(dim.id)) : [];
|
1325
|
+
const colorDimensions = color ? dimensions.filter((dim)=>color.includes(dim.id)) : [];
|
1326
|
+
const detailDimensions = detail ? dimensions.filter((dim)=>detail.includes(dim.id)) : [];
|
1327
|
+
const colorItems = new Set();
|
1328
|
+
const colorIdMap = {};
|
1265
1329
|
for(let i = 0; i < dataset.length; i++){
|
1266
1330
|
const datum = dataset[i];
|
1267
|
-
|
1268
|
-
|
1269
|
-
|
1270
|
-
|
1271
|
-
|
1272
|
-
datum[
|
1273
|
-
datum[
|
1274
|
-
|
1275
|
-
|
1276
|
-
|
1277
|
-
|
1278
|
-
|
1279
|
-
|
1331
|
+
applyEncoding(AngleEncoding, angleDimensions, datum, separator);
|
1332
|
+
applyEncoding(XEncoding, xDimensions, datum, separator);
|
1333
|
+
applyEncoding(YEncoding, yDimensions, datum, separator);
|
1334
|
+
applyEncoding(ColorEncoding, colorDimensions, datum, separator);
|
1335
|
+
applyEncoding(DetailEncoding, detailDimensions, datum, separator);
|
1336
|
+
if (!datum[ColorEncoding]) continue;
|
1337
|
+
const measureId = String(datum[foldMeasureId]);
|
1338
|
+
const colorItem = String(datum[ColorEncoding]);
|
1339
|
+
const colorId = colorItemAsId ? colorItem : measureId ? [
|
1340
|
+
colorItem,
|
1341
|
+
measureId
|
1342
|
+
].join(separator) : colorItem;
|
1343
|
+
datum[ColorIdEncoding] = colorId;
|
1344
|
+
colorIdMap[colorId] = colorItem;
|
1345
|
+
colorItems.add(colorId);
|
1280
1346
|
}
|
1281
|
-
unfoldInfo.colorItems =
|
1282
|
-
unfoldInfo.colorIdMap =
|
1347
|
+
unfoldInfo.colorItems = Array.from(colorItems);
|
1348
|
+
unfoldInfo.colorIdMap = colorIdMap;
|
1283
1349
|
return {
|
1284
1350
|
dataset,
|
1285
1351
|
unfoldInfo
|
1286
1352
|
};
|
1287
1353
|
};
|
1288
|
-
const
|
1289
|
-
|
1290
|
-
const unfoldInfo = {
|
1291
|
-
groupName: unfoldGroupName,
|
1292
|
-
groupId: unfoldGroupId,
|
1293
|
-
colorItems: [],
|
1294
|
-
colorIdMap: {}
|
1295
|
-
};
|
1296
|
-
if (0 === measures.length) return {
|
1297
|
-
dataset,
|
1298
|
-
unfoldInfo: {
|
1299
|
-
groupName: unfoldGroupName,
|
1300
|
-
groupId: unfoldGroupId,
|
1301
|
-
colorItems: [],
|
1302
|
-
colorIdMap: {}
|
1303
|
-
}
|
1304
|
-
};
|
1305
|
-
const colorItems = [];
|
1306
|
-
const colorMap = {};
|
1307
|
-
for(let i = 0; i < dataset.length; i++){
|
1308
|
-
const datum = dataset[i];
|
1309
|
-
const colorName = measureName;
|
1310
|
-
const colorId = measureName;
|
1311
|
-
datum[unfoldGroupName] = colorName;
|
1312
|
-
datum[unfoldGroupId] = colorId;
|
1313
|
-
colorItems.push(colorId);
|
1314
|
-
colorMap[colorId] = colorName;
|
1315
|
-
}
|
1316
|
-
unfoldInfo.colorItems = unique(colorItems);
|
1317
|
-
unfoldInfo.colorIdMap = colorMap;
|
1318
|
-
return {
|
1319
|
-
dataset,
|
1320
|
-
unfoldInfo
|
1321
|
-
};
|
1354
|
+
const applyEncoding = (encoding, dimensions, datum, separator)=>{
|
1355
|
+
if (encoding && dimensions.length) datum[encoding] = dimensions.map((dim)=>String(datum[dim.id])).join(separator);
|
1322
1356
|
};
|
1323
1357
|
const emptyReshapeResult = {
|
1324
1358
|
dataset: [],
|
@@ -1329,69 +1363,47 @@ const emptyReshapeResult = {
|
|
1329
1363
|
measureValue: ''
|
1330
1364
|
},
|
1331
1365
|
unfoldInfo: {
|
1332
|
-
|
1333
|
-
|
1366
|
+
encodingAngle: AngleEncoding,
|
1367
|
+
encodingX: XEncoding,
|
1368
|
+
encodingY: YEncoding,
|
1369
|
+
encodingDetail: DetailEncoding,
|
1370
|
+
encodingColor: ColorEncoding,
|
1371
|
+
encodingColorId: ColorIdEncoding,
|
1334
1372
|
colorItems: [],
|
1335
1373
|
colorIdMap: {}
|
1336
1374
|
}
|
1337
1375
|
};
|
1338
|
-
const
|
1339
|
-
const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue,
|
1376
|
+
const dataReshapeByEncoding = (dataset, dimensions, measures, encoding, options)=>{
|
1377
|
+
const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, colorItemAsId = false } = options || {};
|
1340
1378
|
if (0 === dimensions.length && 0 === measures.length) return emptyReshapeResult;
|
1341
1379
|
const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, foldMeasureId, foldMeasureName, foldMeasureValue);
|
1342
|
-
|
1343
|
-
|
1344
|
-
|
1345
|
-
|
1346
|
-
|
1347
|
-
|
1348
|
-
|
1349
|
-
|
1350
|
-
|
1351
|
-
|
1352
|
-
unfoldInfo
|
1353
|
-
};
|
1354
|
-
}
|
1355
|
-
{
|
1356
|
-
const onlyOneMeasure = 1 === measures.length;
|
1357
|
-
const onlyOneDimension = 1 === dimensions.length;
|
1358
|
-
const dims = [
|
1359
|
-
...dimensions
|
1360
|
-
];
|
1361
|
-
if (!onlyOneMeasure || onlyOneDimension) dims.push({
|
1362
|
-
id: foldMeasureName,
|
1363
|
-
alias: i18n`指标名称`,
|
1364
|
-
location: 'dimension'
|
1365
|
-
});
|
1366
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dims, [
|
1367
|
-
{
|
1368
|
-
id: foldMeasureValue,
|
1369
|
-
alias: i18n`指标值`
|
1370
|
-
}
|
1371
|
-
], 1, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
1372
|
-
return {
|
1373
|
-
dataset: finalDataset,
|
1374
|
-
foldInfo,
|
1375
|
-
unfoldInfo
|
1376
|
-
};
|
1377
|
-
}
|
1380
|
+
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dimensions, encoding, {
|
1381
|
+
foldMeasureId,
|
1382
|
+
separator: Separator,
|
1383
|
+
colorItemAsId
|
1384
|
+
});
|
1385
|
+
return {
|
1386
|
+
dataset: finalDataset,
|
1387
|
+
foldInfo,
|
1388
|
+
unfoldInfo
|
1389
|
+
};
|
1378
1390
|
};
|
1379
|
-
const
|
1391
|
+
const reshapeWithEncoding = (advancedVSeed, context)=>{
|
1380
1392
|
const result = {
|
1381
1393
|
...advancedVSeed
|
1382
1394
|
};
|
1383
1395
|
const { vseed } = context;
|
1384
|
-
const { dataset } = vseed;
|
1385
|
-
const { dimensions, measures } = advancedVSeed;
|
1386
|
-
if (!measures || !dimensions || !dataset) return result;
|
1396
|
+
const { dataset, chartType } = vseed;
|
1397
|
+
const { dimensions, measures, encoding } = advancedVSeed;
|
1398
|
+
if (!measures || !dimensions || !dataset || !encoding) return result;
|
1387
1399
|
if (0 === measures.length) throw new Error('measures can not be empty');
|
1388
|
-
const { dataset: newDatasets, foldInfo, unfoldInfo } =
|
1400
|
+
const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding);
|
1389
1401
|
return {
|
1390
1402
|
...result,
|
1391
1403
|
dataset: newDatasets,
|
1392
1404
|
datasetReshapeInfo: [
|
1393
1405
|
{
|
1394
|
-
id:
|
1406
|
+
id: String(chartType),
|
1395
1407
|
index: 0,
|
1396
1408
|
foldInfo,
|
1397
1409
|
unfoldInfo
|
@@ -1401,31 +1413,27 @@ const reshapeTo2D1M0Name = (advancedVSeed, context)=>{
|
|
1401
1413
|
measures
|
1402
1414
|
};
|
1403
1415
|
};
|
1404
|
-
const
|
1416
|
+
const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
|
1405
1417
|
const result = {
|
1406
1418
|
...advancedVSeed
|
1407
1419
|
};
|
1408
1420
|
const { vseed } = context;
|
1409
1421
|
const { dataset } = vseed;
|
1410
|
-
const { measures } = advancedVSeed;
|
1411
|
-
|
1412
|
-
if (
|
1422
|
+
const { dimensions, measures, encoding } = advancedVSeed;
|
1423
|
+
if (!measures || !dimensions || !dataset || !encoding) return result;
|
1424
|
+
if (0 === measures.length) throw new Error('measures can not be empty');
|
1413
1425
|
const measureGroups = [];
|
1414
1426
|
if (measures) measures.forEach((measure)=>{
|
1415
1427
|
if (measure.children && measure.children.length > 0) measureGroups.push(measure);
|
1416
1428
|
});
|
1417
|
-
const
|
1418
|
-
const newDatasets = [];
|
1429
|
+
const datasets = [];
|
1419
1430
|
const datasetReshapeInfo = [];
|
1420
1431
|
measureGroups.forEach((measureGroup, index)=>{
|
1421
1432
|
const measures = measureGroup.children;
|
1422
1433
|
if (!measures) return;
|
1423
1434
|
const groupId = measureGroup.id;
|
1424
|
-
const { dataset: newSubDataset, foldInfo, unfoldInfo } =
|
1425
|
-
|
1426
|
-
foldMeasureName: FoldMeasureName,
|
1427
|
-
foldMeasureValue: FoldMeasureValue + groupId,
|
1428
|
-
unfoldDimensionGroup: UnfoldDimensionGroup
|
1435
|
+
const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding, {
|
1436
|
+
foldMeasureValue: `${FoldMeasureValue}${groupId}`
|
1429
1437
|
});
|
1430
1438
|
const reshapeInfo = {
|
1431
1439
|
id: groupId,
|
@@ -1433,93 +1441,60 @@ const pivotReshapeTo2D1M0Name = (advancedVSeed, context)=>{
|
|
1433
1441
|
foldInfo,
|
1434
1442
|
unfoldInfo
|
1435
1443
|
};
|
1436
|
-
|
1444
|
+
datasets.push(newSubDataset);
|
1437
1445
|
datasetReshapeInfo.push(reshapeInfo);
|
1438
1446
|
});
|
1439
1447
|
return {
|
1440
1448
|
...result,
|
1441
|
-
dataset:
|
1449
|
+
dataset: datasets,
|
1442
1450
|
datasetReshapeInfo: datasetReshapeInfo
|
1443
1451
|
};
|
1444
1452
|
};
|
1445
|
-
const encodingXY = (advancedVSeed)=>{
|
1446
|
-
const result = {
|
1447
|
-
...advancedVSeed
|
1448
|
-
};
|
1449
|
-
const { datasetReshapeInfo, dimensions } = advancedVSeed;
|
1450
|
-
if (!datasetReshapeInfo || !dimensions) return result;
|
1451
|
-
const xDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
|
1452
|
-
const isZeroDimension = 0 === dimensions.length;
|
1453
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
|
1454
|
-
const { foldInfo, unfoldInfo } = cur;
|
1455
|
-
const x = [
|
1456
|
-
isZeroDimension ? foldInfo.measureName : xDimension?.id
|
1457
|
-
];
|
1458
|
-
const y = [
|
1459
|
-
foldInfo.measureValue
|
1460
|
-
];
|
1461
|
-
const group = [
|
1462
|
-
unfoldInfo.groupId
|
1463
|
-
];
|
1464
|
-
const color = [
|
1465
|
-
foldInfo.measureName
|
1466
|
-
];
|
1467
|
-
return [
|
1468
|
-
...prev,
|
1469
|
-
{
|
1470
|
-
x,
|
1471
|
-
y,
|
1472
|
-
group,
|
1473
|
-
color
|
1474
|
-
}
|
1475
|
-
];
|
1476
|
-
}, []);
|
1477
|
-
return {
|
1478
|
-
...result,
|
1479
|
-
encoding
|
1480
|
-
};
|
1481
|
-
};
|
1482
1453
|
const sortXBandAxis = (advancedVSeed, context)=>{
|
1483
1454
|
const result = {
|
1484
1455
|
...advancedVSeed
|
1485
1456
|
};
|
1486
1457
|
const { vseed } = context;
|
1487
|
-
const { sort: sortAxis
|
1488
|
-
const {
|
1489
|
-
const
|
1458
|
+
const { sort: sortAxis } = vseed;
|
1459
|
+
const { datasetReshapeInfo, dataset } = advancedVSeed;
|
1460
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
1461
|
+
const xField = unfoldInfo.encodingX;
|
1490
1462
|
if (!sortAxis || !xField) return advancedVSeed;
|
1491
1463
|
if (!result.analysis) result.analysis = {};
|
1492
1464
|
if (!result.analysis.orderMapping) result.analysis.orderMapping = {};
|
1493
|
-
const axisOrderResult = calcOrder(sortAxis, xField, dataset);
|
1465
|
+
const axisOrderResult = calcOrder(sortAxis, xField, dataset.flat(2));
|
1494
1466
|
result.analysis.orderMapping[xField] = axisOrderResult;
|
1495
1467
|
return result;
|
1496
1468
|
};
|
1497
|
-
const
|
1498
|
-
|
1499
|
-
|
1500
|
-
|
1501
|
-
const
|
1502
|
-
|
1503
|
-
|
1504
|
-
|
1505
|
-
|
1506
|
-
|
1507
|
-
|
1508
|
-
|
1509
|
-
|
1510
|
-
|
1469
|
+
const calcOrder = (sortConfig, id, dataset)=>{
|
1470
|
+
if (sortConfig.customOrder) return sortConfig.customOrder;
|
1471
|
+
const order = sortConfig.order || 'asc';
|
1472
|
+
const orderBy = sortConfig.orderBy;
|
1473
|
+
const res = sort(dataset, (a, b)=>{
|
1474
|
+
const aValue = a[orderBy || id];
|
1475
|
+
const bValue = b[orderBy || id];
|
1476
|
+
if ('asc' === order) {
|
1477
|
+
if (aValue < bValue) return -1;
|
1478
|
+
if (aValue > bValue) return 1;
|
1479
|
+
return 0;
|
1480
|
+
}
|
1481
|
+
if (aValue > bValue) return -1;
|
1482
|
+
if (aValue < bValue) return 1;
|
1483
|
+
return 0;
|
1484
|
+
});
|
1485
|
+
return unique(res.map((item)=>item[id]));
|
1511
1486
|
};
|
1512
|
-
const
|
1487
|
+
const sortLegend_sortLegend = (advancedVSeed, context)=>{
|
1513
1488
|
const result = {
|
1514
1489
|
...advancedVSeed
|
1515
1490
|
};
|
1516
1491
|
const { vseed } = context;
|
1517
1492
|
const { sortLegend } = vseed;
|
1518
|
-
const { datasetReshapeInfo } = advancedVSeed;
|
1519
|
-
const
|
1493
|
+
const { datasetReshapeInfo, dataset } = advancedVSeed;
|
1494
|
+
const colorId = datasetReshapeInfo?.[0]?.unfoldInfo?.encodingColorId;
|
1520
1495
|
const colorIdMap = datasetReshapeInfo?.[0]?.unfoldInfo?.colorIdMap;
|
1521
1496
|
const colorItems = datasetReshapeInfo?.[0]?.unfoldInfo?.colorItems;
|
1522
|
-
if (!sortLegend || !
|
1497
|
+
if (!sortLegend || !colorId || !colorIdMap || !colorItems) return advancedVSeed;
|
1523
1498
|
if (!result.analysis) result.analysis = {};
|
1524
1499
|
if (!result.analysis.orderMapping) result.analysis.orderMapping = {};
|
1525
1500
|
if (sortLegend.customOrder) {
|
@@ -1528,15 +1503,14 @@ const sort_sortLegend = (advancedVSeed, context)=>{
|
|
1528
1503
|
return pre;
|
1529
1504
|
}, {});
|
1530
1505
|
const orderRes = sortLegend.customOrder.map((itemNameOrId)=>nameMap[itemNameOrId] ? nameMap[itemNameOrId] : itemNameOrId);
|
1531
|
-
result.analysis.orderMapping[
|
1506
|
+
result.analysis.orderMapping[colorId] = orderRes;
|
1532
1507
|
return result;
|
1533
1508
|
}
|
1534
|
-
const
|
1535
|
-
|
1536
|
-
result.analysis.orderMapping[groupField] = orderRes;
|
1509
|
+
const orderRes = sortLegend_calcOrder(sortLegend, colorId, dataset?.flat(2) || []);
|
1510
|
+
result.analysis.orderMapping[colorId] = orderRes;
|
1537
1511
|
return result;
|
1538
1512
|
};
|
1539
|
-
const
|
1513
|
+
const sortLegend_calcOrder = (sortConfig, id, dataset)=>{
|
1540
1514
|
if (sortConfig.customOrder) return sortConfig.customOrder;
|
1541
1515
|
const order = sortConfig.order || 'asc';
|
1542
1516
|
const orderBy = sortConfig.orderBy;
|
@@ -1668,14 +1642,14 @@ const lineAdvancedPipeline = [
|
|
1668
1642
|
initAdvancedVSeed_initAdvancedVSeed,
|
1669
1643
|
autoMeasures_autoMeasures,
|
1670
1644
|
autoDimensions_autoDimensions,
|
1645
|
+
encodingForColumn,
|
1671
1646
|
pivotAdapter([
|
1672
|
-
|
1647
|
+
reshapeWithEncoding
|
1673
1648
|
], [
|
1674
|
-
|
1649
|
+
pivotReshapeWithEncoding
|
1675
1650
|
]),
|
1676
|
-
encodingXY,
|
1677
1651
|
sortXBandAxis,
|
1678
|
-
|
1652
|
+
sortLegend_sortLegend,
|
1679
1653
|
lineConfig,
|
1680
1654
|
theme_theme,
|
1681
1655
|
markStyle_markStyle,
|
@@ -1686,13 +1660,13 @@ const initLine = (spec, context)=>{
|
|
1686
1660
|
...spec
|
1687
1661
|
};
|
1688
1662
|
const { advancedVSeed } = context;
|
1689
|
-
const {
|
1690
|
-
|
1663
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
1664
|
+
const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
|
1691
1665
|
result.type = 'line';
|
1692
1666
|
result.direction = 'vertical';
|
1693
|
-
result.xField =
|
1694
|
-
result.yField =
|
1695
|
-
result.seriesField =
|
1667
|
+
result.xField = unfoldInfo.encodingX;
|
1668
|
+
result.yField = foldInfo.measureValue;
|
1669
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
1696
1670
|
result.padding = 0;
|
1697
1671
|
result.region = [
|
1698
1672
|
{
|
@@ -1768,11 +1742,12 @@ const background_backgroundColor = (spec, context)=>{
|
|
1768
1742
|
};
|
1769
1743
|
const datasetXY = (spec, context)=>{
|
1770
1744
|
const { advancedVSeed, vseed } = context;
|
1771
|
-
const {
|
1745
|
+
const { analysis, datasetReshapeInfo } = advancedVSeed;
|
1746
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
1772
1747
|
const orderMapping = analysis?.orderMapping || {};
|
1773
|
-
const angle =
|
1774
|
-
const x =
|
1775
|
-
const
|
1748
|
+
const angle = unfoldInfo.encodingAngle;
|
1749
|
+
const x = unfoldInfo.encodingX;
|
1750
|
+
const colorId = unfoldInfo.encodingColorId;
|
1776
1751
|
const id = datasetReshapeInfo[0].id;
|
1777
1752
|
const fields = {};
|
1778
1753
|
if (angle) fields[angle] = {
|
@@ -1789,14 +1764,14 @@ const datasetXY = (spec, context)=>{
|
|
1789
1764
|
sortIndex: 0
|
1790
1765
|
};
|
1791
1766
|
}
|
1792
|
-
if (
|
1793
|
-
const order = orderMapping[
|
1794
|
-
if (order) fields[
|
1767
|
+
if (colorId) {
|
1768
|
+
const order = orderMapping[colorId];
|
1769
|
+
if (order) fields[colorId] = {
|
1795
1770
|
sortIndex: 0,
|
1796
1771
|
domain: order,
|
1797
1772
|
lockStatisticsByDomain: true
|
1798
1773
|
};
|
1799
|
-
else fields[
|
1774
|
+
else fields[colorId] = {
|
1800
1775
|
sortIndex: 0
|
1801
1776
|
};
|
1802
1777
|
}
|
@@ -2049,7 +2024,7 @@ const tooltip_tooltip = (spec, context)=>{
|
|
2049
2024
|
} } = baseConfig;
|
2050
2025
|
const { enable } = tooltip;
|
2051
2026
|
const { measureId, measureValue, measureName } = datasetReshapeInfo[0].foldInfo;
|
2052
|
-
const {
|
2027
|
+
const { encodingColor: colorName } = datasetReshapeInfo[0].unfoldInfo;
|
2053
2028
|
result.tooltip = {
|
2054
2029
|
visible: enable,
|
2055
2030
|
mark: {
|
@@ -2070,7 +2045,7 @@ const tooltip_tooltip = (spec, context)=>{
|
|
2070
2045
|
{
|
2071
2046
|
visible: true,
|
2072
2047
|
hasShape: true,
|
2073
|
-
key: (datum)=>datum && datum[measureName ||
|
2048
|
+
key: (datum)=>datum && datum[measureName || colorName] || '',
|
2074
2049
|
value: (datum)=>{
|
2075
2050
|
if (!datum) return '';
|
2076
2051
|
const value = datum[measureValue];
|
@@ -2092,7 +2067,7 @@ const tooltip_tooltip = (spec, context)=>{
|
|
2092
2067
|
content: [
|
2093
2068
|
{
|
2094
2069
|
visible: true,
|
2095
|
-
key: (datum)=>datum && datum[
|
2070
|
+
key: (datum)=>datum && datum[colorName] || '',
|
2096
2071
|
value: (datum)=>{
|
2097
2072
|
if (!datum) return '';
|
2098
2073
|
const value = datum[measureValue];
|
@@ -2430,7 +2405,8 @@ const pointStateDimensionHover = (spec)=>{
|
|
2430
2405
|
const pointStateHover = (spec, context)=>{
|
2431
2406
|
const point = spec.point || {};
|
2432
2407
|
const { advancedVSeed } = context;
|
2433
|
-
const {
|
2408
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
2409
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
2434
2410
|
const result = {
|
2435
2411
|
...spec,
|
2436
2412
|
point: {
|
@@ -2441,7 +2417,7 @@ const pointStateHover = (spec, context)=>{
|
|
2441
2417
|
scaleX: 1.4,
|
2442
2418
|
scaleY: 1.4,
|
2443
2419
|
stroke: (datum, context)=>{
|
2444
|
-
const field =
|
2420
|
+
const field = unfoldInfo.encodingColorId;
|
2445
2421
|
const color = context.seriesColor(datum[field]);
|
2446
2422
|
return color;
|
2447
2423
|
},
|
@@ -2455,7 +2431,8 @@ const pointStateHover = (spec, context)=>{
|
|
2455
2431
|
};
|
2456
2432
|
const lineStyle_lineStyle = (spec, context)=>{
|
2457
2433
|
const { advancedVSeed } = context;
|
2458
|
-
const { markStyle,
|
2434
|
+
const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed;
|
2435
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
2459
2436
|
const { lineStyle } = markStyle;
|
2460
2437
|
if (!lineStyle) return spec;
|
2461
2438
|
const result = {
|
@@ -2464,8 +2441,8 @@ const lineStyle_lineStyle = (spec, context)=>{
|
|
2464
2441
|
const lineStyles = Array.isArray(lineStyle) ? lineStyle : [
|
2465
2442
|
lineStyle
|
2466
2443
|
];
|
2467
|
-
const
|
2468
|
-
const lineGroups = groupBy(dataset, (d)=>d[
|
2444
|
+
const colorId = unfoldInfo.encodingColorId;
|
2445
|
+
const lineGroups = groupBy(dataset, (d)=>d[colorId ?? '']);
|
2469
2446
|
const customMap = lineStyles.reduce((result, style, index)=>{
|
2470
2447
|
const { lineColor, lineColorOpacity, lineSmooth, lineStyle, lineWidth = 2, lineVisible = true } = style;
|
2471
2448
|
const dashSegment = 2 * lineWidth;
|
@@ -2486,7 +2463,7 @@ const lineStyle_lineStyle = (spec, context)=>{
|
|
2486
2463
|
[`custom${index + 1}`]: {
|
2487
2464
|
level: index + 1,
|
2488
2465
|
filter: (datum)=>{
|
2489
|
-
const lineData = lineGroups[datum[
|
2466
|
+
const lineData = lineGroups[datum[colorId ?? '']];
|
2490
2467
|
for (const d of lineData)if (selector_selector(d, style.selector)) return true;
|
2491
2468
|
return false;
|
2492
2469
|
},
|
@@ -2581,7 +2558,8 @@ const annotationPoint_annotationPoint = (spec, context)=>{
|
|
2581
2558
|
};
|
2582
2559
|
const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
|
2583
2560
|
const { advancedVSeed } = context;
|
2584
|
-
const { annotation,
|
2561
|
+
const { annotation, datasetReshapeInfo } = advancedVSeed;
|
2562
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
2585
2563
|
if (!annotation || !annotation.annotationVerticalLine) return spec;
|
2586
2564
|
const { annotationVerticalLine } = annotation;
|
2587
2565
|
const annotationVerticalLineList = Array.isArray(annotationVerticalLine) ? annotationVerticalLine : [
|
@@ -2661,7 +2639,7 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
|
|
2661
2639
|
}
|
2662
2640
|
const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
|
2663
2641
|
return selectedData.map((datum)=>{
|
2664
|
-
const x =
|
2642
|
+
const x = unfoldInfo.encodingX;
|
2665
2643
|
if (!x) return {};
|
2666
2644
|
return generateOneMarkLine(datum[x]);
|
2667
2645
|
});
|
@@ -2678,7 +2656,8 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
|
|
2678
2656
|
};
|
2679
2657
|
const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
|
2680
2658
|
const { advancedVSeed } = context;
|
2681
|
-
const { annotation,
|
2659
|
+
const { annotation, datasetReshapeInfo } = advancedVSeed;
|
2660
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
2682
2661
|
if (!annotation || !annotation.annotationHorizontalLine) return spec;
|
2683
2662
|
const { annotationHorizontalLine } = annotation;
|
2684
2663
|
const annotationVerticalLineList = Array.isArray(annotationHorizontalLine) ? annotationHorizontalLine : [
|
@@ -2758,7 +2737,7 @@ const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
|
|
2758
2737
|
}
|
2759
2738
|
const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
|
2760
2739
|
return selectedData.map((datum)=>{
|
2761
|
-
const y =
|
2740
|
+
const y = unfoldInfo.encodingY;
|
2762
2741
|
if (!y) return {};
|
2763
2742
|
return generateOneMarkLine(datum[y]);
|
2764
2743
|
});
|
@@ -3039,13 +3018,10 @@ const pivotIndicators_pivotIndicators = (chartPipeline)=>(spec, context)=>{
|
|
3039
3018
|
...spec
|
3040
3019
|
};
|
3041
3020
|
const { advancedVSeed } = context;
|
3042
|
-
const { measures, datasetReshapeInfo,
|
3021
|
+
const { measures, datasetReshapeInfo, dataset } = advancedVSeed;
|
3043
3022
|
const colorItems = unique(datasetReshapeInfo.flatMap((d)=>d.unfoldInfo.colorItems));
|
3044
3023
|
const indicators = datasetReshapeInfo.map((reshapeInfo, index)=>{
|
3045
3024
|
const measure = measures?.find((d)=>d.id === reshapeInfo.id);
|
3046
|
-
const newEncoding = [
|
3047
|
-
encoding[index]
|
3048
|
-
];
|
3049
3025
|
const newDataset = dataset[index];
|
3050
3026
|
const newDatasetReshapeInfo = [
|
3051
3027
|
{
|
@@ -3061,8 +3037,7 @@ const pivotIndicators_pivotIndicators = (chartPipeline)=>(spec, context)=>{
|
|
3061
3037
|
advancedVSeed: {
|
3062
3038
|
...advancedVSeed,
|
3063
3039
|
datasetReshapeInfo: newDatasetReshapeInfo,
|
3064
|
-
dataset: newDataset
|
3065
|
-
encoding: newEncoding
|
3040
|
+
dataset: newDataset
|
3066
3041
|
}
|
3067
3042
|
};
|
3068
3043
|
const chartSpec = execPipeline(chartPipeline, newContext, {});
|
@@ -3248,7 +3223,7 @@ const pivotDiscreteLegend = (spec, context)=>{
|
|
3248
3223
|
}
|
3249
3224
|
},
|
3250
3225
|
label: {
|
3251
|
-
formatMethod: (value)=>colorIdMap[
|
3226
|
+
formatMethod: (value)=>colorIdMap[value] ?? value,
|
3252
3227
|
style: {
|
3253
3228
|
fontSize: labelFontSize,
|
3254
3229
|
fill: labelFontColor,
|
@@ -3331,151 +3306,18 @@ const registerLine = ()=>{
|
|
3331
3306
|
Builder._advancedPipelineMap.line = lineAdvancedPipeline;
|
3332
3307
|
Builder._specPipelineMap.line = lineSpecPipeline;
|
3333
3308
|
};
|
3334
|
-
const dataReshapeFor2D1M_emptyReshapeResult = {
|
3335
|
-
dataset: [],
|
3336
|
-
foldInfo: {
|
3337
|
-
foldMap: {},
|
3338
|
-
measureId: '',
|
3339
|
-
measureName: '',
|
3340
|
-
measureValue: ''
|
3341
|
-
},
|
3342
|
-
unfoldInfo: {
|
3343
|
-
groupName: '',
|
3344
|
-
groupId: '',
|
3345
|
-
colorItems: [],
|
3346
|
-
colorIdMap: {}
|
3347
|
-
}
|
3348
|
-
};
|
3349
|
-
const dataReshapeFor2D1M = (dataset, dimensions, measures, options)=>{
|
3350
|
-
const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, unfoldDimensionGroup = UnfoldDimensionGroup, unfoldDimensionGroupId = UnfoldDimensionGroupId } = options || {};
|
3351
|
-
if (0 === dimensions.length && 0 === measures.length) return dataReshapeFor2D1M_emptyReshapeResult;
|
3352
|
-
const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, foldMeasureId, foldMeasureName, foldMeasureValue);
|
3353
|
-
if (0 === dimensions.length) {
|
3354
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
|
3355
|
-
{
|
3356
|
-
id: foldMeasureId,
|
3357
|
-
alias: i18n`指标Id`,
|
3358
|
-
location: 'dimension'
|
3359
|
-
},
|
3360
|
-
{
|
3361
|
-
id: foldMeasureName,
|
3362
|
-
alias: i18n`指标名称`,
|
3363
|
-
location: 'dimension'
|
3364
|
-
}
|
3365
|
-
], [
|
3366
|
-
{
|
3367
|
-
id: foldMeasureValue,
|
3368
|
-
alias: i18n`指标值`
|
3369
|
-
}
|
3370
|
-
], 1, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
3371
|
-
return {
|
3372
|
-
dataset: finalDataset,
|
3373
|
-
foldInfo,
|
3374
|
-
unfoldInfo
|
3375
|
-
};
|
3376
|
-
}
|
3377
|
-
{
|
3378
|
-
const onlyOneMeasure = 1 === measures.length;
|
3379
|
-
const onlyOneDimension = 1 === dimensions.length;
|
3380
|
-
const dims = [
|
3381
|
-
...dimensions
|
3382
|
-
];
|
3383
|
-
if (!onlyOneMeasure || onlyOneDimension) dims.push({
|
3384
|
-
id: foldMeasureName,
|
3385
|
-
alias: i18n`指标名称`,
|
3386
|
-
location: 'dimension'
|
3387
|
-
});
|
3388
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dims, [
|
3389
|
-
{
|
3390
|
-
id: foldMeasureValue,
|
3391
|
-
alias: i18n`指标值`
|
3392
|
-
}
|
3393
|
-
], 1, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
3394
|
-
return {
|
3395
|
-
dataset: finalDataset,
|
3396
|
-
foldInfo,
|
3397
|
-
unfoldInfo
|
3398
|
-
};
|
3399
|
-
}
|
3400
|
-
};
|
3401
|
-
const reshapeTo2D1M = (advancedVSeed, context)=>{
|
3402
|
-
const result = {
|
3403
|
-
...advancedVSeed
|
3404
|
-
};
|
3405
|
-
const { vseed } = context;
|
3406
|
-
const { dataset } = vseed;
|
3407
|
-
const { dimensions, measures } = advancedVSeed;
|
3408
|
-
if (!measures || !dimensions || !dataset) return result;
|
3409
|
-
if (0 === measures.length) throw new Error('measures can not be empty');
|
3410
|
-
const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, dimensions, measures);
|
3411
|
-
return {
|
3412
|
-
...result,
|
3413
|
-
dataset: newDatasets,
|
3414
|
-
datasetReshapeInfo: [
|
3415
|
-
{
|
3416
|
-
id: '2D1M',
|
3417
|
-
index: 0,
|
3418
|
-
foldInfo,
|
3419
|
-
unfoldInfo
|
3420
|
-
}
|
3421
|
-
],
|
3422
|
-
dimensions,
|
3423
|
-
measures
|
3424
|
-
};
|
3425
|
-
};
|
3426
|
-
const pivotReshapeTo2D1M = (advancedVSeed, context)=>{
|
3427
|
-
const result = {
|
3428
|
-
...advancedVSeed
|
3429
|
-
};
|
3430
|
-
const { vseed } = context;
|
3431
|
-
const { dataset } = vseed;
|
3432
|
-
const { measures } = advancedVSeed;
|
3433
|
-
const dimensions = advancedVSeed.dimensions;
|
3434
|
-
if (!measures || !dimensions) return result;
|
3435
|
-
const measureGroups = [];
|
3436
|
-
if (measures) measures.forEach((measure)=>{
|
3437
|
-
if (measure.children && measure.children.length > 0) measureGroups.push(measure);
|
3438
|
-
});
|
3439
|
-
const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
|
3440
|
-
const newDatasets = [];
|
3441
|
-
const datasetReshapeInfo = [];
|
3442
|
-
measureGroups.forEach((measureGroup, index)=>{
|
3443
|
-
const measures = measureGroup.children;
|
3444
|
-
if (!measures) return;
|
3445
|
-
const groupId = measureGroup.id;
|
3446
|
-
const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, commonDimensions, measures, {
|
3447
|
-
foldMeasureId: FoldMeasureId,
|
3448
|
-
foldMeasureName: FoldMeasureName,
|
3449
|
-
foldMeasureValue: FoldMeasureValue + groupId,
|
3450
|
-
unfoldDimensionGroup: UnfoldDimensionGroup
|
3451
|
-
});
|
3452
|
-
const reshapeInfo = {
|
3453
|
-
id: groupId,
|
3454
|
-
index,
|
3455
|
-
foldInfo,
|
3456
|
-
unfoldInfo
|
3457
|
-
};
|
3458
|
-
newDatasets.push(newSubDataset);
|
3459
|
-
datasetReshapeInfo.push(reshapeInfo);
|
3460
|
-
});
|
3461
|
-
return {
|
3462
|
-
...result,
|
3463
|
-
dataset: newDatasets,
|
3464
|
-
datasetReshapeInfo: datasetReshapeInfo
|
3465
|
-
};
|
3466
|
-
};
|
3467
3309
|
const columnAdvancedPipeline = [
|
3468
3310
|
initAdvancedVSeed_initAdvancedVSeed,
|
3469
3311
|
autoMeasures_autoMeasures,
|
3470
3312
|
autoDimensions_autoDimensions,
|
3313
|
+
encodingForColumn,
|
3471
3314
|
pivotAdapter([
|
3472
|
-
|
3315
|
+
reshapeWithEncoding
|
3473
3316
|
], [
|
3474
|
-
|
3317
|
+
pivotReshapeWithEncoding
|
3475
3318
|
]),
|
3476
|
-
encodingXY,
|
3477
3319
|
sortXBandAxis,
|
3478
|
-
|
3320
|
+
sortLegend_sortLegend,
|
3479
3321
|
columnConfig,
|
3480
3322
|
theme_theme,
|
3481
3323
|
markStyle_markStyle,
|
@@ -3486,13 +3328,13 @@ const initColumn = (spec, context)=>{
|
|
3486
3328
|
...spec
|
3487
3329
|
};
|
3488
3330
|
const { advancedVSeed } = context;
|
3489
|
-
const {
|
3490
|
-
|
3331
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
3332
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
3491
3333
|
result.type = 'bar';
|
3492
3334
|
result.direction = 'vertical';
|
3493
|
-
result.xField =
|
3494
|
-
result.yField =
|
3495
|
-
result.seriesField =
|
3335
|
+
result.xField = unfoldInfo.encodingX;
|
3336
|
+
result.yField = foldInfo.measureValue;
|
3337
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
3496
3338
|
result.padding = 0;
|
3497
3339
|
result.region = [
|
3498
3340
|
{
|
@@ -3812,14 +3654,14 @@ const columnParallelAdvancedPipeline = [
|
|
3812
3654
|
initAdvancedVSeed_initAdvancedVSeed,
|
3813
3655
|
autoMeasures_autoMeasures,
|
3814
3656
|
autoDimensions_autoDimensions,
|
3657
|
+
encodingForColumn,
|
3815
3658
|
pivotAdapter([
|
3816
|
-
|
3659
|
+
reshapeWithEncoding
|
3817
3660
|
], [
|
3818
|
-
|
3661
|
+
pivotReshapeWithEncoding
|
3819
3662
|
]),
|
3820
|
-
encodingXY,
|
3821
3663
|
sortXBandAxis,
|
3822
|
-
|
3664
|
+
sortLegend_sortLegend,
|
3823
3665
|
columnParallelConfig,
|
3824
3666
|
theme_theme,
|
3825
3667
|
markStyle_markStyle,
|
@@ -3830,20 +3672,19 @@ const initColumnParallel = (spec, context)=>{
|
|
3830
3672
|
...spec
|
3831
3673
|
};
|
3832
3674
|
const { advancedVSeed } = context;
|
3833
|
-
const {
|
3834
|
-
const { unfoldInfo } = datasetReshapeInfo[0];
|
3835
|
-
if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
|
3675
|
+
const { datasetReshapeInfo, dimensions } = advancedVSeed;
|
3676
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
3836
3677
|
const sameDimensionsMode = dimensions.length > 1 && dimensions.every((dim)=>dim.id === dimensions[0].id);
|
3837
3678
|
result.type = 'bar';
|
3838
3679
|
result.direction = 'vertical';
|
3839
3680
|
result.xField = sameDimensionsMode ? [
|
3840
|
-
|
3681
|
+
unfoldInfo.encodingX
|
3841
3682
|
] : [
|
3842
|
-
|
3843
|
-
unfoldInfo.
|
3683
|
+
unfoldInfo.encodingX,
|
3684
|
+
unfoldInfo.encodingDetail
|
3844
3685
|
];
|
3845
|
-
result.yField =
|
3846
|
-
result.seriesField =
|
3686
|
+
result.yField = foldInfo.measureValue;
|
3687
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
3847
3688
|
result.padding = 0;
|
3848
3689
|
result.region = [
|
3849
3690
|
{
|
@@ -3910,14 +3751,14 @@ const columnPercentAdvancedPipeline = [
|
|
3910
3751
|
initAdvancedVSeed_initAdvancedVSeed,
|
3911
3752
|
autoMeasures_autoMeasures,
|
3912
3753
|
autoDimensions_autoDimensions,
|
3754
|
+
encodingForColumn,
|
3913
3755
|
pivotAdapter([
|
3914
|
-
|
3756
|
+
reshapeWithEncoding
|
3915
3757
|
], [
|
3916
|
-
|
3758
|
+
pivotReshapeWithEncoding
|
3917
3759
|
]),
|
3918
|
-
encodingXY,
|
3919
3760
|
sortXBandAxis,
|
3920
|
-
|
3761
|
+
sortLegend_sortLegend,
|
3921
3762
|
columnPercentConfig,
|
3922
3763
|
theme_theme,
|
3923
3764
|
markStyle_markStyle,
|
@@ -3987,57 +3828,72 @@ const registerColumnPercent = ()=>{
|
|
3987
3828
|
Builder._advancedPipelineMap.columnPercent = columnPercentAdvancedPipeline;
|
3988
3829
|
Builder._specPipelineMap.columnPercent = columnPercentSpecPipeline;
|
3989
3830
|
};
|
3990
|
-
const
|
3991
|
-
const
|
3992
|
-
|
3993
|
-
|
3994
|
-
const
|
3995
|
-
if (
|
3996
|
-
|
3997
|
-
|
3998
|
-
|
3999
|
-
const
|
4000
|
-
|
4001
|
-
|
4002
|
-
];
|
4003
|
-
const x = [
|
4004
|
-
foldInfo.measureValue
|
4005
|
-
];
|
4006
|
-
const group = [
|
4007
|
-
unfoldInfo.groupId
|
4008
|
-
];
|
4009
|
-
const color = [
|
4010
|
-
foldInfo.measureName
|
3831
|
+
const encodingForBar = (advancedVSeed, context)=>{
|
3832
|
+
const { vseed } = context;
|
3833
|
+
const { dimensions } = advancedVSeed;
|
3834
|
+
if (!dimensions) return advancedVSeed;
|
3835
|
+
const encoding = vseed.encoding;
|
3836
|
+
if (encoding) {
|
3837
|
+
const y = encoding.y || [];
|
3838
|
+
const detail = encoding.detail || [];
|
3839
|
+
const color = encoding.color || [];
|
3840
|
+
const mergedDetail = [
|
3841
|
+
...color.filter((d)=>!y.includes(d)),
|
3842
|
+
...detail
|
4011
3843
|
];
|
4012
|
-
return
|
4013
|
-
...
|
4014
|
-
{
|
4015
|
-
|
4016
|
-
|
4017
|
-
group,
|
4018
|
-
color
|
3844
|
+
return {
|
3845
|
+
...advancedVSeed,
|
3846
|
+
encoding: {
|
3847
|
+
...encoding,
|
3848
|
+
detail: mergedDetail
|
4019
3849
|
}
|
4020
|
-
|
4021
|
-
}
|
3850
|
+
};
|
3851
|
+
}
|
3852
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
3853
|
+
const mergedEncoding = {
|
3854
|
+
y: dimensions.slice(0, 1).map((item)=>item.id),
|
3855
|
+
color: dimensions.slice(1).map((item)=>item.id),
|
3856
|
+
detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
3857
|
+
tooltip: dimensions.map((item)=>item.id),
|
3858
|
+
label: [],
|
3859
|
+
row: [],
|
3860
|
+
column: []
|
3861
|
+
};
|
4022
3862
|
return {
|
4023
|
-
...
|
4024
|
-
encoding
|
3863
|
+
...advancedVSeed,
|
3864
|
+
encoding: mergedEncoding
|
4025
3865
|
};
|
4026
3866
|
};
|
4027
|
-
const
|
4028
|
-
|
4029
|
-
|
4030
|
-
|
4031
|
-
|
4032
|
-
|
4033
|
-
|
4034
|
-
|
4035
|
-
|
4036
|
-
|
4037
|
-
|
4038
|
-
|
4039
|
-
|
4040
|
-
|
3867
|
+
const sortYBandAxis = (advancedVSeed, context)=>{
|
3868
|
+
const result = {
|
3869
|
+
...advancedVSeed
|
3870
|
+
};
|
3871
|
+
const { vseed } = context;
|
3872
|
+
const { sort: sortAxis } = vseed;
|
3873
|
+
const { datasetReshapeInfo, dataset } = advancedVSeed;
|
3874
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
3875
|
+
const yField = unfoldInfo?.encodingY;
|
3876
|
+
if (!sortAxis || !yField) return advancedVSeed;
|
3877
|
+
if (!result.analysis) result.analysis = {};
|
3878
|
+
if (!result.analysis.orderMapping) result.analysis.orderMapping = {};
|
3879
|
+
const axisOrderResult = calcOrder(sortAxis, yField, dataset.flat(2));
|
3880
|
+
result.analysis.orderMapping[yField] = axisOrderResult;
|
3881
|
+
return result;
|
3882
|
+
};
|
3883
|
+
const barAdvancedPipeline = [
|
3884
|
+
initAdvancedVSeed_initAdvancedVSeed,
|
3885
|
+
autoMeasures_autoMeasures,
|
3886
|
+
autoDimensions_autoDimensions,
|
3887
|
+
encodingForBar,
|
3888
|
+
pivotAdapter([
|
3889
|
+
reshapeWithEncoding
|
3890
|
+
], [
|
3891
|
+
pivotReshapeWithEncoding
|
3892
|
+
]),
|
3893
|
+
sortYBandAxis,
|
3894
|
+
sortLegend_sortLegend,
|
3895
|
+
barConfig,
|
3896
|
+
theme_theme,
|
4041
3897
|
markStyle_markStyle,
|
4042
3898
|
annotation_annotation
|
4043
3899
|
];
|
@@ -4046,13 +3902,13 @@ const initBar = (spec, context)=>{
|
|
4046
3902
|
...spec
|
4047
3903
|
};
|
4048
3904
|
const { advancedVSeed } = context;
|
4049
|
-
const {
|
4050
|
-
|
3905
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
3906
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
4051
3907
|
result.type = 'bar';
|
4052
3908
|
result.direction = 'horizontal';
|
4053
|
-
result.yField =
|
4054
|
-
result.xField =
|
4055
|
-
result.seriesField =
|
3909
|
+
result.yField = unfoldInfo.encodingY;
|
3910
|
+
result.xField = foldInfo.measureValue;
|
3911
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
4056
3912
|
result.padding = 0;
|
4057
3913
|
result.region = [
|
4058
3914
|
{
|
@@ -4064,11 +3920,12 @@ const initBar = (spec, context)=>{
|
|
4064
3920
|
};
|
4065
3921
|
const datasetYX = (spec, context)=>{
|
4066
3922
|
const { advancedVSeed, vseed } = context;
|
4067
|
-
const {
|
3923
|
+
const { analysis, datasetReshapeInfo } = advancedVSeed;
|
3924
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
4068
3925
|
const orderMapping = analysis?.orderMapping || {};
|
4069
|
-
const angle =
|
4070
|
-
const y =
|
4071
|
-
const
|
3926
|
+
const angle = unfoldInfo.encodingAngle;
|
3927
|
+
const y = unfoldInfo.encodingY;
|
3928
|
+
const colorId = unfoldInfo.encodingColorId;
|
4072
3929
|
const id = datasetReshapeInfo[0].id;
|
4073
3930
|
const fields = {};
|
4074
3931
|
if (angle) fields[angle] = {
|
@@ -4085,14 +3942,14 @@ const datasetYX = (spec, context)=>{
|
|
4085
3942
|
sortIndex: 0
|
4086
3943
|
};
|
4087
3944
|
}
|
4088
|
-
if (
|
4089
|
-
const order = orderMapping[
|
4090
|
-
if (order) fields[
|
3945
|
+
if (colorId) {
|
3946
|
+
const order = orderMapping[colorId];
|
3947
|
+
if (order) fields[colorId] = {
|
4091
3948
|
sortIndex: 0,
|
4092
3949
|
domain: order,
|
4093
3950
|
lockStatisticsByDomain: true
|
4094
3951
|
};
|
4095
|
-
else fields[
|
3952
|
+
else fields[colorId] = {
|
4096
3953
|
sortIndex: 0
|
4097
3954
|
};
|
4098
3955
|
}
|
@@ -4380,14 +4237,14 @@ const barParallelAdvancedPipeline = [
|
|
4380
4237
|
initAdvancedVSeed_initAdvancedVSeed,
|
4381
4238
|
autoMeasures_autoMeasures,
|
4382
4239
|
autoDimensions_autoDimensions,
|
4240
|
+
encodingForBar,
|
4383
4241
|
pivotAdapter([
|
4384
|
-
|
4242
|
+
reshapeWithEncoding
|
4385
4243
|
], [
|
4386
|
-
|
4244
|
+
pivotReshapeWithEncoding
|
4387
4245
|
]),
|
4388
|
-
encodingYX,
|
4389
4246
|
sortYBandAxis,
|
4390
|
-
|
4247
|
+
sortLegend_sortLegend,
|
4391
4248
|
barParallelConfig,
|
4392
4249
|
theme_theme,
|
4393
4250
|
markStyle_markStyle,
|
@@ -4398,20 +4255,19 @@ const initBarParallel = (spec, context)=>{
|
|
4398
4255
|
...spec
|
4399
4256
|
};
|
4400
4257
|
const { advancedVSeed } = context;
|
4401
|
-
const {
|
4402
|
-
const { unfoldInfo } = datasetReshapeInfo[0];
|
4403
|
-
if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
|
4258
|
+
const { datasetReshapeInfo, dimensions } = advancedVSeed;
|
4259
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
4404
4260
|
const sameDimensionsMode = dimensions.length > 1 && dimensions.every((dim)=>dim.id === dimensions[0].id);
|
4405
4261
|
result.type = 'bar';
|
4406
4262
|
result.direction = 'horizontal';
|
4407
4263
|
result.yField = sameDimensionsMode ? [
|
4408
|
-
|
4264
|
+
unfoldInfo.encodingY
|
4409
4265
|
] : [
|
4410
|
-
|
4411
|
-
unfoldInfo.
|
4266
|
+
unfoldInfo.encodingY,
|
4267
|
+
unfoldInfo.encodingDetail
|
4412
4268
|
];
|
4413
|
-
result.xField =
|
4414
|
-
result.seriesField =
|
4269
|
+
result.xField = foldInfo.measureValue;
|
4270
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
4415
4271
|
result.padding = 0;
|
4416
4272
|
result.region = [
|
4417
4273
|
{
|
@@ -4477,14 +4333,14 @@ const barPercentAdvancedPipeline = [
|
|
4477
4333
|
initAdvancedVSeed_initAdvancedVSeed,
|
4478
4334
|
autoMeasures_autoMeasures,
|
4479
4335
|
autoDimensions_autoDimensions,
|
4336
|
+
encodingForBar,
|
4480
4337
|
pivotAdapter([
|
4481
|
-
|
4338
|
+
reshapeWithEncoding
|
4482
4339
|
], [
|
4483
|
-
|
4340
|
+
pivotReshapeWithEncoding
|
4484
4341
|
]),
|
4485
|
-
encodingYX,
|
4486
4342
|
sortYBandAxis,
|
4487
|
-
|
4343
|
+
sortLegend_sortLegend,
|
4488
4344
|
barPercentConfig,
|
4489
4345
|
theme_theme,
|
4490
4346
|
markStyle_markStyle,
|
@@ -4548,14 +4404,14 @@ const areaAdvancedPipeline = [
|
|
4548
4404
|
initAdvancedVSeed_initAdvancedVSeed,
|
4549
4405
|
autoMeasures_autoMeasures,
|
4550
4406
|
autoDimensions_autoDimensions,
|
4407
|
+
encodingForColumn,
|
4551
4408
|
pivotAdapter([
|
4552
|
-
|
4409
|
+
reshapeWithEncoding
|
4553
4410
|
], [
|
4554
|
-
|
4411
|
+
pivotReshapeWithEncoding
|
4555
4412
|
]),
|
4556
|
-
encodingXY,
|
4557
4413
|
sortXBandAxis,
|
4558
|
-
|
4414
|
+
sortLegend_sortLegend,
|
4559
4415
|
areaConfig,
|
4560
4416
|
theme_theme,
|
4561
4417
|
markStyle_markStyle,
|
@@ -4566,13 +4422,13 @@ const initArea = (spec, context)=>{
|
|
4566
4422
|
...spec
|
4567
4423
|
};
|
4568
4424
|
const { advancedVSeed } = context;
|
4569
|
-
const {
|
4570
|
-
|
4425
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
4426
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
4571
4427
|
result.type = 'area';
|
4572
4428
|
result.direction = 'vertical';
|
4573
|
-
result.
|
4574
|
-
result.
|
4575
|
-
result.seriesField =
|
4429
|
+
result.yField = foldInfo.measureValue;
|
4430
|
+
result.xField = unfoldInfo.encodingX;
|
4431
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
4576
4432
|
result.padding = 0;
|
4577
4433
|
result.region = [
|
4578
4434
|
{
|
@@ -4584,8 +4440,9 @@ const initArea = (spec, context)=>{
|
|
4584
4440
|
};
|
4585
4441
|
const areaStyle_areaStyle = (spec, context)=>{
|
4586
4442
|
const { advancedVSeed } = context;
|
4587
|
-
const { markStyle,
|
4443
|
+
const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed;
|
4588
4444
|
const { areaStyle } = markStyle;
|
4445
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
4589
4446
|
if (!areaStyle) return {
|
4590
4447
|
...spec,
|
4591
4448
|
area: {
|
@@ -4598,7 +4455,7 @@ const areaStyle_areaStyle = (spec, context)=>{
|
|
4598
4455
|
const areaStyles = Array.isArray(areaStyle) ? areaStyle : [
|
4599
4456
|
areaStyle
|
4600
4457
|
];
|
4601
|
-
const group =
|
4458
|
+
const group = unfoldInfo.encodingColorId;
|
4602
4459
|
const areaGroups = groupBy(dataset, (d)=>d[group ?? '']);
|
4603
4460
|
const customMap = areaStyles.reduce((result, style, index)=>{
|
4604
4461
|
const { areaColor, areaColorOpacity, areaVisible = true } = style;
|
@@ -4692,14 +4549,14 @@ const areaPercentAdvancedPipeline = [
|
|
4692
4549
|
initAdvancedVSeed_initAdvancedVSeed,
|
4693
4550
|
autoMeasures_autoMeasures,
|
4694
4551
|
autoDimensions_autoDimensions,
|
4552
|
+
encodingForColumn,
|
4695
4553
|
pivotAdapter([
|
4696
|
-
|
4554
|
+
reshapeWithEncoding
|
4697
4555
|
], [
|
4698
|
-
|
4556
|
+
pivotReshapeWithEncoding
|
4699
4557
|
]),
|
4700
|
-
encodingXY,
|
4701
4558
|
sortXBandAxis,
|
4702
|
-
|
4559
|
+
sortLegend_sortLegend,
|
4703
4560
|
areaPercentConfig,
|
4704
4561
|
theme_theme,
|
4705
4562
|
markStyle_markStyle,
|
@@ -4764,16 +4621,20 @@ const registerAreaPercent = ()=>{
|
|
4764
4621
|
Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
|
4765
4622
|
Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
|
4766
4623
|
};
|
4767
|
-
const
|
4624
|
+
const autoScatterMeasures = (advancedVSeed, context)=>{
|
4768
4625
|
const result = {
|
4769
4626
|
...advancedVSeed
|
4770
4627
|
};
|
4771
4628
|
const { vseed } = context;
|
4772
|
-
const {
|
4629
|
+
const { dataset, scatterMeasures, measures } = vseed;
|
4773
4630
|
if (!dataset) throw new Error('dataset is required');
|
4774
4631
|
if (0 === dataset.length) return result;
|
4775
|
-
if (
|
4776
|
-
result.measures =
|
4632
|
+
if (scatterMeasures) {
|
4633
|
+
result.measures = scatterMeasuresToMeasureTree(scatterMeasures);
|
4634
|
+
return result;
|
4635
|
+
}
|
4636
|
+
if (measures && measureDepth(measures) > 1) {
|
4637
|
+
result.measures = measures;
|
4777
4638
|
return result;
|
4778
4639
|
}
|
4779
4640
|
const top100dataset = dataset.slice(0, 100);
|
@@ -4781,7 +4642,7 @@ const autoMeasuresBy2M1Group = (advancedVSeed, context)=>{
|
|
4781
4642
|
...prev,
|
4782
4643
|
...cur
|
4783
4644
|
}), {});
|
4784
|
-
const newMeasures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
|
4645
|
+
const newMeasures = measures || Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
|
4785
4646
|
'',
|
4786
4647
|
null,
|
4787
4648
|
void 0
|
@@ -4789,689 +4650,273 @@ const autoMeasuresBy2M1Group = (advancedVSeed, context)=>{
|
|
4789
4650
|
id: measure,
|
4790
4651
|
alias: measure
|
4791
4652
|
}));
|
4792
|
-
result.measures =
|
4653
|
+
if (0 === newMeasures.length) result.measures = [];
|
4654
|
+
else if (1 === newMeasures.length) result.measures = [
|
4655
|
+
{
|
4656
|
+
id: 'primary',
|
4657
|
+
alias: 'primary',
|
4658
|
+
children: newMeasures
|
4659
|
+
}
|
4660
|
+
];
|
4661
|
+
else if (newMeasures.length > 1) result.measures = [
|
4662
|
+
{
|
4663
|
+
id: 'primary',
|
4664
|
+
alias: 'primary',
|
4665
|
+
children: newMeasures.slice(0, 1)
|
4666
|
+
},
|
4667
|
+
{
|
4668
|
+
id: 'secondary',
|
4669
|
+
alias: 'secondary',
|
4670
|
+
children: newMeasures.slice(1)
|
4671
|
+
}
|
4672
|
+
];
|
4793
4673
|
return result;
|
4794
4674
|
};
|
4795
|
-
const
|
4796
|
-
const
|
4797
|
-
|
4798
|
-
|
4799
|
-
|
4800
|
-
|
4801
|
-
|
4802
|
-
|
4803
|
-
|
4804
|
-
|
4805
|
-
|
4806
|
-
|
4807
|
-
|
4808
|
-
|
4809
|
-
|
4810
|
-
|
4675
|
+
const scatterMeasuresToMeasureTree = (scatterMeasures)=>{
|
4676
|
+
const measureTree = scatterMeasures.map((item, index)=>{
|
4677
|
+
const { xMeasures, yMeasures } = item;
|
4678
|
+
const groupChildren = [];
|
4679
|
+
let id = '';
|
4680
|
+
if (xMeasures) {
|
4681
|
+
const arrXMeasures = Array.isArray(xMeasures) ? xMeasures : [
|
4682
|
+
xMeasures
|
4683
|
+
];
|
4684
|
+
const alias = arrXMeasures.map((item)=>item.alias || item.id).toString();
|
4685
|
+
id += alias;
|
4686
|
+
groupChildren.push({
|
4687
|
+
id: `${index}-x`,
|
4688
|
+
alias: arrXMeasures.map((item)=>item.alias || item.id).toString(),
|
4689
|
+
children: arrXMeasures
|
4690
|
+
});
|
4691
|
+
}
|
4692
|
+
if (yMeasures) {
|
4693
|
+
const arrYMeasures = Array.isArray(yMeasures) ? yMeasures : [
|
4694
|
+
yMeasures
|
4695
|
+
];
|
4696
|
+
const alias = arrYMeasures.map((item)=>item.alias || item.id).toString();
|
4697
|
+
id += alias;
|
4698
|
+
groupChildren.push({
|
4699
|
+
id: `${index}-y`,
|
4700
|
+
alias: arrYMeasures.map((item)=>item.alias || item.id).toString(),
|
4701
|
+
children: arrYMeasures
|
4702
|
+
});
|
4703
|
+
}
|
4704
|
+
return {
|
4705
|
+
id,
|
4706
|
+
alias: id,
|
4707
|
+
children: groupChildren
|
4708
|
+
};
|
4811
4709
|
});
|
4812
|
-
|
4813
|
-
|
4814
|
-
foldInfo: {
|
4815
|
-
foldMap: {},
|
4816
|
-
measureId: '',
|
4817
|
-
measureName: '',
|
4818
|
-
measureValue: ''
|
4819
|
-
},
|
4820
|
-
unfoldInfo: {
|
4821
|
-
groupName: '',
|
4822
|
-
groupId: '',
|
4823
|
-
colorItems: [],
|
4824
|
-
colorIdMap: {}
|
4825
|
-
}
|
4710
|
+
if (1 === scatterMeasures.length) return measureTree[0].children || [];
|
4711
|
+
return measureTree;
|
4826
4712
|
};
|
4827
|
-
const
|
4828
|
-
const {
|
4829
|
-
|
4830
|
-
if (
|
4831
|
-
|
4713
|
+
const encodingForScatter = (advancedVSeed, context)=>{
|
4714
|
+
const { vseed } = context;
|
4715
|
+
const { dimensions } = advancedVSeed;
|
4716
|
+
if (!dimensions) return advancedVSeed;
|
4717
|
+
const encoding = vseed.encoding;
|
4718
|
+
if (encoding) {
|
4719
|
+
const detail = encoding.detail || [];
|
4720
|
+
const color = encoding.color || [];
|
4721
|
+
const mergedDetail = unique([
|
4722
|
+
...color,
|
4723
|
+
...detail
|
4724
|
+
]);
|
4832
4725
|
return {
|
4833
|
-
|
4834
|
-
|
4835
|
-
|
4836
|
-
|
4837
|
-
measureName: foldMeasureName,
|
4838
|
-
measureValue: foldMeasureValue
|
4839
|
-
},
|
4840
|
-
unfoldInfo
|
4841
|
-
};
|
4842
|
-
}
|
4843
|
-
{
|
4844
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(dataset, [
|
4845
|
-
...dimensions
|
4846
|
-
], [
|
4847
|
-
{
|
4848
|
-
id: foldMeasureValue,
|
4849
|
-
alias: i18n`指标值`
|
4726
|
+
...advancedVSeed,
|
4727
|
+
encoding: {
|
4728
|
+
...encoding,
|
4729
|
+
detail: mergedDetail
|
4850
4730
|
}
|
4851
|
-
], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
4852
|
-
return {
|
4853
|
-
dataset: finalDataset,
|
4854
|
-
foldInfo: {
|
4855
|
-
foldMap: {},
|
4856
|
-
measureId: foldMeasureId,
|
4857
|
-
measureName: foldMeasureName,
|
4858
|
-
measureValue: foldMeasureValue
|
4859
|
-
},
|
4860
|
-
unfoldInfo
|
4861
4731
|
};
|
4862
4732
|
}
|
4733
|
+
const dimensionsWithoutMeasureName = dimensions.filter((item)=>item.id !== MeasureName);
|
4734
|
+
const mergedEncoding = {
|
4735
|
+
color: dimensions.slice(0).map((item)=>item.id),
|
4736
|
+
detail: dimensionsWithoutMeasureName.slice(0).map((item)=>item.id),
|
4737
|
+
tooltip: dimensionsWithoutMeasureName.map((item)=>item.id),
|
4738
|
+
label: [],
|
4739
|
+
row: [],
|
4740
|
+
column: []
|
4741
|
+
};
|
4742
|
+
return {
|
4743
|
+
...advancedVSeed,
|
4744
|
+
encoding: mergedEncoding
|
4745
|
+
};
|
4863
4746
|
};
|
4864
|
-
const
|
4747
|
+
const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
4865
4748
|
const result = {
|
4866
4749
|
...advancedVSeed
|
4867
4750
|
};
|
4868
4751
|
const { vseed } = context;
|
4869
4752
|
const { dataset } = vseed;
|
4870
|
-
const { dimensions, measures } = advancedVSeed;
|
4871
|
-
if (!measures || !dimensions || !dataset) return result;
|
4753
|
+
const { dimensions, measures, encoding, chartType } = advancedVSeed;
|
4754
|
+
if (!measures || !dimensions || !dataset || !encoding) return result;
|
4872
4755
|
if (0 === measures.length) throw new Error('measures can not be empty');
|
4873
|
-
|
4756
|
+
if (measures.length > 2) throw new Error('measures can not be more than 2');
|
4757
|
+
const foldInfoList = [];
|
4758
|
+
const unfoldInfoList = [];
|
4759
|
+
const datasets = [];
|
4760
|
+
const xMeasures = measures[0];
|
4761
|
+
const yMeasures = measures[1] || xMeasures;
|
4762
|
+
if (xMeasures && xMeasures.children) {
|
4763
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
|
4764
|
+
foldMeasureValue: FoldXMeasureValue,
|
4765
|
+
colorItemAsId: true
|
4766
|
+
});
|
4767
|
+
datasets.push(newDataset);
|
4768
|
+
foldInfoList.push(foldInfo);
|
4769
|
+
unfoldInfoList.push(unfoldInfo);
|
4770
|
+
}
|
4771
|
+
if (yMeasures && yMeasures.children) {
|
4772
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(datasets[0], dimensions, yMeasures.children, encoding, {
|
4773
|
+
foldMeasureValue: FoldYMeasureValue,
|
4774
|
+
colorItemAsId: true
|
4775
|
+
});
|
4776
|
+
datasets[0] = newDataset;
|
4777
|
+
foldInfoList.push(foldInfo);
|
4778
|
+
unfoldInfoList.push(unfoldInfo);
|
4779
|
+
}
|
4780
|
+
const unfoldInfo = {
|
4781
|
+
...unfoldInfoList[0],
|
4782
|
+
colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
|
4783
|
+
colorIdMap: unfoldInfoList.reduce((prev, cur)=>({
|
4784
|
+
...prev,
|
4785
|
+
...cur.colorIdMap
|
4786
|
+
}), {})
|
4787
|
+
};
|
4874
4788
|
return {
|
4875
4789
|
...result,
|
4876
|
-
dataset:
|
4790
|
+
dataset: datasets[0],
|
4877
4791
|
datasetReshapeInfo: [
|
4878
4792
|
{
|
4879
|
-
id:
|
4793
|
+
id: String(chartType),
|
4880
4794
|
index: 0,
|
4881
|
-
foldInfo,
|
4882
|
-
|
4795
|
+
foldInfo: foldInfoList[0],
|
4796
|
+
foldInfoList: foldInfoList,
|
4797
|
+
unfoldInfo: unfoldInfo
|
4883
4798
|
}
|
4884
4799
|
]
|
4885
4800
|
};
|
4886
4801
|
};
|
4887
|
-
const
|
4802
|
+
const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
4888
4803
|
const result = {
|
4889
4804
|
...advancedVSeed
|
4890
4805
|
};
|
4891
4806
|
const { vseed } = context;
|
4892
4807
|
const { dataset } = vseed;
|
4893
|
-
const { measures } = advancedVSeed;
|
4894
|
-
|
4895
|
-
if (!measures || !dimensions) return result;
|
4808
|
+
const { dimensions, measures, encoding, chartType } = advancedVSeed;
|
4809
|
+
if (!measures || !dimensions || !dataset || !encoding) return result;
|
4896
4810
|
const measureGroups = [];
|
4897
|
-
|
4898
|
-
|
4811
|
+
const depth = measureDepth(measures);
|
4812
|
+
if (3 === depth) measures.forEach((measure)=>{
|
4813
|
+
measureGroups.push(measure.children);
|
4899
4814
|
});
|
4900
|
-
|
4815
|
+
else if (2 === depth) measureGroups.push(measures);
|
4816
|
+
const datasetList = [];
|
4901
4817
|
const datasetReshapeInfo = [];
|
4902
|
-
measureGroups.forEach((
|
4903
|
-
|
4904
|
-
if (
|
4905
|
-
const
|
4906
|
-
const
|
4907
|
-
const
|
4908
|
-
|
4909
|
-
|
4910
|
-
|
4911
|
-
|
4912
|
-
|
4818
|
+
measureGroups.forEach((measures, index)=>{
|
4819
|
+
if (0 === measures.length) throw new Error('measures can not be empty');
|
4820
|
+
if (measures.length > 2) throw new Error('measures can not be more than 2');
|
4821
|
+
const foldInfoList = [];
|
4822
|
+
const unfoldInfoList = [];
|
4823
|
+
const datasets = [];
|
4824
|
+
const xMeasures = measures[0];
|
4825
|
+
const yMeasures = measures[1] || xMeasures;
|
4826
|
+
if (xMeasures && xMeasures.children) {
|
4827
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
|
4828
|
+
foldMeasureValue: `${FoldXMeasureValue}${index}`,
|
4829
|
+
colorItemAsId: true
|
4830
|
+
});
|
4831
|
+
datasets.push(newDataset);
|
4832
|
+
foldInfoList.push(foldInfo);
|
4833
|
+
unfoldInfoList.push(unfoldInfo);
|
4834
|
+
}
|
4835
|
+
if (yMeasures && yMeasures.children) {
|
4836
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, yMeasures.children, encoding, {
|
4837
|
+
foldMeasureValue: `${FoldYMeasureValue}${index}`,
|
4838
|
+
colorItemAsId: true
|
4839
|
+
});
|
4840
|
+
datasets.push(newDataset);
|
4841
|
+
foldInfoList.push(foldInfo);
|
4842
|
+
unfoldInfoList.push(unfoldInfo);
|
4843
|
+
}
|
4844
|
+
const unfoldInfo = {
|
4845
|
+
...unfoldInfoList[0],
|
4846
|
+
colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
|
4847
|
+
colorIdMap: unfoldInfoList.reduce((prev, cur)=>({
|
4848
|
+
...prev,
|
4849
|
+
...cur.colorIdMap
|
4850
|
+
}), {})
|
4851
|
+
};
|
4913
4852
|
const reshapeInfo = {
|
4914
|
-
id:
|
4853
|
+
id: `${chartType}-${index}`,
|
4915
4854
|
index,
|
4916
|
-
foldInfo,
|
4917
|
-
|
4855
|
+
foldInfo: foldInfoList[0],
|
4856
|
+
foldInfoList: foldInfoList,
|
4857
|
+
unfoldInfo: unfoldInfo
|
4918
4858
|
};
|
4919
|
-
newDatasets.push(newSubDataset);
|
4920
4859
|
datasetReshapeInfo.push(reshapeInfo);
|
4860
|
+
datasetList.push(datasets[0].map((d, index)=>({
|
4861
|
+
...d,
|
4862
|
+
...datasets[1]?.[index] || {}
|
4863
|
+
})));
|
4921
4864
|
});
|
4922
4865
|
return {
|
4923
4866
|
...result,
|
4924
|
-
dataset:
|
4867
|
+
dataset: datasetList,
|
4925
4868
|
datasetReshapeInfo: datasetReshapeInfo
|
4926
4869
|
};
|
4927
4870
|
};
|
4928
|
-
const
|
4929
|
-
const result = {
|
4930
|
-
...advancedVSeed
|
4931
|
-
};
|
4932
|
-
const { datasetReshapeInfo, measures } = advancedVSeed;
|
4933
|
-
if (!datasetReshapeInfo || !measures) return result;
|
4934
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur, index)=>{
|
4935
|
-
const measure = measures[index];
|
4936
|
-
if ('children' in measure) {
|
4937
|
-
const m1 = measure.children?.[0];
|
4938
|
-
const m2 = measure.children?.[1] || m1;
|
4939
|
-
const { foldInfo, unfoldInfo } = cur;
|
4940
|
-
const x = [
|
4941
|
-
unfoldInfo.groupId
|
4942
|
-
];
|
4943
|
-
const y = [
|
4944
|
-
m1?.id,
|
4945
|
-
m2?.id
|
4946
|
-
];
|
4947
|
-
const group = [
|
4948
|
-
unfoldInfo.groupId
|
4949
|
-
];
|
4950
|
-
const color = [
|
4951
|
-
foldInfo.measureName
|
4952
|
-
];
|
4953
|
-
return [
|
4954
|
-
...prev,
|
4955
|
-
{
|
4956
|
-
x,
|
4957
|
-
y,
|
4958
|
-
group,
|
4959
|
-
color
|
4960
|
-
}
|
4961
|
-
];
|
4962
|
-
}
|
4963
|
-
{
|
4964
|
-
const m1 = measures[index];
|
4965
|
-
const m2 = measures[index + 1] || m1;
|
4966
|
-
const { foldInfo, unfoldInfo } = cur;
|
4967
|
-
const x = [
|
4968
|
-
unfoldInfo.groupId
|
4969
|
-
];
|
4970
|
-
const y = [
|
4971
|
-
m1.id,
|
4972
|
-
m2.id
|
4973
|
-
];
|
4974
|
-
const group = [
|
4975
|
-
unfoldInfo.groupId
|
4976
|
-
];
|
4977
|
-
const color = [
|
4978
|
-
foldInfo.measureName
|
4979
|
-
];
|
4980
|
-
return [
|
4981
|
-
...prev,
|
4982
|
-
{
|
4983
|
-
x,
|
4984
|
-
y,
|
4985
|
-
group,
|
4986
|
-
color
|
4987
|
-
}
|
4988
|
-
];
|
4989
|
-
}
|
4990
|
-
}, []);
|
4991
|
-
return {
|
4992
|
-
...result,
|
4993
|
-
encoding
|
4994
|
-
};
|
4995
|
-
};
|
4996
|
-
const areaRangeAdvancedPipeline = [
|
4871
|
+
const scatterAdvancedPipeline = [
|
4997
4872
|
initAdvancedVSeed_initAdvancedVSeed,
|
4998
|
-
|
4873
|
+
autoScatterMeasures,
|
4999
4874
|
autoDimensions_autoDimensions,
|
4875
|
+
encodingForScatter,
|
5000
4876
|
pivotAdapter([
|
5001
|
-
|
4877
|
+
reshapeWithScatterEncoding
|
5002
4878
|
], [
|
5003
|
-
|
4879
|
+
pivotReshapeWithScatterEncoding
|
5004
4880
|
]),
|
5005
|
-
|
5006
|
-
sortXBandAxis,
|
5007
|
-
areaConfig,
|
4881
|
+
scatterConfig,
|
5008
4882
|
theme_theme,
|
5009
4883
|
markStyle_markStyle,
|
5010
4884
|
annotation_annotation
|
5011
4885
|
];
|
5012
|
-
const
|
5013
|
-
const result = {
|
5014
|
-
type: 'common',
|
5015
|
-
padding: 0,
|
5016
|
-
region: [
|
5017
|
-
{
|
5018
|
-
clip: true
|
5019
|
-
}
|
5020
|
-
]
|
5021
|
-
};
|
5022
|
-
return (_, context)=>{
|
5023
|
-
result.series = args.map((pipeline)=>execPipeline(pipeline, context, {}));
|
5024
|
-
return result;
|
5025
|
-
};
|
5026
|
-
};
|
5027
|
-
const seriesDualAxis = (...args)=>{
|
5028
|
-
const result = {
|
5029
|
-
type: 'common',
|
5030
|
-
padding: 0,
|
5031
|
-
region: [
|
5032
|
-
{
|
5033
|
-
clip: true
|
5034
|
-
}
|
5035
|
-
]
|
5036
|
-
};
|
5037
|
-
const createDualContext = (context, index)=>{
|
5038
|
-
const { advancedVSeed } = context;
|
5039
|
-
const dataset = advancedVSeed.dataset[index];
|
5040
|
-
return {
|
5041
|
-
...context,
|
5042
|
-
advancedVSeed: {
|
5043
|
-
...advancedVSeed,
|
5044
|
-
dataset: dataset
|
5045
|
-
}
|
5046
|
-
};
|
5047
|
-
};
|
5048
|
-
return (_, context)=>{
|
5049
|
-
result.series = args.map((pipeline, index)=>{
|
5050
|
-
const seriesContext = createDualContext(context, index);
|
5051
|
-
return execPipeline(pipeline, seriesContext, {});
|
5052
|
-
});
|
5053
|
-
return result;
|
5054
|
-
};
|
5055
|
-
};
|
5056
|
-
const initAreaRange = (spec, context)=>{
|
4886
|
+
const initScatter = (spec, context)=>{
|
5057
4887
|
const result = {
|
5058
4888
|
...spec
|
5059
4889
|
};
|
5060
4890
|
const { advancedVSeed } = context;
|
5061
|
-
const {
|
5062
|
-
|
5063
|
-
|
5064
|
-
result.type = 'rangeArea';
|
4891
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
4892
|
+
const { unfoldInfo, foldInfoList } = datasetReshapeInfo[0];
|
4893
|
+
result.type = 'scatter';
|
5065
4894
|
result.direction = 'vertical';
|
5066
|
-
result.
|
5067
|
-
result.
|
5068
|
-
result.
|
5069
|
-
|
5070
|
-
|
4895
|
+
result.xField = foldInfoList?.[0].measureValue;
|
4896
|
+
if (foldInfoList?.[1]) result.yField = foldInfoList[1].measureValue;
|
4897
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
4898
|
+
result.padding = 0;
|
4899
|
+
result.region = [
|
4900
|
+
{
|
4901
|
+
clip: true
|
4902
|
+
}
|
5071
4903
|
];
|
5072
4904
|
result.animation = true;
|
5073
|
-
result.area = {
|
5074
|
-
style: {
|
5075
|
-
fill: color.colorScheme?.[0]
|
5076
|
-
}
|
5077
|
-
};
|
5078
4905
|
return result;
|
5079
4906
|
};
|
5080
|
-
const
|
5081
|
-
const
|
5082
|
-
|
5083
|
-
|
5084
|
-
const
|
5085
|
-
const { encoding } = advancedVSeed;
|
5086
|
-
if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
|
5087
|
-
const { color } = advancedVSeed.config.areaRange;
|
5088
|
-
result.type = 'line';
|
5089
|
-
result.direction = 'vertical';
|
5090
|
-
result.stack = false;
|
5091
|
-
result.xField = encoding[0].x[0];
|
5092
|
-
result.yField = [
|
5093
|
-
encoding[0].y[0]
|
5094
|
-
];
|
5095
|
-
result.animation = true;
|
5096
|
-
result.line = {
|
5097
|
-
style: {
|
5098
|
-
stroke: color.colorScheme?.[0]
|
5099
|
-
}
|
5100
|
-
};
|
5101
|
-
result.point = {
|
5102
|
-
style: {
|
5103
|
-
visible: false,
|
5104
|
-
fill: color.colorScheme?.[0]
|
5105
|
-
}
|
5106
|
-
};
|
5107
|
-
return result;
|
5108
|
-
};
|
5109
|
-
const initAreaRangeLine2 = (spec, context)=>{
|
5110
|
-
const result = {
|
5111
|
-
...spec
|
5112
|
-
};
|
5113
|
-
const { advancedVSeed } = context;
|
5114
|
-
const { encoding } = advancedVSeed;
|
5115
|
-
if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
|
5116
|
-
const { color } = advancedVSeed.config.areaRange;
|
5117
|
-
result.type = 'line';
|
5118
|
-
result.direction = 'vertical';
|
5119
|
-
result.stack = false;
|
5120
|
-
result.xField = encoding[0].x[0];
|
5121
|
-
result.yField = [
|
5122
|
-
encoding[0].y[1]
|
5123
|
-
];
|
5124
|
-
result.animation = true;
|
5125
|
-
result.line = {
|
5126
|
-
style: {
|
5127
|
-
stroke: color.colorScheme?.[0]
|
5128
|
-
}
|
5129
|
-
};
|
5130
|
-
result.point = {
|
5131
|
-
style: {
|
5132
|
-
visible: false,
|
5133
|
-
fill: color.colorScheme?.[0]
|
5134
|
-
}
|
5135
|
-
};
|
5136
|
-
return result;
|
5137
|
-
};
|
5138
|
-
const tooltipDisable = (spec)=>{
|
5139
|
-
const result = {
|
5140
|
-
...spec
|
5141
|
-
};
|
5142
|
-
result.tooltip = {
|
5143
|
-
visible: false
|
5144
|
-
};
|
5145
|
-
return result;
|
5146
|
-
};
|
5147
|
-
const tooltipAreaRange = (spec, context)=>{
|
5148
|
-
const result = {
|
5149
|
-
...spec
|
5150
|
-
};
|
5151
|
-
const { advancedVSeed } = context;
|
5152
|
-
const { measures, datasetReshapeInfo, chartType, locale, encoding } = advancedVSeed;
|
5153
|
-
const baseConfig = advancedVSeed.config[chartType];
|
5154
|
-
const { tooltip = {
|
5155
|
-
enable: true
|
5156
|
-
} } = baseConfig;
|
5157
|
-
const { enable } = tooltip;
|
5158
|
-
const { groupName } = datasetReshapeInfo[0].unfoldInfo;
|
5159
|
-
const y = encoding[0]?.y || [];
|
5160
|
-
result.tooltip = {
|
5161
|
-
visible: enable,
|
5162
|
-
dimension: {
|
5163
|
-
content: [
|
5164
|
-
{
|
5165
|
-
visible: true,
|
5166
|
-
key: (datum)=>datum && datum[groupName] || '',
|
5167
|
-
value: (datum)=>{
|
5168
|
-
if (!datum) return '';
|
5169
|
-
const text = y.map((id)=>{
|
5170
|
-
const value = datum[id];
|
5171
|
-
const measure = findMeasureById(measures, id);
|
5172
|
-
if (!measure) return String(value);
|
5173
|
-
const { format = {}, autoFormat = true } = measure;
|
5174
|
-
if (!isEmpty(format)) {
|
5175
|
-
const formatter = createFormatter(format);
|
5176
|
-
return formatter(value);
|
5177
|
-
}
|
5178
|
-
if (autoFormat) return autoFormatter(value, locale);
|
5179
|
-
return String(value);
|
5180
|
-
});
|
5181
|
-
return text.join(' ~ ');
|
5182
|
-
},
|
5183
|
-
shapeType: 'rectRound'
|
5184
|
-
},
|
5185
|
-
...y.map((id)=>{
|
5186
|
-
const measure = findMeasureById(measures, id);
|
5187
|
-
return {
|
5188
|
-
visible: true,
|
5189
|
-
key: measure?.alias || id,
|
5190
|
-
value: (datum)=>{
|
5191
|
-
if (!datum) return '';
|
5192
|
-
const value = datum[id];
|
5193
|
-
const measure = findMeasureById(measures, id);
|
5194
|
-
if (!measure) return String(value);
|
5195
|
-
const { format = {}, autoFormat = true } = measure;
|
5196
|
-
if (!isEmpty(format)) {
|
5197
|
-
const formatter = createFormatter(format);
|
5198
|
-
return formatter(value);
|
5199
|
-
}
|
5200
|
-
if (autoFormat) return autoFormatter(value, locale);
|
5201
|
-
return String(value);
|
5202
|
-
},
|
5203
|
-
shapeType: 'rectRound'
|
5204
|
-
};
|
5205
|
-
})
|
5206
|
-
]
|
5207
|
-
}
|
5208
|
-
};
|
5209
|
-
return result;
|
5210
|
-
};
|
5211
|
-
const areaRange = [
|
5212
|
-
series([
|
5213
|
-
initAreaRange,
|
5214
|
-
areaStyle_areaStyle
|
5215
|
-
], [
|
5216
|
-
initAreaRangeLine1,
|
5217
|
-
lineStyle_lineStyle,
|
5218
|
-
pointStyle_pointStyle,
|
5219
|
-
pointStateDimensionHover,
|
5220
|
-
tooltipDisable
|
5221
|
-
], [
|
5222
|
-
initAreaRangeLine2,
|
5223
|
-
lineStyle_lineStyle,
|
5224
|
-
pointStyle_pointStyle,
|
5225
|
-
pointStateDimensionHover,
|
5226
|
-
tooltipDisable
|
5227
|
-
]),
|
5228
|
-
datasetXY,
|
5229
|
-
progressive,
|
5230
|
-
background_backgroundColor,
|
5231
|
-
xBand,
|
5232
|
-
yLinear,
|
5233
|
-
label_label,
|
5234
|
-
tooltipAreaRange,
|
5235
|
-
verticalCrosshairLine,
|
5236
|
-
annotationPoint_annotationPoint,
|
5237
|
-
annotationVerticalLine_annotationVerticalLine,
|
5238
|
-
annotationHorizontalLine_annotationHorizontalLine,
|
5239
|
-
annotationArea_annotationArea
|
5240
|
-
];
|
5241
|
-
const pivotAreaRange = [
|
5242
|
-
initPivot,
|
5243
|
-
pivotGridStyle,
|
5244
|
-
pivotIndicators_pivotIndicatorsAsRow,
|
5245
|
-
datasetPivot,
|
5246
|
-
pivotIndicators_pivotIndicators([
|
5247
|
-
series([
|
5248
|
-
initAreaRange,
|
5249
|
-
areaStyle_areaStyle
|
5250
|
-
], [
|
5251
|
-
initAreaRangeLine1,
|
5252
|
-
lineStyle_lineStyle,
|
5253
|
-
pointStyle_pointStyle,
|
5254
|
-
pointStateDimensionHover,
|
5255
|
-
tooltipDisable
|
5256
|
-
], [
|
5257
|
-
initAreaRangeLine2,
|
5258
|
-
lineStyle_lineStyle,
|
5259
|
-
pointStyle_pointStyle,
|
5260
|
-
pointStateDimensionHover,
|
5261
|
-
tooltipDisable
|
5262
|
-
]),
|
5263
|
-
background_backgroundColor,
|
5264
|
-
datasetXY,
|
5265
|
-
progressive,
|
5266
|
-
xBand,
|
5267
|
-
yLinear,
|
5268
|
-
label_label,
|
5269
|
-
tooltipAreaRange,
|
5270
|
-
verticalCrosshairLine,
|
5271
|
-
annotationPoint_annotationPoint,
|
5272
|
-
annotationVerticalLine_annotationVerticalLine,
|
5273
|
-
annotationHorizontalLine_annotationHorizontalLine,
|
5274
|
-
annotationArea_annotationArea
|
5275
|
-
]),
|
5276
|
-
pivotRowDimensions,
|
5277
|
-
pivotColumnDimensions
|
5278
|
-
];
|
5279
|
-
const areaRangeSpecPipeline = [
|
5280
|
-
pivotAdapter_pivotAdapter(areaRange, pivotAreaRange)
|
5281
|
-
];
|
5282
|
-
const registerAreaRange = ()=>{
|
5283
|
-
Builder._advancedPipelineMap.areaRange = areaRangeAdvancedPipeline;
|
5284
|
-
Builder._specPipelineMap.areaRange = areaRangeSpecPipeline;
|
5285
|
-
};
|
5286
|
-
const dataReshapeFor1D2M_emptyReshapeResult = {
|
5287
|
-
dataset: [],
|
5288
|
-
foldInfo: {
|
5289
|
-
foldMap: {},
|
5290
|
-
measureId: '',
|
5291
|
-
measureName: '',
|
5292
|
-
measureValue: ''
|
5293
|
-
},
|
5294
|
-
unfoldInfo: {
|
5295
|
-
groupName: '',
|
5296
|
-
groupId: '',
|
5297
|
-
colorItems: [],
|
5298
|
-
colorIdMap: {}
|
5299
|
-
}
|
5300
|
-
};
|
5301
|
-
const dataReshapeFor1D2M = (dataset, dimensions, measures, options)=>{
|
5302
|
-
const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, unfoldDimensionGroup = UnfoldDimensionGroup, unfoldDimensionGroupId = UnfoldDimensionGroupId } = options || {};
|
5303
|
-
if (0 === dimensions.length && 0 === measures.length) return dataReshapeFor1D2M_emptyReshapeResult;
|
5304
|
-
const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures.length > 1 ? measures.slice(1) : measures, foldMeasureId, foldMeasureName, foldMeasureValue);
|
5305
|
-
if (0 === dimensions.length) {
|
5306
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
|
5307
|
-
{
|
5308
|
-
id: foldMeasureValue,
|
5309
|
-
alias: i18n`指标值`,
|
5310
|
-
location: 'dimension'
|
5311
|
-
}
|
5312
|
-
], [
|
5313
|
-
{
|
5314
|
-
id: foldMeasureValue,
|
5315
|
-
alias: i18n`指标值`
|
5316
|
-
}
|
5317
|
-
], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
5318
|
-
return {
|
5319
|
-
dataset: finalDataset,
|
5320
|
-
foldInfo,
|
5321
|
-
unfoldInfo
|
5322
|
-
};
|
5323
|
-
}
|
5324
|
-
{
|
5325
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
|
5326
|
-
...dimensions
|
5327
|
-
], [
|
5328
|
-
{
|
5329
|
-
id: foldMeasureValue,
|
5330
|
-
alias: i18n`指标值`
|
5331
|
-
}
|
5332
|
-
], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
5333
|
-
return {
|
5334
|
-
dataset: finalDataset,
|
5335
|
-
foldInfo,
|
5336
|
-
unfoldInfo
|
5337
|
-
};
|
5338
|
-
}
|
5339
|
-
};
|
5340
|
-
const reshapeTo1D2M = (advancedVSeed, context)=>{
|
5341
|
-
const result = {
|
5342
|
-
...advancedVSeed
|
5343
|
-
};
|
5344
|
-
const { vseed } = context;
|
5345
|
-
const { dataset } = vseed;
|
5346
|
-
const { dimensions, measures } = advancedVSeed;
|
5347
|
-
if (!measures || !dimensions || !dataset) return result;
|
5348
|
-
if (0 === measures.length) throw new Error('measures can not be empty');
|
5349
|
-
const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D2M(dataset, dimensions, measures);
|
5350
|
-
return {
|
5351
|
-
...result,
|
5352
|
-
dataset: newDatasets,
|
5353
|
-
datasetReshapeInfo: [
|
5354
|
-
{
|
5355
|
-
id: '1D2M',
|
5356
|
-
index: 0,
|
5357
|
-
foldInfo,
|
5358
|
-
unfoldInfo
|
5359
|
-
}
|
5360
|
-
]
|
5361
|
-
};
|
5362
|
-
};
|
5363
|
-
const pivotReshapeTo1D2M = (advancedVSeed, context)=>{
|
5364
|
-
const result = {
|
5365
|
-
...advancedVSeed
|
5366
|
-
};
|
5367
|
-
const { vseed } = context;
|
5368
|
-
const { dataset } = vseed;
|
5369
|
-
const { measures } = advancedVSeed;
|
5370
|
-
const dimensions = advancedVSeed.dimensions;
|
5371
|
-
if (!measures || !dimensions) return result;
|
5372
|
-
const measureGroups = [];
|
5373
|
-
if (measures) measures.forEach((measure)=>{
|
5374
|
-
if (measure.children && measure.children.length > 0) measureGroups.push(measure);
|
5375
|
-
});
|
5376
|
-
const newDatasets = [];
|
5377
|
-
const datasetReshapeInfo = [];
|
5378
|
-
measureGroups.forEach((measureGroup, index)=>{
|
5379
|
-
const measures = measureGroup.children;
|
5380
|
-
if (!measures) return;
|
5381
|
-
const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
|
5382
|
-
const groupId = measureGroup.id;
|
5383
|
-
const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeFor1D2M(dataset, commonDimensions, measures, {
|
5384
|
-
foldMeasureId: FoldMeasureId,
|
5385
|
-
foldMeasureName: FoldMeasureName,
|
5386
|
-
foldMeasureValue: FoldMeasureValue + groupId,
|
5387
|
-
unfoldDimensionGroup: UnfoldDimensionGroup
|
5388
|
-
});
|
5389
|
-
const reshapeInfo = {
|
5390
|
-
id: groupId,
|
5391
|
-
index,
|
5392
|
-
foldInfo,
|
5393
|
-
unfoldInfo
|
5394
|
-
};
|
5395
|
-
newDatasets.push(newSubDataset);
|
5396
|
-
datasetReshapeInfo.push(reshapeInfo);
|
5397
|
-
});
|
5398
|
-
return {
|
5399
|
-
...result,
|
5400
|
-
dataset: newDatasets,
|
5401
|
-
datasetReshapeInfo: datasetReshapeInfo
|
5402
|
-
};
|
5403
|
-
};
|
5404
|
-
const encodingYY = (advancedVSeed)=>{
|
5405
|
-
const result = {
|
5406
|
-
...advancedVSeed
|
5407
|
-
};
|
5408
|
-
const { datasetReshapeInfo, measures } = advancedVSeed;
|
5409
|
-
if (!datasetReshapeInfo || !measures) return result;
|
5410
|
-
const firstMeasure = findFirstMeasure(measures);
|
5411
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
|
5412
|
-
const { foldInfo, unfoldInfo } = cur;
|
5413
|
-
const x = [
|
5414
|
-
firstMeasure?.id
|
5415
|
-
];
|
5416
|
-
const y = [
|
5417
|
-
foldInfo.measureValue
|
5418
|
-
];
|
5419
|
-
const group = [
|
5420
|
-
unfoldInfo.groupId
|
5421
|
-
];
|
5422
|
-
const color = [
|
5423
|
-
unfoldInfo.groupId
|
5424
|
-
];
|
5425
|
-
return [
|
5426
|
-
...prev,
|
5427
|
-
{
|
5428
|
-
x,
|
5429
|
-
y,
|
5430
|
-
group,
|
5431
|
-
color
|
5432
|
-
}
|
5433
|
-
];
|
5434
|
-
}, []);
|
4907
|
+
const datasetScatter = (spec, context)=>{
|
4908
|
+
const { advancedVSeed, vseed } = context;
|
4909
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
4910
|
+
const id = datasetReshapeInfo[0].id;
|
4911
|
+
const fields = {};
|
5435
4912
|
return {
|
5436
|
-
...
|
5437
|
-
|
5438
|
-
|
5439
|
-
|
5440
|
-
|
5441
|
-
initAdvancedVSeed_initAdvancedVSeed,
|
5442
|
-
autoMeasures_autoMeasures,
|
5443
|
-
autoDimensions_autoDimensions,
|
5444
|
-
pivotAdapter([
|
5445
|
-
reshapeTo1D2M
|
5446
|
-
], [
|
5447
|
-
pivotReshapeTo1D2M
|
5448
|
-
]),
|
5449
|
-
encodingYY,
|
5450
|
-
scatterConfig,
|
5451
|
-
theme_theme,
|
5452
|
-
markStyle_markStyle,
|
5453
|
-
annotation_annotation
|
5454
|
-
];
|
5455
|
-
const initScatter = (spec, context)=>{
|
5456
|
-
const result = {
|
5457
|
-
...spec
|
5458
|
-
};
|
5459
|
-
const { advancedVSeed } = context;
|
5460
|
-
const { encoding } = advancedVSeed;
|
5461
|
-
if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
|
5462
|
-
result.type = 'scatter';
|
5463
|
-
result.direction = 'vertical';
|
5464
|
-
result.xField = encoding[0].x[0];
|
5465
|
-
result.yField = encoding[0].y[0];
|
5466
|
-
result.seriesField = encoding[0].group[0];
|
5467
|
-
result.padding = 0;
|
5468
|
-
result.region = [
|
5469
|
-
{
|
5470
|
-
clip: true
|
4913
|
+
...spec,
|
4914
|
+
data: {
|
4915
|
+
id,
|
4916
|
+
values: isPivotChart(vseed) ? void 0 : advancedVSeed.dataset.flat(),
|
4917
|
+
fields: fields
|
5471
4918
|
}
|
5472
|
-
|
5473
|
-
result.animation = true;
|
5474
|
-
return result;
|
4919
|
+
};
|
5475
4920
|
};
|
5476
4921
|
const horizontalCrosshairLine = (spec, context)=>{
|
5477
4922
|
const result = {
|
@@ -5521,7 +4966,7 @@ const scatter = [
|
|
5521
4966
|
initScatter,
|
5522
4967
|
color_color,
|
5523
4968
|
background_backgroundColor,
|
5524
|
-
|
4969
|
+
datasetScatter,
|
5525
4970
|
progressive,
|
5526
4971
|
xLinear,
|
5527
4972
|
yLinear,
|
@@ -5546,7 +4991,7 @@ const pivotScatter = [
|
|
5546
4991
|
initScatter,
|
5547
4992
|
color_color,
|
5548
4993
|
background_backgroundColor,
|
5549
|
-
|
4994
|
+
datasetScatter,
|
5550
4995
|
progressive,
|
5551
4996
|
xLinear,
|
5552
4997
|
yLinear,
|
@@ -5572,41 +5017,163 @@ const registerScatter = ()=>{
|
|
5572
5017
|
Builder._advancedPipelineMap.scatter = scatterAdvancedPipeline;
|
5573
5018
|
Builder._specPipelineMap.scatter = scatterSpecPipeline;
|
5574
5019
|
};
|
5575
|
-
const
|
5020
|
+
const autoDualMeasures = (advancedVSeed, context)=>{
|
5021
|
+
const result = {
|
5022
|
+
...advancedVSeed
|
5023
|
+
};
|
5024
|
+
const { vseed } = context;
|
5025
|
+
const { dataset, dualMeasures, measures } = vseed;
|
5026
|
+
if (!dataset) throw new Error('dataset is required');
|
5027
|
+
if (0 === dataset.length) return result;
|
5028
|
+
if (dualMeasures) {
|
5029
|
+
result.measures = dualMeasuresToMeasureTree(dualMeasures);
|
5030
|
+
return result;
|
5031
|
+
}
|
5032
|
+
if (measures && measureDepth(measures) > 1) {
|
5033
|
+
result.measures = measures;
|
5034
|
+
return result;
|
5035
|
+
}
|
5036
|
+
const top100dataset = dataset.slice(0, 100);
|
5037
|
+
const sample = top100dataset.reduce((prev, cur)=>({
|
5038
|
+
...prev,
|
5039
|
+
...cur
|
5040
|
+
}), {});
|
5041
|
+
const newMeasures = measures || Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
|
5042
|
+
'',
|
5043
|
+
null,
|
5044
|
+
void 0
|
5045
|
+
].includes(key)).map((measure)=>({
|
5046
|
+
id: measure,
|
5047
|
+
alias: measure
|
5048
|
+
}));
|
5049
|
+
if (0 === newMeasures.length) result.measures = [];
|
5050
|
+
else if (1 === newMeasures.length) result.measures = [
|
5051
|
+
{
|
5052
|
+
id: 'primary',
|
5053
|
+
alias: 'primary',
|
5054
|
+
children: newMeasures
|
5055
|
+
}
|
5056
|
+
];
|
5057
|
+
else if (newMeasures.length > 1) result.measures = [
|
5058
|
+
{
|
5059
|
+
id: 'primary',
|
5060
|
+
alias: 'primary',
|
5061
|
+
children: newMeasures.slice(0, 1)
|
5062
|
+
},
|
5063
|
+
{
|
5064
|
+
id: 'secondary',
|
5065
|
+
alias: 'secondary',
|
5066
|
+
children: newMeasures.slice(1)
|
5067
|
+
}
|
5068
|
+
];
|
5069
|
+
return result;
|
5070
|
+
};
|
5071
|
+
const dualMeasuresToMeasureTree = (dualMeasures)=>{
|
5072
|
+
const measureTree = dualMeasures.map((item, index)=>{
|
5073
|
+
const { primaryMeasures, secondaryMeasures } = item;
|
5074
|
+
const groupChildren = [];
|
5075
|
+
let id = '';
|
5076
|
+
if (primaryMeasures) {
|
5077
|
+
const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [
|
5078
|
+
primaryMeasures
|
5079
|
+
];
|
5080
|
+
const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
|
5081
|
+
id += alias;
|
5082
|
+
groupChildren.push({
|
5083
|
+
id: `${index}-primary`,
|
5084
|
+
alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
|
5085
|
+
children: arrPrimaryMeasures
|
5086
|
+
});
|
5087
|
+
}
|
5088
|
+
if (secondaryMeasures) {
|
5089
|
+
const arrSecondaryMeasures = Array.isArray(secondaryMeasures) ? secondaryMeasures : [
|
5090
|
+
secondaryMeasures
|
5091
|
+
];
|
5092
|
+
const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
|
5093
|
+
id += alias;
|
5094
|
+
groupChildren.push({
|
5095
|
+
id: `${index}-secondary`,
|
5096
|
+
alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
|
5097
|
+
children: arrSecondaryMeasures
|
5098
|
+
});
|
5099
|
+
}
|
5100
|
+
return {
|
5101
|
+
id,
|
5102
|
+
alias: id,
|
5103
|
+
children: groupChildren
|
5104
|
+
};
|
5105
|
+
});
|
5106
|
+
if (1 === dualMeasures.length) return measureTree[0].children || [];
|
5107
|
+
return measureTree;
|
5108
|
+
};
|
5109
|
+
const encodingForDualAxis = (advancedVSeed, context)=>{
|
5110
|
+
const { vseed } = context;
|
5111
|
+
const { dimensions } = advancedVSeed;
|
5112
|
+
if (!dimensions) return advancedVSeed;
|
5113
|
+
const encoding = vseed.encoding;
|
5114
|
+
if (encoding) {
|
5115
|
+
const x = encoding.x || [];
|
5116
|
+
const detail = encoding.detail || [];
|
5117
|
+
const color = encoding.color || [];
|
5118
|
+
const mergedDetail = [
|
5119
|
+
...color.filter((d)=>!x.includes(d)),
|
5120
|
+
...detail
|
5121
|
+
];
|
5122
|
+
return {
|
5123
|
+
...advancedVSeed,
|
5124
|
+
encoding: {
|
5125
|
+
...encoding,
|
5126
|
+
detail: mergedDetail
|
5127
|
+
}
|
5128
|
+
};
|
5129
|
+
}
|
5130
|
+
const mergedEncoding = {
|
5131
|
+
x: dimensions.slice(0, 1).map((item)=>item.id),
|
5132
|
+
color: dimensions.slice(1).map((item)=>item.id),
|
5133
|
+
detail: dimensions.slice(1).map((item)=>item.id),
|
5134
|
+
tooltip: dimensions.map((item)=>item.id),
|
5135
|
+
label: [],
|
5136
|
+
row: [],
|
5137
|
+
column: []
|
5138
|
+
};
|
5139
|
+
return {
|
5140
|
+
...advancedVSeed,
|
5141
|
+
encoding: mergedEncoding
|
5142
|
+
};
|
5143
|
+
};
|
5144
|
+
const reshapeWithDualEncoding = (advancedVSeed, context)=>{
|
5576
5145
|
const result = {
|
5577
5146
|
...advancedVSeed
|
5578
5147
|
};
|
5579
5148
|
const { vseed } = context;
|
5580
5149
|
const { dataset } = vseed;
|
5581
|
-
const { dimensions, measures } = advancedVSeed;
|
5582
|
-
if (!measures || !dimensions || !dataset) return result;
|
5150
|
+
const { dimensions, measures, encoding, chartType } = advancedVSeed;
|
5151
|
+
if (!measures || !dimensions || !dataset || !encoding) return result;
|
5583
5152
|
if (0 === measures.length) throw new Error('measures can not be empty');
|
5584
5153
|
if (measures.length > 2) throw new Error('measures can not be more than 2');
|
5585
|
-
const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
|
5586
|
-
const datasets = [];
|
5587
5154
|
const foldInfoList = [];
|
5588
5155
|
const unfoldInfoList = [];
|
5156
|
+
const datasets = [];
|
5589
5157
|
const primaryMeasures = measures[0];
|
5590
5158
|
const secondaryMeasures = measures[1] || [];
|
5591
5159
|
if (primaryMeasures && primaryMeasures.children) {
|
5592
|
-
const { dataset:
|
5160
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
|
5593
5161
|
foldMeasureValue: FoldPrimaryMeasureValue
|
5594
5162
|
});
|
5595
|
-
datasets.push(
|
5163
|
+
datasets.push(newDataset);
|
5596
5164
|
foldInfoList.push(foldInfo);
|
5597
5165
|
unfoldInfoList.push(unfoldInfo);
|
5598
5166
|
}
|
5599
5167
|
if (secondaryMeasures && secondaryMeasures.children) {
|
5600
|
-
const { dataset:
|
5168
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding, {
|
5601
5169
|
foldMeasureValue: FoldSecondaryMeasureValue
|
5602
5170
|
});
|
5603
|
-
datasets.push(
|
5171
|
+
datasets.push(newDataset);
|
5604
5172
|
foldInfoList.push(foldInfo);
|
5605
5173
|
unfoldInfoList.push(unfoldInfo);
|
5606
5174
|
}
|
5607
5175
|
const unfoldInfo = {
|
5608
|
-
|
5609
|
-
groupId: unfoldInfoList[0].groupId,
|
5176
|
+
...unfoldInfoList[0],
|
5610
5177
|
colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
|
5611
5178
|
colorIdMap: unfoldInfoList.reduce((prev, cur)=>({
|
5612
5179
|
...prev,
|
@@ -5618,7 +5185,7 @@ const reshapeTo2D2M = (advancedVSeed, context)=>{
|
|
5618
5185
|
dataset: datasets,
|
5619
5186
|
datasetReshapeInfo: [
|
5620
5187
|
{
|
5621
|
-
id:
|
5188
|
+
id: String(chartType),
|
5622
5189
|
index: 0,
|
5623
5190
|
foldInfo: foldInfoList[0],
|
5624
5191
|
foldInfoList: foldInfoList,
|
@@ -5627,46 +5194,48 @@ const reshapeTo2D2M = (advancedVSeed, context)=>{
|
|
5627
5194
|
]
|
5628
5195
|
};
|
5629
5196
|
};
|
5630
|
-
const
|
5197
|
+
const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
|
5631
5198
|
const result = {
|
5632
5199
|
...advancedVSeed
|
5633
5200
|
};
|
5634
5201
|
const { vseed } = context;
|
5635
5202
|
const { dataset } = vseed;
|
5636
|
-
const { dimensions, measures } = advancedVSeed;
|
5637
|
-
if (!measures || !dimensions || !dataset) return result;
|
5638
|
-
const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
|
5203
|
+
const { dimensions, measures, encoding, chartType } = advancedVSeed;
|
5204
|
+
if (!measures || !dimensions || !dataset || !encoding) return result;
|
5639
5205
|
const datasetList = [];
|
5640
5206
|
const datasetReshapeInfo = [];
|
5641
|
-
|
5642
|
-
|
5207
|
+
const measureGroups = [];
|
5208
|
+
const depth = measureDepth(measures);
|
5209
|
+
if (3 === depth) measures.forEach((measure)=>{
|
5210
|
+
measureGroups.push(measure.children);
|
5211
|
+
});
|
5212
|
+
else if (2 === depth) measureGroups.push(measures);
|
5213
|
+
measureGroups.forEach((measures, index)=>{
|
5643
5214
|
if (0 === measures.length) throw new Error('measures can not be empty');
|
5644
5215
|
if (measures.length > 2) throw new Error('measures can not be more than 2');
|
5645
|
-
const datasets = [];
|
5646
5216
|
const foldInfoList = [];
|
5647
5217
|
const unfoldInfoList = [];
|
5218
|
+
const datasets = [];
|
5648
5219
|
const primaryMeasures = measures[0];
|
5649
|
-
const secondaryMeasures = measures[1] ||
|
5220
|
+
const secondaryMeasures = measures[1] || [];
|
5650
5221
|
if (primaryMeasures && primaryMeasures.children) {
|
5651
|
-
const { dataset:
|
5222
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
|
5652
5223
|
foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`
|
5653
5224
|
});
|
5654
|
-
datasets.push(
|
5225
|
+
datasets.push(newDataset);
|
5655
5226
|
foldInfoList.push(foldInfo);
|
5656
5227
|
unfoldInfoList.push(unfoldInfo);
|
5657
5228
|
}
|
5658
5229
|
if (secondaryMeasures && secondaryMeasures.children) {
|
5659
|
-
const { dataset:
|
5230
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding, {
|
5660
5231
|
foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`
|
5661
5232
|
});
|
5662
|
-
datasets.push(
|
5233
|
+
datasets.push(newDataset);
|
5663
5234
|
foldInfoList.push(foldInfo);
|
5664
5235
|
unfoldInfoList.push(unfoldInfo);
|
5665
5236
|
}
|
5666
|
-
datasetList.push(datasets.flat(2));
|
5667
5237
|
const unfoldInfo = {
|
5668
|
-
|
5669
|
-
groupId: unfoldInfoList[0].groupId,
|
5238
|
+
...unfoldInfoList[0],
|
5670
5239
|
colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
|
5671
5240
|
colorIdMap: unfoldInfoList.reduce((prev, cur)=>({
|
5672
5241
|
...prev,
|
@@ -5674,53 +5243,19 @@ const pivotReshapeTo2D2M = (advancedVSeed, context)=>{
|
|
5674
5243
|
}), {})
|
5675
5244
|
};
|
5676
5245
|
const reshapeInfo = {
|
5677
|
-
id:
|
5246
|
+
id: `${chartType}-${index}`,
|
5678
5247
|
index,
|
5679
5248
|
foldInfo: foldInfoList[0],
|
5680
|
-
|
5681
|
-
|
5249
|
+
foldInfoList: foldInfoList,
|
5250
|
+
unfoldInfo: unfoldInfo
|
5682
5251
|
};
|
5683
5252
|
datasetReshapeInfo.push(reshapeInfo);
|
5253
|
+
datasetList.push(datasets.flat(2));
|
5684
5254
|
});
|
5685
5255
|
return {
|
5686
5256
|
...result,
|
5687
5257
|
dataset: datasetList,
|
5688
|
-
datasetReshapeInfo
|
5689
|
-
};
|
5690
|
-
};
|
5691
|
-
const encodingXYY = (advancedVSeed)=>{
|
5692
|
-
const result = {
|
5693
|
-
...advancedVSeed
|
5694
|
-
};
|
5695
|
-
const { datasetReshapeInfo, dimensions } = advancedVSeed;
|
5696
|
-
if (!datasetReshapeInfo || !dimensions) return result;
|
5697
|
-
const xDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
|
5698
|
-
const isZeroDimension = 0 === dimensions.length;
|
5699
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
|
5700
|
-
const { foldInfoList, unfoldInfo } = cur;
|
5701
|
-
const x = [
|
5702
|
-
isZeroDimension ? foldInfoList[0].measureName : xDimension?.id
|
5703
|
-
];
|
5704
|
-
const y = foldInfoList.map((d)=>d.measureValue);
|
5705
|
-
const group = [
|
5706
|
-
unfoldInfo.groupId
|
5707
|
-
];
|
5708
|
-
const color = [
|
5709
|
-
foldInfoList[0].measureName
|
5710
|
-
];
|
5711
|
-
return [
|
5712
|
-
...prev,
|
5713
|
-
{
|
5714
|
-
x,
|
5715
|
-
y,
|
5716
|
-
group,
|
5717
|
-
color
|
5718
|
-
}
|
5719
|
-
];
|
5720
|
-
}, []);
|
5721
|
-
return {
|
5722
|
-
...result,
|
5723
|
-
encoding
|
5258
|
+
datasetReshapeInfo: datasetReshapeInfo
|
5724
5259
|
};
|
5725
5260
|
};
|
5726
5261
|
const dualAxisConfig = (advancedVSeed, context)=>{
|
@@ -5749,125 +5284,80 @@ const dualAxisConfig = (advancedVSeed, context)=>{
|
|
5749
5284
|
};
|
5750
5285
|
return result;
|
5751
5286
|
};
|
5752
|
-
const autoDualMeasures = (advancedVSeed, context)=>{
|
5753
|
-
const result = {
|
5754
|
-
...advancedVSeed
|
5755
|
-
};
|
5756
|
-
const { vseed } = context;
|
5757
|
-
const { dataset, dualMeasures, measures } = vseed;
|
5758
|
-
if (!dataset) throw new Error('dataset is required');
|
5759
|
-
if (0 === dataset.length) return result;
|
5760
|
-
if (dualMeasures) {
|
5761
|
-
result.measures = dualMeasuresToMeasureTree(dualMeasures);
|
5762
|
-
return result;
|
5763
|
-
}
|
5764
|
-
if (measures && measureDepth(measures) > 1) {
|
5765
|
-
result.measures = measures;
|
5766
|
-
return result;
|
5767
|
-
}
|
5768
|
-
const top100dataset = dataset.slice(0, 100);
|
5769
|
-
const sample = top100dataset.reduce((prev, cur)=>({
|
5770
|
-
...prev,
|
5771
|
-
...cur
|
5772
|
-
}), {});
|
5773
|
-
const newMeasures = measures || Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
|
5774
|
-
'',
|
5775
|
-
null,
|
5776
|
-
void 0
|
5777
|
-
].includes(key)).map((measure)=>({
|
5778
|
-
id: measure,
|
5779
|
-
alias: measure
|
5780
|
-
}));
|
5781
|
-
if (0 === newMeasures.length) result.measures = [];
|
5782
|
-
else if (1 === newMeasures.length) result.measures = [
|
5783
|
-
{
|
5784
|
-
id: 'primary',
|
5785
|
-
alias: 'primary',
|
5786
|
-
children: newMeasures
|
5787
|
-
}
|
5788
|
-
];
|
5789
|
-
else if (newMeasures.length > 1) result.measures = [
|
5790
|
-
{
|
5791
|
-
id: 'primary',
|
5792
|
-
alias: 'primary',
|
5793
|
-
children: newMeasures.slice(0, 1)
|
5794
|
-
},
|
5795
|
-
{
|
5796
|
-
id: 'secondary',
|
5797
|
-
alias: 'secondary',
|
5798
|
-
children: newMeasures.slice(1)
|
5799
|
-
}
|
5800
|
-
];
|
5801
|
-
return result;
|
5802
|
-
};
|
5803
|
-
const dualMeasuresToMeasureTree = (dualMeasures)=>{
|
5804
|
-
const measureTree = dualMeasures.map((item, index)=>{
|
5805
|
-
const { primaryMeasures, secondaryMeasures } = item;
|
5806
|
-
const groupChildren = [];
|
5807
|
-
let id = '';
|
5808
|
-
if (primaryMeasures) {
|
5809
|
-
const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [
|
5810
|
-
primaryMeasures
|
5811
|
-
];
|
5812
|
-
const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
|
5813
|
-
id += alias;
|
5814
|
-
groupChildren.push({
|
5815
|
-
id: `${index}-primary`,
|
5816
|
-
alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
|
5817
|
-
children: arrPrimaryMeasures
|
5818
|
-
});
|
5819
|
-
}
|
5820
|
-
if (secondaryMeasures) {
|
5821
|
-
const arrSecondaryMeasures = Array.isArray(secondaryMeasures) ? secondaryMeasures : [
|
5822
|
-
secondaryMeasures
|
5823
|
-
];
|
5824
|
-
const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
|
5825
|
-
id += alias;
|
5826
|
-
groupChildren.push({
|
5827
|
-
id: `${index}-secondary`,
|
5828
|
-
alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
|
5829
|
-
children: arrSecondaryMeasures
|
5830
|
-
});
|
5831
|
-
}
|
5832
|
-
return {
|
5833
|
-
id,
|
5834
|
-
alias: id,
|
5835
|
-
children: groupChildren
|
5836
|
-
};
|
5837
|
-
});
|
5838
|
-
if (1 === dualMeasures.length) return measureTree[0].children || [];
|
5839
|
-
return measureTree;
|
5840
|
-
};
|
5841
5287
|
const dualAxisAdvancedPipeline = [
|
5842
5288
|
initAdvancedVSeed_initAdvancedVSeed,
|
5843
5289
|
autoDualMeasures,
|
5844
5290
|
autoDimensions_autoDimensions,
|
5291
|
+
encodingForDualAxis,
|
5845
5292
|
pivotAdapter([
|
5846
|
-
|
5293
|
+
reshapeWithDualEncoding
|
5847
5294
|
], [
|
5848
|
-
|
5295
|
+
pivotReshapeWithDualEncoding
|
5849
5296
|
]),
|
5850
|
-
encodingXYY,
|
5851
5297
|
sortXBandAxis,
|
5852
|
-
|
5298
|
+
sortLegend_sortLegend,
|
5853
5299
|
dualAxisConfig,
|
5854
5300
|
theme_theme,
|
5855
5301
|
markStyle_markStyle,
|
5856
5302
|
annotation_annotation
|
5857
5303
|
];
|
5304
|
+
const series = (...args)=>{
|
5305
|
+
const result = {
|
5306
|
+
type: 'common',
|
5307
|
+
padding: 0,
|
5308
|
+
region: [
|
5309
|
+
{
|
5310
|
+
clip: true
|
5311
|
+
}
|
5312
|
+
]
|
5313
|
+
};
|
5314
|
+
return (_, context)=>{
|
5315
|
+
result.series = args.map((pipeline)=>execPipeline(pipeline, context, {}));
|
5316
|
+
return result;
|
5317
|
+
};
|
5318
|
+
};
|
5319
|
+
const seriesDualAxis = (...args)=>{
|
5320
|
+
const result = {
|
5321
|
+
type: 'common',
|
5322
|
+
padding: 0,
|
5323
|
+
region: [
|
5324
|
+
{
|
5325
|
+
clip: true
|
5326
|
+
}
|
5327
|
+
]
|
5328
|
+
};
|
5329
|
+
const createDualContext = (context, index)=>{
|
5330
|
+
const { advancedVSeed } = context;
|
5331
|
+
const dataset = advancedVSeed.dataset[index];
|
5332
|
+
return {
|
5333
|
+
...context,
|
5334
|
+
advancedVSeed: {
|
5335
|
+
...advancedVSeed,
|
5336
|
+
dataset: dataset
|
5337
|
+
}
|
5338
|
+
};
|
5339
|
+
};
|
5340
|
+
return (_, context)=>{
|
5341
|
+
result.series = args.map((pipeline, index)=>{
|
5342
|
+
const seriesContext = createDualContext(context, index);
|
5343
|
+
return execPipeline(pipeline, seriesContext, {});
|
5344
|
+
});
|
5345
|
+
return result;
|
5346
|
+
};
|
5347
|
+
};
|
5858
5348
|
const initDualAxisPrimary = (spec, context)=>{
|
5859
5349
|
const result = {
|
5860
5350
|
...spec
|
5861
5351
|
};
|
5862
5352
|
const { advancedVSeed } = context;
|
5863
|
-
const {
|
5864
|
-
|
5865
|
-
result.id = `${
|
5353
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
5354
|
+
const { unfoldInfo, foldInfoList, id } = datasetReshapeInfo[0];
|
5355
|
+
result.id = `${id}-primary-series`;
|
5866
5356
|
result.type = 'bar';
|
5867
5357
|
result.direction = 'vertical';
|
5868
|
-
result.xField =
|
5869
|
-
result.
|
5870
|
-
result.
|
5358
|
+
result.xField = unfoldInfo.encodingX;
|
5359
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
5360
|
+
result.yField = foldInfoList?.[0].measureValue;
|
5871
5361
|
result.animation = true;
|
5872
5362
|
return result;
|
5873
5363
|
};
|
@@ -5876,14 +5366,14 @@ const initDualAxisSecondary = (spec, context)=>{
|
|
5876
5366
|
...spec
|
5877
5367
|
};
|
5878
5368
|
const { advancedVSeed } = context;
|
5879
|
-
const {
|
5880
|
-
|
5881
|
-
result.id = `${
|
5369
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
5370
|
+
const { unfoldInfo, foldInfoList, id } = datasetReshapeInfo[0];
|
5371
|
+
result.id = `${id}-secondary-series`;
|
5882
5372
|
result.type = 'line';
|
5883
5373
|
result.direction = 'vertical';
|
5884
|
-
result.xField =
|
5885
|
-
result.yField =
|
5886
|
-
result.seriesField =
|
5374
|
+
result.xField = unfoldInfo.encodingX;
|
5375
|
+
if (foldInfoList?.[1]) result.yField = foldInfoList[1].measureValue;
|
5376
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
5887
5377
|
result.animation = true;
|
5888
5378
|
return result;
|
5889
5379
|
};
|
@@ -5915,10 +5405,10 @@ const dualChartTypePrimary = (spec, context)=>{
|
|
5915
5405
|
case 'columnParallel':
|
5916
5406
|
{
|
5917
5407
|
const columnSpec = result;
|
5918
|
-
if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.
|
5408
|
+
if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.encodingDetail);
|
5919
5409
|
else if (columnSpec.xField) columnSpec.xField = [
|
5920
5410
|
columnSpec.xField,
|
5921
|
-
datasetReshapeInfo[0].unfoldInfo.
|
5411
|
+
datasetReshapeInfo[0].unfoldInfo.encodingDetail
|
5922
5412
|
];
|
5923
5413
|
columnSpec.type = 'bar';
|
5924
5414
|
result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX;
|
@@ -5971,10 +5461,10 @@ const dualChartTypeSecondary = (spec, context)=>{
|
|
5971
5461
|
case 'columnParallel':
|
5972
5462
|
{
|
5973
5463
|
const columnSpec = result;
|
5974
|
-
if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.
|
5464
|
+
if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.encodingDetail);
|
5975
5465
|
else if (columnSpec.xField) columnSpec.xField = [
|
5976
5466
|
columnSpec.xField,
|
5977
|
-
datasetReshapeInfo[0].unfoldInfo.
|
5467
|
+
datasetReshapeInfo[0].unfoldInfo.encodingDetail
|
5978
5468
|
];
|
5979
5469
|
columnSpec.type = 'bar';
|
5980
5470
|
result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX;
|
@@ -6001,10 +5491,11 @@ const dualChartTypeSecondary = (spec, context)=>{
|
|
6001
5491
|
};
|
6002
5492
|
const datasetPrimary = (spec, context)=>{
|
6003
5493
|
const { advancedVSeed, vseed } = context;
|
6004
|
-
const {
|
5494
|
+
const { analysis, datasetReshapeInfo } = advancedVSeed;
|
6005
5495
|
const orderMapping = analysis?.orderMapping || {};
|
6006
|
-
const
|
6007
|
-
const
|
5496
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
5497
|
+
const x = unfoldInfo.encodingX;
|
5498
|
+
const colorId = unfoldInfo.encodingColorId;
|
6008
5499
|
const id = datasetReshapeInfo[0].id;
|
6009
5500
|
const fields = {};
|
6010
5501
|
if (x) {
|
@@ -6018,14 +5509,14 @@ const datasetPrimary = (spec, context)=>{
|
|
6018
5509
|
sortIndex: 0
|
6019
5510
|
};
|
6020
5511
|
}
|
6021
|
-
if (
|
6022
|
-
const order = orderMapping[
|
6023
|
-
if (order) fields[
|
5512
|
+
if (colorId) {
|
5513
|
+
const order = orderMapping[colorId];
|
5514
|
+
if (order) fields[colorId] = {
|
6024
5515
|
sortIndex: 0,
|
6025
5516
|
domain: order,
|
6026
5517
|
lockStatisticsByDomain: true
|
6027
5518
|
};
|
6028
|
-
else fields[
|
5519
|
+
else fields[colorId] = {
|
6029
5520
|
sortIndex: 0
|
6030
5521
|
};
|
6031
5522
|
}
|
@@ -6040,10 +5531,11 @@ const datasetPrimary = (spec, context)=>{
|
|
6040
5531
|
};
|
6041
5532
|
const datasetSecondary = (spec, context)=>{
|
6042
5533
|
const { advancedVSeed, vseed } = context;
|
6043
|
-
const {
|
5534
|
+
const { analysis, datasetReshapeInfo } = advancedVSeed;
|
6044
5535
|
const orderMapping = analysis?.orderMapping || {};
|
6045
|
-
const
|
6046
|
-
const
|
5536
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
5537
|
+
const x = unfoldInfo.encodingX;
|
5538
|
+
const colorId = unfoldInfo.encodingColorId;
|
6047
5539
|
const id = datasetReshapeInfo[0].id;
|
6048
5540
|
const fields = {};
|
6049
5541
|
if (x) {
|
@@ -6057,14 +5549,14 @@ const datasetSecondary = (spec, context)=>{
|
|
6057
5549
|
sortIndex: 0
|
6058
5550
|
};
|
6059
5551
|
}
|
6060
|
-
if (
|
6061
|
-
const order = orderMapping[
|
6062
|
-
if (order) fields[
|
5552
|
+
if (colorId) {
|
5553
|
+
const order = orderMapping[colorId];
|
5554
|
+
if (order) fields[colorId] = {
|
6063
5555
|
sortIndex: 0,
|
6064
5556
|
domain: order,
|
6065
5557
|
lockStatisticsByDomain: true
|
6066
5558
|
};
|
6067
|
-
else fields[
|
5559
|
+
else fields[colorId] = {
|
6068
5560
|
sortIndex: 0
|
6069
5561
|
};
|
6070
5562
|
}
|
@@ -6162,7 +5654,7 @@ const tooltipPrimary = (spec, context)=>{
|
|
6162
5654
|
const foldInfoList = datasetReshapeInfo[0].foldInfoList;
|
6163
5655
|
const unfoldInfo = datasetReshapeInfo[0].unfoldInfo;
|
6164
5656
|
const { measureId, measureValue, measureName } = foldInfoList[0];
|
6165
|
-
const {
|
5657
|
+
const { encodingColor: colorName } = unfoldInfo;
|
6166
5658
|
result.tooltip = {
|
6167
5659
|
visible: enable,
|
6168
5660
|
mark: {
|
@@ -6183,7 +5675,7 @@ const tooltipPrimary = (spec, context)=>{
|
|
6183
5675
|
{
|
6184
5676
|
visible: true,
|
6185
5677
|
hasShape: true,
|
6186
|
-
key: (datum)=>datum && datum[measureName ||
|
5678
|
+
key: (datum)=>datum && datum[measureName || colorName] || '',
|
6187
5679
|
value: (datum)=>{
|
6188
5680
|
if (!datum) return '';
|
6189
5681
|
const value = datum[measureValue];
|
@@ -6205,7 +5697,7 @@ const tooltipPrimary = (spec, context)=>{
|
|
6205
5697
|
content: [
|
6206
5698
|
{
|
6207
5699
|
visible: true,
|
6208
|
-
key: (datum)=>datum && datum[
|
5700
|
+
key: (datum)=>datum && datum[colorName] || '',
|
6209
5701
|
value: (datum)=>{
|
6210
5702
|
if (!datum) return '';
|
6211
5703
|
const value = datum[measureValue];
|
@@ -6242,7 +5734,7 @@ const tooltipSecondary = (spec, context)=>{
|
|
6242
5734
|
const foldInfoList = datasetReshapeInfo[0].foldInfoList;
|
6243
5735
|
const unfoldInfo = datasetReshapeInfo[0].unfoldInfo;
|
6244
5736
|
const { measureId, measureValue, measureName } = foldInfoList[1];
|
6245
|
-
const {
|
5737
|
+
const { encodingColorId } = unfoldInfo;
|
6246
5738
|
result.tooltip = {
|
6247
5739
|
visible: enable,
|
6248
5740
|
mark: {
|
@@ -6263,7 +5755,7 @@ const tooltipSecondary = (spec, context)=>{
|
|
6263
5755
|
{
|
6264
5756
|
visible: true,
|
6265
5757
|
hasShape: true,
|
6266
|
-
key: (datum)=>datum && datum[measureName ||
|
5758
|
+
key: (datum)=>datum && datum[measureName || encodingColorId] || '',
|
6267
5759
|
value: (datum)=>{
|
6268
5760
|
if (!datum) return '';
|
6269
5761
|
const value = datum[measureValue];
|
@@ -6285,7 +5777,7 @@ const tooltipSecondary = (spec, context)=>{
|
|
6285
5777
|
content: [
|
6286
5778
|
{
|
6287
5779
|
visible: true,
|
6288
|
-
key: (datum)=>datum && datum[
|
5780
|
+
key: (datum)=>datum && datum[encodingColorId] || '',
|
6289
5781
|
value: (datum)=>{
|
6290
5782
|
if (!datum) return '';
|
6291
5783
|
const value = datum[measureValue];
|
@@ -6314,16 +5806,16 @@ const yLinearPrimary = (spec, context)=>{
|
|
6314
5806
|
const { advancedVSeed, vseed } = context;
|
6315
5807
|
const { chartType } = vseed;
|
6316
5808
|
const { locale, datasetReshapeInfo } = advancedVSeed;
|
6317
|
-
const index = datasetReshapeInfo[0]
|
5809
|
+
const { index, id: reshapeInfoId, foldInfoList } = datasetReshapeInfo[0];
|
6318
5810
|
const primaryYAxis = advancedVSeed.config?.[chartType]?.primaryYAxis;
|
6319
5811
|
const yAxisConfig = Array.isArray(primaryYAxis) ? primaryYAxis[index] || primaryYAxis[0] : primaryYAxis;
|
6320
5812
|
const alignTicks = advancedVSeed.config?.[chartType]?.alignTicks;
|
6321
5813
|
const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks;
|
6322
|
-
if (
|
6323
|
-
const id = `${
|
5814
|
+
if (foldInfoList?.[0] && isEmpty(foldInfoList[0].foldMap)) return result;
|
5815
|
+
const id = `${reshapeInfoId}-primary-axis`;
|
6324
5816
|
const seriesIds = [
|
6325
|
-
`${
|
6326
|
-
`${
|
5817
|
+
`${reshapeInfoId}-primary-series`,
|
5818
|
+
`${reshapeInfoId}-secondary-series`
|
6327
5819
|
];
|
6328
5820
|
const seriesId = alignTicksConfig ? seriesIds : seriesIds[0];
|
6329
5821
|
if (!result.axes) result.axes = [];
|
@@ -6411,20 +5903,20 @@ const yLinearSecondary = (spec, context)=>{
|
|
6411
5903
|
const { advancedVSeed, vseed } = context;
|
6412
5904
|
const { chartType } = vseed;
|
6413
5905
|
const { locale, datasetReshapeInfo } = advancedVSeed;
|
6414
|
-
const index = datasetReshapeInfo[0]
|
5906
|
+
const { index, id: reshapeInfoId, foldInfoList } = datasetReshapeInfo[0];
|
6415
5907
|
const secondaryYAxis = advancedVSeed.config?.[chartType]?.secondaryYAxis;
|
6416
5908
|
const yAxisConfig = Array.isArray(secondaryYAxis) ? secondaryYAxis[index] || secondaryYAxis[0] : secondaryYAxis;
|
6417
5909
|
const alignTicks = advancedVSeed.config?.[chartType]?.alignTicks;
|
6418
5910
|
const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks;
|
6419
|
-
if (isNullish(
|
5911
|
+
if (isNullish(foldInfoList?.[1])) return result;
|
6420
5912
|
const sync = {
|
6421
|
-
axisId: `${
|
5913
|
+
axisId: `${reshapeInfoId}-primary-axis`,
|
6422
5914
|
zeroAlign: true
|
6423
5915
|
};
|
6424
|
-
const id = `${
|
5916
|
+
const id = `${reshapeInfoId}-secondary-axis`;
|
6425
5917
|
const seriesIds = [
|
6426
|
-
`${
|
6427
|
-
`${
|
5918
|
+
`${reshapeInfoId}-primary-series`,
|
5919
|
+
`${reshapeInfoId}-secondary-series`
|
6428
5920
|
];
|
6429
5921
|
const seriesId = alignTicksConfig ? seriesIds : seriesIds[1];
|
6430
5922
|
if (!result.axes) result.axes = [];
|
@@ -6565,210 +6057,74 @@ const pivotDualAxis = [
|
|
6565
6057
|
areaStyle_areaStyle
|
6566
6058
|
], [
|
6567
6059
|
initDualAxisSecondary,
|
6568
|
-
dualChartTypeSecondary,
|
6569
|
-
datasetSecondary,
|
6570
|
-
labelSecondary,
|
6571
|
-
tooltipSecondary,
|
6572
|
-
progressive,
|
6573
|
-
barStyle_barStyle,
|
6574
|
-
pointStyle_pointStyle,
|
6575
|
-
pointStateDimensionHover,
|
6576
|
-
lineStyle_lineStyle,
|
6577
|
-
areaStyle_areaStyle
|
6578
|
-
]),
|
6579
|
-
xBand,
|
6580
|
-
yLinearPrimary,
|
6581
|
-
yLinearSecondary,
|
6582
|
-
color_color,
|
6583
|
-
background_backgroundColor,
|
6584
|
-
verticalCrosshairRect,
|
6585
|
-
annotationPoint_annotationPoint,
|
6586
|
-
annotationVerticalLine_annotationVerticalLine,
|
6587
|
-
annotationHorizontalLine_annotationHorizontalLine,
|
6588
|
-
annotationArea_annotationArea
|
6589
|
-
]),
|
6590
|
-
pivotRowDimensions,
|
6591
|
-
pivotColumnDimensions,
|
6592
|
-
pivotDiscreteLegend
|
6593
|
-
];
|
6594
|
-
const dualAxisSpecPipeline = [
|
6595
|
-
pivotAdapter_pivotAdapter(dualAxis, pivotDualAxis)
|
6596
|
-
];
|
6597
|
-
const registerDualAxis = ()=>{
|
6598
|
-
Builder._advancedPipelineMap.dualAxis = dualAxisAdvancedPipeline;
|
6599
|
-
Builder._specPipelineMap.dualAxis = dualAxisSpecPipeline;
|
6600
|
-
};
|
6601
|
-
const dataReshapeFor1D1M_emptyReshapeResult = {
|
6602
|
-
dataset: [],
|
6603
|
-
foldInfo: {
|
6604
|
-
foldMap: {},
|
6605
|
-
measureId: '',
|
6606
|
-
measureName: '',
|
6607
|
-
measureValue: ''
|
6608
|
-
},
|
6609
|
-
unfoldInfo: {
|
6610
|
-
groupName: '',
|
6611
|
-
groupId: '',
|
6612
|
-
colorItems: [],
|
6613
|
-
colorIdMap: {}
|
6614
|
-
}
|
6615
|
-
};
|
6616
|
-
const dataReshapeFor1D1M = (dataset, dimensions, measures, options)=>{
|
6617
|
-
const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, unfoldDimensionGroup = UnfoldDimensionGroup, unfoldDimensionGroupId = UnfoldDimensionGroupId } = options || {};
|
6618
|
-
if (0 === dimensions.length && 0 === measures.length) return dataReshapeFor1D1M_emptyReshapeResult;
|
6619
|
-
const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, foldMeasureId, foldMeasureName, foldMeasureValue);
|
6620
|
-
if (0 === dimensions.length) {
|
6621
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
|
6622
|
-
{
|
6623
|
-
id: foldMeasureName,
|
6624
|
-
alias: i18n`指标名称`,
|
6625
|
-
location: 'dimension'
|
6626
|
-
}
|
6627
|
-
], [
|
6628
|
-
{
|
6629
|
-
id: foldMeasureValue,
|
6630
|
-
alias: i18n`指标值`
|
6631
|
-
}
|
6632
|
-
], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
6633
|
-
return {
|
6634
|
-
dataset: finalDataset,
|
6635
|
-
foldInfo,
|
6636
|
-
unfoldInfo
|
6637
|
-
};
|
6638
|
-
}
|
6639
|
-
{
|
6640
|
-
const dims = 1 === measures.length ? [
|
6641
|
-
...dimensions
|
6642
|
-
] : [
|
6643
|
-
...dimensions,
|
6644
|
-
{
|
6645
|
-
id: foldMeasureName,
|
6646
|
-
alias: i18n`指标名称`,
|
6647
|
-
location: 'dimension'
|
6648
|
-
}
|
6649
|
-
];
|
6650
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dims, [
|
6651
|
-
{
|
6652
|
-
id: foldMeasureValue,
|
6653
|
-
alias: i18n`指标值`
|
6654
|
-
}
|
6655
|
-
], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
6656
|
-
return {
|
6657
|
-
dataset: finalDataset,
|
6658
|
-
foldInfo,
|
6659
|
-
unfoldInfo
|
6660
|
-
};
|
6661
|
-
}
|
6662
|
-
};
|
6663
|
-
const reshapeTo1D1M = (advancedVSeed, context)=>{
|
6664
|
-
const result = {
|
6665
|
-
...advancedVSeed
|
6666
|
-
};
|
6667
|
-
const { vseed } = context;
|
6668
|
-
const { dataset } = vseed;
|
6669
|
-
const { dimensions, measures } = advancedVSeed;
|
6670
|
-
if (!measures || !dimensions || !dataset) return result;
|
6671
|
-
if (0 === measures.length) throw new Error('measures can not be empty');
|
6672
|
-
const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D1M(dataset, dimensions, measures);
|
6673
|
-
return {
|
6674
|
-
...result,
|
6675
|
-
dataset: newDatasets,
|
6676
|
-
datasetReshapeInfo: [
|
6677
|
-
{
|
6678
|
-
id: '1D1M',
|
6679
|
-
index: 0,
|
6680
|
-
foldInfo,
|
6681
|
-
unfoldInfo
|
6682
|
-
}
|
6683
|
-
]
|
6684
|
-
};
|
6060
|
+
dualChartTypeSecondary,
|
6061
|
+
datasetSecondary,
|
6062
|
+
labelSecondary,
|
6063
|
+
tooltipSecondary,
|
6064
|
+
progressive,
|
6065
|
+
barStyle_barStyle,
|
6066
|
+
pointStyle_pointStyle,
|
6067
|
+
pointStateDimensionHover,
|
6068
|
+
lineStyle_lineStyle,
|
6069
|
+
areaStyle_areaStyle
|
6070
|
+
]),
|
6071
|
+
xBand,
|
6072
|
+
yLinearPrimary,
|
6073
|
+
yLinearSecondary,
|
6074
|
+
color_color,
|
6075
|
+
background_backgroundColor,
|
6076
|
+
verticalCrosshairRect,
|
6077
|
+
annotationPoint_annotationPoint,
|
6078
|
+
annotationVerticalLine_annotationVerticalLine,
|
6079
|
+
annotationHorizontalLine_annotationHorizontalLine,
|
6080
|
+
annotationArea_annotationArea
|
6081
|
+
]),
|
6082
|
+
pivotRowDimensions,
|
6083
|
+
pivotColumnDimensions,
|
6084
|
+
pivotDiscreteLegend
|
6085
|
+
];
|
6086
|
+
const dualAxisSpecPipeline = [
|
6087
|
+
pivotAdapter_pivotAdapter(dualAxis, pivotDualAxis)
|
6088
|
+
];
|
6089
|
+
const registerDualAxis = ()=>{
|
6090
|
+
Builder._advancedPipelineMap.dualAxis = dualAxisAdvancedPipeline;
|
6091
|
+
Builder._specPipelineMap.dualAxis = dualAxisSpecPipeline;
|
6685
6092
|
};
|
6686
|
-
const
|
6687
|
-
const result = {
|
6688
|
-
...advancedVSeed
|
6689
|
-
};
|
6093
|
+
const encodingForPie = (advancedVSeed, context)=>{
|
6690
6094
|
const { vseed } = context;
|
6691
|
-
const {
|
6692
|
-
|
6693
|
-
const
|
6694
|
-
if (
|
6695
|
-
|
6696
|
-
|
6697
|
-
|
6698
|
-
|
6699
|
-
const newDatasets = [];
|
6700
|
-
const datasetReshapeInfo = [];
|
6701
|
-
measureGroups.forEach((measureGroup, index)=>{
|
6702
|
-
const measures = measureGroup.children;
|
6703
|
-
if (!measures) return;
|
6704
|
-
const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
|
6705
|
-
const groupId = measureGroup.id;
|
6706
|
-
const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeFor1D1M(dataset, commonDimensions, measures, {
|
6707
|
-
foldMeasureId: FoldMeasureId,
|
6708
|
-
foldMeasureName: FoldMeasureName,
|
6709
|
-
foldMeasureValue: FoldMeasureValue + groupId,
|
6710
|
-
unfoldDimensionGroup: UnfoldDimensionGroup
|
6711
|
-
});
|
6712
|
-
const reshapeInfo = {
|
6713
|
-
id: groupId,
|
6714
|
-
index,
|
6715
|
-
foldInfo,
|
6716
|
-
unfoldInfo
|
6717
|
-
};
|
6718
|
-
newDatasets.push(newSubDataset);
|
6719
|
-
datasetReshapeInfo.push(reshapeInfo);
|
6720
|
-
});
|
6721
|
-
return {
|
6722
|
-
...result,
|
6723
|
-
dataset: newDatasets,
|
6724
|
-
datasetReshapeInfo: datasetReshapeInfo
|
6095
|
+
const { dimensions } = advancedVSeed;
|
6096
|
+
if (!dimensions) return advancedVSeed;
|
6097
|
+
const encoding = vseed.encoding;
|
6098
|
+
if (encoding) return {
|
6099
|
+
...advancedVSeed,
|
6100
|
+
encoding: {
|
6101
|
+
...encoding
|
6102
|
+
}
|
6725
6103
|
};
|
6726
|
-
|
6727
|
-
|
6728
|
-
|
6729
|
-
|
6104
|
+
const mergedEncoding = {
|
6105
|
+
angle: dimensions.slice(0, 1).map((item)=>item.id),
|
6106
|
+
color: dimensions.slice(0).map((item)=>item.id),
|
6107
|
+
detail: dimensions.slice(0).map((item)=>item.id),
|
6108
|
+
tooltip: dimensions.map((item)=>item.id),
|
6109
|
+
label: [],
|
6110
|
+
row: [],
|
6111
|
+
column: []
|
6730
6112
|
};
|
6731
|
-
const { datasetReshapeInfo } = advancedVSeed;
|
6732
|
-
if (!datasetReshapeInfo) return result;
|
6733
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
|
6734
|
-
const { foldInfo, unfoldInfo } = cur;
|
6735
|
-
const radius = [
|
6736
|
-
foldInfo.measureValue
|
6737
|
-
];
|
6738
|
-
const angle = [
|
6739
|
-
unfoldInfo.groupId
|
6740
|
-
];
|
6741
|
-
const group = [
|
6742
|
-
unfoldInfo.groupId
|
6743
|
-
];
|
6744
|
-
const color = [
|
6745
|
-
unfoldInfo.groupId
|
6746
|
-
];
|
6747
|
-
return [
|
6748
|
-
...prev,
|
6749
|
-
{
|
6750
|
-
angle,
|
6751
|
-
radius,
|
6752
|
-
group,
|
6753
|
-
color
|
6754
|
-
}
|
6755
|
-
];
|
6756
|
-
}, []);
|
6757
6113
|
return {
|
6758
|
-
...
|
6759
|
-
encoding
|
6114
|
+
...advancedVSeed,
|
6115
|
+
encoding: mergedEncoding
|
6760
6116
|
};
|
6761
6117
|
};
|
6762
6118
|
const pieAdvancedPipeline = [
|
6763
6119
|
initAdvancedVSeed_initAdvancedVSeed,
|
6764
6120
|
autoMeasures_autoMeasures,
|
6765
6121
|
autoDimensions_autoDimensions,
|
6122
|
+
encodingForPie,
|
6766
6123
|
pivotAdapter([
|
6767
|
-
|
6124
|
+
reshapeWithEncoding
|
6768
6125
|
], [
|
6769
|
-
|
6126
|
+
pivotReshapeWithEncoding
|
6770
6127
|
]),
|
6771
|
-
encodingPie,
|
6772
6128
|
pieConfig,
|
6773
6129
|
theme_theme,
|
6774
6130
|
annotation_annotation
|
@@ -6778,15 +6134,15 @@ const initPie = (spec, context)=>{
|
|
6778
6134
|
...spec
|
6779
6135
|
};
|
6780
6136
|
const { advancedVSeed } = context;
|
6781
|
-
const {
|
6782
|
-
|
6137
|
+
const { datasetReshapeInfo, dataset } = advancedVSeed;
|
6138
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
6783
6139
|
const showStroke = dataset.length <= 30;
|
6784
6140
|
result.type = 'pie';
|
6785
6141
|
result.outerRadius = 0.8;
|
6786
6142
|
result.innerRadius = 0;
|
6787
|
-
result.valueField =
|
6788
|
-
result.categoryField =
|
6789
|
-
result.seriesField =
|
6143
|
+
result.valueField = foldInfo.measureValue;
|
6144
|
+
result.categoryField = unfoldInfo.encodingAngle;
|
6145
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
6790
6146
|
result.padding = 0;
|
6791
6147
|
result.region = [
|
6792
6148
|
{
|
@@ -6855,12 +6211,12 @@ const donutAdvancedPipeline = [
|
|
6855
6211
|
initAdvancedVSeed_initAdvancedVSeed,
|
6856
6212
|
autoMeasures_autoMeasures,
|
6857
6213
|
autoDimensions_autoDimensions,
|
6214
|
+
encodingForPie,
|
6858
6215
|
pivotAdapter([
|
6859
|
-
|
6216
|
+
reshapeWithEncoding
|
6860
6217
|
], [
|
6861
|
-
|
6218
|
+
pivotReshapeWithEncoding
|
6862
6219
|
]),
|
6863
|
-
encodingPie,
|
6864
6220
|
donutConfig,
|
6865
6221
|
theme_theme,
|
6866
6222
|
annotation_annotation
|
@@ -6870,15 +6226,15 @@ const initDonut = (spec, context)=>{
|
|
6870
6226
|
...spec
|
6871
6227
|
};
|
6872
6228
|
const { advancedVSeed } = context;
|
6873
|
-
const {
|
6874
|
-
|
6229
|
+
const { datasetReshapeInfo, dataset } = advancedVSeed;
|
6230
|
+
const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
|
6875
6231
|
const showStroke = dataset.length <= 30;
|
6876
6232
|
result.type = 'pie';
|
6877
6233
|
result.outerRadius = 0.8;
|
6878
6234
|
result.innerRadius = 0.8 * result.outerRadius;
|
6879
|
-
result.valueField =
|
6880
|
-
result.categoryField =
|
6881
|
-
result.seriesField =
|
6235
|
+
result.valueField = foldInfo.measureValue;
|
6236
|
+
result.categoryField = unfoldInfo.encodingDetail;
|
6237
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
6882
6238
|
result.padding = 0;
|
6883
6239
|
result.region = [
|
6884
6240
|
{
|
@@ -6942,54 +6298,52 @@ const registerDonut = ()=>{
|
|
6942
6298
|
Builder._advancedPipelineMap.donut = donutAdvancedPipeline;
|
6943
6299
|
Builder._specPipelineMap.donut = donutSpecPipeline;
|
6944
6300
|
};
|
6945
|
-
const
|
6946
|
-
const
|
6947
|
-
|
6948
|
-
|
6949
|
-
const
|
6950
|
-
if (
|
6951
|
-
|
6952
|
-
|
6953
|
-
|
6954
|
-
|
6955
|
-
|
6956
|
-
|
6957
|
-
foldInfo.measureValue
|
6958
|
-
];
|
6959
|
-
const angle = [
|
6960
|
-
isZeroDimension ? foldInfo.measureName : angleDimension?.id
|
6961
|
-
];
|
6962
|
-
const group = [
|
6963
|
-
is1D1M ? angleDimension?.id : unfoldInfo.groupId
|
6964
|
-
];
|
6965
|
-
const color = [
|
6966
|
-
is1D1M ? angleDimension?.id : unfoldInfo.groupId
|
6301
|
+
const encodingForRose = (advancedVSeed, context)=>{
|
6302
|
+
const { vseed } = context;
|
6303
|
+
const { dimensions } = advancedVSeed;
|
6304
|
+
if (!dimensions) return advancedVSeed;
|
6305
|
+
const encoding = vseed.encoding;
|
6306
|
+
if (encoding) {
|
6307
|
+
const angle = encoding.angle || [];
|
6308
|
+
const detail = encoding.detail || [];
|
6309
|
+
const color = encoding.color || [];
|
6310
|
+
const mergedDetail = [
|
6311
|
+
...color.filter((d)=>!angle.includes(d)),
|
6312
|
+
...detail
|
6967
6313
|
];
|
6968
|
-
return
|
6969
|
-
...
|
6970
|
-
{
|
6971
|
-
|
6972
|
-
|
6973
|
-
group,
|
6974
|
-
color
|
6314
|
+
return {
|
6315
|
+
...advancedVSeed,
|
6316
|
+
encoding: {
|
6317
|
+
...encoding,
|
6318
|
+
detail: mergedDetail
|
6975
6319
|
}
|
6976
|
-
|
6977
|
-
}
|
6320
|
+
};
|
6321
|
+
}
|
6322
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
6323
|
+
const mergedEncoding = {
|
6324
|
+
angle: dimensions.slice(0, 1).map((item)=>item.id),
|
6325
|
+
color: dimensions.slice(1).map((item)=>item.id),
|
6326
|
+
detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
6327
|
+
tooltip: dimensions.map((item)=>item.id),
|
6328
|
+
label: [],
|
6329
|
+
row: [],
|
6330
|
+
column: []
|
6331
|
+
};
|
6978
6332
|
return {
|
6979
|
-
...
|
6980
|
-
encoding
|
6333
|
+
...advancedVSeed,
|
6334
|
+
encoding: mergedEncoding
|
6981
6335
|
};
|
6982
6336
|
};
|
6983
6337
|
const roseAdvancedPipeline = [
|
6984
6338
|
initAdvancedVSeed_initAdvancedVSeed,
|
6985
6339
|
autoMeasures_autoMeasures,
|
6986
6340
|
autoDimensions_autoDimensions,
|
6341
|
+
encodingForRose,
|
6987
6342
|
pivotAdapter([
|
6988
|
-
|
6343
|
+
reshapeWithEncoding
|
6989
6344
|
], [
|
6990
|
-
|
6345
|
+
pivotReshapeWithEncoding
|
6991
6346
|
]),
|
6992
|
-
encodingRose,
|
6993
6347
|
roseConfig,
|
6994
6348
|
theme_theme,
|
6995
6349
|
markStyle_markStyle,
|
@@ -7000,13 +6354,12 @@ const initRose = (spec, context)=>{
|
|
7000
6354
|
...spec
|
7001
6355
|
};
|
7002
6356
|
const { advancedVSeed } = context;
|
7003
|
-
const {
|
7004
|
-
const { foldInfo } = datasetReshapeInfo[0];
|
7005
|
-
if (!encoding[0].radius || !encoding[0].angle || !encoding[0].group) return result;
|
6357
|
+
const { dataset, datasetReshapeInfo } = advancedVSeed;
|
6358
|
+
const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
|
7006
6359
|
result.type = 'rose';
|
7007
|
-
result.categoryField =
|
7008
|
-
result.
|
7009
|
-
result.
|
6360
|
+
result.categoryField = unfoldInfo.encodingAngle;
|
6361
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
6362
|
+
result.valueField = foldInfo.measureValue;
|
7010
6363
|
result.padding = 0;
|
7011
6364
|
result.outerRadius = 0.9;
|
7012
6365
|
result.innerRadius = 0;
|
@@ -7154,12 +6507,12 @@ const roseParallelAdvancedPipeline = [
|
|
7154
6507
|
initAdvancedVSeed_initAdvancedVSeed,
|
7155
6508
|
autoMeasures_autoMeasures,
|
7156
6509
|
autoDimensions_autoDimensions,
|
6510
|
+
encodingForRose,
|
7157
6511
|
pivotAdapter([
|
7158
|
-
|
6512
|
+
reshapeWithEncoding
|
7159
6513
|
], [
|
7160
|
-
|
6514
|
+
pivotReshapeWithEncoding
|
7161
6515
|
]),
|
7162
|
-
encodingRose,
|
7163
6516
|
roseParallelConfig,
|
7164
6517
|
theme_theme,
|
7165
6518
|
markStyle_markStyle,
|
@@ -7170,19 +6523,18 @@ const initRoseParallel = (spec, context)=>{
|
|
7170
6523
|
...spec
|
7171
6524
|
};
|
7172
6525
|
const { advancedVSeed } = context;
|
7173
|
-
const {
|
6526
|
+
const { datasetReshapeInfo, dataset, dimensions } = advancedVSeed;
|
7174
6527
|
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
7175
|
-
if (!encoding[0].radius || !encoding[0].angle || !encoding[0].group) return result;
|
7176
6528
|
const sameDimensionsMode = dimensions.length > 1 && dimensions.every((dim)=>dim.id === dimensions[0].id);
|
7177
6529
|
result.type = 'rose';
|
7178
6530
|
result.categoryField = sameDimensionsMode ? [
|
7179
|
-
|
6531
|
+
unfoldInfo.encodingAngle
|
7180
6532
|
] : [
|
7181
|
-
|
7182
|
-
unfoldInfo.
|
6533
|
+
unfoldInfo.encodingAngle,
|
6534
|
+
unfoldInfo.encodingDetail
|
7183
6535
|
];
|
7184
|
-
result.valueField =
|
7185
|
-
result.seriesField =
|
6536
|
+
result.valueField = foldInfo.measureValue;
|
6537
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
7186
6538
|
result.padding = 0;
|
7187
6539
|
result.outerRadius = 0.9;
|
7188
6540
|
result.innerRadius = 0;
|
@@ -7259,54 +6611,52 @@ const registerRoseParallel = ()=>{
|
|
7259
6611
|
Builder._advancedPipelineMap.roseParallel = roseParallelAdvancedPipeline;
|
7260
6612
|
Builder._specPipelineMap.roseParallel = roseParallelSpecPipeline;
|
7261
6613
|
};
|
7262
|
-
const
|
7263
|
-
const
|
7264
|
-
|
7265
|
-
|
7266
|
-
const
|
7267
|
-
if (
|
7268
|
-
|
7269
|
-
|
7270
|
-
|
7271
|
-
const
|
7272
|
-
|
7273
|
-
|
7274
|
-
];
|
7275
|
-
const radius = [
|
7276
|
-
foldInfo.measureValue
|
7277
|
-
];
|
7278
|
-
const group = [
|
7279
|
-
unfoldInfo.groupId
|
7280
|
-
];
|
7281
|
-
const color = [
|
7282
|
-
unfoldInfo.groupId
|
6614
|
+
const encodingForRadar = (advancedVSeed, context)=>{
|
6615
|
+
const { vseed } = context;
|
6616
|
+
const { dimensions } = advancedVSeed;
|
6617
|
+
if (!dimensions) return advancedVSeed;
|
6618
|
+
const encoding = vseed.encoding;
|
6619
|
+
if (encoding) {
|
6620
|
+
const angle = encoding.angle || [];
|
6621
|
+
const detail = encoding.detail || [];
|
6622
|
+
const color = encoding.color || [];
|
6623
|
+
const mergedDetail = [
|
6624
|
+
...color.filter((d)=>!angle.includes(d)),
|
6625
|
+
...detail
|
7283
6626
|
];
|
7284
|
-
return
|
7285
|
-
...
|
7286
|
-
{
|
7287
|
-
|
7288
|
-
|
7289
|
-
group,
|
7290
|
-
color
|
6627
|
+
return {
|
6628
|
+
...advancedVSeed,
|
6629
|
+
encoding: {
|
6630
|
+
...encoding,
|
6631
|
+
detail: mergedDetail
|
7291
6632
|
}
|
7292
|
-
|
7293
|
-
}
|
6633
|
+
};
|
6634
|
+
}
|
6635
|
+
const mergedEncoding = {
|
6636
|
+
angle: dimensions.slice(0, 1).map((item)=>item.id),
|
6637
|
+
color: dimensions.slice(1).map((item)=>item.id),
|
6638
|
+
detail: dimensions.slice(1).map((item)=>item.id),
|
6639
|
+
tooltip: dimensions.map((item)=>item.id),
|
6640
|
+
label: [],
|
6641
|
+
row: [],
|
6642
|
+
column: []
|
6643
|
+
};
|
7294
6644
|
return {
|
7295
|
-
...
|
7296
|
-
encoding
|
6645
|
+
...advancedVSeed,
|
6646
|
+
encoding: mergedEncoding
|
7297
6647
|
};
|
7298
6648
|
};
|
7299
6649
|
const radarAdvancedPipeline = [
|
7300
6650
|
initAdvancedVSeed_initAdvancedVSeed,
|
7301
6651
|
autoMeasures_autoMeasures,
|
7302
6652
|
autoDimensions_autoDimensions,
|
6653
|
+
encodingForRadar,
|
7303
6654
|
pivotAdapter([
|
7304
|
-
|
6655
|
+
reshapeWithEncoding
|
7305
6656
|
], [
|
7306
|
-
|
6657
|
+
pivotReshapeWithEncoding
|
7307
6658
|
]),
|
7308
|
-
|
7309
|
-
sort_sortLegend,
|
6659
|
+
sortLegend_sortLegend,
|
7310
6660
|
radarConfig,
|
7311
6661
|
theme_theme,
|
7312
6662
|
markStyle_markStyle,
|
@@ -7317,12 +6667,12 @@ const initRadar = (spec, context)=>{
|
|
7317
6667
|
...spec
|
7318
6668
|
};
|
7319
6669
|
const { advancedVSeed } = context;
|
7320
|
-
const {
|
7321
|
-
|
6670
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
6671
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
7322
6672
|
result.type = 'radar';
|
7323
|
-
result.angleField =
|
7324
|
-
result.radiusField =
|
7325
|
-
result.seriesField =
|
6673
|
+
result.angleField = unfoldInfo.encodingAngle;
|
6674
|
+
result.radiusField = foldInfo.measureValue;
|
6675
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
7326
6676
|
result.padding = 0;
|
7327
6677
|
result.region = [
|
7328
6678
|
{
|
@@ -7434,47 +6784,40 @@ const registerRadar = ()=>{
|
|
7434
6784
|
Builder._advancedPipelineMap.radar = radarAdvancedPipeline;
|
7435
6785
|
Builder._specPipelineMap.radar = radarSpecPipeline;
|
7436
6786
|
};
|
7437
|
-
const
|
7438
|
-
const
|
7439
|
-
|
6787
|
+
const encodingForFunnel = (advancedVSeed, context)=>{
|
6788
|
+
const { vseed } = context;
|
6789
|
+
const { dimensions } = advancedVSeed;
|
6790
|
+
if (!dimensions) return advancedVSeed;
|
6791
|
+
const encoding = vseed.encoding;
|
6792
|
+
if (encoding) return {
|
6793
|
+
...advancedVSeed,
|
6794
|
+
encoding: {
|
6795
|
+
...encoding
|
6796
|
+
}
|
6797
|
+
};
|
6798
|
+
const mergedEncoding = {
|
6799
|
+
color: dimensions.slice(0).map((item)=>item.id),
|
6800
|
+
detail: dimensions.slice(0).map((item)=>item.id),
|
6801
|
+
tooltip: dimensions.map((item)=>item.id),
|
6802
|
+
label: [],
|
6803
|
+
row: [],
|
6804
|
+
column: []
|
7440
6805
|
};
|
7441
|
-
const { datasetReshapeInfo } = advancedVSeed;
|
7442
|
-
if (!datasetReshapeInfo) return result;
|
7443
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
|
7444
|
-
const { foldInfo, unfoldInfo } = cur;
|
7445
|
-
const size = [
|
7446
|
-
foldInfo.measureValue
|
7447
|
-
];
|
7448
|
-
const group = [
|
7449
|
-
unfoldInfo.groupId
|
7450
|
-
];
|
7451
|
-
const color = [
|
7452
|
-
foldInfo.measureValue
|
7453
|
-
];
|
7454
|
-
return [
|
7455
|
-
...prev,
|
7456
|
-
{
|
7457
|
-
size,
|
7458
|
-
group,
|
7459
|
-
color
|
7460
|
-
}
|
7461
|
-
];
|
7462
|
-
}, []);
|
7463
6806
|
return {
|
7464
|
-
...
|
7465
|
-
encoding
|
6807
|
+
...advancedVSeed,
|
6808
|
+
encoding: mergedEncoding
|
7466
6809
|
};
|
7467
6810
|
};
|
7468
6811
|
const funnelAdvancedPipeline = [
|
7469
6812
|
initAdvancedVSeed_initAdvancedVSeed,
|
7470
6813
|
autoMeasures_autoMeasures,
|
7471
6814
|
autoDimensions_autoDimensions,
|
6815
|
+
encodingForFunnel,
|
7472
6816
|
pivotAdapter([
|
7473
|
-
|
6817
|
+
reshapeWithEncoding
|
7474
6818
|
], [
|
7475
|
-
|
6819
|
+
pivotReshapeWithEncoding
|
7476
6820
|
]),
|
7477
|
-
encodingFunnel,
|
7478
6821
|
funnelConfig,
|
7479
6822
|
theme_theme,
|
7480
6823
|
annotation_annotation
|
@@ -7484,11 +6827,12 @@ const initFunnel = (spec, context)=>{
|
|
7484
6827
|
...spec
|
7485
6828
|
};
|
7486
6829
|
const { advancedVSeed } = context;
|
7487
|
-
const {
|
7488
|
-
|
6830
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
6831
|
+
const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
|
7489
6832
|
result.type = 'funnel';
|
7490
|
-
result.valueField =
|
7491
|
-
result.categoryField =
|
6833
|
+
result.valueField = foldInfo.measureValue;
|
6834
|
+
result.categoryField = unfoldInfo.encodingDetail;
|
6835
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
7492
6836
|
result.padding = 0;
|
7493
6837
|
result.isTransform = true;
|
7494
6838
|
result.shape = 'rect';
|
@@ -7503,7 +6847,7 @@ const initFunnel = (spec, context)=>{
|
|
7503
6847
|
style: {
|
7504
6848
|
cornerRadius: 4,
|
7505
6849
|
fill: {
|
7506
|
-
field:
|
6850
|
+
field: unfoldInfo.encodingColorId,
|
7507
6851
|
scale: 'color'
|
7508
6852
|
}
|
7509
6853
|
},
|
@@ -7519,99 +6863,13 @@ const initFunnel = (spec, context)=>{
|
|
7519
6863
|
result.animation = true;
|
7520
6864
|
return result;
|
7521
6865
|
};
|
7522
|
-
const linearColor = (spec, context)=>{
|
7523
|
-
const result = {
|
7524
|
-
...spec
|
7525
|
-
};
|
7526
|
-
const { advancedVSeed } = context;
|
7527
|
-
const { datasetReshapeInfo, chartType, encoding } = advancedVSeed;
|
7528
|
-
const baseConfig = advancedVSeed.config[chartType];
|
7529
|
-
if (!baseConfig || !baseConfig.color) return result;
|
7530
|
-
const { color } = baseConfig;
|
7531
|
-
const { colorScheme } = color;
|
7532
|
-
result.color = {
|
7533
|
-
type: 'linear',
|
7534
|
-
domain: [
|
7535
|
-
{
|
7536
|
-
dataId: datasetReshapeInfo[0].id,
|
7537
|
-
fields: encoding?.[0]?.color
|
7538
|
-
}
|
7539
|
-
],
|
7540
|
-
range: colorScheme
|
7541
|
-
};
|
7542
|
-
return result;
|
7543
|
-
};
|
7544
|
-
const colorLegend = (spec, context)=>{
|
7545
|
-
const result = {
|
7546
|
-
...spec
|
7547
|
-
};
|
7548
|
-
const { advancedVSeed } = context;
|
7549
|
-
const { chartType } = advancedVSeed;
|
7550
|
-
const baseConfig = advancedVSeed.config[chartType];
|
7551
|
-
const { encoding } = advancedVSeed;
|
7552
|
-
if (!encoding[0].color) return result;
|
7553
|
-
if (!baseConfig || !baseConfig.legend) return result;
|
7554
|
-
const { legend } = baseConfig;
|
7555
|
-
const { enable, position = 'bottom' } = legend || {};
|
7556
|
-
const orient = [
|
7557
|
-
'bottom',
|
7558
|
-
'bottomLeft',
|
7559
|
-
'bottomRight',
|
7560
|
-
'bl',
|
7561
|
-
'br'
|
7562
|
-
].includes(position) ? 'bottom' : [
|
7563
|
-
'top',
|
7564
|
-
'topLeft',
|
7565
|
-
'topRight',
|
7566
|
-
'tl',
|
7567
|
-
'tr'
|
7568
|
-
].includes(position) ? 'top' : [
|
7569
|
-
'left',
|
7570
|
-
'leftTop',
|
7571
|
-
'leftBottom',
|
7572
|
-
'lt',
|
7573
|
-
'lb'
|
7574
|
-
].includes(position) ? 'left' : 'right';
|
7575
|
-
const legendPosition = [
|
7576
|
-
'topLeft',
|
7577
|
-
'bottomLeft',
|
7578
|
-
'leftTop',
|
7579
|
-
'rightTop',
|
7580
|
-
'lt',
|
7581
|
-
'rt',
|
7582
|
-
'tl',
|
7583
|
-
'bl'
|
7584
|
-
].includes(position) ? 'start' : [
|
7585
|
-
'topRight',
|
7586
|
-
'bottomRight',
|
7587
|
-
'leftBottom',
|
7588
|
-
'rightBottom',
|
7589
|
-
'lb',
|
7590
|
-
'rb',
|
7591
|
-
'rt',
|
7592
|
-
'br'
|
7593
|
-
].includes(position) ? 'end' : 'middle';
|
7594
|
-
result.legends = {
|
7595
|
-
type: 'color',
|
7596
|
-
visible: enable,
|
7597
|
-
orient,
|
7598
|
-
position: legendPosition,
|
7599
|
-
field: encoding[0].color[0],
|
7600
|
-
inverse: !![
|
7601
|
-
'left',
|
7602
|
-
'right'
|
7603
|
-
].includes(orient)
|
7604
|
-
};
|
7605
|
-
return result;
|
7606
|
-
};
|
7607
6866
|
const funnel = [
|
7608
6867
|
initFunnel,
|
7609
|
-
linearColor,
|
7610
6868
|
background_backgroundColor,
|
7611
6869
|
datasetXY,
|
7612
6870
|
label_label,
|
7613
6871
|
tooltip_tooltip,
|
7614
|
-
|
6872
|
+
discreteLegend,
|
7615
6873
|
annotationPoint_annotationPoint,
|
7616
6874
|
annotationVerticalLine_annotationVerticalLine,
|
7617
6875
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -7624,12 +6882,11 @@ const pivotFunnel = [
|
|
7624
6882
|
datasetPivot,
|
7625
6883
|
pivotIndicators_pivotIndicators([
|
7626
6884
|
initFunnel,
|
7627
|
-
linearColor,
|
7628
6885
|
background_backgroundColor,
|
7629
6886
|
datasetXY,
|
7630
6887
|
label_label,
|
7631
6888
|
tooltip_tooltip,
|
7632
|
-
|
6889
|
+
discreteLegend,
|
7633
6890
|
annotationPoint_annotationPoint,
|
7634
6891
|
annotationVerticalLine_annotationVerticalLine,
|
7635
6892
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -7645,49 +6902,42 @@ const registerFunnel = ()=>{
|
|
7645
6902
|
Builder._advancedPipelineMap.funnel = funnelAdvancedPipeline;
|
7646
6903
|
Builder._specPipelineMap.funnel = funnelSpecPipeline;
|
7647
6904
|
};
|
7648
|
-
const
|
7649
|
-
const
|
7650
|
-
|
6905
|
+
const encodingForHeatmap = (advancedVSeed, context)=>{
|
6906
|
+
const { vseed } = context;
|
6907
|
+
const { dimensions } = advancedVSeed;
|
6908
|
+
if (!dimensions) return advancedVSeed;
|
6909
|
+
const encoding = vseed.encoding;
|
6910
|
+
if (encoding) return {
|
6911
|
+
...advancedVSeed,
|
6912
|
+
encoding: {
|
6913
|
+
...encoding
|
6914
|
+
}
|
6915
|
+
};
|
6916
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
6917
|
+
const mergedEncoding = {
|
6918
|
+
x: dimensions.slice(0, 1).map((item)=>item.id),
|
6919
|
+
y: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
6920
|
+
color: dimensions.slice(0).map((item)=>item.id),
|
6921
|
+
tooltip: dimensions.map((item)=>item.id),
|
6922
|
+
label: [],
|
6923
|
+
row: [],
|
6924
|
+
column: []
|
7651
6925
|
};
|
7652
|
-
const { datasetReshapeInfo, dimensions } = advancedVSeed;
|
7653
|
-
if (!datasetReshapeInfo || !dimensions) return result;
|
7654
|
-
const xDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
|
7655
|
-
const isZeroDimension = 0 === dimensions.length;
|
7656
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
|
7657
|
-
const { foldInfo, unfoldInfo } = cur;
|
7658
|
-
const x = [
|
7659
|
-
isZeroDimension ? foldInfo.measureName : xDimension?.id
|
7660
|
-
];
|
7661
|
-
const y = [
|
7662
|
-
unfoldInfo.groupName
|
7663
|
-
];
|
7664
|
-
const color = [
|
7665
|
-
foldInfo.measureValue
|
7666
|
-
];
|
7667
|
-
return [
|
7668
|
-
...prev,
|
7669
|
-
{
|
7670
|
-
x,
|
7671
|
-
y,
|
7672
|
-
color
|
7673
|
-
}
|
7674
|
-
];
|
7675
|
-
}, []);
|
7676
6926
|
return {
|
7677
|
-
...
|
7678
|
-
encoding
|
6927
|
+
...advancedVSeed,
|
6928
|
+
encoding: mergedEncoding
|
7679
6929
|
};
|
7680
6930
|
};
|
7681
6931
|
const heatmapAdvancedPipeline = [
|
7682
6932
|
initAdvancedVSeed_initAdvancedVSeed,
|
7683
6933
|
autoMeasures_autoMeasures,
|
7684
6934
|
autoDimensions_autoDimensions,
|
6935
|
+
encodingForHeatmap,
|
7685
6936
|
pivotAdapter([
|
7686
|
-
|
6937
|
+
reshapeWithEncoding
|
7687
6938
|
], [
|
7688
|
-
|
6939
|
+
pivotReshapeWithEncoding
|
7689
6940
|
]),
|
7690
|
-
encodingMatrix,
|
7691
6941
|
sortXBandAxis,
|
7692
6942
|
heatmapConfig,
|
7693
6943
|
theme_theme,
|
@@ -7709,23 +6959,20 @@ const initHeatmap = (spec, context)=>{
|
|
7709
6959
|
...spec
|
7710
6960
|
};
|
7711
6961
|
const { advancedVSeed } = context;
|
7712
|
-
const {
|
7713
|
-
|
6962
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
6963
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
7714
6964
|
result.type = 'heatmap';
|
7715
6965
|
result.direction = 'vertical';
|
7716
|
-
result.xField =
|
7717
|
-
result.yField =
|
7718
|
-
result.
|
6966
|
+
result.xField = unfoldInfo.encodingX;
|
6967
|
+
result.yField = unfoldInfo.encodingY;
|
6968
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
6969
|
+
result.valueField = foldInfo.measureValue;
|
7719
6970
|
result.padding = 0;
|
7720
6971
|
result.cell = {
|
7721
6972
|
style: {
|
7722
6973
|
shape: 'rect',
|
7723
6974
|
stroke: '#ffffff',
|
7724
|
-
lineWidth: 1
|
7725
|
-
fill: {
|
7726
|
-
field: encoding[0].color[0],
|
7727
|
-
scale: 'color'
|
7728
|
-
}
|
6975
|
+
lineWidth: 1
|
7729
6976
|
}
|
7730
6977
|
};
|
7731
6978
|
result.axes = [
|
@@ -7750,12 +6997,11 @@ const initHeatmap = (spec, context)=>{
|
|
7750
6997
|
};
|
7751
6998
|
const heatmap = [
|
7752
6999
|
initHeatmap,
|
7753
|
-
linearColor,
|
7754
7000
|
background_backgroundColor,
|
7755
7001
|
datasetXY,
|
7756
7002
|
label_label,
|
7757
7003
|
labelColorInversion,
|
7758
|
-
|
7004
|
+
discreteLegend,
|
7759
7005
|
tooltip_tooltip,
|
7760
7006
|
pointStyle_pointStyle,
|
7761
7007
|
pointStateDimensionHover,
|
@@ -7772,12 +7018,11 @@ const pivotHeatmap = [
|
|
7772
7018
|
datasetPivot,
|
7773
7019
|
pivotIndicators_pivotIndicators([
|
7774
7020
|
initHeatmap,
|
7775
|
-
linearColor,
|
7776
7021
|
background_backgroundColor,
|
7777
7022
|
datasetXY,
|
7778
7023
|
label_label,
|
7779
7024
|
labelColorInversion,
|
7780
|
-
|
7025
|
+
discreteLegend,
|
7781
7026
|
tooltip_tooltip,
|
7782
7027
|
pointStyle_pointStyle,
|
7783
7028
|
pointStateDimensionHover,
|
@@ -8045,12 +7290,6 @@ const lightTheme = ()=>{
|
|
8045
7290
|
yAxis: linearAxis,
|
8046
7291
|
crosshairLine
|
8047
7292
|
},
|
8048
|
-
areaRange: {
|
8049
|
-
...baseConfig,
|
8050
|
-
xAxis: bandAxis,
|
8051
|
-
yAxis: linearAxis,
|
8052
|
-
crosshairLine
|
8053
|
-
},
|
8054
7293
|
scatter: {
|
8055
7294
|
...baseConfig,
|
8056
7295
|
xAxis: {
|
@@ -8383,12 +7622,6 @@ const darkTheme = ()=>{
|
|
8383
7622
|
yAxis: linearAxis,
|
8384
7623
|
crosshairLine: crosshairLine
|
8385
7624
|
},
|
8386
|
-
areaRange: {
|
8387
|
-
...baseConfig,
|
8388
|
-
xAxis: bandAxis,
|
8389
|
-
yAxis: linearAxis,
|
8390
|
-
crosshairLine: crosshairLine
|
8391
|
-
},
|
8392
7625
|
scatter: {
|
8393
7626
|
...baseConfig,
|
8394
7627
|
xAxis: {
|
@@ -8486,7 +7719,6 @@ const registerAll = ()=>{
|
|
8486
7719
|
registerBarPercent();
|
8487
7720
|
registerArea();
|
8488
7721
|
registerAreaPercent();
|
8489
|
-
registerAreaRange();
|
8490
7722
|
registerScatter();
|
8491
7723
|
registerDualAxis();
|
8492
7724
|
registerPie();
|
@@ -8520,7 +7752,6 @@ const zChartType = z["enum"]([
|
|
8520
7752
|
'barParallel',
|
8521
7753
|
'area',
|
8522
7754
|
'areaPercent',
|
8523
|
-
'areaRange',
|
8524
7755
|
'scatter',
|
8525
7756
|
'dualAxis',
|
8526
7757
|
'rose',
|
@@ -8618,6 +7849,12 @@ const zDualMeasure = z.object({
|
|
8618
7849
|
secondaryMeasures: z.array(zMeasure).or(zMeasure).optional()
|
8619
7850
|
});
|
8620
7851
|
const zDualMeasures = z.array(zDualMeasure);
|
7852
|
+
const zScatterMeasure = z.object({
|
7853
|
+
id: z.string(),
|
7854
|
+
xMeasures: z.array(zMeasure).or(zMeasure).optional(),
|
7855
|
+
yMeasures: z.array(zMeasure).or(zMeasure).optional()
|
7856
|
+
});
|
7857
|
+
const zScatterMeasures = z.array(zScatterMeasure);
|
8621
7858
|
const zFoldInfo = z.object({
|
8622
7859
|
foldMap: z.record(z.string(), z.string().or(z.undefined())),
|
8623
7860
|
measureId: z.string(),
|
@@ -8625,10 +7862,14 @@ const zFoldInfo = z.object({
|
|
8625
7862
|
measureValue: z.string()
|
8626
7863
|
});
|
8627
7864
|
const zUnfoldInfo = z.object({
|
7865
|
+
encodingX: z.string(),
|
7866
|
+
encodingY: z.string(),
|
7867
|
+
encodingColor: z.string(),
|
7868
|
+
encodingColorId: z.string(),
|
7869
|
+
encodingDetail: z.string(),
|
7870
|
+
encodingAngle: z.string(),
|
8628
7871
|
colorItems: z.array(z.string()),
|
8629
|
-
|
8630
|
-
colorIdMap: z.record(z.string(), z.string()),
|
8631
|
-
groupName: z.string()
|
7872
|
+
colorIdMap: z.record(z.string(), z.string())
|
8632
7873
|
});
|
8633
7874
|
const zDatasetReshapeInfo = z.array(z.object({
|
8634
7875
|
id: z.string(),
|
@@ -8637,16 +7878,21 @@ const zDatasetReshapeInfo = z.array(z.object({
|
|
8637
7878
|
foldInfoList: z.array(zFoldInfo).nullish(),
|
8638
7879
|
unfoldInfo: zUnfoldInfo
|
8639
7880
|
}));
|
8640
|
-
const zEncoding = z.
|
7881
|
+
const zEncoding = z.object({
|
8641
7882
|
x: z.array(z.string()).nullish(),
|
8642
7883
|
y: z.array(z.string()).nullish(),
|
8643
|
-
color: z.array(z.string()).nullish(),
|
8644
|
-
group: z.array(z.string()).nullish(),
|
8645
7884
|
angle: z.array(z.string()).nullish(),
|
8646
7885
|
radius: z.array(z.string()).nullish(),
|
7886
|
+
detail: z.array(z.string()).nullish(),
|
7887
|
+
color: z.array(z.string()).nullish(),
|
7888
|
+
size: z.array(z.string()).nullish(),
|
8647
7889
|
tooltip: z.array(z.string()).nullish(),
|
8648
|
-
|
8649
|
-
|
7890
|
+
label: z.array(z.string()).nullish(),
|
7891
|
+
row: z.array(z.string()).nullish(),
|
7892
|
+
column: z.array(z.string()).nullish(),
|
7893
|
+
group: z.array(z.string()).nullish().describe("\u5DF2\u5F03\u7528, \u8BF7\u4F7F\u7528\u989C\u8272\u66FF\u4EE3")
|
7894
|
+
});
|
7895
|
+
const zEncodings = z.array(zEncoding);
|
8650
7896
|
const zXBandAxis = z.object({
|
8651
7897
|
visible: z.boolean().default(true).nullish(),
|
8652
7898
|
labelAutoHide: z.boolean().default(true).nullish(),
|
@@ -8909,7 +8155,6 @@ const zAreaConfig = z.object({
|
|
8909
8155
|
crosshairLine: zCrosshairLine.nullish()
|
8910
8156
|
});
|
8911
8157
|
const zAreaPercentConfig = zAreaConfig;
|
8912
|
-
const zAreaRangeConfig = zAreaConfig;
|
8913
8158
|
const zDualAxisConfig = z.object({
|
8914
8159
|
backgroundColor: zBackgroundColor.nullish(),
|
8915
8160
|
label: zLabel.nullish(),
|
@@ -8964,7 +8209,6 @@ const zConfig = z.object({
|
|
8964
8209
|
barPercent: zBarPercentConfig.nullish(),
|
8965
8210
|
area: zAreaConfig.nullish(),
|
8966
8211
|
areaPercent: zAreaPercentConfig.nullish(),
|
8967
|
-
areaRange: zAreaRangeConfig.nullish(),
|
8968
8212
|
scatter: zScatterConfig.nullish(),
|
8969
8213
|
dualAxis: zDualAxisConfig.nullish(),
|
8970
8214
|
rose: zRoseConfig.nullish(),
|
@@ -9403,6 +8647,7 @@ const zPivotTable = z.object({
|
|
9403
8647
|
const zLine = z.object({
|
9404
8648
|
chartType: z.literal('line'),
|
9405
8649
|
dataset: zDataset.nullish(),
|
8650
|
+
encoding: zEncoding.nullish(),
|
9406
8651
|
dimensions: zDimensions.nullish(),
|
9407
8652
|
measures: zMeasureTree.nullish(),
|
9408
8653
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9427,6 +8672,7 @@ const zLine = z.object({
|
|
9427
8672
|
const zColumn = z.object({
|
9428
8673
|
chartType: z.literal('column'),
|
9429
8674
|
dataset: zDataset.nullish(),
|
8675
|
+
encoding: zEncoding.nullish(),
|
9430
8676
|
dimensions: zDimensions.nullish(),
|
9431
8677
|
measures: zMeasureTree.nullish(),
|
9432
8678
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9449,6 +8695,7 @@ const zColumn = z.object({
|
|
9449
8695
|
const zColumnParallel = z.object({
|
9450
8696
|
chartType: z.literal('columnParallel'),
|
9451
8697
|
dataset: zDataset.nullish(),
|
8698
|
+
encoding: zEncoding.nullish(),
|
9452
8699
|
dimensions: zDimensions.nullish(),
|
9453
8700
|
measures: zMeasureTree.nullish(),
|
9454
8701
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9471,6 +8718,7 @@ const zColumnParallel = z.object({
|
|
9471
8718
|
const zColumnPercent = z.object({
|
9472
8719
|
chartType: z.literal('columnPercent'),
|
9473
8720
|
dataset: zDataset.nullish(),
|
8721
|
+
encoding: zEncoding.nullish(),
|
9474
8722
|
dimensions: zDimensions.nullish(),
|
9475
8723
|
measures: zMeasureTree.nullish(),
|
9476
8724
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9493,6 +8741,7 @@ const zColumnPercent = z.object({
|
|
9493
8741
|
const zBar = z.object({
|
9494
8742
|
chartType: z.literal('bar'),
|
9495
8743
|
dataset: zDataset.nullish(),
|
8744
|
+
encoding: zEncoding.nullish(),
|
9496
8745
|
dimensions: zDimensions.nullish(),
|
9497
8746
|
measures: zMeasureTree.nullish(),
|
9498
8747
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9515,6 +8764,7 @@ const zBar = z.object({
|
|
9515
8764
|
const zBarParallel = z.object({
|
9516
8765
|
chartType: z.literal('barParallel'),
|
9517
8766
|
dataset: zDataset.nullish(),
|
8767
|
+
encoding: zEncoding.nullish(),
|
9518
8768
|
dimensions: zDimensions.nullish(),
|
9519
8769
|
measures: zMeasureTree.nullish(),
|
9520
8770
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9537,6 +8787,7 @@ const zBarParallel = z.object({
|
|
9537
8787
|
const zBarPercent = z.object({
|
9538
8788
|
chartType: z.literal('barPercent'),
|
9539
8789
|
dataset: zDataset.nullish(),
|
8790
|
+
encoding: zEncoding.nullish(),
|
9540
8791
|
dimensions: zDimensions.nullish(),
|
9541
8792
|
measures: zMeasureTree.nullish(),
|
9542
8793
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9559,6 +8810,7 @@ const zBarPercent = z.object({
|
|
9559
8810
|
const zArea = z.object({
|
9560
8811
|
chartType: z.literal('area'),
|
9561
8812
|
dataset: zDataset.nullish(),
|
8813
|
+
encoding: zEncoding.nullish(),
|
9562
8814
|
dimensions: zDimensions.nullish(),
|
9563
8815
|
measures: zMeasureTree.nullish(),
|
9564
8816
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9582,6 +8834,7 @@ const zArea = z.object({
|
|
9582
8834
|
const zAreaPercent = z.object({
|
9583
8835
|
chartType: z.literal('areaPercent'),
|
9584
8836
|
dataset: zDataset.nullish(),
|
8837
|
+
encoding: zEncoding.nullish(),
|
9585
8838
|
dimensions: zDimensions.nullish(),
|
9586
8839
|
measures: zMeasureTree.nullish(),
|
9587
8840
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9602,31 +8855,13 @@ const zAreaPercent = z.object({
|
|
9602
8855
|
annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),
|
9603
8856
|
locale: zLocale.nullish()
|
9604
8857
|
});
|
9605
|
-
const zAreaRange = z.object({
|
9606
|
-
chartType: z.literal('areaRange'),
|
9607
|
-
dataset: zDataset.nullish(),
|
9608
|
-
dimensions: zDimensions.nullish(),
|
9609
|
-
measures: zMeasureTree.nullish(),
|
9610
|
-
backgroundColor: zBackgroundColor.nullish(),
|
9611
|
-
label: zLabel.nullish(),
|
9612
|
-
xAxis: zXBandAxis.nullish(),
|
9613
|
-
yAxis: zYLinearAxis.nullish(),
|
9614
|
-
crosshairLine: zCrosshairLine.nullish(),
|
9615
|
-
theme: zTheme.nullish(),
|
9616
|
-
pointStyle: z.array(zPointStyle).or(zPointStyle).nullish(),
|
9617
|
-
lineStyle: z.array(zLineStyle).or(zLineStyle).nullish(),
|
9618
|
-
areaStyle: z.array(zAreaStyle).or(zAreaStyle).nullish(),
|
9619
|
-
annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),
|
9620
|
-
annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),
|
9621
|
-
annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),
|
9622
|
-
annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),
|
9623
|
-
locale: zLocale.nullish()
|
9624
|
-
});
|
9625
8858
|
const zScatter = z.object({
|
9626
8859
|
chartType: z.literal('scatter'),
|
9627
8860
|
dataset: zDataset.nullish(),
|
8861
|
+
encoding: zEncoding.nullish(),
|
9628
8862
|
dimensions: zDimensions.nullish(),
|
9629
8863
|
measures: zMeasureTree.nullish(),
|
8864
|
+
scatterMeasures: zScatterMeasures.nullish(),
|
9630
8865
|
backgroundColor: zBackgroundColor.nullish(),
|
9631
8866
|
color: zColor.nullish(),
|
9632
8867
|
label: zLabel.nullish(),
|
@@ -9676,6 +8911,7 @@ const zDualAxis = z.object({
|
|
9676
8911
|
const zRose = z.object({
|
9677
8912
|
chartType: z.literal('rose'),
|
9678
8913
|
dataset: zDataset.nullish(),
|
8914
|
+
encoding: zEncoding.nullish(),
|
9679
8915
|
dimensions: zDimensions.nullish(),
|
9680
8916
|
measures: zMeasureTree.nullish(),
|
9681
8917
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9689,6 +8925,7 @@ const zRose = z.object({
|
|
9689
8925
|
const zRoseParallel = z.object({
|
9690
8926
|
chartType: z.literal('roseParallel'),
|
9691
8927
|
dataset: zDataset.nullish(),
|
8928
|
+
encoding: zEncoding.nullish(),
|
9692
8929
|
dimensions: zDimensions.nullish(),
|
9693
8930
|
measures: zMeasureTree.nullish(),
|
9694
8931
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9702,6 +8939,7 @@ const zRoseParallel = z.object({
|
|
9702
8939
|
const zPie = z.object({
|
9703
8940
|
chartType: z.literal('pie'),
|
9704
8941
|
dataset: zDataset.nullish(),
|
8942
|
+
encoding: zEncoding.nullish(),
|
9705
8943
|
dimensions: zDimensions.nullish(),
|
9706
8944
|
measures: zMeasureTree.nullish(),
|
9707
8945
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9715,6 +8953,7 @@ const zPie = z.object({
|
|
9715
8953
|
const zDonut = z.object({
|
9716
8954
|
chartType: z.literal('donut'),
|
9717
8955
|
dataset: zDataset.nullish(),
|
8956
|
+
encoding: zEncoding.nullish(),
|
9718
8957
|
dimensions: zDimensions.nullish(),
|
9719
8958
|
measures: zMeasureTree.nullish(),
|
9720
8959
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9728,6 +8967,7 @@ const zDonut = z.object({
|
|
9728
8967
|
const zRadar = z.object({
|
9729
8968
|
chartType: z.literal('radar'),
|
9730
8969
|
dataset: zDataset.nullish(),
|
8970
|
+
encoding: zEncoding.nullish(),
|
9731
8971
|
dimensions: zDimensions.nullish(),
|
9732
8972
|
measures: zMeasureTree.nullish(),
|
9733
8973
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9741,6 +8981,7 @@ const zRadar = z.object({
|
|
9741
8981
|
const zFunnel = z.object({
|
9742
8982
|
chartType: z.literal('funnel'),
|
9743
8983
|
dataset: zDataset.nullish(),
|
8984
|
+
encoding: zEncoding.nullish(),
|
9744
8985
|
dimensions: zDimensions.nullish(),
|
9745
8986
|
measures: zMeasureTree.nullish(),
|
9746
8987
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9776,7 +9017,6 @@ const zVSeed = z.discriminatedUnion('chartType', [
|
|
9776
9017
|
zBarPercent,
|
9777
9018
|
zArea,
|
9778
9019
|
zAreaPercent,
|
9779
|
-
zAreaRange,
|
9780
9020
|
zScatter,
|
9781
9021
|
zDualAxis,
|
9782
9022
|
zPie,
|
@@ -9794,6 +9034,7 @@ const zAdvancedVSeed = z.object({
|
|
9794
9034
|
dimensions: zDimensionTree,
|
9795
9035
|
measures: zMeasureTree,
|
9796
9036
|
encoding: zEncoding,
|
9037
|
+
encodings: zEncodings,
|
9797
9038
|
config: zConfig,
|
9798
9039
|
analysis: zAnalysis,
|
9799
9040
|
theme: zTheme,
|
@@ -9802,6 +9043,6 @@ const zAdvancedVSeed = z.object({
|
|
9802
9043
|
annotation: zAnnotation,
|
9803
9044
|
locale: zLocale
|
9804
9045
|
});
|
9805
|
-
export { Builder, FoldMeasureId, FoldMeasureName, FoldMeasureValue, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue, ORIGINAL_DATA, Separator, UnfoldDimensionGroup, UnfoldDimensionGroupId,
|
9046
|
+
export { AngleEncoding, Builder, ColorEncoding, ColorIdEncoding, DetailEncoding, FoldMeasureId, FoldMeasureName, FoldMeasureValue, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue, FoldXMeasureValue, FoldYMeasureValue, MeasureName, ORIGINAL_DATA, Separator, UnfoldDimensionGroup, UnfoldDimensionGroupId, XEncoding, YEncoding, areaAdvancedPipeline, areaPercentAdvancedPipeline, areaPercentSpecPipeline, areaSpecPipeline, autoFormatter, autoNumFormatter, barAdvancedPipeline, barParallelAdvancedPipeline, barParallelSpecPipeline, barPercentAdvancedPipeline, barPercentSpecPipeline, barSpecPipeline, columnAdvancedPipeline, columnParallelAdvancedPipeline, columnParallelSpecPipeline, columnPercentAdvancedPipeline, columnPercentSpecPipeline, columnSpecPipeline, createFormatter, createNumFormatter, darkTheme, dataReshapeByEncoding, donutAdvancedPipeline, donutSpecPipeline, dualAxisAdvancedPipeline, dualAxisSpecPipeline, execPipeline, findAllDimensions, findAllMeasures, findDimensionById, findFirstDimension, findFirstMeasure, findMeasureById, foldMeasures, funnelAdvancedPipeline, funnelSpecPipeline, heatmapAdvancedPipeline, heatmapSpecPipeline, i18n, intl, isDimension, isDimensionGroup, isDimensionSelector, isDimensions, isMeasure, isMeasureGroup, isMeasureSelector, isMeasures, isPartialDatumSelector, isPivotChart, isPivotTable, isTable, isVChart, isVTable, isValueSelector, lightTheme, lineAdvancedPipeline, lineSpecPipeline, measureDepth, pieAdvancedPipeline, pieSpecPipeline, pivotTableAdvancedPipeline, pivotTableSpecPipeline, preorderTraverse, radarAdvancedPipeline, radarSpecPipeline, registerAll, registerArea, registerAreaPercent, registerBar, registerBarParallel, registerBarPercent, registerColumn, registerColumnParallel, registerColumnPercent, registerCustomTheme, registerDarkTheme, registerDonut, registerFunnel, registerHeatmap, registerLightTheme, registerLine, registerPie, registerPivotTable, registerRadar, registerRose, registerRoseParallel, registerScatter, registerTable, roseAdvancedPipeline, roseParallelAdvancedPipeline, roseParallelSpecPipeline, roseSpecPipeline, scatterAdvancedPipeline, scatterSpecPipeline, selector_selector as selector, tableAdvancedPipeline, tableSpecPipeline, unfoldDimensions, updateAdvanced, updateSpec, zAdvancedVSeed, zAnalysis, zAnnotation, zAnnotationArea, zAnnotationHorizontalLine, zAnnotationPoint, zAnnotationVerticalLine, zArea, zAreaConfig, zAreaPercent, zAreaPercentConfig, zAreaStyle, zAxis, zBackgroundColor, zBar, zBarConfig, zBarParallel, zBarParallelConfig, zBarPercent, zBarPercentConfig, zBarStyle, zChartType, zColor, zColorLegend, zColumn, zColumnConfig, zColumnParallel, zColumnParallelConfig, zColumnPercent, zColumnPercentConfig, zConfig, zCrosshairLine, zCrosshairRect, zCustomTheme, zCustomThemeConfig, zDataset, zDatasetReshapeInfo, zDatum, zDimension, zDimensionGroup, zDimensionTree, zDimensions, zDonut, zDonutConfig, zDualAxis, zDualAxisConfig, zDualChartType, zDualMeasure, zDualMeasures, zEncoding, zEncodings, zFoldInfo, zFunnel, zFunnelConfig, zHeatmap, zHeatmapConfig, zLabel, zLegend, zLine, zLineConfig, zLineStyle, zLinearColor, zLocale, zMarkStyle, zMeasure, zMeasureGroup, zMeasureTree, zMeasures, zNumFormat, zPie, zPieConfig, zPivotTable, zPivotTableConfig, zPointStyle, zRadar, zRadarConfig, zRose, zRoseConfig, zRoseParallel, zRoseParallelConfig, zScatter, zScatterConfig, zScatterMeasure, zScatterMeasures, zSort, zSortLegend, zStackCornerRadius, zTable, zTableConfig, zTheme, zTooltip, zUnfoldInfo, zVSeed, zXBandAxis, zXLinearAxis, zYBandAxis, zYLinearAxis };
|
9806
9047
|
|
9807
9048
|
//# sourceMappingURL=index.js.map
|