@visactor/vseed 0.1.5 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/builder/builder/builder.d.ts +2 -4
- package/dist/index.cjs +574 -498
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +574 -498
- package/dist/index.js.map +1 -1
- package/dist/pipeline/advanced/chart/pipes/{init/autoDimensions.d.ts → default/defaultDimensions.d.ts} +1 -1
- package/dist/pipeline/advanced/{table/pipes/init/autoMeasures.d.ts → chart/pipes/default/defaultMeasureName.d.ts} +1 -1
- package/dist/pipeline/advanced/chart/pipes/default/defaultMeasures.d.ts +5 -0
- package/dist/pipeline/advanced/chart/pipes/default/index.d.ts +3 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/bar.d.ts +19 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/column.d.ts +19 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/dualAxis.d.ts +19 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/funnel.d.ts +17 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/heatmap.d.ts +19 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/line.d.ts +18 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/pie.d.ts +18 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/radar.d.ts +19 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/rose.d.ts +19 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/scatter.d.ts +18 -0
- package/dist/pipeline/advanced/chart/pipes/index.d.ts +1 -0
- package/dist/pipeline/advanced/chart/pipes/init/index.d.ts +0 -2
- package/dist/pipeline/advanced/chart/pipes/measures/utils.d.ts +3 -18
- package/dist/pipeline/advanced/table/pipes/{init/autoPivotMeasures.d.ts → default/defaultDimensions.d.ts} +1 -1
- package/dist/pipeline/advanced/table/pipes/default/defaultMeasureName.d.ts +2 -0
- 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/encoding/pivotTable.d.ts +2 -0
- 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/advanced/table/pipes/reshape/index.d.ts +1 -0
- package/dist/pipeline/advanced/table/pipes/{init/autoDimensions.d.ts → reshape/reshapePivotTable.d.ts} +1 -1
- package/dist/types/advancedVSeed.d.ts +2 -5
- package/dist/types/chartType/area/area.d.ts +19 -3
- package/dist/types/chartType/area/zArea.d.ts +2 -5
- package/dist/types/chartType/areaPercent/areaPercent.d.ts +15 -1
- package/dist/types/chartType/areaPercent/zAreaPercent.d.ts +2 -5
- package/dist/types/chartType/bar/bar.d.ts +17 -1
- package/dist/types/chartType/bar/zBar.d.ts +2 -5
- package/dist/types/chartType/barParallel/barParallel.d.ts +17 -1
- package/dist/types/chartType/barParallel/zBarParallel.d.ts +2 -5
- package/dist/types/chartType/barPercent/barPercent.d.ts +17 -1
- package/dist/types/chartType/barPercent/zBarPercent.d.ts +2 -5
- package/dist/types/chartType/column/column.d.ts +17 -1
- package/dist/types/chartType/column/zColumn.d.ts +2 -5
- package/dist/types/chartType/columnParallel/columnParallel.d.ts +17 -1
- package/dist/types/chartType/columnParallel/zColumnParallel.d.ts +2 -5
- package/dist/types/chartType/columnPercent/columnPercent.d.ts +17 -1
- package/dist/types/chartType/columnPercent/zColumnPercent.d.ts +2 -5
- package/dist/types/chartType/donut/donut.d.ts +16 -1
- package/dist/types/chartType/donut/zDonut.d.ts +2 -5
- package/dist/types/chartType/dualAxis/dualAxis.d.ts +17 -1
- package/dist/types/chartType/dualAxis/zDualAxis.d.ts +10 -5
- package/dist/types/chartType/funnel/funnel.d.ts +15 -1
- package/dist/types/chartType/funnel/zFunnel.d.ts +2 -5
- package/dist/types/chartType/heatmap/heatmap.d.ts +17 -1
- package/dist/types/chartType/heatmap/zHeatmap.d.ts +2 -5
- package/dist/types/chartType/line/line.d.ts +16 -4
- package/dist/types/chartType/line/zLine.d.ts +2 -5
- package/dist/types/chartType/pie/pie.d.ts +16 -1
- package/dist/types/chartType/pie/zPie.d.ts +2 -5
- package/dist/types/chartType/pivotTable/pivotTable.d.ts +10 -3
- package/dist/types/chartType/pivotTable/zPivotTable.d.ts +2 -5
- package/dist/types/chartType/radar/radar.d.ts +17 -1
- package/dist/types/chartType/radar/zRadar.d.ts +2 -5
- package/dist/types/chartType/rose/rose.d.ts +17 -1
- package/dist/types/chartType/rose/zRose.d.ts +2 -5
- package/dist/types/chartType/roseParallel/roseParallel.d.ts +17 -1
- package/dist/types/chartType/roseParallel/zRoseParallel.d.ts +2 -5
- package/dist/types/chartType/scatter/scatter.d.ts +16 -1
- package/dist/types/chartType/scatter/zScatter.d.ts +10 -5
- package/dist/types/chartType/table/table.d.ts +2 -0
- package/dist/types/chartType/table/zTable.d.ts +2 -5
- package/dist/types/properties/dimensions/dimensions.d.ts +0 -4
- package/dist/types/properties/dimensions/zDimensions.d.ts +0 -15
- package/dist/types/properties/measures/measures.d.ts +3 -1
- package/dist/types/properties/measures/zDualMeasures.d.ts +16 -0
- package/dist/types/properties/measures/zMeasures.d.ts +6 -0
- package/dist/types/properties/measures/zScatterMeasures.d.ts +16 -0
- package/dist/types/zVseed.d.ts +56 -100
- package/dist/umd/index.js +606 -530
- package/dist/umd/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/pipeline/advanced/chart/pipes/init/utils.d.ts +0 -2
package/dist/index.js
CHANGED
@@ -167,24 +167,24 @@ 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
|
@@ -192,7 +192,10 @@ const autoMeasures = (advancedVSeed, context)=>{
|
|
192
192
|
id: measure,
|
193
193
|
alias: measure
|
194
194
|
}));
|
195
|
-
return
|
195
|
+
return {
|
196
|
+
...advancedVSeed,
|
197
|
+
measures: defaultMeasures
|
198
|
+
};
|
196
199
|
};
|
197
200
|
const preorderTraverse = (tree, callback)=>{
|
198
201
|
if (!tree || 0 === tree.length) return;
|
@@ -246,37 +249,36 @@ const findAllMeasures = (measures = [])=>{
|
|
246
249
|
});
|
247
250
|
return result;
|
248
251
|
};
|
249
|
-
const
|
252
|
+
const defaultDimensions = (advancedVSeed, context)=>{
|
250
253
|
const result = {
|
251
254
|
...advancedVSeed
|
252
255
|
};
|
253
256
|
const { vseed } = context;
|
254
257
|
const { dimensions, dataset } = vseed;
|
255
|
-
|
258
|
+
if (dimensions && dimensions.length > 0) return {
|
259
|
+
...result,
|
260
|
+
dimensions
|
261
|
+
};
|
256
262
|
if (!dataset) throw new Error('dataset is required');
|
257
263
|
if (0 === dataset.length) return result;
|
258
|
-
|
259
|
-
result.dimensions = dimensions.map((dim)=>({
|
260
|
-
location: 'dimension',
|
261
|
-
...dim
|
262
|
-
}));
|
263
|
-
return result;
|
264
|
-
}
|
264
|
+
const measures = findAllMeasures(advancedVSeed.measures);
|
265
265
|
const top100dataset = dataset.slice(0, 100);
|
266
266
|
const sample = top100dataset.reduce((prev, cur)=>({
|
267
267
|
...prev,
|
268
268
|
...cur
|
269
269
|
}), {});
|
270
|
-
|
270
|
+
const newDimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
|
271
271
|
'',
|
272
272
|
null,
|
273
273
|
void 0
|
274
274
|
].includes(key) && !measures.some((measure)=>measure.id === key)).map((dim)=>({
|
275
275
|
id: dim,
|
276
|
-
alias: dim
|
277
|
-
location: 'dimension'
|
276
|
+
alias: dim
|
278
277
|
}));
|
279
|
-
return
|
278
|
+
return {
|
279
|
+
...result,
|
280
|
+
dimensions: newDimensions
|
281
|
+
};
|
280
282
|
};
|
281
283
|
const records_records = (advancedVSeed, context)=>{
|
282
284
|
const { vseed } = context;
|
@@ -348,8 +350,8 @@ const mergeArray = (arr, themeItem)=>{
|
|
348
350
|
};
|
349
351
|
const tableAdvancedPipeline = [
|
350
352
|
initAdvancedVSeed,
|
351
|
-
|
352
|
-
|
353
|
+
defaultMeasures_defaultMeasures,
|
354
|
+
defaultDimensions,
|
353
355
|
records_records,
|
354
356
|
tableConfig_tableConfig,
|
355
357
|
theme_theme
|
@@ -570,9 +572,9 @@ const bodyStyle = (spec, context)=>{
|
|
570
572
|
borderColor: borderColor,
|
571
573
|
borderLineWidth: 1,
|
572
574
|
padding: [
|
573
|
-
8
|
575
|
+
8,
|
574
576
|
12,
|
575
|
-
8
|
577
|
+
8,
|
576
578
|
12
|
577
579
|
],
|
578
580
|
textAlign: 'right',
|
@@ -685,79 +687,156 @@ const registerTable = ()=>{
|
|
685
687
|
Builder._advancedPipelineMap.table = tableAdvancedPipeline;
|
686
688
|
Builder._specPipelineMap.table = tableSpecPipeline;
|
687
689
|
};
|
688
|
-
const
|
690
|
+
const ORIGINAL_DATA = '__OriginalData__';
|
691
|
+
const Separator = '-';
|
692
|
+
const FoldMeasureName = '__MeaName__';
|
693
|
+
const FoldMeasureId = '__MeaId__';
|
694
|
+
const FoldMeasureValue = '__MeaValue__';
|
695
|
+
const MeasureName = FoldMeasureName;
|
696
|
+
const FoldPrimaryMeasureValue = '__MeaPrimaryValue__';
|
697
|
+
const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
|
698
|
+
const FoldXMeasureValue = '__MeaXValue__';
|
699
|
+
const FoldYMeasureValue = '__MeaYValue__';
|
700
|
+
const XEncoding = '__Dim_X__';
|
701
|
+
const YEncoding = '__Dim_Y__';
|
702
|
+
const AngleEncoding = '__Dim_Angle__';
|
703
|
+
const DetailEncoding = '__Dim_Detail__';
|
704
|
+
const ColorEncoding = '__Dim_Color__';
|
705
|
+
const ColorIdEncoding = '__Dim_ColorId__';
|
706
|
+
const defaultMeasureName = (advancedVSeed)=>{
|
689
707
|
const result = {
|
690
708
|
...advancedVSeed
|
691
709
|
};
|
692
|
-
const
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
if (
|
697
|
-
if (vseed.measures) {
|
698
|
-
result.measures = findAllMeasures(measures);
|
699
|
-
return result;
|
700
|
-
}
|
701
|
-
const top100dataset = dataset.slice(0, 100);
|
702
|
-
const sample = top100dataset.reduce((prev, cur)=>({
|
703
|
-
...prev,
|
704
|
-
...cur
|
705
|
-
}), {});
|
706
|
-
result.measures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
|
707
|
-
'',
|
708
|
-
null,
|
709
|
-
void 0
|
710
|
-
].includes(key)).map((measure)=>({
|
711
|
-
id: measure,
|
712
|
-
alias: measure
|
713
|
-
}));
|
710
|
+
const MeaName = {
|
711
|
+
id: MeasureName,
|
712
|
+
alias: intl.i18n`指标名称`
|
713
|
+
};
|
714
|
+
if (!result.dimensions?.some((dim)=>dim.id === MeasureName)) result.dimensions?.push(MeaName);
|
714
715
|
return result;
|
715
716
|
};
|
716
|
-
const
|
717
|
-
|
718
|
-
const
|
719
|
-
|
720
|
-
|
721
|
-
|
717
|
+
const encodingForPivotTable = (advancedVSeed)=>{
|
718
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
719
|
+
const measures = findAllMeasures(vseedMeasures);
|
720
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
721
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
722
|
+
const encoding = {};
|
723
|
+
if (hasDimensionEncoding) generateDimensionEncoding(dimensions, encoding);
|
724
|
+
else generateDefaultDimensionEncoding(dimensions, encoding);
|
725
|
+
if (hasMeasureEncoding) generateMeasureEncoding(measures, encoding);
|
726
|
+
else generateDefaultMeasureEncoding(measures, encoding);
|
727
|
+
return {
|
728
|
+
...advancedVSeed,
|
729
|
+
encoding
|
730
|
+
};
|
731
|
+
};
|
732
|
+
const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
733
|
+
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
734
|
+
encoding.tooltip = uniqueDimIds;
|
735
|
+
encoding.row = [];
|
736
|
+
encoding.column = [];
|
737
|
+
uniqueDimIds.forEach((item, index)=>{
|
738
|
+
if (index % 2 === 0) encoding.column.push(item);
|
739
|
+
else encoding.row.push(item);
|
740
|
+
});
|
741
|
+
};
|
742
|
+
const generateDimensionEncoding = (dimensions, encoding)=>{
|
743
|
+
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
744
|
+
encoding.tooltip = uniqueDimIds;
|
745
|
+
encoding.row = [];
|
746
|
+
encoding.column = [];
|
747
|
+
dimensions.forEach((dim, index)=>{
|
748
|
+
const id = dim.id;
|
749
|
+
if ('row' === dim.encoding) encoding.row.push(id);
|
750
|
+
else if ('column' === dim.encoding) encoding.column.push(id);
|
751
|
+
else if (index % 2 === 0) encoding.column.push(id);
|
752
|
+
else encoding.row.push(id);
|
722
753
|
});
|
723
|
-
return result;
|
724
754
|
};
|
725
|
-
const
|
755
|
+
const generateDefaultMeasureEncoding = (measures, encoding)=>{
|
756
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
757
|
+
encoding.detail = unique(measures.filter((item)=>'detail' === item.encoding || !item.encoding).map((item)=>item.id));
|
758
|
+
};
|
759
|
+
const generateMeasureEncoding = (measures, encoding)=>{
|
760
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
761
|
+
encoding.detail = unique(measures.filter((item)=>'detail' === item.encoding || !item.encoding).map((item)=>item.id));
|
762
|
+
};
|
763
|
+
const foldMeasures = (dataset, measures, options)=>{
|
764
|
+
const { measureId, measureName, measureValue, colorMeasureId } = options || {};
|
765
|
+
const foldInfo = {
|
766
|
+
measureId,
|
767
|
+
measureName,
|
768
|
+
measureValue,
|
769
|
+
colorRange: [
|
770
|
+
0,
|
771
|
+
1
|
772
|
+
],
|
773
|
+
measureRange: [
|
774
|
+
0,
|
775
|
+
1
|
776
|
+
],
|
777
|
+
foldMap: {}
|
778
|
+
};
|
779
|
+
const result = new Array(dataset.length * measures.length);
|
780
|
+
let index = 0;
|
781
|
+
const ids = measures.map((d)=>d.id);
|
782
|
+
for(let i = 0; i < dataset.length; i++)for(let j = 0; j < measures.length; j++){
|
783
|
+
const datum = omit({
|
784
|
+
...dataset[i]
|
785
|
+
}, ids);
|
786
|
+
datum[ORIGINAL_DATA] = dataset[i];
|
787
|
+
const measure = measures[j];
|
788
|
+
const { id, alias } = measure;
|
789
|
+
datum[id] = dataset[i][id];
|
790
|
+
datum[measureId] = id;
|
791
|
+
datum[measureName] = alias || id;
|
792
|
+
datum[measureValue] = dataset[i][id];
|
793
|
+
if (colorMeasureId) {
|
794
|
+
const value = datum[ORIGINAL_DATA][colorMeasureId];
|
795
|
+
datum[ColorEncoding] = value;
|
796
|
+
datum[ColorIdEncoding] = colorMeasureId;
|
797
|
+
foldInfo.colorRange = [
|
798
|
+
Math.min(foldInfo.colorRange[0] || 1 / 0, Number(value)),
|
799
|
+
Math.max(foldInfo.colorRange[1] || -1 / 0, Number(value))
|
800
|
+
];
|
801
|
+
}
|
802
|
+
foldInfo.measureRange = [
|
803
|
+
Math.min(foldInfo.measureRange[0] || 1 / 0, Number(datum[id])),
|
804
|
+
Math.max(foldInfo.measureRange[1] || -1 / 0, Number(datum[id]))
|
805
|
+
];
|
806
|
+
foldInfo.foldMap[id] = alias;
|
807
|
+
result[index++] = datum;
|
808
|
+
}
|
809
|
+
return {
|
810
|
+
dataset: result,
|
811
|
+
foldInfo
|
812
|
+
};
|
813
|
+
};
|
814
|
+
const reshapePivotTable = (advancedVSeed, context)=>{
|
726
815
|
const result = {
|
727
816
|
...advancedVSeed
|
728
817
|
};
|
729
818
|
const { vseed } = context;
|
730
|
-
const {
|
731
|
-
const measures =
|
732
|
-
|
733
|
-
|
734
|
-
|
735
|
-
|
736
|
-
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
|
742
|
-
}
|
743
|
-
|
744
|
-
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
|
751
|
-
result.dimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
|
752
|
-
'',
|
753
|
-
null,
|
754
|
-
void 0
|
755
|
-
].includes(key) && !measures.some((measure)=>measure.id === key)).map((dim)=>({
|
756
|
-
id: dim,
|
757
|
-
alias: dim,
|
758
|
-
location: i++ % 2 === 0 ? 'columnDimension' : 'rowDimension'
|
759
|
-
}));
|
760
|
-
return result;
|
819
|
+
const { dataset, chartType } = vseed;
|
820
|
+
const { dimensions, measures } = advancedVSeed;
|
821
|
+
const { dataset: newDatasets, foldInfo } = foldMeasures(dataset, findAllMeasures(measures), {
|
822
|
+
measureId: FoldMeasureId,
|
823
|
+
measureName: FoldMeasureName,
|
824
|
+
measureValue: FoldMeasureValue
|
825
|
+
});
|
826
|
+
const datasetReshapeInfo = [
|
827
|
+
{
|
828
|
+
id: String(chartType),
|
829
|
+
index: 0,
|
830
|
+
foldInfo
|
831
|
+
}
|
832
|
+
];
|
833
|
+
return {
|
834
|
+
...result,
|
835
|
+
dataset: newDatasets,
|
836
|
+
datasetReshapeInfo: datasetReshapeInfo,
|
837
|
+
dimensions,
|
838
|
+
measures
|
839
|
+
};
|
761
840
|
};
|
762
841
|
const pivotTableConfig = (advancedVSeed, context)=>{
|
763
842
|
const { vseed } = context;
|
@@ -788,9 +867,11 @@ const pivotTableConfig = (advancedVSeed, context)=>{
|
|
788
867
|
};
|
789
868
|
const pivotTableAdvancedPipeline = [
|
790
869
|
initAdvancedVSeed,
|
791
|
-
|
792
|
-
|
793
|
-
|
870
|
+
defaultMeasures_defaultMeasures,
|
871
|
+
defaultDimensions,
|
872
|
+
defaultMeasureName,
|
873
|
+
encodingForPivotTable,
|
874
|
+
reshapePivotTable,
|
794
875
|
pivotTableConfig,
|
795
876
|
theme_theme
|
796
877
|
];
|
@@ -836,8 +917,9 @@ const initPivotTable = (spec, context)=>{
|
|
836
917
|
};
|
837
918
|
const pivotColumns = (spec, context)=>{
|
838
919
|
const { advancedVSeed } = context;
|
920
|
+
const { encoding } = advancedVSeed;
|
839
921
|
const dimensions = advancedVSeed.dimensions;
|
840
|
-
const columns = dimensions.filter((item)=>
|
922
|
+
const columns = dimensions.filter((item)=>encoding.column?.includes(item.id));
|
841
923
|
return {
|
842
924
|
...spec,
|
843
925
|
columns: columns.map((item)=>({
|
@@ -850,7 +932,8 @@ const pivotColumns = (spec, context)=>{
|
|
850
932
|
const pivotRows = (spec, context)=>{
|
851
933
|
const { advancedVSeed } = context;
|
852
934
|
const dimensions = advancedVSeed.dimensions;
|
853
|
-
const
|
935
|
+
const { encoding } = advancedVSeed;
|
936
|
+
const rows = dimensions.filter((item)=>encoding.row?.includes(item.id));
|
854
937
|
return {
|
855
938
|
...spec,
|
856
939
|
rows: rows.map((item)=>({
|
@@ -862,25 +945,32 @@ const pivotRows = (spec, context)=>{
|
|
862
945
|
};
|
863
946
|
const pivotIndicators = (spec, context)=>{
|
864
947
|
const { advancedVSeed } = context;
|
865
|
-
const { locale } = advancedVSeed;
|
866
|
-
const
|
948
|
+
const { locale, measures, datasetReshapeInfo } = advancedVSeed;
|
949
|
+
const { foldInfo } = datasetReshapeInfo[0];
|
867
950
|
return {
|
868
951
|
...spec,
|
869
952
|
indicatorsAsCol: true,
|
870
953
|
indicatorTitle: intl.i18n`指标名称`,
|
871
|
-
|
872
|
-
|
954
|
+
hideIndicatorName: true,
|
955
|
+
indicators: [
|
956
|
+
{
|
873
957
|
cellType: 'text',
|
874
|
-
indicatorKey:
|
875
|
-
title:
|
958
|
+
indicatorKey: foldInfo.measureValue,
|
959
|
+
title: 'indicator',
|
876
960
|
width: 'auto',
|
877
|
-
format: pivotIndicators_fieldFormat(
|
878
|
-
}
|
879
|
-
|
880
|
-
})
|
961
|
+
format: pivotIndicators_fieldFormat(measures, foldInfo, locale)
|
962
|
+
}
|
963
|
+
]
|
881
964
|
};
|
882
965
|
};
|
883
|
-
const pivotIndicators_fieldFormat = (
|
966
|
+
const pivotIndicators_fieldFormat = (measures, foldInfo, locale)=>(value, col, row, table)=>{
|
967
|
+
if (!isNumber(col) || !isNumber(row) || !table) return value;
|
968
|
+
const datum = table.getCellOriginRecord(col, row);
|
969
|
+
if (!datum[0]) return value;
|
970
|
+
const { measureId: foldMeasureId } = foldInfo;
|
971
|
+
const measureId = datum[0][foldMeasureId];
|
972
|
+
const node = findMeasureById(measures, measureId);
|
973
|
+
if (!node) return value;
|
884
974
|
const { format = {}, autoFormat = true } = node;
|
885
975
|
if (!external_remeda_isEmpty(format)) {
|
886
976
|
const formatter = createFormatter(format);
|
@@ -906,9 +996,9 @@ const rowHeaderStyle = (spec, context)=>{
|
|
906
996
|
borderColor: borderColor,
|
907
997
|
borderLineWidth: 1,
|
908
998
|
padding: [
|
909
|
-
8
|
999
|
+
8,
|
910
1000
|
12,
|
911
|
-
8
|
1001
|
+
8,
|
912
1002
|
12
|
913
1003
|
],
|
914
1004
|
textAlign: 'left',
|
@@ -1036,111 +1126,94 @@ const initAdvancedVSeed_initAdvancedVSeed = (advancedVSeed, context)=>{
|
|
1036
1126
|
locale: locale || 'zh-CN'
|
1037
1127
|
};
|
1038
1128
|
};
|
1039
|
-
const
|
1040
|
-
const
|
1041
|
-
const
|
1042
|
-
|
1043
|
-
|
1044
|
-
|
1045
|
-
const FoldPrimaryMeasureValue = '__MeaPrimaryValue__';
|
1046
|
-
const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
|
1047
|
-
const FoldXMeasureValue = '__MeaXValue__';
|
1048
|
-
const FoldYMeasureValue = '__MeaYValue__';
|
1049
|
-
const XEncoding = '__Dim_X__';
|
1050
|
-
const YEncoding = '__Dim_Y__';
|
1051
|
-
const AngleEncoding = '__Dim_Angle__';
|
1052
|
-
const DetailEncoding = '__Dim_Detail__';
|
1053
|
-
const ColorEncoding = '__Dim_Color__';
|
1054
|
-
const ColorIdEncoding = '__Dim_ColorId__';
|
1055
|
-
const getBasicDimensions = (vseed)=>{
|
1056
|
-
const { dimensions, dataset } = vseed;
|
1057
|
-
const MeaName = {
|
1058
|
-
id: MeasureName,
|
1059
|
-
alias: intl.i18n`指标名称`
|
1129
|
+
const default_defaultMeasures_defaultMeasures = (advancedVSeed, context)=>{
|
1130
|
+
const { vseed } = context;
|
1131
|
+
const { measures, dataset } = vseed;
|
1132
|
+
if (measures && measures.length > 0) return {
|
1133
|
+
...advancedVSeed,
|
1134
|
+
measures
|
1060
1135
|
};
|
1061
1136
|
if (!dataset) throw new Error('dataset is required');
|
1062
|
-
if (0 === dataset.length) return
|
1063
|
-
|
1064
|
-
|
1065
|
-
|
1066
|
-
...dim
|
1067
|
-
}));
|
1068
|
-
if (basicDimensions.some((dim)=>dim.id === MeasureName)) return basicDimensions;
|
1069
|
-
basicDimensions.push(MeaName);
|
1070
|
-
return basicDimensions;
|
1071
|
-
}
|
1137
|
+
if (0 === dataset.length) return {
|
1138
|
+
...advancedVSeed,
|
1139
|
+
measures: []
|
1140
|
+
};
|
1072
1141
|
const top100dataset = dataset.slice(0, 100);
|
1073
1142
|
const sample = top100dataset.reduce((prev, cur)=>({
|
1074
1143
|
...prev,
|
1075
1144
|
...cur
|
1076
1145
|
}), {});
|
1077
|
-
const
|
1146
|
+
const defaultMeasures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
|
1078
1147
|
'',
|
1079
1148
|
null,
|
1080
1149
|
void 0
|
1081
|
-
].includes(key)).map((
|
1082
|
-
id:
|
1083
|
-
alias:
|
1084
|
-
location: 'dimension'
|
1150
|
+
].includes(key)).map((measure)=>({
|
1151
|
+
id: measure,
|
1152
|
+
alias: measure
|
1085
1153
|
}));
|
1086
|
-
|
1087
|
-
|
1088
|
-
|
1089
|
-
|
1090
|
-
const { dataset, measures } = vseed;
|
1091
|
-
if (!measures || 0 === measures.length) return generateMeasuresByDataset(dataset);
|
1092
|
-
return measures;
|
1154
|
+
return {
|
1155
|
+
...advancedVSeed,
|
1156
|
+
measures: defaultMeasures
|
1157
|
+
};
|
1093
1158
|
};
|
1094
|
-
const
|
1159
|
+
const defaultDimensions_defaultDimensions = (advancedVSeed, context)=>{
|
1160
|
+
const result = {
|
1161
|
+
...advancedVSeed
|
1162
|
+
};
|
1163
|
+
const { vseed } = context;
|
1164
|
+
const { dimensions, dataset } = vseed;
|
1165
|
+
if (dimensions && dimensions.length > 0) return {
|
1166
|
+
...result,
|
1167
|
+
dimensions
|
1168
|
+
};
|
1095
1169
|
if (!dataset) throw new Error('dataset is required');
|
1096
|
-
if (0 === dataset.length) return
|
1170
|
+
if (0 === dataset.length) return result;
|
1171
|
+
const measures = findAllMeasures(advancedVSeed.measures);
|
1097
1172
|
const top100dataset = dataset.slice(0, 100);
|
1098
1173
|
const sample = top100dataset.reduce((prev, cur)=>({
|
1099
1174
|
...prev,
|
1100
1175
|
...cur
|
1101
1176
|
}), {});
|
1102
|
-
const
|
1177
|
+
const newDimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
|
1103
1178
|
'',
|
1104
1179
|
null,
|
1105
1180
|
void 0
|
1106
|
-
].includes(key)).map((
|
1107
|
-
id:
|
1108
|
-
alias:
|
1181
|
+
].includes(key) && !measures.some((measure)=>measure.id === key)).map((dim)=>({
|
1182
|
+
id: dim,
|
1183
|
+
alias: dim
|
1109
1184
|
}));
|
1110
|
-
return
|
1111
|
-
|
1112
|
-
|
1113
|
-
|
1114
|
-
if (!measures) return false;
|
1115
|
-
return measures.some((measure)=>'children' in measure);
|
1185
|
+
return {
|
1186
|
+
...result,
|
1187
|
+
dimensions: newDimensions
|
1188
|
+
};
|
1116
1189
|
};
|
1117
|
-
const
|
1118
|
-
const
|
1119
|
-
|
1120
|
-
|
1190
|
+
const defaultMeasureName_defaultMeasureName = (advancedVSeed)=>{
|
1191
|
+
const result = {
|
1192
|
+
...advancedVSeed
|
1193
|
+
};
|
1194
|
+
const MeaName = {
|
1195
|
+
id: MeasureName,
|
1196
|
+
alias: intl.i18n`指标名称`
|
1197
|
+
};
|
1198
|
+
if (!result.dimensions?.some((dim)=>dim.id === MeasureName)) result.dimensions?.push(MeaName);
|
1199
|
+
return result;
|
1121
1200
|
};
|
1122
|
-
const encodingForLine = (advancedVSeed
|
1123
|
-
const {
|
1124
|
-
const
|
1125
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
1126
|
-
const dimensions = getBasicDimensions(vseed);
|
1201
|
+
const encodingForLine = (advancedVSeed)=>{
|
1202
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
1203
|
+
const measures = findAllMeasures(vseedMeasures);
|
1127
1204
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
1128
1205
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
1129
1206
|
const encoding = {};
|
1130
|
-
if (hasDimensionEncoding)
|
1131
|
-
else
|
1132
|
-
if (hasMeasureEncoding)
|
1133
|
-
else
|
1207
|
+
if (hasDimensionEncoding) line_generateDimensionEncoding(dimensions, encoding);
|
1208
|
+
else line_generateDefaultDimensionEncoding(dimensions, encoding);
|
1209
|
+
if (hasMeasureEncoding) line_generateMeasureEncoding(measures, encoding);
|
1210
|
+
else line_generateDefaultMeasureEncoding(measures, encoding);
|
1134
1211
|
return {
|
1135
1212
|
...advancedVSeed,
|
1136
1213
|
encoding
|
1137
1214
|
};
|
1138
1215
|
};
|
1139
|
-
const
|
1140
|
-
encoding.tooltip = unique(measures.map((item)=>item.id));
|
1141
|
-
encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
1142
|
-
};
|
1143
|
-
const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
1216
|
+
const line_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
1144
1217
|
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
1145
1218
|
encoding.x = uniqueDimIds.slice(0, 1);
|
1146
1219
|
encoding.color = uniqueDimIds.slice(1);
|
@@ -1150,20 +1223,39 @@ const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
|
1150
1223
|
encoding.row = [];
|
1151
1224
|
encoding.column = [];
|
1152
1225
|
};
|
1153
|
-
const
|
1154
|
-
encoding.tooltip = measures.map((item)=>item.id);
|
1155
|
-
encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
1156
|
-
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
1157
|
-
if (color.length > 0) encoding.color = color;
|
1158
|
-
};
|
1159
|
-
const generateDimensionEncoding = (dimensions, encoding)=>{
|
1226
|
+
const line_generateDimensionEncoding = (dimensions, encoding)=>{
|
1160
1227
|
encoding.x = unique(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
|
1161
1228
|
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
1162
|
-
encoding.detail =
|
1229
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
1163
1230
|
if (0 === encoding.x.length) encoding.x = [
|
1164
1231
|
dimensions[0].id
|
1165
1232
|
];
|
1166
|
-
if (0 === encoding.color.length) encoding.color =
|
1233
|
+
if (0 === encoding.color.length) encoding.color = [
|
1234
|
+
MeasureName
|
1235
|
+
];
|
1236
|
+
if (0 === encoding.detail.length) encoding.detail = [
|
1237
|
+
MeasureName
|
1238
|
+
];
|
1239
|
+
};
|
1240
|
+
const line_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
1241
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
1242
|
+
encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
1243
|
+
};
|
1244
|
+
const line_generateMeasureEncoding = (measures, encoding)=>{
|
1245
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
1246
|
+
encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
1247
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
1248
|
+
if (color.length > 0) encoding.color = color;
|
1249
|
+
};
|
1250
|
+
const isMeasureTreeWithChildren = (vseed)=>{
|
1251
|
+
const { measures } = vseed;
|
1252
|
+
if (!measures) return false;
|
1253
|
+
return measures.some((measure)=>'children' in measure);
|
1254
|
+
};
|
1255
|
+
const isMeasureTreeWithParentId = (vseed)=>{
|
1256
|
+
const { measures } = vseed;
|
1257
|
+
if (!measures) return false;
|
1258
|
+
return measures.some((measure)=>'parentId' in measure);
|
1167
1259
|
};
|
1168
1260
|
const measureDepth = (measures = [])=>{
|
1169
1261
|
if (!measures) return 0;
|
@@ -1189,7 +1281,7 @@ const isPivotChart = (vseed)=>{
|
|
1189
1281
|
}
|
1190
1282
|
if ('dualAxis' === vseed.chartType || 'scatter' === vseed.chartType) {
|
1191
1283
|
const { dimensions = [] } = vseed;
|
1192
|
-
const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'
|
1284
|
+
const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'row' === dimension.encoding || 'column' === dimension.encoding);
|
1193
1285
|
if (hasRowOrColumnDimension) return true;
|
1194
1286
|
if ('scatter' === vseed.chartType) {
|
1195
1287
|
if (isMeasureTreeWithChildren(vseed)) {
|
@@ -1209,7 +1301,7 @@ const isPivotChart = (vseed)=>{
|
|
1209
1301
|
return false;
|
1210
1302
|
}
|
1211
1303
|
const { measures = [], dimensions = [] } = vseed;
|
1212
|
-
const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'
|
1304
|
+
const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'row' === dimension.encoding || 'column' === dimension.encoding);
|
1213
1305
|
const hasMeasureGroup = measures && measures.some((measure)=>measure && measure.children);
|
1214
1306
|
return hasRowOrColumnDimension || hasMeasureGroup;
|
1215
1307
|
};
|
@@ -1223,9 +1315,7 @@ const buildMeasures = (advancedVSeed, context)=>{
|
|
1223
1315
|
advancedVSeed.measures = generateMeasuresByParentId(vseed.measures);
|
1224
1316
|
return advancedVSeed;
|
1225
1317
|
}
|
1226
|
-
|
1227
|
-
if (isPivotChart(vseed)) advancedVSeed.measures = basicMeasuresToMeasureTree(basicMeasures);
|
1228
|
-
else advancedVSeed.measures = basicMeasures;
|
1318
|
+
if (isPivotChart(vseed)) advancedVSeed.measures = basicMeasuresToMeasureTree(advancedVSeed.measures);
|
1229
1319
|
return advancedVSeed;
|
1230
1320
|
};
|
1231
1321
|
const generateMeasuresByParentId = (measures)=>{
|
@@ -1243,115 +1333,25 @@ const generateMeasuresByParentId = (measures)=>{
|
|
1243
1333
|
]
|
1244
1334
|
});
|
1245
1335
|
});
|
1246
|
-
return measureTree;
|
1247
|
-
};
|
1248
|
-
const basicMeasuresToMeasureTree = (measures)=>{
|
1249
|
-
const id = measures.map((item)=>item.id).join('-');
|
1250
|
-
const alias = measures.map((item)=>item.alias || item.id).join('-');
|
1251
|
-
return [
|
1252
|
-
{
|
1253
|
-
id,
|
1254
|
-
alias,
|
1255
|
-
children: measures
|
1256
|
-
}
|
1257
|
-
];
|
1258
|
-
};
|
1259
|
-
const autoDimensions_autoDimensions = (advancedVSeed, context)=>{
|
1260
|
-
const result = {
|
1261
|
-
...advancedVSeed
|
1262
|
-
};
|
1263
|
-
const { vseed } = context;
|
1264
|
-
const { dimensions, dataset } = vseed;
|
1265
|
-
const measures = findAllMeasures(advancedVSeed.measures);
|
1266
|
-
const MeaName = {
|
1267
|
-
id: MeasureName,
|
1268
|
-
alias: intl.i18n`指标名称`
|
1269
|
-
};
|
1270
|
-
if (!dataset) throw new Error('dataset is required');
|
1271
|
-
if (0 === dataset.length) return result;
|
1272
|
-
if (dimensions) {
|
1273
|
-
result.dimensions = dimensions.map((dim)=>({
|
1274
|
-
location: 'dimension',
|
1275
|
-
...dim
|
1276
|
-
}));
|
1277
|
-
if (result.dimensions.some((dim)=>dim.id === MeasureName)) return result;
|
1278
|
-
result.dimensions.push(MeaName);
|
1279
|
-
return result;
|
1280
|
-
}
|
1281
|
-
const top100dataset = dataset.slice(0, 100);
|
1282
|
-
const sample = top100dataset.reduce((prev, cur)=>({
|
1283
|
-
...prev,
|
1284
|
-
...cur
|
1285
|
-
}), {});
|
1286
|
-
result.dimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
|
1287
|
-
'',
|
1288
|
-
null,
|
1289
|
-
void 0
|
1290
|
-
].includes(key) && !measures.some((measure)=>measure.id === key)).map((dim)=>({
|
1291
|
-
id: dim,
|
1292
|
-
alias: dim,
|
1293
|
-
location: 'dimension'
|
1294
|
-
}));
|
1295
|
-
result.dimensions.push(MeaName);
|
1296
|
-
return result;
|
1297
|
-
};
|
1298
|
-
const pivotAdapter = (pipeline, pivotPipeline)=>(advancedVSeed, context)=>{
|
1299
|
-
const { vseed } = context;
|
1300
|
-
const usePivotChart = isPivotChart(vseed);
|
1301
|
-
if (usePivotChart) return execPipeline(pivotPipeline, context, advancedVSeed);
|
1302
|
-
return execPipeline(pipeline, context, advancedVSeed);
|
1303
|
-
};
|
1304
|
-
const foldMeasures = (dataset, measures, options)=>{
|
1305
|
-
const { measureId, measureName, measureValue, colorMeasureId } = options || {};
|
1306
|
-
const foldInfo = {
|
1307
|
-
measureId,
|
1308
|
-
measureName,
|
1309
|
-
measureValue,
|
1310
|
-
colorRange: [
|
1311
|
-
0,
|
1312
|
-
1
|
1313
|
-
],
|
1314
|
-
measureRange: [
|
1315
|
-
0,
|
1316
|
-
1
|
1317
|
-
],
|
1318
|
-
foldMap: {}
|
1319
|
-
};
|
1320
|
-
const result = new Array(dataset.length * measures.length);
|
1321
|
-
let index = 0;
|
1322
|
-
const ids = measures.map((d)=>d.id);
|
1323
|
-
for(let i = 0; i < dataset.length; i++)for(let j = 0; j < measures.length; j++){
|
1324
|
-
const datum = omit({
|
1325
|
-
...dataset[i]
|
1326
|
-
}, ids);
|
1327
|
-
datum[ORIGINAL_DATA] = dataset[i];
|
1328
|
-
const measure = measures[j];
|
1329
|
-
const { id, alias } = measure;
|
1330
|
-
datum[id] = dataset[i][id];
|
1331
|
-
datum[measureId] = id;
|
1332
|
-
datum[measureName] = alias || id;
|
1333
|
-
datum[measureValue] = dataset[i][id];
|
1334
|
-
if (colorMeasureId) {
|
1335
|
-
const value = datum[ORIGINAL_DATA][colorMeasureId];
|
1336
|
-
datum[ColorEncoding] = value;
|
1337
|
-
datum[ColorIdEncoding] = colorMeasureId;
|
1338
|
-
foldInfo.colorRange = [
|
1339
|
-
Math.min(foldInfo.colorRange[0] || 1 / 0, Number(value)),
|
1340
|
-
Math.max(foldInfo.colorRange[1] || -1 / 0, Number(value))
|
1341
|
-
];
|
1336
|
+
return measureTree;
|
1337
|
+
};
|
1338
|
+
const basicMeasuresToMeasureTree = (measures)=>{
|
1339
|
+
const id = measures.map((item)=>item.id).join('-');
|
1340
|
+
const alias = measures.map((item)=>item.alias || item.id).join('-');
|
1341
|
+
return [
|
1342
|
+
{
|
1343
|
+
id,
|
1344
|
+
alias,
|
1345
|
+
children: measures
|
1342
1346
|
}
|
1343
|
-
|
1344
|
-
Math.min(foldInfo.measureRange[0] || 1 / 0, Number(datum[id])),
|
1345
|
-
Math.max(foldInfo.measureRange[1] || -1 / 0, Number(datum[id]))
|
1346
|
-
];
|
1347
|
-
foldInfo.foldMap[id] = alias;
|
1348
|
-
result[index++] = datum;
|
1349
|
-
}
|
1350
|
-
return {
|
1351
|
-
dataset: result,
|
1352
|
-
foldInfo
|
1353
|
-
};
|
1347
|
+
];
|
1354
1348
|
};
|
1349
|
+
const pivotAdapter = (pipeline, pivotPipeline)=>(advancedVSeed, context)=>{
|
1350
|
+
const { vseed } = context;
|
1351
|
+
const usePivotChart = isPivotChart(vseed);
|
1352
|
+
if (usePivotChart) return execPipeline(pivotPipeline, context, advancedVSeed);
|
1353
|
+
return execPipeline(pipeline, context, advancedVSeed);
|
1354
|
+
};
|
1355
1355
|
const unfoldDimensions = (dataset, dimensions, encoding, options)=>{
|
1356
1356
|
const { foldMeasureId, separator, colorItemAsId } = options;
|
1357
1357
|
const unfoldInfo = {
|
@@ -1446,7 +1446,9 @@ const reshapeWithEncoding = (advancedVSeed, context)=>{
|
|
1446
1446
|
const { dimensions, measures, encoding } = advancedVSeed;
|
1447
1447
|
if (!measures || !dimensions || !dataset || !encoding) return result;
|
1448
1448
|
if (0 === measures.length) throw new Error('measures can not be empty');
|
1449
|
+
const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
|
1449
1450
|
const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (item)=>item.id), uniqueBy(findAllMeasures(measures), (item)=>item.id), encoding, {
|
1451
|
+
colorItemAsId: hasEncoding,
|
1450
1452
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
1451
1453
|
});
|
1452
1454
|
return {
|
@@ -1477,6 +1479,7 @@ const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
|
|
1477
1479
|
if (measures) measures.forEach((measure)=>{
|
1478
1480
|
if (measure.children && measure.children.length > 0) measureGroups.push(measure);
|
1479
1481
|
});
|
1482
|
+
const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
|
1480
1483
|
const datasets = [];
|
1481
1484
|
const datasetReshapeInfo = [];
|
1482
1485
|
measureGroups.forEach((measureGroup, index)=>{
|
@@ -1484,6 +1487,7 @@ const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
|
|
1484
1487
|
if (!measures) return;
|
1485
1488
|
const groupId = measureGroup.id;
|
1486
1489
|
const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (item)=>item.id), uniqueBy(measures, (item)=>item.id), encoding, {
|
1490
|
+
colorItemAsId: hasEncoding,
|
1487
1491
|
foldMeasureValue: `${FoldMeasureValue}${groupId}`,
|
1488
1492
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
1489
1493
|
});
|
@@ -1692,9 +1696,11 @@ const annotation_annotation = (advancedVSeed, context)=>{
|
|
1692
1696
|
};
|
1693
1697
|
const lineAdvancedPipeline = [
|
1694
1698
|
initAdvancedVSeed_initAdvancedVSeed,
|
1699
|
+
default_defaultMeasures_defaultMeasures,
|
1700
|
+
defaultDimensions_defaultDimensions,
|
1701
|
+
defaultMeasureName_defaultMeasureName,
|
1695
1702
|
encodingForLine,
|
1696
1703
|
buildMeasures,
|
1697
|
-
autoDimensions_autoDimensions,
|
1698
1704
|
pivotAdapter([
|
1699
1705
|
reshapeWithEncoding
|
1700
1706
|
], [
|
@@ -2746,7 +2752,7 @@ const annotationPoint_annotationPoint = (spec, context)=>{
|
|
2746
2752
|
const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
|
2747
2753
|
const { advancedVSeed } = context;
|
2748
2754
|
const { annotation, datasetReshapeInfo } = advancedVSeed;
|
2749
|
-
const { unfoldInfo } = datasetReshapeInfo[0];
|
2755
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
2750
2756
|
if (!annotation || !annotation.annotationVerticalLine) return spec;
|
2751
2757
|
const { annotationVerticalLine } = annotation;
|
2752
2758
|
const annotationVerticalLineList = Array.isArray(annotationVerticalLine) ? annotationVerticalLine : [
|
@@ -2826,9 +2832,9 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
|
|
2826
2832
|
}
|
2827
2833
|
const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
|
2828
2834
|
return selectedData.map((datum)=>{
|
2829
|
-
|
2830
|
-
if (
|
2831
|
-
return
|
2835
|
+
if (datum[unfoldInfo.encodingX]) return generateOneMarkLine(datum[unfoldInfo.encodingX]);
|
2836
|
+
if (datum[foldInfo.measureValue]) return generateOneMarkLine(datum[foldInfo.measureValue]);
|
2837
|
+
return {};
|
2832
2838
|
});
|
2833
2839
|
});
|
2834
2840
|
const specMarkLine = spec.markLine || [];
|
@@ -2844,10 +2850,10 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
|
|
2844
2850
|
const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
|
2845
2851
|
const { advancedVSeed } = context;
|
2846
2852
|
const { annotation, datasetReshapeInfo } = advancedVSeed;
|
2847
|
-
const { unfoldInfo } = datasetReshapeInfo[0];
|
2853
|
+
const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
|
2848
2854
|
if (!annotation || !annotation.annotationHorizontalLine) return spec;
|
2849
2855
|
const { annotationHorizontalLine } = annotation;
|
2850
|
-
const
|
2856
|
+
const annotationHorizontalLineList = Array.isArray(annotationHorizontalLine) ? annotationHorizontalLine : [
|
2851
2857
|
annotationHorizontalLine
|
2852
2858
|
];
|
2853
2859
|
const positionMap = {
|
@@ -2858,8 +2864,8 @@ const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
|
|
2858
2864
|
insideMiddle: 'insideMiddleTop',
|
2859
2865
|
insideEnd: 'insideEndTop'
|
2860
2866
|
};
|
2861
|
-
const markLine =
|
2862
|
-
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 } =
|
2867
|
+
const markLine = annotationHorizontalLineList.flatMap((annotationHorizontalLine)=>{
|
2868
|
+
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;
|
2863
2869
|
const dataset = advancedVSeed.dataset.flat();
|
2864
2870
|
const generateOneMarkLine = (y)=>({
|
2865
2871
|
y,
|
@@ -2924,9 +2930,9 @@ const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
|
|
2924
2930
|
}
|
2925
2931
|
const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
|
2926
2932
|
return selectedData.map((datum)=>{
|
2927
|
-
|
2928
|
-
if (
|
2929
|
-
return
|
2933
|
+
if (datum[unfoldInfo.encodingY]) return generateOneMarkLine(datum[unfoldInfo.encodingY]);
|
2934
|
+
if (datum[foldInfo.measureValue]) return generateOneMarkLine(datum[foldInfo.measureValue]);
|
2935
|
+
return {};
|
2930
2936
|
});
|
2931
2937
|
});
|
2932
2938
|
const specMarkLine = spec.markLine || [];
|
@@ -3290,7 +3296,7 @@ const pivotRowDimensions = (spec, context)=>{
|
|
3290
3296
|
const { advancedVSeed } = context;
|
3291
3297
|
const dimensions = advancedVSeed.dimensions;
|
3292
3298
|
if (!dimensions) return result;
|
3293
|
-
const rowDimensions = dimensions.filter((dim)=>'
|
3299
|
+
const rowDimensions = dimensions.filter((dim)=>'row' === dim.encoding);
|
3294
3300
|
const rows = rowDimensions.map((dim)=>({
|
3295
3301
|
dimensionKey: dim.id,
|
3296
3302
|
title: dim.alias || dim.id
|
@@ -3307,7 +3313,7 @@ const pivotColumnDimensions = (spec, context)=>{
|
|
3307
3313
|
const { advancedVSeed } = context;
|
3308
3314
|
const dimensions = advancedVSeed.dimensions;
|
3309
3315
|
if (!dimensions) return result;
|
3310
|
-
const columnDimensions = dimensions.filter((dim)=>'
|
3316
|
+
const columnDimensions = dimensions.filter((dim)=>'column' === dim.encoding);
|
3311
3317
|
const columns = columnDimensions.map((dim)=>({
|
3312
3318
|
dimensionKey: dim.id,
|
3313
3319
|
title: dim.alias || dim.id
|
@@ -3580,11 +3586,9 @@ const registerLine = ()=>{
|
|
3580
3586
|
Builder._advancedPipelineMap.line = lineAdvancedPipeline;
|
3581
3587
|
Builder._specPipelineMap.line = lineSpecPipeline;
|
3582
3588
|
};
|
3583
|
-
const encodingForColumn = (advancedVSeed
|
3584
|
-
const {
|
3585
|
-
const
|
3586
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
3587
|
-
const dimensions = getBasicDimensions(vseed);
|
3589
|
+
const encodingForColumn = (advancedVSeed)=>{
|
3590
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
3591
|
+
const measures = findAllMeasures(vseedMeasures);
|
3588
3592
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
3589
3593
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
3590
3594
|
const encoding = {};
|
@@ -3597,10 +3601,6 @@ const encodingForColumn = (advancedVSeed, context)=>{
|
|
3597
3601
|
encoding
|
3598
3602
|
};
|
3599
3603
|
};
|
3600
|
-
const column_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
3601
|
-
encoding.tooltip = unique(measures.map((item)=>item.id));
|
3602
|
-
encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
3603
|
-
};
|
3604
3604
|
const column_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
3605
3605
|
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
3606
3606
|
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
@@ -3612,13 +3612,6 @@ const column_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
|
3612
3612
|
encoding.row = [];
|
3613
3613
|
encoding.column = [];
|
3614
3614
|
};
|
3615
|
-
const column_generateMeasureEncoding = (measures, encoding)=>{
|
3616
|
-
encoding.tooltip = measures.map((item)=>item.id);
|
3617
|
-
encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
3618
|
-
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
3619
|
-
if (color.length > 0) encoding.color = color;
|
3620
|
-
return encoding;
|
3621
|
-
};
|
3622
3615
|
const column_generateDimensionEncoding = (dimensions, encoding)=>{
|
3623
3616
|
encoding.x = unique(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
|
3624
3617
|
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
@@ -3626,14 +3619,31 @@ const column_generateDimensionEncoding = (dimensions, encoding)=>{
|
|
3626
3619
|
if (0 === encoding.x.length) encoding.x = [
|
3627
3620
|
dimensions[0].id
|
3628
3621
|
];
|
3629
|
-
if (0 === encoding.color.length) encoding.color =
|
3630
|
-
|
3622
|
+
if (0 === encoding.color.length) encoding.color = [
|
3623
|
+
MeasureName
|
3624
|
+
];
|
3625
|
+
if (0 === encoding.detail.length) encoding.detail = [
|
3626
|
+
MeasureName
|
3627
|
+
];
|
3628
|
+
};
|
3629
|
+
const column_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
3630
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
3631
|
+
encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
3632
|
+
};
|
3633
|
+
const column_generateMeasureEncoding = (measures, encoding)=>{
|
3634
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
3635
|
+
encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
3636
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
3637
|
+
if (color.length > 0) encoding.color = color;
|
3638
|
+
return encoding;
|
3631
3639
|
};
|
3632
3640
|
const columnAdvancedPipeline = [
|
3633
3641
|
initAdvancedVSeed_initAdvancedVSeed,
|
3642
|
+
default_defaultMeasures_defaultMeasures,
|
3643
|
+
defaultDimensions_defaultDimensions,
|
3644
|
+
defaultMeasureName_defaultMeasureName,
|
3634
3645
|
encodingForColumn,
|
3635
3646
|
buildMeasures,
|
3636
|
-
autoDimensions_autoDimensions,
|
3637
3647
|
pivotAdapter([
|
3638
3648
|
reshapeWithEncoding
|
3639
3649
|
], [
|
@@ -3993,9 +4003,11 @@ const registerColumn = ()=>{
|
|
3993
4003
|
};
|
3994
4004
|
const columnParallelAdvancedPipeline = [
|
3995
4005
|
initAdvancedVSeed_initAdvancedVSeed,
|
4006
|
+
default_defaultMeasures_defaultMeasures,
|
4007
|
+
defaultDimensions_defaultDimensions,
|
4008
|
+
defaultMeasureName_defaultMeasureName,
|
3996
4009
|
encodingForColumn,
|
3997
4010
|
buildMeasures,
|
3998
|
-
autoDimensions_autoDimensions,
|
3999
4011
|
pivotAdapter([
|
4000
4012
|
reshapeWithEncoding
|
4001
4013
|
], [
|
@@ -4090,9 +4102,11 @@ const registerColumnParallel = ()=>{
|
|
4090
4102
|
};
|
4091
4103
|
const columnPercentAdvancedPipeline = [
|
4092
4104
|
initAdvancedVSeed_initAdvancedVSeed,
|
4105
|
+
default_defaultMeasures_defaultMeasures,
|
4106
|
+
defaultDimensions_defaultDimensions,
|
4107
|
+
defaultMeasureName_defaultMeasureName,
|
4093
4108
|
encodingForColumn,
|
4094
4109
|
buildMeasures,
|
4095
|
-
autoDimensions_autoDimensions,
|
4096
4110
|
pivotAdapter([
|
4097
4111
|
reshapeWithEncoding
|
4098
4112
|
], [
|
@@ -4169,11 +4183,9 @@ const registerColumnPercent = ()=>{
|
|
4169
4183
|
Builder._advancedPipelineMap.columnPercent = columnPercentAdvancedPipeline;
|
4170
4184
|
Builder._specPipelineMap.columnPercent = columnPercentSpecPipeline;
|
4171
4185
|
};
|
4172
|
-
const encodingForBar = (advancedVSeed
|
4173
|
-
const {
|
4174
|
-
const
|
4175
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
4176
|
-
const dimensions = getBasicDimensions(vseed);
|
4186
|
+
const encodingForBar = (advancedVSeed)=>{
|
4187
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
4188
|
+
const measures = findAllMeasures(vseedMeasures);
|
4177
4189
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
4178
4190
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
4179
4191
|
const encoding = {};
|
@@ -4186,10 +4198,6 @@ const encodingForBar = (advancedVSeed, context)=>{
|
|
4186
4198
|
encoding
|
4187
4199
|
};
|
4188
4200
|
};
|
4189
|
-
const bar_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
4190
|
-
encoding.tooltip = unique(measures.map((item)=>item.id));
|
4191
|
-
encoding.x = unique(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
4192
|
-
};
|
4193
4201
|
const bar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
4194
4202
|
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
4195
4203
|
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
@@ -4201,13 +4209,6 @@ const bar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
|
4201
4209
|
encoding.row = [];
|
4202
4210
|
encoding.column = [];
|
4203
4211
|
};
|
4204
|
-
const bar_generateMeasureEncoding = (measures, encoding)=>{
|
4205
|
-
encoding.tooltip = measures.map((item)=>item.id);
|
4206
|
-
encoding.x = unique(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
4207
|
-
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
4208
|
-
if (color.length > 0) encoding.color = color;
|
4209
|
-
return encoding;
|
4210
|
-
};
|
4211
4212
|
const bar_generateDimensionEncoding = (dimensions, encoding)=>{
|
4212
4213
|
encoding.y = unique(dimensions.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
|
4213
4214
|
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
@@ -4215,8 +4216,23 @@ const bar_generateDimensionEncoding = (dimensions, encoding)=>{
|
|
4215
4216
|
if (0 === encoding.y.length) encoding.y = [
|
4216
4217
|
dimensions[0].id
|
4217
4218
|
];
|
4218
|
-
if (0 === encoding.color.length) encoding.color =
|
4219
|
-
|
4219
|
+
if (0 === encoding.color.length) encoding.color = [
|
4220
|
+
MeasureName
|
4221
|
+
];
|
4222
|
+
if (0 === encoding.detail.length) encoding.detail = [
|
4223
|
+
MeasureName
|
4224
|
+
];
|
4225
|
+
};
|
4226
|
+
const bar_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
4227
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
4228
|
+
encoding.x = unique(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
4229
|
+
};
|
4230
|
+
const bar_generateMeasureEncoding = (measures, encoding)=>{
|
4231
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
4232
|
+
encoding.x = unique(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
4233
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
4234
|
+
if (color.length > 0) encoding.color = color;
|
4235
|
+
return encoding;
|
4220
4236
|
};
|
4221
4237
|
const sortYBandAxis = (advancedVSeed, context)=>{
|
4222
4238
|
const result = {
|
@@ -4236,9 +4252,11 @@ const sortYBandAxis = (advancedVSeed, context)=>{
|
|
4236
4252
|
};
|
4237
4253
|
const barAdvancedPipeline = [
|
4238
4254
|
initAdvancedVSeed_initAdvancedVSeed,
|
4255
|
+
default_defaultMeasures_defaultMeasures,
|
4256
|
+
defaultDimensions_defaultDimensions,
|
4257
|
+
defaultMeasureName_defaultMeasureName,
|
4239
4258
|
encodingForBar,
|
4240
4259
|
buildMeasures,
|
4241
|
-
autoDimensions_autoDimensions,
|
4242
4260
|
pivotAdapter([
|
4243
4261
|
reshapeWithEncoding
|
4244
4262
|
], [
|
@@ -4589,9 +4607,11 @@ const registerBar = ()=>{
|
|
4589
4607
|
};
|
4590
4608
|
const barParallelAdvancedPipeline = [
|
4591
4609
|
initAdvancedVSeed_initAdvancedVSeed,
|
4592
|
-
|
4593
|
-
|
4610
|
+
default_defaultMeasures_defaultMeasures,
|
4611
|
+
defaultDimensions_defaultDimensions,
|
4612
|
+
defaultMeasureName_defaultMeasureName,
|
4594
4613
|
encodingForBar,
|
4614
|
+
buildMeasures,
|
4595
4615
|
pivotAdapter([
|
4596
4616
|
reshapeWithEncoding
|
4597
4617
|
], [
|
@@ -4685,9 +4705,11 @@ const registerBarParallel = ()=>{
|
|
4685
4705
|
};
|
4686
4706
|
const barPercentAdvancedPipeline = [
|
4687
4707
|
initAdvancedVSeed_initAdvancedVSeed,
|
4688
|
-
|
4689
|
-
|
4708
|
+
default_defaultMeasures_defaultMeasures,
|
4709
|
+
defaultDimensions_defaultDimensions,
|
4710
|
+
defaultMeasureName_defaultMeasureName,
|
4690
4711
|
encodingForBar,
|
4712
|
+
buildMeasures,
|
4691
4713
|
pivotAdapter([
|
4692
4714
|
reshapeWithEncoding
|
4693
4715
|
], [
|
@@ -4756,9 +4778,11 @@ const registerBarPercent = ()=>{
|
|
4756
4778
|
};
|
4757
4779
|
const areaAdvancedPipeline = [
|
4758
4780
|
initAdvancedVSeed_initAdvancedVSeed,
|
4781
|
+
default_defaultMeasures_defaultMeasures,
|
4782
|
+
defaultDimensions_defaultDimensions,
|
4783
|
+
defaultMeasureName_defaultMeasureName,
|
4759
4784
|
encodingForLine,
|
4760
4785
|
buildMeasures,
|
4761
|
-
autoDimensions_autoDimensions,
|
4762
4786
|
pivotAdapter([
|
4763
4787
|
reshapeWithEncoding
|
4764
4788
|
], [
|
@@ -4914,9 +4938,11 @@ const registerArea = ()=>{
|
|
4914
4938
|
};
|
4915
4939
|
const areaPercentAdvancedPipeline = [
|
4916
4940
|
initAdvancedVSeed_initAdvancedVSeed,
|
4941
|
+
default_defaultMeasures_defaultMeasures,
|
4942
|
+
defaultDimensions_defaultDimensions,
|
4943
|
+
defaultMeasureName_defaultMeasureName,
|
4917
4944
|
encodingForLine,
|
4918
4945
|
buildMeasures,
|
4919
|
-
autoDimensions_autoDimensions,
|
4920
4946
|
pivotAdapter([
|
4921
4947
|
reshapeWithEncoding
|
4922
4948
|
], [
|
@@ -4990,11 +5016,9 @@ const registerAreaPercent = ()=>{
|
|
4990
5016
|
Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
|
4991
5017
|
Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
|
4992
5018
|
};
|
4993
|
-
const encodingForScatter = (advancedVSeed
|
4994
|
-
const {
|
4995
|
-
const
|
4996
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
4997
|
-
const dimensions = getBasicDimensions(vseed);
|
5019
|
+
const encodingForScatter = (advancedVSeed)=>{
|
5020
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
5021
|
+
const measures = findAllMeasures(vseedMeasures);
|
4998
5022
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
4999
5023
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
5000
5024
|
const encoding = {};
|
@@ -5007,10 +5031,6 @@ const encodingForScatter = (advancedVSeed, context)=>{
|
|
5007
5031
|
encoding
|
5008
5032
|
};
|
5009
5033
|
};
|
5010
|
-
const scatter_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
5011
|
-
encoding.tooltip = unique(measures.map((item)=>item.id));
|
5012
|
-
encoding.y = unique(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5013
|
-
};
|
5014
5034
|
const scatter_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
5015
5035
|
const dimensionsWithoutMeasureName = dimensions.filter((item)=>item.id !== MeasureName);
|
5016
5036
|
const uniqueDimIds = unique(dimensionsWithoutMeasureName.map((d)=>d.id));
|
@@ -5021,17 +5041,27 @@ const scatter_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
|
5021
5041
|
encoding.row = [];
|
5022
5042
|
encoding.column = [];
|
5023
5043
|
};
|
5044
|
+
const scatter_generateDimensionEncoding = (dimensions, encoding)=>{
|
5045
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5046
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
5047
|
+
if (0 === encoding.color.length) encoding.color = [
|
5048
|
+
MeasureName
|
5049
|
+
];
|
5050
|
+
if (0 === encoding.detail.length) encoding.detail = [
|
5051
|
+
MeasureName
|
5052
|
+
];
|
5053
|
+
};
|
5054
|
+
const scatter_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
5055
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
5056
|
+
encoding.y = unique(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5057
|
+
};
|
5024
5058
|
const scatter_generateMeasureEncoding = (measures, encoding)=>{
|
5025
5059
|
encoding.tooltip = measures.map((item)=>item.id);
|
5026
5060
|
encoding.y = unique(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5027
5061
|
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5028
|
-
if (color.length > 0) encoding.color =
|
5029
|
-
|
5030
|
-
|
5031
|
-
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5032
|
-
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
5033
|
-
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
5034
|
-
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
5062
|
+
if (color.length > 0) encoding.color = [
|
5063
|
+
color[0]
|
5064
|
+
];
|
5035
5065
|
};
|
5036
5066
|
const buildMeasuresForScatter = (advancedVSeed, context)=>{
|
5037
5067
|
const { vseed } = context;
|
@@ -5043,8 +5073,7 @@ const buildMeasuresForScatter = (advancedVSeed, context)=>{
|
|
5043
5073
|
advancedVSeed.measures = buildMeasuresForScatter_generateMeasuresByParentId(vseed.measures);
|
5044
5074
|
return advancedVSeed;
|
5045
5075
|
}
|
5046
|
-
const
|
5047
|
-
const scatterMeasures = vseed.scatterMeasures ? vseed.scatterMeasures : basicMeasuresToScatterMeasures(basicMeasures);
|
5076
|
+
const scatterMeasures = vseed.scatterMeasures ? vseed.scatterMeasures : basicMeasuresToScatterMeasures(advancedVSeed.measures || []);
|
5048
5077
|
advancedVSeed.measures = scatterMeasuresToMeasureTree(scatterMeasures);
|
5049
5078
|
return advancedVSeed;
|
5050
5079
|
};
|
@@ -5060,7 +5089,7 @@ const basicMeasuresToScatterMeasures = (basicMeasures)=>{
|
|
5060
5089
|
const isXAxis = encoding.includes('xAxis');
|
5061
5090
|
if (isYAxis) yMeasures.push(item);
|
5062
5091
|
else if (isXAxis) xMeasures.push(item);
|
5063
|
-
else if (0
|
5092
|
+
else if (0 !== index) yMeasures.push(item);
|
5064
5093
|
else xMeasures.push(item);
|
5065
5094
|
}
|
5066
5095
|
return [
|
@@ -5128,7 +5157,7 @@ const buildMeasuresForScatter_generateMeasuresByParentId = (measures)=>{
|
|
5128
5157
|
const isEmpty = !encoding.length;
|
5129
5158
|
if (isY) scatterChart.yMeasures.push(item);
|
5130
5159
|
else if (isX) scatterChart.xMeasures.push(item);
|
5131
|
-
else if (isEmpty) if (0
|
5160
|
+
else if (isEmpty) if (0 !== scatterChart.yMeasures.length) scatterChart.yMeasures.push(item);
|
5132
5161
|
else scatterChart.xMeasures.push(item);
|
5133
5162
|
});
|
5134
5163
|
return scatterMeasuresToMeasureTree(scatterMeasures);
|
@@ -5263,9 +5292,11 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
|
5263
5292
|
};
|
5264
5293
|
const scatterAdvancedPipeline = [
|
5265
5294
|
initAdvancedVSeed_initAdvancedVSeed,
|
5295
|
+
default_defaultMeasures_defaultMeasures,
|
5296
|
+
defaultDimensions_defaultDimensions,
|
5297
|
+
defaultMeasureName_defaultMeasureName,
|
5266
5298
|
encodingForScatter,
|
5267
5299
|
buildMeasuresForScatter,
|
5268
|
-
autoDimensions_autoDimensions,
|
5269
5300
|
pivotAdapter([
|
5270
5301
|
reshapeWithScatterEncoding
|
5271
5302
|
], [
|
@@ -5410,11 +5441,9 @@ const registerScatter = ()=>{
|
|
5410
5441
|
Builder._advancedPipelineMap.scatter = scatterAdvancedPipeline;
|
5411
5442
|
Builder._specPipelineMap.scatter = scatterSpecPipeline;
|
5412
5443
|
};
|
5413
|
-
const encodingForDualAxis = (advancedVSeed
|
5414
|
-
const {
|
5415
|
-
const
|
5416
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
5417
|
-
const dimensions = getBasicDimensions(vseed);
|
5444
|
+
const encodingForDualAxis = (advancedVSeed)=>{
|
5445
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
5446
|
+
const measures = findAllMeasures(vseedMeasures);
|
5418
5447
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
5419
5448
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
5420
5449
|
const encoding = {};
|
@@ -5427,10 +5456,6 @@ const encodingForDualAxis = (advancedVSeed, context)=>{
|
|
5427
5456
|
encoding
|
5428
5457
|
};
|
5429
5458
|
};
|
5430
|
-
const dualAxis_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
5431
|
-
encoding.tooltip = unique(measures.map((item)=>item.id));
|
5432
|
-
encoding.y = unique(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5433
|
-
};
|
5434
5459
|
const dualAxis_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
5435
5460
|
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
5436
5461
|
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
@@ -5442,13 +5467,6 @@ const dualAxis_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
|
5442
5467
|
encoding.row = [];
|
5443
5468
|
encoding.column = [];
|
5444
5469
|
};
|
5445
|
-
const dualAxis_generateMeasureEncoding = (measures, encoding)=>{
|
5446
|
-
encoding.tooltip = measures.map((item)=>item.id);
|
5447
|
-
encoding.y = unique(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5448
|
-
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5449
|
-
if (color.length > 0) encoding.color = color;
|
5450
|
-
return encoding;
|
5451
|
-
};
|
5452
5470
|
const dualAxis_generateDimensionEncoding = (dimensions, encoding)=>{
|
5453
5471
|
encoding.x = unique(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
|
5454
5472
|
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
@@ -5456,8 +5474,23 @@ const dualAxis_generateDimensionEncoding = (dimensions, encoding)=>{
|
|
5456
5474
|
if (0 === encoding.x.length) encoding.x = [
|
5457
5475
|
dimensions[0].id
|
5458
5476
|
];
|
5459
|
-
if (0 === encoding.color.length) encoding.color =
|
5460
|
-
|
5477
|
+
if (0 === encoding.color.length) encoding.color = [
|
5478
|
+
MeasureName
|
5479
|
+
];
|
5480
|
+
if (0 === encoding.detail.length) encoding.detail = [
|
5481
|
+
MeasureName
|
5482
|
+
];
|
5483
|
+
};
|
5484
|
+
const dualAxis_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
5485
|
+
encoding.tooltip = unique(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
|
+
};
|
5488
|
+
const dualAxis_generateMeasureEncoding = (measures, encoding)=>{
|
5489
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
5490
|
+
encoding.y = unique(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5491
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5492
|
+
if (color.length > 0) encoding.color = color;
|
5493
|
+
return encoding;
|
5461
5494
|
};
|
5462
5495
|
const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
|
5463
5496
|
const { vseed } = context;
|
@@ -5469,8 +5502,7 @@ const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
|
|
5469
5502
|
advancedVSeed.measures = buildMeasuresForDualAxis_generateMeasuresByParentId(vseed.measures);
|
5470
5503
|
return advancedVSeed;
|
5471
5504
|
}
|
5472
|
-
const
|
5473
|
-
const dualMeasures = vseed.dualMeasures ? vseed.dualMeasures : basicMeasuresToDualMeasures(basicMeasures);
|
5505
|
+
const dualMeasures = vseed.dualMeasures ? vseed.dualMeasures : basicMeasuresToDualMeasures(advancedVSeed.measures || []);
|
5474
5506
|
advancedVSeed.measures = dualMeasuresToMeasureTree(dualMeasures);
|
5475
5507
|
return advancedVSeed;
|
5476
5508
|
};
|
@@ -5574,8 +5606,10 @@ const reshapeWithDualEncoding = (advancedVSeed, context)=>{
|
|
5574
5606
|
const datasets = [];
|
5575
5607
|
const primaryMeasures = measures[0];
|
5576
5608
|
const secondaryMeasures = measures[1] || [];
|
5609
|
+
const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
|
5577
5610
|
if (primaryMeasures && primaryMeasures.children) {
|
5578
5611
|
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
|
5612
|
+
colorItemAsId: hasEncoding,
|
5579
5613
|
foldMeasureValue: FoldPrimaryMeasureValue,
|
5580
5614
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
5581
5615
|
});
|
@@ -5622,6 +5656,7 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
|
|
5622
5656
|
const { dataset } = vseed;
|
5623
5657
|
const { dimensions, measures, encoding, chartType } = advancedVSeed;
|
5624
5658
|
if (!measures || !dimensions || !dataset || !encoding) return result;
|
5659
|
+
const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
|
5625
5660
|
const datasetList = [];
|
5626
5661
|
const datasetReshapeInfo = [];
|
5627
5662
|
const measureGroups = [];
|
@@ -5640,6 +5675,7 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
|
|
5640
5675
|
const secondaryMeasures = measures[1] || [];
|
5641
5676
|
if (primaryMeasures && primaryMeasures.children) {
|
5642
5677
|
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
|
5678
|
+
colorItemAsId: hasEncoding,
|
5643
5679
|
foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,
|
5644
5680
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
5645
5681
|
});
|
@@ -5708,9 +5744,11 @@ const dualAxisConfig = (advancedVSeed, context)=>{
|
|
5708
5744
|
};
|
5709
5745
|
const dualAxisAdvancedPipeline = [
|
5710
5746
|
initAdvancedVSeed_initAdvancedVSeed,
|
5747
|
+
default_defaultMeasures_defaultMeasures,
|
5748
|
+
defaultDimensions_defaultDimensions,
|
5749
|
+
defaultMeasureName_defaultMeasureName,
|
5711
5750
|
encodingForDualAxis,
|
5712
5751
|
buildMeasuresForDualAxis,
|
5713
|
-
autoDimensions_autoDimensions,
|
5714
5752
|
pivotAdapter([
|
5715
5753
|
reshapeWithDualEncoding
|
5716
5754
|
], [
|
@@ -6543,11 +6581,9 @@ const registerDualAxis = ()=>{
|
|
6543
6581
|
Builder._advancedPipelineMap.dualAxis = dualAxisAdvancedPipeline;
|
6544
6582
|
Builder._specPipelineMap.dualAxis = dualAxisSpecPipeline;
|
6545
6583
|
};
|
6546
|
-
const encodingForPie = (advancedVSeed
|
6547
|
-
const {
|
6548
|
-
const
|
6549
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
6550
|
-
const dimensions = getBasicDimensions(vseed);
|
6584
|
+
const encodingForPie = (advancedVSeed)=>{
|
6585
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
6586
|
+
const measures = findAllMeasures(vseedMeasures);
|
6551
6587
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
6552
6588
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
6553
6589
|
const encoding = {};
|
@@ -6560,10 +6596,6 @@ const encodingForPie = (advancedVSeed, context)=>{
|
|
6560
6596
|
encoding
|
6561
6597
|
};
|
6562
6598
|
};
|
6563
|
-
const pie_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
6564
|
-
encoding.tooltip = unique(measures.map((item)=>item.id));
|
6565
|
-
encoding.angle = unique(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
|
6566
|
-
};
|
6567
6599
|
const pie_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
6568
6600
|
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
6569
6601
|
encoding.color = uniqueDimIds.slice(0);
|
@@ -6573,23 +6605,33 @@ const pie_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
|
6573
6605
|
encoding.row = [];
|
6574
6606
|
encoding.column = [];
|
6575
6607
|
};
|
6608
|
+
const pie_generateDimensionEncoding = (dimensions, encoding)=>{
|
6609
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
6610
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
6611
|
+
if (0 === encoding.color.length) encoding.color = [
|
6612
|
+
MeasureName
|
6613
|
+
];
|
6614
|
+
if (0 === encoding.detail.length) encoding.detail = [
|
6615
|
+
MeasureName
|
6616
|
+
];
|
6617
|
+
};
|
6618
|
+
const pie_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
6619
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
6620
|
+
encoding.angle = unique(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
|
6621
|
+
};
|
6576
6622
|
const pie_generateMeasureEncoding = (measures, encoding)=>{
|
6577
6623
|
encoding.tooltip = measures.map((item)=>item.id);
|
6578
6624
|
encoding.angle = unique(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
|
6579
6625
|
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
6580
6626
|
if (color.length > 0) encoding.color = color;
|
6581
6627
|
};
|
6582
|
-
const pie_generateDimensionEncoding = (dimensions, encoding)=>{
|
6583
|
-
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
6584
|
-
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
6585
|
-
if (0 === encoding.color.length) encoding.color = dimensions.map((item)=>item.id);
|
6586
|
-
if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
|
6587
|
-
};
|
6588
6628
|
const pieAdvancedPipeline = [
|
6589
6629
|
initAdvancedVSeed_initAdvancedVSeed,
|
6630
|
+
default_defaultMeasures_defaultMeasures,
|
6631
|
+
defaultDimensions_defaultDimensions,
|
6632
|
+
defaultMeasureName_defaultMeasureName,
|
6590
6633
|
encodingForPie,
|
6591
6634
|
buildMeasures,
|
6592
|
-
autoDimensions_autoDimensions,
|
6593
6635
|
pivotAdapter([
|
6594
6636
|
reshapeWithEncoding
|
6595
6637
|
], [
|
@@ -6705,8 +6747,10 @@ const registerPie = ()=>{
|
|
6705
6747
|
};
|
6706
6748
|
const donutAdvancedPipeline = [
|
6707
6749
|
initAdvancedVSeed_initAdvancedVSeed,
|
6750
|
+
default_defaultMeasures_defaultMeasures,
|
6751
|
+
defaultDimensions_defaultDimensions,
|
6752
|
+
defaultMeasureName_defaultMeasureName,
|
6708
6753
|
buildMeasures,
|
6709
|
-
autoDimensions_autoDimensions,
|
6710
6754
|
encodingForPie,
|
6711
6755
|
pivotAdapter([
|
6712
6756
|
reshapeWithEncoding
|
@@ -6783,11 +6827,9 @@ const registerDonut = ()=>{
|
|
6783
6827
|
Builder._advancedPipelineMap.donut = donutAdvancedPipeline;
|
6784
6828
|
Builder._specPipelineMap.donut = donutSpecPipeline;
|
6785
6829
|
};
|
6786
|
-
const encodingForRose = (advancedVSeed
|
6787
|
-
const {
|
6788
|
-
const
|
6789
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
6790
|
-
const dimensions = getBasicDimensions(vseed);
|
6830
|
+
const encodingForRose = (advancedVSeed)=>{
|
6831
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
6832
|
+
const measures = findAllMeasures(vseedMeasures);
|
6791
6833
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
6792
6834
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
6793
6835
|
const encoding = {};
|
@@ -6800,10 +6842,6 @@ const encodingForRose = (advancedVSeed, context)=>{
|
|
6800
6842
|
encoding
|
6801
6843
|
};
|
6802
6844
|
};
|
6803
|
-
const rose_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
6804
|
-
encoding.tooltip = unique(measures.map((item)=>item.id));
|
6805
|
-
encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
6806
|
-
};
|
6807
6845
|
const rose_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
6808
6846
|
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
6809
6847
|
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
@@ -6815,12 +6853,6 @@ const rose_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
|
6815
6853
|
encoding.row = [];
|
6816
6854
|
encoding.column = [];
|
6817
6855
|
};
|
6818
|
-
const rose_generateMeasureEncoding = (measures, encoding)=>{
|
6819
|
-
encoding.tooltip = measures.map((item)=>item.id);
|
6820
|
-
encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
6821
|
-
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
6822
|
-
if (color.length > 0) encoding.color = color;
|
6823
|
-
};
|
6824
6856
|
const rose_generateDimensionEncoding = (dimensions, encoding)=>{
|
6825
6857
|
encoding.angle = unique(dimensions.filter((item)=>'angle' === item.encoding).map((item)=>item.id));
|
6826
6858
|
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
@@ -6828,14 +6860,30 @@ const rose_generateDimensionEncoding = (dimensions, encoding)=>{
|
|
6828
6860
|
if (0 === encoding.angle.length) encoding.angle = [
|
6829
6861
|
dimensions[0].id
|
6830
6862
|
];
|
6831
|
-
if (0 === encoding.color.length) encoding.color =
|
6832
|
-
|
6863
|
+
if (0 === encoding.color.length) encoding.color = [
|
6864
|
+
MeasureName
|
6865
|
+
];
|
6866
|
+
if (0 === encoding.detail.length) encoding.detail = [
|
6867
|
+
MeasureName
|
6868
|
+
];
|
6869
|
+
};
|
6870
|
+
const rose_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
6871
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
6872
|
+
encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
6873
|
+
};
|
6874
|
+
const rose_generateMeasureEncoding = (measures, encoding)=>{
|
6875
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
6876
|
+
encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
6877
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
6878
|
+
if (color.length > 0) encoding.color = color;
|
6833
6879
|
};
|
6834
6880
|
const roseAdvancedPipeline = [
|
6835
6881
|
initAdvancedVSeed_initAdvancedVSeed,
|
6882
|
+
default_defaultMeasures_defaultMeasures,
|
6883
|
+
defaultDimensions_defaultDimensions,
|
6884
|
+
defaultMeasureName_defaultMeasureName,
|
6836
6885
|
encodingForRose,
|
6837
6886
|
buildMeasures,
|
6838
|
-
autoDimensions_autoDimensions,
|
6839
6887
|
pivotAdapter([
|
6840
6888
|
reshapeWithEncoding
|
6841
6889
|
], [
|
@@ -7031,9 +7079,11 @@ const registerRose = ()=>{
|
|
7031
7079
|
};
|
7032
7080
|
const roseParallelAdvancedPipeline = [
|
7033
7081
|
initAdvancedVSeed_initAdvancedVSeed,
|
7082
|
+
default_defaultMeasures_defaultMeasures,
|
7083
|
+
defaultDimensions_defaultDimensions,
|
7084
|
+
defaultMeasureName_defaultMeasureName,
|
7034
7085
|
encodingForRose,
|
7035
7086
|
buildMeasures,
|
7036
|
-
autoDimensions_autoDimensions,
|
7037
7087
|
pivotAdapter([
|
7038
7088
|
reshapeWithEncoding
|
7039
7089
|
], [
|
@@ -7139,11 +7189,9 @@ const registerRoseParallel = ()=>{
|
|
7139
7189
|
Builder._advancedPipelineMap.roseParallel = roseParallelAdvancedPipeline;
|
7140
7190
|
Builder._specPipelineMap.roseParallel = roseParallelSpecPipeline;
|
7141
7191
|
};
|
7142
|
-
const encodingForRadar = (advancedVSeed
|
7143
|
-
const {
|
7144
|
-
const
|
7145
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7146
|
-
const dimensions = getBasicDimensions(vseed);
|
7192
|
+
const encodingForRadar = (advancedVSeed)=>{
|
7193
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
7194
|
+
const measures = findAllMeasures(vseedMeasures);
|
7147
7195
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7148
7196
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7149
7197
|
const encoding = {};
|
@@ -7156,10 +7204,6 @@ const encodingForRadar = (advancedVSeed, context)=>{
|
|
7156
7204
|
encoding
|
7157
7205
|
};
|
7158
7206
|
};
|
7159
|
-
const radar_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
7160
|
-
encoding.tooltip = unique(measures.map((item)=>item.id));
|
7161
|
-
encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
7162
|
-
};
|
7163
7207
|
const radar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
7164
7208
|
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
7165
7209
|
encoding.angle = uniqueDimIds.slice(0, 1);
|
@@ -7170,12 +7214,6 @@ const radar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
|
7170
7214
|
encoding.row = [];
|
7171
7215
|
encoding.column = [];
|
7172
7216
|
};
|
7173
|
-
const radar_generateMeasureEncoding = (measures, encoding)=>{
|
7174
|
-
encoding.tooltip = measures.map((item)=>item.id);
|
7175
|
-
encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
7176
|
-
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7177
|
-
if (color.length > 0) encoding.color = color;
|
7178
|
-
};
|
7179
7217
|
const radar_generateDimensionEncoding = (dimensions, encoding)=>{
|
7180
7218
|
encoding.angle = unique(dimensions.filter((item)=>'angle' === item.encoding).map((item)=>item.id));
|
7181
7219
|
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
@@ -7183,13 +7221,30 @@ const radar_generateDimensionEncoding = (dimensions, encoding)=>{
|
|
7183
7221
|
if (0 === encoding.angle.length) encoding.angle = [
|
7184
7222
|
dimensions[0].id
|
7185
7223
|
];
|
7186
|
-
if (0 === encoding.color.length) encoding.color =
|
7224
|
+
if (0 === encoding.color.length) encoding.color = [
|
7225
|
+
MeasureName
|
7226
|
+
];
|
7227
|
+
if (0 === encoding.detail.length) encoding.detail = [
|
7228
|
+
MeasureName
|
7229
|
+
];
|
7230
|
+
};
|
7231
|
+
const radar_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
7232
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
7233
|
+
encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
7234
|
+
};
|
7235
|
+
const radar_generateMeasureEncoding = (measures, encoding)=>{
|
7236
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
7237
|
+
encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
7238
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7239
|
+
if (color.length > 0) encoding.color = color;
|
7187
7240
|
};
|
7188
7241
|
const radarAdvancedPipeline = [
|
7189
7242
|
initAdvancedVSeed_initAdvancedVSeed,
|
7243
|
+
default_defaultMeasures_defaultMeasures,
|
7244
|
+
defaultDimensions_defaultDimensions,
|
7245
|
+
defaultMeasureName_defaultMeasureName,
|
7190
7246
|
encodingForRadar,
|
7191
7247
|
buildMeasures,
|
7192
|
-
autoDimensions_autoDimensions,
|
7193
7248
|
pivotAdapter([
|
7194
7249
|
reshapeWithEncoding
|
7195
7250
|
], [
|
@@ -7323,11 +7378,9 @@ const registerRadar = ()=>{
|
|
7323
7378
|
Builder._advancedPipelineMap.radar = radarAdvancedPipeline;
|
7324
7379
|
Builder._specPipelineMap.radar = radarSpecPipeline;
|
7325
7380
|
};
|
7326
|
-
const encodingForFunnel = (advancedVSeed
|
7327
|
-
const {
|
7328
|
-
const
|
7329
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7330
|
-
const dimensions = getBasicDimensions(vseed);
|
7381
|
+
const encodingForFunnel = (advancedVSeed)=>{
|
7382
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
7383
|
+
const measures = findAllMeasures(vseedMeasures);
|
7331
7384
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7332
7385
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7333
7386
|
const encoding = {};
|
@@ -7340,10 +7393,6 @@ const encodingForFunnel = (advancedVSeed, context)=>{
|
|
7340
7393
|
encoding
|
7341
7394
|
};
|
7342
7395
|
};
|
7343
|
-
const funnel_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
7344
|
-
encoding.tooltip = unique(measures.map((item)=>item.id));
|
7345
|
-
encoding.size = unique(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
|
7346
|
-
};
|
7347
7396
|
const funnel_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
7348
7397
|
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
7349
7398
|
encoding.color = uniqueDimIds.slice(0);
|
@@ -7353,23 +7402,35 @@ const funnel_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
|
7353
7402
|
encoding.row = [];
|
7354
7403
|
encoding.column = [];
|
7355
7404
|
};
|
7405
|
+
const funnel_generateDimensionEncoding = (dimensions, encoding)=>{
|
7406
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7407
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
7408
|
+
if (0 === encoding.color.length) encoding.color = [
|
7409
|
+
MeasureName
|
7410
|
+
];
|
7411
|
+
if (0 === encoding.detail.length) encoding.detail = [
|
7412
|
+
MeasureName
|
7413
|
+
];
|
7414
|
+
};
|
7415
|
+
const funnel_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
7416
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
7417
|
+
encoding.size = unique(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
|
7418
|
+
};
|
7356
7419
|
const funnel_generateMeasureEncoding = (measures, encoding)=>{
|
7357
7420
|
encoding.tooltip = measures.map((item)=>item.id);
|
7358
7421
|
encoding.size = unique(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
|
7359
7422
|
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7360
|
-
if (color.length > 0) encoding.color =
|
7361
|
-
|
7362
|
-
|
7363
|
-
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7364
|
-
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
7365
|
-
if (0 === encoding.color.length) encoding.color = dimensions.map((item)=>item.id);
|
7366
|
-
if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
|
7423
|
+
if (color.length > 0) encoding.color = [
|
7424
|
+
color[0]
|
7425
|
+
];
|
7367
7426
|
};
|
7368
7427
|
const funnelAdvancedPipeline = [
|
7369
7428
|
initAdvancedVSeed_initAdvancedVSeed,
|
7429
|
+
default_defaultMeasures_defaultMeasures,
|
7430
|
+
defaultDimensions_defaultDimensions,
|
7431
|
+
defaultMeasureName_defaultMeasureName,
|
7370
7432
|
encodingForFunnel,
|
7371
7433
|
buildMeasures,
|
7372
|
-
autoDimensions_autoDimensions,
|
7373
7434
|
pivotAdapter([
|
7374
7435
|
reshapeWithEncoding
|
7375
7436
|
], [
|
@@ -7482,11 +7543,9 @@ const registerFunnel = ()=>{
|
|
7482
7543
|
Builder._advancedPipelineMap.funnel = funnelAdvancedPipeline;
|
7483
7544
|
Builder._specPipelineMap.funnel = funnelSpecPipeline;
|
7484
7545
|
};
|
7485
|
-
const encodingForHeatmap = (advancedVSeed
|
7486
|
-
const {
|
7487
|
-
const
|
7488
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7489
|
-
const dimensions = getBasicDimensions(vseed);
|
7546
|
+
const encodingForHeatmap = (advancedVSeed)=>{
|
7547
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
7548
|
+
const measures = findAllMeasures(vseedMeasures);
|
7490
7549
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7491
7550
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7492
7551
|
const encoding = {};
|
@@ -7499,10 +7558,6 @@ const encodingForHeatmap = (advancedVSeed, context)=>{
|
|
7499
7558
|
encoding
|
7500
7559
|
};
|
7501
7560
|
};
|
7502
|
-
const heatmap_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
7503
|
-
encoding.tooltip = unique(measures.map((item)=>item.id));
|
7504
|
-
encoding.color = unique(measures.filter((item)=>'color' === item.encoding || !item.encoding).map((item)=>item.id));
|
7505
|
-
};
|
7506
7561
|
const heatmap_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
7507
7562
|
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
7508
7563
|
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
@@ -7515,12 +7570,6 @@ const heatmap_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
|
7515
7570
|
encoding.row = [];
|
7516
7571
|
encoding.column = [];
|
7517
7572
|
};
|
7518
|
-
const heatmap_generateMeasureEncoding = (measures, encoding)=>{
|
7519
|
-
encoding.tooltip = measures.map((item)=>item.id);
|
7520
|
-
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7521
|
-
if (color.length > 0) encoding.color = color;
|
7522
|
-
return encoding;
|
7523
|
-
};
|
7524
7573
|
const heatmap_generateDimensionEncoding = (dimensions, encoding)=>{
|
7525
7574
|
encoding.x = unique(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
|
7526
7575
|
encoding.y = unique(dimensions.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
|
@@ -7531,14 +7580,35 @@ const heatmap_generateDimensionEncoding = (dimensions, encoding)=>{
|
|
7531
7580
|
];
|
7532
7581
|
if (0 === encoding.y.length) if (dimensions.length > 1) encoding.y = dimensions.slice(1).map((item)=>item.id);
|
7533
7582
|
else encoding.y = dimensions.slice(0).map((item)=>item.id);
|
7534
|
-
if (0 === encoding.color.length) encoding.color =
|
7535
|
-
|
7583
|
+
if (0 === encoding.color.length) encoding.color = [
|
7584
|
+
MeasureName
|
7585
|
+
];
|
7586
|
+
if (0 === encoding.detail.length) encoding.detail = [
|
7587
|
+
MeasureName
|
7588
|
+
];
|
7589
|
+
};
|
7590
|
+
const heatmap_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
7591
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
7592
|
+
const colorDims = unique(measures.filter((item)=>'color' === item.encoding || !item.encoding).map((item)=>item.id));
|
7593
|
+
if (colorDims.length > 0) encoding.color = [
|
7594
|
+
colorDims[0]
|
7595
|
+
];
|
7596
|
+
};
|
7597
|
+
const heatmap_generateMeasureEncoding = (measures, encoding)=>{
|
7598
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
7599
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7600
|
+
if (color.length > 0) encoding.color = [
|
7601
|
+
color[0]
|
7602
|
+
];
|
7603
|
+
return encoding;
|
7536
7604
|
};
|
7537
7605
|
const heatmapAdvancedPipeline = [
|
7538
7606
|
initAdvancedVSeed_initAdvancedVSeed,
|
7607
|
+
default_defaultMeasures_defaultMeasures,
|
7608
|
+
defaultDimensions_defaultDimensions,
|
7609
|
+
defaultMeasureName_defaultMeasureName,
|
7539
7610
|
encodingForHeatmap,
|
7540
7611
|
buildMeasures,
|
7541
|
-
autoDimensions_autoDimensions,
|
7542
7612
|
pivotAdapter([
|
7543
7613
|
reshapeWithEncoding
|
7544
7614
|
], [
|
@@ -8332,6 +8402,15 @@ const updateAdvanced = (chartType, advancedPipe)=>{
|
|
8332
8402
|
const updateSpec = (chartType, specPipe)=>{
|
8333
8403
|
Builder._customSpecPipe[chartType] = specPipe;
|
8334
8404
|
};
|
8405
|
+
const findAllDimensions = (dimensions = [])=>{
|
8406
|
+
if (!dimensions) return [];
|
8407
|
+
const result = [];
|
8408
|
+
preorderTraverse(dimensions, (node)=>{
|
8409
|
+
if (!('children' in node)) result.push(node);
|
8410
|
+
return false;
|
8411
|
+
});
|
8412
|
+
return result;
|
8413
|
+
};
|
8335
8414
|
const zChartType = z["enum"]([
|
8336
8415
|
'table',
|
8337
8416
|
'pivotTable',
|
@@ -8375,11 +8454,6 @@ const zDataset = z.array(zDatum);
|
|
8375
8454
|
const zDimension = z.object({
|
8376
8455
|
id: z.string(),
|
8377
8456
|
alias: z.string().optional(),
|
8378
|
-
location: z["enum"]([
|
8379
|
-
'dimension',
|
8380
|
-
'rowDimension',
|
8381
|
-
'columnDimension'
|
8382
|
-
]).default('dimension'),
|
8383
8457
|
encoding: z["enum"]([
|
8384
8458
|
'xAxis',
|
8385
8459
|
'yAxis',
|
@@ -8446,7 +8520,9 @@ const zMeasure = z.object({
|
|
8446
8520
|
'size',
|
8447
8521
|
'color',
|
8448
8522
|
'label',
|
8449
|
-
'tooltip'
|
8523
|
+
'tooltip',
|
8524
|
+
'detail',
|
8525
|
+
'column'
|
8450
8526
|
]).optional(),
|
8451
8527
|
parentId: z.string().optional()
|
8452
8528
|
});
|