@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.
@@ -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.isSameColumnByIdName)(col, item);
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 = "".concat(field.fieldId || '', "|").concat(field.fieldName || '');
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 = "".concat(column.id || '', "|").concat(column.name || '');
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.isSameColumnByIdName)(v, val);
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.isSameColumnByIdName)(v, val));
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
- var curTableColumn = (curTableItem === null || curTableItem === void 0 ? void 0 : curTableItem.columns) || [];
199
- _value = _value.filter(function (item2) {
200
- return isSameSelectedTable(item2, curTableId, tableUuid) && curTableColumn.some(function (item1) {
201
- if (item2.tableId === _helper.SummarizeAlias) {
202
- return (0, _helper2.isSameColumnByIdName)(item2, item1);
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 operators = ['AND', 'OR', '(', ')', ',', '+', '-', '*', '/', '!=', '<=', '>=', '<', '>', '='];
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"])((0, _defineProperty2["default"])({}, _types.AtomsTypeEnum.JOIN_DEFAULT, 'joinData.default'), _types.AtomsTypeEnum.EXPRESSION, 'joinData.expression'), _types.AtomsTypeEnum.OPERATOR, 'customColumn.operator'), _types.AtomsTypeEnum.COLLECTION, 'customColumn.collection')[v];
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: column.tableId || column.id || item.id,
989
- tableUuid: column.tableUuid || item.tableUuid,
990
- datasourceId: column.datasourceId || item.datasourceId || ''
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 = newColumns.map(function (newCol) {
999
- var existingCol = newMeta[index].columns.find(function (oldCol) {
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].val = key;
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, item);
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
- var index = (0, _utils2.findIndex)(store.metaList[groupIndex].list, meta);
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: menuOperator,
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: v.val
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
- var index = (0, _utils2.findIndex)(store.metaList[groupIndex].list, meta);
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
- var index = (0, _utils2.findIndex)(store.metaList[groupIndex].list, meta);
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: column.tableId || column.id || item.id,
227
- tableUuid: column.tableUuid || item.tableUuid,
228
- datasourceId: column.datasourceId || item.datasourceId || ''
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
- newMetaList.columns = newColumns.map(function (newCol) {
237
- var existingCol = newMetaList.columns.find(function (oldCol) {
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
@@ -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: DataType[]) => boolean;
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[];