@visactor/vseed 0.1.6 → 0.1.8
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 +0 -2
- package/dist/dataReshape/constant.d.ts +2 -0
- package/dist/index.cjs +1053 -587
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1050 -589
- package/dist/index.js.map +1 -1
- package/dist/pipeline/advanced/chart/pipes/encoding/bar.d.ts +1 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/column.d.ts +1 -19
- package/dist/pipeline/advanced/chart/pipes/encoding/dualAxis.d.ts +1 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/encodingAdapter.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/funnel.d.ts +1 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/heatmap.d.ts +1 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/index.d.ts +11 -9
- package/dist/pipeline/advanced/chart/pipes/encoding/line.d.ts +1 -17
- package/dist/pipeline/advanced/chart/pipes/encoding/pie.d.ts +1 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/radar.d.ts +1 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/rose.d.ts +1 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/scatter.d.ts +1 -0
- package/dist/pipeline/advanced/chart/pipes/measures/utils.d.ts +7 -1
- package/dist/pipeline/advanced/table/pipes/{init/autoDimensions.d.ts → default/defaultDimensions.d.ts} +1 -1
- package/dist/pipeline/advanced/table/pipes/{init/autoMeasures.d.ts → default/defaultMeasureName.d.ts} +1 -1
- package/dist/pipeline/advanced/table/pipes/default/defaultMeasures.d.ts +5 -0
- package/dist/pipeline/advanced/table/pipes/default/index.d.ts +3 -0
- package/dist/pipeline/advanced/table/pipes/encoding/index.d.ts +1 -0
- package/dist/pipeline/advanced/table/pipes/{init/autoPivotMeasures.d.ts → encoding/pivotTable.d.ts} +1 -1
- package/dist/pipeline/advanced/table/pipes/index.d.ts +3 -0
- package/dist/pipeline/advanced/table/pipes/init/index.d.ts +0 -3
- package/dist/pipeline/spec/chart/pipes/tooltip/index.d.ts +2 -0
- package/dist/pipeline/spec/chart/pipes/tooltip/tooltip.d.ts +21 -1
- package/dist/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.d.ts +15 -0
- package/dist/pipeline/spec/chart/pipes/tooltip/tooltipScatter.d.ts +15 -0
- package/dist/types/advancedVSeed.d.ts +0 -5
- package/dist/types/chartType/area/area.d.ts +8 -29
- package/dist/types/chartType/area/zArea.d.ts +0 -5
- package/dist/types/chartType/areaPercent/areaPercent.d.ts +8 -30
- package/dist/types/chartType/areaPercent/zAreaPercent.d.ts +0 -5
- package/dist/types/chartType/bar/bar.d.ts +9 -14
- package/dist/types/chartType/bar/zBar.d.ts +0 -5
- package/dist/types/chartType/barParallel/barParallel.d.ts +9 -14
- package/dist/types/chartType/barParallel/zBarParallel.d.ts +0 -5
- package/dist/types/chartType/barPercent/barPercent.d.ts +9 -14
- package/dist/types/chartType/barPercent/zBarPercent.d.ts +0 -5
- package/dist/types/chartType/column/column.d.ts +9 -30
- package/dist/types/chartType/column/zColumn.d.ts +0 -5
- package/dist/types/chartType/columnParallel/columnParallel.d.ts +10 -32
- package/dist/types/chartType/columnParallel/zColumnParallel.d.ts +0 -5
- package/dist/types/chartType/columnPercent/columnPercent.d.ts +9 -30
- package/dist/types/chartType/columnPercent/zColumnPercent.d.ts +0 -5
- package/dist/types/chartType/donut/donut.d.ts +8 -13
- package/dist/types/chartType/donut/zDonut.d.ts +0 -5
- package/dist/types/chartType/dualAxis/dualAxis.d.ts +10 -14
- package/dist/types/chartType/dualAxis/zDualAxis.d.ts +0 -5
- package/dist/types/chartType/funnel/funnel.d.ts +8 -13
- package/dist/types/chartType/funnel/zFunnel.d.ts +0 -5
- package/dist/types/chartType/heatmap/heatmap.d.ts +9 -14
- package/dist/types/chartType/heatmap/zHeatmap.d.ts +0 -5
- package/dist/types/chartType/line/line.d.ts +9 -33
- package/dist/types/chartType/line/zLine.d.ts +0 -5
- package/dist/types/chartType/pie/pie.d.ts +8 -13
- package/dist/types/chartType/pie/zPie.d.ts +0 -5
- package/dist/types/chartType/pivotTable/pivotTable.d.ts +7 -3
- package/dist/types/chartType/pivotTable/zPivotTable.d.ts +0 -5
- package/dist/types/chartType/radar/radar.d.ts +8 -14
- package/dist/types/chartType/radar/zRadar.d.ts +0 -5
- package/dist/types/chartType/rose/rose.d.ts +9 -14
- package/dist/types/chartType/rose/zRose.d.ts +0 -5
- package/dist/types/chartType/roseParallel/roseParallel.d.ts +9 -14
- package/dist/types/chartType/roseParallel/zRoseParallel.d.ts +0 -5
- package/dist/types/chartType/scatter/scatter.d.ts +8 -14
- package/dist/types/chartType/scatter/zScatter.d.ts +0 -5
- package/dist/types/chartType/table/table.d.ts +2 -0
- package/dist/types/chartType/table/zTable.d.ts +0 -5
- package/dist/types/properties/dimensions/dimensions.d.ts +0 -4
- package/dist/types/properties/dimensions/zDimensions.d.ts +0 -15
- package/dist/types/zVseed.d.ts +0 -100
- package/dist/umd/index.js +1050 -588
- package/dist/umd/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
@@ -167,33 +167,35 @@ const initAdvancedVSeed = (advancedVSeed, context)=>{
|
|
167
167
|
locale: locale || 'zh-CN'
|
168
168
|
};
|
169
169
|
};
|
170
|
-
const
|
171
|
-
const result = {
|
172
|
-
...advancedVSeed
|
173
|
-
};
|
170
|
+
const defaultMeasures_defaultMeasures = (advancedVSeed, context)=>{
|
174
171
|
const { vseed } = context;
|
175
172
|
const { measures, dataset } = vseed;
|
173
|
+
if (measures && measures.length > 0) return {
|
174
|
+
...advancedVSeed,
|
175
|
+
measures
|
176
|
+
};
|
176
177
|
if (!dataset) throw new Error('dataset is required');
|
177
|
-
if (0 === dataset.length) return
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
}
|
178
|
+
if (0 === dataset.length) return {
|
179
|
+
...advancedVSeed,
|
180
|
+
measures: []
|
181
|
+
};
|
182
182
|
const top100dataset = dataset.slice(0, 100);
|
183
183
|
const sample = top100dataset.reduce((prev, cur)=>({
|
184
184
|
...prev,
|
185
185
|
...cur
|
186
186
|
}), {});
|
187
|
-
|
187
|
+
const defaultMeasures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
|
188
188
|
'',
|
189
189
|
null,
|
190
190
|
void 0
|
191
191
|
].includes(key)).map((measure)=>({
|
192
192
|
id: measure,
|
193
|
-
alias: measure
|
194
|
-
encoding: 'column'
|
193
|
+
alias: measure
|
195
194
|
}));
|
196
|
-
return
|
195
|
+
return {
|
196
|
+
...advancedVSeed,
|
197
|
+
measures: defaultMeasures
|
198
|
+
};
|
197
199
|
};
|
198
200
|
const preorderTraverse = (tree, callback)=>{
|
199
201
|
if (!tree || 0 === tree.length) return;
|
@@ -247,37 +249,36 @@ const findAllMeasures = (measures = [])=>{
|
|
247
249
|
});
|
248
250
|
return result;
|
249
251
|
};
|
250
|
-
const
|
252
|
+
const defaultDimensions = (advancedVSeed, context)=>{
|
251
253
|
const result = {
|
252
254
|
...advancedVSeed
|
253
255
|
};
|
254
256
|
const { vseed } = context;
|
255
257
|
const { dimensions, dataset } = vseed;
|
256
|
-
|
258
|
+
if (dimensions && dimensions.length > 0) return {
|
259
|
+
...result,
|
260
|
+
dimensions
|
261
|
+
};
|
257
262
|
if (!dataset) throw new Error('dataset is required');
|
258
263
|
if (0 === dataset.length) return result;
|
259
|
-
|
260
|
-
result.dimensions = dimensions.map((dim)=>({
|
261
|
-
location: 'dimension',
|
262
|
-
...dim
|
263
|
-
}));
|
264
|
-
return result;
|
265
|
-
}
|
264
|
+
const measures = findAllMeasures(advancedVSeed.measures);
|
266
265
|
const top100dataset = dataset.slice(0, 100);
|
267
266
|
const sample = top100dataset.reduce((prev, cur)=>({
|
268
267
|
...prev,
|
269
268
|
...cur
|
270
269
|
}), {});
|
271
|
-
|
270
|
+
const newDimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
|
272
271
|
'',
|
273
272
|
null,
|
274
273
|
void 0
|
275
274
|
].includes(key) && !measures.some((measure)=>measure.id === key)).map((dim)=>({
|
276
275
|
id: dim,
|
277
|
-
alias: dim
|
278
|
-
encoding: 'column'
|
276
|
+
alias: dim
|
279
277
|
}));
|
280
|
-
return
|
278
|
+
return {
|
279
|
+
...result,
|
280
|
+
dimensions: newDimensions
|
281
|
+
};
|
281
282
|
};
|
282
283
|
const records_records = (advancedVSeed, context)=>{
|
283
284
|
const { vseed } = context;
|
@@ -349,8 +350,8 @@ const mergeArray = (arr, themeItem)=>{
|
|
349
350
|
};
|
350
351
|
const tableAdvancedPipeline = [
|
351
352
|
initAdvancedVSeed,
|
352
|
-
|
353
|
-
|
353
|
+
defaultMeasures_defaultMeasures,
|
354
|
+
defaultDimensions,
|
354
355
|
records_records,
|
355
356
|
tableConfig_tableConfig,
|
356
357
|
theme_theme
|
@@ -571,9 +572,9 @@ const bodyStyle = (spec, context)=>{
|
|
571
572
|
borderColor: borderColor,
|
572
573
|
borderLineWidth: 1,
|
573
574
|
padding: [
|
574
|
-
8
|
575
|
+
8,
|
575
576
|
12,
|
576
|
-
8
|
577
|
+
8,
|
577
578
|
12
|
578
579
|
],
|
579
580
|
textAlign: 'right',
|
@@ -686,37 +687,7 @@ const registerTable = ()=>{
|
|
686
687
|
Builder._advancedPipelineMap.table = tableAdvancedPipeline;
|
687
688
|
Builder._specPipelineMap.table = tableSpecPipeline;
|
688
689
|
};
|
689
|
-
const autoPivotMeasures = (advancedVSeed, context)=>{
|
690
|
-
const result = {
|
691
|
-
...advancedVSeed
|
692
|
-
};
|
693
|
-
const { vseed } = context;
|
694
|
-
const { dataset } = vseed;
|
695
|
-
const measures = findAllMeasures(vseed.measures);
|
696
|
-
if (!dataset) throw new Error('dataset is required');
|
697
|
-
if (0 === dataset.length) return result;
|
698
|
-
if (vseed.measures) {
|
699
|
-
result.measures = findAllMeasures(measures);
|
700
|
-
return result;
|
701
|
-
}
|
702
|
-
const top100dataset = dataset.slice(0, 100);
|
703
|
-
const sample = top100dataset.reduce((prev, cur)=>({
|
704
|
-
...prev,
|
705
|
-
...cur
|
706
|
-
}), {});
|
707
|
-
result.measures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
|
708
|
-
'',
|
709
|
-
null,
|
710
|
-
void 0
|
711
|
-
].includes(key)).map((measure)=>({
|
712
|
-
id: measure,
|
713
|
-
alias: measure,
|
714
|
-
encoding: 'detail'
|
715
|
-
}));
|
716
|
-
return result;
|
717
|
-
};
|
718
690
|
const ORIGINAL_DATA = '__OriginalData__';
|
719
|
-
const Separator = '-';
|
720
691
|
const FoldMeasureName = '__MeaName__';
|
721
692
|
const FoldMeasureId = '__MeaId__';
|
722
693
|
const FoldMeasureValue = '__MeaValue__';
|
@@ -725,94 +696,70 @@ const FoldPrimaryMeasureValue = '__MeaPrimaryValue__';
|
|
725
696
|
const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
|
726
697
|
const FoldXMeasureValue = '__MeaXValue__';
|
727
698
|
const FoldYMeasureValue = '__MeaYValue__';
|
699
|
+
const FoldXMeasureId = '__MeaXId__';
|
700
|
+
const FoldYMeasureId = '__MeaYId__';
|
728
701
|
const XEncoding = '__Dim_X__';
|
729
702
|
const YEncoding = '__Dim_Y__';
|
730
703
|
const AngleEncoding = '__Dim_Angle__';
|
731
704
|
const DetailEncoding = '__Dim_Detail__';
|
732
705
|
const ColorEncoding = '__Dim_Color__';
|
733
706
|
const ColorIdEncoding = '__Dim_ColorId__';
|
734
|
-
const
|
735
|
-
if (!dimensions) return [];
|
736
|
-
const result = [];
|
737
|
-
preorderTraverse(dimensions, (node)=>{
|
738
|
-
if (!('children' in node)) result.push(node);
|
739
|
-
return false;
|
740
|
-
});
|
741
|
-
return result;
|
742
|
-
};
|
743
|
-
const autoPivotDimensions = (advancedVSeed, context)=>{
|
707
|
+
const defaultMeasureName = (advancedVSeed)=>{
|
744
708
|
const result = {
|
745
709
|
...advancedVSeed
|
746
710
|
};
|
747
|
-
const { vseed } = context;
|
748
|
-
const { dimensions, dataset } = vseed;
|
749
|
-
const measures = findAllMeasures(advancedVSeed.measures);
|
750
711
|
const MeaName = {
|
751
712
|
id: MeasureName,
|
752
713
|
alias: intl.i18n`指标名称`
|
753
714
|
};
|
754
|
-
if (!
|
755
|
-
if (0 === dataset.length) return result;
|
756
|
-
if (dimensions) {
|
757
|
-
const newDimensions = findAllDimensions(dimensions);
|
758
|
-
if (!newDimensions.some((dim)=>dim.id === MeasureName)) newDimensions.push(MeaName);
|
759
|
-
result.dimensions = newDimensions.map((item, index)=>{
|
760
|
-
if ('row' === item.encoding || 'column' === item.encoding) return item;
|
761
|
-
if ('rowDimension' === item.location || 'columnDimension' === item.location) return item;
|
762
|
-
return {
|
763
|
-
...item,
|
764
|
-
encoding: index % 2 === 0 ? 'column' : 'row'
|
765
|
-
};
|
766
|
-
});
|
767
|
-
return result;
|
768
|
-
}
|
769
|
-
const top100dataset = dataset.slice(0, 100);
|
770
|
-
const sample = top100dataset.reduce((prev, cur)=>({
|
771
|
-
...prev,
|
772
|
-
...cur
|
773
|
-
}), {});
|
774
|
-
const newDimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
|
775
|
-
'',
|
776
|
-
null,
|
777
|
-
void 0
|
778
|
-
].includes(key) && !measures.some((measure)=>measure.id === key));
|
779
|
-
result.dimensions = newDimensions.map((dim)=>({
|
780
|
-
id: dim,
|
781
|
-
alias: dim
|
782
|
-
}));
|
783
|
-
result.dimensions.push(MeaName);
|
784
|
-
result.dimensions = result.dimensions.map((dim, index)=>({
|
785
|
-
...dim,
|
786
|
-
encoding: index % 2 === 0 ? 'column' : 'row'
|
787
|
-
}));
|
715
|
+
if (!result.dimensions?.some((dim)=>dim.id === MeasureName)) result.dimensions?.push(MeaName);
|
788
716
|
return result;
|
789
717
|
};
|
790
|
-
const
|
791
|
-
const {
|
792
|
-
const
|
793
|
-
const
|
794
|
-
|
795
|
-
};
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
'headerBackgroundColor',
|
804
|
-
'hoverHeaderBackgroundColor',
|
805
|
-
'hoverHeaderInlineBackgroundColor',
|
806
|
-
'selectedBorderColor',
|
807
|
-
'selectedBackgroundColor'
|
808
|
-
]);
|
809
|
-
result.config = {
|
810
|
-
...result.config || {},
|
811
|
-
[chartType]: {
|
812
|
-
...config
|
813
|
-
}
|
718
|
+
const encodingForPivotTable = (advancedVSeed)=>{
|
719
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
720
|
+
const measures = findAllMeasures(vseedMeasures);
|
721
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
722
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
723
|
+
const encoding = {};
|
724
|
+
if (hasDimensionEncoding) generateDimensionEncoding(dimensions, encoding);
|
725
|
+
else generateDefaultDimensionEncoding(dimensions, encoding);
|
726
|
+
if (hasMeasureEncoding) generateMeasureEncoding(measures, encoding);
|
727
|
+
else generateDefaultMeasureEncoding(measures, encoding);
|
728
|
+
return {
|
729
|
+
...advancedVSeed,
|
730
|
+
encoding
|
814
731
|
};
|
815
|
-
|
732
|
+
};
|
733
|
+
const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
734
|
+
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
735
|
+
encoding.tooltip = uniqueDimIds;
|
736
|
+
encoding.row = [];
|
737
|
+
encoding.column = [];
|
738
|
+
uniqueDimIds.forEach((item, index)=>{
|
739
|
+
if (index % 2 === 0) encoding.column.push(item);
|
740
|
+
else encoding.row.push(item);
|
741
|
+
});
|
742
|
+
};
|
743
|
+
const generateDimensionEncoding = (dimensions, encoding)=>{
|
744
|
+
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
745
|
+
encoding.tooltip = uniqueDimIds;
|
746
|
+
encoding.row = [];
|
747
|
+
encoding.column = [];
|
748
|
+
dimensions.forEach((dim, index)=>{
|
749
|
+
const id = dim.id;
|
750
|
+
if ('row' === dim.encoding) encoding.row.push(id);
|
751
|
+
else if ('column' === dim.encoding) encoding.column.push(id);
|
752
|
+
else if (index % 2 === 0) encoding.column.push(id);
|
753
|
+
else encoding.row.push(id);
|
754
|
+
});
|
755
|
+
};
|
756
|
+
const generateDefaultMeasureEncoding = (measures, encoding)=>{
|
757
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
758
|
+
encoding.detail = unique(measures.filter((item)=>'detail' === item.encoding || !item.encoding).map((item)=>item.id));
|
759
|
+
};
|
760
|
+
const generateMeasureEncoding = (measures, encoding)=>{
|
761
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
762
|
+
encoding.detail = unique(measures.filter((item)=>'detail' === item.encoding || !item.encoding).map((item)=>item.id));
|
816
763
|
};
|
817
764
|
const foldMeasures = (dataset, measures, options)=>{
|
818
765
|
const { measureId, measureName, measureValue, colorMeasureId } = options || {};
|
@@ -892,10 +839,39 @@ const reshapePivotTable = (advancedVSeed, context)=>{
|
|
892
839
|
measures
|
893
840
|
};
|
894
841
|
};
|
842
|
+
const pivotTableConfig = (advancedVSeed, context)=>{
|
843
|
+
const { vseed } = context;
|
844
|
+
const { chartType } = vseed;
|
845
|
+
const result = {
|
846
|
+
...advancedVSeed
|
847
|
+
};
|
848
|
+
const config = pick(vseed, [
|
849
|
+
'backgroundColor',
|
850
|
+
'bodyFontSize',
|
851
|
+
'bodyFontColor',
|
852
|
+
'bodyBackgroundColor',
|
853
|
+
'headerFontSize',
|
854
|
+
'headerFontColor',
|
855
|
+
'headerBackgroundColor',
|
856
|
+
'hoverHeaderBackgroundColor',
|
857
|
+
'hoverHeaderInlineBackgroundColor',
|
858
|
+
'selectedBorderColor',
|
859
|
+
'selectedBackgroundColor'
|
860
|
+
]);
|
861
|
+
result.config = {
|
862
|
+
...result.config || {},
|
863
|
+
[chartType]: {
|
864
|
+
...config
|
865
|
+
}
|
866
|
+
};
|
867
|
+
return result;
|
868
|
+
};
|
895
869
|
const pivotTableAdvancedPipeline = [
|
896
870
|
initAdvancedVSeed,
|
897
|
-
|
898
|
-
|
871
|
+
defaultMeasures_defaultMeasures,
|
872
|
+
defaultDimensions,
|
873
|
+
defaultMeasureName,
|
874
|
+
encodingForPivotTable,
|
899
875
|
reshapePivotTable,
|
900
876
|
pivotTableConfig,
|
901
877
|
theme_theme
|
@@ -942,8 +918,9 @@ const initPivotTable = (spec, context)=>{
|
|
942
918
|
};
|
943
919
|
const pivotColumns = (spec, context)=>{
|
944
920
|
const { advancedVSeed } = context;
|
921
|
+
const { encoding } = advancedVSeed;
|
945
922
|
const dimensions = advancedVSeed.dimensions;
|
946
|
-
const columns = dimensions.filter((item)=>
|
923
|
+
const columns = dimensions.filter((item)=>encoding.column?.includes(item.id));
|
947
924
|
return {
|
948
925
|
...spec,
|
949
926
|
columns: columns.map((item)=>({
|
@@ -956,7 +933,8 @@ const pivotColumns = (spec, context)=>{
|
|
956
933
|
const pivotRows = (spec, context)=>{
|
957
934
|
const { advancedVSeed } = context;
|
958
935
|
const dimensions = advancedVSeed.dimensions;
|
959
|
-
const
|
936
|
+
const { encoding } = advancedVSeed;
|
937
|
+
const rows = dimensions.filter((item)=>encoding.row?.includes(item.id));
|
960
938
|
return {
|
961
939
|
...spec,
|
962
940
|
rows: rows.map((item)=>({
|
@@ -989,6 +967,7 @@ const pivotIndicators = (spec, context)=>{
|
|
989
967
|
const pivotIndicators_fieldFormat = (measures, foldInfo, locale)=>(value, col, row, table)=>{
|
990
968
|
if (!isNumber(col) || !isNumber(row) || !table) return value;
|
991
969
|
const datum = table.getCellOriginRecord(col, row);
|
970
|
+
if (!datum[0]) return value;
|
992
971
|
const { measureId: foldMeasureId } = foldInfo;
|
993
972
|
const measureId = datum[0][foldMeasureId];
|
994
973
|
const node = findMeasureById(measures, measureId);
|
@@ -1018,9 +997,9 @@ const rowHeaderStyle = (spec, context)=>{
|
|
1018
997
|
borderColor: borderColor,
|
1019
998
|
borderLineWidth: 1,
|
1020
999
|
padding: [
|
1021
|
-
8
|
1000
|
+
8,
|
1022
1001
|
12,
|
1023
|
-
8
|
1002
|
+
8,
|
1024
1003
|
12
|
1025
1004
|
],
|
1026
1005
|
textAlign: 'left',
|
@@ -1148,7 +1127,7 @@ const initAdvancedVSeed_initAdvancedVSeed = (advancedVSeed, context)=>{
|
|
1148
1127
|
locale: locale || 'zh-CN'
|
1149
1128
|
};
|
1150
1129
|
};
|
1151
|
-
const
|
1130
|
+
const default_defaultMeasures_defaultMeasures = (advancedVSeed, context)=>{
|
1152
1131
|
const { vseed } = context;
|
1153
1132
|
const { measures, dataset } = vseed;
|
1154
1133
|
if (measures && measures.length > 0) return {
|
@@ -1178,7 +1157,7 @@ const defaultMeasures_defaultMeasures = (advancedVSeed, context)=>{
|
|
1178
1157
|
measures: defaultMeasures
|
1179
1158
|
};
|
1180
1159
|
};
|
1181
|
-
const
|
1160
|
+
const defaultDimensions_defaultDimensions = (advancedVSeed, context)=>{
|
1182
1161
|
const result = {
|
1183
1162
|
...advancedVSeed
|
1184
1163
|
};
|
@@ -1209,7 +1188,7 @@ const defaultDimensions = (advancedVSeed, context)=>{
|
|
1209
1188
|
dimensions: newDimensions
|
1210
1189
|
};
|
1211
1190
|
};
|
1212
|
-
const
|
1191
|
+
const defaultMeasureName_defaultMeasureName = (advancedVSeed)=>{
|
1213
1192
|
const result = {
|
1214
1193
|
...advancedVSeed
|
1215
1194
|
};
|
@@ -1220,51 +1199,78 @@ const defaultMeasureName = (advancedVSeed)=>{
|
|
1220
1199
|
if (!result.dimensions?.some((dim)=>dim.id === MeasureName)) result.dimensions?.push(MeaName);
|
1221
1200
|
return result;
|
1222
1201
|
};
|
1202
|
+
const encodingAdapter = (noEncodingPipeline, hasEncodingPipeline)=>(advancedVSeed, context)=>{
|
1203
|
+
const { dimensions = [], measures = [] } = advancedVSeed;
|
1204
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
1205
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
1206
|
+
const hasEncoding = hasDimensionEncoding || hasMeasureEncoding;
|
1207
|
+
if (hasEncoding) return execPipeline(hasEncodingPipeline, context, advancedVSeed);
|
1208
|
+
return execPipeline(noEncodingPipeline, context, advancedVSeed);
|
1209
|
+
};
|
1210
|
+
const defaultEncodingForLine = (advancedVSeed)=>{
|
1211
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
1212
|
+
const measures = findAllMeasures(vseedMeasures);
|
1213
|
+
const encoding = {};
|
1214
|
+
line_generateDefaultDimensionEncoding(dimensions, encoding);
|
1215
|
+
line_generateDefaultMeasureEncoding(measures, encoding);
|
1216
|
+
return {
|
1217
|
+
...advancedVSeed,
|
1218
|
+
encoding
|
1219
|
+
};
|
1220
|
+
};
|
1223
1221
|
const encodingForLine = (advancedVSeed)=>{
|
1224
1222
|
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
1225
1223
|
const measures = findAllMeasures(vseedMeasures);
|
1226
1224
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
1227
1225
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
1228
1226
|
const encoding = {};
|
1229
|
-
if (hasDimensionEncoding)
|
1230
|
-
else
|
1231
|
-
if (hasMeasureEncoding)
|
1232
|
-
else
|
1227
|
+
if (hasDimensionEncoding) line_generateDimensionEncoding(dimensions, encoding);
|
1228
|
+
else line_generateDefaultDimensionEncoding(dimensions, encoding);
|
1229
|
+
if (hasMeasureEncoding) line_generateMeasureEncoding(measures, encoding);
|
1230
|
+
else line_generateDefaultMeasureEncoding(measures, encoding);
|
1233
1231
|
return {
|
1234
1232
|
...advancedVSeed,
|
1235
1233
|
encoding
|
1236
1234
|
};
|
1237
1235
|
};
|
1238
|
-
const
|
1236
|
+
const line_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
1239
1237
|
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
1240
1238
|
encoding.x = uniqueDimIds.slice(0, 1);
|
1241
1239
|
encoding.color = uniqueDimIds.slice(1);
|
1242
|
-
encoding.tooltip = uniqueDimIds;
|
1240
|
+
encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
|
1243
1241
|
encoding.detail = [];
|
1244
1242
|
encoding.label = [];
|
1245
1243
|
encoding.row = [];
|
1246
1244
|
encoding.column = [];
|
1247
1245
|
};
|
1248
|
-
const
|
1246
|
+
const line_generateDimensionEncoding = (dimensions, encoding)=>{
|
1249
1247
|
encoding.x = unique(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
|
1250
|
-
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
1251
|
-
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
1252
1248
|
if (0 === encoding.x.length) encoding.x = [
|
1253
1249
|
dimensions[0].id
|
1254
1250
|
];
|
1251
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
1255
1252
|
if (0 === encoding.color.length) encoding.color = [
|
1256
1253
|
MeasureName
|
1257
1254
|
];
|
1255
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
1256
|
+
if (0 === encoding.detail.length) encoding.detail = [
|
1257
|
+
MeasureName
|
1258
|
+
];
|
1259
|
+
encoding.tooltip = unique(dimensions.map((item)=>item.id));
|
1260
|
+
encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
|
1258
1261
|
};
|
1259
|
-
const
|
1260
|
-
encoding.tooltip = unique(measures.map((item)=>item.id));
|
1262
|
+
const line_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
1261
1263
|
encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
1262
1264
|
};
|
1263
|
-
const
|
1264
|
-
encoding.tooltip = measures.map((item)=>item.id);
|
1265
|
+
const line_generateMeasureEncoding = (measures, encoding)=>{
|
1265
1266
|
encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
1266
1267
|
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
1267
1268
|
if (color.length > 0) encoding.color = color;
|
1269
|
+
const tooltip = unique(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
|
1270
|
+
encoding.tooltip = unique([
|
1271
|
+
...encoding.tooltip || [],
|
1272
|
+
...tooltip
|
1273
|
+
]);
|
1268
1274
|
};
|
1269
1275
|
const isMeasureTreeWithChildren = (vseed)=>{
|
1270
1276
|
const { measures } = vseed;
|
@@ -1276,6 +1282,37 @@ const isMeasureTreeWithParentId = (vseed)=>{
|
|
1276
1282
|
if (!measures) return false;
|
1277
1283
|
return measures.some((measure)=>'parentId' in measure);
|
1278
1284
|
};
|
1285
|
+
const normalizeMeasureTree = (measures)=>{
|
1286
|
+
const createEmptyMeasureGroup = ()=>({
|
1287
|
+
id: 'group',
|
1288
|
+
alias: '',
|
1289
|
+
children: []
|
1290
|
+
});
|
1291
|
+
let currentGroup = createEmptyMeasureGroup();
|
1292
|
+
const measureGroups = [];
|
1293
|
+
for (const measure of measures)if ('children' in measure) {
|
1294
|
+
if (currentGroup.children?.length) {
|
1295
|
+
currentGroup.id = [
|
1296
|
+
currentGroup.id,
|
1297
|
+
...currentGroup.children.map((item)=>item.id)
|
1298
|
+
].join('-');
|
1299
|
+
currentGroup.alias = currentGroup.children.map((item)=>item.alias).join('-');
|
1300
|
+
measureGroups.push(currentGroup);
|
1301
|
+
currentGroup = createEmptyMeasureGroup();
|
1302
|
+
}
|
1303
|
+
measureGroups.push(measure);
|
1304
|
+
} else currentGroup.children?.push(measure);
|
1305
|
+
if (currentGroup.children?.length) {
|
1306
|
+
currentGroup.id = [
|
1307
|
+
currentGroup.id,
|
1308
|
+
...currentGroup.children.map((item)=>item.id)
|
1309
|
+
].join('-');
|
1310
|
+
currentGroup.alias = currentGroup.children.map((item)=>item.alias).join('-');
|
1311
|
+
measureGroups.push(currentGroup);
|
1312
|
+
currentGroup = createEmptyMeasureGroup();
|
1313
|
+
}
|
1314
|
+
return measureGroups;
|
1315
|
+
};
|
1279
1316
|
const measureDepth = (measures = [])=>{
|
1280
1317
|
if (!measures) return 0;
|
1281
1318
|
let depth = 1;
|
@@ -1300,7 +1337,7 @@ const isPivotChart = (vseed)=>{
|
|
1300
1337
|
}
|
1301
1338
|
if ('dualAxis' === vseed.chartType || 'scatter' === vseed.chartType) {
|
1302
1339
|
const { dimensions = [] } = vseed;
|
1303
|
-
const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'
|
1340
|
+
const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'row' === dimension.encoding || 'column' === dimension.encoding);
|
1304
1341
|
if (hasRowOrColumnDimension) return true;
|
1305
1342
|
if ('scatter' === vseed.chartType) {
|
1306
1343
|
if (isMeasureTreeWithChildren(vseed)) {
|
@@ -1320,14 +1357,14 @@ const isPivotChart = (vseed)=>{
|
|
1320
1357
|
return false;
|
1321
1358
|
}
|
1322
1359
|
const { measures = [], dimensions = [] } = vseed;
|
1323
|
-
const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'
|
1360
|
+
const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'row' === dimension.encoding || 'column' === dimension.encoding);
|
1324
1361
|
const hasMeasureGroup = measures && measures.some((measure)=>measure && measure.children);
|
1325
1362
|
return hasRowOrColumnDimension || hasMeasureGroup;
|
1326
1363
|
};
|
1327
1364
|
const buildMeasures = (advancedVSeed, context)=>{
|
1328
1365
|
const { vseed } = context;
|
1329
1366
|
if (isMeasureTreeWithChildren(vseed)) {
|
1330
|
-
advancedVSeed.measures = vseed.measures;
|
1367
|
+
advancedVSeed.measures = normalizeMeasureTree(vseed.measures);
|
1331
1368
|
return advancedVSeed;
|
1332
1369
|
}
|
1333
1370
|
if (isMeasureTreeWithParentId(vseed)) {
|
@@ -1429,7 +1466,7 @@ const dataReshapeByEncoding = (dataset, dimensions, measures, encoding, options)
|
|
1429
1466
|
});
|
1430
1467
|
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dimensions, encoding, {
|
1431
1468
|
foldMeasureId,
|
1432
|
-
separator:
|
1469
|
+
separator: "-",
|
1433
1470
|
colorItemAsId
|
1434
1471
|
});
|
1435
1472
|
return {
|
@@ -1715,11 +1752,16 @@ const annotation_annotation = (advancedVSeed, context)=>{
|
|
1715
1752
|
};
|
1716
1753
|
const lineAdvancedPipeline = [
|
1717
1754
|
initAdvancedVSeed_initAdvancedVSeed,
|
1718
|
-
|
1719
|
-
|
1720
|
-
|
1721
|
-
|
1722
|
-
|
1755
|
+
default_defaultMeasures_defaultMeasures,
|
1756
|
+
defaultDimensions_defaultDimensions,
|
1757
|
+
defaultMeasureName_defaultMeasureName,
|
1758
|
+
encodingAdapter([
|
1759
|
+
defaultEncodingForLine,
|
1760
|
+
buildMeasures
|
1761
|
+
], [
|
1762
|
+
encodingForLine,
|
1763
|
+
buildMeasures
|
1764
|
+
]),
|
1723
1765
|
pivotAdapter([
|
1724
1766
|
reshapeWithEncoding
|
1725
1767
|
], [
|
@@ -1994,10 +2036,6 @@ const xBand = (spec, context)=>{
|
|
1994
2036
|
];
|
1995
2037
|
return result;
|
1996
2038
|
};
|
1997
|
-
const ANNOTATION_Z_INDEX = 1000;
|
1998
|
-
const LINEAR_AXIS_INNER_OFFSET_TOP = 7;
|
1999
|
-
const DUAL_AXIS_CHART_COLUMN_Z_INDEX = 1000;
|
2000
|
-
const DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX = 1001;
|
2001
2039
|
const yLinear = (spec, context)=>{
|
2002
2040
|
const result = {
|
2003
2041
|
...spec
|
@@ -2071,7 +2109,7 @@ const yLinear = (spec, context)=>{
|
|
2071
2109
|
}
|
2072
2110
|
},
|
2073
2111
|
innerOffset: {
|
2074
|
-
top:
|
2112
|
+
top: 7
|
2075
2113
|
}
|
2076
2114
|
};
|
2077
2115
|
result.axes = [
|
@@ -2627,86 +2665,141 @@ const tooltip_tooltip = (spec, context)=>{
|
|
2627
2665
|
...spec
|
2628
2666
|
};
|
2629
2667
|
const { advancedVSeed } = context;
|
2630
|
-
const { measures, datasetReshapeInfo, chartType, locale, dimensions } = advancedVSeed;
|
2668
|
+
const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
|
2631
2669
|
const baseConfig = advancedVSeed.config[chartType];
|
2632
2670
|
const { tooltip = {
|
2633
2671
|
enable: true
|
2634
2672
|
} } = baseConfig;
|
2635
2673
|
const { enable } = tooltip;
|
2636
|
-
const {
|
2637
|
-
const { encodingColor: colorName } = datasetReshapeInfo[0].unfoldInfo;
|
2674
|
+
const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
|
2638
2675
|
result.tooltip = {
|
2639
2676
|
visible: enable,
|
2640
2677
|
mark: {
|
2641
2678
|
title: {
|
2642
|
-
visible:
|
2679
|
+
visible: false
|
2643
2680
|
},
|
2644
|
-
content: [
|
2645
|
-
...dimensions.map((item)=>({
|
2646
|
-
visible: true,
|
2647
|
-
hasShape: true,
|
2648
|
-
shapeType: 'rectRound',
|
2649
|
-
key: (datum)=>{
|
2650
|
-
if (item.alias || item.id) return item.alias || item.id;
|
2651
|
-
return datum && datum[item.id];
|
2652
|
-
},
|
2653
|
-
value: (datum)=>datum && datum[item.id]
|
2654
|
-
})),
|
2655
|
-
{
|
2656
|
-
visible: true,
|
2657
|
-
hasShape: true,
|
2658
|
-
key: (datum)=>datum && datum[measureName || colorName] || '',
|
2659
|
-
value: (datum)=>{
|
2660
|
-
if (!datum) return '';
|
2661
|
-
const value = datum[measureValue];
|
2662
|
-
const id = datum[measureId];
|
2663
|
-
const measure = findMeasureById(measures, id);
|
2664
|
-
if (!measure) return String(value);
|
2665
|
-
const { format = {}, autoFormat = true } = measure;
|
2666
|
-
if (!external_remeda_isEmpty(format)) {
|
2667
|
-
const formatter = createFormatter(format);
|
2668
|
-
return formatter(value);
|
2669
|
-
}
|
2670
|
-
if (autoFormat) return autoFormatter(value, locale);
|
2671
|
-
return String(value);
|
2672
|
-
}
|
2673
|
-
}
|
2674
|
-
]
|
2681
|
+
content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfo, unfoldInfo)
|
2675
2682
|
},
|
2676
2683
|
dimension: {
|
2677
|
-
|
2678
|
-
|
2679
|
-
|
2680
|
-
|
2681
|
-
value: (datum)=>{
|
2682
|
-
if (!datum) return '';
|
2683
|
-
const value = datum[measureValue];
|
2684
|
-
const id = datum[measureId];
|
2685
|
-
const measure = findMeasureById(measures, id);
|
2686
|
-
if (!measure) return String(value);
|
2687
|
-
const { format = {}, autoFormat = true } = measure;
|
2688
|
-
if (!external_remeda_isEmpty(format)) {
|
2689
|
-
const formatter = createFormatter(format);
|
2690
|
-
return formatter(value);
|
2691
|
-
}
|
2692
|
-
if (autoFormat) return autoFormatter(value, locale);
|
2693
|
-
return String(value);
|
2694
|
-
},
|
2695
|
-
shapeType: 'rectRound'
|
2696
|
-
}
|
2697
|
-
]
|
2684
|
+
title: {
|
2685
|
+
visible: true
|
2686
|
+
},
|
2687
|
+
content: createDimensionContent(measures, foldInfo, unfoldInfo, locale)
|
2698
2688
|
}
|
2699
2689
|
};
|
2700
2690
|
return result;
|
2701
2691
|
};
|
2702
|
-
const
|
2703
|
-
|
2704
|
-
|
2705
|
-
|
2706
|
-
|
2707
|
-
|
2708
|
-
|
2709
|
-
|
2692
|
+
const createDimensionContent = (measures, foldInfo, unfoldInfo, locale)=>{
|
2693
|
+
const { measureId, measureValue } = foldInfo;
|
2694
|
+
const { encodingColor } = unfoldInfo;
|
2695
|
+
return [
|
2696
|
+
{
|
2697
|
+
visible: true,
|
2698
|
+
shapeType: 'rectRound',
|
2699
|
+
hasShape: true,
|
2700
|
+
key: (v)=>{
|
2701
|
+
const datum = v;
|
2702
|
+
return datum && datum[encodingColor] || '';
|
2703
|
+
},
|
2704
|
+
value: (v)=>{
|
2705
|
+
const datum = v;
|
2706
|
+
if (!datum) return '';
|
2707
|
+
const value = datum[measureValue];
|
2708
|
+
const id = datum[measureId];
|
2709
|
+
const measure = findMeasureById(measures, id);
|
2710
|
+
if (!measure) return String(value);
|
2711
|
+
const { format = {}, autoFormat = true } = measure;
|
2712
|
+
if (!external_remeda_isEmpty(format)) {
|
2713
|
+
const formatter = createFormatter(format);
|
2714
|
+
return formatter(value);
|
2715
|
+
}
|
2716
|
+
if (autoFormat) return autoFormatter(value, locale);
|
2717
|
+
return String(value);
|
2718
|
+
}
|
2719
|
+
}
|
2720
|
+
];
|
2721
|
+
};
|
2722
|
+
const createMarkContent = (tooltip, dimensions, measures, locale, foldInfo, unfoldInfo)=>{
|
2723
|
+
const dims = dimensions.filter((item)=>tooltip.includes(item.id));
|
2724
|
+
const meas = measures.filter((item)=>tooltip.includes(item.id));
|
2725
|
+
const dimContent = dims.map((item)=>({
|
2726
|
+
visible: true,
|
2727
|
+
hasShape: true,
|
2728
|
+
shapeType: 'rectRound',
|
2729
|
+
key: (v)=>{
|
2730
|
+
const datum = v;
|
2731
|
+
if (item.alias || item.id) return item.alias || item.id;
|
2732
|
+
return datum && datum[item.id];
|
2733
|
+
},
|
2734
|
+
value: (v)=>{
|
2735
|
+
const datum = v;
|
2736
|
+
return datum && datum[item.id];
|
2737
|
+
}
|
2738
|
+
}));
|
2739
|
+
const meaContent = meas.map((item)=>({
|
2740
|
+
visible: true,
|
2741
|
+
hasShape: true,
|
2742
|
+
shapeType: 'rectRound',
|
2743
|
+
key: item.alias || item.id,
|
2744
|
+
value: (v)=>{
|
2745
|
+
const datum = v;
|
2746
|
+
if (!datum) return '';
|
2747
|
+
const id = item.id;
|
2748
|
+
if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) return '';
|
2749
|
+
const originalData = datum[ORIGINAL_DATA];
|
2750
|
+
const value = originalData[id];
|
2751
|
+
const measure = findMeasureById(measures, id);
|
2752
|
+
if (!measure) return String(value);
|
2753
|
+
const { format = {}, autoFormat = true } = measure;
|
2754
|
+
if (!external_remeda_isEmpty(format)) {
|
2755
|
+
const formatter = createFormatter(format);
|
2756
|
+
return formatter(value);
|
2757
|
+
}
|
2758
|
+
if (autoFormat) return autoFormatter(value, locale);
|
2759
|
+
return String(value);
|
2760
|
+
}
|
2761
|
+
}));
|
2762
|
+
const defaultContent = {
|
2763
|
+
visible: true,
|
2764
|
+
hasShape: true,
|
2765
|
+
shapeType: 'rectRound',
|
2766
|
+
key: (v)=>{
|
2767
|
+
const { measureName } = foldInfo;
|
2768
|
+
const { encodingColor: colorName } = unfoldInfo;
|
2769
|
+
const datum = v;
|
2770
|
+
return datum && datum[measureName || colorName] || '';
|
2771
|
+
},
|
2772
|
+
value: (v)=>{
|
2773
|
+
const { measureId, measureValue } = foldInfo;
|
2774
|
+
const datum = v;
|
2775
|
+
if (!datum) return '';
|
2776
|
+
const value = datum[measureValue];
|
2777
|
+
const id = datum[measureId];
|
2778
|
+
const measure = findMeasureById(measures, id);
|
2779
|
+
if (!measure) return String(value);
|
2780
|
+
const { format = {}, autoFormat = true } = measure;
|
2781
|
+
if (!external_remeda_isEmpty(format)) {
|
2782
|
+
const formatter = createFormatter(format);
|
2783
|
+
return formatter(value);
|
2784
|
+
}
|
2785
|
+
if (autoFormat) return autoFormatter(value, locale);
|
2786
|
+
return String(value);
|
2787
|
+
}
|
2788
|
+
};
|
2789
|
+
return [
|
2790
|
+
...dimContent,
|
2791
|
+
defaultContent,
|
2792
|
+
...meaContent
|
2793
|
+
];
|
2794
|
+
};
|
2795
|
+
const isSubset = (sub, obj)=>Object.entries(sub).every(([key, value])=>{
|
2796
|
+
if ('string' == typeof value) return obj[key] === value;
|
2797
|
+
if ('number' == typeof value) return obj[key] === value;
|
2798
|
+
return true;
|
2799
|
+
});
|
2800
|
+
const annotationPoint_annotationPoint = (spec, context)=>{
|
2801
|
+
const { advancedVSeed } = context;
|
2802
|
+
const { annotation } = advancedVSeed;
|
2710
2803
|
if (!annotation || !annotation.annotationPoint) return spec;
|
2711
2804
|
const { annotationPoint } = annotation;
|
2712
2805
|
const annotationPointList = Array.isArray(annotationPoint) ? annotationPoint : [
|
@@ -2717,7 +2810,7 @@ const annotationPoint_annotationPoint = (spec, context)=>{
|
|
2717
2810
|
const dataset = advancedVSeed.dataset.flat();
|
2718
2811
|
const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
|
2719
2812
|
return selectedData.map((datum)=>({
|
2720
|
-
zIndex:
|
2813
|
+
zIndex: 1000,
|
2721
2814
|
regionRelative: true,
|
2722
2815
|
position: (data, context)=>{
|
2723
2816
|
const targetDatum = data.find((item)=>isSubset(datum, item));
|
@@ -2771,7 +2864,7 @@ const annotationPoint_annotationPoint = (spec, context)=>{
|
|
2771
2864
|
const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
|
2772
2865
|
const { advancedVSeed } = context;
|
2773
2866
|
const { annotation, datasetReshapeInfo } = advancedVSeed;
|
2774
|
-
const { unfoldInfo } = datasetReshapeInfo[0];
|
2867
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
2775
2868
|
if (!annotation || !annotation.annotationVerticalLine) return spec;
|
2776
2869
|
const { annotationVerticalLine } = annotation;
|
2777
2870
|
const annotationVerticalLineList = Array.isArray(annotationVerticalLine) ? annotationVerticalLine : [
|
@@ -2790,7 +2883,7 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
|
|
2790
2883
|
const dataset = advancedVSeed.dataset.flat();
|
2791
2884
|
const generateOneMarkLine = (x)=>({
|
2792
2885
|
x: x,
|
2793
|
-
zIndex:
|
2886
|
+
zIndex: 1000,
|
2794
2887
|
line: {
|
2795
2888
|
style: {
|
2796
2889
|
visible: lineVisible,
|
@@ -2851,9 +2944,9 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
|
|
2851
2944
|
}
|
2852
2945
|
const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
|
2853
2946
|
return selectedData.map((datum)=>{
|
2854
|
-
|
2855
|
-
if (
|
2856
|
-
return
|
2947
|
+
if (datum[unfoldInfo.encodingX]) return generateOneMarkLine(datum[unfoldInfo.encodingX]);
|
2948
|
+
if (datum[foldInfo.measureValue]) return generateOneMarkLine(datum[foldInfo.measureValue]);
|
2949
|
+
return {};
|
2857
2950
|
});
|
2858
2951
|
});
|
2859
2952
|
const specMarkLine = spec.markLine || [];
|
@@ -2869,10 +2962,10 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
|
|
2869
2962
|
const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
|
2870
2963
|
const { advancedVSeed } = context;
|
2871
2964
|
const { annotation, datasetReshapeInfo } = advancedVSeed;
|
2872
|
-
const { unfoldInfo } = datasetReshapeInfo[0];
|
2965
|
+
const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
|
2873
2966
|
if (!annotation || !annotation.annotationHorizontalLine) return spec;
|
2874
2967
|
const { annotationHorizontalLine } = annotation;
|
2875
|
-
const
|
2968
|
+
const annotationHorizontalLineList = Array.isArray(annotationHorizontalLine) ? annotationHorizontalLine : [
|
2876
2969
|
annotationHorizontalLine
|
2877
2970
|
];
|
2878
2971
|
const positionMap = {
|
@@ -2883,12 +2976,12 @@ const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
|
|
2883
2976
|
insideMiddle: 'insideMiddleTop',
|
2884
2977
|
insideEnd: 'insideEndTop'
|
2885
2978
|
};
|
2886
|
-
const markLine =
|
2887
|
-
const { selector: selectorPoint, yValue, text = '', textPosition = 'insideEnd', textColor = '#ffffff', textFontSize = 12, textFontWeight = 400, textAlign = 'right', textBaseline = 'top', lineColor = '#212121', lineStyle = 'dashed', lineVisible = true, lineWidth = 1, textBackgroundVisible = true, textBackgroundColor = '#212121', textBackgroundBorderColor = '#212121', textBackgroundBorderRadius = 4, textBackgroundBorderWidth = 1, textBackgroundPadding = 2 } =
|
2979
|
+
const markLine = annotationHorizontalLineList.flatMap((annotationHorizontalLine)=>{
|
2980
|
+
const { selector: selectorPoint, yValue, text = '', textPosition = 'insideEnd', textColor = '#ffffff', textFontSize = 12, textFontWeight = 400, textAlign = 'right', textBaseline = 'top', lineColor = '#212121', lineStyle = 'dashed', lineVisible = true, lineWidth = 1, textBackgroundVisible = true, textBackgroundColor = '#212121', textBackgroundBorderColor = '#212121', textBackgroundBorderRadius = 4, textBackgroundBorderWidth = 1, textBackgroundPadding = 2 } = annotationHorizontalLine;
|
2888
2981
|
const dataset = advancedVSeed.dataset.flat();
|
2889
2982
|
const generateOneMarkLine = (y)=>({
|
2890
2983
|
y,
|
2891
|
-
zIndex:
|
2984
|
+
zIndex: 1000,
|
2892
2985
|
line: {
|
2893
2986
|
style: {
|
2894
2987
|
visible: lineVisible,
|
@@ -2949,9 +3042,9 @@ const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
|
|
2949
3042
|
}
|
2950
3043
|
const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
|
2951
3044
|
return selectedData.map((datum)=>{
|
2952
|
-
|
2953
|
-
if (
|
2954
|
-
return
|
3045
|
+
if (datum[unfoldInfo.encodingY]) return generateOneMarkLine(datum[unfoldInfo.encodingY]);
|
3046
|
+
if (datum[foldInfo.measureValue]) return generateOneMarkLine(datum[foldInfo.measureValue]);
|
3047
|
+
return {};
|
2955
3048
|
});
|
2956
3049
|
});
|
2957
3050
|
const specMarkLine = spec.markLine || [];
|
@@ -2989,7 +3082,7 @@ const annotationArea_annotationArea = (spec, context)=>{
|
|
2989
3082
|
const labelPosition = positionMap[textPosition || 'top'];
|
2990
3083
|
const isBottom = labelPosition.toLocaleLowerCase().includes('bottom');
|
2991
3084
|
return {
|
2992
|
-
zIndex:
|
3085
|
+
zIndex: 1000,
|
2993
3086
|
regionRelative: true,
|
2994
3087
|
positions: (data, context)=>{
|
2995
3088
|
const positionData = data.filter((item)=>selectedData.some((datum)=>isSubset(datum, item)));
|
@@ -3315,7 +3408,7 @@ const pivotRowDimensions = (spec, context)=>{
|
|
3315
3408
|
const { advancedVSeed } = context;
|
3316
3409
|
const dimensions = advancedVSeed.dimensions;
|
3317
3410
|
if (!dimensions) return result;
|
3318
|
-
const rowDimensions = dimensions.filter((dim)=>'
|
3411
|
+
const rowDimensions = dimensions.filter((dim)=>'row' === dim.encoding);
|
3319
3412
|
const rows = rowDimensions.map((dim)=>({
|
3320
3413
|
dimensionKey: dim.id,
|
3321
3414
|
title: dim.alias || dim.id
|
@@ -3332,7 +3425,7 @@ const pivotColumnDimensions = (spec, context)=>{
|
|
3332
3425
|
const { advancedVSeed } = context;
|
3333
3426
|
const dimensions = advancedVSeed.dimensions;
|
3334
3427
|
if (!dimensions) return result;
|
3335
|
-
const columnDimensions = dimensions.filter((dim)=>'
|
3428
|
+
const columnDimensions = dimensions.filter((dim)=>'column' === dim.encoding);
|
3336
3429
|
const columns = columnDimensions.map((dim)=>({
|
3337
3430
|
dimensionKey: dim.id,
|
3338
3431
|
title: dim.alias || dim.id
|
@@ -3605,6 +3698,17 @@ const registerLine = ()=>{
|
|
3605
3698
|
Builder._advancedPipelineMap.line = lineAdvancedPipeline;
|
3606
3699
|
Builder._specPipelineMap.line = lineSpecPipeline;
|
3607
3700
|
};
|
3701
|
+
const defaultEncodingForColumn = (advancedVSeed)=>{
|
3702
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
3703
|
+
const measures = findAllMeasures(vseedMeasures);
|
3704
|
+
const encoding = {};
|
3705
|
+
column_generateDefaultDimensionEncoding(dimensions, encoding);
|
3706
|
+
column_generateDefaultMeasureEncoding(measures, encoding);
|
3707
|
+
return {
|
3708
|
+
...advancedVSeed,
|
3709
|
+
encoding
|
3710
|
+
};
|
3711
|
+
};
|
3608
3712
|
const encodingForColumn = (advancedVSeed)=>{
|
3609
3713
|
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
3610
3714
|
const measures = findAllMeasures(vseedMeasures);
|
@@ -3626,40 +3730,52 @@ const column_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
|
3626
3730
|
encoding.x = uniqueDimIds.slice(0, 1);
|
3627
3731
|
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
3628
3732
|
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
3629
|
-
encoding.tooltip = uniqueDimIds;
|
3733
|
+
encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
|
3630
3734
|
encoding.label = [];
|
3631
3735
|
encoding.row = [];
|
3632
3736
|
encoding.column = [];
|
3633
3737
|
};
|
3634
3738
|
const column_generateDimensionEncoding = (dimensions, encoding)=>{
|
3635
3739
|
encoding.x = unique(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
|
3636
|
-
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
3637
|
-
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
3638
3740
|
if (0 === encoding.x.length) encoding.x = [
|
3639
3741
|
dimensions[0].id
|
3640
3742
|
];
|
3743
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
3641
3744
|
if (0 === encoding.color.length) encoding.color = [
|
3642
3745
|
MeasureName
|
3643
3746
|
];
|
3747
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
3748
|
+
if (0 === encoding.detail.length) encoding.detail = [
|
3749
|
+
MeasureName
|
3750
|
+
];
|
3751
|
+
encoding.tooltip = unique(dimensions.map((item)=>item.id));
|
3752
|
+
encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
|
3644
3753
|
};
|
3645
3754
|
const column_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
3646
|
-
encoding.tooltip = unique(measures.map((item)=>item.id));
|
3647
3755
|
encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
3648
3756
|
};
|
3649
3757
|
const column_generateMeasureEncoding = (measures, encoding)=>{
|
3650
|
-
encoding.tooltip = measures.map((item)=>item.id);
|
3651
3758
|
encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
3652
3759
|
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
3653
3760
|
if (color.length > 0) encoding.color = color;
|
3654
|
-
|
3761
|
+
const tooltip = unique(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
|
3762
|
+
encoding.tooltip = unique([
|
3763
|
+
...encoding.tooltip || [],
|
3764
|
+
...tooltip
|
3765
|
+
]);
|
3655
3766
|
};
|
3656
3767
|
const columnAdvancedPipeline = [
|
3657
3768
|
initAdvancedVSeed_initAdvancedVSeed,
|
3658
|
-
|
3659
|
-
|
3660
|
-
|
3661
|
-
|
3662
|
-
|
3769
|
+
default_defaultMeasures_defaultMeasures,
|
3770
|
+
defaultDimensions_defaultDimensions,
|
3771
|
+
defaultMeasureName_defaultMeasureName,
|
3772
|
+
encodingAdapter([
|
3773
|
+
defaultEncodingForColumn,
|
3774
|
+
buildMeasures
|
3775
|
+
], [
|
3776
|
+
encodingForColumn,
|
3777
|
+
buildMeasures
|
3778
|
+
]),
|
3663
3779
|
pivotAdapter([
|
3664
3780
|
reshapeWithEncoding
|
3665
3781
|
], [
|
@@ -3856,7 +3972,7 @@ const annotationAreaBand = (spec, context)=>{
|
|
3856
3972
|
const dataset = advancedVSeed.dataset.flat();
|
3857
3973
|
const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
|
3858
3974
|
return {
|
3859
|
-
zIndex:
|
3975
|
+
zIndex: 1000,
|
3860
3976
|
regionRelative: true,
|
3861
3977
|
positions: (data, context)=>{
|
3862
3978
|
const positionData = data.filter((item)=>selectedData.some((datum)=>isSubset(datum, item)));
|
@@ -4019,11 +4135,16 @@ const registerColumn = ()=>{
|
|
4019
4135
|
};
|
4020
4136
|
const columnParallelAdvancedPipeline = [
|
4021
4137
|
initAdvancedVSeed_initAdvancedVSeed,
|
4022
|
-
|
4023
|
-
|
4024
|
-
|
4025
|
-
|
4026
|
-
|
4138
|
+
default_defaultMeasures_defaultMeasures,
|
4139
|
+
defaultDimensions_defaultDimensions,
|
4140
|
+
defaultMeasureName_defaultMeasureName,
|
4141
|
+
encodingAdapter([
|
4142
|
+
defaultEncodingForColumn,
|
4143
|
+
buildMeasures
|
4144
|
+
], [
|
4145
|
+
encodingForColumn,
|
4146
|
+
buildMeasures
|
4147
|
+
]),
|
4027
4148
|
pivotAdapter([
|
4028
4149
|
reshapeWithEncoding
|
4029
4150
|
], [
|
@@ -4118,11 +4239,16 @@ const registerColumnParallel = ()=>{
|
|
4118
4239
|
};
|
4119
4240
|
const columnPercentAdvancedPipeline = [
|
4120
4241
|
initAdvancedVSeed_initAdvancedVSeed,
|
4121
|
-
|
4122
|
-
|
4123
|
-
|
4124
|
-
|
4125
|
-
|
4242
|
+
default_defaultMeasures_defaultMeasures,
|
4243
|
+
defaultDimensions_defaultDimensions,
|
4244
|
+
defaultMeasureName_defaultMeasureName,
|
4245
|
+
encodingAdapter([
|
4246
|
+
defaultEncodingForColumn,
|
4247
|
+
buildMeasures
|
4248
|
+
], [
|
4249
|
+
encodingForColumn,
|
4250
|
+
buildMeasures
|
4251
|
+
]),
|
4126
4252
|
pivotAdapter([
|
4127
4253
|
reshapeWithEncoding
|
4128
4254
|
], [
|
@@ -4199,6 +4325,17 @@ const registerColumnPercent = ()=>{
|
|
4199
4325
|
Builder._advancedPipelineMap.columnPercent = columnPercentAdvancedPipeline;
|
4200
4326
|
Builder._specPipelineMap.columnPercent = columnPercentSpecPipeline;
|
4201
4327
|
};
|
4328
|
+
const defaultEncodingForBar = (advancedVSeed)=>{
|
4329
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
4330
|
+
const measures = findAllMeasures(vseedMeasures);
|
4331
|
+
const encoding = {};
|
4332
|
+
bar_generateDefaultDimensionEncoding(dimensions, encoding);
|
4333
|
+
bar_generateDefaultMeasureEncoding(measures, encoding);
|
4334
|
+
return {
|
4335
|
+
...advancedVSeed,
|
4336
|
+
encoding
|
4337
|
+
};
|
4338
|
+
};
|
4202
4339
|
const encodingForBar = (advancedVSeed)=>{
|
4203
4340
|
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
4204
4341
|
const measures = findAllMeasures(vseedMeasures);
|
@@ -4214,39 +4351,45 @@ const encodingForBar = (advancedVSeed)=>{
|
|
4214
4351
|
encoding
|
4215
4352
|
};
|
4216
4353
|
};
|
4217
|
-
const bar_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
4218
|
-
encoding.tooltip = unique(measures.map((item)=>item.id));
|
4219
|
-
encoding.x = unique(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
4220
|
-
};
|
4221
4354
|
const bar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
4222
4355
|
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
4223
4356
|
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
4224
4357
|
encoding.y = uniqueDimIds.slice(0, 1);
|
4225
4358
|
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
4226
4359
|
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
4227
|
-
encoding.tooltip = uniqueDimIds;
|
4360
|
+
encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
|
4228
4361
|
encoding.label = [];
|
4229
4362
|
encoding.row = [];
|
4230
4363
|
encoding.column = [];
|
4231
4364
|
};
|
4232
|
-
const bar_generateMeasureEncoding = (measures, encoding)=>{
|
4233
|
-
encoding.tooltip = measures.map((item)=>item.id);
|
4234
|
-
encoding.x = unique(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
4235
|
-
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
4236
|
-
if (color.length > 0) encoding.color = color;
|
4237
|
-
return encoding;
|
4238
|
-
};
|
4239
4365
|
const bar_generateDimensionEncoding = (dimensions, encoding)=>{
|
4240
4366
|
encoding.y = unique(dimensions.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
|
4241
|
-
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
4242
|
-
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
4243
4367
|
if (0 === encoding.y.length) encoding.y = [
|
4244
4368
|
dimensions[0].id
|
4245
4369
|
];
|
4370
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
4246
4371
|
if (0 === encoding.color.length) encoding.color = [
|
4247
4372
|
MeasureName
|
4248
4373
|
];
|
4249
|
-
|
4374
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
4375
|
+
if (0 === encoding.detail.length) encoding.detail = [
|
4376
|
+
MeasureName
|
4377
|
+
];
|
4378
|
+
encoding.tooltip = unique(dimensions.map((item)=>item.id));
|
4379
|
+
encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
|
4380
|
+
};
|
4381
|
+
const bar_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
4382
|
+
encoding.x = unique(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
4383
|
+
};
|
4384
|
+
const bar_generateMeasureEncoding = (measures, encoding)=>{
|
4385
|
+
encoding.x = unique(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
4386
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
4387
|
+
if (color.length > 0) encoding.color = color;
|
4388
|
+
const tooltip = unique(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
|
4389
|
+
encoding.tooltip = unique([
|
4390
|
+
...encoding.tooltip || [],
|
4391
|
+
...tooltip
|
4392
|
+
]);
|
4250
4393
|
};
|
4251
4394
|
const sortYBandAxis = (advancedVSeed, context)=>{
|
4252
4395
|
const result = {
|
@@ -4266,11 +4409,16 @@ const sortYBandAxis = (advancedVSeed, context)=>{
|
|
4266
4409
|
};
|
4267
4410
|
const barAdvancedPipeline = [
|
4268
4411
|
initAdvancedVSeed_initAdvancedVSeed,
|
4269
|
-
|
4270
|
-
|
4271
|
-
|
4272
|
-
|
4273
|
-
|
4412
|
+
default_defaultMeasures_defaultMeasures,
|
4413
|
+
defaultDimensions_defaultDimensions,
|
4414
|
+
defaultMeasureName_defaultMeasureName,
|
4415
|
+
encodingAdapter([
|
4416
|
+
defaultEncodingForBar,
|
4417
|
+
buildMeasures
|
4418
|
+
], [
|
4419
|
+
encodingForBar,
|
4420
|
+
buildMeasures
|
4421
|
+
]),
|
4274
4422
|
pivotAdapter([
|
4275
4423
|
reshapeWithEncoding
|
4276
4424
|
], [
|
@@ -4421,7 +4569,7 @@ const xLinear = (spec, context)=>{
|
|
4421
4569
|
}
|
4422
4570
|
},
|
4423
4571
|
innerOffset: {
|
4424
|
-
right:
|
4572
|
+
right: 7
|
4425
4573
|
}
|
4426
4574
|
};
|
4427
4575
|
result.axes = [
|
@@ -4621,11 +4769,16 @@ const registerBar = ()=>{
|
|
4621
4769
|
};
|
4622
4770
|
const barParallelAdvancedPipeline = [
|
4623
4771
|
initAdvancedVSeed_initAdvancedVSeed,
|
4624
|
-
|
4625
|
-
|
4626
|
-
|
4627
|
-
|
4628
|
-
|
4772
|
+
default_defaultMeasures_defaultMeasures,
|
4773
|
+
defaultDimensions_defaultDimensions,
|
4774
|
+
defaultMeasureName_defaultMeasureName,
|
4775
|
+
encodingAdapter([
|
4776
|
+
defaultEncodingForBar,
|
4777
|
+
buildMeasures
|
4778
|
+
], [
|
4779
|
+
encodingForBar,
|
4780
|
+
buildMeasures
|
4781
|
+
]),
|
4629
4782
|
pivotAdapter([
|
4630
4783
|
reshapeWithEncoding
|
4631
4784
|
], [
|
@@ -4719,11 +4872,16 @@ const registerBarParallel = ()=>{
|
|
4719
4872
|
};
|
4720
4873
|
const barPercentAdvancedPipeline = [
|
4721
4874
|
initAdvancedVSeed_initAdvancedVSeed,
|
4722
|
-
|
4723
|
-
|
4724
|
-
|
4725
|
-
|
4726
|
-
|
4875
|
+
default_defaultMeasures_defaultMeasures,
|
4876
|
+
defaultDimensions_defaultDimensions,
|
4877
|
+
defaultMeasureName_defaultMeasureName,
|
4878
|
+
encodingAdapter([
|
4879
|
+
defaultEncodingForBar,
|
4880
|
+
buildMeasures
|
4881
|
+
], [
|
4882
|
+
encodingForBar,
|
4883
|
+
buildMeasures
|
4884
|
+
]),
|
4727
4885
|
pivotAdapter([
|
4728
4886
|
reshapeWithEncoding
|
4729
4887
|
], [
|
@@ -4792,11 +4950,16 @@ const registerBarPercent = ()=>{
|
|
4792
4950
|
};
|
4793
4951
|
const areaAdvancedPipeline = [
|
4794
4952
|
initAdvancedVSeed_initAdvancedVSeed,
|
4795
|
-
|
4796
|
-
|
4797
|
-
|
4798
|
-
|
4799
|
-
|
4953
|
+
default_defaultMeasures_defaultMeasures,
|
4954
|
+
defaultDimensions_defaultDimensions,
|
4955
|
+
defaultMeasureName_defaultMeasureName,
|
4956
|
+
encodingAdapter([
|
4957
|
+
defaultEncodingForLine,
|
4958
|
+
buildMeasures
|
4959
|
+
], [
|
4960
|
+
encodingForLine,
|
4961
|
+
buildMeasures
|
4962
|
+
]),
|
4800
4963
|
pivotAdapter([
|
4801
4964
|
reshapeWithEncoding
|
4802
4965
|
], [
|
@@ -4952,11 +5115,16 @@ const registerArea = ()=>{
|
|
4952
5115
|
};
|
4953
5116
|
const areaPercentAdvancedPipeline = [
|
4954
5117
|
initAdvancedVSeed_initAdvancedVSeed,
|
4955
|
-
|
4956
|
-
|
4957
|
-
|
4958
|
-
|
4959
|
-
|
5118
|
+
default_defaultMeasures_defaultMeasures,
|
5119
|
+
defaultDimensions_defaultDimensions,
|
5120
|
+
defaultMeasureName_defaultMeasureName,
|
5121
|
+
encodingAdapter([
|
5122
|
+
defaultEncodingForLine,
|
5123
|
+
buildMeasures
|
5124
|
+
], [
|
5125
|
+
encodingForLine,
|
5126
|
+
buildMeasures
|
5127
|
+
]),
|
4960
5128
|
pivotAdapter([
|
4961
5129
|
reshapeWithEncoding
|
4962
5130
|
], [
|
@@ -5030,6 +5198,17 @@ const registerAreaPercent = ()=>{
|
|
5030
5198
|
Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
|
5031
5199
|
Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
|
5032
5200
|
};
|
5201
|
+
const defaultEncodingForScatter = (advancedVSeed)=>{
|
5202
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
5203
|
+
const measures = findAllMeasures(vseedMeasures);
|
5204
|
+
const encoding = {};
|
5205
|
+
scatter_generateDefaultDimensionEncoding(dimensions, encoding);
|
5206
|
+
scatter_generateDefaultMeasureEncoding(measures, encoding);
|
5207
|
+
return {
|
5208
|
+
...advancedVSeed,
|
5209
|
+
encoding
|
5210
|
+
};
|
5211
|
+
};
|
5033
5212
|
const encodingForScatter = (advancedVSeed)=>{
|
5034
5213
|
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
5035
5214
|
const measures = findAllMeasures(vseedMeasures);
|
@@ -5045,33 +5224,43 @@ const encodingForScatter = (advancedVSeed)=>{
|
|
5045
5224
|
encoding
|
5046
5225
|
};
|
5047
5226
|
};
|
5048
|
-
const scatter_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
5049
|
-
encoding.tooltip = unique(measures.map((item)=>item.id));
|
5050
|
-
encoding.y = unique(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5051
|
-
};
|
5052
5227
|
const scatter_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
5053
5228
|
const dimensionsWithoutMeasureName = dimensions.filter((item)=>item.id !== MeasureName);
|
5054
5229
|
const uniqueDimIds = unique(dimensionsWithoutMeasureName.map((d)=>d.id));
|
5055
5230
|
encoding.color = uniqueDimIds.slice(0);
|
5056
5231
|
encoding.detail = uniqueDimIds.slice(0);
|
5057
|
-
encoding.tooltip = uniqueDimIds;
|
5232
|
+
encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
|
5058
5233
|
encoding.label = [];
|
5059
5234
|
encoding.row = [];
|
5060
5235
|
encoding.column = [];
|
5061
5236
|
};
|
5062
|
-
const scatter_generateMeasureEncoding = (measures, encoding)=>{
|
5063
|
-
encoding.tooltip = measures.map((item)=>item.id);
|
5064
|
-
encoding.y = unique(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5065
|
-
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5066
|
-
if (color.length > 0) encoding.color = color;
|
5067
|
-
};
|
5068
5237
|
const scatter_generateDimensionEncoding = (dimensions, encoding)=>{
|
5069
5238
|
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5070
|
-
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
5071
5239
|
if (0 === encoding.color.length) encoding.color = [
|
5072
5240
|
MeasureName
|
5073
5241
|
];
|
5074
|
-
|
5242
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
5243
|
+
if (0 === encoding.detail.length) encoding.detail = [
|
5244
|
+
MeasureName
|
5245
|
+
];
|
5246
|
+
encoding.tooltip = unique(dimensions.map((item)=>item.id));
|
5247
|
+
encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
|
5248
|
+
};
|
5249
|
+
const scatter_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
5250
|
+
encoding.y = unique(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5251
|
+
};
|
5252
|
+
const scatter_generateMeasureEncoding = (measures, encoding)=>{
|
5253
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
5254
|
+
encoding.y = unique(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5255
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5256
|
+
if (color.length > 0) encoding.color = [
|
5257
|
+
color[0]
|
5258
|
+
];
|
5259
|
+
const tooltip = unique(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
|
5260
|
+
encoding.tooltip = unique([
|
5261
|
+
...encoding.tooltip || [],
|
5262
|
+
...tooltip
|
5263
|
+
]);
|
5075
5264
|
};
|
5076
5265
|
const buildMeasuresForScatter = (advancedVSeed, context)=>{
|
5077
5266
|
const { vseed } = context;
|
@@ -5099,9 +5288,10 @@ const basicMeasuresToScatterMeasures = (basicMeasures)=>{
|
|
5099
5288
|
const isXAxis = encoding.includes('xAxis');
|
5100
5289
|
if (isYAxis) yMeasures.push(item);
|
5101
5290
|
else if (isXAxis) xMeasures.push(item);
|
5102
|
-
else if (0
|
5291
|
+
else if (0 !== index) yMeasures.push(item);
|
5103
5292
|
else xMeasures.push(item);
|
5104
5293
|
}
|
5294
|
+
if (0 === yMeasures.length && xMeasures.length > 0) yMeasures.push(xMeasures[0]);
|
5105
5295
|
return [
|
5106
5296
|
{
|
5107
5297
|
id: 'scatterMeasures',
|
@@ -5167,7 +5357,7 @@ const buildMeasuresForScatter_generateMeasuresByParentId = (measures)=>{
|
|
5167
5357
|
const isEmpty = !encoding.length;
|
5168
5358
|
if (isY) scatterChart.yMeasures.push(item);
|
5169
5359
|
else if (isX) scatterChart.xMeasures.push(item);
|
5170
|
-
else if (isEmpty) if (0
|
5360
|
+
else if (isEmpty) if (0 !== scatterChart.yMeasures.length) scatterChart.yMeasures.push(item);
|
5171
5361
|
else scatterChart.xMeasures.push(item);
|
5172
5362
|
});
|
5173
5363
|
return scatterMeasuresToMeasureTree(scatterMeasures);
|
@@ -5190,6 +5380,7 @@ const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
|
5190
5380
|
if (xMeasures && xMeasures.children) {
|
5191
5381
|
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (d)=>d.id), uniqueBy(xMeasures.children, (d)=>d.id), encoding, {
|
5192
5382
|
foldMeasureValue: FoldXMeasureValue,
|
5383
|
+
foldMeasureId: FoldXMeasureId,
|
5193
5384
|
colorItemAsId: true,
|
5194
5385
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
5195
5386
|
});
|
@@ -5200,6 +5391,7 @@ const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
|
5200
5391
|
if (yMeasures && yMeasures.children) {
|
5201
5392
|
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(datasets[0], uniqueBy(dimensions, (d)=>d.id), uniqueBy(yMeasures.children, (d)=>d.id), encoding, {
|
5202
5393
|
foldMeasureValue: FoldYMeasureValue,
|
5394
|
+
foldMeasureId: FoldYMeasureId,
|
5203
5395
|
colorItemAsId: true,
|
5204
5396
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
5205
5397
|
});
|
@@ -5302,11 +5494,16 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
|
5302
5494
|
};
|
5303
5495
|
const scatterAdvancedPipeline = [
|
5304
5496
|
initAdvancedVSeed_initAdvancedVSeed,
|
5305
|
-
|
5306
|
-
|
5307
|
-
|
5308
|
-
|
5309
|
-
|
5497
|
+
default_defaultMeasures_defaultMeasures,
|
5498
|
+
defaultDimensions_defaultDimensions,
|
5499
|
+
defaultMeasureName_defaultMeasureName,
|
5500
|
+
encodingAdapter([
|
5501
|
+
defaultEncodingForScatter,
|
5502
|
+
buildMeasuresForScatter
|
5503
|
+
], [
|
5504
|
+
encodingForScatter,
|
5505
|
+
buildMeasuresForScatter
|
5506
|
+
]),
|
5310
5507
|
pivotAdapter([
|
5311
5508
|
reshapeWithScatterEncoding
|
5312
5509
|
], [
|
@@ -5352,6 +5549,105 @@ const datasetScatter = (spec, context)=>{
|
|
5352
5549
|
}
|
5353
5550
|
};
|
5354
5551
|
};
|
5552
|
+
const tooltipScatter = (spec, context)=>{
|
5553
|
+
const result = {
|
5554
|
+
...spec
|
5555
|
+
};
|
5556
|
+
const { advancedVSeed } = context;
|
5557
|
+
const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
|
5558
|
+
const baseConfig = advancedVSeed.config[chartType];
|
5559
|
+
const { tooltip = {
|
5560
|
+
enable: true
|
5561
|
+
} } = baseConfig;
|
5562
|
+
const { enable } = tooltip;
|
5563
|
+
const { foldInfoList } = datasetReshapeInfo[0];
|
5564
|
+
result.tooltip = {
|
5565
|
+
visible: enable,
|
5566
|
+
mark: {
|
5567
|
+
title: {
|
5568
|
+
visible: false
|
5569
|
+
},
|
5570
|
+
content: tooltipScatter_createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfoList)
|
5571
|
+
},
|
5572
|
+
dimension: {
|
5573
|
+
visible: false
|
5574
|
+
}
|
5575
|
+
};
|
5576
|
+
return result;
|
5577
|
+
};
|
5578
|
+
const tooltipScatter_createMarkContent = (tooltip, dimensions, measures, locale, foldInfoList)=>{
|
5579
|
+
const dims = dimensions.filter((item)=>tooltip.includes(item.id));
|
5580
|
+
const meas = measures.filter((item)=>tooltip.includes(item.id));
|
5581
|
+
const dimContent = dims.map((item)=>({
|
5582
|
+
visible: true,
|
5583
|
+
hasShape: true,
|
5584
|
+
shapeType: 'rectRound',
|
5585
|
+
key: (v)=>{
|
5586
|
+
const datum = v;
|
5587
|
+
if (item.alias || item.id) return item.alias || item.id;
|
5588
|
+
return datum && datum[item.id];
|
5589
|
+
},
|
5590
|
+
value: (v)=>{
|
5591
|
+
const datum = v;
|
5592
|
+
return datum && datum[item.id];
|
5593
|
+
}
|
5594
|
+
}));
|
5595
|
+
const meaContent = meas.map((item)=>({
|
5596
|
+
visible: true,
|
5597
|
+
hasShape: true,
|
5598
|
+
shapeType: 'rectRound',
|
5599
|
+
key: item.alias || item.id,
|
5600
|
+
value: (v)=>{
|
5601
|
+
const datum = v;
|
5602
|
+
if (!datum) return '';
|
5603
|
+
const id = item.id;
|
5604
|
+
if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) return '';
|
5605
|
+
const originalData = datum[ORIGINAL_DATA];
|
5606
|
+
const value = originalData[id];
|
5607
|
+
const measure = findMeasureById(measures, id);
|
5608
|
+
if (!measure) return String(value);
|
5609
|
+
const { format = {}, autoFormat = true } = measure;
|
5610
|
+
if (!external_remeda_isEmpty(format)) {
|
5611
|
+
const formatter = createFormatter(format);
|
5612
|
+
return formatter(value);
|
5613
|
+
}
|
5614
|
+
if (autoFormat) return autoFormatter(value, locale);
|
5615
|
+
return String(value);
|
5616
|
+
}
|
5617
|
+
}));
|
5618
|
+
const foldMeaContent = foldInfoList.map((foldInfo)=>({
|
5619
|
+
visible: true,
|
5620
|
+
hasShape: true,
|
5621
|
+
shapeType: 'rectRound',
|
5622
|
+
key: (v)=>{
|
5623
|
+
const { measureId, foldMap } = foldInfo;
|
5624
|
+
const datum = v;
|
5625
|
+
const id = datum[measureId];
|
5626
|
+
return foldMap[id] || id;
|
5627
|
+
},
|
5628
|
+
value: (v)=>{
|
5629
|
+
const { measureId, measureValue } = foldInfo;
|
5630
|
+
const datum = v;
|
5631
|
+
if (!datum) return '';
|
5632
|
+
const value = datum[measureValue];
|
5633
|
+
const id = datum[measureId];
|
5634
|
+
const measure = findMeasureById(measures, id);
|
5635
|
+
if (!measure) return String(value);
|
5636
|
+
const { format = {}, autoFormat = true } = measure;
|
5637
|
+
if (!external_remeda_isEmpty(format)) {
|
5638
|
+
const formatter = createFormatter(format);
|
5639
|
+
return formatter(value);
|
5640
|
+
}
|
5641
|
+
if (autoFormat) return autoFormatter(value, locale);
|
5642
|
+
return String(value);
|
5643
|
+
}
|
5644
|
+
}));
|
5645
|
+
return [
|
5646
|
+
...dimContent,
|
5647
|
+
...foldMeaContent,
|
5648
|
+
...meaContent
|
5649
|
+
];
|
5650
|
+
};
|
5355
5651
|
const horizontalCrosshairLine = (spec, context)=>{
|
5356
5652
|
const result = {
|
5357
5653
|
...spec
|
@@ -5405,7 +5701,7 @@ const scatter = [
|
|
5405
5701
|
xLinear,
|
5406
5702
|
yLinear,
|
5407
5703
|
label_label,
|
5408
|
-
|
5704
|
+
tooltipScatter,
|
5409
5705
|
colorAdapter(discreteLegend, colorLegend),
|
5410
5706
|
verticalCrosshairLine,
|
5411
5707
|
horizontalCrosshairLine,
|
@@ -5430,7 +5726,7 @@ const pivotScatter = [
|
|
5430
5726
|
xLinear,
|
5431
5727
|
yLinear,
|
5432
5728
|
label_label,
|
5433
|
-
|
5729
|
+
tooltipScatter,
|
5434
5730
|
verticalCrosshairLine,
|
5435
5731
|
horizontalCrosshairLine,
|
5436
5732
|
colorPointStyleFill(pointStyle_pointStyle),
|
@@ -5451,6 +5747,17 @@ const registerScatter = ()=>{
|
|
5451
5747
|
Builder._advancedPipelineMap.scatter = scatterAdvancedPipeline;
|
5452
5748
|
Builder._specPipelineMap.scatter = scatterSpecPipeline;
|
5453
5749
|
};
|
5750
|
+
const defaultEncodingForDualAxis = (advancedVSeed)=>{
|
5751
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
5752
|
+
const measures = findAllMeasures(vseedMeasures);
|
5753
|
+
const encoding = {};
|
5754
|
+
dualAxis_generateDefaultDimensionEncoding(dimensions, encoding);
|
5755
|
+
dualAxis_generateDefaultMeasureEncoding(measures, encoding);
|
5756
|
+
return {
|
5757
|
+
...advancedVSeed,
|
5758
|
+
encoding
|
5759
|
+
};
|
5760
|
+
};
|
5454
5761
|
const encodingForDualAxis = (advancedVSeed)=>{
|
5455
5762
|
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
5456
5763
|
const measures = findAllMeasures(vseedMeasures);
|
@@ -5466,39 +5773,45 @@ const encodingForDualAxis = (advancedVSeed)=>{
|
|
5466
5773
|
encoding
|
5467
5774
|
};
|
5468
5775
|
};
|
5469
|
-
const dualAxis_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
5470
|
-
encoding.tooltip = unique(measures.map((item)=>item.id));
|
5471
|
-
encoding.y = unique(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5472
|
-
};
|
5473
5776
|
const dualAxis_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
5474
5777
|
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
5475
5778
|
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
5476
5779
|
encoding.x = uniqueDimIds.slice(0, 1);
|
5477
5780
|
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
5478
5781
|
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
5479
|
-
encoding.tooltip = uniqueDimIds;
|
5782
|
+
encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
|
5480
5783
|
encoding.label = [];
|
5481
5784
|
encoding.row = [];
|
5482
5785
|
encoding.column = [];
|
5483
5786
|
};
|
5484
|
-
const dualAxis_generateMeasureEncoding = (measures, encoding)=>{
|
5485
|
-
encoding.tooltip = measures.map((item)=>item.id);
|
5486
|
-
encoding.y = unique(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5487
|
-
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5488
|
-
if (color.length > 0) encoding.color = color;
|
5489
|
-
return encoding;
|
5490
|
-
};
|
5491
5787
|
const dualAxis_generateDimensionEncoding = (dimensions, encoding)=>{
|
5492
5788
|
encoding.x = unique(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
|
5493
|
-
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5494
|
-
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
5495
5789
|
if (0 === encoding.x.length) encoding.x = [
|
5496
5790
|
dimensions[0].id
|
5497
5791
|
];
|
5792
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5498
5793
|
if (0 === encoding.color.length) encoding.color = [
|
5499
5794
|
MeasureName
|
5500
5795
|
];
|
5501
|
-
|
5796
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
5797
|
+
if (0 === encoding.detail.length) encoding.detail = [
|
5798
|
+
MeasureName
|
5799
|
+
];
|
5800
|
+
encoding.tooltip = unique(dimensions.map((item)=>item.id));
|
5801
|
+
encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
|
5802
|
+
};
|
5803
|
+
const dualAxis_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
5804
|
+
encoding.y = unique(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5805
|
+
};
|
5806
|
+
const dualAxis_generateMeasureEncoding = (measures, encoding)=>{
|
5807
|
+
encoding.y = unique(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5808
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5809
|
+
if (color.length > 0) encoding.color = color;
|
5810
|
+
const tooltip = unique(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
|
5811
|
+
encoding.tooltip = unique([
|
5812
|
+
...encoding.tooltip || [],
|
5813
|
+
...tooltip
|
5814
|
+
]);
|
5502
5815
|
};
|
5503
5816
|
const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
|
5504
5817
|
const { vseed } = context;
|
@@ -5752,11 +6065,16 @@ const dualAxisConfig = (advancedVSeed, context)=>{
|
|
5752
6065
|
};
|
5753
6066
|
const dualAxisAdvancedPipeline = [
|
5754
6067
|
initAdvancedVSeed_initAdvancedVSeed,
|
5755
|
-
|
5756
|
-
|
5757
|
-
|
5758
|
-
|
5759
|
-
|
6068
|
+
default_defaultMeasures_defaultMeasures,
|
6069
|
+
defaultDimensions_defaultDimensions,
|
6070
|
+
defaultMeasureName_defaultMeasureName,
|
6071
|
+
encodingAdapter([
|
6072
|
+
defaultEncodingForDualAxis,
|
6073
|
+
buildMeasuresForDualAxis
|
6074
|
+
], [
|
6075
|
+
encodingForDualAxis,
|
6076
|
+
buildMeasuresForDualAxis
|
6077
|
+
]),
|
5760
6078
|
pivotAdapter([
|
5761
6079
|
reshapeWithDualEncoding
|
5762
6080
|
], [
|
@@ -5848,7 +6166,7 @@ const initDualAxisSecondary = (spec, context)=>{
|
|
5848
6166
|
const dualChartTypePrimary = (spec, context)=>{
|
5849
6167
|
const result = {
|
5850
6168
|
...spec,
|
5851
|
-
zIndex:
|
6169
|
+
zIndex: 1001
|
5852
6170
|
};
|
5853
6171
|
const { advancedVSeed, vseed } = context;
|
5854
6172
|
const { chartType } = vseed;
|
@@ -5868,7 +6186,7 @@ const dualChartTypePrimary = (spec, context)=>{
|
|
5868
6186
|
break;
|
5869
6187
|
case 'column':
|
5870
6188
|
result.type = 'bar';
|
5871
|
-
result.zIndex =
|
6189
|
+
result.zIndex = 1000;
|
5872
6190
|
break;
|
5873
6191
|
case 'columnParallel':
|
5874
6192
|
{
|
@@ -5879,7 +6197,7 @@ const dualChartTypePrimary = (spec, context)=>{
|
|
5879
6197
|
datasetReshapeInfo[0].unfoldInfo.encodingDetail
|
5880
6198
|
];
|
5881
6199
|
columnSpec.type = 'bar';
|
5882
|
-
result.zIndex =
|
6200
|
+
result.zIndex = 1000;
|
5883
6201
|
break;
|
5884
6202
|
}
|
5885
6203
|
case 'columnPercent':
|
@@ -5904,7 +6222,7 @@ const dualChartTypePrimary = (spec, context)=>{
|
|
5904
6222
|
const dualChartTypeSecondary = (spec, context)=>{
|
5905
6223
|
const result = {
|
5906
6224
|
...spec,
|
5907
|
-
zIndex:
|
6225
|
+
zIndex: 1001
|
5908
6226
|
};
|
5909
6227
|
const { advancedVSeed, vseed } = context;
|
5910
6228
|
const { chartType } = vseed;
|
@@ -5924,7 +6242,7 @@ const dualChartTypeSecondary = (spec, context)=>{
|
|
5924
6242
|
break;
|
5925
6243
|
case 'column':
|
5926
6244
|
result.type = 'bar';
|
5927
|
-
result.zIndex =
|
6245
|
+
result.zIndex = 1000;
|
5928
6246
|
break;
|
5929
6247
|
case 'columnParallel':
|
5930
6248
|
{
|
@@ -5935,7 +6253,7 @@ const dualChartTypeSecondary = (spec, context)=>{
|
|
5935
6253
|
datasetReshapeInfo[0].unfoldInfo.encodingDetail
|
5936
6254
|
];
|
5937
6255
|
columnSpec.type = 'bar';
|
5938
|
-
result.zIndex =
|
6256
|
+
result.zIndex = 1000;
|
5939
6257
|
break;
|
5940
6258
|
}
|
5941
6259
|
case 'columnPercent':
|
@@ -6113,7 +6431,7 @@ const tooltipPrimary = (spec, context)=>{
|
|
6113
6431
|
...spec
|
6114
6432
|
};
|
6115
6433
|
const { advancedVSeed } = context;
|
6116
|
-
const { measures, datasetReshapeInfo, chartType, locale, dimensions } = advancedVSeed;
|
6434
|
+
const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
|
6117
6435
|
const baseConfig = advancedVSeed.config[chartType];
|
6118
6436
|
const { tooltip = {
|
6119
6437
|
enable: true
|
@@ -6121,68 +6439,19 @@ const tooltipPrimary = (spec, context)=>{
|
|
6121
6439
|
const { enable } = tooltip;
|
6122
6440
|
const foldInfoList = datasetReshapeInfo[0].foldInfoList;
|
6123
6441
|
const unfoldInfo = datasetReshapeInfo[0].unfoldInfo;
|
6124
|
-
const { measureId, measureValue, measureName } = foldInfoList[0];
|
6125
|
-
const { encodingColor: colorName } = unfoldInfo;
|
6126
6442
|
result.tooltip = {
|
6127
6443
|
visible: enable,
|
6128
6444
|
mark: {
|
6129
6445
|
title: {
|
6130
|
-
visible:
|
6446
|
+
visible: false
|
6131
6447
|
},
|
6132
|
-
content: [
|
6133
|
-
...dimensions.map((item)=>({
|
6134
|
-
visible: true,
|
6135
|
-
hasShape: true,
|
6136
|
-
shapeType: 'rectRound',
|
6137
|
-
key: (datum)=>{
|
6138
|
-
if (item.alias || item.id) return item.alias || item.id;
|
6139
|
-
return datum && datum[item.id];
|
6140
|
-
},
|
6141
|
-
value: (datum)=>datum && datum[item.id]
|
6142
|
-
})),
|
6143
|
-
{
|
6144
|
-
visible: true,
|
6145
|
-
hasShape: true,
|
6146
|
-
key: (datum)=>datum && datum[measureName || colorName] || '',
|
6147
|
-
value: (datum)=>{
|
6148
|
-
if (!datum) return '';
|
6149
|
-
const value = datum[measureValue];
|
6150
|
-
const id = datum[measureId];
|
6151
|
-
const measure = findMeasureById(measures, id);
|
6152
|
-
if (!measure) return String(value);
|
6153
|
-
const { format = {}, autoFormat = true } = measure;
|
6154
|
-
if (!external_remeda_isEmpty(format)) {
|
6155
|
-
const formatter = createFormatter(format);
|
6156
|
-
return formatter(value);
|
6157
|
-
}
|
6158
|
-
if (autoFormat) return autoFormatter(value, locale);
|
6159
|
-
return String(value);
|
6160
|
-
}
|
6161
|
-
}
|
6162
|
-
]
|
6448
|
+
content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfoList[0], unfoldInfo)
|
6163
6449
|
},
|
6164
6450
|
dimension: {
|
6165
|
-
|
6166
|
-
|
6167
|
-
|
6168
|
-
|
6169
|
-
value: (datum)=>{
|
6170
|
-
if (!datum) return '';
|
6171
|
-
const value = datum[measureValue];
|
6172
|
-
const id = datum[measureId];
|
6173
|
-
const measure = findMeasureById(measures, id);
|
6174
|
-
if (!measure) return String(value);
|
6175
|
-
const { format = {}, autoFormat = true } = measure;
|
6176
|
-
if (!external_remeda_isEmpty(format)) {
|
6177
|
-
const formatter = createFormatter(format);
|
6178
|
-
return formatter(value);
|
6179
|
-
}
|
6180
|
-
if (autoFormat) return autoFormatter(value, locale);
|
6181
|
-
return String(value);
|
6182
|
-
},
|
6183
|
-
shapeType: 'rectRound'
|
6184
|
-
}
|
6185
|
-
]
|
6451
|
+
title: {
|
6452
|
+
visible: true
|
6453
|
+
},
|
6454
|
+
content: createDimensionContent(measures, foldInfoList[0], unfoldInfo, locale)
|
6186
6455
|
}
|
6187
6456
|
};
|
6188
6457
|
return result;
|
@@ -6192,7 +6461,7 @@ const tooltipSecondary = (spec, context)=>{
|
|
6192
6461
|
...spec
|
6193
6462
|
};
|
6194
6463
|
const { advancedVSeed } = context;
|
6195
|
-
const { measures, datasetReshapeInfo, chartType, locale, dimensions } = advancedVSeed;
|
6464
|
+
const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
|
6196
6465
|
const baseConfig = advancedVSeed.config[chartType];
|
6197
6466
|
const { tooltip = {
|
6198
6467
|
enable: true
|
@@ -6201,68 +6470,19 @@ const tooltipSecondary = (spec, context)=>{
|
|
6201
6470
|
if (isNullish(datasetReshapeInfo[0].foldInfoList?.[1])) return result;
|
6202
6471
|
const foldInfoList = datasetReshapeInfo[0].foldInfoList;
|
6203
6472
|
const unfoldInfo = datasetReshapeInfo[0].unfoldInfo;
|
6204
|
-
const { measureId, measureValue, measureName } = foldInfoList[1];
|
6205
|
-
const { encodingColorId } = unfoldInfo;
|
6206
6473
|
result.tooltip = {
|
6207
6474
|
visible: enable,
|
6208
6475
|
mark: {
|
6209
6476
|
title: {
|
6210
|
-
visible:
|
6477
|
+
visible: false
|
6211
6478
|
},
|
6212
|
-
content: [
|
6213
|
-
...dimensions.map((item)=>({
|
6214
|
-
visible: true,
|
6215
|
-
hasShape: true,
|
6216
|
-
shapeType: 'rectRound',
|
6217
|
-
key: (datum)=>{
|
6218
|
-
if (item.alias || item.id) return item.alias || item.id;
|
6219
|
-
return datum && datum[item.id];
|
6220
|
-
},
|
6221
|
-
value: (datum)=>datum && datum[item.id]
|
6222
|
-
})),
|
6223
|
-
{
|
6224
|
-
visible: true,
|
6225
|
-
hasShape: true,
|
6226
|
-
key: (datum)=>datum && datum[measureName || encodingColorId] || '',
|
6227
|
-
value: (datum)=>{
|
6228
|
-
if (!datum) return '';
|
6229
|
-
const value = datum[measureValue];
|
6230
|
-
const id = datum[measureId];
|
6231
|
-
const measure = findMeasureById(measures, id);
|
6232
|
-
if (!measure) return String(value);
|
6233
|
-
const { format = {}, autoFormat = true } = measure;
|
6234
|
-
if (!external_remeda_isEmpty(format)) {
|
6235
|
-
const formatter = createFormatter(format);
|
6236
|
-
return formatter(value);
|
6237
|
-
}
|
6238
|
-
if (autoFormat) return autoFormatter(value, locale);
|
6239
|
-
return String(value);
|
6240
|
-
}
|
6241
|
-
}
|
6242
|
-
]
|
6479
|
+
content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfoList[1], unfoldInfo)
|
6243
6480
|
},
|
6244
6481
|
dimension: {
|
6245
|
-
|
6246
|
-
|
6247
|
-
|
6248
|
-
|
6249
|
-
value: (datum)=>{
|
6250
|
-
if (!datum) return '';
|
6251
|
-
const value = datum[measureValue];
|
6252
|
-
const id = datum[measureId];
|
6253
|
-
const measure = findMeasureById(measures, id);
|
6254
|
-
if (!measure) return String(value);
|
6255
|
-
const { format = {}, autoFormat = true } = measure;
|
6256
|
-
if (!external_remeda_isEmpty(format)) {
|
6257
|
-
const formatter = createFormatter(format);
|
6258
|
-
return formatter(value);
|
6259
|
-
}
|
6260
|
-
if (autoFormat) return autoFormatter(value, locale);
|
6261
|
-
return String(value);
|
6262
|
-
},
|
6263
|
-
shapeType: 'rectRound'
|
6264
|
-
}
|
6265
|
-
]
|
6482
|
+
title: {
|
6483
|
+
visible: true
|
6484
|
+
},
|
6485
|
+
content: createDimensionContent(measures, foldInfoList[1], unfoldInfo, locale)
|
6266
6486
|
}
|
6267
6487
|
};
|
6268
6488
|
return result;
|
@@ -6279,7 +6499,8 @@ const yLinearPrimary = (spec, context)=>{
|
|
6279
6499
|
const yAxisConfig = Array.isArray(primaryYAxis) ? primaryYAxis[index] || primaryYAxis[0] : primaryYAxis;
|
6280
6500
|
const alignTicks = advancedVSeed.config?.[chartType]?.alignTicks;
|
6281
6501
|
const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks;
|
6282
|
-
if (foldInfoList?.[0]
|
6502
|
+
if (isNullish(foldInfoList?.[0])) return result;
|
6503
|
+
const isEmptySecondary = external_remeda_isEmpty(foldInfoList?.[0].foldMap);
|
6283
6504
|
const id = `${reshapeInfoId}-primary-axis`;
|
6284
6505
|
const seriesIds = [
|
6285
6506
|
`${reshapeInfoId}-primary-series`,
|
@@ -6302,7 +6523,7 @@ const yLinearPrimary = (spec, context)=>{
|
|
6302
6523
|
}
|
6303
6524
|
const { visible = true, label, tick, title, grid, line, zero, nice, inverse, max, min, log, logBase = 10 } = yAxisConfig;
|
6304
6525
|
const linearAxis = {
|
6305
|
-
visible,
|
6526
|
+
visible: isEmptySecondary ? false : visible,
|
6306
6527
|
id,
|
6307
6528
|
seriesId,
|
6308
6529
|
type: log ? 'log' : 'linear',
|
@@ -6355,7 +6576,7 @@ const yLinearPrimary = (spec, context)=>{
|
|
6355
6576
|
}
|
6356
6577
|
},
|
6357
6578
|
innerOffset: {
|
6358
|
-
top:
|
6579
|
+
top: 7
|
6359
6580
|
}
|
6360
6581
|
};
|
6361
6582
|
result.axes = [
|
@@ -6377,6 +6598,8 @@ const yLinearSecondary = (spec, context)=>{
|
|
6377
6598
|
const alignTicks = advancedVSeed.config?.[chartType]?.alignTicks;
|
6378
6599
|
const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks;
|
6379
6600
|
if (isNullish(foldInfoList?.[1])) return result;
|
6601
|
+
const isEmptySecondary = external_remeda_isEmpty(foldInfoList?.[1].foldMap);
|
6602
|
+
const onlySecondary = external_remeda_isEmpty(foldInfoList?.[0].foldMap) && !isEmptySecondary;
|
6380
6603
|
const sync = {
|
6381
6604
|
axisId: `${reshapeInfoId}-primary-axis`,
|
6382
6605
|
zeroAlign: true
|
@@ -6404,7 +6627,7 @@ const yLinearSecondary = (spec, context)=>{
|
|
6404
6627
|
}
|
6405
6628
|
const { visible = true, label, tick, title, grid, line, zero, nice, inverse, max, min, log, logBase = 10 } = yAxisConfig;
|
6406
6629
|
const linearAxis = {
|
6407
|
-
visible,
|
6630
|
+
visible: isEmptySecondary ? false : visible,
|
6408
6631
|
id,
|
6409
6632
|
seriesId,
|
6410
6633
|
sync,
|
@@ -6444,7 +6667,7 @@ const yLinearSecondary = (spec, context)=>{
|
|
6444
6667
|
}
|
6445
6668
|
},
|
6446
6669
|
grid: {
|
6447
|
-
visible: grid?.visible,
|
6670
|
+
visible: onlySecondary ? true : grid?.visible,
|
6448
6671
|
style: {
|
6449
6672
|
lineWidth: grid?.gridWidth,
|
6450
6673
|
stroke: grid?.gridColor
|
@@ -6458,7 +6681,7 @@ const yLinearSecondary = (spec, context)=>{
|
|
6458
6681
|
}
|
6459
6682
|
},
|
6460
6683
|
innerOffset: {
|
6461
|
-
top:
|
6684
|
+
top: 7
|
6462
6685
|
}
|
6463
6686
|
};
|
6464
6687
|
result.axes = [
|
@@ -6589,6 +6812,17 @@ const registerDualAxis = ()=>{
|
|
6589
6812
|
Builder._advancedPipelineMap.dualAxis = dualAxisAdvancedPipeline;
|
6590
6813
|
Builder._specPipelineMap.dualAxis = dualAxisSpecPipeline;
|
6591
6814
|
};
|
6815
|
+
const defaultEncodingForPie = (advancedVSeed)=>{
|
6816
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
6817
|
+
const measures = findAllMeasures(vseedMeasures);
|
6818
|
+
const encoding = {};
|
6819
|
+
pie_generateDefaultDimensionEncoding(dimensions, encoding);
|
6820
|
+
pie_generateDefaultMeasureEncoding(measures, encoding);
|
6821
|
+
return {
|
6822
|
+
...advancedVSeed,
|
6823
|
+
encoding
|
6824
|
+
};
|
6825
|
+
};
|
6592
6826
|
const encodingForPie = (advancedVSeed)=>{
|
6593
6827
|
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
6594
6828
|
const measures = findAllMeasures(vseedMeasures);
|
@@ -6604,40 +6838,52 @@ const encodingForPie = (advancedVSeed)=>{
|
|
6604
6838
|
encoding
|
6605
6839
|
};
|
6606
6840
|
};
|
6607
|
-
const pie_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
6608
|
-
encoding.tooltip = unique(measures.map((item)=>item.id));
|
6609
|
-
encoding.angle = unique(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
|
6610
|
-
};
|
6611
6841
|
const pie_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
6612
6842
|
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
6613
6843
|
encoding.color = uniqueDimIds.slice(0);
|
6614
6844
|
encoding.detail = uniqueDimIds.slice(0);
|
6615
|
-
encoding.tooltip = uniqueDimIds;
|
6845
|
+
encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
|
6616
6846
|
encoding.label = [];
|
6617
6847
|
encoding.row = [];
|
6618
6848
|
encoding.column = [];
|
6619
6849
|
};
|
6620
|
-
const pie_generateMeasureEncoding = (measures, encoding)=>{
|
6621
|
-
encoding.tooltip = measures.map((item)=>item.id);
|
6622
|
-
encoding.angle = unique(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
|
6623
|
-
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
6624
|
-
if (color.length > 0) encoding.color = color;
|
6625
|
-
};
|
6626
6850
|
const pie_generateDimensionEncoding = (dimensions, encoding)=>{
|
6627
6851
|
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
6628
|
-
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
6629
6852
|
if (0 === encoding.color.length) encoding.color = [
|
6630
6853
|
MeasureName
|
6631
6854
|
];
|
6632
|
-
|
6855
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
6856
|
+
if (0 === encoding.detail.length) encoding.detail = [
|
6857
|
+
MeasureName
|
6858
|
+
];
|
6859
|
+
encoding.tooltip = unique(dimensions.map((item)=>item.id));
|
6860
|
+
encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
|
6861
|
+
};
|
6862
|
+
const pie_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
6863
|
+
encoding.angle = unique(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
|
6864
|
+
};
|
6865
|
+
const pie_generateMeasureEncoding = (measures, encoding)=>{
|
6866
|
+
encoding.angle = unique(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
|
6867
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
6868
|
+
if (color.length > 0) encoding.color = color;
|
6869
|
+
const tooltip = unique(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
|
6870
|
+
encoding.tooltip = unique([
|
6871
|
+
...encoding.tooltip || [],
|
6872
|
+
...tooltip
|
6873
|
+
]);
|
6633
6874
|
};
|
6634
6875
|
const pieAdvancedPipeline = [
|
6635
6876
|
initAdvancedVSeed_initAdvancedVSeed,
|
6636
|
-
|
6637
|
-
|
6638
|
-
|
6639
|
-
|
6640
|
-
|
6877
|
+
default_defaultMeasures_defaultMeasures,
|
6878
|
+
defaultDimensions_defaultDimensions,
|
6879
|
+
defaultMeasureName_defaultMeasureName,
|
6880
|
+
encodingAdapter([
|
6881
|
+
defaultEncodingForPie,
|
6882
|
+
buildMeasures
|
6883
|
+
], [
|
6884
|
+
encodingForPie,
|
6885
|
+
buildMeasures
|
6886
|
+
]),
|
6641
6887
|
pivotAdapter([
|
6642
6888
|
reshapeWithEncoding
|
6643
6889
|
], [
|
@@ -6753,11 +6999,16 @@ const registerPie = ()=>{
|
|
6753
6999
|
};
|
6754
7000
|
const donutAdvancedPipeline = [
|
6755
7001
|
initAdvancedVSeed_initAdvancedVSeed,
|
6756
|
-
|
6757
|
-
|
6758
|
-
|
6759
|
-
|
6760
|
-
|
7002
|
+
default_defaultMeasures_defaultMeasures,
|
7003
|
+
defaultDimensions_defaultDimensions,
|
7004
|
+
defaultMeasureName_defaultMeasureName,
|
7005
|
+
encodingAdapter([
|
7006
|
+
defaultEncodingForPie,
|
7007
|
+
buildMeasures
|
7008
|
+
], [
|
7009
|
+
encodingForPie,
|
7010
|
+
buildMeasures
|
7011
|
+
]),
|
6761
7012
|
pivotAdapter([
|
6762
7013
|
reshapeWithEncoding
|
6763
7014
|
], [
|
@@ -6833,6 +7084,17 @@ const registerDonut = ()=>{
|
|
6833
7084
|
Builder._advancedPipelineMap.donut = donutAdvancedPipeline;
|
6834
7085
|
Builder._specPipelineMap.donut = donutSpecPipeline;
|
6835
7086
|
};
|
7087
|
+
const defaultEncodingForRose = (advancedVSeed)=>{
|
7088
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
7089
|
+
const measures = findAllMeasures(vseedMeasures);
|
7090
|
+
const encoding = {};
|
7091
|
+
rose_generateDefaultDimensionEncoding(dimensions, encoding);
|
7092
|
+
rose_generateDefaultMeasureEncoding(measures, encoding);
|
7093
|
+
return {
|
7094
|
+
...advancedVSeed,
|
7095
|
+
encoding
|
7096
|
+
};
|
7097
|
+
};
|
6836
7098
|
const encodingForRose = (advancedVSeed)=>{
|
6837
7099
|
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
6838
7100
|
const measures = findAllMeasures(vseedMeasures);
|
@@ -6848,46 +7110,58 @@ const encodingForRose = (advancedVSeed)=>{
|
|
6848
7110
|
encoding
|
6849
7111
|
};
|
6850
7112
|
};
|
6851
|
-
const rose_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
6852
|
-
encoding.tooltip = unique(measures.map((item)=>item.id));
|
6853
|
-
encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
6854
|
-
};
|
6855
7113
|
const rose_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
6856
7114
|
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
6857
7115
|
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
6858
7116
|
encoding.angle = uniqueDimIds.slice(0, 1);
|
6859
7117
|
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
6860
7118
|
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
6861
|
-
encoding.tooltip = uniqueDimIds;
|
7119
|
+
encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
|
6862
7120
|
encoding.label = [];
|
6863
7121
|
encoding.row = [];
|
6864
7122
|
encoding.column = [];
|
6865
7123
|
};
|
6866
|
-
const rose_generateMeasureEncoding = (measures, encoding)=>{
|
6867
|
-
encoding.tooltip = measures.map((item)=>item.id);
|
6868
|
-
encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
6869
|
-
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
6870
|
-
if (color.length > 0) encoding.color = color;
|
6871
|
-
};
|
6872
7124
|
const rose_generateDimensionEncoding = (dimensions, encoding)=>{
|
6873
7125
|
encoding.angle = unique(dimensions.filter((item)=>'angle' === item.encoding).map((item)=>item.id));
|
6874
|
-
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
6875
|
-
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
6876
7126
|
if (0 === encoding.angle.length) encoding.angle = [
|
6877
7127
|
dimensions[0].id
|
6878
7128
|
];
|
7129
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
6879
7130
|
if (0 === encoding.color.length) encoding.color = [
|
6880
7131
|
MeasureName
|
6881
7132
|
];
|
6882
|
-
|
7133
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
7134
|
+
if (0 === encoding.detail.length) encoding.detail = [
|
7135
|
+
MeasureName
|
7136
|
+
];
|
7137
|
+
encoding.tooltip = unique(dimensions.map((item)=>item.id));
|
7138
|
+
encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
|
7139
|
+
};
|
7140
|
+
const rose_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
7141
|
+
encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
7142
|
+
};
|
7143
|
+
const rose_generateMeasureEncoding = (measures, encoding)=>{
|
7144
|
+
encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
7145
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7146
|
+
if (color.length > 0) encoding.color = color;
|
7147
|
+
const tooltip = unique(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
|
7148
|
+
encoding.tooltip = unique([
|
7149
|
+
...encoding.tooltip || [],
|
7150
|
+
...tooltip
|
7151
|
+
]);
|
6883
7152
|
};
|
6884
7153
|
const roseAdvancedPipeline = [
|
6885
7154
|
initAdvancedVSeed_initAdvancedVSeed,
|
6886
|
-
|
6887
|
-
|
6888
|
-
|
6889
|
-
|
6890
|
-
|
7155
|
+
default_defaultMeasures_defaultMeasures,
|
7156
|
+
defaultDimensions_defaultDimensions,
|
7157
|
+
defaultMeasureName_defaultMeasureName,
|
7158
|
+
encodingAdapter([
|
7159
|
+
defaultEncodingForRose,
|
7160
|
+
buildMeasures
|
7161
|
+
], [
|
7162
|
+
encodingForRose,
|
7163
|
+
buildMeasures
|
7164
|
+
]),
|
6891
7165
|
pivotAdapter([
|
6892
7166
|
reshapeWithEncoding
|
6893
7167
|
], [
|
@@ -7083,11 +7357,16 @@ const registerRose = ()=>{
|
|
7083
7357
|
};
|
7084
7358
|
const roseParallelAdvancedPipeline = [
|
7085
7359
|
initAdvancedVSeed_initAdvancedVSeed,
|
7086
|
-
|
7087
|
-
|
7088
|
-
|
7089
|
-
|
7090
|
-
|
7360
|
+
default_defaultMeasures_defaultMeasures,
|
7361
|
+
defaultDimensions_defaultDimensions,
|
7362
|
+
defaultMeasureName_defaultMeasureName,
|
7363
|
+
encodingAdapter([
|
7364
|
+
defaultEncodingForRose,
|
7365
|
+
buildMeasures
|
7366
|
+
], [
|
7367
|
+
encodingForRose,
|
7368
|
+
buildMeasures
|
7369
|
+
]),
|
7091
7370
|
pivotAdapter([
|
7092
7371
|
reshapeWithEncoding
|
7093
7372
|
], [
|
@@ -7193,6 +7472,17 @@ const registerRoseParallel = ()=>{
|
|
7193
7472
|
Builder._advancedPipelineMap.roseParallel = roseParallelAdvancedPipeline;
|
7194
7473
|
Builder._specPipelineMap.roseParallel = roseParallelSpecPipeline;
|
7195
7474
|
};
|
7475
|
+
const defaultEncodingForRadar = (advancedVSeed)=>{
|
7476
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
7477
|
+
const measures = findAllMeasures(vseedMeasures);
|
7478
|
+
const encoding = {};
|
7479
|
+
radar_generateDefaultDimensionEncoding(dimensions, encoding);
|
7480
|
+
radar_generateDefaultMeasureEncoding(measures, encoding);
|
7481
|
+
return {
|
7482
|
+
...advancedVSeed,
|
7483
|
+
encoding
|
7484
|
+
};
|
7485
|
+
};
|
7196
7486
|
const encodingForRadar = (advancedVSeed)=>{
|
7197
7487
|
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
7198
7488
|
const measures = findAllMeasures(vseedMeasures);
|
@@ -7208,44 +7498,57 @@ const encodingForRadar = (advancedVSeed)=>{
|
|
7208
7498
|
encoding
|
7209
7499
|
};
|
7210
7500
|
};
|
7211
|
-
const radar_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
7212
|
-
encoding.tooltip = unique(measures.map((item)=>item.id));
|
7213
|
-
encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
7214
|
-
};
|
7215
7501
|
const radar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
7216
7502
|
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
7217
7503
|
encoding.angle = uniqueDimIds.slice(0, 1);
|
7218
7504
|
encoding.color = uniqueDimIds.slice(1);
|
7219
|
-
encoding.tooltip = uniqueDimIds;
|
7505
|
+
encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
|
7220
7506
|
encoding.detail = [];
|
7221
7507
|
encoding.label = [];
|
7222
7508
|
encoding.row = [];
|
7223
7509
|
encoding.column = [];
|
7224
7510
|
};
|
7225
|
-
const radar_generateMeasureEncoding = (measures, encoding)=>{
|
7226
|
-
encoding.tooltip = measures.map((item)=>item.id);
|
7227
|
-
encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
7228
|
-
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7229
|
-
if (color.length > 0) encoding.color = color;
|
7230
|
-
};
|
7231
7511
|
const radar_generateDimensionEncoding = (dimensions, encoding)=>{
|
7232
7512
|
encoding.angle = unique(dimensions.filter((item)=>'angle' === item.encoding).map((item)=>item.id));
|
7233
|
-
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7234
|
-
encoding.detail = [];
|
7235
7513
|
if (0 === encoding.angle.length) encoding.angle = [
|
7236
7514
|
dimensions[0].id
|
7237
7515
|
];
|
7516
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7238
7517
|
if (0 === encoding.color.length) encoding.color = [
|
7239
7518
|
MeasureName
|
7240
7519
|
];
|
7520
|
+
encoding.detail = [];
|
7521
|
+
if (0 === encoding.detail.length) encoding.detail = [
|
7522
|
+
MeasureName
|
7523
|
+
];
|
7524
|
+
encoding.tooltip = unique(dimensions.map((item)=>item.id));
|
7525
|
+
encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
|
7526
|
+
};
|
7527
|
+
const radar_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
7528
|
+
encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
7529
|
+
};
|
7530
|
+
const radar_generateMeasureEncoding = (measures, encoding)=>{
|
7531
|
+
encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
7532
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7533
|
+
if (color.length > 0) encoding.color = color;
|
7534
|
+
const tooltip = unique(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
|
7535
|
+
encoding.tooltip = unique([
|
7536
|
+
...encoding.tooltip || [],
|
7537
|
+
...tooltip
|
7538
|
+
]);
|
7241
7539
|
};
|
7242
7540
|
const radarAdvancedPipeline = [
|
7243
7541
|
initAdvancedVSeed_initAdvancedVSeed,
|
7244
|
-
|
7245
|
-
|
7246
|
-
|
7247
|
-
|
7248
|
-
|
7542
|
+
default_defaultMeasures_defaultMeasures,
|
7543
|
+
defaultDimensions_defaultDimensions,
|
7544
|
+
defaultMeasureName_defaultMeasureName,
|
7545
|
+
encodingAdapter([
|
7546
|
+
defaultEncodingForRadar,
|
7547
|
+
buildMeasures
|
7548
|
+
], [
|
7549
|
+
encodingForRadar,
|
7550
|
+
buildMeasures
|
7551
|
+
]),
|
7249
7552
|
pivotAdapter([
|
7250
7553
|
reshapeWithEncoding
|
7251
7554
|
], [
|
@@ -7379,6 +7682,17 @@ const registerRadar = ()=>{
|
|
7379
7682
|
Builder._advancedPipelineMap.radar = radarAdvancedPipeline;
|
7380
7683
|
Builder._specPipelineMap.radar = radarSpecPipeline;
|
7381
7684
|
};
|
7685
|
+
const defaultEncodingForFunnel = (advancedVSeed)=>{
|
7686
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
7687
|
+
const measures = findAllMeasures(vseedMeasures);
|
7688
|
+
const encoding = {};
|
7689
|
+
funnel_generateDefaultDimensionEncoding(dimensions, encoding);
|
7690
|
+
funnel_generateDefaultMeasureEncoding(measures, encoding);
|
7691
|
+
return {
|
7692
|
+
...advancedVSeed,
|
7693
|
+
encoding
|
7694
|
+
};
|
7695
|
+
};
|
7382
7696
|
const encodingForFunnel = (advancedVSeed)=>{
|
7383
7697
|
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
7384
7698
|
const measures = findAllMeasures(vseedMeasures);
|
@@ -7394,40 +7708,54 @@ const encodingForFunnel = (advancedVSeed)=>{
|
|
7394
7708
|
encoding
|
7395
7709
|
};
|
7396
7710
|
};
|
7397
|
-
const funnel_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
7398
|
-
encoding.tooltip = unique(measures.map((item)=>item.id));
|
7399
|
-
encoding.size = unique(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
|
7400
|
-
};
|
7401
7711
|
const funnel_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
7402
7712
|
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
7403
7713
|
encoding.color = uniqueDimIds.slice(0);
|
7404
7714
|
encoding.detail = uniqueDimIds.slice(0);
|
7405
|
-
encoding.tooltip = uniqueDimIds;
|
7715
|
+
encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
|
7406
7716
|
encoding.label = [];
|
7407
7717
|
encoding.row = [];
|
7408
7718
|
encoding.column = [];
|
7409
7719
|
};
|
7410
|
-
const funnel_generateMeasureEncoding = (measures, encoding)=>{
|
7411
|
-
encoding.tooltip = measures.map((item)=>item.id);
|
7412
|
-
encoding.size = unique(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
|
7413
|
-
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7414
|
-
if (color.length > 0) encoding.color = color;
|
7415
|
-
};
|
7416
7720
|
const funnel_generateDimensionEncoding = (dimensions, encoding)=>{
|
7417
7721
|
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7418
|
-
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
7419
7722
|
if (0 === encoding.color.length) encoding.color = [
|
7420
7723
|
MeasureName
|
7421
7724
|
];
|
7422
|
-
|
7725
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
7726
|
+
if (0 === encoding.detail.length) encoding.detail = [
|
7727
|
+
MeasureName
|
7728
|
+
];
|
7729
|
+
encoding.tooltip = unique(dimensions.map((item)=>item.id));
|
7730
|
+
encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
|
7731
|
+
};
|
7732
|
+
const funnel_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
7733
|
+
encoding.size = unique(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
|
7734
|
+
};
|
7735
|
+
const funnel_generateMeasureEncoding = (measures, encoding)=>{
|
7736
|
+
encoding.size = unique(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
|
7737
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7738
|
+
if (color.length > 0) encoding.color = [
|
7739
|
+
color[0]
|
7740
|
+
];
|
7741
|
+
const tooltip = unique(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
|
7742
|
+
encoding.tooltip = unique([
|
7743
|
+
...encoding.tooltip || [],
|
7744
|
+
...tooltip
|
7745
|
+
]);
|
7423
7746
|
};
|
7424
7747
|
const funnelAdvancedPipeline = [
|
7425
7748
|
initAdvancedVSeed_initAdvancedVSeed,
|
7426
|
-
|
7427
|
-
|
7428
|
-
|
7429
|
-
|
7430
|
-
|
7749
|
+
default_defaultMeasures_defaultMeasures,
|
7750
|
+
defaultDimensions_defaultDimensions,
|
7751
|
+
defaultMeasureName_defaultMeasureName,
|
7752
|
+
encodingAdapter([
|
7753
|
+
defaultEncodingForFunnel,
|
7754
|
+
buildMeasures
|
7755
|
+
], [
|
7756
|
+
encodingForFunnel,
|
7757
|
+
buildMeasures
|
7758
|
+
]),
|
7431
7759
|
pivotAdapter([
|
7432
7760
|
reshapeWithEncoding
|
7433
7761
|
], [
|
@@ -7540,6 +7868,17 @@ const registerFunnel = ()=>{
|
|
7540
7868
|
Builder._advancedPipelineMap.funnel = funnelAdvancedPipeline;
|
7541
7869
|
Builder._specPipelineMap.funnel = funnelSpecPipeline;
|
7542
7870
|
};
|
7871
|
+
const defaultEncodingForHeatmap = (advancedVSeed)=>{
|
7872
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
7873
|
+
const measures = findAllMeasures(vseedMeasures);
|
7874
|
+
const encoding = {};
|
7875
|
+
heatmap_generateDefaultDimensionEncoding(dimensions, encoding);
|
7876
|
+
heatmap_generateDefaultMeasureEncoding(measures, encoding);
|
7877
|
+
return {
|
7878
|
+
...advancedVSeed,
|
7879
|
+
encoding
|
7880
|
+
};
|
7881
|
+
};
|
7543
7882
|
const encodingForHeatmap = (advancedVSeed)=>{
|
7544
7883
|
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
7545
7884
|
const measures = findAllMeasures(vseedMeasures);
|
@@ -7555,10 +7894,6 @@ const encodingForHeatmap = (advancedVSeed)=>{
|
|
7555
7894
|
encoding
|
7556
7895
|
};
|
7557
7896
|
};
|
7558
|
-
const heatmap_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
7559
|
-
encoding.tooltip = unique(measures.map((item)=>item.id));
|
7560
|
-
encoding.color = unique(measures.filter((item)=>'color' === item.encoding || !item.encoding).map((item)=>item.id));
|
7561
|
-
};
|
7562
7897
|
const heatmap_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
7563
7898
|
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
7564
7899
|
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
@@ -7566,39 +7901,59 @@ const heatmap_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
|
7566
7901
|
encoding.y = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
7567
7902
|
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
7568
7903
|
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
7569
|
-
encoding.tooltip = uniqueDimIds;
|
7904
|
+
encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
|
7570
7905
|
encoding.label = [];
|
7571
7906
|
encoding.row = [];
|
7572
7907
|
encoding.column = [];
|
7573
7908
|
};
|
7574
|
-
const heatmap_generateMeasureEncoding = (measures, encoding)=>{
|
7575
|
-
encoding.tooltip = measures.map((item)=>item.id);
|
7576
|
-
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7577
|
-
if (color.length > 0) encoding.color = color;
|
7578
|
-
return encoding;
|
7579
|
-
};
|
7580
7909
|
const heatmap_generateDimensionEncoding = (dimensions, encoding)=>{
|
7581
7910
|
encoding.x = unique(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
|
7582
|
-
encoding.y = unique(dimensions.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
|
7583
|
-
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7584
|
-
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
7585
7911
|
if (0 === encoding.x.length) encoding.x = [
|
7586
7912
|
dimensions[0].id
|
7587
7913
|
];
|
7914
|
+
encoding.y = unique(dimensions.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
|
7588
7915
|
if (0 === encoding.y.length) if (dimensions.length > 1) encoding.y = dimensions.slice(1).map((item)=>item.id);
|
7589
7916
|
else encoding.y = dimensions.slice(0).map((item)=>item.id);
|
7917
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7590
7918
|
if (0 === encoding.color.length) encoding.color = [
|
7591
7919
|
MeasureName
|
7592
7920
|
];
|
7593
|
-
|
7921
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
7922
|
+
if (0 === encoding.detail.length) encoding.detail = [
|
7923
|
+
MeasureName
|
7924
|
+
];
|
7925
|
+
encoding.tooltip = unique(dimensions.map((item)=>item.id));
|
7926
|
+
encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
|
7927
|
+
};
|
7928
|
+
const heatmap_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
7929
|
+
const colorDims = unique(measures.filter((item)=>'color' === item.encoding || !item.encoding).map((item)=>item.id));
|
7930
|
+
if (colorDims.length > 0) encoding.color = [
|
7931
|
+
colorDims[0]
|
7932
|
+
];
|
7933
|
+
};
|
7934
|
+
const heatmap_generateMeasureEncoding = (measures, encoding)=>{
|
7935
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7936
|
+
if (color.length > 0) encoding.color = [
|
7937
|
+
color[0]
|
7938
|
+
];
|
7939
|
+
const tooltip = unique(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
|
7940
|
+
encoding.tooltip = unique([
|
7941
|
+
...encoding.tooltip || [],
|
7942
|
+
...tooltip
|
7943
|
+
]);
|
7594
7944
|
};
|
7595
7945
|
const heatmapAdvancedPipeline = [
|
7596
7946
|
initAdvancedVSeed_initAdvancedVSeed,
|
7597
|
-
|
7598
|
-
|
7599
|
-
|
7600
|
-
|
7601
|
-
|
7947
|
+
default_defaultMeasures_defaultMeasures,
|
7948
|
+
defaultDimensions_defaultDimensions,
|
7949
|
+
defaultMeasureName_defaultMeasureName,
|
7950
|
+
encodingAdapter([
|
7951
|
+
defaultEncodingForHeatmap,
|
7952
|
+
buildMeasures
|
7953
|
+
], [
|
7954
|
+
encodingForHeatmap,
|
7955
|
+
buildMeasures
|
7956
|
+
]),
|
7602
7957
|
pivotAdapter([
|
7603
7958
|
reshapeWithEncoding
|
7604
7959
|
], [
|
@@ -7651,6 +8006,107 @@ const cellStyle = (spec)=>{
|
|
7651
8006
|
}
|
7652
8007
|
};
|
7653
8008
|
};
|
8009
|
+
const tooltipHeatmap = (spec, context)=>{
|
8010
|
+
const result = {
|
8011
|
+
...spec
|
8012
|
+
};
|
8013
|
+
const { advancedVSeed } = context;
|
8014
|
+
const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
|
8015
|
+
const baseConfig = advancedVSeed.config[chartType];
|
8016
|
+
const { tooltip = {
|
8017
|
+
enable: true
|
8018
|
+
} } = baseConfig;
|
8019
|
+
const { enable } = tooltip;
|
8020
|
+
const { foldInfo } = datasetReshapeInfo[0];
|
8021
|
+
result.tooltip = {
|
8022
|
+
visible: enable,
|
8023
|
+
mark: {
|
8024
|
+
title: {
|
8025
|
+
visible: false
|
8026
|
+
},
|
8027
|
+
content: tooltipHeatmap_createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfo)
|
8028
|
+
},
|
8029
|
+
dimension: {
|
8030
|
+
visible: false
|
8031
|
+
}
|
8032
|
+
};
|
8033
|
+
return result;
|
8034
|
+
};
|
8035
|
+
const tooltipHeatmap_createMarkContent = (tooltip, dimensions, measures, locale, foldInfo)=>{
|
8036
|
+
const dims = dimensions.filter((item)=>tooltip.includes(item.id));
|
8037
|
+
const meas = measures.filter((item)=>tooltip.includes(item.id));
|
8038
|
+
const dimContent = dims.map((item)=>({
|
8039
|
+
visible: true,
|
8040
|
+
hasShape: true,
|
8041
|
+
shapeType: 'rectRound',
|
8042
|
+
key: (v)=>{
|
8043
|
+
const datum = v;
|
8044
|
+
if (item.alias || item.id) return item.alias || item.id;
|
8045
|
+
return datum && datum[item.id];
|
8046
|
+
},
|
8047
|
+
value: (v)=>{
|
8048
|
+
const datum = v;
|
8049
|
+
return datum && datum[item.id];
|
8050
|
+
}
|
8051
|
+
}));
|
8052
|
+
const meaContent = meas.map((item)=>({
|
8053
|
+
visible: true,
|
8054
|
+
hasShape: true,
|
8055
|
+
shapeType: 'rectRound',
|
8056
|
+
key: item.alias || item.id,
|
8057
|
+
value: (v)=>{
|
8058
|
+
const datum = v;
|
8059
|
+
if (!datum) return '';
|
8060
|
+
const id = item.id;
|
8061
|
+
if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) return '';
|
8062
|
+
const originalData = datum[ORIGINAL_DATA];
|
8063
|
+
const value = originalData[id];
|
8064
|
+
const measure = findMeasureById(measures, id);
|
8065
|
+
if (!measure) return String(value);
|
8066
|
+
const { format = {}, autoFormat = true } = measure;
|
8067
|
+
if (!external_remeda_isEmpty(format)) {
|
8068
|
+
const formatter = createFormatter(format);
|
8069
|
+
return formatter(value);
|
8070
|
+
}
|
8071
|
+
if (autoFormat) return autoFormatter(value, locale);
|
8072
|
+
return String(value);
|
8073
|
+
}
|
8074
|
+
}));
|
8075
|
+
const foldMeaContent = [
|
8076
|
+
foldInfo
|
8077
|
+
].map((foldInfo)=>({
|
8078
|
+
visible: true,
|
8079
|
+
hasShape: true,
|
8080
|
+
shapeType: 'rectRound',
|
8081
|
+
key: (v)=>{
|
8082
|
+
const { measureId, foldMap } = foldInfo;
|
8083
|
+
const datum = v;
|
8084
|
+
const id = datum[measureId];
|
8085
|
+
return foldMap[id] || id;
|
8086
|
+
},
|
8087
|
+
value: (v)=>{
|
8088
|
+
const { measureId, measureValue } = foldInfo;
|
8089
|
+
const datum = v;
|
8090
|
+
if (!datum) return '';
|
8091
|
+
const value = datum[measureValue];
|
8092
|
+
const id = datum[measureId];
|
8093
|
+
const measure = findMeasureById(measures, id);
|
8094
|
+
if (!measure) return String(value);
|
8095
|
+
const { format = {}, autoFormat = true } = measure;
|
8096
|
+
if (!external_remeda_isEmpty(format)) {
|
8097
|
+
const formatter = createFormatter(format);
|
8098
|
+
return formatter(value);
|
8099
|
+
}
|
8100
|
+
if (autoFormat) return autoFormatter(value, locale);
|
8101
|
+
return String(value);
|
8102
|
+
}
|
8103
|
+
}));
|
8104
|
+
return [
|
8105
|
+
...dimContent,
|
8106
|
+
...foldMeaContent,
|
8107
|
+
...meaContent
|
8108
|
+
];
|
8109
|
+
};
|
7654
8110
|
const initHeatmap = (spec, context)=>{
|
7655
8111
|
const result = {
|
7656
8112
|
...spec
|
@@ -7694,7 +8150,7 @@ const heatmap = [
|
|
7694
8150
|
labelColorInversion,
|
7695
8151
|
colorAdapter(discreteLegend, colorLegend),
|
7696
8152
|
colorCellStyleFill(cellStyle),
|
7697
|
-
|
8153
|
+
tooltipHeatmap,
|
7698
8154
|
annotationPoint_annotationPoint,
|
7699
8155
|
annotationVerticalLine_annotationVerticalLine,
|
7700
8156
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -7713,7 +8169,7 @@ const pivotHeatmap = [
|
|
7713
8169
|
label_label,
|
7714
8170
|
labelColorInversion,
|
7715
8171
|
discreteLegend,
|
7716
|
-
|
8172
|
+
tooltipHeatmap,
|
7717
8173
|
colorCellStyleFill(cellStyle),
|
7718
8174
|
annotationPoint_annotationPoint,
|
7719
8175
|
annotationVerticalLine_annotationVerticalLine,
|
@@ -8392,6 +8848,15 @@ const updateAdvanced = (chartType, advancedPipe)=>{
|
|
8392
8848
|
const updateSpec = (chartType, specPipe)=>{
|
8393
8849
|
Builder._customSpecPipe[chartType] = specPipe;
|
8394
8850
|
};
|
8851
|
+
const findAllDimensions = (dimensions = [])=>{
|
8852
|
+
if (!dimensions) return [];
|
8853
|
+
const result = [];
|
8854
|
+
preorderTraverse(dimensions, (node)=>{
|
8855
|
+
if (!('children' in node)) result.push(node);
|
8856
|
+
return false;
|
8857
|
+
});
|
8858
|
+
return result;
|
8859
|
+
};
|
8395
8860
|
const zChartType = z["enum"]([
|
8396
8861
|
'table',
|
8397
8862
|
'pivotTable',
|
@@ -8435,11 +8900,6 @@ const zDataset = z.array(zDatum);
|
|
8435
8900
|
const zDimension = z.object({
|
8436
8901
|
id: z.string(),
|
8437
8902
|
alias: z.string().optional(),
|
8438
|
-
location: z["enum"]([
|
8439
|
-
'dimension',
|
8440
|
-
'rowDimension',
|
8441
|
-
'columnDimension'
|
8442
|
-
]).default('dimension'),
|
8443
8903
|
encoding: z["enum"]([
|
8444
8904
|
'xAxis',
|
8445
8905
|
'yAxis',
|
@@ -9722,6 +10182,7 @@ const zAdvancedVSeed = z.object({
|
|
9722
10182
|
annotation: zAnnotation,
|
9723
10183
|
locale: zLocale
|
9724
10184
|
});
|
9725
|
-
|
10185
|
+
var __webpack_exports__Separator = "-";
|
10186
|
+
export { AngleEncoding, Builder, ColorEncoding, ColorIdEncoding, DetailEncoding, FoldMeasureId, FoldMeasureName, FoldMeasureValue, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue, FoldXMeasureId, FoldXMeasureValue, FoldYMeasureId, FoldYMeasureValue, MeasureName, ORIGINAL_DATA, XEncoding, YEncoding, areaAdvancedPipeline, areaPercentAdvancedPipeline, areaPercentSpecPipeline, areaSpecPipeline, autoFormatter, autoNumFormatter, barAdvancedPipeline, barParallelAdvancedPipeline, barParallelSpecPipeline, barPercentAdvancedPipeline, barPercentSpecPipeline, barSpecPipeline, columnAdvancedPipeline, columnParallelAdvancedPipeline, columnParallelSpecPipeline, columnPercentAdvancedPipeline, columnPercentSpecPipeline, columnSpecPipeline, createFormatter, createNumFormatter, darkTheme, dataReshapeByEncoding, donutAdvancedPipeline, donutSpecPipeline, dualAxisAdvancedPipeline, dualAxisSpecPipeline, execPipeline, findAllDimensions, findAllMeasures, findFirstMeasure, findMeasureById, foldMeasures, funnelAdvancedPipeline, funnelSpecPipeline, heatmapAdvancedPipeline, heatmapSpecPipeline, i18n, intl, isDimensionSelector, isMeasure, isMeasureGroup, isMeasureSelector, isMeasures, isPartialDatumSelector, isPivotChart, isPivotTable, isTable, isVChart, isVTable, isValueSelector, lightTheme, lineAdvancedPipeline, lineSpecPipeline, measureDepth, pieAdvancedPipeline, pieSpecPipeline, pivotTableAdvancedPipeline, pivotTableSpecPipeline, preorderTraverse, radarAdvancedPipeline, radarSpecPipeline, registerAll, registerArea, registerAreaPercent, registerBar, registerBarParallel, registerBarPercent, registerColumn, registerColumnParallel, registerColumnPercent, registerCustomTheme, registerDarkTheme, registerDonut, registerFunnel, registerHeatmap, registerLightTheme, registerLine, registerPie, registerPivotTable, registerRadar, registerRose, registerRoseParallel, registerScatter, registerTable, roseAdvancedPipeline, roseParallelAdvancedPipeline, roseParallelSpecPipeline, roseSpecPipeline, scatterAdvancedPipeline, scatterSpecPipeline, selector_selector as selector, tableAdvancedPipeline, tableSpecPipeline, unfoldDimensions, updateAdvanced, updateSpec, zAdvancedVSeed, zAnalysis, zAnnotation, zAnnotationArea, zAnnotationHorizontalLine, zAnnotationPoint, zAnnotationVerticalLine, zArea, zAreaConfig, zAreaPercent, zAreaPercentConfig, zAreaStyle, zAxis, zBackgroundColor, zBar, zBarConfig, zBarParallel, zBarParallelConfig, zBarPercent, zBarPercentConfig, zBarStyle, zChartType, zColor, zColorLegend, zColumn, zColumnConfig, zColumnParallel, zColumnParallelConfig, zColumnPercent, zColumnPercentConfig, zConfig, zCrosshairLine, zCrosshairRect, zCustomTheme, zCustomThemeConfig, zDataset, zDatasetReshapeInfo, zDatum, zDimension, zDimensionGroup, zDimensionTree, zDimensions, zDonut, zDonutConfig, zDualAxis, zDualAxisConfig, zDualChartType, zDualMeasure, zDualMeasures, zEncoding, zFoldInfo, zFunnel, zFunnelConfig, zHeatmap, zHeatmapConfig, zLabel, zLegend, zLine, zLineConfig, zLineStyle, zLinearColor, zLocale, zMarkStyle, zMeasure, zMeasureGroup, zMeasureTree, zMeasures, zNumFormat, zPie, zPieConfig, zPivotTable, zPivotTableConfig, zPointStyle, zRadar, zRadarConfig, zRose, zRoseConfig, zRoseParallel, zRoseParallelConfig, zScatter, zScatterConfig, zScatterMeasure, zScatterMeasures, zSort, zSortLegend, zStackCornerRadius, zTable, zTableConfig, zTheme, zTooltip, zUnfoldInfo, zVSeed, zXBandAxis, zXLinearAxis, zYBandAxis, zYLinearAxis, __webpack_exports__Separator as Separator };
|
9726
10187
|
|
9727
10188
|
//# sourceMappingURL=index.js.map
|