@visactor/vseed 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/builder/builder/builder.d.ts +6 -28
- package/dist/dataReshape/dataReshapeByEncoding.d.ts +1 -0
- package/dist/dataReshape/foldMeasures.d.ts +6 -5
- package/dist/index.cjs +844 -609
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +857 -619
- package/dist/index.js.map +1 -1
- package/dist/pipeline/advanced/chart/pipes/index.d.ts +1 -0
- package/dist/pipeline/advanced/chart/pipes/init/index.d.ts +1 -3
- package/dist/pipeline/advanced/chart/pipes/init/utils.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/{init/autoMeasures.d.ts → measures/buildMeasures.d.ts} +1 -1
- package/dist/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/measures/index.d.ts +4 -0
- package/dist/pipeline/advanced/chart/pipes/measures/utils.d.ts +28 -0
- package/dist/pipeline/spec/chart/pipes/color/colorAdapter.d.ts +2 -1
- package/dist/pipeline/spec/chart/pipes/color/index.d.ts +2 -1
- package/dist/pipeline/spec/chart/pipes/color/linearColorForDualAxis.d.ts +2 -0
- package/dist/pipeline/utils/chatType.d.ts +1 -1
- package/dist/types/advancedVSeed.d.ts +24 -14
- package/dist/types/chartType/area/zArea.d.ts +24 -0
- package/dist/types/chartType/areaPercent/zAreaPercent.d.ts +24 -0
- package/dist/types/chartType/bar/zBar.d.ts +24 -0
- package/dist/types/chartType/barParallel/zBarParallel.d.ts +24 -0
- package/dist/types/chartType/barPercent/zBarPercent.d.ts +24 -0
- package/dist/types/chartType/column/zColumn.d.ts +24 -0
- package/dist/types/chartType/columnParallel/zColumnParallel.d.ts +24 -0
- package/dist/types/chartType/columnPercent/zColumnPercent.d.ts +24 -0
- package/dist/types/chartType/donut/zDonut.d.ts +24 -0
- package/dist/types/chartType/dualAxis/zDualAxis.d.ts +76 -0
- package/dist/types/chartType/funnel/zFunnel.d.ts +24 -0
- package/dist/types/chartType/heatmap/zHeatmap.d.ts +24 -0
- package/dist/types/chartType/line/line.d.ts +0 -1
- package/dist/types/chartType/line/zLine.d.ts +24 -0
- package/dist/types/chartType/pie/zPie.d.ts +24 -0
- package/dist/types/chartType/pivotTable/zPivotTable.d.ts +24 -0
- package/dist/types/chartType/radar/zRadar.d.ts +24 -0
- package/dist/types/chartType/rose/zRose.d.ts +24 -0
- package/dist/types/chartType/roseParallel/zRoseParallel.d.ts +24 -0
- package/dist/types/chartType/scatter/zScatter.d.ts +76 -0
- package/dist/types/chartType/table/zTable.d.ts +24 -0
- package/dist/types/properties/dimensions/dimensions.d.ts +16 -0
- package/dist/types/properties/dimensions/zDimensions.d.ts +33 -0
- package/dist/types/properties/encoding/encoding.d.ts +0 -1
- package/dist/types/properties/encoding/index.d.ts +2 -2
- package/dist/types/properties/encoding/zEncoding.d.ts +0 -14
- package/dist/types/properties/measures/dualMeasures.d.ts +1 -0
- package/dist/types/properties/measures/measures.d.ts +19 -0
- package/dist/types/properties/measures/scatterMeasures.d.ts +1 -0
- package/dist/types/properties/measures/zDualMeasures.d.ts +104 -0
- package/dist/types/properties/measures/zMeasures.d.ts +39 -0
- package/dist/types/properties/measures/zScatterMeasures.d.ts +104 -0
- package/dist/types/zVseed.d.ts +584 -0
- package/dist/umd/index.js +858 -607
- package/dist/umd/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/pipeline/advanced/chart/pipes/init/autoDualMeasures.d.ts +0 -2
- package/dist/pipeline/advanced/chart/pipes/init/autoScatterMeasures.d.ts +0 -2
package/dist/index.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { clone, groupBy, isArray, isEmpty, isNullish, isNumber, isObjectType, isString, merge, mergeDeep, omit, pick, sort, unique } from "remeda";
|
1
|
+
import { clone, groupBy, isArray, isEmpty as external_remeda_isEmpty, isNullish, isNumber, isObjectType, isString, merge, mergeDeep, omit, pick, sort, unique, uniqueBy } from "remeda";
|
2
2
|
import { z } from "zod";
|
3
3
|
const execPipeline = (pipeline, context, initialValue = {})=>{
|
4
4
|
const result = pipeline.reduce((prev, cur)=>cur(prev, context), initialValue);
|
@@ -519,7 +519,7 @@ const measureTreeToColumns = (spec, context)=>{
|
|
519
519
|
const fieldFormat = (node, locale)=>(datum)=>{
|
520
520
|
const { format = {}, autoFormat = true, id } = node;
|
521
521
|
const value = datum[id];
|
522
|
-
if (!
|
522
|
+
if (!external_remeda_isEmpty(format)) {
|
523
523
|
const formatter = createFormatter(format);
|
524
524
|
return formatter(value);
|
525
525
|
}
|
@@ -882,7 +882,7 @@ const pivotIndicators = (spec, context)=>{
|
|
882
882
|
};
|
883
883
|
const pivotIndicators_fieldFormat = (node, locale)=>(value)=>{
|
884
884
|
const { format = {}, autoFormat = true } = node;
|
885
|
-
if (!
|
885
|
+
if (!external_remeda_isEmpty(format)) {
|
886
886
|
const formatter = createFormatter(format);
|
887
887
|
return formatter(value);
|
888
888
|
}
|
@@ -1036,6 +1036,138 @@ const initAdvancedVSeed_initAdvancedVSeed = (advancedVSeed, context)=>{
|
|
1036
1036
|
locale: locale || 'zh-CN'
|
1037
1037
|
};
|
1038
1038
|
};
|
1039
|
+
const ORIGINAL_DATA = '__OriginalData__';
|
1040
|
+
const Separator = '-';
|
1041
|
+
const FoldMeasureName = '__MeaName__';
|
1042
|
+
const FoldMeasureId = '__MeaId__';
|
1043
|
+
const FoldMeasureValue = '__MeaValue__';
|
1044
|
+
const MeasureName = FoldMeasureName;
|
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`指标名称`,
|
1060
|
+
encoding: 'detail'
|
1061
|
+
};
|
1062
|
+
if (!dataset) throw new Error('dataset is required');
|
1063
|
+
if (0 === dataset.length) return [];
|
1064
|
+
if (dimensions) {
|
1065
|
+
const basicDimensions = dimensions.map((dim)=>({
|
1066
|
+
location: 'dimension',
|
1067
|
+
...dim
|
1068
|
+
}));
|
1069
|
+
if (basicDimensions.some((dim)=>dim.id === MeasureName)) return basicDimensions;
|
1070
|
+
basicDimensions.push(MeaName);
|
1071
|
+
return basicDimensions;
|
1072
|
+
}
|
1073
|
+
const top100dataset = dataset.slice(0, 100);
|
1074
|
+
const sample = top100dataset.reduce((prev, cur)=>({
|
1075
|
+
...prev,
|
1076
|
+
...cur
|
1077
|
+
}), {});
|
1078
|
+
const basicDimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
|
1079
|
+
'',
|
1080
|
+
null,
|
1081
|
+
void 0
|
1082
|
+
].includes(key)).map((dim)=>({
|
1083
|
+
id: dim,
|
1084
|
+
alias: dim,
|
1085
|
+
location: 'dimension'
|
1086
|
+
}));
|
1087
|
+
basicDimensions.push(MeaName);
|
1088
|
+
return basicDimensions;
|
1089
|
+
};
|
1090
|
+
const getBasicMeasures = (vseed)=>{
|
1091
|
+
const { dataset, measures } = vseed;
|
1092
|
+
if (!measures || 0 === measures.length) return generateMeasuresByDataset(dataset);
|
1093
|
+
return measures;
|
1094
|
+
};
|
1095
|
+
const generateMeasuresByDataset = (dataset)=>{
|
1096
|
+
if (!dataset) throw new Error('dataset is required');
|
1097
|
+
if (0 === dataset.length) return [];
|
1098
|
+
const top100dataset = dataset.slice(0, 100);
|
1099
|
+
const sample = top100dataset.reduce((prev, cur)=>({
|
1100
|
+
...prev,
|
1101
|
+
...cur
|
1102
|
+
}), {});
|
1103
|
+
const basicMeasures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
|
1104
|
+
'',
|
1105
|
+
null,
|
1106
|
+
void 0
|
1107
|
+
].includes(key)).map((measure)=>({
|
1108
|
+
id: measure,
|
1109
|
+
alias: measure
|
1110
|
+
}));
|
1111
|
+
return basicMeasures;
|
1112
|
+
};
|
1113
|
+
const isMeasureTreeWithChildren = (vseed)=>{
|
1114
|
+
const { measures } = vseed;
|
1115
|
+
if (!measures) return false;
|
1116
|
+
return measures.some((measure)=>'children' in measure);
|
1117
|
+
};
|
1118
|
+
const isMeasureTreeWithParentId = (vseed)=>{
|
1119
|
+
const { measures } = vseed;
|
1120
|
+
if (!measures) return false;
|
1121
|
+
return measures.some((measure)=>'parentId' in measure);
|
1122
|
+
};
|
1123
|
+
const encodingForLine = (advancedVSeed, context)=>{
|
1124
|
+
const { vseed } = context;
|
1125
|
+
const { measures: vseedMeasures = [] } = vseed;
|
1126
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
1127
|
+
const dimensions = getBasicDimensions(vseed);
|
1128
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
1129
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
1130
|
+
const encoding = {};
|
1131
|
+
if (hasDimensionEncoding) generateDimensionEncoding(dimensions, encoding);
|
1132
|
+
else generateDefaultDimensionEncoding(dimensions, encoding);
|
1133
|
+
if (hasMeasureEncoding) generateMeasureEncoding(measures, encoding);
|
1134
|
+
else generateDefaultMeasureEncoding(measures, encoding);
|
1135
|
+
return {
|
1136
|
+
...advancedVSeed,
|
1137
|
+
encoding
|
1138
|
+
};
|
1139
|
+
};
|
1140
|
+
const generateDefaultMeasureEncoding = (measures, encoding)=>{
|
1141
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
1142
|
+
encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
1143
|
+
};
|
1144
|
+
const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
1145
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
1146
|
+
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
1147
|
+
encoding.x = uniqueDimIds.slice(0, 1);
|
1148
|
+
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
1149
|
+
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
1150
|
+
encoding.tooltip = uniqueDimIds;
|
1151
|
+
encoding.label = [];
|
1152
|
+
encoding.row = [];
|
1153
|
+
encoding.column = [];
|
1154
|
+
};
|
1155
|
+
const generateMeasureEncoding = (measures, encoding)=>{
|
1156
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
1157
|
+
encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
1158
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
1159
|
+
if (color.length > 0) encoding.color = color;
|
1160
|
+
};
|
1161
|
+
const generateDimensionEncoding = (dimensions, encoding)=>{
|
1162
|
+
encoding.x = unique(dimensions.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
1163
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
1164
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
1165
|
+
if (0 === encoding.x.length) encoding.x = [
|
1166
|
+
dimensions[0].id
|
1167
|
+
];
|
1168
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
1169
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
1170
|
+
};
|
1039
1171
|
const measureDepth = (measures = [])=>{
|
1040
1172
|
if (!measures) return 0;
|
1041
1173
|
let depth = 1;
|
@@ -1054,23 +1186,26 @@ const isVTable = (vseed)=>[
|
|
1054
1186
|
const isVChart = (vseed)=>!isVTable(vseed);
|
1055
1187
|
const isPivotChart = (vseed)=>{
|
1056
1188
|
if (isVTable(vseed)) return false;
|
1189
|
+
if (isMeasureTreeWithParentId(vseed)) {
|
1190
|
+
const parentIds = vseed.measures?.map((measure)=>measure.parentId);
|
1191
|
+
return parentIds && unique(parentIds).length > 1;
|
1192
|
+
}
|
1057
1193
|
if ('dualAxis' === vseed.chartType || 'scatter' === vseed.chartType) {
|
1058
1194
|
const { dimensions = [] } = vseed;
|
1059
1195
|
const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'rowDimension' === dimension.location || 'columnDimension' === dimension.location);
|
1060
1196
|
if (hasRowOrColumnDimension) return true;
|
1061
1197
|
if ('scatter' === vseed.chartType) {
|
1062
|
-
if (vseed
|
1198
|
+
if (isMeasureTreeWithChildren(vseed)) {
|
1063
1199
|
const depth = measureDepth(vseed.measures);
|
1064
|
-
|
1065
|
-
return false;
|
1200
|
+
return 3 === depth;
|
1066
1201
|
}
|
1067
1202
|
if (vseed.scatterMeasures && vseed.scatterMeasures.length > 1) return true;
|
1203
|
+
return false;
|
1068
1204
|
}
|
1069
1205
|
if ('dualAxis' === vseed.chartType) {
|
1070
|
-
if (vseed
|
1206
|
+
if (isMeasureTreeWithChildren(vseed)) {
|
1071
1207
|
const depth = measureDepth(vseed.measures);
|
1072
|
-
|
1073
|
-
return false;
|
1208
|
+
return 3 === depth;
|
1074
1209
|
}
|
1075
1210
|
if (vseed.dualMeasures && vseed.dualMeasures.length > 1) return true;
|
1076
1211
|
}
|
@@ -1081,93 +1216,49 @@ const isPivotChart = (vseed)=>{
|
|
1081
1216
|
const hasMeasureGroup = measures && measures.some((measure)=>measure && measure.children);
|
1082
1217
|
return hasRowOrColumnDimension || hasMeasureGroup;
|
1083
1218
|
};
|
1084
|
-
const
|
1085
|
-
const result = {
|
1086
|
-
...advancedVSeed
|
1087
|
-
};
|
1219
|
+
const buildMeasures = (advancedVSeed, context)=>{
|
1088
1220
|
const { vseed } = context;
|
1089
|
-
|
1090
|
-
|
1091
|
-
|
1092
|
-
if (isPivotChart(vseed)) return autoMeasureGroup(advancedVSeed, context);
|
1093
|
-
if (measures) {
|
1094
|
-
result.measures = measures;
|
1095
|
-
return result;
|
1221
|
+
if (isMeasureTreeWithChildren(vseed)) {
|
1222
|
+
advancedVSeed.measures = vseed.measures;
|
1223
|
+
return advancedVSeed;
|
1096
1224
|
}
|
1097
|
-
|
1098
|
-
|
1099
|
-
|
1100
|
-
...cur
|
1101
|
-
}), {});
|
1102
|
-
result.measures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
|
1103
|
-
'',
|
1104
|
-
null,
|
1105
|
-
void 0
|
1106
|
-
].includes(key)).map((measure)=>({
|
1107
|
-
id: measure,
|
1108
|
-
alias: measure
|
1109
|
-
}));
|
1110
|
-
return result;
|
1111
|
-
};
|
1112
|
-
const autoMeasureGroup = (advancedVSeed, context)=>{
|
1113
|
-
const { vseed } = context;
|
1114
|
-
const { measures } = vseed;
|
1115
|
-
const hasMeasureGroup = measures?.some((measure)=>measure.children);
|
1116
|
-
if (!measures) return advancedVSeed;
|
1117
|
-
if (!hasMeasureGroup) {
|
1118
|
-
const newMeasures = [
|
1119
|
-
{
|
1120
|
-
id: 'measureGroup',
|
1121
|
-
alias: 'measureGroup',
|
1122
|
-
children: measures
|
1123
|
-
}
|
1124
|
-
];
|
1125
|
-
return {
|
1126
|
-
...advancedVSeed,
|
1127
|
-
measures: newMeasures
|
1128
|
-
};
|
1225
|
+
if (isMeasureTreeWithParentId(vseed)) {
|
1226
|
+
advancedVSeed.measures = generateMeasuresByParentId(vseed.measures);
|
1227
|
+
return advancedVSeed;
|
1129
1228
|
}
|
1130
|
-
|
1131
|
-
|
1132
|
-
|
1133
|
-
if (currentGroup.children?.length) {
|
1134
|
-
currentGroup.alias = currentGroup.children.map((item)=>item.alias).join('-');
|
1135
|
-
currentGroup.id = currentGroup.alias + currentGroup.children.map((item)=>item.id).join('-');
|
1136
|
-
measureGroups.push(currentGroup);
|
1137
|
-
currentGroup = createEmptyMeasureGroup();
|
1138
|
-
}
|
1139
|
-
measureGroups.push(measure);
|
1140
|
-
} else currentGroup.children?.push(measure);
|
1141
|
-
if (currentGroup.children?.length) {
|
1142
|
-
currentGroup.alias = currentGroup.children.map((item)=>item.alias).join('-');
|
1143
|
-
currentGroup.id = currentGroup.alias + currentGroup.children.map((item)=>item.id).join('-');
|
1144
|
-
measureGroups.push(currentGroup);
|
1145
|
-
currentGroup = createEmptyMeasureGroup();
|
1146
|
-
}
|
1147
|
-
advancedVSeed.measures = measureGroups;
|
1229
|
+
const basicMeasures = getBasicMeasures(vseed);
|
1230
|
+
if (isPivotChart(vseed)) advancedVSeed.measures = basicMeasuresToMeasureTree(basicMeasures);
|
1231
|
+
else advancedVSeed.measures = basicMeasures;
|
1148
1232
|
return advancedVSeed;
|
1149
1233
|
};
|
1150
|
-
const
|
1151
|
-
|
1152
|
-
|
1153
|
-
|
1234
|
+
const generateMeasuresByParentId = (measures)=>{
|
1235
|
+
const measureTree = [];
|
1236
|
+
measures.forEach((measure)=>{
|
1237
|
+
if (!measure.parentId) return;
|
1238
|
+
const parent = measureTree.find((item)=>item.id === measure.parentId);
|
1239
|
+
if (parent && 'children' in parent) {
|
1240
|
+
parent.children = parent.children || [];
|
1241
|
+
parent.children.push(measure);
|
1242
|
+
} else measureTree.push({
|
1243
|
+
id: measure.parentId,
|
1244
|
+
children: [
|
1245
|
+
measure
|
1246
|
+
]
|
1247
|
+
});
|
1154
1248
|
});
|
1155
|
-
|
1156
|
-
|
1157
|
-
const
|
1158
|
-
const
|
1159
|
-
const
|
1160
|
-
|
1161
|
-
|
1162
|
-
|
1163
|
-
|
1164
|
-
|
1165
|
-
|
1166
|
-
|
1167
|
-
|
1168
|
-
const DetailEncoding = '__Dim_Detail__';
|
1169
|
-
const ColorEncoding = '__Dim_Color__';
|
1170
|
-
const ColorIdEncoding = '__Dim_ColorId__';
|
1249
|
+
return measureTree;
|
1250
|
+
};
|
1251
|
+
const basicMeasuresToMeasureTree = (measures)=>{
|
1252
|
+
const id = measures.map((item)=>item.id).join('-');
|
1253
|
+
const alias = measures.map((item)=>item.alias || item.id).join('-');
|
1254
|
+
return [
|
1255
|
+
{
|
1256
|
+
id,
|
1257
|
+
alias,
|
1258
|
+
children: measures
|
1259
|
+
}
|
1260
|
+
];
|
1261
|
+
};
|
1171
1262
|
const autoDimensions_autoDimensions = (advancedVSeed, context)=>{
|
1172
1263
|
const result = {
|
1173
1264
|
...advancedVSeed
|
@@ -1207,54 +1298,14 @@ const autoDimensions_autoDimensions = (advancedVSeed, context)=>{
|
|
1207
1298
|
result.dimensions.push(MeaName);
|
1208
1299
|
return result;
|
1209
1300
|
};
|
1210
|
-
const encodingForLine = (advancedVSeed, context)=>{
|
1211
|
-
const { vseed } = context;
|
1212
|
-
const { dimensions } = advancedVSeed;
|
1213
|
-
if (!dimensions) return advancedVSeed;
|
1214
|
-
const encoding = vseed.encoding;
|
1215
|
-
if (encoding) {
|
1216
|
-
const x = encoding.x || [
|
1217
|
-
dimensions[0].id
|
1218
|
-
];
|
1219
|
-
const color = encoding.color || [
|
1220
|
-
(dimensions[1] || dimensions[0]).id
|
1221
|
-
];
|
1222
|
-
const detail = encoding.detail || [];
|
1223
|
-
const mergedDetail = 0 === detail.length ? dimensions.map((d)=>d.id).filter((id)=>!x.includes(id)) : encoding.detail;
|
1224
|
-
return {
|
1225
|
-
...advancedVSeed,
|
1226
|
-
encoding: {
|
1227
|
-
...encoding,
|
1228
|
-
x,
|
1229
|
-
color,
|
1230
|
-
detail: mergedDetail
|
1231
|
-
}
|
1232
|
-
};
|
1233
|
-
}
|
1234
|
-
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
1235
|
-
const mergedEncoding = {
|
1236
|
-
x: dimensions.slice(0, 1).map((item)=>item.id),
|
1237
|
-
color: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
1238
|
-
detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
1239
|
-
tooltip: dimensions.map((item)=>item.id),
|
1240
|
-
label: [],
|
1241
|
-
row: [],
|
1242
|
-
column: []
|
1243
|
-
};
|
1244
|
-
return {
|
1245
|
-
...advancedVSeed,
|
1246
|
-
encoding: mergedEncoding
|
1247
|
-
};
|
1248
|
-
};
|
1249
1301
|
const pivotAdapter = (pipeline, pivotPipeline)=>(advancedVSeed, context)=>{
|
1250
1302
|
const { vseed } = context;
|
1251
1303
|
const usePivotChart = isPivotChart(vseed);
|
1252
1304
|
if (usePivotChart) return execPipeline(pivotPipeline, context, advancedVSeed);
|
1253
1305
|
return execPipeline(pipeline, context, advancedVSeed);
|
1254
1306
|
};
|
1255
|
-
const foldMeasures = (dataset, measures,
|
1256
|
-
const { measureId
|
1257
|
-
const colorMeasureId = encoding?.color?.length === 1 && measures.some((m)=>m.id === encoding?.color?.[0]) ? encoding?.color?.[0] : void 0;
|
1307
|
+
const foldMeasures = (dataset, measures, options)=>{
|
1308
|
+
const { measureId, measureName, measureValue, colorMeasureId } = options || {};
|
1258
1309
|
const foldInfo = {
|
1259
1310
|
measureId,
|
1260
1311
|
measureName,
|
@@ -1353,11 +1404,12 @@ const applyEncoding = (encoding, dimensions, datum, separator)=>{
|
|
1353
1404
|
if (encoding && dimensions.length) datum[encoding] = dimensions.map((dim)=>String(datum[dim.id])).join(separator);
|
1354
1405
|
};
|
1355
1406
|
const dataReshapeByEncoding = (dataset, dimensions, measures, encoding, options)=>{
|
1356
|
-
const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, colorItemAsId = false } = options || {};
|
1357
|
-
const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures,
|
1407
|
+
const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, colorItemAsId = false, colorMeasureId } = options || {};
|
1408
|
+
const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, {
|
1358
1409
|
measureId: foldMeasureId,
|
1359
1410
|
measureName: foldMeasureName,
|
1360
|
-
measureValue: foldMeasureValue
|
1411
|
+
measureValue: foldMeasureValue,
|
1412
|
+
colorMeasureId
|
1361
1413
|
});
|
1362
1414
|
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dimensions, encoding, {
|
1363
1415
|
foldMeasureId,
|
@@ -1370,6 +1422,24 @@ const dataReshapeByEncoding = (dataset, dimensions, measures, encoding, options)
|
|
1370
1422
|
unfoldInfo
|
1371
1423
|
};
|
1372
1424
|
};
|
1425
|
+
const colorAdapter = (ordinalPipe, linearPipe)=>(spec, context)=>{
|
1426
|
+
const { advancedVSeed } = context;
|
1427
|
+
if (isLinearColor(advancedVSeed)) return linearPipe(spec, context);
|
1428
|
+
return ordinalPipe(spec, context);
|
1429
|
+
};
|
1430
|
+
const isLinearColor = (advancedVSeed)=>{
|
1431
|
+
const { encoding, measures } = advancedVSeed;
|
1432
|
+
const measureIdList = findAllMeasures(measures).map((measure)=>measure.id);
|
1433
|
+
const { color } = encoding;
|
1434
|
+
return color?.length === 1 && measureIdList.includes(color[0]);
|
1435
|
+
};
|
1436
|
+
const getColorMeasureId = (advancedVSeed)=>{
|
1437
|
+
if (isLinearColor(advancedVSeed)) {
|
1438
|
+
const { encoding } = advancedVSeed;
|
1439
|
+
const { color } = encoding;
|
1440
|
+
return color?.[0];
|
1441
|
+
}
|
1442
|
+
};
|
1373
1443
|
const reshapeWithEncoding = (advancedVSeed, context)=>{
|
1374
1444
|
const result = {
|
1375
1445
|
...advancedVSeed
|
@@ -1379,7 +1449,9 @@ const reshapeWithEncoding = (advancedVSeed, context)=>{
|
|
1379
1449
|
const { dimensions, measures, encoding } = advancedVSeed;
|
1380
1450
|
if (!measures || !dimensions || !dataset || !encoding) return result;
|
1381
1451
|
if (0 === measures.length) throw new Error('measures can not be empty');
|
1382
|
-
const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding
|
1452
|
+
const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (item)=>item.id), uniqueBy(findAllMeasures(measures), (item)=>item.id), encoding, {
|
1453
|
+
colorMeasureId: getColorMeasureId(advancedVSeed)
|
1454
|
+
});
|
1383
1455
|
return {
|
1384
1456
|
...result,
|
1385
1457
|
dataset: newDatasets,
|
@@ -1414,8 +1486,9 @@ const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
|
|
1414
1486
|
const measures = measureGroup.children;
|
1415
1487
|
if (!measures) return;
|
1416
1488
|
const groupId = measureGroup.id;
|
1417
|
-
const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding, {
|
1418
|
-
foldMeasureValue: `${FoldMeasureValue}${groupId}
|
1489
|
+
const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (item)=>item.id), uniqueBy(measures, (item)=>item.id), encoding, {
|
1490
|
+
foldMeasureValue: `${FoldMeasureValue}${groupId}`,
|
1491
|
+
colorMeasureId: getColorMeasureId(advancedVSeed)
|
1419
1492
|
});
|
1420
1493
|
const reshapeInfo = {
|
1421
1494
|
id: groupId,
|
@@ -1622,9 +1695,9 @@ const annotation_annotation = (advancedVSeed, context)=>{
|
|
1622
1695
|
};
|
1623
1696
|
const lineAdvancedPipeline = [
|
1624
1697
|
initAdvancedVSeed_initAdvancedVSeed,
|
1625
|
-
autoMeasures_autoMeasures,
|
1626
|
-
autoDimensions_autoDimensions,
|
1627
1698
|
encodingForLine,
|
1699
|
+
buildMeasures,
|
1700
|
+
autoDimensions_autoDimensions,
|
1628
1701
|
pivotAdapter([
|
1629
1702
|
reshapeWithEncoding
|
1630
1703
|
], [
|
@@ -1637,17 +1710,6 @@ const lineAdvancedPipeline = [
|
|
1637
1710
|
markStyle_markStyle,
|
1638
1711
|
annotation_annotation
|
1639
1712
|
];
|
1640
|
-
const colorAdapter = (ordinalPipe, linearPipe)=>(spec, context)=>{
|
1641
|
-
const { advancedVSeed } = context;
|
1642
|
-
if (isLinearColor(advancedVSeed)) return linearPipe(spec, context);
|
1643
|
-
return ordinalPipe(spec, context);
|
1644
|
-
};
|
1645
|
-
const isLinearColor = (advancedVSeed)=>{
|
1646
|
-
const { encoding, measures } = advancedVSeed;
|
1647
|
-
const measureIdList = findAllMeasures(measures).map((measure)=>measure.id);
|
1648
|
-
const { color } = encoding;
|
1649
|
-
return color?.length === 1 && measureIdList.includes(color[0]);
|
1650
|
-
};
|
1651
1713
|
const initLine = (spec, context)=>{
|
1652
1714
|
const result = {
|
1653
1715
|
...spec
|
@@ -2017,7 +2079,7 @@ const label_label = (spec, context)=>{
|
|
2017
2079
|
const measure = findMeasureById(measures, id);
|
2018
2080
|
if (!measure) return value;
|
2019
2081
|
const { format = {}, autoFormat = true } = measure;
|
2020
|
-
if (!
|
2082
|
+
if (!external_remeda_isEmpty(format)) {
|
2021
2083
|
const formatter = createFormatter(format);
|
2022
2084
|
return formatter(value);
|
2023
2085
|
}
|
@@ -2071,7 +2133,7 @@ const tooltip_tooltip = (spec, context)=>{
|
|
2071
2133
|
const measure = findMeasureById(measures, id);
|
2072
2134
|
if (!measure) return String(value);
|
2073
2135
|
const { format = {}, autoFormat = true } = measure;
|
2074
|
-
if (!
|
2136
|
+
if (!external_remeda_isEmpty(format)) {
|
2075
2137
|
const formatter = createFormatter(format);
|
2076
2138
|
return formatter(value);
|
2077
2139
|
}
|
@@ -2093,7 +2155,7 @@ const tooltip_tooltip = (spec, context)=>{
|
|
2093
2155
|
const measure = findMeasureById(measures, id);
|
2094
2156
|
if (!measure) return String(value);
|
2095
2157
|
const { format = {}, autoFormat = true } = measure;
|
2096
|
-
if (!
|
2158
|
+
if (!external_remeda_isEmpty(format)) {
|
2097
2159
|
const formatter = createFormatter(format);
|
2098
2160
|
return formatter(value);
|
2099
2161
|
}
|
@@ -3436,51 +3498,58 @@ const registerLine = ()=>{
|
|
3436
3498
|
};
|
3437
3499
|
const encodingForColumn = (advancedVSeed, context)=>{
|
3438
3500
|
const { vseed } = context;
|
3439
|
-
const {
|
3440
|
-
|
3441
|
-
const
|
3442
|
-
|
3443
|
-
|
3444
|
-
|
3445
|
-
|
3446
|
-
|
3447
|
-
|
3448
|
-
|
3449
|
-
const detail = encoding.detail || [];
|
3450
|
-
const mergedDetail = 0 === detail.length ? unique([
|
3451
|
-
...color,
|
3452
|
-
...detail
|
3453
|
-
]) : detail;
|
3454
|
-
return {
|
3455
|
-
...advancedVSeed,
|
3456
|
-
encoding: {
|
3457
|
-
...encoding,
|
3458
|
-
x,
|
3459
|
-
color,
|
3460
|
-
detail: mergedDetail
|
3461
|
-
}
|
3462
|
-
};
|
3463
|
-
}
|
3464
|
-
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
3465
|
-
const mergedEncoding = {
|
3466
|
-
x: dimensions.slice(0, 1).map((item)=>item.id),
|
3467
|
-
color: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
3468
|
-
detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
3469
|
-
tooltip: dimensions.map((item)=>item.id),
|
3470
|
-
label: [],
|
3471
|
-
row: [],
|
3472
|
-
column: []
|
3473
|
-
};
|
3501
|
+
const { measures: vseedMeasures = [] } = vseed;
|
3502
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
3503
|
+
const dimensions = getBasicDimensions(vseed);
|
3504
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
3505
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
3506
|
+
const encoding = {};
|
3507
|
+
if (hasDimensionEncoding) column_generateDimensionEncoding(dimensions, encoding);
|
3508
|
+
else column_generateDefaultDimensionEncoding(dimensions, encoding);
|
3509
|
+
if (hasMeasureEncoding) column_generateMeasureEncoding(measures, encoding);
|
3510
|
+
else column_generateDefaultMeasureEncoding(measures, encoding);
|
3474
3511
|
return {
|
3475
3512
|
...advancedVSeed,
|
3476
|
-
encoding
|
3513
|
+
encoding
|
3477
3514
|
};
|
3478
3515
|
};
|
3516
|
+
const column_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
3517
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
3518
|
+
encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
3519
|
+
};
|
3520
|
+
const column_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
3521
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
3522
|
+
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
3523
|
+
encoding.x = uniqueDimIds.slice(0, 1);
|
3524
|
+
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
3525
|
+
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
3526
|
+
encoding.tooltip = uniqueDimIds;
|
3527
|
+
encoding.label = [];
|
3528
|
+
encoding.row = [];
|
3529
|
+
encoding.column = [];
|
3530
|
+
};
|
3531
|
+
const column_generateMeasureEncoding = (measures, encoding)=>{
|
3532
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
3533
|
+
encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
3534
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
3535
|
+
if (color.length > 0) encoding.color = color;
|
3536
|
+
return encoding;
|
3537
|
+
};
|
3538
|
+
const column_generateDimensionEncoding = (dimensions, encoding)=>{
|
3539
|
+
encoding.x = unique(dimensions.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
3540
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
3541
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
3542
|
+
if (0 === encoding.x.length) encoding.x = [
|
3543
|
+
dimensions[0].id
|
3544
|
+
];
|
3545
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
3546
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
3547
|
+
};
|
3479
3548
|
const columnAdvancedPipeline = [
|
3480
3549
|
initAdvancedVSeed_initAdvancedVSeed,
|
3481
|
-
autoMeasures_autoMeasures,
|
3482
|
-
autoDimensions_autoDimensions,
|
3483
3550
|
encodingForColumn,
|
3551
|
+
buildMeasures,
|
3552
|
+
autoDimensions_autoDimensions,
|
3484
3553
|
pivotAdapter([
|
3485
3554
|
reshapeWithEncoding
|
3486
3555
|
], [
|
@@ -3927,9 +3996,9 @@ const registerColumn = ()=>{
|
|
3927
3996
|
};
|
3928
3997
|
const columnParallelAdvancedPipeline = [
|
3929
3998
|
initAdvancedVSeed_initAdvancedVSeed,
|
3930
|
-
autoMeasures_autoMeasures,
|
3931
|
-
autoDimensions_autoDimensions,
|
3932
3999
|
encodingForColumn,
|
4000
|
+
buildMeasures,
|
4001
|
+
autoDimensions_autoDimensions,
|
3933
4002
|
pivotAdapter([
|
3934
4003
|
reshapeWithEncoding
|
3935
4004
|
], [
|
@@ -4024,9 +4093,9 @@ const registerColumnParallel = ()=>{
|
|
4024
4093
|
};
|
4025
4094
|
const columnPercentAdvancedPipeline = [
|
4026
4095
|
initAdvancedVSeed_initAdvancedVSeed,
|
4027
|
-
autoMeasures_autoMeasures,
|
4028
|
-
autoDimensions_autoDimensions,
|
4029
4096
|
encodingForColumn,
|
4097
|
+
buildMeasures,
|
4098
|
+
autoDimensions_autoDimensions,
|
4030
4099
|
pivotAdapter([
|
4031
4100
|
reshapeWithEncoding
|
4032
4101
|
], [
|
@@ -4105,46 +4174,53 @@ const registerColumnPercent = ()=>{
|
|
4105
4174
|
};
|
4106
4175
|
const encodingForBar = (advancedVSeed, context)=>{
|
4107
4176
|
const { vseed } = context;
|
4108
|
-
const {
|
4109
|
-
|
4110
|
-
const
|
4111
|
-
|
4112
|
-
|
4113
|
-
|
4114
|
-
|
4115
|
-
|
4116
|
-
|
4117
|
-
|
4118
|
-
const detail = encoding.detail || [];
|
4119
|
-
const mergedDetail = 0 === detail.length ? unique([
|
4120
|
-
...color,
|
4121
|
-
...detail
|
4122
|
-
]) : detail;
|
4123
|
-
return {
|
4124
|
-
...advancedVSeed,
|
4125
|
-
encoding: {
|
4126
|
-
...encoding,
|
4127
|
-
y,
|
4128
|
-
color,
|
4129
|
-
detail: mergedDetail
|
4130
|
-
}
|
4131
|
-
};
|
4132
|
-
}
|
4133
|
-
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
4134
|
-
const mergedEncoding = {
|
4135
|
-
y: dimensions.slice(0, 1).map((item)=>item.id),
|
4136
|
-
color: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
4137
|
-
detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
4138
|
-
tooltip: dimensions.map((item)=>item.id),
|
4139
|
-
label: [],
|
4140
|
-
row: [],
|
4141
|
-
column: []
|
4142
|
-
};
|
4177
|
+
const { measures: vseedMeasures = [] } = vseed;
|
4178
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
4179
|
+
const dimensions = getBasicDimensions(vseed);
|
4180
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
4181
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
4182
|
+
const encoding = {};
|
4183
|
+
if (hasDimensionEncoding) bar_generateDimensionEncoding(dimensions, encoding);
|
4184
|
+
else bar_generateDefaultDimensionEncoding(dimensions, encoding);
|
4185
|
+
if (hasMeasureEncoding) bar_generateMeasureEncoding(measures, encoding);
|
4186
|
+
else bar_generateDefaultMeasureEncoding(measures, encoding);
|
4143
4187
|
return {
|
4144
4188
|
...advancedVSeed,
|
4145
|
-
encoding
|
4189
|
+
encoding
|
4146
4190
|
};
|
4147
4191
|
};
|
4192
|
+
const bar_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
4193
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
4194
|
+
encoding.x = unique(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
4195
|
+
};
|
4196
|
+
const bar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
4197
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
4198
|
+
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
4199
|
+
encoding.y = uniqueDimIds.slice(0, 1);
|
4200
|
+
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
4201
|
+
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
4202
|
+
encoding.tooltip = uniqueDimIds;
|
4203
|
+
encoding.label = [];
|
4204
|
+
encoding.row = [];
|
4205
|
+
encoding.column = [];
|
4206
|
+
};
|
4207
|
+
const bar_generateMeasureEncoding = (measures, encoding)=>{
|
4208
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
4209
|
+
encoding.x = unique(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
4210
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
4211
|
+
if (color.length > 0) encoding.color = color;
|
4212
|
+
return encoding;
|
4213
|
+
};
|
4214
|
+
const bar_generateDimensionEncoding = (dimensions, encoding)=>{
|
4215
|
+
encoding.y = unique(dimensions.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
4216
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
4217
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
4218
|
+
if (0 === encoding.y.length) encoding.y = [
|
4219
|
+
dimensions[0].id
|
4220
|
+
];
|
4221
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.y?.includes(item.id)).map((item)=>item.id);
|
4222
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.y?.includes(item.id)).map((item)=>item.id);
|
4223
|
+
};
|
4148
4224
|
const sortYBandAxis = (advancedVSeed, context)=>{
|
4149
4225
|
const result = {
|
4150
4226
|
...advancedVSeed
|
@@ -4163,9 +4239,9 @@ const sortYBandAxis = (advancedVSeed, context)=>{
|
|
4163
4239
|
};
|
4164
4240
|
const barAdvancedPipeline = [
|
4165
4241
|
initAdvancedVSeed_initAdvancedVSeed,
|
4166
|
-
autoMeasures_autoMeasures,
|
4167
|
-
autoDimensions_autoDimensions,
|
4168
4242
|
encodingForBar,
|
4243
|
+
buildMeasures,
|
4244
|
+
autoDimensions_autoDimensions,
|
4169
4245
|
pivotAdapter([
|
4170
4246
|
reshapeWithEncoding
|
4171
4247
|
], [
|
@@ -4516,7 +4592,7 @@ const registerBar = ()=>{
|
|
4516
4592
|
};
|
4517
4593
|
const barParallelAdvancedPipeline = [
|
4518
4594
|
initAdvancedVSeed_initAdvancedVSeed,
|
4519
|
-
|
4595
|
+
buildMeasures,
|
4520
4596
|
autoDimensions_autoDimensions,
|
4521
4597
|
encodingForBar,
|
4522
4598
|
pivotAdapter([
|
@@ -4612,7 +4688,7 @@ const registerBarParallel = ()=>{
|
|
4612
4688
|
};
|
4613
4689
|
const barPercentAdvancedPipeline = [
|
4614
4690
|
initAdvancedVSeed_initAdvancedVSeed,
|
4615
|
-
|
4691
|
+
buildMeasures,
|
4616
4692
|
autoDimensions_autoDimensions,
|
4617
4693
|
encodingForBar,
|
4618
4694
|
pivotAdapter([
|
@@ -4683,9 +4759,9 @@ const registerBarPercent = ()=>{
|
|
4683
4759
|
};
|
4684
4760
|
const areaAdvancedPipeline = [
|
4685
4761
|
initAdvancedVSeed_initAdvancedVSeed,
|
4686
|
-
autoMeasures_autoMeasures,
|
4687
|
-
autoDimensions_autoDimensions,
|
4688
4762
|
encodingForColumn,
|
4763
|
+
buildMeasures,
|
4764
|
+
autoDimensions_autoDimensions,
|
4689
4765
|
pivotAdapter([
|
4690
4766
|
reshapeWithEncoding
|
4691
4767
|
], [
|
@@ -4841,9 +4917,9 @@ const registerArea = ()=>{
|
|
4841
4917
|
};
|
4842
4918
|
const areaPercentAdvancedPipeline = [
|
4843
4919
|
initAdvancedVSeed_initAdvancedVSeed,
|
4844
|
-
autoMeasures_autoMeasures,
|
4845
|
-
autoDimensions_autoDimensions,
|
4846
4920
|
encodingForColumn,
|
4921
|
+
buildMeasures,
|
4922
|
+
autoDimensions_autoDimensions,
|
4847
4923
|
pivotAdapter([
|
4848
4924
|
reshapeWithEncoding
|
4849
4925
|
], [
|
@@ -4917,131 +4993,148 @@ const registerAreaPercent = ()=>{
|
|
4917
4993
|
Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
|
4918
4994
|
Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
|
4919
4995
|
};
|
4920
|
-
const
|
4921
|
-
const
|
4922
|
-
|
4996
|
+
const encodingForScatter = (advancedVSeed, context)=>{
|
4997
|
+
const { vseed } = context;
|
4998
|
+
const { measures: vseedMeasures = [] } = vseed;
|
4999
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
5000
|
+
const dimensions = getBasicDimensions(vseed);
|
5001
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
5002
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
5003
|
+
const encoding = {};
|
5004
|
+
if (hasDimensionEncoding) scatter_generateDimensionEncoding(dimensions, encoding);
|
5005
|
+
else scatter_generateDefaultDimensionEncoding(dimensions, encoding);
|
5006
|
+
if (hasMeasureEncoding) scatter_generateMeasureEncoding(measures, encoding);
|
5007
|
+
else scatter_generateDefaultMeasureEncoding(measures, encoding);
|
5008
|
+
return {
|
5009
|
+
...advancedVSeed,
|
5010
|
+
encoding
|
4923
5011
|
};
|
5012
|
+
};
|
5013
|
+
const scatter_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
5014
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
5015
|
+
encoding.y = unique(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5016
|
+
};
|
5017
|
+
const scatter_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
5018
|
+
const dimensionsWithoutMeasureName = dimensions.filter((item)=>item.id !== MeasureName);
|
5019
|
+
const uniqueDimIds = unique(dimensionsWithoutMeasureName.map((d)=>d.id));
|
5020
|
+
encoding.color = uniqueDimIds.slice(0);
|
5021
|
+
encoding.detail = uniqueDimIds.slice(0);
|
5022
|
+
encoding.tooltip = uniqueDimIds;
|
5023
|
+
encoding.label = [];
|
5024
|
+
encoding.row = [];
|
5025
|
+
encoding.column = [];
|
5026
|
+
};
|
5027
|
+
const scatter_generateMeasureEncoding = (measures, encoding)=>{
|
5028
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
5029
|
+
encoding.y = unique(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5030
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5031
|
+
if (color.length > 0) encoding.color = color;
|
5032
|
+
};
|
5033
|
+
const scatter_generateDimensionEncoding = (dimensions, encoding)=>{
|
5034
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5035
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
5036
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
5037
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
5038
|
+
};
|
5039
|
+
const buildMeasuresForScatter = (advancedVSeed, context)=>{
|
4924
5040
|
const { vseed } = context;
|
4925
|
-
|
4926
|
-
|
4927
|
-
|
4928
|
-
if (scatterMeasures) {
|
4929
|
-
result.measures = scatterMeasuresToMeasureTree(scatterMeasures);
|
4930
|
-
return result;
|
5041
|
+
if (isMeasureTreeWithChildren(vseed)) {
|
5042
|
+
advancedVSeed.measures = vseed.measures;
|
5043
|
+
return advancedVSeed;
|
4931
5044
|
}
|
4932
|
-
if (
|
4933
|
-
|
4934
|
-
return
|
5045
|
+
if (isMeasureTreeWithParentId(vseed)) {
|
5046
|
+
advancedVSeed.measures = buildMeasuresForScatter_generateMeasuresByParentId(vseed.measures);
|
5047
|
+
return advancedVSeed;
|
4935
5048
|
}
|
4936
|
-
const
|
4937
|
-
const
|
4938
|
-
|
4939
|
-
|
4940
|
-
|
4941
|
-
|
4942
|
-
|
4943
|
-
|
4944
|
-
|
4945
|
-
]
|
4946
|
-
|
4947
|
-
|
4948
|
-
|
4949
|
-
|
4950
|
-
|
4951
|
-
|
4952
|
-
|
4953
|
-
|
4954
|
-
|
4955
|
-
|
4956
|
-
|
4957
|
-
else if (newMeasures.length > 1) result.measures = [
|
4958
|
-
{
|
4959
|
-
id: 'primary',
|
4960
|
-
alias: 'primary',
|
4961
|
-
children: newMeasures.slice(0, 1)
|
4962
|
-
},
|
5049
|
+
const basicMeasures = getBasicMeasures(vseed);
|
5050
|
+
const scatterMeasures = vseed.scatterMeasures ? vseed.scatterMeasures : basicMeasuresToScatterMeasures(basicMeasures);
|
5051
|
+
advancedVSeed.measures = scatterMeasuresToMeasureTree(scatterMeasures);
|
5052
|
+
return advancedVSeed;
|
5053
|
+
};
|
5054
|
+
const basicMeasuresToScatterMeasures = (basicMeasures)=>{
|
5055
|
+
const yMeasures = [];
|
5056
|
+
const xMeasures = [];
|
5057
|
+
for(let index = 0; index < basicMeasures.length; index++){
|
5058
|
+
const item = basicMeasures[index];
|
5059
|
+
const encoding = Array.isArray(item.encoding) ? item.encoding : [
|
5060
|
+
item.encoding
|
5061
|
+
];
|
5062
|
+
const isYAxis = encoding.includes('yAxis');
|
5063
|
+
const isXAxis = encoding.includes('xAxis');
|
5064
|
+
if (isYAxis) yMeasures.push(item);
|
5065
|
+
else if (isXAxis) xMeasures.push(item);
|
5066
|
+
else if (0 === index) yMeasures.push(item);
|
5067
|
+
else xMeasures.push(item);
|
5068
|
+
}
|
5069
|
+
return [
|
4963
5070
|
{
|
4964
|
-
id: '
|
4965
|
-
|
4966
|
-
|
5071
|
+
id: 'scatterMeasures',
|
5072
|
+
xMeasures,
|
5073
|
+
yMeasures
|
4967
5074
|
}
|
4968
5075
|
];
|
4969
|
-
return result;
|
4970
5076
|
};
|
4971
5077
|
const scatterMeasuresToMeasureTree = (scatterMeasures)=>{
|
4972
5078
|
const measureTree = scatterMeasures.map((item, index)=>{
|
4973
|
-
const { xMeasures, yMeasures } = item;
|
5079
|
+
const { id, xMeasures, yMeasures } = item;
|
4974
5080
|
const groupChildren = [];
|
4975
|
-
let
|
5081
|
+
let groupId = `${id}-`;
|
4976
5082
|
if (xMeasures) {
|
4977
|
-
const
|
5083
|
+
const arrPrimaryMeasures = Array.isArray(xMeasures) ? xMeasures : [
|
4978
5084
|
xMeasures
|
4979
5085
|
];
|
4980
|
-
const alias =
|
4981
|
-
|
5086
|
+
const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
|
5087
|
+
groupId += alias;
|
4982
5088
|
groupChildren.push({
|
4983
5089
|
id: `${index}-x`,
|
4984
|
-
alias:
|
4985
|
-
children:
|
5090
|
+
alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
|
5091
|
+
children: arrPrimaryMeasures
|
4986
5092
|
});
|
4987
5093
|
}
|
4988
5094
|
if (yMeasures) {
|
4989
|
-
const
|
5095
|
+
const arrSecondaryMeasures = Array.isArray(yMeasures) ? yMeasures : [
|
4990
5096
|
yMeasures
|
4991
5097
|
];
|
4992
|
-
const alias =
|
4993
|
-
|
5098
|
+
const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
|
5099
|
+
groupId += alias;
|
4994
5100
|
groupChildren.push({
|
4995
5101
|
id: `${index}-y`,
|
4996
|
-
alias:
|
4997
|
-
children:
|
5102
|
+
alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
|
5103
|
+
children: arrSecondaryMeasures
|
4998
5104
|
});
|
4999
5105
|
}
|
5000
5106
|
return {
|
5001
|
-
id,
|
5002
|
-
alias:
|
5107
|
+
id: groupId,
|
5108
|
+
alias: groupId,
|
5003
5109
|
children: groupChildren
|
5004
5110
|
};
|
5005
5111
|
});
|
5006
5112
|
if (1 === scatterMeasures.length) return measureTree[0].children || [];
|
5007
5113
|
return measureTree;
|
5008
5114
|
};
|
5009
|
-
const
|
5010
|
-
const
|
5011
|
-
|
5012
|
-
|
5013
|
-
|
5014
|
-
|
5015
|
-
|
5016
|
-
|
5017
|
-
|
5115
|
+
const buildMeasuresForScatter_generateMeasuresByParentId = (measures)=>{
|
5116
|
+
const scatterMeasures = [];
|
5117
|
+
measures.forEach((item)=>{
|
5118
|
+
if (!item.parentId) return;
|
5119
|
+
if (!scatterMeasures.find((d)=>d.id === item.parentId)) scatterMeasures.push({
|
5120
|
+
id: item.parentId,
|
5121
|
+
yMeasures: [],
|
5122
|
+
xMeasures: []
|
5123
|
+
});
|
5124
|
+
const scatterChart = scatterMeasures.find((d)=>d.id === item.parentId);
|
5125
|
+
if (!scatterChart || !Array.isArray(scatterChart.yMeasures) || !Array.isArray(scatterChart.xMeasures)) return;
|
5126
|
+
const encoding = Array.isArray(item.encoding) ? item.encoding : [
|
5127
|
+
item.encoding
|
5018
5128
|
];
|
5019
|
-
const
|
5020
|
-
|
5021
|
-
|
5022
|
-
|
5023
|
-
|
5024
|
-
|
5025
|
-
|
5026
|
-
|
5027
|
-
|
5028
|
-
detail: mergedDetail
|
5029
|
-
}
|
5030
|
-
};
|
5031
|
-
}
|
5032
|
-
const dimensionsWithoutMeasureName = dimensions.filter((item)=>item.id !== MeasureName);
|
5033
|
-
const mergedEncoding = {
|
5034
|
-
color: dimensions.slice(0).map((item)=>item.id),
|
5035
|
-
detail: dimensionsWithoutMeasureName.slice(0).map((item)=>item.id),
|
5036
|
-
tooltip: dimensionsWithoutMeasureName.map((item)=>item.id),
|
5037
|
-
label: [],
|
5038
|
-
row: [],
|
5039
|
-
column: []
|
5040
|
-
};
|
5041
|
-
return {
|
5042
|
-
...advancedVSeed,
|
5043
|
-
encoding: mergedEncoding
|
5044
|
-
};
|
5129
|
+
const isX = encoding.includes('xAxis');
|
5130
|
+
const isY = encoding.includes('yAxis');
|
5131
|
+
const isEmpty = !encoding.length;
|
5132
|
+
if (isY) scatterChart.yMeasures.push(item);
|
5133
|
+
else if (isX) scatterChart.xMeasures.push(item);
|
5134
|
+
else if (isEmpty) if (0 === scatterChart.yMeasures.length) scatterChart.yMeasures.push(item);
|
5135
|
+
else scatterChart.xMeasures.push(item);
|
5136
|
+
});
|
5137
|
+
return scatterMeasuresToMeasureTree(scatterMeasures);
|
5045
5138
|
};
|
5046
5139
|
const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
5047
5140
|
const result = {
|
@@ -5059,18 +5152,20 @@ const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
|
5059
5152
|
const xMeasures = measures[0];
|
5060
5153
|
const yMeasures = measures[1] || xMeasures;
|
5061
5154
|
if (xMeasures && xMeasures.children) {
|
5062
|
-
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
|
5155
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (d)=>d.id), uniqueBy(xMeasures.children, (d)=>d.id), encoding, {
|
5063
5156
|
foldMeasureValue: FoldXMeasureValue,
|
5064
|
-
colorItemAsId: true
|
5157
|
+
colorItemAsId: true,
|
5158
|
+
colorMeasureId: getColorMeasureId(advancedVSeed)
|
5065
5159
|
});
|
5066
5160
|
datasets.push(newDataset);
|
5067
5161
|
foldInfoList.push(foldInfo);
|
5068
5162
|
unfoldInfoList.push(unfoldInfo);
|
5069
5163
|
}
|
5070
5164
|
if (yMeasures && yMeasures.children) {
|
5071
|
-
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(datasets[0], dimensions, yMeasures.children, encoding, {
|
5165
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(datasets[0], uniqueBy(dimensions, (d)=>d.id), uniqueBy(yMeasures.children, (d)=>d.id), encoding, {
|
5072
5166
|
foldMeasureValue: FoldYMeasureValue,
|
5073
|
-
colorItemAsId: true
|
5167
|
+
colorItemAsId: true,
|
5168
|
+
colorMeasureId: getColorMeasureId(advancedVSeed)
|
5074
5169
|
});
|
5075
5170
|
datasets[0] = newDataset;
|
5076
5171
|
foldInfoList.push(foldInfo);
|
@@ -5125,7 +5220,8 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
|
5125
5220
|
if (xMeasures && xMeasures.children) {
|
5126
5221
|
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
|
5127
5222
|
foldMeasureValue: `${FoldXMeasureValue}${index}`,
|
5128
|
-
colorItemAsId: true
|
5223
|
+
colorItemAsId: true,
|
5224
|
+
colorMeasureId: getColorMeasureId(advancedVSeed)
|
5129
5225
|
});
|
5130
5226
|
datasets.push(newDataset);
|
5131
5227
|
foldInfoList.push(foldInfo);
|
@@ -5134,7 +5230,8 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
|
5134
5230
|
if (yMeasures && yMeasures.children) {
|
5135
5231
|
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, yMeasures.children, encoding, {
|
5136
5232
|
foldMeasureValue: `${FoldYMeasureValue}${index}`,
|
5137
|
-
colorItemAsId: true
|
5233
|
+
colorItemAsId: true,
|
5234
|
+
colorMeasureId: getColorMeasureId(advancedVSeed)
|
5138
5235
|
});
|
5139
5236
|
datasets.push(newDataset);
|
5140
5237
|
foldInfoList.push(foldInfo);
|
@@ -5169,9 +5266,9 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
|
5169
5266
|
};
|
5170
5267
|
const scatterAdvancedPipeline = [
|
5171
5268
|
initAdvancedVSeed_initAdvancedVSeed,
|
5172
|
-
autoScatterMeasures,
|
5173
|
-
autoDimensions_autoDimensions,
|
5174
5269
|
encodingForScatter,
|
5270
|
+
buildMeasuresForScatter,
|
5271
|
+
autoDimensions_autoDimensions,
|
5175
5272
|
pivotAdapter([
|
5176
5273
|
reshapeWithScatterEncoding
|
5177
5274
|
], [
|
@@ -5316,68 +5413,104 @@ const registerScatter = ()=>{
|
|
5316
5413
|
Builder._advancedPipelineMap.scatter = scatterAdvancedPipeline;
|
5317
5414
|
Builder._specPipelineMap.scatter = scatterSpecPipeline;
|
5318
5415
|
};
|
5319
|
-
const
|
5320
|
-
const
|
5321
|
-
|
5416
|
+
const encodingForDualAxis = (advancedVSeed, context)=>{
|
5417
|
+
const { vseed } = context;
|
5418
|
+
const { measures: vseedMeasures = [] } = vseed;
|
5419
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
5420
|
+
const dimensions = getBasicDimensions(vseed);
|
5421
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
5422
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
5423
|
+
const encoding = {};
|
5424
|
+
if (hasDimensionEncoding) dualAxis_generateDimensionEncoding(dimensions, encoding);
|
5425
|
+
else dualAxis_generateDefaultDimensionEncoding(dimensions, encoding);
|
5426
|
+
if (hasMeasureEncoding) dualAxis_generateMeasureEncoding(measures, encoding);
|
5427
|
+
else dualAxis_generateDefaultMeasureEncoding(measures, encoding);
|
5428
|
+
return {
|
5429
|
+
...advancedVSeed,
|
5430
|
+
encoding
|
5322
5431
|
};
|
5432
|
+
};
|
5433
|
+
const dualAxis_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
5434
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
5435
|
+
encoding.y = unique(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5436
|
+
};
|
5437
|
+
const dualAxis_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
5438
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
5439
|
+
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
5440
|
+
encoding.x = uniqueDimIds.slice(0, 1);
|
5441
|
+
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
5442
|
+
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
5443
|
+
encoding.tooltip = uniqueDimIds;
|
5444
|
+
encoding.label = [];
|
5445
|
+
encoding.row = [];
|
5446
|
+
encoding.column = [];
|
5447
|
+
};
|
5448
|
+
const dualAxis_generateMeasureEncoding = (measures, encoding)=>{
|
5449
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
5450
|
+
encoding.y = unique(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5451
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5452
|
+
if (color.length > 0) encoding.color = color;
|
5453
|
+
return encoding;
|
5454
|
+
};
|
5455
|
+
const dualAxis_generateDimensionEncoding = (dimensions, encoding)=>{
|
5456
|
+
encoding.x = unique(dimensions.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
5457
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
5458
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
5459
|
+
if (0 === encoding.x.length) encoding.x = [
|
5460
|
+
dimensions[0].id
|
5461
|
+
];
|
5462
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
5463
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
5464
|
+
};
|
5465
|
+
const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
|
5323
5466
|
const { vseed } = context;
|
5324
|
-
|
5325
|
-
|
5326
|
-
|
5327
|
-
if (dualMeasures) {
|
5328
|
-
result.measures = dualMeasuresToMeasureTree(dualMeasures);
|
5329
|
-
return result;
|
5467
|
+
if (isMeasureTreeWithChildren(vseed)) {
|
5468
|
+
advancedVSeed.measures = vseed.measures;
|
5469
|
+
return advancedVSeed;
|
5330
5470
|
}
|
5331
|
-
if (
|
5332
|
-
|
5333
|
-
return
|
5471
|
+
if (isMeasureTreeWithParentId(vseed)) {
|
5472
|
+
advancedVSeed.measures = buildMeasuresForDualAxis_generateMeasuresByParentId(vseed.measures);
|
5473
|
+
return advancedVSeed;
|
5334
5474
|
}
|
5335
|
-
const
|
5336
|
-
const
|
5337
|
-
|
5338
|
-
|
5339
|
-
|
5340
|
-
|
5341
|
-
|
5342
|
-
|
5343
|
-
|
5344
|
-
]
|
5345
|
-
|
5346
|
-
|
5347
|
-
|
5348
|
-
|
5349
|
-
|
5350
|
-
|
5351
|
-
|
5352
|
-
|
5353
|
-
|
5354
|
-
|
5355
|
-
|
5356
|
-
else if (newMeasures.length > 1) result.measures = [
|
5357
|
-
{
|
5358
|
-
id: 'primary',
|
5359
|
-
alias: 'primary',
|
5360
|
-
children: newMeasures.slice(0, 1)
|
5361
|
-
},
|
5475
|
+
const basicMeasures = getBasicMeasures(vseed);
|
5476
|
+
const dualMeasures = vseed.dualMeasures ? vseed.dualMeasures : basicMeasuresToDualMeasures(basicMeasures);
|
5477
|
+
advancedVSeed.measures = dualMeasuresToMeasureTree(dualMeasures);
|
5478
|
+
return advancedVSeed;
|
5479
|
+
};
|
5480
|
+
const basicMeasuresToDualMeasures = (basicMeasures)=>{
|
5481
|
+
const primaryMeasures = [];
|
5482
|
+
const secondaryMeasures = [];
|
5483
|
+
for(let index = 0; index < basicMeasures.length; index++){
|
5484
|
+
const item = basicMeasures[index];
|
5485
|
+
const encoding = Array.isArray(item.encoding) ? item.encoding : [
|
5486
|
+
item.encoding
|
5487
|
+
];
|
5488
|
+
const isPrimaryYAxis = encoding.includes('primaryYAxis');
|
5489
|
+
const isSecondaryYAxis = encoding.includes('secondaryYAxis');
|
5490
|
+
if (isPrimaryYAxis) primaryMeasures.push(item);
|
5491
|
+
else if (isSecondaryYAxis) secondaryMeasures.push(item);
|
5492
|
+
else if (0 === index) primaryMeasures.push(item);
|
5493
|
+
else secondaryMeasures.push(item);
|
5494
|
+
}
|
5495
|
+
return [
|
5362
5496
|
{
|
5363
|
-
id: '
|
5364
|
-
|
5365
|
-
|
5497
|
+
id: 'dualMeasures',
|
5498
|
+
primaryMeasures,
|
5499
|
+
secondaryMeasures
|
5366
5500
|
}
|
5367
5501
|
];
|
5368
|
-
return result;
|
5369
5502
|
};
|
5370
5503
|
const dualMeasuresToMeasureTree = (dualMeasures)=>{
|
5371
5504
|
const measureTree = dualMeasures.map((item, index)=>{
|
5372
|
-
const { primaryMeasures, secondaryMeasures } = item;
|
5505
|
+
const { id, primaryMeasures, secondaryMeasures } = item;
|
5373
5506
|
const groupChildren = [];
|
5374
|
-
let
|
5507
|
+
let groupId = `${id}-`;
|
5375
5508
|
if (primaryMeasures) {
|
5376
5509
|
const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [
|
5377
5510
|
primaryMeasures
|
5378
5511
|
];
|
5379
5512
|
const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
|
5380
|
-
|
5513
|
+
groupId += alias;
|
5381
5514
|
groupChildren.push({
|
5382
5515
|
id: `${index}-primary`,
|
5383
5516
|
alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
|
@@ -5389,7 +5522,7 @@ const dualMeasuresToMeasureTree = (dualMeasures)=>{
|
|
5389
5522
|
secondaryMeasures
|
5390
5523
|
];
|
5391
5524
|
const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
|
5392
|
-
|
5525
|
+
groupId += alias;
|
5393
5526
|
groupChildren.push({
|
5394
5527
|
id: `${index}-secondary`,
|
5395
5528
|
alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
|
@@ -5397,54 +5530,37 @@ const dualMeasuresToMeasureTree = (dualMeasures)=>{
|
|
5397
5530
|
});
|
5398
5531
|
}
|
5399
5532
|
return {
|
5400
|
-
id,
|
5401
|
-
alias:
|
5533
|
+
id: groupId,
|
5534
|
+
alias: groupId,
|
5402
5535
|
children: groupChildren
|
5403
5536
|
};
|
5404
5537
|
});
|
5405
5538
|
if (1 === dualMeasures.length) return measureTree[0].children || [];
|
5406
5539
|
return measureTree;
|
5407
5540
|
};
|
5408
|
-
const
|
5409
|
-
const
|
5410
|
-
|
5411
|
-
|
5412
|
-
|
5413
|
-
|
5414
|
-
|
5415
|
-
|
5416
|
-
|
5417
|
-
const
|
5418
|
-
|
5541
|
+
const buildMeasuresForDualAxis_generateMeasuresByParentId = (measures)=>{
|
5542
|
+
const dualMeasures = [];
|
5543
|
+
measures.forEach((item)=>{
|
5544
|
+
if (!item.parentId) return;
|
5545
|
+
if (!dualMeasures.find((d)=>d.id === item.parentId)) dualMeasures.push({
|
5546
|
+
id: item.parentId,
|
5547
|
+
primaryMeasures: [],
|
5548
|
+
secondaryMeasures: []
|
5549
|
+
});
|
5550
|
+
const dualChart = dualMeasures.find((d)=>d.id === item.parentId);
|
5551
|
+
if (!dualChart || !Array.isArray(dualChart.primaryMeasures) || !Array.isArray(dualChart.secondaryMeasures)) return;
|
5552
|
+
const encoding = Array.isArray(item.encoding) ? item.encoding : [
|
5553
|
+
item.encoding
|
5419
5554
|
];
|
5420
|
-
const
|
5421
|
-
const
|
5422
|
-
|
5423
|
-
|
5424
|
-
|
5425
|
-
|
5426
|
-
|
5427
|
-
|
5428
|
-
|
5429
|
-
x,
|
5430
|
-
color,
|
5431
|
-
detail: mergedDetail
|
5432
|
-
}
|
5433
|
-
};
|
5434
|
-
}
|
5435
|
-
const mergedEncoding = {
|
5436
|
-
x: dimensions.slice(0, 1).map((item)=>item.id),
|
5437
|
-
color: dimensions.slice(1).map((item)=>item.id),
|
5438
|
-
detail: dimensions.slice(1).map((item)=>item.id),
|
5439
|
-
tooltip: dimensions.map((item)=>item.id),
|
5440
|
-
label: [],
|
5441
|
-
row: [],
|
5442
|
-
column: []
|
5443
|
-
};
|
5444
|
-
return {
|
5445
|
-
...advancedVSeed,
|
5446
|
-
encoding: mergedEncoding
|
5447
|
-
};
|
5555
|
+
const isPrimary = encoding.includes('primaryYAxis');
|
5556
|
+
const isSecondary = encoding.includes('secondaryYAxis');
|
5557
|
+
const isEmpty = !item.encoding;
|
5558
|
+
if (isPrimary) dualChart.primaryMeasures.push(item);
|
5559
|
+
else if (isSecondary) dualChart.secondaryMeasures.push(item);
|
5560
|
+
else if (isEmpty) if (0 === dualChart.primaryMeasures.length) dualChart.primaryMeasures.push(item);
|
5561
|
+
else dualChart.secondaryMeasures.push(item);
|
5562
|
+
});
|
5563
|
+
return dualMeasuresToMeasureTree(dualMeasures);
|
5448
5564
|
};
|
5449
5565
|
const reshapeWithDualEncoding = (advancedVSeed, context)=>{
|
5450
5566
|
const result = {
|
@@ -5463,7 +5579,8 @@ const reshapeWithDualEncoding = (advancedVSeed, context)=>{
|
|
5463
5579
|
const secondaryMeasures = measures[1] || [];
|
5464
5580
|
if (primaryMeasures && primaryMeasures.children) {
|
5465
5581
|
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
|
5466
|
-
foldMeasureValue: FoldPrimaryMeasureValue
|
5582
|
+
foldMeasureValue: FoldPrimaryMeasureValue,
|
5583
|
+
colorMeasureId: getColorMeasureId(advancedVSeed)
|
5467
5584
|
});
|
5468
5585
|
datasets.push(newDataset);
|
5469
5586
|
foldInfoList.push(foldInfo);
|
@@ -5471,7 +5588,8 @@ const reshapeWithDualEncoding = (advancedVSeed, context)=>{
|
|
5471
5588
|
}
|
5472
5589
|
if (secondaryMeasures && secondaryMeasures.children) {
|
5473
5590
|
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding, {
|
5474
|
-
foldMeasureValue: FoldSecondaryMeasureValue
|
5591
|
+
foldMeasureValue: FoldSecondaryMeasureValue,
|
5592
|
+
colorMeasureId: getColorMeasureId(advancedVSeed)
|
5475
5593
|
});
|
5476
5594
|
datasets.push(newDataset);
|
5477
5595
|
foldInfoList.push(foldInfo);
|
@@ -5525,7 +5643,8 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
|
|
5525
5643
|
const secondaryMeasures = measures[1] || [];
|
5526
5644
|
if (primaryMeasures && primaryMeasures.children) {
|
5527
5645
|
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
|
5528
|
-
foldMeasureValue: `${FoldPrimaryMeasureValue}${index}
|
5646
|
+
foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,
|
5647
|
+
colorMeasureId: getColorMeasureId(advancedVSeed)
|
5529
5648
|
});
|
5530
5649
|
datasets.push(newDataset);
|
5531
5650
|
foldInfoList.push(foldInfo);
|
@@ -5533,7 +5652,8 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
|
|
5533
5652
|
}
|
5534
5653
|
if (secondaryMeasures && secondaryMeasures.children) {
|
5535
5654
|
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding, {
|
5536
|
-
foldMeasureValue: `${FoldSecondaryMeasureValue}${index}
|
5655
|
+
foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`,
|
5656
|
+
colorMeasureId: getColorMeasureId(advancedVSeed)
|
5537
5657
|
});
|
5538
5658
|
datasets.push(newDataset);
|
5539
5659
|
foldInfoList.push(foldInfo);
|
@@ -5591,9 +5711,9 @@ const dualAxisConfig = (advancedVSeed, context)=>{
|
|
5591
5711
|
};
|
5592
5712
|
const dualAxisAdvancedPipeline = [
|
5593
5713
|
initAdvancedVSeed_initAdvancedVSeed,
|
5594
|
-
autoDualMeasures,
|
5595
|
-
autoDimensions_autoDimensions,
|
5596
5714
|
encodingForDualAxis,
|
5715
|
+
buildMeasuresForDualAxis,
|
5716
|
+
autoDimensions_autoDimensions,
|
5597
5717
|
pivotAdapter([
|
5598
5718
|
reshapeWithDualEncoding
|
5599
5719
|
], [
|
@@ -5678,7 +5798,7 @@ const initDualAxisSecondary = (spec, context)=>{
|
|
5678
5798
|
result.direction = 'vertical';
|
5679
5799
|
result.xField = unfoldInfo.encodingX;
|
5680
5800
|
if (foldInfoList?.[1]) result.yField = foldInfoList[1].measureValue;
|
5681
|
-
result.seriesField = unfoldInfo.encodingColorId;
|
5801
|
+
result.seriesField = isLinearColor(advancedVSeed) ? unfoldInfo.encodingDetail : unfoldInfo.encodingColorId;
|
5682
5802
|
result.animation = true;
|
5683
5803
|
return result;
|
5684
5804
|
};
|
@@ -5896,7 +6016,7 @@ const labelPrimary = (spec, context)=>{
|
|
5896
6016
|
const measure = findMeasureById(measures, id);
|
5897
6017
|
if (!measure) return value;
|
5898
6018
|
const { format = {}, autoFormat = true } = measure;
|
5899
|
-
if (!
|
6019
|
+
if (!external_remeda_isEmpty(format)) {
|
5900
6020
|
const formatter = createFormatter(format);
|
5901
6021
|
return formatter(value);
|
5902
6022
|
}
|
@@ -5932,7 +6052,7 @@ const labelSecondary = (spec, context)=>{
|
|
5932
6052
|
const measure = findMeasureById(measures, id);
|
5933
6053
|
if (!measure) return value;
|
5934
6054
|
const { format = {}, autoFormat = true } = measure;
|
5935
|
-
if (!
|
6055
|
+
if (!external_remeda_isEmpty(format)) {
|
5936
6056
|
const formatter = createFormatter(format);
|
5937
6057
|
return formatter(value);
|
5938
6058
|
}
|
@@ -5988,7 +6108,7 @@ const tooltipPrimary = (spec, context)=>{
|
|
5988
6108
|
const measure = findMeasureById(measures, id);
|
5989
6109
|
if (!measure) return String(value);
|
5990
6110
|
const { format = {}, autoFormat = true } = measure;
|
5991
|
-
if (!
|
6111
|
+
if (!external_remeda_isEmpty(format)) {
|
5992
6112
|
const formatter = createFormatter(format);
|
5993
6113
|
return formatter(value);
|
5994
6114
|
}
|
@@ -6010,7 +6130,7 @@ const tooltipPrimary = (spec, context)=>{
|
|
6010
6130
|
const measure = findMeasureById(measures, id);
|
6011
6131
|
if (!measure) return String(value);
|
6012
6132
|
const { format = {}, autoFormat = true } = measure;
|
6013
|
-
if (!
|
6133
|
+
if (!external_remeda_isEmpty(format)) {
|
6014
6134
|
const formatter = createFormatter(format);
|
6015
6135
|
return formatter(value);
|
6016
6136
|
}
|
@@ -6068,7 +6188,7 @@ const tooltipSecondary = (spec, context)=>{
|
|
6068
6188
|
const measure = findMeasureById(measures, id);
|
6069
6189
|
if (!measure) return String(value);
|
6070
6190
|
const { format = {}, autoFormat = true } = measure;
|
6071
|
-
if (!
|
6191
|
+
if (!external_remeda_isEmpty(format)) {
|
6072
6192
|
const formatter = createFormatter(format);
|
6073
6193
|
return formatter(value);
|
6074
6194
|
}
|
@@ -6090,7 +6210,7 @@ const tooltipSecondary = (spec, context)=>{
|
|
6090
6210
|
const measure = findMeasureById(measures, id);
|
6091
6211
|
if (!measure) return String(value);
|
6092
6212
|
const { format = {}, autoFormat = true } = measure;
|
6093
|
-
if (!
|
6213
|
+
if (!external_remeda_isEmpty(format)) {
|
6094
6214
|
const formatter = createFormatter(format);
|
6095
6215
|
return formatter(value);
|
6096
6216
|
}
|
@@ -6116,7 +6236,7 @@ const yLinearPrimary = (spec, context)=>{
|
|
6116
6236
|
const yAxisConfig = Array.isArray(primaryYAxis) ? primaryYAxis[index] || primaryYAxis[0] : primaryYAxis;
|
6117
6237
|
const alignTicks = advancedVSeed.config?.[chartType]?.alignTicks;
|
6118
6238
|
const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks;
|
6119
|
-
if (foldInfoList?.[0] &&
|
6239
|
+
if (foldInfoList?.[0] && external_remeda_isEmpty(foldInfoList[0].foldMap)) return result;
|
6120
6240
|
const id = `${reshapeInfoId}-primary-axis`;
|
6121
6241
|
const seriesIds = [
|
6122
6242
|
`${reshapeInfoId}-primary-series`,
|
@@ -6304,6 +6424,37 @@ const yLinearSecondary = (spec, context)=>{
|
|
6304
6424
|
];
|
6305
6425
|
return result;
|
6306
6426
|
};
|
6427
|
+
const linearColorForDualAxis = (spec, context)=>{
|
6428
|
+
const result = {
|
6429
|
+
...spec
|
6430
|
+
};
|
6431
|
+
const { advancedVSeed } = context;
|
6432
|
+
const { datasetReshapeInfo, chartType } = advancedVSeed;
|
6433
|
+
const { unfoldInfo, id } = datasetReshapeInfo[0];
|
6434
|
+
const baseConfig = advancedVSeed.config[chartType];
|
6435
|
+
if (!baseConfig || !baseConfig.color) return result;
|
6436
|
+
const { color } = baseConfig;
|
6437
|
+
const { colorScheme, linearColorScheme } = color;
|
6438
|
+
result.color = {
|
6439
|
+
type: 'linear',
|
6440
|
+
range: linearColorScheme || colorScheme || [],
|
6441
|
+
domain: [
|
6442
|
+
{
|
6443
|
+
dataId: `${id}-primary-dataset`,
|
6444
|
+
fields: [
|
6445
|
+
unfoldInfo.encodingColor
|
6446
|
+
]
|
6447
|
+
},
|
6448
|
+
{
|
6449
|
+
dataId: `${id}-secondary-dataset`,
|
6450
|
+
fields: [
|
6451
|
+
unfoldInfo.encodingColor
|
6452
|
+
]
|
6453
|
+
}
|
6454
|
+
]
|
6455
|
+
};
|
6456
|
+
return result;
|
6457
|
+
};
|
6307
6458
|
const dualAxis = [
|
6308
6459
|
seriesDualAxis([
|
6309
6460
|
initDualAxisPrimary,
|
@@ -6312,11 +6463,11 @@ const dualAxis = [
|
|
6312
6463
|
labelPrimary,
|
6313
6464
|
tooltipPrimary,
|
6314
6465
|
progressive,
|
6315
|
-
barStyle_barStyle,
|
6316
|
-
pointStyle_pointStyle,
|
6466
|
+
colorBarStyleFill(barStyle_barStyle),
|
6467
|
+
colorPointStyleFill(pointStyle_pointStyle),
|
6317
6468
|
pointStateDimensionHover,
|
6318
|
-
lineStyle_lineStyle,
|
6319
|
-
areaStyle_areaStyle
|
6469
|
+
colorLineStyleFill(lineStyle_lineStyle),
|
6470
|
+
colorAreaStyleFill(areaStyle_areaStyle)
|
6320
6471
|
], [
|
6321
6472
|
initDualAxisSecondary,
|
6322
6473
|
dualChartTypeSecondary,
|
@@ -6324,18 +6475,18 @@ const dualAxis = [
|
|
6324
6475
|
labelSecondary,
|
6325
6476
|
tooltipSecondary,
|
6326
6477
|
progressive,
|
6327
|
-
barStyle_barStyle,
|
6328
|
-
pointStyle_pointStyle,
|
6478
|
+
colorBarStyleFill(barStyle_barStyle),
|
6479
|
+
colorPointStyleFill(pointStyle_pointStyle),
|
6329
6480
|
pointStateDimensionHover,
|
6330
|
-
lineStyle_lineStyle,
|
6331
|
-
areaStyle_areaStyle
|
6481
|
+
colorLineStyleFill(lineStyle_lineStyle),
|
6482
|
+
colorAreaStyleFill(areaStyle_areaStyle)
|
6332
6483
|
]),
|
6333
6484
|
xBand,
|
6334
6485
|
yLinearPrimary,
|
6335
6486
|
yLinearSecondary,
|
6336
|
-
color_color,
|
6487
|
+
colorAdapter(color_color, linearColorForDualAxis),
|
6488
|
+
colorAdapter(discreteLegend, colorLegend),
|
6337
6489
|
background_backgroundColor,
|
6338
|
-
discreteLegend,
|
6339
6490
|
verticalCrosshairRect,
|
6340
6491
|
annotationPoint_annotationPoint,
|
6341
6492
|
annotationVerticalLine_annotationVerticalLine,
|
@@ -6355,11 +6506,11 @@ const pivotDualAxis = [
|
|
6355
6506
|
labelPrimary,
|
6356
6507
|
tooltipPrimary,
|
6357
6508
|
progressive,
|
6358
|
-
barStyle_barStyle,
|
6359
|
-
pointStyle_pointStyle,
|
6509
|
+
colorBarStyleFill(barStyle_barStyle),
|
6510
|
+
colorPointStyleFill(pointStyle_pointStyle),
|
6360
6511
|
pointStateDimensionHover,
|
6361
|
-
lineStyle_lineStyle,
|
6362
|
-
areaStyle_areaStyle
|
6512
|
+
colorLineStyleFill(lineStyle_lineStyle),
|
6513
|
+
colorAreaStyleFill(areaStyle_areaStyle)
|
6363
6514
|
], [
|
6364
6515
|
initDualAxisSecondary,
|
6365
6516
|
dualChartTypeSecondary,
|
@@ -6367,16 +6518,16 @@ const pivotDualAxis = [
|
|
6367
6518
|
labelSecondary,
|
6368
6519
|
tooltipSecondary,
|
6369
6520
|
progressive,
|
6370
|
-
barStyle_barStyle,
|
6371
|
-
pointStyle_pointStyle,
|
6521
|
+
colorBarStyleFill(barStyle_barStyle),
|
6522
|
+
colorPointStyleFill(pointStyle_pointStyle),
|
6372
6523
|
pointStateDimensionHover,
|
6373
|
-
lineStyle_lineStyle,
|
6374
|
-
areaStyle_areaStyle
|
6524
|
+
colorLineStyleFill(lineStyle_lineStyle),
|
6525
|
+
colorAreaStyleFill(areaStyle_areaStyle)
|
6375
6526
|
]),
|
6376
6527
|
xBand,
|
6377
6528
|
yLinearPrimary,
|
6378
6529
|
yLinearSecondary,
|
6379
|
-
color_color,
|
6530
|
+
colorAdapter(color_color, linearColor),
|
6380
6531
|
background_backgroundColor,
|
6381
6532
|
verticalCrosshairRect,
|
6382
6533
|
annotationPoint_annotationPoint,
|
@@ -6386,7 +6537,7 @@ const pivotDualAxis = [
|
|
6386
6537
|
]),
|
6387
6538
|
pivotRowDimensions,
|
6388
6539
|
pivotColumnDimensions,
|
6389
|
-
pivotDiscreteLegend
|
6540
|
+
colorAdapter(pivotDiscreteLegend, pivotColorLegend)
|
6390
6541
|
];
|
6391
6542
|
const dualAxisSpecPipeline = [
|
6392
6543
|
pivotAdapter_pivotAdapter(dualAxis, pivotDualAxis)
|
@@ -6397,33 +6548,51 @@ const registerDualAxis = ()=>{
|
|
6397
6548
|
};
|
6398
6549
|
const encodingForPie = (advancedVSeed, context)=>{
|
6399
6550
|
const { vseed } = context;
|
6400
|
-
const {
|
6401
|
-
|
6402
|
-
const
|
6403
|
-
|
6404
|
-
|
6405
|
-
|
6406
|
-
|
6407
|
-
|
6408
|
-
|
6409
|
-
|
6410
|
-
color: dimensions.slice(0).map((item)=>item.id),
|
6411
|
-
detail: dimensions.slice(0).map((item)=>item.id),
|
6412
|
-
tooltip: dimensions.map((item)=>item.id),
|
6413
|
-
label: [],
|
6414
|
-
row: [],
|
6415
|
-
column: []
|
6416
|
-
};
|
6551
|
+
const { measures: vseedMeasures = [] } = vseed;
|
6552
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
6553
|
+
const dimensions = getBasicDimensions(vseed);
|
6554
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
6555
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
6556
|
+
const encoding = {};
|
6557
|
+
if (hasDimensionEncoding) pie_generateDimensionEncoding(dimensions, encoding);
|
6558
|
+
else pie_generateDefaultDimensionEncoding(dimensions, encoding);
|
6559
|
+
if (hasMeasureEncoding) pie_generateMeasureEncoding(measures, encoding);
|
6560
|
+
else pie_generateDefaultMeasureEncoding(measures, encoding);
|
6417
6561
|
return {
|
6418
6562
|
...advancedVSeed,
|
6419
|
-
encoding
|
6420
|
-
};
|
6563
|
+
encoding
|
6564
|
+
};
|
6565
|
+
};
|
6566
|
+
const pie_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
6567
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
6568
|
+
encoding.angle = unique(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
|
6569
|
+
};
|
6570
|
+
const pie_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
6571
|
+
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
6572
|
+
encoding.color = uniqueDimIds.slice(0);
|
6573
|
+
encoding.detail = uniqueDimIds.slice(0);
|
6574
|
+
encoding.tooltip = uniqueDimIds;
|
6575
|
+
encoding.label = [];
|
6576
|
+
encoding.row = [];
|
6577
|
+
encoding.column = [];
|
6578
|
+
};
|
6579
|
+
const pie_generateMeasureEncoding = (measures, encoding)=>{
|
6580
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
6581
|
+
encoding.angle = unique(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
|
6582
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
6583
|
+
if (color.length > 0) encoding.color = color;
|
6584
|
+
};
|
6585
|
+
const pie_generateDimensionEncoding = (dimensions, encoding)=>{
|
6586
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
6587
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
6588
|
+
if (0 === encoding.color.length) encoding.color = dimensions.map((item)=>item.id);
|
6589
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
|
6421
6590
|
};
|
6422
6591
|
const pieAdvancedPipeline = [
|
6423
6592
|
initAdvancedVSeed_initAdvancedVSeed,
|
6424
|
-
autoMeasures_autoMeasures,
|
6425
|
-
autoDimensions_autoDimensions,
|
6426
6593
|
encodingForPie,
|
6594
|
+
buildMeasures,
|
6595
|
+
autoDimensions_autoDimensions,
|
6427
6596
|
pivotAdapter([
|
6428
6597
|
reshapeWithEncoding
|
6429
6598
|
], [
|
@@ -6512,7 +6681,7 @@ const registerPie = ()=>{
|
|
6512
6681
|
};
|
6513
6682
|
const donutAdvancedPipeline = [
|
6514
6683
|
initAdvancedVSeed_initAdvancedVSeed,
|
6515
|
-
|
6684
|
+
buildMeasures,
|
6516
6685
|
autoDimensions_autoDimensions,
|
6517
6686
|
encodingForPie,
|
6518
6687
|
pivotAdapter([
|
@@ -6602,51 +6771,57 @@ const registerDonut = ()=>{
|
|
6602
6771
|
};
|
6603
6772
|
const encodingForRose = (advancedVSeed, context)=>{
|
6604
6773
|
const { vseed } = context;
|
6605
|
-
const {
|
6606
|
-
|
6607
|
-
const
|
6608
|
-
|
6609
|
-
|
6610
|
-
|
6611
|
-
|
6612
|
-
|
6613
|
-
|
6614
|
-
|
6615
|
-
const detail = encoding.detail || [];
|
6616
|
-
const mergedDetail = 0 === detail.length ? unique([
|
6617
|
-
...color,
|
6618
|
-
...detail
|
6619
|
-
]) : detail;
|
6620
|
-
return {
|
6621
|
-
...advancedVSeed,
|
6622
|
-
encoding: {
|
6623
|
-
...encoding,
|
6624
|
-
angle,
|
6625
|
-
color,
|
6626
|
-
detail: mergedDetail
|
6627
|
-
}
|
6628
|
-
};
|
6629
|
-
}
|
6630
|
-
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
6631
|
-
const mergedEncoding = {
|
6632
|
-
angle: dimensions.slice(0, 1).map((item)=>item.id),
|
6633
|
-
color: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
6634
|
-
detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
6635
|
-
tooltip: dimensions.map((item)=>item.id),
|
6636
|
-
label: [],
|
6637
|
-
row: [],
|
6638
|
-
column: []
|
6639
|
-
};
|
6774
|
+
const { measures: vseedMeasures = [] } = vseed;
|
6775
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
6776
|
+
const dimensions = getBasicDimensions(vseed);
|
6777
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
6778
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
6779
|
+
const encoding = {};
|
6780
|
+
if (hasDimensionEncoding) rose_generateDimensionEncoding(dimensions, encoding);
|
6781
|
+
else rose_generateDefaultDimensionEncoding(dimensions, encoding);
|
6782
|
+
if (hasMeasureEncoding) rose_generateMeasureEncoding(measures, encoding);
|
6783
|
+
else rose_generateDefaultMeasureEncoding(measures, encoding);
|
6640
6784
|
return {
|
6641
6785
|
...advancedVSeed,
|
6642
|
-
encoding
|
6786
|
+
encoding
|
6643
6787
|
};
|
6644
6788
|
};
|
6789
|
+
const rose_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
6790
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
6791
|
+
encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
6792
|
+
};
|
6793
|
+
const rose_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
6794
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
6795
|
+
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
6796
|
+
encoding.angle = uniqueDimIds.slice(0, 1);
|
6797
|
+
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
6798
|
+
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
6799
|
+
encoding.tooltip = uniqueDimIds;
|
6800
|
+
encoding.label = [];
|
6801
|
+
encoding.row = [];
|
6802
|
+
encoding.column = [];
|
6803
|
+
};
|
6804
|
+
const rose_generateMeasureEncoding = (measures, encoding)=>{
|
6805
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
6806
|
+
encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
6807
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
6808
|
+
if (color.length > 0) encoding.color = color;
|
6809
|
+
};
|
6810
|
+
const rose_generateDimensionEncoding = (dimensions, encoding)=>{
|
6811
|
+
encoding.angle = unique(dimensions.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
|
6812
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
6813
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
6814
|
+
if (0 === encoding.angle.length) encoding.angle = [
|
6815
|
+
dimensions[0].id
|
6816
|
+
];
|
6817
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
|
6818
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
|
6819
|
+
};
|
6645
6820
|
const roseAdvancedPipeline = [
|
6646
6821
|
initAdvancedVSeed_initAdvancedVSeed,
|
6647
|
-
autoMeasures_autoMeasures,
|
6648
|
-
autoDimensions_autoDimensions,
|
6649
6822
|
encodingForRose,
|
6823
|
+
buildMeasures,
|
6824
|
+
autoDimensions_autoDimensions,
|
6650
6825
|
pivotAdapter([
|
6651
6826
|
reshapeWithEncoding
|
6652
6827
|
], [
|
@@ -6813,9 +6988,9 @@ const registerRose = ()=>{
|
|
6813
6988
|
};
|
6814
6989
|
const roseParallelAdvancedPipeline = [
|
6815
6990
|
initAdvancedVSeed_initAdvancedVSeed,
|
6816
|
-
autoMeasures_autoMeasures,
|
6817
|
-
autoDimensions_autoDimensions,
|
6818
6991
|
encodingForRose,
|
6992
|
+
buildMeasures,
|
6993
|
+
autoDimensions_autoDimensions,
|
6819
6994
|
pivotAdapter([
|
6820
6995
|
reshapeWithEncoding
|
6821
6996
|
], [
|
@@ -6921,50 +7096,57 @@ const registerRoseParallel = ()=>{
|
|
6921
7096
|
};
|
6922
7097
|
const encodingForRadar = (advancedVSeed, context)=>{
|
6923
7098
|
const { vseed } = context;
|
6924
|
-
const {
|
6925
|
-
|
6926
|
-
const
|
6927
|
-
|
6928
|
-
|
6929
|
-
|
6930
|
-
|
6931
|
-
|
6932
|
-
|
6933
|
-
|
6934
|
-
const detail = encoding.detail || [];
|
6935
|
-
const mergedDetail = 0 === detail.length ? unique([
|
6936
|
-
...color,
|
6937
|
-
...detail
|
6938
|
-
]) : detail;
|
6939
|
-
return {
|
6940
|
-
...advancedVSeed,
|
6941
|
-
encoding: {
|
6942
|
-
...encoding,
|
6943
|
-
angle,
|
6944
|
-
color,
|
6945
|
-
detail: mergedDetail
|
6946
|
-
}
|
6947
|
-
};
|
6948
|
-
}
|
6949
|
-
const mergedEncoding = {
|
6950
|
-
angle: dimensions.slice(0, 1).map((item)=>item.id),
|
6951
|
-
color: dimensions.slice(1).map((item)=>item.id),
|
6952
|
-
detail: dimensions.slice(1).map((item)=>item.id),
|
6953
|
-
tooltip: dimensions.map((item)=>item.id),
|
6954
|
-
label: [],
|
6955
|
-
row: [],
|
6956
|
-
column: []
|
6957
|
-
};
|
7099
|
+
const { measures: vseedMeasures = [] } = vseed;
|
7100
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7101
|
+
const dimensions = getBasicDimensions(vseed);
|
7102
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7103
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7104
|
+
const encoding = {};
|
7105
|
+
if (hasDimensionEncoding) radar_generateDimensionEncoding(dimensions, encoding);
|
7106
|
+
else radar_generateDefaultDimensionEncoding(dimensions, encoding);
|
7107
|
+
if (hasMeasureEncoding) radar_generateMeasureEncoding(measures, encoding);
|
7108
|
+
else radar_generateDefaultMeasureEncoding(measures, encoding);
|
6958
7109
|
return {
|
6959
7110
|
...advancedVSeed,
|
6960
|
-
encoding
|
7111
|
+
encoding
|
6961
7112
|
};
|
6962
7113
|
};
|
7114
|
+
const radar_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
7115
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
7116
|
+
encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
7117
|
+
};
|
7118
|
+
const radar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
7119
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
7120
|
+
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
7121
|
+
encoding.angle = uniqueDimIds.slice(0, 1);
|
7122
|
+
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
7123
|
+
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
7124
|
+
encoding.tooltip = uniqueDimIds;
|
7125
|
+
encoding.label = [];
|
7126
|
+
encoding.row = [];
|
7127
|
+
encoding.column = [];
|
7128
|
+
};
|
7129
|
+
const radar_generateMeasureEncoding = (measures, encoding)=>{
|
7130
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
7131
|
+
encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
7132
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7133
|
+
if (color.length > 0) encoding.color = color;
|
7134
|
+
};
|
7135
|
+
const radar_generateDimensionEncoding = (dimensions, encoding)=>{
|
7136
|
+
encoding.angle = unique(dimensions.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
|
7137
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7138
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
7139
|
+
if (0 === encoding.angle.length) encoding.angle = [
|
7140
|
+
dimensions[0].id
|
7141
|
+
];
|
7142
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
|
7143
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
|
7144
|
+
};
|
6963
7145
|
const radarAdvancedPipeline = [
|
6964
7146
|
initAdvancedVSeed_initAdvancedVSeed,
|
6965
|
-
autoMeasures_autoMeasures,
|
6966
|
-
autoDimensions_autoDimensions,
|
6967
7147
|
encodingForRadar,
|
7148
|
+
buildMeasures,
|
7149
|
+
autoDimensions_autoDimensions,
|
6968
7150
|
pivotAdapter([
|
6969
7151
|
reshapeWithEncoding
|
6970
7152
|
], [
|
@@ -7100,33 +7282,51 @@ const registerRadar = ()=>{
|
|
7100
7282
|
};
|
7101
7283
|
const encodingForFunnel = (advancedVSeed, context)=>{
|
7102
7284
|
const { vseed } = context;
|
7103
|
-
const {
|
7104
|
-
|
7105
|
-
const
|
7106
|
-
|
7107
|
-
|
7108
|
-
|
7109
|
-
|
7110
|
-
|
7111
|
-
|
7112
|
-
|
7113
|
-
color: dimensions.slice(0).map((item)=>item.id),
|
7114
|
-
detail: dimensions.slice(0).map((item)=>item.id),
|
7115
|
-
tooltip: dimensions.map((item)=>item.id),
|
7116
|
-
label: [],
|
7117
|
-
row: [],
|
7118
|
-
column: []
|
7119
|
-
};
|
7285
|
+
const { measures: vseedMeasures = [] } = vseed;
|
7286
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7287
|
+
const dimensions = getBasicDimensions(vseed);
|
7288
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7289
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7290
|
+
const encoding = {};
|
7291
|
+
if (hasDimensionEncoding) funnel_generateDimensionEncoding(dimensions, encoding);
|
7292
|
+
else funnel_generateDefaultDimensionEncoding(dimensions, encoding);
|
7293
|
+
if (hasMeasureEncoding) funnel_generateMeasureEncoding(measures, encoding);
|
7294
|
+
else funnel_generateDefaultMeasureEncoding(measures, encoding);
|
7120
7295
|
return {
|
7121
7296
|
...advancedVSeed,
|
7122
|
-
encoding
|
7123
|
-
};
|
7297
|
+
encoding
|
7298
|
+
};
|
7299
|
+
};
|
7300
|
+
const funnel_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
7301
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
7302
|
+
encoding.size = unique(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
|
7303
|
+
};
|
7304
|
+
const funnel_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
7305
|
+
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
7306
|
+
encoding.color = uniqueDimIds.slice(0);
|
7307
|
+
encoding.detail = uniqueDimIds.slice(0);
|
7308
|
+
encoding.tooltip = uniqueDimIds;
|
7309
|
+
encoding.label = [];
|
7310
|
+
encoding.row = [];
|
7311
|
+
encoding.column = [];
|
7312
|
+
};
|
7313
|
+
const funnel_generateMeasureEncoding = (measures, encoding)=>{
|
7314
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
7315
|
+
encoding.size = unique(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
|
7316
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7317
|
+
if (color.length > 0) encoding.color = color;
|
7318
|
+
};
|
7319
|
+
const funnel_generateDimensionEncoding = (dimensions, encoding)=>{
|
7320
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7321
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
7322
|
+
if (0 === encoding.color.length) encoding.color = dimensions.map((item)=>item.id);
|
7323
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
|
7124
7324
|
};
|
7125
7325
|
const funnelAdvancedPipeline = [
|
7126
7326
|
initAdvancedVSeed_initAdvancedVSeed,
|
7127
|
-
autoMeasures_autoMeasures,
|
7128
|
-
autoDimensions_autoDimensions,
|
7129
7327
|
encodingForFunnel,
|
7328
|
+
buildMeasures,
|
7329
|
+
autoDimensions_autoDimensions,
|
7130
7330
|
pivotAdapter([
|
7131
7331
|
reshapeWithEncoding
|
7132
7332
|
], [
|
@@ -7219,45 +7419,61 @@ const registerFunnel = ()=>{
|
|
7219
7419
|
};
|
7220
7420
|
const encodingForHeatmap = (advancedVSeed, context)=>{
|
7221
7421
|
const { vseed } = context;
|
7222
|
-
const {
|
7223
|
-
|
7224
|
-
const
|
7225
|
-
|
7226
|
-
|
7227
|
-
|
7228
|
-
|
7229
|
-
|
7230
|
-
|
7231
|
-
|
7232
|
-
return {
|
7233
|
-
...advancedVSeed,
|
7234
|
-
encoding: {
|
7235
|
-
x,
|
7236
|
-
y,
|
7237
|
-
...encoding
|
7238
|
-
}
|
7239
|
-
};
|
7240
|
-
}
|
7241
|
-
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
7242
|
-
const mergedEncoding = {
|
7243
|
-
x: dimensions.slice(0, 1).map((item)=>item.id),
|
7244
|
-
y: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
7245
|
-
color: dimensions.slice(0).map((item)=>item.id),
|
7246
|
-
tooltip: dimensions.map((item)=>item.id),
|
7247
|
-
label: [],
|
7248
|
-
row: [],
|
7249
|
-
column: []
|
7250
|
-
};
|
7422
|
+
const { measures: vseedMeasures = [] } = vseed;
|
7423
|
+
const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
|
7424
|
+
const dimensions = getBasicDimensions(vseed);
|
7425
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
7426
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
7427
|
+
const encoding = {};
|
7428
|
+
if (hasDimensionEncoding) heatmap_generateDimensionEncoding(dimensions, encoding);
|
7429
|
+
else heatmap_generateDefaultDimensionEncoding(dimensions, encoding);
|
7430
|
+
if (hasMeasureEncoding) heatmap_generateMeasureEncoding(measures, encoding);
|
7431
|
+
else heatmap_generateDefaultMeasureEncoding(measures, encoding);
|
7251
7432
|
return {
|
7252
7433
|
...advancedVSeed,
|
7253
|
-
encoding
|
7434
|
+
encoding
|
7254
7435
|
};
|
7255
7436
|
};
|
7437
|
+
const heatmap_generateDefaultMeasureEncoding = (measures, encoding)=>{
|
7438
|
+
encoding.tooltip = unique(measures.map((item)=>item.id));
|
7439
|
+
encoding.color = unique(measures.filter((item)=>'color' === item.encoding || !item.encoding).map((item)=>item.id));
|
7440
|
+
};
|
7441
|
+
const heatmap_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
7442
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
7443
|
+
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
7444
|
+
encoding.x = uniqueDimIds.slice(0, 1);
|
7445
|
+
encoding.y = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
7446
|
+
encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
7447
|
+
encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
|
7448
|
+
encoding.tooltip = uniqueDimIds;
|
7449
|
+
encoding.label = [];
|
7450
|
+
encoding.row = [];
|
7451
|
+
encoding.column = [];
|
7452
|
+
};
|
7453
|
+
const heatmap_generateMeasureEncoding = (measures, encoding)=>{
|
7454
|
+
encoding.tooltip = measures.map((item)=>item.id);
|
7455
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7456
|
+
if (color.length > 0) encoding.color = color;
|
7457
|
+
return encoding;
|
7458
|
+
};
|
7459
|
+
const heatmap_generateDimensionEncoding = (dimensions, encoding)=>{
|
7460
|
+
encoding.x = unique(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
|
7461
|
+
encoding.y = unique(dimensions.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
|
7462
|
+
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
7463
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
7464
|
+
if (0 === encoding.x.length) encoding.x = [
|
7465
|
+
dimensions[0].id
|
7466
|
+
];
|
7467
|
+
if (0 === encoding.y.length) if (dimensions.length > 1) encoding.y = dimensions.slice(1).map((item)=>item.id);
|
7468
|
+
else encoding.y = dimensions.slice(0).map((item)=>item.id);
|
7469
|
+
if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
7470
|
+
if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
|
7471
|
+
};
|
7256
7472
|
const heatmapAdvancedPipeline = [
|
7257
7473
|
initAdvancedVSeed_initAdvancedVSeed,
|
7258
|
-
autoMeasures_autoMeasures,
|
7259
|
-
autoDimensions_autoDimensions,
|
7260
7474
|
encodingForHeatmap,
|
7475
|
+
buildMeasures,
|
7476
|
+
autoDimensions_autoDimensions,
|
7261
7477
|
pivotAdapter([
|
7262
7478
|
reshapeWithEncoding
|
7263
7479
|
], [
|
@@ -8077,7 +8293,18 @@ const zDimension = z.object({
|
|
8077
8293
|
'dimension',
|
8078
8294
|
'rowDimension',
|
8079
8295
|
'columnDimension'
|
8080
|
-
]).default('dimension')
|
8296
|
+
]).default('dimension'),
|
8297
|
+
encoding: z["enum"]([
|
8298
|
+
'xAxis',
|
8299
|
+
'yAxis',
|
8300
|
+
'angle',
|
8301
|
+
'color',
|
8302
|
+
'detail',
|
8303
|
+
'tooltip',
|
8304
|
+
'label',
|
8305
|
+
'row',
|
8306
|
+
'column'
|
8307
|
+
]).optional()
|
8081
8308
|
});
|
8082
8309
|
const zDimensionGroup = z.object({
|
8083
8310
|
id: z.string(),
|
@@ -8122,7 +8349,20 @@ const zMeasure = z.object({
|
|
8122
8349
|
id: z.string(),
|
8123
8350
|
alias: z.string().optional(),
|
8124
8351
|
autoFormat: z.boolean().default(true),
|
8125
|
-
format: zNumFormat["default"]({})
|
8352
|
+
format: zNumFormat["default"]({}),
|
8353
|
+
encoding: z["enum"]([
|
8354
|
+
'primaryYAxis',
|
8355
|
+
'secondaryYAxis',
|
8356
|
+
'xAxis',
|
8357
|
+
'yAxis',
|
8358
|
+
'angle',
|
8359
|
+
'radius',
|
8360
|
+
'size',
|
8361
|
+
'color',
|
8362
|
+
'label',
|
8363
|
+
'tooltip'
|
8364
|
+
]).optional(),
|
8365
|
+
parentId: z.string().optional()
|
8126
8366
|
});
|
8127
8367
|
const zMeasureGroup = z.object({
|
8128
8368
|
id: z.string(),
|
@@ -8184,7 +8424,6 @@ const zEncoding = z.object({
|
|
8184
8424
|
column: z.array(z.string()).nullish(),
|
8185
8425
|
group: z.array(z.string()).nullish().describe("\u5DF2\u5F03\u7528, \u8BF7\u4F7F\u7528\u989C\u8272\u66FF\u4EE3")
|
8186
8426
|
});
|
8187
|
-
const zEncodings = z.array(zEncoding);
|
8188
8427
|
const zXBandAxis = z.object({
|
8189
8428
|
visible: z.boolean().default(true).nullish(),
|
8190
8429
|
labelAutoHide: z.boolean().default(true).nullish(),
|
@@ -9327,7 +9566,6 @@ const zAdvancedVSeed = z.object({
|
|
9327
9566
|
dimensions: zDimensionTree,
|
9328
9567
|
measures: zMeasureTree,
|
9329
9568
|
encoding: zEncoding,
|
9330
|
-
encodings: zEncodings,
|
9331
9569
|
config: zConfig,
|
9332
9570
|
analysis: zAnalysis,
|
9333
9571
|
theme: zTheme,
|
@@ -9336,6 +9574,6 @@ const zAdvancedVSeed = z.object({
|
|
9336
9574
|
annotation: zAnnotation,
|
9337
9575
|
locale: zLocale
|
9338
9576
|
});
|
9339
|
-
export { AngleEncoding, Builder, ColorEncoding, ColorIdEncoding, DetailEncoding, FoldMeasureId, FoldMeasureName, FoldMeasureValue, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue, FoldXMeasureValue, FoldYMeasureValue, MeasureName, ORIGINAL_DATA, Separator, XEncoding, YEncoding, areaAdvancedPipeline, areaPercentAdvancedPipeline, areaPercentSpecPipeline, areaSpecPipeline, autoFormatter, autoNumFormatter, barAdvancedPipeline, barParallelAdvancedPipeline, barParallelSpecPipeline, barPercentAdvancedPipeline, barPercentSpecPipeline, barSpecPipeline, columnAdvancedPipeline, columnParallelAdvancedPipeline, columnParallelSpecPipeline, columnPercentAdvancedPipeline, columnPercentSpecPipeline, columnSpecPipeline, createFormatter, createNumFormatter, darkTheme, dataReshapeByEncoding, donutAdvancedPipeline, donutSpecPipeline, dualAxisAdvancedPipeline, dualAxisSpecPipeline, execPipeline, findAllDimensions, findAllMeasures, findFirstMeasure, findMeasureById, foldMeasures, funnelAdvancedPipeline, funnelSpecPipeline, heatmapAdvancedPipeline, heatmapSpecPipeline, i18n, intl, isDimensionSelector, isMeasure, isMeasureGroup, isMeasureSelector, isMeasures, isPartialDatumSelector, isPivotChart, isPivotTable, isTable, isVChart, isVTable, isValueSelector, lightTheme, lineAdvancedPipeline, lineSpecPipeline, measureDepth, pieAdvancedPipeline, pieSpecPipeline, pivotTableAdvancedPipeline, pivotTableSpecPipeline, preorderTraverse, radarAdvancedPipeline, radarSpecPipeline, registerAll, registerArea, registerAreaPercent, registerBar, registerBarParallel, registerBarPercent, registerColumn, registerColumnParallel, registerColumnPercent, registerCustomTheme, registerDarkTheme, registerDonut, registerFunnel, registerHeatmap, registerLightTheme, registerLine, registerPie, registerPivotTable, registerRadar, registerRose, registerRoseParallel, registerScatter, registerTable, roseAdvancedPipeline, roseParallelAdvancedPipeline, roseParallelSpecPipeline, roseSpecPipeline, scatterAdvancedPipeline, scatterSpecPipeline, selector_selector as selector, tableAdvancedPipeline, tableSpecPipeline, unfoldDimensions, updateAdvanced, updateSpec, zAdvancedVSeed, zAnalysis, zAnnotation, zAnnotationArea, zAnnotationHorizontalLine, zAnnotationPoint, zAnnotationVerticalLine, zArea, zAreaConfig, zAreaPercent, zAreaPercentConfig, zAreaStyle, zAxis, zBackgroundColor, zBar, zBarConfig, zBarParallel, zBarParallelConfig, zBarPercent, zBarPercentConfig, zBarStyle, zChartType, zColor, zColorLegend, zColumn, zColumnConfig, zColumnParallel, zColumnParallelConfig, zColumnPercent, zColumnPercentConfig, zConfig, zCrosshairLine, zCrosshairRect, zCustomTheme, zCustomThemeConfig, zDataset, zDatasetReshapeInfo, zDatum, zDimension, zDimensionGroup, zDimensionTree, zDimensions, zDonut, zDonutConfig, zDualAxis, zDualAxisConfig, zDualChartType, zDualMeasure, zDualMeasures, zEncoding,
|
9577
|
+
export { AngleEncoding, Builder, ColorEncoding, ColorIdEncoding, DetailEncoding, FoldMeasureId, FoldMeasureName, FoldMeasureValue, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue, FoldXMeasureValue, FoldYMeasureValue, MeasureName, ORIGINAL_DATA, Separator, XEncoding, YEncoding, areaAdvancedPipeline, areaPercentAdvancedPipeline, areaPercentSpecPipeline, areaSpecPipeline, autoFormatter, autoNumFormatter, barAdvancedPipeline, barParallelAdvancedPipeline, barParallelSpecPipeline, barPercentAdvancedPipeline, barPercentSpecPipeline, barSpecPipeline, columnAdvancedPipeline, columnParallelAdvancedPipeline, columnParallelSpecPipeline, columnPercentAdvancedPipeline, columnPercentSpecPipeline, columnSpecPipeline, createFormatter, createNumFormatter, darkTheme, dataReshapeByEncoding, donutAdvancedPipeline, donutSpecPipeline, dualAxisAdvancedPipeline, dualAxisSpecPipeline, execPipeline, findAllDimensions, findAllMeasures, findFirstMeasure, findMeasureById, foldMeasures, funnelAdvancedPipeline, funnelSpecPipeline, heatmapAdvancedPipeline, heatmapSpecPipeline, i18n, intl, isDimensionSelector, isMeasure, isMeasureGroup, isMeasureSelector, isMeasures, isPartialDatumSelector, isPivotChart, isPivotTable, isTable, isVChart, isVTable, isValueSelector, lightTheme, lineAdvancedPipeline, lineSpecPipeline, measureDepth, pieAdvancedPipeline, pieSpecPipeline, pivotTableAdvancedPipeline, pivotTableSpecPipeline, preorderTraverse, radarAdvancedPipeline, radarSpecPipeline, registerAll, registerArea, registerAreaPercent, registerBar, registerBarParallel, registerBarPercent, registerColumn, registerColumnParallel, registerColumnPercent, registerCustomTheme, registerDarkTheme, registerDonut, registerFunnel, registerHeatmap, registerLightTheme, registerLine, registerPie, registerPivotTable, registerRadar, registerRose, registerRoseParallel, registerScatter, registerTable, roseAdvancedPipeline, roseParallelAdvancedPipeline, roseParallelSpecPipeline, roseSpecPipeline, scatterAdvancedPipeline, scatterSpecPipeline, selector_selector as selector, tableAdvancedPipeline, tableSpecPipeline, unfoldDimensions, updateAdvanced, updateSpec, zAdvancedVSeed, zAnalysis, zAnnotation, zAnnotationArea, zAnnotationHorizontalLine, zAnnotationPoint, zAnnotationVerticalLine, zArea, zAreaConfig, zAreaPercent, zAreaPercentConfig, zAreaStyle, zAxis, zBackgroundColor, zBar, zBarConfig, zBarParallel, zBarParallelConfig, zBarPercent, zBarPercentConfig, zBarStyle, zChartType, zColor, zColorLegend, zColumn, zColumnConfig, zColumnParallel, zColumnParallelConfig, zColumnPercent, zColumnPercentConfig, zConfig, zCrosshairLine, zCrosshairRect, zCustomTheme, zCustomThemeConfig, zDataset, zDatasetReshapeInfo, zDatum, zDimension, zDimensionGroup, zDimensionTree, zDimensions, zDonut, zDonutConfig, zDualAxis, zDualAxisConfig, zDualChartType, zDualMeasure, zDualMeasures, zEncoding, zFoldInfo, zFunnel, zFunnelConfig, zHeatmap, zHeatmapConfig, zLabel, zLegend, zLine, zLineConfig, zLineStyle, zLinearColor, zLocale, zMarkStyle, zMeasure, zMeasureGroup, zMeasureTree, zMeasures, zNumFormat, zPie, zPieConfig, zPivotTable, zPivotTableConfig, zPointStyle, zRadar, zRadarConfig, zRose, zRoseConfig, zRoseParallel, zRoseParallelConfig, zScatter, zScatterConfig, zScatterMeasure, zScatterMeasures, zSort, zSortLegend, zStackCornerRadius, zTable, zTableConfig, zTheme, zTooltip, zUnfoldInfo, zVSeed, zXBandAxis, zXLinearAxis, zYBandAxis, zYLinearAxis };
|
9340
9578
|
|
9341
9579
|
//# sourceMappingURL=index.js.map
|