@gingkoo/pandora-metabase 1.0.136 → 1.0.137-alpha.2
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/components/dialog/formula-list/utils.js +6 -0
- package/lib/cjs/components/dialog/select-column/index.js +13 -1
- package/lib/cjs/components/dialog/select-column-multiple/index.js +62 -17
- package/lib/cjs/components/modules/components/header.js +2 -0
- package/lib/cjs/components/modules/filter.js +4 -2
- package/lib/cjs/components/modules/join-data.js +73 -81
- package/lib/cjs/components/modules/table-data.js +11 -17
- package/lib/cjs/utils.d.ts +3 -1
- package/lib/cjs/utils.js +305 -24
- package/lib/es/components/dialog/formula-list/utils.js +6 -0
- package/lib/es/components/dialog/select-column/index.js +14 -2
- package/lib/es/components/dialog/select-column-multiple/index.js +63 -18
- package/lib/es/components/modules/components/header.js +2 -0
- package/lib/es/components/modules/filter.js +4 -2
- package/lib/es/components/modules/join-data.js +75 -83
- package/lib/es/components/modules/table-data.js +13 -19
- package/lib/es/utils.d.ts +3 -1
- package/lib/es/utils.js +304 -24
- package/package.json +1 -1
|
@@ -108,6 +108,12 @@ var customTypes = exports.customTypes = [{
|
|
|
108
108
|
}, {
|
|
109
109
|
value: _types.AtomsTypeEnum.EXPRESSION,
|
|
110
110
|
label: (0, _locale.__)('customColumn.expression')
|
|
111
|
+
}, {
|
|
112
|
+
value: _types.AtomsTypeEnum.CASE_WHEN,
|
|
113
|
+
label: (0, _locale.__)('customColumn.caseWhen')
|
|
114
|
+
}, {
|
|
115
|
+
value: _types.AtomsTypeEnum.AND_OR,
|
|
116
|
+
label: (0, _locale.__)('customColumn.andOr')
|
|
111
117
|
}, {
|
|
112
118
|
value: _types.AtomsTypeEnum.INPUT_STRING,
|
|
113
119
|
label: (0, _locale.__)('customColumn.input')
|
|
@@ -43,6 +43,18 @@ var SelectColumn = function SelectColumn(_ref) {
|
|
|
43
43
|
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
44
44
|
filterVal = _useState6[0],
|
|
45
45
|
setFilterVal = _useState6[1];
|
|
46
|
+
(0, _react.useEffect)(function () {
|
|
47
|
+
setOriginList(function (currentList) {
|
|
48
|
+
return data.map(function (item) {
|
|
49
|
+
var existingItem = currentList.find(function (current) {
|
|
50
|
+
return (0, _helper.isSameColumnByIdFirst)(current, item);
|
|
51
|
+
});
|
|
52
|
+
return (0, _objectSpread2["default"])((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, existingItem || {}), item), {}, {
|
|
53
|
+
fieldUuid: item.fieldUuid || (existingItem === null || existingItem === void 0 ? void 0 : existingItem.fieldUuid) || (0, _helper.uuidv4)('field')
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
}, [data]);
|
|
46
58
|
(0, _react.useEffect)(function () {
|
|
47
59
|
var newList = (0, _cloneDeep["default"])(originList.slice());
|
|
48
60
|
setColumns(newList.filter(function (v) {
|
|
@@ -79,7 +91,7 @@ var SelectColumn = function SelectColumn(_ref) {
|
|
|
79
91
|
var originalData = (0, _cloneDeep["default"])(originList);
|
|
80
92
|
var mergedColumns = originalData.map(function (item) {
|
|
81
93
|
var match = columns.find(function (col) {
|
|
82
|
-
return (0, _helper.
|
|
94
|
+
return (0, _helper.isSameColumnByIdFirst)(col, item);
|
|
83
95
|
});
|
|
84
96
|
return match ? (0, _cloneDeep["default"])(match) : item;
|
|
85
97
|
});
|
|
@@ -12,6 +12,7 @@ require("./index.less");
|
|
|
12
12
|
var _react = require("react");
|
|
13
13
|
var _pandora = require("@gingkoo/pandora");
|
|
14
14
|
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
15
|
+
var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
|
15
16
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
16
17
|
var _enum = require("../../../store/enum");
|
|
17
18
|
var _helper = require("../../../store/helper");
|
|
@@ -109,12 +110,12 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
|
|
|
109
110
|
var getSelectedFieldKey = function getSelectedFieldKey(field) {
|
|
110
111
|
if (!field) return '';
|
|
111
112
|
var tableKey = getFieldTableKey(field.tableId, field.tableUuid);
|
|
112
|
-
var fieldKey =
|
|
113
|
+
var fieldKey = field.fieldId || field.fieldUuid || field.fieldName || '';
|
|
113
114
|
return "".concat(tableKey, "|").concat(fieldKey);
|
|
114
115
|
};
|
|
115
116
|
var getColumnKey = function getColumnKey(column, isSummarizeColumn, tableId, tableUuid) {
|
|
116
117
|
var tableKey = getFieldTableKey(tableId, tableUuid);
|
|
117
|
-
var fieldKey =
|
|
118
|
+
var fieldKey = column.id || column.fieldId || column.fieldUuid || column.name || '';
|
|
118
119
|
return "".concat(tableKey, "|").concat(fieldKey);
|
|
119
120
|
};
|
|
120
121
|
var isActive = function isActive(id_alias, tableId, tableUuid) {
|
|
@@ -163,6 +164,58 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
|
|
|
163
164
|
return v.tableId === _helper.SummarizeAlias ? v.fieldAlias : v.fieldName;
|
|
164
165
|
}).join(' || ');
|
|
165
166
|
};
|
|
167
|
+
var getFieldAliasByColumn = function getFieldAliasByColumn(field, column) {
|
|
168
|
+
if (field.tableId === _helper.SummarizeAlias) {
|
|
169
|
+
return column.fieldAlias || column.name || '';
|
|
170
|
+
}
|
|
171
|
+
if (column.fieldAlias) return column.fieldAlias;
|
|
172
|
+
if (field.fieldAlias === field.fieldName || field.fieldAlias === column.name) return '';
|
|
173
|
+
return field.fieldAlias || '';
|
|
174
|
+
};
|
|
175
|
+
var getMatchedColumnByField = function getMatchedColumnByField(field, tableItem) {
|
|
176
|
+
if (!tableItem) return null;
|
|
177
|
+
var tableId = tableItem.id || '';
|
|
178
|
+
var tableUuid = tableItem.tableUuid || '';
|
|
179
|
+
return (tableItem.columns || []).find(function (column) {
|
|
180
|
+
return (0, _helper2.isSameColumnByIdFirst)((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, column), {}, {
|
|
181
|
+
tableId: tableId,
|
|
182
|
+
tableUuid: tableUuid,
|
|
183
|
+
datasourceId: tableItem.datasourceId || ''
|
|
184
|
+
}), field);
|
|
185
|
+
}) || null;
|
|
186
|
+
};
|
|
187
|
+
var syncSelectedFieldByColumn = function syncSelectedFieldByColumn(field, column, tableItem) {
|
|
188
|
+
return (0, _objectSpread2["default"])((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, field), {}, {
|
|
189
|
+
tableName: (tableItem === null || tableItem === void 0 ? void 0 : tableItem.name) || field.tableName || '',
|
|
190
|
+
tableId: (tableItem === null || tableItem === void 0 ? void 0 : tableItem.id) || field.tableId || '',
|
|
191
|
+
tableNameZh: (tableItem === null || tableItem === void 0 ? void 0 : tableItem.name_zh) || field.tableNameZh || '',
|
|
192
|
+
tableAlias: (tableItem === null || tableItem === void 0 ? void 0 : tableItem.alias) || field.tableAlias || '',
|
|
193
|
+
tableUuid: (tableItem === null || tableItem === void 0 ? void 0 : tableItem.tableUuid) || field.tableUuid || '',
|
|
194
|
+
datasourceName: (tableItem === null || tableItem === void 0 ? void 0 : tableItem.datasourceName) || field.datasourceName || '',
|
|
195
|
+
datasourceId: (tableItem === null || tableItem === void 0 ? void 0 : tableItem.datasourceId) || field.datasourceId || ''
|
|
196
|
+
}, 'name' in field ? {
|
|
197
|
+
name: column.name || field.name || ''
|
|
198
|
+
} : {}), {}, {
|
|
199
|
+
fieldName: column.name || field.fieldName || '',
|
|
200
|
+
fieldId: column.id || column.fieldId || field.fieldId || '',
|
|
201
|
+
fieldNameZh: field.fieldNameZh || column.name_zh || '',
|
|
202
|
+
fieldAlias: getFieldAliasByColumn(field, column),
|
|
203
|
+
fieldUuid: column.fieldUuid || field.fieldUuid || ''
|
|
204
|
+
});
|
|
205
|
+
};
|
|
206
|
+
(0, _react.useEffect)(function () {
|
|
207
|
+
var syncedValue = (_value || []).map(function (field) {
|
|
208
|
+
var tableItem = data.find(function (item) {
|
|
209
|
+
return isSameSelectedTable(field, item.id || '', item.tableUuid || '');
|
|
210
|
+
});
|
|
211
|
+
var matchedColumn = getMatchedColumnByField(field, tableItem);
|
|
212
|
+
return matchedColumn ? syncSelectedFieldByColumn(field, matchedColumn, tableItem) : field;
|
|
213
|
+
});
|
|
214
|
+
setValue(syncedValue);
|
|
215
|
+
if (!(0, _isEqual["default"])(syncedValue, _value || [])) {
|
|
216
|
+
onSelect === null || onSelect === void 0 || onSelect(syncedValue, getQuotes(syncedValue));
|
|
217
|
+
}
|
|
218
|
+
}, [data, _value]);
|
|
166
219
|
var changeValue = function changeValue(tableUuid, val) {
|
|
167
220
|
if (!multiple) {
|
|
168
221
|
var _data = val ? [val] : [];
|
|
@@ -173,7 +226,7 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
|
|
|
173
226
|
return;
|
|
174
227
|
}
|
|
175
228
|
var isHas = (value === null || value === void 0 ? void 0 : value.filter(function (v) {
|
|
176
|
-
return val && isSameSelectedTable(v, val.tableId, val.tableUuid) && (0, _helper2.
|
|
229
|
+
return val && isSameSelectedTable(v, val.tableId, val.tableUuid) && (0, _helper2.isSameColumnByIdFirst)(v, val);
|
|
177
230
|
}).length) > 0;
|
|
178
231
|
var _value = value.slice();
|
|
179
232
|
if (tableUuid != selectedTable) {
|
|
@@ -188,26 +241,18 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
|
|
|
188
241
|
_value.push(val);
|
|
189
242
|
} else {
|
|
190
243
|
_value = _value.filter(function (v) {
|
|
191
|
-
return !(val && isSameSelectedTable(v, val.tableId, val.tableUuid) && (0, _helper2.
|
|
244
|
+
return !(val && isSameSelectedTable(v, val.tableId, val.tableUuid) && (0, _helper2.isSameColumnByIdFirst)(v, val));
|
|
192
245
|
});
|
|
193
246
|
}
|
|
194
247
|
var curTableItem = data.find(function (v) {
|
|
195
248
|
return v.tableUuid === tableUuid;
|
|
196
249
|
});
|
|
197
250
|
var curTableId = (curTableItem === null || curTableItem === void 0 ? void 0 : curTableItem.id) || '';
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
}
|
|
204
|
-
return (0, _helper2.isSameColumnByIdFirst)((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, item1), {}, {
|
|
205
|
-
tableId: curTableId,
|
|
206
|
-
tableUuid: tableUuid,
|
|
207
|
-
datasourceId: (curTableItem === null || curTableItem === void 0 ? void 0 : curTableItem.datasourceId) || ''
|
|
208
|
-
}), item2);
|
|
209
|
-
});
|
|
210
|
-
});
|
|
251
|
+
_value = _value.map(function (item2) {
|
|
252
|
+
if (!isSameSelectedTable(item2, curTableId, tableUuid)) return null;
|
|
253
|
+
var matchedColumn = getMatchedColumnByField(item2, curTableItem);
|
|
254
|
+
return matchedColumn ? syncSelectedFieldByColumn(item2, matchedColumn, curTableItem) : null;
|
|
255
|
+
}).filter(Boolean);
|
|
211
256
|
setValue(_value);
|
|
212
257
|
setSelectedTable(tableUuid);
|
|
213
258
|
setCurTable(tableUuid);
|
|
@@ -15,6 +15,7 @@ var _locale = require("../../../locale");
|
|
|
15
15
|
var _useProvider = require("../../../hooks/use-provider");
|
|
16
16
|
var _utils = require("../../../utils");
|
|
17
17
|
var _diffViewer = _interopRequireDefault(require("../../dialog/diff-viewer"));
|
|
18
|
+
var _helperDom = require("../../../utils/helper-dom");
|
|
18
19
|
var Header = function Header(props) {
|
|
19
20
|
var meta = props.meta,
|
|
20
21
|
groupIndex = props.groupIndex,
|
|
@@ -35,6 +36,7 @@ var Header = function Header(props) {
|
|
|
35
36
|
oldCode = _yield$store$getModul.oldCode;
|
|
36
37
|
newCode = _yield$store$getModul.newCode;
|
|
37
38
|
o = _pandora.Modal2.openModal({
|
|
39
|
+
zIndex: (0, _helperDom.getTopLayerZIndex)() + 1,
|
|
38
40
|
title: '差异对比',
|
|
39
41
|
transparentMask: true,
|
|
40
42
|
content: (0, _jsxRuntime.jsx)(_diffViewer["default"], {
|
|
@@ -50,9 +50,10 @@ var Filter = function Filter(props) {
|
|
|
50
50
|
if (prevGroupBy !== null && prevGroupBy !== void 0 && (_prevGroupBy$group = prevGroupBy.group) !== null && _prevGroupBy$group !== void 0 && _prevGroupBy$group.length) {
|
|
51
51
|
_data.columns = _data.columns.concat(prevGroupBy.group.map(function (v) {
|
|
52
52
|
return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, v), {}, {
|
|
53
|
-
name: v.name || v.quotes,
|
|
53
|
+
name: v.fieldAlias || v.name || v.quotes,
|
|
54
54
|
name_zh: v.name_zh || v.quotes,
|
|
55
55
|
id: v.id || v.fieldId,
|
|
56
|
+
fieldAlias: '',
|
|
56
57
|
database_type: (v === null || v === void 0 ? void 0 : v.database_type) || _enum.SQL_COLUMN_TYPE.FLOAT,
|
|
57
58
|
sql: v.sql,
|
|
58
59
|
special_type: '',
|
|
@@ -63,9 +64,10 @@ var Filter = function Filter(props) {
|
|
|
63
64
|
if (prevGroupBy !== null && prevGroupBy !== void 0 && (_prevGroupBy$by = prevGroupBy.by) !== null && _prevGroupBy$by !== void 0 && _prevGroupBy$by.length) {
|
|
64
65
|
_data.columns = _data.columns.concat(prevGroupBy.by.map(function (v) {
|
|
65
66
|
return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, v), {}, {
|
|
66
|
-
name: v.name || v.quotes,
|
|
67
|
+
name: v.fieldAlias || v.name || v.quotes,
|
|
67
68
|
name_zh: v.name_zh || v.quotes,
|
|
68
69
|
id: v.id || v.fieldId,
|
|
70
|
+
fieldAlias: '',
|
|
69
71
|
database_type: (v === null || v === void 0 ? void 0 : v.database_type) || _enum.SQL_COLUMN_TYPE.FLOAT,
|
|
70
72
|
sql: v.sql,
|
|
71
73
|
special_type: '',
|
|
@@ -17,7 +17,6 @@ var _classnames = _interopRequireDefault(require("classnames"));
|
|
|
17
17
|
var _pandora = require("@gingkoo/pandora");
|
|
18
18
|
var _pandoraIcons = require("@gingkoo/pandora-icons");
|
|
19
19
|
var _index = _interopRequireDefault(require("../../index"));
|
|
20
|
-
var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
|
21
20
|
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
22
21
|
var _helper = require("../../utils/helper");
|
|
23
22
|
var _helperDom = require("../../utils/helper-dom");
|
|
@@ -38,7 +37,19 @@ var _dialog = require("../dialog");
|
|
|
38
37
|
var _useProvider = require("../../hooks/use-provider");
|
|
39
38
|
var _excluded = ["subToolbar", "notExistsColumns", "isExit", "toolbar"];
|
|
40
39
|
var PrevResult = 'Previous results';
|
|
41
|
-
var
|
|
40
|
+
var normalizeJoinOperator = function normalizeJoinOperator(val) {
|
|
41
|
+
return String(val).toUpperCase() === 'OR' ? 'OR' : 'AND';
|
|
42
|
+
};
|
|
43
|
+
var isJoinOperator = function isJoinOperator(item) {
|
|
44
|
+
return (item === null || item === void 0 ? void 0 : item.type) === _types.AtomsTypeEnum.OPERATOR;
|
|
45
|
+
};
|
|
46
|
+
var menuJoinOperator = [{
|
|
47
|
+
key: 'AND',
|
|
48
|
+
label: 'AND'
|
|
49
|
+
}, {
|
|
50
|
+
key: 'OR',
|
|
51
|
+
label: 'OR'
|
|
52
|
+
}];
|
|
42
53
|
var FlagLocation;
|
|
43
54
|
(function (FlagLocation) {
|
|
44
55
|
FlagLocation["TABLE_1"] = "table1";
|
|
@@ -50,7 +61,7 @@ var ExpressionsEnum;
|
|
|
50
61
|
ExpressionsEnum["RIGHT"] = "rhs";
|
|
51
62
|
})(ExpressionsEnum || (ExpressionsEnum = {}));
|
|
52
63
|
var getText = function getText(v) {
|
|
53
|
-
return (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(
|
|
64
|
+
return (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, _types.AtomsTypeEnum.JOIN_DEFAULT, 'joinData.default'), _types.AtomsTypeEnum.EXPRESSION, 'joinData.expression'), _types.AtomsTypeEnum.COLLECTION, 'customColumn.collection')[v];
|
|
54
65
|
};
|
|
55
66
|
var menuTypes = [{
|
|
56
67
|
key: _types.AtomsTypeEnum.JOIN_DEFAULT,
|
|
@@ -58,19 +69,10 @@ var menuTypes = [{
|
|
|
58
69
|
}, {
|
|
59
70
|
key: _types.AtomsTypeEnum.EXPRESSION,
|
|
60
71
|
label: (0, _locale.__)(getText(_types.AtomsTypeEnum.EXPRESSION))
|
|
61
|
-
}, {
|
|
62
|
-
key: _types.AtomsTypeEnum.OPERATOR,
|
|
63
|
-
label: (0, _locale.__)(getText(_types.AtomsTypeEnum.OPERATOR))
|
|
64
72
|
}, {
|
|
65
73
|
key: _types.AtomsTypeEnum.COLLECTION,
|
|
66
74
|
label: (0, _locale.__)(getText(_types.AtomsTypeEnum.COLLECTION))
|
|
67
75
|
}];
|
|
68
|
-
var menuOperator = operators.map(function (v) {
|
|
69
|
-
return {
|
|
70
|
-
key: v,
|
|
71
|
-
label: v
|
|
72
|
-
};
|
|
73
|
-
});
|
|
74
76
|
var JoinData = function JoinData(props) {
|
|
75
77
|
var _meta$subquery, _meta$subquery2, _meta$subquery3, _meta$table4, _meta$table5, _meta$table7, _meta$table8, _meta$table9, _meta$table0, _meta$expressions, _meta$table1, _meta$table10, _meta$expressions2, _store$showMainColumn, _store$showMainColumn2;
|
|
76
78
|
var meta = props.meta,
|
|
@@ -131,6 +133,26 @@ var JoinData = function JoinData(props) {
|
|
|
131
133
|
tableIsDel();
|
|
132
134
|
}, 0);
|
|
133
135
|
}, [meta]);
|
|
136
|
+
(0, _react.useEffect)(function () {
|
|
137
|
+
var expressions = meta.expressions || [];
|
|
138
|
+
var hasInvalidOperator = expressions.some(function (item) {
|
|
139
|
+
return item.type === _types.AtomsTypeEnum.OPERATOR && item.val !== normalizeJoinOperator(item.val);
|
|
140
|
+
});
|
|
141
|
+
if (!hasInvalidOperator) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
var currentIndex = (0, _utils2.findIndex)(store.metaList[groupIndex].list, meta);
|
|
145
|
+
var newMeta = store.metaList[groupIndex].list.slice();
|
|
146
|
+
newMeta[currentIndex].expressions = expressions.map(function (item) {
|
|
147
|
+
if (item.type !== _types.AtomsTypeEnum.OPERATOR) {
|
|
148
|
+
return item;
|
|
149
|
+
}
|
|
150
|
+
return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, item), {}, {
|
|
151
|
+
val: normalizeJoinOperator(item.val)
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
store.setMeta(newMeta, groupIndex);
|
|
155
|
+
}, [meta.expressions]);
|
|
134
156
|
var getTableColumns = function getTableColumns() {
|
|
135
157
|
var data = [];
|
|
136
158
|
var _getHelper2 = (0, _utils2.getHelper)(store.metaList[groupIndex].list, meta),
|
|
@@ -957,7 +979,6 @@ var JoinData = function JoinData(props) {
|
|
|
957
979
|
var childModalZIndex = (0, _helperDom.getTopLayerZIndex)() + 1;
|
|
958
980
|
var newMeta = (0, _cloneDeep["default"])(store.metaList[groupIndex].list);
|
|
959
981
|
var index = (0, _utils2.findIndex)(store.metaList[groupIndex].list, meta);
|
|
960
|
-
var oldList = (0, _cloneDeep["default"])(newMeta[index].subquery);
|
|
961
982
|
var _toolbar = subToolbar || toolbar;
|
|
962
983
|
var o = _pandora.Modal2.openModal({
|
|
963
984
|
zIndex: childModalZIndex,
|
|
@@ -973,21 +994,22 @@ var JoinData = function JoinData(props) {
|
|
|
973
994
|
onOk: function onOk(newList) {
|
|
974
995
|
try {
|
|
975
996
|
var _store$preProps3;
|
|
976
|
-
if ((0, _isEqual["default"])(newList, oldList)) {
|
|
977
|
-
o.close();
|
|
978
|
-
return;
|
|
979
|
-
}
|
|
980
997
|
newMeta[index].subquery = newList;
|
|
981
998
|
newMeta[index].table2 = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, newList[0].table), {}, {
|
|
982
999
|
alias: newMeta[index].table2.alias || (0, _helper.getAlias)(newList[0].table.name, newMeta, ((_store$preProps3 = store.preProps) === null || _store$preProps3 === void 0 ? void 0 : _store$preProps3.notExistsColumns) || [])
|
|
983
1000
|
});
|
|
984
1001
|
var items = (0, _utils2.getSubColumns)(newList);
|
|
1002
|
+
var subQueryTable = newMeta[index].table2;
|
|
985
1003
|
var newColumns = items.flatMap(function (item) {
|
|
986
1004
|
return item.columns.map(function (column) {
|
|
1005
|
+
var columnMeta = column;
|
|
987
1006
|
return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, column), {}, {
|
|
988
|
-
tableId:
|
|
989
|
-
tableUuid:
|
|
990
|
-
|
|
1007
|
+
tableId: subQueryTable.id || item.id || column.tableId || column.id,
|
|
1008
|
+
tableUuid: subQueryTable.tableUuid || item.tableUuid || column.tableUuid,
|
|
1009
|
+
tableName: subQueryTable.name || item.name || columnMeta.tableName || '',
|
|
1010
|
+
tableAlias: subQueryTable.alias || item.alias || columnMeta.tableAlias || '',
|
|
1011
|
+
datasourceId: subQueryTable.datasourceId || item.datasourceId || column.datasourceId || '',
|
|
1012
|
+
datasourceName: subQueryTable.datasourceName || item.datasourceName || column.datasourceName || ''
|
|
991
1013
|
});
|
|
992
1014
|
});
|
|
993
1015
|
}).map(function (v) {
|
|
@@ -995,15 +1017,10 @@ var JoinData = function JoinData(props) {
|
|
|
995
1017
|
select: false
|
|
996
1018
|
});
|
|
997
1019
|
});
|
|
998
|
-
newMeta[index].columns
|
|
999
|
-
|
|
1000
|
-
return (0, _helper.isSameColumnByIdFirst)(oldCol, newCol);
|
|
1001
|
-
});
|
|
1002
|
-
var _column = existingCol ? existingCol : newCol;
|
|
1003
|
-
_column.select = store.isSelectFields || _column.select;
|
|
1004
|
-
return _column;
|
|
1005
|
-
});
|
|
1020
|
+
var oldColumns = newMeta[index].columns;
|
|
1021
|
+
newMeta[index].columns = (0, _utils2.mergeSubQueryColumns)(newColumns, oldColumns, store.isSelectFields);
|
|
1006
1022
|
initExpressions(newMeta);
|
|
1023
|
+
newMeta = (0, _utils2.syncSubQueryFieldReferences)(newMeta, newMeta[index].table2, newMeta[index].columns, oldColumns);
|
|
1007
1024
|
store.setMeta(newMeta, groupIndex, {
|
|
1008
1025
|
obj: newList,
|
|
1009
1026
|
type: _types.ChangeType.subQuery
|
|
@@ -1070,10 +1087,26 @@ var JoinData = function JoinData(props) {
|
|
|
1070
1087
|
onCancel: function onCancel() {}
|
|
1071
1088
|
});
|
|
1072
1089
|
};
|
|
1090
|
+
var cleanJoinOperators = function cleanJoinOperators(expressions) {
|
|
1091
|
+
for (var i = expressions.length - 1; i >= 0; i--) {
|
|
1092
|
+
if (isJoinOperator(expressions[i]) && (i === 0 || i === expressions.length - 1 || isJoinOperator(expressions[i - 1]))) {
|
|
1093
|
+
expressions.splice(i, 1);
|
|
1094
|
+
}
|
|
1095
|
+
}
|
|
1096
|
+
};
|
|
1073
1097
|
var changeOperator = function changeOperator(key, i) {
|
|
1074
1098
|
var index = (0, _utils2.findIndex)(store.metaList[groupIndex].list, meta);
|
|
1075
1099
|
var newMeta = store.metaList[groupIndex].list.slice();
|
|
1076
|
-
newMeta[index].expressions[i]
|
|
1100
|
+
var operator = newMeta[index].expressions[i];
|
|
1101
|
+
operator.val = normalizeJoinOperator(key);
|
|
1102
|
+
store.setMeta(newMeta, groupIndex);
|
|
1103
|
+
};
|
|
1104
|
+
var removeExpression = function removeExpression(i) {
|
|
1105
|
+
var index = (0, _utils2.findIndex)(store.metaList[groupIndex].list, meta);
|
|
1106
|
+
var newMeta = store.metaList[groupIndex].list.slice();
|
|
1107
|
+
var expressions = newMeta[index].expressions;
|
|
1108
|
+
expressions.splice(i, 1);
|
|
1109
|
+
cleanJoinOperators(expressions);
|
|
1077
1110
|
store.setMeta(newMeta, groupIndex);
|
|
1078
1111
|
};
|
|
1079
1112
|
var changeExpression = function changeExpression(e, i) {
|
|
@@ -1139,19 +1172,15 @@ var JoinData = function JoinData(props) {
|
|
|
1139
1172
|
}],
|
|
1140
1173
|
type: type
|
|
1141
1174
|
};
|
|
1142
|
-
store.setMeta(newMeta, groupIndex);
|
|
1143
|
-
}
|
|
1144
|
-
if (type === _types.AtomsTypeEnum.OPERATOR) {
|
|
1145
|
-
item = {
|
|
1146
|
-
val: 'AND',
|
|
1147
|
-
type: type
|
|
1148
|
-
};
|
|
1149
1175
|
}
|
|
1150
1176
|
if (!item) {
|
|
1151
1177
|
return;
|
|
1152
1178
|
}
|
|
1153
1179
|
if (i >= 0) {
|
|
1154
|
-
newMeta[index].expressions.splice(i + 1, 0,
|
|
1180
|
+
newMeta[index].expressions.splice(i + 1, 0, {
|
|
1181
|
+
val: 'AND',
|
|
1182
|
+
type: _types.AtomsTypeEnum.OPERATOR
|
|
1183
|
+
}, item);
|
|
1155
1184
|
} else {
|
|
1156
1185
|
newMeta[index].expressions.push(item);
|
|
1157
1186
|
}
|
|
@@ -1466,16 +1495,14 @@ var JoinData = function JoinData(props) {
|
|
|
1466
1495
|
className: 'mr-2 operator-icon',
|
|
1467
1496
|
icon: (0, _jsxRuntime.jsx)(_pandoraIcons.FfLine, {}),
|
|
1468
1497
|
onClick: function onClick() {
|
|
1469
|
-
|
|
1470
|
-
var newMeta = store.metaList[groupIndex].list.slice();
|
|
1471
|
-
newMeta[index].expressions.splice(i, 1);
|
|
1472
|
-
store.setMeta(newMeta, groupIndex);
|
|
1498
|
+
removeExpression(i);
|
|
1473
1499
|
}
|
|
1474
1500
|
})
|
|
1475
1501
|
})]
|
|
1476
1502
|
}, i);
|
|
1477
1503
|
}
|
|
1478
1504
|
if (v.type === _types.AtomsTypeEnum.OPERATOR) {
|
|
1505
|
+
var operator = normalizeJoinOperator(v.val);
|
|
1479
1506
|
return (0, _jsxRuntime.jsxs)("div", {
|
|
1480
1507
|
className: (0, _classnames["default"])("Sqb-where block"),
|
|
1481
1508
|
children: [i == 0 && (0, _jsxRuntime.jsx)("span", {
|
|
@@ -1486,41 +1513,12 @@ var JoinData = function JoinData(props) {
|
|
|
1486
1513
|
onChange: function onChange(key) {
|
|
1487
1514
|
changeOperator(key, i);
|
|
1488
1515
|
},
|
|
1489
|
-
droplist:
|
|
1516
|
+
droplist: menuJoinOperator,
|
|
1490
1517
|
children: (0, _jsxRuntime.jsx)(_pandora.Button, {
|
|
1518
|
+
disabled: meta.readonly,
|
|
1491
1519
|
className: 'ml-2 mr-4 text-gray-500',
|
|
1492
1520
|
type: 'link',
|
|
1493
|
-
children:
|
|
1494
|
-
})
|
|
1495
|
-
}), (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
|
|
1496
|
-
title: (0, _locale.__)('SqlQueryBuilder.add'),
|
|
1497
|
-
children: (0, _jsxRuntime.jsx)(_pandora.Dropdown, {
|
|
1498
|
-
trigger: ['click'],
|
|
1499
|
-
onChange: function onChange(key) {
|
|
1500
|
-
addExpression(key, i);
|
|
1501
|
-
},
|
|
1502
|
-
droplist: menuTypes,
|
|
1503
|
-
children: (0, _jsxRuntime.jsx)(_pandora.Button, {
|
|
1504
|
-
disabled: meta.readonly,
|
|
1505
|
-
primary: true,
|
|
1506
|
-
ghost: true,
|
|
1507
|
-
className: 'mr-2 operator-icon',
|
|
1508
|
-
icon: (0, _jsxRuntime.jsx)(_pandoraIcons.FfPlus, {})
|
|
1509
|
-
})
|
|
1510
|
-
})
|
|
1511
|
-
}), (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
|
|
1512
|
-
title: (0, _locale.__)('SqlQueryBuilder.del'),
|
|
1513
|
-
children: (0, _jsxRuntime.jsx)(_pandora.Button, {
|
|
1514
|
-
disabled: meta.readonly,
|
|
1515
|
-
danger: true,
|
|
1516
|
-
className: 'mr-2 operator-icon',
|
|
1517
|
-
icon: (0, _jsxRuntime.jsx)(_pandoraIcons.FfLine, {}),
|
|
1518
|
-
onClick: function onClick() {
|
|
1519
|
-
var index = (0, _utils2.findIndex)(store.metaList[groupIndex].list, meta);
|
|
1520
|
-
var newMeta = store.metaList[groupIndex].list.slice();
|
|
1521
|
-
newMeta[index].expressions.splice(i, 1);
|
|
1522
|
-
store.setMeta(newMeta, groupIndex);
|
|
1523
|
-
}
|
|
1521
|
+
children: operator
|
|
1524
1522
|
})
|
|
1525
1523
|
})]
|
|
1526
1524
|
}, i);
|
|
@@ -1566,10 +1564,7 @@ var JoinData = function JoinData(props) {
|
|
|
1566
1564
|
className: 'mr-2 operator-icon',
|
|
1567
1565
|
icon: (0, _jsxRuntime.jsx)(_pandoraIcons.FfLine, {}),
|
|
1568
1566
|
onClick: function onClick() {
|
|
1569
|
-
|
|
1570
|
-
var newMeta = store.metaList[groupIndex].list.slice();
|
|
1571
|
-
newMeta[index].expressions.splice(i, 1);
|
|
1572
|
-
store.setMeta(newMeta, groupIndex);
|
|
1567
|
+
removeExpression(i);
|
|
1573
1568
|
}
|
|
1574
1569
|
})
|
|
1575
1570
|
})]
|
|
@@ -1620,10 +1615,7 @@ var JoinData = function JoinData(props) {
|
|
|
1620
1615
|
className: 'mr-2 operator-icon',
|
|
1621
1616
|
icon: (0, _jsxRuntime.jsx)(_pandoraIcons.FfLine, {}),
|
|
1622
1617
|
onClick: function onClick() {
|
|
1623
|
-
|
|
1624
|
-
var newMeta = store.metaList[groupIndex].list.slice();
|
|
1625
|
-
newMeta[index].expressions.splice(i, 1);
|
|
1626
|
-
store.setMeta(newMeta, groupIndex);
|
|
1618
|
+
removeExpression(i);
|
|
1627
1619
|
}
|
|
1628
1620
|
})
|
|
1629
1621
|
})]
|
|
@@ -23,7 +23,6 @@ var _helperDom = require("../../utils/helper-dom");
|
|
|
23
23
|
var _utils = require("../../utils");
|
|
24
24
|
var _pandoraIcons = require("@gingkoo/pandora-icons");
|
|
25
25
|
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
26
|
-
var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
|
27
26
|
var _itemName = _interopRequireDefault(require("./components/item-name"));
|
|
28
27
|
var _dialog = require("../dialog");
|
|
29
28
|
var _Wrapper = _interopRequireDefault(require("./components/Wrapper"));
|
|
@@ -195,7 +194,6 @@ var TableData = function TableData(props) {
|
|
|
195
194
|
var childModalZIndex = (0, _helperDom.getTopLayerZIndex)() + 1;
|
|
196
195
|
var newMetaList = store.metaList[groupIndex].list.slice()[0];
|
|
197
196
|
var newMeta = store.metaList[groupIndex].list.slice();
|
|
198
|
-
var oldList = (0, _cloneDeep["default"])(newMetaList.subquery);
|
|
199
197
|
var _toolbar = subToolbar || toolbar;
|
|
200
198
|
var o = _pandora.Modal2.openModal({
|
|
201
199
|
zIndex: childModalZIndex,
|
|
@@ -210,22 +208,23 @@ var TableData = function TableData(props) {
|
|
|
210
208
|
value: (0, _cloneDeep["default"])(val),
|
|
211
209
|
onOk: function onOk(newList) {
|
|
212
210
|
try {
|
|
213
|
-
if ((0, _isEqual["default"])(newList, oldList)) {
|
|
214
|
-
o.close();
|
|
215
|
-
return;
|
|
216
|
-
}
|
|
217
211
|
newMetaList.subquery = newList;
|
|
218
212
|
newMetaList.table = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, newList[0].table), {}, {
|
|
219
213
|
alias: newMetaList.table.alias || (0, _helper.getAlias)(newList[0].table.name, newMeta),
|
|
220
214
|
tableUuid: newMetaList.table.tableUuid || (0, _helper.uuidv4)('table')
|
|
221
215
|
});
|
|
222
216
|
var items = (0, _utils.getSubColumns)(newList);
|
|
217
|
+
var subQueryTable = newMetaList.table;
|
|
223
218
|
var newColumns = items.flatMap(function (item) {
|
|
224
219
|
return item.columns.map(function (column) {
|
|
220
|
+
var columnMeta = column;
|
|
225
221
|
return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, column), {}, {
|
|
226
|
-
tableId:
|
|
227
|
-
tableUuid:
|
|
228
|
-
|
|
222
|
+
tableId: subQueryTable.id || item.id || column.tableId || column.id,
|
|
223
|
+
tableUuid: subQueryTable.tableUuid || item.tableUuid || column.tableUuid,
|
|
224
|
+
tableName: subQueryTable.name || item.name || columnMeta.tableName || '',
|
|
225
|
+
tableAlias: subQueryTable.alias || item.alias || columnMeta.tableAlias || '',
|
|
226
|
+
datasourceId: subQueryTable.datasourceId || item.datasourceId || column.datasourceId || '',
|
|
227
|
+
datasourceName: subQueryTable.datasourceName || item.datasourceName || column.datasourceName || ''
|
|
229
228
|
});
|
|
230
229
|
});
|
|
231
230
|
}).map(function (v) {
|
|
@@ -233,16 +232,11 @@ var TableData = function TableData(props) {
|
|
|
233
232
|
select: false
|
|
234
233
|
});
|
|
235
234
|
});
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
return (0, _helper.isSameColumnByIdFirst)(oldCol, newCol);
|
|
239
|
-
});
|
|
240
|
-
var _column = existingCol ? existingCol : newCol;
|
|
241
|
-
_column.select = store.isSelectFields || _column.select;
|
|
242
|
-
return _column;
|
|
243
|
-
});
|
|
235
|
+
var oldColumns = newMetaList.columns;
|
|
236
|
+
newMetaList.columns = (0, _utils.mergeSubQueryColumns)(newColumns, oldColumns, store.isSelectFields);
|
|
244
237
|
var newMetas = store.metaList[groupIndex].list.slice();
|
|
245
238
|
newMetas[0] = newMetaList;
|
|
239
|
+
newMetas = (0, _utils.syncSubQueryFieldReferences)(newMetas, newMetaList.table, newMetaList.columns, oldColumns);
|
|
246
240
|
store.setMeta(newMetas, groupIndex, {
|
|
247
241
|
obj: newList,
|
|
248
242
|
type: _types.ChangeType.subQuery
|
package/lib/cjs/utils.d.ts
CHANGED
|
@@ -21,6 +21,8 @@ interface HelperResultType {
|
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
23
|
export declare const getHelper: (list: MetaListType[], item: MetaListType) => HelperResultType;
|
|
24
|
+
export declare const mergeSubQueryColumns: (columns: MetaData_ColumnsType[], oldColumns?: MetaData_ColumnsType[], isSelectFields?: boolean) => MetaData_ColumnsType[];
|
|
25
|
+
export declare const syncSubQueryFieldReferences: (list: MetaListType[], table: MetaData_TableType, columns: MetaData_ColumnsType[], oldColumns?: MetaData_ColumnsType[]) => MetaListType[];
|
|
24
26
|
export declare const getSubColumns: (metaList: any) => DataType[];
|
|
25
27
|
export declare function isValidSQLAlias(str: string): boolean;
|
|
26
28
|
export declare const changeTableAlias: (list: MetaListType[] | [], curObj: Pick<MetaData_TableType, "tableUuid" | "alias">) => MetaListType[];
|
|
@@ -31,7 +33,7 @@ export declare const getObjTem: (arr: any[]) => any;
|
|
|
31
33
|
export declare const patchData: (metas: MetaListType[], constantList?: any, formulaTemplates?: any) => MetaListType[];
|
|
32
34
|
export declare function reassembleByUnion(target?: any[]): any[];
|
|
33
35
|
export declare const buildSqlQuery: (data: MetaListType[] | undefined, type: string) => string;
|
|
34
|
-
export declare const isError: (item: AtomsItem | AtomsItem[], data
|
|
36
|
+
export declare const isError: (item: AtomsItem | AtomsItem[], data?: DataType[]) => boolean;
|
|
35
37
|
export declare function containsSubset(root: unknown, target: Record<string, unknown>): boolean;
|
|
36
38
|
export declare const isExistsError: (meta: any[], errorList: any[]) => boolean;
|
|
37
39
|
export declare const changeCopyField: (items: AtomsItem[], data: any[]) => AtomsItem[];
|