@gingkoo/pandora-metabase 1.0.118 → 1.0.120
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 +6 -31
- 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 +970 -504
- 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 -113
- 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 +7 -4
- 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 +7 -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 +251 -89
- package/lib/cjs/components/modules/summarize/select-index.js +116 -59
- 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 +40 -101
- package/lib/cjs/utils.d.ts +1 -6
- package/lib/cjs/utils.js +126 -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 +5 -31
- 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 +969 -504
- 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 -113
- 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 +7 -4
- 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 +7 -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 +253 -91
- package/lib/es/components/modules/summarize/select-index.js +116 -59
- 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 +40 -100
- package/lib/es/utils.d.ts +1 -6
- package/lib/es/utils.js +127 -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,77 @@ function splitByUnion(data) {
|
|
|
515
507
|
}
|
|
516
508
|
return result;
|
|
517
509
|
}
|
|
510
|
+
var summarizeNoArgumentConditions = ['总行数', '累积行数'];
|
|
511
|
+
var stripSummarizeTableFields = function stripSummarizeTableFields(record) {
|
|
512
|
+
return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, record), {}, {
|
|
513
|
+
table: '',
|
|
514
|
+
tableId: '',
|
|
515
|
+
tableUuid: '',
|
|
516
|
+
alias: '',
|
|
517
|
+
datasourceId: '',
|
|
518
|
+
datasourceName: ''
|
|
519
|
+
});
|
|
520
|
+
};
|
|
521
|
+
var createSummarizeFieldAtom = function createSummarizeFieldAtom(record) {
|
|
522
|
+
if (!record.name) return null;
|
|
523
|
+
return {
|
|
524
|
+
fieldName: record.name,
|
|
525
|
+
fieldNameZh: record.name_zh || '',
|
|
526
|
+
fieldAlias: '',
|
|
527
|
+
fieldUuid: (0, _helper2.uuidv4)('field'),
|
|
528
|
+
fieldId: record.id || record.fieldId || '',
|
|
529
|
+
tableName: record.table || '',
|
|
530
|
+
tableNameZh: '',
|
|
531
|
+
tableId: record.tableId || '',
|
|
532
|
+
tableAlias: record.alias || '',
|
|
533
|
+
tableUuid: record.tableUuid || '',
|
|
534
|
+
datasourceName: record.datasourceName || '',
|
|
535
|
+
datasourceId: record.datasourceId || '',
|
|
536
|
+
type: _types.AtomsTypeEnum.FIELD
|
|
537
|
+
};
|
|
538
|
+
};
|
|
539
|
+
var normalizeSummarizeItemForSave = function normalizeSummarizeItemForSave(record) {
|
|
540
|
+
var _record$atoms;
|
|
541
|
+
if ((_record$atoms = record.atoms) !== null && _record$atoms !== void 0 && _record$atoms.length || summarizeNoArgumentConditions.includes(record.condition)) {
|
|
542
|
+
var _record$atoms2;
|
|
543
|
+
return (_record$atoms2 = record.atoms) !== null && _record$atoms2 !== void 0 && _record$atoms2.length ? stripSummarizeTableFields(record) : record;
|
|
544
|
+
}
|
|
545
|
+
var fieldAtom = createSummarizeFieldAtom(record);
|
|
546
|
+
if (!fieldAtom) return record;
|
|
547
|
+
return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, stripSummarizeTableFields(record)), {}, {
|
|
548
|
+
atoms: [fieldAtom]
|
|
549
|
+
});
|
|
550
|
+
};
|
|
551
|
+
var normalizeSummarizeByForSave = function normalizeSummarizeByForSave(record) {
|
|
552
|
+
var _record$atoms3;
|
|
553
|
+
if ((_record$atoms3 = record.atoms) !== null && _record$atoms3 !== void 0 && _record$atoms3.length) return stripSummarizeTableFields(record);
|
|
554
|
+
var fieldAtom = createSummarizeFieldAtom(record);
|
|
555
|
+
if (!fieldAtom) return record;
|
|
556
|
+
return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, stripSummarizeTableFields(record)), {}, {
|
|
557
|
+
atoms: [fieldAtom]
|
|
558
|
+
});
|
|
559
|
+
};
|
|
560
|
+
var _normalizeLegacySummarizeForSave = exports.normalizeLegacySummarizeForSave = function normalizeLegacySummarizeForSave() {
|
|
561
|
+
var metas = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
562
|
+
return metas.map(function (meta) {
|
|
563
|
+
if (meta.type === _enum.TypeEnum.summarize) {
|
|
564
|
+
return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, meta), {}, {
|
|
565
|
+
group: meta.group.map(function (item) {
|
|
566
|
+
return normalizeSummarizeItemForSave(item);
|
|
567
|
+
}),
|
|
568
|
+
by: meta.by.map(function (item) {
|
|
569
|
+
return normalizeSummarizeByForSave(item);
|
|
570
|
+
})
|
|
571
|
+
});
|
|
572
|
+
}
|
|
573
|
+
if (meta.type === _enum.TypeEnum.union) {
|
|
574
|
+
return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, meta), {}, {
|
|
575
|
+
subquery: _normalizeLegacySummarizeForSave(meta.subquery || [])
|
|
576
|
+
});
|
|
577
|
+
}
|
|
578
|
+
return meta;
|
|
579
|
+
});
|
|
580
|
+
};
|
|
518
581
|
var getObjTem = exports.getObjTem = function getObjTem(arr) {
|
|
519
582
|
var obj = {};
|
|
520
583
|
arr === null || arr === void 0 || arr.map(function (v) {
|
|
@@ -529,12 +592,8 @@ var getObjTem = exports.getObjTem = function getObjTem(arr) {
|
|
|
529
592
|
var patchData = exports.patchData = function patchData(metas) {
|
|
530
593
|
var constantList = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
531
594
|
var formulaTemplates = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
532
|
-
// return metas;
|
|
533
595
|
var mainTable = metas[0] || {};
|
|
534
596
|
var version = (mainTable === null || mainTable === void 0 ? void 0 : mainTable.patchVersion) || '';
|
|
535
|
-
// if (version != '1.0.0') {
|
|
536
|
-
// return patchMetas(metas);
|
|
537
|
-
// }
|
|
538
597
|
if (version != '1.1.0') {
|
|
539
598
|
return (0, _patch.patchMetas)(metas, constantList, getObjTem(formulaTemplates));
|
|
540
599
|
}
|
|
@@ -546,7 +605,6 @@ function reassembleByUnion() {
|
|
|
546
605
|
var result = [];
|
|
547
606
|
var i = 0;
|
|
548
607
|
var len = target.length;
|
|
549
|
-
// 如果没有任何 union,直接放入一个 group.list
|
|
550
608
|
var hasUnion = target.some(function (item) {
|
|
551
609
|
return item.type === 'union';
|
|
552
610
|
});
|
|
@@ -557,11 +615,9 @@ function reassembleByUnion() {
|
|
|
557
615
|
list: (0, _toConsumableArray2["default"])(target)
|
|
558
616
|
}];
|
|
559
617
|
}
|
|
560
|
-
// 否则正常处理
|
|
561
618
|
while (i < len) {
|
|
562
619
|
var item = target[i];
|
|
563
620
|
if (item.type !== 'union') {
|
|
564
|
-
// 收集连续非 union 的 item,统一放入一个 group.list
|
|
565
621
|
var groupList = [];
|
|
566
622
|
while (i < len && target[i].type !== 'union') {
|
|
567
623
|
groupList.push(target[i]);
|
|
@@ -574,7 +630,6 @@ function reassembleByUnion() {
|
|
|
574
630
|
});
|
|
575
631
|
} else {
|
|
576
632
|
var _item$union;
|
|
577
|
-
// 处理 union
|
|
578
633
|
result.push({
|
|
579
634
|
type: 'union',
|
|
580
635
|
name: 'union',
|
|
@@ -584,39 +639,11 @@ function reassembleByUnion() {
|
|
|
584
639
|
var subquery = item.subquery || [];
|
|
585
640
|
var convertedSubquery = reassembleByUnion(subquery);
|
|
586
641
|
result.push.apply(result, (0, _toConsumableArray2["default"])(convertedSubquery));
|
|
587
|
-
i++;
|
|
642
|
+
i++;
|
|
588
643
|
}
|
|
589
644
|
}
|
|
590
645
|
return result;
|
|
591
646
|
}
|
|
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
647
|
var buildSqlQuery = exports.buildSqlQuery = function buildSqlQuery() {
|
|
621
648
|
var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
622
649
|
var type = arguments.length > 1 ? arguments[1] : undefined;
|
|
@@ -631,124 +658,17 @@ var buildSqlQuery = exports.buildSqlQuery = function buildSqlQuery() {
|
|
|
631
658
|
var _transformSql = (0, _transformSql2.transformSql)(data),
|
|
632
659
|
sql = _transformSql.sql;
|
|
633
660
|
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
661
|
};
|
|
740
662
|
var _isError = exports.isError = function isError(item, data) {
|
|
741
663
|
var tables = getColumnsTables(data);
|
|
742
|
-
// 不存在
|
|
743
664
|
if (!item) {
|
|
744
665
|
return false;
|
|
745
666
|
}
|
|
746
667
|
if (Array.isArray(item)) {
|
|
747
668
|
return item.some(function (v) {
|
|
748
669
|
return _isError(v, data);
|
|
749
|
-
});
|
|
670
|
+
});
|
|
750
671
|
}
|
|
751
|
-
// 字段类型
|
|
752
672
|
if (item.type === _types.AtomsTypeEnum.FIELD) {
|
|
753
673
|
var datasourceId = item.datasourceId,
|
|
754
674
|
_item$tableId = item.tableId,
|
|
@@ -757,16 +677,15 @@ var _isError = exports.isError = function isError(item, data) {
|
|
|
757
677
|
tableAlias = _item$tableAlias === void 0 ? '' : _item$tableAlias,
|
|
758
678
|
fieldName = item.fieldName,
|
|
759
679
|
fieldId = item.fieldId;
|
|
760
|
-
var _datasourceId = datasourceId || 'source';
|
|
680
|
+
var _datasourceId = datasourceId || 'source';
|
|
761
681
|
if (tableId === 'source') {
|
|
762
682
|
_datasourceId = 'source';
|
|
763
683
|
}
|
|
764
684
|
if (!tableId) {
|
|
765
|
-
return false;
|
|
685
|
+
return false;
|
|
766
686
|
}
|
|
767
687
|
if (_datasourceId === 'source') {
|
|
768
688
|
var _tables$_datasourceId;
|
|
769
|
-
// 检查是否所有字段的 name 都不等于 fieldName
|
|
770
689
|
if (!(tables !== null && tables !== void 0 && (_tables$_datasourceId = tables[_datasourceId]) !== null && _tables$_datasourceId !== void 0 && _tables$_datasourceId[tableId + tableAlias])) {
|
|
771
690
|
return true;
|
|
772
691
|
} else {
|
|
@@ -783,44 +702,31 @@ var _isError = exports.isError = function isError(item, data) {
|
|
|
783
702
|
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
703
|
return v.name === fieldName && (v.id === undefined || v.id === fieldId);
|
|
785
704
|
})) !== null && _tables$_datasourceId3 !== void 0 ? _tables$_datasourceId3 : false;
|
|
786
|
-
return !hasField;
|
|
705
|
+
return !hasField;
|
|
787
706
|
}
|
|
788
707
|
}
|
|
789
|
-
// 表达式类型
|
|
790
708
|
if (item.type === _types.AtomsTypeEnum.EXPRESSION) {
|
|
791
709
|
var lhsHasError = _isError(item.lhs, data);
|
|
792
710
|
var rhsHasError = _isError(item.rhs, data);
|
|
793
711
|
return lhsHasError || rhsHasError;
|
|
794
712
|
}
|
|
795
|
-
// 公式
|
|
796
713
|
if (item.type === _types.AtomsTypeEnum.FORMULA) {
|
|
797
714
|
return _isError(item.args, data);
|
|
798
715
|
}
|
|
799
|
-
// 公式
|
|
800
716
|
if (item.type === _types.AtomsTypeEnum.COLLECTION) {
|
|
801
717
|
return _isError(item.list, data);
|
|
802
718
|
}
|
|
803
|
-
return false;
|
|
719
|
+
return false;
|
|
804
720
|
};
|
|
805
|
-
/**
|
|
806
|
-
* 深度判断 sub 是否是 obj 的子集(递归比较所有可枚举自有属性)
|
|
807
|
-
* @param sub 可能包含部分属性的对象
|
|
808
|
-
* @param obj 待比较的对象
|
|
809
|
-
* @param visited 用于处理循环引用的 WeakSet
|
|
810
|
-
*/
|
|
811
721
|
function isSubset(sub, obj) {
|
|
812
722
|
var visited = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new WeakSet();
|
|
813
|
-
// 基本类型或引用相同
|
|
814
723
|
if (sub === obj) return true;
|
|
815
|
-
// 如果任一不是对象/数组,或者为 null,则不相等(sub 为基本类型时,上面已经比较过,这里只处理对象不等的情况)
|
|
816
724
|
if ((0, _typeof2["default"])(sub) !== 'object' || sub === null || (0, _typeof2["default"])(obj) !== 'object' || obj === null) {
|
|
817
725
|
return false;
|
|
818
726
|
}
|
|
819
|
-
// 避免循环引用
|
|
820
727
|
if (visited.has(sub) || visited.has(obj)) return false;
|
|
821
728
|
visited.add(sub);
|
|
822
729
|
visited.add(obj);
|
|
823
|
-
// 处理数组
|
|
824
730
|
if (Array.isArray(sub)) {
|
|
825
731
|
if (!Array.isArray(obj) || sub.length !== obj.length) return false;
|
|
826
732
|
for (var i = 0; i < sub.length; i++) {
|
|
@@ -828,35 +734,23 @@ function isSubset(sub, obj) {
|
|
|
828
734
|
}
|
|
829
735
|
return true;
|
|
830
736
|
}
|
|
831
|
-
// 普通对象:遍历 sub 的每个键
|
|
832
737
|
for (var key in sub) {
|
|
833
738
|
if (Object.prototype.hasOwnProperty.call(sub, key)) {
|
|
834
|
-
// obj 必须包含该键
|
|
835
739
|
if (!Object.prototype.hasOwnProperty.call(obj, key)) return false;
|
|
836
|
-
// 递归比较值
|
|
837
740
|
if (!isSubset(sub[key], obj[key], visited)) return false;
|
|
838
741
|
}
|
|
839
742
|
}
|
|
840
743
|
return true;
|
|
841
744
|
}
|
|
842
|
-
/**
|
|
843
|
-
* 在嵌套结构 root 中查找是否存在一个对象,使得 target 是该对象的子集
|
|
844
|
-
* @param root 可能包含任意层数组/对象的根数据
|
|
845
|
-
* @param target 目标对象(可能只包含部分字段)
|
|
846
|
-
* @returns 是否存在
|
|
847
|
-
*/
|
|
848
745
|
function containsSubset(root, target) {
|
|
849
746
|
var visited = new WeakSet();
|
|
850
747
|
function search(current) {
|
|
851
748
|
if (current && (0, _typeof2["default"])(current) === 'object') {
|
|
852
|
-
// 避免循环引用
|
|
853
749
|
if (visited.has(current)) return false;
|
|
854
750
|
visited.add(current);
|
|
855
|
-
// 如果是普通对象(非数组),先检查是否包含 target 子集
|
|
856
751
|
if (!Array.isArray(current) && isSubset(target, current)) {
|
|
857
752
|
return true;
|
|
858
753
|
}
|
|
859
|
-
// 继续深入遍历子元素
|
|
860
754
|
if (Array.isArray(current)) {
|
|
861
755
|
var _iterator2 = (0, _createForOfIteratorHelper2["default"])(current),
|
|
862
756
|
_step2;
|
|
@@ -882,45 +776,37 @@ function containsSubset(root, target) {
|
|
|
882
776
|
}
|
|
883
777
|
return search(root);
|
|
884
778
|
}
|
|
885
|
-
// 判断当前meta中是否含有errorList
|
|
886
779
|
var isExistsError = exports.isExistsError = function isExistsError(meta, errorList) {
|
|
887
780
|
var _meta = (0, _cloneDeep3["default"])(meta);
|
|
888
781
|
return errorList.some(function (error) {
|
|
889
782
|
return containsSubset(_meta, error);
|
|
890
783
|
});
|
|
891
784
|
};
|
|
892
|
-
// 设置新字段信息
|
|
893
785
|
function setNewField(field, data) {
|
|
894
|
-
console.log('🚀 ~ setNewField ~ field:', field);
|
|
895
786
|
var _iterator3 = (0, _createForOfIteratorHelper2["default"])(data),
|
|
896
787
|
_step3;
|
|
897
788
|
try {
|
|
898
789
|
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
899
790
|
var table = _step3.value;
|
|
900
|
-
// 第一步:判断表名是否一致
|
|
901
791
|
if (table.name !== field.tableName) {
|
|
902
792
|
continue;
|
|
903
793
|
}
|
|
904
|
-
// 第二步:✅ 表名一致,立即更新所有表相关信息(不管字段是否存在)
|
|
905
794
|
field.datasourceId = table.datasourceId || '';
|
|
906
795
|
field.datasourceName = table.datasourceName || '';
|
|
907
796
|
field.tableId = table.id || '';
|
|
908
|
-
field.tableName = table.name || '';
|
|
797
|
+
field.tableName = table.name || '';
|
|
909
798
|
field.tableAlias = table.alias || '';
|
|
910
799
|
field.tableUuid = table.tableUuid || '';
|
|
911
800
|
field.tableNameZh = table.name_zh || '';
|
|
912
|
-
// 第三步:尝试找字段,更新字段相关信息(仅当字段存在时)
|
|
913
801
|
var matchedColumn = table.columns.find(function (col) {
|
|
914
802
|
return col.name === field.fieldName;
|
|
915
803
|
});
|
|
916
|
-
console.log('🚀 ~ setNewField ~ matchedColumn:', matchedColumn);
|
|
917
804
|
if (matchedColumn) {
|
|
918
805
|
field.fieldId = matchedColumn.id || '';
|
|
919
806
|
field.fieldNameZh = matchedColumn.name_zh || '';
|
|
920
807
|
field.fieldUuid = matchedColumn.fieldUuid || '';
|
|
921
808
|
field.fieldAlias = matchedColumn.fieldAlias || '';
|
|
922
809
|
}
|
|
923
|
-
// 找到同名表就停止(假设表名唯一)
|
|
924
810
|
break;
|
|
925
811
|
}
|
|
926
812
|
} catch (err) {
|
|
@@ -928,10 +814,8 @@ function setNewField(field, data) {
|
|
|
928
814
|
} finally {
|
|
929
815
|
_iterator3.f();
|
|
930
816
|
}
|
|
931
|
-
console.log('🚀 ~ setNewField ~ field:', field);
|
|
932
817
|
return field;
|
|
933
818
|
}
|
|
934
|
-
// 复制字段别名后修改对应的表id或字段id的别名
|
|
935
819
|
var _changeCopyField = exports.changeCopyField = function changeCopyField(items, data) {
|
|
936
820
|
return items.map(function (v) {
|
|
937
821
|
if (v.type === _types.AtomsTypeEnum.JOIN_DEFAULT || v.type === _types.AtomsTypeEnum.EXPRESSION) {
|
|
@@ -940,22 +824,10 @@ var _changeCopyField = exports.changeCopyField = function changeCopyField(items,
|
|
|
940
824
|
rhs: _changeCopyField(v.rhs, data)
|
|
941
825
|
});
|
|
942
826
|
} 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
827
|
v = setNewField(v, data);
|
|
951
828
|
return v;
|
|
952
829
|
} else if (v.type === _types.AtomsTypeEnum.EXISTS || v.type === _types.AtomsTypeEnum.NOT_EXISTS) {
|
|
953
830
|
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
831
|
return v;
|
|
960
832
|
} else if (v.type === _types.AtomsTypeEnum.FORMULA) {
|
|
961
833
|
v.args = _changeCopyField(v.args, data);
|
|
@@ -986,23 +858,22 @@ var changeExistsCopyField = exports.changeExistsCopyField = function changeExist
|
|
|
986
858
|
});
|
|
987
859
|
}
|
|
988
860
|
if (v.type === _enum.TypeEnum.rowLimit) {}
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
861
|
+
if (v.type === _enum.TypeEnum.summarize) {
|
|
862
|
+
v.group.map(function (group) {
|
|
863
|
+
if (group.atoms && group.atoms.length > 0) {
|
|
864
|
+
group.atoms = _changeCopyField(group.atoms, _data);
|
|
865
|
+
group.sql = (0, _helper.summarizeToSql)(v.group, group).sql;
|
|
866
|
+
}
|
|
867
|
+
});
|
|
868
|
+
v.by.map(function (by) {
|
|
869
|
+
if (by.atoms && by.atoms.length > 0) {
|
|
870
|
+
by.atoms = _changeCopyField(by.atoms, _data);
|
|
871
|
+
by.sql = (0, _helper.summarizeByToSql)(by);
|
|
872
|
+
}
|
|
873
|
+
});
|
|
874
|
+
}
|
|
1003
875
|
if (v.type === _enum.TypeEnum.filter) {
|
|
1004
876
|
if (v.filter && v.filter.length > 0) {
|
|
1005
|
-
console.log(v.filter);
|
|
1006
877
|
v.filter = _changeCopyField(v.filter, _data);
|
|
1007
878
|
}
|
|
1008
879
|
}
|