@visactor/vseed 0.1.3 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/builder/builder/builder.d.ts +4 -2
- package/dist/dataReshape/foldMeasures.d.ts +2 -2
- package/dist/index.cjs +1001 -765
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1014 -778
- package/dist/index.js.map +1 -1
- package/dist/pipeline/advanced/chart/pipes/init/index.d.ts +1 -0
- package/dist/pipeline/advanced/chart/pipes/init/utils.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/measures/index.d.ts +1 -0
- package/dist/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 +16 -5
- package/dist/types/chartType/area/zArea.d.ts +16 -5
- package/dist/types/chartType/areaPercent/zAreaPercent.d.ts +16 -5
- package/dist/types/chartType/bar/zBar.d.ts +16 -5
- package/dist/types/chartType/barParallel/zBarParallel.d.ts +16 -5
- package/dist/types/chartType/barPercent/zBarPercent.d.ts +16 -5
- package/dist/types/chartType/column/zColumn.d.ts +16 -5
- package/dist/types/chartType/columnParallel/zColumnParallel.d.ts +16 -5
- package/dist/types/chartType/columnPercent/zColumnPercent.d.ts +16 -5
- package/dist/types/chartType/donut/zDonut.d.ts +16 -5
- package/dist/types/chartType/dualAxis/zDualAxis.d.ts +36 -25
- package/dist/types/chartType/funnel/zFunnel.d.ts +16 -5
- package/dist/types/chartType/heatmap/zHeatmap.d.ts +16 -5
- package/dist/types/chartType/line/zLine.d.ts +16 -5
- package/dist/types/chartType/pie/zPie.d.ts +16 -5
- package/dist/types/chartType/pivotTable/zPivotTable.d.ts +16 -5
- package/dist/types/chartType/radar/zRadar.d.ts +16 -5
- package/dist/types/chartType/rose/zRose.d.ts +16 -5
- package/dist/types/chartType/roseParallel/zRoseParallel.d.ts +16 -5
- package/dist/types/chartType/scatter/zScatter.d.ts +36 -25
- package/dist/types/chartType/table/zTable.d.ts +16 -5
- package/dist/types/properties/dimensions/dimensions.d.ts +16 -0
- package/dist/types/properties/dimensions/zDimensions.d.ts +33 -0
- package/dist/types/properties/measures/zDualMeasures.d.ts +40 -40
- package/dist/types/properties/measures/zMeasures.d.ts +15 -15
- package/dist/types/properties/measures/zScatterMeasures.d.ts +40 -40
- package/dist/types/zVseed.d.ts +360 -140
- package/dist/umd/index.js +953 -703
- package/dist/umd/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
@@ -1271,6 +1271,56 @@ const initAdvancedVSeed_initAdvancedVSeed = (advancedVSeed, context)=>{
|
|
1271
1271
|
locale: locale || 'zh-CN'
|
1272
1272
|
};
|
1273
1273
|
};
|
1274
|
+
const ORIGINAL_DATA = '__OriginalData__';
|
1275
|
+
const Separator = '-';
|
1276
|
+
const FoldMeasureName = '__MeaName__';
|
1277
|
+
const FoldMeasureId = '__MeaId__';
|
1278
|
+
const FoldMeasureValue = '__MeaValue__';
|
1279
|
+
const MeasureName = FoldMeasureName;
|
1280
|
+
const FoldPrimaryMeasureValue = '__MeaPrimaryValue__';
|
1281
|
+
const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
|
1282
|
+
const FoldXMeasureValue = '__MeaXValue__';
|
1283
|
+
const FoldYMeasureValue = '__MeaYValue__';
|
1284
|
+
const XEncoding = '__Dim_X__';
|
1285
|
+
const YEncoding = '__Dim_Y__';
|
1286
|
+
const AngleEncoding = '__Dim_Angle__';
|
1287
|
+
const DetailEncoding = '__Dim_Detail__';
|
1288
|
+
const ColorEncoding = '__Dim_Color__';
|
1289
|
+
const ColorIdEncoding = '__Dim_ColorId__';
|
1290
|
+
const getBasicDimensions = (vseed)=>{
|
1291
|
+
const { dimensions, dataset } = vseed;
|
1292
|
+
const MeaName = {
|
1293
|
+
id: MeasureName,
|
1294
|
+
alias: intl.i18n`指标名称`
|
1295
|
+
};
|
1296
|
+
if (!dataset) throw new Error('dataset is required');
|
1297
|
+
if (0 === dataset.length) return [];
|
1298
|
+
if (dimensions) {
|
1299
|
+
const basicDimensions = dimensions.map((dim)=>({
|
1300
|
+
location: 'dimension',
|
1301
|
+
...dim
|
1302
|
+
}));
|
1303
|
+
if (basicDimensions.some((dim)=>dim.id === MeasureName)) return basicDimensions;
|
1304
|
+
basicDimensions.push(MeaName);
|
1305
|
+
return basicDimensions;
|
1306
|
+
}
|
1307
|
+
const top100dataset = dataset.slice(0, 100);
|
1308
|
+
const sample = top100dataset.reduce((prev, cur)=>({
|
1309
|
+
...prev,
|
1310
|
+
...cur
|
1311
|
+
}), {});
|
1312
|
+
const basicDimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
|
1313
|
+
'',
|
1314
|
+
null,
|
1315
|
+
void 0
|
1316
|
+
].includes(key)).map((dim)=>({
|
1317
|
+
id: dim,
|
1318
|
+
alias: dim,
|
1319
|
+
location: 'dimension'
|
1320
|
+
}));
|
1321
|
+
basicDimensions.push(MeaName);
|
1322
|
+
return basicDimensions;
|
1323
|
+
};
|
1274
1324
|
const getBasicMeasures = (vseed)=>{
|
1275
1325
|
const { dataset, measures } = vseed;
|
1276
1326
|
if (!measures || 0 === measures.length) return generateMeasuresByDataset(dataset);
|
@@ -1304,6 +1354,52 @@ const isMeasureTreeWithParentId = (vseed)=>{
|
|
1304
1354
|
if (!measures) return false;
|
1305
1355
|
return measures.some((measure)=>'parentId' in measure);
|
1306
1356
|
};
|
1357
|
+
const encodingForLine = (advancedVSeed, context)=>{
|
1358
|
+
const { vseed } = context;
|
1359
|
+
const { measures: vseedMeasures = [] } = vseed;
|
1360
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
1361
|
+
const dimensions = getBasicDimensions(vseed);
|
1362
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
1363
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
1364
|
+
const encoding = {};
|
1365
|
+
if (hasDimensionEncoding) generateDimensionEncoding(dimensions, encoding);
|
1366
|
+
else generateDefaultDimensionEncoding(dimensions, encoding);
|
1367
|
+
if (hasMeasureEncoding) generateMeasureEncoding(measures, encoding);
|
1368
|
+
else generateDefaultMeasureEncoding(measures, encoding);
|
1369
|
+
return {
|
1370
|
+
...advancedVSeed,
|
1371
|
+
encoding
|
1372
|
+
};
|
1373
|
+
};
|
1374
|
+
const generateDefaultMeasureEncoding = (measures, encoding)=>{
|
1375
|
+
encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
|
1376
|
+
encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
1377
|
+
};
|
1378
|
+
const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
1379
|
+
const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensions.map((d)=>d.id));
|
1380
|
+
encoding.x = uniqueDimIds.slice(0, 1);
|
1381
|
+
encoding.color = uniqueDimIds.slice(1);
|
1382
|
+
encoding.tooltip = uniqueDimIds;
|
1383
|
+
encoding.detail = [];
|
1384
|
+
encoding.label = [];
|
1385
|
+
encoding.row = [];
|
1386
|
+
encoding.column = [];
|
1387
|
+
};
|
1388
|
+
const generateMeasureEncoding = (measures, encoding)=>{
|
1389
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
1390
|
+
encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
1391
|
+
const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
1392
|
+
if (color.length > 0) encoding.color = color;
|
1393
|
+
};
|
1394
|
+
const generateDimensionEncoding = (dimensions, encoding)=>{
|
1395
|
+
encoding.x = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
|
1396
|
+
encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
1397
|
+
encoding.detail = [];
|
1398
|
+
if (0 === encoding.x.length) encoding.x = [
|
1399
|
+
dimensions[0].id
|
1400
|
+
];
|
1401
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
1402
|
+
};
|
1307
1403
|
const measureDepth = (measures = [])=>{
|
1308
1404
|
if (!measures) return 0;
|
1309
1405
|
let depth = 1;
|
@@ -1324,7 +1420,7 @@ const isPivotChart = (vseed)=>{
|
|
1324
1420
|
if (isVTable(vseed)) return false;
|
1325
1421
|
if (isMeasureTreeWithParentId(vseed)) {
|
1326
1422
|
const parentIds = vseed.measures?.map((measure)=>measure.parentId);
|
1327
|
-
return parentIds && parentIds.length > 1;
|
1423
|
+
return parentIds && (0, external_remeda_namespaceObject.unique)(parentIds).length > 1;
|
1328
1424
|
}
|
1329
1425
|
if ('dualAxis' === vseed.chartType || 'scatter' === vseed.chartType) {
|
1330
1426
|
const { dimensions = [] } = vseed;
|
@@ -1395,22 +1491,6 @@ const basicMeasuresToMeasureTree = (measures)=>{
|
|
1395
1491
|
}
|
1396
1492
|
];
|
1397
1493
|
};
|
1398
|
-
const ORIGINAL_DATA = '__OriginalData__';
|
1399
|
-
const Separator = '-';
|
1400
|
-
const FoldMeasureName = '__MeaName__';
|
1401
|
-
const FoldMeasureId = '__MeaId__';
|
1402
|
-
const FoldMeasureValue = '__MeaValue__';
|
1403
|
-
const MeasureName = FoldMeasureName;
|
1404
|
-
const FoldPrimaryMeasureValue = '__MeaPrimaryValue__';
|
1405
|
-
const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
|
1406
|
-
const FoldXMeasureValue = '__MeaXValue__';
|
1407
|
-
const FoldYMeasureValue = '__MeaYValue__';
|
1408
|
-
const XEncoding = '__Dim_X__';
|
1409
|
-
const YEncoding = '__Dim_Y__';
|
1410
|
-
const AngleEncoding = '__Dim_Angle__';
|
1411
|
-
const DetailEncoding = '__Dim_Detail__';
|
1412
|
-
const ColorEncoding = '__Dim_Color__';
|
1413
|
-
const ColorIdEncoding = '__Dim_ColorId__';
|
1414
1494
|
const autoDimensions_autoDimensions = (advancedVSeed, context)=>{
|
1415
1495
|
const result = {
|
1416
1496
|
...advancedVSeed
|
@@ -1450,52 +1530,13 @@ const autoDimensions_autoDimensions = (advancedVSeed, context)=>{
|
|
1450
1530
|
result.dimensions.push(MeaName);
|
1451
1531
|
return result;
|
1452
1532
|
};
|
1453
|
-
const encodingForLine = (advancedVSeed, context)=>{
|
1454
|
-
const { vseed } = context;
|
1455
|
-
const { dimensions } = advancedVSeed;
|
1456
|
-
if (!dimensions) return advancedVSeed;
|
1457
|
-
const encoding = vseed.encoding;
|
1458
|
-
if (encoding) {
|
1459
|
-
const x = encoding.x || [
|
1460
|
-
dimensions[0].id
|
1461
|
-
];
|
1462
|
-
const color = encoding.color || [
|
1463
|
-
(dimensions[1] || dimensions[0]).id
|
1464
|
-
];
|
1465
|
-
const detail = encoding.detail || [];
|
1466
|
-
const mergedDetail = 0 === detail.length ? dimensions.map((d)=>d.id).filter((id)=>!x.includes(id)) : encoding.detail;
|
1467
|
-
return {
|
1468
|
-
...advancedVSeed,
|
1469
|
-
encoding: {
|
1470
|
-
...encoding,
|
1471
|
-
x,
|
1472
|
-
color,
|
1473
|
-
detail: mergedDetail
|
1474
|
-
}
|
1475
|
-
};
|
1476
|
-
}
|
1477
|
-
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
1478
|
-
const mergedEncoding = {
|
1479
|
-
x: dimensions.slice(0, 1).map((item)=>item.id),
|
1480
|
-
color: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
1481
|
-
detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
1482
|
-
tooltip: dimensions.map((item)=>item.id),
|
1483
|
-
label: [],
|
1484
|
-
row: [],
|
1485
|
-
column: []
|
1486
|
-
};
|
1487
|
-
return {
|
1488
|
-
...advancedVSeed,
|
1489
|
-
encoding: mergedEncoding
|
1490
|
-
};
|
1491
|
-
};
|
1492
1533
|
const pivotAdapter = (pipeline, pivotPipeline)=>(advancedVSeed, context)=>{
|
1493
1534
|
const { vseed } = context;
|
1494
1535
|
const usePivotChart = isPivotChart(vseed);
|
1495
1536
|
if (usePivotChart) return execPipeline(pivotPipeline, context, advancedVSeed);
|
1496
1537
|
return execPipeline(pipeline, context, advancedVSeed);
|
1497
1538
|
};
|
1498
|
-
const foldMeasures = (dataset, measures,
|
1539
|
+
const foldMeasures = (dataset, measures, options)=>{
|
1499
1540
|
const { measureId, measureName, measureValue, colorMeasureId } = options || {};
|
1500
1541
|
const foldInfo = {
|
1501
1542
|
measureId,
|
@@ -1596,7 +1637,7 @@ const applyEncoding = (encoding, dimensions, datum, separator)=>{
|
|
1596
1637
|
};
|
1597
1638
|
const dataReshapeByEncoding = (dataset, dimensions, measures, encoding, options)=>{
|
1598
1639
|
const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, colorItemAsId = false, colorMeasureId } = options || {};
|
1599
|
-
const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures,
|
1640
|
+
const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, {
|
1600
1641
|
measureId: foldMeasureId,
|
1601
1642
|
measureName: foldMeasureName,
|
1602
1643
|
measureValue: foldMeasureValue,
|
@@ -1640,7 +1681,7 @@ const reshapeWithEncoding = (advancedVSeed, context)=>{
|
|
1640
1681
|
const { dimensions, measures, encoding } = advancedVSeed;
|
1641
1682
|
if (!measures || !dimensions || !dataset || !encoding) return result;
|
1642
1683
|
if (0 === measures.length) throw new Error('measures can not be empty');
|
1643
|
-
const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding, {
|
1684
|
+
const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, (0, external_remeda_namespaceObject.uniqueBy)(dimensions, (item)=>item.id), (0, external_remeda_namespaceObject.uniqueBy)(findAllMeasures(measures), (item)=>item.id), encoding, {
|
1644
1685
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
1645
1686
|
});
|
1646
1687
|
return {
|
@@ -1677,7 +1718,7 @@ const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
|
|
1677
1718
|
const measures = measureGroup.children;
|
1678
1719
|
if (!measures) return;
|
1679
1720
|
const groupId = measureGroup.id;
|
1680
|
-
const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding, {
|
1721
|
+
const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, (0, external_remeda_namespaceObject.uniqueBy)(dimensions, (item)=>item.id), (0, external_remeda_namespaceObject.uniqueBy)(measures, (item)=>item.id), encoding, {
|
1681
1722
|
foldMeasureValue: `${FoldMeasureValue}${groupId}`,
|
1682
1723
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
1683
1724
|
});
|
@@ -1886,9 +1927,9 @@ const annotation_annotation = (advancedVSeed, context)=>{
|
|
1886
1927
|
};
|
1887
1928
|
const lineAdvancedPipeline = [
|
1888
1929
|
initAdvancedVSeed_initAdvancedVSeed,
|
1930
|
+
encodingForLine,
|
1889
1931
|
buildMeasures,
|
1890
1932
|
autoDimensions_autoDimensions,
|
1891
|
-
encodingForLine,
|
1892
1933
|
pivotAdapter([
|
1893
1934
|
reshapeWithEncoding
|
1894
1935
|
], [
|
@@ -2249,117 +2290,6 @@ const yLinear = (spec, context)=>{
|
|
2249
2290
|
];
|
2250
2291
|
return result;
|
2251
2292
|
};
|
2252
|
-
const label_label = (spec, context)=>{
|
2253
|
-
const result = {
|
2254
|
-
...spec
|
2255
|
-
};
|
2256
|
-
const { advancedVSeed } = context;
|
2257
|
-
const { measures, datasetReshapeInfo, locale } = advancedVSeed;
|
2258
|
-
const { chartType } = advancedVSeed;
|
2259
|
-
const baseConfig = advancedVSeed.config[chartType];
|
2260
|
-
if (!baseConfig || !baseConfig.label) return result;
|
2261
|
-
const { measureId, measureValue } = datasetReshapeInfo[0].foldInfo;
|
2262
|
-
const { label } = baseConfig;
|
2263
|
-
const { enable } = label;
|
2264
|
-
result.label = {
|
2265
|
-
visible: enable,
|
2266
|
-
formatMethod: (value, datum)=>{
|
2267
|
-
const result = [];
|
2268
|
-
const formatValue = (value)=>{
|
2269
|
-
const id = datum[measureId];
|
2270
|
-
const measure = findMeasureById(measures, id);
|
2271
|
-
if (!measure) return value;
|
2272
|
-
const { format = {}, autoFormat = true } = measure;
|
2273
|
-
if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
|
2274
|
-
const formatter = createFormatter(format);
|
2275
|
-
return formatter(value);
|
2276
|
-
}
|
2277
|
-
if (autoFormat) return autoFormatter(value, locale);
|
2278
|
-
return String(value);
|
2279
|
-
};
|
2280
|
-
result.push(formatValue(datum[measureValue]));
|
2281
|
-
return result.join(' ');
|
2282
|
-
}
|
2283
|
-
};
|
2284
|
-
return result;
|
2285
|
-
};
|
2286
|
-
const tooltip_tooltip = (spec, context)=>{
|
2287
|
-
const result = {
|
2288
|
-
...spec
|
2289
|
-
};
|
2290
|
-
const { advancedVSeed } = context;
|
2291
|
-
const { measures, datasetReshapeInfo, chartType, locale, dimensions } = advancedVSeed;
|
2292
|
-
const baseConfig = advancedVSeed.config[chartType];
|
2293
|
-
const { tooltip = {
|
2294
|
-
enable: true
|
2295
|
-
} } = baseConfig;
|
2296
|
-
const { enable } = tooltip;
|
2297
|
-
const { measureId, measureValue, measureName } = datasetReshapeInfo[0].foldInfo;
|
2298
|
-
const { encodingColor: colorName } = datasetReshapeInfo[0].unfoldInfo;
|
2299
|
-
result.tooltip = {
|
2300
|
-
visible: enable,
|
2301
|
-
mark: {
|
2302
|
-
title: {
|
2303
|
-
visible: true
|
2304
|
-
},
|
2305
|
-
content: [
|
2306
|
-
...dimensions.map((item)=>({
|
2307
|
-
visible: true,
|
2308
|
-
hasShape: true,
|
2309
|
-
shapeType: 'rectRound',
|
2310
|
-
key: (datum)=>{
|
2311
|
-
if (item.alias || item.id) return item.alias || item.id;
|
2312
|
-
return datum && datum[item.id];
|
2313
|
-
},
|
2314
|
-
value: (datum)=>datum && datum[item.id]
|
2315
|
-
})),
|
2316
|
-
{
|
2317
|
-
visible: true,
|
2318
|
-
hasShape: true,
|
2319
|
-
key: (datum)=>datum && datum[measureName || colorName] || '',
|
2320
|
-
value: (datum)=>{
|
2321
|
-
if (!datum) return '';
|
2322
|
-
const value = datum[measureValue];
|
2323
|
-
const id = datum[measureId];
|
2324
|
-
const measure = findMeasureById(measures, id);
|
2325
|
-
if (!measure) return String(value);
|
2326
|
-
const { format = {}, autoFormat = true } = measure;
|
2327
|
-
if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
|
2328
|
-
const formatter = createFormatter(format);
|
2329
|
-
return formatter(value);
|
2330
|
-
}
|
2331
|
-
if (autoFormat) return autoFormatter(value, locale);
|
2332
|
-
return String(value);
|
2333
|
-
}
|
2334
|
-
}
|
2335
|
-
]
|
2336
|
-
},
|
2337
|
-
dimension: {
|
2338
|
-
content: [
|
2339
|
-
{
|
2340
|
-
visible: true,
|
2341
|
-
key: (datum)=>datum && datum[colorName] || '',
|
2342
|
-
value: (datum)=>{
|
2343
|
-
if (!datum) return '';
|
2344
|
-
const value = datum[measureValue];
|
2345
|
-
const id = datum[measureId];
|
2346
|
-
const measure = findMeasureById(measures, id);
|
2347
|
-
if (!measure) return String(value);
|
2348
|
-
const { format = {}, autoFormat = true } = measure;
|
2349
|
-
if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
|
2350
|
-
const formatter = createFormatter(format);
|
2351
|
-
return formatter(value);
|
2352
|
-
}
|
2353
|
-
if (autoFormat) return autoFormatter(value, locale);
|
2354
|
-
return String(value);
|
2355
|
-
},
|
2356
|
-
shapeType: 'rectRound'
|
2357
|
-
}
|
2358
|
-
]
|
2359
|
-
}
|
2360
|
-
};
|
2361
|
-
return result;
|
2362
|
-
};
|
2363
2293
|
const verticalCrosshairLine = (spec, context)=>{
|
2364
2294
|
const result = {
|
2365
2295
|
...spec
|
@@ -2868,69 +2798,180 @@ const lineStyle_lineStyle = (spec, context)=>{
|
|
2868
2798
|
}
|
2869
2799
|
};
|
2870
2800
|
};
|
2871
|
-
const
|
2872
|
-
|
2873
|
-
|
2874
|
-
|
2875
|
-
});
|
2876
|
-
const annotationPoint_annotationPoint = (spec, context)=>{
|
2801
|
+
const label_label = (spec, context)=>{
|
2802
|
+
const result = {
|
2803
|
+
...spec
|
2804
|
+
};
|
2877
2805
|
const { advancedVSeed } = context;
|
2878
|
-
const {
|
2879
|
-
|
2880
|
-
const
|
2881
|
-
|
2882
|
-
|
2883
|
-
|
2884
|
-
const
|
2885
|
-
|
2886
|
-
|
2887
|
-
|
2888
|
-
|
2889
|
-
|
2890
|
-
|
2891
|
-
|
2892
|
-
|
2893
|
-
|
2894
|
-
|
2895
|
-
|
2896
|
-
|
2897
|
-
|
2898
|
-
|
2899
|
-
|
2900
|
-
|
2901
|
-
|
2902
|
-
|
2903
|
-
|
2904
|
-
|
2905
|
-
|
2906
|
-
|
2907
|
-
|
2908
|
-
|
2909
|
-
|
2910
|
-
|
2911
|
-
|
2912
|
-
|
2913
|
-
|
2914
|
-
|
2915
|
-
|
2916
|
-
|
2917
|
-
|
2918
|
-
|
2919
|
-
|
2920
|
-
|
2921
|
-
|
2922
|
-
|
2923
|
-
|
2924
|
-
|
2925
|
-
|
2926
|
-
|
2927
|
-
|
2928
|
-
|
2929
|
-
|
2930
|
-
|
2931
|
-
|
2932
|
-
|
2933
|
-
|
2806
|
+
const { measures, datasetReshapeInfo, locale } = advancedVSeed;
|
2807
|
+
const { chartType } = advancedVSeed;
|
2808
|
+
const baseConfig = advancedVSeed.config[chartType];
|
2809
|
+
if (!baseConfig || !baseConfig.label) return result;
|
2810
|
+
const { measureId, measureValue } = datasetReshapeInfo[0].foldInfo;
|
2811
|
+
const { label } = baseConfig;
|
2812
|
+
const { enable } = label;
|
2813
|
+
result.label = {
|
2814
|
+
visible: enable,
|
2815
|
+
formatMethod: (value, datum)=>{
|
2816
|
+
const result = [];
|
2817
|
+
const formatValue = (value)=>{
|
2818
|
+
const id = datum[measureId];
|
2819
|
+
const measure = findMeasureById(measures, id);
|
2820
|
+
if (!measure) return value;
|
2821
|
+
const { format = {}, autoFormat = true } = measure;
|
2822
|
+
if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
|
2823
|
+
const formatter = createFormatter(format);
|
2824
|
+
return formatter(value);
|
2825
|
+
}
|
2826
|
+
if (autoFormat) return autoFormatter(value, locale);
|
2827
|
+
return String(value);
|
2828
|
+
};
|
2829
|
+
result.push(formatValue(datum[measureValue]));
|
2830
|
+
return result.join(' ');
|
2831
|
+
}
|
2832
|
+
};
|
2833
|
+
return result;
|
2834
|
+
};
|
2835
|
+
const tooltip_tooltip = (spec, context)=>{
|
2836
|
+
const result = {
|
2837
|
+
...spec
|
2838
|
+
};
|
2839
|
+
const { advancedVSeed } = context;
|
2840
|
+
const { measures, datasetReshapeInfo, chartType, locale, dimensions } = advancedVSeed;
|
2841
|
+
const baseConfig = advancedVSeed.config[chartType];
|
2842
|
+
const { tooltip = {
|
2843
|
+
enable: true
|
2844
|
+
} } = baseConfig;
|
2845
|
+
const { enable } = tooltip;
|
2846
|
+
const { measureId, measureValue, measureName } = datasetReshapeInfo[0].foldInfo;
|
2847
|
+
const { encodingColor: colorName } = datasetReshapeInfo[0].unfoldInfo;
|
2848
|
+
result.tooltip = {
|
2849
|
+
visible: enable,
|
2850
|
+
mark: {
|
2851
|
+
title: {
|
2852
|
+
visible: true
|
2853
|
+
},
|
2854
|
+
content: [
|
2855
|
+
...dimensions.map((item)=>({
|
2856
|
+
visible: true,
|
2857
|
+
hasShape: true,
|
2858
|
+
shapeType: 'rectRound',
|
2859
|
+
key: (datum)=>{
|
2860
|
+
if (item.alias || item.id) return item.alias || item.id;
|
2861
|
+
return datum && datum[item.id];
|
2862
|
+
},
|
2863
|
+
value: (datum)=>datum && datum[item.id]
|
2864
|
+
})),
|
2865
|
+
{
|
2866
|
+
visible: true,
|
2867
|
+
hasShape: true,
|
2868
|
+
key: (datum)=>datum && datum[measureName || colorName] || '',
|
2869
|
+
value: (datum)=>{
|
2870
|
+
if (!datum) return '';
|
2871
|
+
const value = datum[measureValue];
|
2872
|
+
const id = datum[measureId];
|
2873
|
+
const measure = findMeasureById(measures, id);
|
2874
|
+
if (!measure) return String(value);
|
2875
|
+
const { format = {}, autoFormat = true } = measure;
|
2876
|
+
if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
|
2877
|
+
const formatter = createFormatter(format);
|
2878
|
+
return formatter(value);
|
2879
|
+
}
|
2880
|
+
if (autoFormat) return autoFormatter(value, locale);
|
2881
|
+
return String(value);
|
2882
|
+
}
|
2883
|
+
}
|
2884
|
+
]
|
2885
|
+
},
|
2886
|
+
dimension: {
|
2887
|
+
content: [
|
2888
|
+
{
|
2889
|
+
visible: true,
|
2890
|
+
key: (datum)=>datum && datum[colorName] || '',
|
2891
|
+
value: (datum)=>{
|
2892
|
+
if (!datum) return '';
|
2893
|
+
const value = datum[measureValue];
|
2894
|
+
const id = datum[measureId];
|
2895
|
+
const measure = findMeasureById(measures, id);
|
2896
|
+
if (!measure) return String(value);
|
2897
|
+
const { format = {}, autoFormat = true } = measure;
|
2898
|
+
if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
|
2899
|
+
const formatter = createFormatter(format);
|
2900
|
+
return formatter(value);
|
2901
|
+
}
|
2902
|
+
if (autoFormat) return autoFormatter(value, locale);
|
2903
|
+
return String(value);
|
2904
|
+
},
|
2905
|
+
shapeType: 'rectRound'
|
2906
|
+
}
|
2907
|
+
]
|
2908
|
+
}
|
2909
|
+
};
|
2910
|
+
return result;
|
2911
|
+
};
|
2912
|
+
const isSubset = (sub, obj)=>Object.entries(sub).every(([key, value])=>{
|
2913
|
+
if ('string' == typeof value) return obj[key] === value;
|
2914
|
+
if ('number' == typeof value) return obj[key] === value;
|
2915
|
+
return true;
|
2916
|
+
});
|
2917
|
+
const annotationPoint_annotationPoint = (spec, context)=>{
|
2918
|
+
const { advancedVSeed } = context;
|
2919
|
+
const { annotation } = advancedVSeed;
|
2920
|
+
if (!annotation || !annotation.annotationPoint) return spec;
|
2921
|
+
const { annotationPoint } = annotation;
|
2922
|
+
const annotationPointList = Array.isArray(annotationPoint) ? annotationPoint : [
|
2923
|
+
annotationPoint
|
2924
|
+
];
|
2925
|
+
const markPoint = annotationPointList.flatMap((annotationPoint)=>{
|
2926
|
+
const { selector: selectorPoint, text = '', textColor = '#ffffff', textFontSize = 12, textFontWeight = 400, textAlign = 'center', textBaseline = 'top', textBackgroundBorderColor, textBackgroundBorderRadius = 4, textBackgroundBorderWidth = 1, textBackgroundColor = '#212121', textBackgroundPadding = 2, textBackgroundVisible = true, offsetX = 0, offsetY = 0 } = annotationPoint;
|
2927
|
+
const dataset = advancedVSeed.dataset.flat();
|
2928
|
+
const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
|
2929
|
+
return selectedData.map((datum)=>({
|
2930
|
+
zIndex: ANNOTATION_Z_INDEX,
|
2931
|
+
regionRelative: true,
|
2932
|
+
position: (data, context)=>{
|
2933
|
+
const targetDatum = data.find((item)=>isSubset(datum, item));
|
2934
|
+
if (targetDatum) {
|
2935
|
+
const { x, y } = context.dataToPosition(targetDatum);
|
2936
|
+
return {
|
2937
|
+
x,
|
2938
|
+
y
|
2939
|
+
};
|
2940
|
+
}
|
2941
|
+
},
|
2942
|
+
itemLine: {
|
2943
|
+
visible: false
|
2944
|
+
},
|
2945
|
+
itemContent: {
|
2946
|
+
offsetY,
|
2947
|
+
offsetX,
|
2948
|
+
text: {
|
2949
|
+
text: text,
|
2950
|
+
style: {
|
2951
|
+
visible: true,
|
2952
|
+
textAlign: textAlign,
|
2953
|
+
textBaseline: textBaseline,
|
2954
|
+
fill: textColor,
|
2955
|
+
stroke: textBackgroundColor,
|
2956
|
+
lineWidth: 1,
|
2957
|
+
fontSize: textFontSize,
|
2958
|
+
fontWeight: textFontWeight,
|
2959
|
+
dy: textFontSize
|
2960
|
+
},
|
2961
|
+
labelBackground: {
|
2962
|
+
visible: textBackgroundVisible,
|
2963
|
+
padding: textBackgroundPadding,
|
2964
|
+
style: {
|
2965
|
+
cornerRadius: textBackgroundBorderRadius ?? 4,
|
2966
|
+
fill: textBackgroundColor,
|
2967
|
+
stroke: textBackgroundBorderColor,
|
2968
|
+
lineWidth: textBackgroundBorderWidth,
|
2969
|
+
dy: textFontSize
|
2970
|
+
}
|
2971
|
+
}
|
2972
|
+
}
|
2973
|
+
}
|
2974
|
+
}));
|
2934
2975
|
});
|
2935
2976
|
return {
|
2936
2977
|
...spec,
|
@@ -3626,6 +3667,93 @@ const pivotDiscreteLegend = (spec, context)=>{
|
|
3626
3667
|
legends
|
3627
3668
|
};
|
3628
3669
|
};
|
3670
|
+
const pivotColorLegend = (spec, context)=>{
|
3671
|
+
const result = {
|
3672
|
+
...spec
|
3673
|
+
};
|
3674
|
+
const { advancedVSeed } = context;
|
3675
|
+
const { chartType } = advancedVSeed;
|
3676
|
+
const baseConfig = advancedVSeed.config[chartType];
|
3677
|
+
if (!baseConfig || !baseConfig.legend) return result;
|
3678
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
3679
|
+
const max = Math.max(...datasetReshapeInfo.map((d)=>d.foldInfo.colorRange[1]));
|
3680
|
+
const min = Math.min(...datasetReshapeInfo.map((d)=>d.foldInfo.colorRange[0]));
|
3681
|
+
const { legend, color } = baseConfig;
|
3682
|
+
const { colorScheme, linearColorScheme } = color;
|
3683
|
+
const { enable, position = 'bottom', labelFontColor, labelFontSize = 12, labelFontWeight = 400 } = legend || {};
|
3684
|
+
const orient = [
|
3685
|
+
'bottom',
|
3686
|
+
'bottomLeft',
|
3687
|
+
'bottomRight',
|
3688
|
+
'bl',
|
3689
|
+
'br'
|
3690
|
+
].includes(position) ? 'bottom' : [
|
3691
|
+
'top',
|
3692
|
+
'topLeft',
|
3693
|
+
'topRight',
|
3694
|
+
'tl',
|
3695
|
+
'tr'
|
3696
|
+
].includes(position) ? 'top' : [
|
3697
|
+
'left',
|
3698
|
+
'leftTop',
|
3699
|
+
'leftBottom',
|
3700
|
+
'lt',
|
3701
|
+
'lb'
|
3702
|
+
].includes(position) ? 'left' : 'right';
|
3703
|
+
const legendPosition = [
|
3704
|
+
'topLeft',
|
3705
|
+
'bottomLeft',
|
3706
|
+
'leftTop',
|
3707
|
+
'rightTop',
|
3708
|
+
'lt',
|
3709
|
+
'rt',
|
3710
|
+
'tl',
|
3711
|
+
'bl'
|
3712
|
+
].includes(position) ? 'start' : [
|
3713
|
+
'topRight',
|
3714
|
+
'bottomRight',
|
3715
|
+
'leftBottom',
|
3716
|
+
'rightBottom',
|
3717
|
+
'lb',
|
3718
|
+
'rb',
|
3719
|
+
'rt',
|
3720
|
+
'br'
|
3721
|
+
].includes(position) ? 'end' : 'middle';
|
3722
|
+
const legends = {
|
3723
|
+
visible: enable,
|
3724
|
+
type: 'color',
|
3725
|
+
orient,
|
3726
|
+
position: legendPosition,
|
3727
|
+
colors: linearColorScheme || colorScheme || [],
|
3728
|
+
value: [
|
3729
|
+
min,
|
3730
|
+
max
|
3731
|
+
],
|
3732
|
+
min: min,
|
3733
|
+
max: max,
|
3734
|
+
maxWidth: '30%',
|
3735
|
+
startText: {
|
3736
|
+
visible: true,
|
3737
|
+
style: {
|
3738
|
+
fill: labelFontColor,
|
3739
|
+
fontSize: labelFontSize,
|
3740
|
+
fontWeight: labelFontWeight
|
3741
|
+
}
|
3742
|
+
},
|
3743
|
+
endText: {
|
3744
|
+
visible: true,
|
3745
|
+
style: {
|
3746
|
+
fill: labelFontColor,
|
3747
|
+
fontSize: labelFontSize,
|
3748
|
+
fontWeight: labelFontWeight
|
3749
|
+
}
|
3750
|
+
}
|
3751
|
+
};
|
3752
|
+
return {
|
3753
|
+
...result,
|
3754
|
+
legends
|
3755
|
+
};
|
3756
|
+
};
|
3629
3757
|
const pivotAdapter_pivotAdapter = (pipeline, pivotPipeline)=>(spec, context)=>{
|
3630
3758
|
const { vseed } = context;
|
3631
3759
|
const usePivotChart = isPivotChart(vseed);
|
@@ -3640,13 +3768,13 @@ const line_line = [
|
|
3640
3768
|
progressive,
|
3641
3769
|
xBand,
|
3642
3770
|
yLinear,
|
3643
|
-
label_label,
|
3644
|
-
tooltip_tooltip,
|
3645
3771
|
verticalCrosshairLine,
|
3646
3772
|
colorAdapter(discreteLegend, colorLegend),
|
3647
3773
|
colorPointStyleFill(pointStyle_pointStyle),
|
3648
3774
|
pointStateDimensionHover,
|
3649
3775
|
colorLineStyleFill(lineStyle_lineStyle),
|
3776
|
+
label_label,
|
3777
|
+
tooltip_tooltip,
|
3650
3778
|
annotationPoint_annotationPoint,
|
3651
3779
|
annotationVerticalLine_annotationVerticalLine,
|
3652
3780
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -3659,18 +3787,18 @@ const pivotLine = [
|
|
3659
3787
|
datasetPivot,
|
3660
3788
|
pivotIndicators_pivotIndicators([
|
3661
3789
|
initLine,
|
3662
|
-
color_color,
|
3790
|
+
colorAdapter(color_color, linearColor),
|
3663
3791
|
background_backgroundColor,
|
3664
3792
|
datasetXY,
|
3665
3793
|
progressive,
|
3666
3794
|
xBand,
|
3667
3795
|
yLinear,
|
3668
|
-
label_label,
|
3669
|
-
tooltip_tooltip,
|
3670
3796
|
verticalCrosshairLine,
|
3671
|
-
pointStyle_pointStyle,
|
3797
|
+
colorPointStyleFill(pointStyle_pointStyle),
|
3672
3798
|
pointStateDimensionHover,
|
3673
|
-
lineStyle_lineStyle,
|
3799
|
+
colorLineStyleFill(lineStyle_lineStyle),
|
3800
|
+
label_label,
|
3801
|
+
tooltip_tooltip,
|
3674
3802
|
annotationPoint_annotationPoint,
|
3675
3803
|
annotationVerticalLine_annotationVerticalLine,
|
3676
3804
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -3678,7 +3806,7 @@ const pivotLine = [
|
|
3678
3806
|
]),
|
3679
3807
|
pivotRowDimensions,
|
3680
3808
|
pivotColumnDimensions,
|
3681
|
-
pivotDiscreteLegend
|
3809
|
+
colorAdapter(pivotDiscreteLegend, pivotColorLegend)
|
3682
3810
|
];
|
3683
3811
|
const lineSpecPipeline = [
|
3684
3812
|
pivotAdapter_pivotAdapter(line_line, pivotLine)
|
@@ -3689,51 +3817,58 @@ const registerLine = ()=>{
|
|
3689
3817
|
};
|
3690
3818
|
const encodingForColumn = (advancedVSeed, context)=>{
|
3691
3819
|
const { vseed } = context;
|
3692
|
-
const {
|
3693
|
-
|
3694
|
-
const
|
3695
|
-
|
3696
|
-
|
3697
|
-
|
3698
|
-
|
3699
|
-
|
3700
|
-
|
3701
|
-
|
3702
|
-
const detail = encoding.detail || [];
|
3703
|
-
const mergedDetail = 0 === detail.length ? (0, external_remeda_namespaceObject.unique)([
|
3704
|
-
...color,
|
3705
|
-
...detail
|
3706
|
-
]) : detail;
|
3707
|
-
return {
|
3708
|
-
...advancedVSeed,
|
3709
|
-
encoding: {
|
3710
|
-
...encoding,
|
3711
|
-
x,
|
3712
|
-
color,
|
3713
|
-
detail: mergedDetail
|
3714
|
-
}
|
3715
|
-
};
|
3716
|
-
}
|
3717
|
-
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
3718
|
-
const mergedEncoding = {
|
3719
|
-
x: dimensions.slice(0, 1).map((item)=>item.id),
|
3720
|
-
color: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
3721
|
-
detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
3722
|
-
tooltip: dimensions.map((item)=>item.id),
|
3723
|
-
label: [],
|
3724
|
-
row: [],
|
3725
|
-
column: []
|
3726
|
-
};
|
3820
|
+
const { measures: vseedMeasures = [] } = vseed;
|
3821
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
3822
|
+
const dimensions = getBasicDimensions(vseed);
|
3823
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
3824
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
3825
|
+
const encoding = {};
|
3826
|
+
if (hasDimensionEncoding) column_generateDimensionEncoding(dimensions, encoding);
|
3827
|
+
else column_generateDefaultDimensionEncoding(dimensions, encoding);
|
3828
|
+
if (hasMeasureEncoding) column_generateMeasureEncoding(measures, encoding);
|
3829
|
+
else column_generateDefaultMeasureEncoding(measures, encoding);
|
3727
3830
|
return {
|
3728
3831
|
...advancedVSeed,
|
3729
|
-
encoding
|
3832
|
+
encoding
|
3730
3833
|
};
|
3731
3834
|
};
|
3835
|
+
const column_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
3836
|
+
encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
|
3837
|
+
encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
3838
|
+
};
|
3839
|
+
const column_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
3840
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
3841
|
+
const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensions.map((d)=>d.id));
|
3842
|
+
encoding.x = uniqueDimIds.slice(0, 1);
|
3843
|
+
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
3844
|
+
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
3845
|
+
encoding.tooltip = uniqueDimIds;
|
3846
|
+
encoding.label = [];
|
3847
|
+
encoding.row = [];
|
3848
|
+
encoding.column = [];
|
3849
|
+
};
|
3850
|
+
const column_generateMeasureEncoding = (measures, encoding)=>{
|
3851
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
3852
|
+
encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
3853
|
+
const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
3854
|
+
if (color.length > 0) encoding.color = color;
|
3855
|
+
return encoding;
|
3856
|
+
};
|
3857
|
+
const column_generateDimensionEncoding = (dimensions, encoding)=>{
|
3858
|
+
encoding.x = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
|
3859
|
+
encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
3860
|
+
encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
3861
|
+
if (0 === encoding.x.length) encoding.x = [
|
3862
|
+
dimensions[0].id
|
3863
|
+
];
|
3864
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
3865
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
3866
|
+
};
|
3732
3867
|
const columnAdvancedPipeline = [
|
3733
3868
|
initAdvancedVSeed_initAdvancedVSeed,
|
3869
|
+
encodingForColumn,
|
3734
3870
|
buildMeasures,
|
3735
3871
|
autoDimensions_autoDimensions,
|
3736
|
-
encodingForColumn,
|
3737
3872
|
pivotAdapter([
|
3738
3873
|
reshapeWithEncoding
|
3739
3874
|
], [
|
@@ -4036,93 +4171,6 @@ const annotationAreaBand = (spec, context)=>{
|
|
4036
4171
|
markArea: markArea
|
4037
4172
|
};
|
4038
4173
|
};
|
4039
|
-
const pivotColorLegend = (spec, context)=>{
|
4040
|
-
const result = {
|
4041
|
-
...spec
|
4042
|
-
};
|
4043
|
-
const { advancedVSeed } = context;
|
4044
|
-
const { chartType } = advancedVSeed;
|
4045
|
-
const baseConfig = advancedVSeed.config[chartType];
|
4046
|
-
if (!baseConfig || !baseConfig.legend) return result;
|
4047
|
-
const { datasetReshapeInfo } = advancedVSeed;
|
4048
|
-
const max = Math.max(...datasetReshapeInfo.map((d)=>d.foldInfo.colorRange[1]));
|
4049
|
-
const min = Math.min(...datasetReshapeInfo.map((d)=>d.foldInfo.colorRange[0]));
|
4050
|
-
const { legend, color } = baseConfig;
|
4051
|
-
const { colorScheme, linearColorScheme } = color;
|
4052
|
-
const { enable, position = 'bottom', labelFontColor, labelFontSize = 12, labelFontWeight = 400 } = legend || {};
|
4053
|
-
const orient = [
|
4054
|
-
'bottom',
|
4055
|
-
'bottomLeft',
|
4056
|
-
'bottomRight',
|
4057
|
-
'bl',
|
4058
|
-
'br'
|
4059
|
-
].includes(position) ? 'bottom' : [
|
4060
|
-
'top',
|
4061
|
-
'topLeft',
|
4062
|
-
'topRight',
|
4063
|
-
'tl',
|
4064
|
-
'tr'
|
4065
|
-
].includes(position) ? 'top' : [
|
4066
|
-
'left',
|
4067
|
-
'leftTop',
|
4068
|
-
'leftBottom',
|
4069
|
-
'lt',
|
4070
|
-
'lb'
|
4071
|
-
].includes(position) ? 'left' : 'right';
|
4072
|
-
const legendPosition = [
|
4073
|
-
'topLeft',
|
4074
|
-
'bottomLeft',
|
4075
|
-
'leftTop',
|
4076
|
-
'rightTop',
|
4077
|
-
'lt',
|
4078
|
-
'rt',
|
4079
|
-
'tl',
|
4080
|
-
'bl'
|
4081
|
-
].includes(position) ? 'start' : [
|
4082
|
-
'topRight',
|
4083
|
-
'bottomRight',
|
4084
|
-
'leftBottom',
|
4085
|
-
'rightBottom',
|
4086
|
-
'lb',
|
4087
|
-
'rb',
|
4088
|
-
'rt',
|
4089
|
-
'br'
|
4090
|
-
].includes(position) ? 'end' : 'middle';
|
4091
|
-
const legends = {
|
4092
|
-
visible: enable,
|
4093
|
-
type: 'color',
|
4094
|
-
orient,
|
4095
|
-
position: legendPosition,
|
4096
|
-
colors: linearColorScheme || colorScheme || [],
|
4097
|
-
value: [
|
4098
|
-
min,
|
4099
|
-
max
|
4100
|
-
],
|
4101
|
-
min: min,
|
4102
|
-
max: max,
|
4103
|
-
maxWidth: '30%',
|
4104
|
-
startText: {
|
4105
|
-
visible: true,
|
4106
|
-
style: {
|
4107
|
-
fill: labelFontColor,
|
4108
|
-
fontSize: labelFontSize,
|
4109
|
-
fontWeight: labelFontWeight
|
4110
|
-
}
|
4111
|
-
},
|
4112
|
-
endText: {
|
4113
|
-
visible: true,
|
4114
|
-
style: {
|
4115
|
-
fill: labelFontColor,
|
4116
|
-
fontSize: labelFontSize,
|
4117
|
-
fontWeight: labelFontWeight
|
4118
|
-
}
|
4119
|
-
}
|
4120
|
-
};
|
4121
|
-
return {
|
4122
|
-
...result,
|
4123
|
-
legends
|
4124
|
-
};
|
4125
|
-
};
|
4126
4174
|
const column = [
|
4127
4175
|
initColumn,
|
4128
4176
|
stackCornerRadius_stackCornerRadius,
|
@@ -4180,9 +4228,9 @@ const registerColumn = ()=>{
|
|
4180
4228
|
};
|
4181
4229
|
const columnParallelAdvancedPipeline = [
|
4182
4230
|
initAdvancedVSeed_initAdvancedVSeed,
|
4231
|
+
encodingForColumn,
|
4183
4232
|
buildMeasures,
|
4184
4233
|
autoDimensions_autoDimensions,
|
4185
|
-
encodingForColumn,
|
4186
4234
|
pivotAdapter([
|
4187
4235
|
reshapeWithEncoding
|
4188
4236
|
], [
|
@@ -4277,9 +4325,9 @@ const registerColumnParallel = ()=>{
|
|
4277
4325
|
};
|
4278
4326
|
const columnPercentAdvancedPipeline = [
|
4279
4327
|
initAdvancedVSeed_initAdvancedVSeed,
|
4328
|
+
encodingForColumn,
|
4280
4329
|
buildMeasures,
|
4281
4330
|
autoDimensions_autoDimensions,
|
4282
|
-
encodingForColumn,
|
4283
4331
|
pivotAdapter([
|
4284
4332
|
reshapeWithEncoding
|
4285
4333
|
], [
|
@@ -4358,46 +4406,53 @@ const registerColumnPercent = ()=>{
|
|
4358
4406
|
};
|
4359
4407
|
const encodingForBar = (advancedVSeed, context)=>{
|
4360
4408
|
const { vseed } = context;
|
4361
|
-
const {
|
4362
|
-
|
4363
|
-
const
|
4364
|
-
|
4365
|
-
|
4366
|
-
|
4367
|
-
|
4368
|
-
|
4369
|
-
|
4370
|
-
|
4371
|
-
const detail = encoding.detail || [];
|
4372
|
-
const mergedDetail = 0 === detail.length ? (0, external_remeda_namespaceObject.unique)([
|
4373
|
-
...color,
|
4374
|
-
...detail
|
4375
|
-
]) : detail;
|
4376
|
-
return {
|
4377
|
-
...advancedVSeed,
|
4378
|
-
encoding: {
|
4379
|
-
...encoding,
|
4380
|
-
y,
|
4381
|
-
color,
|
4382
|
-
detail: mergedDetail
|
4383
|
-
}
|
4384
|
-
};
|
4385
|
-
}
|
4386
|
-
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
4387
|
-
const mergedEncoding = {
|
4388
|
-
y: dimensions.slice(0, 1).map((item)=>item.id),
|
4389
|
-
color: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
4390
|
-
detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
4391
|
-
tooltip: dimensions.map((item)=>item.id),
|
4392
|
-
label: [],
|
4393
|
-
row: [],
|
4394
|
-
column: []
|
4395
|
-
};
|
4409
|
+
const { measures: vseedMeasures = [] } = vseed;
|
4410
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
4411
|
+
const dimensions = getBasicDimensions(vseed);
|
4412
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
4413
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
4414
|
+
const encoding = {};
|
4415
|
+
if (hasDimensionEncoding) bar_generateDimensionEncoding(dimensions, encoding);
|
4416
|
+
else bar_generateDefaultDimensionEncoding(dimensions, encoding);
|
4417
|
+
if (hasMeasureEncoding) bar_generateMeasureEncoding(measures, encoding);
|
4418
|
+
else bar_generateDefaultMeasureEncoding(measures, encoding);
|
4396
4419
|
return {
|
4397
4420
|
...advancedVSeed,
|
4398
|
-
encoding
|
4421
|
+
encoding
|
4399
4422
|
};
|
4400
4423
|
};
|
4424
|
+
const bar_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
4425
|
+
encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
|
4426
|
+
encoding.x = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
4427
|
+
};
|
4428
|
+
const bar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
4429
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
4430
|
+
const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensions.map((d)=>d.id));
|
4431
|
+
encoding.y = uniqueDimIds.slice(0, 1);
|
4432
|
+
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
4433
|
+
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
4434
|
+
encoding.tooltip = uniqueDimIds;
|
4435
|
+
encoding.label = [];
|
4436
|
+
encoding.row = [];
|
4437
|
+
encoding.column = [];
|
4438
|
+
};
|
4439
|
+
const bar_generateMeasureEncoding = (measures, encoding)=>{
|
4440
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
4441
|
+
encoding.x = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
4442
|
+
const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
4443
|
+
if (color.length > 0) encoding.color = color;
|
4444
|
+
return encoding;
|
4445
|
+
};
|
4446
|
+
const bar_generateDimensionEncoding = (dimensions, encoding)=>{
|
4447
|
+
encoding.y = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
|
4448
|
+
encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
4449
|
+
encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
4450
|
+
if (0 === encoding.y.length) encoding.y = [
|
4451
|
+
dimensions[0].id
|
4452
|
+
];
|
4453
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.y?.includes(item.id)).map((item)=>item.id);
|
4454
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.y?.includes(item.id)).map((item)=>item.id);
|
4455
|
+
};
|
4401
4456
|
const sortYBandAxis = (advancedVSeed, context)=>{
|
4402
4457
|
const result = {
|
4403
4458
|
...advancedVSeed
|
@@ -4416,9 +4471,9 @@ const sortYBandAxis = (advancedVSeed, context)=>{
|
|
4416
4471
|
};
|
4417
4472
|
const barAdvancedPipeline = [
|
4418
4473
|
initAdvancedVSeed_initAdvancedVSeed,
|
4474
|
+
encodingForBar,
|
4419
4475
|
buildMeasures,
|
4420
4476
|
autoDimensions_autoDimensions,
|
4421
|
-
encodingForBar,
|
4422
4477
|
pivotAdapter([
|
4423
4478
|
reshapeWithEncoding
|
4424
4479
|
], [
|
@@ -4936,9 +4991,9 @@ const registerBarPercent = ()=>{
|
|
4936
4991
|
};
|
4937
4992
|
const areaAdvancedPipeline = [
|
4938
4993
|
initAdvancedVSeed_initAdvancedVSeed,
|
4994
|
+
encodingForLine,
|
4939
4995
|
buildMeasures,
|
4940
4996
|
autoDimensions_autoDimensions,
|
4941
|
-
encodingForColumn,
|
4942
4997
|
pivotAdapter([
|
4943
4998
|
reshapeWithEncoding
|
4944
4999
|
], [
|
@@ -5094,9 +5149,9 @@ const registerArea = ()=>{
|
|
5094
5149
|
};
|
5095
5150
|
const areaPercentAdvancedPipeline = [
|
5096
5151
|
initAdvancedVSeed_initAdvancedVSeed,
|
5152
|
+
encodingForLine,
|
5097
5153
|
buildMeasures,
|
5098
5154
|
autoDimensions_autoDimensions,
|
5099
|
-
encodingForColumn,
|
5100
5155
|
pivotAdapter([
|
5101
5156
|
reshapeWithEncoding
|
5102
5157
|
], [
|
@@ -5170,6 +5225,49 @@ const registerAreaPercent = ()=>{
|
|
5170
5225
|
Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
|
5171
5226
|
Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
|
5172
5227
|
};
|
5228
|
+
const encodingForScatter = (advancedVSeed, context)=>{
|
5229
|
+
const { vseed } = context;
|
5230
|
+
const { measures: vseedMeasures = [] } = vseed;
|
5231
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
5232
|
+
const dimensions = getBasicDimensions(vseed);
|
5233
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
5234
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
5235
|
+
const encoding = {};
|
5236
|
+
if (hasDimensionEncoding) scatter_generateDimensionEncoding(dimensions, encoding);
|
5237
|
+
else scatter_generateDefaultDimensionEncoding(dimensions, encoding);
|
5238
|
+
if (hasMeasureEncoding) scatter_generateMeasureEncoding(measures, encoding);
|
5239
|
+
else scatter_generateDefaultMeasureEncoding(measures, encoding);
|
5240
|
+
return {
|
5241
|
+
...advancedVSeed,
|
5242
|
+
encoding
|
5243
|
+
};
|
5244
|
+
};
|
5245
|
+
const scatter_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
5246
|
+
encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
|
5247
|
+
encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5248
|
+
};
|
5249
|
+
const scatter_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
5250
|
+
const dimensionsWithoutMeasureName = dimensions.filter((item)=>item.id !== MeasureName);
|
5251
|
+
const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensionsWithoutMeasureName.map((d)=>d.id));
|
5252
|
+
encoding.color = uniqueDimIds.slice(0);
|
5253
|
+
encoding.detail = uniqueDimIds.slice(0);
|
5254
|
+
encoding.tooltip = uniqueDimIds;
|
5255
|
+
encoding.label = [];
|
5256
|
+
encoding.row = [];
|
5257
|
+
encoding.column = [];
|
5258
|
+
};
|
5259
|
+
const scatter_generateMeasureEncoding = (measures, encoding)=>{
|
5260
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
5261
|
+
encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5262
|
+
const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5263
|
+
if (color.length > 0) encoding.color = color;
|
5264
|
+
};
|
5265
|
+
const scatter_generateDimensionEncoding = (dimensions, encoding)=>{
|
5266
|
+
encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5267
|
+
encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
5268
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
5269
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
5270
|
+
};
|
5173
5271
|
const buildMeasuresForScatter = (advancedVSeed, context)=>{
|
5174
5272
|
const { vseed } = context;
|
5175
5273
|
if (isMeasureTreeWithChildren(vseed)) {
|
@@ -5260,52 +5358,16 @@ const buildMeasuresForScatter_generateMeasuresByParentId = (measures)=>{
|
|
5260
5358
|
const encoding = Array.isArray(item.encoding) ? item.encoding : [
|
5261
5359
|
item.encoding
|
5262
5360
|
];
|
5263
|
-
const isY = encoding.includes('yAxis');
|
5264
5361
|
const isX = encoding.includes('xAxis');
|
5362
|
+
const isY = encoding.includes('yAxis');
|
5363
|
+
const isEmpty = !encoding.length;
|
5265
5364
|
if (isY) scatterChart.yMeasures.push(item);
|
5266
5365
|
else if (isX) scatterChart.xMeasures.push(item);
|
5267
|
-
else if (
|
5366
|
+
else if (isEmpty) if (0 === scatterChart.yMeasures.length) scatterChart.yMeasures.push(item);
|
5268
5367
|
else scatterChart.xMeasures.push(item);
|
5269
5368
|
});
|
5270
5369
|
return scatterMeasuresToMeasureTree(scatterMeasures);
|
5271
5370
|
};
|
5272
|
-
const encodingForScatter = (advancedVSeed, context)=>{
|
5273
|
-
const { vseed } = context;
|
5274
|
-
const { dimensions } = advancedVSeed;
|
5275
|
-
if (!dimensions) return advancedVSeed;
|
5276
|
-
const encoding = vseed.encoding;
|
5277
|
-
if (encoding) {
|
5278
|
-
const detail = encoding.detail || [];
|
5279
|
-
const color = encoding.color || [
|
5280
|
-
(dimensions[1] || dimensions[0]).id
|
5281
|
-
];
|
5282
|
-
const mergedDetail = 0 === detail.length ? (0, external_remeda_namespaceObject.unique)([
|
5283
|
-
...color,
|
5284
|
-
...detail
|
5285
|
-
]) : detail;
|
5286
|
-
return {
|
5287
|
-
...advancedVSeed,
|
5288
|
-
encoding: {
|
5289
|
-
...encoding,
|
5290
|
-
color,
|
5291
|
-
detail: mergedDetail
|
5292
|
-
}
|
5293
|
-
};
|
5294
|
-
}
|
5295
|
-
const dimensionsWithoutMeasureName = dimensions.filter((item)=>item.id !== MeasureName);
|
5296
|
-
const mergedEncoding = {
|
5297
|
-
color: dimensions.slice(0).map((item)=>item.id),
|
5298
|
-
detail: dimensionsWithoutMeasureName.slice(0).map((item)=>item.id),
|
5299
|
-
tooltip: dimensionsWithoutMeasureName.map((item)=>item.id),
|
5300
|
-
label: [],
|
5301
|
-
row: [],
|
5302
|
-
column: []
|
5303
|
-
};
|
5304
|
-
return {
|
5305
|
-
...advancedVSeed,
|
5306
|
-
encoding: mergedEncoding
|
5307
|
-
};
|
5308
|
-
};
|
5309
5371
|
const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
5310
5372
|
const result = {
|
5311
5373
|
...advancedVSeed
|
@@ -5322,7 +5384,7 @@ const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
|
5322
5384
|
const xMeasures = measures[0];
|
5323
5385
|
const yMeasures = measures[1] || xMeasures;
|
5324
5386
|
if (xMeasures && xMeasures.children) {
|
5325
|
-
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
|
5387
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, (0, external_remeda_namespaceObject.uniqueBy)(dimensions, (d)=>d.id), (0, external_remeda_namespaceObject.uniqueBy)(xMeasures.children, (d)=>d.id), encoding, {
|
5326
5388
|
foldMeasureValue: FoldXMeasureValue,
|
5327
5389
|
colorItemAsId: true,
|
5328
5390
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
@@ -5332,7 +5394,7 @@ const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
|
5332
5394
|
unfoldInfoList.push(unfoldInfo);
|
5333
5395
|
}
|
5334
5396
|
if (yMeasures && yMeasures.children) {
|
5335
|
-
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(datasets[0], dimensions, yMeasures.children, encoding, {
|
5397
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(datasets[0], (0, external_remeda_namespaceObject.uniqueBy)(dimensions, (d)=>d.id), (0, external_remeda_namespaceObject.uniqueBy)(yMeasures.children, (d)=>d.id), encoding, {
|
5336
5398
|
foldMeasureValue: FoldYMeasureValue,
|
5337
5399
|
colorItemAsId: true,
|
5338
5400
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
@@ -5436,9 +5498,9 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
|
5436
5498
|
};
|
5437
5499
|
const scatterAdvancedPipeline = [
|
5438
5500
|
initAdvancedVSeed_initAdvancedVSeed,
|
5501
|
+
encodingForScatter,
|
5439
5502
|
buildMeasuresForScatter,
|
5440
5503
|
autoDimensions_autoDimensions,
|
5441
|
-
encodingForScatter,
|
5442
5504
|
pivotAdapter([
|
5443
5505
|
reshapeWithScatterEncoding
|
5444
5506
|
], [
|
@@ -5574,7 +5636,7 @@ const pivotScatter = [
|
|
5574
5636
|
]),
|
5575
5637
|
pivotRowDimensions,
|
5576
5638
|
pivotColumnDimensions,
|
5577
|
-
pivotDiscreteLegend
|
5639
|
+
colorAdapter(pivotDiscreteLegend, pivotColorLegend)
|
5578
5640
|
];
|
5579
5641
|
const scatterSpecPipeline = [
|
5580
5642
|
pivotAdapter_pivotAdapter(scatter, pivotScatter)
|
@@ -5583,6 +5645,55 @@ const registerScatter = ()=>{
|
|
5583
5645
|
Builder._advancedPipelineMap.scatter = scatterAdvancedPipeline;
|
5584
5646
|
Builder._specPipelineMap.scatter = scatterSpecPipeline;
|
5585
5647
|
};
|
5648
|
+
const encodingForDualAxis = (advancedVSeed, context)=>{
|
5649
|
+
const { vseed } = context;
|
5650
|
+
const { measures: vseedMeasures = [] } = vseed;
|
5651
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
5652
|
+
const dimensions = getBasicDimensions(vseed);
|
5653
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
5654
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
5655
|
+
const encoding = {};
|
5656
|
+
if (hasDimensionEncoding) dualAxis_generateDimensionEncoding(dimensions, encoding);
|
5657
|
+
else dualAxis_generateDefaultDimensionEncoding(dimensions, encoding);
|
5658
|
+
if (hasMeasureEncoding) dualAxis_generateMeasureEncoding(measures, encoding);
|
5659
|
+
else dualAxis_generateDefaultMeasureEncoding(measures, encoding);
|
5660
|
+
return {
|
5661
|
+
...advancedVSeed,
|
5662
|
+
encoding
|
5663
|
+
};
|
5664
|
+
};
|
5665
|
+
const dualAxis_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
5666
|
+
encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
|
5667
|
+
encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5668
|
+
};
|
5669
|
+
const dualAxis_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
5670
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
5671
|
+
const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensions.map((d)=>d.id));
|
5672
|
+
encoding.x = uniqueDimIds.slice(0, 1);
|
5673
|
+
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
5674
|
+
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
5675
|
+
encoding.tooltip = uniqueDimIds;
|
5676
|
+
encoding.label = [];
|
5677
|
+
encoding.row = [];
|
5678
|
+
encoding.column = [];
|
5679
|
+
};
|
5680
|
+
const dualAxis_generateMeasureEncoding = (measures, encoding)=>{
|
5681
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
5682
|
+
encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5683
|
+
const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5684
|
+
if (color.length > 0) encoding.color = color;
|
5685
|
+
return encoding;
|
5686
|
+
};
|
5687
|
+
const dualAxis_generateDimensionEncoding = (dimensions, encoding)=>{
|
5688
|
+
encoding.x = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
|
5689
|
+
encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5690
|
+
encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
5691
|
+
if (0 === encoding.x.length) encoding.x = [
|
5692
|
+
dimensions[0].id
|
5693
|
+
];
|
5694
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
5695
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
5696
|
+
};
|
5586
5697
|
const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
|
5587
5698
|
const { vseed } = context;
|
5588
5699
|
if (isMeasureTreeWithChildren(vseed)) {
|
@@ -5675,54 +5786,14 @@ const buildMeasuresForDualAxis_generateMeasuresByParentId = (measures)=>{
|
|
5675
5786
|
];
|
5676
5787
|
const isPrimary = encoding.includes('primaryYAxis');
|
5677
5788
|
const isSecondary = encoding.includes('secondaryYAxis');
|
5789
|
+
const isEmpty = !item.encoding;
|
5678
5790
|
if (isPrimary) dualChart.primaryMeasures.push(item);
|
5679
5791
|
else if (isSecondary) dualChart.secondaryMeasures.push(item);
|
5680
|
-
else if (
|
5792
|
+
else if (isEmpty) if (0 === dualChart.primaryMeasures.length) dualChart.primaryMeasures.push(item);
|
5681
5793
|
else dualChart.secondaryMeasures.push(item);
|
5682
5794
|
});
|
5683
5795
|
return dualMeasuresToMeasureTree(dualMeasures);
|
5684
5796
|
};
|
5685
|
-
const encodingForDualAxis = (advancedVSeed, context)=>{
|
5686
|
-
const { vseed } = context;
|
5687
|
-
const { dimensions } = advancedVSeed;
|
5688
|
-
if (!dimensions) return advancedVSeed;
|
5689
|
-
const encoding = vseed.encoding;
|
5690
|
-
if (encoding) {
|
5691
|
-
const x = encoding.x || [
|
5692
|
-
dimensions[0].id
|
5693
|
-
];
|
5694
|
-
const color = encoding.color || [
|
5695
|
-
(dimensions[1] || dimensions[0]).id
|
5696
|
-
];
|
5697
|
-
const detail = encoding.detail || [];
|
5698
|
-
const mergedDetail = 0 === detail.length ? (0, external_remeda_namespaceObject.unique)([
|
5699
|
-
...color,
|
5700
|
-
...detail
|
5701
|
-
]) : detail;
|
5702
|
-
return {
|
5703
|
-
...advancedVSeed,
|
5704
|
-
encoding: {
|
5705
|
-
...encoding,
|
5706
|
-
x,
|
5707
|
-
color,
|
5708
|
-
detail: mergedDetail
|
5709
|
-
}
|
5710
|
-
};
|
5711
|
-
}
|
5712
|
-
const mergedEncoding = {
|
5713
|
-
x: dimensions.slice(0, 1).map((item)=>item.id),
|
5714
|
-
color: dimensions.slice(1).map((item)=>item.id),
|
5715
|
-
detail: dimensions.slice(1).map((item)=>item.id),
|
5716
|
-
tooltip: dimensions.map((item)=>item.id),
|
5717
|
-
label: [],
|
5718
|
-
row: [],
|
5719
|
-
column: []
|
5720
|
-
};
|
5721
|
-
return {
|
5722
|
-
...advancedVSeed,
|
5723
|
-
encoding: mergedEncoding
|
5724
|
-
};
|
5725
|
-
};
|
5726
5797
|
const reshapeWithDualEncoding = (advancedVSeed, context)=>{
|
5727
5798
|
const result = {
|
5728
5799
|
...advancedVSeed
|
@@ -5872,9 +5943,9 @@ const dualAxisConfig = (advancedVSeed, context)=>{
|
|
5872
5943
|
};
|
5873
5944
|
const dualAxisAdvancedPipeline = [
|
5874
5945
|
initAdvancedVSeed_initAdvancedVSeed,
|
5946
|
+
encodingForDualAxis,
|
5875
5947
|
buildMeasuresForDualAxis,
|
5876
5948
|
autoDimensions_autoDimensions,
|
5877
|
-
encodingForDualAxis,
|
5878
5949
|
pivotAdapter([
|
5879
5950
|
reshapeWithDualEncoding
|
5880
5951
|
], [
|
@@ -6709,33 +6780,51 @@ const registerDualAxis = ()=>{
|
|
6709
6780
|
};
|
6710
6781
|
const encodingForPie = (advancedVSeed, context)=>{
|
6711
6782
|
const { vseed } = context;
|
6712
|
-
const {
|
6713
|
-
|
6714
|
-
const
|
6715
|
-
|
6716
|
-
|
6717
|
-
|
6718
|
-
|
6719
|
-
|
6720
|
-
|
6721
|
-
|
6722
|
-
color: dimensions.slice(0).map((item)=>item.id),
|
6723
|
-
detail: dimensions.slice(0).map((item)=>item.id),
|
6724
|
-
tooltip: dimensions.map((item)=>item.id),
|
6725
|
-
label: [],
|
6726
|
-
row: [],
|
6727
|
-
column: []
|
6728
|
-
};
|
6783
|
+
const { measures: vseedMeasures = [] } = vseed;
|
6784
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
6785
|
+
const dimensions = getBasicDimensions(vseed);
|
6786
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
6787
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
6788
|
+
const encoding = {};
|
6789
|
+
if (hasDimensionEncoding) pie_generateDimensionEncoding(dimensions, encoding);
|
6790
|
+
else pie_generateDefaultDimensionEncoding(dimensions, encoding);
|
6791
|
+
if (hasMeasureEncoding) pie_generateMeasureEncoding(measures, encoding);
|
6792
|
+
else pie_generateDefaultMeasureEncoding(measures, encoding);
|
6729
6793
|
return {
|
6730
6794
|
...advancedVSeed,
|
6731
|
-
encoding
|
6732
|
-
};
|
6795
|
+
encoding
|
6796
|
+
};
|
6797
|
+
};
|
6798
|
+
const pie_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
6799
|
+
encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
|
6800
|
+
encoding.angle = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
|
6801
|
+
};
|
6802
|
+
const pie_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
6803
|
+
const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensions.map((d)=>d.id));
|
6804
|
+
encoding.color = uniqueDimIds.slice(0);
|
6805
|
+
encoding.detail = uniqueDimIds.slice(0);
|
6806
|
+
encoding.tooltip = uniqueDimIds;
|
6807
|
+
encoding.label = [];
|
6808
|
+
encoding.row = [];
|
6809
|
+
encoding.column = [];
|
6810
|
+
};
|
6811
|
+
const pie_generateMeasureEncoding = (measures, encoding)=>{
|
6812
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
6813
|
+
encoding.angle = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
|
6814
|
+
const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
6815
|
+
if (color.length > 0) encoding.color = color;
|
6816
|
+
};
|
6817
|
+
const pie_generateDimensionEncoding = (dimensions, encoding)=>{
|
6818
|
+
encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
6819
|
+
encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
6820
|
+
if (0 === encoding.color.length) encoding.color = dimensions.map((item)=>item.id);
|
6821
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
|
6733
6822
|
};
|
6734
6823
|
const pieAdvancedPipeline = [
|
6735
6824
|
initAdvancedVSeed_initAdvancedVSeed,
|
6825
|
+
encodingForPie,
|
6736
6826
|
buildMeasures,
|
6737
6827
|
autoDimensions_autoDimensions,
|
6738
|
-
encodingForPie,
|
6739
6828
|
pivotAdapter([
|
6740
6829
|
reshapeWithEncoding
|
6741
6830
|
], [
|
@@ -6750,9 +6839,8 @@ const initPie = (spec, context)=>{
|
|
6750
6839
|
...spec
|
6751
6840
|
};
|
6752
6841
|
const { advancedVSeed } = context;
|
6753
|
-
const { datasetReshapeInfo
|
6842
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
6754
6843
|
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
6755
|
-
const showStroke = dataset.length <= 30;
|
6756
6844
|
result.type = 'pie';
|
6757
6845
|
result.outerRadius = 0.8;
|
6758
6846
|
result.innerRadius = 0;
|
@@ -6764,30 +6852,57 @@ const initPie = (spec, context)=>{
|
|
6764
6852
|
clip: true
|
6765
6853
|
}
|
6766
6854
|
];
|
6767
|
-
result.
|
6768
|
-
|
6769
|
-
|
6770
|
-
|
6771
|
-
|
6772
|
-
}
|
6773
|
-
|
6774
|
-
|
6775
|
-
|
6855
|
+
result.animation = true;
|
6856
|
+
return result;
|
6857
|
+
};
|
6858
|
+
const colorPieStyleFill = (stylePipe)=>(spec, context)=>{
|
6859
|
+
const result = stylePipe(spec, context);
|
6860
|
+
const { advancedVSeed } = context;
|
6861
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
6862
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
6863
|
+
if (isLinearColor(advancedVSeed)) {
|
6864
|
+
if (result?.pie?.style) result.pie.style.fill = {
|
6865
|
+
field: unfoldInfo.encodingColor,
|
6866
|
+
scale: 'color'
|
6867
|
+
};
|
6868
|
+
}
|
6869
|
+
return result;
|
6870
|
+
};
|
6871
|
+
const pieStyle = (spec, context)=>{
|
6872
|
+
const { advancedVSeed } = context;
|
6873
|
+
const { dataset } = advancedVSeed;
|
6874
|
+
const showStroke = dataset.length <= 30;
|
6875
|
+
const result = {
|
6876
|
+
...spec,
|
6877
|
+
pie: {
|
6878
|
+
style: {}
|
6879
|
+
}
|
6880
|
+
};
|
6881
|
+
return {
|
6882
|
+
...result,
|
6883
|
+
pie: {
|
6884
|
+
style: {
|
6885
|
+
stroke: '#ffffff',
|
6886
|
+
lineWidth: showStroke ? 1 : 0
|
6887
|
+
},
|
6888
|
+
state: {
|
6889
|
+
hover: {
|
6890
|
+
outerRadius: 1.1 * result.outerRadius
|
6891
|
+
}
|
6776
6892
|
}
|
6777
6893
|
}
|
6778
6894
|
};
|
6779
|
-
result.animation = true;
|
6780
|
-
return result;
|
6781
6895
|
};
|
6782
6896
|
const pie = [
|
6783
6897
|
initPie,
|
6784
|
-
color_color,
|
6898
|
+
colorAdapter(color_color, linearColor),
|
6785
6899
|
background_backgroundColor,
|
6786
6900
|
datasetXY,
|
6787
6901
|
progressive,
|
6902
|
+
colorPieStyleFill(pieStyle),
|
6903
|
+
colorAdapter(discreteLegend, colorLegend),
|
6788
6904
|
label_label,
|
6789
6905
|
tooltip_tooltip,
|
6790
|
-
discreteLegend,
|
6791
6906
|
annotationPoint_annotationPoint,
|
6792
6907
|
annotationVerticalLine_annotationVerticalLine,
|
6793
6908
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -6800,10 +6915,11 @@ const pivotPie = [
|
|
6800
6915
|
datasetPivot,
|
6801
6916
|
pivotIndicators_pivotIndicators([
|
6802
6917
|
initPie,
|
6803
|
-
color_color,
|
6918
|
+
colorAdapter(color_color, linearColor),
|
6804
6919
|
background_backgroundColor,
|
6805
6920
|
datasetXY,
|
6806
6921
|
progressive,
|
6922
|
+
colorPieStyleFill(pieStyle),
|
6807
6923
|
label_label,
|
6808
6924
|
tooltip_tooltip,
|
6809
6925
|
annotationPoint_annotationPoint,
|
@@ -6813,7 +6929,7 @@ const pivotPie = [
|
|
6813
6929
|
]),
|
6814
6930
|
pivotRowDimensions,
|
6815
6931
|
pivotColumnDimensions,
|
6816
|
-
pivotDiscreteLegend
|
6932
|
+
colorAdapter(pivotDiscreteLegend, pivotColorLegend)
|
6817
6933
|
];
|
6818
6934
|
const pieSpecPipeline = [
|
6819
6935
|
pivotAdapter_pivotAdapter(pie, pivotPie)
|
@@ -6841,43 +6957,32 @@ const initDonut = (spec, context)=>{
|
|
6841
6957
|
...spec
|
6842
6958
|
};
|
6843
6959
|
const { advancedVSeed } = context;
|
6844
|
-
const { datasetReshapeInfo
|
6960
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
6845
6961
|
const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
|
6846
|
-
const showStroke = dataset.length <= 30;
|
6847
6962
|
result.type = 'pie';
|
6848
6963
|
result.outerRadius = 0.8;
|
6849
6964
|
result.innerRadius = 0.8 * result.outerRadius;
|
6850
6965
|
result.valueField = foldInfo.measureValue;
|
6851
6966
|
result.categoryField = unfoldInfo.encodingColorId;
|
6852
6967
|
result.padding = 0;
|
6853
|
-
result.region = [
|
6854
|
-
{
|
6855
|
-
clip: true
|
6856
|
-
}
|
6857
|
-
];
|
6858
|
-
result.pie = {
|
6859
|
-
style: {
|
6860
|
-
stroke: '#ffffff',
|
6861
|
-
lineWidth: showStroke ? 1 : 0
|
6862
|
-
},
|
6863
|
-
state: {
|
6864
|
-
hover: {
|
6865
|
-
outerRadius: 1.1 * result.outerRadius
|
6866
|
-
}
|
6968
|
+
result.region = [
|
6969
|
+
{
|
6970
|
+
clip: true
|
6867
6971
|
}
|
6868
|
-
|
6972
|
+
];
|
6869
6973
|
result.animation = true;
|
6870
6974
|
return result;
|
6871
6975
|
};
|
6872
6976
|
const donut = [
|
6873
6977
|
initDonut,
|
6874
|
-
color_color,
|
6978
|
+
colorAdapter(color_color, linearColor),
|
6875
6979
|
background_backgroundColor,
|
6876
6980
|
datasetXY,
|
6877
6981
|
progressive,
|
6878
6982
|
label_label,
|
6983
|
+
colorPieStyleFill(pieStyle),
|
6984
|
+
colorAdapter(discreteLegend, colorLegend),
|
6879
6985
|
tooltip_tooltip,
|
6880
|
-
discreteLegend,
|
6881
6986
|
annotationPoint_annotationPoint,
|
6882
6987
|
annotationVerticalLine_annotationVerticalLine,
|
6883
6988
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -6890,11 +6995,12 @@ const pivotDonut = [
|
|
6890
6995
|
datasetPivot,
|
6891
6996
|
pivotIndicators_pivotIndicators([
|
6892
6997
|
initDonut,
|
6893
|
-
color_color,
|
6998
|
+
colorAdapter(color_color, linearColor),
|
6894
6999
|
background_backgroundColor,
|
6895
7000
|
datasetXY,
|
6896
7001
|
progressive,
|
6897
7002
|
label_label,
|
7003
|
+
colorPieStyleFill(pieStyle),
|
6898
7004
|
tooltip_tooltip,
|
6899
7005
|
annotationPoint_annotationPoint,
|
6900
7006
|
annotationVerticalLine_annotationVerticalLine,
|
@@ -6903,7 +7009,7 @@ const pivotDonut = [
|
|
6903
7009
|
]),
|
6904
7010
|
pivotRowDimensions,
|
6905
7011
|
pivotColumnDimensions,
|
6906
|
-
pivotDiscreteLegend
|
7012
|
+
colorAdapter(pivotDiscreteLegend, pivotColorLegend)
|
6907
7013
|
];
|
6908
7014
|
const donutSpecPipeline = [
|
6909
7015
|
pivotAdapter_pivotAdapter(donut, pivotDonut)
|
@@ -6914,51 +7020,57 @@ const registerDonut = ()=>{
|
|
6914
7020
|
};
|
6915
7021
|
const encodingForRose = (advancedVSeed, context)=>{
|
6916
7022
|
const { vseed } = context;
|
6917
|
-
const {
|
6918
|
-
|
6919
|
-
const
|
6920
|
-
|
6921
|
-
|
6922
|
-
|
6923
|
-
|
6924
|
-
|
6925
|
-
|
6926
|
-
|
6927
|
-
const detail = encoding.detail || [];
|
6928
|
-
const mergedDetail = 0 === detail.length ? (0, external_remeda_namespaceObject.unique)([
|
6929
|
-
...color,
|
6930
|
-
...detail
|
6931
|
-
]) : detail;
|
6932
|
-
return {
|
6933
|
-
...advancedVSeed,
|
6934
|
-
encoding: {
|
6935
|
-
...encoding,
|
6936
|
-
angle,
|
6937
|
-
color,
|
6938
|
-
detail: mergedDetail
|
6939
|
-
}
|
6940
|
-
};
|
6941
|
-
}
|
6942
|
-
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
6943
|
-
const mergedEncoding = {
|
6944
|
-
angle: dimensions.slice(0, 1).map((item)=>item.id),
|
6945
|
-
color: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
6946
|
-
detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
6947
|
-
tooltip: dimensions.map((item)=>item.id),
|
6948
|
-
label: [],
|
6949
|
-
row: [],
|
6950
|
-
column: []
|
6951
|
-
};
|
7023
|
+
const { measures: vseedMeasures = [] } = vseed;
|
7024
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7025
|
+
const dimensions = getBasicDimensions(vseed);
|
7026
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7027
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7028
|
+
const encoding = {};
|
7029
|
+
if (hasDimensionEncoding) rose_generateDimensionEncoding(dimensions, encoding);
|
7030
|
+
else rose_generateDefaultDimensionEncoding(dimensions, encoding);
|
7031
|
+
if (hasMeasureEncoding) rose_generateMeasureEncoding(measures, encoding);
|
7032
|
+
else rose_generateDefaultMeasureEncoding(measures, encoding);
|
6952
7033
|
return {
|
6953
7034
|
...advancedVSeed,
|
6954
|
-
encoding
|
7035
|
+
encoding
|
6955
7036
|
};
|
6956
7037
|
};
|
7038
|
+
const rose_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
7039
|
+
encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
|
7040
|
+
encoding.radius = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
7041
|
+
};
|
7042
|
+
const rose_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
7043
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
7044
|
+
const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensions.map((d)=>d.id));
|
7045
|
+
encoding.angle = uniqueDimIds.slice(0, 1);
|
7046
|
+
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
7047
|
+
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
7048
|
+
encoding.tooltip = uniqueDimIds;
|
7049
|
+
encoding.label = [];
|
7050
|
+
encoding.row = [];
|
7051
|
+
encoding.column = [];
|
7052
|
+
};
|
7053
|
+
const rose_generateMeasureEncoding = (measures, encoding)=>{
|
7054
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
7055
|
+
encoding.radius = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
7056
|
+
const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7057
|
+
if (color.length > 0) encoding.color = color;
|
7058
|
+
};
|
7059
|
+
const rose_generateDimensionEncoding = (dimensions, encoding)=>{
|
7060
|
+
encoding.angle = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'angle' === item.encoding).map((item)=>item.id));
|
7061
|
+
encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7062
|
+
encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
7063
|
+
if (0 === encoding.angle.length) encoding.angle = [
|
7064
|
+
dimensions[0].id
|
7065
|
+
];
|
7066
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
|
7067
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
|
7068
|
+
};
|
6957
7069
|
const roseAdvancedPipeline = [
|
6958
7070
|
initAdvancedVSeed_initAdvancedVSeed,
|
7071
|
+
encodingForRose,
|
6959
7072
|
buildMeasures,
|
6960
7073
|
autoDimensions_autoDimensions,
|
6961
|
-
encodingForRose,
|
6962
7074
|
pivotAdapter([
|
6963
7075
|
reshapeWithEncoding
|
6964
7076
|
], [
|
@@ -6985,18 +7097,6 @@ const initRose = (spec, context)=>{
|
|
6985
7097
|
result.innerRadius = 0;
|
6986
7098
|
const hasNegativeValue = dataset.flat().find((d)=>d[foldInfo.measureValue] < 0);
|
6987
7099
|
if (hasNegativeValue) result.innerRadius = 0.05;
|
6988
|
-
result.rose = {
|
6989
|
-
style: {
|
6990
|
-
stroke: '#ffffff',
|
6991
|
-
lineWidth: 1
|
6992
|
-
},
|
6993
|
-
state: {
|
6994
|
-
hover: {
|
6995
|
-
lineWidth: 1,
|
6996
|
-
fillOpacity: 0.6
|
6997
|
-
}
|
6998
|
-
}
|
6999
|
-
};
|
7000
7100
|
result.region = [
|
7001
7101
|
{
|
7002
7102
|
clip: true
|
@@ -7005,7 +7105,7 @@ const initRose = (spec, context)=>{
|
|
7005
7105
|
result.animation = true;
|
7006
7106
|
return result;
|
7007
7107
|
};
|
7008
|
-
const
|
7108
|
+
const angleAxis = (spec, context)=>{
|
7009
7109
|
const result = {
|
7010
7110
|
...spec
|
7011
7111
|
};
|
@@ -7017,26 +7117,37 @@ const radiusAxis = (spec, context)=>{
|
|
7017
7117
|
const showAxis = !(is0D || is1M1D);
|
7018
7118
|
if (!result.axes) result.axes = [];
|
7019
7119
|
result.axes.push({
|
7020
|
-
orient: '
|
7120
|
+
orient: 'angle',
|
7021
7121
|
visible: showAxis,
|
7022
7122
|
zero: true,
|
7023
7123
|
nice: !!showAxis,
|
7124
|
+
paddingInner: showAxis ? [
|
7125
|
+
0.15,
|
7126
|
+
0.1
|
7127
|
+
] : [
|
7128
|
+
0,
|
7129
|
+
0
|
7130
|
+
],
|
7131
|
+
paddingOuter: showAxis ? [
|
7132
|
+
0.075,
|
7133
|
+
0.1
|
7134
|
+
] : [
|
7135
|
+
0,
|
7136
|
+
0
|
7137
|
+
],
|
7024
7138
|
grid: {
|
7025
7139
|
visible: showAxis
|
7026
7140
|
},
|
7027
|
-
|
7028
|
-
visible: showAxis
|
7029
|
-
},
|
7030
|
-
label: {
|
7141
|
+
domainLine: {
|
7031
7142
|
visible: showAxis
|
7032
7143
|
},
|
7033
|
-
|
7144
|
+
tick: {
|
7034
7145
|
visible: showAxis
|
7035
7146
|
}
|
7036
7147
|
});
|
7037
7148
|
return result;
|
7038
7149
|
};
|
7039
|
-
const
|
7150
|
+
const radiusAxis = (spec, context)=>{
|
7040
7151
|
const result = {
|
7041
7152
|
...spec
|
7042
7153
|
};
|
@@ -7048,50 +7159,79 @@ const angleAxis = (spec, context)=>{
|
|
7048
7159
|
const showAxis = !(is0D || is1M1D);
|
7049
7160
|
if (!result.axes) result.axes = [];
|
7050
7161
|
result.axes.push({
|
7051
|
-
orient: '
|
7162
|
+
orient: 'radius',
|
7052
7163
|
visible: showAxis,
|
7053
7164
|
zero: true,
|
7054
7165
|
nice: !!showAxis,
|
7055
|
-
paddingInner: showAxis ? [
|
7056
|
-
0.15,
|
7057
|
-
0.1
|
7058
|
-
] : [
|
7059
|
-
0,
|
7060
|
-
0
|
7061
|
-
],
|
7062
|
-
paddingOuter: showAxis ? [
|
7063
|
-
0.075,
|
7064
|
-
0.1
|
7065
|
-
] : [
|
7066
|
-
0,
|
7067
|
-
0
|
7068
|
-
],
|
7069
7166
|
grid: {
|
7070
7167
|
visible: showAxis
|
7071
7168
|
},
|
7072
|
-
|
7169
|
+
tick: {
|
7073
7170
|
visible: showAxis
|
7074
7171
|
},
|
7075
|
-
|
7172
|
+
label: {
|
7173
|
+
visible: showAxis
|
7174
|
+
},
|
7175
|
+
domainLine: {
|
7076
7176
|
visible: showAxis
|
7077
7177
|
}
|
7078
7178
|
});
|
7079
7179
|
return result;
|
7080
7180
|
};
|
7181
|
+
const colorRoseStyleFill = (stylePipe)=>(spec, context)=>{
|
7182
|
+
const result = stylePipe(spec, context);
|
7183
|
+
const { advancedVSeed } = context;
|
7184
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
7185
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
7186
|
+
if (isLinearColor(advancedVSeed)) {
|
7187
|
+
if (result?.rose?.style) result.rose.style.fill = {
|
7188
|
+
field: unfoldInfo.encodingColor,
|
7189
|
+
scale: 'color'
|
7190
|
+
};
|
7191
|
+
}
|
7192
|
+
return result;
|
7193
|
+
};
|
7194
|
+
const roseStyle = (spec, context)=>{
|
7195
|
+
const { advancedVSeed } = context;
|
7196
|
+
const { dataset } = advancedVSeed;
|
7197
|
+
const showStroke = dataset.length <= 30;
|
7198
|
+
const result = {
|
7199
|
+
...spec,
|
7200
|
+
rose: {
|
7201
|
+
style: {}
|
7202
|
+
}
|
7203
|
+
};
|
7204
|
+
return {
|
7205
|
+
...result,
|
7206
|
+
rose: {
|
7207
|
+
style: {
|
7208
|
+
stroke: '#ffffff',
|
7209
|
+
lineWidth: showStroke ? 1 : 0
|
7210
|
+
},
|
7211
|
+
state: {
|
7212
|
+
hover: {
|
7213
|
+
lineWidth: 1,
|
7214
|
+
fillOpacity: 0.6
|
7215
|
+
}
|
7216
|
+
}
|
7217
|
+
}
|
7218
|
+
};
|
7219
|
+
};
|
7081
7220
|
const rose = [
|
7082
7221
|
initRose,
|
7083
7222
|
stackCornerRadius_stackCornerRadius,
|
7084
7223
|
stackInverse,
|
7085
|
-
color_color,
|
7224
|
+
colorAdapter(color_color, linearColor),
|
7086
7225
|
background_backgroundColor,
|
7087
7226
|
datasetXY,
|
7088
7227
|
progressive,
|
7089
|
-
radiusAxis,
|
7090
7228
|
angleAxis,
|
7091
|
-
|
7092
|
-
tooltip_tooltip,
|
7229
|
+
radiusAxis,
|
7093
7230
|
verticalCrosshairRect,
|
7094
|
-
|
7231
|
+
colorRoseStyleFill(roseStyle),
|
7232
|
+
colorAdapter(discreteLegend, colorLegend),
|
7233
|
+
label_label,
|
7234
|
+
tooltip_tooltip
|
7095
7235
|
];
|
7096
7236
|
const pivotRose = [
|
7097
7237
|
initPivot,
|
@@ -7102,19 +7242,20 @@ const pivotRose = [
|
|
7102
7242
|
initRose,
|
7103
7243
|
stackCornerRadius_stackCornerRadius,
|
7104
7244
|
stackInverse,
|
7105
|
-
color_color,
|
7245
|
+
colorAdapter(color_color, linearColor),
|
7106
7246
|
background_backgroundColor,
|
7107
7247
|
datasetXY,
|
7108
7248
|
progressive,
|
7109
7249
|
radiusAxis,
|
7110
7250
|
angleAxis,
|
7251
|
+
verticalCrosshairRect,
|
7252
|
+
colorRoseStyleFill(roseStyle),
|
7111
7253
|
label_label,
|
7112
|
-
tooltip_tooltip
|
7113
|
-
verticalCrosshairRect
|
7254
|
+
tooltip_tooltip
|
7114
7255
|
]),
|
7115
7256
|
pivotRowDimensions,
|
7116
7257
|
pivotColumnDimensions,
|
7117
|
-
pivotDiscreteLegend
|
7258
|
+
colorAdapter(pivotDiscreteLegend, pivotColorLegend)
|
7118
7259
|
];
|
7119
7260
|
const roseSpecPipeline = [
|
7120
7261
|
pivotAdapter_pivotAdapter(rose, pivotRose)
|
@@ -7125,9 +7266,9 @@ const registerRose = ()=>{
|
|
7125
7266
|
};
|
7126
7267
|
const roseParallelAdvancedPipeline = [
|
7127
7268
|
initAdvancedVSeed_initAdvancedVSeed,
|
7269
|
+
encodingForRose,
|
7128
7270
|
buildMeasures,
|
7129
7271
|
autoDimensions_autoDimensions,
|
7130
|
-
encodingForRose,
|
7131
7272
|
pivotAdapter([
|
7132
7273
|
reshapeWithEncoding
|
7133
7274
|
], [
|
@@ -7183,15 +7324,16 @@ const initRoseParallel = (spec, context)=>{
|
|
7183
7324
|
const roseParallel = [
|
7184
7325
|
initRoseParallel,
|
7185
7326
|
stackCornerRadius_stackCornerRadius,
|
7186
|
-
color_color,
|
7327
|
+
colorAdapter(color_color, linearColor),
|
7187
7328
|
background_backgroundColor,
|
7188
7329
|
datasetXY,
|
7189
7330
|
progressive,
|
7190
7331
|
radiusAxis,
|
7191
7332
|
angleAxis,
|
7333
|
+
colorRoseStyleFill(roseStyle),
|
7334
|
+
colorAdapter(discreteLegend, colorLegend),
|
7192
7335
|
label_label,
|
7193
7336
|
tooltip_tooltip,
|
7194
|
-
discreteLegend,
|
7195
7337
|
verticalCrosshairRect,
|
7196
7338
|
annotationPoint_annotationPoint,
|
7197
7339
|
annotationVerticalLine_annotationVerticalLine,
|
@@ -7206,15 +7348,16 @@ const pivotRoseParallel = [
|
|
7206
7348
|
pivotIndicators_pivotIndicators([
|
7207
7349
|
initRoseParallel,
|
7208
7350
|
stackCornerRadius_stackCornerRadius,
|
7209
|
-
color_color,
|
7351
|
+
colorAdapter(color_color, linearColor),
|
7210
7352
|
background_backgroundColor,
|
7211
7353
|
datasetXY,
|
7212
7354
|
progressive,
|
7213
7355
|
radiusAxis,
|
7214
7356
|
angleAxis,
|
7357
|
+
verticalCrosshairRect,
|
7358
|
+
colorRoseStyleFill(roseStyle),
|
7215
7359
|
label_label,
|
7216
7360
|
tooltip_tooltip,
|
7217
|
-
verticalCrosshairRect,
|
7218
7361
|
annotationPoint_annotationPoint,
|
7219
7362
|
annotationVerticalLine_annotationVerticalLine,
|
7220
7363
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -7222,7 +7365,7 @@ const pivotRoseParallel = [
|
|
7222
7365
|
]),
|
7223
7366
|
pivotRowDimensions,
|
7224
7367
|
pivotColumnDimensions,
|
7225
|
-
pivotDiscreteLegend
|
7368
|
+
colorAdapter(pivotDiscreteLegend, pivotColorLegend)
|
7226
7369
|
];
|
7227
7370
|
const roseParallelSpecPipeline = [
|
7228
7371
|
pivotAdapter_pivotAdapter(roseParallel, pivotRoseParallel)
|
@@ -7233,50 +7376,55 @@ const registerRoseParallel = ()=>{
|
|
7233
7376
|
};
|
7234
7377
|
const encodingForRadar = (advancedVSeed, context)=>{
|
7235
7378
|
const { vseed } = context;
|
7236
|
-
const {
|
7237
|
-
|
7238
|
-
const
|
7239
|
-
|
7240
|
-
|
7241
|
-
|
7242
|
-
|
7243
|
-
|
7244
|
-
|
7245
|
-
|
7246
|
-
const detail = encoding.detail || [];
|
7247
|
-
const mergedDetail = 0 === detail.length ? (0, external_remeda_namespaceObject.unique)([
|
7248
|
-
...color,
|
7249
|
-
...detail
|
7250
|
-
]) : detail;
|
7251
|
-
return {
|
7252
|
-
...advancedVSeed,
|
7253
|
-
encoding: {
|
7254
|
-
...encoding,
|
7255
|
-
angle,
|
7256
|
-
color,
|
7257
|
-
detail: mergedDetail
|
7258
|
-
}
|
7259
|
-
};
|
7260
|
-
}
|
7261
|
-
const mergedEncoding = {
|
7262
|
-
angle: dimensions.slice(0, 1).map((item)=>item.id),
|
7263
|
-
color: dimensions.slice(1).map((item)=>item.id),
|
7264
|
-
detail: dimensions.slice(1).map((item)=>item.id),
|
7265
|
-
tooltip: dimensions.map((item)=>item.id),
|
7266
|
-
label: [],
|
7267
|
-
row: [],
|
7268
|
-
column: []
|
7269
|
-
};
|
7379
|
+
const { measures: vseedMeasures = [] } = vseed;
|
7380
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7381
|
+
const dimensions = getBasicDimensions(vseed);
|
7382
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7383
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7384
|
+
const encoding = {};
|
7385
|
+
if (hasDimensionEncoding) radar_generateDimensionEncoding(dimensions, encoding);
|
7386
|
+
else radar_generateDefaultDimensionEncoding(dimensions, encoding);
|
7387
|
+
if (hasMeasureEncoding) radar_generateMeasureEncoding(measures, encoding);
|
7388
|
+
else radar_generateDefaultMeasureEncoding(measures, encoding);
|
7270
7389
|
return {
|
7271
7390
|
...advancedVSeed,
|
7272
|
-
encoding
|
7273
|
-
};
|
7391
|
+
encoding
|
7392
|
+
};
|
7393
|
+
};
|
7394
|
+
const radar_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
7395
|
+
encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
|
7396
|
+
encoding.radius = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
7397
|
+
};
|
7398
|
+
const radar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
7399
|
+
const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensions.map((d)=>d.id));
|
7400
|
+
encoding.angle = uniqueDimIds.slice(0, 1);
|
7401
|
+
encoding.color = uniqueDimIds.slice(1);
|
7402
|
+
encoding.tooltip = uniqueDimIds;
|
7403
|
+
encoding.detail = [];
|
7404
|
+
encoding.label = [];
|
7405
|
+
encoding.row = [];
|
7406
|
+
encoding.column = [];
|
7407
|
+
};
|
7408
|
+
const radar_generateMeasureEncoding = (measures, encoding)=>{
|
7409
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
7410
|
+
encoding.radius = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
7411
|
+
const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7412
|
+
if (color.length > 0) encoding.color = color;
|
7413
|
+
};
|
7414
|
+
const radar_generateDimensionEncoding = (dimensions, encoding)=>{
|
7415
|
+
encoding.angle = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'angle' === item.encoding).map((item)=>item.id));
|
7416
|
+
encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7417
|
+
encoding.detail = [];
|
7418
|
+
if (0 === encoding.angle.length) encoding.angle = [
|
7419
|
+
dimensions[0].id
|
7420
|
+
];
|
7421
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
|
7274
7422
|
};
|
7275
7423
|
const radarAdvancedPipeline = [
|
7276
7424
|
initAdvancedVSeed_initAdvancedVSeed,
|
7425
|
+
encodingForRadar,
|
7277
7426
|
buildMeasures,
|
7278
7427
|
autoDimensions_autoDimensions,
|
7279
|
-
encodingForRadar,
|
7280
7428
|
pivotAdapter([
|
7281
7429
|
reshapeWithEncoding
|
7282
7430
|
], [
|
@@ -7412,33 +7560,51 @@ const registerRadar = ()=>{
|
|
7412
7560
|
};
|
7413
7561
|
const encodingForFunnel = (advancedVSeed, context)=>{
|
7414
7562
|
const { vseed } = context;
|
7415
|
-
const {
|
7416
|
-
|
7417
|
-
const
|
7418
|
-
|
7419
|
-
|
7420
|
-
|
7421
|
-
|
7422
|
-
|
7423
|
-
|
7424
|
-
|
7425
|
-
color: dimensions.slice(0).map((item)=>item.id),
|
7426
|
-
detail: dimensions.slice(0).map((item)=>item.id),
|
7427
|
-
tooltip: dimensions.map((item)=>item.id),
|
7428
|
-
label: [],
|
7429
|
-
row: [],
|
7430
|
-
column: []
|
7431
|
-
};
|
7563
|
+
const { measures: vseedMeasures = [] } = vseed;
|
7564
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7565
|
+
const dimensions = getBasicDimensions(vseed);
|
7566
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7567
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7568
|
+
const encoding = {};
|
7569
|
+
if (hasDimensionEncoding) funnel_generateDimensionEncoding(dimensions, encoding);
|
7570
|
+
else funnel_generateDefaultDimensionEncoding(dimensions, encoding);
|
7571
|
+
if (hasMeasureEncoding) funnel_generateMeasureEncoding(measures, encoding);
|
7572
|
+
else funnel_generateDefaultMeasureEncoding(measures, encoding);
|
7432
7573
|
return {
|
7433
7574
|
...advancedVSeed,
|
7434
|
-
encoding
|
7435
|
-
};
|
7575
|
+
encoding
|
7576
|
+
};
|
7577
|
+
};
|
7578
|
+
const funnel_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
7579
|
+
encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
|
7580
|
+
encoding.size = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
|
7581
|
+
};
|
7582
|
+
const funnel_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
7583
|
+
const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensions.map((d)=>d.id));
|
7584
|
+
encoding.color = uniqueDimIds.slice(0);
|
7585
|
+
encoding.detail = uniqueDimIds.slice(0);
|
7586
|
+
encoding.tooltip = uniqueDimIds;
|
7587
|
+
encoding.label = [];
|
7588
|
+
encoding.row = [];
|
7589
|
+
encoding.column = [];
|
7590
|
+
};
|
7591
|
+
const funnel_generateMeasureEncoding = (measures, encoding)=>{
|
7592
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
7593
|
+
encoding.size = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
|
7594
|
+
const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7595
|
+
if (color.length > 0) encoding.color = color;
|
7596
|
+
};
|
7597
|
+
const funnel_generateDimensionEncoding = (dimensions, encoding)=>{
|
7598
|
+
encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7599
|
+
encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
7600
|
+
if (0 === encoding.color.length) encoding.color = dimensions.map((item)=>item.id);
|
7601
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
|
7436
7602
|
};
|
7437
7603
|
const funnelAdvancedPipeline = [
|
7438
7604
|
initAdvancedVSeed_initAdvancedVSeed,
|
7605
|
+
encodingForFunnel,
|
7439
7606
|
buildMeasures,
|
7440
7607
|
autoDimensions_autoDimensions,
|
7441
|
-
encodingForFunnel,
|
7442
7608
|
pivotAdapter([
|
7443
7609
|
reshapeWithEncoding
|
7444
7610
|
], [
|
@@ -7468,34 +7634,55 @@ const initFunnel = (spec, context)=>{
|
|
7468
7634
|
clip: true
|
7469
7635
|
}
|
7470
7636
|
];
|
7471
|
-
result.funnel = {
|
7472
|
-
style: {
|
7473
|
-
cornerRadius: 4,
|
7474
|
-
fill: {
|
7475
|
-
field: unfoldInfo.encodingColorId,
|
7476
|
-
scale: 'color'
|
7477
|
-
}
|
7478
|
-
},
|
7479
|
-
state: {
|
7480
|
-
hover: {
|
7481
|
-
fillOpacity: 0.6
|
7482
|
-
}
|
7483
|
-
}
|
7484
|
-
};
|
7485
7637
|
result.transformLabel = {
|
7486
7638
|
visible: true
|
7487
7639
|
};
|
7488
7640
|
result.animation = true;
|
7489
7641
|
return result;
|
7490
7642
|
};
|
7643
|
+
const colorFunnelStyleFill = (stylePipe)=>(spec, context)=>{
|
7644
|
+
const result = stylePipe(spec, context);
|
7645
|
+
const { advancedVSeed } = context;
|
7646
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
7647
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
7648
|
+
if (isLinearColor(advancedVSeed)) {
|
7649
|
+
if (result?.funnel?.style) result.funnel.style.fill = {
|
7650
|
+
field: unfoldInfo.encodingColor,
|
7651
|
+
scale: 'color'
|
7652
|
+
};
|
7653
|
+
}
|
7654
|
+
return result;
|
7655
|
+
};
|
7656
|
+
const funnelStyle = (spec)=>{
|
7657
|
+
const result = {
|
7658
|
+
...spec,
|
7659
|
+
funnel: {
|
7660
|
+
style: {}
|
7661
|
+
}
|
7662
|
+
};
|
7663
|
+
return {
|
7664
|
+
...result,
|
7665
|
+
funnel: {
|
7666
|
+
style: {
|
7667
|
+
cornerRadius: 4
|
7668
|
+
},
|
7669
|
+
state: {
|
7670
|
+
hover: {
|
7671
|
+
fillOpacity: 0.6
|
7672
|
+
}
|
7673
|
+
}
|
7674
|
+
}
|
7675
|
+
};
|
7676
|
+
};
|
7491
7677
|
const funnel = [
|
7492
7678
|
initFunnel,
|
7493
7679
|
background_backgroundColor,
|
7494
7680
|
datasetXY,
|
7495
|
-
color_color,
|
7681
|
+
colorAdapter(color_color, linearColor),
|
7496
7682
|
label_label,
|
7683
|
+
colorAdapter(discreteLegend, colorLegend),
|
7684
|
+
colorFunnelStyleFill(funnelStyle),
|
7497
7685
|
tooltip_tooltip,
|
7498
|
-
discreteLegend,
|
7499
7686
|
annotationPoint_annotationPoint,
|
7500
7687
|
annotationVerticalLine_annotationVerticalLine,
|
7501
7688
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -7510,17 +7697,18 @@ const pivotFunnel = [
|
|
7510
7697
|
initFunnel,
|
7511
7698
|
background_backgroundColor,
|
7512
7699
|
datasetXY,
|
7513
|
-
color_color,
|
7700
|
+
colorAdapter(color_color, linearColor),
|
7514
7701
|
label_label,
|
7515
7702
|
tooltip_tooltip,
|
7516
|
-
|
7703
|
+
colorFunnelStyleFill(funnelStyle),
|
7517
7704
|
annotationPoint_annotationPoint,
|
7518
7705
|
annotationVerticalLine_annotationVerticalLine,
|
7519
7706
|
annotationHorizontalLine_annotationHorizontalLine,
|
7520
7707
|
annotationArea_annotationArea
|
7521
7708
|
]),
|
7522
7709
|
pivotRowDimensions,
|
7523
|
-
pivotColumnDimensions
|
7710
|
+
pivotColumnDimensions,
|
7711
|
+
colorAdapter(pivotDiscreteLegend, pivotColorLegend)
|
7524
7712
|
];
|
7525
7713
|
const funnelSpecPipeline = [
|
7526
7714
|
pivotAdapter_pivotAdapter(funnel, pivotFunnel)
|
@@ -7531,45 +7719,61 @@ const registerFunnel = ()=>{
|
|
7531
7719
|
};
|
7532
7720
|
const encodingForHeatmap = (advancedVSeed, context)=>{
|
7533
7721
|
const { vseed } = context;
|
7534
|
-
const {
|
7535
|
-
|
7536
|
-
const
|
7537
|
-
|
7538
|
-
|
7539
|
-
|
7540
|
-
|
7541
|
-
|
7542
|
-
|
7543
|
-
|
7544
|
-
return {
|
7545
|
-
...advancedVSeed,
|
7546
|
-
encoding: {
|
7547
|
-
x,
|
7548
|
-
y,
|
7549
|
-
...encoding
|
7550
|
-
}
|
7551
|
-
};
|
7552
|
-
}
|
7553
|
-
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
7554
|
-
const mergedEncoding = {
|
7555
|
-
x: dimensions.slice(0, 1).map((item)=>item.id),
|
7556
|
-
y: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
7557
|
-
color: dimensions.slice(0).map((item)=>item.id),
|
7558
|
-
tooltip: dimensions.map((item)=>item.id),
|
7559
|
-
label: [],
|
7560
|
-
row: [],
|
7561
|
-
column: []
|
7562
|
-
};
|
7722
|
+
const { measures: vseedMeasures = [] } = vseed;
|
7723
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7724
|
+
const dimensions = getBasicDimensions(vseed);
|
7725
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7726
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7727
|
+
const encoding = {};
|
7728
|
+
if (hasDimensionEncoding) heatmap_generateDimensionEncoding(dimensions, encoding);
|
7729
|
+
else heatmap_generateDefaultDimensionEncoding(dimensions, encoding);
|
7730
|
+
if (hasMeasureEncoding) heatmap_generateMeasureEncoding(measures, encoding);
|
7731
|
+
else heatmap_generateDefaultMeasureEncoding(measures, encoding);
|
7563
7732
|
return {
|
7564
7733
|
...advancedVSeed,
|
7565
|
-
encoding
|
7734
|
+
encoding
|
7566
7735
|
};
|
7567
7736
|
};
|
7737
|
+
const heatmap_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
7738
|
+
encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
|
7739
|
+
encoding.color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding || !item.encoding).map((item)=>item.id));
|
7740
|
+
};
|
7741
|
+
const heatmap_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
7742
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
7743
|
+
const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensions.map((d)=>d.id));
|
7744
|
+
encoding.x = uniqueDimIds.slice(0, 1);
|
7745
|
+
encoding.y = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
7746
|
+
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
7747
|
+
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
7748
|
+
encoding.tooltip = uniqueDimIds;
|
7749
|
+
encoding.label = [];
|
7750
|
+
encoding.row = [];
|
7751
|
+
encoding.column = [];
|
7752
|
+
};
|
7753
|
+
const heatmap_generateMeasureEncoding = (measures, encoding)=>{
|
7754
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
7755
|
+
const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7756
|
+
if (color.length > 0) encoding.color = color;
|
7757
|
+
return encoding;
|
7758
|
+
};
|
7759
|
+
const heatmap_generateDimensionEncoding = (dimensions, encoding)=>{
|
7760
|
+
encoding.x = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
|
7761
|
+
encoding.y = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
|
7762
|
+
encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7763
|
+
encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
7764
|
+
if (0 === encoding.x.length) encoding.x = [
|
7765
|
+
dimensions[0].id
|
7766
|
+
];
|
7767
|
+
if (0 === encoding.y.length) if (dimensions.length > 1) encoding.y = dimensions.slice(1).map((item)=>item.id);
|
7768
|
+
else encoding.y = dimensions.slice(0).map((item)=>item.id);
|
7769
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
7770
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
7771
|
+
};
|
7568
7772
|
const heatmapAdvancedPipeline = [
|
7569
7773
|
initAdvancedVSeed_initAdvancedVSeed,
|
7774
|
+
encodingForHeatmap,
|
7570
7775
|
buildMeasures,
|
7571
7776
|
autoDimensions_autoDimensions,
|
7572
|
-
encodingForHeatmap,
|
7573
7777
|
pivotAdapter([
|
7574
7778
|
reshapeWithEncoding
|
7575
7779
|
], [
|
@@ -7591,6 +7795,37 @@ const labelColorInversion = (spec)=>{
|
|
7591
7795
|
};
|
7592
7796
|
return result;
|
7593
7797
|
};
|
7798
|
+
const colorCellStyleFill = (stylePipe)=>(spec, context)=>{
|
7799
|
+
const result = stylePipe(spec, context);
|
7800
|
+
const { advancedVSeed } = context;
|
7801
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
7802
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
7803
|
+
if (isLinearColor(advancedVSeed)) {
|
7804
|
+
if (result?.cell?.style) result.cell.style.fill = {
|
7805
|
+
field: unfoldInfo.encodingColor,
|
7806
|
+
scale: 'color'
|
7807
|
+
};
|
7808
|
+
}
|
7809
|
+
return result;
|
7810
|
+
};
|
7811
|
+
const cellStyle = (spec)=>{
|
7812
|
+
const result = {
|
7813
|
+
...spec,
|
7814
|
+
cell: {
|
7815
|
+
style: {}
|
7816
|
+
}
|
7817
|
+
};
|
7818
|
+
return {
|
7819
|
+
...result,
|
7820
|
+
cell: {
|
7821
|
+
style: {
|
7822
|
+
shape: 'rect',
|
7823
|
+
stroke: '#ffffff',
|
7824
|
+
lineWidth: 1
|
7825
|
+
}
|
7826
|
+
}
|
7827
|
+
};
|
7828
|
+
};
|
7594
7829
|
const initHeatmap = (spec, context)=>{
|
7595
7830
|
const result = {
|
7596
7831
|
...spec
|
@@ -7605,13 +7840,6 @@ const initHeatmap = (spec, context)=>{
|
|
7605
7840
|
result.seriesField = unfoldInfo.encodingColorId;
|
7606
7841
|
result.valueField = foldInfo.measureValue;
|
7607
7842
|
result.padding = 0;
|
7608
|
-
result.cell = {
|
7609
|
-
style: {
|
7610
|
-
shape: 'rect',
|
7611
|
-
stroke: '#ffffff',
|
7612
|
-
lineWidth: 1
|
7613
|
-
}
|
7614
|
-
};
|
7615
7843
|
result.axes = [
|
7616
7844
|
{
|
7617
7845
|
type: 'band',
|
@@ -7636,14 +7864,12 @@ const heatmap = [
|
|
7636
7864
|
initHeatmap,
|
7637
7865
|
background_backgroundColor,
|
7638
7866
|
datasetXY,
|
7639
|
-
color_color,
|
7867
|
+
colorAdapter(color_color, linearColor),
|
7640
7868
|
label_label,
|
7641
7869
|
labelColorInversion,
|
7642
|
-
discreteLegend,
|
7870
|
+
colorAdapter(discreteLegend, colorLegend),
|
7871
|
+
colorCellStyleFill(cellStyle),
|
7643
7872
|
tooltip_tooltip,
|
7644
|
-
pointStyle_pointStyle,
|
7645
|
-
pointStateDimensionHover,
|
7646
|
-
lineStyle_lineStyle,
|
7647
7873
|
annotationPoint_annotationPoint,
|
7648
7874
|
annotationVerticalLine_annotationVerticalLine,
|
7649
7875
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -7658,21 +7884,20 @@ const pivotHeatmap = [
|
|
7658
7884
|
initHeatmap,
|
7659
7885
|
background_backgroundColor,
|
7660
7886
|
datasetXY,
|
7661
|
-
color_color,
|
7887
|
+
colorAdapter(color_color, linearColor),
|
7662
7888
|
label_label,
|
7663
7889
|
labelColorInversion,
|
7664
7890
|
discreteLegend,
|
7665
7891
|
tooltip_tooltip,
|
7666
|
-
|
7667
|
-
pointStateDimensionHover,
|
7668
|
-
lineStyle_lineStyle,
|
7892
|
+
colorCellStyleFill(cellStyle),
|
7669
7893
|
annotationPoint_annotationPoint,
|
7670
7894
|
annotationVerticalLine_annotationVerticalLine,
|
7671
7895
|
annotationHorizontalLine_annotationHorizontalLine,
|
7672
7896
|
annotationArea_annotationArea
|
7673
7897
|
]),
|
7674
7898
|
pivotRowDimensions,
|
7675
|
-
pivotColumnDimensions
|
7899
|
+
pivotColumnDimensions,
|
7900
|
+
colorAdapter(pivotDiscreteLegend, pivotColorLegend)
|
7676
7901
|
];
|
7677
7902
|
const heatmapSpecPipeline = [
|
7678
7903
|
pivotAdapter_pivotAdapter(heatmap, pivotHeatmap)
|
@@ -8390,7 +8615,18 @@ const zDimension = external_zod_namespaceObject.z.object({
|
|
8390
8615
|
'dimension',
|
8391
8616
|
'rowDimension',
|
8392
8617
|
'columnDimension'
|
8393
|
-
]).default('dimension')
|
8618
|
+
]).default('dimension'),
|
8619
|
+
encoding: external_zod_namespaceObject.z["enum"]([
|
8620
|
+
'xAxis',
|
8621
|
+
'yAxis',
|
8622
|
+
'angle',
|
8623
|
+
'color',
|
8624
|
+
'detail',
|
8625
|
+
'tooltip',
|
8626
|
+
'label',
|
8627
|
+
'row',
|
8628
|
+
'column'
|
8629
|
+
]).optional()
|
8394
8630
|
});
|
8395
8631
|
const zDimensionGroup = external_zod_namespaceObject.z.object({
|
8396
8632
|
id: external_zod_namespaceObject.z.string(),
|