@visactor/vseed 0.1.2 → 0.1.4
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 +6 -28
- package/dist/dataReshape/dataReshapeByEncoding.d.ts +1 -0
- package/dist/dataReshape/foldMeasures.d.ts +6 -5
- package/dist/index.cjs +844 -609
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +857 -619
- package/dist/index.js.map +1 -1
- package/dist/pipeline/advanced/chart/pipes/index.d.ts +1 -0
- package/dist/pipeline/advanced/chart/pipes/init/index.d.ts +1 -3
- package/dist/pipeline/advanced/chart/pipes/init/utils.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/{init/autoMeasures.d.ts → measures/buildMeasures.d.ts} +1 -1
- package/dist/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/measures/index.d.ts +4 -0
- package/dist/pipeline/advanced/chart/pipes/measures/utils.d.ts +28 -0
- package/dist/pipeline/spec/chart/pipes/color/colorAdapter.d.ts +2 -1
- package/dist/pipeline/spec/chart/pipes/color/index.d.ts +2 -1
- package/dist/pipeline/spec/chart/pipes/color/linearColorForDualAxis.d.ts +2 -0
- package/dist/pipeline/utils/chatType.d.ts +1 -1
- package/dist/types/advancedVSeed.d.ts +24 -14
- package/dist/types/chartType/area/zArea.d.ts +24 -0
- package/dist/types/chartType/areaPercent/zAreaPercent.d.ts +24 -0
- package/dist/types/chartType/bar/zBar.d.ts +24 -0
- package/dist/types/chartType/barParallel/zBarParallel.d.ts +24 -0
- package/dist/types/chartType/barPercent/zBarPercent.d.ts +24 -0
- package/dist/types/chartType/column/zColumn.d.ts +24 -0
- package/dist/types/chartType/columnParallel/zColumnParallel.d.ts +24 -0
- package/dist/types/chartType/columnPercent/zColumnPercent.d.ts +24 -0
- package/dist/types/chartType/donut/zDonut.d.ts +24 -0
- package/dist/types/chartType/dualAxis/zDualAxis.d.ts +76 -0
- package/dist/types/chartType/funnel/zFunnel.d.ts +24 -0
- package/dist/types/chartType/heatmap/zHeatmap.d.ts +24 -0
- package/dist/types/chartType/line/line.d.ts +0 -1
- package/dist/types/chartType/line/zLine.d.ts +24 -0
- package/dist/types/chartType/pie/zPie.d.ts +24 -0
- package/dist/types/chartType/pivotTable/zPivotTable.d.ts +24 -0
- package/dist/types/chartType/radar/zRadar.d.ts +24 -0
- package/dist/types/chartType/rose/zRose.d.ts +24 -0
- package/dist/types/chartType/roseParallel/zRoseParallel.d.ts +24 -0
- package/dist/types/chartType/scatter/zScatter.d.ts +76 -0
- package/dist/types/chartType/table/zTable.d.ts +24 -0
- package/dist/types/properties/dimensions/dimensions.d.ts +16 -0
- package/dist/types/properties/dimensions/zDimensions.d.ts +33 -0
- package/dist/types/properties/encoding/encoding.d.ts +0 -1
- package/dist/types/properties/encoding/index.d.ts +2 -2
- package/dist/types/properties/encoding/zEncoding.d.ts +0 -14
- package/dist/types/properties/measures/dualMeasures.d.ts +1 -0
- package/dist/types/properties/measures/measures.d.ts +19 -0
- package/dist/types/properties/measures/scatterMeasures.d.ts +1 -0
- package/dist/types/properties/measures/zDualMeasures.d.ts +104 -0
- package/dist/types/properties/measures/zMeasures.d.ts +39 -0
- package/dist/types/properties/measures/zScatterMeasures.d.ts +104 -0
- package/dist/types/zVseed.d.ts +584 -0
- package/dist/umd/index.js +858 -607
- package/dist/umd/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/pipeline/advanced/chart/pipes/init/autoDualMeasures.d.ts +0 -2
- package/dist/pipeline/advanced/chart/pipes/init/autoScatterMeasures.d.ts +0 -2
package/dist/umd/index.js
CHANGED
@@ -195,9 +195,8 @@
|
|
195
195
|
zBackgroundColor: ()=>zBackgroundColor,
|
196
196
|
registerBarParallel: ()=>registerBarParallel,
|
197
197
|
registerRadar: ()=>registerRadar,
|
198
|
-
zEncodings: ()=>zEncodings,
|
199
|
-
pivotTableSpecPipeline: ()=>pivotTableSpecPipeline,
|
200
198
|
zLocale: ()=>zLocale,
|
199
|
+
pivotTableSpecPipeline: ()=>pivotTableSpecPipeline,
|
201
200
|
zMeasure: ()=>zMeasure,
|
202
201
|
FoldXMeasureValue: ()=>FoldXMeasureValue,
|
203
202
|
dualAxisAdvancedPipeline: ()=>dualAxisAdvancedPipeline,
|
@@ -1446,6 +1445,138 @@
|
|
1446
1445
|
locale: locale || 'zh-CN'
|
1447
1446
|
};
|
1448
1447
|
};
|
1448
|
+
const ORIGINAL_DATA = '__OriginalData__';
|
1449
|
+
const Separator = '-';
|
1450
|
+
const FoldMeasureName = '__MeaName__';
|
1451
|
+
const FoldMeasureId = '__MeaId__';
|
1452
|
+
const FoldMeasureValue = '__MeaValue__';
|
1453
|
+
const MeasureName = FoldMeasureName;
|
1454
|
+
const FoldPrimaryMeasureValue = '__MeaPrimaryValue__';
|
1455
|
+
const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
|
1456
|
+
const FoldXMeasureValue = '__MeaXValue__';
|
1457
|
+
const FoldYMeasureValue = '__MeaYValue__';
|
1458
|
+
const XEncoding = '__Dim_X__';
|
1459
|
+
const YEncoding = '__Dim_Y__';
|
1460
|
+
const AngleEncoding = '__Dim_Angle__';
|
1461
|
+
const DetailEncoding = '__Dim_Detail__';
|
1462
|
+
const ColorEncoding = '__Dim_Color__';
|
1463
|
+
const ColorIdEncoding = '__Dim_ColorId__';
|
1464
|
+
const getBasicDimensions = (vseed)=>{
|
1465
|
+
const { dimensions, dataset } = vseed;
|
1466
|
+
const MeaName = {
|
1467
|
+
id: MeasureName,
|
1468
|
+
alias: intl.i18n`指标名称`,
|
1469
|
+
encoding: 'detail'
|
1470
|
+
};
|
1471
|
+
if (!dataset) throw new Error('dataset is required');
|
1472
|
+
if (0 === dataset.length) return [];
|
1473
|
+
if (dimensions) {
|
1474
|
+
const basicDimensions = dimensions.map((dim)=>({
|
1475
|
+
location: 'dimension',
|
1476
|
+
...dim
|
1477
|
+
}));
|
1478
|
+
if (basicDimensions.some((dim)=>dim.id === MeasureName)) return basicDimensions;
|
1479
|
+
basicDimensions.push(MeaName);
|
1480
|
+
return basicDimensions;
|
1481
|
+
}
|
1482
|
+
const top100dataset = dataset.slice(0, 100);
|
1483
|
+
const sample = top100dataset.reduce((prev, cur)=>({
|
1484
|
+
...prev,
|
1485
|
+
...cur
|
1486
|
+
}), {});
|
1487
|
+
const basicDimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
|
1488
|
+
'',
|
1489
|
+
null,
|
1490
|
+
void 0
|
1491
|
+
].includes(key)).map((dim)=>({
|
1492
|
+
id: dim,
|
1493
|
+
alias: dim,
|
1494
|
+
location: 'dimension'
|
1495
|
+
}));
|
1496
|
+
basicDimensions.push(MeaName);
|
1497
|
+
return basicDimensions;
|
1498
|
+
};
|
1499
|
+
const getBasicMeasures = (vseed)=>{
|
1500
|
+
const { dataset, measures } = vseed;
|
1501
|
+
if (!measures || 0 === measures.length) return generateMeasuresByDataset(dataset);
|
1502
|
+
return measures;
|
1503
|
+
};
|
1504
|
+
const generateMeasuresByDataset = (dataset)=>{
|
1505
|
+
if (!dataset) throw new Error('dataset is required');
|
1506
|
+
if (0 === dataset.length) return [];
|
1507
|
+
const top100dataset = dataset.slice(0, 100);
|
1508
|
+
const sample = top100dataset.reduce((prev, cur)=>({
|
1509
|
+
...prev,
|
1510
|
+
...cur
|
1511
|
+
}), {});
|
1512
|
+
const basicMeasures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
|
1513
|
+
'',
|
1514
|
+
null,
|
1515
|
+
void 0
|
1516
|
+
].includes(key)).map((measure)=>({
|
1517
|
+
id: measure,
|
1518
|
+
alias: measure
|
1519
|
+
}));
|
1520
|
+
return basicMeasures;
|
1521
|
+
};
|
1522
|
+
const isMeasureTreeWithChildren = (vseed)=>{
|
1523
|
+
const { measures } = vseed;
|
1524
|
+
if (!measures) return false;
|
1525
|
+
return measures.some((measure)=>'children' in measure);
|
1526
|
+
};
|
1527
|
+
const isMeasureTreeWithParentId = (vseed)=>{
|
1528
|
+
const { measures } = vseed;
|
1529
|
+
if (!measures) return false;
|
1530
|
+
return measures.some((measure)=>'parentId' in measure);
|
1531
|
+
};
|
1532
|
+
const encodingForLine = (advancedVSeed, context)=>{
|
1533
|
+
const { vseed } = context;
|
1534
|
+
const { measures: vseedMeasures = [] } = vseed;
|
1535
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
1536
|
+
const dimensions = getBasicDimensions(vseed);
|
1537
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
1538
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
1539
|
+
const encoding = {};
|
1540
|
+
if (hasDimensionEncoding) generateDimensionEncoding(dimensions, encoding);
|
1541
|
+
else generateDefaultDimensionEncoding(dimensions, encoding);
|
1542
|
+
if (hasMeasureEncoding) generateMeasureEncoding(measures, encoding);
|
1543
|
+
else generateDefaultMeasureEncoding(measures, encoding);
|
1544
|
+
return {
|
1545
|
+
...advancedVSeed,
|
1546
|
+
encoding
|
1547
|
+
};
|
1548
|
+
};
|
1549
|
+
const generateDefaultMeasureEncoding = (measures, encoding)=>{
|
1550
|
+
encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
|
1551
|
+
encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
1552
|
+
};
|
1553
|
+
const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
1554
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
1555
|
+
const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
|
1556
|
+
encoding.x = uniqueDimIds.slice(0, 1);
|
1557
|
+
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
1558
|
+
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
1559
|
+
encoding.tooltip = uniqueDimIds;
|
1560
|
+
encoding.label = [];
|
1561
|
+
encoding.row = [];
|
1562
|
+
encoding.column = [];
|
1563
|
+
};
|
1564
|
+
const generateMeasureEncoding = (measures, encoding)=>{
|
1565
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
1566
|
+
encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
1567
|
+
const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
1568
|
+
if (color.length > 0) encoding.color = color;
|
1569
|
+
};
|
1570
|
+
const generateDimensionEncoding = (dimensions, encoding)=>{
|
1571
|
+
encoding.x = chunk_QJLMYOTX_i(dimensions.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
1572
|
+
encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
1573
|
+
encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
1574
|
+
if (0 === encoding.x.length) encoding.x = [
|
1575
|
+
dimensions[0].id
|
1576
|
+
];
|
1577
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
1578
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
1579
|
+
};
|
1449
1580
|
const measureDepth = (measures = [])=>{
|
1450
1581
|
if (!measures) return 0;
|
1451
1582
|
let depth = 1;
|
@@ -1464,23 +1595,26 @@
|
|
1464
1595
|
const isVChart = (vseed)=>!isVTable(vseed);
|
1465
1596
|
const isPivotChart = (vseed)=>{
|
1466
1597
|
if (isVTable(vseed)) return false;
|
1598
|
+
if (isMeasureTreeWithParentId(vseed)) {
|
1599
|
+
const parentIds = vseed.measures?.map((measure)=>measure.parentId);
|
1600
|
+
return parentIds && chunk_QJLMYOTX_i(parentIds).length > 1;
|
1601
|
+
}
|
1467
1602
|
if ('dualAxis' === vseed.chartType || 'scatter' === vseed.chartType) {
|
1468
1603
|
const { dimensions = [] } = vseed;
|
1469
1604
|
const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'rowDimension' === dimension.location || 'columnDimension' === dimension.location);
|
1470
1605
|
if (hasRowOrColumnDimension) return true;
|
1471
1606
|
if ('scatter' === vseed.chartType) {
|
1472
|
-
if (vseed
|
1607
|
+
if (isMeasureTreeWithChildren(vseed)) {
|
1473
1608
|
const depth = measureDepth(vseed.measures);
|
1474
|
-
|
1475
|
-
return false;
|
1609
|
+
return 3 === depth;
|
1476
1610
|
}
|
1477
1611
|
if (vseed.scatterMeasures && vseed.scatterMeasures.length > 1) return true;
|
1612
|
+
return false;
|
1478
1613
|
}
|
1479
1614
|
if ('dualAxis' === vseed.chartType) {
|
1480
|
-
if (vseed
|
1615
|
+
if (isMeasureTreeWithChildren(vseed)) {
|
1481
1616
|
const depth = measureDepth(vseed.measures);
|
1482
|
-
|
1483
|
-
return false;
|
1617
|
+
return 3 === depth;
|
1484
1618
|
}
|
1485
1619
|
if (vseed.dualMeasures && vseed.dualMeasures.length > 1) return true;
|
1486
1620
|
}
|
@@ -1491,93 +1625,49 @@
|
|
1491
1625
|
const hasMeasureGroup = measures && measures.some((measure)=>measure && measure.children);
|
1492
1626
|
return hasRowOrColumnDimension || hasMeasureGroup;
|
1493
1627
|
};
|
1494
|
-
const
|
1495
|
-
const result = {
|
1496
|
-
...advancedVSeed
|
1497
|
-
};
|
1498
|
-
const { vseed } = context;
|
1499
|
-
const { measures, dataset } = vseed;
|
1500
|
-
if (!dataset) throw new Error('dataset is required');
|
1501
|
-
if (0 === dataset.length) return result;
|
1502
|
-
if (isPivotChart(vseed)) return autoMeasureGroup(advancedVSeed, context);
|
1503
|
-
if (measures) {
|
1504
|
-
result.measures = measures;
|
1505
|
-
return result;
|
1506
|
-
}
|
1507
|
-
const top100dataset = dataset.slice(0, 100);
|
1508
|
-
const sample = top100dataset.reduce((prev, cur)=>({
|
1509
|
-
...prev,
|
1510
|
-
...cur
|
1511
|
-
}), {});
|
1512
|
-
result.measures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
|
1513
|
-
'',
|
1514
|
-
null,
|
1515
|
-
void 0
|
1516
|
-
].includes(key)).map((measure)=>({
|
1517
|
-
id: measure,
|
1518
|
-
alias: measure
|
1519
|
-
}));
|
1520
|
-
return result;
|
1521
|
-
};
|
1522
|
-
const autoMeasureGroup = (advancedVSeed, context)=>{
|
1628
|
+
const buildMeasures = (advancedVSeed, context)=>{
|
1523
1629
|
const { vseed } = context;
|
1524
|
-
|
1525
|
-
|
1526
|
-
|
1527
|
-
if (!hasMeasureGroup) {
|
1528
|
-
const newMeasures = [
|
1529
|
-
{
|
1530
|
-
id: 'measureGroup',
|
1531
|
-
alias: 'measureGroup',
|
1532
|
-
children: measures
|
1533
|
-
}
|
1534
|
-
];
|
1535
|
-
return {
|
1536
|
-
...advancedVSeed,
|
1537
|
-
measures: newMeasures
|
1538
|
-
};
|
1630
|
+
if (isMeasureTreeWithChildren(vseed)) {
|
1631
|
+
advancedVSeed.measures = vseed.measures;
|
1632
|
+
return advancedVSeed;
|
1539
1633
|
}
|
1540
|
-
|
1541
|
-
|
1542
|
-
|
1543
|
-
if (currentGroup.children?.length) {
|
1544
|
-
currentGroup.alias = currentGroup.children.map((item)=>item.alias).join('-');
|
1545
|
-
currentGroup.id = currentGroup.alias + currentGroup.children.map((item)=>item.id).join('-');
|
1546
|
-
measureGroups.push(currentGroup);
|
1547
|
-
currentGroup = createEmptyMeasureGroup();
|
1548
|
-
}
|
1549
|
-
measureGroups.push(measure);
|
1550
|
-
} else currentGroup.children?.push(measure);
|
1551
|
-
if (currentGroup.children?.length) {
|
1552
|
-
currentGroup.alias = currentGroup.children.map((item)=>item.alias).join('-');
|
1553
|
-
currentGroup.id = currentGroup.alias + currentGroup.children.map((item)=>item.id).join('-');
|
1554
|
-
measureGroups.push(currentGroup);
|
1555
|
-
currentGroup = createEmptyMeasureGroup();
|
1634
|
+
if (isMeasureTreeWithParentId(vseed)) {
|
1635
|
+
advancedVSeed.measures = generateMeasuresByParentId(vseed.measures);
|
1636
|
+
return advancedVSeed;
|
1556
1637
|
}
|
1557
|
-
|
1638
|
+
const basicMeasures = getBasicMeasures(vseed);
|
1639
|
+
if (isPivotChart(vseed)) advancedVSeed.measures = basicMeasuresToMeasureTree(basicMeasures);
|
1640
|
+
else advancedVSeed.measures = basicMeasures;
|
1558
1641
|
return advancedVSeed;
|
1559
1642
|
};
|
1560
|
-
const
|
1561
|
-
|
1562
|
-
|
1563
|
-
|
1643
|
+
const generateMeasuresByParentId = (measures)=>{
|
1644
|
+
const measureTree = [];
|
1645
|
+
measures.forEach((measure)=>{
|
1646
|
+
if (!measure.parentId) return;
|
1647
|
+
const parent = measureTree.find((item)=>item.id === measure.parentId);
|
1648
|
+
if (parent && 'children' in parent) {
|
1649
|
+
parent.children = parent.children || [];
|
1650
|
+
parent.children.push(measure);
|
1651
|
+
} else measureTree.push({
|
1652
|
+
id: measure.parentId,
|
1653
|
+
children: [
|
1654
|
+
measure
|
1655
|
+
]
|
1656
|
+
});
|
1564
1657
|
});
|
1565
|
-
|
1566
|
-
|
1567
|
-
const
|
1568
|
-
|
1569
|
-
|
1570
|
-
|
1571
|
-
|
1572
|
-
|
1573
|
-
|
1574
|
-
|
1575
|
-
|
1576
|
-
|
1577
|
-
|
1578
|
-
const DetailEncoding = '__Dim_Detail__';
|
1579
|
-
const ColorEncoding = '__Dim_Color__';
|
1580
|
-
const ColorIdEncoding = '__Dim_ColorId__';
|
1658
|
+
return measureTree;
|
1659
|
+
};
|
1660
|
+
const basicMeasuresToMeasureTree = (measures)=>{
|
1661
|
+
const id = measures.map((item)=>item.id).join('-');
|
1662
|
+
const alias = measures.map((item)=>item.alias || item.id).join('-');
|
1663
|
+
return [
|
1664
|
+
{
|
1665
|
+
id,
|
1666
|
+
alias,
|
1667
|
+
children: measures
|
1668
|
+
}
|
1669
|
+
];
|
1670
|
+
};
|
1581
1671
|
const autoDimensions_autoDimensions = (advancedVSeed, context)=>{
|
1582
1672
|
const result = {
|
1583
1673
|
...advancedVSeed
|
@@ -1617,51 +1707,26 @@
|
|
1617
1707
|
result.dimensions.push(MeaName);
|
1618
1708
|
return result;
|
1619
1709
|
};
|
1620
|
-
const encodingForLine = (advancedVSeed, context)=>{
|
1621
|
-
const { vseed } = context;
|
1622
|
-
const { dimensions } = advancedVSeed;
|
1623
|
-
if (!dimensions) return advancedVSeed;
|
1624
|
-
const encoding = vseed.encoding;
|
1625
|
-
if (encoding) {
|
1626
|
-
const x = encoding.x || [
|
1627
|
-
dimensions[0].id
|
1628
|
-
];
|
1629
|
-
const color = encoding.color || [
|
1630
|
-
(dimensions[1] || dimensions[0]).id
|
1631
|
-
];
|
1632
|
-
const detail = encoding.detail || [];
|
1633
|
-
const mergedDetail = 0 === detail.length ? dimensions.map((d)=>d.id).filter((id)=>!x.includes(id)) : encoding.detail;
|
1634
|
-
return {
|
1635
|
-
...advancedVSeed,
|
1636
|
-
encoding: {
|
1637
|
-
...encoding,
|
1638
|
-
x,
|
1639
|
-
color,
|
1640
|
-
detail: mergedDetail
|
1641
|
-
}
|
1642
|
-
};
|
1643
|
-
}
|
1644
|
-
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
1645
|
-
const mergedEncoding = {
|
1646
|
-
x: dimensions.slice(0, 1).map((item)=>item.id),
|
1647
|
-
color: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
1648
|
-
detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
1649
|
-
tooltip: dimensions.map((item)=>item.id),
|
1650
|
-
label: [],
|
1651
|
-
row: [],
|
1652
|
-
column: []
|
1653
|
-
};
|
1654
|
-
return {
|
1655
|
-
...advancedVSeed,
|
1656
|
-
encoding: mergedEncoding
|
1657
|
-
};
|
1658
|
-
};
|
1659
1710
|
const pivotAdapter = (pipeline, pivotPipeline)=>(advancedVSeed, context)=>{
|
1660
1711
|
const { vseed } = context;
|
1661
1712
|
const usePivotChart = isPivotChart(vseed);
|
1662
1713
|
if (usePivotChart) return execPipeline(pivotPipeline, context, advancedVSeed);
|
1663
1714
|
return execPipeline(pipeline, context, advancedVSeed);
|
1664
1715
|
};
|
1716
|
+
function T(...e) {
|
1717
|
+
return chunk_LFJW7BOT_y(chunk_7ZI6JRPB_y, e);
|
1718
|
+
}
|
1719
|
+
function chunk_7ZI6JRPB_y(e) {
|
1720
|
+
let u = e, n = new Set;
|
1721
|
+
return (t, i, d)=>{
|
1722
|
+
let r = u(t, i, d);
|
1723
|
+
return n.has(r) ? chunk_ANXBDSUI_s : (n.add(r), {
|
1724
|
+
done: !1,
|
1725
|
+
hasNext: !0,
|
1726
|
+
next: t
|
1727
|
+
});
|
1728
|
+
};
|
1729
|
+
}
|
1665
1730
|
function chunk_AIG3BDKO_i(...e) {
|
1666
1731
|
return chunk_WIMGWYZL_u(chunk_AIG3BDKO_n, e);
|
1667
1732
|
}
|
@@ -1683,9 +1748,8 @@
|
|
1683
1748
|
for (let r of e)delete o[r];
|
1684
1749
|
return o;
|
1685
1750
|
}
|
1686
|
-
const foldMeasures = (dataset, measures,
|
1687
|
-
const { measureId
|
1688
|
-
const colorMeasureId = encoding?.color?.length === 1 && measures.some((m)=>m.id === encoding?.color?.[0]) ? encoding?.color?.[0] : void 0;
|
1751
|
+
const foldMeasures = (dataset, measures, options)=>{
|
1752
|
+
const { measureId, measureName, measureValue, colorMeasureId } = options || {};
|
1689
1753
|
const foldInfo = {
|
1690
1754
|
measureId,
|
1691
1755
|
measureName,
|
@@ -1784,11 +1848,12 @@
|
|
1784
1848
|
if (encoding && dimensions.length) datum[encoding] = dimensions.map((dim)=>String(datum[dim.id])).join(separator);
|
1785
1849
|
};
|
1786
1850
|
const dataReshapeByEncoding = (dataset, dimensions, measures, encoding, options)=>{
|
1787
|
-
const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, colorItemAsId = false } = options || {};
|
1788
|
-
const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures,
|
1851
|
+
const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, colorItemAsId = false, colorMeasureId } = options || {};
|
1852
|
+
const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, {
|
1789
1853
|
measureId: foldMeasureId,
|
1790
1854
|
measureName: foldMeasureName,
|
1791
|
-
measureValue: foldMeasureValue
|
1855
|
+
measureValue: foldMeasureValue,
|
1856
|
+
colorMeasureId
|
1792
1857
|
});
|
1793
1858
|
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dimensions, encoding, {
|
1794
1859
|
foldMeasureId,
|
@@ -1801,6 +1866,24 @@
|
|
1801
1866
|
unfoldInfo
|
1802
1867
|
};
|
1803
1868
|
};
|
1869
|
+
const colorAdapter = (ordinalPipe, linearPipe)=>(spec, context)=>{
|
1870
|
+
const { advancedVSeed } = context;
|
1871
|
+
if (isLinearColor(advancedVSeed)) return linearPipe(spec, context);
|
1872
|
+
return ordinalPipe(spec, context);
|
1873
|
+
};
|
1874
|
+
const isLinearColor = (advancedVSeed)=>{
|
1875
|
+
const { encoding, measures } = advancedVSeed;
|
1876
|
+
const measureIdList = findAllMeasures(measures).map((measure)=>measure.id);
|
1877
|
+
const { color } = encoding;
|
1878
|
+
return color?.length === 1 && measureIdList.includes(color[0]);
|
1879
|
+
};
|
1880
|
+
const getColorMeasureId = (advancedVSeed)=>{
|
1881
|
+
if (isLinearColor(advancedVSeed)) {
|
1882
|
+
const { encoding } = advancedVSeed;
|
1883
|
+
const { color } = encoding;
|
1884
|
+
return color?.[0];
|
1885
|
+
}
|
1886
|
+
};
|
1804
1887
|
const reshapeWithEncoding = (advancedVSeed, context)=>{
|
1805
1888
|
const result = {
|
1806
1889
|
...advancedVSeed
|
@@ -1810,7 +1893,9 @@
|
|
1810
1893
|
const { dimensions, measures, encoding } = advancedVSeed;
|
1811
1894
|
if (!measures || !dimensions || !dataset || !encoding) return result;
|
1812
1895
|
if (0 === measures.length) throw new Error('measures can not be empty');
|
1813
|
-
const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding
|
1896
|
+
const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, T(dimensions, (item)=>item.id), T(findAllMeasures(measures), (item)=>item.id), encoding, {
|
1897
|
+
colorMeasureId: getColorMeasureId(advancedVSeed)
|
1898
|
+
});
|
1814
1899
|
return {
|
1815
1900
|
...result,
|
1816
1901
|
dataset: newDatasets,
|
@@ -1845,8 +1930,9 @@
|
|
1845
1930
|
const measures = measureGroup.children;
|
1846
1931
|
if (!measures) return;
|
1847
1932
|
const groupId = measureGroup.id;
|
1848
|
-
const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding, {
|
1849
|
-
foldMeasureValue: `${FoldMeasureValue}${groupId}
|
1933
|
+
const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, T(dimensions, (item)=>item.id), T(measures, (item)=>item.id), encoding, {
|
1934
|
+
foldMeasureValue: `${FoldMeasureValue}${groupId}`,
|
1935
|
+
colorMeasureId: getColorMeasureId(advancedVSeed)
|
1850
1936
|
});
|
1851
1937
|
const reshapeInfo = {
|
1852
1938
|
id: groupId,
|
@@ -2062,9 +2148,9 @@
|
|
2062
2148
|
};
|
2063
2149
|
const lineAdvancedPipeline = [
|
2064
2150
|
initAdvancedVSeed_initAdvancedVSeed,
|
2065
|
-
autoMeasures_autoMeasures,
|
2066
|
-
autoDimensions_autoDimensions,
|
2067
2151
|
encodingForLine,
|
2152
|
+
buildMeasures,
|
2153
|
+
autoDimensions_autoDimensions,
|
2068
2154
|
pivotAdapter([
|
2069
2155
|
reshapeWithEncoding
|
2070
2156
|
], [
|
@@ -2077,17 +2163,6 @@
|
|
2077
2163
|
markStyle_markStyle,
|
2078
2164
|
annotation_annotation
|
2079
2165
|
];
|
2080
|
-
const colorAdapter = (ordinalPipe, linearPipe)=>(spec, context)=>{
|
2081
|
-
const { advancedVSeed } = context;
|
2082
|
-
if (isLinearColor(advancedVSeed)) return linearPipe(spec, context);
|
2083
|
-
return ordinalPipe(spec, context);
|
2084
|
-
};
|
2085
|
-
const isLinearColor = (advancedVSeed)=>{
|
2086
|
-
const { encoding, measures } = advancedVSeed;
|
2087
|
-
const measureIdList = findAllMeasures(measures).map((measure)=>measure.id);
|
2088
|
-
const { color } = encoding;
|
2089
|
-
return color?.length === 1 && measureIdList.includes(color[0]);
|
2090
|
-
};
|
2091
2166
|
const initLine = (spec, context)=>{
|
2092
2167
|
const result = {
|
2093
2168
|
...spec
|
@@ -3895,51 +3970,58 @@
|
|
3895
3970
|
};
|
3896
3971
|
const encodingForColumn = (advancedVSeed, context)=>{
|
3897
3972
|
const { vseed } = context;
|
3898
|
-
const {
|
3899
|
-
|
3900
|
-
const
|
3901
|
-
|
3902
|
-
|
3903
|
-
|
3904
|
-
|
3905
|
-
|
3906
|
-
|
3907
|
-
|
3908
|
-
const detail = encoding.detail || [];
|
3909
|
-
const mergedDetail = 0 === detail.length ? chunk_QJLMYOTX_i([
|
3910
|
-
...color,
|
3911
|
-
...detail
|
3912
|
-
]) : detail;
|
3913
|
-
return {
|
3914
|
-
...advancedVSeed,
|
3915
|
-
encoding: {
|
3916
|
-
...encoding,
|
3917
|
-
x,
|
3918
|
-
color,
|
3919
|
-
detail: mergedDetail
|
3920
|
-
}
|
3921
|
-
};
|
3922
|
-
}
|
3923
|
-
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
3924
|
-
const mergedEncoding = {
|
3925
|
-
x: dimensions.slice(0, 1).map((item)=>item.id),
|
3926
|
-
color: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
3927
|
-
detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
3928
|
-
tooltip: dimensions.map((item)=>item.id),
|
3929
|
-
label: [],
|
3930
|
-
row: [],
|
3931
|
-
column: []
|
3932
|
-
};
|
3973
|
+
const { measures: vseedMeasures = [] } = vseed;
|
3974
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
3975
|
+
const dimensions = getBasicDimensions(vseed);
|
3976
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
3977
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
3978
|
+
const encoding = {};
|
3979
|
+
if (hasDimensionEncoding) column_generateDimensionEncoding(dimensions, encoding);
|
3980
|
+
else column_generateDefaultDimensionEncoding(dimensions, encoding);
|
3981
|
+
if (hasMeasureEncoding) column_generateMeasureEncoding(measures, encoding);
|
3982
|
+
else column_generateDefaultMeasureEncoding(measures, encoding);
|
3933
3983
|
return {
|
3934
3984
|
...advancedVSeed,
|
3935
|
-
encoding
|
3985
|
+
encoding
|
3936
3986
|
};
|
3937
3987
|
};
|
3988
|
+
const column_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
3989
|
+
encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
|
3990
|
+
encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
3991
|
+
};
|
3992
|
+
const column_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
3993
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
3994
|
+
const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
|
3995
|
+
encoding.x = uniqueDimIds.slice(0, 1);
|
3996
|
+
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
3997
|
+
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
3998
|
+
encoding.tooltip = uniqueDimIds;
|
3999
|
+
encoding.label = [];
|
4000
|
+
encoding.row = [];
|
4001
|
+
encoding.column = [];
|
4002
|
+
};
|
4003
|
+
const column_generateMeasureEncoding = (measures, encoding)=>{
|
4004
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
4005
|
+
encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
4006
|
+
const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
4007
|
+
if (color.length > 0) encoding.color = color;
|
4008
|
+
return encoding;
|
4009
|
+
};
|
4010
|
+
const column_generateDimensionEncoding = (dimensions, encoding)=>{
|
4011
|
+
encoding.x = chunk_QJLMYOTX_i(dimensions.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
4012
|
+
encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
4013
|
+
encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
4014
|
+
if (0 === encoding.x.length) encoding.x = [
|
4015
|
+
dimensions[0].id
|
4016
|
+
];
|
4017
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
4018
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
4019
|
+
};
|
3938
4020
|
const columnAdvancedPipeline = [
|
3939
4021
|
initAdvancedVSeed_initAdvancedVSeed,
|
3940
|
-
autoMeasures_autoMeasures,
|
3941
|
-
autoDimensions_autoDimensions,
|
3942
4022
|
encodingForColumn,
|
4023
|
+
buildMeasures,
|
4024
|
+
autoDimensions_autoDimensions,
|
3943
4025
|
pivotAdapter([
|
3944
4026
|
reshapeWithEncoding
|
3945
4027
|
], [
|
@@ -4386,9 +4468,9 @@
|
|
4386
4468
|
};
|
4387
4469
|
const columnParallelAdvancedPipeline = [
|
4388
4470
|
initAdvancedVSeed_initAdvancedVSeed,
|
4389
|
-
autoMeasures_autoMeasures,
|
4390
|
-
autoDimensions_autoDimensions,
|
4391
4471
|
encodingForColumn,
|
4472
|
+
buildMeasures,
|
4473
|
+
autoDimensions_autoDimensions,
|
4392
4474
|
pivotAdapter([
|
4393
4475
|
reshapeWithEncoding
|
4394
4476
|
], [
|
@@ -4483,9 +4565,9 @@
|
|
4483
4565
|
};
|
4484
4566
|
const columnPercentAdvancedPipeline = [
|
4485
4567
|
initAdvancedVSeed_initAdvancedVSeed,
|
4486
|
-
autoMeasures_autoMeasures,
|
4487
|
-
autoDimensions_autoDimensions,
|
4488
4568
|
encodingForColumn,
|
4569
|
+
buildMeasures,
|
4570
|
+
autoDimensions_autoDimensions,
|
4489
4571
|
pivotAdapter([
|
4490
4572
|
reshapeWithEncoding
|
4491
4573
|
], [
|
@@ -4564,46 +4646,53 @@
|
|
4564
4646
|
};
|
4565
4647
|
const encodingForBar = (advancedVSeed, context)=>{
|
4566
4648
|
const { vseed } = context;
|
4567
|
-
const {
|
4568
|
-
|
4569
|
-
const
|
4570
|
-
|
4571
|
-
|
4572
|
-
|
4573
|
-
|
4574
|
-
|
4575
|
-
|
4576
|
-
|
4577
|
-
const detail = encoding.detail || [];
|
4578
|
-
const mergedDetail = 0 === detail.length ? chunk_QJLMYOTX_i([
|
4579
|
-
...color,
|
4580
|
-
...detail
|
4581
|
-
]) : detail;
|
4582
|
-
return {
|
4583
|
-
...advancedVSeed,
|
4584
|
-
encoding: {
|
4585
|
-
...encoding,
|
4586
|
-
y,
|
4587
|
-
color,
|
4588
|
-
detail: mergedDetail
|
4589
|
-
}
|
4590
|
-
};
|
4591
|
-
}
|
4592
|
-
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
4593
|
-
const mergedEncoding = {
|
4594
|
-
y: dimensions.slice(0, 1).map((item)=>item.id),
|
4595
|
-
color: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
4596
|
-
detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
4597
|
-
tooltip: dimensions.map((item)=>item.id),
|
4598
|
-
label: [],
|
4599
|
-
row: [],
|
4600
|
-
column: []
|
4601
|
-
};
|
4649
|
+
const { measures: vseedMeasures = [] } = vseed;
|
4650
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
4651
|
+
const dimensions = getBasicDimensions(vseed);
|
4652
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
4653
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
4654
|
+
const encoding = {};
|
4655
|
+
if (hasDimensionEncoding) bar_generateDimensionEncoding(dimensions, encoding);
|
4656
|
+
else bar_generateDefaultDimensionEncoding(dimensions, encoding);
|
4657
|
+
if (hasMeasureEncoding) bar_generateMeasureEncoding(measures, encoding);
|
4658
|
+
else bar_generateDefaultMeasureEncoding(measures, encoding);
|
4602
4659
|
return {
|
4603
4660
|
...advancedVSeed,
|
4604
|
-
encoding
|
4661
|
+
encoding
|
4605
4662
|
};
|
4606
4663
|
};
|
4664
|
+
const bar_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
4665
|
+
encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
|
4666
|
+
encoding.x = chunk_QJLMYOTX_i(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
4667
|
+
};
|
4668
|
+
const bar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
4669
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
4670
|
+
const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
|
4671
|
+
encoding.y = uniqueDimIds.slice(0, 1);
|
4672
|
+
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
4673
|
+
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
4674
|
+
encoding.tooltip = uniqueDimIds;
|
4675
|
+
encoding.label = [];
|
4676
|
+
encoding.row = [];
|
4677
|
+
encoding.column = [];
|
4678
|
+
};
|
4679
|
+
const bar_generateMeasureEncoding = (measures, encoding)=>{
|
4680
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
4681
|
+
encoding.x = chunk_QJLMYOTX_i(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
4682
|
+
const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
4683
|
+
if (color.length > 0) encoding.color = color;
|
4684
|
+
return encoding;
|
4685
|
+
};
|
4686
|
+
const bar_generateDimensionEncoding = (dimensions, encoding)=>{
|
4687
|
+
encoding.y = chunk_QJLMYOTX_i(dimensions.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
4688
|
+
encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
4689
|
+
encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
4690
|
+
if (0 === encoding.y.length) encoding.y = [
|
4691
|
+
dimensions[0].id
|
4692
|
+
];
|
4693
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.y?.includes(item.id)).map((item)=>item.id);
|
4694
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.y?.includes(item.id)).map((item)=>item.id);
|
4695
|
+
};
|
4607
4696
|
const sortYBandAxis = (advancedVSeed, context)=>{
|
4608
4697
|
const result = {
|
4609
4698
|
...advancedVSeed
|
@@ -4622,9 +4711,9 @@
|
|
4622
4711
|
};
|
4623
4712
|
const barAdvancedPipeline = [
|
4624
4713
|
initAdvancedVSeed_initAdvancedVSeed,
|
4625
|
-
autoMeasures_autoMeasures,
|
4626
|
-
autoDimensions_autoDimensions,
|
4627
4714
|
encodingForBar,
|
4715
|
+
buildMeasures,
|
4716
|
+
autoDimensions_autoDimensions,
|
4628
4717
|
pivotAdapter([
|
4629
4718
|
reshapeWithEncoding
|
4630
4719
|
], [
|
@@ -4975,7 +5064,7 @@
|
|
4975
5064
|
};
|
4976
5065
|
const barParallelAdvancedPipeline = [
|
4977
5066
|
initAdvancedVSeed_initAdvancedVSeed,
|
4978
|
-
|
5067
|
+
buildMeasures,
|
4979
5068
|
autoDimensions_autoDimensions,
|
4980
5069
|
encodingForBar,
|
4981
5070
|
pivotAdapter([
|
@@ -5071,7 +5160,7 @@
|
|
5071
5160
|
};
|
5072
5161
|
const barPercentAdvancedPipeline = [
|
5073
5162
|
initAdvancedVSeed_initAdvancedVSeed,
|
5074
|
-
|
5163
|
+
buildMeasures,
|
5075
5164
|
autoDimensions_autoDimensions,
|
5076
5165
|
encodingForBar,
|
5077
5166
|
pivotAdapter([
|
@@ -5142,9 +5231,9 @@
|
|
5142
5231
|
};
|
5143
5232
|
const areaAdvancedPipeline = [
|
5144
5233
|
initAdvancedVSeed_initAdvancedVSeed,
|
5145
|
-
autoMeasures_autoMeasures,
|
5146
|
-
autoDimensions_autoDimensions,
|
5147
5234
|
encodingForColumn,
|
5235
|
+
buildMeasures,
|
5236
|
+
autoDimensions_autoDimensions,
|
5148
5237
|
pivotAdapter([
|
5149
5238
|
reshapeWithEncoding
|
5150
5239
|
], [
|
@@ -5300,9 +5389,9 @@
|
|
5300
5389
|
};
|
5301
5390
|
const areaPercentAdvancedPipeline = [
|
5302
5391
|
initAdvancedVSeed_initAdvancedVSeed,
|
5303
|
-
autoMeasures_autoMeasures,
|
5304
|
-
autoDimensions_autoDimensions,
|
5305
5392
|
encodingForColumn,
|
5393
|
+
buildMeasures,
|
5394
|
+
autoDimensions_autoDimensions,
|
5306
5395
|
pivotAdapter([
|
5307
5396
|
reshapeWithEncoding
|
5308
5397
|
], [
|
@@ -5376,131 +5465,148 @@
|
|
5376
5465
|
Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
|
5377
5466
|
Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
|
5378
5467
|
};
|
5379
|
-
const
|
5380
|
-
const
|
5381
|
-
|
5468
|
+
const encodingForScatter = (advancedVSeed, context)=>{
|
5469
|
+
const { vseed } = context;
|
5470
|
+
const { measures: vseedMeasures = [] } = vseed;
|
5471
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
5472
|
+
const dimensions = getBasicDimensions(vseed);
|
5473
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
5474
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
5475
|
+
const encoding = {};
|
5476
|
+
if (hasDimensionEncoding) scatter_generateDimensionEncoding(dimensions, encoding);
|
5477
|
+
else scatter_generateDefaultDimensionEncoding(dimensions, encoding);
|
5478
|
+
if (hasMeasureEncoding) scatter_generateMeasureEncoding(measures, encoding);
|
5479
|
+
else scatter_generateDefaultMeasureEncoding(measures, encoding);
|
5480
|
+
return {
|
5481
|
+
...advancedVSeed,
|
5482
|
+
encoding
|
5382
5483
|
};
|
5484
|
+
};
|
5485
|
+
const scatter_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
5486
|
+
encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
|
5487
|
+
encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5488
|
+
};
|
5489
|
+
const scatter_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
5490
|
+
const dimensionsWithoutMeasureName = dimensions.filter((item)=>item.id !== MeasureName);
|
5491
|
+
const uniqueDimIds = chunk_QJLMYOTX_i(dimensionsWithoutMeasureName.map((d)=>d.id));
|
5492
|
+
encoding.color = uniqueDimIds.slice(0);
|
5493
|
+
encoding.detail = uniqueDimIds.slice(0);
|
5494
|
+
encoding.tooltip = uniqueDimIds;
|
5495
|
+
encoding.label = [];
|
5496
|
+
encoding.row = [];
|
5497
|
+
encoding.column = [];
|
5498
|
+
};
|
5499
|
+
const scatter_generateMeasureEncoding = (measures, encoding)=>{
|
5500
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
5501
|
+
encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5502
|
+
const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5503
|
+
if (color.length > 0) encoding.color = color;
|
5504
|
+
};
|
5505
|
+
const scatter_generateDimensionEncoding = (dimensions, encoding)=>{
|
5506
|
+
encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5507
|
+
encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
5508
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
5509
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
5510
|
+
};
|
5511
|
+
const buildMeasuresForScatter = (advancedVSeed, context)=>{
|
5383
5512
|
const { vseed } = context;
|
5384
|
-
|
5385
|
-
|
5386
|
-
|
5387
|
-
if (scatterMeasures) {
|
5388
|
-
result.measures = scatterMeasuresToMeasureTree(scatterMeasures);
|
5389
|
-
return result;
|
5513
|
+
if (isMeasureTreeWithChildren(vseed)) {
|
5514
|
+
advancedVSeed.measures = vseed.measures;
|
5515
|
+
return advancedVSeed;
|
5390
5516
|
}
|
5391
|
-
if (
|
5392
|
-
|
5393
|
-
return
|
5517
|
+
if (isMeasureTreeWithParentId(vseed)) {
|
5518
|
+
advancedVSeed.measures = buildMeasuresForScatter_generateMeasuresByParentId(vseed.measures);
|
5519
|
+
return advancedVSeed;
|
5394
5520
|
}
|
5395
|
-
const
|
5396
|
-
const
|
5397
|
-
|
5398
|
-
|
5399
|
-
|
5400
|
-
|
5401
|
-
|
5402
|
-
|
5403
|
-
|
5404
|
-
]
|
5405
|
-
|
5406
|
-
|
5407
|
-
|
5408
|
-
|
5409
|
-
|
5410
|
-
|
5411
|
-
|
5412
|
-
|
5413
|
-
|
5414
|
-
|
5415
|
-
|
5416
|
-
else if (newMeasures.length > 1) result.measures = [
|
5417
|
-
{
|
5418
|
-
id: 'primary',
|
5419
|
-
alias: 'primary',
|
5420
|
-
children: newMeasures.slice(0, 1)
|
5421
|
-
},
|
5521
|
+
const basicMeasures = getBasicMeasures(vseed);
|
5522
|
+
const scatterMeasures = vseed.scatterMeasures ? vseed.scatterMeasures : basicMeasuresToScatterMeasures(basicMeasures);
|
5523
|
+
advancedVSeed.measures = scatterMeasuresToMeasureTree(scatterMeasures);
|
5524
|
+
return advancedVSeed;
|
5525
|
+
};
|
5526
|
+
const basicMeasuresToScatterMeasures = (basicMeasures)=>{
|
5527
|
+
const yMeasures = [];
|
5528
|
+
const xMeasures = [];
|
5529
|
+
for(let index = 0; index < basicMeasures.length; index++){
|
5530
|
+
const item = basicMeasures[index];
|
5531
|
+
const encoding = Array.isArray(item.encoding) ? item.encoding : [
|
5532
|
+
item.encoding
|
5533
|
+
];
|
5534
|
+
const isYAxis = encoding.includes('yAxis');
|
5535
|
+
const isXAxis = encoding.includes('xAxis');
|
5536
|
+
if (isYAxis) yMeasures.push(item);
|
5537
|
+
else if (isXAxis) xMeasures.push(item);
|
5538
|
+
else if (0 === index) yMeasures.push(item);
|
5539
|
+
else xMeasures.push(item);
|
5540
|
+
}
|
5541
|
+
return [
|
5422
5542
|
{
|
5423
|
-
id: '
|
5424
|
-
|
5425
|
-
|
5543
|
+
id: 'scatterMeasures',
|
5544
|
+
xMeasures,
|
5545
|
+
yMeasures
|
5426
5546
|
}
|
5427
5547
|
];
|
5428
|
-
return result;
|
5429
5548
|
};
|
5430
5549
|
const scatterMeasuresToMeasureTree = (scatterMeasures)=>{
|
5431
5550
|
const measureTree = scatterMeasures.map((item, index)=>{
|
5432
|
-
const { xMeasures, yMeasures } = item;
|
5551
|
+
const { id, xMeasures, yMeasures } = item;
|
5433
5552
|
const groupChildren = [];
|
5434
|
-
let
|
5553
|
+
let groupId = `${id}-`;
|
5435
5554
|
if (xMeasures) {
|
5436
|
-
const
|
5555
|
+
const arrPrimaryMeasures = Array.isArray(xMeasures) ? xMeasures : [
|
5437
5556
|
xMeasures
|
5438
5557
|
];
|
5439
|
-
const alias =
|
5440
|
-
|
5558
|
+
const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
|
5559
|
+
groupId += alias;
|
5441
5560
|
groupChildren.push({
|
5442
5561
|
id: `${index}-x`,
|
5443
|
-
alias:
|
5444
|
-
children:
|
5562
|
+
alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
|
5563
|
+
children: arrPrimaryMeasures
|
5445
5564
|
});
|
5446
5565
|
}
|
5447
5566
|
if (yMeasures) {
|
5448
|
-
const
|
5567
|
+
const arrSecondaryMeasures = Array.isArray(yMeasures) ? yMeasures : [
|
5449
5568
|
yMeasures
|
5450
5569
|
];
|
5451
|
-
const alias =
|
5452
|
-
|
5570
|
+
const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
|
5571
|
+
groupId += alias;
|
5453
5572
|
groupChildren.push({
|
5454
5573
|
id: `${index}-y`,
|
5455
|
-
alias:
|
5456
|
-
children:
|
5574
|
+
alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
|
5575
|
+
children: arrSecondaryMeasures
|
5457
5576
|
});
|
5458
5577
|
}
|
5459
5578
|
return {
|
5460
|
-
id,
|
5461
|
-
alias:
|
5579
|
+
id: groupId,
|
5580
|
+
alias: groupId,
|
5462
5581
|
children: groupChildren
|
5463
5582
|
};
|
5464
5583
|
});
|
5465
5584
|
if (1 === scatterMeasures.length) return measureTree[0].children || [];
|
5466
5585
|
return measureTree;
|
5467
5586
|
};
|
5468
|
-
const
|
5469
|
-
const
|
5470
|
-
|
5471
|
-
|
5472
|
-
|
5473
|
-
|
5474
|
-
|
5475
|
-
|
5476
|
-
|
5587
|
+
const buildMeasuresForScatter_generateMeasuresByParentId = (measures)=>{
|
5588
|
+
const scatterMeasures = [];
|
5589
|
+
measures.forEach((item)=>{
|
5590
|
+
if (!item.parentId) return;
|
5591
|
+
if (!scatterMeasures.find((d)=>d.id === item.parentId)) scatterMeasures.push({
|
5592
|
+
id: item.parentId,
|
5593
|
+
yMeasures: [],
|
5594
|
+
xMeasures: []
|
5595
|
+
});
|
5596
|
+
const scatterChart = scatterMeasures.find((d)=>d.id === item.parentId);
|
5597
|
+
if (!scatterChart || !Array.isArray(scatterChart.yMeasures) || !Array.isArray(scatterChart.xMeasures)) return;
|
5598
|
+
const encoding = Array.isArray(item.encoding) ? item.encoding : [
|
5599
|
+
item.encoding
|
5477
5600
|
];
|
5478
|
-
const
|
5479
|
-
|
5480
|
-
|
5481
|
-
|
5482
|
-
|
5483
|
-
|
5484
|
-
|
5485
|
-
|
5486
|
-
|
5487
|
-
detail: mergedDetail
|
5488
|
-
}
|
5489
|
-
};
|
5490
|
-
}
|
5491
|
-
const dimensionsWithoutMeasureName = dimensions.filter((item)=>item.id !== MeasureName);
|
5492
|
-
const mergedEncoding = {
|
5493
|
-
color: dimensions.slice(0).map((item)=>item.id),
|
5494
|
-
detail: dimensionsWithoutMeasureName.slice(0).map((item)=>item.id),
|
5495
|
-
tooltip: dimensionsWithoutMeasureName.map((item)=>item.id),
|
5496
|
-
label: [],
|
5497
|
-
row: [],
|
5498
|
-
column: []
|
5499
|
-
};
|
5500
|
-
return {
|
5501
|
-
...advancedVSeed,
|
5502
|
-
encoding: mergedEncoding
|
5503
|
-
};
|
5601
|
+
const isX = encoding.includes('xAxis');
|
5602
|
+
const isY = encoding.includes('yAxis');
|
5603
|
+
const isEmpty = !encoding.length;
|
5604
|
+
if (isY) scatterChart.yMeasures.push(item);
|
5605
|
+
else if (isX) scatterChart.xMeasures.push(item);
|
5606
|
+
else if (isEmpty) if (0 === scatterChart.yMeasures.length) scatterChart.yMeasures.push(item);
|
5607
|
+
else scatterChart.xMeasures.push(item);
|
5608
|
+
});
|
5609
|
+
return scatterMeasuresToMeasureTree(scatterMeasures);
|
5504
5610
|
};
|
5505
5611
|
const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
5506
5612
|
const result = {
|
@@ -5518,18 +5624,20 @@
|
|
5518
5624
|
const xMeasures = measures[0];
|
5519
5625
|
const yMeasures = measures[1] || xMeasures;
|
5520
5626
|
if (xMeasures && xMeasures.children) {
|
5521
|
-
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
|
5627
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, T(dimensions, (d)=>d.id), T(xMeasures.children, (d)=>d.id), encoding, {
|
5522
5628
|
foldMeasureValue: FoldXMeasureValue,
|
5523
|
-
colorItemAsId: true
|
5629
|
+
colorItemAsId: true,
|
5630
|
+
colorMeasureId: getColorMeasureId(advancedVSeed)
|
5524
5631
|
});
|
5525
5632
|
datasets.push(newDataset);
|
5526
5633
|
foldInfoList.push(foldInfo);
|
5527
5634
|
unfoldInfoList.push(unfoldInfo);
|
5528
5635
|
}
|
5529
5636
|
if (yMeasures && yMeasures.children) {
|
5530
|
-
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(datasets[0], dimensions, yMeasures.children, encoding, {
|
5637
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(datasets[0], T(dimensions, (d)=>d.id), T(yMeasures.children, (d)=>d.id), encoding, {
|
5531
5638
|
foldMeasureValue: FoldYMeasureValue,
|
5532
|
-
colorItemAsId: true
|
5639
|
+
colorItemAsId: true,
|
5640
|
+
colorMeasureId: getColorMeasureId(advancedVSeed)
|
5533
5641
|
});
|
5534
5642
|
datasets[0] = newDataset;
|
5535
5643
|
foldInfoList.push(foldInfo);
|
@@ -5584,7 +5692,8 @@
|
|
5584
5692
|
if (xMeasures && xMeasures.children) {
|
5585
5693
|
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
|
5586
5694
|
foldMeasureValue: `${FoldXMeasureValue}${index}`,
|
5587
|
-
colorItemAsId: true
|
5695
|
+
colorItemAsId: true,
|
5696
|
+
colorMeasureId: getColorMeasureId(advancedVSeed)
|
5588
5697
|
});
|
5589
5698
|
datasets.push(newDataset);
|
5590
5699
|
foldInfoList.push(foldInfo);
|
@@ -5593,7 +5702,8 @@
|
|
5593
5702
|
if (yMeasures && yMeasures.children) {
|
5594
5703
|
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, yMeasures.children, encoding, {
|
5595
5704
|
foldMeasureValue: `${FoldYMeasureValue}${index}`,
|
5596
|
-
colorItemAsId: true
|
5705
|
+
colorItemAsId: true,
|
5706
|
+
colorMeasureId: getColorMeasureId(advancedVSeed)
|
5597
5707
|
});
|
5598
5708
|
datasets.push(newDataset);
|
5599
5709
|
foldInfoList.push(foldInfo);
|
@@ -5628,9 +5738,9 @@
|
|
5628
5738
|
};
|
5629
5739
|
const scatterAdvancedPipeline = [
|
5630
5740
|
initAdvancedVSeed_initAdvancedVSeed,
|
5631
|
-
autoScatterMeasures,
|
5632
|
-
autoDimensions_autoDimensions,
|
5633
5741
|
encodingForScatter,
|
5742
|
+
buildMeasuresForScatter,
|
5743
|
+
autoDimensions_autoDimensions,
|
5634
5744
|
pivotAdapter([
|
5635
5745
|
reshapeWithScatterEncoding
|
5636
5746
|
], [
|
@@ -5775,68 +5885,104 @@
|
|
5775
5885
|
Builder._advancedPipelineMap.scatter = scatterAdvancedPipeline;
|
5776
5886
|
Builder._specPipelineMap.scatter = scatterSpecPipeline;
|
5777
5887
|
};
|
5778
|
-
const
|
5779
|
-
const
|
5780
|
-
|
5888
|
+
const encodingForDualAxis = (advancedVSeed, context)=>{
|
5889
|
+
const { vseed } = context;
|
5890
|
+
const { measures: vseedMeasures = [] } = vseed;
|
5891
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
5892
|
+
const dimensions = getBasicDimensions(vseed);
|
5893
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
5894
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
5895
|
+
const encoding = {};
|
5896
|
+
if (hasDimensionEncoding) dualAxis_generateDimensionEncoding(dimensions, encoding);
|
5897
|
+
else dualAxis_generateDefaultDimensionEncoding(dimensions, encoding);
|
5898
|
+
if (hasMeasureEncoding) dualAxis_generateMeasureEncoding(measures, encoding);
|
5899
|
+
else dualAxis_generateDefaultMeasureEncoding(measures, encoding);
|
5900
|
+
return {
|
5901
|
+
...advancedVSeed,
|
5902
|
+
encoding
|
5781
5903
|
};
|
5904
|
+
};
|
5905
|
+
const dualAxis_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
5906
|
+
encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
|
5907
|
+
encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5908
|
+
};
|
5909
|
+
const dualAxis_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
5910
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
5911
|
+
const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
|
5912
|
+
encoding.x = uniqueDimIds.slice(0, 1);
|
5913
|
+
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
5914
|
+
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
5915
|
+
encoding.tooltip = uniqueDimIds;
|
5916
|
+
encoding.label = [];
|
5917
|
+
encoding.row = [];
|
5918
|
+
encoding.column = [];
|
5919
|
+
};
|
5920
|
+
const dualAxis_generateMeasureEncoding = (measures, encoding)=>{
|
5921
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
5922
|
+
encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5923
|
+
const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5924
|
+
if (color.length > 0) encoding.color = color;
|
5925
|
+
return encoding;
|
5926
|
+
};
|
5927
|
+
const dualAxis_generateDimensionEncoding = (dimensions, encoding)=>{
|
5928
|
+
encoding.x = chunk_QJLMYOTX_i(dimensions.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5929
|
+
encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5930
|
+
encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
5931
|
+
if (0 === encoding.x.length) encoding.x = [
|
5932
|
+
dimensions[0].id
|
5933
|
+
];
|
5934
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
5935
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
5936
|
+
};
|
5937
|
+
const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
|
5782
5938
|
const { vseed } = context;
|
5783
|
-
|
5784
|
-
|
5785
|
-
|
5786
|
-
if (dualMeasures) {
|
5787
|
-
result.measures = dualMeasuresToMeasureTree(dualMeasures);
|
5788
|
-
return result;
|
5939
|
+
if (isMeasureTreeWithChildren(vseed)) {
|
5940
|
+
advancedVSeed.measures = vseed.measures;
|
5941
|
+
return advancedVSeed;
|
5789
5942
|
}
|
5790
|
-
if (
|
5791
|
-
|
5792
|
-
return
|
5943
|
+
if (isMeasureTreeWithParentId(vseed)) {
|
5944
|
+
advancedVSeed.measures = buildMeasuresForDualAxis_generateMeasuresByParentId(vseed.measures);
|
5945
|
+
return advancedVSeed;
|
5793
5946
|
}
|
5794
|
-
const
|
5795
|
-
const
|
5796
|
-
|
5797
|
-
|
5798
|
-
|
5799
|
-
|
5800
|
-
|
5801
|
-
|
5802
|
-
|
5803
|
-
]
|
5804
|
-
|
5805
|
-
|
5806
|
-
|
5807
|
-
|
5808
|
-
|
5809
|
-
|
5810
|
-
|
5811
|
-
|
5812
|
-
|
5813
|
-
|
5814
|
-
|
5815
|
-
else if (newMeasures.length > 1) result.measures = [
|
5816
|
-
{
|
5817
|
-
id: 'primary',
|
5818
|
-
alias: 'primary',
|
5819
|
-
children: newMeasures.slice(0, 1)
|
5820
|
-
},
|
5947
|
+
const basicMeasures = getBasicMeasures(vseed);
|
5948
|
+
const dualMeasures = vseed.dualMeasures ? vseed.dualMeasures : basicMeasuresToDualMeasures(basicMeasures);
|
5949
|
+
advancedVSeed.measures = dualMeasuresToMeasureTree(dualMeasures);
|
5950
|
+
return advancedVSeed;
|
5951
|
+
};
|
5952
|
+
const basicMeasuresToDualMeasures = (basicMeasures)=>{
|
5953
|
+
const primaryMeasures = [];
|
5954
|
+
const secondaryMeasures = [];
|
5955
|
+
for(let index = 0; index < basicMeasures.length; index++){
|
5956
|
+
const item = basicMeasures[index];
|
5957
|
+
const encoding = Array.isArray(item.encoding) ? item.encoding : [
|
5958
|
+
item.encoding
|
5959
|
+
];
|
5960
|
+
const isPrimaryYAxis = encoding.includes('primaryYAxis');
|
5961
|
+
const isSecondaryYAxis = encoding.includes('secondaryYAxis');
|
5962
|
+
if (isPrimaryYAxis) primaryMeasures.push(item);
|
5963
|
+
else if (isSecondaryYAxis) secondaryMeasures.push(item);
|
5964
|
+
else if (0 === index) primaryMeasures.push(item);
|
5965
|
+
else secondaryMeasures.push(item);
|
5966
|
+
}
|
5967
|
+
return [
|
5821
5968
|
{
|
5822
|
-
id: '
|
5823
|
-
|
5824
|
-
|
5969
|
+
id: 'dualMeasures',
|
5970
|
+
primaryMeasures,
|
5971
|
+
secondaryMeasures
|
5825
5972
|
}
|
5826
5973
|
];
|
5827
|
-
return result;
|
5828
5974
|
};
|
5829
5975
|
const dualMeasuresToMeasureTree = (dualMeasures)=>{
|
5830
5976
|
const measureTree = dualMeasures.map((item, index)=>{
|
5831
|
-
const { primaryMeasures, secondaryMeasures } = item;
|
5977
|
+
const { id, primaryMeasures, secondaryMeasures } = item;
|
5832
5978
|
const groupChildren = [];
|
5833
|
-
let
|
5979
|
+
let groupId = `${id}-`;
|
5834
5980
|
if (primaryMeasures) {
|
5835
5981
|
const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [
|
5836
5982
|
primaryMeasures
|
5837
5983
|
];
|
5838
5984
|
const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
|
5839
|
-
|
5985
|
+
groupId += alias;
|
5840
5986
|
groupChildren.push({
|
5841
5987
|
id: `${index}-primary`,
|
5842
5988
|
alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
|
@@ -5848,7 +5994,7 @@
|
|
5848
5994
|
secondaryMeasures
|
5849
5995
|
];
|
5850
5996
|
const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
|
5851
|
-
|
5997
|
+
groupId += alias;
|
5852
5998
|
groupChildren.push({
|
5853
5999
|
id: `${index}-secondary`,
|
5854
6000
|
alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
|
@@ -5856,54 +6002,37 @@
|
|
5856
6002
|
});
|
5857
6003
|
}
|
5858
6004
|
return {
|
5859
|
-
id,
|
5860
|
-
alias:
|
6005
|
+
id: groupId,
|
6006
|
+
alias: groupId,
|
5861
6007
|
children: groupChildren
|
5862
6008
|
};
|
5863
6009
|
});
|
5864
6010
|
if (1 === dualMeasures.length) return measureTree[0].children || [];
|
5865
6011
|
return measureTree;
|
5866
6012
|
};
|
5867
|
-
const
|
5868
|
-
const
|
5869
|
-
|
5870
|
-
|
5871
|
-
|
5872
|
-
|
5873
|
-
|
5874
|
-
|
5875
|
-
|
5876
|
-
const
|
5877
|
-
|
6013
|
+
const buildMeasuresForDualAxis_generateMeasuresByParentId = (measures)=>{
|
6014
|
+
const dualMeasures = [];
|
6015
|
+
measures.forEach((item)=>{
|
6016
|
+
if (!item.parentId) return;
|
6017
|
+
if (!dualMeasures.find((d)=>d.id === item.parentId)) dualMeasures.push({
|
6018
|
+
id: item.parentId,
|
6019
|
+
primaryMeasures: [],
|
6020
|
+
secondaryMeasures: []
|
6021
|
+
});
|
6022
|
+
const dualChart = dualMeasures.find((d)=>d.id === item.parentId);
|
6023
|
+
if (!dualChart || !Array.isArray(dualChart.primaryMeasures) || !Array.isArray(dualChart.secondaryMeasures)) return;
|
6024
|
+
const encoding = Array.isArray(item.encoding) ? item.encoding : [
|
6025
|
+
item.encoding
|
5878
6026
|
];
|
5879
|
-
const
|
5880
|
-
const
|
5881
|
-
|
5882
|
-
|
5883
|
-
|
5884
|
-
|
5885
|
-
|
5886
|
-
|
5887
|
-
|
5888
|
-
x,
|
5889
|
-
color,
|
5890
|
-
detail: mergedDetail
|
5891
|
-
}
|
5892
|
-
};
|
5893
|
-
}
|
5894
|
-
const mergedEncoding = {
|
5895
|
-
x: dimensions.slice(0, 1).map((item)=>item.id),
|
5896
|
-
color: dimensions.slice(1).map((item)=>item.id),
|
5897
|
-
detail: dimensions.slice(1).map((item)=>item.id),
|
5898
|
-
tooltip: dimensions.map((item)=>item.id),
|
5899
|
-
label: [],
|
5900
|
-
row: [],
|
5901
|
-
column: []
|
5902
|
-
};
|
5903
|
-
return {
|
5904
|
-
...advancedVSeed,
|
5905
|
-
encoding: mergedEncoding
|
5906
|
-
};
|
6027
|
+
const isPrimary = encoding.includes('primaryYAxis');
|
6028
|
+
const isSecondary = encoding.includes('secondaryYAxis');
|
6029
|
+
const isEmpty = !item.encoding;
|
6030
|
+
if (isPrimary) dualChart.primaryMeasures.push(item);
|
6031
|
+
else if (isSecondary) dualChart.secondaryMeasures.push(item);
|
6032
|
+
else if (isEmpty) if (0 === dualChart.primaryMeasures.length) dualChart.primaryMeasures.push(item);
|
6033
|
+
else dualChart.secondaryMeasures.push(item);
|
6034
|
+
});
|
6035
|
+
return dualMeasuresToMeasureTree(dualMeasures);
|
5907
6036
|
};
|
5908
6037
|
const reshapeWithDualEncoding = (advancedVSeed, context)=>{
|
5909
6038
|
const result = {
|
@@ -5922,7 +6051,8 @@
|
|
5922
6051
|
const secondaryMeasures = measures[1] || [];
|
5923
6052
|
if (primaryMeasures && primaryMeasures.children) {
|
5924
6053
|
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
|
5925
|
-
foldMeasureValue: FoldPrimaryMeasureValue
|
6054
|
+
foldMeasureValue: FoldPrimaryMeasureValue,
|
6055
|
+
colorMeasureId: getColorMeasureId(advancedVSeed)
|
5926
6056
|
});
|
5927
6057
|
datasets.push(newDataset);
|
5928
6058
|
foldInfoList.push(foldInfo);
|
@@ -5930,7 +6060,8 @@
|
|
5930
6060
|
}
|
5931
6061
|
if (secondaryMeasures && secondaryMeasures.children) {
|
5932
6062
|
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding, {
|
5933
|
-
foldMeasureValue: FoldSecondaryMeasureValue
|
6063
|
+
foldMeasureValue: FoldSecondaryMeasureValue,
|
6064
|
+
colorMeasureId: getColorMeasureId(advancedVSeed)
|
5934
6065
|
});
|
5935
6066
|
datasets.push(newDataset);
|
5936
6067
|
foldInfoList.push(foldInfo);
|
@@ -5984,7 +6115,8 @@
|
|
5984
6115
|
const secondaryMeasures = measures[1] || [];
|
5985
6116
|
if (primaryMeasures && primaryMeasures.children) {
|
5986
6117
|
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
|
5987
|
-
foldMeasureValue: `${FoldPrimaryMeasureValue}${index}
|
6118
|
+
foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,
|
6119
|
+
colorMeasureId: getColorMeasureId(advancedVSeed)
|
5988
6120
|
});
|
5989
6121
|
datasets.push(newDataset);
|
5990
6122
|
foldInfoList.push(foldInfo);
|
@@ -5992,7 +6124,8 @@
|
|
5992
6124
|
}
|
5993
6125
|
if (secondaryMeasures && secondaryMeasures.children) {
|
5994
6126
|
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding, {
|
5995
|
-
foldMeasureValue: `${FoldSecondaryMeasureValue}${index}
|
6127
|
+
foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`,
|
6128
|
+
colorMeasureId: getColorMeasureId(advancedVSeed)
|
5996
6129
|
});
|
5997
6130
|
datasets.push(newDataset);
|
5998
6131
|
foldInfoList.push(foldInfo);
|
@@ -6050,9 +6183,9 @@
|
|
6050
6183
|
};
|
6051
6184
|
const dualAxisAdvancedPipeline = [
|
6052
6185
|
initAdvancedVSeed_initAdvancedVSeed,
|
6053
|
-
autoDualMeasures,
|
6054
|
-
autoDimensions_autoDimensions,
|
6055
6186
|
encodingForDualAxis,
|
6187
|
+
buildMeasuresForDualAxis,
|
6188
|
+
autoDimensions_autoDimensions,
|
6056
6189
|
pivotAdapter([
|
6057
6190
|
reshapeWithDualEncoding
|
6058
6191
|
], [
|
@@ -6137,7 +6270,7 @@
|
|
6137
6270
|
result.direction = 'vertical';
|
6138
6271
|
result.xField = unfoldInfo.encodingX;
|
6139
6272
|
if (foldInfoList?.[1]) result.yField = foldInfoList[1].measureValue;
|
6140
|
-
result.seriesField = unfoldInfo.encodingColorId;
|
6273
|
+
result.seriesField = isLinearColor(advancedVSeed) ? unfoldInfo.encodingDetail : unfoldInfo.encodingColorId;
|
6141
6274
|
result.animation = true;
|
6142
6275
|
return result;
|
6143
6276
|
};
|
@@ -6763,6 +6896,37 @@
|
|
6763
6896
|
];
|
6764
6897
|
return result;
|
6765
6898
|
};
|
6899
|
+
const linearColorForDualAxis = (spec, context)=>{
|
6900
|
+
const result = {
|
6901
|
+
...spec
|
6902
|
+
};
|
6903
|
+
const { advancedVSeed } = context;
|
6904
|
+
const { datasetReshapeInfo, chartType } = advancedVSeed;
|
6905
|
+
const { unfoldInfo, id } = datasetReshapeInfo[0];
|
6906
|
+
const baseConfig = advancedVSeed.config[chartType];
|
6907
|
+
if (!baseConfig || !baseConfig.color) return result;
|
6908
|
+
const { color } = baseConfig;
|
6909
|
+
const { colorScheme, linearColorScheme } = color;
|
6910
|
+
result.color = {
|
6911
|
+
type: 'linear',
|
6912
|
+
range: linearColorScheme || colorScheme || [],
|
6913
|
+
domain: [
|
6914
|
+
{
|
6915
|
+
dataId: `${id}-primary-dataset`,
|
6916
|
+
fields: [
|
6917
|
+
unfoldInfo.encodingColor
|
6918
|
+
]
|
6919
|
+
},
|
6920
|
+
{
|
6921
|
+
dataId: `${id}-secondary-dataset`,
|
6922
|
+
fields: [
|
6923
|
+
unfoldInfo.encodingColor
|
6924
|
+
]
|
6925
|
+
}
|
6926
|
+
]
|
6927
|
+
};
|
6928
|
+
return result;
|
6929
|
+
};
|
6766
6930
|
const dualAxis = [
|
6767
6931
|
seriesDualAxis([
|
6768
6932
|
initDualAxisPrimary,
|
@@ -6771,11 +6935,11 @@
|
|
6771
6935
|
labelPrimary,
|
6772
6936
|
tooltipPrimary,
|
6773
6937
|
progressive,
|
6774
|
-
barStyle_barStyle,
|
6775
|
-
pointStyle_pointStyle,
|
6938
|
+
colorBarStyleFill(barStyle_barStyle),
|
6939
|
+
colorPointStyleFill(pointStyle_pointStyle),
|
6776
6940
|
pointStateDimensionHover,
|
6777
|
-
lineStyle_lineStyle,
|
6778
|
-
areaStyle_areaStyle
|
6941
|
+
colorLineStyleFill(lineStyle_lineStyle),
|
6942
|
+
colorAreaStyleFill(areaStyle_areaStyle)
|
6779
6943
|
], [
|
6780
6944
|
initDualAxisSecondary,
|
6781
6945
|
dualChartTypeSecondary,
|
@@ -6783,18 +6947,18 @@
|
|
6783
6947
|
labelSecondary,
|
6784
6948
|
tooltipSecondary,
|
6785
6949
|
progressive,
|
6786
|
-
barStyle_barStyle,
|
6787
|
-
pointStyle_pointStyle,
|
6950
|
+
colorBarStyleFill(barStyle_barStyle),
|
6951
|
+
colorPointStyleFill(pointStyle_pointStyle),
|
6788
6952
|
pointStateDimensionHover,
|
6789
|
-
lineStyle_lineStyle,
|
6790
|
-
areaStyle_areaStyle
|
6953
|
+
colorLineStyleFill(lineStyle_lineStyle),
|
6954
|
+
colorAreaStyleFill(areaStyle_areaStyle)
|
6791
6955
|
]),
|
6792
6956
|
xBand,
|
6793
6957
|
yLinearPrimary,
|
6794
6958
|
yLinearSecondary,
|
6795
|
-
color_color,
|
6959
|
+
colorAdapter(color_color, linearColorForDualAxis),
|
6960
|
+
colorAdapter(discreteLegend, colorLegend),
|
6796
6961
|
background_backgroundColor,
|
6797
|
-
discreteLegend,
|
6798
6962
|
verticalCrosshairRect,
|
6799
6963
|
annotationPoint_annotationPoint,
|
6800
6964
|
annotationVerticalLine_annotationVerticalLine,
|
@@ -6814,11 +6978,11 @@
|
|
6814
6978
|
labelPrimary,
|
6815
6979
|
tooltipPrimary,
|
6816
6980
|
progressive,
|
6817
|
-
barStyle_barStyle,
|
6818
|
-
pointStyle_pointStyle,
|
6981
|
+
colorBarStyleFill(barStyle_barStyle),
|
6982
|
+
colorPointStyleFill(pointStyle_pointStyle),
|
6819
6983
|
pointStateDimensionHover,
|
6820
|
-
lineStyle_lineStyle,
|
6821
|
-
areaStyle_areaStyle
|
6984
|
+
colorLineStyleFill(lineStyle_lineStyle),
|
6985
|
+
colorAreaStyleFill(areaStyle_areaStyle)
|
6822
6986
|
], [
|
6823
6987
|
initDualAxisSecondary,
|
6824
6988
|
dualChartTypeSecondary,
|
@@ -6826,16 +6990,16 @@
|
|
6826
6990
|
labelSecondary,
|
6827
6991
|
tooltipSecondary,
|
6828
6992
|
progressive,
|
6829
|
-
barStyle_barStyle,
|
6830
|
-
pointStyle_pointStyle,
|
6993
|
+
colorBarStyleFill(barStyle_barStyle),
|
6994
|
+
colorPointStyleFill(pointStyle_pointStyle),
|
6831
6995
|
pointStateDimensionHover,
|
6832
|
-
lineStyle_lineStyle,
|
6833
|
-
areaStyle_areaStyle
|
6996
|
+
colorLineStyleFill(lineStyle_lineStyle),
|
6997
|
+
colorAreaStyleFill(areaStyle_areaStyle)
|
6834
6998
|
]),
|
6835
6999
|
xBand,
|
6836
7000
|
yLinearPrimary,
|
6837
7001
|
yLinearSecondary,
|
6838
|
-
color_color,
|
7002
|
+
colorAdapter(color_color, linearColor),
|
6839
7003
|
background_backgroundColor,
|
6840
7004
|
verticalCrosshairRect,
|
6841
7005
|
annotationPoint_annotationPoint,
|
@@ -6845,7 +7009,7 @@
|
|
6845
7009
|
]),
|
6846
7010
|
pivotRowDimensions,
|
6847
7011
|
pivotColumnDimensions,
|
6848
|
-
pivotDiscreteLegend
|
7012
|
+
colorAdapter(pivotDiscreteLegend, pivotColorLegend)
|
6849
7013
|
];
|
6850
7014
|
const dualAxisSpecPipeline = [
|
6851
7015
|
pivotAdapter_pivotAdapter(dualAxis, pivotDualAxis)
|
@@ -6856,33 +7020,51 @@
|
|
6856
7020
|
};
|
6857
7021
|
const encodingForPie = (advancedVSeed, context)=>{
|
6858
7022
|
const { vseed } = context;
|
6859
|
-
const {
|
6860
|
-
|
6861
|
-
const
|
6862
|
-
|
6863
|
-
|
6864
|
-
|
6865
|
-
|
6866
|
-
|
6867
|
-
|
6868
|
-
|
6869
|
-
color: dimensions.slice(0).map((item)=>item.id),
|
6870
|
-
detail: dimensions.slice(0).map((item)=>item.id),
|
6871
|
-
tooltip: dimensions.map((item)=>item.id),
|
6872
|
-
label: [],
|
6873
|
-
row: [],
|
6874
|
-
column: []
|
6875
|
-
};
|
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) pie_generateDimensionEncoding(dimensions, encoding);
|
7030
|
+
else pie_generateDefaultDimensionEncoding(dimensions, encoding);
|
7031
|
+
if (hasMeasureEncoding) pie_generateMeasureEncoding(measures, encoding);
|
7032
|
+
else pie_generateDefaultMeasureEncoding(measures, encoding);
|
6876
7033
|
return {
|
6877
7034
|
...advancedVSeed,
|
6878
|
-
encoding
|
6879
|
-
};
|
7035
|
+
encoding
|
7036
|
+
};
|
7037
|
+
};
|
7038
|
+
const pie_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
7039
|
+
encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
|
7040
|
+
encoding.angle = chunk_QJLMYOTX_i(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
|
7041
|
+
};
|
7042
|
+
const pie_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
7043
|
+
const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
|
7044
|
+
encoding.color = uniqueDimIds.slice(0);
|
7045
|
+
encoding.detail = uniqueDimIds.slice(0);
|
7046
|
+
encoding.tooltip = uniqueDimIds;
|
7047
|
+
encoding.label = [];
|
7048
|
+
encoding.row = [];
|
7049
|
+
encoding.column = [];
|
7050
|
+
};
|
7051
|
+
const pie_generateMeasureEncoding = (measures, encoding)=>{
|
7052
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
7053
|
+
encoding.angle = chunk_QJLMYOTX_i(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
|
7054
|
+
const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7055
|
+
if (color.length > 0) encoding.color = color;
|
7056
|
+
};
|
7057
|
+
const pie_generateDimensionEncoding = (dimensions, encoding)=>{
|
7058
|
+
encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7059
|
+
encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
7060
|
+
if (0 === encoding.color.length) encoding.color = dimensions.map((item)=>item.id);
|
7061
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
|
6880
7062
|
};
|
6881
7063
|
const pieAdvancedPipeline = [
|
6882
7064
|
initAdvancedVSeed_initAdvancedVSeed,
|
6883
|
-
autoMeasures_autoMeasures,
|
6884
|
-
autoDimensions_autoDimensions,
|
6885
7065
|
encodingForPie,
|
7066
|
+
buildMeasures,
|
7067
|
+
autoDimensions_autoDimensions,
|
6886
7068
|
pivotAdapter([
|
6887
7069
|
reshapeWithEncoding
|
6888
7070
|
], [
|
@@ -6971,7 +7153,7 @@
|
|
6971
7153
|
};
|
6972
7154
|
const donutAdvancedPipeline = [
|
6973
7155
|
initAdvancedVSeed_initAdvancedVSeed,
|
6974
|
-
|
7156
|
+
buildMeasures,
|
6975
7157
|
autoDimensions_autoDimensions,
|
6976
7158
|
encodingForPie,
|
6977
7159
|
pivotAdapter([
|
@@ -7061,51 +7243,57 @@
|
|
7061
7243
|
};
|
7062
7244
|
const encodingForRose = (advancedVSeed, context)=>{
|
7063
7245
|
const { vseed } = context;
|
7064
|
-
const {
|
7065
|
-
|
7066
|
-
const
|
7067
|
-
|
7068
|
-
|
7069
|
-
|
7070
|
-
|
7071
|
-
|
7072
|
-
|
7073
|
-
|
7074
|
-
const detail = encoding.detail || [];
|
7075
|
-
const mergedDetail = 0 === detail.length ? chunk_QJLMYOTX_i([
|
7076
|
-
...color,
|
7077
|
-
...detail
|
7078
|
-
]) : detail;
|
7079
|
-
return {
|
7080
|
-
...advancedVSeed,
|
7081
|
-
encoding: {
|
7082
|
-
...encoding,
|
7083
|
-
angle,
|
7084
|
-
color,
|
7085
|
-
detail: mergedDetail
|
7086
|
-
}
|
7087
|
-
};
|
7088
|
-
}
|
7089
|
-
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
7090
|
-
const mergedEncoding = {
|
7091
|
-
angle: dimensions.slice(0, 1).map((item)=>item.id),
|
7092
|
-
color: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
7093
|
-
detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
7094
|
-
tooltip: dimensions.map((item)=>item.id),
|
7095
|
-
label: [],
|
7096
|
-
row: [],
|
7097
|
-
column: []
|
7098
|
-
};
|
7246
|
+
const { measures: vseedMeasures = [] } = vseed;
|
7247
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7248
|
+
const dimensions = getBasicDimensions(vseed);
|
7249
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7250
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7251
|
+
const encoding = {};
|
7252
|
+
if (hasDimensionEncoding) rose_generateDimensionEncoding(dimensions, encoding);
|
7253
|
+
else rose_generateDefaultDimensionEncoding(dimensions, encoding);
|
7254
|
+
if (hasMeasureEncoding) rose_generateMeasureEncoding(measures, encoding);
|
7255
|
+
else rose_generateDefaultMeasureEncoding(measures, encoding);
|
7099
7256
|
return {
|
7100
7257
|
...advancedVSeed,
|
7101
|
-
encoding
|
7258
|
+
encoding
|
7102
7259
|
};
|
7103
7260
|
};
|
7261
|
+
const rose_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
7262
|
+
encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
|
7263
|
+
encoding.radius = chunk_QJLMYOTX_i(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
7264
|
+
};
|
7265
|
+
const rose_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
7266
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
7267
|
+
const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
|
7268
|
+
encoding.angle = uniqueDimIds.slice(0, 1);
|
7269
|
+
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
7270
|
+
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
7271
|
+
encoding.tooltip = uniqueDimIds;
|
7272
|
+
encoding.label = [];
|
7273
|
+
encoding.row = [];
|
7274
|
+
encoding.column = [];
|
7275
|
+
};
|
7276
|
+
const rose_generateMeasureEncoding = (measures, encoding)=>{
|
7277
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
7278
|
+
encoding.radius = chunk_QJLMYOTX_i(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
7279
|
+
const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7280
|
+
if (color.length > 0) encoding.color = color;
|
7281
|
+
};
|
7282
|
+
const rose_generateDimensionEncoding = (dimensions, encoding)=>{
|
7283
|
+
encoding.angle = chunk_QJLMYOTX_i(dimensions.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
|
7284
|
+
encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7285
|
+
encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
7286
|
+
if (0 === encoding.angle.length) encoding.angle = [
|
7287
|
+
dimensions[0].id
|
7288
|
+
];
|
7289
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
|
7290
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
|
7291
|
+
};
|
7104
7292
|
const roseAdvancedPipeline = [
|
7105
7293
|
initAdvancedVSeed_initAdvancedVSeed,
|
7106
|
-
autoMeasures_autoMeasures,
|
7107
|
-
autoDimensions_autoDimensions,
|
7108
7294
|
encodingForRose,
|
7295
|
+
buildMeasures,
|
7296
|
+
autoDimensions_autoDimensions,
|
7109
7297
|
pivotAdapter([
|
7110
7298
|
reshapeWithEncoding
|
7111
7299
|
], [
|
@@ -7272,9 +7460,9 @@
|
|
7272
7460
|
};
|
7273
7461
|
const roseParallelAdvancedPipeline = [
|
7274
7462
|
initAdvancedVSeed_initAdvancedVSeed,
|
7275
|
-
autoMeasures_autoMeasures,
|
7276
|
-
autoDimensions_autoDimensions,
|
7277
7463
|
encodingForRose,
|
7464
|
+
buildMeasures,
|
7465
|
+
autoDimensions_autoDimensions,
|
7278
7466
|
pivotAdapter([
|
7279
7467
|
reshapeWithEncoding
|
7280
7468
|
], [
|
@@ -7380,50 +7568,57 @@
|
|
7380
7568
|
};
|
7381
7569
|
const encodingForRadar = (advancedVSeed, context)=>{
|
7382
7570
|
const { vseed } = context;
|
7383
|
-
const {
|
7384
|
-
|
7385
|
-
const
|
7386
|
-
|
7387
|
-
|
7388
|
-
|
7389
|
-
|
7390
|
-
|
7391
|
-
|
7392
|
-
|
7393
|
-
const detail = encoding.detail || [];
|
7394
|
-
const mergedDetail = 0 === detail.length ? chunk_QJLMYOTX_i([
|
7395
|
-
...color,
|
7396
|
-
...detail
|
7397
|
-
]) : detail;
|
7398
|
-
return {
|
7399
|
-
...advancedVSeed,
|
7400
|
-
encoding: {
|
7401
|
-
...encoding,
|
7402
|
-
angle,
|
7403
|
-
color,
|
7404
|
-
detail: mergedDetail
|
7405
|
-
}
|
7406
|
-
};
|
7407
|
-
}
|
7408
|
-
const mergedEncoding = {
|
7409
|
-
angle: dimensions.slice(0, 1).map((item)=>item.id),
|
7410
|
-
color: dimensions.slice(1).map((item)=>item.id),
|
7411
|
-
detail: dimensions.slice(1).map((item)=>item.id),
|
7412
|
-
tooltip: dimensions.map((item)=>item.id),
|
7413
|
-
label: [],
|
7414
|
-
row: [],
|
7415
|
-
column: []
|
7416
|
-
};
|
7571
|
+
const { measures: vseedMeasures = [] } = vseed;
|
7572
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7573
|
+
const dimensions = getBasicDimensions(vseed);
|
7574
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7575
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7576
|
+
const encoding = {};
|
7577
|
+
if (hasDimensionEncoding) radar_generateDimensionEncoding(dimensions, encoding);
|
7578
|
+
else radar_generateDefaultDimensionEncoding(dimensions, encoding);
|
7579
|
+
if (hasMeasureEncoding) radar_generateMeasureEncoding(measures, encoding);
|
7580
|
+
else radar_generateDefaultMeasureEncoding(measures, encoding);
|
7417
7581
|
return {
|
7418
7582
|
...advancedVSeed,
|
7419
|
-
encoding
|
7583
|
+
encoding
|
7420
7584
|
};
|
7421
7585
|
};
|
7586
|
+
const radar_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
7587
|
+
encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
|
7588
|
+
encoding.radius = chunk_QJLMYOTX_i(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
7589
|
+
};
|
7590
|
+
const radar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
7591
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
7592
|
+
const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
|
7593
|
+
encoding.angle = uniqueDimIds.slice(0, 1);
|
7594
|
+
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
7595
|
+
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
7596
|
+
encoding.tooltip = uniqueDimIds;
|
7597
|
+
encoding.label = [];
|
7598
|
+
encoding.row = [];
|
7599
|
+
encoding.column = [];
|
7600
|
+
};
|
7601
|
+
const radar_generateMeasureEncoding = (measures, encoding)=>{
|
7602
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
7603
|
+
encoding.radius = chunk_QJLMYOTX_i(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
7604
|
+
const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7605
|
+
if (color.length > 0) encoding.color = color;
|
7606
|
+
};
|
7607
|
+
const radar_generateDimensionEncoding = (dimensions, encoding)=>{
|
7608
|
+
encoding.angle = chunk_QJLMYOTX_i(dimensions.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
|
7609
|
+
encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7610
|
+
encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
7611
|
+
if (0 === encoding.angle.length) encoding.angle = [
|
7612
|
+
dimensions[0].id
|
7613
|
+
];
|
7614
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
|
7615
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
|
7616
|
+
};
|
7422
7617
|
const radarAdvancedPipeline = [
|
7423
7618
|
initAdvancedVSeed_initAdvancedVSeed,
|
7424
|
-
autoMeasures_autoMeasures,
|
7425
|
-
autoDimensions_autoDimensions,
|
7426
7619
|
encodingForRadar,
|
7620
|
+
buildMeasures,
|
7621
|
+
autoDimensions_autoDimensions,
|
7427
7622
|
pivotAdapter([
|
7428
7623
|
reshapeWithEncoding
|
7429
7624
|
], [
|
@@ -7559,33 +7754,51 @@
|
|
7559
7754
|
};
|
7560
7755
|
const encodingForFunnel = (advancedVSeed, context)=>{
|
7561
7756
|
const { vseed } = context;
|
7562
|
-
const {
|
7563
|
-
|
7564
|
-
const
|
7565
|
-
|
7566
|
-
|
7567
|
-
|
7568
|
-
|
7569
|
-
|
7570
|
-
|
7571
|
-
|
7572
|
-
color: dimensions.slice(0).map((item)=>item.id),
|
7573
|
-
detail: dimensions.slice(0).map((item)=>item.id),
|
7574
|
-
tooltip: dimensions.map((item)=>item.id),
|
7575
|
-
label: [],
|
7576
|
-
row: [],
|
7577
|
-
column: []
|
7578
|
-
};
|
7757
|
+
const { measures: vseedMeasures = [] } = vseed;
|
7758
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7759
|
+
const dimensions = getBasicDimensions(vseed);
|
7760
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7761
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7762
|
+
const encoding = {};
|
7763
|
+
if (hasDimensionEncoding) funnel_generateDimensionEncoding(dimensions, encoding);
|
7764
|
+
else funnel_generateDefaultDimensionEncoding(dimensions, encoding);
|
7765
|
+
if (hasMeasureEncoding) funnel_generateMeasureEncoding(measures, encoding);
|
7766
|
+
else funnel_generateDefaultMeasureEncoding(measures, encoding);
|
7579
7767
|
return {
|
7580
7768
|
...advancedVSeed,
|
7581
|
-
encoding
|
7582
|
-
};
|
7769
|
+
encoding
|
7770
|
+
};
|
7771
|
+
};
|
7772
|
+
const funnel_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
7773
|
+
encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
|
7774
|
+
encoding.size = chunk_QJLMYOTX_i(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
|
7775
|
+
};
|
7776
|
+
const funnel_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
7777
|
+
const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
|
7778
|
+
encoding.color = uniqueDimIds.slice(0);
|
7779
|
+
encoding.detail = uniqueDimIds.slice(0);
|
7780
|
+
encoding.tooltip = uniqueDimIds;
|
7781
|
+
encoding.label = [];
|
7782
|
+
encoding.row = [];
|
7783
|
+
encoding.column = [];
|
7784
|
+
};
|
7785
|
+
const funnel_generateMeasureEncoding = (measures, encoding)=>{
|
7786
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
7787
|
+
encoding.size = chunk_QJLMYOTX_i(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
|
7788
|
+
const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7789
|
+
if (color.length > 0) encoding.color = color;
|
7790
|
+
};
|
7791
|
+
const funnel_generateDimensionEncoding = (dimensions, encoding)=>{
|
7792
|
+
encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7793
|
+
encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
7794
|
+
if (0 === encoding.color.length) encoding.color = dimensions.map((item)=>item.id);
|
7795
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
|
7583
7796
|
};
|
7584
7797
|
const funnelAdvancedPipeline = [
|
7585
7798
|
initAdvancedVSeed_initAdvancedVSeed,
|
7586
|
-
autoMeasures_autoMeasures,
|
7587
|
-
autoDimensions_autoDimensions,
|
7588
7799
|
encodingForFunnel,
|
7800
|
+
buildMeasures,
|
7801
|
+
autoDimensions_autoDimensions,
|
7589
7802
|
pivotAdapter([
|
7590
7803
|
reshapeWithEncoding
|
7591
7804
|
], [
|
@@ -7678,45 +7891,61 @@
|
|
7678
7891
|
};
|
7679
7892
|
const encodingForHeatmap = (advancedVSeed, context)=>{
|
7680
7893
|
const { vseed } = context;
|
7681
|
-
const {
|
7682
|
-
|
7683
|
-
const
|
7684
|
-
|
7685
|
-
|
7686
|
-
|
7687
|
-
|
7688
|
-
|
7689
|
-
|
7690
|
-
|
7691
|
-
return {
|
7692
|
-
...advancedVSeed,
|
7693
|
-
encoding: {
|
7694
|
-
x,
|
7695
|
-
y,
|
7696
|
-
...encoding
|
7697
|
-
}
|
7698
|
-
};
|
7699
|
-
}
|
7700
|
-
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
7701
|
-
const mergedEncoding = {
|
7702
|
-
x: dimensions.slice(0, 1).map((item)=>item.id),
|
7703
|
-
y: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
7704
|
-
color: dimensions.slice(0).map((item)=>item.id),
|
7705
|
-
tooltip: dimensions.map((item)=>item.id),
|
7706
|
-
label: [],
|
7707
|
-
row: [],
|
7708
|
-
column: []
|
7709
|
-
};
|
7894
|
+
const { measures: vseedMeasures = [] } = vseed;
|
7895
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7896
|
+
const dimensions = getBasicDimensions(vseed);
|
7897
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7898
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7899
|
+
const encoding = {};
|
7900
|
+
if (hasDimensionEncoding) heatmap_generateDimensionEncoding(dimensions, encoding);
|
7901
|
+
else heatmap_generateDefaultDimensionEncoding(dimensions, encoding);
|
7902
|
+
if (hasMeasureEncoding) heatmap_generateMeasureEncoding(measures, encoding);
|
7903
|
+
else heatmap_generateDefaultMeasureEncoding(measures, encoding);
|
7710
7904
|
return {
|
7711
7905
|
...advancedVSeed,
|
7712
|
-
encoding
|
7906
|
+
encoding
|
7713
7907
|
};
|
7714
7908
|
};
|
7909
|
+
const heatmap_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
7910
|
+
encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
|
7911
|
+
encoding.color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding || !item.encoding).map((item)=>item.id));
|
7912
|
+
};
|
7913
|
+
const heatmap_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
7914
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
7915
|
+
const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
|
7916
|
+
encoding.x = uniqueDimIds.slice(0, 1);
|
7917
|
+
encoding.y = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
7918
|
+
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
7919
|
+
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
7920
|
+
encoding.tooltip = uniqueDimIds;
|
7921
|
+
encoding.label = [];
|
7922
|
+
encoding.row = [];
|
7923
|
+
encoding.column = [];
|
7924
|
+
};
|
7925
|
+
const heatmap_generateMeasureEncoding = (measures, encoding)=>{
|
7926
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
7927
|
+
const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7928
|
+
if (color.length > 0) encoding.color = color;
|
7929
|
+
return encoding;
|
7930
|
+
};
|
7931
|
+
const heatmap_generateDimensionEncoding = (dimensions, encoding)=>{
|
7932
|
+
encoding.x = chunk_QJLMYOTX_i(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
|
7933
|
+
encoding.y = chunk_QJLMYOTX_i(dimensions.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
|
7934
|
+
encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7935
|
+
encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
7936
|
+
if (0 === encoding.x.length) encoding.x = [
|
7937
|
+
dimensions[0].id
|
7938
|
+
];
|
7939
|
+
if (0 === encoding.y.length) if (dimensions.length > 1) encoding.y = dimensions.slice(1).map((item)=>item.id);
|
7940
|
+
else encoding.y = dimensions.slice(0).map((item)=>item.id);
|
7941
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
7942
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
7943
|
+
};
|
7715
7944
|
const heatmapAdvancedPipeline = [
|
7716
7945
|
initAdvancedVSeed_initAdvancedVSeed,
|
7717
|
-
autoMeasures_autoMeasures,
|
7718
|
-
autoDimensions_autoDimensions,
|
7719
7946
|
encodingForHeatmap,
|
7947
|
+
buildMeasures,
|
7948
|
+
autoDimensions_autoDimensions,
|
7720
7949
|
pivotAdapter([
|
7721
7950
|
reshapeWithEncoding
|
7722
7951
|
], [
|
@@ -11819,7 +12048,18 @@
|
|
11819
12048
|
'dimension',
|
11820
12049
|
'rowDimension',
|
11821
12050
|
'columnDimension'
|
11822
|
-
]).default('dimension')
|
12051
|
+
]).default('dimension'),
|
12052
|
+
encoding: schemas_enum([
|
12053
|
+
'xAxis',
|
12054
|
+
'yAxis',
|
12055
|
+
'angle',
|
12056
|
+
'color',
|
12057
|
+
'detail',
|
12058
|
+
'tooltip',
|
12059
|
+
'label',
|
12060
|
+
'row',
|
12061
|
+
'column'
|
12062
|
+
]).optional()
|
11823
12063
|
});
|
11824
12064
|
const zDimensionGroup = schemas_object({
|
11825
12065
|
id: schemas_string(),
|
@@ -11864,7 +12104,20 @@
|
|
11864
12104
|
id: schemas_string(),
|
11865
12105
|
alias: schemas_string().optional(),
|
11866
12106
|
autoFormat: schemas_boolean().default(true),
|
11867
|
-
format: zNumFormat["default"]({})
|
12107
|
+
format: zNumFormat["default"]({}),
|
12108
|
+
encoding: schemas_enum([
|
12109
|
+
'primaryYAxis',
|
12110
|
+
'secondaryYAxis',
|
12111
|
+
'xAxis',
|
12112
|
+
'yAxis',
|
12113
|
+
'angle',
|
12114
|
+
'radius',
|
12115
|
+
'size',
|
12116
|
+
'color',
|
12117
|
+
'label',
|
12118
|
+
'tooltip'
|
12119
|
+
]).optional(),
|
12120
|
+
parentId: schemas_string().optional()
|
11868
12121
|
});
|
11869
12122
|
const zMeasureGroup = schemas_object({
|
11870
12123
|
id: schemas_string(),
|
@@ -11926,7 +12179,6 @@
|
|
11926
12179
|
column: schemas_array(schemas_string()).nullish(),
|
11927
12180
|
group: schemas_array(schemas_string()).nullish().describe("\u5DF2\u5F03\u7528, \u8BF7\u4F7F\u7528\u989C\u8272\u66FF\u4EE3")
|
11928
12181
|
});
|
11929
|
-
const zEncodings = schemas_array(zEncoding);
|
11930
12182
|
const zXBandAxis = schemas_object({
|
11931
12183
|
visible: schemas_boolean().default(true).nullish(),
|
11932
12184
|
labelAutoHide: schemas_boolean().default(true).nullish(),
|
@@ -13069,7 +13321,6 @@
|
|
13069
13321
|
dimensions: zDimensionTree,
|
13070
13322
|
measures: zMeasureTree,
|
13071
13323
|
encoding: zEncoding,
|
13072
|
-
encodings: zEncodings,
|
13073
13324
|
config: zConfig,
|
13074
13325
|
analysis: zAnalysis,
|
13075
13326
|
theme: zTheme,
|