@visactor/vseed 0.1.4 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/builder/builder/builder.d.ts +2 -2
- package/dist/index.cjs +851 -703
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +851 -703
- package/dist/index.js.map +1 -1
- package/dist/pipeline/advanced/chart/pipes/{init/autoDimensions.d.ts → default/defaultDimensions.d.ts} +1 -1
- package/dist/pipeline/advanced/chart/pipes/default/defaultMeasureName.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/default/defaultMeasures.d.ts +5 -0
- package/dist/pipeline/advanced/chart/pipes/default/index.d.ts +3 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/column.d.ts +19 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/line.d.ts +17 -0
- package/dist/pipeline/advanced/chart/pipes/index.d.ts +1 -0
- package/dist/pipeline/advanced/chart/pipes/init/index.d.ts +0 -2
- package/dist/pipeline/advanced/chart/pipes/measures/utils.d.ts +3 -18
- package/dist/pipeline/advanced/table/pipes/reshape/index.d.ts +1 -0
- package/dist/pipeline/advanced/table/pipes/reshape/reshapePivotTable.d.ts +2 -0
- package/dist/pipeline/spec/chart/pipes/color/colorCellStyleFill.d.ts +2 -0
- package/dist/pipeline/spec/chart/pipes/color/colorFunnelStyleFill.d.ts +2 -0
- package/dist/pipeline/spec/chart/pipes/color/colorPieStyleFill.d.ts +2 -0
- package/dist/pipeline/spec/chart/pipes/color/colorRoseStyleFill.d.ts +2 -0
- package/dist/pipeline/spec/chart/pipes/color/index.d.ts +4 -0
- package/dist/pipeline/spec/chart/pipes/markStyle/cellStyle.d.ts +2 -0
- package/dist/pipeline/spec/chart/pipes/markStyle/funnelStyle.d.ts +2 -0
- package/dist/pipeline/spec/chart/pipes/markStyle/index.d.ts +5 -1
- package/dist/pipeline/spec/chart/pipes/markStyle/pieStyle.d.ts +2 -0
- package/dist/pipeline/spec/chart/pipes/markStyle/roseStyle.d.ts +2 -0
- package/dist/types/advancedVSeed.d.ts +2 -0
- package/dist/types/chartType/area/area.d.ts +20 -3
- package/dist/types/chartType/area/zArea.d.ts +2 -0
- package/dist/types/chartType/areaPercent/areaPercent.d.ts +16 -0
- package/dist/types/chartType/areaPercent/zAreaPercent.d.ts +2 -0
- package/dist/types/chartType/bar/zBar.d.ts +2 -0
- package/dist/types/chartType/barParallel/zBarParallel.d.ts +2 -0
- package/dist/types/chartType/barPercent/zBarPercent.d.ts +2 -0
- package/dist/types/chartType/column/column.d.ts +17 -1
- package/dist/types/chartType/column/zColumn.d.ts +2 -0
- package/dist/types/chartType/columnParallel/columnParallel.d.ts +17 -0
- package/dist/types/chartType/columnParallel/zColumnParallel.d.ts +2 -0
- package/dist/types/chartType/columnPercent/columnPercent.d.ts +17 -1
- package/dist/types/chartType/columnPercent/zColumnPercent.d.ts +2 -0
- package/dist/types/chartType/donut/zDonut.d.ts +2 -0
- package/dist/types/chartType/dualAxis/zDualAxis.d.ts +10 -0
- package/dist/types/chartType/funnel/zFunnel.d.ts +2 -0
- package/dist/types/chartType/heatmap/zHeatmap.d.ts +2 -0
- package/dist/types/chartType/line/line.d.ts +16 -0
- package/dist/types/chartType/line/zLine.d.ts +2 -0
- package/dist/types/chartType/pie/zPie.d.ts +2 -0
- package/dist/types/chartType/pivotTable/zPivotTable.d.ts +2 -0
- package/dist/types/chartType/radar/zRadar.d.ts +2 -0
- package/dist/types/chartType/rose/zRose.d.ts +2 -0
- package/dist/types/chartType/roseParallel/zRoseParallel.d.ts +2 -0
- package/dist/types/chartType/scatter/zScatter.d.ts +10 -0
- package/dist/types/chartType/table/zTable.d.ts +2 -0
- package/dist/types/properties/measures/measures.d.ts +3 -1
- package/dist/types/properties/measures/zDualMeasures.d.ts +16 -0
- package/dist/types/properties/measures/zMeasures.d.ts +6 -0
- package/dist/types/properties/measures/zScatterMeasures.d.ts +16 -0
- package/dist/types/zVseed.d.ts +56 -0
- package/dist/umd/index.js +872 -724
- package/dist/umd/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/pipeline/advanced/chart/pipes/init/utils.d.ts +0 -2
package/dist/umd/index.js
CHANGED
@@ -514,7 +514,8 @@
|
|
514
514
|
void 0
|
515
515
|
].includes(key)).map((measure)=>({
|
516
516
|
id: measure,
|
517
|
-
alias: measure
|
517
|
+
alias: measure,
|
518
|
+
encoding: 'column'
|
518
519
|
}));
|
519
520
|
return result;
|
520
521
|
};
|
@@ -598,7 +599,7 @@
|
|
598
599
|
].includes(key) && !measures.some((measure)=>measure.id === key)).map((dim)=>({
|
599
600
|
id: dim,
|
600
601
|
alias: dim,
|
601
|
-
|
602
|
+
encoding: 'column'
|
602
603
|
}));
|
603
604
|
return result;
|
604
605
|
};
|
@@ -1118,10 +1119,27 @@
|
|
1118
1119
|
void 0
|
1119
1120
|
].includes(key)).map((measure)=>({
|
1120
1121
|
id: measure,
|
1121
|
-
alias: measure
|
1122
|
+
alias: measure,
|
1123
|
+
encoding: 'detail'
|
1122
1124
|
}));
|
1123
1125
|
return result;
|
1124
1126
|
};
|
1127
|
+
const ORIGINAL_DATA = '__OriginalData__';
|
1128
|
+
const Separator = '-';
|
1129
|
+
const FoldMeasureName = '__MeaName__';
|
1130
|
+
const FoldMeasureId = '__MeaId__';
|
1131
|
+
const FoldMeasureValue = '__MeaValue__';
|
1132
|
+
const MeasureName = FoldMeasureName;
|
1133
|
+
const FoldPrimaryMeasureValue = '__MeaPrimaryValue__';
|
1134
|
+
const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
|
1135
|
+
const FoldXMeasureValue = '__MeaXValue__';
|
1136
|
+
const FoldYMeasureValue = '__MeaYValue__';
|
1137
|
+
const XEncoding = '__Dim_X__';
|
1138
|
+
const YEncoding = '__Dim_Y__';
|
1139
|
+
const AngleEncoding = '__Dim_Angle__';
|
1140
|
+
const DetailEncoding = '__Dim_Detail__';
|
1141
|
+
const ColorEncoding = '__Dim_Color__';
|
1142
|
+
const ColorIdEncoding = '__Dim_ColorId__';
|
1125
1143
|
const findAllDimensions = (dimensions = [])=>{
|
1126
1144
|
if (!dimensions) return [];
|
1127
1145
|
const result = [];
|
@@ -1138,15 +1156,21 @@
|
|
1138
1156
|
const { vseed } = context;
|
1139
1157
|
const { dimensions, dataset } = vseed;
|
1140
1158
|
const measures = findAllMeasures(advancedVSeed.measures);
|
1159
|
+
const MeaName = {
|
1160
|
+
id: MeasureName,
|
1161
|
+
alias: intl.i18n`指标名称`
|
1162
|
+
};
|
1141
1163
|
if (!dataset) throw new Error('dataset is required');
|
1142
1164
|
if (0 === dataset.length) return result;
|
1143
1165
|
if (dimensions) {
|
1144
1166
|
const newDimensions = findAllDimensions(dimensions);
|
1167
|
+
if (!newDimensions.some((dim)=>dim.id === MeasureName)) newDimensions.push(MeaName);
|
1145
1168
|
result.dimensions = newDimensions.map((item, index)=>{
|
1169
|
+
if ('row' === item.encoding || 'column' === item.encoding) return item;
|
1146
1170
|
if ('rowDimension' === item.location || 'columnDimension' === item.location) return item;
|
1147
1171
|
return {
|
1148
1172
|
...item,
|
1149
|
-
|
1173
|
+
encoding: index % 2 === 0 ? 'column' : 'row'
|
1150
1174
|
};
|
1151
1175
|
});
|
1152
1176
|
return result;
|
@@ -1156,15 +1180,19 @@
|
|
1156
1180
|
...prev,
|
1157
1181
|
...cur
|
1158
1182
|
}), {});
|
1159
|
-
|
1160
|
-
result.dimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
|
1183
|
+
const newDimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
|
1161
1184
|
'',
|
1162
1185
|
null,
|
1163
1186
|
void 0
|
1164
|
-
].includes(key) && !measures.some((measure)=>measure.id === key))
|
1187
|
+
].includes(key) && !measures.some((measure)=>measure.id === key));
|
1188
|
+
result.dimensions = newDimensions.map((dim)=>({
|
1165
1189
|
id: dim,
|
1166
|
-
alias: dim
|
1167
|
-
|
1190
|
+
alias: dim
|
1191
|
+
}));
|
1192
|
+
result.dimensions.push(MeaName);
|
1193
|
+
result.dimensions = result.dimensions.map((dim, index)=>({
|
1194
|
+
...dim,
|
1195
|
+
encoding: index % 2 === 0 ? 'column' : 'row'
|
1168
1196
|
}));
|
1169
1197
|
return result;
|
1170
1198
|
};
|
@@ -1195,11 +1223,110 @@
|
|
1195
1223
|
};
|
1196
1224
|
return result;
|
1197
1225
|
};
|
1226
|
+
function chunk_AIG3BDKO_i(...e) {
|
1227
|
+
return chunk_WIMGWYZL_u(chunk_AIG3BDKO_n, e);
|
1228
|
+
}
|
1229
|
+
var chunk_AIG3BDKO_n = (e, r)=>e.length >= r;
|
1230
|
+
function chunk_KI5X74E2_y(...t) {
|
1231
|
+
return chunk_WIMGWYZL_u(chunk_KI5X74E2_f, t);
|
1232
|
+
}
|
1233
|
+
function chunk_KI5X74E2_f(t, e) {
|
1234
|
+
if (!chunk_AIG3BDKO_i(e, 1)) return {
|
1235
|
+
...t
|
1236
|
+
};
|
1237
|
+
if (!chunk_AIG3BDKO_i(e, 2)) {
|
1238
|
+
let { [e[0]]: r, ...m } = t;
|
1239
|
+
return m;
|
1240
|
+
}
|
1241
|
+
let o = {
|
1242
|
+
...t
|
1243
|
+
};
|
1244
|
+
for (let r of e)delete o[r];
|
1245
|
+
return o;
|
1246
|
+
}
|
1247
|
+
const foldMeasures = (dataset, measures, options)=>{
|
1248
|
+
const { measureId, measureName, measureValue, colorMeasureId } = options || {};
|
1249
|
+
const foldInfo = {
|
1250
|
+
measureId,
|
1251
|
+
measureName,
|
1252
|
+
measureValue,
|
1253
|
+
colorRange: [
|
1254
|
+
0,
|
1255
|
+
1
|
1256
|
+
],
|
1257
|
+
measureRange: [
|
1258
|
+
0,
|
1259
|
+
1
|
1260
|
+
],
|
1261
|
+
foldMap: {}
|
1262
|
+
};
|
1263
|
+
const result = new Array(dataset.length * measures.length);
|
1264
|
+
let index = 0;
|
1265
|
+
const ids = measures.map((d)=>d.id);
|
1266
|
+
for(let i = 0; i < dataset.length; i++)for(let j = 0; j < measures.length; j++){
|
1267
|
+
const datum = chunk_KI5X74E2_y({
|
1268
|
+
...dataset[i]
|
1269
|
+
}, ids);
|
1270
|
+
datum[ORIGINAL_DATA] = dataset[i];
|
1271
|
+
const measure = measures[j];
|
1272
|
+
const { id, alias } = measure;
|
1273
|
+
datum[id] = dataset[i][id];
|
1274
|
+
datum[measureId] = id;
|
1275
|
+
datum[measureName] = alias || id;
|
1276
|
+
datum[measureValue] = dataset[i][id];
|
1277
|
+
if (colorMeasureId) {
|
1278
|
+
const value = datum[ORIGINAL_DATA][colorMeasureId];
|
1279
|
+
datum[ColorEncoding] = value;
|
1280
|
+
datum[ColorIdEncoding] = colorMeasureId;
|
1281
|
+
foldInfo.colorRange = [
|
1282
|
+
Math.min(foldInfo.colorRange[0] || 1 / 0, Number(value)),
|
1283
|
+
Math.max(foldInfo.colorRange[1] || -1 / 0, Number(value))
|
1284
|
+
];
|
1285
|
+
}
|
1286
|
+
foldInfo.measureRange = [
|
1287
|
+
Math.min(foldInfo.measureRange[0] || 1 / 0, Number(datum[id])),
|
1288
|
+
Math.max(foldInfo.measureRange[1] || -1 / 0, Number(datum[id]))
|
1289
|
+
];
|
1290
|
+
foldInfo.foldMap[id] = alias;
|
1291
|
+
result[index++] = datum;
|
1292
|
+
}
|
1293
|
+
return {
|
1294
|
+
dataset: result,
|
1295
|
+
foldInfo
|
1296
|
+
};
|
1297
|
+
};
|
1298
|
+
const reshapePivotTable = (advancedVSeed, context)=>{
|
1299
|
+
const result = {
|
1300
|
+
...advancedVSeed
|
1301
|
+
};
|
1302
|
+
const { vseed } = context;
|
1303
|
+
const { dataset, chartType } = vseed;
|
1304
|
+
const { dimensions, measures } = advancedVSeed;
|
1305
|
+
const { dataset: newDatasets, foldInfo } = foldMeasures(dataset, findAllMeasures(measures), {
|
1306
|
+
measureId: FoldMeasureId,
|
1307
|
+
measureName: FoldMeasureName,
|
1308
|
+
measureValue: FoldMeasureValue
|
1309
|
+
});
|
1310
|
+
const datasetReshapeInfo = [
|
1311
|
+
{
|
1312
|
+
id: String(chartType),
|
1313
|
+
index: 0,
|
1314
|
+
foldInfo
|
1315
|
+
}
|
1316
|
+
];
|
1317
|
+
return {
|
1318
|
+
...result,
|
1319
|
+
dataset: newDatasets,
|
1320
|
+
datasetReshapeInfo: datasetReshapeInfo,
|
1321
|
+
dimensions,
|
1322
|
+
measures
|
1323
|
+
};
|
1324
|
+
};
|
1198
1325
|
const pivotTableAdvancedPipeline = [
|
1199
1326
|
initAdvancedVSeed,
|
1200
1327
|
autoPivotMeasures,
|
1201
1328
|
autoPivotDimensions,
|
1202
|
-
|
1329
|
+
reshapePivotTable,
|
1203
1330
|
pivotTableConfig,
|
1204
1331
|
theme_theme
|
1205
1332
|
];
|
@@ -1246,7 +1373,7 @@
|
|
1246
1373
|
const pivotColumns = (spec, context)=>{
|
1247
1374
|
const { advancedVSeed } = context;
|
1248
1375
|
const dimensions = advancedVSeed.dimensions;
|
1249
|
-
const columns = dimensions.filter((item)=>'columnDimension' === item['location']);
|
1376
|
+
const columns = dimensions.filter((item)=>'columnDimension' === item['location'] || 'column' === item['encoding']);
|
1250
1377
|
return {
|
1251
1378
|
...spec,
|
1252
1379
|
columns: columns.map((item)=>({
|
@@ -1259,7 +1386,7 @@
|
|
1259
1386
|
const pivotRows = (spec, context)=>{
|
1260
1387
|
const { advancedVSeed } = context;
|
1261
1388
|
const dimensions = advancedVSeed.dimensions;
|
1262
|
-
const rows = dimensions.filter((item)=>'rowDimension' === item['location']);
|
1389
|
+
const rows = dimensions.filter((item)=>'rowDimension' === item['location'] || 'row' === item['encoding']);
|
1263
1390
|
return {
|
1264
1391
|
...spec,
|
1265
1392
|
rows: rows.map((item)=>({
|
@@ -1271,25 +1398,31 @@
|
|
1271
1398
|
};
|
1272
1399
|
const pivotIndicators = (spec, context)=>{
|
1273
1400
|
const { advancedVSeed } = context;
|
1274
|
-
const { locale } = advancedVSeed;
|
1275
|
-
const
|
1401
|
+
const { locale, measures, datasetReshapeInfo } = advancedVSeed;
|
1402
|
+
const { foldInfo } = datasetReshapeInfo[0];
|
1276
1403
|
return {
|
1277
1404
|
...spec,
|
1278
1405
|
indicatorsAsCol: true,
|
1279
1406
|
indicatorTitle: intl.i18n`指标名称`,
|
1280
|
-
|
1281
|
-
|
1407
|
+
hideIndicatorName: true,
|
1408
|
+
indicators: [
|
1409
|
+
{
|
1282
1410
|
cellType: 'text',
|
1283
|
-
indicatorKey:
|
1284
|
-
title:
|
1411
|
+
indicatorKey: foldInfo.measureValue,
|
1412
|
+
title: 'indicator',
|
1285
1413
|
width: 'auto',
|
1286
|
-
format: pivotIndicators_fieldFormat(
|
1287
|
-
}
|
1288
|
-
|
1289
|
-
})
|
1414
|
+
format: pivotIndicators_fieldFormat(measures, foldInfo, locale)
|
1415
|
+
}
|
1416
|
+
]
|
1290
1417
|
};
|
1291
1418
|
};
|
1292
|
-
const pivotIndicators_fieldFormat = (
|
1419
|
+
const pivotIndicators_fieldFormat = (measures, foldInfo, locale)=>(value, col, row, table)=>{
|
1420
|
+
if (!chunk_6GTAPB47_e(col) || !chunk_6GTAPB47_e(row) || !table) return value;
|
1421
|
+
const datum = table.getCellOriginRecord(col, row);
|
1422
|
+
const { measureId: foldMeasureId } = foldInfo;
|
1423
|
+
const measureId = datum[0][foldMeasureId];
|
1424
|
+
const node = findMeasureById(measures, measureId);
|
1425
|
+
if (!node) return value;
|
1293
1426
|
const { format = {}, autoFormat = true } = node;
|
1294
1427
|
if (!chunk_VCYTMP4D_n(format)) {
|
1295
1428
|
const formatter = createFormatter(format);
|
@@ -1445,95 +1578,81 @@
|
|
1445
1578
|
locale: locale || 'zh-CN'
|
1446
1579
|
};
|
1447
1580
|
};
|
1448
|
-
const
|
1449
|
-
|
1450
|
-
|
1451
|
-
|
1452
|
-
|
1453
|
-
|
1454
|
-
const FoldPrimaryMeasureValue = '__MeaPrimaryValue__';
|
1455
|
-
const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
|
1456
|
-
const FoldXMeasureValue = '__MeaXValue__';
|
1457
|
-
const FoldYMeasureValue = '__MeaYValue__';
|
1458
|
-
const XEncoding = '__Dim_X__';
|
1459
|
-
const YEncoding = '__Dim_Y__';
|
1460
|
-
const AngleEncoding = '__Dim_Angle__';
|
1461
|
-
const DetailEncoding = '__Dim_Detail__';
|
1462
|
-
const ColorEncoding = '__Dim_Color__';
|
1463
|
-
const ColorIdEncoding = '__Dim_ColorId__';
|
1464
|
-
const getBasicDimensions = (vseed)=>{
|
1465
|
-
const { dimensions, dataset } = vseed;
|
1466
|
-
const MeaName = {
|
1467
|
-
id: MeasureName,
|
1468
|
-
alias: intl.i18n`指标名称`,
|
1469
|
-
encoding: 'detail'
|
1581
|
+
const defaultMeasures_defaultMeasures = (advancedVSeed, context)=>{
|
1582
|
+
const { vseed } = context;
|
1583
|
+
const { measures, dataset } = vseed;
|
1584
|
+
if (measures && measures.length > 0) return {
|
1585
|
+
...advancedVSeed,
|
1586
|
+
measures
|
1470
1587
|
};
|
1471
1588
|
if (!dataset) throw new Error('dataset is required');
|
1472
|
-
if (0 === dataset.length) return
|
1473
|
-
|
1474
|
-
|
1475
|
-
|
1476
|
-
...dim
|
1477
|
-
}));
|
1478
|
-
if (basicDimensions.some((dim)=>dim.id === MeasureName)) return basicDimensions;
|
1479
|
-
basicDimensions.push(MeaName);
|
1480
|
-
return basicDimensions;
|
1481
|
-
}
|
1589
|
+
if (0 === dataset.length) return {
|
1590
|
+
...advancedVSeed,
|
1591
|
+
measures: []
|
1592
|
+
};
|
1482
1593
|
const top100dataset = dataset.slice(0, 100);
|
1483
1594
|
const sample = top100dataset.reduce((prev, cur)=>({
|
1484
1595
|
...prev,
|
1485
1596
|
...cur
|
1486
1597
|
}), {});
|
1487
|
-
const
|
1598
|
+
const defaultMeasures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
|
1488
1599
|
'',
|
1489
1600
|
null,
|
1490
1601
|
void 0
|
1491
|
-
].includes(key)).map((
|
1492
|
-
id:
|
1493
|
-
alias:
|
1494
|
-
location: 'dimension'
|
1602
|
+
].includes(key)).map((measure)=>({
|
1603
|
+
id: measure,
|
1604
|
+
alias: measure
|
1495
1605
|
}));
|
1496
|
-
|
1497
|
-
|
1498
|
-
|
1499
|
-
|
1500
|
-
const { dataset, measures } = vseed;
|
1501
|
-
if (!measures || 0 === measures.length) return generateMeasuresByDataset(dataset);
|
1502
|
-
return measures;
|
1606
|
+
return {
|
1607
|
+
...advancedVSeed,
|
1608
|
+
measures: defaultMeasures
|
1609
|
+
};
|
1503
1610
|
};
|
1504
|
-
const
|
1611
|
+
const defaultDimensions = (advancedVSeed, context)=>{
|
1612
|
+
const result = {
|
1613
|
+
...advancedVSeed
|
1614
|
+
};
|
1615
|
+
const { vseed } = context;
|
1616
|
+
const { dimensions, dataset } = vseed;
|
1617
|
+
if (dimensions && dimensions.length > 0) return {
|
1618
|
+
...result,
|
1619
|
+
dimensions
|
1620
|
+
};
|
1505
1621
|
if (!dataset) throw new Error('dataset is required');
|
1506
|
-
if (0 === dataset.length) return
|
1622
|
+
if (0 === dataset.length) return result;
|
1623
|
+
const measures = findAllMeasures(advancedVSeed.measures);
|
1507
1624
|
const top100dataset = dataset.slice(0, 100);
|
1508
1625
|
const sample = top100dataset.reduce((prev, cur)=>({
|
1509
1626
|
...prev,
|
1510
1627
|
...cur
|
1511
1628
|
}), {});
|
1512
|
-
const
|
1629
|
+
const newDimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
|
1513
1630
|
'',
|
1514
1631
|
null,
|
1515
1632
|
void 0
|
1516
|
-
].includes(key)).map((
|
1517
|
-
id:
|
1518
|
-
alias:
|
1633
|
+
].includes(key) && !measures.some((measure)=>measure.id === key)).map((dim)=>({
|
1634
|
+
id: dim,
|
1635
|
+
alias: dim
|
1519
1636
|
}));
|
1520
|
-
return
|
1521
|
-
|
1522
|
-
|
1523
|
-
|
1524
|
-
if (!measures) return false;
|
1525
|
-
return measures.some((measure)=>'children' in measure);
|
1637
|
+
return {
|
1638
|
+
...result,
|
1639
|
+
dimensions: newDimensions
|
1640
|
+
};
|
1526
1641
|
};
|
1527
|
-
const
|
1528
|
-
const
|
1529
|
-
|
1530
|
-
|
1642
|
+
const defaultMeasureName = (advancedVSeed)=>{
|
1643
|
+
const result = {
|
1644
|
+
...advancedVSeed
|
1645
|
+
};
|
1646
|
+
const MeaName = {
|
1647
|
+
id: MeasureName,
|
1648
|
+
alias: intl.i18n`指标名称`
|
1649
|
+
};
|
1650
|
+
if (!result.dimensions?.some((dim)=>dim.id === MeasureName)) result.dimensions?.push(MeaName);
|
1651
|
+
return result;
|
1531
1652
|
};
|
1532
|
-
const encodingForLine = (advancedVSeed
|
1533
|
-
const {
|
1534
|
-
const
|
1535
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
1536
|
-
const dimensions = getBasicDimensions(vseed);
|
1653
|
+
const encodingForLine = (advancedVSeed)=>{
|
1654
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
1655
|
+
const measures = findAllMeasures(vseedMeasures);
|
1537
1656
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
1538
1657
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
1539
1658
|
const encoding = {};
|
@@ -1546,36 +1665,46 @@
|
|
1546
1665
|
encoding
|
1547
1666
|
};
|
1548
1667
|
};
|
1549
|
-
const generateDefaultMeasureEncoding = (measures, encoding)=>{
|
1550
|
-
encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
|
1551
|
-
encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
1552
|
-
};
|
1553
1668
|
const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
1554
|
-
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
1555
1669
|
const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
|
1556
1670
|
encoding.x = uniqueDimIds.slice(0, 1);
|
1557
|
-
encoding.color = uniqueDimIds.slice(
|
1558
|
-
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
1671
|
+
encoding.color = uniqueDimIds.slice(1);
|
1559
1672
|
encoding.tooltip = uniqueDimIds;
|
1673
|
+
encoding.detail = [];
|
1560
1674
|
encoding.label = [];
|
1561
1675
|
encoding.row = [];
|
1562
1676
|
encoding.column = [];
|
1563
1677
|
};
|
1564
|
-
const generateMeasureEncoding = (measures, encoding)=>{
|
1565
|
-
encoding.tooltip = measures.map((item)=>item.id);
|
1566
|
-
encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
1567
|
-
const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
1568
|
-
if (color.length > 0) encoding.color = color;
|
1569
|
-
};
|
1570
1678
|
const generateDimensionEncoding = (dimensions, encoding)=>{
|
1571
|
-
encoding.x = chunk_QJLMYOTX_i(dimensions.filter((item)=>'xAxis' === item.encoding
|
1679
|
+
encoding.x = chunk_QJLMYOTX_i(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
|
1572
1680
|
encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
1573
1681
|
encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
1574
1682
|
if (0 === encoding.x.length) encoding.x = [
|
1575
1683
|
dimensions[0].id
|
1576
1684
|
];
|
1577
|
-
if (0 === encoding.color.length) encoding.color =
|
1578
|
-
|
1685
|
+
if (0 === encoding.color.length) encoding.color = [
|
1686
|
+
MeasureName
|
1687
|
+
];
|
1688
|
+
};
|
1689
|
+
const generateDefaultMeasureEncoding = (measures, encoding)=>{
|
1690
|
+
encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
|
1691
|
+
encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
1692
|
+
};
|
1693
|
+
const generateMeasureEncoding = (measures, encoding)=>{
|
1694
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
1695
|
+
encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
1696
|
+
const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
1697
|
+
if (color.length > 0) encoding.color = color;
|
1698
|
+
};
|
1699
|
+
const isMeasureTreeWithChildren = (vseed)=>{
|
1700
|
+
const { measures } = vseed;
|
1701
|
+
if (!measures) return false;
|
1702
|
+
return measures.some((measure)=>'children' in measure);
|
1703
|
+
};
|
1704
|
+
const isMeasureTreeWithParentId = (vseed)=>{
|
1705
|
+
const { measures } = vseed;
|
1706
|
+
if (!measures) return false;
|
1707
|
+
return measures.some((measure)=>'parentId' in measure);
|
1579
1708
|
};
|
1580
1709
|
const measureDepth = (measures = [])=>{
|
1581
1710
|
if (!measures) return 0;
|
@@ -1635,9 +1764,7 @@
|
|
1635
1764
|
advancedVSeed.measures = generateMeasuresByParentId(vseed.measures);
|
1636
1765
|
return advancedVSeed;
|
1637
1766
|
}
|
1638
|
-
|
1639
|
-
if (isPivotChart(vseed)) advancedVSeed.measures = basicMeasuresToMeasureTree(basicMeasures);
|
1640
|
-
else advancedVSeed.measures = basicMeasures;
|
1767
|
+
if (isPivotChart(vseed)) advancedVSeed.measures = basicMeasuresToMeasureTree(advancedVSeed.measures);
|
1641
1768
|
return advancedVSeed;
|
1642
1769
|
};
|
1643
1770
|
const generateMeasuresByParentId = (measures)=>{
|
@@ -1668,45 +1795,6 @@
|
|
1668
1795
|
}
|
1669
1796
|
];
|
1670
1797
|
};
|
1671
|
-
const autoDimensions_autoDimensions = (advancedVSeed, context)=>{
|
1672
|
-
const result = {
|
1673
|
-
...advancedVSeed
|
1674
|
-
};
|
1675
|
-
const { vseed } = context;
|
1676
|
-
const { dimensions, dataset } = vseed;
|
1677
|
-
const measures = findAllMeasures(advancedVSeed.measures);
|
1678
|
-
const MeaName = {
|
1679
|
-
id: MeasureName,
|
1680
|
-
alias: intl.i18n`指标名称`
|
1681
|
-
};
|
1682
|
-
if (!dataset) throw new Error('dataset is required');
|
1683
|
-
if (0 === dataset.length) return result;
|
1684
|
-
if (dimensions) {
|
1685
|
-
result.dimensions = dimensions.map((dim)=>({
|
1686
|
-
location: 'dimension',
|
1687
|
-
...dim
|
1688
|
-
}));
|
1689
|
-
if (result.dimensions.some((dim)=>dim.id === MeasureName)) return result;
|
1690
|
-
result.dimensions.push(MeaName);
|
1691
|
-
return result;
|
1692
|
-
}
|
1693
|
-
const top100dataset = dataset.slice(0, 100);
|
1694
|
-
const sample = top100dataset.reduce((prev, cur)=>({
|
1695
|
-
...prev,
|
1696
|
-
...cur
|
1697
|
-
}), {});
|
1698
|
-
result.dimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
|
1699
|
-
'',
|
1700
|
-
null,
|
1701
|
-
void 0
|
1702
|
-
].includes(key) && !measures.some((measure)=>measure.id === key)).map((dim)=>({
|
1703
|
-
id: dim,
|
1704
|
-
alias: dim,
|
1705
|
-
location: 'dimension'
|
1706
|
-
}));
|
1707
|
-
result.dimensions.push(MeaName);
|
1708
|
-
return result;
|
1709
|
-
};
|
1710
1798
|
const pivotAdapter = (pipeline, pivotPipeline)=>(advancedVSeed, context)=>{
|
1711
1799
|
const { vseed } = context;
|
1712
1800
|
const usePivotChart = isPivotChart(vseed);
|
@@ -1727,78 +1815,6 @@
|
|
1727
1815
|
});
|
1728
1816
|
};
|
1729
1817
|
}
|
1730
|
-
function chunk_AIG3BDKO_i(...e) {
|
1731
|
-
return chunk_WIMGWYZL_u(chunk_AIG3BDKO_n, e);
|
1732
|
-
}
|
1733
|
-
var chunk_AIG3BDKO_n = (e, r)=>e.length >= r;
|
1734
|
-
function chunk_KI5X74E2_y(...t) {
|
1735
|
-
return chunk_WIMGWYZL_u(chunk_KI5X74E2_f, t);
|
1736
|
-
}
|
1737
|
-
function chunk_KI5X74E2_f(t, e) {
|
1738
|
-
if (!chunk_AIG3BDKO_i(e, 1)) return {
|
1739
|
-
...t
|
1740
|
-
};
|
1741
|
-
if (!chunk_AIG3BDKO_i(e, 2)) {
|
1742
|
-
let { [e[0]]: r, ...m } = t;
|
1743
|
-
return m;
|
1744
|
-
}
|
1745
|
-
let o = {
|
1746
|
-
...t
|
1747
|
-
};
|
1748
|
-
for (let r of e)delete o[r];
|
1749
|
-
return o;
|
1750
|
-
}
|
1751
|
-
const foldMeasures = (dataset, measures, options)=>{
|
1752
|
-
const { measureId, measureName, measureValue, colorMeasureId } = options || {};
|
1753
|
-
const foldInfo = {
|
1754
|
-
measureId,
|
1755
|
-
measureName,
|
1756
|
-
measureValue,
|
1757
|
-
colorRange: [
|
1758
|
-
0,
|
1759
|
-
1
|
1760
|
-
],
|
1761
|
-
measureRange: [
|
1762
|
-
0,
|
1763
|
-
1
|
1764
|
-
],
|
1765
|
-
foldMap: {}
|
1766
|
-
};
|
1767
|
-
const result = new Array(dataset.length * measures.length);
|
1768
|
-
let index = 0;
|
1769
|
-
const ids = measures.map((d)=>d.id);
|
1770
|
-
for(let i = 0; i < dataset.length; i++)for(let j = 0; j < measures.length; j++){
|
1771
|
-
const datum = chunk_KI5X74E2_y({
|
1772
|
-
...dataset[i]
|
1773
|
-
}, ids);
|
1774
|
-
datum[ORIGINAL_DATA] = dataset[i];
|
1775
|
-
const measure = measures[j];
|
1776
|
-
const { id, alias } = measure;
|
1777
|
-
datum[id] = dataset[i][id];
|
1778
|
-
datum[measureId] = id;
|
1779
|
-
datum[measureName] = alias || id;
|
1780
|
-
datum[measureValue] = dataset[i][id];
|
1781
|
-
if (colorMeasureId) {
|
1782
|
-
const value = datum[ORIGINAL_DATA][colorMeasureId];
|
1783
|
-
datum[ColorEncoding] = value;
|
1784
|
-
datum[ColorIdEncoding] = colorMeasureId;
|
1785
|
-
foldInfo.colorRange = [
|
1786
|
-
Math.min(foldInfo.colorRange[0] || 1 / 0, Number(value)),
|
1787
|
-
Math.max(foldInfo.colorRange[1] || -1 / 0, Number(value))
|
1788
|
-
];
|
1789
|
-
}
|
1790
|
-
foldInfo.measureRange = [
|
1791
|
-
Math.min(foldInfo.measureRange[0] || 1 / 0, Number(datum[id])),
|
1792
|
-
Math.max(foldInfo.measureRange[1] || -1 / 0, Number(datum[id]))
|
1793
|
-
];
|
1794
|
-
foldInfo.foldMap[id] = alias;
|
1795
|
-
result[index++] = datum;
|
1796
|
-
}
|
1797
|
-
return {
|
1798
|
-
dataset: result,
|
1799
|
-
foldInfo
|
1800
|
-
};
|
1801
|
-
};
|
1802
1818
|
const unfoldDimensions = (dataset, dimensions, encoding, options)=>{
|
1803
1819
|
const { foldMeasureId, separator, colorItemAsId } = options;
|
1804
1820
|
const unfoldInfo = {
|
@@ -1893,7 +1909,9 @@
|
|
1893
1909
|
const { dimensions, measures, encoding } = advancedVSeed;
|
1894
1910
|
if (!measures || !dimensions || !dataset || !encoding) return result;
|
1895
1911
|
if (0 === measures.length) throw new Error('measures can not be empty');
|
1912
|
+
const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
|
1896
1913
|
const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, T(dimensions, (item)=>item.id), T(findAllMeasures(measures), (item)=>item.id), encoding, {
|
1914
|
+
colorItemAsId: hasEncoding,
|
1897
1915
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
1898
1916
|
});
|
1899
1917
|
return {
|
@@ -1924,6 +1942,7 @@
|
|
1924
1942
|
if (measures) measures.forEach((measure)=>{
|
1925
1943
|
if (measure.children && measure.children.length > 0) measureGroups.push(measure);
|
1926
1944
|
});
|
1945
|
+
const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
|
1927
1946
|
const datasets = [];
|
1928
1947
|
const datasetReshapeInfo = [];
|
1929
1948
|
measureGroups.forEach((measureGroup, index)=>{
|
@@ -1931,6 +1950,7 @@
|
|
1931
1950
|
if (!measures) return;
|
1932
1951
|
const groupId = measureGroup.id;
|
1933
1952
|
const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, T(dimensions, (item)=>item.id), T(measures, (item)=>item.id), encoding, {
|
1953
|
+
colorItemAsId: hasEncoding,
|
1934
1954
|
foldMeasureValue: `${FoldMeasureValue}${groupId}`,
|
1935
1955
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
1936
1956
|
});
|
@@ -2148,9 +2168,11 @@
|
|
2148
2168
|
};
|
2149
2169
|
const lineAdvancedPipeline = [
|
2150
2170
|
initAdvancedVSeed_initAdvancedVSeed,
|
2171
|
+
defaultMeasures_defaultMeasures,
|
2172
|
+
defaultDimensions,
|
2173
|
+
defaultMeasureName,
|
2151
2174
|
encodingForLine,
|
2152
2175
|
buildMeasures,
|
2153
|
-
autoDimensions_autoDimensions,
|
2154
2176
|
pivotAdapter([
|
2155
2177
|
reshapeWithEncoding
|
2156
2178
|
], [
|
@@ -2497,129 +2519,18 @@
|
|
2497
2519
|
domainLine: {
|
2498
2520
|
visible: line?.visible,
|
2499
2521
|
style: {
|
2500
|
-
lineWidth: line?.lineWidth,
|
2501
|
-
stroke: line?.lineColor
|
2502
|
-
}
|
2503
|
-
},
|
2504
|
-
innerOffset: {
|
2505
|
-
top: LINEAR_AXIS_INNER_OFFSET_TOP
|
2506
|
-
}
|
2507
|
-
};
|
2508
|
-
result.axes = [
|
2509
|
-
...result.axes,
|
2510
|
-
linearAxis
|
2511
|
-
];
|
2512
|
-
return result;
|
2513
|
-
};
|
2514
|
-
const label_label = (spec, context)=>{
|
2515
|
-
const result = {
|
2516
|
-
...spec
|
2517
|
-
};
|
2518
|
-
const { advancedVSeed } = context;
|
2519
|
-
const { measures, datasetReshapeInfo, locale } = advancedVSeed;
|
2520
|
-
const { chartType } = advancedVSeed;
|
2521
|
-
const baseConfig = advancedVSeed.config[chartType];
|
2522
|
-
if (!baseConfig || !baseConfig.label) return result;
|
2523
|
-
const { measureId, measureValue } = datasetReshapeInfo[0].foldInfo;
|
2524
|
-
const { label } = baseConfig;
|
2525
|
-
const { enable } = label;
|
2526
|
-
result.label = {
|
2527
|
-
visible: enable,
|
2528
|
-
formatMethod: (value, datum)=>{
|
2529
|
-
const result = [];
|
2530
|
-
const formatValue = (value)=>{
|
2531
|
-
const id = datum[measureId];
|
2532
|
-
const measure = findMeasureById(measures, id);
|
2533
|
-
if (!measure) return value;
|
2534
|
-
const { format = {}, autoFormat = true } = measure;
|
2535
|
-
if (!chunk_VCYTMP4D_n(format)) {
|
2536
|
-
const formatter = createFormatter(format);
|
2537
|
-
return formatter(value);
|
2538
|
-
}
|
2539
|
-
if (autoFormat) return autoFormatter(value, locale);
|
2540
|
-
return String(value);
|
2541
|
-
};
|
2542
|
-
result.push(formatValue(datum[measureValue]));
|
2543
|
-
return result.join(' ');
|
2544
|
-
}
|
2545
|
-
};
|
2546
|
-
return result;
|
2547
|
-
};
|
2548
|
-
const tooltip_tooltip = (spec, context)=>{
|
2549
|
-
const result = {
|
2550
|
-
...spec
|
2551
|
-
};
|
2552
|
-
const { advancedVSeed } = context;
|
2553
|
-
const { measures, datasetReshapeInfo, chartType, locale, dimensions } = advancedVSeed;
|
2554
|
-
const baseConfig = advancedVSeed.config[chartType];
|
2555
|
-
const { tooltip = {
|
2556
|
-
enable: true
|
2557
|
-
} } = baseConfig;
|
2558
|
-
const { enable } = tooltip;
|
2559
|
-
const { measureId, measureValue, measureName } = datasetReshapeInfo[0].foldInfo;
|
2560
|
-
const { encodingColor: colorName } = datasetReshapeInfo[0].unfoldInfo;
|
2561
|
-
result.tooltip = {
|
2562
|
-
visible: enable,
|
2563
|
-
mark: {
|
2564
|
-
title: {
|
2565
|
-
visible: true
|
2566
|
-
},
|
2567
|
-
content: [
|
2568
|
-
...dimensions.map((item)=>({
|
2569
|
-
visible: true,
|
2570
|
-
hasShape: true,
|
2571
|
-
shapeType: 'rectRound',
|
2572
|
-
key: (datum)=>{
|
2573
|
-
if (item.alias || item.id) return item.alias || item.id;
|
2574
|
-
return datum && datum[item.id];
|
2575
|
-
},
|
2576
|
-
value: (datum)=>datum && datum[item.id]
|
2577
|
-
})),
|
2578
|
-
{
|
2579
|
-
visible: true,
|
2580
|
-
hasShape: true,
|
2581
|
-
key: (datum)=>datum && datum[measureName || colorName] || '',
|
2582
|
-
value: (datum)=>{
|
2583
|
-
if (!datum) return '';
|
2584
|
-
const value = datum[measureValue];
|
2585
|
-
const id = datum[measureId];
|
2586
|
-
const measure = findMeasureById(measures, id);
|
2587
|
-
if (!measure) return String(value);
|
2588
|
-
const { format = {}, autoFormat = true } = measure;
|
2589
|
-
if (!chunk_VCYTMP4D_n(format)) {
|
2590
|
-
const formatter = createFormatter(format);
|
2591
|
-
return formatter(value);
|
2592
|
-
}
|
2593
|
-
if (autoFormat) return autoFormatter(value, locale);
|
2594
|
-
return String(value);
|
2595
|
-
}
|
2596
|
-
}
|
2597
|
-
]
|
2522
|
+
lineWidth: line?.lineWidth,
|
2523
|
+
stroke: line?.lineColor
|
2524
|
+
}
|
2598
2525
|
},
|
2599
|
-
|
2600
|
-
|
2601
|
-
{
|
2602
|
-
visible: true,
|
2603
|
-
key: (datum)=>datum && datum[colorName] || '',
|
2604
|
-
value: (datum)=>{
|
2605
|
-
if (!datum) return '';
|
2606
|
-
const value = datum[measureValue];
|
2607
|
-
const id = datum[measureId];
|
2608
|
-
const measure = findMeasureById(measures, id);
|
2609
|
-
if (!measure) return String(value);
|
2610
|
-
const { format = {}, autoFormat = true } = measure;
|
2611
|
-
if (!chunk_VCYTMP4D_n(format)) {
|
2612
|
-
const formatter = createFormatter(format);
|
2613
|
-
return formatter(value);
|
2614
|
-
}
|
2615
|
-
if (autoFormat) return autoFormatter(value, locale);
|
2616
|
-
return String(value);
|
2617
|
-
},
|
2618
|
-
shapeType: 'rectRound'
|
2619
|
-
}
|
2620
|
-
]
|
2526
|
+
innerOffset: {
|
2527
|
+
top: LINEAR_AXIS_INNER_OFFSET_TOP
|
2621
2528
|
}
|
2622
2529
|
};
|
2530
|
+
result.axes = [
|
2531
|
+
...result.axes,
|
2532
|
+
linearAxis
|
2533
|
+
];
|
2623
2534
|
return result;
|
2624
2535
|
};
|
2625
2536
|
const verticalCrosshairLine = (spec, context)=>{
|
@@ -3146,6 +3057,117 @@
|
|
3146
3057
|
}
|
3147
3058
|
};
|
3148
3059
|
};
|
3060
|
+
const label_label = (spec, context)=>{
|
3061
|
+
const result = {
|
3062
|
+
...spec
|
3063
|
+
};
|
3064
|
+
const { advancedVSeed } = context;
|
3065
|
+
const { measures, datasetReshapeInfo, locale } = advancedVSeed;
|
3066
|
+
const { chartType } = advancedVSeed;
|
3067
|
+
const baseConfig = advancedVSeed.config[chartType];
|
3068
|
+
if (!baseConfig || !baseConfig.label) return result;
|
3069
|
+
const { measureId, measureValue } = datasetReshapeInfo[0].foldInfo;
|
3070
|
+
const { label } = baseConfig;
|
3071
|
+
const { enable } = label;
|
3072
|
+
result.label = {
|
3073
|
+
visible: enable,
|
3074
|
+
formatMethod: (value, datum)=>{
|
3075
|
+
const result = [];
|
3076
|
+
const formatValue = (value)=>{
|
3077
|
+
const id = datum[measureId];
|
3078
|
+
const measure = findMeasureById(measures, id);
|
3079
|
+
if (!measure) return value;
|
3080
|
+
const { format = {}, autoFormat = true } = measure;
|
3081
|
+
if (!chunk_VCYTMP4D_n(format)) {
|
3082
|
+
const formatter = createFormatter(format);
|
3083
|
+
return formatter(value);
|
3084
|
+
}
|
3085
|
+
if (autoFormat) return autoFormatter(value, locale);
|
3086
|
+
return String(value);
|
3087
|
+
};
|
3088
|
+
result.push(formatValue(datum[measureValue]));
|
3089
|
+
return result.join(' ');
|
3090
|
+
}
|
3091
|
+
};
|
3092
|
+
return result;
|
3093
|
+
};
|
3094
|
+
const tooltip_tooltip = (spec, context)=>{
|
3095
|
+
const result = {
|
3096
|
+
...spec
|
3097
|
+
};
|
3098
|
+
const { advancedVSeed } = context;
|
3099
|
+
const { measures, datasetReshapeInfo, chartType, locale, dimensions } = advancedVSeed;
|
3100
|
+
const baseConfig = advancedVSeed.config[chartType];
|
3101
|
+
const { tooltip = {
|
3102
|
+
enable: true
|
3103
|
+
} } = baseConfig;
|
3104
|
+
const { enable } = tooltip;
|
3105
|
+
const { measureId, measureValue, measureName } = datasetReshapeInfo[0].foldInfo;
|
3106
|
+
const { encodingColor: colorName } = datasetReshapeInfo[0].unfoldInfo;
|
3107
|
+
result.tooltip = {
|
3108
|
+
visible: enable,
|
3109
|
+
mark: {
|
3110
|
+
title: {
|
3111
|
+
visible: true
|
3112
|
+
},
|
3113
|
+
content: [
|
3114
|
+
...dimensions.map((item)=>({
|
3115
|
+
visible: true,
|
3116
|
+
hasShape: true,
|
3117
|
+
shapeType: 'rectRound',
|
3118
|
+
key: (datum)=>{
|
3119
|
+
if (item.alias || item.id) return item.alias || item.id;
|
3120
|
+
return datum && datum[item.id];
|
3121
|
+
},
|
3122
|
+
value: (datum)=>datum && datum[item.id]
|
3123
|
+
})),
|
3124
|
+
{
|
3125
|
+
visible: true,
|
3126
|
+
hasShape: true,
|
3127
|
+
key: (datum)=>datum && datum[measureName || colorName] || '',
|
3128
|
+
value: (datum)=>{
|
3129
|
+
if (!datum) return '';
|
3130
|
+
const value = datum[measureValue];
|
3131
|
+
const id = datum[measureId];
|
3132
|
+
const measure = findMeasureById(measures, id);
|
3133
|
+
if (!measure) return String(value);
|
3134
|
+
const { format = {}, autoFormat = true } = measure;
|
3135
|
+
if (!chunk_VCYTMP4D_n(format)) {
|
3136
|
+
const formatter = createFormatter(format);
|
3137
|
+
return formatter(value);
|
3138
|
+
}
|
3139
|
+
if (autoFormat) return autoFormatter(value, locale);
|
3140
|
+
return String(value);
|
3141
|
+
}
|
3142
|
+
}
|
3143
|
+
]
|
3144
|
+
},
|
3145
|
+
dimension: {
|
3146
|
+
content: [
|
3147
|
+
{
|
3148
|
+
visible: true,
|
3149
|
+
key: (datum)=>datum && datum[colorName] || '',
|
3150
|
+
value: (datum)=>{
|
3151
|
+
if (!datum) return '';
|
3152
|
+
const value = datum[measureValue];
|
3153
|
+
const id = datum[measureId];
|
3154
|
+
const measure = findMeasureById(measures, id);
|
3155
|
+
if (!measure) return String(value);
|
3156
|
+
const { format = {}, autoFormat = true } = measure;
|
3157
|
+
if (!chunk_VCYTMP4D_n(format)) {
|
3158
|
+
const formatter = createFormatter(format);
|
3159
|
+
return formatter(value);
|
3160
|
+
}
|
3161
|
+
if (autoFormat) return autoFormatter(value, locale);
|
3162
|
+
return String(value);
|
3163
|
+
},
|
3164
|
+
shapeType: 'rectRound'
|
3165
|
+
}
|
3166
|
+
]
|
3167
|
+
}
|
3168
|
+
};
|
3169
|
+
return result;
|
3170
|
+
};
|
3149
3171
|
const isSubset = (sub, obj)=>Object.entries(sub).every(([key, value])=>{
|
3150
3172
|
if ('string' == typeof value) return obj[key] === value;
|
3151
3173
|
if ('number' == typeof value) return obj[key] === value;
|
@@ -3765,7 +3787,7 @@
|
|
3765
3787
|
const { advancedVSeed } = context;
|
3766
3788
|
const dimensions = advancedVSeed.dimensions;
|
3767
3789
|
if (!dimensions) return result;
|
3768
|
-
const rowDimensions = dimensions.filter((dim)=>'rowDimension' === dim.location);
|
3790
|
+
const rowDimensions = dimensions.filter((dim)=>'rowDimension' === dim.location || 'row' === dim.encoding);
|
3769
3791
|
const rows = rowDimensions.map((dim)=>({
|
3770
3792
|
dimensionKey: dim.id,
|
3771
3793
|
title: dim.alias || dim.id
|
@@ -3782,17 +3804,132 @@
|
|
3782
3804
|
const { advancedVSeed } = context;
|
3783
3805
|
const dimensions = advancedVSeed.dimensions;
|
3784
3806
|
if (!dimensions) return result;
|
3785
|
-
const columnDimensions = dimensions.filter((dim)=>'columnDimension' === dim.location);
|
3807
|
+
const columnDimensions = dimensions.filter((dim)=>'columnDimension' === dim.location || 'column' === dim.encoding);
|
3786
3808
|
const columns = columnDimensions.map((dim)=>({
|
3787
3809
|
dimensionKey: dim.id,
|
3788
3810
|
title: dim.alias || dim.id
|
3789
3811
|
}));
|
3790
3812
|
return {
|
3791
3813
|
...result,
|
3792
|
-
columns: columns
|
3814
|
+
columns: columns
|
3815
|
+
};
|
3816
|
+
};
|
3817
|
+
const pivotDiscreteLegend = (spec, context)=>{
|
3818
|
+
const result = {
|
3819
|
+
...spec
|
3820
|
+
};
|
3821
|
+
const { advancedVSeed } = context;
|
3822
|
+
const { chartType } = advancedVSeed;
|
3823
|
+
const baseConfig = advancedVSeed.config[chartType];
|
3824
|
+
if (!baseConfig || !baseConfig.legend) return result;
|
3825
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
3826
|
+
const colorItems = chunk_QJLMYOTX_i(datasetReshapeInfo.flatMap((d)=>d.unfoldInfo.colorItems));
|
3827
|
+
const colorIdMap = datasetReshapeInfo.reduce((prev, cur)=>({
|
3828
|
+
...prev,
|
3829
|
+
...cur.unfoldInfo.colorIdMap
|
3830
|
+
}), {});
|
3831
|
+
const { legend, color } = baseConfig;
|
3832
|
+
const { colorScheme, colorMapping } = color;
|
3833
|
+
const colorSpecified = createSpecifiedForColorMapping(colorMapping, colorIdMap, colorItems);
|
3834
|
+
const { enable, position = 'bottom', labelFontColor, labelFontSize = 12, labelFontWeight = 400, maxSize = 1, border, shapeType = 'rectRound' } = legend || {};
|
3835
|
+
const orient = [
|
3836
|
+
'bottom',
|
3837
|
+
'bottomLeft',
|
3838
|
+
'bottomRight',
|
3839
|
+
'bl',
|
3840
|
+
'br'
|
3841
|
+
].includes(position) ? 'bottom' : [
|
3842
|
+
'top',
|
3843
|
+
'topLeft',
|
3844
|
+
'topRight',
|
3845
|
+
'tl',
|
3846
|
+
'tr'
|
3847
|
+
].includes(position) ? 'top' : [
|
3848
|
+
'left',
|
3849
|
+
'leftTop',
|
3850
|
+
'leftBottom',
|
3851
|
+
'lt',
|
3852
|
+
'lb'
|
3853
|
+
].includes(position) ? 'left' : 'right';
|
3854
|
+
const legendPosition = [
|
3855
|
+
'topLeft',
|
3856
|
+
'bottomLeft',
|
3857
|
+
'leftTop',
|
3858
|
+
'rightTop',
|
3859
|
+
'lt',
|
3860
|
+
'rt',
|
3861
|
+
'tl',
|
3862
|
+
'bl'
|
3863
|
+
].includes(position) ? 'start' : [
|
3864
|
+
'topRight',
|
3865
|
+
'bottomRight',
|
3866
|
+
'leftBottom',
|
3867
|
+
'rightBottom',
|
3868
|
+
'lb',
|
3869
|
+
'rb',
|
3870
|
+
'rt',
|
3871
|
+
'br'
|
3872
|
+
].includes(position) ? 'end' : 'middle';
|
3873
|
+
const legends = {
|
3874
|
+
visible: enable,
|
3875
|
+
type: 'discrete',
|
3876
|
+
orient,
|
3877
|
+
position: legendPosition,
|
3878
|
+
maxCol: Math.max(1, maxSize),
|
3879
|
+
maxRow: Math.max(1, maxSize),
|
3880
|
+
data: colorItems.map((d, index)=>{
|
3881
|
+
const color = colorSpecified?.[d] ?? colorScheme?.[index % colorScheme.length];
|
3882
|
+
return {
|
3883
|
+
label: d,
|
3884
|
+
shape: {
|
3885
|
+
outerBorder: border ? {
|
3886
|
+
stroke: color,
|
3887
|
+
distance: 3,
|
3888
|
+
lineWidth: 1
|
3889
|
+
} : void 0,
|
3890
|
+
fill: color
|
3891
|
+
}
|
3892
|
+
};
|
3893
|
+
}),
|
3894
|
+
item: {
|
3895
|
+
focus: true,
|
3896
|
+
maxWidth: '30%',
|
3897
|
+
focusIconStyle: {
|
3898
|
+
size: labelFontSize + 2,
|
3899
|
+
fill: labelFontColor,
|
3900
|
+
fontWeight: labelFontWeight
|
3901
|
+
},
|
3902
|
+
shape: {
|
3903
|
+
space: border ? 6 : 4,
|
3904
|
+
style: {
|
3905
|
+
symbolType: shapeType,
|
3906
|
+
size: border ? 8 : 10
|
3907
|
+
}
|
3908
|
+
},
|
3909
|
+
label: {
|
3910
|
+
formatMethod: (value)=>colorIdMap[value] ?? value,
|
3911
|
+
style: {
|
3912
|
+
fontSize: labelFontSize,
|
3913
|
+
fill: labelFontColor,
|
3914
|
+
fontWeight: labelFontWeight
|
3915
|
+
}
|
3916
|
+
},
|
3917
|
+
background: {
|
3918
|
+
state: {
|
3919
|
+
selectedHover: {
|
3920
|
+
fill: labelFontColor,
|
3921
|
+
fillOpacity: 0.05
|
3922
|
+
}
|
3923
|
+
}
|
3924
|
+
}
|
3925
|
+
}
|
3926
|
+
};
|
3927
|
+
return {
|
3928
|
+
...result,
|
3929
|
+
legends
|
3793
3930
|
};
|
3794
3931
|
};
|
3795
|
-
const
|
3932
|
+
const pivotColorLegend = (spec, context)=>{
|
3796
3933
|
const result = {
|
3797
3934
|
...spec
|
3798
3935
|
};
|
@@ -3801,15 +3938,11 @@
|
|
3801
3938
|
const baseConfig = advancedVSeed.config[chartType];
|
3802
3939
|
if (!baseConfig || !baseConfig.legend) return result;
|
3803
3940
|
const { datasetReshapeInfo } = advancedVSeed;
|
3804
|
-
const
|
3805
|
-
const
|
3806
|
-
...prev,
|
3807
|
-
...cur.unfoldInfo.colorIdMap
|
3808
|
-
}), {});
|
3941
|
+
const max = Math.max(...datasetReshapeInfo.map((d)=>d.foldInfo.colorRange[1]));
|
3942
|
+
const min = Math.min(...datasetReshapeInfo.map((d)=>d.foldInfo.colorRange[0]));
|
3809
3943
|
const { legend, color } = baseConfig;
|
3810
|
-
const { colorScheme,
|
3811
|
-
const
|
3812
|
-
const { enable, position = 'bottom', labelFontColor, labelFontSize = 12, labelFontWeight = 400, maxSize = 1, border, shapeType = 'rectRound' } = legend || {};
|
3944
|
+
const { colorScheme, linearColorScheme } = color;
|
3945
|
+
const { enable, position = 'bottom', labelFontColor, labelFontSize = 12, labelFontWeight = 400 } = legend || {};
|
3813
3946
|
const orient = [
|
3814
3947
|
'bottom',
|
3815
3948
|
'bottomLeft',
|
@@ -3850,55 +3983,31 @@
|
|
3850
3983
|
].includes(position) ? 'end' : 'middle';
|
3851
3984
|
const legends = {
|
3852
3985
|
visible: enable,
|
3853
|
-
type: '
|
3986
|
+
type: 'color',
|
3854
3987
|
orient,
|
3855
3988
|
position: legendPosition,
|
3856
|
-
|
3857
|
-
|
3858
|
-
|
3859
|
-
|
3860
|
-
|
3861
|
-
|
3862
|
-
|
3863
|
-
|
3864
|
-
|
3865
|
-
|
3866
|
-
|
3867
|
-
} : void 0,
|
3868
|
-
fill: color
|
3869
|
-
}
|
3870
|
-
};
|
3871
|
-
}),
|
3872
|
-
item: {
|
3873
|
-
focus: true,
|
3874
|
-
maxWidth: '30%',
|
3875
|
-
focusIconStyle: {
|
3876
|
-
size: labelFontSize + 2,
|
3989
|
+
colors: linearColorScheme || colorScheme || [],
|
3990
|
+
value: [
|
3991
|
+
min,
|
3992
|
+
max
|
3993
|
+
],
|
3994
|
+
min: min,
|
3995
|
+
max: max,
|
3996
|
+
maxWidth: '30%',
|
3997
|
+
startText: {
|
3998
|
+
visible: true,
|
3999
|
+
style: {
|
3877
4000
|
fill: labelFontColor,
|
4001
|
+
fontSize: labelFontSize,
|
4002
|
+
fontWeight: labelFontWeight
|
4003
|
+
}
|
4004
|
+
},
|
4005
|
+
endText: {
|
4006
|
+
visible: true,
|
4007
|
+
style: {
|
4008
|
+
fill: labelFontColor,
|
4009
|
+
fontSize: labelFontSize,
|
3878
4010
|
fontWeight: labelFontWeight
|
3879
|
-
},
|
3880
|
-
shape: {
|
3881
|
-
space: border ? 6 : 4,
|
3882
|
-
style: {
|
3883
|
-
symbolType: shapeType,
|
3884
|
-
size: border ? 8 : 10
|
3885
|
-
}
|
3886
|
-
},
|
3887
|
-
label: {
|
3888
|
-
formatMethod: (value)=>colorIdMap[value] ?? value,
|
3889
|
-
style: {
|
3890
|
-
fontSize: labelFontSize,
|
3891
|
-
fill: labelFontColor,
|
3892
|
-
fontWeight: labelFontWeight
|
3893
|
-
}
|
3894
|
-
},
|
3895
|
-
background: {
|
3896
|
-
state: {
|
3897
|
-
selectedHover: {
|
3898
|
-
fill: labelFontColor,
|
3899
|
-
fillOpacity: 0.05
|
3900
|
-
}
|
3901
|
-
}
|
3902
4011
|
}
|
3903
4012
|
}
|
3904
4013
|
};
|
@@ -3921,13 +4030,13 @@
|
|
3921
4030
|
progressive,
|
3922
4031
|
xBand,
|
3923
4032
|
yLinear,
|
3924
|
-
label_label,
|
3925
|
-
tooltip_tooltip,
|
3926
4033
|
verticalCrosshairLine,
|
3927
4034
|
colorAdapter(discreteLegend, colorLegend),
|
3928
4035
|
colorPointStyleFill(pointStyle_pointStyle),
|
3929
4036
|
pointStateDimensionHover,
|
3930
4037
|
colorLineStyleFill(lineStyle_lineStyle),
|
4038
|
+
label_label,
|
4039
|
+
tooltip_tooltip,
|
3931
4040
|
annotationPoint_annotationPoint,
|
3932
4041
|
annotationVerticalLine_annotationVerticalLine,
|
3933
4042
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -3940,18 +4049,18 @@
|
|
3940
4049
|
datasetPivot,
|
3941
4050
|
pivotIndicators_pivotIndicators([
|
3942
4051
|
initLine,
|
3943
|
-
color_color,
|
4052
|
+
colorAdapter(color_color, linearColor),
|
3944
4053
|
background_backgroundColor,
|
3945
4054
|
datasetXY,
|
3946
4055
|
progressive,
|
3947
4056
|
xBand,
|
3948
4057
|
yLinear,
|
3949
|
-
label_label,
|
3950
|
-
tooltip_tooltip,
|
3951
4058
|
verticalCrosshairLine,
|
3952
|
-
pointStyle_pointStyle,
|
4059
|
+
colorPointStyleFill(pointStyle_pointStyle),
|
3953
4060
|
pointStateDimensionHover,
|
3954
|
-
lineStyle_lineStyle,
|
4061
|
+
colorLineStyleFill(lineStyle_lineStyle),
|
4062
|
+
label_label,
|
4063
|
+
tooltip_tooltip,
|
3955
4064
|
annotationPoint_annotationPoint,
|
3956
4065
|
annotationVerticalLine_annotationVerticalLine,
|
3957
4066
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -3959,7 +4068,7 @@
|
|
3959
4068
|
]),
|
3960
4069
|
pivotRowDimensions,
|
3961
4070
|
pivotColumnDimensions,
|
3962
|
-
pivotDiscreteLegend
|
4071
|
+
colorAdapter(pivotDiscreteLegend, pivotColorLegend)
|
3963
4072
|
];
|
3964
4073
|
const lineSpecPipeline = [
|
3965
4074
|
pivotAdapter_pivotAdapter(line_line, pivotLine)
|
@@ -3968,11 +4077,9 @@
|
|
3968
4077
|
Builder._advancedPipelineMap.line = lineAdvancedPipeline;
|
3969
4078
|
Builder._specPipelineMap.line = lineSpecPipeline;
|
3970
4079
|
};
|
3971
|
-
const encodingForColumn = (advancedVSeed
|
3972
|
-
const {
|
3973
|
-
const
|
3974
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
3975
|
-
const dimensions = getBasicDimensions(vseed);
|
4080
|
+
const encodingForColumn = (advancedVSeed)=>{
|
4081
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
4082
|
+
const measures = findAllMeasures(vseedMeasures);
|
3976
4083
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
3977
4084
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
3978
4085
|
const encoding = {};
|
@@ -3985,10 +4092,6 @@
|
|
3985
4092
|
encoding
|
3986
4093
|
};
|
3987
4094
|
};
|
3988
|
-
const column_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
3989
|
-
encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
|
3990
|
-
encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
3991
|
-
};
|
3992
4095
|
const column_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
3993
4096
|
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
3994
4097
|
const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
|
@@ -4000,28 +4103,35 @@
|
|
4000
4103
|
encoding.row = [];
|
4001
4104
|
encoding.column = [];
|
4002
4105
|
};
|
4003
|
-
const column_generateMeasureEncoding = (measures, encoding)=>{
|
4004
|
-
encoding.tooltip = measures.map((item)=>item.id);
|
4005
|
-
encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
4006
|
-
const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
4007
|
-
if (color.length > 0) encoding.color = color;
|
4008
|
-
return encoding;
|
4009
|
-
};
|
4010
4106
|
const column_generateDimensionEncoding = (dimensions, encoding)=>{
|
4011
|
-
encoding.x = chunk_QJLMYOTX_i(dimensions.filter((item)=>'xAxis' === item.encoding
|
4107
|
+
encoding.x = chunk_QJLMYOTX_i(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
|
4012
4108
|
encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
4013
4109
|
encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
4014
4110
|
if (0 === encoding.x.length) encoding.x = [
|
4015
4111
|
dimensions[0].id
|
4016
4112
|
];
|
4017
|
-
if (0 === encoding.color.length) encoding.color =
|
4018
|
-
|
4113
|
+
if (0 === encoding.color.length) encoding.color = [
|
4114
|
+
MeasureName
|
4115
|
+
];
|
4116
|
+
};
|
4117
|
+
const column_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
4118
|
+
encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
|
4119
|
+
encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
4120
|
+
};
|
4121
|
+
const column_generateMeasureEncoding = (measures, encoding)=>{
|
4122
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
4123
|
+
encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
4124
|
+
const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
4125
|
+
if (color.length > 0) encoding.color = color;
|
4126
|
+
return encoding;
|
4019
4127
|
};
|
4020
4128
|
const columnAdvancedPipeline = [
|
4021
4129
|
initAdvancedVSeed_initAdvancedVSeed,
|
4130
|
+
defaultMeasures_defaultMeasures,
|
4131
|
+
defaultDimensions,
|
4132
|
+
defaultMeasureName,
|
4022
4133
|
encodingForColumn,
|
4023
4134
|
buildMeasures,
|
4024
|
-
autoDimensions_autoDimensions,
|
4025
4135
|
pivotAdapter([
|
4026
4136
|
reshapeWithEncoding
|
4027
4137
|
], [
|
@@ -4324,93 +4434,6 @@
|
|
4324
4434
|
markArea: markArea
|
4325
4435
|
};
|
4326
4436
|
};
|
4327
|
-
const pivotColorLegend = (spec, context)=>{
|
4328
|
-
const result = {
|
4329
|
-
...spec
|
4330
|
-
};
|
4331
|
-
const { advancedVSeed } = context;
|
4332
|
-
const { chartType } = advancedVSeed;
|
4333
|
-
const baseConfig = advancedVSeed.config[chartType];
|
4334
|
-
if (!baseConfig || !baseConfig.legend) return result;
|
4335
|
-
const { datasetReshapeInfo } = advancedVSeed;
|
4336
|
-
const max = Math.max(...datasetReshapeInfo.map((d)=>d.foldInfo.colorRange[1]));
|
4337
|
-
const min = Math.min(...datasetReshapeInfo.map((d)=>d.foldInfo.colorRange[0]));
|
4338
|
-
const { legend, color } = baseConfig;
|
4339
|
-
const { colorScheme, linearColorScheme } = color;
|
4340
|
-
const { enable, position = 'bottom', labelFontColor, labelFontSize = 12, labelFontWeight = 400 } = legend || {};
|
4341
|
-
const orient = [
|
4342
|
-
'bottom',
|
4343
|
-
'bottomLeft',
|
4344
|
-
'bottomRight',
|
4345
|
-
'bl',
|
4346
|
-
'br'
|
4347
|
-
].includes(position) ? 'bottom' : [
|
4348
|
-
'top',
|
4349
|
-
'topLeft',
|
4350
|
-
'topRight',
|
4351
|
-
'tl',
|
4352
|
-
'tr'
|
4353
|
-
].includes(position) ? 'top' : [
|
4354
|
-
'left',
|
4355
|
-
'leftTop',
|
4356
|
-
'leftBottom',
|
4357
|
-
'lt',
|
4358
|
-
'lb'
|
4359
|
-
].includes(position) ? 'left' : 'right';
|
4360
|
-
const legendPosition = [
|
4361
|
-
'topLeft',
|
4362
|
-
'bottomLeft',
|
4363
|
-
'leftTop',
|
4364
|
-
'rightTop',
|
4365
|
-
'lt',
|
4366
|
-
'rt',
|
4367
|
-
'tl',
|
4368
|
-
'bl'
|
4369
|
-
].includes(position) ? 'start' : [
|
4370
|
-
'topRight',
|
4371
|
-
'bottomRight',
|
4372
|
-
'leftBottom',
|
4373
|
-
'rightBottom',
|
4374
|
-
'lb',
|
4375
|
-
'rb',
|
4376
|
-
'rt',
|
4377
|
-
'br'
|
4378
|
-
].includes(position) ? 'end' : 'middle';
|
4379
|
-
const legends = {
|
4380
|
-
visible: enable,
|
4381
|
-
type: 'color',
|
4382
|
-
orient,
|
4383
|
-
position: legendPosition,
|
4384
|
-
colors: linearColorScheme || colorScheme || [],
|
4385
|
-
value: [
|
4386
|
-
min,
|
4387
|
-
max
|
4388
|
-
],
|
4389
|
-
min: min,
|
4390
|
-
max: max,
|
4391
|
-
maxWidth: '30%',
|
4392
|
-
startText: {
|
4393
|
-
visible: true,
|
4394
|
-
style: {
|
4395
|
-
fill: labelFontColor,
|
4396
|
-
fontSize: labelFontSize,
|
4397
|
-
fontWeight: labelFontWeight
|
4398
|
-
}
|
4399
|
-
},
|
4400
|
-
endText: {
|
4401
|
-
visible: true,
|
4402
|
-
style: {
|
4403
|
-
fill: labelFontColor,
|
4404
|
-
fontSize: labelFontSize,
|
4405
|
-
fontWeight: labelFontWeight
|
4406
|
-
}
|
4407
|
-
}
|
4408
|
-
};
|
4409
|
-
return {
|
4410
|
-
...result,
|
4411
|
-
legends
|
4412
|
-
};
|
4413
|
-
};
|
4414
4437
|
const column = [
|
4415
4438
|
initColumn,
|
4416
4439
|
stackCornerRadius_stackCornerRadius,
|
@@ -4468,9 +4491,11 @@
|
|
4468
4491
|
};
|
4469
4492
|
const columnParallelAdvancedPipeline = [
|
4470
4493
|
initAdvancedVSeed_initAdvancedVSeed,
|
4494
|
+
defaultMeasures_defaultMeasures,
|
4495
|
+
defaultDimensions,
|
4496
|
+
defaultMeasureName,
|
4471
4497
|
encodingForColumn,
|
4472
4498
|
buildMeasures,
|
4473
|
-
autoDimensions_autoDimensions,
|
4474
4499
|
pivotAdapter([
|
4475
4500
|
reshapeWithEncoding
|
4476
4501
|
], [
|
@@ -4565,9 +4590,11 @@
|
|
4565
4590
|
};
|
4566
4591
|
const columnPercentAdvancedPipeline = [
|
4567
4592
|
initAdvancedVSeed_initAdvancedVSeed,
|
4593
|
+
defaultMeasures_defaultMeasures,
|
4594
|
+
defaultDimensions,
|
4595
|
+
defaultMeasureName,
|
4568
4596
|
encodingForColumn,
|
4569
4597
|
buildMeasures,
|
4570
|
-
autoDimensions_autoDimensions,
|
4571
4598
|
pivotAdapter([
|
4572
4599
|
reshapeWithEncoding
|
4573
4600
|
], [
|
@@ -4644,11 +4671,9 @@
|
|
4644
4671
|
Builder._advancedPipelineMap.columnPercent = columnPercentAdvancedPipeline;
|
4645
4672
|
Builder._specPipelineMap.columnPercent = columnPercentSpecPipeline;
|
4646
4673
|
};
|
4647
|
-
const encodingForBar = (advancedVSeed
|
4648
|
-
const {
|
4649
|
-
const
|
4650
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
4651
|
-
const dimensions = getBasicDimensions(vseed);
|
4674
|
+
const encodingForBar = (advancedVSeed)=>{
|
4675
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
4676
|
+
const measures = findAllMeasures(vseedMeasures);
|
4652
4677
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
4653
4678
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
4654
4679
|
const encoding = {};
|
@@ -4684,13 +4709,15 @@
|
|
4684
4709
|
return encoding;
|
4685
4710
|
};
|
4686
4711
|
const bar_generateDimensionEncoding = (dimensions, encoding)=>{
|
4687
|
-
encoding.y = chunk_QJLMYOTX_i(dimensions.filter((item)=>'yAxis' === item.encoding
|
4712
|
+
encoding.y = chunk_QJLMYOTX_i(dimensions.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
|
4688
4713
|
encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
4689
4714
|
encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
4690
4715
|
if (0 === encoding.y.length) encoding.y = [
|
4691
4716
|
dimensions[0].id
|
4692
4717
|
];
|
4693
|
-
if (0 === encoding.color.length) encoding.color =
|
4718
|
+
if (0 === encoding.color.length) encoding.color = [
|
4719
|
+
MeasureName
|
4720
|
+
];
|
4694
4721
|
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.y?.includes(item.id)).map((item)=>item.id);
|
4695
4722
|
};
|
4696
4723
|
const sortYBandAxis = (advancedVSeed, context)=>{
|
@@ -4711,9 +4738,11 @@
|
|
4711
4738
|
};
|
4712
4739
|
const barAdvancedPipeline = [
|
4713
4740
|
initAdvancedVSeed_initAdvancedVSeed,
|
4741
|
+
defaultMeasures_defaultMeasures,
|
4742
|
+
defaultDimensions,
|
4743
|
+
defaultMeasureName,
|
4714
4744
|
encodingForBar,
|
4715
4745
|
buildMeasures,
|
4716
|
-
autoDimensions_autoDimensions,
|
4717
4746
|
pivotAdapter([
|
4718
4747
|
reshapeWithEncoding
|
4719
4748
|
], [
|
@@ -5064,9 +5093,11 @@
|
|
5064
5093
|
};
|
5065
5094
|
const barParallelAdvancedPipeline = [
|
5066
5095
|
initAdvancedVSeed_initAdvancedVSeed,
|
5067
|
-
|
5068
|
-
|
5096
|
+
defaultMeasures_defaultMeasures,
|
5097
|
+
defaultDimensions,
|
5098
|
+
defaultMeasureName,
|
5069
5099
|
encodingForBar,
|
5100
|
+
buildMeasures,
|
5070
5101
|
pivotAdapter([
|
5071
5102
|
reshapeWithEncoding
|
5072
5103
|
], [
|
@@ -5160,9 +5191,11 @@
|
|
5160
5191
|
};
|
5161
5192
|
const barPercentAdvancedPipeline = [
|
5162
5193
|
initAdvancedVSeed_initAdvancedVSeed,
|
5163
|
-
|
5164
|
-
|
5194
|
+
defaultMeasures_defaultMeasures,
|
5195
|
+
defaultDimensions,
|
5196
|
+
defaultMeasureName,
|
5165
5197
|
encodingForBar,
|
5198
|
+
buildMeasures,
|
5166
5199
|
pivotAdapter([
|
5167
5200
|
reshapeWithEncoding
|
5168
5201
|
], [
|
@@ -5231,9 +5264,11 @@
|
|
5231
5264
|
};
|
5232
5265
|
const areaAdvancedPipeline = [
|
5233
5266
|
initAdvancedVSeed_initAdvancedVSeed,
|
5234
|
-
|
5267
|
+
defaultMeasures_defaultMeasures,
|
5268
|
+
defaultDimensions,
|
5269
|
+
defaultMeasureName,
|
5270
|
+
encodingForLine,
|
5235
5271
|
buildMeasures,
|
5236
|
-
autoDimensions_autoDimensions,
|
5237
5272
|
pivotAdapter([
|
5238
5273
|
reshapeWithEncoding
|
5239
5274
|
], [
|
@@ -5389,9 +5424,11 @@
|
|
5389
5424
|
};
|
5390
5425
|
const areaPercentAdvancedPipeline = [
|
5391
5426
|
initAdvancedVSeed_initAdvancedVSeed,
|
5392
|
-
|
5427
|
+
defaultMeasures_defaultMeasures,
|
5428
|
+
defaultDimensions,
|
5429
|
+
defaultMeasureName,
|
5430
|
+
encodingForLine,
|
5393
5431
|
buildMeasures,
|
5394
|
-
autoDimensions_autoDimensions,
|
5395
5432
|
pivotAdapter([
|
5396
5433
|
reshapeWithEncoding
|
5397
5434
|
], [
|
@@ -5465,11 +5502,9 @@
|
|
5465
5502
|
Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
|
5466
5503
|
Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
|
5467
5504
|
};
|
5468
|
-
const encodingForScatter = (advancedVSeed
|
5469
|
-
const {
|
5470
|
-
const
|
5471
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
5472
|
-
const dimensions = getBasicDimensions(vseed);
|
5505
|
+
const encodingForScatter = (advancedVSeed)=>{
|
5506
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
5507
|
+
const measures = findAllMeasures(vseedMeasures);
|
5473
5508
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
5474
5509
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
5475
5510
|
const encoding = {};
|
@@ -5505,7 +5540,9 @@
|
|
5505
5540
|
const scatter_generateDimensionEncoding = (dimensions, encoding)=>{
|
5506
5541
|
encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5507
5542
|
encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
5508
|
-
if (0 === encoding.color.length) encoding.color =
|
5543
|
+
if (0 === encoding.color.length) encoding.color = [
|
5544
|
+
MeasureName
|
5545
|
+
];
|
5509
5546
|
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
5510
5547
|
};
|
5511
5548
|
const buildMeasuresForScatter = (advancedVSeed, context)=>{
|
@@ -5518,8 +5555,7 @@
|
|
5518
5555
|
advancedVSeed.measures = buildMeasuresForScatter_generateMeasuresByParentId(vseed.measures);
|
5519
5556
|
return advancedVSeed;
|
5520
5557
|
}
|
5521
|
-
const
|
5522
|
-
const scatterMeasures = vseed.scatterMeasures ? vseed.scatterMeasures : basicMeasuresToScatterMeasures(basicMeasures);
|
5558
|
+
const scatterMeasures = vseed.scatterMeasures ? vseed.scatterMeasures : basicMeasuresToScatterMeasures(advancedVSeed.measures || []);
|
5523
5559
|
advancedVSeed.measures = scatterMeasuresToMeasureTree(scatterMeasures);
|
5524
5560
|
return advancedVSeed;
|
5525
5561
|
};
|
@@ -5738,9 +5774,11 @@
|
|
5738
5774
|
};
|
5739
5775
|
const scatterAdvancedPipeline = [
|
5740
5776
|
initAdvancedVSeed_initAdvancedVSeed,
|
5777
|
+
defaultMeasures_defaultMeasures,
|
5778
|
+
defaultDimensions,
|
5779
|
+
defaultMeasureName,
|
5741
5780
|
encodingForScatter,
|
5742
5781
|
buildMeasuresForScatter,
|
5743
|
-
autoDimensions_autoDimensions,
|
5744
5782
|
pivotAdapter([
|
5745
5783
|
reshapeWithScatterEncoding
|
5746
5784
|
], [
|
@@ -5876,7 +5914,7 @@
|
|
5876
5914
|
]),
|
5877
5915
|
pivotRowDimensions,
|
5878
5916
|
pivotColumnDimensions,
|
5879
|
-
pivotDiscreteLegend
|
5917
|
+
colorAdapter(pivotDiscreteLegend, pivotColorLegend)
|
5880
5918
|
];
|
5881
5919
|
const scatterSpecPipeline = [
|
5882
5920
|
pivotAdapter_pivotAdapter(scatter, pivotScatter)
|
@@ -5885,11 +5923,9 @@
|
|
5885
5923
|
Builder._advancedPipelineMap.scatter = scatterAdvancedPipeline;
|
5886
5924
|
Builder._specPipelineMap.scatter = scatterSpecPipeline;
|
5887
5925
|
};
|
5888
|
-
const encodingForDualAxis = (advancedVSeed
|
5889
|
-
const {
|
5890
|
-
const
|
5891
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
5892
|
-
const dimensions = getBasicDimensions(vseed);
|
5926
|
+
const encodingForDualAxis = (advancedVSeed)=>{
|
5927
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
5928
|
+
const measures = findAllMeasures(vseedMeasures);
|
5893
5929
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
5894
5930
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
5895
5931
|
const encoding = {};
|
@@ -5925,13 +5961,15 @@
|
|
5925
5961
|
return encoding;
|
5926
5962
|
};
|
5927
5963
|
const dualAxis_generateDimensionEncoding = (dimensions, encoding)=>{
|
5928
|
-
encoding.x = chunk_QJLMYOTX_i(dimensions.filter((item)=>'xAxis' === item.encoding
|
5964
|
+
encoding.x = chunk_QJLMYOTX_i(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
|
5929
5965
|
encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5930
5966
|
encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
5931
5967
|
if (0 === encoding.x.length) encoding.x = [
|
5932
5968
|
dimensions[0].id
|
5933
5969
|
];
|
5934
|
-
if (0 === encoding.color.length) encoding.color =
|
5970
|
+
if (0 === encoding.color.length) encoding.color = [
|
5971
|
+
MeasureName
|
5972
|
+
];
|
5935
5973
|
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
5936
5974
|
};
|
5937
5975
|
const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
|
@@ -5944,8 +5982,7 @@
|
|
5944
5982
|
advancedVSeed.measures = buildMeasuresForDualAxis_generateMeasuresByParentId(vseed.measures);
|
5945
5983
|
return advancedVSeed;
|
5946
5984
|
}
|
5947
|
-
const
|
5948
|
-
const dualMeasures = vseed.dualMeasures ? vseed.dualMeasures : basicMeasuresToDualMeasures(basicMeasures);
|
5985
|
+
const dualMeasures = vseed.dualMeasures ? vseed.dualMeasures : basicMeasuresToDualMeasures(advancedVSeed.measures || []);
|
5949
5986
|
advancedVSeed.measures = dualMeasuresToMeasureTree(dualMeasures);
|
5950
5987
|
return advancedVSeed;
|
5951
5988
|
};
|
@@ -6049,8 +6086,10 @@
|
|
6049
6086
|
const datasets = [];
|
6050
6087
|
const primaryMeasures = measures[0];
|
6051
6088
|
const secondaryMeasures = measures[1] || [];
|
6089
|
+
const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
|
6052
6090
|
if (primaryMeasures && primaryMeasures.children) {
|
6053
6091
|
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
|
6092
|
+
colorItemAsId: hasEncoding,
|
6054
6093
|
foldMeasureValue: FoldPrimaryMeasureValue,
|
6055
6094
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
6056
6095
|
});
|
@@ -6097,6 +6136,7 @@
|
|
6097
6136
|
const { dataset } = vseed;
|
6098
6137
|
const { dimensions, measures, encoding, chartType } = advancedVSeed;
|
6099
6138
|
if (!measures || !dimensions || !dataset || !encoding) return result;
|
6139
|
+
const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
|
6100
6140
|
const datasetList = [];
|
6101
6141
|
const datasetReshapeInfo = [];
|
6102
6142
|
const measureGroups = [];
|
@@ -6115,6 +6155,7 @@
|
|
6115
6155
|
const secondaryMeasures = measures[1] || [];
|
6116
6156
|
if (primaryMeasures && primaryMeasures.children) {
|
6117
6157
|
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
|
6158
|
+
colorItemAsId: hasEncoding,
|
6118
6159
|
foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,
|
6119
6160
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
6120
6161
|
});
|
@@ -6183,9 +6224,11 @@
|
|
6183
6224
|
};
|
6184
6225
|
const dualAxisAdvancedPipeline = [
|
6185
6226
|
initAdvancedVSeed_initAdvancedVSeed,
|
6227
|
+
defaultMeasures_defaultMeasures,
|
6228
|
+
defaultDimensions,
|
6229
|
+
defaultMeasureName,
|
6186
6230
|
encodingForDualAxis,
|
6187
6231
|
buildMeasuresForDualAxis,
|
6188
|
-
autoDimensions_autoDimensions,
|
6189
6232
|
pivotAdapter([
|
6190
6233
|
reshapeWithDualEncoding
|
6191
6234
|
], [
|
@@ -7018,11 +7061,9 @@
|
|
7018
7061
|
Builder._advancedPipelineMap.dualAxis = dualAxisAdvancedPipeline;
|
7019
7062
|
Builder._specPipelineMap.dualAxis = dualAxisSpecPipeline;
|
7020
7063
|
};
|
7021
|
-
const encodingForPie = (advancedVSeed
|
7022
|
-
const {
|
7023
|
-
const
|
7024
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7025
|
-
const dimensions = getBasicDimensions(vseed);
|
7064
|
+
const encodingForPie = (advancedVSeed)=>{
|
7065
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
7066
|
+
const measures = findAllMeasures(vseedMeasures);
|
7026
7067
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7027
7068
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7028
7069
|
const encoding = {};
|
@@ -7057,14 +7098,18 @@
|
|
7057
7098
|
const pie_generateDimensionEncoding = (dimensions, encoding)=>{
|
7058
7099
|
encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7059
7100
|
encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
7060
|
-
if (0 === encoding.color.length) encoding.color =
|
7101
|
+
if (0 === encoding.color.length) encoding.color = [
|
7102
|
+
MeasureName
|
7103
|
+
];
|
7061
7104
|
if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
|
7062
7105
|
};
|
7063
7106
|
const pieAdvancedPipeline = [
|
7064
7107
|
initAdvancedVSeed_initAdvancedVSeed,
|
7108
|
+
defaultMeasures_defaultMeasures,
|
7109
|
+
defaultDimensions,
|
7110
|
+
defaultMeasureName,
|
7065
7111
|
encodingForPie,
|
7066
7112
|
buildMeasures,
|
7067
|
-
autoDimensions_autoDimensions,
|
7068
7113
|
pivotAdapter([
|
7069
7114
|
reshapeWithEncoding
|
7070
7115
|
], [
|
@@ -7079,44 +7124,70 @@
|
|
7079
7124
|
...spec
|
7080
7125
|
};
|
7081
7126
|
const { advancedVSeed } = context;
|
7082
|
-
const { datasetReshapeInfo
|
7127
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
7083
7128
|
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
7129
|
+
result.type = 'pie';
|
7130
|
+
result.outerRadius = 0.8;
|
7131
|
+
result.innerRadius = 0;
|
7132
|
+
result.valueField = foldInfo.measureValue;
|
7133
|
+
result.categoryField = unfoldInfo.encodingColorId;
|
7134
|
+
result.padding = 0;
|
7135
|
+
result.region = [
|
7136
|
+
{
|
7137
|
+
clip: true
|
7138
|
+
}
|
7139
|
+
];
|
7140
|
+
result.animation = true;
|
7141
|
+
return result;
|
7142
|
+
};
|
7143
|
+
const colorPieStyleFill = (stylePipe)=>(spec, context)=>{
|
7144
|
+
const result = stylePipe(spec, context);
|
7145
|
+
const { advancedVSeed } = context;
|
7146
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
7147
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
7148
|
+
if (isLinearColor(advancedVSeed)) {
|
7149
|
+
if (result?.pie?.style) result.pie.style.fill = {
|
7150
|
+
field: unfoldInfo.encodingColor,
|
7151
|
+
scale: 'color'
|
7152
|
+
};
|
7153
|
+
}
|
7154
|
+
return result;
|
7155
|
+
};
|
7156
|
+
const pieStyle = (spec, context)=>{
|
7157
|
+
const { advancedVSeed } = context;
|
7158
|
+
const { dataset } = advancedVSeed;
|
7084
7159
|
const showStroke = dataset.length <= 30;
|
7085
|
-
result
|
7086
|
-
|
7087
|
-
|
7088
|
-
|
7089
|
-
result.categoryField = unfoldInfo.encodingColorId;
|
7090
|
-
result.padding = 0;
|
7091
|
-
result.region = [
|
7092
|
-
{
|
7093
|
-
clip: true
|
7160
|
+
const result = {
|
7161
|
+
...spec,
|
7162
|
+
pie: {
|
7163
|
+
style: {}
|
7094
7164
|
}
|
7095
|
-
|
7096
|
-
|
7097
|
-
|
7098
|
-
|
7099
|
-
|
7100
|
-
|
7101
|
-
|
7102
|
-
|
7103
|
-
|
7104
|
-
|
7165
|
+
};
|
7166
|
+
return {
|
7167
|
+
...result,
|
7168
|
+
pie: {
|
7169
|
+
style: {
|
7170
|
+
stroke: '#ffffff',
|
7171
|
+
lineWidth: showStroke ? 1 : 0
|
7172
|
+
},
|
7173
|
+
state: {
|
7174
|
+
hover: {
|
7175
|
+
outerRadius: 1.1 * result.outerRadius
|
7176
|
+
}
|
7105
7177
|
}
|
7106
7178
|
}
|
7107
7179
|
};
|
7108
|
-
result.animation = true;
|
7109
|
-
return result;
|
7110
7180
|
};
|
7111
7181
|
const pie = [
|
7112
7182
|
initPie,
|
7113
|
-
color_color,
|
7183
|
+
colorAdapter(color_color, linearColor),
|
7114
7184
|
background_backgroundColor,
|
7115
7185
|
datasetXY,
|
7116
7186
|
progressive,
|
7187
|
+
colorPieStyleFill(pieStyle),
|
7188
|
+
colorAdapter(discreteLegend, colorLegend),
|
7117
7189
|
label_label,
|
7118
7190
|
tooltip_tooltip,
|
7119
|
-
discreteLegend,
|
7120
7191
|
annotationPoint_annotationPoint,
|
7121
7192
|
annotationVerticalLine_annotationVerticalLine,
|
7122
7193
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -7129,10 +7200,11 @@
|
|
7129
7200
|
datasetPivot,
|
7130
7201
|
pivotIndicators_pivotIndicators([
|
7131
7202
|
initPie,
|
7132
|
-
color_color,
|
7203
|
+
colorAdapter(color_color, linearColor),
|
7133
7204
|
background_backgroundColor,
|
7134
7205
|
datasetXY,
|
7135
7206
|
progressive,
|
7207
|
+
colorPieStyleFill(pieStyle),
|
7136
7208
|
label_label,
|
7137
7209
|
tooltip_tooltip,
|
7138
7210
|
annotationPoint_annotationPoint,
|
@@ -7142,7 +7214,7 @@
|
|
7142
7214
|
]),
|
7143
7215
|
pivotRowDimensions,
|
7144
7216
|
pivotColumnDimensions,
|
7145
|
-
pivotDiscreteLegend
|
7217
|
+
colorAdapter(pivotDiscreteLegend, pivotColorLegend)
|
7146
7218
|
];
|
7147
7219
|
const pieSpecPipeline = [
|
7148
7220
|
pivotAdapter_pivotAdapter(pie, pivotPie)
|
@@ -7153,8 +7225,10 @@
|
|
7153
7225
|
};
|
7154
7226
|
const donutAdvancedPipeline = [
|
7155
7227
|
initAdvancedVSeed_initAdvancedVSeed,
|
7228
|
+
defaultMeasures_defaultMeasures,
|
7229
|
+
defaultDimensions,
|
7230
|
+
defaultMeasureName,
|
7156
7231
|
buildMeasures,
|
7157
|
-
autoDimensions_autoDimensions,
|
7158
7232
|
encodingForPie,
|
7159
7233
|
pivotAdapter([
|
7160
7234
|
reshapeWithEncoding
|
@@ -7170,9 +7244,8 @@
|
|
7170
7244
|
...spec
|
7171
7245
|
};
|
7172
7246
|
const { advancedVSeed } = context;
|
7173
|
-
const { datasetReshapeInfo
|
7247
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
7174
7248
|
const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
|
7175
|
-
const showStroke = dataset.length <= 30;
|
7176
7249
|
result.type = 'pie';
|
7177
7250
|
result.outerRadius = 0.8;
|
7178
7251
|
result.innerRadius = 0.8 * result.outerRadius;
|
@@ -7184,29 +7257,19 @@
|
|
7184
7257
|
clip: true
|
7185
7258
|
}
|
7186
7259
|
];
|
7187
|
-
result.pie = {
|
7188
|
-
style: {
|
7189
|
-
stroke: '#ffffff',
|
7190
|
-
lineWidth: showStroke ? 1 : 0
|
7191
|
-
},
|
7192
|
-
state: {
|
7193
|
-
hover: {
|
7194
|
-
outerRadius: 1.1 * result.outerRadius
|
7195
|
-
}
|
7196
|
-
}
|
7197
|
-
};
|
7198
7260
|
result.animation = true;
|
7199
7261
|
return result;
|
7200
7262
|
};
|
7201
7263
|
const donut = [
|
7202
7264
|
initDonut,
|
7203
|
-
color_color,
|
7265
|
+
colorAdapter(color_color, linearColor),
|
7204
7266
|
background_backgroundColor,
|
7205
7267
|
datasetXY,
|
7206
7268
|
progressive,
|
7207
7269
|
label_label,
|
7270
|
+
colorPieStyleFill(pieStyle),
|
7271
|
+
colorAdapter(discreteLegend, colorLegend),
|
7208
7272
|
tooltip_tooltip,
|
7209
|
-
discreteLegend,
|
7210
7273
|
annotationPoint_annotationPoint,
|
7211
7274
|
annotationVerticalLine_annotationVerticalLine,
|
7212
7275
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -7219,11 +7282,12 @@
|
|
7219
7282
|
datasetPivot,
|
7220
7283
|
pivotIndicators_pivotIndicators([
|
7221
7284
|
initDonut,
|
7222
|
-
color_color,
|
7285
|
+
colorAdapter(color_color, linearColor),
|
7223
7286
|
background_backgroundColor,
|
7224
7287
|
datasetXY,
|
7225
7288
|
progressive,
|
7226
7289
|
label_label,
|
7290
|
+
colorPieStyleFill(pieStyle),
|
7227
7291
|
tooltip_tooltip,
|
7228
7292
|
annotationPoint_annotationPoint,
|
7229
7293
|
annotationVerticalLine_annotationVerticalLine,
|
@@ -7232,7 +7296,7 @@
|
|
7232
7296
|
]),
|
7233
7297
|
pivotRowDimensions,
|
7234
7298
|
pivotColumnDimensions,
|
7235
|
-
pivotDiscreteLegend
|
7299
|
+
colorAdapter(pivotDiscreteLegend, pivotColorLegend)
|
7236
7300
|
];
|
7237
7301
|
const donutSpecPipeline = [
|
7238
7302
|
pivotAdapter_pivotAdapter(donut, pivotDonut)
|
@@ -7241,11 +7305,9 @@
|
|
7241
7305
|
Builder._advancedPipelineMap.donut = donutAdvancedPipeline;
|
7242
7306
|
Builder._specPipelineMap.donut = donutSpecPipeline;
|
7243
7307
|
};
|
7244
|
-
const encodingForRose = (advancedVSeed
|
7245
|
-
const {
|
7246
|
-
const
|
7247
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7248
|
-
const dimensions = getBasicDimensions(vseed);
|
7308
|
+
const encodingForRose = (advancedVSeed)=>{
|
7309
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
7310
|
+
const measures = findAllMeasures(vseedMeasures);
|
7249
7311
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7250
7312
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7251
7313
|
const encoding = {};
|
@@ -7280,20 +7342,24 @@
|
|
7280
7342
|
if (color.length > 0) encoding.color = color;
|
7281
7343
|
};
|
7282
7344
|
const rose_generateDimensionEncoding = (dimensions, encoding)=>{
|
7283
|
-
encoding.angle = chunk_QJLMYOTX_i(dimensions.filter((item)=>'angle' === item.encoding
|
7345
|
+
encoding.angle = chunk_QJLMYOTX_i(dimensions.filter((item)=>'angle' === item.encoding).map((item)=>item.id));
|
7284
7346
|
encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7285
7347
|
encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
7286
7348
|
if (0 === encoding.angle.length) encoding.angle = [
|
7287
7349
|
dimensions[0].id
|
7288
7350
|
];
|
7289
|
-
if (0 === encoding.color.length) encoding.color =
|
7351
|
+
if (0 === encoding.color.length) encoding.color = [
|
7352
|
+
MeasureName
|
7353
|
+
];
|
7290
7354
|
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
|
7291
7355
|
};
|
7292
7356
|
const roseAdvancedPipeline = [
|
7293
7357
|
initAdvancedVSeed_initAdvancedVSeed,
|
7358
|
+
defaultMeasures_defaultMeasures,
|
7359
|
+
defaultDimensions,
|
7360
|
+
defaultMeasureName,
|
7294
7361
|
encodingForRose,
|
7295
7362
|
buildMeasures,
|
7296
|
-
autoDimensions_autoDimensions,
|
7297
7363
|
pivotAdapter([
|
7298
7364
|
reshapeWithEncoding
|
7299
7365
|
], [
|
@@ -7320,18 +7386,6 @@
|
|
7320
7386
|
result.innerRadius = 0;
|
7321
7387
|
const hasNegativeValue = dataset.flat().find((d)=>d[foldInfo.measureValue] < 0);
|
7322
7388
|
if (hasNegativeValue) result.innerRadius = 0.05;
|
7323
|
-
result.rose = {
|
7324
|
-
style: {
|
7325
|
-
stroke: '#ffffff',
|
7326
|
-
lineWidth: 1
|
7327
|
-
},
|
7328
|
-
state: {
|
7329
|
-
hover: {
|
7330
|
-
lineWidth: 1,
|
7331
|
-
fillOpacity: 0.6
|
7332
|
-
}
|
7333
|
-
}
|
7334
|
-
};
|
7335
7389
|
result.region = [
|
7336
7390
|
{
|
7337
7391
|
clip: true
|
@@ -7340,7 +7394,7 @@
|
|
7340
7394
|
result.animation = true;
|
7341
7395
|
return result;
|
7342
7396
|
};
|
7343
|
-
const
|
7397
|
+
const angleAxis = (spec, context)=>{
|
7344
7398
|
const result = {
|
7345
7399
|
...spec
|
7346
7400
|
};
|
@@ -7352,26 +7406,37 @@
|
|
7352
7406
|
const showAxis = !(is0D || is1M1D);
|
7353
7407
|
if (!result.axes) result.axes = [];
|
7354
7408
|
result.axes.push({
|
7355
|
-
orient: '
|
7409
|
+
orient: 'angle',
|
7356
7410
|
visible: showAxis,
|
7357
7411
|
zero: true,
|
7358
7412
|
nice: !!showAxis,
|
7413
|
+
paddingInner: showAxis ? [
|
7414
|
+
0.15,
|
7415
|
+
0.1
|
7416
|
+
] : [
|
7417
|
+
0,
|
7418
|
+
0
|
7419
|
+
],
|
7420
|
+
paddingOuter: showAxis ? [
|
7421
|
+
0.075,
|
7422
|
+
0.1
|
7423
|
+
] : [
|
7424
|
+
0,
|
7425
|
+
0
|
7426
|
+
],
|
7359
7427
|
grid: {
|
7360
7428
|
visible: showAxis
|
7361
7429
|
},
|
7362
|
-
|
7363
|
-
visible: showAxis
|
7364
|
-
},
|
7365
|
-
label: {
|
7430
|
+
domainLine: {
|
7366
7431
|
visible: showAxis
|
7367
7432
|
},
|
7368
|
-
|
7433
|
+
tick: {
|
7369
7434
|
visible: showAxis
|
7370
7435
|
}
|
7371
7436
|
});
|
7372
7437
|
return result;
|
7373
7438
|
};
|
7374
|
-
const
|
7439
|
+
const radiusAxis = (spec, context)=>{
|
7375
7440
|
const result = {
|
7376
7441
|
...spec
|
7377
7442
|
};
|
@@ -7383,50 +7448,79 @@
|
|
7383
7448
|
const showAxis = !(is0D || is1M1D);
|
7384
7449
|
if (!result.axes) result.axes = [];
|
7385
7450
|
result.axes.push({
|
7386
|
-
orient: '
|
7451
|
+
orient: 'radius',
|
7387
7452
|
visible: showAxis,
|
7388
7453
|
zero: true,
|
7389
7454
|
nice: !!showAxis,
|
7390
|
-
paddingInner: showAxis ? [
|
7391
|
-
0.15,
|
7392
|
-
0.1
|
7393
|
-
] : [
|
7394
|
-
0,
|
7395
|
-
0
|
7396
|
-
],
|
7397
|
-
paddingOuter: showAxis ? [
|
7398
|
-
0.075,
|
7399
|
-
0.1
|
7400
|
-
] : [
|
7401
|
-
0,
|
7402
|
-
0
|
7403
|
-
],
|
7404
7455
|
grid: {
|
7405
7456
|
visible: showAxis
|
7406
7457
|
},
|
7407
|
-
|
7458
|
+
tick: {
|
7408
7459
|
visible: showAxis
|
7409
7460
|
},
|
7410
|
-
|
7461
|
+
label: {
|
7462
|
+
visible: showAxis
|
7463
|
+
},
|
7464
|
+
domainLine: {
|
7411
7465
|
visible: showAxis
|
7412
7466
|
}
|
7413
7467
|
});
|
7414
7468
|
return result;
|
7415
7469
|
};
|
7470
|
+
const colorRoseStyleFill = (stylePipe)=>(spec, context)=>{
|
7471
|
+
const result = stylePipe(spec, context);
|
7472
|
+
const { advancedVSeed } = context;
|
7473
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
7474
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
7475
|
+
if (isLinearColor(advancedVSeed)) {
|
7476
|
+
if (result?.rose?.style) result.rose.style.fill = {
|
7477
|
+
field: unfoldInfo.encodingColor,
|
7478
|
+
scale: 'color'
|
7479
|
+
};
|
7480
|
+
}
|
7481
|
+
return result;
|
7482
|
+
};
|
7483
|
+
const roseStyle = (spec, context)=>{
|
7484
|
+
const { advancedVSeed } = context;
|
7485
|
+
const { dataset } = advancedVSeed;
|
7486
|
+
const showStroke = dataset.length <= 30;
|
7487
|
+
const result = {
|
7488
|
+
...spec,
|
7489
|
+
rose: {
|
7490
|
+
style: {}
|
7491
|
+
}
|
7492
|
+
};
|
7493
|
+
return {
|
7494
|
+
...result,
|
7495
|
+
rose: {
|
7496
|
+
style: {
|
7497
|
+
stroke: '#ffffff',
|
7498
|
+
lineWidth: showStroke ? 1 : 0
|
7499
|
+
},
|
7500
|
+
state: {
|
7501
|
+
hover: {
|
7502
|
+
lineWidth: 1,
|
7503
|
+
fillOpacity: 0.6
|
7504
|
+
}
|
7505
|
+
}
|
7506
|
+
}
|
7507
|
+
};
|
7508
|
+
};
|
7416
7509
|
const rose = [
|
7417
7510
|
initRose,
|
7418
7511
|
stackCornerRadius_stackCornerRadius,
|
7419
7512
|
stackInverse,
|
7420
|
-
color_color,
|
7513
|
+
colorAdapter(color_color, linearColor),
|
7421
7514
|
background_backgroundColor,
|
7422
7515
|
datasetXY,
|
7423
7516
|
progressive,
|
7424
|
-
radiusAxis,
|
7425
7517
|
angleAxis,
|
7426
|
-
|
7427
|
-
tooltip_tooltip,
|
7518
|
+
radiusAxis,
|
7428
7519
|
verticalCrosshairRect,
|
7429
|
-
|
7520
|
+
colorRoseStyleFill(roseStyle),
|
7521
|
+
colorAdapter(discreteLegend, colorLegend),
|
7522
|
+
label_label,
|
7523
|
+
tooltip_tooltip
|
7430
7524
|
];
|
7431
7525
|
const pivotRose = [
|
7432
7526
|
initPivot,
|
@@ -7437,19 +7531,20 @@
|
|
7437
7531
|
initRose,
|
7438
7532
|
stackCornerRadius_stackCornerRadius,
|
7439
7533
|
stackInverse,
|
7440
|
-
color_color,
|
7534
|
+
colorAdapter(color_color, linearColor),
|
7441
7535
|
background_backgroundColor,
|
7442
7536
|
datasetXY,
|
7443
7537
|
progressive,
|
7444
7538
|
radiusAxis,
|
7445
7539
|
angleAxis,
|
7540
|
+
verticalCrosshairRect,
|
7541
|
+
colorRoseStyleFill(roseStyle),
|
7446
7542
|
label_label,
|
7447
|
-
tooltip_tooltip
|
7448
|
-
verticalCrosshairRect
|
7543
|
+
tooltip_tooltip
|
7449
7544
|
]),
|
7450
7545
|
pivotRowDimensions,
|
7451
7546
|
pivotColumnDimensions,
|
7452
|
-
pivotDiscreteLegend
|
7547
|
+
colorAdapter(pivotDiscreteLegend, pivotColorLegend)
|
7453
7548
|
];
|
7454
7549
|
const roseSpecPipeline = [
|
7455
7550
|
pivotAdapter_pivotAdapter(rose, pivotRose)
|
@@ -7460,9 +7555,11 @@
|
|
7460
7555
|
};
|
7461
7556
|
const roseParallelAdvancedPipeline = [
|
7462
7557
|
initAdvancedVSeed_initAdvancedVSeed,
|
7558
|
+
defaultMeasures_defaultMeasures,
|
7559
|
+
defaultDimensions,
|
7560
|
+
defaultMeasureName,
|
7463
7561
|
encodingForRose,
|
7464
7562
|
buildMeasures,
|
7465
|
-
autoDimensions_autoDimensions,
|
7466
7563
|
pivotAdapter([
|
7467
7564
|
reshapeWithEncoding
|
7468
7565
|
], [
|
@@ -7518,15 +7615,16 @@
|
|
7518
7615
|
const roseParallel = [
|
7519
7616
|
initRoseParallel,
|
7520
7617
|
stackCornerRadius_stackCornerRadius,
|
7521
|
-
color_color,
|
7618
|
+
colorAdapter(color_color, linearColor),
|
7522
7619
|
background_backgroundColor,
|
7523
7620
|
datasetXY,
|
7524
7621
|
progressive,
|
7525
7622
|
radiusAxis,
|
7526
7623
|
angleAxis,
|
7624
|
+
colorRoseStyleFill(roseStyle),
|
7625
|
+
colorAdapter(discreteLegend, colorLegend),
|
7527
7626
|
label_label,
|
7528
7627
|
tooltip_tooltip,
|
7529
|
-
discreteLegend,
|
7530
7628
|
verticalCrosshairRect,
|
7531
7629
|
annotationPoint_annotationPoint,
|
7532
7630
|
annotationVerticalLine_annotationVerticalLine,
|
@@ -7541,15 +7639,16 @@
|
|
7541
7639
|
pivotIndicators_pivotIndicators([
|
7542
7640
|
initRoseParallel,
|
7543
7641
|
stackCornerRadius_stackCornerRadius,
|
7544
|
-
color_color,
|
7642
|
+
colorAdapter(color_color, linearColor),
|
7545
7643
|
background_backgroundColor,
|
7546
7644
|
datasetXY,
|
7547
7645
|
progressive,
|
7548
7646
|
radiusAxis,
|
7549
7647
|
angleAxis,
|
7648
|
+
verticalCrosshairRect,
|
7649
|
+
colorRoseStyleFill(roseStyle),
|
7550
7650
|
label_label,
|
7551
7651
|
tooltip_tooltip,
|
7552
|
-
verticalCrosshairRect,
|
7553
7652
|
annotationPoint_annotationPoint,
|
7554
7653
|
annotationVerticalLine_annotationVerticalLine,
|
7555
7654
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -7557,7 +7656,7 @@
|
|
7557
7656
|
]),
|
7558
7657
|
pivotRowDimensions,
|
7559
7658
|
pivotColumnDimensions,
|
7560
|
-
pivotDiscreteLegend
|
7659
|
+
colorAdapter(pivotDiscreteLegend, pivotColorLegend)
|
7561
7660
|
];
|
7562
7661
|
const roseParallelSpecPipeline = [
|
7563
7662
|
pivotAdapter_pivotAdapter(roseParallel, pivotRoseParallel)
|
@@ -7566,11 +7665,9 @@
|
|
7566
7665
|
Builder._advancedPipelineMap.roseParallel = roseParallelAdvancedPipeline;
|
7567
7666
|
Builder._specPipelineMap.roseParallel = roseParallelSpecPipeline;
|
7568
7667
|
};
|
7569
|
-
const encodingForRadar = (advancedVSeed
|
7570
|
-
const {
|
7571
|
-
const
|
7572
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7573
|
-
const dimensions = getBasicDimensions(vseed);
|
7668
|
+
const encodingForRadar = (advancedVSeed)=>{
|
7669
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
7670
|
+
const measures = findAllMeasures(vseedMeasures);
|
7574
7671
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7575
7672
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7576
7673
|
const encoding = {};
|
@@ -7588,12 +7685,11 @@
|
|
7588
7685
|
encoding.radius = chunk_QJLMYOTX_i(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
7589
7686
|
};
|
7590
7687
|
const radar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
7591
|
-
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
7592
7688
|
const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
|
7593
7689
|
encoding.angle = uniqueDimIds.slice(0, 1);
|
7594
|
-
encoding.color = uniqueDimIds.slice(
|
7595
|
-
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
7690
|
+
encoding.color = uniqueDimIds.slice(1);
|
7596
7691
|
encoding.tooltip = uniqueDimIds;
|
7692
|
+
encoding.detail = [];
|
7597
7693
|
encoding.label = [];
|
7598
7694
|
encoding.row = [];
|
7599
7695
|
encoding.column = [];
|
@@ -7605,20 +7701,23 @@
|
|
7605
7701
|
if (color.length > 0) encoding.color = color;
|
7606
7702
|
};
|
7607
7703
|
const radar_generateDimensionEncoding = (dimensions, encoding)=>{
|
7608
|
-
encoding.angle = chunk_QJLMYOTX_i(dimensions.filter((item)=>'angle' === item.encoding
|
7704
|
+
encoding.angle = chunk_QJLMYOTX_i(dimensions.filter((item)=>'angle' === item.encoding).map((item)=>item.id));
|
7609
7705
|
encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7610
|
-
encoding.detail =
|
7706
|
+
encoding.detail = [];
|
7611
7707
|
if (0 === encoding.angle.length) encoding.angle = [
|
7612
7708
|
dimensions[0].id
|
7613
7709
|
];
|
7614
|
-
if (0 === encoding.color.length) encoding.color =
|
7615
|
-
|
7710
|
+
if (0 === encoding.color.length) encoding.color = [
|
7711
|
+
MeasureName
|
7712
|
+
];
|
7616
7713
|
};
|
7617
7714
|
const radarAdvancedPipeline = [
|
7618
7715
|
initAdvancedVSeed_initAdvancedVSeed,
|
7716
|
+
defaultMeasures_defaultMeasures,
|
7717
|
+
defaultDimensions,
|
7718
|
+
defaultMeasureName,
|
7619
7719
|
encodingForRadar,
|
7620
7720
|
buildMeasures,
|
7621
|
-
autoDimensions_autoDimensions,
|
7622
7721
|
pivotAdapter([
|
7623
7722
|
reshapeWithEncoding
|
7624
7723
|
], [
|
@@ -7752,11 +7851,9 @@
|
|
7752
7851
|
Builder._advancedPipelineMap.radar = radarAdvancedPipeline;
|
7753
7852
|
Builder._specPipelineMap.radar = radarSpecPipeline;
|
7754
7853
|
};
|
7755
|
-
const encodingForFunnel = (advancedVSeed
|
7756
|
-
const {
|
7757
|
-
const
|
7758
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7759
|
-
const dimensions = getBasicDimensions(vseed);
|
7854
|
+
const encodingForFunnel = (advancedVSeed)=>{
|
7855
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
7856
|
+
const measures = findAllMeasures(vseedMeasures);
|
7760
7857
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7761
7858
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7762
7859
|
const encoding = {};
|
@@ -7791,14 +7888,18 @@
|
|
7791
7888
|
const funnel_generateDimensionEncoding = (dimensions, encoding)=>{
|
7792
7889
|
encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7793
7890
|
encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
7794
|
-
if (0 === encoding.color.length) encoding.color =
|
7891
|
+
if (0 === encoding.color.length) encoding.color = [
|
7892
|
+
MeasureName
|
7893
|
+
];
|
7795
7894
|
if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
|
7796
7895
|
};
|
7797
7896
|
const funnelAdvancedPipeline = [
|
7798
7897
|
initAdvancedVSeed_initAdvancedVSeed,
|
7898
|
+
defaultMeasures_defaultMeasures,
|
7899
|
+
defaultDimensions,
|
7900
|
+
defaultMeasureName,
|
7799
7901
|
encodingForFunnel,
|
7800
7902
|
buildMeasures,
|
7801
|
-
autoDimensions_autoDimensions,
|
7802
7903
|
pivotAdapter([
|
7803
7904
|
reshapeWithEncoding
|
7804
7905
|
], [
|
@@ -7828,34 +7929,55 @@
|
|
7828
7929
|
clip: true
|
7829
7930
|
}
|
7830
7931
|
];
|
7831
|
-
result.funnel = {
|
7832
|
-
style: {
|
7833
|
-
cornerRadius: 4,
|
7834
|
-
fill: {
|
7835
|
-
field: unfoldInfo.encodingColorId,
|
7836
|
-
scale: 'color'
|
7837
|
-
}
|
7838
|
-
},
|
7839
|
-
state: {
|
7840
|
-
hover: {
|
7841
|
-
fillOpacity: 0.6
|
7842
|
-
}
|
7843
|
-
}
|
7844
|
-
};
|
7845
7932
|
result.transformLabel = {
|
7846
7933
|
visible: true
|
7847
7934
|
};
|
7848
7935
|
result.animation = true;
|
7849
7936
|
return result;
|
7850
7937
|
};
|
7938
|
+
const colorFunnelStyleFill = (stylePipe)=>(spec, context)=>{
|
7939
|
+
const result = stylePipe(spec, context);
|
7940
|
+
const { advancedVSeed } = context;
|
7941
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
7942
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
7943
|
+
if (isLinearColor(advancedVSeed)) {
|
7944
|
+
if (result?.funnel?.style) result.funnel.style.fill = {
|
7945
|
+
field: unfoldInfo.encodingColor,
|
7946
|
+
scale: 'color'
|
7947
|
+
};
|
7948
|
+
}
|
7949
|
+
return result;
|
7950
|
+
};
|
7951
|
+
const funnelStyle = (spec)=>{
|
7952
|
+
const result = {
|
7953
|
+
...spec,
|
7954
|
+
funnel: {
|
7955
|
+
style: {}
|
7956
|
+
}
|
7957
|
+
};
|
7958
|
+
return {
|
7959
|
+
...result,
|
7960
|
+
funnel: {
|
7961
|
+
style: {
|
7962
|
+
cornerRadius: 4
|
7963
|
+
},
|
7964
|
+
state: {
|
7965
|
+
hover: {
|
7966
|
+
fillOpacity: 0.6
|
7967
|
+
}
|
7968
|
+
}
|
7969
|
+
}
|
7970
|
+
};
|
7971
|
+
};
|
7851
7972
|
const funnel = [
|
7852
7973
|
initFunnel,
|
7853
7974
|
background_backgroundColor,
|
7854
7975
|
datasetXY,
|
7855
|
-
color_color,
|
7976
|
+
colorAdapter(color_color, linearColor),
|
7856
7977
|
label_label,
|
7978
|
+
colorAdapter(discreteLegend, colorLegend),
|
7979
|
+
colorFunnelStyleFill(funnelStyle),
|
7857
7980
|
tooltip_tooltip,
|
7858
|
-
discreteLegend,
|
7859
7981
|
annotationPoint_annotationPoint,
|
7860
7982
|
annotationVerticalLine_annotationVerticalLine,
|
7861
7983
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -7870,17 +7992,18 @@
|
|
7870
7992
|
initFunnel,
|
7871
7993
|
background_backgroundColor,
|
7872
7994
|
datasetXY,
|
7873
|
-
color_color,
|
7995
|
+
colorAdapter(color_color, linearColor),
|
7874
7996
|
label_label,
|
7875
7997
|
tooltip_tooltip,
|
7876
|
-
|
7998
|
+
colorFunnelStyleFill(funnelStyle),
|
7877
7999
|
annotationPoint_annotationPoint,
|
7878
8000
|
annotationVerticalLine_annotationVerticalLine,
|
7879
8001
|
annotationHorizontalLine_annotationHorizontalLine,
|
7880
8002
|
annotationArea_annotationArea
|
7881
8003
|
]),
|
7882
8004
|
pivotRowDimensions,
|
7883
|
-
pivotColumnDimensions
|
8005
|
+
pivotColumnDimensions,
|
8006
|
+
colorAdapter(pivotDiscreteLegend, pivotColorLegend)
|
7884
8007
|
];
|
7885
8008
|
const funnelSpecPipeline = [
|
7886
8009
|
pivotAdapter_pivotAdapter(funnel, pivotFunnel)
|
@@ -7889,11 +8012,9 @@
|
|
7889
8012
|
Builder._advancedPipelineMap.funnel = funnelAdvancedPipeline;
|
7890
8013
|
Builder._specPipelineMap.funnel = funnelSpecPipeline;
|
7891
8014
|
};
|
7892
|
-
const encodingForHeatmap = (advancedVSeed
|
7893
|
-
const {
|
7894
|
-
const
|
7895
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7896
|
-
const dimensions = getBasicDimensions(vseed);
|
8015
|
+
const encodingForHeatmap = (advancedVSeed)=>{
|
8016
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
8017
|
+
const measures = findAllMeasures(vseedMeasures);
|
7897
8018
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7898
8019
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7899
8020
|
const encoding = {};
|
@@ -7938,14 +8059,18 @@
|
|
7938
8059
|
];
|
7939
8060
|
if (0 === encoding.y.length) if (dimensions.length > 1) encoding.y = dimensions.slice(1).map((item)=>item.id);
|
7940
8061
|
else encoding.y = dimensions.slice(0).map((item)=>item.id);
|
7941
|
-
if (0 === encoding.color.length) encoding.color =
|
8062
|
+
if (0 === encoding.color.length) encoding.color = [
|
8063
|
+
MeasureName
|
8064
|
+
];
|
7942
8065
|
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
7943
8066
|
};
|
7944
8067
|
const heatmapAdvancedPipeline = [
|
7945
8068
|
initAdvancedVSeed_initAdvancedVSeed,
|
8069
|
+
defaultMeasures_defaultMeasures,
|
8070
|
+
defaultDimensions,
|
8071
|
+
defaultMeasureName,
|
7946
8072
|
encodingForHeatmap,
|
7947
8073
|
buildMeasures,
|
7948
|
-
autoDimensions_autoDimensions,
|
7949
8074
|
pivotAdapter([
|
7950
8075
|
reshapeWithEncoding
|
7951
8076
|
], [
|
@@ -7967,6 +8092,37 @@
|
|
7967
8092
|
};
|
7968
8093
|
return result;
|
7969
8094
|
};
|
8095
|
+
const colorCellStyleFill = (stylePipe)=>(spec, context)=>{
|
8096
|
+
const result = stylePipe(spec, context);
|
8097
|
+
const { advancedVSeed } = context;
|
8098
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
8099
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
8100
|
+
if (isLinearColor(advancedVSeed)) {
|
8101
|
+
if (result?.cell?.style) result.cell.style.fill = {
|
8102
|
+
field: unfoldInfo.encodingColor,
|
8103
|
+
scale: 'color'
|
8104
|
+
};
|
8105
|
+
}
|
8106
|
+
return result;
|
8107
|
+
};
|
8108
|
+
const cellStyle = (spec)=>{
|
8109
|
+
const result = {
|
8110
|
+
...spec,
|
8111
|
+
cell: {
|
8112
|
+
style: {}
|
8113
|
+
}
|
8114
|
+
};
|
8115
|
+
return {
|
8116
|
+
...result,
|
8117
|
+
cell: {
|
8118
|
+
style: {
|
8119
|
+
shape: 'rect',
|
8120
|
+
stroke: '#ffffff',
|
8121
|
+
lineWidth: 1
|
8122
|
+
}
|
8123
|
+
}
|
8124
|
+
};
|
8125
|
+
};
|
7970
8126
|
const initHeatmap = (spec, context)=>{
|
7971
8127
|
const result = {
|
7972
8128
|
...spec
|
@@ -7981,13 +8137,6 @@
|
|
7981
8137
|
result.seriesField = unfoldInfo.encodingColorId;
|
7982
8138
|
result.valueField = foldInfo.measureValue;
|
7983
8139
|
result.padding = 0;
|
7984
|
-
result.cell = {
|
7985
|
-
style: {
|
7986
|
-
shape: 'rect',
|
7987
|
-
stroke: '#ffffff',
|
7988
|
-
lineWidth: 1
|
7989
|
-
}
|
7990
|
-
};
|
7991
8140
|
result.axes = [
|
7992
8141
|
{
|
7993
8142
|
type: 'band',
|
@@ -8012,14 +8161,12 @@
|
|
8012
8161
|
initHeatmap,
|
8013
8162
|
background_backgroundColor,
|
8014
8163
|
datasetXY,
|
8015
|
-
color_color,
|
8164
|
+
colorAdapter(color_color, linearColor),
|
8016
8165
|
label_label,
|
8017
8166
|
labelColorInversion,
|
8018
|
-
discreteLegend,
|
8167
|
+
colorAdapter(discreteLegend, colorLegend),
|
8168
|
+
colorCellStyleFill(cellStyle),
|
8019
8169
|
tooltip_tooltip,
|
8020
|
-
pointStyle_pointStyle,
|
8021
|
-
pointStateDimensionHover,
|
8022
|
-
lineStyle_lineStyle,
|
8023
8170
|
annotationPoint_annotationPoint,
|
8024
8171
|
annotationVerticalLine_annotationVerticalLine,
|
8025
8172
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -8034,21 +8181,20 @@
|
|
8034
8181
|
initHeatmap,
|
8035
8182
|
background_backgroundColor,
|
8036
8183
|
datasetXY,
|
8037
|
-
color_color,
|
8184
|
+
colorAdapter(color_color, linearColor),
|
8038
8185
|
label_label,
|
8039
8186
|
labelColorInversion,
|
8040
8187
|
discreteLegend,
|
8041
8188
|
tooltip_tooltip,
|
8042
|
-
|
8043
|
-
pointStateDimensionHover,
|
8044
|
-
lineStyle_lineStyle,
|
8189
|
+
colorCellStyleFill(cellStyle),
|
8045
8190
|
annotationPoint_annotationPoint,
|
8046
8191
|
annotationVerticalLine_annotationVerticalLine,
|
8047
8192
|
annotationHorizontalLine_annotationHorizontalLine,
|
8048
8193
|
annotationArea_annotationArea
|
8049
8194
|
]),
|
8050
8195
|
pivotRowDimensions,
|
8051
|
-
pivotColumnDimensions
|
8196
|
+
pivotColumnDimensions,
|
8197
|
+
colorAdapter(pivotDiscreteLegend, pivotColorLegend)
|
8052
8198
|
];
|
8053
8199
|
const heatmapSpecPipeline = [
|
8054
8200
|
pivotAdapter_pivotAdapter(heatmap, pivotHeatmap)
|
@@ -12115,7 +12261,9 @@
|
|
12115
12261
|
'size',
|
12116
12262
|
'color',
|
12117
12263
|
'label',
|
12118
|
-
'tooltip'
|
12264
|
+
'tooltip',
|
12265
|
+
'detail',
|
12266
|
+
'column'
|
12119
12267
|
]).optional(),
|
12120
12268
|
parentId: schemas_string().optional()
|
12121
12269
|
});
|