@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/es/utils.js
CHANGED
|
@@ -8,7 +8,7 @@ var _excluded = ["list"];
|
|
|
8
8
|
import { __ } from './locale';
|
|
9
9
|
import { TypeEnum, SQL_COLUMN_TYPE } from './store/enum';
|
|
10
10
|
import { AtomsTypeEnum } from './store/types';
|
|
11
|
-
import { summarizeToSql } from './store/helper';
|
|
11
|
+
import { summarizeByToSql, summarizeToSql } from './store/helper';
|
|
12
12
|
import { transformSql } from './utils/transformSql';
|
|
13
13
|
import { uuidv4 } from './utils/helper';
|
|
14
14
|
import cloneDeep from 'lodash/cloneDeep';
|
|
@@ -39,7 +39,6 @@ export var getMetaTabels = function getMetaTabels(data) {
|
|
|
39
39
|
export var getColumnsTables = function getColumnsTables(data) {
|
|
40
40
|
var obj = {};
|
|
41
41
|
data.map(function (v) {
|
|
42
|
-
// data也可直接是下拉框
|
|
43
42
|
var _v$datasourceId = v.datasourceId,
|
|
44
43
|
datasourceId = _v$datasourceId === void 0 ? 'source' : _v$datasourceId,
|
|
45
44
|
_v$id = v.id,
|
|
@@ -58,13 +57,11 @@ export var getHelper = function getHelper(list, item) {
|
|
|
58
57
|
return v.type;
|
|
59
58
|
});
|
|
60
59
|
var curIndex = list.indexOf(item);
|
|
61
|
-
var leftTypes = types.slice(0, curIndex);
|
|
62
|
-
var rightTypes = types.slice(curIndex + 1);
|
|
60
|
+
var leftTypes = types.slice(0, curIndex);
|
|
61
|
+
var rightTypes = types.slice(curIndex + 1);
|
|
63
62
|
var leftList = list.slice(0, curIndex);
|
|
64
63
|
var rightList = list.slice(curIndex + 1);
|
|
65
|
-
var topList = leftList;
|
|
66
|
-
// let prevType = list[curIndex - 1]?.type || '';
|
|
67
|
-
// let nextType = list[curIndex + 1]?.type || '';
|
|
64
|
+
var topList = leftList;
|
|
68
65
|
var prevItem = list[curIndex - 1] || {};
|
|
69
66
|
var nextItem = list[curIndex + 1] || {};
|
|
70
67
|
var ExistAboveGroupBy = false;
|
|
@@ -106,16 +103,13 @@ export var getHelper = function getHelper(list, item) {
|
|
|
106
103
|
nextItem: nextItem
|
|
107
104
|
};
|
|
108
105
|
};
|
|
109
|
-
// 获取子查询的字段
|
|
110
106
|
export var getSubColumns = function getSubColumns(metaList) {
|
|
111
107
|
var obj = {
|
|
112
108
|
metaKey: -1,
|
|
113
109
|
type: TypeEnum.customColumn,
|
|
114
110
|
customColumn: [{
|
|
115
111
|
name: '',
|
|
116
|
-
// 用户起的别名
|
|
117
112
|
fieldUuid: ''
|
|
118
|
-
// formula: '', // 公式}];
|
|
119
113
|
}]
|
|
120
114
|
};
|
|
121
115
|
var _getHelper = getHelper([].concat(_toConsumableArray(metaList), [obj]), obj),
|
|
@@ -140,9 +134,7 @@ export var getSubColumns = function getSubColumns(metaList) {
|
|
|
140
134
|
name: v.name || v.quotes,
|
|
141
135
|
name_zh: v.name_zh || v.quotes,
|
|
142
136
|
id: v.id || v.fieldId,
|
|
143
|
-
// fieldUuid: uuidv4('field'),
|
|
144
137
|
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]) || '',
|
|
145
|
-
// name_zh: '',
|
|
146
138
|
database_type: (v === null || v === void 0 ? void 0 : v.database_type) || SQL_COLUMN_TYPE.FLOAT,
|
|
147
139
|
special_type: '',
|
|
148
140
|
select: true
|
|
@@ -157,7 +149,6 @@ export var getSubColumns = function getSubColumns(metaList) {
|
|
|
157
149
|
name_zh: v.name_zh || v.quotes,
|
|
158
150
|
id: v.id || v.fieldId,
|
|
159
151
|
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]) || '',
|
|
160
|
-
// name_zh: '',
|
|
161
152
|
database_type: (v === null || v === void 0 ? void 0 : v.database_type) || SQL_COLUMN_TYPE.FLOAT,
|
|
162
153
|
special_type: '',
|
|
163
154
|
select: true
|
|
@@ -167,20 +158,15 @@ export var getSubColumns = function getSubColumns(metaList) {
|
|
|
167
158
|
data = [_data];
|
|
168
159
|
var joinData = prevList.filter(function (v) {
|
|
169
160
|
return v.type === TypeEnum.joinData;
|
|
170
|
-
})
|
|
171
|
-
// @ts-ignore
|
|
172
|
-
.filter(function (v) {
|
|
161
|
+
}).filter(function (v) {
|
|
173
162
|
return v && v.table2.name;
|
|
174
163
|
});
|
|
175
164
|
if (joinData.length) {
|
|
176
|
-
data = data.concat(
|
|
177
|
-
// @ts-ignore
|
|
178
|
-
joinData.map(function (v) {
|
|
165
|
+
data = data.concat(joinData.map(function (v) {
|
|
179
166
|
var columns = v.columns.map(function (column) {
|
|
180
167
|
return _objectSpread(_objectSpread({}, column), {}, {
|
|
181
168
|
name: column.fieldAlias || column.name,
|
|
182
169
|
fieldAlias: ''
|
|
183
|
-
// fieldUuid: uuidv4('field'),
|
|
184
170
|
});
|
|
185
171
|
});
|
|
186
172
|
return {
|
|
@@ -191,14 +177,12 @@ export var getSubColumns = function getSubColumns(metaList) {
|
|
|
191
177
|
}));
|
|
192
178
|
}
|
|
193
179
|
} else {
|
|
194
|
-
// @ts-ignore
|
|
195
180
|
data = metaList.slice().map(function (v) {
|
|
196
181
|
if (v.type === TypeEnum.data) {
|
|
197
182
|
var columns = v.columns.map(function (column) {
|
|
198
183
|
return _objectSpread(_objectSpread({}, column), {}, {
|
|
199
184
|
name: column.fieldAlias || column.name,
|
|
200
185
|
fieldAlias: ''
|
|
201
|
-
// fieldUuid: uuidv4('field'),
|
|
202
186
|
});
|
|
203
187
|
}).filter(function (item) {
|
|
204
188
|
return item.select;
|
|
@@ -213,7 +197,6 @@ export var getSubColumns = function getSubColumns(metaList) {
|
|
|
213
197
|
return _objectSpread(_objectSpread({}, column), {}, {
|
|
214
198
|
name: column.fieldAlias || column.name,
|
|
215
199
|
fieldAlias: ''
|
|
216
|
-
// fieldUuid: uuidv4('field'),
|
|
217
200
|
});
|
|
218
201
|
}).filter(function (item) {
|
|
219
202
|
return item.select;
|
|
@@ -252,20 +235,11 @@ export var getSubColumns = function getSubColumns(metaList) {
|
|
|
252
235
|
}
|
|
253
236
|
return data;
|
|
254
237
|
};
|
|
255
|
-
// data = 'data',
|
|
256
|
-
// joinData = 'joinData',
|
|
257
|
-
// permissionTable = 'permissionTable', // 权限表
|
|
258
|
-
// customColumn = 'customColumn',
|
|
259
|
-
// filter = 'filter',
|
|
260
|
-
// summarize = 'summarize',
|
|
261
|
-
// sort = 'sort',
|
|
262
|
-
// rowLimit = 'rowLimit',
|
|
263
238
|
var AliasType;
|
|
264
239
|
(function (AliasType) {
|
|
265
240
|
AliasType["table"] = "table";
|
|
266
241
|
AliasType["field"] = "field";
|
|
267
242
|
})(AliasType || (AliasType = {}));
|
|
268
|
-
// 修改别名
|
|
269
243
|
var _changeAlias = function changeAlias(items, val, type) {
|
|
270
244
|
return items.map(function (v) {
|
|
271
245
|
if (v.type === AtomsTypeEnum.JOIN_DEFAULT || v.type === AtomsTypeEnum.EXPRESSION) {
|
|
@@ -368,13 +342,26 @@ export var changeTableAlias = function changeTableAlias(list, curObj) {
|
|
|
368
342
|
v.group.map(function (group) {
|
|
369
343
|
if (group.tableUuid === tableUuid) {
|
|
370
344
|
group.alias = alias;
|
|
345
|
+
var groupAtoms = group.atoms;
|
|
346
|
+
if (groupAtoms && groupAtoms.length > 0) {
|
|
347
|
+
group.atoms = _changeAlias(groupAtoms, {
|
|
348
|
+
uuid: tableUuid,
|
|
349
|
+
alias: alias
|
|
350
|
+
}, AliasType.table);
|
|
351
|
+
}
|
|
371
352
|
group.sql = summarizeToSql(v.group, group).sql;
|
|
372
353
|
}
|
|
373
354
|
});
|
|
374
355
|
v.by.map(function (by) {
|
|
375
356
|
if (by.tableUuid === tableUuid) {
|
|
376
357
|
by.alias = alias;
|
|
377
|
-
by.
|
|
358
|
+
if (by.atoms && by.atoms.length > 0) {
|
|
359
|
+
by.atoms = _changeAlias(by.atoms, {
|
|
360
|
+
uuid: tableUuid,
|
|
361
|
+
alias: alias
|
|
362
|
+
}, AliasType.table);
|
|
363
|
+
}
|
|
364
|
+
by.sql = summarizeByToSql(by);
|
|
378
365
|
}
|
|
379
366
|
});
|
|
380
367
|
}
|
|
@@ -386,12 +373,6 @@ export var changeTableAlias = function changeTableAlias(list, curObj) {
|
|
|
386
373
|
}, AliasType.table);
|
|
387
374
|
}
|
|
388
375
|
}
|
|
389
|
-
// if ((v as MetaData | MetaJoin).subquery) {
|
|
390
|
-
// (v as MetaData | MetaJoin).subquery = changeTableAlias(
|
|
391
|
-
// (v as MetaData | MetaJoin).subquery || [],
|
|
392
|
-
// curObj,
|
|
393
|
-
// );
|
|
394
|
-
// }
|
|
395
376
|
return v;
|
|
396
377
|
})) || [];
|
|
397
378
|
};
|
|
@@ -425,13 +406,26 @@ export var changeFieldAlias = function changeFieldAlias(list, curObj) {
|
|
|
425
406
|
v.group.map(function (group) {
|
|
426
407
|
if (group.fieldUuid === uuid) {
|
|
427
408
|
group.fieldAlias = alias;
|
|
409
|
+
var groupAtoms = group.atoms;
|
|
410
|
+
if (groupAtoms && groupAtoms.length > 0) {
|
|
411
|
+
group.atoms = _changeAlias(groupAtoms, {
|
|
412
|
+
uuid: uuid,
|
|
413
|
+
alias: alias
|
|
414
|
+
}, AliasType.field);
|
|
415
|
+
}
|
|
428
416
|
group.sql = summarizeToSql(v.group, group).sql;
|
|
429
417
|
}
|
|
430
418
|
});
|
|
431
419
|
v.by.map(function (by) {
|
|
432
420
|
if (by.fieldUuid === uuid) {
|
|
433
421
|
by.fieldAlias = alias;
|
|
434
|
-
by.
|
|
422
|
+
if (by.atoms && by.atoms.length > 0) {
|
|
423
|
+
by.atoms = _changeAlias(by.atoms, {
|
|
424
|
+
uuid: uuid,
|
|
425
|
+
alias: alias
|
|
426
|
+
}, AliasType.field);
|
|
427
|
+
}
|
|
428
|
+
by.sql = summarizeByToSql(by);
|
|
435
429
|
}
|
|
436
430
|
});
|
|
437
431
|
}
|
|
@@ -466,7 +460,6 @@ export function splitByUnion(data) {
|
|
|
466
460
|
while (i < original.length) {
|
|
467
461
|
var item = original[i];
|
|
468
462
|
if (item.type === 'group') {
|
|
469
|
-
// group.list 中每一项原样推入结果
|
|
470
463
|
var _iterator = _createForOfIteratorHelper(item.list),
|
|
471
464
|
_step;
|
|
472
465
|
try {
|
|
@@ -483,7 +476,6 @@ export function splitByUnion(data) {
|
|
|
483
476
|
} else if (item.type === 'union') {
|
|
484
477
|
var list = item.list,
|
|
485
478
|
otehr = _objectWithoutProperties(item, _excluded);
|
|
486
|
-
// 查找下一个 group,并将其 list 转成 subquery
|
|
487
479
|
var nextItem = original[i + 1];
|
|
488
480
|
if (nextItem && nextItem.type === 'group') {
|
|
489
481
|
result.push(_objectSpread(_objectSpread({}, otehr), {}, {
|
|
@@ -502,6 +494,78 @@ export function splitByUnion(data) {
|
|
|
502
494
|
}
|
|
503
495
|
return result;
|
|
504
496
|
}
|
|
497
|
+
var summarizeNoArgumentConditions = ['总行数', '累积行数'];
|
|
498
|
+
var stripSummarizeTableFields = function stripSummarizeTableFields(record) {
|
|
499
|
+
return _objectSpread(_objectSpread({}, record), {}, {
|
|
500
|
+
table: '',
|
|
501
|
+
tableId: '',
|
|
502
|
+
tableUuid: '',
|
|
503
|
+
alias: '',
|
|
504
|
+
datasourceId: '',
|
|
505
|
+
datasourceName: ''
|
|
506
|
+
});
|
|
507
|
+
};
|
|
508
|
+
var createSummarizeFieldAtom = function createSummarizeFieldAtom(record) {
|
|
509
|
+
if (!record.name) return null;
|
|
510
|
+
return {
|
|
511
|
+
fieldName: record.name,
|
|
512
|
+
fieldNameZh: record.name_zh || '',
|
|
513
|
+
fieldAlias: '',
|
|
514
|
+
fieldUuid: uuidv4('field'),
|
|
515
|
+
fieldId: record.id || record.fieldId || '',
|
|
516
|
+
tableName: record.table || '',
|
|
517
|
+
tableNameZh: '',
|
|
518
|
+
tableId: record.tableId || '',
|
|
519
|
+
tableAlias: record.alias || '',
|
|
520
|
+
tableUuid: record.tableUuid || '',
|
|
521
|
+
datasourceName: record.datasourceName || '',
|
|
522
|
+
datasourceId: record.datasourceId || '',
|
|
523
|
+
type: AtomsTypeEnum.FIELD
|
|
524
|
+
};
|
|
525
|
+
};
|
|
526
|
+
var normalizeSummarizeItemForSave = function normalizeSummarizeItemForSave(record) {
|
|
527
|
+
var _record$atoms;
|
|
528
|
+
if ((_record$atoms = record.atoms) !== null && _record$atoms !== void 0 && _record$atoms.length || summarizeNoArgumentConditions.includes(record.condition)) {
|
|
529
|
+
var _record$atoms2;
|
|
530
|
+
return (_record$atoms2 = record.atoms) !== null && _record$atoms2 !== void 0 && _record$atoms2.length ? stripSummarizeTableFields(record) : record;
|
|
531
|
+
}
|
|
532
|
+
var fieldAtom = createSummarizeFieldAtom(record);
|
|
533
|
+
if (!fieldAtom) return record;
|
|
534
|
+
return _objectSpread(_objectSpread({}, stripSummarizeTableFields(record)), {}, {
|
|
535
|
+
atoms: [fieldAtom]
|
|
536
|
+
});
|
|
537
|
+
};
|
|
538
|
+
var normalizeSummarizeByForSave = function normalizeSummarizeByForSave(record) {
|
|
539
|
+
var _record$atoms3;
|
|
540
|
+
if ((_record$atoms3 = record.atoms) !== null && _record$atoms3 !== void 0 && _record$atoms3.length) return stripSummarizeTableFields(record);
|
|
541
|
+
var fieldAtom = createSummarizeFieldAtom(record);
|
|
542
|
+
if (!fieldAtom) return record;
|
|
543
|
+
return _objectSpread(_objectSpread({}, stripSummarizeTableFields(record)), {}, {
|
|
544
|
+
atoms: [fieldAtom]
|
|
545
|
+
});
|
|
546
|
+
};
|
|
547
|
+
var _normalizeLegacySummarizeForSave = function normalizeLegacySummarizeForSave() {
|
|
548
|
+
var metas = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
549
|
+
return metas.map(function (meta) {
|
|
550
|
+
if (meta.type === TypeEnum.summarize) {
|
|
551
|
+
return _objectSpread(_objectSpread({}, meta), {}, {
|
|
552
|
+
group: meta.group.map(function (item) {
|
|
553
|
+
return normalizeSummarizeItemForSave(item);
|
|
554
|
+
}),
|
|
555
|
+
by: meta.by.map(function (item) {
|
|
556
|
+
return normalizeSummarizeByForSave(item);
|
|
557
|
+
})
|
|
558
|
+
});
|
|
559
|
+
}
|
|
560
|
+
if (meta.type === TypeEnum.union) {
|
|
561
|
+
return _objectSpread(_objectSpread({}, meta), {}, {
|
|
562
|
+
subquery: _normalizeLegacySummarizeForSave(meta.subquery || [])
|
|
563
|
+
});
|
|
564
|
+
}
|
|
565
|
+
return meta;
|
|
566
|
+
});
|
|
567
|
+
};
|
|
568
|
+
export { _normalizeLegacySummarizeForSave as normalizeLegacySummarizeForSave };
|
|
505
569
|
export var getObjTem = function getObjTem(arr) {
|
|
506
570
|
var obj = {};
|
|
507
571
|
arr === null || arr === void 0 || arr.map(function (v) {
|
|
@@ -516,12 +580,8 @@ export var getObjTem = function getObjTem(arr) {
|
|
|
516
580
|
export var patchData = function patchData(metas) {
|
|
517
581
|
var constantList = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
518
582
|
var formulaTemplates = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
519
|
-
// return metas;
|
|
520
583
|
var mainTable = metas[0] || {};
|
|
521
584
|
var version = (mainTable === null || mainTable === void 0 ? void 0 : mainTable.patchVersion) || '';
|
|
522
|
-
// if (version != '1.0.0') {
|
|
523
|
-
// return patchMetas(metas);
|
|
524
|
-
// }
|
|
525
585
|
if (version != '1.1.0') {
|
|
526
586
|
return patchMetas(metas, constantList, getObjTem(formulaTemplates));
|
|
527
587
|
}
|
|
@@ -533,7 +593,6 @@ export function reassembleByUnion() {
|
|
|
533
593
|
var result = [];
|
|
534
594
|
var i = 0;
|
|
535
595
|
var len = target.length;
|
|
536
|
-
// 如果没有任何 union,直接放入一个 group.list
|
|
537
596
|
var hasUnion = target.some(function (item) {
|
|
538
597
|
return item.type === 'union';
|
|
539
598
|
});
|
|
@@ -544,11 +603,9 @@ export function reassembleByUnion() {
|
|
|
544
603
|
list: _toConsumableArray(target)
|
|
545
604
|
}];
|
|
546
605
|
}
|
|
547
|
-
// 否则正常处理
|
|
548
606
|
while (i < len) {
|
|
549
607
|
var item = target[i];
|
|
550
608
|
if (item.type !== 'union') {
|
|
551
|
-
// 收集连续非 union 的 item,统一放入一个 group.list
|
|
552
609
|
var groupList = [];
|
|
553
610
|
while (i < len && target[i].type !== 'union') {
|
|
554
611
|
groupList.push(target[i]);
|
|
@@ -561,7 +618,6 @@ export function reassembleByUnion() {
|
|
|
561
618
|
});
|
|
562
619
|
} else {
|
|
563
620
|
var _item$union;
|
|
564
|
-
// 处理 union
|
|
565
621
|
result.push({
|
|
566
622
|
type: 'union',
|
|
567
623
|
name: 'union',
|
|
@@ -571,39 +627,11 @@ export function reassembleByUnion() {
|
|
|
571
627
|
var subquery = item.subquery || [];
|
|
572
628
|
var convertedSubquery = reassembleByUnion(subquery);
|
|
573
629
|
result.push.apply(result, _toConsumableArray(convertedSubquery));
|
|
574
|
-
i++;
|
|
630
|
+
i++;
|
|
575
631
|
}
|
|
576
632
|
}
|
|
577
633
|
return result;
|
|
578
634
|
}
|
|
579
|
-
// export const buildSqlQuery = (data?: MetaListType[]): string => {
|
|
580
|
-
// if (!data || data.length === 0) return '';
|
|
581
|
-
// let sqlClauses: string[] = ['not exitis ( '];
|
|
582
|
-
// data.forEach((item) => {
|
|
583
|
-
// if (item.type === TypeEnum.data) {
|
|
584
|
-
// const meta = item as MetaData;
|
|
585
|
-
// const tableName = meta.table.name;
|
|
586
|
-
// const alias = meta.table.alias ? `AS ${meta.table.alias}` : '';
|
|
587
|
-
// const dataSource = meta.table.datasourceName;
|
|
588
|
-
// sqlClauses.push(`SELECT 1 FROM ${dataSource}.${tableName} ${alias}`);
|
|
589
|
-
// }
|
|
590
|
-
// if (item.type === TypeEnum.joinData) {
|
|
591
|
-
// const meta = item as MetaJoin;
|
|
592
|
-
// const table1 = meta.table1.alias ? meta.table1.alias : meta.table1.name;
|
|
593
|
-
// const table2 = `${meta.table2.datasourceName}.${meta.table2.name}`;
|
|
594
|
-
// const alias2 = meta.table2.alias ? meta.table2.alias : '';
|
|
595
|
-
// joins.push(`LEFT JOIN ${table2} ${alias2} ON ${table1}.${meta.columns[0]?.name} = ${alias2}.${meta.columns[0]?.name}`);
|
|
596
|
-
// }
|
|
597
|
-
// if (item.type === TypeEnum.filter) {
|
|
598
|
-
// const filterStrings = (item as MetaFilter).filter.map((f) => f.quotes).filter(Boolean); // 排除空条件
|
|
599
|
-
// if (filterStrings.length > 0) {
|
|
600
|
-
// sqlClauses.push(`WHERE ${filterStrings.join(' AND ')}`);
|
|
601
|
-
// }
|
|
602
|
-
// }
|
|
603
|
-
// });
|
|
604
|
-
// // 简单拼接 SQL 片段
|
|
605
|
-
// return sqlClauses.join(' ') + ' )' + ';';
|
|
606
|
-
// };
|
|
607
635
|
export var buildSqlQuery = function buildSqlQuery() {
|
|
608
636
|
var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
609
637
|
var type = arguments.length > 1 ? arguments[1] : undefined;
|
|
@@ -618,124 +646,17 @@ export var buildSqlQuery = function buildSqlQuery() {
|
|
|
618
646
|
var _transformSql = transformSql(data),
|
|
619
647
|
sql = _transformSql.sql;
|
|
620
648
|
return "".concat(typeName, "(").concat(sql, ") ");
|
|
621
|
-
// if (!data || data.length === 0) return '';
|
|
622
|
-
// const name = type === AtomsTypeEnum.EXISTS ? 'EXISTS' : 'NOT EXISTS';
|
|
623
|
-
// let sqlClauses: string[] = [`${name} (`];
|
|
624
|
-
// let tables: string[] = [];
|
|
625
|
-
// let joins: string[] = [];
|
|
626
|
-
// let wheres: string[] = [];
|
|
627
|
-
// data?.forEach((item) => {
|
|
628
|
-
// if (item.type === TypeEnum.data) {
|
|
629
|
-
// const meta = item as MetaData;
|
|
630
|
-
// const tableName = `${meta.table.name}`;
|
|
631
|
-
// const alias = meta.table.alias ? ` AS ${meta.table.alias}` : '';
|
|
632
|
-
// tables.push(`${tableName}${alias}`);
|
|
633
|
-
// }
|
|
634
|
-
// if (item.type === TypeEnum.joinData) {
|
|
635
|
-
// const meta = item as MetaJoin;
|
|
636
|
-
// const table2Name = `${meta.table2.name}`;
|
|
637
|
-
// const alias2 = meta.table2.alias ? ` AS ${meta.table2.alias}` : '';
|
|
638
|
-
// const table2 = `${meta.table2.alias || meta.table2.name}`;
|
|
639
|
-
// const table1 = `${meta.table1.alias || meta.table1.name}`;
|
|
640
|
-
// joins.push(`LEFT JOIN ${table2Name}${alias2} ON `);
|
|
641
|
-
// if (Array.isArray(item.expressions) && item.expressions?.length > 0) {
|
|
642
|
-
// item.expressions?.forEach((expression) => {
|
|
643
|
-
// let left = '',
|
|
644
|
-
// right = '';
|
|
645
|
-
// if (expression.type === AtomsTypeEnum.JOIN_DEFAULT) {
|
|
646
|
-
// if (expression.lhs[0].type === AtomsTypeEnum.FIELD) {
|
|
647
|
-
// left = expression.lhs
|
|
648
|
-
// .map((v) => {
|
|
649
|
-
// if (v.type === AtomsTypeEnum.FIELD) {
|
|
650
|
-
// return v.fieldName;
|
|
651
|
-
// } else {
|
|
652
|
-
// return '';
|
|
653
|
-
// }
|
|
654
|
-
// })
|
|
655
|
-
// .join(' || ');
|
|
656
|
-
// } else if (
|
|
657
|
-
// expression.lhs[0].type === AtomsTypeEnum.CONSTANT ||
|
|
658
|
-
// expression.lhs[0].type === AtomsTypeEnum.INPUT_STRING
|
|
659
|
-
// ) {
|
|
660
|
-
// left = expression.lhs[0].val;
|
|
661
|
-
// }
|
|
662
|
-
// if (expression.rhs[0].type === AtomsTypeEnum.FIELD) {
|
|
663
|
-
// right = expression.rhs
|
|
664
|
-
// .map((v) => {
|
|
665
|
-
// if (v.type === AtomsTypeEnum.FIELD) {
|
|
666
|
-
// return v.fieldName;
|
|
667
|
-
// } else {
|
|
668
|
-
// return '';
|
|
669
|
-
// }
|
|
670
|
-
// })
|
|
671
|
-
// .join(' || ');
|
|
672
|
-
// } else if (
|
|
673
|
-
// expression.rhs[0].type === AtomsTypeEnum.CONSTANT ||
|
|
674
|
-
// expression.rhs[0].type === AtomsTypeEnum.INPUT_STRING
|
|
675
|
-
// ) {
|
|
676
|
-
// right = expression.rhs[0].val;
|
|
677
|
-
// }
|
|
678
|
-
// }
|
|
679
|
-
// joins.push(`${left} = ${right}`);
|
|
680
|
-
// });
|
|
681
|
-
// }
|
|
682
|
-
// }
|
|
683
|
-
// if (item.type === TypeEnum.filter) {
|
|
684
|
-
// const filterStrings = (item as MetaFilter).filter
|
|
685
|
-
// .map((f) => {
|
|
686
|
-
// if (f.type === AtomsTypeEnum.FIELD) {
|
|
687
|
-
// return f.fieldName;
|
|
688
|
-
// } else if (
|
|
689
|
-
// f.type === AtomsTypeEnum.EXPRESSION ||
|
|
690
|
-
// f.type === AtomsTypeEnum.EXISTS ||
|
|
691
|
-
// f.type === AtomsTypeEnum.NOT_EXISTS ||
|
|
692
|
-
// f.type === AtomsTypeEnum.FORMULA ||
|
|
693
|
-
// f.type === AtomsTypeEnum.COLLECTION
|
|
694
|
-
// ) {
|
|
695
|
-
// return f.quotes;
|
|
696
|
-
// } else if (f.type === AtomsTypeEnum.JOIN_DEFAULT) {
|
|
697
|
-
// return '';
|
|
698
|
-
// } else if (
|
|
699
|
-
// f.type === AtomsTypeEnum.INPUT_NUMBER ||
|
|
700
|
-
// f.type === AtomsTypeEnum.INPUT_NUMBER_LIST ||
|
|
701
|
-
// f.type === AtomsTypeEnum.INPUT_STRING_LIST
|
|
702
|
-
// ) {
|
|
703
|
-
// return '';
|
|
704
|
-
// } else {
|
|
705
|
-
// return f.val;
|
|
706
|
-
// }
|
|
707
|
-
// })
|
|
708
|
-
// .filter(Boolean);
|
|
709
|
-
// if (filterStrings.length > 0) {
|
|
710
|
-
// wheres.push(...filterStrings);
|
|
711
|
-
// }
|
|
712
|
-
// }
|
|
713
|
-
// });
|
|
714
|
-
// // 构建子查询
|
|
715
|
-
// if (tables.length > 0) {
|
|
716
|
-
// sqlClauses.push(`SELECT 1 FROM ${tables[0]}`);
|
|
717
|
-
// if (joins.length > 0) {
|
|
718
|
-
// sqlClauses.push(joins.join(' '));
|
|
719
|
-
// }
|
|
720
|
-
// if (wheres.length > 0) {
|
|
721
|
-
// sqlClauses.push(`WHERE ${wheres.join(' ')}`);
|
|
722
|
-
// }
|
|
723
|
-
// }
|
|
724
|
-
// sqlClauses.push(')');
|
|
725
|
-
// return sqlClauses.join(' ');
|
|
726
649
|
};
|
|
727
650
|
var _isError = function isError(item, data) {
|
|
728
651
|
var tables = getColumnsTables(data);
|
|
729
|
-
// 不存在
|
|
730
652
|
if (!item) {
|
|
731
653
|
return false;
|
|
732
654
|
}
|
|
733
655
|
if (Array.isArray(item)) {
|
|
734
656
|
return item.some(function (v) {
|
|
735
657
|
return _isError(v, data);
|
|
736
|
-
});
|
|
658
|
+
});
|
|
737
659
|
}
|
|
738
|
-
// 字段类型
|
|
739
660
|
if (item.type === AtomsTypeEnum.FIELD) {
|
|
740
661
|
var datasourceId = item.datasourceId,
|
|
741
662
|
_item$tableId = item.tableId,
|
|
@@ -744,16 +665,15 @@ var _isError = function isError(item, data) {
|
|
|
744
665
|
tableAlias = _item$tableAlias === void 0 ? '' : _item$tableAlias,
|
|
745
666
|
fieldName = item.fieldName,
|
|
746
667
|
fieldId = item.fieldId;
|
|
747
|
-
var _datasourceId = datasourceId || 'source';
|
|
668
|
+
var _datasourceId = datasourceId || 'source';
|
|
748
669
|
if (tableId === 'source') {
|
|
749
670
|
_datasourceId = 'source';
|
|
750
671
|
}
|
|
751
672
|
if (!tableId) {
|
|
752
|
-
return false;
|
|
673
|
+
return false;
|
|
753
674
|
}
|
|
754
675
|
if (_datasourceId === 'source') {
|
|
755
676
|
var _tables$_datasourceId;
|
|
756
|
-
// 检查是否所有字段的 name 都不等于 fieldName
|
|
757
677
|
if (!(tables !== null && tables !== void 0 && (_tables$_datasourceId = tables[_datasourceId]) !== null && _tables$_datasourceId !== void 0 && _tables$_datasourceId[tableId + tableAlias])) {
|
|
758
678
|
return true;
|
|
759
679
|
} else {
|
|
@@ -770,45 +690,32 @@ var _isError = function isError(item, data) {
|
|
|
770
690
|
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) {
|
|
771
691
|
return v.name === fieldName && (v.id === undefined || v.id === fieldId);
|
|
772
692
|
})) !== null && _tables$_datasourceId3 !== void 0 ? _tables$_datasourceId3 : false;
|
|
773
|
-
return !hasField;
|
|
693
|
+
return !hasField;
|
|
774
694
|
}
|
|
775
695
|
}
|
|
776
|
-
// 表达式类型
|
|
777
696
|
if (item.type === AtomsTypeEnum.EXPRESSION) {
|
|
778
697
|
var lhsHasError = _isError(item.lhs, data);
|
|
779
698
|
var rhsHasError = _isError(item.rhs, data);
|
|
780
699
|
return lhsHasError || rhsHasError;
|
|
781
700
|
}
|
|
782
|
-
// 公式
|
|
783
701
|
if (item.type === AtomsTypeEnum.FORMULA) {
|
|
784
702
|
return _isError(item.args, data);
|
|
785
703
|
}
|
|
786
|
-
// 公式
|
|
787
704
|
if (item.type === AtomsTypeEnum.COLLECTION) {
|
|
788
705
|
return _isError(item.list, data);
|
|
789
706
|
}
|
|
790
|
-
return false;
|
|
707
|
+
return false;
|
|
791
708
|
};
|
|
792
|
-
/**
|
|
793
|
-
* 深度判断 sub 是否是 obj 的子集(递归比较所有可枚举自有属性)
|
|
794
|
-
* @param sub 可能包含部分属性的对象
|
|
795
|
-
* @param obj 待比较的对象
|
|
796
|
-
* @param visited 用于处理循环引用的 WeakSet
|
|
797
|
-
*/
|
|
798
709
|
export { _isError as isError };
|
|
799
710
|
function isSubset(sub, obj) {
|
|
800
711
|
var visited = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new WeakSet();
|
|
801
|
-
// 基本类型或引用相同
|
|
802
712
|
if (sub === obj) return true;
|
|
803
|
-
// 如果任一不是对象/数组,或者为 null,则不相等(sub 为基本类型时,上面已经比较过,这里只处理对象不等的情况)
|
|
804
713
|
if (_typeof(sub) !== 'object' || sub === null || _typeof(obj) !== 'object' || obj === null) {
|
|
805
714
|
return false;
|
|
806
715
|
}
|
|
807
|
-
// 避免循环引用
|
|
808
716
|
if (visited.has(sub) || visited.has(obj)) return false;
|
|
809
717
|
visited.add(sub);
|
|
810
718
|
visited.add(obj);
|
|
811
|
-
// 处理数组
|
|
812
719
|
if (Array.isArray(sub)) {
|
|
813
720
|
if (!Array.isArray(obj) || sub.length !== obj.length) return false;
|
|
814
721
|
for (var i = 0; i < sub.length; i++) {
|
|
@@ -816,35 +723,23 @@ function isSubset(sub, obj) {
|
|
|
816
723
|
}
|
|
817
724
|
return true;
|
|
818
725
|
}
|
|
819
|
-
// 普通对象:遍历 sub 的每个键
|
|
820
726
|
for (var key in sub) {
|
|
821
727
|
if (Object.prototype.hasOwnProperty.call(sub, key)) {
|
|
822
|
-
// obj 必须包含该键
|
|
823
728
|
if (!Object.prototype.hasOwnProperty.call(obj, key)) return false;
|
|
824
|
-
// 递归比较值
|
|
825
729
|
if (!isSubset(sub[key], obj[key], visited)) return false;
|
|
826
730
|
}
|
|
827
731
|
}
|
|
828
732
|
return true;
|
|
829
733
|
}
|
|
830
|
-
/**
|
|
831
|
-
* 在嵌套结构 root 中查找是否存在一个对象,使得 target 是该对象的子集
|
|
832
|
-
* @param root 可能包含任意层数组/对象的根数据
|
|
833
|
-
* @param target 目标对象(可能只包含部分字段)
|
|
834
|
-
* @returns 是否存在
|
|
835
|
-
*/
|
|
836
734
|
export function containsSubset(root, target) {
|
|
837
735
|
var visited = new WeakSet();
|
|
838
736
|
function search(current) {
|
|
839
737
|
if (current && _typeof(current) === 'object') {
|
|
840
|
-
// 避免循环引用
|
|
841
738
|
if (visited.has(current)) return false;
|
|
842
739
|
visited.add(current);
|
|
843
|
-
// 如果是普通对象(非数组),先检查是否包含 target 子集
|
|
844
740
|
if (!Array.isArray(current) && isSubset(target, current)) {
|
|
845
741
|
return true;
|
|
846
742
|
}
|
|
847
|
-
// 继续深入遍历子元素
|
|
848
743
|
if (Array.isArray(current)) {
|
|
849
744
|
var _iterator2 = _createForOfIteratorHelper(current),
|
|
850
745
|
_step2;
|
|
@@ -870,45 +765,37 @@ export function containsSubset(root, target) {
|
|
|
870
765
|
}
|
|
871
766
|
return search(root);
|
|
872
767
|
}
|
|
873
|
-
// 判断当前meta中是否含有errorList
|
|
874
768
|
export var isExistsError = function isExistsError(meta, errorList) {
|
|
875
769
|
var _meta = cloneDeep(meta);
|
|
876
770
|
return errorList.some(function (error) {
|
|
877
771
|
return containsSubset(_meta, error);
|
|
878
772
|
});
|
|
879
773
|
};
|
|
880
|
-
// 设置新字段信息
|
|
881
774
|
function setNewField(field, data) {
|
|
882
|
-
console.log('🚀 ~ setNewField ~ field:', field);
|
|
883
775
|
var _iterator3 = _createForOfIteratorHelper(data),
|
|
884
776
|
_step3;
|
|
885
777
|
try {
|
|
886
778
|
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
887
779
|
var table = _step3.value;
|
|
888
|
-
// 第一步:判断表名是否一致
|
|
889
780
|
if (table.name !== field.tableName) {
|
|
890
781
|
continue;
|
|
891
782
|
}
|
|
892
|
-
// 第二步:✅ 表名一致,立即更新所有表相关信息(不管字段是否存在)
|
|
893
783
|
field.datasourceId = table.datasourceId || '';
|
|
894
784
|
field.datasourceName = table.datasourceName || '';
|
|
895
785
|
field.tableId = table.id || '';
|
|
896
|
-
field.tableName = table.name || '';
|
|
786
|
+
field.tableName = table.name || '';
|
|
897
787
|
field.tableAlias = table.alias || '';
|
|
898
788
|
field.tableUuid = table.tableUuid || '';
|
|
899
789
|
field.tableNameZh = table.name_zh || '';
|
|
900
|
-
// 第三步:尝试找字段,更新字段相关信息(仅当字段存在时)
|
|
901
790
|
var matchedColumn = table.columns.find(function (col) {
|
|
902
791
|
return col.name === field.fieldName;
|
|
903
792
|
});
|
|
904
|
-
console.log('🚀 ~ setNewField ~ matchedColumn:', matchedColumn);
|
|
905
793
|
if (matchedColumn) {
|
|
906
794
|
field.fieldId = matchedColumn.id || '';
|
|
907
795
|
field.fieldNameZh = matchedColumn.name_zh || '';
|
|
908
796
|
field.fieldUuid = matchedColumn.fieldUuid || '';
|
|
909
797
|
field.fieldAlias = matchedColumn.fieldAlias || '';
|
|
910
798
|
}
|
|
911
|
-
// 找到同名表就停止(假设表名唯一)
|
|
912
799
|
break;
|
|
913
800
|
}
|
|
914
801
|
} catch (err) {
|
|
@@ -916,10 +803,8 @@ function setNewField(field, data) {
|
|
|
916
803
|
} finally {
|
|
917
804
|
_iterator3.f();
|
|
918
805
|
}
|
|
919
|
-
console.log('🚀 ~ setNewField ~ field:', field);
|
|
920
806
|
return field;
|
|
921
807
|
}
|
|
922
|
-
// 复制字段别名后修改对应的表id或字段id的别名
|
|
923
808
|
var _changeCopyField = function changeCopyField(items, data) {
|
|
924
809
|
return items.map(function (v) {
|
|
925
810
|
if (v.type === AtomsTypeEnum.JOIN_DEFAULT || v.type === AtomsTypeEnum.EXPRESSION) {
|
|
@@ -928,22 +813,10 @@ var _changeCopyField = function changeCopyField(items, data) {
|
|
|
928
813
|
rhs: _changeCopyField(v.rhs, data)
|
|
929
814
|
});
|
|
930
815
|
} else if (v.type === AtomsTypeEnum.FIELD) {
|
|
931
|
-
// if (type === AliasType.table && v.tableUuid === val.uuid) {
|
|
932
|
-
// v.tableAlias = val.alias;
|
|
933
|
-
// }
|
|
934
|
-
// if (type === AliasType.field && v.fieldUuid === val.uuid) {
|
|
935
|
-
// v.fieldAlias = val.alias;
|
|
936
|
-
// }
|
|
937
|
-
// 需要处理复制的字段别名
|
|
938
816
|
v = setNewField(v, data);
|
|
939
817
|
return v;
|
|
940
818
|
} else if (v.type === AtomsTypeEnum.EXISTS || v.type === AtomsTypeEnum.NOT_EXISTS) {
|
|
941
819
|
v.notExists = changeExistsCopyField(v.notExists || [], data);
|
|
942
|
-
// if (type === AliasType.table) {
|
|
943
|
-
// v.notExists = changeExistsCopyTable(v.notExists || [], data);
|
|
944
|
-
// }
|
|
945
|
-
// if (type === AliasType.field) {
|
|
946
|
-
// }
|
|
947
820
|
return v;
|
|
948
821
|
} else if (v.type === AtomsTypeEnum.FORMULA) {
|
|
949
822
|
v.args = _changeCopyField(v.args, data);
|
|
@@ -975,23 +848,22 @@ export var changeExistsCopyField = function changeExistsCopyField(list, data) {
|
|
|
975
848
|
});
|
|
976
849
|
}
|
|
977
850
|
if (v.type === TypeEnum.rowLimit) {}
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
851
|
+
if (v.type === TypeEnum.summarize) {
|
|
852
|
+
v.group.map(function (group) {
|
|
853
|
+
if (group.atoms && group.atoms.length > 0) {
|
|
854
|
+
group.atoms = _changeCopyField(group.atoms, _data);
|
|
855
|
+
group.sql = summarizeToSql(v.group, group).sql;
|
|
856
|
+
}
|
|
857
|
+
});
|
|
858
|
+
v.by.map(function (by) {
|
|
859
|
+
if (by.atoms && by.atoms.length > 0) {
|
|
860
|
+
by.atoms = _changeCopyField(by.atoms, _data);
|
|
861
|
+
by.sql = summarizeByToSql(by);
|
|
862
|
+
}
|
|
863
|
+
});
|
|
864
|
+
}
|
|
992
865
|
if (v.type === TypeEnum.filter) {
|
|
993
866
|
if (v.filter && v.filter.length > 0) {
|
|
994
|
-
console.log(v.filter);
|
|
995
867
|
v.filter = _changeCopyField(v.filter, _data);
|
|
996
868
|
}
|
|
997
869
|
}
|