@gingkoo/pandora-metabase 1.0.136 → 1.0.137

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/utils.js CHANGED
@@ -8,9 +8,10 @@ exports.changeTableAlias = exports.changeFieldAlias = exports.changeExistsCopyFi
8
8
  exports.containsSubset = containsSubset;
9
9
  exports.isExistsError = exports.isError = exports.isCanPaste = exports.getSubColumns = exports.getObjTem = exports.getMetaTabels = exports.getHelper = exports.getColumnsTables = exports.findMetaKey = exports.findIndex = void 0;
10
10
  exports.isValidSQLAlias = isValidSQLAlias;
11
- exports.patchData = exports.normalizeLegacySummarizeForSave = exports.metaIsCheck = void 0;
11
+ exports.patchData = exports.normalizeLegacySummarizeForSave = exports.metaIsCheck = exports.mergeSubQueryColumns = void 0;
12
12
  exports.reassembleByUnion = reassembleByUnion;
13
13
  exports.splitByUnion = splitByUnion;
14
+ exports.syncSubQueryFieldReferences = void 0;
14
15
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/typeof"));
15
16
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectWithoutProperties"));
16
17
  var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createForOfIteratorHelper"));
@@ -49,19 +50,42 @@ var getMetaTabels = exports.getMetaTabels = function getMetaTabels(data) {
49
50
  });
50
51
  return obj;
51
52
  };
53
+ var SUB_QUERY_OUTPUT_COLUMN_KEY = '__subQueryOutputColumn';
54
+ var isSubQueryOutputColumn = function isSubQueryOutputColumn(column) {
55
+ return Boolean((column === null || column === void 0 ? void 0 : column.summarizeType) && (column === null || column === void 0 ? void 0 : column[SUB_QUERY_OUTPUT_COLUMN_KEY]));
56
+ };
52
57
  var getColumnsTables = exports.getColumnsTables = function getColumnsTables(data) {
53
58
  var obj = {};
54
59
  data.map(function (v) {
55
60
  var _v$datasourceId = v.datasourceId,
56
61
  datasourceId = _v$datasourceId === void 0 ? 'source' : _v$datasourceId,
62
+ _v$datasourceName = v.datasourceName,
63
+ datasourceName = _v$datasourceName === void 0 ? '' : _v$datasourceName,
57
64
  _v$id = v.id,
58
65
  id = _v$id === void 0 ? '' : _v$id,
59
66
  _v$alias = v.alias,
60
67
  alias = _v$alias === void 0 ? '' : _v$alias,
68
+ _v$name = v.name,
69
+ name = _v$name === void 0 ? '' : _v$name,
70
+ _v$name_zh = v.name_zh,
71
+ name_zh = _v$name_zh === void 0 ? '' : _v$name_zh,
72
+ _v$tableUuid = v.tableUuid,
73
+ tableUuid = _v$tableUuid === void 0 ? '' : _v$tableUuid,
61
74
  _v$columns = v.columns,
62
75
  columns = _v$columns === void 0 ? [] : _v$columns;
63
76
  var _datasourceId = datasourceId || 'source';
64
- obj[_datasourceId] = (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, obj[_datasourceId]), {}, (0, _defineProperty2["default"])({}, id + alias, columns));
77
+ obj[_datasourceId] = (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, obj[_datasourceId]), {}, (0, _defineProperty2["default"])({}, id + alias, columns.map(function (column) {
78
+ if (!isSubQueryOutputColumn(column)) return column;
79
+ return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, column), {}, {
80
+ datasourceId: _datasourceId,
81
+ datasourceName: datasourceName || column.datasourceName || '',
82
+ tableId: id || column.tableId || '',
83
+ tableName: name || column.tableName || column.table || '',
84
+ tableNameZh: name_zh || column.tableNameZh || '',
85
+ tableAlias: alias || column.tableAlias || '',
86
+ tableUuid: tableUuid || column.tableUuid || ''
87
+ });
88
+ })));
65
89
  });
66
90
  return obj;
67
91
  };
@@ -116,6 +140,240 @@ var getHelper = exports.getHelper = function getHelper(list, item) {
116
140
  nextItem: nextItem
117
141
  };
118
142
  };
