@visactor/vseed 0.0.40 → 0.1.1
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 +1184 -1891
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1106 -1822
- 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 +13 -1
- package/dist/types/chartType/area/zArea.d.ts +14 -0
- package/dist/types/chartType/areaPercent/areaPercent.d.ts +13 -1
- package/dist/types/chartType/areaPercent/zAreaPercent.d.ts +14 -0
- package/dist/types/chartType/bar/bar.d.ts +22 -30
- package/dist/types/chartType/bar/zBar.d.ts +14 -0
- package/dist/types/chartType/barParallel/barParallel.d.ts +21 -30
- package/dist/types/chartType/barParallel/zBarParallel.d.ts +14 -0
- package/dist/types/chartType/barPercent/barPercent.d.ts +19 -21
- package/dist/types/chartType/barPercent/zBarPercent.d.ts +14 -0
- package/dist/types/chartType/column/column.d.ts +19 -28
- package/dist/types/chartType/column/zColumn.d.ts +14 -0
- package/dist/types/chartType/columnParallel/columnParallel.d.ts +22 -27
- package/dist/types/chartType/columnParallel/zColumnParallel.d.ts +14 -0
- package/dist/types/chartType/columnPercent/columnPercent.d.ts +19 -25
- package/dist/types/chartType/columnPercent/zColumnPercent.d.ts +14 -0
- package/dist/types/chartType/donut/donut.d.ts +12 -1
- package/dist/types/chartType/donut/zDonut.d.ts +14 -0
- package/dist/types/chartType/dualAxis/dualAxis.d.ts +13 -1
- package/dist/types/chartType/funnel/funnel.d.ts +12 -1
- package/dist/types/chartType/funnel/zFunnel.d.ts +14 -0
- package/dist/types/chartType/heatmap/heatmap.d.ts +13 -1
- package/dist/types/chartType/index.d.ts +0 -1
- package/dist/types/chartType/line/line.d.ts +17 -10
- package/dist/types/chartType/line/zLine.d.ts +14 -0
- package/dist/types/chartType/pie/pie.d.ts +12 -1
- package/dist/types/chartType/pie/zPie.d.ts +14 -0
- package/dist/types/chartType/radar/radar.d.ts +13 -1
- package/dist/types/chartType/radar/zRadar.d.ts +14 -0
- package/dist/types/chartType/rose/rose.d.ts +13 -1
- package/dist/types/chartType/rose/zRose.d.ts +14 -0
- package/dist/types/chartType/roseParallel/roseParallel.d.ts +13 -1
- package/dist/types/chartType/roseParallel/zRoseParallel.d.ts +14 -0
- package/dist/types/chartType/scatter/scatter.d.ts +92 -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 +1134 -1847
- 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,57 @@ 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
|
+
dimensions[0].id
|
1246
|
+
];
|
1247
|
+
const color = encoding.color || [
|
1248
|
+
(dimensions[1] || dimensions[0]).id
|
1249
|
+
];
|
1250
|
+
const detail = encoding.detail || [];
|
1251
|
+
const mergedDetail = unique([
|
1252
|
+
...color,
|
1253
|
+
...detail
|
1254
|
+
]);
|
1255
|
+
return {
|
1256
|
+
...advancedVSeed,
|
1257
|
+
encoding: {
|
1258
|
+
...encoding,
|
1259
|
+
x,
|
1260
|
+
color,
|
1261
|
+
detail: mergedDetail
|
1262
|
+
}
|
1263
|
+
};
|
1264
|
+
}
|
1265
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
1266
|
+
const mergedEncoding = {
|
1267
|
+
x: dimensions.slice(0, 1).map((item)=>item.id),
|
1268
|
+
color: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
1269
|
+
detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
1270
|
+
tooltip: dimensions.map((item)=>item.id),
|
1271
|
+
label: [],
|
1272
|
+
row: [],
|
1273
|
+
column: []
|
1274
|
+
};
|
1275
|
+
return {
|
1276
|
+
...advancedVSeed,
|
1277
|
+
encoding: mergedEncoding
|
1278
|
+
};
|
1279
|
+
};
|
1200
1280
|
const pivotAdapter = (pipeline, pivotPipeline)=>(advancedVSeed, context)=>{
|
1201
1281
|
const { vseed } = context;
|
1202
1282
|
const usePivotChart = isPivotChart(vseed);
|
1203
1283
|
if (usePivotChart) return execPipeline(pivotPipeline, context, advancedVSeed);
|
1204
1284
|
return execPipeline(pipeline, context, advancedVSeed);
|
1205
1285
|
};
|
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
1286
|
const foldMeasures = (dataset, measures, measureId = FoldMeasureId, measureName = FoldMeasureName, measureValue = FoldMeasureValue)=>{
|
1216
1287
|
const foldInfo = {
|
1217
1288
|
measureId,
|
@@ -1241,84 +1312,53 @@ const foldMeasures = (dataset, measures, measureId = FoldMeasureId, measureName
|
|
1241
1312
|
foldInfo
|
1242
1313
|
};
|
1243
1314
|
};
|
1244
|
-
const unfoldDimensions = (dataset, dimensions,
|
1245
|
-
|
1246
|
-
const dimensionsToBeUnfolded = dimensions.slice(unfoldStartIndex);
|
1247
|
-
const dimensionsToBeRemain = dimensions.slice(0, unfoldStartIndex);
|
1315
|
+
const unfoldDimensions = (dataset, dimensions, encoding, options)=>{
|
1316
|
+
const { foldMeasureId, separator, colorItemAsId } = options;
|
1248
1317
|
const unfoldInfo = {
|
1249
|
-
|
1250
|
-
|
1318
|
+
encodingAngle: AngleEncoding,
|
1319
|
+
encodingX: XEncoding,
|
1320
|
+
encodingY: YEncoding,
|
1321
|
+
encodingDetail: DetailEncoding,
|
1322
|
+
encodingColor: ColorEncoding,
|
1323
|
+
encodingColorId: ColorIdEncoding,
|
1251
1324
|
colorItems: [],
|
1252
1325
|
colorIdMap: {}
|
1253
1326
|
};
|
1254
|
-
|
1255
|
-
|
1256
|
-
|
1257
|
-
|
1258
|
-
|
1259
|
-
|
1260
|
-
|
1261
|
-
|
1262
|
-
};
|
1263
|
-
const colorItems = [];
|
1264
|
-
const colorMap = {};
|
1327
|
+
const { color, x, y, detail, angle } = encoding;
|
1328
|
+
const angleDimensions = angle ? dimensions.filter((dim)=>angle.includes(dim.id)) : [];
|
1329
|
+
const xDimensions = x ? dimensions.filter((dim)=>x.includes(dim.id)) : [];
|
1330
|
+
const yDimensions = y ? dimensions.filter((dim)=>y.includes(dim.id)) : [];
|
1331
|
+
const colorDimensions = color ? dimensions.filter((dim)=>color.includes(dim.id)) : [];
|
1332
|
+
const detailDimensions = detail ? dimensions.filter((dim)=>detail.includes(dim.id)) : [];
|
1333
|
+
const colorItems = new Set();
|
1334
|
+
const colorIdMap = {};
|
1265
1335
|
for(let i = 0; i < dataset.length; i++){
|
1266
1336
|
const datum = dataset[i];
|
1267
|
-
|
1268
|
-
|
1269
|
-
|
1270
|
-
|
1271
|
-
|
1272
|
-
datum[
|
1273
|
-
datum[
|
1274
|
-
|
1275
|
-
|
1276
|
-
|
1277
|
-
|
1278
|
-
|
1279
|
-
|
1337
|
+
applyEncoding(AngleEncoding, angleDimensions, datum, separator);
|
1338
|
+
applyEncoding(XEncoding, xDimensions, datum, separator);
|
1339
|
+
applyEncoding(YEncoding, yDimensions, datum, separator);
|
1340
|
+
applyEncoding(ColorEncoding, colorDimensions, datum, separator);
|
1341
|
+
applyEncoding(DetailEncoding, detailDimensions, datum, separator);
|
1342
|
+
if (!datum[ColorEncoding]) continue;
|
1343
|
+
const measureId = String(datum[foldMeasureId]);
|
1344
|
+
const colorItem = String(datum[ColorEncoding]);
|
1345
|
+
const colorId = colorItemAsId ? colorItem : measureId ? [
|
1346
|
+
colorItem,
|
1347
|
+
measureId
|
1348
|
+
].join(separator) : colorItem;
|
1349
|
+
datum[ColorIdEncoding] = colorId;
|
1350
|
+
colorIdMap[colorId] = colorItem;
|
1351
|
+
colorItems.add(colorId);
|
1280
1352
|
}
|
1281
|
-
unfoldInfo.colorItems =
|
1282
|
-
unfoldInfo.colorIdMap =
|
1353
|
+
unfoldInfo.colorItems = Array.from(colorItems);
|
1354
|
+
unfoldInfo.colorIdMap = colorIdMap;
|
1283
1355
|
return {
|
1284
1356
|
dataset,
|
1285
1357
|
unfoldInfo
|
1286
1358
|
};
|
1287
1359
|
};
|
1288
|
-
const
|
1289
|
-
|
1290
|
-
const unfoldInfo = {
|
1291
|
-
groupName: unfoldGroupName,
|
1292
|
-
groupId: unfoldGroupId,
|
1293
|
-
colorItems: [],
|
1294
|
-
colorIdMap: {}
|
1295
|
-
};
|
1296
|
-
if (0 === measures.length) return {
|
1297
|
-
dataset,
|
1298
|
-
unfoldInfo: {
|
1299
|
-
groupName: unfoldGroupName,
|
1300
|
-
groupId: unfoldGroupId,
|
1301
|
-
colorItems: [],
|
1302
|
-
colorIdMap: {}
|
1303
|
-
}
|
1304
|
-
};
|
1305
|
-
const colorItems = [];
|
1306
|
-
const colorMap = {};
|
1307
|
-
for(let i = 0; i < dataset.length; i++){
|
1308
|
-
const datum = dataset[i];
|
1309
|
-
const colorName = measureName;
|
1310
|
-
const colorId = measureName;
|
1311
|
-
datum[unfoldGroupName] = colorName;
|
1312
|
-
datum[unfoldGroupId] = colorId;
|
1313
|
-
colorItems.push(colorId);
|
1314
|
-
colorMap[colorId] = colorName;
|
1315
|
-
}
|
1316
|
-
unfoldInfo.colorItems = unique(colorItems);
|
1317
|
-
unfoldInfo.colorIdMap = colorMap;
|
1318
|
-
return {
|
1319
|
-
dataset,
|
1320
|
-
unfoldInfo
|
1321
|
-
};
|
1360
|
+
const applyEncoding = (encoding, dimensions, datum, separator)=>{
|
1361
|
+
if (encoding && dimensions.length) datum[encoding] = dimensions.map((dim)=>String(datum[dim.id])).join(separator);
|
1322
1362
|
};
|
1323
1363
|
const emptyReshapeResult = {
|
1324
1364
|
dataset: [],
|
@@ -1329,69 +1369,47 @@ const emptyReshapeResult = {
|
|
1329
1369
|
measureValue: ''
|
1330
1370
|
},
|
1331
1371
|
unfoldInfo: {
|
1332
|
-
|
1333
|
-
|
1372
|
+
encodingAngle: AngleEncoding,
|
1373
|
+
encodingX: XEncoding,
|
1374
|
+
encodingY: YEncoding,
|
1375
|
+
encodingDetail: DetailEncoding,
|
1376
|
+
encodingColor: ColorEncoding,
|
1377
|
+
encodingColorId: ColorIdEncoding,
|
1334
1378
|
colorItems: [],
|
1335
1379
|
colorIdMap: {}
|
1336
1380
|
}
|
1337
1381
|
};
|
1338
|
-
const
|
1339
|
-
const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue,
|
1382
|
+
const dataReshapeByEncoding = (dataset, dimensions, measures, encoding, options)=>{
|
1383
|
+
const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, colorItemAsId = false } = options || {};
|
1340
1384
|
if (0 === dimensions.length && 0 === measures.length) return emptyReshapeResult;
|
1341
1385
|
const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, foldMeasureId, foldMeasureName, foldMeasureValue);
|
1342
|
-
|
1343
|
-
|
1344
|
-
|
1345
|
-
|
1346
|
-
|
1347
|
-
|
1348
|
-
|
1349
|
-
|
1350
|
-
|
1351
|
-
|
1352
|
-
unfoldInfo
|
1353
|
-
};
|
1354
|
-
}
|
1355
|
-
{
|
1356
|
-
const onlyOneMeasure = 1 === measures.length;
|
1357
|
-
const onlyOneDimension = 1 === dimensions.length;
|
1358
|
-
const dims = [
|
1359
|
-
...dimensions
|
1360
|
-
];
|
1361
|
-
if (!onlyOneMeasure || onlyOneDimension) dims.push({
|
1362
|
-
id: foldMeasureName,
|
1363
|
-
alias: i18n`指标名称`,
|
1364
|
-
location: 'dimension'
|
1365
|
-
});
|
1366
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dims, [
|
1367
|
-
{
|
1368
|
-
id: foldMeasureValue,
|
1369
|
-
alias: i18n`指标值`
|
1370
|
-
}
|
1371
|
-
], 1, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
1372
|
-
return {
|
1373
|
-
dataset: finalDataset,
|
1374
|
-
foldInfo,
|
1375
|
-
unfoldInfo
|
1376
|
-
};
|
1377
|
-
}
|
1386
|
+
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dimensions, encoding, {
|
1387
|
+
foldMeasureId,
|
1388
|
+
separator: Separator,
|
1389
|
+
colorItemAsId
|
1390
|
+
});
|
1391
|
+
return {
|
1392
|
+
dataset: finalDataset,
|
1393
|
+
foldInfo,
|
1394
|
+
unfoldInfo
|
1395
|
+
};
|
1378
1396
|
};
|
1379
|
-
const
|
1397
|
+
const reshapeWithEncoding = (advancedVSeed, context)=>{
|
1380
1398
|
const result = {
|
1381
1399
|
...advancedVSeed
|
1382
1400
|
};
|
1383
1401
|
const { vseed } = context;
|
1384
|
-
const { dataset } = vseed;
|
1385
|
-
const { dimensions, measures } = advancedVSeed;
|
1386
|
-
if (!measures || !dimensions || !dataset) return result;
|
1402
|
+
const { dataset, chartType } = vseed;
|
1403
|
+
const { dimensions, measures, encoding } = advancedVSeed;
|
1404
|
+
if (!measures || !dimensions || !dataset || !encoding) return result;
|
1387
1405
|
if (0 === measures.length) throw new Error('measures can not be empty');
|
1388
|
-
const { dataset: newDatasets, foldInfo, unfoldInfo } =
|
1406
|
+
const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding);
|
1389
1407
|
return {
|
1390
1408
|
...result,
|
1391
1409
|
dataset: newDatasets,
|
1392
1410
|
datasetReshapeInfo: [
|
1393
1411
|
{
|
1394
|
-
id:
|
1412
|
+
id: String(chartType),
|
1395
1413
|
index: 0,
|
1396
1414
|
foldInfo,
|
1397
1415
|
unfoldInfo
|
@@ -1401,31 +1419,27 @@ const reshapeTo2D1M0Name = (advancedVSeed, context)=>{
|
|
1401
1419
|
measures
|
1402
1420
|
};
|
1403
1421
|
};
|
1404
|
-
const
|
1422
|
+
const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
|
1405
1423
|
const result = {
|
1406
1424
|
...advancedVSeed
|
1407
1425
|
};
|
1408
1426
|
const { vseed } = context;
|
1409
1427
|
const { dataset } = vseed;
|
1410
|
-
const { measures } = advancedVSeed;
|
1411
|
-
|
1412
|
-
if (
|
1428
|
+
const { dimensions, measures, encoding } = advancedVSeed;
|
1429
|
+
if (!measures || !dimensions || !dataset || !encoding) return result;
|
1430
|
+
if (0 === measures.length) throw new Error('measures can not be empty');
|
1413
1431
|
const measureGroups = [];
|
1414
1432
|
if (measures) measures.forEach((measure)=>{
|
1415
1433
|
if (measure.children && measure.children.length > 0) measureGroups.push(measure);
|
1416
1434
|
});
|
1417
|
-
const
|
1418
|
-
const newDatasets = [];
|
1435
|
+
const datasets = [];
|
1419
1436
|
const datasetReshapeInfo = [];
|
1420
1437
|
measureGroups.forEach((measureGroup, index)=>{
|
1421
1438
|
const measures = measureGroup.children;
|
1422
1439
|
if (!measures) return;
|
1423
1440
|
const groupId = measureGroup.id;
|
1424
|
-
const { dataset: newSubDataset, foldInfo, unfoldInfo } =
|
1425
|
-
|
1426
|
-
foldMeasureName: FoldMeasureName,
|
1427
|
-
foldMeasureValue: FoldMeasureValue + groupId,
|
1428
|
-
unfoldDimensionGroup: UnfoldDimensionGroup
|
1441
|
+
const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding, {
|
1442
|
+
foldMeasureValue: `${FoldMeasureValue}${groupId}`
|
1429
1443
|
});
|
1430
1444
|
const reshapeInfo = {
|
1431
1445
|
id: groupId,
|
@@ -1433,93 +1447,60 @@ const pivotReshapeTo2D1M0Name = (advancedVSeed, context)=>{
|
|
1433
1447
|
foldInfo,
|
1434
1448
|
unfoldInfo
|
1435
1449
|
};
|
1436
|
-
|
1450
|
+
datasets.push(newSubDataset);
|
1437
1451
|
datasetReshapeInfo.push(reshapeInfo);
|
1438
1452
|
});
|
1439
1453
|
return {
|
1440
1454
|
...result,
|
1441
|
-
dataset:
|
1455
|
+
dataset: datasets,
|
1442
1456
|
datasetReshapeInfo: datasetReshapeInfo
|
1443
1457
|
};
|
1444
1458
|
};
|
1445
|
-
const encodingXY = (advancedVSeed)=>{
|
1446
|
-
const result = {
|
1447
|
-
...advancedVSeed
|
1448
|
-
};
|
1449
|
-
const { datasetReshapeInfo, dimensions } = advancedVSeed;
|
1450
|
-
if (!datasetReshapeInfo || !dimensions) return result;
|
1451
|
-
const xDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
|
1452
|
-
const isZeroDimension = 0 === dimensions.length;
|
1453
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
|
1454
|
-
const { foldInfo, unfoldInfo } = cur;
|
1455
|
-
const x = [
|
1456
|
-
isZeroDimension ? foldInfo.measureName : xDimension?.id
|
1457
|
-
];
|
1458
|
-
const y = [
|
1459
|
-
foldInfo.measureValue
|
1460
|
-
];
|
1461
|
-
const group = [
|
1462
|
-
unfoldInfo.groupId
|
1463
|
-
];
|
1464
|
-
const color = [
|
1465
|
-
foldInfo.measureName
|
1466
|
-
];
|
1467
|
-
return [
|
1468
|
-
...prev,
|
1469
|
-
{
|
1470
|
-
x,
|
1471
|
-
y,
|
1472
|
-
group,
|
1473
|
-
color
|
1474
|
-
}
|
1475
|
-
];
|
1476
|
-
}, []);
|
1477
|
-
return {
|
1478
|
-
...result,
|
1479
|
-
encoding
|
1480
|
-
};
|
1481
|
-
};
|
1482
1459
|
const sortXBandAxis = (advancedVSeed, context)=>{
|
1483
1460
|
const result = {
|
1484
1461
|
...advancedVSeed
|
1485
1462
|
};
|
1486
1463
|
const { vseed } = context;
|
1487
|
-
const { sort: sortAxis
|
1488
|
-
const {
|
1489
|
-
const
|
1464
|
+
const { sort: sortAxis } = vseed;
|
1465
|
+
const { datasetReshapeInfo, dataset } = advancedVSeed;
|
1466
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
1467
|
+
const xField = unfoldInfo.encodingX;
|
1490
1468
|
if (!sortAxis || !xField) return advancedVSeed;
|
1491
1469
|
if (!result.analysis) result.analysis = {};
|
1492
1470
|
if (!result.analysis.orderMapping) result.analysis.orderMapping = {};
|
1493
|
-
const axisOrderResult = calcOrder(sortAxis, xField, dataset);
|
1471
|
+
const axisOrderResult = calcOrder(sortAxis, xField, dataset.flat(2));
|
1494
1472
|
result.analysis.orderMapping[xField] = axisOrderResult;
|
1495
1473
|
return result;
|
1496
1474
|
};
|
1497
|
-
const
|
1498
|
-
|
1499
|
-
|
1500
|
-
|
1501
|
-
const
|
1502
|
-
|
1503
|
-
|
1504
|
-
|
1505
|
-
|
1506
|
-
|
1507
|
-
|
1508
|
-
|
1509
|
-
|
1510
|
-
|
1475
|
+
const calcOrder = (sortConfig, id, dataset)=>{
|
1476
|
+
if (sortConfig.customOrder) return sortConfig.customOrder;
|
1477
|
+
const order = sortConfig.order || 'asc';
|
1478
|
+
const orderBy = sortConfig.orderBy;
|
1479
|
+
const res = sort(dataset, (a, b)=>{
|
1480
|
+
const aValue = a[orderBy || id];
|
1481
|
+
const bValue = b[orderBy || id];
|
1482
|
+
if ('asc' === order) {
|
1483
|
+
if (aValue < bValue) return -1;
|
1484
|
+
if (aValue > bValue) return 1;
|
1485
|
+
return 0;
|
1486
|
+
}
|
1487
|
+
if (aValue > bValue) return -1;
|
1488
|
+
if (aValue < bValue) return 1;
|
1489
|
+
return 0;
|
1490
|
+
});
|
1491
|
+
return unique(res.map((item)=>item[id]));
|
1511
1492
|
};
|
1512
|
-
const
|
1493
|
+
const sortLegend_sortLegend = (advancedVSeed, context)=>{
|
1513
1494
|
const result = {
|
1514
1495
|
...advancedVSeed
|
1515
1496
|
};
|
1516
1497
|
const { vseed } = context;
|
1517
1498
|
const { sortLegend } = vseed;
|
1518
|
-
const { datasetReshapeInfo } = advancedVSeed;
|
1519
|
-
const
|
1499
|
+
const { datasetReshapeInfo, dataset } = advancedVSeed;
|
1500
|
+
const colorId = datasetReshapeInfo?.[0]?.unfoldInfo?.encodingColorId;
|
1520
1501
|
const colorIdMap = datasetReshapeInfo?.[0]?.unfoldInfo?.colorIdMap;
|
1521
1502
|
const colorItems = datasetReshapeInfo?.[0]?.unfoldInfo?.colorItems;
|
1522
|
-
if (!sortLegend || !
|
1503
|
+
if (!sortLegend || !colorId || !colorIdMap || !colorItems) return advancedVSeed;
|
1523
1504
|
if (!result.analysis) result.analysis = {};
|
1524
1505
|
if (!result.analysis.orderMapping) result.analysis.orderMapping = {};
|
1525
1506
|
if (sortLegend.customOrder) {
|
@@ -1528,15 +1509,14 @@ const sort_sortLegend = (advancedVSeed, context)=>{
|
|
1528
1509
|
return pre;
|
1529
1510
|
}, {});
|
1530
1511
|
const orderRes = sortLegend.customOrder.map((itemNameOrId)=>nameMap[itemNameOrId] ? nameMap[itemNameOrId] : itemNameOrId);
|
1531
|
-
result.analysis.orderMapping[
|
1512
|
+
result.analysis.orderMapping[colorId] = orderRes;
|
1532
1513
|
return result;
|
1533
1514
|
}
|
1534
|
-
const
|
1535
|
-
|
1536
|
-
result.analysis.orderMapping[groupField] = orderRes;
|
1515
|
+
const orderRes = sortLegend_calcOrder(sortLegend, colorId, dataset?.flat(2) || []);
|
1516
|
+
result.analysis.orderMapping[colorId] = orderRes;
|
1537
1517
|
return result;
|
1538
1518
|
};
|
1539
|
-
const
|
1519
|
+
const sortLegend_calcOrder = (sortConfig, id, dataset)=>{
|
1540
1520
|
if (sortConfig.customOrder) return sortConfig.customOrder;
|
1541
1521
|
const order = sortConfig.order || 'asc';
|
1542
1522
|
const orderBy = sortConfig.orderBy;
|
@@ -1668,14 +1648,14 @@ const lineAdvancedPipeline = [
|
|
1668
1648
|
initAdvancedVSeed_initAdvancedVSeed,
|
1669
1649
|
autoMeasures_autoMeasures,
|
1670
1650
|
autoDimensions_autoDimensions,
|
1651
|
+
encodingForColumn,
|
1671
1652
|
pivotAdapter([
|
1672
|
-
|
1653
|
+
reshapeWithEncoding
|
1673
1654
|
], [
|
1674
|
-
|
1655
|
+
pivotReshapeWithEncoding
|
1675
1656
|
]),
|
1676
|
-
encodingXY,
|
1677
1657
|
sortXBandAxis,
|
1678
|
-
|
1658
|
+
sortLegend_sortLegend,
|
1679
1659
|
lineConfig,
|
1680
1660
|
theme_theme,
|
1681
1661
|
markStyle_markStyle,
|
@@ -1686,13 +1666,13 @@ const initLine = (spec, context)=>{
|
|
1686
1666
|
...spec
|
1687
1667
|
};
|
1688
1668
|
const { advancedVSeed } = context;
|
1689
|
-
const {
|
1690
|
-
|
1669
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
1670
|
+
const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
|
1691
1671
|
result.type = 'line';
|
1692
1672
|
result.direction = 'vertical';
|
1693
|
-
result.xField =
|
1694
|
-
result.yField =
|
1695
|
-
result.seriesField =
|
1673
|
+
result.xField = unfoldInfo.encodingX;
|
1674
|
+
result.yField = foldInfo.measureValue;
|
1675
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
1696
1676
|
result.padding = 0;
|
1697
1677
|
result.region = [
|
1698
1678
|
{
|
@@ -1768,11 +1748,12 @@ const background_backgroundColor = (spec, context)=>{
|
|
1768
1748
|
};
|
1769
1749
|
const datasetXY = (spec, context)=>{
|
1770
1750
|
const { advancedVSeed, vseed } = context;
|
1771
|
-
const {
|
1751
|
+
const { analysis, datasetReshapeInfo } = advancedVSeed;
|
1752
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
1772
1753
|
const orderMapping = analysis?.orderMapping || {};
|
1773
|
-
const angle =
|
1774
|
-
const x =
|
1775
|
-
const
|
1754
|
+
const angle = unfoldInfo.encodingAngle;
|
1755
|
+
const x = unfoldInfo.encodingX;
|
1756
|
+
const colorId = unfoldInfo.encodingColorId;
|
1776
1757
|
const id = datasetReshapeInfo[0].id;
|
1777
1758
|
const fields = {};
|
1778
1759
|
if (angle) fields[angle] = {
|
@@ -1789,14 +1770,14 @@ const datasetXY = (spec, context)=>{
|
|
1789
1770
|
sortIndex: 0
|
1790
1771
|
};
|
1791
1772
|
}
|
1792
|
-
if (
|
1793
|
-
const order = orderMapping[
|
1794
|
-
if (order) fields[
|
1773
|
+
if (colorId) {
|
1774
|
+
const order = orderMapping[colorId];
|
1775
|
+
if (order) fields[colorId] = {
|
1795
1776
|
sortIndex: 0,
|
1796
1777
|
domain: order,
|
1797
1778
|
lockStatisticsByDomain: true
|
1798
1779
|
};
|
1799
|
-
else fields[
|
1780
|
+
else fields[colorId] = {
|
1800
1781
|
sortIndex: 0
|
1801
1782
|
};
|
1802
1783
|
}
|
@@ -2049,7 +2030,7 @@ const tooltip_tooltip = (spec, context)=>{
|
|
2049
2030
|
} } = baseConfig;
|
2050
2031
|
const { enable } = tooltip;
|
2051
2032
|
const { measureId, measureValue, measureName } = datasetReshapeInfo[0].foldInfo;
|
2052
|
-
const {
|
2033
|
+
const { encodingColor: colorName } = datasetReshapeInfo[0].unfoldInfo;
|
2053
2034
|
result.tooltip = {
|
2054
2035
|
visible: enable,
|
2055
2036
|
mark: {
|
@@ -2070,7 +2051,7 @@ const tooltip_tooltip = (spec, context)=>{
|
|
2070
2051
|
{
|
2071
2052
|
visible: true,
|
2072
2053
|
hasShape: true,
|
2073
|
-
key: (datum)=>datum && datum[measureName ||
|
2054
|
+
key: (datum)=>datum && datum[measureName || colorName] || '',
|
2074
2055
|
value: (datum)=>{
|
2075
2056
|
if (!datum) return '';
|
2076
2057
|
const value = datum[measureValue];
|
@@ -2092,7 +2073,7 @@ const tooltip_tooltip = (spec, context)=>{
|
|
2092
2073
|
content: [
|
2093
2074
|
{
|
2094
2075
|
visible: true,
|
2095
|
-
key: (datum)=>datum && datum[
|
2076
|
+
key: (datum)=>datum && datum[colorName] || '',
|
2096
2077
|
value: (datum)=>{
|
2097
2078
|
if (!datum) return '';
|
2098
2079
|
const value = datum[measureValue];
|
@@ -2430,7 +2411,8 @@ const pointStateDimensionHover = (spec)=>{
|
|
2430
2411
|
const pointStateHover = (spec, context)=>{
|
2431
2412
|
const point = spec.point || {};
|
2432
2413
|
const { advancedVSeed } = context;
|
2433
|
-
const {
|
2414
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
2415
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
2434
2416
|
const result = {
|
2435
2417
|
...spec,
|
2436
2418
|
point: {
|
@@ -2441,7 +2423,7 @@ const pointStateHover = (spec, context)=>{
|
|
2441
2423
|
scaleX: 1.4,
|
2442
2424
|
scaleY: 1.4,
|
2443
2425
|
stroke: (datum, context)=>{
|
2444
|
-
const field =
|
2426
|
+
const field = unfoldInfo.encodingColorId;
|
2445
2427
|
const color = context.seriesColor(datum[field]);
|
2446
2428
|
return color;
|
2447
2429
|
},
|
@@ -2455,7 +2437,8 @@ const pointStateHover = (spec, context)=>{
|
|
2455
2437
|
};
|
2456
2438
|
const lineStyle_lineStyle = (spec, context)=>{
|
2457
2439
|
const { advancedVSeed } = context;
|
2458
|
-
const { markStyle,
|
2440
|
+
const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed;
|
2441
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
2459
2442
|
const { lineStyle } = markStyle;
|
2460
2443
|
if (!lineStyle) return spec;
|
2461
2444
|
const result = {
|
@@ -2464,8 +2447,8 @@ const lineStyle_lineStyle = (spec, context)=>{
|
|
2464
2447
|
const lineStyles = Array.isArray(lineStyle) ? lineStyle : [
|
2465
2448
|
lineStyle
|
2466
2449
|
];
|
2467
|
-
const
|
2468
|
-
const lineGroups = groupBy(dataset, (d)=>d[
|
2450
|
+
const colorId = unfoldInfo.encodingColorId;
|
2451
|
+
const lineGroups = groupBy(dataset, (d)=>d[colorId ?? '']);
|
2469
2452
|
const customMap = lineStyles.reduce((result, style, index)=>{
|
2470
2453
|
const { lineColor, lineColorOpacity, lineSmooth, lineStyle, lineWidth = 2, lineVisible = true } = style;
|
2471
2454
|
const dashSegment = 2 * lineWidth;
|
@@ -2486,7 +2469,7 @@ const lineStyle_lineStyle = (spec, context)=>{
|
|
2486
2469
|
[`custom${index + 1}`]: {
|
2487
2470
|
level: index + 1,
|
2488
2471
|
filter: (datum)=>{
|
2489
|
-
const lineData = lineGroups[datum[
|
2472
|
+
const lineData = lineGroups[datum[colorId ?? '']];
|
2490
2473
|
for (const d of lineData)if (selector_selector(d, style.selector)) return true;
|
2491
2474
|
return false;
|
2492
2475
|
},
|
@@ -2581,7 +2564,8 @@ const annotationPoint_annotationPoint = (spec, context)=>{
|
|
2581
2564
|
};
|
2582
2565
|
const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
|
2583
2566
|
const { advancedVSeed } = context;
|
2584
|
-
const { annotation,
|
2567
|
+
const { annotation, datasetReshapeInfo } = advancedVSeed;
|
2568
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
2585
2569
|
if (!annotation || !annotation.annotationVerticalLine) return spec;
|
2586
2570
|
const { annotationVerticalLine } = annotation;
|
2587
2571
|
const annotationVerticalLineList = Array.isArray(annotationVerticalLine) ? annotationVerticalLine : [
|
@@ -2661,7 +2645,7 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
|
|
2661
2645
|
}
|
2662
2646
|
const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
|
2663
2647
|
return selectedData.map((datum)=>{
|
2664
|
-
const x =
|
2648
|
+
const x = unfoldInfo.encodingX;
|
2665
2649
|
if (!x) return {};
|
2666
2650
|
return generateOneMarkLine(datum[x]);
|
2667
2651
|
});
|
@@ -2678,7 +2662,8 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
|
|
2678
2662
|
};
|
2679
2663
|
const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
|
2680
2664
|
const { advancedVSeed } = context;
|
2681
|
-
const { annotation,
|
2665
|
+
const { annotation, datasetReshapeInfo } = advancedVSeed;
|
2666
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
2682
2667
|
if (!annotation || !annotation.annotationHorizontalLine) return spec;
|
2683
2668
|
const { annotationHorizontalLine } = annotation;
|
2684
2669
|
const annotationVerticalLineList = Array.isArray(annotationHorizontalLine) ? annotationHorizontalLine : [
|
@@ -2758,7 +2743,7 @@ const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
|
|
2758
2743
|
}
|
2759
2744
|
const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
|
2760
2745
|
return selectedData.map((datum)=>{
|
2761
|
-
const y =
|
2746
|
+
const y = unfoldInfo.encodingY;
|
2762
2747
|
if (!y) return {};
|
2763
2748
|
return generateOneMarkLine(datum[y]);
|
2764
2749
|
});
|
@@ -3039,13 +3024,10 @@ const pivotIndicators_pivotIndicators = (chartPipeline)=>(spec, context)=>{
|
|
3039
3024
|
...spec
|
3040
3025
|
};
|
3041
3026
|
const { advancedVSeed } = context;
|
3042
|
-
const { measures, datasetReshapeInfo,
|
3027
|
+
const { measures, datasetReshapeInfo, dataset } = advancedVSeed;
|
3043
3028
|
const colorItems = unique(datasetReshapeInfo.flatMap((d)=>d.unfoldInfo.colorItems));
|
3044
3029
|
const indicators = datasetReshapeInfo.map((reshapeInfo, index)=>{
|
3045
3030
|
const measure = measures?.find((d)=>d.id === reshapeInfo.id);
|
3046
|
-
const newEncoding = [
|
3047
|
-
encoding[index]
|
3048
|
-
];
|
3049
3031
|
const newDataset = dataset[index];
|
3050
3032
|
const newDatasetReshapeInfo = [
|
3051
3033
|
{
|
@@ -3061,8 +3043,7 @@ const pivotIndicators_pivotIndicators = (chartPipeline)=>(spec, context)=>{
|
|
3061
3043
|
advancedVSeed: {
|
3062
3044
|
...advancedVSeed,
|
3063
3045
|
datasetReshapeInfo: newDatasetReshapeInfo,
|
3064
|
-
dataset: newDataset
|
3065
|
-
encoding: newEncoding
|
3046
|
+
dataset: newDataset
|
3066
3047
|
}
|
3067
3048
|
};
|
3068
3049
|
const chartSpec = execPipeline(chartPipeline, newContext, {});
|
@@ -3248,7 +3229,7 @@ const pivotDiscreteLegend = (spec, context)=>{
|
|
3248
3229
|
}
|
3249
3230
|
},
|
3250
3231
|
label: {
|
3251
|
-
formatMethod: (value)=>colorIdMap[
|
3232
|
+
formatMethod: (value)=>colorIdMap[value] ?? value,
|
3252
3233
|
style: {
|
3253
3234
|
fontSize: labelFontSize,
|
3254
3235
|
fill: labelFontColor,
|
@@ -3331,151 +3312,18 @@ const registerLine = ()=>{
|
|
3331
3312
|
Builder._advancedPipelineMap.line = lineAdvancedPipeline;
|
3332
3313
|
Builder._specPipelineMap.line = lineSpecPipeline;
|
3333
3314
|
};
|
3334
|
-
const dataReshapeFor2D1M_emptyReshapeResult = {
|
3335
|
-
dataset: [],
|
3336
|
-
foldInfo: {
|
3337
|
-
foldMap: {},
|
3338
|
-
measureId: '',
|
3339
|
-
measureName: '',
|
3340
|
-
measureValue: ''
|
3341
|
-
},
|
3342
|
-
unfoldInfo: {
|
3343
|
-
groupName: '',
|
3344
|
-
groupId: '',
|
3345
|
-
colorItems: [],
|
3346
|
-
colorIdMap: {}
|
3347
|
-
}
|
3348
|
-
};
|
3349
|
-
const dataReshapeFor2D1M = (dataset, dimensions, measures, options)=>{
|
3350
|
-
const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, unfoldDimensionGroup = UnfoldDimensionGroup, unfoldDimensionGroupId = UnfoldDimensionGroupId } = options || {};
|
3351
|
-
if (0 === dimensions.length && 0 === measures.length) return dataReshapeFor2D1M_emptyReshapeResult;
|
3352
|
-
const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, foldMeasureId, foldMeasureName, foldMeasureValue);
|
3353
|
-
if (0 === dimensions.length) {
|
3354
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
|
3355
|
-
{
|
3356
|
-
id: foldMeasureId,
|
3357
|
-
alias: i18n`指标Id`,
|
3358
|
-
location: 'dimension'
|
3359
|
-
},
|
3360
|
-
{
|
3361
|
-
id: foldMeasureName,
|
3362
|
-
alias: i18n`指标名称`,
|
3363
|
-
location: 'dimension'
|
3364
|
-
}
|
3365
|
-
], [
|
3366
|
-
{
|
3367
|
-
id: foldMeasureValue,
|
3368
|
-
alias: i18n`指标值`
|
3369
|
-
}
|
3370
|
-
], 1, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
3371
|
-
return {
|
3372
|
-
dataset: finalDataset,
|
3373
|
-
foldInfo,
|
3374
|
-
unfoldInfo
|
3375
|
-
};
|
3376
|
-
}
|
3377
|
-
{
|
3378
|
-
const onlyOneMeasure = 1 === measures.length;
|
3379
|
-
const onlyOneDimension = 1 === dimensions.length;
|
3380
|
-
const dims = [
|
3381
|
-
...dimensions
|
3382
|
-
];
|
3383
|
-
if (!onlyOneMeasure || onlyOneDimension) dims.push({
|
3384
|
-
id: foldMeasureName,
|
3385
|
-
alias: i18n`指标名称`,
|
3386
|
-
location: 'dimension'
|
3387
|
-
});
|
3388
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dims, [
|
3389
|
-
{
|
3390
|
-
id: foldMeasureValue,
|
3391
|
-
alias: i18n`指标值`
|
3392
|
-
}
|
3393
|
-
], 1, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
3394
|
-
return {
|
3395
|
-
dataset: finalDataset,
|
3396
|
-
foldInfo,
|
3397
|
-
unfoldInfo
|
3398
|
-
};
|
3399
|
-
}
|
3400
|
-
};
|
3401
|
-
const reshapeTo2D1M = (advancedVSeed, context)=>{
|
3402
|
-
const result = {
|
3403
|
-
...advancedVSeed
|
3404
|
-
};
|
3405
|
-
const { vseed } = context;
|
3406
|
-
const { dataset } = vseed;
|
3407
|
-
const { dimensions, measures } = advancedVSeed;
|
3408
|
-
if (!measures || !dimensions || !dataset) return result;
|
3409
|
-
if (0 === measures.length) throw new Error('measures can not be empty');
|
3410
|
-
const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, dimensions, measures);
|
3411
|
-
return {
|
3412
|
-
...result,
|
3413
|
-
dataset: newDatasets,
|
3414
|
-
datasetReshapeInfo: [
|
3415
|
-
{
|
3416
|
-
id: '2D1M',
|
3417
|
-
index: 0,
|
3418
|
-
foldInfo,
|
3419
|
-
unfoldInfo
|
3420
|
-
}
|
3421
|
-
],
|
3422
|
-
dimensions,
|
3423
|
-
measures
|
3424
|
-
};
|
3425
|
-
};
|
3426
|
-
const pivotReshapeTo2D1M = (advancedVSeed, context)=>{
|
3427
|
-
const result = {
|
3428
|
-
...advancedVSeed
|
3429
|
-
};
|
3430
|
-
const { vseed } = context;
|
3431
|
-
const { dataset } = vseed;
|
3432
|
-
const { measures } = advancedVSeed;
|
3433
|
-
const dimensions = advancedVSeed.dimensions;
|
3434
|
-
if (!measures || !dimensions) return result;
|
3435
|
-
const measureGroups = [];
|
3436
|
-
if (measures) measures.forEach((measure)=>{
|
3437
|
-
if (measure.children && measure.children.length > 0) measureGroups.push(measure);
|
3438
|
-
});
|
3439
|
-
const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
|
3440
|
-
const newDatasets = [];
|
3441
|
-
const datasetReshapeInfo = [];
|
3442
|
-
measureGroups.forEach((measureGroup, index)=>{
|
3443
|
-
const measures = measureGroup.children;
|
3444
|
-
if (!measures) return;
|
3445
|
-
const groupId = measureGroup.id;
|
3446
|
-
const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, commonDimensions, measures, {
|
3447
|
-
foldMeasureId: FoldMeasureId,
|
3448
|
-
foldMeasureName: FoldMeasureName,
|
3449
|
-
foldMeasureValue: FoldMeasureValue + groupId,
|
3450
|
-
unfoldDimensionGroup: UnfoldDimensionGroup
|
3451
|
-
});
|
3452
|
-
const reshapeInfo = {
|
3453
|
-
id: groupId,
|
3454
|
-
index,
|
3455
|
-
foldInfo,
|
3456
|
-
unfoldInfo
|
3457
|
-
};
|
3458
|
-
newDatasets.push(newSubDataset);
|
3459
|
-
datasetReshapeInfo.push(reshapeInfo);
|
3460
|
-
});
|
3461
|
-
return {
|
3462
|
-
...result,
|
3463
|
-
dataset: newDatasets,
|
3464
|
-
datasetReshapeInfo: datasetReshapeInfo
|
3465
|
-
};
|
3466
|
-
};
|
3467
3315
|
const columnAdvancedPipeline = [
|
3468
3316
|
initAdvancedVSeed_initAdvancedVSeed,
|
3469
3317
|
autoMeasures_autoMeasures,
|
3470
3318
|
autoDimensions_autoDimensions,
|
3319
|
+
encodingForColumn,
|
3471
3320
|
pivotAdapter([
|
3472
|
-
|
3321
|
+
reshapeWithEncoding
|
3473
3322
|
], [
|
3474
|
-
|
3323
|
+
pivotReshapeWithEncoding
|
3475
3324
|
]),
|
3476
|
-
encodingXY,
|
3477
3325
|
sortXBandAxis,
|
3478
|
-
|
3326
|
+
sortLegend_sortLegend,
|
3479
3327
|
columnConfig,
|
3480
3328
|
theme_theme,
|
3481
3329
|
markStyle_markStyle,
|
@@ -3486,13 +3334,13 @@ const initColumn = (spec, context)=>{
|
|
3486
3334
|
...spec
|
3487
3335
|
};
|
3488
3336
|
const { advancedVSeed } = context;
|
3489
|
-
const {
|
3490
|
-
|
3337
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
3338
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
3491
3339
|
result.type = 'bar';
|
3492
3340
|
result.direction = 'vertical';
|
3493
|
-
result.xField =
|
3494
|
-
result.yField =
|
3495
|
-
result.seriesField =
|
3341
|
+
result.xField = unfoldInfo.encodingX;
|
3342
|
+
result.yField = foldInfo.measureValue;
|
3343
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
3496
3344
|
result.padding = 0;
|
3497
3345
|
result.region = [
|
3498
3346
|
{
|
@@ -3812,14 +3660,14 @@ const columnParallelAdvancedPipeline = [
|
|
3812
3660
|
initAdvancedVSeed_initAdvancedVSeed,
|
3813
3661
|
autoMeasures_autoMeasures,
|
3814
3662
|
autoDimensions_autoDimensions,
|
3663
|
+
encodingForColumn,
|
3815
3664
|
pivotAdapter([
|
3816
|
-
|
3665
|
+
reshapeWithEncoding
|
3817
3666
|
], [
|
3818
|
-
|
3667
|
+
pivotReshapeWithEncoding
|
3819
3668
|
]),
|
3820
|
-
encodingXY,
|
3821
3669
|
sortXBandAxis,
|
3822
|
-
|
3670
|
+
sortLegend_sortLegend,
|
3823
3671
|
columnParallelConfig,
|
3824
3672
|
theme_theme,
|
3825
3673
|
markStyle_markStyle,
|
@@ -3830,20 +3678,19 @@ const initColumnParallel = (spec, context)=>{
|
|
3830
3678
|
...spec
|
3831
3679
|
};
|
3832
3680
|
const { advancedVSeed } = context;
|
3833
|
-
const {
|
3834
|
-
const { unfoldInfo } = datasetReshapeInfo[0];
|
3835
|
-
if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
|
3681
|
+
const { datasetReshapeInfo, dimensions } = advancedVSeed;
|
3682
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
3836
3683
|
const sameDimensionsMode = dimensions.length > 1 && dimensions.every((dim)=>dim.id === dimensions[0].id);
|
3837
3684
|
result.type = 'bar';
|
3838
3685
|
result.direction = 'vertical';
|
3839
3686
|
result.xField = sameDimensionsMode ? [
|
3840
|
-
|
3687
|
+
unfoldInfo.encodingX
|
3841
3688
|
] : [
|
3842
|
-
|
3843
|
-
unfoldInfo.
|
3689
|
+
unfoldInfo.encodingX,
|
3690
|
+
unfoldInfo.encodingDetail
|
3844
3691
|
];
|
3845
|
-
result.yField =
|
3846
|
-
result.seriesField =
|
3692
|
+
result.yField = foldInfo.measureValue;
|
3693
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
3847
3694
|
result.padding = 0;
|
3848
3695
|
result.region = [
|
3849
3696
|
{
|
@@ -3910,14 +3757,14 @@ const columnPercentAdvancedPipeline = [
|
|
3910
3757
|
initAdvancedVSeed_initAdvancedVSeed,
|
3911
3758
|
autoMeasures_autoMeasures,
|
3912
3759
|
autoDimensions_autoDimensions,
|
3760
|
+
encodingForColumn,
|
3913
3761
|
pivotAdapter([
|
3914
|
-
|
3762
|
+
reshapeWithEncoding
|
3915
3763
|
], [
|
3916
|
-
|
3764
|
+
pivotReshapeWithEncoding
|
3917
3765
|
]),
|
3918
|
-
encodingXY,
|
3919
3766
|
sortXBandAxis,
|
3920
|
-
|
3767
|
+
sortLegend_sortLegend,
|
3921
3768
|
columnPercentConfig,
|
3922
3769
|
theme_theme,
|
3923
3770
|
markStyle_markStyle,
|
@@ -3987,55 +3834,76 @@ const registerColumnPercent = ()=>{
|
|
3987
3834
|
Builder._advancedPipelineMap.columnPercent = columnPercentAdvancedPipeline;
|
3988
3835
|
Builder._specPipelineMap.columnPercent = columnPercentSpecPipeline;
|
3989
3836
|
};
|
3990
|
-
const
|
3991
|
-
const
|
3992
|
-
|
3993
|
-
|
3994
|
-
const
|
3995
|
-
if (
|
3996
|
-
|
3997
|
-
|
3998
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
|
3999
|
-
const { foldInfo, unfoldInfo } = cur;
|
4000
|
-
const y = [
|
4001
|
-
isZeroDimension ? foldInfo.measureName : yDimension?.id
|
4002
|
-
];
|
4003
|
-
const x = [
|
4004
|
-
foldInfo.measureValue
|
4005
|
-
];
|
4006
|
-
const group = [
|
4007
|
-
unfoldInfo.groupId
|
3837
|
+
const encodingForBar = (advancedVSeed, context)=>{
|
3838
|
+
const { vseed } = context;
|
3839
|
+
const { dimensions } = advancedVSeed;
|
3840
|
+
if (!dimensions) return advancedVSeed;
|
3841
|
+
const encoding = vseed.encoding;
|
3842
|
+
if (encoding) {
|
3843
|
+
const y = encoding.y || [
|
3844
|
+
dimensions[0].id
|
4008
3845
|
];
|
4009
|
-
const color = [
|
4010
|
-
|
3846
|
+
const color = encoding.color || [
|
3847
|
+
(dimensions[1] || dimensions[0]).id
|
4011
3848
|
];
|
4012
|
-
|
4013
|
-
|
4014
|
-
|
4015
|
-
|
3849
|
+
const detail = encoding.detail || [];
|
3850
|
+
const mergedDetail = unique([
|
3851
|
+
...color,
|
3852
|
+
...detail
|
3853
|
+
]);
|
3854
|
+
return {
|
3855
|
+
...advancedVSeed,
|
3856
|
+
encoding: {
|
3857
|
+
...encoding,
|
4016
3858
|
y,
|
4017
|
-
|
4018
|
-
|
3859
|
+
color,
|
3860
|
+
detail: mergedDetail
|
4019
3861
|
}
|
4020
|
-
|
4021
|
-
}
|
3862
|
+
};
|
3863
|
+
}
|
3864
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
3865
|
+
const mergedEncoding = {
|
3866
|
+
y: dimensions.slice(0, 1).map((item)=>item.id),
|
3867
|
+
color: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
3868
|
+
detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
3869
|
+
tooltip: dimensions.map((item)=>item.id),
|
3870
|
+
label: [],
|
3871
|
+
row: [],
|
3872
|
+
column: []
|
3873
|
+
};
|
4022
3874
|
return {
|
4023
|
-
...
|
4024
|
-
encoding
|
3875
|
+
...advancedVSeed,
|
3876
|
+
encoding: mergedEncoding
|
4025
3877
|
};
|
4026
3878
|
};
|
4027
|
-
const
|
4028
|
-
|
4029
|
-
|
4030
|
-
|
4031
|
-
|
4032
|
-
|
4033
|
-
|
4034
|
-
|
4035
|
-
|
4036
|
-
|
4037
|
-
|
4038
|
-
|
3879
|
+
const sortYBandAxis = (advancedVSeed, context)=>{
|
3880
|
+
const result = {
|
3881
|
+
...advancedVSeed
|
3882
|
+
};
|
3883
|
+
const { vseed } = context;
|
3884
|
+
const { sort: sortAxis } = vseed;
|
3885
|
+
const { datasetReshapeInfo, dataset } = advancedVSeed;
|
3886
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
3887
|
+
const yField = unfoldInfo?.encodingY;
|
3888
|
+
if (!sortAxis || !yField) return advancedVSeed;
|
3889
|
+
if (!result.analysis) result.analysis = {};
|
3890
|
+
if (!result.analysis.orderMapping) result.analysis.orderMapping = {};
|
3891
|
+
const axisOrderResult = calcOrder(sortAxis, yField, dataset.flat(2));
|
3892
|
+
result.analysis.orderMapping[yField] = axisOrderResult;
|
3893
|
+
return result;
|
3894
|
+
};
|
3895
|
+
const barAdvancedPipeline = [
|
3896
|
+
initAdvancedVSeed_initAdvancedVSeed,
|
3897
|
+
autoMeasures_autoMeasures,
|
3898
|
+
autoDimensions_autoDimensions,
|
3899
|
+
encodingForBar,
|
3900
|
+
pivotAdapter([
|
3901
|
+
reshapeWithEncoding
|
3902
|
+
], [
|
3903
|
+
pivotReshapeWithEncoding
|
3904
|
+
]),
|
3905
|
+
sortYBandAxis,
|
3906
|
+
sortLegend_sortLegend,
|
4039
3907
|
barConfig,
|
4040
3908
|
theme_theme,
|
4041
3909
|
markStyle_markStyle,
|
@@ -4046,13 +3914,13 @@ const initBar = (spec, context)=>{
|
|
4046
3914
|
...spec
|
4047
3915
|
};
|
4048
3916
|
const { advancedVSeed } = context;
|
4049
|
-
const {
|
4050
|
-
|
3917
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
3918
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
4051
3919
|
result.type = 'bar';
|
4052
3920
|
result.direction = 'horizontal';
|
4053
|
-
result.yField =
|
4054
|
-
result.xField =
|
4055
|
-
result.seriesField =
|
3921
|
+
result.yField = unfoldInfo.encodingY;
|
3922
|
+
result.xField = foldInfo.measureValue;
|
3923
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
4056
3924
|
result.padding = 0;
|
4057
3925
|
result.region = [
|
4058
3926
|
{
|
@@ -4064,11 +3932,12 @@ const initBar = (spec, context)=>{
|
|
4064
3932
|
};
|
4065
3933
|
const datasetYX = (spec, context)=>{
|
4066
3934
|
const { advancedVSeed, vseed } = context;
|
4067
|
-
const {
|
3935
|
+
const { analysis, datasetReshapeInfo } = advancedVSeed;
|
3936
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
4068
3937
|
const orderMapping = analysis?.orderMapping || {};
|
4069
|
-
const angle =
|
4070
|
-
const y =
|
4071
|
-
const
|
3938
|
+
const angle = unfoldInfo.encodingAngle;
|
3939
|
+
const y = unfoldInfo.encodingY;
|
3940
|
+
const colorId = unfoldInfo.encodingColorId;
|
4072
3941
|
const id = datasetReshapeInfo[0].id;
|
4073
3942
|
const fields = {};
|
4074
3943
|
if (angle) fields[angle] = {
|
@@ -4085,14 +3954,14 @@ const datasetYX = (spec, context)=>{
|
|
4085
3954
|
sortIndex: 0
|
4086
3955
|
};
|
4087
3956
|
}
|
4088
|
-
if (
|
4089
|
-
const order = orderMapping[
|
4090
|
-
if (order) fields[
|
3957
|
+
if (colorId) {
|
3958
|
+
const order = orderMapping[colorId];
|
3959
|
+
if (order) fields[colorId] = {
|
4091
3960
|
sortIndex: 0,
|
4092
3961
|
domain: order,
|
4093
3962
|
lockStatisticsByDomain: true
|
4094
3963
|
};
|
4095
|
-
else fields[
|
3964
|
+
else fields[colorId] = {
|
4096
3965
|
sortIndex: 0
|
4097
3966
|
};
|
4098
3967
|
}
|
@@ -4380,14 +4249,14 @@ const barParallelAdvancedPipeline = [
|
|
4380
4249
|
initAdvancedVSeed_initAdvancedVSeed,
|
4381
4250
|
autoMeasures_autoMeasures,
|
4382
4251
|
autoDimensions_autoDimensions,
|
4252
|
+
encodingForBar,
|
4383
4253
|
pivotAdapter([
|
4384
|
-
|
4254
|
+
reshapeWithEncoding
|
4385
4255
|
], [
|
4386
|
-
|
4256
|
+
pivotReshapeWithEncoding
|
4387
4257
|
]),
|
4388
|
-
encodingYX,
|
4389
4258
|
sortYBandAxis,
|
4390
|
-
|
4259
|
+
sortLegend_sortLegend,
|
4391
4260
|
barParallelConfig,
|
4392
4261
|
theme_theme,
|
4393
4262
|
markStyle_markStyle,
|
@@ -4398,20 +4267,19 @@ const initBarParallel = (spec, context)=>{
|
|
4398
4267
|
...spec
|
4399
4268
|
};
|
4400
4269
|
const { advancedVSeed } = context;
|
4401
|
-
const {
|
4402
|
-
const { unfoldInfo } = datasetReshapeInfo[0];
|
4403
|
-
if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
|
4270
|
+
const { datasetReshapeInfo, dimensions } = advancedVSeed;
|
4271
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
4404
4272
|
const sameDimensionsMode = dimensions.length > 1 && dimensions.every((dim)=>dim.id === dimensions[0].id);
|
4405
4273
|
result.type = 'bar';
|
4406
4274
|
result.direction = 'horizontal';
|
4407
4275
|
result.yField = sameDimensionsMode ? [
|
4408
|
-
|
4276
|
+
unfoldInfo.encodingY
|
4409
4277
|
] : [
|
4410
|
-
|
4411
|
-
unfoldInfo.
|
4278
|
+
unfoldInfo.encodingY,
|
4279
|
+
unfoldInfo.encodingDetail
|
4412
4280
|
];
|
4413
|
-
result.xField =
|
4414
|
-
result.seriesField =
|
4281
|
+
result.xField = foldInfo.measureValue;
|
4282
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
4415
4283
|
result.padding = 0;
|
4416
4284
|
result.region = [
|
4417
4285
|
{
|
@@ -4477,14 +4345,14 @@ const barPercentAdvancedPipeline = [
|
|
4477
4345
|
initAdvancedVSeed_initAdvancedVSeed,
|
4478
4346
|
autoMeasures_autoMeasures,
|
4479
4347
|
autoDimensions_autoDimensions,
|
4348
|
+
encodingForBar,
|
4480
4349
|
pivotAdapter([
|
4481
|
-
|
4350
|
+
reshapeWithEncoding
|
4482
4351
|
], [
|
4483
|
-
|
4352
|
+
pivotReshapeWithEncoding
|
4484
4353
|
]),
|
4485
|
-
encodingYX,
|
4486
4354
|
sortYBandAxis,
|
4487
|
-
|
4355
|
+
sortLegend_sortLegend,
|
4488
4356
|
barPercentConfig,
|
4489
4357
|
theme_theme,
|
4490
4358
|
markStyle_markStyle,
|
@@ -4548,14 +4416,14 @@ const areaAdvancedPipeline = [
|
|
4548
4416
|
initAdvancedVSeed_initAdvancedVSeed,
|
4549
4417
|
autoMeasures_autoMeasures,
|
4550
4418
|
autoDimensions_autoDimensions,
|
4419
|
+
encodingForColumn,
|
4551
4420
|
pivotAdapter([
|
4552
|
-
|
4421
|
+
reshapeWithEncoding
|
4553
4422
|
], [
|
4554
|
-
|
4423
|
+
pivotReshapeWithEncoding
|
4555
4424
|
]),
|
4556
|
-
encodingXY,
|
4557
4425
|
sortXBandAxis,
|
4558
|
-
|
4426
|
+
sortLegend_sortLegend,
|
4559
4427
|
areaConfig,
|
4560
4428
|
theme_theme,
|
4561
4429
|
markStyle_markStyle,
|
@@ -4566,13 +4434,13 @@ const initArea = (spec, context)=>{
|
|
4566
4434
|
...spec
|
4567
4435
|
};
|
4568
4436
|
const { advancedVSeed } = context;
|
4569
|
-
const {
|
4570
|
-
|
4437
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
4438
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
4571
4439
|
result.type = 'area';
|
4572
4440
|
result.direction = 'vertical';
|
4573
|
-
result.
|
4574
|
-
result.
|
4575
|
-
result.seriesField =
|
4441
|
+
result.yField = foldInfo.measureValue;
|
4442
|
+
result.xField = unfoldInfo.encodingX;
|
4443
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
4576
4444
|
result.padding = 0;
|
4577
4445
|
result.region = [
|
4578
4446
|
{
|
@@ -4584,8 +4452,9 @@ const initArea = (spec, context)=>{
|
|
4584
4452
|
};
|
4585
4453
|
const areaStyle_areaStyle = (spec, context)=>{
|
4586
4454
|
const { advancedVSeed } = context;
|
4587
|
-
const { markStyle,
|
4455
|
+
const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed;
|
4588
4456
|
const { areaStyle } = markStyle;
|
4457
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
4589
4458
|
if (!areaStyle) return {
|
4590
4459
|
...spec,
|
4591
4460
|
area: {
|
@@ -4598,7 +4467,7 @@ const areaStyle_areaStyle = (spec, context)=>{
|
|
4598
4467
|
const areaStyles = Array.isArray(areaStyle) ? areaStyle : [
|
4599
4468
|
areaStyle
|
4600
4469
|
];
|
4601
|
-
const group =
|
4470
|
+
const group = unfoldInfo.encodingColorId;
|
4602
4471
|
const areaGroups = groupBy(dataset, (d)=>d[group ?? '']);
|
4603
4472
|
const customMap = areaStyles.reduce((result, style, index)=>{
|
4604
4473
|
const { areaColor, areaColorOpacity, areaVisible = true } = style;
|
@@ -4692,14 +4561,14 @@ const areaPercentAdvancedPipeline = [
|
|
4692
4561
|
initAdvancedVSeed_initAdvancedVSeed,
|
4693
4562
|
autoMeasures_autoMeasures,
|
4694
4563
|
autoDimensions_autoDimensions,
|
4564
|
+
encodingForColumn,
|
4695
4565
|
pivotAdapter([
|
4696
|
-
|
4566
|
+
reshapeWithEncoding
|
4697
4567
|
], [
|
4698
|
-
|
4568
|
+
pivotReshapeWithEncoding
|
4699
4569
|
]),
|
4700
|
-
encodingXY,
|
4701
4570
|
sortXBandAxis,
|
4702
|
-
|
4571
|
+
sortLegend_sortLegend,
|
4703
4572
|
areaPercentConfig,
|
4704
4573
|
theme_theme,
|
4705
4574
|
markStyle_markStyle,
|
@@ -4764,16 +4633,20 @@ const registerAreaPercent = ()=>{
|
|
4764
4633
|
Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
|
4765
4634
|
Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
|
4766
4635
|
};
|
4767
|
-
const
|
4636
|
+
const autoScatterMeasures = (advancedVSeed, context)=>{
|
4768
4637
|
const result = {
|
4769
4638
|
...advancedVSeed
|
4770
4639
|
};
|
4771
4640
|
const { vseed } = context;
|
4772
|
-
const {
|
4641
|
+
const { dataset, scatterMeasures, measures } = vseed;
|
4773
4642
|
if (!dataset) throw new Error('dataset is required');
|
4774
4643
|
if (0 === dataset.length) return result;
|
4775
|
-
if (
|
4776
|
-
result.measures =
|
4644
|
+
if (scatterMeasures) {
|
4645
|
+
result.measures = scatterMeasuresToMeasureTree(scatterMeasures);
|
4646
|
+
return result;
|
4647
|
+
}
|
4648
|
+
if (measures && measureDepth(measures) > 1) {
|
4649
|
+
result.measures = measures;
|
4777
4650
|
return result;
|
4778
4651
|
}
|
4779
4652
|
const top100dataset = dataset.slice(0, 100);
|
@@ -4781,7 +4654,7 @@ const autoMeasuresBy2M1Group = (advancedVSeed, context)=>{
|
|
4781
4654
|
...prev,
|
4782
4655
|
...cur
|
4783
4656
|
}), {});
|
4784
|
-
const newMeasures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
|
4657
|
+
const newMeasures = measures || Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
|
4785
4658
|
'',
|
4786
4659
|
null,
|
4787
4660
|
void 0
|
@@ -4789,689 +4662,276 @@ const autoMeasuresBy2M1Group = (advancedVSeed, context)=>{
|
|
4789
4662
|
id: measure,
|
4790
4663
|
alias: measure
|
4791
4664
|
}));
|
4792
|
-
result.measures =
|
4665
|
+
if (0 === newMeasures.length) result.measures = [];
|
4666
|
+
else if (1 === newMeasures.length) result.measures = [
|
4667
|
+
{
|
4668
|
+
id: 'primary',
|
4669
|
+
alias: 'primary',
|
4670
|
+
children: newMeasures
|
4671
|
+
}
|
4672
|
+
];
|
4673
|
+
else if (newMeasures.length > 1) result.measures = [
|
4674
|
+
{
|
4675
|
+
id: 'primary',
|
4676
|
+
alias: 'primary',
|
4677
|
+
children: newMeasures.slice(0, 1)
|
4678
|
+
},
|
4679
|
+
{
|
4680
|
+
id: 'secondary',
|
4681
|
+
alias: 'secondary',
|
4682
|
+
children: newMeasures.slice(1)
|
4683
|
+
}
|
4684
|
+
];
|
4793
4685
|
return result;
|
4794
4686
|
};
|
4795
|
-
const
|
4796
|
-
const
|
4797
|
-
|
4798
|
-
|
4799
|
-
|
4800
|
-
|
4801
|
-
|
4802
|
-
|
4803
|
-
|
4804
|
-
|
4805
|
-
|
4806
|
-
|
4807
|
-
|
4808
|
-
|
4809
|
-
|
4810
|
-
|
4687
|
+
const scatterMeasuresToMeasureTree = (scatterMeasures)=>{
|
4688
|
+
const measureTree = scatterMeasures.map((item, index)=>{
|
4689
|
+
const { xMeasures, yMeasures } = item;
|
4690
|
+
const groupChildren = [];
|
4691
|
+
let id = '';
|
4692
|
+
if (xMeasures) {
|
4693
|
+
const arrXMeasures = Array.isArray(xMeasures) ? xMeasures : [
|
4694
|
+
xMeasures
|
4695
|
+
];
|
4696
|
+
const alias = arrXMeasures.map((item)=>item.alias || item.id).toString();
|
4697
|
+
id += alias;
|
4698
|
+
groupChildren.push({
|
4699
|
+
id: `${index}-x`,
|
4700
|
+
alias: arrXMeasures.map((item)=>item.alias || item.id).toString(),
|
4701
|
+
children: arrXMeasures
|
4702
|
+
});
|
4703
|
+
}
|
4704
|
+
if (yMeasures) {
|
4705
|
+
const arrYMeasures = Array.isArray(yMeasures) ? yMeasures : [
|
4706
|
+
yMeasures
|
4707
|
+
];
|
4708
|
+
const alias = arrYMeasures.map((item)=>item.alias || item.id).toString();
|
4709
|
+
id += alias;
|
4710
|
+
groupChildren.push({
|
4711
|
+
id: `${index}-y`,
|
4712
|
+
alias: arrYMeasures.map((item)=>item.alias || item.id).toString(),
|
4713
|
+
children: arrYMeasures
|
4714
|
+
});
|
4715
|
+
}
|
4716
|
+
return {
|
4717
|
+
id,
|
4718
|
+
alias: id,
|
4719
|
+
children: groupChildren
|
4720
|
+
};
|
4811
4721
|
});
|
4812
|
-
|
4813
|
-
|
4814
|
-
foldInfo: {
|
4815
|
-
foldMap: {},
|
4816
|
-
measureId: '',
|
4817
|
-
measureName: '',
|
4818
|
-
measureValue: ''
|
4819
|
-
},
|
4820
|
-
unfoldInfo: {
|
4821
|
-
groupName: '',
|
4822
|
-
groupId: '',
|
4823
|
-
colorItems: [],
|
4824
|
-
colorIdMap: {}
|
4825
|
-
}
|
4722
|
+
if (1 === scatterMeasures.length) return measureTree[0].children || [];
|
4723
|
+
return measureTree;
|
4826
4724
|
};
|
4827
|
-
const
|
4828
|
-
const {
|
4829
|
-
|
4830
|
-
if (
|
4831
|
-
|
4725
|
+
const encodingForScatter = (advancedVSeed, context)=>{
|
4726
|
+
const { vseed } = context;
|
4727
|
+
const { dimensions } = advancedVSeed;
|
4728
|
+
if (!dimensions) return advancedVSeed;
|
4729
|
+
const encoding = vseed.encoding;
|
4730
|
+
if (encoding) {
|
4731
|
+
const detail = encoding.detail || [];
|
4732
|
+
const color = encoding.color || [
|
4733
|
+
(dimensions[1] || dimensions[0]).id
|
4734
|
+
];
|
4735
|
+
const mergedDetail = unique([
|
4736
|
+
...color,
|
4737
|
+
...detail
|
4738
|
+
]);
|
4832
4739
|
return {
|
4833
|
-
|
4834
|
-
|
4835
|
-
|
4836
|
-
|
4837
|
-
|
4838
|
-
measureValue: foldMeasureValue
|
4839
|
-
},
|
4840
|
-
unfoldInfo
|
4841
|
-
};
|
4842
|
-
}
|
4843
|
-
{
|
4844
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(dataset, [
|
4845
|
-
...dimensions
|
4846
|
-
], [
|
4847
|
-
{
|
4848
|
-
id: foldMeasureValue,
|
4849
|
-
alias: i18n`指标值`
|
4740
|
+
...advancedVSeed,
|
4741
|
+
encoding: {
|
4742
|
+
...encoding,
|
4743
|
+
color,
|
4744
|
+
detail: mergedDetail
|
4850
4745
|
}
|
4851
|
-
], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
4852
|
-
return {
|
4853
|
-
dataset: finalDataset,
|
4854
|
-
foldInfo: {
|
4855
|
-
foldMap: {},
|
4856
|
-
measureId: foldMeasureId,
|
4857
|
-
measureName: foldMeasureName,
|
4858
|
-
measureValue: foldMeasureValue
|
4859
|
-
},
|
4860
|
-
unfoldInfo
|
4861
4746
|
};
|
4862
4747
|
}
|
4748
|
+
const dimensionsWithoutMeasureName = dimensions.filter((item)=>item.id !== MeasureName);
|
4749
|
+
const mergedEncoding = {
|
4750
|
+
color: dimensions.slice(0).map((item)=>item.id),
|
4751
|
+
detail: dimensionsWithoutMeasureName.slice(0).map((item)=>item.id),
|
4752
|
+
tooltip: dimensionsWithoutMeasureName.map((item)=>item.id),
|
4753
|
+
label: [],
|
4754
|
+
row: [],
|
4755
|
+
column: []
|
4756
|
+
};
|
4757
|
+
return {
|
4758
|
+
...advancedVSeed,
|
4759
|
+
encoding: mergedEncoding
|
4760
|
+
};
|
4863
4761
|
};
|
4864
|
-
const
|
4762
|
+
const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
4865
4763
|
const result = {
|
4866
4764
|
...advancedVSeed
|
4867
4765
|
};
|
4868
4766
|
const { vseed } = context;
|
4869
4767
|
const { dataset } = vseed;
|
4870
|
-
const { dimensions, measures } = advancedVSeed;
|
4871
|
-
if (!measures || !dimensions || !dataset) return result;
|
4768
|
+
const { dimensions, measures, encoding, chartType } = advancedVSeed;
|
4769
|
+
if (!measures || !dimensions || !dataset || !encoding) return result;
|
4872
4770
|
if (0 === measures.length) throw new Error('measures can not be empty');
|
4873
|
-
|
4771
|
+
if (measures.length > 2) throw new Error('measures can not be more than 2');
|
4772
|
+
const foldInfoList = [];
|
4773
|
+
const unfoldInfoList = [];
|
4774
|
+
const datasets = [];
|
4775
|
+
const xMeasures = measures[0];
|
4776
|
+
const yMeasures = measures[1] || xMeasures;
|
4777
|
+
if (xMeasures && xMeasures.children) {
|
4778
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
|
4779
|
+
foldMeasureValue: FoldXMeasureValue,
|
4780
|
+
colorItemAsId: true
|
4781
|
+
});
|
4782
|
+
datasets.push(newDataset);
|
4783
|
+
foldInfoList.push(foldInfo);
|
4784
|
+
unfoldInfoList.push(unfoldInfo);
|
4785
|
+
}
|
4786
|
+
if (yMeasures && yMeasures.children) {
|
4787
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(datasets[0], dimensions, yMeasures.children, encoding, {
|
4788
|
+
foldMeasureValue: FoldYMeasureValue,
|
4789
|
+
colorItemAsId: true
|
4790
|
+
});
|
4791
|
+
datasets[0] = newDataset;
|
4792
|
+
foldInfoList.push(foldInfo);
|
4793
|
+
unfoldInfoList.push(unfoldInfo);
|
4794
|
+
}
|
4795
|
+
const unfoldInfo = {
|
4796
|
+
...unfoldInfoList[0],
|
4797
|
+
colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
|
4798
|
+
colorIdMap: unfoldInfoList.reduce((prev, cur)=>({
|
4799
|
+
...prev,
|
4800
|
+
...cur.colorIdMap
|
4801
|
+
}), {})
|
4802
|
+
};
|
4874
4803
|
return {
|
4875
4804
|
...result,
|
4876
|
-
dataset:
|
4805
|
+
dataset: datasets[0],
|
4877
4806
|
datasetReshapeInfo: [
|
4878
4807
|
{
|
4879
|
-
id:
|
4808
|
+
id: String(chartType),
|
4880
4809
|
index: 0,
|
4881
|
-
foldInfo,
|
4882
|
-
|
4810
|
+
foldInfo: foldInfoList[0],
|
4811
|
+
foldInfoList: foldInfoList,
|
4812
|
+
unfoldInfo: unfoldInfo
|
4883
4813
|
}
|
4884
4814
|
]
|
4885
4815
|
};
|
4886
4816
|
};
|
4887
|
-
const
|
4817
|
+
const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
4888
4818
|
const result = {
|
4889
4819
|
...advancedVSeed
|
4890
4820
|
};
|
4891
4821
|
const { vseed } = context;
|
4892
4822
|
const { dataset } = vseed;
|
4893
|
-
const { measures } = advancedVSeed;
|
4894
|
-
|
4895
|
-
if (!measures || !dimensions) return result;
|
4823
|
+
const { dimensions, measures, encoding, chartType } = advancedVSeed;
|
4824
|
+
if (!measures || !dimensions || !dataset || !encoding) return result;
|
4896
4825
|
const measureGroups = [];
|
4897
|
-
|
4898
|
-
|
4826
|
+
const depth = measureDepth(measures);
|
4827
|
+
if (3 === depth) measures.forEach((measure)=>{
|
4828
|
+
measureGroups.push(measure.children);
|
4899
4829
|
});
|
4900
|
-
|
4830
|
+
else if (2 === depth) measureGroups.push(measures);
|
4831
|
+
const datasetList = [];
|
4901
4832
|
const datasetReshapeInfo = [];
|
4902
|
-
measureGroups.forEach((
|
4903
|
-
|
4904
|
-
if (
|
4905
|
-
const
|
4906
|
-
const
|
4907
|
-
const
|
4908
|
-
|
4909
|
-
|
4910
|
-
|
4911
|
-
|
4912
|
-
|
4833
|
+
measureGroups.forEach((measures, index)=>{
|
4834
|
+
if (0 === measures.length) throw new Error('measures can not be empty');
|
4835
|
+
if (measures.length > 2) throw new Error('measures can not be more than 2');
|
4836
|
+
const foldInfoList = [];
|
4837
|
+
const unfoldInfoList = [];
|
4838
|
+
const datasets = [];
|
4839
|
+
const xMeasures = measures[0];
|
4840
|
+
const yMeasures = measures[1] || xMeasures;
|
4841
|
+
if (xMeasures && xMeasures.children) {
|
4842
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
|
4843
|
+
foldMeasureValue: `${FoldXMeasureValue}${index}`,
|
4844
|
+
colorItemAsId: true
|
4845
|
+
});
|
4846
|
+
datasets.push(newDataset);
|
4847
|
+
foldInfoList.push(foldInfo);
|
4848
|
+
unfoldInfoList.push(unfoldInfo);
|
4849
|
+
}
|
4850
|
+
if (yMeasures && yMeasures.children) {
|
4851
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, yMeasures.children, encoding, {
|
4852
|
+
foldMeasureValue: `${FoldYMeasureValue}${index}`,
|
4853
|
+
colorItemAsId: true
|
4854
|
+
});
|
4855
|
+
datasets.push(newDataset);
|
4856
|
+
foldInfoList.push(foldInfo);
|
4857
|
+
unfoldInfoList.push(unfoldInfo);
|
4858
|
+
}
|
4859
|
+
const unfoldInfo = {
|
4860
|
+
...unfoldInfoList[0],
|
4861
|
+
colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
|
4862
|
+
colorIdMap: unfoldInfoList.reduce((prev, cur)=>({
|
4863
|
+
...prev,
|
4864
|
+
...cur.colorIdMap
|
4865
|
+
}), {})
|
4866
|
+
};
|
4913
4867
|
const reshapeInfo = {
|
4914
|
-
id:
|
4868
|
+
id: `${chartType}-${index}`,
|
4915
4869
|
index,
|
4916
|
-
foldInfo,
|
4917
|
-
|
4870
|
+
foldInfo: foldInfoList[0],
|
4871
|
+
foldInfoList: foldInfoList,
|
4872
|
+
unfoldInfo: unfoldInfo
|
4918
4873
|
};
|
4919
|
-
newDatasets.push(newSubDataset);
|
4920
4874
|
datasetReshapeInfo.push(reshapeInfo);
|
4875
|
+
datasetList.push(datasets[0].map((d, index)=>({
|
4876
|
+
...d,
|
4877
|
+
...datasets[1]?.[index] || {}
|
4878
|
+
})));
|
4921
4879
|
});
|
4922
4880
|
return {
|
4923
4881
|
...result,
|
4924
|
-
dataset:
|
4882
|
+
dataset: datasetList,
|
4925
4883
|
datasetReshapeInfo: datasetReshapeInfo
|
4926
4884
|
};
|
4927
4885
|
};
|
4928
|
-
const
|
4929
|
-
const result = {
|
4930
|
-
...advancedVSeed
|
4931
|
-
};
|
4932
|
-
const { datasetReshapeInfo, measures } = advancedVSeed;
|
4933
|
-
if (!datasetReshapeInfo || !measures) return result;
|
4934
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur, index)=>{
|
4935
|
-
const measure = measures[index];
|
4936
|
-
if ('children' in measure) {
|
4937
|
-
const m1 = measure.children?.[0];
|
4938
|
-
const m2 = measure.children?.[1] || m1;
|
4939
|
-
const { foldInfo, unfoldInfo } = cur;
|
4940
|
-
const x = [
|
4941
|
-
unfoldInfo.groupId
|
4942
|
-
];
|
4943
|
-
const y = [
|
4944
|
-
m1?.id,
|
4945
|
-
m2?.id
|
4946
|
-
];
|
4947
|
-
const group = [
|
4948
|
-
unfoldInfo.groupId
|
4949
|
-
];
|
4950
|
-
const color = [
|
4951
|
-
foldInfo.measureName
|
4952
|
-
];
|
4953
|
-
return [
|
4954
|
-
...prev,
|
4955
|
-
{
|
4956
|
-
x,
|
4957
|
-
y,
|
4958
|
-
group,
|
4959
|
-
color
|
4960
|
-
}
|
4961
|
-
];
|
4962
|
-
}
|
4963
|
-
{
|
4964
|
-
const m1 = measures[index];
|
4965
|
-
const m2 = measures[index + 1] || m1;
|
4966
|
-
const { foldInfo, unfoldInfo } = cur;
|
4967
|
-
const x = [
|
4968
|
-
unfoldInfo.groupId
|
4969
|
-
];
|
4970
|
-
const y = [
|
4971
|
-
m1.id,
|
4972
|
-
m2.id
|
4973
|
-
];
|
4974
|
-
const group = [
|
4975
|
-
unfoldInfo.groupId
|
4976
|
-
];
|
4977
|
-
const color = [
|
4978
|
-
foldInfo.measureName
|
4979
|
-
];
|
4980
|
-
return [
|
4981
|
-
...prev,
|
4982
|
-
{
|
4983
|
-
x,
|
4984
|
-
y,
|
4985
|
-
group,
|
4986
|
-
color
|
4987
|
-
}
|
4988
|
-
];
|
4989
|
-
}
|
4990
|
-
}, []);
|
4991
|
-
return {
|
4992
|
-
...result,
|
4993
|
-
encoding
|
4994
|
-
};
|
4995
|
-
};
|
4996
|
-
const areaRangeAdvancedPipeline = [
|
4886
|
+
const scatterAdvancedPipeline = [
|
4997
4887
|
initAdvancedVSeed_initAdvancedVSeed,
|
4998
|
-
|
4888
|
+
autoScatterMeasures,
|
4999
4889
|
autoDimensions_autoDimensions,
|
4890
|
+
encodingForScatter,
|
5000
4891
|
pivotAdapter([
|
5001
|
-
|
4892
|
+
reshapeWithScatterEncoding
|
5002
4893
|
], [
|
5003
|
-
|
4894
|
+
pivotReshapeWithScatterEncoding
|
5004
4895
|
]),
|
5005
|
-
|
5006
|
-
sortXBandAxis,
|
5007
|
-
areaConfig,
|
4896
|
+
scatterConfig,
|
5008
4897
|
theme_theme,
|
5009
4898
|
markStyle_markStyle,
|
5010
4899
|
annotation_annotation
|
5011
4900
|
];
|
5012
|
-
const
|
5013
|
-
const result = {
|
5014
|
-
type: 'common',
|
5015
|
-
padding: 0,
|
5016
|
-
region: [
|
5017
|
-
{
|
5018
|
-
clip: true
|
5019
|
-
}
|
5020
|
-
]
|
5021
|
-
};
|
5022
|
-
return (_, context)=>{
|
5023
|
-
result.series = args.map((pipeline)=>execPipeline(pipeline, context, {}));
|
5024
|
-
return result;
|
5025
|
-
};
|
5026
|
-
};
|
5027
|
-
const seriesDualAxis = (...args)=>{
|
5028
|
-
const result = {
|
5029
|
-
type: 'common',
|
5030
|
-
padding: 0,
|
5031
|
-
region: [
|
5032
|
-
{
|
5033
|
-
clip: true
|
5034
|
-
}
|
5035
|
-
]
|
5036
|
-
};
|
5037
|
-
const createDualContext = (context, index)=>{
|
5038
|
-
const { advancedVSeed } = context;
|
5039
|
-
const dataset = advancedVSeed.dataset[index];
|
5040
|
-
return {
|
5041
|
-
...context,
|
5042
|
-
advancedVSeed: {
|
5043
|
-
...advancedVSeed,
|
5044
|
-
dataset: dataset
|
5045
|
-
}
|
5046
|
-
};
|
5047
|
-
};
|
5048
|
-
return (_, context)=>{
|
5049
|
-
result.series = args.map((pipeline, index)=>{
|
5050
|
-
const seriesContext = createDualContext(context, index);
|
5051
|
-
return execPipeline(pipeline, seriesContext, {});
|
5052
|
-
});
|
5053
|
-
return result;
|
5054
|
-
};
|
5055
|
-
};
|
5056
|
-
const initAreaRange = (spec, context)=>{
|
4901
|
+
const initScatter = (spec, context)=>{
|
5057
4902
|
const result = {
|
5058
4903
|
...spec
|
5059
4904
|
};
|
5060
4905
|
const { advancedVSeed } = context;
|
5061
|
-
const {
|
5062
|
-
|
5063
|
-
|
5064
|
-
result.type = 'rangeArea';
|
4906
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
4907
|
+
const { unfoldInfo, foldInfoList } = datasetReshapeInfo[0];
|
4908
|
+
result.type = 'scatter';
|
5065
4909
|
result.direction = 'vertical';
|
5066
|
-
result.
|
5067
|
-
result.
|
5068
|
-
result.
|
5069
|
-
|
5070
|
-
|
4910
|
+
result.xField = foldInfoList?.[0].measureValue;
|
4911
|
+
if (foldInfoList?.[1]) result.yField = foldInfoList[1].measureValue;
|
4912
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
4913
|
+
result.padding = 0;
|
4914
|
+
result.region = [
|
4915
|
+
{
|
4916
|
+
clip: true
|
4917
|
+
}
|
5071
4918
|
];
|
5072
4919
|
result.animation = true;
|
5073
|
-
result.area = {
|
5074
|
-
style: {
|
5075
|
-
fill: color.colorScheme?.[0]
|
5076
|
-
}
|
5077
|
-
};
|
5078
4920
|
return result;
|
5079
4921
|
};
|
5080
|
-
const
|
5081
|
-
const
|
5082
|
-
|
5083
|
-
|
5084
|
-
const
|
5085
|
-
const { encoding } = advancedVSeed;
|
5086
|
-
if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
|
5087
|
-
const { color } = advancedVSeed.config.areaRange;
|
5088
|
-
result.type = 'line';
|
5089
|
-
result.direction = 'vertical';
|
5090
|
-
result.stack = false;
|
5091
|
-
result.xField = encoding[0].x[0];
|
5092
|
-
result.yField = [
|
5093
|
-
encoding[0].y[0]
|
5094
|
-
];
|
5095
|
-
result.animation = true;
|
5096
|
-
result.line = {
|
5097
|
-
style: {
|
5098
|
-
stroke: color.colorScheme?.[0]
|
5099
|
-
}
|
5100
|
-
};
|
5101
|
-
result.point = {
|
5102
|
-
style: {
|
5103
|
-
visible: false,
|
5104
|
-
fill: color.colorScheme?.[0]
|
5105
|
-
}
|
5106
|
-
};
|
5107
|
-
return result;
|
5108
|
-
};
|
5109
|
-
const initAreaRangeLine2 = (spec, context)=>{
|
5110
|
-
const result = {
|
5111
|
-
...spec
|
5112
|
-
};
|
5113
|
-
const { advancedVSeed } = context;
|
5114
|
-
const { encoding } = advancedVSeed;
|
5115
|
-
if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
|
5116
|
-
const { color } = advancedVSeed.config.areaRange;
|
5117
|
-
result.type = 'line';
|
5118
|
-
result.direction = 'vertical';
|
5119
|
-
result.stack = false;
|
5120
|
-
result.xField = encoding[0].x[0];
|
5121
|
-
result.yField = [
|
5122
|
-
encoding[0].y[1]
|
5123
|
-
];
|
5124
|
-
result.animation = true;
|
5125
|
-
result.line = {
|
5126
|
-
style: {
|
5127
|
-
stroke: color.colorScheme?.[0]
|
5128
|
-
}
|
5129
|
-
};
|
5130
|
-
result.point = {
|
5131
|
-
style: {
|
5132
|
-
visible: false,
|
5133
|
-
fill: color.colorScheme?.[0]
|
5134
|
-
}
|
5135
|
-
};
|
5136
|
-
return result;
|
5137
|
-
};
|
5138
|
-
const tooltipDisable = (spec)=>{
|
5139
|
-
const result = {
|
5140
|
-
...spec
|
5141
|
-
};
|
5142
|
-
result.tooltip = {
|
5143
|
-
visible: false
|
5144
|
-
};
|
5145
|
-
return result;
|
5146
|
-
};
|
5147
|
-
const tooltipAreaRange = (spec, context)=>{
|
5148
|
-
const result = {
|
5149
|
-
...spec
|
5150
|
-
};
|
5151
|
-
const { advancedVSeed } = context;
|
5152
|
-
const { measures, datasetReshapeInfo, chartType, locale, encoding } = advancedVSeed;
|
5153
|
-
const baseConfig = advancedVSeed.config[chartType];
|
5154
|
-
const { tooltip = {
|
5155
|
-
enable: true
|
5156
|
-
} } = baseConfig;
|
5157
|
-
const { enable } = tooltip;
|
5158
|
-
const { groupName } = datasetReshapeInfo[0].unfoldInfo;
|
5159
|
-
const y = encoding[0]?.y || [];
|
5160
|
-
result.tooltip = {
|
5161
|
-
visible: enable,
|
5162
|
-
dimension: {
|
5163
|
-
content: [
|
5164
|
-
{
|
5165
|
-
visible: true,
|
5166
|
-
key: (datum)=>datum && datum[groupName] || '',
|
5167
|
-
value: (datum)=>{
|
5168
|
-
if (!datum) return '';
|
5169
|
-
const text = y.map((id)=>{
|
5170
|
-
const value = datum[id];
|
5171
|
-
const measure = findMeasureById(measures, id);
|
5172
|
-
if (!measure) return String(value);
|
5173
|
-
const { format = {}, autoFormat = true } = measure;
|
5174
|
-
if (!isEmpty(format)) {
|
5175
|
-
const formatter = createFormatter(format);
|
5176
|
-
return formatter(value);
|
5177
|
-
}
|
5178
|
-
if (autoFormat) return autoFormatter(value, locale);
|
5179
|
-
return String(value);
|
5180
|
-
});
|
5181
|
-
return text.join(' ~ ');
|
5182
|
-
},
|
5183
|
-
shapeType: 'rectRound'
|
5184
|
-
},
|
5185
|
-
...y.map((id)=>{
|
5186
|
-
const measure = findMeasureById(measures, id);
|
5187
|
-
return {
|
5188
|
-
visible: true,
|
5189
|
-
key: measure?.alias || id,
|
5190
|
-
value: (datum)=>{
|
5191
|
-
if (!datum) return '';
|
5192
|
-
const value = datum[id];
|
5193
|
-
const measure = findMeasureById(measures, id);
|
5194
|
-
if (!measure) return String(value);
|
5195
|
-
const { format = {}, autoFormat = true } = measure;
|
5196
|
-
if (!isEmpty(format)) {
|
5197
|
-
const formatter = createFormatter(format);
|
5198
|
-
return formatter(value);
|
5199
|
-
}
|
5200
|
-
if (autoFormat) return autoFormatter(value, locale);
|
5201
|
-
return String(value);
|
5202
|
-
},
|
5203
|
-
shapeType: 'rectRound'
|
5204
|
-
};
|
5205
|
-
})
|
5206
|
-
]
|
5207
|
-
}
|
5208
|
-
};
|
5209
|
-
return result;
|
5210
|
-
};
|
5211
|
-
const areaRange = [
|
5212
|
-
series([
|
5213
|
-
initAreaRange,
|
5214
|
-
areaStyle_areaStyle
|
5215
|
-
], [
|
5216
|
-
initAreaRangeLine1,
|
5217
|
-
lineStyle_lineStyle,
|
5218
|
-
pointStyle_pointStyle,
|
5219
|
-
pointStateDimensionHover,
|
5220
|
-
tooltipDisable
|
5221
|
-
], [
|
5222
|
-
initAreaRangeLine2,
|
5223
|
-
lineStyle_lineStyle,
|
5224
|
-
pointStyle_pointStyle,
|
5225
|
-
pointStateDimensionHover,
|
5226
|
-
tooltipDisable
|
5227
|
-
]),
|
5228
|
-
datasetXY,
|
5229
|
-
progressive,
|
5230
|
-
background_backgroundColor,
|
5231
|
-
xBand,
|
5232
|
-
yLinear,
|
5233
|
-
label_label,
|
5234
|
-
tooltipAreaRange,
|
5235
|
-
verticalCrosshairLine,
|
5236
|
-
annotationPoint_annotationPoint,
|
5237
|
-
annotationVerticalLine_annotationVerticalLine,
|
5238
|
-
annotationHorizontalLine_annotationHorizontalLine,
|
5239
|
-
annotationArea_annotationArea
|
5240
|
-
];
|
5241
|
-
const pivotAreaRange = [
|
5242
|
-
initPivot,
|
5243
|
-
pivotGridStyle,
|
5244
|
-
pivotIndicators_pivotIndicatorsAsRow,
|
5245
|
-
datasetPivot,
|
5246
|
-
pivotIndicators_pivotIndicators([
|
5247
|
-
series([
|
5248
|
-
initAreaRange,
|
5249
|
-
areaStyle_areaStyle
|
5250
|
-
], [
|
5251
|
-
initAreaRangeLine1,
|
5252
|
-
lineStyle_lineStyle,
|
5253
|
-
pointStyle_pointStyle,
|
5254
|
-
pointStateDimensionHover,
|
5255
|
-
tooltipDisable
|
5256
|
-
], [
|
5257
|
-
initAreaRangeLine2,
|
5258
|
-
lineStyle_lineStyle,
|
5259
|
-
pointStyle_pointStyle,
|
5260
|
-
pointStateDimensionHover,
|
5261
|
-
tooltipDisable
|
5262
|
-
]),
|
5263
|
-
background_backgroundColor,
|
5264
|
-
datasetXY,
|
5265
|
-
progressive,
|
5266
|
-
xBand,
|
5267
|
-
yLinear,
|
5268
|
-
label_label,
|
5269
|
-
tooltipAreaRange,
|
5270
|
-
verticalCrosshairLine,
|
5271
|
-
annotationPoint_annotationPoint,
|
5272
|
-
annotationVerticalLine_annotationVerticalLine,
|
5273
|
-
annotationHorizontalLine_annotationHorizontalLine,
|
5274
|
-
annotationArea_annotationArea
|
5275
|
-
]),
|
5276
|
-
pivotRowDimensions,
|
5277
|
-
pivotColumnDimensions
|
5278
|
-
];
|
5279
|
-
const areaRangeSpecPipeline = [
|
5280
|
-
pivotAdapter_pivotAdapter(areaRange, pivotAreaRange)
|
5281
|
-
];
|
5282
|
-
const registerAreaRange = ()=>{
|
5283
|
-
Builder._advancedPipelineMap.areaRange = areaRangeAdvancedPipeline;
|
5284
|
-
Builder._specPipelineMap.areaRange = areaRangeSpecPipeline;
|
5285
|
-
};
|
5286
|
-
const dataReshapeFor1D2M_emptyReshapeResult = {
|
5287
|
-
dataset: [],
|
5288
|
-
foldInfo: {
|
5289
|
-
foldMap: {},
|
5290
|
-
measureId: '',
|
5291
|
-
measureName: '',
|
5292
|
-
measureValue: ''
|
5293
|
-
},
|
5294
|
-
unfoldInfo: {
|
5295
|
-
groupName: '',
|
5296
|
-
groupId: '',
|
5297
|
-
colorItems: [],
|
5298
|
-
colorIdMap: {}
|
5299
|
-
}
|
5300
|
-
};
|
5301
|
-
const dataReshapeFor1D2M = (dataset, dimensions, measures, options)=>{
|
5302
|
-
const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, unfoldDimensionGroup = UnfoldDimensionGroup, unfoldDimensionGroupId = UnfoldDimensionGroupId } = options || {};
|
5303
|
-
if (0 === dimensions.length && 0 === measures.length) return dataReshapeFor1D2M_emptyReshapeResult;
|
5304
|
-
const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures.length > 1 ? measures.slice(1) : measures, foldMeasureId, foldMeasureName, foldMeasureValue);
|
5305
|
-
if (0 === dimensions.length) {
|
5306
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
|
5307
|
-
{
|
5308
|
-
id: foldMeasureValue,
|
5309
|
-
alias: i18n`指标值`,
|
5310
|
-
location: 'dimension'
|
5311
|
-
}
|
5312
|
-
], [
|
5313
|
-
{
|
5314
|
-
id: foldMeasureValue,
|
5315
|
-
alias: i18n`指标值`
|
5316
|
-
}
|
5317
|
-
], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
5318
|
-
return {
|
5319
|
-
dataset: finalDataset,
|
5320
|
-
foldInfo,
|
5321
|
-
unfoldInfo
|
5322
|
-
};
|
5323
|
-
}
|
5324
|
-
{
|
5325
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
|
5326
|
-
...dimensions
|
5327
|
-
], [
|
5328
|
-
{
|
5329
|
-
id: foldMeasureValue,
|
5330
|
-
alias: i18n`指标值`
|
5331
|
-
}
|
5332
|
-
], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
5333
|
-
return {
|
5334
|
-
dataset: finalDataset,
|
5335
|
-
foldInfo,
|
5336
|
-
unfoldInfo
|
5337
|
-
};
|
5338
|
-
}
|
5339
|
-
};
|
5340
|
-
const reshapeTo1D2M = (advancedVSeed, context)=>{
|
5341
|
-
const result = {
|
5342
|
-
...advancedVSeed
|
5343
|
-
};
|
5344
|
-
const { vseed } = context;
|
5345
|
-
const { dataset } = vseed;
|
5346
|
-
const { dimensions, measures } = advancedVSeed;
|
5347
|
-
if (!measures || !dimensions || !dataset) return result;
|
5348
|
-
if (0 === measures.length) throw new Error('measures can not be empty');
|
5349
|
-
const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D2M(dataset, dimensions, measures);
|
5350
|
-
return {
|
5351
|
-
...result,
|
5352
|
-
dataset: newDatasets,
|
5353
|
-
datasetReshapeInfo: [
|
5354
|
-
{
|
5355
|
-
id: '1D2M',
|
5356
|
-
index: 0,
|
5357
|
-
foldInfo,
|
5358
|
-
unfoldInfo
|
5359
|
-
}
|
5360
|
-
]
|
5361
|
-
};
|
5362
|
-
};
|
5363
|
-
const pivotReshapeTo1D2M = (advancedVSeed, context)=>{
|
5364
|
-
const result = {
|
5365
|
-
...advancedVSeed
|
5366
|
-
};
|
5367
|
-
const { vseed } = context;
|
5368
|
-
const { dataset } = vseed;
|
5369
|
-
const { measures } = advancedVSeed;
|
5370
|
-
const dimensions = advancedVSeed.dimensions;
|
5371
|
-
if (!measures || !dimensions) return result;
|
5372
|
-
const measureGroups = [];
|
5373
|
-
if (measures) measures.forEach((measure)=>{
|
5374
|
-
if (measure.children && measure.children.length > 0) measureGroups.push(measure);
|
5375
|
-
});
|
5376
|
-
const newDatasets = [];
|
5377
|
-
const datasetReshapeInfo = [];
|
5378
|
-
measureGroups.forEach((measureGroup, index)=>{
|
5379
|
-
const measures = measureGroup.children;
|
5380
|
-
if (!measures) return;
|
5381
|
-
const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
|
5382
|
-
const groupId = measureGroup.id;
|
5383
|
-
const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeFor1D2M(dataset, commonDimensions, measures, {
|
5384
|
-
foldMeasureId: FoldMeasureId,
|
5385
|
-
foldMeasureName: FoldMeasureName,
|
5386
|
-
foldMeasureValue: FoldMeasureValue + groupId,
|
5387
|
-
unfoldDimensionGroup: UnfoldDimensionGroup
|
5388
|
-
});
|
5389
|
-
const reshapeInfo = {
|
5390
|
-
id: groupId,
|
5391
|
-
index,
|
5392
|
-
foldInfo,
|
5393
|
-
unfoldInfo
|
5394
|
-
};
|
5395
|
-
newDatasets.push(newSubDataset);
|
5396
|
-
datasetReshapeInfo.push(reshapeInfo);
|
5397
|
-
});
|
5398
|
-
return {
|
5399
|
-
...result,
|
5400
|
-
dataset: newDatasets,
|
5401
|
-
datasetReshapeInfo: datasetReshapeInfo
|
5402
|
-
};
|
5403
|
-
};
|
5404
|
-
const encodingYY = (advancedVSeed)=>{
|
5405
|
-
const result = {
|
5406
|
-
...advancedVSeed
|
5407
|
-
};
|
5408
|
-
const { datasetReshapeInfo, measures } = advancedVSeed;
|
5409
|
-
if (!datasetReshapeInfo || !measures) return result;
|
5410
|
-
const firstMeasure = findFirstMeasure(measures);
|
5411
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
|
5412
|
-
const { foldInfo, unfoldInfo } = cur;
|
5413
|
-
const x = [
|
5414
|
-
firstMeasure?.id
|
5415
|
-
];
|
5416
|
-
const y = [
|
5417
|
-
foldInfo.measureValue
|
5418
|
-
];
|
5419
|
-
const group = [
|
5420
|
-
unfoldInfo.groupId
|
5421
|
-
];
|
5422
|
-
const color = [
|
5423
|
-
unfoldInfo.groupId
|
5424
|
-
];
|
5425
|
-
return [
|
5426
|
-
...prev,
|
5427
|
-
{
|
5428
|
-
x,
|
5429
|
-
y,
|
5430
|
-
group,
|
5431
|
-
color
|
5432
|
-
}
|
5433
|
-
];
|
5434
|
-
}, []);
|
4922
|
+
const datasetScatter = (spec, context)=>{
|
4923
|
+
const { advancedVSeed, vseed } = context;
|
4924
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
4925
|
+
const id = datasetReshapeInfo[0].id;
|
4926
|
+
const fields = {};
|
5435
4927
|
return {
|
5436
|
-
...
|
5437
|
-
|
5438
|
-
|
5439
|
-
|
5440
|
-
|
5441
|
-
initAdvancedVSeed_initAdvancedVSeed,
|
5442
|
-
autoMeasures_autoMeasures,
|
5443
|
-
autoDimensions_autoDimensions,
|
5444
|
-
pivotAdapter([
|
5445
|
-
reshapeTo1D2M
|
5446
|
-
], [
|
5447
|
-
pivotReshapeTo1D2M
|
5448
|
-
]),
|
5449
|
-
encodingYY,
|
5450
|
-
scatterConfig,
|
5451
|
-
theme_theme,
|
5452
|
-
markStyle_markStyle,
|
5453
|
-
annotation_annotation
|
5454
|
-
];
|
5455
|
-
const initScatter = (spec, context)=>{
|
5456
|
-
const result = {
|
5457
|
-
...spec
|
5458
|
-
};
|
5459
|
-
const { advancedVSeed } = context;
|
5460
|
-
const { encoding } = advancedVSeed;
|
5461
|
-
if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
|
5462
|
-
result.type = 'scatter';
|
5463
|
-
result.direction = 'vertical';
|
5464
|
-
result.xField = encoding[0].x[0];
|
5465
|
-
result.yField = encoding[0].y[0];
|
5466
|
-
result.seriesField = encoding[0].group[0];
|
5467
|
-
result.padding = 0;
|
5468
|
-
result.region = [
|
5469
|
-
{
|
5470
|
-
clip: true
|
4928
|
+
...spec,
|
4929
|
+
data: {
|
4930
|
+
id,
|
4931
|
+
values: isPivotChart(vseed) ? void 0 : advancedVSeed.dataset.flat(),
|
4932
|
+
fields: fields
|
5471
4933
|
}
|
5472
|
-
|
5473
|
-
result.animation = true;
|
5474
|
-
return result;
|
4934
|
+
};
|
5475
4935
|
};
|
5476
4936
|
const horizontalCrosshairLine = (spec, context)=>{
|
5477
4937
|
const result = {
|
@@ -5521,7 +4981,7 @@ const scatter = [
|
|
5521
4981
|
initScatter,
|
5522
4982
|
color_color,
|
5523
4983
|
background_backgroundColor,
|
5524
|
-
|
4984
|
+
datasetScatter,
|
5525
4985
|
progressive,
|
5526
4986
|
xLinear,
|
5527
4987
|
yLinear,
|
@@ -5546,7 +5006,7 @@ const pivotScatter = [
|
|
5546
5006
|
initScatter,
|
5547
5007
|
color_color,
|
5548
5008
|
background_backgroundColor,
|
5549
|
-
|
5009
|
+
datasetScatter,
|
5550
5010
|
progressive,
|
5551
5011
|
xLinear,
|
5552
5012
|
yLinear,
|
@@ -5572,41 +5032,169 @@ const registerScatter = ()=>{
|
|
5572
5032
|
Builder._advancedPipelineMap.scatter = scatterAdvancedPipeline;
|
5573
5033
|
Builder._specPipelineMap.scatter = scatterSpecPipeline;
|
5574
5034
|
};
|
5575
|
-
const
|
5035
|
+
const autoDualMeasures = (advancedVSeed, context)=>{
|
5036
|
+
const result = {
|
5037
|
+
...advancedVSeed
|
5038
|
+
};
|
5039
|
+
const { vseed } = context;
|
5040
|
+
const { dataset, dualMeasures, measures } = vseed;
|
5041
|
+
if (!dataset) throw new Error('dataset is required');
|
5042
|
+
if (0 === dataset.length) return result;
|
5043
|
+
if (dualMeasures) {
|
5044
|
+
result.measures = dualMeasuresToMeasureTree(dualMeasures);
|
5045
|
+
return result;
|
5046
|
+
}
|
5047
|
+
if (measures && measureDepth(measures) > 1) {
|
5048
|
+
result.measures = measures;
|
5049
|
+
return result;
|
5050
|
+
}
|
5051
|
+
const top100dataset = dataset.slice(0, 100);
|
5052
|
+
const sample = top100dataset.reduce((prev, cur)=>({
|
5053
|
+
...prev,
|
5054
|
+
...cur
|
5055
|
+
}), {});
|
5056
|
+
const newMeasures = measures || Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
|
5057
|
+
'',
|
5058
|
+
null,
|
5059
|
+
void 0
|
5060
|
+
].includes(key)).map((measure)=>({
|
5061
|
+
id: measure,
|
5062
|
+
alias: measure
|
5063
|
+
}));
|
5064
|
+
if (0 === newMeasures.length) result.measures = [];
|
5065
|
+
else if (1 === newMeasures.length) result.measures = [
|
5066
|
+
{
|
5067
|
+
id: 'primary',
|
5068
|
+
alias: 'primary',
|
5069
|
+
children: newMeasures
|
5070
|
+
}
|
5071
|
+
];
|
5072
|
+
else if (newMeasures.length > 1) result.measures = [
|
5073
|
+
{
|
5074
|
+
id: 'primary',
|
5075
|
+
alias: 'primary',
|
5076
|
+
children: newMeasures.slice(0, 1)
|
5077
|
+
},
|
5078
|
+
{
|
5079
|
+
id: 'secondary',
|
5080
|
+
alias: 'secondary',
|
5081
|
+
children: newMeasures.slice(1)
|
5082
|
+
}
|
5083
|
+
];
|
5084
|
+
return result;
|
5085
|
+
};
|
5086
|
+
const dualMeasuresToMeasureTree = (dualMeasures)=>{
|
5087
|
+
const measureTree = dualMeasures.map((item, index)=>{
|
5088
|
+
const { primaryMeasures, secondaryMeasures } = item;
|
5089
|
+
const groupChildren = [];
|
5090
|
+
let id = '';
|
5091
|
+
if (primaryMeasures) {
|
5092
|
+
const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [
|
5093
|
+
primaryMeasures
|
5094
|
+
];
|
5095
|
+
const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
|
5096
|
+
id += alias;
|
5097
|
+
groupChildren.push({
|
5098
|
+
id: `${index}-primary`,
|
5099
|
+
alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
|
5100
|
+
children: arrPrimaryMeasures
|
5101
|
+
});
|
5102
|
+
}
|
5103
|
+
if (secondaryMeasures) {
|
5104
|
+
const arrSecondaryMeasures = Array.isArray(secondaryMeasures) ? secondaryMeasures : [
|
5105
|
+
secondaryMeasures
|
5106
|
+
];
|
5107
|
+
const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
|
5108
|
+
id += alias;
|
5109
|
+
groupChildren.push({
|
5110
|
+
id: `${index}-secondary`,
|
5111
|
+
alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
|
5112
|
+
children: arrSecondaryMeasures
|
5113
|
+
});
|
5114
|
+
}
|
5115
|
+
return {
|
5116
|
+
id,
|
5117
|
+
alias: id,
|
5118
|
+
children: groupChildren
|
5119
|
+
};
|
5120
|
+
});
|
5121
|
+
if (1 === dualMeasures.length) return measureTree[0].children || [];
|
5122
|
+
return measureTree;
|
5123
|
+
};
|
5124
|
+
const encodingForDualAxis = (advancedVSeed, context)=>{
|
5125
|
+
const { vseed } = context;
|
5126
|
+
const { dimensions } = advancedVSeed;
|
5127
|
+
if (!dimensions) return advancedVSeed;
|
5128
|
+
const encoding = vseed.encoding;
|
5129
|
+
if (encoding) {
|
5130
|
+
const x = encoding.x || [
|
5131
|
+
dimensions[0].id
|
5132
|
+
];
|
5133
|
+
const color = encoding.color || [
|
5134
|
+
(dimensions[1] || dimensions[0]).id
|
5135
|
+
];
|
5136
|
+
const detail = encoding.detail || [];
|
5137
|
+
const mergedDetail = unique([
|
5138
|
+
...color,
|
5139
|
+
...detail
|
5140
|
+
]);
|
5141
|
+
return {
|
5142
|
+
...advancedVSeed,
|
5143
|
+
encoding: {
|
5144
|
+
...encoding,
|
5145
|
+
x,
|
5146
|
+
color,
|
5147
|
+
detail: mergedDetail
|
5148
|
+
}
|
5149
|
+
};
|
5150
|
+
}
|
5151
|
+
const mergedEncoding = {
|
5152
|
+
x: dimensions.slice(0, 1).map((item)=>item.id),
|
5153
|
+
color: dimensions.slice(1).map((item)=>item.id),
|
5154
|
+
detail: dimensions.slice(1).map((item)=>item.id),
|
5155
|
+
tooltip: dimensions.map((item)=>item.id),
|
5156
|
+
label: [],
|
5157
|
+
row: [],
|
5158
|
+
column: []
|
5159
|
+
};
|
5160
|
+
return {
|
5161
|
+
...advancedVSeed,
|
5162
|
+
encoding: mergedEncoding
|
5163
|
+
};
|
5164
|
+
};
|
5165
|
+
const reshapeWithDualEncoding = (advancedVSeed, context)=>{
|
5576
5166
|
const result = {
|
5577
5167
|
...advancedVSeed
|
5578
5168
|
};
|
5579
5169
|
const { vseed } = context;
|
5580
5170
|
const { dataset } = vseed;
|
5581
|
-
const { dimensions, measures } = advancedVSeed;
|
5582
|
-
if (!measures || !dimensions || !dataset) return result;
|
5171
|
+
const { dimensions, measures, encoding, chartType } = advancedVSeed;
|
5172
|
+
if (!measures || !dimensions || !dataset || !encoding) return result;
|
5583
5173
|
if (0 === measures.length) throw new Error('measures can not be empty');
|
5584
5174
|
if (measures.length > 2) throw new Error('measures can not be more than 2');
|
5585
|
-
const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
|
5586
|
-
const datasets = [];
|
5587
5175
|
const foldInfoList = [];
|
5588
5176
|
const unfoldInfoList = [];
|
5177
|
+
const datasets = [];
|
5589
5178
|
const primaryMeasures = measures[0];
|
5590
5179
|
const secondaryMeasures = measures[1] || [];
|
5591
5180
|
if (primaryMeasures && primaryMeasures.children) {
|
5592
|
-
const { dataset:
|
5181
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
|
5593
5182
|
foldMeasureValue: FoldPrimaryMeasureValue
|
5594
5183
|
});
|
5595
|
-
datasets.push(
|
5184
|
+
datasets.push(newDataset);
|
5596
5185
|
foldInfoList.push(foldInfo);
|
5597
5186
|
unfoldInfoList.push(unfoldInfo);
|
5598
5187
|
}
|
5599
5188
|
if (secondaryMeasures && secondaryMeasures.children) {
|
5600
|
-
const { dataset:
|
5189
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding, {
|
5601
5190
|
foldMeasureValue: FoldSecondaryMeasureValue
|
5602
5191
|
});
|
5603
|
-
datasets.push(
|
5192
|
+
datasets.push(newDataset);
|
5604
5193
|
foldInfoList.push(foldInfo);
|
5605
5194
|
unfoldInfoList.push(unfoldInfo);
|
5606
5195
|
}
|
5607
5196
|
const unfoldInfo = {
|
5608
|
-
|
5609
|
-
groupId: unfoldInfoList[0].groupId,
|
5197
|
+
...unfoldInfoList[0],
|
5610
5198
|
colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
|
5611
5199
|
colorIdMap: unfoldInfoList.reduce((prev, cur)=>({
|
5612
5200
|
...prev,
|
@@ -5618,7 +5206,7 @@ const reshapeTo2D2M = (advancedVSeed, context)=>{
|
|
5618
5206
|
dataset: datasets,
|
5619
5207
|
datasetReshapeInfo: [
|
5620
5208
|
{
|
5621
|
-
id:
|
5209
|
+
id: String(chartType),
|
5622
5210
|
index: 0,
|
5623
5211
|
foldInfo: foldInfoList[0],
|
5624
5212
|
foldInfoList: foldInfoList,
|
@@ -5627,46 +5215,48 @@ const reshapeTo2D2M = (advancedVSeed, context)=>{
|
|
5627
5215
|
]
|
5628
5216
|
};
|
5629
5217
|
};
|
5630
|
-
const
|
5218
|
+
const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
|
5631
5219
|
const result = {
|
5632
5220
|
...advancedVSeed
|
5633
5221
|
};
|
5634
5222
|
const { vseed } = context;
|
5635
5223
|
const { dataset } = vseed;
|
5636
|
-
const { dimensions, measures } = advancedVSeed;
|
5637
|
-
if (!measures || !dimensions || !dataset) return result;
|
5638
|
-
const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
|
5224
|
+
const { dimensions, measures, encoding, chartType } = advancedVSeed;
|
5225
|
+
if (!measures || !dimensions || !dataset || !encoding) return result;
|
5639
5226
|
const datasetList = [];
|
5640
5227
|
const datasetReshapeInfo = [];
|
5641
|
-
|
5642
|
-
|
5228
|
+
const measureGroups = [];
|
5229
|
+
const depth = measureDepth(measures);
|
5230
|
+
if (3 === depth) measures.forEach((measure)=>{
|
5231
|
+
measureGroups.push(measure.children);
|
5232
|
+
});
|
5233
|
+
else if (2 === depth) measureGroups.push(measures);
|
5234
|
+
measureGroups.forEach((measures, index)=>{
|
5643
5235
|
if (0 === measures.length) throw new Error('measures can not be empty');
|
5644
5236
|
if (measures.length > 2) throw new Error('measures can not be more than 2');
|
5645
|
-
const datasets = [];
|
5646
5237
|
const foldInfoList = [];
|
5647
5238
|
const unfoldInfoList = [];
|
5239
|
+
const datasets = [];
|
5648
5240
|
const primaryMeasures = measures[0];
|
5649
|
-
const secondaryMeasures = measures[1] ||
|
5241
|
+
const secondaryMeasures = measures[1] || [];
|
5650
5242
|
if (primaryMeasures && primaryMeasures.children) {
|
5651
|
-
const { dataset:
|
5243
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
|
5652
5244
|
foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`
|
5653
5245
|
});
|
5654
|
-
datasets.push(
|
5246
|
+
datasets.push(newDataset);
|
5655
5247
|
foldInfoList.push(foldInfo);
|
5656
5248
|
unfoldInfoList.push(unfoldInfo);
|
5657
5249
|
}
|
5658
5250
|
if (secondaryMeasures && secondaryMeasures.children) {
|
5659
|
-
const { dataset:
|
5251
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding, {
|
5660
5252
|
foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`
|
5661
5253
|
});
|
5662
|
-
datasets.push(
|
5254
|
+
datasets.push(newDataset);
|
5663
5255
|
foldInfoList.push(foldInfo);
|
5664
5256
|
unfoldInfoList.push(unfoldInfo);
|
5665
5257
|
}
|
5666
|
-
datasetList.push(datasets.flat(2));
|
5667
5258
|
const unfoldInfo = {
|
5668
|
-
|
5669
|
-
groupId: unfoldInfoList[0].groupId,
|
5259
|
+
...unfoldInfoList[0],
|
5670
5260
|
colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
|
5671
5261
|
colorIdMap: unfoldInfoList.reduce((prev, cur)=>({
|
5672
5262
|
...prev,
|
@@ -5674,53 +5264,19 @@ const pivotReshapeTo2D2M = (advancedVSeed, context)=>{
|
|
5674
5264
|
}), {})
|
5675
5265
|
};
|
5676
5266
|
const reshapeInfo = {
|
5677
|
-
id:
|
5267
|
+
id: `${chartType}-${index}`,
|
5678
5268
|
index,
|
5679
5269
|
foldInfo: foldInfoList[0],
|
5680
|
-
|
5681
|
-
|
5270
|
+
foldInfoList: foldInfoList,
|
5271
|
+
unfoldInfo: unfoldInfo
|
5682
5272
|
};
|
5683
5273
|
datasetReshapeInfo.push(reshapeInfo);
|
5274
|
+
datasetList.push(datasets.flat(2));
|
5684
5275
|
});
|
5685
5276
|
return {
|
5686
5277
|
...result,
|
5687
5278
|
dataset: datasetList,
|
5688
|
-
datasetReshapeInfo
|
5689
|
-
};
|
5690
|
-
};
|
5691
|
-
const encodingXYY = (advancedVSeed)=>{
|
5692
|
-
const result = {
|
5693
|
-
...advancedVSeed
|
5694
|
-
};
|
5695
|
-
const { datasetReshapeInfo, dimensions } = advancedVSeed;
|
5696
|
-
if (!datasetReshapeInfo || !dimensions) return result;
|
5697
|
-
const xDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
|
5698
|
-
const isZeroDimension = 0 === dimensions.length;
|
5699
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
|
5700
|
-
const { foldInfoList, unfoldInfo } = cur;
|
5701
|
-
const x = [
|
5702
|
-
isZeroDimension ? foldInfoList[0].measureName : xDimension?.id
|
5703
|
-
];
|
5704
|
-
const y = foldInfoList.map((d)=>d.measureValue);
|
5705
|
-
const group = [
|
5706
|
-
unfoldInfo.groupId
|
5707
|
-
];
|
5708
|
-
const color = [
|
5709
|
-
foldInfoList[0].measureName
|
5710
|
-
];
|
5711
|
-
return [
|
5712
|
-
...prev,
|
5713
|
-
{
|
5714
|
-
x,
|
5715
|
-
y,
|
5716
|
-
group,
|
5717
|
-
color
|
5718
|
-
}
|
5719
|
-
];
|
5720
|
-
}, []);
|
5721
|
-
return {
|
5722
|
-
...result,
|
5723
|
-
encoding
|
5279
|
+
datasetReshapeInfo: datasetReshapeInfo
|
5724
5280
|
};
|
5725
5281
|
};
|
5726
5282
|
const dualAxisConfig = (advancedVSeed, context)=>{
|
@@ -5749,125 +5305,80 @@ const dualAxisConfig = (advancedVSeed, context)=>{
|
|
5749
5305
|
};
|
5750
5306
|
return result;
|
5751
5307
|
};
|
5752
|
-
const autoDualMeasures = (advancedVSeed, context)=>{
|
5753
|
-
const result = {
|
5754
|
-
...advancedVSeed
|
5755
|
-
};
|
5756
|
-
const { vseed } = context;
|
5757
|
-
const { dataset, dualMeasures, measures } = vseed;
|
5758
|
-
if (!dataset) throw new Error('dataset is required');
|
5759
|
-
if (0 === dataset.length) return result;
|
5760
|
-
if (dualMeasures) {
|
5761
|
-
result.measures = dualMeasuresToMeasureTree(dualMeasures);
|
5762
|
-
return result;
|
5763
|
-
}
|
5764
|
-
if (measures && measureDepth(measures) > 1) {
|
5765
|
-
result.measures = measures;
|
5766
|
-
return result;
|
5767
|
-
}
|
5768
|
-
const top100dataset = dataset.slice(0, 100);
|
5769
|
-
const sample = top100dataset.reduce((prev, cur)=>({
|
5770
|
-
...prev,
|
5771
|
-
...cur
|
5772
|
-
}), {});
|
5773
|
-
const newMeasures = measures || Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
|
5774
|
-
'',
|
5775
|
-
null,
|
5776
|
-
void 0
|
5777
|
-
].includes(key)).map((measure)=>({
|
5778
|
-
id: measure,
|
5779
|
-
alias: measure
|
5780
|
-
}));
|
5781
|
-
if (0 === newMeasures.length) result.measures = [];
|
5782
|
-
else if (1 === newMeasures.length) result.measures = [
|
5783
|
-
{
|
5784
|
-
id: 'primary',
|
5785
|
-
alias: 'primary',
|
5786
|
-
children: newMeasures
|
5787
|
-
}
|
5788
|
-
];
|
5789
|
-
else if (newMeasures.length > 1) result.measures = [
|
5790
|
-
{
|
5791
|
-
id: 'primary',
|
5792
|
-
alias: 'primary',
|
5793
|
-
children: newMeasures.slice(0, 1)
|
5794
|
-
},
|
5795
|
-
{
|
5796
|
-
id: 'secondary',
|
5797
|
-
alias: 'secondary',
|
5798
|
-
children: newMeasures.slice(1)
|
5799
|
-
}
|
5800
|
-
];
|
5801
|
-
return result;
|
5802
|
-
};
|
5803
|
-
const dualMeasuresToMeasureTree = (dualMeasures)=>{
|
5804
|
-
const measureTree = dualMeasures.map((item, index)=>{
|
5805
|
-
const { primaryMeasures, secondaryMeasures } = item;
|
5806
|
-
const groupChildren = [];
|
5807
|
-
let id = '';
|
5808
|
-
if (primaryMeasures) {
|
5809
|
-
const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [
|
5810
|
-
primaryMeasures
|
5811
|
-
];
|
5812
|
-
const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
|
5813
|
-
id += alias;
|
5814
|
-
groupChildren.push({
|
5815
|
-
id: `${index}-primary`,
|
5816
|
-
alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
|
5817
|
-
children: arrPrimaryMeasures
|
5818
|
-
});
|
5819
|
-
}
|
5820
|
-
if (secondaryMeasures) {
|
5821
|
-
const arrSecondaryMeasures = Array.isArray(secondaryMeasures) ? secondaryMeasures : [
|
5822
|
-
secondaryMeasures
|
5823
|
-
];
|
5824
|
-
const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
|
5825
|
-
id += alias;
|
5826
|
-
groupChildren.push({
|
5827
|
-
id: `${index}-secondary`,
|
5828
|
-
alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
|
5829
|
-
children: arrSecondaryMeasures
|
5830
|
-
});
|
5831
|
-
}
|
5832
|
-
return {
|
5833
|
-
id,
|
5834
|
-
alias: id,
|
5835
|
-
children: groupChildren
|
5836
|
-
};
|
5837
|
-
});
|
5838
|
-
if (1 === dualMeasures.length) return measureTree[0].children || [];
|
5839
|
-
return measureTree;
|
5840
|
-
};
|
5841
5308
|
const dualAxisAdvancedPipeline = [
|
5842
5309
|
initAdvancedVSeed_initAdvancedVSeed,
|
5843
5310
|
autoDualMeasures,
|
5844
5311
|
autoDimensions_autoDimensions,
|
5312
|
+
encodingForDualAxis,
|
5845
5313
|
pivotAdapter([
|
5846
|
-
|
5314
|
+
reshapeWithDualEncoding
|
5847
5315
|
], [
|
5848
|
-
|
5316
|
+
pivotReshapeWithDualEncoding
|
5849
5317
|
]),
|
5850
|
-
encodingXYY,
|
5851
5318
|
sortXBandAxis,
|
5852
|
-
|
5319
|
+
sortLegend_sortLegend,
|
5853
5320
|
dualAxisConfig,
|
5854
5321
|
theme_theme,
|
5855
5322
|
markStyle_markStyle,
|
5856
5323
|
annotation_annotation
|
5857
5324
|
];
|
5325
|
+
const series = (...args)=>{
|
5326
|
+
const result = {
|
5327
|
+
type: 'common',
|
5328
|
+
padding: 0,
|
5329
|
+
region: [
|
5330
|
+
{
|
5331
|
+
clip: true
|
5332
|
+
}
|
5333
|
+
]
|
5334
|
+
};
|
5335
|
+
return (_, context)=>{
|
5336
|
+
result.series = args.map((pipeline)=>execPipeline(pipeline, context, {}));
|
5337
|
+
return result;
|
5338
|
+
};
|
5339
|
+
};
|
5340
|
+
const seriesDualAxis = (...args)=>{
|
5341
|
+
const result = {
|
5342
|
+
type: 'common',
|
5343
|
+
padding: 0,
|
5344
|
+
region: [
|
5345
|
+
{
|
5346
|
+
clip: true
|
5347
|
+
}
|
5348
|
+
]
|
5349
|
+
};
|
5350
|
+
const createDualContext = (context, index)=>{
|
5351
|
+
const { advancedVSeed } = context;
|
5352
|
+
const dataset = advancedVSeed.dataset[index];
|
5353
|
+
return {
|
5354
|
+
...context,
|
5355
|
+
advancedVSeed: {
|
5356
|
+
...advancedVSeed,
|
5357
|
+
dataset: dataset
|
5358
|
+
}
|
5359
|
+
};
|
5360
|
+
};
|
5361
|
+
return (_, context)=>{
|
5362
|
+
result.series = args.map((pipeline, index)=>{
|
5363
|
+
const seriesContext = createDualContext(context, index);
|
5364
|
+
return execPipeline(pipeline, seriesContext, {});
|
5365
|
+
});
|
5366
|
+
return result;
|
5367
|
+
};
|
5368
|
+
};
|
5858
5369
|
const initDualAxisPrimary = (spec, context)=>{
|
5859
5370
|
const result = {
|
5860
5371
|
...spec
|
5861
5372
|
};
|
5862
5373
|
const { advancedVSeed } = context;
|
5863
|
-
const {
|
5864
|
-
|
5865
|
-
result.id = `${
|
5374
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
5375
|
+
const { unfoldInfo, foldInfoList, id } = datasetReshapeInfo[0];
|
5376
|
+
result.id = `${id}-primary-series`;
|
5866
5377
|
result.type = 'bar';
|
5867
5378
|
result.direction = 'vertical';
|
5868
|
-
result.xField =
|
5869
|
-
result.
|
5870
|
-
result.
|
5379
|
+
result.xField = unfoldInfo.encodingX;
|
5380
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
5381
|
+
result.yField = foldInfoList?.[0].measureValue;
|
5871
5382
|
result.animation = true;
|
5872
5383
|
return result;
|
5873
5384
|
};
|
@@ -5876,14 +5387,14 @@ const initDualAxisSecondary = (spec, context)=>{
|
|
5876
5387
|
...spec
|
5877
5388
|
};
|
5878
5389
|
const { advancedVSeed } = context;
|
5879
|
-
const {
|
5880
|
-
|
5881
|
-
result.id = `${
|
5390
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
5391
|
+
const { unfoldInfo, foldInfoList, id } = datasetReshapeInfo[0];
|
5392
|
+
result.id = `${id}-secondary-series`;
|
5882
5393
|
result.type = 'line';
|
5883
5394
|
result.direction = 'vertical';
|
5884
|
-
result.xField =
|
5885
|
-
result.yField =
|
5886
|
-
result.seriesField =
|
5395
|
+
result.xField = unfoldInfo.encodingX;
|
5396
|
+
if (foldInfoList?.[1]) result.yField = foldInfoList[1].measureValue;
|
5397
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
5887
5398
|
result.animation = true;
|
5888
5399
|
return result;
|
5889
5400
|
};
|
@@ -5915,10 +5426,10 @@ const dualChartTypePrimary = (spec, context)=>{
|
|
5915
5426
|
case 'columnParallel':
|
5916
5427
|
{
|
5917
5428
|
const columnSpec = result;
|
5918
|
-
if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.
|
5429
|
+
if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.encodingDetail);
|
5919
5430
|
else if (columnSpec.xField) columnSpec.xField = [
|
5920
5431
|
columnSpec.xField,
|
5921
|
-
datasetReshapeInfo[0].unfoldInfo.
|
5432
|
+
datasetReshapeInfo[0].unfoldInfo.encodingDetail
|
5922
5433
|
];
|
5923
5434
|
columnSpec.type = 'bar';
|
5924
5435
|
result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX;
|
@@ -5971,10 +5482,10 @@ const dualChartTypeSecondary = (spec, context)=>{
|
|
5971
5482
|
case 'columnParallel':
|
5972
5483
|
{
|
5973
5484
|
const columnSpec = result;
|
5974
|
-
if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.
|
5485
|
+
if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.encodingDetail);
|
5975
5486
|
else if (columnSpec.xField) columnSpec.xField = [
|
5976
5487
|
columnSpec.xField,
|
5977
|
-
datasetReshapeInfo[0].unfoldInfo.
|
5488
|
+
datasetReshapeInfo[0].unfoldInfo.encodingDetail
|
5978
5489
|
];
|
5979
5490
|
columnSpec.type = 'bar';
|
5980
5491
|
result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX;
|
@@ -6001,10 +5512,11 @@ const dualChartTypeSecondary = (spec, context)=>{
|
|
6001
5512
|
};
|
6002
5513
|
const datasetPrimary = (spec, context)=>{
|
6003
5514
|
const { advancedVSeed, vseed } = context;
|
6004
|
-
const {
|
5515
|
+
const { analysis, datasetReshapeInfo } = advancedVSeed;
|
6005
5516
|
const orderMapping = analysis?.orderMapping || {};
|
6006
|
-
const
|
6007
|
-
const
|
5517
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
5518
|
+
const x = unfoldInfo.encodingX;
|
5519
|
+
const colorId = unfoldInfo.encodingColorId;
|
6008
5520
|
const id = datasetReshapeInfo[0].id;
|
6009
5521
|
const fields = {};
|
6010
5522
|
if (x) {
|
@@ -6018,14 +5530,14 @@ const datasetPrimary = (spec, context)=>{
|
|
6018
5530
|
sortIndex: 0
|
6019
5531
|
};
|
6020
5532
|
}
|
6021
|
-
if (
|
6022
|
-
const order = orderMapping[
|
6023
|
-
if (order) fields[
|
5533
|
+
if (colorId) {
|
5534
|
+
const order = orderMapping[colorId];
|
5535
|
+
if (order) fields[colorId] = {
|
6024
5536
|
sortIndex: 0,
|
6025
5537
|
domain: order,
|
6026
5538
|
lockStatisticsByDomain: true
|
6027
5539
|
};
|
6028
|
-
else fields[
|
5540
|
+
else fields[colorId] = {
|
6029
5541
|
sortIndex: 0
|
6030
5542
|
};
|
6031
5543
|
}
|
@@ -6040,10 +5552,11 @@ const datasetPrimary = (spec, context)=>{
|
|
6040
5552
|
};
|
6041
5553
|
const datasetSecondary = (spec, context)=>{
|
6042
5554
|
const { advancedVSeed, vseed } = context;
|
6043
|
-
const {
|
5555
|
+
const { analysis, datasetReshapeInfo } = advancedVSeed;
|
6044
5556
|
const orderMapping = analysis?.orderMapping || {};
|
6045
|
-
const
|
6046
|
-
const
|
5557
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
5558
|
+
const x = unfoldInfo.encodingX;
|
5559
|
+
const colorId = unfoldInfo.encodingColorId;
|
6047
5560
|
const id = datasetReshapeInfo[0].id;
|
6048
5561
|
const fields = {};
|
6049
5562
|
if (x) {
|
@@ -6057,14 +5570,14 @@ const datasetSecondary = (spec, context)=>{
|
|
6057
5570
|
sortIndex: 0
|
6058
5571
|
};
|
6059
5572
|
}
|
6060
|
-
if (
|
6061
|
-
const order = orderMapping[
|
6062
|
-
if (order) fields[
|
5573
|
+
if (colorId) {
|
5574
|
+
const order = orderMapping[colorId];
|
5575
|
+
if (order) fields[colorId] = {
|
6063
5576
|
sortIndex: 0,
|
6064
5577
|
domain: order,
|
6065
5578
|
lockStatisticsByDomain: true
|
6066
5579
|
};
|
6067
|
-
else fields[
|
5580
|
+
else fields[colorId] = {
|
6068
5581
|
sortIndex: 0
|
6069
5582
|
};
|
6070
5583
|
}
|
@@ -6162,7 +5675,7 @@ const tooltipPrimary = (spec, context)=>{
|
|
6162
5675
|
const foldInfoList = datasetReshapeInfo[0].foldInfoList;
|
6163
5676
|
const unfoldInfo = datasetReshapeInfo[0].unfoldInfo;
|
6164
5677
|
const { measureId, measureValue, measureName } = foldInfoList[0];
|
6165
|
-
const {
|
5678
|
+
const { encodingColor: colorName } = unfoldInfo;
|
6166
5679
|
result.tooltip = {
|
6167
5680
|
visible: enable,
|
6168
5681
|
mark: {
|
@@ -6183,7 +5696,7 @@ const tooltipPrimary = (spec, context)=>{
|
|
6183
5696
|
{
|
6184
5697
|
visible: true,
|
6185
5698
|
hasShape: true,
|
6186
|
-
key: (datum)=>datum && datum[measureName ||
|
5699
|
+
key: (datum)=>datum && datum[measureName || colorName] || '',
|
6187
5700
|
value: (datum)=>{
|
6188
5701
|
if (!datum) return '';
|
6189
5702
|
const value = datum[measureValue];
|
@@ -6205,7 +5718,7 @@ const tooltipPrimary = (spec, context)=>{
|
|
6205
5718
|
content: [
|
6206
5719
|
{
|
6207
5720
|
visible: true,
|
6208
|
-
key: (datum)=>datum && datum[
|
5721
|
+
key: (datum)=>datum && datum[colorName] || '',
|
6209
5722
|
value: (datum)=>{
|
6210
5723
|
if (!datum) return '';
|
6211
5724
|
const value = datum[measureValue];
|
@@ -6242,7 +5755,7 @@ const tooltipSecondary = (spec, context)=>{
|
|
6242
5755
|
const foldInfoList = datasetReshapeInfo[0].foldInfoList;
|
6243
5756
|
const unfoldInfo = datasetReshapeInfo[0].unfoldInfo;
|
6244
5757
|
const { measureId, measureValue, measureName } = foldInfoList[1];
|
6245
|
-
const {
|
5758
|
+
const { encodingColorId } = unfoldInfo;
|
6246
5759
|
result.tooltip = {
|
6247
5760
|
visible: enable,
|
6248
5761
|
mark: {
|
@@ -6263,7 +5776,7 @@ const tooltipSecondary = (spec, context)=>{
|
|
6263
5776
|
{
|
6264
5777
|
visible: true,
|
6265
5778
|
hasShape: true,
|
6266
|
-
key: (datum)=>datum && datum[measureName ||
|
5779
|
+
key: (datum)=>datum && datum[measureName || encodingColorId] || '',
|
6267
5780
|
value: (datum)=>{
|
6268
5781
|
if (!datum) return '';
|
6269
5782
|
const value = datum[measureValue];
|
@@ -6285,7 +5798,7 @@ const tooltipSecondary = (spec, context)=>{
|
|
6285
5798
|
content: [
|
6286
5799
|
{
|
6287
5800
|
visible: true,
|
6288
|
-
key: (datum)=>datum && datum[
|
5801
|
+
key: (datum)=>datum && datum[encodingColorId] || '',
|
6289
5802
|
value: (datum)=>{
|
6290
5803
|
if (!datum) return '';
|
6291
5804
|
const value = datum[measureValue];
|
@@ -6314,16 +5827,16 @@ const yLinearPrimary = (spec, context)=>{
|
|
6314
5827
|
const { advancedVSeed, vseed } = context;
|
6315
5828
|
const { chartType } = vseed;
|
6316
5829
|
const { locale, datasetReshapeInfo } = advancedVSeed;
|
6317
|
-
const index = datasetReshapeInfo[0]
|
5830
|
+
const { index, id: reshapeInfoId, foldInfoList } = datasetReshapeInfo[0];
|
6318
5831
|
const primaryYAxis = advancedVSeed.config?.[chartType]?.primaryYAxis;
|
6319
5832
|
const yAxisConfig = Array.isArray(primaryYAxis) ? primaryYAxis[index] || primaryYAxis[0] : primaryYAxis;
|
6320
5833
|
const alignTicks = advancedVSeed.config?.[chartType]?.alignTicks;
|
6321
5834
|
const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks;
|
6322
|
-
if (
|
6323
|
-
const id = `${
|
5835
|
+
if (foldInfoList?.[0] && isEmpty(foldInfoList[0].foldMap)) return result;
|
5836
|
+
const id = `${reshapeInfoId}-primary-axis`;
|
6324
5837
|
const seriesIds = [
|
6325
|
-
`${
|
6326
|
-
`${
|
5838
|
+
`${reshapeInfoId}-primary-series`,
|
5839
|
+
`${reshapeInfoId}-secondary-series`
|
6327
5840
|
];
|
6328
5841
|
const seriesId = alignTicksConfig ? seriesIds : seriesIds[0];
|
6329
5842
|
if (!result.axes) result.axes = [];
|
@@ -6411,20 +5924,20 @@ const yLinearSecondary = (spec, context)=>{
|
|
6411
5924
|
const { advancedVSeed, vseed } = context;
|
6412
5925
|
const { chartType } = vseed;
|
6413
5926
|
const { locale, datasetReshapeInfo } = advancedVSeed;
|
6414
|
-
const index = datasetReshapeInfo[0]
|
5927
|
+
const { index, id: reshapeInfoId, foldInfoList } = datasetReshapeInfo[0];
|
6415
5928
|
const secondaryYAxis = advancedVSeed.config?.[chartType]?.secondaryYAxis;
|
6416
5929
|
const yAxisConfig = Array.isArray(secondaryYAxis) ? secondaryYAxis[index] || secondaryYAxis[0] : secondaryYAxis;
|
6417
5930
|
const alignTicks = advancedVSeed.config?.[chartType]?.alignTicks;
|
6418
5931
|
const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks;
|
6419
|
-
if (isNullish(
|
5932
|
+
if (isNullish(foldInfoList?.[1])) return result;
|
6420
5933
|
const sync = {
|
6421
|
-
axisId: `${
|
5934
|
+
axisId: `${reshapeInfoId}-primary-axis`,
|
6422
5935
|
zeroAlign: true
|
6423
5936
|
};
|
6424
|
-
const id = `${
|
5937
|
+
const id = `${reshapeInfoId}-secondary-axis`;
|
6425
5938
|
const seriesIds = [
|
6426
|
-
`${
|
6427
|
-
`${
|
5939
|
+
`${reshapeInfoId}-primary-series`,
|
5940
|
+
`${reshapeInfoId}-secondary-series`
|
6428
5941
|
];
|
6429
5942
|
const seriesId = alignTicksConfig ? seriesIds : seriesIds[1];
|
6430
5943
|
if (!result.axes) result.axes = [];
|
@@ -6567,208 +6080,71 @@ const pivotDualAxis = [
|
|
6567
6080
|
initDualAxisSecondary,
|
6568
6081
|
dualChartTypeSecondary,
|
6569
6082
|
datasetSecondary,
|
6570
|
-
labelSecondary,
|
6571
|
-
tooltipSecondary,
|
6572
|
-
progressive,
|
6573
|
-
barStyle_barStyle,
|
6574
|
-
pointStyle_pointStyle,
|
6575
|
-
pointStateDimensionHover,
|
6576
|
-
lineStyle_lineStyle,
|
6577
|
-
areaStyle_areaStyle
|
6578
|
-
]),
|
6579
|
-
xBand,
|
6580
|
-
yLinearPrimary,
|
6581
|
-
yLinearSecondary,
|
6582
|
-
color_color,
|
6583
|
-
background_backgroundColor,
|
6584
|
-
verticalCrosshairRect,
|
6585
|
-
annotationPoint_annotationPoint,
|
6586
|
-
annotationVerticalLine_annotationVerticalLine,
|
6587
|
-
annotationHorizontalLine_annotationHorizontalLine,
|
6588
|
-
annotationArea_annotationArea
|
6589
|
-
]),
|
6590
|
-
pivotRowDimensions,
|
6591
|
-
pivotColumnDimensions,
|
6592
|
-
pivotDiscreteLegend
|
6593
|
-
];
|
6594
|
-
const dualAxisSpecPipeline = [
|
6595
|
-
pivotAdapter_pivotAdapter(dualAxis, pivotDualAxis)
|
6596
|
-
];
|
6597
|
-
const registerDualAxis = ()=>{
|
6598
|
-
Builder._advancedPipelineMap.dualAxis = dualAxisAdvancedPipeline;
|
6599
|
-
Builder._specPipelineMap.dualAxis = dualAxisSpecPipeline;
|
6600
|
-
};
|
6601
|
-
const dataReshapeFor1D1M_emptyReshapeResult = {
|
6602
|
-
dataset: [],
|
6603
|
-
foldInfo: {
|
6604
|
-
foldMap: {},
|
6605
|
-
measureId: '',
|
6606
|
-
measureName: '',
|
6607
|
-
measureValue: ''
|
6608
|
-
},
|
6609
|
-
unfoldInfo: {
|
6610
|
-
groupName: '',
|
6611
|
-
groupId: '',
|
6612
|
-
colorItems: [],
|
6613
|
-
colorIdMap: {}
|
6614
|
-
}
|
6615
|
-
};
|
6616
|
-
const dataReshapeFor1D1M = (dataset, dimensions, measures, options)=>{
|
6617
|
-
const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, unfoldDimensionGroup = UnfoldDimensionGroup, unfoldDimensionGroupId = UnfoldDimensionGroupId } = options || {};
|
6618
|
-
if (0 === dimensions.length && 0 === measures.length) return dataReshapeFor1D1M_emptyReshapeResult;
|
6619
|
-
const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, foldMeasureId, foldMeasureName, foldMeasureValue);
|
6620
|
-
if (0 === dimensions.length) {
|
6621
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
|
6622
|
-
{
|
6623
|
-
id: foldMeasureName,
|
6624
|
-
alias: i18n`指标名称`,
|
6625
|
-
location: 'dimension'
|
6626
|
-
}
|
6627
|
-
], [
|
6628
|
-
{
|
6629
|
-
id: foldMeasureValue,
|
6630
|
-
alias: i18n`指标值`
|
6631
|
-
}
|
6632
|
-
], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
6633
|
-
return {
|
6634
|
-
dataset: finalDataset,
|
6635
|
-
foldInfo,
|
6636
|
-
unfoldInfo
|
6637
|
-
};
|
6638
|
-
}
|
6639
|
-
{
|
6640
|
-
const dims = 1 === measures.length ? [
|
6641
|
-
...dimensions
|
6642
|
-
] : [
|
6643
|
-
...dimensions,
|
6644
|
-
{
|
6645
|
-
id: foldMeasureName,
|
6646
|
-
alias: i18n`指标名称`,
|
6647
|
-
location: 'dimension'
|
6648
|
-
}
|
6649
|
-
];
|
6650
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dims, [
|
6651
|
-
{
|
6652
|
-
id: foldMeasureValue,
|
6653
|
-
alias: i18n`指标值`
|
6654
|
-
}
|
6655
|
-
], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
6656
|
-
return {
|
6657
|
-
dataset: finalDataset,
|
6658
|
-
foldInfo,
|
6659
|
-
unfoldInfo
|
6660
|
-
};
|
6661
|
-
}
|
6662
|
-
};
|
6663
|
-
const reshapeTo1D1M = (advancedVSeed, context)=>{
|
6664
|
-
const result = {
|
6665
|
-
...advancedVSeed
|
6666
|
-
};
|
6667
|
-
const { vseed } = context;
|
6668
|
-
const { dataset } = vseed;
|
6669
|
-
const { dimensions, measures } = advancedVSeed;
|
6670
|
-
if (!measures || !dimensions || !dataset) return result;
|
6671
|
-
if (0 === measures.length) throw new Error('measures can not be empty');
|
6672
|
-
const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D1M(dataset, dimensions, measures);
|
6673
|
-
return {
|
6674
|
-
...result,
|
6675
|
-
dataset: newDatasets,
|
6676
|
-
datasetReshapeInfo: [
|
6677
|
-
{
|
6678
|
-
id: '1D1M',
|
6679
|
-
index: 0,
|
6680
|
-
foldInfo,
|
6681
|
-
unfoldInfo
|
6682
|
-
}
|
6683
|
-
]
|
6684
|
-
};
|
6083
|
+
labelSecondary,
|
6084
|
+
tooltipSecondary,
|
6085
|
+
progressive,
|
6086
|
+
barStyle_barStyle,
|
6087
|
+
pointStyle_pointStyle,
|
6088
|
+
pointStateDimensionHover,
|
6089
|
+
lineStyle_lineStyle,
|
6090
|
+
areaStyle_areaStyle
|
6091
|
+
]),
|
6092
|
+
xBand,
|
6093
|
+
yLinearPrimary,
|
6094
|
+
yLinearSecondary,
|
6095
|
+
color_color,
|
6096
|
+
background_backgroundColor,
|
6097
|
+
verticalCrosshairRect,
|
6098
|
+
annotationPoint_annotationPoint,
|
6099
|
+
annotationVerticalLine_annotationVerticalLine,
|
6100
|
+
annotationHorizontalLine_annotationHorizontalLine,
|
6101
|
+
annotationArea_annotationArea
|
6102
|
+
]),
|
6103
|
+
pivotRowDimensions,
|
6104
|
+
pivotColumnDimensions,
|
6105
|
+
pivotDiscreteLegend
|
6106
|
+
];
|
6107
|
+
const dualAxisSpecPipeline = [
|
6108
|
+
pivotAdapter_pivotAdapter(dualAxis, pivotDualAxis)
|
6109
|
+
];
|
6110
|
+
const registerDualAxis = ()=>{
|
6111
|
+
Builder._advancedPipelineMap.dualAxis = dualAxisAdvancedPipeline;
|
6112
|
+
Builder._specPipelineMap.dualAxis = dualAxisSpecPipeline;
|
6685
6113
|
};
|
6686
|
-
const
|
6687
|
-
const result = {
|
6688
|
-
...advancedVSeed
|
6689
|
-
};
|
6114
|
+
const encodingForPie = (advancedVSeed, context)=>{
|
6690
6115
|
const { vseed } = context;
|
6691
|
-
const {
|
6692
|
-
|
6693
|
-
const
|
6694
|
-
if (
|
6695
|
-
|
6696
|
-
|
6697
|
-
|
6698
|
-
|
6699
|
-
const newDatasets = [];
|
6700
|
-
const datasetReshapeInfo = [];
|
6701
|
-
measureGroups.forEach((measureGroup, index)=>{
|
6702
|
-
const measures = measureGroup.children;
|
6703
|
-
if (!measures) return;
|
6704
|
-
const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
|
6705
|
-
const groupId = measureGroup.id;
|
6706
|
-
const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeFor1D1M(dataset, commonDimensions, measures, {
|
6707
|
-
foldMeasureId: FoldMeasureId,
|
6708
|
-
foldMeasureName: FoldMeasureName,
|
6709
|
-
foldMeasureValue: FoldMeasureValue + groupId,
|
6710
|
-
unfoldDimensionGroup: UnfoldDimensionGroup
|
6711
|
-
});
|
6712
|
-
const reshapeInfo = {
|
6713
|
-
id: groupId,
|
6714
|
-
index,
|
6715
|
-
foldInfo,
|
6716
|
-
unfoldInfo
|
6717
|
-
};
|
6718
|
-
newDatasets.push(newSubDataset);
|
6719
|
-
datasetReshapeInfo.push(reshapeInfo);
|
6720
|
-
});
|
6721
|
-
return {
|
6722
|
-
...result,
|
6723
|
-
dataset: newDatasets,
|
6724
|
-
datasetReshapeInfo: datasetReshapeInfo
|
6116
|
+
const { dimensions } = advancedVSeed;
|
6117
|
+
if (!dimensions) return advancedVSeed;
|
6118
|
+
const encoding = vseed.encoding;
|
6119
|
+
if (encoding) return {
|
6120
|
+
...advancedVSeed,
|
6121
|
+
encoding: {
|
6122
|
+
...encoding
|
6123
|
+
}
|
6725
6124
|
};
|
6726
|
-
|
6727
|
-
|
6728
|
-
|
6729
|
-
|
6125
|
+
const mergedEncoding = {
|
6126
|
+
color: dimensions.slice(0).map((item)=>item.id),
|
6127
|
+
detail: dimensions.slice(0).map((item)=>item.id),
|
6128
|
+
tooltip: dimensions.map((item)=>item.id),
|
6129
|
+
label: [],
|
6130
|
+
row: [],
|
6131
|
+
column: []
|
6730
6132
|
};
|
6731
|
-
const { datasetReshapeInfo } = advancedVSeed;
|
6732
|
-
if (!datasetReshapeInfo) return result;
|
6733
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
|
6734
|
-
const { foldInfo, unfoldInfo } = cur;
|
6735
|
-
const radius = [
|
6736
|
-
foldInfo.measureValue
|
6737
|
-
];
|
6738
|
-
const angle = [
|
6739
|
-
unfoldInfo.groupId
|
6740
|
-
];
|
6741
|
-
const group = [
|
6742
|
-
unfoldInfo.groupId
|
6743
|
-
];
|
6744
|
-
const color = [
|
6745
|
-
unfoldInfo.groupId
|
6746
|
-
];
|
6747
|
-
return [
|
6748
|
-
...prev,
|
6749
|
-
{
|
6750
|
-
angle,
|
6751
|
-
radius,
|
6752
|
-
group,
|
6753
|
-
color
|
6754
|
-
}
|
6755
|
-
];
|
6756
|
-
}, []);
|
6757
6133
|
return {
|
6758
|
-
...
|
6759
|
-
encoding
|
6134
|
+
...advancedVSeed,
|
6135
|
+
encoding: mergedEncoding
|
6760
6136
|
};
|
6761
6137
|
};
|
6762
6138
|
const pieAdvancedPipeline = [
|
6763
6139
|
initAdvancedVSeed_initAdvancedVSeed,
|
6764
6140
|
autoMeasures_autoMeasures,
|
6765
6141
|
autoDimensions_autoDimensions,
|
6142
|
+
encodingForPie,
|
6766
6143
|
pivotAdapter([
|
6767
|
-
|
6144
|
+
reshapeWithEncoding
|
6768
6145
|
], [
|
6769
|
-
|
6146
|
+
pivotReshapeWithEncoding
|
6770
6147
|
]),
|
6771
|
-
encodingPie,
|
6772
6148
|
pieConfig,
|
6773
6149
|
theme_theme,
|
6774
6150
|
annotation_annotation
|
@@ -6778,15 +6154,14 @@ const initPie = (spec, context)=>{
|
|
6778
6154
|
...spec
|
6779
6155
|
};
|
6780
6156
|
const { advancedVSeed } = context;
|
6781
|
-
const {
|
6782
|
-
|
6157
|
+
const { datasetReshapeInfo, dataset } = advancedVSeed;
|
6158
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
6783
6159
|
const showStroke = dataset.length <= 30;
|
6784
6160
|
result.type = 'pie';
|
6785
6161
|
result.outerRadius = 0.8;
|
6786
6162
|
result.innerRadius = 0;
|
6787
|
-
result.valueField =
|
6788
|
-
result.categoryField =
|
6789
|
-
result.seriesField = encoding[0].group[0];
|
6163
|
+
result.valueField = foldInfo.measureValue;
|
6164
|
+
result.categoryField = unfoldInfo.encodingColorId;
|
6790
6165
|
result.padding = 0;
|
6791
6166
|
result.region = [
|
6792
6167
|
{
|
@@ -6855,12 +6230,12 @@ const donutAdvancedPipeline = [
|
|
6855
6230
|
initAdvancedVSeed_initAdvancedVSeed,
|
6856
6231
|
autoMeasures_autoMeasures,
|
6857
6232
|
autoDimensions_autoDimensions,
|
6233
|
+
encodingForPie,
|
6858
6234
|
pivotAdapter([
|
6859
|
-
|
6235
|
+
reshapeWithEncoding
|
6860
6236
|
], [
|
6861
|
-
|
6237
|
+
pivotReshapeWithEncoding
|
6862
6238
|
]),
|
6863
|
-
encodingPie,
|
6864
6239
|
donutConfig,
|
6865
6240
|
theme_theme,
|
6866
6241
|
annotation_annotation
|
@@ -6870,15 +6245,14 @@ const initDonut = (spec, context)=>{
|
|
6870
6245
|
...spec
|
6871
6246
|
};
|
6872
6247
|
const { advancedVSeed } = context;
|
6873
|
-
const {
|
6874
|
-
|
6248
|
+
const { datasetReshapeInfo, dataset } = advancedVSeed;
|
6249
|
+
const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
|
6875
6250
|
const showStroke = dataset.length <= 30;
|
6876
6251
|
result.type = 'pie';
|
6877
6252
|
result.outerRadius = 0.8;
|
6878
6253
|
result.innerRadius = 0.8 * result.outerRadius;
|
6879
|
-
result.valueField =
|
6880
|
-
result.categoryField =
|
6881
|
-
result.seriesField = encoding[0].group[0];
|
6254
|
+
result.valueField = foldInfo.measureValue;
|
6255
|
+
result.categoryField = unfoldInfo.encodingColorId;
|
6882
6256
|
result.padding = 0;
|
6883
6257
|
result.region = [
|
6884
6258
|
{
|
@@ -6942,54 +6316,58 @@ const registerDonut = ()=>{
|
|
6942
6316
|
Builder._advancedPipelineMap.donut = donutAdvancedPipeline;
|
6943
6317
|
Builder._specPipelineMap.donut = donutSpecPipeline;
|
6944
6318
|
};
|
6945
|
-
const
|
6946
|
-
const
|
6947
|
-
|
6948
|
-
|
6949
|
-
const
|
6950
|
-
if (
|
6951
|
-
|
6952
|
-
|
6953
|
-
const isZeroDimension = 0 === dimensions.length;
|
6954
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
|
6955
|
-
const { foldInfo, unfoldInfo } = cur;
|
6956
|
-
const radius = [
|
6957
|
-
foldInfo.measureValue
|
6958
|
-
];
|
6959
|
-
const angle = [
|
6960
|
-
isZeroDimension ? foldInfo.measureName : angleDimension?.id
|
6961
|
-
];
|
6962
|
-
const group = [
|
6963
|
-
is1D1M ? angleDimension?.id : unfoldInfo.groupId
|
6319
|
+
const encodingForRose = (advancedVSeed, context)=>{
|
6320
|
+
const { vseed } = context;
|
6321
|
+
const { dimensions } = advancedVSeed;
|
6322
|
+
if (!dimensions) return advancedVSeed;
|
6323
|
+
const encoding = vseed.encoding;
|
6324
|
+
if (encoding) {
|
6325
|
+
const angle = encoding.angle || [
|
6326
|
+
dimensions[0].id
|
6964
6327
|
];
|
6965
|
-
const color = [
|
6966
|
-
|
6328
|
+
const color = encoding.color || [
|
6329
|
+
(dimensions[1] || dimensions[0]).id
|
6967
6330
|
];
|
6968
|
-
|
6969
|
-
|
6970
|
-
|
6331
|
+
const detail = encoding.detail || [];
|
6332
|
+
const mergedDetail = unique([
|
6333
|
+
...color,
|
6334
|
+
...detail
|
6335
|
+
]);
|
6336
|
+
return {
|
6337
|
+
...advancedVSeed,
|
6338
|
+
encoding: {
|
6339
|
+
...encoding,
|
6971
6340
|
angle,
|
6972
|
-
|
6973
|
-
|
6974
|
-
color
|
6341
|
+
color,
|
6342
|
+
detail: mergedDetail
|
6975
6343
|
}
|
6976
|
-
|
6977
|
-
}
|
6344
|
+
};
|
6345
|
+
}
|
6346
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
6347
|
+
const mergedEncoding = {
|
6348
|
+
angle: dimensions.slice(0, 1).map((item)=>item.id),
|
6349
|
+
color: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
6350
|
+
detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
6351
|
+
tooltip: dimensions.map((item)=>item.id),
|
6352
|
+
label: [],
|
6353
|
+
row: [],
|
6354
|
+
column: []
|
6355
|
+
};
|
6978
6356
|
return {
|
6979
|
-
...
|
6980
|
-
encoding
|
6357
|
+
...advancedVSeed,
|
6358
|
+
encoding: mergedEncoding
|
6981
6359
|
};
|
6982
6360
|
};
|
6983
6361
|
const roseAdvancedPipeline = [
|
6984
6362
|
initAdvancedVSeed_initAdvancedVSeed,
|
6985
6363
|
autoMeasures_autoMeasures,
|
6986
6364
|
autoDimensions_autoDimensions,
|
6365
|
+
encodingForRose,
|
6987
6366
|
pivotAdapter([
|
6988
|
-
|
6367
|
+
reshapeWithEncoding
|
6989
6368
|
], [
|
6990
|
-
|
6369
|
+
pivotReshapeWithEncoding
|
6991
6370
|
]),
|
6992
|
-
encodingRose,
|
6993
6371
|
roseConfig,
|
6994
6372
|
theme_theme,
|
6995
6373
|
markStyle_markStyle,
|
@@ -7000,13 +6378,12 @@ const initRose = (spec, context)=>{
|
|
7000
6378
|
...spec
|
7001
6379
|
};
|
7002
6380
|
const { advancedVSeed } = context;
|
7003
|
-
const {
|
7004
|
-
const { foldInfo } = datasetReshapeInfo[0];
|
7005
|
-
if (!encoding[0].radius || !encoding[0].angle || !encoding[0].group) return result;
|
6381
|
+
const { dataset, datasetReshapeInfo } = advancedVSeed;
|
6382
|
+
const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
|
7006
6383
|
result.type = 'rose';
|
7007
|
-
result.
|
7008
|
-
result.
|
7009
|
-
result.
|
6384
|
+
result.angleField = unfoldInfo.encodingAngle;
|
6385
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
6386
|
+
result.valueField = foldInfo.measureValue;
|
7010
6387
|
result.padding = 0;
|
7011
6388
|
result.outerRadius = 0.9;
|
7012
6389
|
result.innerRadius = 0;
|
@@ -7154,12 +6531,12 @@ const roseParallelAdvancedPipeline = [
|
|
7154
6531
|
initAdvancedVSeed_initAdvancedVSeed,
|
7155
6532
|
autoMeasures_autoMeasures,
|
7156
6533
|
autoDimensions_autoDimensions,
|
6534
|
+
encodingForRose,
|
7157
6535
|
pivotAdapter([
|
7158
|
-
|
6536
|
+
reshapeWithEncoding
|
7159
6537
|
], [
|
7160
|
-
|
6538
|
+
pivotReshapeWithEncoding
|
7161
6539
|
]),
|
7162
|
-
encodingRose,
|
7163
6540
|
roseParallelConfig,
|
7164
6541
|
theme_theme,
|
7165
6542
|
markStyle_markStyle,
|
@@ -7170,19 +6547,18 @@ const initRoseParallel = (spec, context)=>{
|
|
7170
6547
|
...spec
|
7171
6548
|
};
|
7172
6549
|
const { advancedVSeed } = context;
|
7173
|
-
const {
|
6550
|
+
const { datasetReshapeInfo, dataset, dimensions } = advancedVSeed;
|
7174
6551
|
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
7175
|
-
if (!encoding[0].radius || !encoding[0].angle || !encoding[0].group) return result;
|
7176
6552
|
const sameDimensionsMode = dimensions.length > 1 && dimensions.every((dim)=>dim.id === dimensions[0].id);
|
7177
6553
|
result.type = 'rose';
|
7178
|
-
result.
|
7179
|
-
|
6554
|
+
result.angleField = sameDimensionsMode ? [
|
6555
|
+
unfoldInfo.encodingAngle
|
7180
6556
|
] : [
|
7181
|
-
|
7182
|
-
unfoldInfo.
|
6557
|
+
unfoldInfo.encodingAngle,
|
6558
|
+
unfoldInfo.encodingDetail
|
7183
6559
|
];
|
7184
|
-
result.valueField =
|
7185
|
-
result.seriesField =
|
6560
|
+
result.valueField = foldInfo.measureValue;
|
6561
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
7186
6562
|
result.padding = 0;
|
7187
6563
|
result.outerRadius = 0.9;
|
7188
6564
|
result.innerRadius = 0;
|
@@ -7259,54 +6635,58 @@ const registerRoseParallel = ()=>{
|
|
7259
6635
|
Builder._advancedPipelineMap.roseParallel = roseParallelAdvancedPipeline;
|
7260
6636
|
Builder._specPipelineMap.roseParallel = roseParallelSpecPipeline;
|
7261
6637
|
};
|
7262
|
-
const
|
7263
|
-
const
|
7264
|
-
|
7265
|
-
|
7266
|
-
const
|
7267
|
-
if (
|
7268
|
-
|
7269
|
-
|
7270
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
|
7271
|
-
const { foldInfo, unfoldInfo } = cur;
|
7272
|
-
const angle = [
|
7273
|
-
isZeroDimension ? foldInfo.measureName : angleDimension?.id
|
7274
|
-
];
|
7275
|
-
const radius = [
|
7276
|
-
foldInfo.measureValue
|
7277
|
-
];
|
7278
|
-
const group = [
|
7279
|
-
unfoldInfo.groupId
|
6638
|
+
const encodingForRadar = (advancedVSeed, context)=>{
|
6639
|
+
const { vseed } = context;
|
6640
|
+
const { dimensions } = advancedVSeed;
|
6641
|
+
if (!dimensions) return advancedVSeed;
|
6642
|
+
const encoding = vseed.encoding;
|
6643
|
+
if (encoding) {
|
6644
|
+
const angle = encoding.angle || [
|
6645
|
+
dimensions[0].id
|
7280
6646
|
];
|
7281
|
-
const color = [
|
7282
|
-
|
6647
|
+
const color = encoding.color || [
|
6648
|
+
(dimensions[1] || dimensions[0]).id
|
7283
6649
|
];
|
7284
|
-
|
7285
|
-
|
7286
|
-
|
6650
|
+
const detail = encoding.detail || [];
|
6651
|
+
const mergedDetail = unique([
|
6652
|
+
...color,
|
6653
|
+
...detail
|
6654
|
+
]);
|
6655
|
+
return {
|
6656
|
+
...advancedVSeed,
|
6657
|
+
encoding: {
|
6658
|
+
...encoding,
|
7287
6659
|
angle,
|
7288
|
-
|
7289
|
-
|
7290
|
-
color
|
6660
|
+
color,
|
6661
|
+
detail: mergedDetail
|
7291
6662
|
}
|
7292
|
-
|
7293
|
-
}
|
6663
|
+
};
|
6664
|
+
}
|
6665
|
+
const mergedEncoding = {
|
6666
|
+
angle: dimensions.slice(0, 1).map((item)=>item.id),
|
6667
|
+
color: dimensions.slice(1).map((item)=>item.id),
|
6668
|
+
detail: dimensions.slice(1).map((item)=>item.id),
|
6669
|
+
tooltip: dimensions.map((item)=>item.id),
|
6670
|
+
label: [],
|
6671
|
+
row: [],
|
6672
|
+
column: []
|
6673
|
+
};
|
7294
6674
|
return {
|
7295
|
-
...
|
7296
|
-
encoding
|
6675
|
+
...advancedVSeed,
|
6676
|
+
encoding: mergedEncoding
|
7297
6677
|
};
|
7298
6678
|
};
|
7299
6679
|
const radarAdvancedPipeline = [
|
7300
6680
|
initAdvancedVSeed_initAdvancedVSeed,
|
7301
6681
|
autoMeasures_autoMeasures,
|
7302
6682
|
autoDimensions_autoDimensions,
|
6683
|
+
encodingForRadar,
|
7303
6684
|
pivotAdapter([
|
7304
|
-
|
6685
|
+
reshapeWithEncoding
|
7305
6686
|
], [
|
7306
|
-
|
6687
|
+
pivotReshapeWithEncoding
|
7307
6688
|
]),
|
7308
|
-
|
7309
|
-
sort_sortLegend,
|
6689
|
+
sortLegend_sortLegend,
|
7310
6690
|
radarConfig,
|
7311
6691
|
theme_theme,
|
7312
6692
|
markStyle_markStyle,
|
@@ -7317,12 +6697,12 @@ const initRadar = (spec, context)=>{
|
|
7317
6697
|
...spec
|
7318
6698
|
};
|
7319
6699
|
const { advancedVSeed } = context;
|
7320
|
-
const {
|
7321
|
-
|
6700
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
6701
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
7322
6702
|
result.type = 'radar';
|
7323
|
-
result.angleField =
|
7324
|
-
result.radiusField =
|
7325
|
-
result.seriesField =
|
6703
|
+
result.angleField = unfoldInfo.encodingAngle;
|
6704
|
+
result.radiusField = foldInfo.measureValue;
|
6705
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
7326
6706
|
result.padding = 0;
|
7327
6707
|
result.region = [
|
7328
6708
|
{
|
@@ -7434,47 +6814,40 @@ const registerRadar = ()=>{
|
|
7434
6814
|
Builder._advancedPipelineMap.radar = radarAdvancedPipeline;
|
7435
6815
|
Builder._specPipelineMap.radar = radarSpecPipeline;
|
7436
6816
|
};
|
7437
|
-
const
|
7438
|
-
const
|
7439
|
-
|
6817
|
+
const encodingForFunnel = (advancedVSeed, context)=>{
|
6818
|
+
const { vseed } = context;
|
6819
|
+
const { dimensions } = advancedVSeed;
|
6820
|
+
if (!dimensions) return advancedVSeed;
|
6821
|
+
const encoding = vseed.encoding;
|
6822
|
+
if (encoding) return {
|
6823
|
+
...advancedVSeed,
|
6824
|
+
encoding: {
|
6825
|
+
...encoding
|
6826
|
+
}
|
6827
|
+
};
|
6828
|
+
const mergedEncoding = {
|
6829
|
+
color: dimensions.slice(0).map((item)=>item.id),
|
6830
|
+
detail: dimensions.slice(0).map((item)=>item.id),
|
6831
|
+
tooltip: dimensions.map((item)=>item.id),
|
6832
|
+
label: [],
|
6833
|
+
row: [],
|
6834
|
+
column: []
|
7440
6835
|
};
|
7441
|
-
const { datasetReshapeInfo } = advancedVSeed;
|
7442
|
-
if (!datasetReshapeInfo) return result;
|
7443
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
|
7444
|
-
const { foldInfo, unfoldInfo } = cur;
|
7445
|
-
const size = [
|
7446
|
-
foldInfo.measureValue
|
7447
|
-
];
|
7448
|
-
const group = [
|
7449
|
-
unfoldInfo.groupId
|
7450
|
-
];
|
7451
|
-
const color = [
|
7452
|
-
foldInfo.measureValue
|
7453
|
-
];
|
7454
|
-
return [
|
7455
|
-
...prev,
|
7456
|
-
{
|
7457
|
-
size,
|
7458
|
-
group,
|
7459
|
-
color
|
7460
|
-
}
|
7461
|
-
];
|
7462
|
-
}, []);
|
7463
6836
|
return {
|
7464
|
-
...
|
7465
|
-
encoding
|
6837
|
+
...advancedVSeed,
|
6838
|
+
encoding: mergedEncoding
|
7466
6839
|
};
|
7467
6840
|
};
|
7468
6841
|
const funnelAdvancedPipeline = [
|
7469
6842
|
initAdvancedVSeed_initAdvancedVSeed,
|
7470
6843
|
autoMeasures_autoMeasures,
|
7471
6844
|
autoDimensions_autoDimensions,
|
6845
|
+
encodingForFunnel,
|
7472
6846
|
pivotAdapter([
|
7473
|
-
|
6847
|
+
reshapeWithEncoding
|
7474
6848
|
], [
|
7475
|
-
|
6849
|
+
pivotReshapeWithEncoding
|
7476
6850
|
]),
|
7477
|
-
encodingFunnel,
|
7478
6851
|
funnelConfig,
|
7479
6852
|
theme_theme,
|
7480
6853
|
annotation_annotation
|
@@ -7484,11 +6857,11 @@ const initFunnel = (spec, context)=>{
|
|
7484
6857
|
...spec
|
7485
6858
|
};
|
7486
6859
|
const { advancedVSeed } = context;
|
7487
|
-
const {
|
7488
|
-
|
6860
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
6861
|
+
const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
|
7489
6862
|
result.type = 'funnel';
|
7490
|
-
result.valueField =
|
7491
|
-
result.categoryField =
|
6863
|
+
result.valueField = foldInfo.measureValue;
|
6864
|
+
result.categoryField = unfoldInfo.encodingColorId;
|
7492
6865
|
result.padding = 0;
|
7493
6866
|
result.isTransform = true;
|
7494
6867
|
result.shape = 'rect';
|
@@ -7503,7 +6876,7 @@ const initFunnel = (spec, context)=>{
|
|
7503
6876
|
style: {
|
7504
6877
|
cornerRadius: 4,
|
7505
6878
|
fill: {
|
7506
|
-
field:
|
6879
|
+
field: unfoldInfo.encodingColorId,
|
7507
6880
|
scale: 'color'
|
7508
6881
|
}
|
7509
6882
|
},
|
@@ -7519,99 +6892,14 @@ const initFunnel = (spec, context)=>{
|
|
7519
6892
|
result.animation = true;
|
7520
6893
|
return result;
|
7521
6894
|
};
|
7522
|
-
const linearColor = (spec, context)=>{
|
7523
|
-
const result = {
|
7524
|
-
...spec
|
7525
|
-
};
|
7526
|
-
const { advancedVSeed } = context;
|
7527
|
-
const { datasetReshapeInfo, chartType, encoding } = advancedVSeed;
|
7528
|
-
const baseConfig = advancedVSeed.config[chartType];
|
7529
|
-
if (!baseConfig || !baseConfig.color) return result;
|
7530
|
-
const { color } = baseConfig;
|
7531
|
-
const { colorScheme } = color;
|
7532
|
-
result.color = {
|
7533
|
-
type: 'linear',
|
7534
|
-
domain: [
|
7535
|
-
{
|
7536
|
-
dataId: datasetReshapeInfo[0].id,
|
7537
|
-
fields: encoding?.[0]?.color
|
7538
|
-
}
|
7539
|
-
],
|
7540
|
-
range: colorScheme
|
7541
|
-
};
|
7542
|
-
return result;
|
7543
|
-
};
|
7544
|
-
const colorLegend = (spec, context)=>{
|
7545
|
-
const result = {
|
7546
|
-
...spec
|
7547
|
-
};
|
7548
|
-
const { advancedVSeed } = context;
|
7549
|
-
const { chartType } = advancedVSeed;
|
7550
|
-
const baseConfig = advancedVSeed.config[chartType];
|
7551
|
-
const { encoding } = advancedVSeed;
|
7552
|
-
if (!encoding[0].color) return result;
|
7553
|
-
if (!baseConfig || !baseConfig.legend) return result;
|
7554
|
-
const { legend } = baseConfig;
|
7555
|
-
const { enable, position = 'bottom' } = legend || {};
|
7556
|
-
const orient = [
|
7557
|
-
'bottom',
|
7558
|
-
'bottomLeft',
|
7559
|
-
'bottomRight',
|
7560
|
-
'bl',
|
7561
|
-
'br'
|
7562
|
-
].includes(position) ? 'bottom' : [
|
7563
|
-
'top',
|
7564
|
-
'topLeft',
|
7565
|
-
'topRight',
|
7566
|
-
'tl',
|
7567
|
-
'tr'
|
7568
|
-
].includes(position) ? 'top' : [
|
7569
|
-
'left',
|
7570
|
-
'leftTop',
|
7571
|
-
'leftBottom',
|
7572
|
-
'lt',
|
7573
|
-
'lb'
|
7574
|
-
].includes(position) ? 'left' : 'right';
|
7575
|
-
const legendPosition = [
|
7576
|
-
'topLeft',
|
7577
|
-
'bottomLeft',
|
7578
|
-
'leftTop',
|
7579
|
-
'rightTop',
|
7580
|
-
'lt',
|
7581
|
-
'rt',
|
7582
|
-
'tl',
|
7583
|
-
'bl'
|
7584
|
-
].includes(position) ? 'start' : [
|
7585
|
-
'topRight',
|
7586
|
-
'bottomRight',
|
7587
|
-
'leftBottom',
|
7588
|
-
'rightBottom',
|
7589
|
-
'lb',
|
7590
|
-
'rb',
|
7591
|
-
'rt',
|
7592
|
-
'br'
|
7593
|
-
].includes(position) ? 'end' : 'middle';
|
7594
|
-
result.legends = {
|
7595
|
-
type: 'color',
|
7596
|
-
visible: enable,
|
7597
|
-
orient,
|
7598
|
-
position: legendPosition,
|
7599
|
-
field: encoding[0].color[0],
|
7600
|
-
inverse: !![
|
7601
|
-
'left',
|
7602
|
-
'right'
|
7603
|
-
].includes(orient)
|
7604
|
-
};
|
7605
|
-
return result;
|
7606
|
-
};
|
7607
6895
|
const funnel = [
|
7608
6896
|
initFunnel,
|
7609
|
-
linearColor,
|
7610
6897
|
background_backgroundColor,
|
7611
6898
|
datasetXY,
|
6899
|
+
color_color,
|
7612
6900
|
label_label,
|
7613
6901
|
tooltip_tooltip,
|
7614
|
-
|
6902
|
+
discreteLegend,
|
7615
6903
|
annotationPoint_annotationPoint,
|
7616
6904
|
annotationVerticalLine_annotationVerticalLine,
|
7617
6905
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -7624,12 +6912,12 @@ const pivotFunnel = [
|
|
7624
6912
|
datasetPivot,
|
7625
6913
|
pivotIndicators_pivotIndicators([
|
7626
6914
|
initFunnel,
|
7627
|
-
linearColor,
|
7628
6915
|
background_backgroundColor,
|
7629
6916
|
datasetXY,
|
6917
|
+
color_color,
|
7630
6918
|
label_label,
|
7631
6919
|
tooltip_tooltip,
|
7632
|
-
|
6920
|
+
discreteLegend,
|
7633
6921
|
annotationPoint_annotationPoint,
|
7634
6922
|
annotationVerticalLine_annotationVerticalLine,
|
7635
6923
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -7645,49 +6933,52 @@ const registerFunnel = ()=>{
|
|
7645
6933
|
Builder._advancedPipelineMap.funnel = funnelAdvancedPipeline;
|
7646
6934
|
Builder._specPipelineMap.funnel = funnelSpecPipeline;
|
7647
6935
|
};
|
7648
|
-
const
|
7649
|
-
const
|
7650
|
-
|
7651
|
-
|
7652
|
-
const
|
7653
|
-
if (
|
7654
|
-
|
7655
|
-
|
7656
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
|
7657
|
-
const { foldInfo, unfoldInfo } = cur;
|
7658
|
-
const x = [
|
7659
|
-
isZeroDimension ? foldInfo.measureName : xDimension?.id
|
7660
|
-
];
|
7661
|
-
const y = [
|
7662
|
-
unfoldInfo.groupName
|
6936
|
+
const encodingForHeatmap = (advancedVSeed, context)=>{
|
6937
|
+
const { vseed } = context;
|
6938
|
+
const { dimensions } = advancedVSeed;
|
6939
|
+
if (!dimensions) return advancedVSeed;
|
6940
|
+
const encoding = vseed.encoding;
|
6941
|
+
if (encoding) {
|
6942
|
+
const x = encoding.x || [
|
6943
|
+
dimensions[0].id
|
7663
6944
|
];
|
7664
|
-
const
|
7665
|
-
|
6945
|
+
const y = encoding.y || [
|
6946
|
+
(dimensions[1] || dimensions[0]).id
|
7666
6947
|
];
|
7667
|
-
return
|
7668
|
-
...
|
7669
|
-
{
|
6948
|
+
return {
|
6949
|
+
...advancedVSeed,
|
6950
|
+
encoding: {
|
7670
6951
|
x,
|
7671
6952
|
y,
|
7672
|
-
|
6953
|
+
...encoding
|
7673
6954
|
}
|
7674
|
-
|
7675
|
-
}
|
6955
|
+
};
|
6956
|
+
}
|
6957
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
6958
|
+
const mergedEncoding = {
|
6959
|
+
x: dimensions.slice(0, 1).map((item)=>item.id),
|
6960
|
+
y: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
6961
|
+
color: dimensions.slice(0).map((item)=>item.id),
|
6962
|
+
tooltip: dimensions.map((item)=>item.id),
|
6963
|
+
label: [],
|
6964
|
+
row: [],
|
6965
|
+
column: []
|
6966
|
+
};
|
7676
6967
|
return {
|
7677
|
-
...
|
7678
|
-
encoding
|
6968
|
+
...advancedVSeed,
|
6969
|
+
encoding: mergedEncoding
|
7679
6970
|
};
|
7680
6971
|
};
|
7681
6972
|
const heatmapAdvancedPipeline = [
|
7682
6973
|
initAdvancedVSeed_initAdvancedVSeed,
|
7683
6974
|
autoMeasures_autoMeasures,
|
7684
6975
|
autoDimensions_autoDimensions,
|
6976
|
+
encodingForHeatmap,
|
7685
6977
|
pivotAdapter([
|
7686
|
-
|
6978
|
+
reshapeWithEncoding
|
7687
6979
|
], [
|
7688
|
-
|
6980
|
+
pivotReshapeWithEncoding
|
7689
6981
|
]),
|
7690
|
-
encodingMatrix,
|
7691
6982
|
sortXBandAxis,
|
7692
6983
|
heatmapConfig,
|
7693
6984
|
theme_theme,
|
@@ -7709,23 +7000,20 @@ const initHeatmap = (spec, context)=>{
|
|
7709
7000
|
...spec
|
7710
7001
|
};
|
7711
7002
|
const { advancedVSeed } = context;
|
7712
|
-
const {
|
7713
|
-
|
7003
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
7004
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
7714
7005
|
result.type = 'heatmap';
|
7715
7006
|
result.direction = 'vertical';
|
7716
|
-
result.xField =
|
7717
|
-
result.yField =
|
7718
|
-
result.
|
7007
|
+
result.xField = unfoldInfo.encodingX;
|
7008
|
+
result.yField = unfoldInfo.encodingY;
|
7009
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
7010
|
+
result.valueField = foldInfo.measureValue;
|
7719
7011
|
result.padding = 0;
|
7720
7012
|
result.cell = {
|
7721
7013
|
style: {
|
7722
7014
|
shape: 'rect',
|
7723
7015
|
stroke: '#ffffff',
|
7724
|
-
lineWidth: 1
|
7725
|
-
fill: {
|
7726
|
-
field: encoding[0].color[0],
|
7727
|
-
scale: 'color'
|
7728
|
-
}
|
7016
|
+
lineWidth: 1
|
7729
7017
|
}
|
7730
7018
|
};
|
7731
7019
|
result.axes = [
|
@@ -7750,12 +7038,12 @@ const initHeatmap = (spec, context)=>{
|
|
7750
7038
|
};
|
7751
7039
|
const heatmap = [
|
7752
7040
|
initHeatmap,
|
7753
|
-
linearColor,
|
7754
7041
|
background_backgroundColor,
|
7755
7042
|
datasetXY,
|
7043
|
+
color_color,
|
7756
7044
|
label_label,
|
7757
7045
|
labelColorInversion,
|
7758
|
-
|
7046
|
+
discreteLegend,
|
7759
7047
|
tooltip_tooltip,
|
7760
7048
|
pointStyle_pointStyle,
|
7761
7049
|
pointStateDimensionHover,
|
@@ -7772,12 +7060,12 @@ const pivotHeatmap = [
|
|
7772
7060
|
datasetPivot,
|
7773
7061
|
pivotIndicators_pivotIndicators([
|
7774
7062
|
initHeatmap,
|
7775
|
-
linearColor,
|
7776
7063
|
background_backgroundColor,
|
7777
7064
|
datasetXY,
|
7065
|
+
color_color,
|
7778
7066
|
label_label,
|
7779
7067
|
labelColorInversion,
|
7780
|
-
|
7068
|
+
discreteLegend,
|
7781
7069
|
tooltip_tooltip,
|
7782
7070
|
pointStyle_pointStyle,
|
7783
7071
|
pointStateDimensionHover,
|
@@ -8045,12 +7333,6 @@ const lightTheme = ()=>{
|
|
8045
7333
|
yAxis: linearAxis,
|
8046
7334
|
crosshairLine
|
8047
7335
|
},
|
8048
|
-
areaRange: {
|
8049
|
-
...baseConfig,
|
8050
|
-
xAxis: bandAxis,
|
8051
|
-
yAxis: linearAxis,
|
8052
|
-
crosshairLine
|
8053
|
-
},
|
8054
7336
|
scatter: {
|
8055
7337
|
...baseConfig,
|
8056
7338
|
xAxis: {
|
@@ -8383,12 +7665,6 @@ const darkTheme = ()=>{
|
|
8383
7665
|
yAxis: linearAxis,
|
8384
7666
|
crosshairLine: crosshairLine
|
8385
7667
|
},
|
8386
|
-
areaRange: {
|
8387
|
-
...baseConfig,
|
8388
|
-
xAxis: bandAxis,
|
8389
|
-
yAxis: linearAxis,
|
8390
|
-
crosshairLine: crosshairLine
|
8391
|
-
},
|
8392
7668
|
scatter: {
|
8393
7669
|
...baseConfig,
|
8394
7670
|
xAxis: {
|
@@ -8486,7 +7762,6 @@ const registerAll = ()=>{
|
|
8486
7762
|
registerBarPercent();
|
8487
7763
|
registerArea();
|
8488
7764
|
registerAreaPercent();
|
8489
|
-
registerAreaRange();
|
8490
7765
|
registerScatter();
|
8491
7766
|
registerDualAxis();
|
8492
7767
|
registerPie();
|
@@ -8520,7 +7795,6 @@ const zChartType = z["enum"]([
|
|
8520
7795
|
'barParallel',
|
8521
7796
|
'area',
|
8522
7797
|
'areaPercent',
|
8523
|
-
'areaRange',
|
8524
7798
|
'scatter',
|
8525
7799
|
'dualAxis',
|
8526
7800
|
'rose',
|
@@ -8618,6 +7892,12 @@ const zDualMeasure = z.object({
|
|
8618
7892
|
secondaryMeasures: z.array(zMeasure).or(zMeasure).optional()
|
8619
7893
|
});
|
8620
7894
|
const zDualMeasures = z.array(zDualMeasure);
|
7895
|
+
const zScatterMeasure = z.object({
|
7896
|
+
id: z.string(),
|
7897
|
+
xMeasures: z.array(zMeasure).or(zMeasure).optional(),
|
7898
|
+
yMeasures: z.array(zMeasure).or(zMeasure).optional()
|
7899
|
+
});
|
7900
|
+
const zScatterMeasures = z.array(zScatterMeasure);
|
8621
7901
|
const zFoldInfo = z.object({
|
8622
7902
|
foldMap: z.record(z.string(), z.string().or(z.undefined())),
|
8623
7903
|
measureId: z.string(),
|
@@ -8625,10 +7905,14 @@ const zFoldInfo = z.object({
|
|
8625
7905
|
measureValue: z.string()
|
8626
7906
|
});
|
8627
7907
|
const zUnfoldInfo = z.object({
|
7908
|
+
encodingX: z.string(),
|
7909
|
+
encodingY: z.string(),
|
7910
|
+
encodingColor: z.string(),
|
7911
|
+
encodingColorId: z.string(),
|
7912
|
+
encodingDetail: z.string(),
|
7913
|
+
encodingAngle: z.string(),
|
8628
7914
|
colorItems: z.array(z.string()),
|
8629
|
-
|
8630
|
-
colorIdMap: z.record(z.string(), z.string()),
|
8631
|
-
groupName: z.string()
|
7915
|
+
colorIdMap: z.record(z.string(), z.string())
|
8632
7916
|
});
|
8633
7917
|
const zDatasetReshapeInfo = z.array(z.object({
|
8634
7918
|
id: z.string(),
|
@@ -8637,16 +7921,21 @@ const zDatasetReshapeInfo = z.array(z.object({
|
|
8637
7921
|
foldInfoList: z.array(zFoldInfo).nullish(),
|
8638
7922
|
unfoldInfo: zUnfoldInfo
|
8639
7923
|
}));
|
8640
|
-
const zEncoding = z.
|
7924
|
+
const zEncoding = z.object({
|
8641
7925
|
x: z.array(z.string()).nullish(),
|
8642
7926
|
y: z.array(z.string()).nullish(),
|
8643
|
-
color: z.array(z.string()).nullish(),
|
8644
|
-
group: z.array(z.string()).nullish(),
|
8645
7927
|
angle: z.array(z.string()).nullish(),
|
8646
7928
|
radius: z.array(z.string()).nullish(),
|
7929
|
+
detail: z.array(z.string()).nullish(),
|
7930
|
+
color: z.array(z.string()).nullish(),
|
7931
|
+
size: z.array(z.string()).nullish(),
|
8647
7932
|
tooltip: z.array(z.string()).nullish(),
|
8648
|
-
|
8649
|
-
|
7933
|
+
label: z.array(z.string()).nullish(),
|
7934
|
+
row: z.array(z.string()).nullish(),
|
7935
|
+
column: z.array(z.string()).nullish(),
|
7936
|
+
group: z.array(z.string()).nullish().describe("\u5DF2\u5F03\u7528, \u8BF7\u4F7F\u7528\u989C\u8272\u66FF\u4EE3")
|
7937
|
+
});
|
7938
|
+
const zEncodings = z.array(zEncoding);
|
8650
7939
|
const zXBandAxis = z.object({
|
8651
7940
|
visible: z.boolean().default(true).nullish(),
|
8652
7941
|
labelAutoHide: z.boolean().default(true).nullish(),
|
@@ -8909,7 +8198,6 @@ const zAreaConfig = z.object({
|
|
8909
8198
|
crosshairLine: zCrosshairLine.nullish()
|
8910
8199
|
});
|
8911
8200
|
const zAreaPercentConfig = zAreaConfig;
|
8912
|
-
const zAreaRangeConfig = zAreaConfig;
|
8913
8201
|
const zDualAxisConfig = z.object({
|
8914
8202
|
backgroundColor: zBackgroundColor.nullish(),
|
8915
8203
|
label: zLabel.nullish(),
|
@@ -8964,7 +8252,6 @@ const zConfig = z.object({
|
|
8964
8252
|
barPercent: zBarPercentConfig.nullish(),
|
8965
8253
|
area: zAreaConfig.nullish(),
|
8966
8254
|
areaPercent: zAreaPercentConfig.nullish(),
|
8967
|
-
areaRange: zAreaRangeConfig.nullish(),
|
8968
8255
|
scatter: zScatterConfig.nullish(),
|
8969
8256
|
dualAxis: zDualAxisConfig.nullish(),
|
8970
8257
|
rose: zRoseConfig.nullish(),
|
@@ -9403,6 +8690,7 @@ const zPivotTable = z.object({
|
|
9403
8690
|
const zLine = z.object({
|
9404
8691
|
chartType: z.literal('line'),
|
9405
8692
|
dataset: zDataset.nullish(),
|
8693
|
+
encoding: zEncoding.nullish(),
|
9406
8694
|
dimensions: zDimensions.nullish(),
|
9407
8695
|
measures: zMeasureTree.nullish(),
|
9408
8696
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9427,6 +8715,7 @@ const zLine = z.object({
|
|
9427
8715
|
const zColumn = z.object({
|
9428
8716
|
chartType: z.literal('column'),
|
9429
8717
|
dataset: zDataset.nullish(),
|
8718
|
+
encoding: zEncoding.nullish(),
|
9430
8719
|
dimensions: zDimensions.nullish(),
|
9431
8720
|
measures: zMeasureTree.nullish(),
|
9432
8721
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9449,6 +8738,7 @@ const zColumn = z.object({
|
|
9449
8738
|
const zColumnParallel = z.object({
|
9450
8739
|
chartType: z.literal('columnParallel'),
|
9451
8740
|
dataset: zDataset.nullish(),
|
8741
|
+
encoding: zEncoding.nullish(),
|
9452
8742
|
dimensions: zDimensions.nullish(),
|
9453
8743
|
measures: zMeasureTree.nullish(),
|
9454
8744
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9471,6 +8761,7 @@ const zColumnParallel = z.object({
|
|
9471
8761
|
const zColumnPercent = z.object({
|
9472
8762
|
chartType: z.literal('columnPercent'),
|
9473
8763
|
dataset: zDataset.nullish(),
|
8764
|
+
encoding: zEncoding.nullish(),
|
9474
8765
|
dimensions: zDimensions.nullish(),
|
9475
8766
|
measures: zMeasureTree.nullish(),
|
9476
8767
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9493,6 +8784,7 @@ const zColumnPercent = z.object({
|
|
9493
8784
|
const zBar = z.object({
|
9494
8785
|
chartType: z.literal('bar'),
|
9495
8786
|
dataset: zDataset.nullish(),
|
8787
|
+
encoding: zEncoding.nullish(),
|
9496
8788
|
dimensions: zDimensions.nullish(),
|
9497
8789
|
measures: zMeasureTree.nullish(),
|
9498
8790
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9515,6 +8807,7 @@ const zBar = z.object({
|
|
9515
8807
|
const zBarParallel = z.object({
|
9516
8808
|
chartType: z.literal('barParallel'),
|
9517
8809
|
dataset: zDataset.nullish(),
|
8810
|
+
encoding: zEncoding.nullish(),
|
9518
8811
|
dimensions: zDimensions.nullish(),
|
9519
8812
|
measures: zMeasureTree.nullish(),
|
9520
8813
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9537,6 +8830,7 @@ const zBarParallel = z.object({
|
|
9537
8830
|
const zBarPercent = z.object({
|
9538
8831
|
chartType: z.literal('barPercent'),
|
9539
8832
|
dataset: zDataset.nullish(),
|
8833
|
+
encoding: zEncoding.nullish(),
|
9540
8834
|
dimensions: zDimensions.nullish(),
|
9541
8835
|
measures: zMeasureTree.nullish(),
|
9542
8836
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9559,6 +8853,7 @@ const zBarPercent = z.object({
|
|
9559
8853
|
const zArea = z.object({
|
9560
8854
|
chartType: z.literal('area'),
|
9561
8855
|
dataset: zDataset.nullish(),
|
8856
|
+
encoding: zEncoding.nullish(),
|
9562
8857
|
dimensions: zDimensions.nullish(),
|
9563
8858
|
measures: zMeasureTree.nullish(),
|
9564
8859
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9582,6 +8877,7 @@ const zArea = z.object({
|
|
9582
8877
|
const zAreaPercent = z.object({
|
9583
8878
|
chartType: z.literal('areaPercent'),
|
9584
8879
|
dataset: zDataset.nullish(),
|
8880
|
+
encoding: zEncoding.nullish(),
|
9585
8881
|
dimensions: zDimensions.nullish(),
|
9586
8882
|
measures: zMeasureTree.nullish(),
|
9587
8883
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9602,31 +8898,13 @@ const zAreaPercent = z.object({
|
|
9602
8898
|
annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),
|
9603
8899
|
locale: zLocale.nullish()
|
9604
8900
|
});
|
9605
|
-
const zAreaRange = z.object({
|
9606
|
-
chartType: z.literal('areaRange'),
|
9607
|
-
dataset: zDataset.nullish(),
|
9608
|
-
dimensions: zDimensions.nullish(),
|
9609
|
-
measures: zMeasureTree.nullish(),
|
9610
|
-
backgroundColor: zBackgroundColor.nullish(),
|
9611
|
-
label: zLabel.nullish(),
|
9612
|
-
xAxis: zXBandAxis.nullish(),
|
9613
|
-
yAxis: zYLinearAxis.nullish(),
|
9614
|
-
crosshairLine: zCrosshairLine.nullish(),
|
9615
|
-
theme: zTheme.nullish(),
|
9616
|
-
pointStyle: z.array(zPointStyle).or(zPointStyle).nullish(),
|
9617
|
-
lineStyle: z.array(zLineStyle).or(zLineStyle).nullish(),
|
9618
|
-
areaStyle: z.array(zAreaStyle).or(zAreaStyle).nullish(),
|
9619
|
-
annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),
|
9620
|
-
annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),
|
9621
|
-
annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),
|
9622
|
-
annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),
|
9623
|
-
locale: zLocale.nullish()
|
9624
|
-
});
|
9625
8901
|
const zScatter = z.object({
|
9626
8902
|
chartType: z.literal('scatter'),
|
9627
8903
|
dataset: zDataset.nullish(),
|
8904
|
+
encoding: zEncoding.nullish(),
|
9628
8905
|
dimensions: zDimensions.nullish(),
|
9629
8906
|
measures: zMeasureTree.nullish(),
|
8907
|
+
scatterMeasures: zScatterMeasures.nullish(),
|
9630
8908
|
backgroundColor: zBackgroundColor.nullish(),
|
9631
8909
|
color: zColor.nullish(),
|
9632
8910
|
label: zLabel.nullish(),
|
@@ -9676,6 +8954,7 @@ const zDualAxis = z.object({
|
|
9676
8954
|
const zRose = z.object({
|
9677
8955
|
chartType: z.literal('rose'),
|
9678
8956
|
dataset: zDataset.nullish(),
|
8957
|
+
encoding: zEncoding.nullish(),
|
9679
8958
|
dimensions: zDimensions.nullish(),
|
9680
8959
|
measures: zMeasureTree.nullish(),
|
9681
8960
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9689,6 +8968,7 @@ const zRose = z.object({
|
|
9689
8968
|
const zRoseParallel = z.object({
|
9690
8969
|
chartType: z.literal('roseParallel'),
|
9691
8970
|
dataset: zDataset.nullish(),
|
8971
|
+
encoding: zEncoding.nullish(),
|
9692
8972
|
dimensions: zDimensions.nullish(),
|
9693
8973
|
measures: zMeasureTree.nullish(),
|
9694
8974
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9702,6 +8982,7 @@ const zRoseParallel = z.object({
|
|
9702
8982
|
const zPie = z.object({
|
9703
8983
|
chartType: z.literal('pie'),
|
9704
8984
|
dataset: zDataset.nullish(),
|
8985
|
+
encoding: zEncoding.nullish(),
|
9705
8986
|
dimensions: zDimensions.nullish(),
|
9706
8987
|
measures: zMeasureTree.nullish(),
|
9707
8988
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9715,6 +8996,7 @@ const zPie = z.object({
|
|
9715
8996
|
const zDonut = z.object({
|
9716
8997
|
chartType: z.literal('donut'),
|
9717
8998
|
dataset: zDataset.nullish(),
|
8999
|
+
encoding: zEncoding.nullish(),
|
9718
9000
|
dimensions: zDimensions.nullish(),
|
9719
9001
|
measures: zMeasureTree.nullish(),
|
9720
9002
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9728,6 +9010,7 @@ const zDonut = z.object({
|
|
9728
9010
|
const zRadar = z.object({
|
9729
9011
|
chartType: z.literal('radar'),
|
9730
9012
|
dataset: zDataset.nullish(),
|
9013
|
+
encoding: zEncoding.nullish(),
|
9731
9014
|
dimensions: zDimensions.nullish(),
|
9732
9015
|
measures: zMeasureTree.nullish(),
|
9733
9016
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9741,6 +9024,7 @@ const zRadar = z.object({
|
|
9741
9024
|
const zFunnel = z.object({
|
9742
9025
|
chartType: z.literal('funnel'),
|
9743
9026
|
dataset: zDataset.nullish(),
|
9027
|
+
encoding: zEncoding.nullish(),
|
9744
9028
|
dimensions: zDimensions.nullish(),
|
9745
9029
|
measures: zMeasureTree.nullish(),
|
9746
9030
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -9776,7 +9060,6 @@ const zVSeed = z.discriminatedUnion('chartType', [
|
|
9776
9060
|
zBarPercent,
|
9777
9061
|
zArea,
|
9778
9062
|
zAreaPercent,
|
9779
|
-
zAreaRange,
|
9780
9063
|
zScatter,
|
9781
9064
|
zDualAxis,
|
9782
9065
|
zPie,
|
@@ -9794,6 +9077,7 @@ const zAdvancedVSeed = z.object({
|
|
9794
9077
|
dimensions: zDimensionTree,
|
9795
9078
|
measures: zMeasureTree,
|
9796
9079
|
encoding: zEncoding,
|
9080
|
+
encodings: zEncodings,
|
9797
9081
|
config: zConfig,
|
9798
9082
|
analysis: zAnalysis,
|
9799
9083
|
theme: zTheme,
|
@@ -9802,6 +9086,6 @@ const zAdvancedVSeed = z.object({
|
|
9802
9086
|
annotation: zAnnotation,
|
9803
9087
|
locale: zLocale
|
9804
9088
|
});
|
9805
|
-
export { Builder, FoldMeasureId, FoldMeasureName, FoldMeasureValue, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue, ORIGINAL_DATA, Separator, UnfoldDimensionGroup, UnfoldDimensionGroupId,
|
9089
|
+
export { AngleEncoding, Builder, ColorEncoding, ColorIdEncoding, DetailEncoding, FoldMeasureId, FoldMeasureName, FoldMeasureValue, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue, FoldXMeasureValue, FoldYMeasureValue, MeasureName, ORIGINAL_DATA, Separator, UnfoldDimensionGroup, UnfoldDimensionGroupId, XEncoding, YEncoding, areaAdvancedPipeline, areaPercentAdvancedPipeline, areaPercentSpecPipeline, areaSpecPipeline, autoFormatter, autoNumFormatter, barAdvancedPipeline, barParallelAdvancedPipeline, barParallelSpecPipeline, barPercentAdvancedPipeline, barPercentSpecPipeline, barSpecPipeline, columnAdvancedPipeline, columnParallelAdvancedPipeline, columnParallelSpecPipeline, columnPercentAdvancedPipeline, columnPercentSpecPipeline, columnSpecPipeline, createFormatter, createNumFormatter, darkTheme, dataReshapeByEncoding, donutAdvancedPipeline, donutSpecPipeline, dualAxisAdvancedPipeline, dualAxisSpecPipeline, execPipeline, findAllDimensions, findAllMeasures, findDimensionById, findFirstDimension, findFirstMeasure, findMeasureById, foldMeasures, funnelAdvancedPipeline, funnelSpecPipeline, heatmapAdvancedPipeline, heatmapSpecPipeline, i18n, intl, isDimension, isDimensionGroup, isDimensionSelector, isDimensions, isMeasure, isMeasureGroup, isMeasureSelector, isMeasures, isPartialDatumSelector, isPivotChart, isPivotTable, isTable, isVChart, isVTable, isValueSelector, lightTheme, lineAdvancedPipeline, lineSpecPipeline, measureDepth, pieAdvancedPipeline, pieSpecPipeline, pivotTableAdvancedPipeline, pivotTableSpecPipeline, preorderTraverse, radarAdvancedPipeline, radarSpecPipeline, registerAll, registerArea, registerAreaPercent, registerBar, registerBarParallel, registerBarPercent, registerColumn, registerColumnParallel, registerColumnPercent, registerCustomTheme, registerDarkTheme, registerDonut, registerFunnel, registerHeatmap, registerLightTheme, registerLine, registerPie, registerPivotTable, registerRadar, registerRose, registerRoseParallel, registerScatter, registerTable, roseAdvancedPipeline, roseParallelAdvancedPipeline, roseParallelSpecPipeline, roseSpecPipeline, scatterAdvancedPipeline, scatterSpecPipeline, selector_selector as selector, tableAdvancedPipeline, tableSpecPipeline, unfoldDimensions, updateAdvanced, updateSpec, zAdvancedVSeed, zAnalysis, zAnnotation, zAnnotationArea, zAnnotationHorizontalLine, zAnnotationPoint, zAnnotationVerticalLine, zArea, zAreaConfig, zAreaPercent, zAreaPercentConfig, zAreaStyle, zAxis, zBackgroundColor, zBar, zBarConfig, zBarParallel, zBarParallelConfig, zBarPercent, zBarPercentConfig, zBarStyle, zChartType, zColor, zColorLegend, zColumn, zColumnConfig, zColumnParallel, zColumnParallelConfig, zColumnPercent, zColumnPercentConfig, zConfig, zCrosshairLine, zCrosshairRect, zCustomTheme, zCustomThemeConfig, zDataset, zDatasetReshapeInfo, zDatum, zDimension, zDimensionGroup, zDimensionTree, zDimensions, zDonut, zDonutConfig, zDualAxis, zDualAxisConfig, zDualChartType, zDualMeasure, zDualMeasures, zEncoding, zEncodings, zFoldInfo, zFunnel, zFunnelConfig, zHeatmap, zHeatmapConfig, zLabel, zLegend, zLine, zLineConfig, zLineStyle, zLinearColor, zLocale, zMarkStyle, zMeasure, zMeasureGroup, zMeasureTree, zMeasures, zNumFormat, zPie, zPieConfig, zPivotTable, zPivotTableConfig, zPointStyle, zRadar, zRadarConfig, zRose, zRoseConfig, zRoseParallel, zRoseParallelConfig, zScatter, zScatterConfig, zScatterMeasure, zScatterMeasures, zSort, zSortLegend, zStackCornerRadius, zTable, zTableConfig, zTheme, zTooltip, zUnfoldInfo, zVSeed, zXBandAxis, zXLinearAxis, zYBandAxis, zYLinearAxis };
|
9806
9090
|
|
9807
9091
|
//# sourceMappingURL=index.js.map
|