@visactor/vseed 0.0.39 → 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 +1139 -1875
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1086 -1831
- 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 +1113 -1855
- 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,79 +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);
|
1309
|
+
const unfoldDimensions = (dataset, dimensions, encoding, options)=>{
|
1310
|
+
const { foldMeasureId, separator, colorItemAsId } = options;
|
1247
1311
|
const unfoldInfo = {
|
1248
|
-
|
1249
|
-
|
1312
|
+
encodingAngle: AngleEncoding,
|
1313
|
+
encodingX: XEncoding,
|
1314
|
+
encodingY: YEncoding,
|
1315
|
+
encodingDetail: DetailEncoding,
|
1316
|
+
encodingColor: ColorEncoding,
|
1317
|
+
encodingColorId: ColorIdEncoding,
|
1250
1318
|
colorItems: [],
|
1251
1319
|
colorIdMap: {}
|
1252
1320
|
};
|
1253
|
-
|
1254
|
-
|
1255
|
-
|
1256
|
-
|
1257
|
-
|
1258
|
-
|
1259
|
-
|
1260
|
-
|
1261
|
-
};
|
1262
|
-
const colorItems = [];
|
1263
|
-
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 = {};
|
1264
1329
|
for(let i = 0; i < dataset.length; i++){
|
1265
1330
|
const datum = dataset[i];
|
1266
|
-
|
1267
|
-
|
1268
|
-
|
1269
|
-
|
1270
|
-
|
1271
|
-
datum[
|
1272
|
-
datum[
|
1273
|
-
|
1274
|
-
|
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);
|
1275
1346
|
}
|
1276
|
-
unfoldInfo.colorItems =
|
1277
|
-
unfoldInfo.colorIdMap =
|
1347
|
+
unfoldInfo.colorItems = Array.from(colorItems);
|
1348
|
+
unfoldInfo.colorIdMap = colorIdMap;
|
1278
1349
|
return {
|
1279
1350
|
dataset,
|
1280
1351
|
unfoldInfo
|
1281
1352
|
};
|
1282
1353
|
};
|
1283
|
-
const
|
1284
|
-
|
1285
|
-
const unfoldInfo = {
|
1286
|
-
groupName: unfoldGroupName,
|
1287
|
-
groupId: unfoldGroupId,
|
1288
|
-
colorItems: [],
|
1289
|
-
colorIdMap: {}
|
1290
|
-
};
|
1291
|
-
if (0 === measures.length) return {
|
1292
|
-
dataset,
|
1293
|
-
unfoldInfo: {
|
1294
|
-
groupName: unfoldGroupName,
|
1295
|
-
groupId: unfoldGroupId,
|
1296
|
-
colorItems: [],
|
1297
|
-
colorIdMap: {}
|
1298
|
-
}
|
1299
|
-
};
|
1300
|
-
const colorItems = [];
|
1301
|
-
const colorMap = {};
|
1302
|
-
for(let i = 0; i < dataset.length; i++){
|
1303
|
-
const datum = dataset[i];
|
1304
|
-
const colorName = measureName;
|
1305
|
-
const colorId = measureName;
|
1306
|
-
datum[unfoldGroupName] = colorName;
|
1307
|
-
datum[unfoldGroupId] = colorId;
|
1308
|
-
colorItems.push(colorId);
|
1309
|
-
colorMap[colorId] = colorName;
|
1310
|
-
}
|
1311
|
-
unfoldInfo.colorItems = unique(colorItems);
|
1312
|
-
unfoldInfo.colorIdMap = colorMap;
|
1313
|
-
return {
|
1314
|
-
dataset,
|
1315
|
-
unfoldInfo
|
1316
|
-
};
|
1354
|
+
const applyEncoding = (encoding, dimensions, datum, separator)=>{
|
1355
|
+
if (encoding && dimensions.length) datum[encoding] = dimensions.map((dim)=>String(datum[dim.id])).join(separator);
|
1317
1356
|
};
|
1318
1357
|
const emptyReshapeResult = {
|
1319
1358
|
dataset: [],
|
@@ -1324,69 +1363,47 @@ const emptyReshapeResult = {
|
|
1324
1363
|
measureValue: ''
|
1325
1364
|
},
|
1326
1365
|
unfoldInfo: {
|
1327
|
-
|
1328
|
-
|
1366
|
+
encodingAngle: AngleEncoding,
|
1367
|
+
encodingX: XEncoding,
|
1368
|
+
encodingY: YEncoding,
|
1369
|
+
encodingDetail: DetailEncoding,
|
1370
|
+
encodingColor: ColorEncoding,
|
1371
|
+
encodingColorId: ColorIdEncoding,
|
1329
1372
|
colorItems: [],
|
1330
1373
|
colorIdMap: {}
|
1331
1374
|
}
|
1332
1375
|
};
|
1333
|
-
const
|
1334
|
-
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 || {};
|
1335
1378
|
if (0 === dimensions.length && 0 === measures.length) return emptyReshapeResult;
|
1336
1379
|
const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, foldMeasureId, foldMeasureName, foldMeasureValue);
|
1337
|
-
|
1338
|
-
|
1339
|
-
|
1340
|
-
|
1341
|
-
|
1342
|
-
|
1343
|
-
|
1344
|
-
|
1345
|
-
|
1346
|
-
|
1347
|
-
unfoldInfo
|
1348
|
-
};
|
1349
|
-
}
|
1350
|
-
{
|
1351
|
-
const onlyOneMeasure = 1 === measures.length;
|
1352
|
-
const onlyOneDimension = 1 === dimensions.length;
|
1353
|
-
const dims = [
|
1354
|
-
...dimensions
|
1355
|
-
];
|
1356
|
-
if (!onlyOneMeasure || onlyOneDimension) dims.push({
|
1357
|
-
id: foldMeasureName,
|
1358
|
-
alias: i18n`指标名称`,
|
1359
|
-
location: 'dimension'
|
1360
|
-
});
|
1361
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dims, [
|
1362
|
-
{
|
1363
|
-
id: foldMeasureValue,
|
1364
|
-
alias: i18n`指标值`
|
1365
|
-
}
|
1366
|
-
], 1, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
1367
|
-
return {
|
1368
|
-
dataset: finalDataset,
|
1369
|
-
foldInfo,
|
1370
|
-
unfoldInfo
|
1371
|
-
};
|
1372
|
-
}
|
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
|
+
};
|
1373
1390
|
};
|
1374
|
-
const
|
1391
|
+
const reshapeWithEncoding = (advancedVSeed, context)=>{
|
1375
1392
|
const result = {
|
1376
1393
|
...advancedVSeed
|
1377
1394
|
};
|
1378
1395
|
const { vseed } = context;
|
1379
|
-
const { dataset } = vseed;
|
1380
|
-
const { dimensions, measures } = advancedVSeed;
|
1381
|
-
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;
|
1382
1399
|
if (0 === measures.length) throw new Error('measures can not be empty');
|
1383
|
-
const { dataset: newDatasets, foldInfo, unfoldInfo } =
|
1400
|
+
const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding);
|
1384
1401
|
return {
|
1385
1402
|
...result,
|
1386
1403
|
dataset: newDatasets,
|
1387
1404
|
datasetReshapeInfo: [
|
1388
1405
|
{
|
1389
|
-
id:
|
1406
|
+
id: String(chartType),
|
1390
1407
|
index: 0,
|
1391
1408
|
foldInfo,
|
1392
1409
|
unfoldInfo
|
@@ -1396,31 +1413,27 @@ const reshapeTo2D1M0Name = (advancedVSeed, context)=>{
|
|
1396
1413
|
measures
|
1397
1414
|
};
|
1398
1415
|
};
|
1399
|
-
const
|
1416
|
+
const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
|
1400
1417
|
const result = {
|
1401
1418
|
...advancedVSeed
|
1402
1419
|
};
|
1403
1420
|
const { vseed } = context;
|
1404
1421
|
const { dataset } = vseed;
|
1405
|
-
const { measures } = advancedVSeed;
|
1406
|
-
|
1407
|
-
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');
|
1408
1425
|
const measureGroups = [];
|
1409
1426
|
if (measures) measures.forEach((measure)=>{
|
1410
1427
|
if (measure.children && measure.children.length > 0) measureGroups.push(measure);
|
1411
1428
|
});
|
1412
|
-
const
|
1413
|
-
const newDatasets = [];
|
1429
|
+
const datasets = [];
|
1414
1430
|
const datasetReshapeInfo = [];
|
1415
1431
|
measureGroups.forEach((measureGroup, index)=>{
|
1416
1432
|
const measures = measureGroup.children;
|
1417
1433
|
if (!measures) return;
|
1418
1434
|
const groupId = measureGroup.id;
|
1419
|
-
const { dataset: newSubDataset, foldInfo, unfoldInfo } =
|
1420
|
-
|
1421
|
-
foldMeasureName: FoldMeasureName,
|
1422
|
-
foldMeasureValue: FoldMeasureValue + groupId,
|
1423
|
-
unfoldDimensionGroup: UnfoldDimensionGroup
|
1435
|
+
const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding, {
|
1436
|
+
foldMeasureValue: `${FoldMeasureValue}${groupId}`
|
1424
1437
|
});
|
1425
1438
|
const reshapeInfo = {
|
1426
1439
|
id: groupId,
|
@@ -1428,93 +1441,60 @@ const pivotReshapeTo2D1M0Name = (advancedVSeed, context)=>{
|
|
1428
1441
|
foldInfo,
|
1429
1442
|
unfoldInfo
|
1430
1443
|
};
|
1431
|
-
|
1444
|
+
datasets.push(newSubDataset);
|
1432
1445
|
datasetReshapeInfo.push(reshapeInfo);
|
1433
1446
|
});
|
1434
1447
|
return {
|
1435
1448
|
...result,
|
1436
|
-
dataset:
|
1449
|
+
dataset: datasets,
|
1437
1450
|
datasetReshapeInfo: datasetReshapeInfo
|
1438
1451
|
};
|
1439
1452
|
};
|
1440
|
-
const encodingXY = (advancedVSeed)=>{
|
1441
|
-
const result = {
|
1442
|
-
...advancedVSeed
|
1443
|
-
};
|
1444
|
-
const { datasetReshapeInfo, dimensions } = advancedVSeed;
|
1445
|
-
if (!datasetReshapeInfo || !dimensions) return result;
|
1446
|
-
const xDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
|
1447
|
-
const isZeroDimension = 0 === dimensions.length;
|
1448
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
|
1449
|
-
const { foldInfo, unfoldInfo } = cur;
|
1450
|
-
const x = [
|
1451
|
-
isZeroDimension ? foldInfo.measureName : xDimension?.id
|
1452
|
-
];
|
1453
|
-
const y = [
|
1454
|
-
foldInfo.measureValue
|
1455
|
-
];
|
1456
|
-
const group = [
|
1457
|
-
unfoldInfo.groupId
|
1458
|
-
];
|
1459
|
-
const color = [
|
1460
|
-
foldInfo.measureName
|
1461
|
-
];
|
1462
|
-
return [
|
1463
|
-
...prev,
|
1464
|
-
{
|
1465
|
-
x,
|
1466
|
-
y,
|
1467
|
-
group,
|
1468
|
-
color
|
1469
|
-
}
|
1470
|
-
];
|
1471
|
-
}, []);
|
1472
|
-
return {
|
1473
|
-
...result,
|
1474
|
-
encoding
|
1475
|
-
};
|
1476
|
-
};
|
1477
1453
|
const sortXBandAxis = (advancedVSeed, context)=>{
|
1478
1454
|
const result = {
|
1479
1455
|
...advancedVSeed
|
1480
1456
|
};
|
1481
1457
|
const { vseed } = context;
|
1482
|
-
const { sort: sortAxis
|
1483
|
-
const {
|
1484
|
-
const
|
1458
|
+
const { sort: sortAxis } = vseed;
|
1459
|
+
const { datasetReshapeInfo, dataset } = advancedVSeed;
|
1460
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
1461
|
+
const xField = unfoldInfo.encodingX;
|
1485
1462
|
if (!sortAxis || !xField) return advancedVSeed;
|
1486
1463
|
if (!result.analysis) result.analysis = {};
|
1487
1464
|
if (!result.analysis.orderMapping) result.analysis.orderMapping = {};
|
1488
|
-
const axisOrderResult = calcOrder(sortAxis, xField, dataset);
|
1465
|
+
const axisOrderResult = calcOrder(sortAxis, xField, dataset.flat(2));
|
1489
1466
|
result.analysis.orderMapping[xField] = axisOrderResult;
|
1490
1467
|
return result;
|
1491
1468
|
};
|
1492
|
-
const
|
1493
|
-
|
1494
|
-
|
1495
|
-
|
1496
|
-
const
|
1497
|
-
|
1498
|
-
|
1499
|
-
|
1500
|
-
|
1501
|
-
|
1502
|
-
|
1503
|
-
|
1504
|
-
|
1505
|
-
|
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]));
|
1506
1486
|
};
|
1507
|
-
const
|
1487
|
+
const sortLegend_sortLegend = (advancedVSeed, context)=>{
|
1508
1488
|
const result = {
|
1509
1489
|
...advancedVSeed
|
1510
1490
|
};
|
1511
1491
|
const { vseed } = context;
|
1512
1492
|
const { sortLegend } = vseed;
|
1513
|
-
const { datasetReshapeInfo } = advancedVSeed;
|
1514
|
-
const
|
1493
|
+
const { datasetReshapeInfo, dataset } = advancedVSeed;
|
1494
|
+
const colorId = datasetReshapeInfo?.[0]?.unfoldInfo?.encodingColorId;
|
1515
1495
|
const colorIdMap = datasetReshapeInfo?.[0]?.unfoldInfo?.colorIdMap;
|
1516
1496
|
const colorItems = datasetReshapeInfo?.[0]?.unfoldInfo?.colorItems;
|
1517
|
-
if (!sortLegend || !
|
1497
|
+
if (!sortLegend || !colorId || !colorIdMap || !colorItems) return advancedVSeed;
|
1518
1498
|
if (!result.analysis) result.analysis = {};
|
1519
1499
|
if (!result.analysis.orderMapping) result.analysis.orderMapping = {};
|
1520
1500
|
if (sortLegend.customOrder) {
|
@@ -1523,15 +1503,14 @@ const sort_sortLegend = (advancedVSeed, context)=>{
|
|
1523
1503
|
return pre;
|
1524
1504
|
}, {});
|
1525
1505
|
const orderRes = sortLegend.customOrder.map((itemNameOrId)=>nameMap[itemNameOrId] ? nameMap[itemNameOrId] : itemNameOrId);
|
1526
|
-
result.analysis.orderMapping[
|
1506
|
+
result.analysis.orderMapping[colorId] = orderRes;
|
1527
1507
|
return result;
|
1528
1508
|
}
|
1529
|
-
const
|
1530
|
-
|
1531
|
-
result.analysis.orderMapping[groupField] = orderRes;
|
1509
|
+
const orderRes = sortLegend_calcOrder(sortLegend, colorId, dataset?.flat(2) || []);
|
1510
|
+
result.analysis.orderMapping[colorId] = orderRes;
|
1532
1511
|
return result;
|
1533
1512
|
};
|
1534
|
-
const
|
1513
|
+
const sortLegend_calcOrder = (sortConfig, id, dataset)=>{
|
1535
1514
|
if (sortConfig.customOrder) return sortConfig.customOrder;
|
1536
1515
|
const order = sortConfig.order || 'asc';
|
1537
1516
|
const orderBy = sortConfig.orderBy;
|
@@ -1663,14 +1642,14 @@ const lineAdvancedPipeline = [
|
|
1663
1642
|
initAdvancedVSeed_initAdvancedVSeed,
|
1664
1643
|
autoMeasures_autoMeasures,
|
1665
1644
|
autoDimensions_autoDimensions,
|
1645
|
+
encodingForColumn,
|
1666
1646
|
pivotAdapter([
|
1667
|
-
|
1647
|
+
reshapeWithEncoding
|
1668
1648
|
], [
|
1669
|
-
|
1649
|
+
pivotReshapeWithEncoding
|
1670
1650
|
]),
|
1671
|
-
encodingXY,
|
1672
1651
|
sortXBandAxis,
|
1673
|
-
|
1652
|
+
sortLegend_sortLegend,
|
1674
1653
|
lineConfig,
|
1675
1654
|
theme_theme,
|
1676
1655
|
markStyle_markStyle,
|
@@ -1681,13 +1660,13 @@ const initLine = (spec, context)=>{
|
|
1681
1660
|
...spec
|
1682
1661
|
};
|
1683
1662
|
const { advancedVSeed } = context;
|
1684
|
-
const {
|
1685
|
-
|
1663
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
1664
|
+
const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
|
1686
1665
|
result.type = 'line';
|
1687
1666
|
result.direction = 'vertical';
|
1688
|
-
result.xField =
|
1689
|
-
result.yField =
|
1690
|
-
result.seriesField =
|
1667
|
+
result.xField = unfoldInfo.encodingX;
|
1668
|
+
result.yField = foldInfo.measureValue;
|
1669
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
1691
1670
|
result.padding = 0;
|
1692
1671
|
result.region = [
|
1693
1672
|
{
|
@@ -1763,11 +1742,12 @@ const background_backgroundColor = (spec, context)=>{
|
|
1763
1742
|
};
|
1764
1743
|
const datasetXY = (spec, context)=>{
|
1765
1744
|
const { advancedVSeed, vseed } = context;
|
1766
|
-
const {
|
1745
|
+
const { analysis, datasetReshapeInfo } = advancedVSeed;
|
1746
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
1767
1747
|
const orderMapping = analysis?.orderMapping || {};
|
1768
|
-
const angle =
|
1769
|
-
const x =
|
1770
|
-
const
|
1748
|
+
const angle = unfoldInfo.encodingAngle;
|
1749
|
+
const x = unfoldInfo.encodingX;
|
1750
|
+
const colorId = unfoldInfo.encodingColorId;
|
1771
1751
|
const id = datasetReshapeInfo[0].id;
|
1772
1752
|
const fields = {};
|
1773
1753
|
if (angle) fields[angle] = {
|
@@ -1784,14 +1764,14 @@ const datasetXY = (spec, context)=>{
|
|
1784
1764
|
sortIndex: 0
|
1785
1765
|
};
|
1786
1766
|
}
|
1787
|
-
if (
|
1788
|
-
const order = orderMapping[
|
1789
|
-
if (order) fields[
|
1767
|
+
if (colorId) {
|
1768
|
+
const order = orderMapping[colorId];
|
1769
|
+
if (order) fields[colorId] = {
|
1790
1770
|
sortIndex: 0,
|
1791
1771
|
domain: order,
|
1792
1772
|
lockStatisticsByDomain: true
|
1793
1773
|
};
|
1794
|
-
else fields[
|
1774
|
+
else fields[colorId] = {
|
1795
1775
|
sortIndex: 0
|
1796
1776
|
};
|
1797
1777
|
}
|
@@ -2044,7 +2024,7 @@ const tooltip_tooltip = (spec, context)=>{
|
|
2044
2024
|
} } = baseConfig;
|
2045
2025
|
const { enable } = tooltip;
|
2046
2026
|
const { measureId, measureValue, measureName } = datasetReshapeInfo[0].foldInfo;
|
2047
|
-
const {
|
2027
|
+
const { encodingColor: colorName } = datasetReshapeInfo[0].unfoldInfo;
|
2048
2028
|
result.tooltip = {
|
2049
2029
|
visible: enable,
|
2050
2030
|
mark: {
|
@@ -2065,7 +2045,7 @@ const tooltip_tooltip = (spec, context)=>{
|
|
2065
2045
|
{
|
2066
2046
|
visible: true,
|
2067
2047
|
hasShape: true,
|
2068
|
-
key: (datum)=>datum && datum[measureName ||
|
2048
|
+
key: (datum)=>datum && datum[measureName || colorName] || '',
|
2069
2049
|
value: (datum)=>{
|
2070
2050
|
if (!datum) return '';
|
2071
2051
|
const value = datum[measureValue];
|
@@ -2087,7 +2067,7 @@ const tooltip_tooltip = (spec, context)=>{
|
|
2087
2067
|
content: [
|
2088
2068
|
{
|
2089
2069
|
visible: true,
|
2090
|
-
key: (datum)=>datum && datum[
|
2070
|
+
key: (datum)=>datum && datum[colorName] || '',
|
2091
2071
|
value: (datum)=>{
|
2092
2072
|
if (!datum) return '';
|
2093
2073
|
const value = datum[measureValue];
|
@@ -2425,7 +2405,8 @@ const pointStateDimensionHover = (spec)=>{
|
|
2425
2405
|
const pointStateHover = (spec, context)=>{
|
2426
2406
|
const point = spec.point || {};
|
2427
2407
|
const { advancedVSeed } = context;
|
2428
|
-
const {
|
2408
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
2409
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
2429
2410
|
const result = {
|
2430
2411
|
...spec,
|
2431
2412
|
point: {
|
@@ -2436,7 +2417,7 @@ const pointStateHover = (spec, context)=>{
|
|
2436
2417
|
scaleX: 1.4,
|
2437
2418
|
scaleY: 1.4,
|
2438
2419
|
stroke: (datum, context)=>{
|
2439
|
-
const field =
|
2420
|
+
const field = unfoldInfo.encodingColorId;
|
2440
2421
|
const color = context.seriesColor(datum[field]);
|
2441
2422
|
return color;
|
2442
2423
|
},
|
@@ -2450,7 +2431,8 @@ const pointStateHover = (spec, context)=>{
|
|
2450
2431
|
};
|
2451
2432
|
const lineStyle_lineStyle = (spec, context)=>{
|
2452
2433
|
const { advancedVSeed } = context;
|
2453
|
-
const { markStyle,
|
2434
|
+
const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed;
|
2435
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
2454
2436
|
const { lineStyle } = markStyle;
|
2455
2437
|
if (!lineStyle) return spec;
|
2456
2438
|
const result = {
|
@@ -2459,8 +2441,8 @@ const lineStyle_lineStyle = (spec, context)=>{
|
|
2459
2441
|
const lineStyles = Array.isArray(lineStyle) ? lineStyle : [
|
2460
2442
|
lineStyle
|
2461
2443
|
];
|
2462
|
-
const
|
2463
|
-
const lineGroups = groupBy(dataset, (d)=>d[
|
2444
|
+
const colorId = unfoldInfo.encodingColorId;
|
2445
|
+
const lineGroups = groupBy(dataset, (d)=>d[colorId ?? '']);
|
2464
2446
|
const customMap = lineStyles.reduce((result, style, index)=>{
|
2465
2447
|
const { lineColor, lineColorOpacity, lineSmooth, lineStyle, lineWidth = 2, lineVisible = true } = style;
|
2466
2448
|
const dashSegment = 2 * lineWidth;
|
@@ -2481,7 +2463,7 @@ const lineStyle_lineStyle = (spec, context)=>{
|
|
2481
2463
|
[`custom${index + 1}`]: {
|
2482
2464
|
level: index + 1,
|
2483
2465
|
filter: (datum)=>{
|
2484
|
-
const lineData = lineGroups[datum[
|
2466
|
+
const lineData = lineGroups[datum[colorId ?? '']];
|
2485
2467
|
for (const d of lineData)if (selector_selector(d, style.selector)) return true;
|
2486
2468
|
return false;
|
2487
2469
|
},
|
@@ -2576,7 +2558,8 @@ const annotationPoint_annotationPoint = (spec, context)=>{
|
|
2576
2558
|
};
|
2577
2559
|
const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
|
2578
2560
|
const { advancedVSeed } = context;
|
2579
|
-
const { annotation,
|
2561
|
+
const { annotation, datasetReshapeInfo } = advancedVSeed;
|
2562
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
2580
2563
|
if (!annotation || !annotation.annotationVerticalLine) return spec;
|
2581
2564
|
const { annotationVerticalLine } = annotation;
|
2582
2565
|
const annotationVerticalLineList = Array.isArray(annotationVerticalLine) ? annotationVerticalLine : [
|
@@ -2656,7 +2639,7 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
|
|
2656
2639
|
}
|
2657
2640
|
const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
|
2658
2641
|
return selectedData.map((datum)=>{
|
2659
|
-
const x =
|
2642
|
+
const x = unfoldInfo.encodingX;
|
2660
2643
|
if (!x) return {};
|
2661
2644
|
return generateOneMarkLine(datum[x]);
|
2662
2645
|
});
|
@@ -2673,7 +2656,8 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
|
|
2673
2656
|
};
|
2674
2657
|
const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
|
2675
2658
|
const { advancedVSeed } = context;
|
2676
|
-
const { annotation,
|
2659
|
+
const { annotation, datasetReshapeInfo } = advancedVSeed;
|
2660
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
2677
2661
|
if (!annotation || !annotation.annotationHorizontalLine) return spec;
|
2678
2662
|
const { annotationHorizontalLine } = annotation;
|
2679
2663
|
const annotationVerticalLineList = Array.isArray(annotationHorizontalLine) ? annotationHorizontalLine : [
|
@@ -2753,7 +2737,7 @@ const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
|
|
2753
2737
|
}
|
2754
2738
|
const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
|
2755
2739
|
return selectedData.map((datum)=>{
|
2756
|
-
const y =
|
2740
|
+
const y = unfoldInfo.encodingY;
|
2757
2741
|
if (!y) return {};
|
2758
2742
|
return generateOneMarkLine(datum[y]);
|
2759
2743
|
});
|
@@ -3034,13 +3018,10 @@ const pivotIndicators_pivotIndicators = (chartPipeline)=>(spec, context)=>{
|
|
3034
3018
|
...spec
|
3035
3019
|
};
|
3036
3020
|
const { advancedVSeed } = context;
|
3037
|
-
const { measures, datasetReshapeInfo,
|
3021
|
+
const { measures, datasetReshapeInfo, dataset } = advancedVSeed;
|
3038
3022
|
const colorItems = unique(datasetReshapeInfo.flatMap((d)=>d.unfoldInfo.colorItems));
|
3039
3023
|
const indicators = datasetReshapeInfo.map((reshapeInfo, index)=>{
|
3040
3024
|
const measure = measures?.find((d)=>d.id === reshapeInfo.id);
|
3041
|
-
const newEncoding = [
|
3042
|
-
encoding[index]
|
3043
|
-
];
|
3044
3025
|
const newDataset = dataset[index];
|
3045
3026
|
const newDatasetReshapeInfo = [
|
3046
3027
|
{
|
@@ -3056,8 +3037,7 @@ const pivotIndicators_pivotIndicators = (chartPipeline)=>(spec, context)=>{
|
|
3056
3037
|
advancedVSeed: {
|
3057
3038
|
...advancedVSeed,
|
3058
3039
|
datasetReshapeInfo: newDatasetReshapeInfo,
|
3059
|
-
dataset: newDataset
|
3060
|
-
encoding: newEncoding
|
3040
|
+
dataset: newDataset
|
3061
3041
|
}
|
3062
3042
|
};
|
3063
3043
|
const chartSpec = execPipeline(chartPipeline, newContext, {});
|
@@ -3243,7 +3223,7 @@ const pivotDiscreteLegend = (spec, context)=>{
|
|
3243
3223
|
}
|
3244
3224
|
},
|
3245
3225
|
label: {
|
3246
|
-
formatMethod: (value)=>colorIdMap[
|
3226
|
+
formatMethod: (value)=>colorIdMap[value] ?? value,
|
3247
3227
|
style: {
|
3248
3228
|
fontSize: labelFontSize,
|
3249
3229
|
fill: labelFontColor,
|
@@ -3326,151 +3306,18 @@ const registerLine = ()=>{
|
|
3326
3306
|
Builder._advancedPipelineMap.line = lineAdvancedPipeline;
|
3327
3307
|
Builder._specPipelineMap.line = lineSpecPipeline;
|
3328
3308
|
};
|
3329
|
-
const dataReshapeFor2D1M_emptyReshapeResult = {
|
3330
|
-
dataset: [],
|
3331
|
-
foldInfo: {
|
3332
|
-
foldMap: {},
|
3333
|
-
measureId: '',
|
3334
|
-
measureName: '',
|
3335
|
-
measureValue: ''
|
3336
|
-
},
|
3337
|
-
unfoldInfo: {
|
3338
|
-
groupName: '',
|
3339
|
-
groupId: '',
|
3340
|
-
colorItems: [],
|
3341
|
-
colorIdMap: {}
|
3342
|
-
}
|
3343
|
-
};
|
3344
|
-
const dataReshapeFor2D1M = (dataset, dimensions, measures, options)=>{
|
3345
|
-
const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, unfoldDimensionGroup = UnfoldDimensionGroup, unfoldDimensionGroupId = UnfoldDimensionGroupId } = options || {};
|
3346
|
-
if (0 === dimensions.length && 0 === measures.length) return dataReshapeFor2D1M_emptyReshapeResult;
|
3347
|
-
const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, foldMeasureId, foldMeasureName, foldMeasureValue);
|
3348
|
-
if (0 === dimensions.length) {
|
3349
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
|
3350
|
-
{
|
3351
|
-
id: foldMeasureId,
|
3352
|
-
alias: i18n`指标Id`,
|
3353
|
-
location: 'dimension'
|
3354
|
-
},
|
3355
|
-
{
|
3356
|
-
id: foldMeasureName,
|
3357
|
-
alias: i18n`指标名称`,
|
3358
|
-
location: 'dimension'
|
3359
|
-
}
|
3360
|
-
], [
|
3361
|
-
{
|
3362
|
-
id: foldMeasureValue,
|
3363
|
-
alias: i18n`指标值`
|
3364
|
-
}
|
3365
|
-
], 1, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
3366
|
-
return {
|
3367
|
-
dataset: finalDataset,
|
3368
|
-
foldInfo,
|
3369
|
-
unfoldInfo
|
3370
|
-
};
|
3371
|
-
}
|
3372
|
-
{
|
3373
|
-
const onlyOneMeasure = 1 === measures.length;
|
3374
|
-
const onlyOneDimension = 1 === dimensions.length;
|
3375
|
-
const dims = [
|
3376
|
-
...dimensions
|
3377
|
-
];
|
3378
|
-
if (!onlyOneMeasure || onlyOneDimension) dims.push({
|
3379
|
-
id: foldMeasureName,
|
3380
|
-
alias: i18n`指标名称`,
|
3381
|
-
location: 'dimension'
|
3382
|
-
});
|
3383
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dims, [
|
3384
|
-
{
|
3385
|
-
id: foldMeasureValue,
|
3386
|
-
alias: i18n`指标值`
|
3387
|
-
}
|
3388
|
-
], 1, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
3389
|
-
return {
|
3390
|
-
dataset: finalDataset,
|
3391
|
-
foldInfo,
|
3392
|
-
unfoldInfo
|
3393
|
-
};
|
3394
|
-
}
|
3395
|
-
};
|
3396
|
-
const reshapeTo2D1M = (advancedVSeed, context)=>{
|
3397
|
-
const result = {
|
3398
|
-
...advancedVSeed
|
3399
|
-
};
|
3400
|
-
const { vseed } = context;
|
3401
|
-
const { dataset } = vseed;
|
3402
|
-
const { dimensions, measures } = advancedVSeed;
|
3403
|
-
if (!measures || !dimensions || !dataset) return result;
|
3404
|
-
if (0 === measures.length) throw new Error('measures can not be empty');
|
3405
|
-
const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, dimensions, measures);
|
3406
|
-
return {
|
3407
|
-
...result,
|
3408
|
-
dataset: newDatasets,
|
3409
|
-
datasetReshapeInfo: [
|
3410
|
-
{
|
3411
|
-
id: '2D1M',
|
3412
|
-
index: 0,
|
3413
|
-
foldInfo,
|
3414
|
-
unfoldInfo
|
3415
|
-
}
|
3416
|
-
],
|
3417
|
-
dimensions,
|
3418
|
-
measures
|
3419
|
-
};
|
3420
|
-
};
|
3421
|
-
const pivotReshapeTo2D1M = (advancedVSeed, context)=>{
|
3422
|
-
const result = {
|
3423
|
-
...advancedVSeed
|
3424
|
-
};
|
3425
|
-
const { vseed } = context;
|
3426
|
-
const { dataset } = vseed;
|
3427
|
-
const { measures } = advancedVSeed;
|
3428
|
-
const dimensions = advancedVSeed.dimensions;
|
3429
|
-
if (!measures || !dimensions) return result;
|
3430
|
-
const measureGroups = [];
|
3431
|
-
if (measures) measures.forEach((measure)=>{
|
3432
|
-
if (measure.children && measure.children.length > 0) measureGroups.push(measure);
|
3433
|
-
});
|
3434
|
-
const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
|
3435
|
-
const newDatasets = [];
|
3436
|
-
const datasetReshapeInfo = [];
|
3437
|
-
measureGroups.forEach((measureGroup, index)=>{
|
3438
|
-
const measures = measureGroup.children;
|
3439
|
-
if (!measures) return;
|
3440
|
-
const groupId = measureGroup.id;
|
3441
|
-
const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, commonDimensions, measures, {
|
3442
|
-
foldMeasureId: FoldMeasureId,
|
3443
|
-
foldMeasureName: FoldMeasureName,
|
3444
|
-
foldMeasureValue: FoldMeasureValue + groupId,
|
3445
|
-
unfoldDimensionGroup: UnfoldDimensionGroup
|
3446
|
-
});
|
3447
|
-
const reshapeInfo = {
|
3448
|
-
id: groupId,
|
3449
|
-
index,
|
3450
|
-
foldInfo,
|
3451
|
-
unfoldInfo
|
3452
|
-
};
|
3453
|
-
newDatasets.push(newSubDataset);
|
3454
|
-
datasetReshapeInfo.push(reshapeInfo);
|
3455
|
-
});
|
3456
|
-
return {
|
3457
|
-
...result,
|
3458
|
-
dataset: newDatasets,
|
3459
|
-
datasetReshapeInfo: datasetReshapeInfo
|
3460
|
-
};
|
3461
|
-
};
|
3462
3309
|
const columnAdvancedPipeline = [
|
3463
3310
|
initAdvancedVSeed_initAdvancedVSeed,
|
3464
3311
|
autoMeasures_autoMeasures,
|
3465
3312
|
autoDimensions_autoDimensions,
|
3313
|
+
encodingForColumn,
|
3466
3314
|
pivotAdapter([
|
3467
|
-
|
3315
|
+
reshapeWithEncoding
|
3468
3316
|
], [
|
3469
|
-
|
3317
|
+
pivotReshapeWithEncoding
|
3470
3318
|
]),
|
3471
|
-
encodingXY,
|
3472
3319
|
sortXBandAxis,
|
3473
|
-
|
3320
|
+
sortLegend_sortLegend,
|
3474
3321
|
columnConfig,
|
3475
3322
|
theme_theme,
|
3476
3323
|
markStyle_markStyle,
|
@@ -3481,13 +3328,13 @@ const initColumn = (spec, context)=>{
|
|
3481
3328
|
...spec
|
3482
3329
|
};
|
3483
3330
|
const { advancedVSeed } = context;
|
3484
|
-
const {
|
3485
|
-
|
3331
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
3332
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
3486
3333
|
result.type = 'bar';
|
3487
3334
|
result.direction = 'vertical';
|
3488
|
-
result.xField =
|
3489
|
-
result.yField =
|
3490
|
-
result.seriesField =
|
3335
|
+
result.xField = unfoldInfo.encodingX;
|
3336
|
+
result.yField = foldInfo.measureValue;
|
3337
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
3491
3338
|
result.padding = 0;
|
3492
3339
|
result.region = [
|
3493
3340
|
{
|
@@ -3807,14 +3654,14 @@ const columnParallelAdvancedPipeline = [
|
|
3807
3654
|
initAdvancedVSeed_initAdvancedVSeed,
|
3808
3655
|
autoMeasures_autoMeasures,
|
3809
3656
|
autoDimensions_autoDimensions,
|
3657
|
+
encodingForColumn,
|
3810
3658
|
pivotAdapter([
|
3811
|
-
|
3659
|
+
reshapeWithEncoding
|
3812
3660
|
], [
|
3813
|
-
|
3661
|
+
pivotReshapeWithEncoding
|
3814
3662
|
]),
|
3815
|
-
encodingXY,
|
3816
3663
|
sortXBandAxis,
|
3817
|
-
|
3664
|
+
sortLegend_sortLegend,
|
3818
3665
|
columnParallelConfig,
|
3819
3666
|
theme_theme,
|
3820
3667
|
markStyle_markStyle,
|
@@ -3825,17 +3672,19 @@ const initColumnParallel = (spec, context)=>{
|
|
3825
3672
|
...spec
|
3826
3673
|
};
|
3827
3674
|
const { advancedVSeed } = context;
|
3828
|
-
const {
|
3829
|
-
const { unfoldInfo } = datasetReshapeInfo[0];
|
3830
|
-
|
3675
|
+
const { datasetReshapeInfo, dimensions } = advancedVSeed;
|
3676
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
3677
|
+
const sameDimensionsMode = dimensions.length > 1 && dimensions.every((dim)=>dim.id === dimensions[0].id);
|
3831
3678
|
result.type = 'bar';
|
3832
3679
|
result.direction = 'vertical';
|
3833
|
-
result.xField = [
|
3834
|
-
|
3835
|
-
|
3680
|
+
result.xField = sameDimensionsMode ? [
|
3681
|
+
unfoldInfo.encodingX
|
3682
|
+
] : [
|
3683
|
+
unfoldInfo.encodingX,
|
3684
|
+
unfoldInfo.encodingDetail
|
3836
3685
|
];
|
3837
|
-
result.yField =
|
3838
|
-
result.seriesField =
|
3686
|
+
result.yField = foldInfo.measureValue;
|
3687
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
3839
3688
|
result.padding = 0;
|
3840
3689
|
result.region = [
|
3841
3690
|
{
|
@@ -3902,14 +3751,14 @@ const columnPercentAdvancedPipeline = [
|
|
3902
3751
|
initAdvancedVSeed_initAdvancedVSeed,
|
3903
3752
|
autoMeasures_autoMeasures,
|
3904
3753
|
autoDimensions_autoDimensions,
|
3754
|
+
encodingForColumn,
|
3905
3755
|
pivotAdapter([
|
3906
|
-
|
3756
|
+
reshapeWithEncoding
|
3907
3757
|
], [
|
3908
|
-
|
3758
|
+
pivotReshapeWithEncoding
|
3909
3759
|
]),
|
3910
|
-
encodingXY,
|
3911
3760
|
sortXBandAxis,
|
3912
|
-
|
3761
|
+
sortLegend_sortLegend,
|
3913
3762
|
columnPercentConfig,
|
3914
3763
|
theme_theme,
|
3915
3764
|
markStyle_markStyle,
|
@@ -3979,58 +3828,73 @@ const registerColumnPercent = ()=>{
|
|
3979
3828
|
Builder._advancedPipelineMap.columnPercent = columnPercentAdvancedPipeline;
|
3980
3829
|
Builder._specPipelineMap.columnPercent = columnPercentSpecPipeline;
|
3981
3830
|
};
|
3982
|
-
const
|
3983
|
-
const
|
3984
|
-
|
3985
|
-
|
3986
|
-
const
|
3987
|
-
if (
|
3988
|
-
|
3989
|
-
|
3990
|
-
|
3991
|
-
const
|
3992
|
-
|
3993
|
-
|
3994
|
-
];
|
3995
|
-
const x = [
|
3996
|
-
foldInfo.measureValue
|
3997
|
-
];
|
3998
|
-
const group = [
|
3999
|
-
unfoldInfo.groupId
|
4000
|
-
];
|
4001
|
-
const color = [
|
4002
|
-
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
|
4003
3843
|
];
|
4004
|
-
return
|
4005
|
-
...
|
4006
|
-
{
|
4007
|
-
|
4008
|
-
|
4009
|
-
group,
|
4010
|
-
color
|
3844
|
+
return {
|
3845
|
+
...advancedVSeed,
|
3846
|
+
encoding: {
|
3847
|
+
...encoding,
|
3848
|
+
detail: mergedDetail
|
4011
3849
|
}
|
4012
|
-
|
4013
|
-
}
|
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
|
+
};
|
4014
3862
|
return {
|
4015
|
-
...
|
4016
|
-
encoding
|
3863
|
+
...advancedVSeed,
|
3864
|
+
encoding: mergedEncoding
|
4017
3865
|
};
|
4018
3866
|
};
|
4019
|
-
const
|
4020
|
-
|
4021
|
-
|
4022
|
-
|
4023
|
-
|
4024
|
-
|
4025
|
-
|
4026
|
-
|
4027
|
-
|
4028
|
-
|
4029
|
-
|
4030
|
-
|
4031
|
-
|
4032
|
-
|
4033
|
-
|
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,
|
3897
|
+
markStyle_markStyle,
|
4034
3898
|
annotation_annotation
|
4035
3899
|
];
|
4036
3900
|
const initBar = (spec, context)=>{
|
@@ -4038,13 +3902,13 @@ const initBar = (spec, context)=>{
|
|
4038
3902
|
...spec
|
4039
3903
|
};
|
4040
3904
|
const { advancedVSeed } = context;
|
4041
|
-
const {
|
4042
|
-
|
3905
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
3906
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
4043
3907
|
result.type = 'bar';
|
4044
3908
|
result.direction = 'horizontal';
|
4045
|
-
result.yField =
|
4046
|
-
result.xField =
|
4047
|
-
result.seriesField =
|
3909
|
+
result.yField = unfoldInfo.encodingY;
|
3910
|
+
result.xField = foldInfo.measureValue;
|
3911
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
4048
3912
|
result.padding = 0;
|
4049
3913
|
result.region = [
|
4050
3914
|
{
|
@@ -4056,11 +3920,12 @@ const initBar = (spec, context)=>{
|
|
4056
3920
|
};
|
4057
3921
|
const datasetYX = (spec, context)=>{
|
4058
3922
|
const { advancedVSeed, vseed } = context;
|
4059
|
-
const {
|
3923
|
+
const { analysis, datasetReshapeInfo } = advancedVSeed;
|
3924
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
4060
3925
|
const orderMapping = analysis?.orderMapping || {};
|
4061
|
-
const angle =
|
4062
|
-
const y =
|
4063
|
-
const
|
3926
|
+
const angle = unfoldInfo.encodingAngle;
|
3927
|
+
const y = unfoldInfo.encodingY;
|
3928
|
+
const colorId = unfoldInfo.encodingColorId;
|
4064
3929
|
const id = datasetReshapeInfo[0].id;
|
4065
3930
|
const fields = {};
|
4066
3931
|
if (angle) fields[angle] = {
|
@@ -4077,14 +3942,14 @@ const datasetYX = (spec, context)=>{
|
|
4077
3942
|
sortIndex: 0
|
4078
3943
|
};
|
4079
3944
|
}
|
4080
|
-
if (
|
4081
|
-
const order = orderMapping[
|
4082
|
-
if (order) fields[
|
3945
|
+
if (colorId) {
|
3946
|
+
const order = orderMapping[colorId];
|
3947
|
+
if (order) fields[colorId] = {
|
4083
3948
|
sortIndex: 0,
|
4084
3949
|
domain: order,
|
4085
3950
|
lockStatisticsByDomain: true
|
4086
3951
|
};
|
4087
|
-
else fields[
|
3952
|
+
else fields[colorId] = {
|
4088
3953
|
sortIndex: 0
|
4089
3954
|
};
|
4090
3955
|
}
|
@@ -4372,14 +4237,14 @@ const barParallelAdvancedPipeline = [
|
|
4372
4237
|
initAdvancedVSeed_initAdvancedVSeed,
|
4373
4238
|
autoMeasures_autoMeasures,
|
4374
4239
|
autoDimensions_autoDimensions,
|
4240
|
+
encodingForBar,
|
4375
4241
|
pivotAdapter([
|
4376
|
-
|
4242
|
+
reshapeWithEncoding
|
4377
4243
|
], [
|
4378
|
-
|
4244
|
+
pivotReshapeWithEncoding
|
4379
4245
|
]),
|
4380
|
-
encodingYX,
|
4381
4246
|
sortYBandAxis,
|
4382
|
-
|
4247
|
+
sortLegend_sortLegend,
|
4383
4248
|
barParallelConfig,
|
4384
4249
|
theme_theme,
|
4385
4250
|
markStyle_markStyle,
|
@@ -4390,17 +4255,19 @@ const initBarParallel = (spec, context)=>{
|
|
4390
4255
|
...spec
|
4391
4256
|
};
|
4392
4257
|
const { advancedVSeed } = context;
|
4393
|
-
const {
|
4394
|
-
const { unfoldInfo } = datasetReshapeInfo[0];
|
4395
|
-
|
4258
|
+
const { datasetReshapeInfo, dimensions } = advancedVSeed;
|
4259
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
4260
|
+
const sameDimensionsMode = dimensions.length > 1 && dimensions.every((dim)=>dim.id === dimensions[0].id);
|
4396
4261
|
result.type = 'bar';
|
4397
4262
|
result.direction = 'horizontal';
|
4398
|
-
result.yField = [
|
4399
|
-
|
4400
|
-
|
4263
|
+
result.yField = sameDimensionsMode ? [
|
4264
|
+
unfoldInfo.encodingY
|
4265
|
+
] : [
|
4266
|
+
unfoldInfo.encodingY,
|
4267
|
+
unfoldInfo.encodingDetail
|
4401
4268
|
];
|
4402
|
-
result.xField =
|
4403
|
-
result.seriesField =
|
4269
|
+
result.xField = foldInfo.measureValue;
|
4270
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
4404
4271
|
result.padding = 0;
|
4405
4272
|
result.region = [
|
4406
4273
|
{
|
@@ -4466,14 +4333,14 @@ const barPercentAdvancedPipeline = [
|
|
4466
4333
|
initAdvancedVSeed_initAdvancedVSeed,
|
4467
4334
|
autoMeasures_autoMeasures,
|
4468
4335
|
autoDimensions_autoDimensions,
|
4336
|
+
encodingForBar,
|
4469
4337
|
pivotAdapter([
|
4470
|
-
|
4338
|
+
reshapeWithEncoding
|
4471
4339
|
], [
|
4472
|
-
|
4340
|
+
pivotReshapeWithEncoding
|
4473
4341
|
]),
|
4474
|
-
encodingYX,
|
4475
4342
|
sortYBandAxis,
|
4476
|
-
|
4343
|
+
sortLegend_sortLegend,
|
4477
4344
|
barPercentConfig,
|
4478
4345
|
theme_theme,
|
4479
4346
|
markStyle_markStyle,
|
@@ -4537,14 +4404,14 @@ const areaAdvancedPipeline = [
|
|
4537
4404
|
initAdvancedVSeed_initAdvancedVSeed,
|
4538
4405
|
autoMeasures_autoMeasures,
|
4539
4406
|
autoDimensions_autoDimensions,
|
4407
|
+
encodingForColumn,
|
4540
4408
|
pivotAdapter([
|
4541
|
-
|
4409
|
+
reshapeWithEncoding
|
4542
4410
|
], [
|
4543
|
-
|
4411
|
+
pivotReshapeWithEncoding
|
4544
4412
|
]),
|
4545
|
-
encodingXY,
|
4546
4413
|
sortXBandAxis,
|
4547
|
-
|
4414
|
+
sortLegend_sortLegend,
|
4548
4415
|
areaConfig,
|
4549
4416
|
theme_theme,
|
4550
4417
|
markStyle_markStyle,
|
@@ -4555,13 +4422,13 @@ const initArea = (spec, context)=>{
|
|
4555
4422
|
...spec
|
4556
4423
|
};
|
4557
4424
|
const { advancedVSeed } = context;
|
4558
|
-
const {
|
4559
|
-
|
4425
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
4426
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
4560
4427
|
result.type = 'area';
|
4561
4428
|
result.direction = 'vertical';
|
4562
|
-
result.
|
4563
|
-
result.
|
4564
|
-
result.seriesField =
|
4429
|
+
result.yField = foldInfo.measureValue;
|
4430
|
+
result.xField = unfoldInfo.encodingX;
|
4431
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
4565
4432
|
result.padding = 0;
|
4566
4433
|
result.region = [
|
4567
4434
|
{
|
@@ -4573,8 +4440,9 @@ const initArea = (spec, context)=>{
|
|
4573
4440
|
};
|
4574
4441
|
const areaStyle_areaStyle = (spec, context)=>{
|
4575
4442
|
const { advancedVSeed } = context;
|
4576
|
-
const { markStyle,
|
4443
|
+
const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed;
|
4577
4444
|
const { areaStyle } = markStyle;
|
4445
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
4578
4446
|
if (!areaStyle) return {
|
4579
4447
|
...spec,
|
4580
4448
|
area: {
|
@@ -4587,7 +4455,7 @@ const areaStyle_areaStyle = (spec, context)=>{
|
|
4587
4455
|
const areaStyles = Array.isArray(areaStyle) ? areaStyle : [
|
4588
4456
|
areaStyle
|
4589
4457
|
];
|
4590
|
-
const group =
|
4458
|
+
const group = unfoldInfo.encodingColorId;
|
4591
4459
|
const areaGroups = groupBy(dataset, (d)=>d[group ?? '']);
|
4592
4460
|
const customMap = areaStyles.reduce((result, style, index)=>{
|
4593
4461
|
const { areaColor, areaColorOpacity, areaVisible = true } = style;
|
@@ -4681,14 +4549,14 @@ const areaPercentAdvancedPipeline = [
|
|
4681
4549
|
initAdvancedVSeed_initAdvancedVSeed,
|
4682
4550
|
autoMeasures_autoMeasures,
|
4683
4551
|
autoDimensions_autoDimensions,
|
4552
|
+
encodingForColumn,
|
4684
4553
|
pivotAdapter([
|
4685
|
-
|
4554
|
+
reshapeWithEncoding
|
4686
4555
|
], [
|
4687
|
-
|
4556
|
+
pivotReshapeWithEncoding
|
4688
4557
|
]),
|
4689
|
-
encodingXY,
|
4690
4558
|
sortXBandAxis,
|
4691
|
-
|
4559
|
+
sortLegend_sortLegend,
|
4692
4560
|
areaPercentConfig,
|
4693
4561
|
theme_theme,
|
4694
4562
|
markStyle_markStyle,
|
@@ -4753,16 +4621,20 @@ const registerAreaPercent = ()=>{
|
|
4753
4621
|
Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
|
4754
4622
|
Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
|
4755
4623
|
};
|
4756
|
-
const
|
4624
|
+
const autoScatterMeasures = (advancedVSeed, context)=>{
|
4757
4625
|
const result = {
|
4758
4626
|
...advancedVSeed
|
4759
4627
|
};
|
4760
4628
|
const { vseed } = context;
|
4761
|
-
const {
|
4629
|
+
const { dataset, scatterMeasures, measures } = vseed;
|
4762
4630
|
if (!dataset) throw new Error('dataset is required');
|
4763
4631
|
if (0 === dataset.length) return result;
|
4764
|
-
if (
|
4765
|
-
result.measures =
|
4632
|
+
if (scatterMeasures) {
|
4633
|
+
result.measures = scatterMeasuresToMeasureTree(scatterMeasures);
|
4634
|
+
return result;
|
4635
|
+
}
|
4636
|
+
if (measures && measureDepth(measures) > 1) {
|
4637
|
+
result.measures = measures;
|
4766
4638
|
return result;
|
4767
4639
|
}
|
4768
4640
|
const top100dataset = dataset.slice(0, 100);
|
@@ -4770,7 +4642,7 @@ const autoMeasuresBy2M1Group = (advancedVSeed, context)=>{
|
|
4770
4642
|
...prev,
|
4771
4643
|
...cur
|
4772
4644
|
}), {});
|
4773
|
-
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]) && ![
|
4774
4646
|
'',
|
4775
4647
|
null,
|
4776
4648
|
void 0
|
@@ -4778,689 +4650,273 @@ const autoMeasuresBy2M1Group = (advancedVSeed, context)=>{
|
|
4778
4650
|
id: measure,
|
4779
4651
|
alias: measure
|
4780
4652
|
}));
|
4781
|
-
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
|
+
];
|
4782
4673
|
return result;
|
4783
4674
|
};
|
4784
|
-
const
|
4785
|
-
const
|
4786
|
-
|
4787
|
-
|
4788
|
-
|
4789
|
-
|
4790
|
-
|
4791
|
-
|
4792
|
-
|
4793
|
-
|
4794
|
-
|
4795
|
-
|
4796
|
-
|
4797
|
-
|
4798
|
-
|
4799
|
-
|
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
|
+
};
|
4800
4709
|
});
|
4801
|
-
|
4802
|
-
|
4803
|
-
foldInfo: {
|
4804
|
-
foldMap: {},
|
4805
|
-
measureId: '',
|
4806
|
-
measureName: '',
|
4807
|
-
measureValue: ''
|
4808
|
-
},
|
4809
|
-
unfoldInfo: {
|
4810
|
-
groupName: '',
|
4811
|
-
groupId: '',
|
4812
|
-
colorItems: [],
|
4813
|
-
colorIdMap: {}
|
4814
|
-
}
|
4710
|
+
if (1 === scatterMeasures.length) return measureTree[0].children || [];
|
4711
|
+
return measureTree;
|
4815
4712
|
};
|
4816
|
-
const
|
4817
|
-
const {
|
4818
|
-
|
4819
|
-
if (
|
4820
|
-
|
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
|
+
]);
|
4821
4725
|
return {
|
4822
|
-
|
4823
|
-
|
4824
|
-
|
4825
|
-
|
4826
|
-
measureName: foldMeasureName,
|
4827
|
-
measureValue: foldMeasureValue
|
4828
|
-
},
|
4829
|
-
unfoldInfo
|
4830
|
-
};
|
4831
|
-
}
|
4832
|
-
{
|
4833
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(dataset, [
|
4834
|
-
...dimensions
|
4835
|
-
], [
|
4836
|
-
{
|
4837
|
-
id: foldMeasureValue,
|
4838
|
-
alias: i18n`指标值`
|
4726
|
+
...advancedVSeed,
|
4727
|
+
encoding: {
|
4728
|
+
...encoding,
|
4729
|
+
detail: mergedDetail
|
4839
4730
|
}
|
4840
|
-
], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
4841
|
-
return {
|
4842
|
-
dataset: finalDataset,
|
4843
|
-
foldInfo: {
|
4844
|
-
foldMap: {},
|
4845
|
-
measureId: foldMeasureId,
|
4846
|
-
measureName: foldMeasureName,
|
4847
|
-
measureValue: foldMeasureValue
|
4848
|
-
},
|
4849
|
-
unfoldInfo
|
4850
4731
|
};
|
4851
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
|
+
};
|
4852
4746
|
};
|
4853
|
-
const
|
4747
|
+
const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
4854
4748
|
const result = {
|
4855
4749
|
...advancedVSeed
|
4856
4750
|
};
|
4857
4751
|
const { vseed } = context;
|
4858
4752
|
const { dataset } = vseed;
|
4859
|
-
const { dimensions, measures } = advancedVSeed;
|
4860
|
-
if (!measures || !dimensions || !dataset) return result;
|
4753
|
+
const { dimensions, measures, encoding, chartType } = advancedVSeed;
|
4754
|
+
if (!measures || !dimensions || !dataset || !encoding) return result;
|
4861
4755
|
if (0 === measures.length) throw new Error('measures can not be empty');
|
4862
|
-
|
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
|
+
};
|
4863
4788
|
return {
|
4864
4789
|
...result,
|
4865
|
-
dataset:
|
4790
|
+
dataset: datasets[0],
|
4866
4791
|
datasetReshapeInfo: [
|
4867
4792
|
{
|
4868
|
-
id:
|
4793
|
+
id: String(chartType),
|
4869
4794
|
index: 0,
|
4870
|
-
foldInfo,
|
4871
|
-
|
4795
|
+
foldInfo: foldInfoList[0],
|
4796
|
+
foldInfoList: foldInfoList,
|
4797
|
+
unfoldInfo: unfoldInfo
|
4872
4798
|
}
|
4873
4799
|
]
|
4874
4800
|
};
|
4875
4801
|
};
|
4876
|
-
const
|
4802
|
+
const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
4877
4803
|
const result = {
|
4878
4804
|
...advancedVSeed
|
4879
4805
|
};
|
4880
4806
|
const { vseed } = context;
|
4881
4807
|
const { dataset } = vseed;
|
4882
|
-
const { measures } = advancedVSeed;
|
4883
|
-
|
4884
|
-
if (!measures || !dimensions) return result;
|
4808
|
+
const { dimensions, measures, encoding, chartType } = advancedVSeed;
|
4809
|
+
if (!measures || !dimensions || !dataset || !encoding) return result;
|
4885
4810
|
const measureGroups = [];
|
4886
|
-
|
4887
|
-
|
4811
|
+
const depth = measureDepth(measures);
|
4812
|
+
if (3 === depth) measures.forEach((measure)=>{
|
4813
|
+
measureGroups.push(measure.children);
|
4888
4814
|
});
|
4889
|
-
|
4815
|
+
else if (2 === depth) measureGroups.push(measures);
|
4816
|
+
const datasetList = [];
|
4890
4817
|
const datasetReshapeInfo = [];
|
4891
|
-
measureGroups.forEach((
|
4892
|
-
|
4893
|
-
if (
|
4894
|
-
const
|
4895
|
-
const
|
4896
|
-
const
|
4897
|
-
|
4898
|
-
|
4899
|
-
|
4900
|
-
|
4901
|
-
|
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
|
+
};
|
4902
4852
|
const reshapeInfo = {
|
4903
|
-
id:
|
4853
|
+
id: `${chartType}-${index}`,
|
4904
4854
|
index,
|
4905
|
-
foldInfo,
|
4906
|
-
|
4855
|
+
foldInfo: foldInfoList[0],
|
4856
|
+
foldInfoList: foldInfoList,
|
4857
|
+
unfoldInfo: unfoldInfo
|
4907
4858
|
};
|
4908
|
-
newDatasets.push(newSubDataset);
|
4909
4859
|
datasetReshapeInfo.push(reshapeInfo);
|
4860
|
+
datasetList.push(datasets[0].map((d, index)=>({
|
4861
|
+
...d,
|
4862
|
+
...datasets[1]?.[index] || {}
|
4863
|
+
})));
|
4910
4864
|
});
|
4911
4865
|
return {
|
4912
4866
|
...result,
|
4913
|
-
dataset:
|
4867
|
+
dataset: datasetList,
|
4914
4868
|
datasetReshapeInfo: datasetReshapeInfo
|
4915
4869
|
};
|
4916
4870
|
};
|
4917
|
-
const
|
4918
|
-
const result = {
|
4919
|
-
...advancedVSeed
|
4920
|
-
};
|
4921
|
-
const { datasetReshapeInfo, measures } = advancedVSeed;
|
4922
|
-
if (!datasetReshapeInfo || !measures) return result;
|
4923
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur, index)=>{
|
4924
|
-
const measure = measures[index];
|
4925
|
-
if ('children' in measure) {
|
4926
|
-
const m1 = measure.children?.[0];
|
4927
|
-
const m2 = measure.children?.[1] || m1;
|
4928
|
-
const { foldInfo, unfoldInfo } = cur;
|
4929
|
-
const x = [
|
4930
|
-
unfoldInfo.groupId
|
4931
|
-
];
|
4932
|
-
const y = [
|
4933
|
-
m1?.id,
|
4934
|
-
m2?.id
|
4935
|
-
];
|
4936
|
-
const group = [
|
4937
|
-
unfoldInfo.groupId
|
4938
|
-
];
|
4939
|
-
const color = [
|
4940
|
-
foldInfo.measureName
|
4941
|
-
];
|
4942
|
-
return [
|
4943
|
-
...prev,
|
4944
|
-
{
|
4945
|
-
x,
|
4946
|
-
y,
|
4947
|
-
group,
|
4948
|
-
color
|
4949
|
-
}
|
4950
|
-
];
|
4951
|
-
}
|
4952
|
-
{
|
4953
|
-
const m1 = measures[index];
|
4954
|
-
const m2 = measures[index + 1] || m1;
|
4955
|
-
const { foldInfo, unfoldInfo } = cur;
|
4956
|
-
const x = [
|
4957
|
-
unfoldInfo.groupId
|
4958
|
-
];
|
4959
|
-
const y = [
|
4960
|
-
m1.id,
|
4961
|
-
m2.id
|
4962
|
-
];
|
4963
|
-
const group = [
|
4964
|
-
unfoldInfo.groupId
|
4965
|
-
];
|
4966
|
-
const color = [
|
4967
|
-
foldInfo.measureName
|
4968
|
-
];
|
4969
|
-
return [
|
4970
|
-
...prev,
|
4971
|
-
{
|
4972
|
-
x,
|
4973
|
-
y,
|
4974
|
-
group,
|
4975
|
-
color
|
4976
|
-
}
|
4977
|
-
];
|
4978
|
-
}
|
4979
|
-
}, []);
|
4980
|
-
return {
|
4981
|
-
...result,
|
4982
|
-
encoding
|
4983
|
-
};
|
4984
|
-
};
|
4985
|
-
const areaRangeAdvancedPipeline = [
|
4871
|
+
const scatterAdvancedPipeline = [
|
4986
4872
|
initAdvancedVSeed_initAdvancedVSeed,
|
4987
|
-
|
4873
|
+
autoScatterMeasures,
|
4988
4874
|
autoDimensions_autoDimensions,
|
4875
|
+
encodingForScatter,
|
4989
4876
|
pivotAdapter([
|
4990
|
-
|
4877
|
+
reshapeWithScatterEncoding
|
4991
4878
|
], [
|
4992
|
-
|
4879
|
+
pivotReshapeWithScatterEncoding
|
4993
4880
|
]),
|
4994
|
-
|
4995
|
-
sortXBandAxis,
|
4996
|
-
areaConfig,
|
4881
|
+
scatterConfig,
|
4997
4882
|
theme_theme,
|
4998
4883
|
markStyle_markStyle,
|
4999
4884
|
annotation_annotation
|
5000
4885
|
];
|
5001
|
-
const
|
5002
|
-
const result = {
|
5003
|
-
type: 'common',
|
5004
|
-
padding: 0,
|
5005
|
-
region: [
|
5006
|
-
{
|
5007
|
-
clip: true
|
5008
|
-
}
|
5009
|
-
]
|
5010
|
-
};
|
5011
|
-
return (_, context)=>{
|
5012
|
-
result.series = args.map((pipeline)=>execPipeline(pipeline, context, {}));
|
5013
|
-
return result;
|
5014
|
-
};
|
5015
|
-
};
|
5016
|
-
const seriesDualAxis = (...args)=>{
|
5017
|
-
const result = {
|
5018
|
-
type: 'common',
|
5019
|
-
padding: 0,
|
5020
|
-
region: [
|
5021
|
-
{
|
5022
|
-
clip: true
|
5023
|
-
}
|
5024
|
-
]
|
5025
|
-
};
|
5026
|
-
const createDualContext = (context, index)=>{
|
5027
|
-
const { advancedVSeed } = context;
|
5028
|
-
const dataset = advancedVSeed.dataset[index];
|
5029
|
-
return {
|
5030
|
-
...context,
|
5031
|
-
advancedVSeed: {
|
5032
|
-
...advancedVSeed,
|
5033
|
-
dataset: dataset
|
5034
|
-
}
|
5035
|
-
};
|
5036
|
-
};
|
5037
|
-
return (_, context)=>{
|
5038
|
-
result.series = args.map((pipeline, index)=>{
|
5039
|
-
const seriesContext = createDualContext(context, index);
|
5040
|
-
return execPipeline(pipeline, seriesContext, {});
|
5041
|
-
});
|
5042
|
-
return result;
|
5043
|
-
};
|
5044
|
-
};
|
5045
|
-
const initAreaRange = (spec, context)=>{
|
4886
|
+
const initScatter = (spec, context)=>{
|
5046
4887
|
const result = {
|
5047
4888
|
...spec
|
5048
4889
|
};
|
5049
4890
|
const { advancedVSeed } = context;
|
5050
|
-
const {
|
5051
|
-
|
5052
|
-
|
5053
|
-
result.type = 'rangeArea';
|
4891
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
4892
|
+
const { unfoldInfo, foldInfoList } = datasetReshapeInfo[0];
|
4893
|
+
result.type = 'scatter';
|
5054
4894
|
result.direction = 'vertical';
|
5055
|
-
result.
|
5056
|
-
result.
|
5057
|
-
result.
|
5058
|
-
|
5059
|
-
|
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
|
+
}
|
5060
4903
|
];
|
5061
4904
|
result.animation = true;
|
5062
|
-
result.area = {
|
5063
|
-
style: {
|
5064
|
-
fill: color.colorScheme?.[0]
|
5065
|
-
}
|
5066
|
-
};
|
5067
4905
|
return result;
|
5068
4906
|
};
|
5069
|
-
const
|
5070
|
-
const
|
5071
|
-
|
5072
|
-
|
5073
|
-
const
|
5074
|
-
const { encoding } = advancedVSeed;
|
5075
|
-
if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
|
5076
|
-
const { color } = advancedVSeed.config.areaRange;
|
5077
|
-
result.type = 'line';
|
5078
|
-
result.direction = 'vertical';
|
5079
|
-
result.stack = false;
|
5080
|
-
result.xField = encoding[0].x[0];
|
5081
|
-
result.yField = [
|
5082
|
-
encoding[0].y[0]
|
5083
|
-
];
|
5084
|
-
result.animation = true;
|
5085
|
-
result.line = {
|
5086
|
-
style: {
|
5087
|
-
stroke: color.colorScheme?.[0]
|
5088
|
-
}
|
5089
|
-
};
|
5090
|
-
result.point = {
|
5091
|
-
style: {
|
5092
|
-
visible: false,
|
5093
|
-
fill: color.colorScheme?.[0]
|
5094
|
-
}
|
5095
|
-
};
|
5096
|
-
return result;
|
5097
|
-
};
|
5098
|
-
const initAreaRangeLine2 = (spec, context)=>{
|
5099
|
-
const result = {
|
5100
|
-
...spec
|
5101
|
-
};
|
5102
|
-
const { advancedVSeed } = context;
|
5103
|
-
const { encoding } = advancedVSeed;
|
5104
|
-
if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
|
5105
|
-
const { color } = advancedVSeed.config.areaRange;
|
5106
|
-
result.type = 'line';
|
5107
|
-
result.direction = 'vertical';
|
5108
|
-
result.stack = false;
|
5109
|
-
result.xField = encoding[0].x[0];
|
5110
|
-
result.yField = [
|
5111
|
-
encoding[0].y[1]
|
5112
|
-
];
|
5113
|
-
result.animation = true;
|
5114
|
-
result.line = {
|
5115
|
-
style: {
|
5116
|
-
stroke: color.colorScheme?.[0]
|
5117
|
-
}
|
5118
|
-
};
|
5119
|
-
result.point = {
|
5120
|
-
style: {
|
5121
|
-
visible: false,
|
5122
|
-
fill: color.colorScheme?.[0]
|
5123
|
-
}
|
5124
|
-
};
|
5125
|
-
return result;
|
5126
|
-
};
|
5127
|
-
const tooltipDisable = (spec)=>{
|
5128
|
-
const result = {
|
5129
|
-
...spec
|
5130
|
-
};
|
5131
|
-
result.tooltip = {
|
5132
|
-
visible: false
|
5133
|
-
};
|
5134
|
-
return result;
|
5135
|
-
};
|
5136
|
-
const tooltipAreaRange = (spec, context)=>{
|
5137
|
-
const result = {
|
5138
|
-
...spec
|
5139
|
-
};
|
5140
|
-
const { advancedVSeed } = context;
|
5141
|
-
const { measures, datasetReshapeInfo, chartType, locale, encoding } = advancedVSeed;
|
5142
|
-
const baseConfig = advancedVSeed.config[chartType];
|
5143
|
-
const { tooltip = {
|
5144
|
-
enable: true
|
5145
|
-
} } = baseConfig;
|
5146
|
-
const { enable } = tooltip;
|
5147
|
-
const { groupName } = datasetReshapeInfo[0].unfoldInfo;
|
5148
|
-
const y = encoding[0]?.y || [];
|
5149
|
-
result.tooltip = {
|
5150
|
-
visible: enable,
|
5151
|
-
dimension: {
|
5152
|
-
content: [
|
5153
|
-
{
|
5154
|
-
visible: true,
|
5155
|
-
key: (datum)=>datum && datum[groupName] || '',
|
5156
|
-
value: (datum)=>{
|
5157
|
-
if (!datum) return '';
|
5158
|
-
const text = y.map((id)=>{
|
5159
|
-
const value = datum[id];
|
5160
|
-
const measure = findMeasureById(measures, id);
|
5161
|
-
if (!measure) return String(value);
|
5162
|
-
const { format = {}, autoFormat = true } = measure;
|
5163
|
-
if (!isEmpty(format)) {
|
5164
|
-
const formatter = createFormatter(format);
|
5165
|
-
return formatter(value);
|
5166
|
-
}
|
5167
|
-
if (autoFormat) return autoFormatter(value, locale);
|
5168
|
-
return String(value);
|
5169
|
-
});
|
5170
|
-
return text.join(' ~ ');
|
5171
|
-
},
|
5172
|
-
shapeType: 'rectRound'
|
5173
|
-
},
|
5174
|
-
...y.map((id)=>{
|
5175
|
-
const measure = findMeasureById(measures, id);
|
5176
|
-
return {
|
5177
|
-
visible: true,
|
5178
|
-
key: measure?.alias || id,
|
5179
|
-
value: (datum)=>{
|
5180
|
-
if (!datum) return '';
|
5181
|
-
const value = datum[id];
|
5182
|
-
const measure = findMeasureById(measures, id);
|
5183
|
-
if (!measure) return String(value);
|
5184
|
-
const { format = {}, autoFormat = true } = measure;
|
5185
|
-
if (!isEmpty(format)) {
|
5186
|
-
const formatter = createFormatter(format);
|
5187
|
-
return formatter(value);
|
5188
|
-
}
|
5189
|
-
if (autoFormat) return autoFormatter(value, locale);
|
5190
|
-
return String(value);
|
5191
|
-
},
|
5192
|
-
shapeType: 'rectRound'
|
5193
|
-
};
|
5194
|
-
})
|
5195
|
-
]
|
5196
|
-
}
|
5197
|
-
};
|
5198
|
-
return result;
|
5199
|
-
};
|
5200
|
-
const areaRange = [
|
5201
|
-
series([
|
5202
|
-
initAreaRange,
|
5203
|
-
areaStyle_areaStyle
|
5204
|
-
], [
|
5205
|
-
initAreaRangeLine1,
|
5206
|
-
lineStyle_lineStyle,
|
5207
|
-
pointStyle_pointStyle,
|
5208
|
-
pointStateDimensionHover,
|
5209
|
-
tooltipDisable
|
5210
|
-
], [
|
5211
|
-
initAreaRangeLine2,
|
5212
|
-
lineStyle_lineStyle,
|
5213
|
-
pointStyle_pointStyle,
|
5214
|
-
pointStateDimensionHover,
|
5215
|
-
tooltipDisable
|
5216
|
-
]),
|
5217
|
-
datasetXY,
|
5218
|
-
progressive,
|
5219
|
-
background_backgroundColor,
|
5220
|
-
xBand,
|
5221
|
-
yLinear,
|
5222
|
-
label_label,
|
5223
|
-
tooltipAreaRange,
|
5224
|
-
verticalCrosshairLine,
|
5225
|
-
annotationPoint_annotationPoint,
|
5226
|
-
annotationVerticalLine_annotationVerticalLine,
|
5227
|
-
annotationHorizontalLine_annotationHorizontalLine,
|
5228
|
-
annotationArea_annotationArea
|
5229
|
-
];
|
5230
|
-
const pivotAreaRange = [
|
5231
|
-
initPivot,
|
5232
|
-
pivotGridStyle,
|
5233
|
-
pivotIndicators_pivotIndicatorsAsRow,
|
5234
|
-
datasetPivot,
|
5235
|
-
pivotIndicators_pivotIndicators([
|
5236
|
-
series([
|
5237
|
-
initAreaRange,
|
5238
|
-
areaStyle_areaStyle
|
5239
|
-
], [
|
5240
|
-
initAreaRangeLine1,
|
5241
|
-
lineStyle_lineStyle,
|
5242
|
-
pointStyle_pointStyle,
|
5243
|
-
pointStateDimensionHover,
|
5244
|
-
tooltipDisable
|
5245
|
-
], [
|
5246
|
-
initAreaRangeLine2,
|
5247
|
-
lineStyle_lineStyle,
|
5248
|
-
pointStyle_pointStyle,
|
5249
|
-
pointStateDimensionHover,
|
5250
|
-
tooltipDisable
|
5251
|
-
]),
|
5252
|
-
background_backgroundColor,
|
5253
|
-
datasetXY,
|
5254
|
-
progressive,
|
5255
|
-
xBand,
|
5256
|
-
yLinear,
|
5257
|
-
label_label,
|
5258
|
-
tooltipAreaRange,
|
5259
|
-
verticalCrosshairLine,
|
5260
|
-
annotationPoint_annotationPoint,
|
5261
|
-
annotationVerticalLine_annotationVerticalLine,
|
5262
|
-
annotationHorizontalLine_annotationHorizontalLine,
|
5263
|
-
annotationArea_annotationArea
|
5264
|
-
]),
|
5265
|
-
pivotRowDimensions,
|
5266
|
-
pivotColumnDimensions
|
5267
|
-
];
|
5268
|
-
const areaRangeSpecPipeline = [
|
5269
|
-
pivotAdapter_pivotAdapter(areaRange, pivotAreaRange)
|
5270
|
-
];
|
5271
|
-
const registerAreaRange = ()=>{
|
5272
|
-
Builder._advancedPipelineMap.areaRange = areaRangeAdvancedPipeline;
|
5273
|
-
Builder._specPipelineMap.areaRange = areaRangeSpecPipeline;
|
5274
|
-
};
|
5275
|
-
const dataReshapeFor1D2M_emptyReshapeResult = {
|
5276
|
-
dataset: [],
|
5277
|
-
foldInfo: {
|
5278
|
-
foldMap: {},
|
5279
|
-
measureId: '',
|
5280
|
-
measureName: '',
|
5281
|
-
measureValue: ''
|
5282
|
-
},
|
5283
|
-
unfoldInfo: {
|
5284
|
-
groupName: '',
|
5285
|
-
groupId: '',
|
5286
|
-
colorItems: [],
|
5287
|
-
colorIdMap: {}
|
5288
|
-
}
|
5289
|
-
};
|
5290
|
-
const dataReshapeFor1D2M = (dataset, dimensions, measures, options)=>{
|
5291
|
-
const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, unfoldDimensionGroup = UnfoldDimensionGroup, unfoldDimensionGroupId = UnfoldDimensionGroupId } = options || {};
|
5292
|
-
if (0 === dimensions.length && 0 === measures.length) return dataReshapeFor1D2M_emptyReshapeResult;
|
5293
|
-
const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures.length > 1 ? measures.slice(1) : measures, foldMeasureId, foldMeasureName, foldMeasureValue);
|
5294
|
-
if (0 === dimensions.length) {
|
5295
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
|
5296
|
-
{
|
5297
|
-
id: foldMeasureValue,
|
5298
|
-
alias: i18n`指标值`,
|
5299
|
-
location: 'dimension'
|
5300
|
-
}
|
5301
|
-
], [
|
5302
|
-
{
|
5303
|
-
id: foldMeasureValue,
|
5304
|
-
alias: i18n`指标值`
|
5305
|
-
}
|
5306
|
-
], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
5307
|
-
return {
|
5308
|
-
dataset: finalDataset,
|
5309
|
-
foldInfo,
|
5310
|
-
unfoldInfo
|
5311
|
-
};
|
5312
|
-
}
|
5313
|
-
{
|
5314
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
|
5315
|
-
...dimensions
|
5316
|
-
], [
|
5317
|
-
{
|
5318
|
-
id: foldMeasureValue,
|
5319
|
-
alias: i18n`指标值`
|
5320
|
-
}
|
5321
|
-
], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
5322
|
-
return {
|
5323
|
-
dataset: finalDataset,
|
5324
|
-
foldInfo,
|
5325
|
-
unfoldInfo
|
5326
|
-
};
|
5327
|
-
}
|
5328
|
-
};
|
5329
|
-
const reshapeTo1D2M = (advancedVSeed, context)=>{
|
5330
|
-
const result = {
|
5331
|
-
...advancedVSeed
|
5332
|
-
};
|
5333
|
-
const { vseed } = context;
|
5334
|
-
const { dataset } = vseed;
|
5335
|
-
const { dimensions, measures } = advancedVSeed;
|
5336
|
-
if (!measures || !dimensions || !dataset) return result;
|
5337
|
-
if (0 === measures.length) throw new Error('measures can not be empty');
|
5338
|
-
const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D2M(dataset, dimensions, measures);
|
5339
|
-
return {
|
5340
|
-
...result,
|
5341
|
-
dataset: newDatasets,
|
5342
|
-
datasetReshapeInfo: [
|
5343
|
-
{
|
5344
|
-
id: '1D2M',
|
5345
|
-
index: 0,
|
5346
|
-
foldInfo,
|
5347
|
-
unfoldInfo
|
5348
|
-
}
|
5349
|
-
]
|
5350
|
-
};
|
5351
|
-
};
|
5352
|
-
const pivotReshapeTo1D2M = (advancedVSeed, context)=>{
|
5353
|
-
const result = {
|
5354
|
-
...advancedVSeed
|
5355
|
-
};
|
5356
|
-
const { vseed } = context;
|
5357
|
-
const { dataset } = vseed;
|
5358
|
-
const { measures } = advancedVSeed;
|
5359
|
-
const dimensions = advancedVSeed.dimensions;
|
5360
|
-
if (!measures || !dimensions) return result;
|
5361
|
-
const measureGroups = [];
|
5362
|
-
if (measures) measures.forEach((measure)=>{
|
5363
|
-
if (measure.children && measure.children.length > 0) measureGroups.push(measure);
|
5364
|
-
});
|
5365
|
-
const newDatasets = [];
|
5366
|
-
const datasetReshapeInfo = [];
|
5367
|
-
measureGroups.forEach((measureGroup, index)=>{
|
5368
|
-
const measures = measureGroup.children;
|
5369
|
-
if (!measures) return;
|
5370
|
-
const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
|
5371
|
-
const groupId = measureGroup.id;
|
5372
|
-
const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeFor1D2M(dataset, commonDimensions, measures, {
|
5373
|
-
foldMeasureId: FoldMeasureId,
|
5374
|
-
foldMeasureName: FoldMeasureName,
|
5375
|
-
foldMeasureValue: FoldMeasureValue + groupId,
|
5376
|
-
unfoldDimensionGroup: UnfoldDimensionGroup
|
5377
|
-
});
|
5378
|
-
const reshapeInfo = {
|
5379
|
-
id: groupId,
|
5380
|
-
index,
|
5381
|
-
foldInfo,
|
5382
|
-
unfoldInfo
|
5383
|
-
};
|
5384
|
-
newDatasets.push(newSubDataset);
|
5385
|
-
datasetReshapeInfo.push(reshapeInfo);
|
5386
|
-
});
|
5387
|
-
return {
|
5388
|
-
...result,
|
5389
|
-
dataset: newDatasets,
|
5390
|
-
datasetReshapeInfo: datasetReshapeInfo
|
5391
|
-
};
|
5392
|
-
};
|
5393
|
-
const encodingYY = (advancedVSeed)=>{
|
5394
|
-
const result = {
|
5395
|
-
...advancedVSeed
|
5396
|
-
};
|
5397
|
-
const { datasetReshapeInfo, measures } = advancedVSeed;
|
5398
|
-
if (!datasetReshapeInfo || !measures) return result;
|
5399
|
-
const firstMeasure = findFirstMeasure(measures);
|
5400
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
|
5401
|
-
const { foldInfo, unfoldInfo } = cur;
|
5402
|
-
const x = [
|
5403
|
-
firstMeasure?.id
|
5404
|
-
];
|
5405
|
-
const y = [
|
5406
|
-
foldInfo.measureValue
|
5407
|
-
];
|
5408
|
-
const group = [
|
5409
|
-
unfoldInfo.groupId
|
5410
|
-
];
|
5411
|
-
const color = [
|
5412
|
-
unfoldInfo.groupId
|
5413
|
-
];
|
5414
|
-
return [
|
5415
|
-
...prev,
|
5416
|
-
{
|
5417
|
-
x,
|
5418
|
-
y,
|
5419
|
-
group,
|
5420
|
-
color
|
5421
|
-
}
|
5422
|
-
];
|
5423
|
-
}, []);
|
4907
|
+
const datasetScatter = (spec, context)=>{
|
4908
|
+
const { advancedVSeed, vseed } = context;
|
4909
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
4910
|
+
const id = datasetReshapeInfo[0].id;
|
4911
|
+
const fields = {};
|
5424
4912
|
return {
|
5425
|
-
...
|
5426
|
-
|
5427
|
-
|
5428
|
-
|
5429
|
-
|
5430
|
-
initAdvancedVSeed_initAdvancedVSeed,
|
5431
|
-
autoMeasures_autoMeasures,
|
5432
|
-
autoDimensions_autoDimensions,
|
5433
|
-
pivotAdapter([
|
5434
|
-
reshapeTo1D2M
|
5435
|
-
], [
|
5436
|
-
pivotReshapeTo1D2M
|
5437
|
-
]),
|
5438
|
-
encodingYY,
|
5439
|
-
scatterConfig,
|
5440
|
-
theme_theme,
|
5441
|
-
markStyle_markStyle,
|
5442
|
-
annotation_annotation
|
5443
|
-
];
|
5444
|
-
const initScatter = (spec, context)=>{
|
5445
|
-
const result = {
|
5446
|
-
...spec
|
5447
|
-
};
|
5448
|
-
const { advancedVSeed } = context;
|
5449
|
-
const { encoding } = advancedVSeed;
|
5450
|
-
if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
|
5451
|
-
result.type = 'scatter';
|
5452
|
-
result.direction = 'vertical';
|
5453
|
-
result.xField = encoding[0].x[0];
|
5454
|
-
result.yField = encoding[0].y[0];
|
5455
|
-
result.seriesField = encoding[0].group[0];
|
5456
|
-
result.padding = 0;
|
5457
|
-
result.region = [
|
5458
|
-
{
|
5459
|
-
clip: true
|
4913
|
+
...spec,
|
4914
|
+
data: {
|
4915
|
+
id,
|
4916
|
+
values: isPivotChart(vseed) ? void 0 : advancedVSeed.dataset.flat(),
|
4917
|
+
fields: fields
|
5460
4918
|
}
|
5461
|
-
|
5462
|
-
result.animation = true;
|
5463
|
-
return result;
|
4919
|
+
};
|
5464
4920
|
};
|
5465
4921
|
const horizontalCrosshairLine = (spec, context)=>{
|
5466
4922
|
const result = {
|
@@ -5510,7 +4966,7 @@ const scatter = [
|
|
5510
4966
|
initScatter,
|
5511
4967
|
color_color,
|
5512
4968
|
background_backgroundColor,
|
5513
|
-
|
4969
|
+
datasetScatter,
|
5514
4970
|
progressive,
|
5515
4971
|
xLinear,
|
5516
4972
|
yLinear,
|
@@ -5535,7 +4991,7 @@ const pivotScatter = [
|
|
5535
4991
|
initScatter,
|
5536
4992
|
color_color,
|
5537
4993
|
background_backgroundColor,
|
5538
|
-
|
4994
|
+
datasetScatter,
|
5539
4995
|
progressive,
|
5540
4996
|
xLinear,
|
5541
4997
|
yLinear,
|
@@ -5561,41 +5017,163 @@ const registerScatter = ()=>{
|
|
5561
5017
|
Builder._advancedPipelineMap.scatter = scatterAdvancedPipeline;
|
5562
5018
|
Builder._specPipelineMap.scatter = scatterSpecPipeline;
|
5563
5019
|
};
|
5564
|
-
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)=>{
|
5565
5145
|
const result = {
|
5566
5146
|
...advancedVSeed
|
5567
5147
|
};
|
5568
5148
|
const { vseed } = context;
|
5569
5149
|
const { dataset } = vseed;
|
5570
|
-
const { dimensions, measures } = advancedVSeed;
|
5571
|
-
if (!measures || !dimensions || !dataset) return result;
|
5150
|
+
const { dimensions, measures, encoding, chartType } = advancedVSeed;
|
5151
|
+
if (!measures || !dimensions || !dataset || !encoding) return result;
|
5572
5152
|
if (0 === measures.length) throw new Error('measures can not be empty');
|
5573
5153
|
if (measures.length > 2) throw new Error('measures can not be more than 2');
|
5574
|
-
const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
|
5575
|
-
const datasets = [];
|
5576
5154
|
const foldInfoList = [];
|
5577
5155
|
const unfoldInfoList = [];
|
5156
|
+
const datasets = [];
|
5578
5157
|
const primaryMeasures = measures[0];
|
5579
5158
|
const secondaryMeasures = measures[1] || [];
|
5580
5159
|
if (primaryMeasures && primaryMeasures.children) {
|
5581
|
-
const { dataset:
|
5160
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
|
5582
5161
|
foldMeasureValue: FoldPrimaryMeasureValue
|
5583
5162
|
});
|
5584
|
-
datasets.push(
|
5163
|
+
datasets.push(newDataset);
|
5585
5164
|
foldInfoList.push(foldInfo);
|
5586
5165
|
unfoldInfoList.push(unfoldInfo);
|
5587
5166
|
}
|
5588
5167
|
if (secondaryMeasures && secondaryMeasures.children) {
|
5589
|
-
const { dataset:
|
5168
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding, {
|
5590
5169
|
foldMeasureValue: FoldSecondaryMeasureValue
|
5591
5170
|
});
|
5592
|
-
datasets.push(
|
5171
|
+
datasets.push(newDataset);
|
5593
5172
|
foldInfoList.push(foldInfo);
|
5594
5173
|
unfoldInfoList.push(unfoldInfo);
|
5595
5174
|
}
|
5596
5175
|
const unfoldInfo = {
|
5597
|
-
|
5598
|
-
groupId: unfoldInfoList[0].groupId,
|
5176
|
+
...unfoldInfoList[0],
|
5599
5177
|
colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
|
5600
5178
|
colorIdMap: unfoldInfoList.reduce((prev, cur)=>({
|
5601
5179
|
...prev,
|
@@ -5607,7 +5185,7 @@ const reshapeTo2D2M = (advancedVSeed, context)=>{
|
|
5607
5185
|
dataset: datasets,
|
5608
5186
|
datasetReshapeInfo: [
|
5609
5187
|
{
|
5610
|
-
id:
|
5188
|
+
id: String(chartType),
|
5611
5189
|
index: 0,
|
5612
5190
|
foldInfo: foldInfoList[0],
|
5613
5191
|
foldInfoList: foldInfoList,
|
@@ -5616,46 +5194,48 @@ const reshapeTo2D2M = (advancedVSeed, context)=>{
|
|
5616
5194
|
]
|
5617
5195
|
};
|
5618
5196
|
};
|
5619
|
-
const
|
5197
|
+
const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
|
5620
5198
|
const result = {
|
5621
5199
|
...advancedVSeed
|
5622
5200
|
};
|
5623
5201
|
const { vseed } = context;
|
5624
5202
|
const { dataset } = vseed;
|
5625
|
-
const { dimensions, measures } = advancedVSeed;
|
5626
|
-
if (!measures || !dimensions || !dataset) return result;
|
5627
|
-
const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
|
5203
|
+
const { dimensions, measures, encoding, chartType } = advancedVSeed;
|
5204
|
+
if (!measures || !dimensions || !dataset || !encoding) return result;
|
5628
5205
|
const datasetList = [];
|
5629
5206
|
const datasetReshapeInfo = [];
|
5630
|
-
|
5631
|
-
|
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)=>{
|
5632
5214
|
if (0 === measures.length) throw new Error('measures can not be empty');
|
5633
5215
|
if (measures.length > 2) throw new Error('measures can not be more than 2');
|
5634
|
-
const datasets = [];
|
5635
5216
|
const foldInfoList = [];
|
5636
5217
|
const unfoldInfoList = [];
|
5218
|
+
const datasets = [];
|
5637
5219
|
const primaryMeasures = measures[0];
|
5638
|
-
const secondaryMeasures = measures[1] ||
|
5220
|
+
const secondaryMeasures = measures[1] || [];
|
5639
5221
|
if (primaryMeasures && primaryMeasures.children) {
|
5640
|
-
const { dataset:
|
5222
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
|
5641
5223
|
foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`
|
5642
5224
|
});
|
5643
|
-
datasets.push(
|
5225
|
+
datasets.push(newDataset);
|
5644
5226
|
foldInfoList.push(foldInfo);
|
5645
5227
|
unfoldInfoList.push(unfoldInfo);
|
5646
5228
|
}
|
5647
5229
|
if (secondaryMeasures && secondaryMeasures.children) {
|
5648
|
-
const { dataset:
|
5230
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding, {
|
5649
5231
|
foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`
|
5650
5232
|
});
|
5651
|
-
datasets.push(
|
5233
|
+
datasets.push(newDataset);
|
5652
5234
|
foldInfoList.push(foldInfo);
|
5653
5235
|
unfoldInfoList.push(unfoldInfo);
|
5654
5236
|
}
|
5655
|
-
datasetList.push(datasets.flat(2));
|
5656
5237
|
const unfoldInfo = {
|
5657
|
-
|
5658
|
-
groupId: unfoldInfoList[0].groupId,
|
5238
|
+
...unfoldInfoList[0],
|
5659
5239
|
colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
|
5660
5240
|
colorIdMap: unfoldInfoList.reduce((prev, cur)=>({
|
5661
5241
|
...prev,
|
@@ -5663,53 +5243,19 @@ const pivotReshapeTo2D2M = (advancedVSeed, context)=>{
|
|
5663
5243
|
}), {})
|
5664
5244
|
};
|
5665
5245
|
const reshapeInfo = {
|
5666
|
-
id:
|
5246
|
+
id: `${chartType}-${index}`,
|
5667
5247
|
index,
|
5668
5248
|
foldInfo: foldInfoList[0],
|
5669
|
-
|
5670
|
-
|
5249
|
+
foldInfoList: foldInfoList,
|
5250
|
+
unfoldInfo: unfoldInfo
|
5671
5251
|
};
|
5672
5252
|
datasetReshapeInfo.push(reshapeInfo);
|
5253
|
+
datasetList.push(datasets.flat(2));
|
5673
5254
|
});
|
5674
5255
|
return {
|
5675
5256
|
...result,
|
5676
5257
|
dataset: datasetList,
|
5677
|
-
datasetReshapeInfo
|
5678
|
-
};
|
5679
|
-
};
|
5680
|
-
const encodingXYY = (advancedVSeed)=>{
|
5681
|
-
const result = {
|
5682
|
-
...advancedVSeed
|
5683
|
-
};
|
5684
|
-
const { datasetReshapeInfo, dimensions } = advancedVSeed;
|
5685
|
-
if (!datasetReshapeInfo || !dimensions) return result;
|
5686
|
-
const xDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
|
5687
|
-
const isZeroDimension = 0 === dimensions.length;
|
5688
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
|
5689
|
-
const { foldInfoList, unfoldInfo } = cur;
|
5690
|
-
const x = [
|
5691
|
-
isZeroDimension ? foldInfoList[0].measureName : xDimension?.id
|
5692
|
-
];
|
5693
|
-
const y = foldInfoList.map((d)=>d.measureValue);
|
5694
|
-
const group = [
|
5695
|
-
unfoldInfo.groupId
|
5696
|
-
];
|
5697
|
-
const color = [
|
5698
|
-
foldInfoList[0].measureName
|
5699
|
-
];
|
5700
|
-
return [
|
5701
|
-
...prev,
|
5702
|
-
{
|
5703
|
-
x,
|
5704
|
-
y,
|
5705
|
-
group,
|
5706
|
-
color
|
5707
|
-
}
|
5708
|
-
];
|
5709
|
-
}, []);
|
5710
|
-
return {
|
5711
|
-
...result,
|
5712
|
-
encoding
|
5258
|
+
datasetReshapeInfo: datasetReshapeInfo
|
5713
5259
|
};
|
5714
5260
|
};
|
5715
5261
|
const dualAxisConfig = (advancedVSeed, context)=>{
|
@@ -5738,125 +5284,80 @@ const dualAxisConfig = (advancedVSeed, context)=>{
|
|
5738
5284
|
};
|
5739
5285
|
return result;
|
5740
5286
|
};
|
5741
|
-
const autoDualMeasures = (advancedVSeed, context)=>{
|
5742
|
-
const result = {
|
5743
|
-
...advancedVSeed
|
5744
|
-
};
|
5745
|
-
const { vseed } = context;
|
5746
|
-
const { dataset, dualMeasures, measures } = vseed;
|
5747
|
-
if (!dataset) throw new Error('dataset is required');
|
5748
|
-
if (0 === dataset.length) return result;
|
5749
|
-
if (dualMeasures) {
|
5750
|
-
result.measures = dualMeasuresToMeasureTree(dualMeasures);
|
5751
|
-
return result;
|
5752
|
-
}
|
5753
|
-
if (measures && measureDepth(measures) > 1) {
|
5754
|
-
result.measures = measures;
|
5755
|
-
return result;
|
5756
|
-
}
|
5757
|
-
const top100dataset = dataset.slice(0, 100);
|
5758
|
-
const sample = top100dataset.reduce((prev, cur)=>({
|
5759
|
-
...prev,
|
5760
|
-
...cur
|
5761
|
-
}), {});
|
5762
|
-
const newMeasures = measures || Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
|
5763
|
-
'',
|
5764
|
-
null,
|
5765
|
-
void 0
|
5766
|
-
].includes(key)).map((measure)=>({
|
5767
|
-
id: measure,
|
5768
|
-
alias: measure
|
5769
|
-
}));
|
5770
|
-
if (0 === newMeasures.length) result.measures = [];
|
5771
|
-
else if (1 === newMeasures.length) result.measures = [
|
5772
|
-
{
|
5773
|
-
id: 'primary',
|
5774
|
-
alias: 'primary',
|
5775
|
-
children: newMeasures
|
5776
|
-
}
|
5777
|
-
];
|
5778
|
-
else if (newMeasures.length > 1) result.measures = [
|
5779
|
-
{
|
5780
|
-
id: 'primary',
|
5781
|
-
alias: 'primary',
|
5782
|
-
children: newMeasures.slice(0, 1)
|
5783
|
-
},
|
5784
|
-
{
|
5785
|
-
id: 'secondary',
|
5786
|
-
alias: 'secondary',
|
5787
|
-
children: newMeasures.slice(1)
|
5788
|
-
}
|
5789
|
-
];
|
5790
|
-
return result;
|
5791
|
-
};
|
5792
|
-
const dualMeasuresToMeasureTree = (dualMeasures)=>{
|
5793
|
-
const measureTree = dualMeasures.map((item, index)=>{
|
5794
|
-
const { primaryMeasures, secondaryMeasures } = item;
|
5795
|
-
const groupChildren = [];
|
5796
|
-
let id = '';
|
5797
|
-
if (primaryMeasures) {
|
5798
|
-
const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [
|
5799
|
-
primaryMeasures
|
5800
|
-
];
|
5801
|
-
const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
|
5802
|
-
id += alias;
|
5803
|
-
groupChildren.push({
|
5804
|
-
id: `${index}-primary`,
|
5805
|
-
alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
|
5806
|
-
children: arrPrimaryMeasures
|
5807
|
-
});
|
5808
|
-
}
|
5809
|
-
if (secondaryMeasures) {
|
5810
|
-
const arrSecondaryMeasures = Array.isArray(secondaryMeasures) ? secondaryMeasures : [
|
5811
|
-
secondaryMeasures
|
5812
|
-
];
|
5813
|
-
const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
|
5814
|
-
id += alias;
|
5815
|
-
groupChildren.push({
|
5816
|
-
id: `${index}-secondary`,
|
5817
|
-
alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
|
5818
|
-
children: arrSecondaryMeasures
|
5819
|
-
});
|
5820
|
-
}
|
5821
|
-
return {
|
5822
|
-
id,
|
5823
|
-
alias: id,
|
5824
|
-
children: groupChildren
|
5825
|
-
};
|
5826
|
-
});
|
5827
|
-
if (1 === dualMeasures.length) return measureTree[0].children || [];
|
5828
|
-
return measureTree;
|
5829
|
-
};
|
5830
5287
|
const dualAxisAdvancedPipeline = [
|
5831
5288
|
initAdvancedVSeed_initAdvancedVSeed,
|
5832
5289
|
autoDualMeasures,
|
5833
5290
|
autoDimensions_autoDimensions,
|
5291
|
+
encodingForDualAxis,
|
5834
5292
|
pivotAdapter([
|
5835
|
-
|
5293
|
+
reshapeWithDualEncoding
|
5836
5294
|
], [
|
5837
|
-
|
5295
|
+
pivotReshapeWithDualEncoding
|
5838
5296
|
]),
|
5839
|
-
encodingXYY,
|
5840
5297
|
sortXBandAxis,
|
5841
|
-
|
5298
|
+
sortLegend_sortLegend,
|
5842
5299
|
dualAxisConfig,
|
5843
5300
|
theme_theme,
|
5844
5301
|
markStyle_markStyle,
|
5845
5302
|
annotation_annotation
|
5846
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
|
+
};
|
5847
5348
|
const initDualAxisPrimary = (spec, context)=>{
|
5848
5349
|
const result = {
|
5849
5350
|
...spec
|
5850
5351
|
};
|
5851
5352
|
const { advancedVSeed } = context;
|
5852
|
-
const {
|
5853
|
-
|
5854
|
-
result.id = `${
|
5353
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
5354
|
+
const { unfoldInfo, foldInfoList, id } = datasetReshapeInfo[0];
|
5355
|
+
result.id = `${id}-primary-series`;
|
5855
5356
|
result.type = 'bar';
|
5856
5357
|
result.direction = 'vertical';
|
5857
|
-
result.xField =
|
5858
|
-
result.
|
5859
|
-
result.
|
5358
|
+
result.xField = unfoldInfo.encodingX;
|
5359
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
5360
|
+
result.yField = foldInfoList?.[0].measureValue;
|
5860
5361
|
result.animation = true;
|
5861
5362
|
return result;
|
5862
5363
|
};
|
@@ -5865,14 +5366,14 @@ const initDualAxisSecondary = (spec, context)=>{
|
|
5865
5366
|
...spec
|
5866
5367
|
};
|
5867
5368
|
const { advancedVSeed } = context;
|
5868
|
-
const {
|
5869
|
-
|
5870
|
-
result.id = `${
|
5369
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
5370
|
+
const { unfoldInfo, foldInfoList, id } = datasetReshapeInfo[0];
|
5371
|
+
result.id = `${id}-secondary-series`;
|
5871
5372
|
result.type = 'line';
|
5872
5373
|
result.direction = 'vertical';
|
5873
|
-
result.xField =
|
5874
|
-
result.yField =
|
5875
|
-
result.seriesField =
|
5374
|
+
result.xField = unfoldInfo.encodingX;
|
5375
|
+
if (foldInfoList?.[1]) result.yField = foldInfoList[1].measureValue;
|
5376
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
5876
5377
|
result.animation = true;
|
5877
5378
|
return result;
|
5878
5379
|
};
|
@@ -5904,10 +5405,10 @@ const dualChartTypePrimary = (spec, context)=>{
|
|
5904
5405
|
case 'columnParallel':
|
5905
5406
|
{
|
5906
5407
|
const columnSpec = result;
|
5907
|
-
if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.
|
5408
|
+
if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.encodingDetail);
|
5908
5409
|
else if (columnSpec.xField) columnSpec.xField = [
|
5909
5410
|
columnSpec.xField,
|
5910
|
-
datasetReshapeInfo[0].unfoldInfo.
|
5411
|
+
datasetReshapeInfo[0].unfoldInfo.encodingDetail
|
5911
5412
|
];
|
5912
5413
|
columnSpec.type = 'bar';
|
5913
5414
|
result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX;
|
@@ -5960,10 +5461,10 @@ const dualChartTypeSecondary = (spec, context)=>{
|
|
5960
5461
|
case 'columnParallel':
|
5961
5462
|
{
|
5962
5463
|
const columnSpec = result;
|
5963
|
-
if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.
|
5464
|
+
if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.encodingDetail);
|
5964
5465
|
else if (columnSpec.xField) columnSpec.xField = [
|
5965
5466
|
columnSpec.xField,
|
5966
|
-
datasetReshapeInfo[0].unfoldInfo.
|
5467
|
+
datasetReshapeInfo[0].unfoldInfo.encodingDetail
|
5967
5468
|
];
|
5968
5469
|
columnSpec.type = 'bar';
|
5969
5470
|
result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX;
|
@@ -5990,10 +5491,11 @@ const dualChartTypeSecondary = (spec, context)=>{
|
|
5990
5491
|
};
|
5991
5492
|
const datasetPrimary = (spec, context)=>{
|
5992
5493
|
const { advancedVSeed, vseed } = context;
|
5993
|
-
const {
|
5494
|
+
const { analysis, datasetReshapeInfo } = advancedVSeed;
|
5994
5495
|
const orderMapping = analysis?.orderMapping || {};
|
5995
|
-
const
|
5996
|
-
const
|
5496
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
5497
|
+
const x = unfoldInfo.encodingX;
|
5498
|
+
const colorId = unfoldInfo.encodingColorId;
|
5997
5499
|
const id = datasetReshapeInfo[0].id;
|
5998
5500
|
const fields = {};
|
5999
5501
|
if (x) {
|
@@ -6007,14 +5509,14 @@ const datasetPrimary = (spec, context)=>{
|
|
6007
5509
|
sortIndex: 0
|
6008
5510
|
};
|
6009
5511
|
}
|
6010
|
-
if (
|
6011
|
-
const order = orderMapping[
|
6012
|
-
if (order) fields[
|
5512
|
+
if (colorId) {
|
5513
|
+
const order = orderMapping[colorId];
|
5514
|
+
if (order) fields[colorId] = {
|
6013
5515
|
sortIndex: 0,
|
6014
5516
|
domain: order,
|
6015
5517
|
lockStatisticsByDomain: true
|
6016
5518
|
};
|
6017
|
-
else fields[
|
5519
|
+
else fields[colorId] = {
|
6018
5520
|
sortIndex: 0
|
6019
5521
|
};
|
6020
5522
|
}
|
@@ -6029,10 +5531,11 @@ const datasetPrimary = (spec, context)=>{
|
|
6029
5531
|
};
|
6030
5532
|
const datasetSecondary = (spec, context)=>{
|
6031
5533
|
const { advancedVSeed, vseed } = context;
|
6032
|
-
const {
|
5534
|
+
const { analysis, datasetReshapeInfo } = advancedVSeed;
|
6033
5535
|
const orderMapping = analysis?.orderMapping || {};
|
6034
|
-
const
|
6035
|
-
const
|
5536
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
5537
|
+
const x = unfoldInfo.encodingX;
|
5538
|
+
const colorId = unfoldInfo.encodingColorId;
|
6036
5539
|
const id = datasetReshapeInfo[0].id;
|
6037
5540
|
const fields = {};
|
6038
5541
|
if (x) {
|
@@ -6046,14 +5549,14 @@ const datasetSecondary = (spec, context)=>{
|
|
6046
5549
|
sortIndex: 0
|
6047
5550
|
};
|
6048
5551
|
}
|
6049
|
-
if (
|
6050
|
-
const order = orderMapping[
|
6051
|
-
if (order) fields[
|
5552
|
+
if (colorId) {
|
5553
|
+
const order = orderMapping[colorId];
|
5554
|
+
if (order) fields[colorId] = {
|
6052
5555
|
sortIndex: 0,
|
6053
5556
|
domain: order,
|
6054
5557
|
lockStatisticsByDomain: true
|
6055
5558
|
};
|
6056
|
-
else fields[
|
5559
|
+
else fields[colorId] = {
|
6057
5560
|
sortIndex: 0
|
6058
5561
|
};
|
6059
5562
|
}
|
@@ -6151,7 +5654,7 @@ const tooltipPrimary = (spec, context)=>{
|
|
6151
5654
|
const foldInfoList = datasetReshapeInfo[0].foldInfoList;
|
6152
5655
|
const unfoldInfo = datasetReshapeInfo[0].unfoldInfo;
|
6153
5656
|
const { measureId, measureValue, measureName } = foldInfoList[0];
|
6154
|
-
const {
|
5657
|
+
const { encodingColor: colorName } = unfoldInfo;
|
6155
5658
|
result.tooltip = {
|
6156
5659
|
visible: enable,
|
6157
5660
|
mark: {
|
@@ -6172,7 +5675,7 @@ const tooltipPrimary = (spec, context)=>{
|
|
6172
5675
|
{
|
6173
5676
|
visible: true,
|
6174
5677
|
hasShape: true,
|
6175
|
-
key: (datum)=>datum && datum[measureName ||
|
5678
|
+
key: (datum)=>datum && datum[measureName || colorName] || '',
|
6176
5679
|
value: (datum)=>{
|
6177
5680
|
if (!datum) return '';
|
6178
5681
|
const value = datum[measureValue];
|
@@ -6194,7 +5697,7 @@ const tooltipPrimary = (spec, context)=>{
|
|
6194
5697
|
content: [
|
6195
5698
|
{
|
6196
5699
|
visible: true,
|
6197
|
-
key: (datum)=>datum && datum[
|
5700
|
+
key: (datum)=>datum && datum[colorName] || '',
|
6198
5701
|
value: (datum)=>{
|
6199
5702
|
if (!datum) return '';
|
6200
5703
|
const value = datum[measureValue];
|
@@ -6231,7 +5734,7 @@ const tooltipSecondary = (spec, context)=>{
|
|
6231
5734
|
const foldInfoList = datasetReshapeInfo[0].foldInfoList;
|
6232
5735
|
const unfoldInfo = datasetReshapeInfo[0].unfoldInfo;
|
6233
5736
|
const { measureId, measureValue, measureName } = foldInfoList[1];
|
6234
|
-
const {
|
5737
|
+
const { encodingColorId } = unfoldInfo;
|
6235
5738
|
result.tooltip = {
|
6236
5739
|
visible: enable,
|
6237
5740
|
mark: {
|
@@ -6252,7 +5755,7 @@ const tooltipSecondary = (spec, context)=>{
|
|
6252
5755
|
{
|
6253
5756
|
visible: true,
|
6254
5757
|
hasShape: true,
|
6255
|
-
key: (datum)=>datum && datum[measureName ||
|
5758
|
+
key: (datum)=>datum && datum[measureName || encodingColorId] || '',
|
6256
5759
|
value: (datum)=>{
|
6257
5760
|
if (!datum) return '';
|
6258
5761
|
const value = datum[measureValue];
|
@@ -6274,7 +5777,7 @@ const tooltipSecondary = (spec, context)=>{
|
|
6274
5777
|
content: [
|
6275
5778
|
{
|
6276
5779
|
visible: true,
|
6277
|
-
key: (datum)=>datum && datum[
|
5780
|
+
key: (datum)=>datum && datum[encodingColorId] || '',
|
6278
5781
|
value: (datum)=>{
|
6279
5782
|
if (!datum) return '';
|
6280
5783
|
const value = datum[measureValue];
|
@@ -6303,16 +5806,16 @@ const yLinearPrimary = (spec, context)=>{
|
|
6303
5806
|
const { advancedVSeed, vseed } = context;
|
6304
5807
|
const { chartType } = vseed;
|
6305
5808
|
const { locale, datasetReshapeInfo } = advancedVSeed;
|
6306
|
-
const index = datasetReshapeInfo[0]
|
5809
|
+
const { index, id: reshapeInfoId, foldInfoList } = datasetReshapeInfo[0];
|
6307
5810
|
const primaryYAxis = advancedVSeed.config?.[chartType]?.primaryYAxis;
|
6308
5811
|
const yAxisConfig = Array.isArray(primaryYAxis) ? primaryYAxis[index] || primaryYAxis[0] : primaryYAxis;
|
6309
5812
|
const alignTicks = advancedVSeed.config?.[chartType]?.alignTicks;
|
6310
5813
|
const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks;
|
6311
|
-
if (
|
6312
|
-
const id = `${
|
5814
|
+
if (foldInfoList?.[0] && isEmpty(foldInfoList[0].foldMap)) return result;
|
5815
|
+
const id = `${reshapeInfoId}-primary-axis`;
|
6313
5816
|
const seriesIds = [
|
6314
|
-
`${
|
6315
|
-
`${
|
5817
|
+
`${reshapeInfoId}-primary-series`,
|
5818
|
+
`${reshapeInfoId}-secondary-series`
|
6316
5819
|
];
|
6317
5820
|
const seriesId = alignTicksConfig ? seriesIds : seriesIds[0];
|
6318
5821
|
if (!result.axes) result.axes = [];
|
@@ -6400,20 +5903,20 @@ const yLinearSecondary = (spec, context)=>{
|
|
6400
5903
|
const { advancedVSeed, vseed } = context;
|
6401
5904
|
const { chartType } = vseed;
|
6402
5905
|
const { locale, datasetReshapeInfo } = advancedVSeed;
|
6403
|
-
const index = datasetReshapeInfo[0]
|
5906
|
+
const { index, id: reshapeInfoId, foldInfoList } = datasetReshapeInfo[0];
|
6404
5907
|
const secondaryYAxis = advancedVSeed.config?.[chartType]?.secondaryYAxis;
|
6405
5908
|
const yAxisConfig = Array.isArray(secondaryYAxis) ? secondaryYAxis[index] || secondaryYAxis[0] : secondaryYAxis;
|
6406
5909
|
const alignTicks = advancedVSeed.config?.[chartType]?.alignTicks;
|
6407
5910
|
const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks;
|
6408
|
-
if (isNullish(
|
5911
|
+
if (isNullish(foldInfoList?.[1])) return result;
|
6409
5912
|
const sync = {
|
6410
|
-
axisId: `${
|
5913
|
+
axisId: `${reshapeInfoId}-primary-axis`,
|
6411
5914
|
zeroAlign: true
|
6412
5915
|
};
|
6413
|
-
const id = `${
|
5916
|
+
const id = `${reshapeInfoId}-secondary-axis`;
|
6414
5917
|
const seriesIds = [
|
6415
|
-
`${
|
6416
|
-
`${
|
5918
|
+
`${reshapeInfoId}-primary-series`,
|
5919
|
+
`${reshapeInfoId}-secondary-series`
|
6417
5920
|
];
|
6418
5921
|
const seriesId = alignTicksConfig ? seriesIds : seriesIds[1];
|
6419
5922
|
if (!result.axes) result.axes = [];
|
@@ -6554,210 +6057,74 @@ const pivotDualAxis = [
|
|
6554
6057
|
areaStyle_areaStyle
|
6555
6058
|
], [
|
6556
6059
|
initDualAxisSecondary,
|
6557
|
-
dualChartTypeSecondary,
|
6558
|
-
datasetSecondary,
|
6559
|
-
labelSecondary,
|
6560
|
-
tooltipSecondary,
|
6561
|
-
progressive,
|
6562
|
-
barStyle_barStyle,
|
6563
|
-
pointStyle_pointStyle,
|
6564
|
-
pointStateDimensionHover,
|
6565
|
-
lineStyle_lineStyle,
|
6566
|
-
areaStyle_areaStyle
|
6567
|
-
]),
|
6568
|
-
xBand,
|
6569
|
-
yLinearPrimary,
|
6570
|
-
yLinearSecondary,
|
6571
|
-
color_color,
|
6572
|
-
background_backgroundColor,
|
6573
|
-
verticalCrosshairRect,
|
6574
|
-
annotationPoint_annotationPoint,
|
6575
|
-
annotationVerticalLine_annotationVerticalLine,
|
6576
|
-
annotationHorizontalLine_annotationHorizontalLine,
|
6577
|
-
annotationArea_annotationArea
|
6578
|
-
]),
|
6579
|
-
pivotRowDimensions,
|
6580
|
-
pivotColumnDimensions,
|
6581
|
-
pivotDiscreteLegend
|
6582
|
-
];
|
6583
|
-
const dualAxisSpecPipeline = [
|
6584
|
-
pivotAdapter_pivotAdapter(dualAxis, pivotDualAxis)
|
6585
|
-
];
|
6586
|
-
const registerDualAxis = ()=>{
|
6587
|
-
Builder._advancedPipelineMap.dualAxis = dualAxisAdvancedPipeline;
|
6588
|
-
Builder._specPipelineMap.dualAxis = dualAxisSpecPipeline;
|
6589
|
-
};
|
6590
|
-
const dataReshapeFor1D1M_emptyReshapeResult = {
|
6591
|
-
dataset: [],
|
6592
|
-
foldInfo: {
|
6593
|
-
foldMap: {},
|
6594
|
-
measureId: '',
|
6595
|
-
measureName: '',
|
6596
|
-
measureValue: ''
|
6597
|
-
},
|
6598
|
-
unfoldInfo: {
|
6599
|
-
groupName: '',
|
6600
|
-
groupId: '',
|
6601
|
-
colorItems: [],
|
6602
|
-
colorIdMap: {}
|
6603
|
-
}
|
6604
|
-
};
|
6605
|
-
const dataReshapeFor1D1M = (dataset, dimensions, measures, options)=>{
|
6606
|
-
const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, unfoldDimensionGroup = UnfoldDimensionGroup, unfoldDimensionGroupId = UnfoldDimensionGroupId } = options || {};
|
6607
|
-
if (0 === dimensions.length && 0 === measures.length) return dataReshapeFor1D1M_emptyReshapeResult;
|
6608
|
-
const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, foldMeasureId, foldMeasureName, foldMeasureValue);
|
6609
|
-
if (0 === dimensions.length) {
|
6610
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
|
6611
|
-
{
|
6612
|
-
id: foldMeasureName,
|
6613
|
-
alias: i18n`指标名称`,
|
6614
|
-
location: 'dimension'
|
6615
|
-
}
|
6616
|
-
], [
|
6617
|
-
{
|
6618
|
-
id: foldMeasureValue,
|
6619
|
-
alias: i18n`指标值`
|
6620
|
-
}
|
6621
|
-
], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
6622
|
-
return {
|
6623
|
-
dataset: finalDataset,
|
6624
|
-
foldInfo,
|
6625
|
-
unfoldInfo
|
6626
|
-
};
|
6627
|
-
}
|
6628
|
-
{
|
6629
|
-
const dims = 1 === measures.length ? [
|
6630
|
-
...dimensions
|
6631
|
-
] : [
|
6632
|
-
...dimensions,
|
6633
|
-
{
|
6634
|
-
id: foldMeasureName,
|
6635
|
-
alias: i18n`指标名称`,
|
6636
|
-
location: 'dimension'
|
6637
|
-
}
|
6638
|
-
];
|
6639
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dims, [
|
6640
|
-
{
|
6641
|
-
id: foldMeasureValue,
|
6642
|
-
alias: i18n`指标值`
|
6643
|
-
}
|
6644
|
-
], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
6645
|
-
return {
|
6646
|
-
dataset: finalDataset,
|
6647
|
-
foldInfo,
|
6648
|
-
unfoldInfo
|
6649
|
-
};
|
6650
|
-
}
|
6651
|
-
};
|
6652
|
-
const reshapeTo1D1M = (advancedVSeed, context)=>{
|
6653
|
-
const result = {
|
6654
|
-
...advancedVSeed
|
6655
|
-
};
|
6656
|
-
const { vseed } = context;
|
6657
|
-
const { dataset } = vseed;
|
6658
|
-
const { dimensions, measures } = advancedVSeed;
|
6659
|
-
if (!measures || !dimensions || !dataset) return result;
|
6660
|
-
if (0 === measures.length) throw new Error('measures can not be empty');
|
6661
|
-
const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D1M(dataset, dimensions, measures);
|
6662
|
-
return {
|
6663
|
-
...result,
|
6664
|
-
dataset: newDatasets,
|
6665
|
-
datasetReshapeInfo: [
|
6666
|
-
{
|
6667
|
-
id: '1D1M',
|
6668
|
-
index: 0,
|
6669
|
-
foldInfo,
|
6670
|
-
unfoldInfo
|
6671
|
-
}
|
6672
|
-
]
|
6673
|
-
};
|
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;
|
6674
6092
|
};
|
6675
|
-
const
|
6676
|
-
const result = {
|
6677
|
-
...advancedVSeed
|
6678
|
-
};
|
6093
|
+
const encodingForPie = (advancedVSeed, context)=>{
|
6679
6094
|
const { vseed } = context;
|
6680
|
-
const {
|
6681
|
-
|
6682
|
-
const
|
6683
|
-
if (
|
6684
|
-
|
6685
|
-
|
6686
|
-
|
6687
|
-
|
6688
|
-
const newDatasets = [];
|
6689
|
-
const datasetReshapeInfo = [];
|
6690
|
-
measureGroups.forEach((measureGroup, index)=>{
|
6691
|
-
const measures = measureGroup.children;
|
6692
|
-
if (!measures) return;
|
6693
|
-
const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
|
6694
|
-
const groupId = measureGroup.id;
|
6695
|
-
const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeFor1D1M(dataset, commonDimensions, measures, {
|
6696
|
-
foldMeasureId: FoldMeasureId,
|
6697
|
-
foldMeasureName: FoldMeasureName,
|
6698
|
-
foldMeasureValue: FoldMeasureValue + groupId,
|
6699
|
-
unfoldDimensionGroup: UnfoldDimensionGroup
|
6700
|
-
});
|
6701
|
-
const reshapeInfo = {
|
6702
|
-
id: groupId,
|
6703
|
-
index,
|
6704
|
-
foldInfo,
|
6705
|
-
unfoldInfo
|
6706
|
-
};
|
6707
|
-
newDatasets.push(newSubDataset);
|
6708
|
-
datasetReshapeInfo.push(reshapeInfo);
|
6709
|
-
});
|
6710
|
-
return {
|
6711
|
-
...result,
|
6712
|
-
dataset: newDatasets,
|
6713
|
-
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
|
+
}
|
6714
6103
|
};
|
6715
|
-
|
6716
|
-
|
6717
|
-
|
6718
|
-
|
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: []
|
6719
6112
|
};
|
6720
|
-
const { datasetReshapeInfo } = advancedVSeed;
|
6721
|
-
if (!datasetReshapeInfo) return result;
|
6722
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
|
6723
|
-
const { foldInfo, unfoldInfo } = cur;
|
6724
|
-
const radius = [
|
6725
|
-
foldInfo.measureValue
|
6726
|
-
];
|
6727
|
-
const angle = [
|
6728
|
-
unfoldInfo.groupId
|
6729
|
-
];
|
6730
|
-
const group = [
|
6731
|
-
unfoldInfo.groupId
|
6732
|
-
];
|
6733
|
-
const color = [
|
6734
|
-
unfoldInfo.groupId
|
6735
|
-
];
|
6736
|
-
return [
|
6737
|
-
...prev,
|
6738
|
-
{
|
6739
|
-
angle,
|
6740
|
-
radius,
|
6741
|
-
group,
|
6742
|
-
color
|
6743
|
-
}
|
6744
|
-
];
|
6745
|
-
}, []);
|
6746
6113
|
return {
|
6747
|
-
...
|
6748
|
-
encoding
|
6114
|
+
...advancedVSeed,
|
6115
|
+
encoding: mergedEncoding
|
6749
6116
|
};
|
6750
6117
|
};
|
6751
6118
|
const pieAdvancedPipeline = [
|
6752
6119
|
initAdvancedVSeed_initAdvancedVSeed,
|
6753
6120
|
autoMeasures_autoMeasures,
|
6754
6121
|
autoDimensions_autoDimensions,
|
6122
|
+
encodingForPie,
|
6755
6123
|
pivotAdapter([
|
6756
|
-
|
6124
|
+
reshapeWithEncoding
|
6757
6125
|
], [
|
6758
|
-
|
6126
|
+
pivotReshapeWithEncoding
|
6759
6127
|
]),
|
6760
|
-
encodingPie,
|
6761
6128
|
pieConfig,
|
6762
6129
|
theme_theme,
|
6763
6130
|
annotation_annotation
|
@@ -6767,15 +6134,15 @@ const initPie = (spec, context)=>{
|
|
6767
6134
|
...spec
|
6768
6135
|
};
|
6769
6136
|
const { advancedVSeed } = context;
|
6770
|
-
const {
|
6771
|
-
|
6137
|
+
const { datasetReshapeInfo, dataset } = advancedVSeed;
|
6138
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
6772
6139
|
const showStroke = dataset.length <= 30;
|
6773
6140
|
result.type = 'pie';
|
6774
6141
|
result.outerRadius = 0.8;
|
6775
6142
|
result.innerRadius = 0;
|
6776
|
-
result.valueField =
|
6777
|
-
result.categoryField =
|
6778
|
-
result.seriesField =
|
6143
|
+
result.valueField = foldInfo.measureValue;
|
6144
|
+
result.categoryField = unfoldInfo.encodingAngle;
|
6145
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
6779
6146
|
result.padding = 0;
|
6780
6147
|
result.region = [
|
6781
6148
|
{
|
@@ -6844,12 +6211,12 @@ const donutAdvancedPipeline = [
|
|
6844
6211
|
initAdvancedVSeed_initAdvancedVSeed,
|
6845
6212
|
autoMeasures_autoMeasures,
|
6846
6213
|
autoDimensions_autoDimensions,
|
6214
|
+
encodingForPie,
|
6847
6215
|
pivotAdapter([
|
6848
|
-
|
6216
|
+
reshapeWithEncoding
|
6849
6217
|
], [
|
6850
|
-
|
6218
|
+
pivotReshapeWithEncoding
|
6851
6219
|
]),
|
6852
|
-
encodingPie,
|
6853
6220
|
donutConfig,
|
6854
6221
|
theme_theme,
|
6855
6222
|
annotation_annotation
|
@@ -6859,15 +6226,15 @@ const initDonut = (spec, context)=>{
|
|
6859
6226
|
...spec
|
6860
6227
|
};
|
6861
6228
|
const { advancedVSeed } = context;
|
6862
|
-
const {
|
6863
|
-
|
6229
|
+
const { datasetReshapeInfo, dataset } = advancedVSeed;
|
6230
|
+
const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
|
6864
6231
|
const showStroke = dataset.length <= 30;
|
6865
6232
|
result.type = 'pie';
|
6866
6233
|
result.outerRadius = 0.8;
|
6867
6234
|
result.innerRadius = 0.8 * result.outerRadius;
|
6868
|
-
result.valueField =
|
6869
|
-
result.categoryField =
|
6870
|
-
result.seriesField =
|
6235
|
+
result.valueField = foldInfo.measureValue;
|
6236
|
+
result.categoryField = unfoldInfo.encodingDetail;
|
6237
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
6871
6238
|
result.padding = 0;
|
6872
6239
|
result.region = [
|
6873
6240
|
{
|
@@ -6931,54 +6298,52 @@ const registerDonut = ()=>{
|
|
6931
6298
|
Builder._advancedPipelineMap.donut = donutAdvancedPipeline;
|
6932
6299
|
Builder._specPipelineMap.donut = donutSpecPipeline;
|
6933
6300
|
};
|
6934
|
-
const
|
6935
|
-
const
|
6936
|
-
|
6937
|
-
|
6938
|
-
const
|
6939
|
-
if (
|
6940
|
-
|
6941
|
-
|
6942
|
-
|
6943
|
-
|
6944
|
-
|
6945
|
-
|
6946
|
-
foldInfo.measureValue
|
6947
|
-
];
|
6948
|
-
const angle = [
|
6949
|
-
isZeroDimension ? foldInfo.measureName : angleDimension?.id
|
6950
|
-
];
|
6951
|
-
const group = [
|
6952
|
-
is1D1M ? angleDimension?.id : unfoldInfo.groupId
|
6953
|
-
];
|
6954
|
-
const color = [
|
6955
|
-
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
|
6956
6313
|
];
|
6957
|
-
return
|
6958
|
-
...
|
6959
|
-
{
|
6960
|
-
|
6961
|
-
|
6962
|
-
group,
|
6963
|
-
color
|
6314
|
+
return {
|
6315
|
+
...advancedVSeed,
|
6316
|
+
encoding: {
|
6317
|
+
...encoding,
|
6318
|
+
detail: mergedDetail
|
6964
6319
|
}
|
6965
|
-
|
6966
|
-
}
|
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
|
+
};
|
6967
6332
|
return {
|
6968
|
-
...
|
6969
|
-
encoding
|
6333
|
+
...advancedVSeed,
|
6334
|
+
encoding: mergedEncoding
|
6970
6335
|
};
|
6971
6336
|
};
|
6972
6337
|
const roseAdvancedPipeline = [
|
6973
6338
|
initAdvancedVSeed_initAdvancedVSeed,
|
6974
6339
|
autoMeasures_autoMeasures,
|
6975
6340
|
autoDimensions_autoDimensions,
|
6341
|
+
encodingForRose,
|
6976
6342
|
pivotAdapter([
|
6977
|
-
|
6343
|
+
reshapeWithEncoding
|
6978
6344
|
], [
|
6979
|
-
|
6345
|
+
pivotReshapeWithEncoding
|
6980
6346
|
]),
|
6981
|
-
encodingRose,
|
6982
6347
|
roseConfig,
|
6983
6348
|
theme_theme,
|
6984
6349
|
markStyle_markStyle,
|
@@ -6989,13 +6354,12 @@ const initRose = (spec, context)=>{
|
|
6989
6354
|
...spec
|
6990
6355
|
};
|
6991
6356
|
const { advancedVSeed } = context;
|
6992
|
-
const {
|
6993
|
-
const { foldInfo } = datasetReshapeInfo[0];
|
6994
|
-
if (!encoding[0].radius || !encoding[0].angle || !encoding[0].group) return result;
|
6357
|
+
const { dataset, datasetReshapeInfo } = advancedVSeed;
|
6358
|
+
const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
|
6995
6359
|
result.type = 'rose';
|
6996
|
-
result.categoryField =
|
6997
|
-
result.
|
6998
|
-
result.
|
6360
|
+
result.categoryField = unfoldInfo.encodingAngle;
|
6361
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
6362
|
+
result.valueField = foldInfo.measureValue;
|
6999
6363
|
result.padding = 0;
|
7000
6364
|
result.outerRadius = 0.9;
|
7001
6365
|
result.innerRadius = 0;
|
@@ -7143,12 +6507,12 @@ const roseParallelAdvancedPipeline = [
|
|
7143
6507
|
initAdvancedVSeed_initAdvancedVSeed,
|
7144
6508
|
autoMeasures_autoMeasures,
|
7145
6509
|
autoDimensions_autoDimensions,
|
6510
|
+
encodingForRose,
|
7146
6511
|
pivotAdapter([
|
7147
|
-
|
6512
|
+
reshapeWithEncoding
|
7148
6513
|
], [
|
7149
|
-
|
6514
|
+
pivotReshapeWithEncoding
|
7150
6515
|
]),
|
7151
|
-
encodingRose,
|
7152
6516
|
roseParallelConfig,
|
7153
6517
|
theme_theme,
|
7154
6518
|
markStyle_markStyle,
|
@@ -7159,16 +6523,18 @@ const initRoseParallel = (spec, context)=>{
|
|
7159
6523
|
...spec
|
7160
6524
|
};
|
7161
6525
|
const { advancedVSeed } = context;
|
7162
|
-
const {
|
6526
|
+
const { datasetReshapeInfo, dataset, dimensions } = advancedVSeed;
|
7163
6527
|
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
7164
|
-
|
6528
|
+
const sameDimensionsMode = dimensions.length > 1 && dimensions.every((dim)=>dim.id === dimensions[0].id);
|
7165
6529
|
result.type = 'rose';
|
7166
|
-
result.categoryField = [
|
7167
|
-
|
7168
|
-
|
6530
|
+
result.categoryField = sameDimensionsMode ? [
|
6531
|
+
unfoldInfo.encodingAngle
|
6532
|
+
] : [
|
6533
|
+
unfoldInfo.encodingAngle,
|
6534
|
+
unfoldInfo.encodingDetail
|
7169
6535
|
];
|
7170
|
-
result.valueField =
|
7171
|
-
result.seriesField =
|
6536
|
+
result.valueField = foldInfo.measureValue;
|
6537
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
7172
6538
|
result.padding = 0;
|
7173
6539
|
result.outerRadius = 0.9;
|
7174
6540
|
result.innerRadius = 0;
|
@@ -7245,54 +6611,52 @@ const registerRoseParallel = ()=>{
|
|
7245
6611
|
Builder._advancedPipelineMap.roseParallel = roseParallelAdvancedPipeline;
|
7246
6612
|
Builder._specPipelineMap.roseParallel = roseParallelSpecPipeline;
|
7247
6613
|
};
|
7248
|
-
const
|
7249
|
-
const
|
7250
|
-
|
7251
|
-
|
7252
|
-
const
|
7253
|
-
if (
|
7254
|
-
|
7255
|
-
|
7256
|
-
|
7257
|
-
const
|
7258
|
-
|
7259
|
-
|
7260
|
-
];
|
7261
|
-
const radius = [
|
7262
|
-
foldInfo.measureValue
|
7263
|
-
];
|
7264
|
-
const group = [
|
7265
|
-
unfoldInfo.groupId
|
7266
|
-
];
|
7267
|
-
const color = [
|
7268
|
-
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
|
7269
6626
|
];
|
7270
|
-
return
|
7271
|
-
...
|
7272
|
-
{
|
7273
|
-
|
7274
|
-
|
7275
|
-
group,
|
7276
|
-
color
|
6627
|
+
return {
|
6628
|
+
...advancedVSeed,
|
6629
|
+
encoding: {
|
6630
|
+
...encoding,
|
6631
|
+
detail: mergedDetail
|
7277
6632
|
}
|
7278
|
-
|
7279
|
-
}
|
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
|
+
};
|
7280
6644
|
return {
|
7281
|
-
...
|
7282
|
-
encoding
|
6645
|
+
...advancedVSeed,
|
6646
|
+
encoding: mergedEncoding
|
7283
6647
|
};
|
7284
6648
|
};
|
7285
6649
|
const radarAdvancedPipeline = [
|
7286
6650
|
initAdvancedVSeed_initAdvancedVSeed,
|
7287
6651
|
autoMeasures_autoMeasures,
|
7288
6652
|
autoDimensions_autoDimensions,
|
6653
|
+
encodingForRadar,
|
7289
6654
|
pivotAdapter([
|
7290
|
-
|
6655
|
+
reshapeWithEncoding
|
7291
6656
|
], [
|
7292
|
-
|
6657
|
+
pivotReshapeWithEncoding
|
7293
6658
|
]),
|
7294
|
-
|
7295
|
-
sort_sortLegend,
|
6659
|
+
sortLegend_sortLegend,
|
7296
6660
|
radarConfig,
|
7297
6661
|
theme_theme,
|
7298
6662
|
markStyle_markStyle,
|
@@ -7303,12 +6667,12 @@ const initRadar = (spec, context)=>{
|
|
7303
6667
|
...spec
|
7304
6668
|
};
|
7305
6669
|
const { advancedVSeed } = context;
|
7306
|
-
const {
|
7307
|
-
|
6670
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
6671
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
7308
6672
|
result.type = 'radar';
|
7309
|
-
result.angleField =
|
7310
|
-
result.radiusField =
|
7311
|
-
result.seriesField =
|
6673
|
+
result.angleField = unfoldInfo.encodingAngle;
|
6674
|
+
result.radiusField = foldInfo.measureValue;
|
6675
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
7312
6676
|
result.padding = 0;
|
7313
6677
|
result.region = [
|
7314
6678
|
{
|
@@ -7420,47 +6784,40 @@ const registerRadar = ()=>{
|
|
7420
6784
|
Builder._advancedPipelineMap.radar = radarAdvancedPipeline;
|
7421
6785
|
Builder._specPipelineMap.radar = radarSpecPipeline;
|
7422
6786
|
};
|
7423
|
-
const
|
7424
|
-
const
|
7425
|
-
|
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: []
|
7426
6805
|
};
|
7427
|
-
const { datasetReshapeInfo } = advancedVSeed;
|
7428
|
-
if (!datasetReshapeInfo) return result;
|
7429
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
|
7430
|
-
const { foldInfo, unfoldInfo } = cur;
|
7431
|
-
const size = [
|
7432
|
-
foldInfo.measureValue
|
7433
|
-
];
|
7434
|
-
const group = [
|
7435
|
-
unfoldInfo.groupId
|
7436
|
-
];
|
7437
|
-
const color = [
|
7438
|
-
foldInfo.measureValue
|
7439
|
-
];
|
7440
|
-
return [
|
7441
|
-
...prev,
|
7442
|
-
{
|
7443
|
-
size,
|
7444
|
-
group,
|
7445
|
-
color
|
7446
|
-
}
|
7447
|
-
];
|
7448
|
-
}, []);
|
7449
6806
|
return {
|
7450
|
-
...
|
7451
|
-
encoding
|
6807
|
+
...advancedVSeed,
|
6808
|
+
encoding: mergedEncoding
|
7452
6809
|
};
|
7453
6810
|
};
|
7454
6811
|
const funnelAdvancedPipeline = [
|
7455
6812
|
initAdvancedVSeed_initAdvancedVSeed,
|
7456
6813
|
autoMeasures_autoMeasures,
|
7457
6814
|
autoDimensions_autoDimensions,
|
6815
|
+
encodingForFunnel,
|
7458
6816
|
pivotAdapter([
|
7459
|
-
|
6817
|
+
reshapeWithEncoding
|
7460
6818
|
], [
|
7461
|
-
|
6819
|
+
pivotReshapeWithEncoding
|
7462
6820
|
]),
|
7463
|
-
encodingFunnel,
|
7464
6821
|
funnelConfig,
|
7465
6822
|
theme_theme,
|
7466
6823
|
annotation_annotation
|
@@ -7470,11 +6827,12 @@ const initFunnel = (spec, context)=>{
|
|
7470
6827
|
...spec
|
7471
6828
|
};
|
7472
6829
|
const { advancedVSeed } = context;
|
7473
|
-
const {
|
7474
|
-
|
6830
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
6831
|
+
const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
|
7475
6832
|
result.type = 'funnel';
|
7476
|
-
result.valueField =
|
7477
|
-
result.categoryField =
|
6833
|
+
result.valueField = foldInfo.measureValue;
|
6834
|
+
result.categoryField = unfoldInfo.encodingDetail;
|
6835
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
7478
6836
|
result.padding = 0;
|
7479
6837
|
result.isTransform = true;
|
7480
6838
|
result.shape = 'rect';
|
@@ -7489,7 +6847,7 @@ const initFunnel = (spec, context)=>{
|
|
7489
6847
|
style: {
|
7490
6848
|
cornerRadius: 4,
|
7491
6849
|
fill: {
|
7492
|
-
field:
|
6850
|
+
field: unfoldInfo.encodingColorId,
|
7493
6851
|
scale: 'color'
|
7494
6852
|
}
|
7495
6853
|
},
|
@@ -7505,99 +6863,13 @@ const initFunnel = (spec, context)=>{
|
|
7505
6863
|
result.animation = true;
|
7506
6864
|
return result;
|
7507
6865
|
};
|
7508
|
-
const linearColor = (spec, context)=>{
|
7509
|
-
const result = {
|
7510
|
-
...spec
|
7511
|
-
};
|
7512
|
-
const { advancedVSeed } = context;
|
7513
|
-
const { datasetReshapeInfo, chartType, encoding } = advancedVSeed;
|
7514
|
-
const baseConfig = advancedVSeed.config[chartType];
|
7515
|
-
if (!baseConfig || !baseConfig.color) return result;
|
7516
|
-
const { color } = baseConfig;
|
7517
|
-
const { colorScheme } = color;
|
7518
|
-
result.color = {
|
7519
|
-
type: 'linear',
|
7520
|
-
domain: [
|
7521
|
-
{
|
7522
|
-
dataId: datasetReshapeInfo[0].id,
|
7523
|
-
fields: encoding?.[0]?.color
|
7524
|
-
}
|
7525
|
-
],
|
7526
|
-
range: colorScheme
|
7527
|
-
};
|
7528
|
-
return result;
|
7529
|
-
};
|
7530
|
-
const colorLegend = (spec, context)=>{
|
7531
|
-
const result = {
|
7532
|
-
...spec
|
7533
|
-
};
|
7534
|
-
const { advancedVSeed } = context;
|
7535
|
-
const { chartType } = advancedVSeed;
|
7536
|
-
const baseConfig = advancedVSeed.config[chartType];
|
7537
|
-
const { encoding } = advancedVSeed;
|
7538
|
-
if (!encoding[0].color) return result;
|
7539
|
-
if (!baseConfig || !baseConfig.legend) return result;
|
7540
|
-
const { legend } = baseConfig;
|
7541
|
-
const { enable, position = 'bottom' } = legend || {};
|
7542
|
-
const orient = [
|
7543
|
-
'bottom',
|
7544
|
-
'bottomLeft',
|
7545
|
-
'bottomRight',
|
7546
|
-
'bl',
|
7547
|
-
'br'
|
7548
|
-
].includes(position) ? 'bottom' : [
|
7549
|
-
'top',
|
7550
|
-
'topLeft',
|
7551
|
-
'topRight',
|
7552
|
-
'tl',
|
7553
|
-
'tr'
|
7554
|
-
].includes(position) ? 'top' : [
|
7555
|
-
'left',
|
7556
|
-
'leftTop',
|
7557
|
-
'leftBottom',
|
7558
|
-
'lt',
|
7559
|
-
'lb'
|
7560
|
-
].includes(position) ? 'left' : 'right';
|
7561
|
-
const legendPosition = [
|
7562
|
-
'topLeft',
|
7563
|
-
'bottomLeft',
|
7564
|
-
'leftTop',
|
7565
|
-
'rightTop',
|
7566
|
-
'lt',
|
7567
|
-
'rt',
|
7568
|
-
'tl',
|
7569
|
-
'bl'
|
7570
|
-
].includes(position) ? 'start' : [
|
7571
|
-
'topRight',
|
7572
|
-
'bottomRight',
|
7573
|
-
'leftBottom',
|
7574
|
-
'rightBottom',
|
7575
|
-
'lb',
|
7576
|
-
'rb',
|
7577
|
-
'rt',
|
7578
|
-
'br'
|
7579
|
-
].includes(position) ? 'end' : 'middle';
|
7580
|
-
result.legends = {
|
7581
|
-
type: 'color',
|
7582
|
-
visible: enable,
|
7583
|
-
orient,
|
7584
|
-
position: legendPosition,
|
7585
|
-
field: encoding[0].color[0],
|
7586
|
-
inverse: !![
|
7587
|
-
'left',
|
7588
|
-
'right'
|
7589
|
-
].includes(orient)
|
7590
|
-
};
|
7591
|
-
return result;
|
7592
|
-
};
|
7593
6866
|
const funnel = [
|
7594
6867
|
initFunnel,
|
7595
|
-
linearColor,
|
7596
6868
|
background_backgroundColor,
|
7597
6869
|
datasetXY,
|
7598
6870
|
label_label,
|
7599
6871
|
tooltip_tooltip,
|
7600
|
-
|
6872
|
+
discreteLegend,
|
7601
6873
|
annotationPoint_annotationPoint,
|
7602
6874
|
annotationVerticalLine_annotationVerticalLine,
|
7603
6875
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -7610,12 +6882,11 @@ const pivotFunnel = [
|
|
7610
6882
|
datasetPivot,
|
7611
6883
|
pivotIndicators_pivotIndicators([
|
7612
6884
|
initFunnel,
|
7613
|
-
linearColor,
|
7614
6885
|
background_backgroundColor,
|
7615
6886
|
datasetXY,
|
7616
6887
|
label_label,
|
7617
6888
|
tooltip_tooltip,
|
7618
|
-
|
6889
|
+
discreteLegend,
|
7619
6890
|
annotationPoint_annotationPoint,
|
7620
6891
|
annotationVerticalLine_annotationVerticalLine,
|
7621
6892
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -7631,49 +6902,42 @@ const registerFunnel = ()=>{
|
|
7631
6902
|
Builder._advancedPipelineMap.funnel = funnelAdvancedPipeline;
|
7632
6903
|
Builder._specPipelineMap.funnel = funnelSpecPipeline;
|
7633
6904
|
};
|
7634
|
-
const
|
7635
|
-
const
|
7636
|
-
|
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: []
|
7637
6925
|
};
|
7638
|
-
const { datasetReshapeInfo, dimensions } = advancedVSeed;
|
7639
|
-
if (!datasetReshapeInfo || !dimensions) return result;
|
7640
|
-
const xDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
|
7641
|
-
const isZeroDimension = 0 === dimensions.length;
|
7642
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
|
7643
|
-
const { foldInfo, unfoldInfo } = cur;
|
7644
|
-
const x = [
|
7645
|
-
isZeroDimension ? foldInfo.measureName : xDimension?.id
|
7646
|
-
];
|
7647
|
-
const y = [
|
7648
|
-
unfoldInfo.groupName
|
7649
|
-
];
|
7650
|
-
const color = [
|
7651
|
-
foldInfo.measureValue
|
7652
|
-
];
|
7653
|
-
return [
|
7654
|
-
...prev,
|
7655
|
-
{
|
7656
|
-
x,
|
7657
|
-
y,
|
7658
|
-
color
|
7659
|
-
}
|
7660
|
-
];
|
7661
|
-
}, []);
|
7662
6926
|
return {
|
7663
|
-
...
|
7664
|
-
encoding
|
6927
|
+
...advancedVSeed,
|
6928
|
+
encoding: mergedEncoding
|
7665
6929
|
};
|
7666
6930
|
};
|
7667
6931
|
const heatmapAdvancedPipeline = [
|
7668
6932
|
initAdvancedVSeed_initAdvancedVSeed,
|
7669
6933
|
autoMeasures_autoMeasures,
|
7670
6934
|
autoDimensions_autoDimensions,
|
6935
|
+
encodingForHeatmap,
|
7671
6936
|
pivotAdapter([
|
7672
|
-
|
6937
|
+
reshapeWithEncoding
|
7673
6938
|
], [
|
7674
|
-
|
6939
|
+
pivotReshapeWithEncoding
|
7675
6940
|
]),
|
7676
|
-
encodingMatrix,
|
7677
6941
|
sortXBandAxis,
|
7678
6942
|
heatmapConfig,
|
7679
6943
|
theme_theme,
|
@@ -7695,23 +6959,20 @@ const initHeatmap = (spec, context)=>{
|
|
7695
6959
|
...spec
|
7696
6960
|
};
|
7697
6961
|
const { advancedVSeed } = context;
|
7698
|
-
const {
|
7699
|
-
|
6962
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
6963
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
7700
6964
|
result.type = 'heatmap';
|
7701
6965
|
result.direction = 'vertical';
|
7702
|
-
result.xField =
|
7703
|
-
result.yField =
|
7704
|
-
result.
|
6966
|
+
result.xField = unfoldInfo.encodingX;
|
6967
|
+
result.yField = unfoldInfo.encodingY;
|
6968
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
6969
|
+
result.valueField = foldInfo.measureValue;
|
7705
6970
|
result.padding = 0;
|
7706
6971
|
result.cell = {
|
7707
6972
|
style: {
|
7708
6973
|
shape: 'rect',
|
7709
6974
|
stroke: '#ffffff',
|
7710
|
-
lineWidth: 1
|
7711
|
-
fill: {
|
7712
|
-
field: encoding[0].color[0],
|
7713
|
-
scale: 'color'
|
7714
|
-
}
|
6975
|
+
lineWidth: 1
|
7715
6976
|
}
|
7716
6977
|
};
|
7717
6978
|
result.axes = [
|
@@ -7736,12 +6997,11 @@ const initHeatmap = (spec, context)=>{
|
|
7736
6997
|
};
|
7737
6998
|
const heatmap = [
|
7738
6999
|
initHeatmap,
|
7739
|
-
linearColor,
|
7740
7000
|
background_backgroundColor,
|
7741
7001
|
datasetXY,
|
7742
7002
|
label_label,
|
7743
7003
|
labelColorInversion,
|
7744
|
-
|
7004
|
+
discreteLegend,
|
7745
7005
|
tooltip_tooltip,
|
7746
7006
|
pointStyle_pointStyle,
|
7747
7007
|
pointStateDimensionHover,
|
@@ -7758,12 +7018,11 @@ const pivotHeatmap = [
|
|
7758
7018
|
datasetPivot,
|
7759
7019
|
pivotIndicators_pivotIndicators([
|
7760
7020
|
initHeatmap,
|
7761
|
-
linearColor,
|
7762
7021
|
background_backgroundColor,
|
7763
7022
|
datasetXY,
|
7764
7023
|
label_label,
|
7765
7024
|
labelColorInversion,
|
7766
|
-
|
7025
|
+
discreteLegend,
|
7767
7026
|
tooltip_tooltip,
|
7768
7027
|
pointStyle_pointStyle,
|
7769
7028
|
pointStateDimensionHover,
|
@@ -8031,12 +7290,6 @@ const lightTheme = ()=>{
|
|
8031
7290
|
yAxis: linearAxis,
|
8032
7291
|
crosshairLine
|
8033
7292
|
},
|
8034
|
-
areaRange: {
|
8035
|
-
...baseConfig,
|
8036
|
-
xAxis: bandAxis,
|
8037
|
-
yAxis: linearAxis,
|
8038
|
-
crosshairLine
|
8039
|
-
},
|
8040
7293
|
scatter: {
|
8041
7294
|
...baseConfig,
|
8042
7295
|
xAxis: {
|
@@ -8369,12 +7622,6 @@ const darkTheme = ()=>{
|
|
8369
7622
|
yAxis: linearAxis,
|
8370
7623
|
crosshairLine: crosshairLine
|
8371
7624
|
},
|
8372
|
-
areaRange: {
|
8373
|
-
...baseConfig,
|
8374
|
-
xAxis: bandAxis,
|
8375
|
-
yAxis: linearAxis,
|
8376
|
-
crosshairLine: crosshairLine
|
8377
|
-
},
|
8378
7625
|
scatter: {
|
8379
7626
|
...baseConfig,
|
8380
7627
|
xAxis: {
|
@@ -8472,7 +7719,6 @@ const registerAll = ()=>{
|
|
8472
7719
|
registerBarPercent();
|
8473
7720
|
registerArea();
|
8474
7721
|
registerAreaPercent();
|
8475
|
-
registerAreaRange();
|
8476
7722
|
registerScatter();
|
8477
7723
|
registerDualAxis();
|
8478
7724
|
registerPie();
|
@@ -8506,7 +7752,6 @@ const zChartType = z["enum"]([
|
|
8506
7752
|
'barParallel',
|
8507
7753
|
'area',
|
8508
7754
|
'areaPercent',
|
8509
|
-
'areaRange',
|
8510
7755
|
'scatter',
|
8511
7756
|
'dualAxis',
|
8512
7757
|
'rose',
|
@@ -8604,6 +7849,12 @@ const zDualMeasure = z.object({
|
|
8604
7849
|
secondaryMeasures: z.array(zMeasure).or(zMeasure).optional()
|
8605
7850
|
});
|
8606
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);
|
8607
7858
|
const zFoldInfo = z.object({
|
8608
7859
|
foldMap: z.record(z.string(), z.string().or(z.undefined())),
|
8609
7860
|
measureId: z.string(),
|
@@ -8611,10 +7862,14 @@ const zFoldInfo = z.object({
|
|
8611
7862
|
measureValue: z.string()
|
8612
7863
|
});
|
8613
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(),
|
8614
7871
|
colorItems: z.array(z.string()),
|
8615
|
-
|
8616
|
-
colorIdMap: z.record(z.string(), z.string()),
|
8617
|
-
groupName: z.string()
|
7872
|
+
colorIdMap: z.record(z.string(), z.string())
|
8618
7873
|
});
|
8619
7874
|
const zDatasetReshapeInfo = z.array(z.object({
|
8620
7875
|
id: z.string(),
|
@@ -8623,16 +7878,21 @@ const zDatasetReshapeInfo = z.array(z.object({
|
|
8623
7878
|
foldInfoList: z.array(zFoldInfo).nullish(),
|
8624
7879
|
unfoldInfo: zUnfoldInfo
|
8625
7880
|
}));
|
8626
|
-
const zEncoding = z.
|
7881
|
+
const zEncoding = z.object({
|
8627
7882
|
x: z.array(z.string()).nullish(),
|
8628
7883
|
y: z.array(z.string()).nullish(),
|
8629
|
-
color: z.array(z.string()).nullish(),
|
8630
|
-
group: z.array(z.string()).nullish(),
|
8631
7884
|
angle: z.array(z.string()).nullish(),
|
8632
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(),
|
8633
7889
|
tooltip: z.array(z.string()).nullish(),
|
8634
|
-
|
8635
|
-
|
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);
|
8636
7896
|
const zXBandAxis = z.object({
|
8637
7897
|
visible: z.boolean().default(true).nullish(),
|
8638
7898
|
labelAutoHide: z.boolean().default(true).nullish(),
|
@@ -8895,7 +8155,6 @@ const zAreaConfig = z.object({
|
|
8895
8155
|
crosshairLine: zCrosshairLine.nullish()
|
8896
8156
|
});
|
8897
8157
|
const zAreaPercentConfig = zAreaConfig;
|
8898
|
-
const zAreaRangeConfig = zAreaConfig;
|
8899
8158
|
const zDualAxisConfig = z.object({
|
8900
8159
|
backgroundColor: zBackgroundColor.nullish(),
|
8901
8160
|
label: zLabel.nullish(),
|
@@ -8950,7 +8209,6 @@ const zConfig = z.object({
|
|
8950
8209
|
barPercent: zBarPercentConfig.nullish(),
|
8951
8210
|
area: zAreaConfig.nullish(),
|
8952
8211
|
areaPercent: zAreaPercentConfig.nullish(),
|
8953
|
-
areaRange: zAreaRangeConfig.nullish(),
|
8954
8212
|
scatter: zScatterConfig.nullish(),
|
8955
8213
|
dualAxis: zDualAxisConfig.nullish(),
|
8956
8214
|
rose: zRoseConfig.nullish(),
|
@@ -9389,6 +8647,7 @@ const zPivotTable = z.object({
|
|
9389
8647
|
const zLine = z.object({
|
9390
8648
|
chartType: z.literal('line'),
|
9391
8649
|
dataset: zDataset.nullish(),
|
8650
|
+
encoding: zEncoding.nullish(),
|
9392
8651
|
dimensions: zDimensions.nullish(),
|
9393
8652
|
measures: zMeasureTree.nullish(),
|
9394
8653
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9413,6 +8672,7 @@ const zLine = z.object({
|
|
9413
8672
|
const zColumn = z.object({
|
9414
8673
|
chartType: z.literal('column'),
|
9415
8674
|
dataset: zDataset.nullish(),
|
8675
|
+
encoding: zEncoding.nullish(),
|
9416
8676
|
dimensions: zDimensions.nullish(),
|
9417
8677
|
measures: zMeasureTree.nullish(),
|
9418
8678
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9435,6 +8695,7 @@ const zColumn = z.object({
|
|
9435
8695
|
const zColumnParallel = z.object({
|
9436
8696
|
chartType: z.literal('columnParallel'),
|
9437
8697
|
dataset: zDataset.nullish(),
|
8698
|
+
encoding: zEncoding.nullish(),
|
9438
8699
|
dimensions: zDimensions.nullish(),
|
9439
8700
|
measures: zMeasureTree.nullish(),
|
9440
8701
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9457,6 +8718,7 @@ const zColumnParallel = z.object({
|
|
9457
8718
|
const zColumnPercent = z.object({
|
9458
8719
|
chartType: z.literal('columnPercent'),
|
9459
8720
|
dataset: zDataset.nullish(),
|
8721
|
+
encoding: zEncoding.nullish(),
|
9460
8722
|
dimensions: zDimensions.nullish(),
|
9461
8723
|
measures: zMeasureTree.nullish(),
|
9462
8724
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9479,6 +8741,7 @@ const zColumnPercent = z.object({
|
|
9479
8741
|
const zBar = z.object({
|
9480
8742
|
chartType: z.literal('bar'),
|
9481
8743
|
dataset: zDataset.nullish(),
|
8744
|
+
encoding: zEncoding.nullish(),
|
9482
8745
|
dimensions: zDimensions.nullish(),
|
9483
8746
|
measures: zMeasureTree.nullish(),
|
9484
8747
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9501,6 +8764,7 @@ const zBar = z.object({
|
|
9501
8764
|
const zBarParallel = z.object({
|
9502
8765
|
chartType: z.literal('barParallel'),
|
9503
8766
|
dataset: zDataset.nullish(),
|
8767
|
+
encoding: zEncoding.nullish(),
|
9504
8768
|
dimensions: zDimensions.nullish(),
|
9505
8769
|
measures: zMeasureTree.nullish(),
|
9506
8770
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9523,6 +8787,7 @@ const zBarParallel = z.object({
|
|
9523
8787
|
const zBarPercent = z.object({
|
9524
8788
|
chartType: z.literal('barPercent'),
|
9525
8789
|
dataset: zDataset.nullish(),
|
8790
|
+
encoding: zEncoding.nullish(),
|
9526
8791
|
dimensions: zDimensions.nullish(),
|
9527
8792
|
measures: zMeasureTree.nullish(),
|
9528
8793
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9545,6 +8810,7 @@ const zBarPercent = z.object({
|
|
9545
8810
|
const zArea = z.object({
|
9546
8811
|
chartType: z.literal('area'),
|
9547
8812
|
dataset: zDataset.nullish(),
|
8813
|
+
encoding: zEncoding.nullish(),
|
9548
8814
|
dimensions: zDimensions.nullish(),
|
9549
8815
|
measures: zMeasureTree.nullish(),
|
9550
8816
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9568,6 +8834,7 @@ const zArea = z.object({
|
|
9568
8834
|
const zAreaPercent = z.object({
|
9569
8835
|
chartType: z.literal('areaPercent'),
|
9570
8836
|
dataset: zDataset.nullish(),
|
8837
|
+
encoding: zEncoding.nullish(),
|
9571
8838
|
dimensions: zDimensions.nullish(),
|
9572
8839
|
measures: zMeasureTree.nullish(),
|
9573
8840
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9588,31 +8855,13 @@ const zAreaPercent = z.object({
|
|
9588
8855
|
annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),
|
9589
8856
|
locale: zLocale.nullish()
|
9590
8857
|
});
|
9591
|
-
const zAreaRange = z.object({
|
9592
|
-
chartType: z.literal('areaRange'),
|
9593
|
-
dataset: zDataset.nullish(),
|
9594
|
-
dimensions: zDimensions.nullish(),
|
9595
|
-
measures: zMeasureTree.nullish(),
|
9596
|
-
backgroundColor: zBackgroundColor.nullish(),
|
9597
|
-
label: zLabel.nullish(),
|
9598
|
-
xAxis: zXBandAxis.nullish(),
|
9599
|
-
yAxis: zYLinearAxis.nullish(),
|
9600
|
-
crosshairLine: zCrosshairLine.nullish(),
|
9601
|
-
theme: zTheme.nullish(),
|
9602
|
-
pointStyle: z.array(zPointStyle).or(zPointStyle).nullish(),
|
9603
|
-
lineStyle: z.array(zLineStyle).or(zLineStyle).nullish(),
|
9604
|
-
areaStyle: z.array(zAreaStyle).or(zAreaStyle).nullish(),
|
9605
|
-
annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),
|
9606
|
-
annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),
|
9607
|
-
annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),
|
9608
|
-
annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),
|
9609
|
-
locale: zLocale.nullish()
|
9610
|
-
});
|
9611
8858
|
const zScatter = z.object({
|
9612
8859
|
chartType: z.literal('scatter'),
|
9613
8860
|
dataset: zDataset.nullish(),
|
8861
|
+
encoding: zEncoding.nullish(),
|
9614
8862
|
dimensions: zDimensions.nullish(),
|
9615
8863
|
measures: zMeasureTree.nullish(),
|
8864
|
+
scatterMeasures: zScatterMeasures.nullish(),
|
9616
8865
|
backgroundColor: zBackgroundColor.nullish(),
|
9617
8866
|
color: zColor.nullish(),
|
9618
8867
|
label: zLabel.nullish(),
|
@@ -9662,6 +8911,7 @@ const zDualAxis = z.object({
|
|
9662
8911
|
const zRose = z.object({
|
9663
8912
|
chartType: z.literal('rose'),
|
9664
8913
|
dataset: zDataset.nullish(),
|
8914
|
+
encoding: zEncoding.nullish(),
|
9665
8915
|
dimensions: zDimensions.nullish(),
|
9666
8916
|
measures: zMeasureTree.nullish(),
|
9667
8917
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9675,6 +8925,7 @@ const zRose = z.object({
|
|
9675
8925
|
const zRoseParallel = z.object({
|
9676
8926
|
chartType: z.literal('roseParallel'),
|
9677
8927
|
dataset: zDataset.nullish(),
|
8928
|
+
encoding: zEncoding.nullish(),
|
9678
8929
|
dimensions: zDimensions.nullish(),
|
9679
8930
|
measures: zMeasureTree.nullish(),
|
9680
8931
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9688,6 +8939,7 @@ const zRoseParallel = z.object({
|
|
9688
8939
|
const zPie = z.object({
|
9689
8940
|
chartType: z.literal('pie'),
|
9690
8941
|
dataset: zDataset.nullish(),
|
8942
|
+
encoding: zEncoding.nullish(),
|
9691
8943
|
dimensions: zDimensions.nullish(),
|
9692
8944
|
measures: zMeasureTree.nullish(),
|
9693
8945
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9701,6 +8953,7 @@ const zPie = z.object({
|
|
9701
8953
|
const zDonut = z.object({
|
9702
8954
|
chartType: z.literal('donut'),
|
9703
8955
|
dataset: zDataset.nullish(),
|
8956
|
+
encoding: zEncoding.nullish(),
|
9704
8957
|
dimensions: zDimensions.nullish(),
|
9705
8958
|
measures: zMeasureTree.nullish(),
|
9706
8959
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9714,6 +8967,7 @@ const zDonut = z.object({
|
|
9714
8967
|
const zRadar = z.object({
|
9715
8968
|
chartType: z.literal('radar'),
|
9716
8969
|
dataset: zDataset.nullish(),
|
8970
|
+
encoding: zEncoding.nullish(),
|
9717
8971
|
dimensions: zDimensions.nullish(),
|
9718
8972
|
measures: zMeasureTree.nullish(),
|
9719
8973
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9727,6 +8981,7 @@ const zRadar = z.object({
|
|
9727
8981
|
const zFunnel = z.object({
|
9728
8982
|
chartType: z.literal('funnel'),
|
9729
8983
|
dataset: zDataset.nullish(),
|
8984
|
+
encoding: zEncoding.nullish(),
|
9730
8985
|
dimensions: zDimensions.nullish(),
|
9731
8986
|
measures: zMeasureTree.nullish(),
|
9732
8987
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9762,7 +9017,6 @@ const zVSeed = z.discriminatedUnion('chartType', [
|
|
9762
9017
|
zBarPercent,
|
9763
9018
|
zArea,
|
9764
9019
|
zAreaPercent,
|
9765
|
-
zAreaRange,
|
9766
9020
|
zScatter,
|
9767
9021
|
zDualAxis,
|
9768
9022
|
zPie,
|
@@ -9780,6 +9034,7 @@ const zAdvancedVSeed = z.object({
|
|
9780
9034
|
dimensions: zDimensionTree,
|
9781
9035
|
measures: zMeasureTree,
|
9782
9036
|
encoding: zEncoding,
|
9037
|
+
encodings: zEncodings,
|
9783
9038
|
config: zConfig,
|
9784
9039
|
analysis: zAnalysis,
|
9785
9040
|
theme: zTheme,
|
@@ -9788,6 +9043,6 @@ const zAdvancedVSeed = z.object({
|
|
9788
9043
|
annotation: zAnnotation,
|
9789
9044
|
locale: zLocale
|
9790
9045
|
});
|
9791
|
-
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 };
|
9792
9047
|
|
9793
9048
|
//# sourceMappingURL=index.js.map
|