143
+ var getSummarizeOutputName = function getSummarizeOutputName(record) {
144
+ return record.fieldAlias || record.name || record.quotes || '';
145
+ };
146
+ var normalizeSubQueryColumn = function normalizeSubQueryColumn(column) {
147
+ if (!(column !== null && column !== void 0 && column.summarizeType)) return column;
148
+ var outputName = getSummarizeOutputName(column);
149
+ return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, column), {}, {
150
+ name: outputName,
151
+ name_zh: column.name_zh || column.quotes || '',
152
+ id: column.id || column.fieldId || outputName,
153
+ realName: column.realName || column.name || '',
154
+ fieldAlias: ''
155
+ });
156
+ };
157
+ var getOuterSubQueryFieldAlias = function getOuterSubQueryFieldAlias(existingCol, newCol) {
158
+ var existingAlias = (existingCol === null || existingCol === void 0 ? void 0 : existingCol.fieldAlias) || '';
159
+ if (!existingAlias) return '';
160
+ var oldName = (existingCol === null || existingCol === void 0 ? void 0 : existingCol.name) || '';
161
+ var newName = (newCol === null || newCol === void 0 ? void 0 : newCol.name) || '';
162
+ if (existingAlias === oldName || existingAlias === newName) return '';
163
+ return existingAlias;
164
+ };
165
+ var getSyncedSubQueryFieldAlias = function getSyncedSubQueryFieldAlias(item, matchedColumn) {
166
+ var columnAlias = matchedColumn.fieldAlias || '';
167
+ if (columnAlias) return columnAlias;
168
+ var existingAlias = item.fieldAlias || '';
169
+ if (!existingAlias) return '';
170
+ var oldName = item.fieldName || '';
171
+ var newName = matchedColumn.name || '';
172
+ if (existingAlias === oldName || existingAlias === newName) return '';
173
+ return existingAlias;
174
+ };
175
+ var getSubQueryOutputIdentity = function getSubQueryOutputIdentity(column) {
176
+ var _column$sql$split;
177
+ if (!(column !== null && column !== void 0 && column.summarizeType)) return '';
178
+ var sqlBase = typeof column.sql === 'string' ? ((_column$sql$split = column.sql.split(/\s+AS\s+/i)) === null || _column$sql$split === void 0 || (_column$sql$split = _column$sql$split[0]) === null || _column$sql$split === void 0 ? void 0 : _column$sql$split.trim()) || '' : '';
179
+ var identityParts = [column.condition, column.fieldId, sqlBase || column.realName].filter(Boolean);
180
+ if (!identityParts.length) return '';
181
+ return [column.summarizeType].concat((0, _toConsumableArray2["default"])(identityParts)).join('|');
182
+ };
183
+ var isSameSubQueryOutputColumn = function isSameSubQueryOutputColumn(oldCol, newCol) {
184
+ var oldIdentity = getSubQueryOutputIdentity(oldCol);
185
+ var newIdentity = getSubQueryOutputIdentity(newCol);
186
+ return Boolean(oldIdentity && newIdentity && oldIdentity === newIdentity);
187
+ };
188
+ var mergeSubQueryColumns = exports.mergeSubQueryColumns = function mergeSubQueryColumns(columns) {
189
+ var oldColumns = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
190
+ var isSelectFields = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
191
+ return columns.map(function (newCol) {
192
+ var newColumn = newCol;
193
+ var existingCol = oldColumns.find(function (oldCol) {
194
+ var oldColumn = oldCol;
195
+ if (oldColumn.fieldUuid && newColumn.fieldUuid) {
196
+ return oldColumn.fieldUuid === newColumn.fieldUuid;
197
+ }
198
+ var oldFieldId = oldColumn.fieldId || oldColumn.id;
199
+ var newFieldId = newColumn.fieldId || newColumn.id;
200
+ if (oldFieldId && newFieldId) {
201
+ return oldFieldId === newFieldId;
202
+ }
203
+ if (isSameSubQueryOutputColumn(oldCol, newCol)) {
204
+ return true;
205
+ }
206
+ return (0, _helper2.isSameColumnByIdFirst)(oldCol, newCol);
207
+ });
208
+ var nextCol = (0, _objectSpread6["default"])((0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, existingCol || {}), newCol), {}, {
209
+ name_zh: existingCol ? existingCol.name_zh || '' : newColumn.name_zh || '',
210
+ fieldAlias: getOuterSubQueryFieldAlias(existingCol, newCol),
211
+ fieldUuid: newCol.fieldUuid || (existingCol === null || existingCol === void 0 ? void 0 : existingCol.fieldUuid) || (0, _helper2.uuidv4)('field'),
212
+ select: isSelectFields || Boolean(existingCol === null || existingCol === void 0 ? void 0 : existingCol.select) || Boolean(newCol.select)
213
+ }, newColumn.summarizeType ? (0, _defineProperty2["default"])({}, SUB_QUERY_OUTPUT_COLUMN_KEY, true) : {});
214
+ return nextCol;
215
+ });
216
+ };
217
+ var getSubQueryMatchedColumn = function getSubQueryMatchedColumn(field, table, columns) {
218
+ var oldColumns = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
219
+ var fieldTable = {
220
+ datasourceId: field.datasourceId,
221
+ id: field.tableId,
222
+ name: field.tableName,
223
+ alias: field.tableAlias,
224
+ tableUuid: field.tableUuid
225
+ };
226
+ if (!(0, _helper2.isSameTableByIdFirst)(table, fieldTable)) {
227
+ return null;
228
+ }
229
+ var normalizeColumnTable = function normalizeColumnTable(column) {
230
+ return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, column), {}, {
231
+ datasourceId: table.datasourceId || '',
232
+ tableId: table.id || '',
233
+ tableName: table.name || '',
234
+ tableAlias: table.alias || '',
235
+ tableUuid: table.tableUuid || ''
236
+ });
237
+ };
238
+ var matchedColumn = columns.find(function (column) {
239
+ return (0, _helper2.isSameColumnByIdFirst)(normalizeColumnTable(column), field);
240
+ });
241
+ if (matchedColumn) return matchedColumn;
242
+ var oldMatchedColumn = oldColumns.find(function (column) {
243
+ return (0, _helper2.isSameColumnByIdFirst)(normalizeColumnTable(column), field);
244
+ });
245
+ if (!oldMatchedColumn) return null;
246
+ return columns.find(function (column) {
247
+ return isSameSubQueryOutputColumn(oldMatchedColumn, column);
248
+ }) || columns[oldColumns.indexOf(oldMatchedColumn)] || null;
249
+ };
250
+ var _syncSubQueryFieldItems = function syncSubQueryFieldItems() {
251
+ var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
252
+ var table = arguments.length > 1 ? arguments[1] : undefined;
253
+ var columns = arguments.length > 2 ? arguments[2] : undefined;
254
+ var oldColumns = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
255
+ return items.map(function (item) {
256
+ var nextItem;
257
+ if (item.type === _types.AtomsTypeEnum.FIELD) {
258
+ var matchedColumn = getSubQueryMatchedColumn(item, table, columns, oldColumns);
259
+ if (!matchedColumn) return item;
260
+ nextItem = (0, _objectSpread6["default"])((0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, item), {}, {
261
+ tableName: table.name || item.tableName || '',
262
+ tableNameZh: table.name_zh || item.tableNameZh || '',
263
+ tableId: table.id || item.tableId || '',
264
+ tableAlias: table.alias || item.tableAlias || '',
265
+ tableUuid: table.tableUuid || item.tableUuid || '',
266
+ datasourceName: table.datasourceName || item.datasourceName || '',
267
+ datasourceId: table.datasourceId || item.datasourceId || ''
268
+ }, 'name' in item ? {
269
+ name: matchedColumn.name || item.name || ''
270
+ } : {}), {}, {
271
+ fieldName: matchedColumn.name || item.fieldName || '',
272
+ fieldNameZh: item.fieldNameZh || matchedColumn.name_zh || '',
273
+ fieldAlias: getSyncedSubQueryFieldAlias(item, matchedColumn),
274
+ fieldId: matchedColumn.id || matchedColumn.fieldId || item.fieldId || '',
275
+ fieldUuid: matchedColumn.fieldUuid || item.fieldUuid || ''
276
+ });
277
+ } else if (item.type === _types.AtomsTypeEnum.JOIN_DEFAULT || item.type === _types.AtomsTypeEnum.EXPRESSION) {
278
+ nextItem = (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, item), {}, {
279
+ lhs: _syncSubQueryFieldItems(item.lhs, table, columns, oldColumns),
280
+ rhs: _syncSubQueryFieldItems(item.rhs, table, columns, oldColumns)
281
+ });
282
+ } else if (item.type === _types.AtomsTypeEnum.FORMULA) {
283
+ nextItem = (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, item), {}, {
284
+ args: _syncSubQueryFieldItems(item.args || [], table, columns, oldColumns)
285
+ });
286
+ } else if (item.type === _types.AtomsTypeEnum.COLLECTION) {
287
+ nextItem = (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, item), {}, {
288
+ list: _syncSubQueryFieldItems(item.list || [], table, columns, oldColumns)
289
+ });
290
+ } else if (item.type === _types.AtomsTypeEnum.CASE_WHEN) {
291
+ nextItem = (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, item), {}, {
292
+ caseAtoms: _syncSubQueryFieldItems(item.caseAtoms || [], table, columns, oldColumns),
293
+ whenClauses: (item.whenClauses || []).map(function (clause) {
294
+ return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, clause), {}, {
295
+ whenAtoms: _syncSubQueryFieldItems(clause.whenAtoms || [], table, columns, oldColumns),
296
+ thenAtoms: _syncSubQueryFieldItems(clause.thenAtoms || [], table, columns, oldColumns)
297
+ });
298
+ }),
299
+ elseAtoms: _syncSubQueryFieldItems(item.elseAtoms || [], table, columns, oldColumns)
300
+ });
301
+ } else if (item.type === _types.AtomsTypeEnum.AND_OR) {
302
+ var hasBinarySides = Array.isArray(item.leftAtoms) || Array.isArray(item.rightAtoms);
303
+ nextItem = (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, item), hasBinarySides ? {
304
+ atoms: undefined,
305
+ leftAtoms: _syncSubQueryFieldItems(item.leftAtoms || [], table, columns, oldColumns),
306
+ rightAtoms: _syncSubQueryFieldItems(item.rightAtoms || [], table, columns, oldColumns)
307
+ } : {
308
+ atoms: _syncSubQueryFieldItems(item.atoms || [], table, columns, oldColumns)
309
+ });
310
+ } else {
311
+ nextItem = item;
312
+ }
313
+ return syncAtomQuotes(nextItem);
314
+ });
315
+ };
316
+ var syncSubQueryFieldReferences = exports.syncSubQueryFieldReferences = function syncSubQueryFieldReferences(list, table, columns) {
317
+ var oldColumns = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
318
+ return (0, _cloneDeep3["default"])(list).map(function (meta) {
319
+ var _meta$expressions, _meta$filter, _meta$sort;
320
+ if (meta.type === _enum.TypeEnum.joinData && (_meta$expressions = meta.expressions) !== null && _meta$expressions !== void 0 && _meta$expressions.length) {
321
+ return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, meta), {}, {
322
+ expressions: _syncSubQueryFieldItems(meta.expressions, table, columns, oldColumns)
323
+ });
324
+ }
325
+ if (meta.type === _enum.TypeEnum.customColumn) {
326
+ return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, meta), {}, {
327
+ customColumn: meta.customColumn.map(function (item) {
328
+ var _item$formulaList;
329
+ return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, item), {}, {
330
+ formulaList: (_item$formulaList = item.formulaList) !== null && _item$formulaList !== void 0 && _item$formulaList.length ? _syncSubQueryFieldItems(item.formulaList, table, columns, oldColumns) : item.formulaList
331
+ });
332
+ })
333
+ });
334
+ }
335
+ if (meta.type === _enum.TypeEnum.summarize) {
336
+ var nextMeta = (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, meta), {}, {
337
+ group: meta.group.map(function (group) {
338
+ var _group$atoms;
339
+ var atoms = (_group$atoms = group.atoms) !== null && _group$atoms !== void 0 && _group$atoms.length ? _syncSubQueryFieldItems(group.atoms, table, columns, oldColumns) : group.atoms;
340
+ var nextGroup = (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, group), {}, {
341
+ atoms: atoms
342
+ });
343
+ return atoms !== null && atoms !== void 0 && atoms.length ? (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, nextGroup), {}, {
344
+ sql: (0, _helper.summarizeToSql)(meta.group, nextGroup).sql
345
+ }) : nextGroup;
346
+ }),
347
+ by: meta.by.map(function (by) {
348
+ var _by$atoms;
349
+ var atoms = (_by$atoms = by.atoms) !== null && _by$atoms !== void 0 && _by$atoms.length ? _syncSubQueryFieldItems(by.atoms, table, columns, oldColumns) : by.atoms;
350
+ var nextBy = (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, by), {}, {
351
+ atoms: atoms
352
+ });
353
+ return atoms !== null && atoms !== void 0 && atoms.length ? (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, nextBy), {}, {
354
+ sql: (0, _helper.summarizeByToSql)(nextBy)
355
+ }) : nextBy;
356
+ })
357
+ });
358
+ return nextMeta;
359
+ }
360
+ if (meta.type === _enum.TypeEnum.filter && (_meta$filter = meta.filter) !== null && _meta$filter !== void 0 && _meta$filter.length) {
361
+ return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, meta), {}, {
362
+ filter: _syncSubQueryFieldItems(meta.filter, table, columns, oldColumns)
363
+ });
364
+ }
365
+ if (meta.type === _enum.TypeEnum.sort && (_meta$sort = meta.sort) !== null && _meta$sort !== void 0 && _meta$sort.length) {
366
+ return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, meta), {}, {
367
+ sort: meta.sort.map(function (sort) {
368
+ return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, sort), {}, {
369
+ expression: _syncSubQueryFieldItems(sort.expression, table, columns, oldColumns)
370
+ });
371
+ })
372
+ });
373
+ }
374
+ return meta;
375
+ });
376
+ };
119
377
  var getSubColumns = exports.getSubColumns = function getSubColumns(metaList) {
120
378
  var obj = {
121
379
  metaKey: -1,
@@ -143,29 +401,25 @@ var getSubColumns = exports.getSubColumns = function getSubColumns(metaList) {
143
401
  if (prevGroupBy !== null && prevGroupBy !== void 0 && (_prevGroupBy$group = prevGroupBy.group) !== null && _prevGroupBy$group !== void 0 && _prevGroupBy$group.length) {
144
402
  _data.columns = _data.columns.concat(prevGroupBy.group.map(function (v) {
145
403
  var _v$sql;
146
- return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, v), {}, {
147
- name: v.name || v.quotes,
148
- name_zh: v.name_zh || v.quotes,
404
+ return normalizeSubQueryColumn((0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, v), {}, {
149
405
  id: v.id || v.fieldId,
150
406
  realName: ((_v$sql = v.sql) === null || _v$sql === void 0 || (_v$sql = _v$sql.split(' AS ')) === null || _v$sql === void 0 ? void 0 : _v$sql[1]) || '',
151
407
  database_type: (v === null || v === void 0 ? void 0 : v.database_type) || _enum.SQL_COLUMN_TYPE.FLOAT,
152
408
  special_type: '',
153
409
  select: true
154
- });
410
+ }));
155
411
  }));
156
412
  }
