@gingkoo/pandora-metabase 1.0.117 → 1.0.119
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/lib/cjs/common/Portal/index.js +0 -2
- package/lib/cjs/common/SplitView/index.d.ts +0 -4
- package/lib/cjs/common/SplitView/index.js +0 -10
- package/lib/cjs/components/dialog/custom-column/config.js +4 -48
- package/lib/cjs/components/dialog/custom-column/expression-editor.js +3 -14
- package/lib/cjs/components/dialog/custom-column/expressions/suggest.d.ts +2 -34
- package/lib/cjs/components/dialog/custom-column/expressions/suggest.js +2 -43
- package/lib/cjs/components/dialog/custom-column/expressions/tokenizer.js +8 -65
- package/lib/cjs/components/dialog/custom-column/index.js +2 -4
- package/lib/cjs/components/dialog/custom-column/tokenized-expression.js +2 -3
- package/lib/cjs/components/dialog/custom-column/tokenizedI-input.js +1 -1
- package/lib/cjs/components/dialog/custom-editor/index.js +2 -7
- package/lib/cjs/components/dialog/diff-viewer/index copy.js +1 -16
- package/lib/cjs/components/dialog/expression/date-format-picker.js +2 -20
- package/lib/cjs/components/dialog/expression/date-format.js +2 -8
- package/lib/cjs/components/dialog/expression/index.d.ts +0 -3
- package/lib/cjs/components/dialog/expression/index.js +2 -83
- package/lib/cjs/components/dialog/formula/index.js +1 -30
- package/lib/cjs/components/dialog/formula/utils.js +2 -10
- package/lib/cjs/components/dialog/formula-list/CaseWhenGroup.d.ts +19 -0
- package/lib/cjs/components/dialog/formula-list/CaseWhenGroup.js +109 -0
- package/lib/cjs/components/dialog/formula-list/LogicGroup.d.ts +9 -0
- package/lib/cjs/components/dialog/formula-list/LogicGroup.js +43 -0
- package/lib/cjs/components/dialog/formula-list/index.d.ts +3 -0
- package/lib/cjs/components/dialog/formula-list/index.js +966 -509
- package/lib/cjs/components/dialog/formula-list/index.less +724 -0
- package/lib/cjs/components/dialog/formula-list/utils.d.ts +0 -7
- package/lib/cjs/components/dialog/formula-list/utils.js +117 -112
- package/lib/cjs/components/dialog/select-column/index.d.ts +0 -6
- package/lib/cjs/components/dialog/select-column/index.js +4 -15
- package/lib/cjs/components/dialog/select-column-multiple/index.d.ts +0 -8
- package/lib/cjs/components/dialog/select-column-multiple/index.js +6 -45
- package/lib/cjs/components/dialog/select-join/index.d.ts +0 -5
- package/lib/cjs/components/dialog/select-join/index.js +0 -6
- package/lib/cjs/components/dialog/select-join-column/index.d.ts +0 -8
- package/lib/cjs/components/dialog/select-join-column/index.js +7 -21
- package/lib/cjs/components/dialog/select-join-column-multiple/index.d.ts +0 -8
- package/lib/cjs/components/dialog/select-join-column-multiple/index.js +5 -35
- package/lib/cjs/components/dialog/select-permission-table/index.d.ts +0 -5
- package/lib/cjs/components/dialog/select-permission-table/index.js +0 -6
- package/lib/cjs/components/dialog/select-summarize/index.d.ts +3 -3
- package/lib/cjs/components/dialog/select-summarize/index.js +105 -18
- package/lib/cjs/components/dialog/select-summarize/index.less +23 -0
- package/lib/cjs/components/dialog/select-table/index.d.ts +0 -6
- package/lib/cjs/components/dialog/select-table/index.js +1 -9
- package/lib/cjs/components/metabase/index.js +72 -86
- package/lib/cjs/components/metabase/index.less +14 -7
- package/lib/cjs/components/modules/components/Wrapper.js +1 -1
- package/lib/cjs/components/modules/components/header.js +2 -2
- package/lib/cjs/components/modules/components/meta-icon.d.ts +0 -3
- package/lib/cjs/components/modules/components/meta-icon.js +2 -47
- package/lib/cjs/components/modules/custom-column.js +3 -29
- package/lib/cjs/components/modules/enum/filter-enum.js +9 -88
- package/lib/cjs/components/modules/filter.js +2 -20
- package/lib/cjs/components/modules/index.d.ts +4 -2
- package/lib/cjs/components/modules/index.js +24 -1
- package/lib/cjs/components/modules/join-data.js +13 -291
- package/lib/cjs/components/modules/row-limit.js +0 -1
- package/lib/cjs/components/modules/sort.js +1 -61
- package/lib/cjs/components/modules/summarize/group-by.d.ts +0 -5
- package/lib/cjs/components/modules/summarize/group-by.js +231 -76
- package/lib/cjs/components/modules/summarize/select-index.js +96 -46
- package/lib/cjs/components/modules/table-data.js +11 -64
- package/lib/cjs/components/popup.js +26 -32
- package/lib/cjs/hooks/patch.d.ts +1 -0
- package/lib/cjs/hooks/patch.js +104 -6
- package/lib/cjs/hooks/patch2.js +3 -165
- package/lib/cjs/hooks/use-provider.js +0 -3
- package/lib/cjs/hooks/use-state.js +55 -135
- package/lib/cjs/index.js +0 -15
- package/lib/cjs/locale/en.js +5 -0
- package/lib/cjs/locale/index.js +1 -4
- package/lib/cjs/locale/zh.js +5 -0
- package/lib/cjs/sql-formula.js +0 -1
- package/lib/cjs/store/enum.d.ts +6 -6
- package/lib/cjs/store/enum.js +0 -13
- package/lib/cjs/store/helper.d.ts +2 -1
- package/lib/cjs/store/helper.js +15 -225
- package/lib/cjs/store/types.d.ts +45 -67
- package/lib/cjs/store/types.js +3 -49
- package/lib/cjs/types.d.ts +1 -0
- package/lib/cjs/utils/cookies.js +0 -3
- package/lib/cjs/utils/event.js +1 -1
- package/lib/cjs/utils/helper-dom.d.ts +1 -0
- package/lib/cjs/utils/helper-dom.js +17 -10
- package/lib/cjs/utils/helper.js +1 -24
- package/lib/cjs/utils/keydown.js +4 -7
- package/lib/cjs/utils/platform.d.ts +0 -9
- package/lib/cjs/utils/platform.js +0 -10
- package/lib/cjs/utils/selection.js +0 -6
- package/lib/cjs/utils/storage.d.ts +0 -9
- package/lib/cjs/utils/storage.js +1 -11
- package/lib/cjs/utils/transformSql.d.ts +5 -0
- package/lib/cjs/utils/transformSql.js +42 -113
- package/lib/cjs/utils.d.ts +1 -6
- package/lib/cjs/utils.js +115 -255
- package/lib/es/common/Portal/index.js +0 -2
- package/lib/es/common/SplitView/index.d.ts +0 -4
- package/lib/es/common/SplitView/index.js +0 -10
- package/lib/es/components/dialog/custom-column/config.js +4 -48
- package/lib/es/components/dialog/custom-column/expression-editor.js +3 -14
- package/lib/es/components/dialog/custom-column/expressions/suggest.d.ts +2 -34
- package/lib/es/components/dialog/custom-column/expressions/suggest.js +2 -43
- package/lib/es/components/dialog/custom-column/expressions/tokenizer.js +8 -65
- package/lib/es/components/dialog/custom-column/index.js +2 -4
- package/lib/es/components/dialog/custom-column/tokenized-expression.js +1 -3
- package/lib/es/components/dialog/custom-column/tokenizedI-input.js +1 -1
- package/lib/es/components/dialog/custom-editor/index.js +1 -7
- package/lib/es/components/dialog/diff-viewer/index copy.js +1 -15
- package/lib/es/components/dialog/expression/date-format-picker.js +2 -20
- package/lib/es/components/dialog/expression/date-format.js +2 -8
- package/lib/es/components/dialog/expression/index.d.ts +0 -3
- package/lib/es/components/dialog/expression/index.js +2 -82
- package/lib/es/components/dialog/formula/index.js +0 -30
- package/lib/es/components/dialog/formula/utils.js +2 -10
- package/lib/es/components/dialog/formula-list/CaseWhenGroup.d.ts +19 -0
- package/lib/es/components/dialog/formula-list/CaseWhenGroup.js +102 -0
- package/lib/es/components/dialog/formula-list/LogicGroup.d.ts +9 -0
- package/lib/es/components/dialog/formula-list/LogicGroup.js +36 -0
- package/lib/es/components/dialog/formula-list/index.d.ts +3 -0
- package/lib/es/components/dialog/formula-list/index.js +965 -509
- package/lib/es/components/dialog/formula-list/index.less +724 -0
- package/lib/es/components/dialog/formula-list/utils.d.ts +0 -7
- package/lib/es/components/dialog/formula-list/utils.js +117 -112
- package/lib/es/components/dialog/index.js +3 -3
- package/lib/es/components/dialog/select-column/index.d.ts +0 -6
- package/lib/es/components/dialog/select-column/index.js +4 -14
- package/lib/es/components/dialog/select-column-multiple/index.d.ts +0 -8
- package/lib/es/components/dialog/select-column-multiple/index.js +7 -47
- package/lib/es/components/dialog/select-join/index.d.ts +0 -5
- package/lib/es/components/dialog/select-join/index.js +0 -5
- package/lib/es/components/dialog/select-join-column/index.d.ts +0 -8
- package/lib/es/components/dialog/select-join-column/index.js +7 -20
- package/lib/es/components/dialog/select-join-column-multiple/index.d.ts +0 -8
- package/lib/es/components/dialog/select-join-column-multiple/index.js +5 -34
- package/lib/es/components/dialog/select-permission-table/index.d.ts +0 -5
- package/lib/es/components/dialog/select-permission-table/index.js +0 -5
- package/lib/es/components/dialog/select-summarize/index.d.ts +3 -3
- package/lib/es/components/dialog/select-summarize/index.js +106 -18
- package/lib/es/components/dialog/select-summarize/index.less +23 -0
- package/lib/es/components/dialog/select-table/index.d.ts +0 -6
- package/lib/es/components/dialog/select-table/index.js +1 -8
- package/lib/es/components/metabase/index.js +72 -87
- package/lib/es/components/metabase/index.less +14 -7
- package/lib/es/components/modules/components/Wrapper.js +1 -1
- package/lib/es/components/modules/components/header.js +2 -2
- package/lib/es/components/modules/components/meta-icon.d.ts +0 -3
- package/lib/es/components/modules/components/meta-icon.js +2 -46
- package/lib/es/components/modules/custom-column.js +3 -29
- package/lib/es/components/modules/enum/filter-enum.js +9 -88
- package/lib/es/components/modules/filter.js +2 -19
- package/lib/es/components/modules/index.d.ts +4 -2
- package/lib/es/components/modules/index.js +24 -1
- package/lib/es/components/modules/join-data.js +13 -291
- package/lib/es/components/modules/row-limit.js +0 -1
- package/lib/es/components/modules/sort.js +1 -61
- package/lib/es/components/modules/summarize/group-by.d.ts +0 -5
- package/lib/es/components/modules/summarize/group-by.js +233 -78
- package/lib/es/components/modules/summarize/select-index.js +96 -46
- package/lib/es/components/modules/table-data.js +11 -64
- package/lib/es/components/popup.js +27 -33
- package/lib/es/hooks/patch.d.ts +1 -0
- package/lib/es/hooks/patch.js +103 -5
- package/lib/es/hooks/patch2.js +2 -164
- package/lib/es/hooks/use-provider.js +0 -3
- package/lib/es/hooks/use-state.js +55 -135
- package/lib/es/index.js +0 -14
- package/lib/es/locale/en.js +5 -0
- package/lib/es/locale/index.js +1 -4
- package/lib/es/locale/zh.js +5 -0
- package/lib/es/sql-formula.js +0 -1
- package/lib/es/store/enum.d.ts +6 -6
- package/lib/es/store/enum.js +0 -13
- package/lib/es/store/helper.d.ts +2 -1
- package/lib/es/store/helper.js +13 -224
- package/lib/es/store/types.d.ts +45 -67
- package/lib/es/store/types.js +3 -49
- package/lib/es/types.d.ts +1 -0
- package/lib/es/types.js +1 -18
- package/lib/es/utils/cookies.js +0 -3
- package/lib/es/utils/event.js +1 -1
- package/lib/es/utils/helper-dom.d.ts +1 -0
- package/lib/es/utils/helper-dom.js +16 -9
- package/lib/es/utils/helper.js +1 -24
- package/lib/es/utils/keydown.js +4 -7
- package/lib/es/utils/platform.d.ts +0 -9
- package/lib/es/utils/platform.js +0 -10
- package/lib/es/utils/selection.js +0 -6
- package/lib/es/utils/storage.d.ts +0 -9
- package/lib/es/utils/storage.js +1 -10
- package/lib/es/utils/transformSql.d.ts +5 -0
- package/lib/es/utils/transformSql.js +42 -112
- package/lib/es/utils.d.ts +1 -6
- package/lib/es/utils.js +116 -255
- package/package.json +1 -1
package/lib/cjs/utils.js
CHANGED
|
@@ -8,7 +8,7 @@ exports.changeTableAlias = exports.changeFieldAlias = exports.changeExistsCopyFi
|
|
|
8
8
|
exports.containsSubset = containsSubset;
|
|
9
9
|
exports.isExistsError = exports.isError = exports.isCanPaste = exports.getSubColumns = exports.getObjTem = exports.getMetaTabels = exports.getHelper = exports.getColumnsTables = exports.findMetaKey = exports.findIndex = void 0;
|
|
10
10
|
exports.isValidSQLAlias = isValidSQLAlias;
|
|
11
|
-
exports.patchData = exports.metaIsCheck = void 0;
|
|
11
|
+
exports.patchData = exports.normalizeLegacySummarizeForSave = exports.metaIsCheck = void 0;
|
|
12
12
|
exports.reassembleByUnion = reassembleByUnion;
|
|
13
13
|
exports.splitByUnion = splitByUnion;
|
|
14
14
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/typeof"));
|
|
@@ -52,7 +52,6 @@ var getMetaTabels = exports.getMetaTabels = function getMetaTabels(data) {
|
|
|
52
52
|
var getColumnsTables = exports.getColumnsTables = function getColumnsTables(data) {
|
|
53
53
|
var obj = {};
|
|
54
54
|
data.map(function (v) {
|
|
55
|
-
// data也可直接是下拉框
|
|
56
55
|
var _v$datasourceId = v.datasourceId,
|
|
57
56
|
datasourceId = _v$datasourceId === void 0 ? 'source' : _v$datasourceId,
|
|
58
57
|
_v$id = v.id,
|
|
@@ -71,13 +70,11 @@ var getHelper = exports.getHelper = function getHelper(list, item) {
|
|
|
71
70
|
return v.type;
|
|
72
71
|
});
|
|
73
72
|
var curIndex = list.indexOf(item);
|
|
74
|
-
var leftTypes = types.slice(0, curIndex);
|
|
75
|
-
var rightTypes = types.slice(curIndex + 1);
|
|
73
|
+
var leftTypes = types.slice(0, curIndex);
|
|
74
|
+
var rightTypes = types.slice(curIndex + 1);
|
|
76
75
|
var leftList = list.slice(0, curIndex);
|
|
77
76
|
var rightList = list.slice(curIndex + 1);
|
|
78
|
-
var topList = leftList;
|
|
79
|
-
// let prevType = list[curIndex - 1]?.type || '';
|
|
80
|
-
// let nextType = list[curIndex + 1]?.type || '';
|
|
77
|
+
var topList = leftList;
|
|
81
78
|
var prevItem = list[curIndex - 1] || {};
|
|
82
79
|
var nextItem = list[curIndex + 1] || {};
|
|
83
80
|
var ExistAboveGroupBy = false;
|
|
@@ -119,16 +116,13 @@ var getHelper = exports.getHelper = function getHelper(list, item) {
|
|
|
119
116
|
nextItem: nextItem
|
|
120
117
|
};
|
|
121
118
|
};
|
|
122
|
-
// 获取子查询的字段
|
|
123
119
|
var getSubColumns = exports.getSubColumns = function getSubColumns(metaList) {
|
|
124
120
|
var obj = {
|
|
125
121
|
metaKey: -1,
|
|
126
122
|
type: _enum.TypeEnum.customColumn,
|
|
127
123
|
customColumn: [{
|
|
128
124
|
name: '',
|
|
129
|
-
// 用户起的别名
|
|
130
125
|
fieldUuid: ''
|
|
131
|
-
// formula: '', // 公式}];
|
|
132
126
|
}]
|
|
133
127
|
};
|
|
134
128
|
var _getHelper = getHelper([].concat((0, _toConsumableArray2["default"])(metaList), [obj]), obj),
|
|
@@ -153,9 +147,7 @@ var getSubColumns = exports.getSubColumns = function getSubColumns(metaList) {
|
|
|
153
147
|
name: v.name || v.quotes,
|
|
154
148
|
name_zh: v.name_zh || v.quotes,
|
|
155
149
|
id: v.id || v.fieldId,
|
|
156
|
-
// fieldUuid: uuidv4('field'),
|
|
157
150
|
realName: ((_v$sql = v.sql) === null || _v$sql === void 0 || (_v$sql = _v$sql.split(' AS ')) === null || _v$sql === void 0 ? void 0 : _v$sql[1]) || '',
|
|
158
|
-
// name_zh: '',
|
|
159
151
|
database_type: (v === null || v === void 0 ? void 0 : v.database_type) || _enum.SQL_COLUMN_TYPE.FLOAT,
|
|
160
152
|
special_type: '',
|
|
161
153
|
select: true
|
|
@@ -170,7 +162,6 @@ var getSubColumns = exports.getSubColumns = function getSubColumns(metaList) {
|
|
|
170
162
|
name_zh: v.name_zh || v.quotes,
|
|
171
163
|
id: v.id || v.fieldId,
|
|
172
164
|
realName: ((_v$sql2 = v.sql) === null || _v$sql2 === void 0 || (_v$sql2 = _v$sql2.split(' AS ')) === null || _v$sql2 === void 0 ? void 0 : _v$sql2[1]) || '',
|
|
173
|
-
// name_zh: '',
|
|
174
165
|
database_type: (v === null || v === void 0 ? void 0 : v.database_type) || _enum.SQL_COLUMN_TYPE.FLOAT,
|
|
175
166
|
special_type: '',
|
|
176
167
|
select: true
|
|
@@ -180,20 +171,15 @@ var getSubColumns = exports.getSubColumns = function getSubColumns(metaList) {
|
|
|
180
171
|
data = [_data];
|
|
181
172
|
var joinData = prevList.filter(function (v) {
|
|
182
173
|
return v.type === _enum.TypeEnum.joinData;
|
|
183
|
-
})
|
|
184
|
-
// @ts-ignore
|
|
185
|
-
.filter(function (v) {
|
|
174
|
+
}).filter(function (v) {
|
|
186
175
|
return v && v.table2.name;
|
|
187
176
|
});
|
|
188
177
|
if (joinData.length) {
|
|
189
|
-
data = data.concat(
|
|
190
|
-
// @ts-ignore
|
|
191
|
-
joinData.map(function (v) {
|
|
178
|
+
data = data.concat(joinData.map(function (v) {
|
|
192
179
|
var columns = v.columns.map(function (column) {
|
|
193
180
|
return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, column), {}, {
|
|
194
181
|
name: column.fieldAlias || column.name,
|
|
195
182
|
fieldAlias: ''
|
|
196
|
-
// fieldUuid: uuidv4('field'),
|
|
197
183
|
});
|
|
198
184
|
});
|
|
199
185
|
return {
|
|
@@ -204,14 +190,12 @@ var getSubColumns = exports.getSubColumns = function getSubColumns(metaList) {
|
|
|
204
190
|
}));
|
|
205
191
|
}
|
|
206
192
|
} else {
|
|
207
|
-
// @ts-ignore
|
|
208
193
|
data = metaList.slice().map(function (v) {
|
|
209
194
|
if (v.type === _enum.TypeEnum.data) {
|
|
210
195
|
var columns = v.columns.map(function (column) {
|
|
211
196
|
return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, column), {}, {
|
|
212
197
|
name: column.fieldAlias || column.name,
|
|
213
198
|
fieldAlias: ''
|
|
214
|
-
// fieldUuid: uuidv4('field'),
|
|
215
199
|
});
|
|
216
200
|
}).filter(function (item) {
|
|
217
201
|
return item.select;
|
|
@@ -226,7 +210,6 @@ var getSubColumns = exports.getSubColumns = function getSubColumns(metaList) {
|
|
|
226
210
|
return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, column), {}, {
|
|
227
211
|
name: column.fieldAlias || column.name,
|
|
228
212
|
fieldAlias: ''
|
|
229
|
-
// fieldUuid: uuidv4('field'),
|
|
230
213
|
});
|
|
231
214
|
}).filter(function (item) {
|
|
232
215
|
return item.select;
|
|
@@ -265,20 +248,11 @@ var getSubColumns = exports.getSubColumns = function getSubColumns(metaList) {
|
|
|
265
248
|
}
|
|
266
249
|
return data;
|
|
267
250
|
};
|
|
268
|
-
// data = 'data',
|
|
269
|
-
// joinData = 'joinData',
|
|
270
|
-
// permissionTable = 'permissionTable', // 权限表
|
|
271
|
-
// customColumn = 'customColumn',
|
|
272
|
-
// filter = 'filter',
|
|
273
|
-
// summarize = 'summarize',
|
|
274
|
-
// sort = 'sort',
|
|
275
|
-
// rowLimit = 'rowLimit',
|
|
276
251
|
var AliasType;
|
|
277
252
|
(function (AliasType) {
|
|
278
253
|
AliasType["table"] = "table";
|
|
279
254
|
AliasType["field"] = "field";
|
|
280
255
|
})(AliasType || (AliasType = {}));
|
|
281
|
-
// 修改别名
|
|
282
256
|
var _changeAlias = function changeAlias(items, val, type) {
|
|
283
257
|
return items.map(function (v) {
|
|
284
258
|
if (v.type === _types.AtomsTypeEnum.JOIN_DEFAULT || v.type === _types.AtomsTypeEnum.EXPRESSION) {
|
|
@@ -381,13 +355,26 @@ var changeTableAlias = exports.changeTableAlias = function changeTableAlias(list
|
|
|
381
355
|
v.group.map(function (group) {
|
|
382
356
|
if (group.tableUuid === tableUuid) {
|
|
383
357
|
group.alias = alias;
|
|
358
|
+
var groupAtoms = group.atoms;
|
|
359
|
+
if (groupAtoms && groupAtoms.length > 0) {
|
|
360
|
+
group.atoms = _changeAlias(groupAtoms, {
|
|
361
|
+
uuid: tableUuid,
|
|
362
|
+
alias: alias
|
|
363
|
+
}, AliasType.table);
|
|
364
|
+
}
|
|
384
365
|
group.sql = (0, _helper.summarizeToSql)(v.group, group).sql;
|
|
385
366
|
}
|
|
386
367
|
});
|
|
387
368
|
v.by.map(function (by) {
|
|
388
369
|
if (by.tableUuid === tableUuid) {
|
|
389
370
|
by.alias = alias;
|
|
390
|
-
by.
|
|
371
|
+
if (by.atoms && by.atoms.length > 0) {
|
|
372
|
+
by.atoms = _changeAlias(by.atoms, {
|
|
373
|
+
uuid: tableUuid,
|
|
374
|
+
alias: alias
|
|
375
|
+
}, AliasType.table);
|
|
376
|
+
}
|
|
377
|
+
by.sql = (0, _helper.summarizeByToSql)(by);
|
|
391
378
|
}
|
|
392
379
|
});
|
|
393
380
|
}
|
|
@@ -399,12 +386,6 @@ var changeTableAlias = exports.changeTableAlias = function changeTableAlias(list
|
|
|
399
386
|
}, AliasType.table);
|
|
400
387
|
}
|
|
401
388
|
}
|
|
402
|
-
// if ((v as MetaData | MetaJoin).subquery) {
|
|
403
|
-
// (v as MetaData | MetaJoin).subquery = changeTableAlias(
|
|
404
|
-
// (v as MetaData | MetaJoin).subquery || [],
|
|
405
|
-
// curObj,
|
|
406
|
-
// );
|
|
407
|
-
// }
|
|
408
389
|
return v;
|
|
409
390
|
})) || [];
|
|
410
391
|
};
|
|
@@ -438,13 +419,26 @@ var changeFieldAlias = exports.changeFieldAlias = function changeFieldAlias(list
|
|
|
438
419
|
v.group.map(function (group) {
|
|
439
420
|
if (group.fieldUuid === uuid) {
|
|
440
421
|
group.fieldAlias = alias;
|
|
422
|
+
var groupAtoms = group.atoms;
|
|
423
|
+
if (groupAtoms && groupAtoms.length > 0) {
|
|
424
|
+
group.atoms = _changeAlias(groupAtoms, {
|
|
425
|
+
uuid: uuid,
|
|
426
|
+
alias: alias
|
|
427
|
+
}, AliasType.field);
|
|
428
|
+
}
|
|
441
429
|
group.sql = (0, _helper.summarizeToSql)(v.group, group).sql;
|
|
442
430
|
}
|
|
443
431
|
});
|
|
444
432
|
v.by.map(function (by) {
|
|
445
433
|
if (by.fieldUuid === uuid) {
|
|
446
434
|
by.fieldAlias = alias;
|
|
447
|
-
by.
|
|
435
|
+
if (by.atoms && by.atoms.length > 0) {
|
|
436
|
+
by.atoms = _changeAlias(by.atoms, {
|
|
437
|
+
uuid: uuid,
|
|
438
|
+
alias: alias
|
|
439
|
+
}, AliasType.field);
|
|
440
|
+
}
|
|
441
|
+
by.sql = (0, _helper.summarizeByToSql)(by);
|
|
448
442
|
}
|
|
449
443
|
});
|
|
450
444
|
}
|
|
@@ -479,7 +473,6 @@ function splitByUnion(data) {
|
|
|
479
473
|
while (i < original.length) {
|
|
480
474
|
var item = original[i];
|
|
481
475
|
if (item.type === 'group') {
|
|
482
|
-
// group.list 中每一项原样推入结果
|
|
483
476
|
var _iterator = (0, _createForOfIteratorHelper2["default"])(item.list),
|
|
484
477
|
_step;
|
|
485
478
|
try {
|
|
@@ -496,7 +489,6 @@ function splitByUnion(data) {
|
|
|
496
489
|
} else if (item.type === 'union') {
|
|
497
490
|
var list = item.list,
|
|
498
491
|
otehr = (0, _objectWithoutProperties2["default"])(item, _excluded);
|
|
499
|
-
// 查找下一个 group,并将其 list 转成 subquery
|
|
500
492
|
var nextItem = original[i + 1];
|
|
501
493
|
if (nextItem && nextItem.type === 'group') {
|
|
502
494
|
result.push((0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, otehr), {}, {
|
|
@@ -515,6 +507,66 @@ function splitByUnion(data) {
|
|
|
515
507
|
}
|
|
516
508
|
return result;
|
|
517
509
|
}
|
|
510
|
+
var summarizeNoArgumentConditions = ['总行数', '累积行数'];
|
|
511
|
+
var createSummarizeFieldAtom = function createSummarizeFieldAtom(record) {
|
|
512
|
+
if (!record.name) return null;
|
|
513
|
+
return {
|
|
514
|
+
fieldName: record.name,
|
|
515
|
+
fieldNameZh: record.name_zh || '',
|
|
516
|
+
fieldAlias: '',
|
|
517
|
+
fieldUuid: (0, _helper2.uuidv4)('field'),
|
|
518
|
+
fieldId: record.id || record.fieldId || '',
|
|
519
|
+
tableName: record.table || '',
|
|
520
|
+
tableNameZh: '',
|
|
521
|
+
tableId: record.tableId || '',
|
|
522
|
+
tableAlias: record.alias || '',
|
|
523
|
+
tableUuid: record.tableUuid || '',
|
|
524
|
+
datasourceName: record.datasourceName || '',
|
|
525
|
+
datasourceId: record.datasourceId || '',
|
|
526
|
+
type: _types.AtomsTypeEnum.FIELD
|
|
527
|
+
};
|
|
528
|
+
};
|
|
529
|
+
var normalizeSummarizeItemForSave = function normalizeSummarizeItemForSave(record) {
|
|
530
|
+
var _record$atoms;
|
|
531
|
+
if ((_record$atoms = record.atoms) !== null && _record$atoms !== void 0 && _record$atoms.length || summarizeNoArgumentConditions.includes(record.condition)) {
|
|
532
|
+
return record;
|
|
533
|
+
}
|
|
534
|
+
var fieldAtom = createSummarizeFieldAtom(record);
|
|
535
|
+
if (!fieldAtom) return record;
|
|
536
|
+
return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, record), {}, {
|
|
537
|
+
atoms: [fieldAtom]
|
|
538
|
+
});
|
|
539
|
+
};
|
|
540
|
+
var normalizeSummarizeByForSave = function normalizeSummarizeByForSave(record) {
|
|
541
|
+
var _record$atoms2;
|
|
542
|
+
if ((_record$atoms2 = record.atoms) !== null && _record$atoms2 !== void 0 && _record$atoms2.length) return record;
|
|
543
|
+
var fieldAtom = createSummarizeFieldAtom(record);
|
|
544
|
+
if (!fieldAtom) return record;
|
|
545
|
+
return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, record), {}, {
|
|
546
|
+
atoms: [fieldAtom]
|
|
547
|
+
});
|
|
548
|
+
};
|
|
549
|
+
var _normalizeLegacySummarizeForSave = exports.normalizeLegacySummarizeForSave = function normalizeLegacySummarizeForSave() {
|
|
550
|
+
var metas = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
551
|
+
return metas.map(function (meta) {
|
|
552
|
+
if (meta.type === _enum.TypeEnum.summarize) {
|
|
553
|
+
return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, meta), {}, {
|
|
554
|
+
group: meta.group.map(function (item) {
|
|
555
|
+
return normalizeSummarizeItemForSave(item);
|
|
556
|
+
}),
|
|
557
|
+
by: meta.by.map(function (item) {
|
|
558
|
+
return normalizeSummarizeByForSave(item);
|
|
559
|
+
})
|
|
560
|
+
});
|
|
561
|
+
}
|
|
562
|
+
if (meta.type === _enum.TypeEnum.union) {
|
|
563
|
+
return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, meta), {}, {
|
|
564
|
+
subquery: _normalizeLegacySummarizeForSave(meta.subquery || [])
|
|
565
|
+
});
|
|
566
|
+
}
|
|
567
|
+
return meta;
|
|
568
|
+
});
|
|
569
|
+
};
|
|
518
570
|
var getObjTem = exports.getObjTem = function getObjTem(arr) {
|
|
519
571
|
var obj = {};
|
|
520
572
|
arr === null || arr === void 0 || arr.map(function (v) {
|
|
@@ -529,12 +581,8 @@ var getObjTem = exports.getObjTem = function getObjTem(arr) {
|
|
|
529
581
|
var patchData = exports.patchData = function patchData(metas) {
|
|
530
582
|
var constantList = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
531
583
|
var formulaTemplates = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
532
|
-
// return metas;
|
|
533
584
|
var mainTable = metas[0] || {};
|
|
534
585
|
var version = (mainTable === null || mainTable === void 0 ? void 0 : mainTable.patchVersion) || '';
|
|
535
|
-
// if (version != '1.0.0') {
|
|
536
|
-
// return patchMetas(metas);
|
|
537
|
-
// }
|
|
538
586
|
if (version != '1.1.0') {
|
|
539
587
|
return (0, _patch.patchMetas)(metas, constantList, getObjTem(formulaTemplates));
|
|
540
588
|
}
|
|
@@ -546,7 +594,6 @@ function reassembleByUnion() {
|
|
|
546
594
|
var result = [];
|
|
547
595
|
var i = 0;
|
|
548
596
|
var len = target.length;
|
|
549
|
-
// 如果没有任何 union,直接放入一个 group.list
|
|
550
597
|
var hasUnion = target.some(function (item) {
|
|
551
598
|
return item.type === 'union';
|
|
552
599
|
});
|
|
@@ -557,11 +604,9 @@ function reassembleByUnion() {
|
|
|
557
604
|
list: (0, _toConsumableArray2["default"])(target)
|
|
558
605
|
}];
|
|
559
606
|
}
|
|
560
|
-
// 否则正常处理
|
|
561
607
|
while (i < len) {
|
|
562
608
|
var item = target[i];
|
|
563
609
|
if (item.type !== 'union') {
|
|
564
|
-
// 收集连续非 union 的 item,统一放入一个 group.list
|
|
565
610
|
var groupList = [];
|
|
566
611
|
while (i < len && target[i].type !== 'union') {
|
|
567
612
|
groupList.push(target[i]);
|
|
@@ -574,7 +619,6 @@ function reassembleByUnion() {
|
|
|
574
619
|
});
|
|
575
620
|
} else {
|
|
576
621
|
var _item$union;
|
|
577
|
-
// 处理 union
|
|
578
622
|
result.push({
|
|
579
623
|
type: 'union',
|
|
580
624
|
name: 'union',
|
|
@@ -584,39 +628,11 @@ function reassembleByUnion() {
|
|
|
584
628
|
var subquery = item.subquery || [];
|
|
585
629
|
var convertedSubquery = reassembleByUnion(subquery);
|
|
586
630
|
result.push.apply(result, (0, _toConsumableArray2["default"])(convertedSubquery));
|
|
587
|
-
i++;
|
|
631
|
+
i++;
|
|
588
632
|
}
|
|
589
633
|
}
|
|
590
634
|
return result;
|
|
591
635
|
}
|
|
592
|
-
// export const buildSqlQuery = (data?: MetaListType[]): string => {
|
|
593
|
-
// if (!data || data.length === 0) return '';
|
|
594
|
-
// let sqlClauses: string[] = ['not exitis ( '];
|
|
595
|
-
// data.forEach((item) => {
|
|
596
|
-
// if (item.type === TypeEnum.data) {
|
|
597
|
-
// const meta = item as MetaData;
|
|
598
|
-
// const tableName = meta.table.name;
|
|
599
|
-
// const alias = meta.table.alias ? `AS ${meta.table.alias}` : '';
|
|
600
|
-
// const dataSource = meta.table.datasourceName;
|
|
601
|
-
// sqlClauses.push(`SELECT 1 FROM ${dataSource}.${tableName} ${alias}`);
|
|
602
|
-
// }
|
|
603
|
-
// if (item.type === TypeEnum.joinData) {
|
|
604
|
-
// const meta = item as MetaJoin;
|
|
605
|
-
// const table1 = meta.table1.alias ? meta.table1.alias : meta.table1.name;
|
|
606
|
-
// const table2 = `${meta.table2.datasourceName}.${meta.table2.name}`;
|
|
607
|
-
// const alias2 = meta.table2.alias ? meta.table2.alias : '';
|
|
608
|
-
// joins.push(`LEFT JOIN ${table2} ${alias2} ON ${table1}.${meta.columns[0]?.name} = ${alias2}.${meta.columns[0]?.name}`);
|
|
609
|
-
// }
|
|
610
|
-
// if (item.type === TypeEnum.filter) {
|
|
611
|
-
// const filterStrings = (item as MetaFilter).filter.map((f) => f.quotes).filter(Boolean); // 排除空条件
|
|
612
|
-
// if (filterStrings.length > 0) {
|
|
613
|
-
// sqlClauses.push(`WHERE ${filterStrings.join(' AND ')}`);
|
|
614
|
-
// }
|
|
615
|
-
// }
|
|
616
|
-
// });
|
|
617
|
-
// // 简单拼接 SQL 片段
|
|
618
|
-
// return sqlClauses.join(' ') + ' )' + ';';
|
|
619
|
-
// };
|
|
620
636
|
var buildSqlQuery = exports.buildSqlQuery = function buildSqlQuery() {
|
|
621
637
|
var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
622
638
|
var type = arguments.length > 1 ? arguments[1] : undefined;
|
|
@@ -631,124 +647,17 @@ var buildSqlQuery = exports.buildSqlQuery = function buildSqlQuery() {
|
|
|
631
647
|
var _transformSql = (0, _transformSql2.transformSql)(data),
|
|
632
648
|
sql = _transformSql.sql;
|
|
633
649
|
return "".concat(typeName, "(").concat(sql, ") ");
|
|
634
|
-
// if (!data || data.length === 0) return '';
|
|
635
|
-
// const name = type === AtomsTypeEnum.EXISTS ? 'EXISTS' : 'NOT EXISTS';
|
|
636
|
-
// let sqlClauses: string[] = [`${name} (`];
|
|
637
|
-
// let tables: string[] = [];
|
|
638
|
-
// let joins: string[] = [];
|
|
639
|
-
// let wheres: string[] = [];
|
|
640
|
-
// data?.forEach((item) => {
|
|
641
|
-
// if (item.type === TypeEnum.data) {
|
|
642
|
-
// const meta = item as MetaData;
|
|
643
|
-
// const tableName = `${meta.table.name}`;
|
|
644
|
-
// const alias = meta.table.alias ? ` AS ${meta.table.alias}` : '';
|
|
645
|
-
// tables.push(`${tableName}${alias}`);
|
|
646
|
-
// }
|
|
647
|
-
// if (item.type === TypeEnum.joinData) {
|
|
648
|
-
// const meta = item as MetaJoin;
|
|
649
|
-
// const table2Name = `${meta.table2.name}`;
|
|
650
|
-
// const alias2 = meta.table2.alias ? ` AS ${meta.table2.alias}` : '';
|
|
651
|
-
// const table2 = `${meta.table2.alias || meta.table2.name}`;
|
|
652
|
-
// const table1 = `${meta.table1.alias || meta.table1.name}`;
|
|
653
|
-
// joins.push(`LEFT JOIN ${table2Name}${alias2} ON `);
|
|
654
|
-
// if (Array.isArray(item.expressions) && item.expressions?.length > 0) {
|
|
655
|
-
// item.expressions?.forEach((expression) => {
|
|
656
|
-
// let left = '',
|
|
657
|
-
// right = '';
|
|
658
|
-
// if (expression.type === AtomsTypeEnum.JOIN_DEFAULT) {
|
|
659
|
-
// if (expression.lhs[0].type === AtomsTypeEnum.FIELD) {
|
|
660
|
-
// left = expression.lhs
|
|
661
|
-
// .map((v) => {
|
|
662
|
-
// if (v.type === AtomsTypeEnum.FIELD) {
|
|
663
|
-
// return v.fieldName;
|
|
664
|
-
// } else {
|
|
665
|
-
// return '';
|
|
666
|
-
// }
|
|
667
|
-
// })
|
|
668
|
-
// .join(' || ');
|
|
669
|
-
// } else if (
|
|
670
|
-
// expression.lhs[0].type === AtomsTypeEnum.CONSTANT ||
|
|
671
|
-
// expression.lhs[0].type === AtomsTypeEnum.INPUT_STRING
|
|
672
|
-
// ) {
|
|
673
|
-
// left = expression.lhs[0].val;
|
|
674
|
-
// }
|
|
675
|
-
// if (expression.rhs[0].type === AtomsTypeEnum.FIELD) {
|
|
676
|
-
// right = expression.rhs
|
|
677
|
-
// .map((v) => {
|
|
678
|
-
// if (v.type === AtomsTypeEnum.FIELD) {
|
|
679
|
-
// return v.fieldName;
|
|
680
|
-
// } else {
|
|
681
|
-
// return '';
|
|
682
|
-
// }
|
|
683
|
-
// })
|
|
684
|
-
// .join(' || ');
|
|
685
|
-
// } else if (
|
|
686
|
-
// expression.rhs[0].type === AtomsTypeEnum.CONSTANT ||
|
|
687
|
-
// expression.rhs[0].type === AtomsTypeEnum.INPUT_STRING
|
|
688
|
-
// ) {
|
|
689
|
-
// right = expression.rhs[0].val;
|
|
690
|
-
// }
|
|
691
|
-
// }
|
|
692
|
-
// joins.push(`${left} = ${right}`);
|
|
693
|
-
// });
|
|
694
|
-
// }
|
|
695
|
-
// }
|
|
696
|
-
// if (item.type === TypeEnum.filter) {
|
|
697
|
-
// const filterStrings = (item as MetaFilter).filter
|
|
698
|
-
// .map((f) => {
|
|
699
|
-
// if (f.type === AtomsTypeEnum.FIELD) {
|
|
700
|
-
// return f.fieldName;
|
|
701
|
-
// } else if (
|
|
702
|
-
// f.type === AtomsTypeEnum.EXPRESSION ||
|
|
703
|
-
// f.type === AtomsTypeEnum.EXISTS ||
|
|
704
|
-
// f.type === AtomsTypeEnum.NOT_EXISTS ||
|
|
705
|
-
// f.type === AtomsTypeEnum.FORMULA ||
|
|
706
|
-
// f.type === AtomsTypeEnum.COLLECTION
|
|
707
|
-
// ) {
|
|
708
|
-
// return f.quotes;
|
|
709
|
-
// } else if (f.type === AtomsTypeEnum.JOIN_DEFAULT) {
|
|
710
|
-
// return '';
|
|
711
|
-
// } else if (
|
|
712
|
-
// f.type === AtomsTypeEnum.INPUT_NUMBER ||
|
|
713
|
-
// f.type === AtomsTypeEnum.INPUT_NUMBER_LIST ||
|
|
714
|
-
// f.type === AtomsTypeEnum.INPUT_STRING_LIST
|
|
715
|
-
// ) {
|
|
716
|
-
// return '';
|
|
717
|
-
// } else {
|
|
718
|
-
// return f.val;
|
|
719
|
-
// }
|
|
720
|
-
// })
|
|
721
|
-
// .filter(Boolean);
|
|
722
|
-
// if (filterStrings.length > 0) {
|
|
723
|
-
// wheres.push(...filterStrings);
|
|
724
|
-
// }
|
|
725
|
-
// }
|
|
726
|
-
// });
|
|
727
|
-
// // 构建子查询
|
|
728
|
-
// if (tables.length > 0) {
|
|
729
|
-
// sqlClauses.push(`SELECT 1 FROM ${tables[0]}`);
|
|
730
|
-
// if (joins.length > 0) {
|
|
731
|
-
// sqlClauses.push(joins.join(' '));
|
|
732
|
-
// }
|
|
733
|
-
// if (wheres.length > 0) {
|
|
734
|
-
// sqlClauses.push(`WHERE ${wheres.join(' ')}`);
|
|
735
|
-
// }
|
|
736
|
-
// }
|
|
737
|
-
// sqlClauses.push(')');
|
|
738
|
-
// return sqlClauses.join(' ');
|
|
739
650
|
};
|
|
740
651
|
var _isError = exports.isError = function isError(item, data) {
|
|
741
652
|
var tables = getColumnsTables(data);
|
|
742
|
-
// 不存在
|
|
743
653
|
if (!item) {
|
|
744
654
|
return false;
|
|
745
655
|
}
|
|
746
656
|
if (Array.isArray(item)) {
|
|
747
657
|
return item.some(function (v) {
|
|
748
658
|
return _isError(v, data);
|
|
749
|
-
});
|
|
659
|
+
});
|
|
750
660
|
}
|
|
751
|
-
// 字段类型
|
|
752
661
|
if (item.type === _types.AtomsTypeEnum.FIELD) {
|
|
753
662
|
var datasourceId = item.datasourceId,
|
|
754
663
|
_item$tableId = item.tableId,
|
|
@@ -757,16 +666,15 @@ var _isError = exports.isError = function isError(item, data) {
|
|
|
757
666
|
tableAlias = _item$tableAlias === void 0 ? '' : _item$tableAlias,
|
|
758
667
|
fieldName = item.fieldName,
|
|
759
668
|
fieldId = item.fieldId;
|
|
760
|
-
var _datasourceId = datasourceId || 'source';
|
|
669
|
+
var _datasourceId = datasourceId || 'source';
|
|
761
670
|
if (tableId === 'source') {
|
|
762
671
|
_datasourceId = 'source';
|
|
763
672
|
}
|
|
764
673
|
if (!tableId) {
|
|
765
|
-
return false;
|
|
674
|
+
return false;
|
|
766
675
|
}
|
|
767
676
|
if (_datasourceId === 'source') {
|
|
768
677
|
var _tables$_datasourceId;
|
|
769
|
-
// 检查是否所有字段的 name 都不等于 fieldName
|
|
770
678
|
if (!(tables !== null && tables !== void 0 && (_tables$_datasourceId = tables[_datasourceId]) !== null && _tables$_datasourceId !== void 0 && _tables$_datasourceId[tableId + tableAlias])) {
|
|
771
679
|
return true;
|
|
772
680
|
} else {
|
|
@@ -783,44 +691,31 @@ var _isError = exports.isError = function isError(item, data) {
|
|
|
783
691
|
var hasField = (_tables$_datasourceId3 = tables === null || tables === void 0 || (_tables$_datasourceId4 = tables[_datasourceId]) === null || _tables$_datasourceId4 === void 0 || (_tables$_datasourceId4 = _tables$_datasourceId4[tableId + tableAlias]) === null || _tables$_datasourceId4 === void 0 ? void 0 : _tables$_datasourceId4.some(function (v) {
|
|
784
692
|
return v.name === fieldName && (v.id === undefined || v.id === fieldId);
|
|
785
693
|
})) !== null && _tables$_datasourceId3 !== void 0 ? _tables$_datasourceId3 : false;
|
|
786
|
-
return !hasField;
|
|
694
|
+
return !hasField;
|
|
787
695
|
}
|
|
788
696
|
}
|
|
789
|
-
// 表达式类型
|
|
790
697
|
if (item.type === _types.AtomsTypeEnum.EXPRESSION) {
|
|
791
698
|
var lhsHasError = _isError(item.lhs, data);
|
|
792
699
|
var rhsHasError = _isError(item.rhs, data);
|
|
793
700
|
return lhsHasError || rhsHasError;
|
|
794
701
|
}
|
|
795
|
-
// 公式
|
|
796
702
|
if (item.type === _types.AtomsTypeEnum.FORMULA) {
|
|
797
703
|
return _isError(item.args, data);
|
|
798
704
|
}
|
|
799
|
-
// 公式
|
|
800
705
|
if (item.type === _types.AtomsTypeEnum.COLLECTION) {
|
|
801
706
|
return _isError(item.list, data);
|
|
802
707
|
}
|
|
803
|
-
return false;
|
|
708
|
+
return false;
|
|
804
709
|
};
|
|
805
|
-
/**
|
|
806
|
-
* 深度判断 sub 是否是 obj 的子集(递归比较所有可枚举自有属性)
|
|
807
|
-
* @param sub 可能包含部分属性的对象
|
|
808
|
-
* @param obj 待比较的对象
|
|
809
|
-
* @param visited 用于处理循环引用的 WeakSet
|
|
810
|
-
*/
|
|
811
710
|
function isSubset(sub, obj) {
|
|
812
711
|
var visited = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new WeakSet();
|
|
813
|
-
// 基本类型或引用相同
|
|
814
712
|
if (sub === obj) return true;
|
|
815
|
-
// 如果任一不是对象/数组,或者为 null,则不相等(sub 为基本类型时,上面已经比较过,这里只处理对象不等的情况)
|
|
816
713
|
if ((0, _typeof2["default"])(sub) !== 'object' || sub === null || (0, _typeof2["default"])(obj) !== 'object' || obj === null) {
|
|
817
714
|
return false;
|
|
818
715
|
}
|
|
819
|
-
// 避免循环引用
|
|
820
716
|
if (visited.has(sub) || visited.has(obj)) return false;
|
|
821
717
|
visited.add(sub);
|
|
822
718
|
visited.add(obj);
|
|
823
|
-
// 处理数组
|
|
824
719
|
if (Array.isArray(sub)) {
|
|
825
720
|
if (!Array.isArray(obj) || sub.length !== obj.length) return false;
|
|
826
721
|
for (var i = 0; i < sub.length; i++) {
|
|
@@ -828,35 +723,23 @@ function isSubset(sub, obj) {
|
|
|
828
723
|
}
|
|
829
724
|
return true;
|
|
830
725
|
}
|
|
831
|
-
// 普通对象:遍历 sub 的每个键
|
|
832
726
|
for (var key in sub) {
|
|
833
727
|
if (Object.prototype.hasOwnProperty.call(sub, key)) {
|
|
834
|
-
// obj 必须包含该键
|
|
835
728
|
if (!Object.prototype.hasOwnProperty.call(obj, key)) return false;
|
|
836
|
-
// 递归比较值
|
|
837
729
|
if (!isSubset(sub[key], obj[key], visited)) return false;
|
|
838
730
|
}
|
|
839
731
|
}
|
|
840
732
|
return true;
|
|
841
733
|
}
|
|
842
|
-
/**
|
|
843
|
-
* 在嵌套结构 root 中查找是否存在一个对象,使得 target 是该对象的子集
|
|
844
|
-
* @param root 可能包含任意层数组/对象的根数据
|
|
845
|
-
* @param target 目标对象(可能只包含部分字段)
|
|
846
|
-
* @returns 是否存在
|
|
847
|
-
*/
|
|
848
734
|
function containsSubset(root, target) {
|
|
849
735
|
var visited = new WeakSet();
|
|
850
736
|
function search(current) {
|
|
851
737
|
if (current && (0, _typeof2["default"])(current) === 'object') {
|
|
852
|
-
// 避免循环引用
|
|
853
738
|
if (visited.has(current)) return false;
|
|
854
739
|
visited.add(current);
|
|
855
|
-
// 如果是普通对象(非数组),先检查是否包含 target 子集
|
|
856
740
|
if (!Array.isArray(current) && isSubset(target, current)) {
|
|
857
741
|
return true;
|
|
858
742
|
}
|
|
859
|
-
// 继续深入遍历子元素
|
|
860
743
|
if (Array.isArray(current)) {
|
|
861
744
|
var _iterator2 = (0, _createForOfIteratorHelper2["default"])(current),
|
|
862
745
|
_step2;
|
|
@@ -882,45 +765,37 @@ function containsSubset(root, target) {
|
|
|
882
765
|
}
|
|
883
766
|
return search(root);
|
|
884
767
|
}
|
|
885
|
-
// 判断当前meta中是否含有errorList
|
|
886
768
|
var isExistsError = exports.isExistsError = function isExistsError(meta, errorList) {
|
|
887
769
|
var _meta = (0, _cloneDeep3["default"])(meta);
|
|
888
770
|
return errorList.some(function (error) {
|
|
889
771
|
return containsSubset(_meta, error);
|
|
890
772
|
});
|
|
891
773
|
};
|
|
892
|
-
// 设置新字段信息
|
|
893
774
|
function setNewField(field, data) {
|
|
894
|
-
console.log('🚀 ~ setNewField ~ field:', field);
|
|
895
775
|
var _iterator3 = (0, _createForOfIteratorHelper2["default"])(data),
|
|
896
776
|
_step3;
|
|
897
777
|
try {
|
|
898
778
|
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
899
779
|
var table = _step3.value;
|
|
900
|
-
// 第一步:判断表名是否一致
|
|
901
780
|
if (table.name !== field.tableName) {
|
|
902
781
|
continue;
|
|
903
782
|
}
|
|
904
|
-
// 第二步:✅ 表名一致,立即更新所有表相关信息(不管字段是否存在)
|
|
905
783
|
field.datasourceId = table.datasourceId || '';
|
|
906
784
|
field.datasourceName = table.datasourceName || '';
|
|
907
785
|
field.tableId = table.id || '';
|
|
908
|
-
field.tableName = table.name || '';
|
|
786
|
+
field.tableName = table.name || '';
|
|
909
787
|
field.tableAlias = table.alias || '';
|
|
910
788
|
field.tableUuid = table.tableUuid || '';
|
|
911
789
|
field.tableNameZh = table.name_zh || '';
|
|
912
|
-
// 第三步:尝试找字段,更新字段相关信息(仅当字段存在时)
|
|
913
790
|
var matchedColumn = table.columns.find(function (col) {
|
|
914
791
|
return col.name === field.fieldName;
|
|
915
792
|
});
|
|
916
|
-
console.log('🚀 ~ setNewField ~ matchedColumn:', matchedColumn);
|
|
917
793
|
if (matchedColumn) {
|
|
918
794
|
field.fieldId = matchedColumn.id || '';
|
|
919
795
|
field.fieldNameZh = matchedColumn.name_zh || '';
|
|
920
796
|
field.fieldUuid = matchedColumn.fieldUuid || '';
|
|
921
797
|
field.fieldAlias = matchedColumn.fieldAlias || '';
|
|
922
798
|
}
|
|
923
|
-
// 找到同名表就停止(假设表名唯一)
|
|
924
799
|
break;
|
|
925
800
|
}
|
|
926
801
|
} catch (err) {
|
|
@@ -928,10 +803,8 @@ function setNewField(field, data) {
|
|
|
928
803
|
} finally {
|
|
929
804
|
_iterator3.f();
|
|
930
805
|
}
|
|
931
|
-
console.log('🚀 ~ setNewField ~ field:', field);
|
|
932
806
|
return field;
|
|
933
807
|
}
|
|
934
|
-
// 复制字段别名后修改对应的表id或字段id的别名
|
|
935
808
|
var _changeCopyField = exports.changeCopyField = function changeCopyField(items, data) {
|
|
936
809
|
return items.map(function (v) {
|
|
937
810
|
if (v.type === _types.AtomsTypeEnum.JOIN_DEFAULT || v.type === _types.AtomsTypeEnum.EXPRESSION) {
|
|
@@ -940,22 +813,10 @@ var _changeCopyField = exports.changeCopyField = function changeCopyField(items,
|
|
|
940
813
|
rhs: _changeCopyField(v.rhs, data)
|
|
941
814
|
});
|
|
942
815
|
} else if (v.type === _types.AtomsTypeEnum.FIELD) {
|
|
943
|
-
// if (type === AliasType.table && v.tableUuid === val.uuid) {
|
|
944
|
-
// v.tableAlias = val.alias;
|
|
945
|
-
// }
|
|
946
|
-
// if (type === AliasType.field && v.fieldUuid === val.uuid) {
|
|
947
|
-
// v.fieldAlias = val.alias;
|
|
948
|
-
// }
|
|
949
|
-
// 需要处理复制的字段别名
|
|
950
816
|
v = setNewField(v, data);
|
|
951
817
|
return v;
|
|
952
818
|
} else if (v.type === _types.AtomsTypeEnum.EXISTS || v.type === _types.AtomsTypeEnum.NOT_EXISTS) {
|
|
953
819
|
v.notExists = changeExistsCopyField(v.notExists || [], data);
|
|
954
|
-
// if (type === AliasType.table) {
|
|
955
|
-
// v.notExists = changeExistsCopyTable(v.notExists || [], data);
|
|
956
|
-
// }
|
|
957
|
-
// if (type === AliasType.field) {
|
|
958
|
-
// }
|
|
959
820
|
return v;
|
|
960
821
|
} else if (v.type === _types.AtomsTypeEnum.FORMULA) {
|
|
961
822
|
v.args = _changeCopyField(v.args, data);
|
|
@@ -986,23 +847,22 @@ var changeExistsCopyField = exports.changeExistsCopyField = function changeExist
|
|
|
986
847
|
});
|
|
987
848
|
}
|
|
988
849
|
if (v.type === _enum.TypeEnum.rowLimit) {}
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
850
|
+
if (v.type === _enum.TypeEnum.summarize) {
|
|
851
|
+
v.group.map(function (group) {
|
|
852
|
+
if (group.atoms && group.atoms.length > 0) {
|
|
853
|
+
group.atoms = _changeCopyField(group.atoms, _data);
|
|
854
|
+
group.sql = (0, _helper.summarizeToSql)(v.group, group).sql;
|
|
855
|
+
}
|
|
856
|
+
});
|
|
857
|
+
v.by.map(function (by) {
|
|
858
|
+
if (by.atoms && by.atoms.length > 0) {
|
|
859
|
+
by.atoms = _changeCopyField(by.atoms, _data);
|
|
860
|
+
by.sql = (0, _helper.summarizeByToSql)(by);
|
|
861
|
+
}
|
|
862
|
+
});
|
|
863
|
+
}
|
|
1003
864
|
if (v.type === _enum.TypeEnum.filter) {
|
|
1004
865
|
if (v.filter && v.filter.length > 0) {
|
|
1005
|
-
console.log(v.filter);
|
|
1006
866
|
v.filter = _changeCopyField(v.filter, _data);
|
|
1007
867
|
}
|
|
1008
868
|
}
|