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