157
413
  if (prevGroupBy !== null && prevGroupBy !== void 0 && (_prevGroupBy$by = prevGroupBy.by) !== null && _prevGroupBy$by !== void 0 && _prevGroupBy$by.length) {
158
414
  _data.columns = _data.columns.concat(prevGroupBy.by.map(function (v) {
159
415
  var _v$sql2;
160
- return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, v), {}, {
161
- name: v.name || v.quotes,
162
- name_zh: v.name_zh || v.quotes,
416
+ return normalizeSubQueryColumn((0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, v), {}, {
163
417
  id: v.id || v.fieldId,
164
418
  realName: ((_v$sql2 = v.sql) === null || _v$sql2 === void 0 || (_v$sql2 = _v$sql2.split(' AS ')) === null || _v$sql2 === void 0 ? void 0 : _v$sql2[1]) || '',
165
419
  database_type: (v === null || v === void 0 ? void 0 : v.database_type) || _enum.SQL_COLUMN_TYPE.FLOAT,
166
420
  special_type: '',
167
421
  select: true
168
- });
422
+ }));
169
423
  }));
170
424
  }
171
425
  data = [_data];
@@ -299,12 +553,12 @@ var getExpressionConditionText = function getExpressionConditionText(condition)
299
553
  var getSelectAtomText = function getSelectAtomText(item) {
300
554
  var displayField = item.displayField || 'value';
301
555
  var getOptionText = function getOptionText(value) {
302
- var _ref, _option$displayField;
556
+ var _ref2, _option$displayField;
303
557
  var option = (item.options || []).find(function (currentOption) {
304
558
  return currentOption.value === value;
305
559
  });
306
560
  if (!option) return value || '';
307
- return String((_ref = (_option$displayField = option[displayField]) !== null && _option$displayField !== void 0 ? _option$displayField : option.value) !== null && _ref !== void 0 ? _ref : '');
561
+ return String((_ref2 = (_option$displayField = option[displayField]) !== null && _option$displayField !== void 0 ? _option$displayField : option.value) !== null && _ref2 !== void 0 ? _ref2 : '');
308
562
  };
309
563
  if (Array.isArray(item.val)) {
310
564
  return item.val.map(function (currentValue) {
@@ -316,7 +570,10 @@ var getSelectAtomText = function getSelectAtomText(item) {
316
570
  var _getAtomDisplayText = function getAtomDisplayText(item) {
317
571
  if (!item) return '';
318
572
  if (item.type === _types.AtomsTypeEnum.FIELD) {
319
- return item.fieldAlias || item.fieldName || '';
573
+ if (item.tableId === _helper.SummarizeAlias) {
574
+ return item.fieldAlias || item.fieldName || '';
575
+ }
576
+ return item.fieldName || item.fieldAlias || '';
320
577
  }
321
578
  if (item.type === _types.AtomsTypeEnum.CASE_WHEN) {
322
579
  return buildCaseWhenQuotes(item);
@@ -546,7 +803,15 @@ var _changeAlias = function changeAlias(items, val, type) {
546
803
  nextItem.tableAlias = val.alias;
547
804
  }
548
805
  if (type === AliasType.field && isAliasTargetField(v, val)) {
549
- nextItem.fieldAlias = val.alias;
806
+ if (val.aliasAsFieldName && !isSameAliasTargetTable(v, val)) {
807
+ nextItem.fieldName = val.alias;
808
+ nextItem.fieldAlias = '';
809
+ if ('name' in nextItem) {
810
+ nextItem.name = val.alias;
811
+ }
812
+ } else {
813
+ nextItem.fieldAlias = val.alias;
814
+ }
550
815
  }
551
816
  } else if (v.type === _types.AtomsTypeEnum.EXISTS || v.type === _types.AtomsTypeEnum.NOT_EXISTS) {
552
817
  nextItem = (0, _objectSpread6["default"])({}, v);
@@ -643,8 +908,8 @@ var changeTableAlias = exports.changeTableAlias = function changeTableAlias(list
643
908
  }
644
909
  if (v.type === _enum.TypeEnum.customColumn) {
645
910
  v.customColumn.map(function (item) {
646
- var _item$formulaList;
647
- if (item !== null && item !== void 0 && item.formulaList && ((_item$formulaList = item.formulaList) === null || _item$formulaList === void 0 ? void 0 : _item$formulaList.length) > 0) {
911
+ var _item$formulaList2;
912
+ if (item !== null && item !== void 0 && item.formulaList && ((_item$formulaList2 = item.formulaList) === null || _item$formulaList2 === void 0 ? void 0 : _item$formulaList2.length) > 0) {
648
913
  item.formulaList = _changeAlias(item.formulaList, {
649
914
  uuid: tableUuid,
650
915
  alias: alias
@@ -728,7 +993,8 @@ var changeFieldAlias = exports.changeFieldAlias = function changeFieldAlias(list
728
993
  tableId: tableId || (firstData === null || firstData === void 0 || (_firstData$table = firstData.table) === null || _firstData$table === void 0 ? void 0 : _firstData$table.id),
729
994
  tableName: table || (firstData === null || firstData === void 0 || (_firstData$table2 = firstData.table) === null || _firstData$table2 === void 0 ? void 0 : _firstData$table2.name),
730
995
  tableUuid: tableUuid || (firstData === null || firstData === void 0 || (_firstData$table3 = firstData.table) === null || _firstData$table3 === void 0 ? void 0 : _firstData$table3.tableUuid),
731
- datasourceId: datasourceId || (firstData === null || firstData === void 0 || (_firstData$table4 = firstData.table) === null || _firstData$table4 === void 0 ? void 0 : _firstData$table4.datasourceId)
996
+ datasourceId: datasourceId || (firstData === null || firstData === void 0 || (_firstData$table4 = firstData.table) === null || _firstData$table4 === void 0 ? void 0 : _firstData$table4.datasourceId),
997
+ aliasAsFieldName: Boolean(curObj.summarizeType)
732
998
  };
733
999
  var newList = (0, _cloneDeep3["default"])(list);
734
1000
  return (newList === null || newList === void 0 ? void 0 : newList.map(function (v) {
@@ -978,7 +1244,17 @@ var buildSqlQuery = exports.buildSqlQuery = function buildSqlQuery() {
978
1244
  sql = _transformSql.sql;
979
1245
  return "".concat(typeName, "(").concat(sql, ") ");
980
1246
  };
981
- var _isError = exports.isError = function isError(item, data) {
1247
+ var hasLoadedColumnData = function hasLoadedColumnData() {
1248
+ var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
1249
+ return data.some(function (table) {
1250
+ return Array.isArray(table === null || table === void 0 ? void 0 : table.columns) && table.columns.length > 0;
1251
+ });
1252
+ };
1253
+ var _isError = exports.isError = function isError(item) {
1254
+ var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
1255
+ if (!hasLoadedColumnData(data)) {
1256
+ return false;
1257
+ }
982
1258
  var tables = getColumnsTables(data);
983
1259
  if (!item) {
984
1260
  return false;
@@ -1005,11 +1281,12 @@ var _isError = exports.isError = function isError(item, data) {
1005
1281
  }
1006
1282
  if (_datasourceId === 'source') {
1007
1283
  var _tables$_datasourceId;
1008
- if (!(tables !== null && tables !== void 0 && (_tables$_datasourceId = tables[_datasourceId]) !== null && _tables$_datasourceId !== void 0 && _tables$_datasourceId[tableId + tableAlias])) {
1284
+ var fields = tables === null || tables === void 0 || (_tables$_datasourceId = tables[_datasourceId]) === null || _tables$_datasourceId === void 0 ? void 0 : _tables$_datasourceId[tableId + tableAlias];
1285
+ if (!fields) {
1009
1286
  return true;
1287
+ } else if (!fields.length) {
1288
+ return false;
1010
1289
  } else {
1011
- var _tables$_datasourceId2;
1012
- var fields = (tables === null || tables === void 0 || (_tables$_datasourceId2 = tables[_datasourceId]) === null || _tables$_datasourceId2 === void 0 ? void 0 : _tables$_datasourceId2[tableId + tableAlias]) || [];
1013
1290
  return fields.every(function (field) {
1014
1291
  return !(0, _helper2.isSameColumnByIdFirst)((0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, field), {}, {
1015
1292
  datasourceId: _datasourceId,
@@ -1018,13 +1295,17 @@ var _isError = exports.isError = function isError(item, data) {
1018
1295
  });
1019
1296
  }
1020
1297
  } else {
1021
- var _tables$_datasourceId3, _tables$_datasourceId4;
1022
- var hasField = (_tables$_datasourceId3 = tables === null || tables === void 0 || (_tables$_datasourceId4 = tables[_datasourceId]) === null || _tables$_datasourceId4 === void 0 || (_tables$_datasourceId4 = _tables$_datasourceId4[tableId + tableAlias]) === null || _tables$_datasourceId4 === void 0 ? void 0 : _tables$_datasourceId4.some(function (v) {
1298
+ var _tables$_datasourceId2, _fields$some;
1299
+ var _fields = tables === null || tables === void 0 || (_tables$_datasourceId2 = tables[_datasourceId]) === null || _tables$_datasourceId2 === void 0 ? void 0 : _tables$_datasourceId2[tableId + tableAlias];
1300
+ if (_fields && !_fields.length) {
1301
+ return false;
1302
+ }
1303
+ var hasField = (_fields$some = _fields === null || _fields === void 0 ? void 0 : _fields.some(function (v) {
1023
1304
  return (0, _helper2.isSameColumnByIdFirst)((0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, v), {}, {
1024
1305
  datasourceId: _datasourceId,
1025
1306
  tableId: tableId
1026
1307
  }), item);
1027
- })) !== null && _tables$_datasourceId3 !== void 0 ? _tables$_datasourceId3 : false;
1308
+ })) !== null && _fields$some !== void 0 ? _fields$some : false;
1028
1309
  return !hasField;
1029
1310
  }
1030
1311
  }
@@ -12,7 +12,7 @@ import { ChangeType } from '../../../store/types';
12
12
  import { __ } from '../../../locale';
13
13
  import { NotSelectIcon, SelectIcon } from '../../icons';
14
14
  import { useStore } from '../../../hooks/use-provider';
15
- import { getColumnIdFirstKey, isSameColumnByIdName, uuidv4 } from '../../../utils/helper';
15
+ import { getColumnIdFirstKey, isSameColumnByIdFirst, uuidv4 } from '../../../utils/helper';
16
16
  import { changeFieldAlias, isValidSQLAlias } from '../../../utils';
17
17
  import { SearchIcon } from '../../icons';
18
18
  var SelectColumn = function SelectColumn(_ref) {
@@ -37,6 +37,18 @@ var SelectColumn = function SelectColumn(_ref) {
37
37
  _useState6 = _slicedToArray(_useState5, 2),
38
38
  filterVal = _useState6[0],
39
39
  setFilterVal = _useState6[1];
40
+ useEffect(function () {
41
+ setOriginList(function (currentList) {
42
+ return data.map(function (item) {
43
+ var existingItem = currentList.find(function (current) {
44
+ return isSameColumnByIdFirst(current, item);
45
+ });
46
+ return _objectSpread(_objectSpread(_objectSpread({}, existingItem || {}), item), {}, {
47
+ fieldUuid: item.fieldUuid || (existingItem === null || existingItem === void 0 ? void 0 : existingItem.fieldUuid) || uuidv4('field')
48
+ });
49
+ });
50
+ });
51
+ }, [data]);
40
52
  useEffect(function () {
41
53
  var newList = cloneDeep(originList.slice());
42
54
  setColumns(newList.filter(function (v) {
@@ -73,7 +85,7 @@ var SelectColumn = function SelectColumn(_ref) {
73
85
  var originalData = cloneDeep(originList);
74
86
  var mergedColumns = originalData.map(function (item) {
75
87
  var match = columns.find(function (col) {
76
- return isSameColumnByIdName(col, item);
88
+ return isSameColumnByIdFirst(col, item);
77
89
  });
78
90
  return match ? cloneDeep(match) : item;
79
91
  });
@@ -6,6 +6,7 @@ import { useEffect, useState } from 'react';
6
6
  import { Empty } from '@gingkoo/pandora';
7
7
  import { Button } from '@gingkoo/pandora';
8
8
  import cloneDeep from 'lodash/cloneDeep';
9
+ import isEqual from 'lodash/isEqual';
9
10
  import cx from 'classnames';
10
11
  import { ColumnsPopupThemeEnum, SQL_GROUP_TYPE } from '../../../store/enum';
11
12
  import { SummarizeAlias } from '../../../store/helper';
@@ -13,7 +14,7 @@ import { AtomsTypeEnum } from '../../../store/types';
13
14
  import { __ } from '../../../locale';
14
15
  import { NUMBER_GROUP, DATE_GROUP } from '../const';
15
16
  import { useStore } from '../../../hooks/use-provider';
16
- import { isSameColumnByIdFirst, isSameColumnByIdName, replaceTpl, mergeNameAlias, uuidv4 } from '../../../utils/helper';
17
+ import { isSameColumnByIdFirst, replaceTpl, mergeNameAlias, uuidv4 } from '../../../utils/helper';
17
18
  import { SearchIcon, TableIcon, CircleIcon, LetterAaIcon, CalendarIcon, WellIcon, ForeignKeyIcon, UpArrowIcon2, DownArrowIcon2 } from '../../icons';
18
19
  export var DATE_GROUP_MAP = new Map([['分', '分'], ['时', '时'], ['天', '天'], ['周', '周'], ['月', '月'], ['季度', '季度'], ['一小时内的分钟数', '一小时内的分钟数'], ['一天内的小时数', '一天内的小时数'], ['一周内的天数', '一周内的天数'], ['一月内的天数', '一月内的天数'], ['一年内的天数', '一年内的天数'], ['一年的星期数', '一年的星期数'], ['一年的月数', '一年的月数']]);
19
20
  export var NUMBER_GROUP_MAP = new Map([['自动间隔', '自动分组'], ['10个刻度间隔', '10 刻度间隔'], ['间隔50', '50 刻度间隔'], ['间隔100', '100 刻度间隔'], ['无间隔', '']]);
@@ -103,12 +104,12 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
103
104
  var getSelectedFieldKey = function getSelectedFieldKey(field) {
104
105
  if (!field) return '';
105
106
  var tableKey = getFieldTableKey(field.tableId, field.tableUuid);
106
- var fieldKey = "".concat(field.fieldId || '', "|").concat(field.fieldName || '');
107
+ var fieldKey = field.fieldId || field.fieldUuid || field.fieldName || '';
107
108
  return "".concat(tableKey, "|").concat(fieldKey);
108
109
  };
109
110
  var getColumnKey = function getColumnKey(column, isSummarizeColumn, tableId, tableUuid) {
110
111
  var tableKey = getFieldTableKey(tableId, tableUuid);
111
- var fieldKey = "".concat(column.id || '', "|").concat(column.name || '');
112
+ var fieldKey = column.id || column.fieldId || column.fieldUuid || column.name || '';
112
113
  return "".concat(tableKey, "|").concat(fieldKey);
113
114
  };
114
115
  var isActive = function isActive(id_alias, tableId, tableUuid) {
@@ -157,6 +158,58 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
157
158
  return v.tableId === SummarizeAlias ? v.fieldAlias : v.fieldName;
158
159
  }).join(' || ');
159
160
  };
161
+ var getFieldAliasByColumn = function getFieldAliasByColumn(field, column) {
162
+ if (field.tableId === SummarizeAlias) {
163
+ return column.fieldAlias || column.name || '';
164
+ }
165
+ if (column.fieldAlias) return column.fieldAlias;
166
+ if (field.fieldAlias === field.fieldName || field.fieldAlias === column.name) return '';
167
+ return field.fieldAlias || '';
168
+ };
169
+ var getMatchedColumnByField = function getMatchedColumnByField(field, tableItem) {
170
+ if (!tableItem) return null;
171
+ var tableId = tableItem.id || '';
172
+ var tableUuid = tableItem.tableUuid || '';
173
+ return (tableItem.columns || []).find(function (column) {
174
+ return isSameColumnByIdFirst(_objectSpread(_objectSpread({}, column), {}, {
175
+ tableId: tableId,
176
+ tableUuid: tableUuid,
177
+ datasourceId: tableItem.datasourceId || ''
178
+ }), field);
179
+ }) || null;
180
+ };
181
+ var syncSelectedFieldByColumn = function syncSelectedFieldByColumn(field, column, tableItem) {
182
+ return _objectSpread(_objectSpread(_objectSpread({}, field), {}, {
183
+ tableName: (tableItem === null || tableItem === void 0 ? void 0 : tableItem.name) || field.tableName || '',
184
+ tableId: (tableItem === null || tableItem === void 0 ? void 0 : tableItem.id) || field.tableId || '',
185
+ tableNameZh: (tableItem === null || tableItem === void 0 ? void 0 : tableItem.name_zh) || field.tableNameZh || '',
186
+ tableAlias: (tableItem === null || tableItem === void 0 ? void 0 : tableItem.alias) || field.tableAlias || '',
187
+ tableUuid: (tableItem === null || tableItem === void 0 ? void 0 : tableItem.tableUuid) || field.tableUuid || '',
188
+ datasourceName: (tableItem === null || tableItem === void 0 ? void 0 : tableItem.datasourceName) || field.datasourceName || '',
189
+ datasourceId: (tableItem === null || tableItem === void 0 ? void 0 : tableItem.datasourceId) || field.datasourceId || ''
190
+ }, 'name' in field ? {
191
+ name: column.name || field.name || ''
192
+ } : {}), {}, {
193
+ fieldName: column.name || field.fieldName || '',
194
+ fieldId: column.id || column.fieldId || field.fieldId || '',
195
+ fieldNameZh: field.fieldNameZh || column.name_zh || '',
196
+ fieldAlias: getFieldAliasByColumn(field, column),
197
+ fieldUuid: column.fieldUuid || field.fieldUuid || ''
198
+ });
199
+ };
200
+ useEffect(function () {
201
+ var syncedValue = (_value || []).map(function (field) {
202
+ var tableItem = data.find(function (item) {
203
+ return isSameSelectedTable(field, item.id || '', item.tableUuid || '');
204
+ });
205
+ var matchedColumn = getMatchedColumnByField(field, tableItem);
206
+ return matchedColumn ? syncSelectedFieldByColumn(field, matchedColumn, tableItem) : field;
207
+ });
208
+ setValue(syncedValue);
209
+ if (!isEqual(syncedValue, _value || [])) {
210
+ onSelect === null || onSelect === void 0 || onSelect(syncedValue, getQuotes(syncedValue));
211
+ }
212
+ }, [data, _value]);
160
213
  var changeValue = function changeValue(tableUuid, val) {
161
214
  if (!multiple) {
162
215
  var _data = val ? [val] : [];
@@ -167,7 +220,7 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
167
220
  return;
168
221
  }
169
222
  var isHas = (value === null || value === void 0 ? void 0 : value.filter(function (v) {
170
- return val && isSameSelectedTable(v, val.tableId, val.tableUuid) && isSameColumnByIdName(v, val);
223
+ return val && isSameSelectedTable(v, val.tableId, val.tableUuid) && isSameColumnByIdFirst(v, val);
171
224
  }).length) > 0;
172
225
  var _value = value.slice();
173
226
  if (tableUuid != selectedTable) {
@@ -182,26 +235,18 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
182
235
  _value.push(val);
183
236
  } else {
184
237
  _value = _value.filter(function (v) {
185
- return !(val && isSameSelectedTable(v, val.tableId, val.tableUuid) && isSameColumnByIdName(v, val));
238
+ return !(val && isSameSelectedTable(v, val.tableId, val.tableUuid) && isSameColumnByIdFirst(v, val));
186
239
  });
187
240
  }
188
241
  var curTableItem = data.find(function (v) {
189
242
  return v.tableUuid === tableUuid;
190
243
  });
191
244
  var curTableId = (curTableItem === null || curTableItem === void 0 ? void 0 : curTableItem.id) || '';
192
- var curTableColumn = (curTableItem === null || curTableItem === void 0 ? void 0 : curTableItem.columns) || [];
193
- _value = _value.filter(function (item2) {
194
- return isSameSelectedTable(item2, curTableId, tableUuid) && curTableColumn.some(function (item1) {
195
- if (item2.tableId === SummarizeAlias) {
196
- return isSameColumnByIdName(item2, item1);
197
- }
198
- return isSameColumnByIdFirst(_objectSpread(_objectSpread({}, item1), {}, {
199
- tableId: curTableId,
200
- tableUuid: tableUuid,
201
- datasourceId: (curTableItem === null || curTableItem === void 0 ? void 0 : curTableItem.datasourceId) || ''
202
- }), item2);
203
- });
204
- });
245
+ _value = _value.map(function (item2) {
246
+ if (!isSameSelectedTable(item2, curTableId, tableUuid)) return null;
247
+ var matchedColumn = getMatchedColumnByField(item2, curTableItem);
248
+ return matchedColumn ? syncSelectedFieldByColumn(item2, matchedColumn, curTableItem) : null;
249
+ }).filter(Boolean);
205
250
  setValue(_value);
206
251
  setSelectedTable(tableUuid);
207
252
  setCurTable(tableUuid);
@@ -8,6 +8,7 @@ import { __ } from '../../../locale';
8
8
  import { useStore } from '../../../hooks/use-provider';
9
9
  import { splitByUnion } from '../../../utils';
10
10
  import DiffViewer from '../../dialog/diff-viewer';
11
+ import { getTopLayerZIndex } from '../../../utils/helper-dom';
11
12
  var Header = function Header(props) {
12
13
  var meta = props.meta,
13
14
  groupIndex = props.groupIndex,
@@ -28,6 +29,7 @@ var Header = function Header(props) {
28
29
  oldCode = _yield$store$getModul.oldCode;
29
30
  newCode = _yield$store$getModul.newCode;
30
31
  o = Modal2.openModal({
32
+ zIndex: getTopLayerZIndex() + 1,
31
33
  title: '差异对比',
32
34
  transparentMask: true,
33
35
  content: _jsx(DiffViewer, {