@gingkoo/pandora-metabase 1.0.27 → 1.0.29
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/SplitView/index.js +11 -12
- package/lib/cjs/components/dialog/custom-column/expression-editor.js +1 -2
- package/lib/cjs/components/dialog/custom-column/tokenizedI-input.js +1 -2
- package/lib/cjs/components/dialog/expression/index.js +11 -12
- package/lib/cjs/components/dialog/formula-list/index.js +53 -43
- package/lib/cjs/components/dialog/index.js +2 -2
- package/lib/cjs/components/dialog/select-column/index.js +4 -4
- package/lib/cjs/components/dialog/select-column-multiple/index.js +21 -10
- package/lib/cjs/components/dialog/select-join-column/index.js +13 -2
- package/lib/cjs/components/dialog/select-permission-table/index.js +2 -2
- package/lib/cjs/components/dialog/select-table/index.js +7 -7
- package/lib/cjs/components/icons.js +36 -36
- package/lib/cjs/components/metabase/index.js +41 -12
- package/lib/cjs/components/metabase/index.less +3 -0
- package/lib/cjs/components/modules/components/Wrapper.js +6 -6
- package/lib/cjs/components/modules/components/item-name.d.ts +7 -0
- package/lib/cjs/components/modules/components/item-name.js +34 -0
- package/lib/cjs/components/modules/components/meta-icon.js +6 -0
- package/lib/cjs/components/modules/custom-column.js +25 -25
- package/lib/cjs/components/modules/filter.js +2 -2
- package/lib/cjs/components/modules/join-data.js +215 -81
- package/lib/cjs/components/modules/permission-table.js +24 -10
- package/lib/cjs/components/modules/sort.js +17 -13
- package/lib/cjs/components/modules/summarize/group-by.js +90 -38
- package/lib/cjs/components/modules/summarize/select-index.js +84 -38
- package/lib/cjs/components/modules/table-data.js +14 -6
- package/lib/cjs/components/popup.js +1 -2
- package/lib/cjs/hooks/use-state.js +58 -65
- package/lib/cjs/index.js +1 -2
- package/lib/cjs/locale/en.js +5 -2
- package/lib/cjs/locale/zh.js +5 -2
- package/lib/cjs/utils/transformSql.d.ts +6 -0
- package/lib/cjs/utils/transformSql.js +968 -0
- package/lib/cjs/utils.d.ts +7 -1
- package/lib/cjs/utils.js +112 -15
- package/lib/es/common/SplitView/index.js +10 -10
- package/lib/es/components/dialog/expression/index.js +10 -10
- package/lib/es/components/dialog/formula-list/index.js +54 -44
- package/lib/es/components/dialog/select-column/index.js +4 -4
- package/lib/es/components/dialog/select-column-multiple/index.js +21 -10
- package/lib/es/components/dialog/select-join-column/index.js +13 -2
- package/lib/es/components/dialog/select-permission-table/index.js +2 -2
- package/lib/es/components/dialog/select-table/index.js +7 -7
- package/lib/es/components/icons.js +36 -36
- package/lib/es/components/metabase/index.js +42 -13
- package/lib/es/components/metabase/index.less +3 -0
- package/lib/es/components/modules/components/Wrapper.js +6 -6
- package/lib/es/components/modules/components/item-name.d.ts +7 -0
- package/lib/es/components/modules/components/item-name.js +28 -0
- package/lib/es/components/modules/components/meta-icon.js +6 -0
- package/lib/es/components/modules/custom-column.js +26 -26
- package/lib/es/components/modules/filter.js +2 -2
- package/lib/es/components/modules/join-data.js +216 -82
- package/lib/es/components/modules/permission-table.js +24 -10
- package/lib/es/components/modules/sort.js +18 -14
- package/lib/es/components/modules/summarize/group-by.js +92 -40
- package/lib/es/components/modules/summarize/select-index.js +86 -40
- package/lib/es/components/modules/table-data.js +14 -6
- package/lib/es/hooks/use-state.js +58 -65
- package/lib/es/locale/en.js +5 -2
- package/lib/es/locale/zh.js +5 -2
- package/lib/es/utils/transformSql.d.ts +6 -0
- package/lib/es/utils/transformSql.js +961 -0
- package/lib/es/utils.d.ts +7 -1
- package/lib/es/utils.js +102 -4
- package/package.json +1 -1
package/lib/cjs/utils.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { TypeEnum } from './store/enum';
|
|
2
|
-
import { MetaListType, MetaSummarize, MetaData_TableType, MetaData_ColumnsType } from './store/types';
|
|
2
|
+
import { MetaListType, MetaSummarize, MetaData_TableType, MetaData_ColumnsType, AtomsItem } from './store/types';
|
|
3
3
|
import { DataType } from './components/dialog/select-column-multiple';
|
|
4
4
|
export declare const findIndex: <T>(arr: T[], item: T) => number;
|
|
5
|
+
export declare const getMetaTabels: (data: MetaListType[]) => any;
|
|
6
|
+
export declare const getColumnsTables: (data: DataType[]) => any;
|
|
5
7
|
interface HelperResultType {
|
|
6
8
|
ExistAboveGroupBy: boolean;
|
|
7
9
|
ExistBelowGroupBy: boolean;
|
|
@@ -11,6 +13,9 @@ interface HelperResultType {
|
|
|
11
13
|
nextList: MetaListType[];
|
|
12
14
|
prevGroupBy: MetaSummarize | undefined;
|
|
13
15
|
nextGroupBy: MetaSummarize | undefined;
|
|
16
|
+
prevTables: {
|
|
17
|
+
[params: string]: any;
|
|
18
|
+
};
|
|
14
19
|
}
|
|
15
20
|
export declare const getHelper: (list: MetaListType[], item: MetaListType) => HelperResultType;
|
|
16
21
|
export declare const getSubColumns: (metaList: any) => DataType[];
|
|
@@ -21,4 +26,5 @@ export declare function splitByUnion(data: any): any[];
|
|
|
21
26
|
export declare const patchData: (metas: MetaListType[]) => MetaListType[];
|
|
22
27
|
export declare function reassembleByUnion(target?: any[]): any[];
|
|
23
28
|
export declare const buildSqlQuery: (data: MetaListType[] | undefined, type: string) => string;
|
|
29
|
+
export declare const isError: (item: AtomsItem | AtomsItem[], data: DataType[]) => boolean;
|
|
24
30
|
export {};
|
package/lib/cjs/utils.js
CHANGED
|
@@ -4,19 +4,21 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.getSubColumns = exports.getHelper = exports.findIndex = exports.changeTableAlias = exports.changeFieldAlias = exports.buildSqlQuery = void 0;
|
|
7
|
+
exports.isError = exports.getSubColumns = exports.getMetaTabels = exports.getHelper = exports.getColumnsTables = exports.findIndex = exports.changeTableAlias = exports.changeFieldAlias = exports.buildSqlQuery = void 0;
|
|
8
8
|
exports.isValidSQLAlias = isValidSQLAlias;
|
|
9
9
|
exports.patchData = void 0;
|
|
10
10
|
exports.reassembleByUnion = reassembleByUnion;
|
|
11
11
|
exports.splitByUnion = splitByUnion;
|
|
12
12
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectWithoutProperties"));
|
|
13
13
|
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createForOfIteratorHelper"));
|
|
14
|
-
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
|
|
15
14
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
|
|
15
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
|
|
16
|
+
var _objectSpread6 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
|
|
16
17
|
var _locale = require("./locale");
|
|
17
18
|
var _enum = require("./store/enum");
|
|
18
19
|
var _types = require("./store/types");
|
|
19
20
|
var _helper = require("./store/helper");
|
|
21
|
+
var _transformSql2 = require("./utils/transformSql");
|
|
20
22
|
var _helper2 = require("./utils/helper");
|
|
21
23
|
var _cloneDeep3 = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
22
24
|
var _patch = require("./hooks/patch");
|
|
@@ -24,6 +26,36 @@ var _excluded = ["list"];
|
|
|
24
26
|
var findIndex = exports.findIndex = function findIndex(arr, item) {
|
|
25
27
|
return arr.indexOf(item);
|
|
26
28
|
};
|
|
29
|
+
var getMetaTabels = exports.getMetaTabels = function getMetaTabels(data) {
|
|
30
|
+
var obj = {};
|
|
31
|
+
data.map(function (v) {
|
|
32
|
+
if (v.type === _enum.TypeEnum.data) {
|
|
33
|
+
var _v$table, _v$table2;
|
|
34
|
+
obj[(_v$table = v.table) === null || _v$table === void 0 ? void 0 : _v$table.datasourceId] = (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, obj[(_v$table2 = v.table) === null || _v$table2 === void 0 ? void 0 : _v$table2.datasourceId]), {}, (0, _defineProperty2["default"])({}, v.table.id, v.columns));
|
|
35
|
+
}
|
|
36
|
+
if (v.type === _enum.TypeEnum.joinData) {
|
|
37
|
+
var _v$table3, _v$table4, _v$table5, _v$table6;
|
|
38
|
+
obj[((_v$table3 = v.table1) === null || _v$table3 === void 0 ? void 0 : _v$table3.datasourceId) || 'source'] = (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, obj[(_v$table4 = v.table1) === null || _v$table4 === void 0 ? void 0 : _v$table4.datasourceId]), {}, (0, _defineProperty2["default"])({}, v.table1.id, v.columns));
|
|
39
|
+
obj[((_v$table5 = v.table2) === null || _v$table5 === void 0 ? void 0 : _v$table5.datasourceId) || 'source'] = (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, obj[(_v$table6 = v.table2) === null || _v$table6 === void 0 ? void 0 : _v$table6.datasourceId]), {}, (0, _defineProperty2["default"])({}, v.table2.id, v.columns));
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
return obj;
|
|
43
|
+
};
|
|
44
|
+
var getColumnsTables = exports.getColumnsTables = function getColumnsTables(data) {
|
|
45
|
+
var obj = {};
|
|
46
|
+
data.map(function (v) {
|
|
47
|
+
// data也可直接是下拉框
|
|
48
|
+
var _v$datasourceId = v.datasourceId,
|
|
49
|
+
datasourceId = _v$datasourceId === void 0 ? 'source' : _v$datasourceId,
|
|
50
|
+
_v$id = v.id,
|
|
51
|
+
id = _v$id === void 0 ? '' : _v$id,
|
|
52
|
+
_v$columns = v.columns,
|
|
53
|
+
columns = _v$columns === void 0 ? [] : _v$columns;
|
|
54
|
+
var _datasourceId = datasourceId || 'source';
|
|
55
|
+
obj[_datasourceId] = (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, obj[_datasourceId]), {}, (0, _defineProperty2["default"])({}, id, columns));
|
|
56
|
+
});
|
|
57
|
+
return obj;
|
|
58
|
+
};
|
|
27
59
|
var getHelper = exports.getHelper = function getHelper(list, item) {
|
|
28
60
|
var types = list.map(function (v) {
|
|
29
61
|
return v.type;
|
|
@@ -33,6 +65,7 @@ var getHelper = exports.getHelper = function getHelper(list, item) {
|
|
|
33
65
|
var rightTypes = types.slice(curIndex + 1); // 当前元素下面的所有元素 (不包含自己)
|
|
34
66
|
var leftList = list.slice(0, curIndex);
|
|
35
67
|
var rightList = list.slice(curIndex + 1);
|
|
68
|
+
var topList = leftList; // 包含自己
|
|
36
69
|
var ExistAboveGroupBy = false;
|
|
37
70
|
var ExistBelowGroupBy = false;
|
|
38
71
|
var prevTypes = [];
|
|
@@ -41,12 +74,14 @@ var getHelper = exports.getHelper = function getHelper(list, item) {
|
|
|
41
74
|
var nextList = [];
|
|
42
75
|
var prevGroupBy;
|
|
43
76
|
var nextGroupBy;
|
|
77
|
+
var prevTables = {};
|
|
44
78
|
if (~leftTypes.indexOf(_enum.TypeEnum.summarize)) {
|
|
45
79
|
ExistAboveGroupBy = true;
|
|
46
80
|
var i = leftTypes.lastIndexOf(_enum.TypeEnum.summarize);
|
|
47
81
|
prevTypes = leftTypes.slice(i + 1);
|
|
48
82
|
prevList = leftList.slice(i + 1);
|
|
49
83
|
prevGroupBy = list[i];
|
|
84
|
+
topList = topList.slice(i + 1);
|
|
50
85
|
}
|
|
51
86
|
if (~rightTypes.indexOf(_enum.TypeEnum.summarize)) {
|
|
52
87
|
ExistBelowGroupBy = true;
|
|
@@ -55,6 +90,7 @@ var getHelper = exports.getHelper = function getHelper(list, item) {
|
|
|
55
90
|
nextList = rightList.slice(0, _i);
|
|
56
91
|
nextGroupBy = list[curIndex + _i + 1];
|
|
57
92
|
}
|
|
93
|
+
prevTables = getMetaTabels(topList);
|
|
58
94
|
return {
|
|
59
95
|
ExistAboveGroupBy: ExistAboveGroupBy,
|
|
60
96
|
ExistBelowGroupBy: ExistBelowGroupBy,
|
|
@@ -63,7 +99,8 @@ var getHelper = exports.getHelper = function getHelper(list, item) {
|
|
|
63
99
|
prevList: prevList,
|
|
64
100
|
nextList: nextList,
|
|
65
101
|
prevGroupBy: prevGroupBy,
|
|
66
|
-
nextGroupBy: nextGroupBy
|
|
102
|
+
nextGroupBy: nextGroupBy,
|
|
103
|
+
prevTables: prevTables
|
|
67
104
|
};
|
|
68
105
|
};
|
|
69
106
|
// 获取子查询的字段
|
|
@@ -94,7 +131,7 @@ var getSubColumns = exports.getSubColumns = function getSubColumns(metaList) {
|
|
|
94
131
|
if (prevGroupBy !== null && prevGroupBy !== void 0 && (_prevGroupBy$group = prevGroupBy.group) !== null && _prevGroupBy$group !== void 0 && _prevGroupBy$group.length) {
|
|
95
132
|
_data.columns = _data.columns.concat(prevGroupBy.group.map(function (v) {
|
|
96
133
|
var _v$sql;
|
|
97
|
-
return (0,
|
|
134
|
+
return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, v), {}, {
|
|
98
135
|
name: v.name || v.quotes,
|
|
99
136
|
name_zh: v.name_zh || v.quotes,
|
|
100
137
|
id: v.id || v.fieldId,
|
|
@@ -110,7 +147,7 @@ var getSubColumns = exports.getSubColumns = function getSubColumns(metaList) {
|
|
|
110
147
|
if (prevGroupBy !== null && prevGroupBy !== void 0 && (_prevGroupBy$by = prevGroupBy.by) !== null && _prevGroupBy$by !== void 0 && _prevGroupBy$by.length) {
|
|
111
148
|
_data.columns = _data.columns.concat(prevGroupBy.by.map(function (v) {
|
|
112
149
|
var _v$sql2;
|
|
113
|
-
return (0,
|
|
150
|
+
return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, v), {}, {
|
|
114
151
|
name: v.name || v.quotes,
|
|
115
152
|
name_zh: v.name_zh || v.quotes,
|
|
116
153
|
id: v.id || v.fieldId,
|
|
@@ -135,7 +172,7 @@ var getSubColumns = exports.getSubColumns = function getSubColumns(metaList) {
|
|
|
135
172
|
// @ts-ignore
|
|
136
173
|
joinData.map(function (v) {
|
|
137
174
|
var columns = v.columns.map(function (column) {
|
|
138
|
-
return (0,
|
|
175
|
+
return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, column), {}, {
|
|
139
176
|
name: column.fieldAlias || column.name,
|
|
140
177
|
fieldAlias: ''
|
|
141
178
|
// fieldUuid: uuidv4('field'),
|
|
@@ -153,7 +190,7 @@ var getSubColumns = exports.getSubColumns = function getSubColumns(metaList) {
|
|
|
153
190
|
data = metaList.slice().map(function (v) {
|
|
154
191
|
if (v.type === _enum.TypeEnum.data) {
|
|
155
192
|
var columns = v.columns.map(function (column) {
|
|
156
|
-
return (0,
|
|
193
|
+
return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, column), {}, {
|
|
157
194
|
name: column.fieldAlias || column.name,
|
|
158
195
|
fieldAlias: ''
|
|
159
196
|
// fieldUuid: uuidv4('field'),
|
|
@@ -168,7 +205,7 @@ var getSubColumns = exports.getSubColumns = function getSubColumns(metaList) {
|
|
|
168
205
|
};
|
|
169
206
|
} else if (v.type === _enum.TypeEnum.joinData) {
|
|
170
207
|
var _columns = v.columns.map(function (column) {
|
|
171
|
-
return (0,
|
|
208
|
+
return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, column), {}, {
|
|
172
209
|
name: column.fieldAlias || column.name,
|
|
173
210
|
fieldAlias: ''
|
|
174
211
|
// fieldUuid: uuidv4('field'),
|
|
@@ -226,7 +263,7 @@ var AliasType;
|
|
|
226
263
|
var _changeAlias = function changeAlias(items, val, type) {
|
|
227
264
|
return items.map(function (v) {
|
|
228
265
|
if (v.type === _types.AtomsTypeEnum.JOIN_DEFAULT || v.type === _types.AtomsTypeEnum.EXPRESSION) {
|
|
229
|
-
return (0,
|
|
266
|
+
return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, v), {}, {
|
|
230
267
|
lhs: _changeAlias(v.lhs, val, type),
|
|
231
268
|
rhs: _changeAlias(v.rhs, val, type)
|
|
232
269
|
});
|
|
@@ -265,7 +302,7 @@ var _changeAlias = function changeAlias(items, val, type) {
|
|
|
265
302
|
};
|
|
266
303
|
function isValidSQLAlias(str) {
|
|
267
304
|
if (!str) return false;
|
|
268
|
-
var regex = /^[
|
|
305
|
+
var regex = /^[a-zA-Z][a-zA-Z0-9_]{0,30}$/;
|
|
269
306
|
return regex.test(str);
|
|
270
307
|
}
|
|
271
308
|
var changeTableAlias = exports.changeTableAlias = function changeTableAlias(list, curObj) {
|
|
@@ -313,7 +350,7 @@ var changeTableAlias = exports.changeTableAlias = function changeTableAlias(list
|
|
|
313
350
|
if (v.type === _enum.TypeEnum.rowLimit) {}
|
|
314
351
|
if (v.type === _enum.TypeEnum.sort) {
|
|
315
352
|
v.sort = v.sort.map(function (sort) {
|
|
316
|
-
return (0,
|
|
353
|
+
return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, sort), {}, {
|
|
317
354
|
expression: _changeAlias(sort.expression, {
|
|
318
355
|
uuid: tableUuid,
|
|
319
356
|
alias: alias
|
|
@@ -404,7 +441,7 @@ var changeFieldAlias = exports.changeFieldAlias = function changeFieldAlias(list
|
|
|
404
441
|
if (v.type === _enum.TypeEnum.sort) {
|
|
405
442
|
if (v.sort && v.sort.length > 0) {
|
|
406
443
|
v.sort = v.sort.map(function (sort) {
|
|
407
|
-
return (0,
|
|
444
|
+
return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, sort), {}, {
|
|
408
445
|
expression: _changeAlias(sort.expression, {
|
|
409
446
|
uuid: uuid,
|
|
410
447
|
alias: alias
|
|
@@ -413,7 +450,7 @@ var changeFieldAlias = exports.changeFieldAlias = function changeFieldAlias(list
|
|
|
413
450
|
});
|
|
414
451
|
}
|
|
415
452
|
}
|
|
416
|
-
return (0,
|
|
453
|
+
return (0, _objectSpread6["default"])({}, v);
|
|
417
454
|
})) || [];
|
|
418
455
|
};
|
|
419
456
|
function splitByUnion(data) {
|
|
@@ -444,14 +481,14 @@ function splitByUnion(data) {
|
|
|
444
481
|
// 查找下一个 group,并将其 list 转成 subquery
|
|
445
482
|
var nextItem = original[i + 1];
|
|
446
483
|
if (nextItem && nextItem.type === 'group') {
|
|
447
|
-
result.push((0,
|
|
484
|
+
result.push((0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, otehr), {}, {
|
|
448
485
|
subquery: nextItem.list.map(function (subItem) {
|
|
449
486
|
return subItem;
|
|
450
487
|
})
|
|
451
488
|
}));
|
|
452
489
|
i += 2;
|
|
453
490
|
} else {
|
|
454
|
-
result.push((0,
|
|
491
|
+
result.push((0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, otehr), {}, {
|
|
455
492
|
subquery: []
|
|
456
493
|
}));
|
|
457
494
|
i++;
|
|
@@ -549,6 +586,10 @@ function reassembleByUnion() {
|
|
|
549
586
|
var buildSqlQuery = exports.buildSqlQuery = function buildSqlQuery() {
|
|
550
587
|
var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
551
588
|
var type = arguments.length > 1 ? arguments[1] : undefined;
|
|
589
|
+
var typeName = type === _types.AtomsTypeEnum.EXISTS ? 'EXISTS' : 'NOT EXISTS';
|
|
590
|
+
var _transformSql = (0, _transformSql2.transformSql)(data),
|
|
591
|
+
sql = _transformSql.sql;
|
|
592
|
+
return "".concat(typeName, " (").concat(sql, ") ");
|
|
552
593
|
if (!data || data.length === 0) return '';
|
|
553
594
|
var name = type === _types.AtomsTypeEnum.EXISTS ? 'EXISTS' : 'NOT EXISTS';
|
|
554
595
|
var sqlClauses = ["".concat(name, " (")];
|
|
@@ -634,4 +675,60 @@ var buildSqlQuery = exports.buildSqlQuery = function buildSqlQuery() {
|
|
|
634
675
|
}
|
|
635
676
|
sqlClauses.push(')');
|
|
636
677
|
return sqlClauses.join(' ');
|
|
678
|
+
};
|
|
679
|
+
var _isError = exports.isError = function isError(item, data) {
|
|
680
|
+
var tables = getColumnsTables(data);
|
|
681
|
+
// 不存在
|
|
682
|
+
if (!item) {
|
|
683
|
+
return false;
|
|
684
|
+
}
|
|
685
|
+
if (Array.isArray(item)) {
|
|
686
|
+
return item.some(function (v) {
|
|
687
|
+
return _isError(v, data);
|
|
688
|
+
}); // item可能为数组关联的时候有多选情况,只要有一个错,整体就错
|
|
689
|
+
}
|
|
690
|
+
// 字段类型
|
|
691
|
+
if (item.type === _types.AtomsTypeEnum.FIELD) {
|
|
692
|
+
var datasourceId = item.datasourceId,
|
|
693
|
+
_item$tableId = item.tableId,
|
|
694
|
+
tableId = _item$tableId === void 0 ? '' : _item$tableId,
|
|
695
|
+
fieldName = item.fieldName;
|
|
696
|
+
var _datasourceId = datasourceId || 'source'; // 默认为source
|
|
697
|
+
if (tableId === 'source') {
|
|
698
|
+
_datasourceId = 'source';
|
|
699
|
+
}
|
|
700
|
+
if (!tableId) {
|
|
701
|
+
return false; // 未选不报错
|
|
702
|
+
}
|
|
703
|
+
if (_datasourceId === 'source') {
|
|
704
|
+
var _tables$_datasourceId;
|
|
705
|
+
// 检查是否所有字段的 name 都不等于 fieldName
|
|
706
|
+
if (!(tables !== null && tables !== void 0 && (_tables$_datasourceId = tables[_datasourceId]) !== null && _tables$_datasourceId !== void 0 && _tables$_datasourceId[tableId])) {
|
|
707
|
+
return true;
|
|
708
|
+
} else {
|
|
709
|
+
var _tables$_datasourceId2;
|
|
710
|
+
return tables === null || tables === void 0 || (_tables$_datasourceId2 = tables[_datasourceId]) === null || _tables$_datasourceId2 === void 0 || (_tables$_datasourceId2 = _tables$_datasourceId2[tableId]) === null || _tables$_datasourceId2 === void 0 ? void 0 : _tables$_datasourceId2.every(function (field) {
|
|
711
|
+
return field.name !== fieldName;
|
|
712
|
+
});
|
|
713
|
+
}
|
|
714
|
+
} else {
|
|
715
|
+
var _tables$_datasourceId3;
|
|
716
|
+
return !(tables !== null && tables !== void 0 && (_tables$_datasourceId3 = tables[_datasourceId]) !== null && _tables$_datasourceId3 !== void 0 && _tables$_datasourceId3[tableId]); // 注意:返回 true 表示“有错误”
|
|
717
|
+
}
|
|
718
|
+
}
|
|
719
|
+
// 表达式类型
|
|
720
|
+
if (item.type === _types.AtomsTypeEnum.EXPRESSION) {
|
|
721
|
+
var lhsHasError = _isError(item.lhs, data);
|
|
722
|
+
var rhsHasError = _isError(item.rhs, data);
|
|
723
|
+
return lhsHasError || rhsHasError;
|
|
724
|
+
}
|
|
725
|
+
// 公式
|
|
726
|
+
if (item.type === _types.AtomsTypeEnum.FORMULA) {
|
|
727
|
+
return _isError(item.args, data);
|
|
728
|
+
}
|
|
729
|
+
// 公式
|
|
730
|
+
if (item.type === _types.AtomsTypeEnum.COLLECTION) {
|
|
731
|
+
return _isError(item.list, data);
|
|
732
|
+
}
|
|
733
|
+
return false; // 其他类型默认无错误
|
|
637
734
|
};
|
|
@@ -51,17 +51,17 @@ var SplitView = React.forwardRef(function (props, ref) {
|
|
|
51
51
|
hMaximum = _useState8[0],
|
|
52
52
|
setHMaximum = _useState8[1];
|
|
53
53
|
var _useState9 = useState(false),
|
|
54
|
-
|
|
55
|
-
vMinimum =
|
|
56
|
-
setVMinimum =
|
|
57
|
-
var
|
|
54
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
55
|
+
vMinimum = _useState0[0],
|
|
56
|
+
setVMinimum = _useState0[1];
|
|
57
|
+
var _useState1 = useState(false),
|
|
58
|
+
_useState10 = _slicedToArray(_useState1, 2),
|
|
59
|
+
vMaximum = _useState10[0],
|
|
60
|
+
setVMaximum = _useState10[1];
|
|
61
|
+
var _useState11 = useState(0),
|
|
58
62
|
_useState12 = _slicedToArray(_useState11, 2),
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
var _useState13 = useState(0),
|
|
62
|
-
_useState14 = _slicedToArray(_useState13, 2),
|
|
63
|
-
bottomHeight = _useState14[0],
|
|
64
|
-
setBottomHeight = _useState14[1];
|
|
63
|
+
bottomHeight = _useState12[0],
|
|
64
|
+
setBottomHeight = _useState12[1];
|
|
65
65
|
React.useImperativeHandle(ref, function () {
|
|
66
66
|
return {
|
|
67
67
|
open: function open() {
|
|
@@ -79,18 +79,18 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
79
79
|
special_type = _useState8[0],
|
|
80
80
|
setSpecial_type = _useState8[1];
|
|
81
81
|
var _useState9 = useState(value.formula || {}),
|
|
82
|
-
|
|
83
|
-
formula =
|
|
84
|
-
setFormula =
|
|
82
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
83
|
+
formula = _useState0[0],
|
|
84
|
+
setFormula = _useState0[1];
|
|
85
85
|
var store = useStore();
|
|
86
|
-
var
|
|
86
|
+
var _useState1 = useState(false),
|
|
87
|
+
_useState10 = _slicedToArray(_useState1, 2),
|
|
88
|
+
popupVisible = _useState10[0],
|
|
89
|
+
setPopupVisible = _useState10[1];
|
|
90
|
+
var _useState11 = useState((value === null || value === void 0 || (_value$lhs = value.lhs) === null || _value$lhs === void 0 ? void 0 : _value$lhs.length) > 0 || false),
|
|
87
91
|
_useState12 = _slicedToArray(_useState11, 2),
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
var _useState13 = useState((value === null || value === void 0 || (_value$lhs = value.lhs) === null || _value$lhs === void 0 ? void 0 : _value$lhs.length) > 0 || false),
|
|
91
|
-
_useState14 = _slicedToArray(_useState13, 2),
|
|
92
|
-
isNext = _useState14[0],
|
|
93
|
-
setIsNext = _useState14[1];
|
|
92
|
+
isNext = _useState12[0],
|
|
93
|
+
setIsNext = _useState12[1];
|
|
94
94
|
var table2Selected = Boolean(rhsVal && (rhsVal === null || rhsVal === void 0 ? void 0 : rhsVal.length) > 0);
|
|
95
95
|
var disabled = useMemo(function () {
|
|
96
96
|
if (!condition) return true;
|
|
@@ -14,7 +14,7 @@ import { AtomsTypeEnum } from '../../../store/types';
|
|
|
14
14
|
import { ColumnsPopupThemeEnum } from '../../../store/enum';
|
|
15
15
|
import { Select, Input, Modal2, InputNumber } from '@gingkoo/pandora';
|
|
16
16
|
import cloneDeep from 'lodash/cloneDeep';
|
|
17
|
-
import { buildSqlQuery } from '../../../utils';
|
|
17
|
+
import { buildSqlQuery, isError } from '../../../utils';
|
|
18
18
|
import Formula from '../formula';
|
|
19
19
|
import { AddIcon, CloseIcon } from '../../icons';
|
|
20
20
|
import { Expression, SelectColumnMultiple } from '../../dialog';
|
|
@@ -22,6 +22,7 @@ import { customTypes, operatorList, insertTemplateAt, getTemplateItem } from './
|
|
|
22
22
|
import SelectList from '../../dialog/select-list';
|
|
23
23
|
import arrow from './arrow.svg';
|
|
24
24
|
import { useStore, Provider } from '../../../hooks/use-provider';
|
|
25
|
+
import ItemName from '../../modules/components/item-name';
|
|
25
26
|
var FormulaList = forwardRef(function (props, ref) {
|
|
26
27
|
var value = props.value,
|
|
27
28
|
data = props.data,
|
|
@@ -156,7 +157,7 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
156
157
|
showSubquery: false,
|
|
157
158
|
toolbar: _toolbar,
|
|
158
159
|
btnText: __('SqlQueryBuilder.confirm'),
|
|
159
|
-
value: _value,
|
|
160
|
+
value: cloneDeep(_value),
|
|
160
161
|
onOk: function onOk(newList) {
|
|
161
162
|
try {
|
|
162
163
|
// 子查询未改变不做操作
|
|
@@ -250,23 +251,26 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
250
251
|
}, index);
|
|
251
252
|
} else if (type === AtomsTypeEnum.FIELD) {
|
|
252
253
|
// 字段
|
|
253
|
-
return
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
},
|
|
260
|
-
children: [!(v !== null && v !== void 0 && v.fieldName) && __('customColumn.selectField'), v.fieldName, _jsx("span", {
|
|
261
|
-
style: {
|
|
262
|
-
fontSize: 0
|
|
263
|
-
},
|
|
254
|
+
return _jsx(ItemName, {
|
|
255
|
+
isError: isError(v, data),
|
|
256
|
+
children: _jsxs("div", {
|
|
257
|
+
className: cx("Sqb-TableName ", {
|
|
258
|
+
notSelected: !(v !== null && v !== void 0 && v.fieldName)
|
|
259
|
+
}),
|
|
264
260
|
onClick: function onClick(e) {
|
|
265
|
-
return
|
|
261
|
+
return handleField(e, index, v);
|
|
266
262
|
},
|
|
267
|
-
children: _jsx(
|
|
268
|
-
|
|
269
|
-
|
|
263
|
+
children: [!(v !== null && v !== void 0 && v.fieldName) && __('customColumn.selectField'), v.fieldName, _jsx("span", {
|
|
264
|
+
style: {
|
|
265
|
+
fontSize: 0
|
|
266
|
+
},
|
|
267
|
+
onClick: function onClick(e) {
|
|
268
|
+
return handleDel(e, index);
|
|
269
|
+
},
|
|
270
|
+
children: _jsx(CloseIcon, {})
|
|
271
|
+
})]
|
|
272
|
+
})
|
|
273
|
+
}, index);
|
|
270
274
|
} else if (type === AtomsTypeEnum.INPUT_STRING) {
|
|
271
275
|
// 输入框
|
|
272
276
|
return _jsxs("div", {
|
|
@@ -365,39 +369,45 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
365
369
|
}, index);
|
|
366
370
|
} else if (type === AtomsTypeEnum.EXPRESSION) {
|
|
367
371
|
// 表达式
|
|
368
|
-
return
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
},
|
|
375
|
-
children: [v.quotes ? v.quotes : __('customColumn.selectExpression'), _jsx("span", {
|
|
376
|
-
style: {
|
|
377
|
-
fontSize: 0
|
|
378
|
-
},
|
|
372
|
+
return _jsx(ItemName, {
|
|
373
|
+
isError: isError(v, data),
|
|
374
|
+
children: _jsxs("div", {
|
|
375
|
+
className: cx("Sqb-TableName purple-name", {
|
|
376
|
+
notSelected: !v.quotes
|
|
377
|
+
}),
|
|
379
378
|
onClick: function onClick(e) {
|
|
380
|
-
return
|
|
379
|
+
return handleExpression(e, index, v);
|
|
381
380
|
},
|
|
382
|
-
children: _jsx(
|
|
383
|
-
|
|
384
|
-
|
|
381
|
+
children: [v.quotes ? v.quotes : __('customColumn.selectExpression'), _jsx("span", {
|
|
382
|
+
style: {
|
|
383
|
+
fontSize: 0
|
|
384
|
+
},
|
|
385
|
+
onClick: function onClick(e) {
|
|
386
|
+
return handleDel(e, index);
|
|
387
|
+
},
|
|
388
|
+
children: _jsx(CloseIcon, {})
|
|
389
|
+
})]
|
|
390
|
+
})
|
|
391
|
+
}, index);
|
|
385
392
|
} else if (type === AtomsTypeEnum.FORMULA) {
|
|
386
393
|
// 公式
|
|
387
|
-
return
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
},
|
|
392
|
-
children: [v.quotes ? v.quotes : __('customColumn.selectFormula'), _jsx("span", {
|
|
393
|
-
style: {
|
|
394
|
-
fontSize: 0
|
|
395
|
-
},
|
|
394
|
+
return _jsx(ItemName, {
|
|
395
|
+
isError: isError(v, data),
|
|
396
|
+
children: _jsxs("div", {
|
|
397
|
+
className: cx("Sqb-TableName gray-name"),
|
|
396
398
|
onClick: function onClick(e) {
|
|
397
|
-
return
|
|
399
|
+
return showFunction(e, index);
|
|
398
400
|
},
|
|
399
|
-
children: _jsx(
|
|
400
|
-
|
|
401
|
+
children: [v.quotes ? v.quotes : __('customColumn.selectFormula'), _jsx("span", {
|
|
402
|
+
style: {
|
|
403
|
+
fontSize: 0
|
|
404
|
+
},
|
|
405
|
+
onClick: function onClick(e) {
|
|
406
|
+
return handleDel(e, index);
|
|
407
|
+
},
|
|
408
|
+
children: _jsx(CloseIcon, {})
|
|
409
|
+
})]
|
|
410
|
+
})
|
|
401
411
|
}, index);
|
|
402
412
|
} else {
|
|
403
413
|
return _jsx(Select, {
|
|
@@ -97,16 +97,16 @@ var SelectColumn = function SelectColumn(_ref) {
|
|
|
97
97
|
onOk: function () {
|
|
98
98
|
var _onOk = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
99
99
|
var newColumns, newMetaList;
|
|
100
|
-
return _regeneratorRuntime.wrap(function
|
|
100
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
101
101
|
while (1) switch (_context.prev = _context.next) {
|
|
102
102
|
case 0:
|
|
103
103
|
if (isValidSQLAlias(fieldAlias)) {
|
|
104
|
-
_context.next =
|
|
104
|
+
_context.next = 1;
|
|
105
105
|
break;
|
|
106
106
|
}
|
|
107
107
|
Toast.warning(__('SqlQueryBuilder.aliasForRules'));
|
|
108
108
|
return _context.abrupt("return", false);
|
|
109
|
-
case
|
|
109
|
+
case 1:
|
|
110
110
|
newColumns = cloneDeep(columns);
|
|
111
111
|
newMetaList = store.metaList[groupIndex].list.slice();
|
|
112
112
|
newColumns[i].fieldAlias = fieldAlias;
|
|
@@ -117,7 +117,7 @@ var SelectColumn = function SelectColumn(_ref) {
|
|
|
117
117
|
setTimeout(function () {
|
|
118
118
|
store.setClosable(true);
|
|
119
119
|
}, 0);
|
|
120
|
-
case
|
|
120
|
+
case 2:
|
|
121
121
|
case "end":
|
|
122
122
|
return _context.stop();
|
|
123
123
|
}
|
|
@@ -40,7 +40,6 @@ var IconMap = {
|
|
|
40
40
|
};
|
|
41
41
|
var OPEN_GROUP = false; // mr.chen 说不弄这块 弄个开关防止后面要用
|
|
42
42
|
var SelectJoinColumn = function SelectJoinColumn(_ref) {
|
|
43
|
-
var _value$;
|
|
44
43
|
var _ref$data = _ref.data,
|
|
45
44
|
data = _ref$data === void 0 ? [] : _ref$data,
|
|
46
45
|
_value = _ref.value,
|
|
@@ -62,7 +61,7 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
|
|
|
62
61
|
_useState2 = _slicedToArray(_useState, 2),
|
|
63
62
|
value = _useState2[0],
|
|
64
63
|
setValue = _useState2[1]; // 当前选择的字段
|
|
65
|
-
var _useState3 = useState(
|
|
64
|
+
var _useState3 = useState(''),
|
|
66
65
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
67
66
|
curTable = _useState4[0],
|
|
68
67
|
setCurTable = _useState4[1]; // 当前选择的表
|
|
@@ -78,16 +77,28 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
|
|
|
78
77
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
79
78
|
tableList = _useState6[0],
|
|
80
79
|
setTableList = _useState6[1];
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
80
|
+
useEffect(function () {
|
|
81
|
+
var _value$, _value$2;
|
|
82
|
+
var tableUuid = _value === null || _value === void 0 || (_value$ = _value[0]) === null || _value$ === void 0 ? void 0 : _value$.tableUuid;
|
|
83
|
+
if ((_value === null || _value === void 0 || (_value$2 = _value[0]) === null || _value$2 === void 0 ? void 0 : _value$2.tableId) === SummarizeAlias) {
|
|
84
|
+
tableUuid = '';
|
|
85
|
+
} else {
|
|
86
|
+
var isHas = data.filter(function (v) {
|
|
87
|
+
return v.tableUuid === tableUuid;
|
|
88
|
+
});
|
|
89
|
+
if (isHas.length < 1) {
|
|
90
|
+
tableUuid = data[0].tableUuid;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
setCurTable(tableUuid);
|
|
94
|
+
}, [data, _value]);
|
|
84
95
|
useEffect(function () {
|
|
85
96
|
// setCurColumn(_value);
|
|
86
97
|
setValue(_value);
|
|
87
98
|
}, [_value]);
|
|
88
|
-
var isActive = function isActive(
|
|
99
|
+
var isActive = function isActive(id) {
|
|
89
100
|
return (value === null || value === void 0 ? void 0 : value.filter(function (v) {
|
|
90
|
-
return v.
|
|
101
|
+
return v.fieldId === id;
|
|
91
102
|
}).length) > 0;
|
|
92
103
|
};
|
|
93
104
|
useEffect(function () {
|
|
@@ -133,7 +144,7 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
|
|
|
133
144
|
return;
|
|
134
145
|
}
|
|
135
146
|
var isHas = (value === null || value === void 0 || (_value$filter = value.filter(function (v) {
|
|
136
|
-
return v.
|
|
147
|
+
return v.fieldId === (val === null || val === void 0 ? void 0 : val.fieldId);
|
|
137
148
|
})) === null || _value$filter === void 0 ? void 0 : _value$filter.length) > 0;
|
|
138
149
|
var _value = value;
|
|
139
150
|
if (tableUuid != curTable) {
|
|
@@ -143,7 +154,7 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
|
|
|
143
154
|
_value.push(val);
|
|
144
155
|
} else {
|
|
145
156
|
_value = _value.filter(function (v) {
|
|
146
|
-
return v.
|
|
157
|
+
return v.fieldId != (val === null || val === void 0 ? void 0 : val.fieldId);
|
|
147
158
|
});
|
|
148
159
|
}
|
|
149
160
|
setValue(_value);
|
|
@@ -263,7 +274,7 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
|
|
|
263
274
|
className: cx("Sqb-List-section"),
|
|
264
275
|
children: _jsx("div", {
|
|
265
276
|
className: cx("Sqb-List-item mx-2", {
|
|
266
|
-
active: isActive(v.
|
|
277
|
+
active: isActive(v.id)
|
|
267
278
|
}),
|
|
268
279
|
onClick: function onClick() {
|
|
269
280
|
if (isSummarize) {
|
|
@@ -74,12 +74,19 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
|
|
|
74
74
|
setTableList = _useState8[1];
|
|
75
75
|
useEffect(function () {
|
|
76
76
|
setValue(_value);
|
|
77
|
-
setCurTable(_value.tableUuid);
|
|
78
77
|
setCurColumn(_value.name);
|
|
79
78
|
}, [_value]);
|
|
80
79
|
useEffect(function () {
|
|
80
|
+
var tableUuid = _value === null || _value === void 0 ? void 0 : _value.tableUuid;
|
|
81
|
+
var isHas = data.filter(function (v) {
|
|
82
|
+
return v.tableUuid === tableUuid;
|
|
83
|
+
});
|
|
84
|
+
if (isHas.length < 1) {
|
|
85
|
+
tableUuid = data[0].tableUuid;
|
|
86
|
+
}
|
|
87
|
+
setCurTable(tableUuid);
|
|
81
88
|
setTableList(data.map(function (v, i) {
|
|
82
|
-
var open = !i && !
|
|
89
|
+
var open = !i && !tableUuid ? true : v.tableUuid === tableUuid; // TODO.这里只判断表名相等 没有用了 因为表上面加了一层数据源 先这样吧
|
|
83
90
|
return _objectSpread(_objectSpread({}, v), {}, {
|
|
84
91
|
open: open,
|
|
85
92
|
searchText: '',
|
|
@@ -232,6 +239,8 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
|
|
|
232
239
|
return onGroup(_objectSpread(_objectSpread(_objectSpread({}, _value), {}, {
|
|
233
240
|
tableUuid: tableUuid || _value.tableUuid
|
|
234
241
|
}, v), {}, {
|
|
242
|
+
datasourceId: datasourceId,
|
|
243
|
+
datasourceName: datasourceName,
|
|
235
244
|
table: table,
|
|
236
245
|
tableId: tableId,
|
|
237
246
|
alias: tableAlias,
|
|
@@ -303,6 +312,8 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
|
|
|
303
312
|
return onGroup(_objectSpread(_objectSpread(_objectSpread({}, _value), {}, {
|
|
304
313
|
tableUuid: tableUuid || _value.tableUuid
|
|
305
314
|
}, v), {}, {
|
|
315
|
+
datasourceId: datasourceId,
|
|
316
|
+
datasourceName: datasourceName,
|
|
306
317
|
table: table,
|
|
307
318
|
tableId: tableId,
|
|
308
319
|
alias: tableAlias,
|
|
@@ -51,12 +51,12 @@ var SelectPermissionTable = function SelectPermissionTable(_ref) {
|
|
|
51
51
|
}), _jsx("div", {
|
|
52
52
|
children: _jsxs("h4", {
|
|
53
53
|
className: 'List-item-title ml-2',
|
|
54
|
-
children: [v.datasourceName ? "".concat(v.datasourceName, ".") : '', v.name === 'source' ? PrevResult : v.name]
|
|
54
|
+
children: [v.datasourceName ? "".concat(v.datasourceName, ".") : '', v.name === 'source' ? PrevResult : v.alias || v.name]
|
|
55
55
|
})
|
|
56
56
|
})]
|
|
57
57
|
})
|
|
58
58
|
})
|
|
59
|
-
}, v.name);
|
|
59
|
+
}, v.alias || v.name);
|
|
60
60
|
})
|
|
61
61
|
})
|
|
62
62
|
})
|