@visactor/vseed 0.1.5 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/builder/builder/builder.d.ts +2 -2
- package/dist/index.cjs +347 -285
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +347 -285
- package/dist/index.js.map +1 -1
- package/dist/pipeline/advanced/chart/pipes/{init/autoDimensions.d.ts → default/defaultDimensions.d.ts} +1 -1
- package/dist/pipeline/advanced/chart/pipes/default/defaultMeasureName.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/default/defaultMeasures.d.ts +5 -0
- package/dist/pipeline/advanced/chart/pipes/default/index.d.ts +3 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/column.d.ts +19 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/line.d.ts +17 -0
- package/dist/pipeline/advanced/chart/pipes/index.d.ts +1 -0
- package/dist/pipeline/advanced/chart/pipes/init/index.d.ts +0 -2
- package/dist/pipeline/advanced/chart/pipes/measures/utils.d.ts +3 -18
- package/dist/pipeline/advanced/table/pipes/reshape/index.d.ts +1 -0
- package/dist/pipeline/advanced/table/pipes/reshape/reshapePivotTable.d.ts +2 -0
- package/dist/types/advancedVSeed.d.ts +2 -0
- package/dist/types/chartType/area/area.d.ts +20 -3
- package/dist/types/chartType/area/zArea.d.ts +2 -0
- package/dist/types/chartType/areaPercent/areaPercent.d.ts +16 -0
- package/dist/types/chartType/areaPercent/zAreaPercent.d.ts +2 -0
- package/dist/types/chartType/bar/zBar.d.ts +2 -0
- package/dist/types/chartType/barParallel/zBarParallel.d.ts +2 -0
- package/dist/types/chartType/barPercent/zBarPercent.d.ts +2 -0
- package/dist/types/chartType/column/column.d.ts +17 -1
- package/dist/types/chartType/column/zColumn.d.ts +2 -0
- package/dist/types/chartType/columnParallel/columnParallel.d.ts +17 -0
- package/dist/types/chartType/columnParallel/zColumnParallel.d.ts +2 -0
- package/dist/types/chartType/columnPercent/columnPercent.d.ts +17 -1
- package/dist/types/chartType/columnPercent/zColumnPercent.d.ts +2 -0
- package/dist/types/chartType/donut/zDonut.d.ts +2 -0
- package/dist/types/chartType/dualAxis/zDualAxis.d.ts +10 -0
- package/dist/types/chartType/funnel/zFunnel.d.ts +2 -0
- package/dist/types/chartType/heatmap/zHeatmap.d.ts +2 -0
- package/dist/types/chartType/line/line.d.ts +16 -0
- package/dist/types/chartType/line/zLine.d.ts +2 -0
- package/dist/types/chartType/pie/zPie.d.ts +2 -0
- package/dist/types/chartType/pivotTable/zPivotTable.d.ts +2 -0
- package/dist/types/chartType/radar/zRadar.d.ts +2 -0
- package/dist/types/chartType/rose/zRose.d.ts +2 -0
- package/dist/types/chartType/roseParallel/zRoseParallel.d.ts +2 -0
- package/dist/types/chartType/scatter/zScatter.d.ts +10 -0
- package/dist/types/chartType/table/zTable.d.ts +2 -0
- package/dist/types/properties/measures/measures.d.ts +3 -1
- package/dist/types/properties/measures/zDualMeasures.d.ts +16 -0
- package/dist/types/properties/measures/zMeasures.d.ts +6 -0
- package/dist/types/properties/measures/zScatterMeasures.d.ts +16 -0
- package/dist/types/zVseed.d.ts +56 -0
- package/dist/umd/index.js +368 -306
- package/dist/umd/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/pipeline/advanced/chart/pipes/init/utils.d.ts +0 -2
package/dist/index.js
CHANGED
@@ -190,7 +190,8 @@ const autoMeasures = (advancedVSeed, context)=>{
|
|
190
190
|
void 0
|
191
191
|
].includes(key)).map((measure)=>({
|
192
192
|
id: measure,
|
193
|
-
alias: measure
|
193
|
+
alias: measure,
|
194
|
+
encoding: 'column'
|
194
195
|
}));
|
195
196
|
return result;
|
196
197
|
};
|
@@ -274,7 +275,7 @@ const autoDimensions = (advancedVSeed, context)=>{
|
|
274
275
|
].includes(key) && !measures.some((measure)=>measure.id === key)).map((dim)=>({
|
275
276
|
id: dim,
|
276
277
|
alias: dim,
|
277
|
-
|
278
|
+
encoding: 'column'
|
278
279
|
}));
|
279
280
|
return result;
|
280
281
|
};
|
@@ -709,10 +710,27 @@ const autoPivotMeasures = (advancedVSeed, context)=>{
|
|
709
710
|
void 0
|
710
711
|
].includes(key)).map((measure)=>({
|
711
712
|
id: measure,
|
712
|
-
alias: measure
|
713
|
+
alias: measure,
|
714
|
+
encoding: 'detail'
|
713
715
|
}));
|
714
716
|
return result;
|
715
717
|
};
|
718
|
+
const ORIGINAL_DATA = '__OriginalData__';
|
719
|
+
const Separator = '-';
|
720
|
+
const FoldMeasureName = '__MeaName__';
|
721
|
+
const FoldMeasureId = '__MeaId__';
|
722
|
+
const FoldMeasureValue = '__MeaValue__';
|
723
|
+
const MeasureName = FoldMeasureName;
|
724
|
+
const FoldPrimaryMeasureValue = '__MeaPrimaryValue__';
|
725
|
+
const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
|
726
|
+
const FoldXMeasureValue = '__MeaXValue__';
|
727
|
+
const FoldYMeasureValue = '__MeaYValue__';
|
728
|
+
const XEncoding = '__Dim_X__';
|
729
|
+
const YEncoding = '__Dim_Y__';
|
730
|
+
const AngleEncoding = '__Dim_Angle__';
|
731
|
+
const DetailEncoding = '__Dim_Detail__';
|
732
|
+
const ColorEncoding = '__Dim_Color__';
|
733
|
+
const ColorIdEncoding = '__Dim_ColorId__';
|
716
734
|
const findAllDimensions = (dimensions = [])=>{
|
717
735
|
if (!dimensions) return [];
|
718
736
|
const result = [];
|
@@ -729,15 +747,21 @@ const autoPivotDimensions = (advancedVSeed, context)=>{
|
|
729
747
|
const { vseed } = context;
|
730
748
|
const { dimensions, dataset } = vseed;
|
731
749
|
const measures = findAllMeasures(advancedVSeed.measures);
|
750
|
+
const MeaName = {
|
751
|
+
id: MeasureName,
|
752
|
+
alias: intl.i18n`指标名称`
|
753
|
+
};
|
732
754
|
if (!dataset) throw new Error('dataset is required');
|
733
755
|
if (0 === dataset.length) return result;
|
734
756
|
if (dimensions) {
|
735
757
|
const newDimensions = findAllDimensions(dimensions);
|
758
|
+
if (!newDimensions.some((dim)=>dim.id === MeasureName)) newDimensions.push(MeaName);
|
736
759
|
result.dimensions = newDimensions.map((item, index)=>{
|
760
|
+
if ('row' === item.encoding || 'column' === item.encoding) return item;
|
737
761
|
if ('rowDimension' === item.location || 'columnDimension' === item.location) return item;
|
738
762
|
return {
|
739
763
|
...item,
|
740
|
-
|
764
|
+
encoding: index % 2 === 0 ? 'column' : 'row'
|
741
765
|
};
|
742
766
|
});
|
743
767
|
return result;
|
@@ -747,15 +771,19 @@ const autoPivotDimensions = (advancedVSeed, context)=>{
|
|
747
771
|
...prev,
|
748
772
|
...cur
|
749
773
|
}), {});
|
750
|
-
|
751
|
-
result.dimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
|
774
|
+
const newDimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
|
752
775
|
'',
|
753
776
|
null,
|
754
777
|
void 0
|
755
|
-
].includes(key) && !measures.some((measure)=>measure.id === key))
|
778
|
+
].includes(key) && !measures.some((measure)=>measure.id === key));
|
779
|
+
result.dimensions = newDimensions.map((dim)=>({
|
756
780
|
id: dim,
|
757
|
-
alias: dim
|
758
|
-
|
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'
|
759
787
|
}));
|
760
788
|
return result;
|
761
789
|
};
|
@@ -786,11 +814,89 @@ const pivotTableConfig = (advancedVSeed, context)=>{
|
|
786
814
|
};
|
787
815
|
return result;
|
788
816
|
};
|
817
|
+
const foldMeasures = (dataset, measures, options)=>{
|
818
|
+
const { measureId, measureName, measureValue, colorMeasureId } = options || {};
|
819
|
+
const foldInfo = {
|
820
|
+
measureId,
|
821
|
+
measureName,
|
822
|
+
measureValue,
|
823
|
+
colorRange: [
|
824
|
+
0,
|
825
|
+
1
|
826
|
+
],
|
827
|
+
measureRange: [
|
828
|
+
0,
|
829
|
+
1
|
830
|
+
],
|
831
|
+
foldMap: {}
|
832
|
+
};
|
833
|
+
const result = new Array(dataset.length * measures.length);
|
834
|
+
let index = 0;
|
835
|
+
const ids = measures.map((d)=>d.id);
|
836
|
+
for(let i = 0; i < dataset.length; i++)for(let j = 0; j < measures.length; j++){
|
837
|
+
const datum = omit({
|
838
|
+
...dataset[i]
|
839
|
+
}, ids);
|
840
|
+
datum[ORIGINAL_DATA] = dataset[i];
|
841
|
+
const measure = measures[j];
|
842
|
+
const { id, alias } = measure;
|
843
|
+
datum[id] = dataset[i][id];
|
844
|
+
datum[measureId] = id;
|
845
|
+
datum[measureName] = alias || id;
|
846
|
+
datum[measureValue] = dataset[i][id];
|
847
|
+
if (colorMeasureId) {
|
848
|
+
const value = datum[ORIGINAL_DATA][colorMeasureId];
|
849
|
+
datum[ColorEncoding] = value;
|
850
|
+
datum[ColorIdEncoding] = colorMeasureId;
|
851
|
+
foldInfo.colorRange = [
|
852
|
+
Math.min(foldInfo.colorRange[0] || 1 / 0, Number(value)),
|
853
|
+
Math.max(foldInfo.colorRange[1] || -1 / 0, Number(value))
|
854
|
+
];
|
855
|
+
}
|
856
|
+
foldInfo.measureRange = [
|
857
|
+
Math.min(foldInfo.measureRange[0] || 1 / 0, Number(datum[id])),
|
858
|
+
Math.max(foldInfo.measureRange[1] || -1 / 0, Number(datum[id]))
|
859
|
+
];
|
860
|
+
foldInfo.foldMap[id] = alias;
|
861
|
+
result[index++] = datum;
|
862
|
+
}
|
863
|
+
return {
|
864
|
+
dataset: result,
|
865
|
+
foldInfo
|
866
|
+
};
|
867
|
+
};
|
868
|
+
const reshapePivotTable = (advancedVSeed, context)=>{
|
869
|
+
const result = {
|
870
|
+
...advancedVSeed
|
871
|
+
};
|
872
|
+
const { vseed } = context;
|
873
|
+
const { dataset, chartType } = vseed;
|
874
|
+
const { dimensions, measures } = advancedVSeed;
|
875
|
+
const { dataset: newDatasets, foldInfo } = foldMeasures(dataset, findAllMeasures(measures), {
|
876
|
+
measureId: FoldMeasureId,
|
877
|
+
measureName: FoldMeasureName,
|
878
|
+
measureValue: FoldMeasureValue
|
879
|
+
});
|
880
|
+
const datasetReshapeInfo = [
|
881
|
+
{
|
882
|
+
id: String(chartType),
|
883
|
+
index: 0,
|
884
|
+
foldInfo
|
885
|
+
}
|
886
|
+
];
|
887
|
+
return {
|
888
|
+
...result,
|
889
|
+
dataset: newDatasets,
|
890
|
+
datasetReshapeInfo: datasetReshapeInfo,
|
891
|
+
dimensions,
|
892
|
+
measures
|
893
|
+
};
|
894
|
+
};
|
789
895
|
const pivotTableAdvancedPipeline = [
|
790
896
|
initAdvancedVSeed,
|
791
897
|
autoPivotMeasures,
|
792
898
|
autoPivotDimensions,
|
793
|
-
|
899
|
+
reshapePivotTable,
|
794
900
|
pivotTableConfig,
|
795
901
|
theme_theme
|
796
902
|
];
|
@@ -837,7 +943,7 @@ const initPivotTable = (spec, context)=>{
|
|
837
943
|
const pivotColumns = (spec, context)=>{
|
838
944
|
const { advancedVSeed } = context;
|
839
945
|
const dimensions = advancedVSeed.dimensions;
|
840
|
-
const columns = dimensions.filter((item)=>'columnDimension' === item['location']);
|
946
|
+
const columns = dimensions.filter((item)=>'columnDimension' === item['location'] || 'column' === item['encoding']);
|
841
947
|
return {
|
842
948
|
...spec,
|
843
949
|
columns: columns.map((item)=>({
|
@@ -850,7 +956,7 @@ const pivotColumns = (spec, context)=>{
|
|
850
956
|
const pivotRows = (spec, context)=>{
|
851
957
|
const { advancedVSeed } = context;
|
852
958
|
const dimensions = advancedVSeed.dimensions;
|
853
|
-
const rows = dimensions.filter((item)=>'rowDimension' === item['location']);
|
959
|
+
const rows = dimensions.filter((item)=>'rowDimension' === item['location'] || 'row' === item['encoding']);
|
854
960
|
return {
|
855
961
|
...spec,
|
856
962
|
rows: rows.map((item)=>({
|
@@ -862,25 +968,31 @@ const pivotRows = (spec, context)=>{
|
|
862
968
|
};
|
863
969
|
const pivotIndicators = (spec, context)=>{
|
864
970
|
const { advancedVSeed } = context;
|
865
|
-
const { locale } = advancedVSeed;
|
866
|
-
const
|
971
|
+
const { locale, measures, datasetReshapeInfo } = advancedVSeed;
|
972
|
+
const { foldInfo } = datasetReshapeInfo[0];
|
867
973
|
return {
|
868
974
|
...spec,
|
869
975
|
indicatorsAsCol: true,
|
870
976
|
indicatorTitle: intl.i18n`指标名称`,
|
871
|
-
|
872
|
-
|
977
|
+
hideIndicatorName: true,
|
978
|
+
indicators: [
|
979
|
+
{
|
873
980
|
cellType: 'text',
|
874
|
-
indicatorKey:
|
875
|
-
title:
|
981
|
+
indicatorKey: foldInfo.measureValue,
|
982
|
+
title: 'indicator',
|
876
983
|
width: 'auto',
|
877
|
-
format: pivotIndicators_fieldFormat(
|
878
|
-
}
|
879
|
-
|
880
|
-
})
|
984
|
+
format: pivotIndicators_fieldFormat(measures, foldInfo, locale)
|
985
|
+
}
|
986
|
+
]
|
881
987
|
};
|
882
988
|
};
|
883
|
-
const pivotIndicators_fieldFormat = (
|
989
|
+
const pivotIndicators_fieldFormat = (measures, foldInfo, locale)=>(value, col, row, table)=>{
|
990
|
+
if (!isNumber(col) || !isNumber(row) || !table) return value;
|
991
|
+
const datum = table.getCellOriginRecord(col, row);
|
992
|
+
const { measureId: foldMeasureId } = foldInfo;
|
993
|
+
const measureId = datum[0][foldMeasureId];
|
994
|
+
const node = findMeasureById(measures, measureId);
|
995
|
+
if (!node) return value;
|
884
996
|
const { format = {}, autoFormat = true } = node;
|
885
997
|
if (!external_remeda_isEmpty(format)) {
|
886
998
|
const formatter = createFormatter(format);
|
@@ -1036,94 +1148,81 @@ const initAdvancedVSeed_initAdvancedVSeed = (advancedVSeed, context)=>{
|
|
1036
1148
|
locale: locale || 'zh-CN'
|
1037
1149
|
};
|
1038
1150
|
};
|
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`指标名称`
|
1151
|
+
const defaultMeasures_defaultMeasures = (advancedVSeed, context)=>{
|
1152
|
+
const { vseed } = context;
|
1153
|
+
const { measures, dataset } = vseed;
|
1154
|
+
if (measures && measures.length > 0) return {
|
1155
|
+
...advancedVSeed,
|
1156
|
+
measures
|
1060
1157
|
};
|
1061
1158
|
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
|
-
}
|
1159
|
+
if (0 === dataset.length) return {
|
1160
|
+
...advancedVSeed,
|
1161
|
+
measures: []
|
1162
|
+
};
|
1072
1163
|
const top100dataset = dataset.slice(0, 100);
|
1073
1164
|
const sample = top100dataset.reduce((prev, cur)=>({
|
1074
1165
|
...prev,
|
1075
1166
|
...cur
|
1076
1167
|
}), {});
|
1077
|
-
const
|
1168
|
+
const defaultMeasures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
|
1078
1169
|
'',
|
1079
1170
|
null,
|
1080
1171
|
void 0
|
1081
|
-
].includes(key)).map((
|
1082
|
-
id:
|
1083
|
-
alias:
|
1084
|
-
location: 'dimension'
|
1172
|
+
].includes(key)).map((measure)=>({
|
1173
|
+
id: measure,
|
1174
|
+
alias: measure
|
1085
1175
|
}));
|
1086
|
-
|
1087
|
-
|
1088
|
-
|
1089
|
-
|
1090
|
-
const { dataset, measures } = vseed;
|
1091
|
-
if (!measures || 0 === measures.length) return generateMeasuresByDataset(dataset);
|
1092
|
-
return measures;
|
1176
|
+
return {
|
1177
|
+
...advancedVSeed,
|
1178
|
+
measures: defaultMeasures
|
1179
|
+
};
|
1093
1180
|
};
|
1094
|
-
const
|
1181
|
+
const defaultDimensions = (advancedVSeed, context)=>{
|
1182
|
+
const result = {
|
1183
|
+
...advancedVSeed
|
1184
|
+
};
|
1185
|
+
const { vseed } = context;
|
1186
|
+
const { dimensions, dataset } = vseed;
|
1187
|
+
if (dimensions && dimensions.length > 0) return {
|
1188
|
+
...result,
|
1189
|
+
dimensions
|
1190
|
+
};
|
1095
1191
|
if (!dataset) throw new Error('dataset is required');
|
1096
|
-
if (0 === dataset.length) return
|
1192
|
+
if (0 === dataset.length) return result;
|
1193
|
+
const measures = findAllMeasures(advancedVSeed.measures);
|
1097
1194
|
const top100dataset = dataset.slice(0, 100);
|
1098
1195
|
const sample = top100dataset.reduce((prev, cur)=>({
|
1099
1196
|
...prev,
|
1100
1197
|
...cur
|
1101
1198
|
}), {});
|
1102
|
-
const
|
1199
|
+
const newDimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
|
1103
1200
|
'',
|
1104
1201
|
null,
|
1105
1202
|
void 0
|
1106
|
-
].includes(key)).map((
|
1107
|
-
id:
|
1108
|
-
alias:
|
1203
|
+
].includes(key) && !measures.some((measure)=>measure.id === key)).map((dim)=>({
|
1204
|
+
id: dim,
|
1205
|
+
alias: dim
|
1109
1206
|
}));
|
1110
|
-
return
|
1111
|
-
|
1112
|
-
|
1113
|
-
|
1114
|
-
if (!measures) return false;
|
1115
|
-
return measures.some((measure)=>'children' in measure);
|
1207
|
+
return {
|
1208
|
+
...result,
|
1209
|
+
dimensions: newDimensions
|
1210
|
+
};
|
1116
1211
|
};
|
1117
|
-
const
|
1118
|
-
const
|
1119
|
-
|
1120
|
-
|
1212
|
+
const defaultMeasureName = (advancedVSeed)=>{
|
1213
|
+
const result = {
|
1214
|
+
...advancedVSeed
|
1215
|
+
};
|
1216
|
+
const MeaName = {
|
1217
|
+
id: MeasureName,
|
1218
|
+
alias: intl.i18n`指标名称`
|
1219
|
+
};
|
1220
|
+
if (!result.dimensions?.some((dim)=>dim.id === MeasureName)) result.dimensions?.push(MeaName);
|
1221
|
+
return result;
|
1121
1222
|
};
|
1122
|
-
const encodingForLine = (advancedVSeed
|
1123
|
-
const {
|
1124
|
-
const
|
1125
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
1126
|
-
const dimensions = getBasicDimensions(vseed);
|
1223
|
+
const encodingForLine = (advancedVSeed)=>{
|
1224
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
1225
|
+
const measures = findAllMeasures(vseedMeasures);
|
1127
1226
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
1128
1227
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
1129
1228
|
const encoding = {};
|
@@ -1136,10 +1235,6 @@ const encodingForLine = (advancedVSeed, context)=>{
|
|
1136
1235
|
encoding
|
1137
1236
|
};
|
1138
1237
|
};
|
1139
|
-
const generateDefaultMeasureEncoding = (measures, encoding)=>{
|
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
1238
|
const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
1144
1239
|
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
1145
1240
|
encoding.x = uniqueDimIds.slice(0, 1);
|
@@ -1150,20 +1245,36 @@ const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
|
1150
1245
|
encoding.row = [];
|
1151
1246
|
encoding.column = [];
|
1152
1247
|
};
|
1153
|
-
const generateMeasureEncoding = (measures, encoding)=>{
|
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
1248
|
const generateDimensionEncoding = (dimensions, encoding)=>{
|
1160
1249
|
encoding.x = unique(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
|
1161
1250
|
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
1162
|
-
encoding.detail =
|
1251
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
1163
1252
|
if (0 === encoding.x.length) encoding.x = [
|
1164
1253
|
dimensions[0].id
|
1165
1254
|
];
|
1166
|
-
if (0 === encoding.color.length) encoding.color =
|
1255
|
+
if (0 === encoding.color.length) encoding.color = [
|
1256
|
+
MeasureName
|
1257
|
+
];
|
1258
|
+
};
|
1259
|
+
const generateDefaultMeasureEncoding = (measures, encoding)=>{
|
1260
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
1261
|
+
encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
1262
|
+
};
|
1263
|
+
const generateMeasureEncoding = (measures, encoding)=>{
|
1264
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
1265
|
+
encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
1266
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
1267
|
+
if (color.length > 0) encoding.color = color;
|
1268
|
+
};
|
1269
|
+
const isMeasureTreeWithChildren = (vseed)=>{
|
1270
|
+
const { measures } = vseed;
|
1271
|
+
if (!measures) return false;
|
1272
|
+
return measures.some((measure)=>'children' in measure);
|
1273
|
+
};
|
1274
|
+
const isMeasureTreeWithParentId = (vseed)=>{
|
1275
|
+
const { measures } = vseed;
|
1276
|
+
if (!measures) return false;
|
1277
|
+
return measures.some((measure)=>'parentId' in measure);
|
1167
1278
|
};
|
1168
1279
|
const measureDepth = (measures = [])=>{
|
1169
1280
|
if (!measures) return 0;
|
@@ -1223,9 +1334,7 @@ const buildMeasures = (advancedVSeed, context)=>{
|
|
1223
1334
|
advancedVSeed.measures = generateMeasuresByParentId(vseed.measures);
|
1224
1335
|
return advancedVSeed;
|
1225
1336
|
}
|
1226
|
-
|
1227
|
-
if (isPivotChart(vseed)) advancedVSeed.measures = basicMeasuresToMeasureTree(basicMeasures);
|
1228
|
-
else advancedVSeed.measures = basicMeasures;
|
1337
|
+
if (isPivotChart(vseed)) advancedVSeed.measures = basicMeasuresToMeasureTree(advancedVSeed.measures);
|
1229
1338
|
return advancedVSeed;
|
1230
1339
|
};
|
1231
1340
|
const generateMeasuresByParentId = (measures)=>{
|
@@ -1256,102 +1365,12 @@ const basicMeasuresToMeasureTree = (measures)=>{
|
|
1256
1365
|
}
|
1257
1366
|
];
|
1258
1367
|
};
|
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
1368
|
const pivotAdapter = (pipeline, pivotPipeline)=>(advancedVSeed, context)=>{
|
1299
1369
|
const { vseed } = context;
|
1300
1370
|
const usePivotChart = isPivotChart(vseed);
|
1301
1371
|
if (usePivotChart) return execPipeline(pivotPipeline, context, advancedVSeed);
|
1302
1372
|
return execPipeline(pipeline, context, advancedVSeed);
|
1303
1373
|
};
|
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
|
-
];
|
1342
|
-
}
|
1343
|
-
foldInfo.measureRange = [
|
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
|
-
};
|
1354
|
-
};
|
1355
1374
|
const unfoldDimensions = (dataset, dimensions, encoding, options)=>{
|
1356
1375
|
const { foldMeasureId, separator, colorItemAsId } = options;
|
1357
1376
|
const unfoldInfo = {
|
@@ -1446,7 +1465,9 @@ const reshapeWithEncoding = (advancedVSeed, context)=>{
|
|
1446
1465
|
const { dimensions, measures, encoding } = advancedVSeed;
|
1447
1466
|
if (!measures || !dimensions || !dataset || !encoding) return result;
|
1448
1467
|
if (0 === measures.length) throw new Error('measures can not be empty');
|
1468
|
+
const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
|
1449
1469
|
const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (item)=>item.id), uniqueBy(findAllMeasures(measures), (item)=>item.id), encoding, {
|
1470
|
+
colorItemAsId: hasEncoding,
|
1450
1471
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
1451
1472
|
});
|
1452
1473
|
return {
|
@@ -1477,6 +1498,7 @@ const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
|
|
1477
1498
|
if (measures) measures.forEach((measure)=>{
|
1478
1499
|
if (measure.children && measure.children.length > 0) measureGroups.push(measure);
|
1479
1500
|
});
|
1501
|
+
const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
|
1480
1502
|
const datasets = [];
|
1481
1503
|
const datasetReshapeInfo = [];
|
1482
1504
|
measureGroups.forEach((measureGroup, index)=>{
|
@@ -1484,6 +1506,7 @@ const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
|
|
1484
1506
|
if (!measures) return;
|
1485
1507
|
const groupId = measureGroup.id;
|
1486
1508
|
const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (item)=>item.id), uniqueBy(measures, (item)=>item.id), encoding, {
|
1509
|
+
colorItemAsId: hasEncoding,
|
1487
1510
|
foldMeasureValue: `${FoldMeasureValue}${groupId}`,
|
1488
1511
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
1489
1512
|
});
|
@@ -1692,9 +1715,11 @@ const annotation_annotation = (advancedVSeed, context)=>{
|
|
1692
1715
|
};
|
1693
1716
|
const lineAdvancedPipeline = [
|
1694
1717
|
initAdvancedVSeed_initAdvancedVSeed,
|
1718
|
+
defaultMeasures_defaultMeasures,
|
1719
|
+
defaultDimensions,
|
1720
|
+
defaultMeasureName,
|
1695
1721
|
encodingForLine,
|
1696
1722
|
buildMeasures,
|
1697
|
-
autoDimensions_autoDimensions,
|
1698
1723
|
pivotAdapter([
|
1699
1724
|
reshapeWithEncoding
|
1700
1725
|
], [
|
@@ -3290,7 +3315,7 @@ const pivotRowDimensions = (spec, context)=>{
|
|
3290
3315
|
const { advancedVSeed } = context;
|
3291
3316
|
const dimensions = advancedVSeed.dimensions;
|
3292
3317
|
if (!dimensions) return result;
|
3293
|
-
const rowDimensions = dimensions.filter((dim)=>'rowDimension' === dim.location);
|
3318
|
+
const rowDimensions = dimensions.filter((dim)=>'rowDimension' === dim.location || 'row' === dim.encoding);
|
3294
3319
|
const rows = rowDimensions.map((dim)=>({
|
3295
3320
|
dimensionKey: dim.id,
|
3296
3321
|
title: dim.alias || dim.id
|
@@ -3307,7 +3332,7 @@ const pivotColumnDimensions = (spec, context)=>{
|
|
3307
3332
|
const { advancedVSeed } = context;
|
3308
3333
|
const dimensions = advancedVSeed.dimensions;
|
3309
3334
|
if (!dimensions) return result;
|
3310
|
-
const columnDimensions = dimensions.filter((dim)=>'columnDimension' === dim.location);
|
3335
|
+
const columnDimensions = dimensions.filter((dim)=>'columnDimension' === dim.location || 'column' === dim.encoding);
|
3311
3336
|
const columns = columnDimensions.map((dim)=>({
|
3312
3337
|
dimensionKey: dim.id,
|
3313
3338
|
title: dim.alias || dim.id
|
@@ -3580,11 +3605,9 @@ const registerLine = ()=>{
|
|
3580
3605
|
Builder._advancedPipelineMap.line = lineAdvancedPipeline;
|
3581
3606
|
Builder._specPipelineMap.line = lineSpecPipeline;
|
3582
3607
|
};
|
3583
|
-
const encodingForColumn = (advancedVSeed
|
3584
|
-
const {
|
3585
|
-
const
|
3586
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
3587
|
-
const dimensions = getBasicDimensions(vseed);
|
3608
|
+
const encodingForColumn = (advancedVSeed)=>{
|
3609
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
3610
|
+
const measures = findAllMeasures(vseedMeasures);
|
3588
3611
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
3589
3612
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
3590
3613
|
const encoding = {};
|
@@ -3597,10 +3620,6 @@ const encodingForColumn = (advancedVSeed, context)=>{
|
|
3597
3620
|
encoding
|
3598
3621
|
};
|
3599
3622
|
};
|
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
3623
|
const column_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
3605
3624
|
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
3606
3625
|
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
@@ -3612,13 +3631,6 @@ const column_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
|
3612
3631
|
encoding.row = [];
|
3613
3632
|
encoding.column = [];
|
3614
3633
|
};
|
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
3634
|
const column_generateDimensionEncoding = (dimensions, encoding)=>{
|
3623
3635
|
encoding.x = unique(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
|
3624
3636
|
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
@@ -3626,14 +3638,28 @@ const column_generateDimensionEncoding = (dimensions, encoding)=>{
|
|
3626
3638
|
if (0 === encoding.x.length) encoding.x = [
|
3627
3639
|
dimensions[0].id
|
3628
3640
|
];
|
3629
|
-
if (0 === encoding.color.length) encoding.color =
|
3630
|
-
|
3641
|
+
if (0 === encoding.color.length) encoding.color = [
|
3642
|
+
MeasureName
|
3643
|
+
];
|
3644
|
+
};
|
3645
|
+
const column_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
3646
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
3647
|
+
encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
3648
|
+
};
|
3649
|
+
const column_generateMeasureEncoding = (measures, encoding)=>{
|
3650
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
3651
|
+
encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
3652
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
3653
|
+
if (color.length > 0) encoding.color = color;
|
3654
|
+
return encoding;
|
3631
3655
|
};
|
3632
3656
|
const columnAdvancedPipeline = [
|
3633
3657
|
initAdvancedVSeed_initAdvancedVSeed,
|
3658
|
+
defaultMeasures_defaultMeasures,
|
3659
|
+
defaultDimensions,
|
3660
|
+
defaultMeasureName,
|
3634
3661
|
encodingForColumn,
|
3635
3662
|
buildMeasures,
|
3636
|
-
autoDimensions_autoDimensions,
|
3637
3663
|
pivotAdapter([
|
3638
3664
|
reshapeWithEncoding
|
3639
3665
|
], [
|
@@ -3993,9 +4019,11 @@ const registerColumn = ()=>{
|
|
3993
4019
|
};
|
3994
4020
|
const columnParallelAdvancedPipeline = [
|
3995
4021
|
initAdvancedVSeed_initAdvancedVSeed,
|
4022
|
+
defaultMeasures_defaultMeasures,
|
4023
|
+
defaultDimensions,
|
4024
|
+
defaultMeasureName,
|
3996
4025
|
encodingForColumn,
|
3997
4026
|
buildMeasures,
|
3998
|
-
autoDimensions_autoDimensions,
|
3999
4027
|
pivotAdapter([
|
4000
4028
|
reshapeWithEncoding
|
4001
4029
|
], [
|
@@ -4090,9 +4118,11 @@ const registerColumnParallel = ()=>{
|
|
4090
4118
|
};
|
4091
4119
|
const columnPercentAdvancedPipeline = [
|
4092
4120
|
initAdvancedVSeed_initAdvancedVSeed,
|
4121
|
+
defaultMeasures_defaultMeasures,
|
4122
|
+
defaultDimensions,
|
4123
|
+
defaultMeasureName,
|
4093
4124
|
encodingForColumn,
|
4094
4125
|
buildMeasures,
|
4095
|
-
autoDimensions_autoDimensions,
|
4096
4126
|
pivotAdapter([
|
4097
4127
|
reshapeWithEncoding
|
4098
4128
|
], [
|
@@ -4169,11 +4199,9 @@ const registerColumnPercent = ()=>{
|
|
4169
4199
|
Builder._advancedPipelineMap.columnPercent = columnPercentAdvancedPipeline;
|
4170
4200
|
Builder._specPipelineMap.columnPercent = columnPercentSpecPipeline;
|
4171
4201
|
};
|
4172
|
-
const encodingForBar = (advancedVSeed
|
4173
|
-
const {
|
4174
|
-
const
|
4175
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
4176
|
-
const dimensions = getBasicDimensions(vseed);
|
4202
|
+
const encodingForBar = (advancedVSeed)=>{
|
4203
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
4204
|
+
const measures = findAllMeasures(vseedMeasures);
|
4177
4205
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
4178
4206
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
4179
4207
|
const encoding = {};
|
@@ -4215,7 +4243,9 @@ const bar_generateDimensionEncoding = (dimensions, encoding)=>{
|
|
4215
4243
|
if (0 === encoding.y.length) encoding.y = [
|
4216
4244
|
dimensions[0].id
|
4217
4245
|
];
|
4218
|
-
if (0 === encoding.color.length) encoding.color =
|
4246
|
+
if (0 === encoding.color.length) encoding.color = [
|
4247
|
+
MeasureName
|
4248
|
+
];
|
4219
4249
|
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.y?.includes(item.id)).map((item)=>item.id);
|
4220
4250
|
};
|
4221
4251
|
const sortYBandAxis = (advancedVSeed, context)=>{
|
@@ -4236,9 +4266,11 @@ const sortYBandAxis = (advancedVSeed, context)=>{
|
|
4236
4266
|
};
|
4237
4267
|
const barAdvancedPipeline = [
|
4238
4268
|
initAdvancedVSeed_initAdvancedVSeed,
|
4269
|
+
defaultMeasures_defaultMeasures,
|
4270
|
+
defaultDimensions,
|
4271
|
+
defaultMeasureName,
|
4239
4272
|
encodingForBar,
|
4240
4273
|
buildMeasures,
|
4241
|
-
autoDimensions_autoDimensions,
|
4242
4274
|
pivotAdapter([
|
4243
4275
|
reshapeWithEncoding
|
4244
4276
|
], [
|
@@ -4589,9 +4621,11 @@ const registerBar = ()=>{
|
|
4589
4621
|
};
|
4590
4622
|
const barParallelAdvancedPipeline = [
|
4591
4623
|
initAdvancedVSeed_initAdvancedVSeed,
|
4592
|
-
|
4593
|
-
|
4624
|
+
defaultMeasures_defaultMeasures,
|
4625
|
+
defaultDimensions,
|
4626
|
+
defaultMeasureName,
|
4594
4627
|
encodingForBar,
|
4628
|
+
buildMeasures,
|
4595
4629
|
pivotAdapter([
|
4596
4630
|
reshapeWithEncoding
|
4597
4631
|
], [
|
@@ -4685,9 +4719,11 @@ const registerBarParallel = ()=>{
|
|
4685
4719
|
};
|
4686
4720
|
const barPercentAdvancedPipeline = [
|
4687
4721
|
initAdvancedVSeed_initAdvancedVSeed,
|
4688
|
-
|
4689
|
-
|
4722
|
+
defaultMeasures_defaultMeasures,
|
4723
|
+
defaultDimensions,
|
4724
|
+
defaultMeasureName,
|
4690
4725
|
encodingForBar,
|
4726
|
+
buildMeasures,
|
4691
4727
|
pivotAdapter([
|
4692
4728
|
reshapeWithEncoding
|
4693
4729
|
], [
|
@@ -4756,9 +4792,11 @@ const registerBarPercent = ()=>{
|
|
4756
4792
|
};
|
4757
4793
|
const areaAdvancedPipeline = [
|
4758
4794
|
initAdvancedVSeed_initAdvancedVSeed,
|
4795
|
+
defaultMeasures_defaultMeasures,
|
4796
|
+
defaultDimensions,
|
4797
|
+
defaultMeasureName,
|
4759
4798
|
encodingForLine,
|
4760
4799
|
buildMeasures,
|
4761
|
-
autoDimensions_autoDimensions,
|
4762
4800
|
pivotAdapter([
|
4763
4801
|
reshapeWithEncoding
|
4764
4802
|
], [
|
@@ -4914,9 +4952,11 @@ const registerArea = ()=>{
|
|
4914
4952
|
};
|
4915
4953
|
const areaPercentAdvancedPipeline = [
|
4916
4954
|
initAdvancedVSeed_initAdvancedVSeed,
|
4955
|
+
defaultMeasures_defaultMeasures,
|
4956
|
+
defaultDimensions,
|
4957
|
+
defaultMeasureName,
|
4917
4958
|
encodingForLine,
|
4918
4959
|
buildMeasures,
|
4919
|
-
autoDimensions_autoDimensions,
|
4920
4960
|
pivotAdapter([
|
4921
4961
|
reshapeWithEncoding
|
4922
4962
|
], [
|
@@ -4990,11 +5030,9 @@ const registerAreaPercent = ()=>{
|
|
4990
5030
|
Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
|
4991
5031
|
Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
|
4992
5032
|
};
|
4993
|
-
const encodingForScatter = (advancedVSeed
|
4994
|
-
const {
|
4995
|
-
const
|
4996
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
4997
|
-
const dimensions = getBasicDimensions(vseed);
|
5033
|
+
const encodingForScatter = (advancedVSeed)=>{
|
5034
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
5035
|
+
const measures = findAllMeasures(vseedMeasures);
|
4998
5036
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
4999
5037
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
5000
5038
|
const encoding = {};
|
@@ -5030,7 +5068,9 @@ const scatter_generateMeasureEncoding = (measures, encoding)=>{
|
|
5030
5068
|
const scatter_generateDimensionEncoding = (dimensions, encoding)=>{
|
5031
5069
|
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5032
5070
|
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
5033
|
-
if (0 === encoding.color.length) encoding.color =
|
5071
|
+
if (0 === encoding.color.length) encoding.color = [
|
5072
|
+
MeasureName
|
5073
|
+
];
|
5034
5074
|
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
5035
5075
|
};
|
5036
5076
|
const buildMeasuresForScatter = (advancedVSeed, context)=>{
|
@@ -5043,8 +5083,7 @@ const buildMeasuresForScatter = (advancedVSeed, context)=>{
|
|
5043
5083
|
advancedVSeed.measures = buildMeasuresForScatter_generateMeasuresByParentId(vseed.measures);
|
5044
5084
|
return advancedVSeed;
|
5045
5085
|
}
|
5046
|
-
const
|
5047
|
-
const scatterMeasures = vseed.scatterMeasures ? vseed.scatterMeasures : basicMeasuresToScatterMeasures(basicMeasures);
|
5086
|
+
const scatterMeasures = vseed.scatterMeasures ? vseed.scatterMeasures : basicMeasuresToScatterMeasures(advancedVSeed.measures || []);
|
5048
5087
|
advancedVSeed.measures = scatterMeasuresToMeasureTree(scatterMeasures);
|
5049
5088
|
return advancedVSeed;
|
5050
5089
|
};
|
@@ -5263,9 +5302,11 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
|
5263
5302
|
};
|
5264
5303
|
const scatterAdvancedPipeline = [
|
5265
5304
|
initAdvancedVSeed_initAdvancedVSeed,
|
5305
|
+
defaultMeasures_defaultMeasures,
|
5306
|
+
defaultDimensions,
|
5307
|
+
defaultMeasureName,
|
5266
5308
|
encodingForScatter,
|
5267
5309
|
buildMeasuresForScatter,
|
5268
|
-
autoDimensions_autoDimensions,
|
5269
5310
|
pivotAdapter([
|
5270
5311
|
reshapeWithScatterEncoding
|
5271
5312
|
], [
|
@@ -5410,11 +5451,9 @@ const registerScatter = ()=>{
|
|
5410
5451
|
Builder._advancedPipelineMap.scatter = scatterAdvancedPipeline;
|
5411
5452
|
Builder._specPipelineMap.scatter = scatterSpecPipeline;
|
5412
5453
|
};
|
5413
|
-
const encodingForDualAxis = (advancedVSeed
|
5414
|
-
const {
|
5415
|
-
const
|
5416
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
5417
|
-
const dimensions = getBasicDimensions(vseed);
|
5454
|
+
const encodingForDualAxis = (advancedVSeed)=>{
|
5455
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
5456
|
+
const measures = findAllMeasures(vseedMeasures);
|
5418
5457
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
5419
5458
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
5420
5459
|
const encoding = {};
|
@@ -5456,7 +5495,9 @@ const dualAxis_generateDimensionEncoding = (dimensions, encoding)=>{
|
|
5456
5495
|
if (0 === encoding.x.length) encoding.x = [
|
5457
5496
|
dimensions[0].id
|
5458
5497
|
];
|
5459
|
-
if (0 === encoding.color.length) encoding.color =
|
5498
|
+
if (0 === encoding.color.length) encoding.color = [
|
5499
|
+
MeasureName
|
5500
|
+
];
|
5460
5501
|
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
5461
5502
|
};
|
5462
5503
|
const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
|
@@ -5469,8 +5510,7 @@ const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
|
|
5469
5510
|
advancedVSeed.measures = buildMeasuresForDualAxis_generateMeasuresByParentId(vseed.measures);
|
5470
5511
|
return advancedVSeed;
|
5471
5512
|
}
|
5472
|
-
const
|
5473
|
-
const dualMeasures = vseed.dualMeasures ? vseed.dualMeasures : basicMeasuresToDualMeasures(basicMeasures);
|
5513
|
+
const dualMeasures = vseed.dualMeasures ? vseed.dualMeasures : basicMeasuresToDualMeasures(advancedVSeed.measures || []);
|
5474
5514
|
advancedVSeed.measures = dualMeasuresToMeasureTree(dualMeasures);
|
5475
5515
|
return advancedVSeed;
|
5476
5516
|
};
|
@@ -5574,8 +5614,10 @@ const reshapeWithDualEncoding = (advancedVSeed, context)=>{
|
|
5574
5614
|
const datasets = [];
|
5575
5615
|
const primaryMeasures = measures[0];
|
5576
5616
|
const secondaryMeasures = measures[1] || [];
|
5617
|
+
const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
|
5577
5618
|
if (primaryMeasures && primaryMeasures.children) {
|
5578
5619
|
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
|
5620
|
+
colorItemAsId: hasEncoding,
|
5579
5621
|
foldMeasureValue: FoldPrimaryMeasureValue,
|
5580
5622
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
5581
5623
|
});
|
@@ -5622,6 +5664,7 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
|
|
5622
5664
|
const { dataset } = vseed;
|
5623
5665
|
const { dimensions, measures, encoding, chartType } = advancedVSeed;
|
5624
5666
|
if (!measures || !dimensions || !dataset || !encoding) return result;
|
5667
|
+
const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
|
5625
5668
|
const datasetList = [];
|
5626
5669
|
const datasetReshapeInfo = [];
|
5627
5670
|
const measureGroups = [];
|
@@ -5640,6 +5683,7 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
|
|
5640
5683
|
const secondaryMeasures = measures[1] || [];
|
5641
5684
|
if (primaryMeasures && primaryMeasures.children) {
|
5642
5685
|
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
|
5686
|
+
colorItemAsId: hasEncoding,
|
5643
5687
|
foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,
|
5644
5688
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
5645
5689
|
});
|
@@ -5708,9 +5752,11 @@ const dualAxisConfig = (advancedVSeed, context)=>{
|
|
5708
5752
|
};
|
5709
5753
|
const dualAxisAdvancedPipeline = [
|
5710
5754
|
initAdvancedVSeed_initAdvancedVSeed,
|
5755
|
+
defaultMeasures_defaultMeasures,
|
5756
|
+
defaultDimensions,
|
5757
|
+
defaultMeasureName,
|
5711
5758
|
encodingForDualAxis,
|
5712
5759
|
buildMeasuresForDualAxis,
|
5713
|
-
autoDimensions_autoDimensions,
|
5714
5760
|
pivotAdapter([
|
5715
5761
|
reshapeWithDualEncoding
|
5716
5762
|
], [
|
@@ -6543,11 +6589,9 @@ const registerDualAxis = ()=>{
|
|
6543
6589
|
Builder._advancedPipelineMap.dualAxis = dualAxisAdvancedPipeline;
|
6544
6590
|
Builder._specPipelineMap.dualAxis = dualAxisSpecPipeline;
|
6545
6591
|
};
|
6546
|
-
const encodingForPie = (advancedVSeed
|
6547
|
-
const {
|
6548
|
-
const
|
6549
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
6550
|
-
const dimensions = getBasicDimensions(vseed);
|
6592
|
+
const encodingForPie = (advancedVSeed)=>{
|
6593
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
6594
|
+
const measures = findAllMeasures(vseedMeasures);
|
6551
6595
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
6552
6596
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
6553
6597
|
const encoding = {};
|
@@ -6582,14 +6626,18 @@ const pie_generateMeasureEncoding = (measures, encoding)=>{
|
|
6582
6626
|
const pie_generateDimensionEncoding = (dimensions, encoding)=>{
|
6583
6627
|
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
6584
6628
|
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
6585
|
-
if (0 === encoding.color.length) encoding.color =
|
6629
|
+
if (0 === encoding.color.length) encoding.color = [
|
6630
|
+
MeasureName
|
6631
|
+
];
|
6586
6632
|
if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
|
6587
6633
|
};
|
6588
6634
|
const pieAdvancedPipeline = [
|
6589
6635
|
initAdvancedVSeed_initAdvancedVSeed,
|
6636
|
+
defaultMeasures_defaultMeasures,
|
6637
|
+
defaultDimensions,
|
6638
|
+
defaultMeasureName,
|
6590
6639
|
encodingForPie,
|
6591
6640
|
buildMeasures,
|
6592
|
-
autoDimensions_autoDimensions,
|
6593
6641
|
pivotAdapter([
|
6594
6642
|
reshapeWithEncoding
|
6595
6643
|
], [
|
@@ -6705,8 +6753,10 @@ const registerPie = ()=>{
|
|
6705
6753
|
};
|
6706
6754
|
const donutAdvancedPipeline = [
|
6707
6755
|
initAdvancedVSeed_initAdvancedVSeed,
|
6756
|
+
defaultMeasures_defaultMeasures,
|
6757
|
+
defaultDimensions,
|
6758
|
+
defaultMeasureName,
|
6708
6759
|
buildMeasures,
|
6709
|
-
autoDimensions_autoDimensions,
|
6710
6760
|
encodingForPie,
|
6711
6761
|
pivotAdapter([
|
6712
6762
|
reshapeWithEncoding
|
@@ -6783,11 +6833,9 @@ const registerDonut = ()=>{
|
|
6783
6833
|
Builder._advancedPipelineMap.donut = donutAdvancedPipeline;
|
6784
6834
|
Builder._specPipelineMap.donut = donutSpecPipeline;
|
6785
6835
|
};
|
6786
|
-
const encodingForRose = (advancedVSeed
|
6787
|
-
const {
|
6788
|
-
const
|
6789
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
6790
|
-
const dimensions = getBasicDimensions(vseed);
|
6836
|
+
const encodingForRose = (advancedVSeed)=>{
|
6837
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
6838
|
+
const measures = findAllMeasures(vseedMeasures);
|
6791
6839
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
6792
6840
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
6793
6841
|
const encoding = {};
|
@@ -6828,14 +6876,18 @@ const rose_generateDimensionEncoding = (dimensions, encoding)=>{
|
|
6828
6876
|
if (0 === encoding.angle.length) encoding.angle = [
|
6829
6877
|
dimensions[0].id
|
6830
6878
|
];
|
6831
|
-
if (0 === encoding.color.length) encoding.color =
|
6879
|
+
if (0 === encoding.color.length) encoding.color = [
|
6880
|
+
MeasureName
|
6881
|
+
];
|
6832
6882
|
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
|
6833
6883
|
};
|
6834
6884
|
const roseAdvancedPipeline = [
|
6835
6885
|
initAdvancedVSeed_initAdvancedVSeed,
|
6886
|
+
defaultMeasures_defaultMeasures,
|
6887
|
+
defaultDimensions,
|
6888
|
+
defaultMeasureName,
|
6836
6889
|
encodingForRose,
|
6837
6890
|
buildMeasures,
|
6838
|
-
autoDimensions_autoDimensions,
|
6839
6891
|
pivotAdapter([
|
6840
6892
|
reshapeWithEncoding
|
6841
6893
|
], [
|
@@ -7031,9 +7083,11 @@ const registerRose = ()=>{
|
|
7031
7083
|
};
|
7032
7084
|
const roseParallelAdvancedPipeline = [
|
7033
7085
|
initAdvancedVSeed_initAdvancedVSeed,
|
7086
|
+
defaultMeasures_defaultMeasures,
|
7087
|
+
defaultDimensions,
|
7088
|
+
defaultMeasureName,
|
7034
7089
|
encodingForRose,
|
7035
7090
|
buildMeasures,
|
7036
|
-
autoDimensions_autoDimensions,
|
7037
7091
|
pivotAdapter([
|
7038
7092
|
reshapeWithEncoding
|
7039
7093
|
], [
|
@@ -7139,11 +7193,9 @@ const registerRoseParallel = ()=>{
|
|
7139
7193
|
Builder._advancedPipelineMap.roseParallel = roseParallelAdvancedPipeline;
|
7140
7194
|
Builder._specPipelineMap.roseParallel = roseParallelSpecPipeline;
|
7141
7195
|
};
|
7142
|
-
const encodingForRadar = (advancedVSeed
|
7143
|
-
const {
|
7144
|
-
const
|
7145
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7146
|
-
const dimensions = getBasicDimensions(vseed);
|
7196
|
+
const encodingForRadar = (advancedVSeed)=>{
|
7197
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
7198
|
+
const measures = findAllMeasures(vseedMeasures);
|
7147
7199
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7148
7200
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7149
7201
|
const encoding = {};
|
@@ -7183,13 +7235,17 @@ const radar_generateDimensionEncoding = (dimensions, encoding)=>{
|
|
7183
7235
|
if (0 === encoding.angle.length) encoding.angle = [
|
7184
7236
|
dimensions[0].id
|
7185
7237
|
];
|
7186
|
-
if (0 === encoding.color.length) encoding.color =
|
7238
|
+
if (0 === encoding.color.length) encoding.color = [
|
7239
|
+
MeasureName
|
7240
|
+
];
|
7187
7241
|
};
|
7188
7242
|
const radarAdvancedPipeline = [
|
7189
7243
|
initAdvancedVSeed_initAdvancedVSeed,
|
7244
|
+
defaultMeasures_defaultMeasures,
|
7245
|
+
defaultDimensions,
|
7246
|
+
defaultMeasureName,
|
7190
7247
|
encodingForRadar,
|
7191
7248
|
buildMeasures,
|
7192
|
-
autoDimensions_autoDimensions,
|
7193
7249
|
pivotAdapter([
|
7194
7250
|
reshapeWithEncoding
|
7195
7251
|
], [
|
@@ -7323,11 +7379,9 @@ const registerRadar = ()=>{
|
|
7323
7379
|
Builder._advancedPipelineMap.radar = radarAdvancedPipeline;
|
7324
7380
|
Builder._specPipelineMap.radar = radarSpecPipeline;
|
7325
7381
|
};
|
7326
|
-
const encodingForFunnel = (advancedVSeed
|
7327
|
-
const {
|
7328
|
-
const
|
7329
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7330
|
-
const dimensions = getBasicDimensions(vseed);
|
7382
|
+
const encodingForFunnel = (advancedVSeed)=>{
|
7383
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
7384
|
+
const measures = findAllMeasures(vseedMeasures);
|
7331
7385
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7332
7386
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7333
7387
|
const encoding = {};
|
@@ -7362,14 +7416,18 @@ const funnel_generateMeasureEncoding = (measures, encoding)=>{
|
|
7362
7416
|
const funnel_generateDimensionEncoding = (dimensions, encoding)=>{
|
7363
7417
|
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7364
7418
|
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
7365
|
-
if (0 === encoding.color.length) encoding.color =
|
7419
|
+
if (0 === encoding.color.length) encoding.color = [
|
7420
|
+
MeasureName
|
7421
|
+
];
|
7366
7422
|
if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
|
7367
7423
|
};
|
7368
7424
|
const funnelAdvancedPipeline = [
|
7369
7425
|
initAdvancedVSeed_initAdvancedVSeed,
|
7426
|
+
defaultMeasures_defaultMeasures,
|
7427
|
+
defaultDimensions,
|
7428
|
+
defaultMeasureName,
|
7370
7429
|
encodingForFunnel,
|
7371
7430
|
buildMeasures,
|
7372
|
-
autoDimensions_autoDimensions,
|
7373
7431
|
pivotAdapter([
|
7374
7432
|
reshapeWithEncoding
|
7375
7433
|
], [
|
@@ -7482,11 +7540,9 @@ const registerFunnel = ()=>{
|
|
7482
7540
|
Builder._advancedPipelineMap.funnel = funnelAdvancedPipeline;
|
7483
7541
|
Builder._specPipelineMap.funnel = funnelSpecPipeline;
|
7484
7542
|
};
|
7485
|
-
const encodingForHeatmap = (advancedVSeed
|
7486
|
-
const {
|
7487
|
-
const
|
7488
|
-
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7489
|
-
const dimensions = getBasicDimensions(vseed);
|
7543
|
+
const encodingForHeatmap = (advancedVSeed)=>{
|
7544
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
7545
|
+
const measures = findAllMeasures(vseedMeasures);
|
7490
7546
|
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7491
7547
|
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7492
7548
|
const encoding = {};
|
@@ -7531,14 +7587,18 @@ const heatmap_generateDimensionEncoding = (dimensions, encoding)=>{
|
|
7531
7587
|
];
|
7532
7588
|
if (0 === encoding.y.length) if (dimensions.length > 1) encoding.y = dimensions.slice(1).map((item)=>item.id);
|
7533
7589
|
else encoding.y = dimensions.slice(0).map((item)=>item.id);
|
7534
|
-
if (0 === encoding.color.length) encoding.color =
|
7590
|
+
if (0 === encoding.color.length) encoding.color = [
|
7591
|
+
MeasureName
|
7592
|
+
];
|
7535
7593
|
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
7536
7594
|
};
|
7537
7595
|
const heatmapAdvancedPipeline = [
|
7538
7596
|
initAdvancedVSeed_initAdvancedVSeed,
|
7597
|
+
defaultMeasures_defaultMeasures,
|
7598
|
+
defaultDimensions,
|
7599
|
+
defaultMeasureName,
|
7539
7600
|
encodingForHeatmap,
|
7540
7601
|
buildMeasures,
|
7541
|
-
autoDimensions_autoDimensions,
|
7542
7602
|
pivotAdapter([
|
7543
7603
|
reshapeWithEncoding
|
7544
7604
|
], [
|
@@ -8446,7 +8506,9 @@ const zMeasure = z.object({
|
|
8446
8506
|
'size',
|
8447
8507
|
'color',
|
8448
8508
|
'label',
|
8449
|
-
'tooltip'
|
8509
|
+
'tooltip',
|
8510
|
+
'detail',
|
8511
|
+
'column'
|
8450
8512
|
]).optional(),
|
8451
8513
|
parentId: z.string().optional()
|
8452
8514
|
});
|