@gingkoo/pandora-metabase 1.0.140 → 1.0.141-alpha.4

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.
Files changed (32) hide show
  1. package/README.md +2 -3
  2. package/lib/cjs/components/dialog/formula-list/LogicGroup.d.ts +8 -5
  3. package/lib/cjs/components/dialog/formula-list/LogicGroup.js +64 -18
  4. package/lib/cjs/components/dialog/formula-list/index.js +374 -153
  5. package/lib/cjs/components/dialog/formula-list/index.less +18 -5
  6. package/lib/cjs/components/dialog/formula-list/utils.js +45 -17
  7. package/lib/cjs/components/dialog/select-summarize/index.js +7 -0
  8. package/lib/cjs/components/modules/summarize/group-by.js +10 -1
  9. package/lib/cjs/components/modules/summarize/select-index.js +3 -1
  10. package/lib/cjs/hooks/use-state.js +181 -80
  11. package/lib/cjs/index.js +24 -3
  12. package/lib/cjs/store/types.d.ts +4 -4
  13. package/lib/cjs/types.d.ts +21 -1
  14. package/lib/cjs/utils/transformSql.js +51 -38
  15. package/lib/cjs/utils.d.ts +1 -0
  16. package/lib/cjs/utils.js +291 -56
  17. package/lib/es/components/dialog/formula-list/LogicGroup.d.ts +8 -5
  18. package/lib/es/components/dialog/formula-list/LogicGroup.js +65 -19
  19. package/lib/es/components/dialog/formula-list/index.js +373 -152
  20. package/lib/es/components/dialog/formula-list/index.less +18 -5
  21. package/lib/es/components/dialog/formula-list/utils.js +45 -17
  22. package/lib/es/components/dialog/select-summarize/index.js +7 -0
  23. package/lib/es/components/modules/summarize/group-by.js +10 -1
  24. package/lib/es/components/modules/summarize/select-index.js +3 -1
  25. package/lib/es/hooks/use-state.js +182 -81
  26. package/lib/es/index.js +25 -4
  27. package/lib/es/store/types.d.ts +4 -4
  28. package/lib/es/types.d.ts +21 -1
  29. package/lib/es/utils/transformSql.js +52 -39
  30. package/lib/es/utils.d.ts +1 -0
  31. package/lib/es/utils.js +290 -55
  32. package/package.json +1 -1
@@ -1,12 +1,19 @@
1
1
  .preview-box {
2
- .pd-Radio-button-solid .pd-Radio-button.pd-Radio-checked {
3
- background-color: #509ee3;
4
- border-color: #509ee3;
5
- }
6
2
  .preview-container {
7
3
  width: 100%;
8
4
  }
9
5
 
6
+ .Sqb-FormulaPreviewHeader {
7
+ display: flex;
8
+ align-items: center;
9
+ gap: 8px;
10
+ flex-wrap: wrap;
11
+
12
+ p {
13
+ margin: 0;
14
+ }
15
+ }
16
+
10
17
  .isSqlError {
11
18
  background-color: rgba(255, 0, 0, 0.1) !important;
12
19
  padding: 5px;
@@ -20,6 +27,12 @@
20
27
  // font-size: 10px;
21
28
  }
22
29
  }
30
+
31
+ .Sqb-FormulaSqlPreview {
32
+ max-height: 100%;
33
+ overflow: auto;
34
+ }
35
+
23
36
  .Sqb-Filter-item {
24
37
  --sqb-item-shell-margin-x: 14px;
25
38
  --sqb-item-gap-x: 8px;
@@ -1441,7 +1454,7 @@
1441
1454
  vertical-align: middle;
1442
1455
  }
1443
1456
 
1444
- .Sqb-FormulaGroup.logic-group > .Sqb-TableName.logic-operator {
1457
+ .Sqb-FormulaGroup.logic-group .Sqb-TableName.logic-operator {
1445
1458
  justify-content: center;
1446
1459
  flex: 0 0 32px;
1447
1460
  width: 32px;
@@ -212,14 +212,17 @@ export var getTemplateItem = function getTemplateItem(type, item) {
212
212
  };
213
213
  } else if (type === AtomsTypeEnum.AND_OR) {
214
214
  return {
215
- operator: 'and',
216
- leftAtoms: [{
217
- val: '',
218
- type: AtomsTypeEnum.UNKNOWN
219
- }],
220
- rightAtoms: [{
221
- val: '',
222
- type: AtomsTypeEnum.UNKNOWN
215
+ items: [{
216
+ atoms: [{
217
+ val: '',
218
+ type: AtomsTypeEnum.UNKNOWN
219
+ }]
220
+ }, {
221
+ operator: 'and',
222
+ atoms: [{
223
+ val: '',
224
+ type: AtomsTypeEnum.UNKNOWN
225
+ }]
223
226
  }],
224
227
  quotes: '',
225
228
  type: type
@@ -270,12 +273,20 @@ var _isOk = function isOk(rhsVal) {
270
273
  return _isOk(clause.whenAtoms || []) && _isOk(clause.thenAtoms || []);
271
274
  }) && _isOk(v.caseAtoms || []) && _isOk(v.elseAtoms || []);
272
275
  } else if (v.type === AtomsTypeEnum.AND_OR) {
273
- var hasBinarySides = Array.isArray(v.leftAtoms) || Array.isArray(v.rightAtoms);
276
+ if (Array.isArray(v.items) && v.items.length > 0) {
277
+ return v.items.every(function (item, index) {
278
+ var _item$atoms;
279
+ if (index > 0 && !item.operator) return false;
280
+ return Boolean((_item$atoms = item.atoms) === null || _item$atoms === void 0 ? void 0 : _item$atoms.length) && _isOk(item.atoms || []);
281
+ });
282
+ }
283
+ var legacyItem = v;
284
+ var hasBinarySides = Array.isArray(legacyItem.leftAtoms) || Array.isArray(legacyItem.rightAtoms);
274
285
  if (hasBinarySides) {
275
- var _v$leftAtoms, _v$rightAtoms;
276
- return Boolean(v.operator) && Boolean((_v$leftAtoms = v.leftAtoms) === null || _v$leftAtoms === void 0 ? void 0 : _v$leftAtoms.length) && Boolean((_v$rightAtoms = v.rightAtoms) === null || _v$rightAtoms === void 0 ? void 0 : _v$rightAtoms.length) && _isOk(v.leftAtoms || []) && _isOk(v.rightAtoms || []);
286
+ var _legacyItem$leftAtoms, _legacyItem$rightAtom;
287
+ return Boolean(legacyItem.operator) && Boolean((_legacyItem$leftAtoms = legacyItem.leftAtoms) === null || _legacyItem$leftAtoms === void 0 ? void 0 : _legacyItem$leftAtoms.length) && Boolean((_legacyItem$rightAtom = legacyItem.rightAtoms) === null || _legacyItem$rightAtom === void 0 ? void 0 : _legacyItem$rightAtom.length) && _isOk(legacyItem.leftAtoms || []) && _isOk(legacyItem.rightAtoms || []);
277
288
  }
278
- return Boolean(v.operator) && _isOk(v.atoms || []);
289
+ return Boolean(legacyItem.operator) && _isOk(legacyItem.atoms || []);
279
290
  } else if (v.type === AtomsTypeEnum.FORMULA) {
280
291
  if (!v.quotes) {
281
292
  return false;
@@ -401,25 +412,42 @@ export function validateExpressionIntegrity(list) {
401
412
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
402
413
  var item = _step2.value;
403
414
  if (item.type === AtomsTypeEnum.AND_OR) {
404
- if (!item.operator) {
415
+ if (Array.isArray(item.items) && item.items.length > 0) {
416
+ for (var index = 0; index < item.items.length; index++) {
417
+ var logicItem = item.items[index];
418
+ if (index > 0 && !logicItem.operator) {
419
+ return {
420
+ isError: true,
421
+ error: 'AND / OR 结构缺少操作符'
422
+ };
423
+ }
424
+ var _nestedError = validateExpressionIntegrity(logicItem.atoms || []);
425
+ if (_nestedError.isError) {
426
+ return _nestedError;
427
+ }
428
+ }
429
+ continue;
430
+ }
431
+ var legacyItem = item;
432
+ if (!legacyItem.operator) {
405
433
  return {
406
434
  isError: true,
407
435
  error: 'AND / OR 结构缺少操作符'
408
436
  };
409
437
  }
410
- var hasBinarySides = Array.isArray(item.leftAtoms) || Array.isArray(item.rightAtoms);
438
+ var hasBinarySides = Array.isArray(legacyItem.leftAtoms) || Array.isArray(legacyItem.rightAtoms);
411
439
  if (hasBinarySides) {
412
- var leftError = validateExpressionIntegrity(item.leftAtoms || []);
440
+ var leftError = validateExpressionIntegrity(legacyItem.leftAtoms || []);
413
441
  if (leftError.isError) {
414
442
  return leftError;
415
443
  }
416
- var rightError = validateExpressionIntegrity(item.rightAtoms || []);
444
+ var rightError = validateExpressionIntegrity(legacyItem.rightAtoms || []);
417
445
  if (rightError.isError) {
418
446
  return rightError;
419
447
  }
420
448
  continue;
421
449
  }
422
- var nestedError = validateExpressionIntegrity(item.atoms || []);
450
+ var nestedError = validateExpressionIntegrity(legacyItem.atoms || []);
423
451
  if (nestedError.isError) {
424
452
  return nestedError;
425
453
  }
@@ -133,6 +133,13 @@ var SelectSummarize = function SelectSummarize(_ref) {
133
133
  return [lhs, item.condition, rhs].filter(Boolean).join(' ').trim();
134
134
  }
135
135
  if (item.type === AtomsTypeEnum.AND_OR) {
136
+ if (Array.isArray(item.items) && item.items.length > 0) {
137
+ var itemsText = item.items.map(function (logicItem, index) {
138
+ var atomsText = getFormulaSummary(logicItem.atoms || []);
139
+ return index === 0 ? atomsText : "".concat(logicItem.operator || 'and', " ").concat(atomsText);
140
+ }).join(' ');
141
+ return "( ".concat(itemsText, " )").replace(/\s+/g, ' ').trim();
142
+ }
136
143
  var hasBinarySides = Array.isArray(item.leftAtoms) || Array.isArray(item.rightAtoms);
137
144
  if (hasBinarySides) {
138
145
  var leftText = getFormulaSummary(item.leftAtoms || []);
@@ -39,6 +39,13 @@ var _getSummaryText = function getSummaryText() {
39
39
  return [lhs, item.condition, rhs].filter(Boolean).join(' ').trim();
40
40
  }
41
41
  if (item.type === AtomsTypeEnum.AND_OR) {
42
+ if (Array.isArray(item.items) && item.items.length > 0) {
43
+ var itemsText = item.items.map(function (logicItem, index) {
44
+ var atomsText = _getSummaryText(logicItem.atoms || []);
45
+ return index === 0 ? atomsText : "".concat(logicItem.operator || 'and', " ").concat(atomsText);
46
+ }).join(' ');
47
+ return "( ".concat(itemsText, " )").replace(/\s+/g, ' ').trim();
48
+ }
42
49
  var hasBinarySides = Array.isArray(item.leftAtoms) || Array.isArray(item.rightAtoms);
43
50
  if (hasBinarySides) {
44
51
  var leftText = _getSummaryText(item.leftAtoms || []);
@@ -433,7 +440,9 @@ var GroupBy = function GroupBy(props) {
433
440
  if (_found) return _found;
434
441
  }
435
442
  if (item.type === AtomsTypeEnum.AND_OR) {
436
- var _found2 = _getFirstField([].concat(_toConsumableArray(item.leftAtoms || []), _toConsumableArray(item.rightAtoms || []), _toConsumableArray(item.atoms || [])));
443
+ var _found2 = _getFirstField([].concat(_toConsumableArray((item.items || []).flatMap(function (logicItem) {
444
+ return logicItem.atoms || [];
445
+ })), _toConsumableArray(item.leftAtoms || []), _toConsumableArray(item.rightAtoms || []), _toConsumableArray(item.atoms || [])));
437
446
  if (_found2) return _found2;
438
447
  }
439
448
  if (item.type === AtomsTypeEnum.CASE_WHEN) {
@@ -346,7 +346,9 @@ var SelectIndex = function SelectIndex(props) {
346
346
  if (_found) return _found;
347
347
  }
348
348
  if (item.type === AtomsTypeEnum.AND_OR) {
349
- var _found2 = _getFirstField([].concat(_toConsumableArray(item.leftAtoms || []), _toConsumableArray(item.rightAtoms || []), _toConsumableArray(item.atoms || [])));
349
+ var _found2 = _getFirstField([].concat(_toConsumableArray((item.items || []).flatMap(function (logicItem) {
350
+ return logicItem.atoms || [];
351
+ })), _toConsumableArray(item.leftAtoms || []), _toConsumableArray(item.rightAtoms || []), _toConsumableArray(item.atoms || [])));
350
352
  if (_found2) return _found2;
351
353
  }
352
354
  if (item.type === AtomsTypeEnum.CASE_WHEN) {
@@ -7,7 +7,7 @@ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
7
7
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
8
8
  var _excluded = ["alias", "datasourceName", "datasourceId", "column"];
9
9
  import _regeneratorRuntime from "@babel/runtime/regenerator";
10
- import { useEffect, useState, useRef, useMemo } from 'react';
10
+ import { useEffect, useState, useRef, useMemo, useCallback } from 'react';
11
11
  import { uuidv4, getAlias, isSameColumnByIdFirst } from '../utils/helper';
12
12
  import { TypeEnum, JoinEnum, UnionEnum } from '../store/enum';
13
13
  import { splitByUnion } from '../utils';
@@ -98,7 +98,12 @@ var useStore = function useStore() {
98
98
  var _useState25 = useState(defaultMeta),
99
99
  _useState26 = _slicedToArray(_useState25, 2),
100
100
  metaList = _useState26[0],
101
- _setMeta = _useState26[1];
101
+ setMetaState = _useState26[1];
102
+ var latestMetaListRef = useRef(cloneDeep(defaultMeta));
103
+ var _setMeta = useCallback(function (data) {
104
+ latestMetaListRef.current = cloneDeep(data);
105
+ setMetaState(data);
106
+ }, []);
102
107
  var _useState27 = useState({
103
108
  visible: false,
104
109
  node: null,
@@ -175,30 +180,46 @@ var useStore = function useStore() {
175
180
  _useState60 = _slicedToArray(_useState59, 2),
176
181
  moduleDiff = _useState60[0],
177
182
  setModuleDiff = _useState60[1];
178
- var _useState61 = useState([]),
183
+ var _useState61 = useState(false),
179
184
  _useState62 = _slicedToArray(_useState61, 2),
180
- sourceData = _useState62[0],
181
- setSourceData = _useState62[1];
185
+ showFormulaSql = _useState62[0],
186
+ setShowFormulaSql = _useState62[1];
182
187
  var _useState63 = useState(false),
183
188
  _useState64 = _slicedToArray(_useState63, 2),
184
- moduleCopy = _useState64[0],
185
- setModuleCopy = _useState64[1];
189
+ showFormulaDiff = _useState64[0],
190
+ setShowFormulaDiff = _useState64[1];
186
191
  var _useState65 = useState(false),
187
192
  _useState66 = _slicedToArray(_useState65, 2),
188
- isMetabaseCopy = _useState66[0],
189
- setIsMetabaseCopy = _useState66[1];
193
+ hasFormulaSqlCode = _useState66[0],
194
+ setHasFormulaSqlCode = _useState66[1];
190
195
  var _useState67 = useState(false),
191
196
  _useState68 = _slicedToArray(_useState67, 2),
192
- joinAliasConflictCheck = _useState68[0],
193
- setJoinAliasConflictCheck = _useState68[1];
197
+ hasFormulaDiffCode = _useState68[0],
198
+ setHasFormulaDiffCode = _useState68[1];
194
199
  var _useState69 = useState([]),
195
200
  _useState70 = _slicedToArray(_useState69, 2),
196
- existsError = _useState70[0],
197
- setExistsError = _useState70[1];
198
- var _useState71 = useState(storage._metabaseCopyModule || []),
201
+ sourceData = _useState70[0],
202
+ setSourceData = _useState70[1];
203
+ var _useState71 = useState(false),
199
204
  _useState72 = _slicedToArray(_useState71, 2),
200
- metabaseCopyModule = _useState72[0],
201
- setMetabaseCopyModule = _useState72[1];
205
+ moduleCopy = _useState72[0],
206
+ setModuleCopy = _useState72[1];
207
+ var _useState73 = useState(false),
208
+ _useState74 = _slicedToArray(_useState73, 2),
209
+ isMetabaseCopy = _useState74[0],
210
+ setIsMetabaseCopy = _useState74[1];
211
+ var _useState75 = useState(false),
212
+ _useState76 = _slicedToArray(_useState75, 2),
213
+ joinAliasConflictCheck = _useState76[0],
214
+ setJoinAliasConflictCheck = _useState76[1];
215
+ var _useState77 = useState([]),
216
+ _useState78 = _slicedToArray(_useState77, 2),
217
+ existsError = _useState78[0],
218
+ setExistsError = _useState78[1];
219
+ var _useState79 = useState(storage._metabaseCopyModule || []),
220
+ _useState80 = _slicedToArray(_useState79, 2),
221
+ metabaseCopyModule = _useState80[0],
222
+ setMetabaseCopyModule = _useState80[1];
202
223
  var setFormulaTemplates = function setFormulaTemplates(data) {
203
224
  var newData = data === null || data === void 0 ? void 0 : data.map(function (v) {
204
225
  var children = v.children.map(function (vv) {
@@ -220,6 +241,8 @@ var useStore = function useStore() {
220
241
  var fetchColumnsFn = useRef();
221
242
  var fetchChangeFn = useRef();
222
243
  var fetchDiffFn = useRef();
244
+ var fetchFormulaSqlFn = useRef();
245
+ var fetchFormulaDiffFn = useRef();
223
246
  var fetchExistsError = useRef();
224
247
  var setFetchChangeFn = function setFetchChangeFn(fn) {
225
248
  fetchChangeFn.current = fn;
@@ -227,6 +250,14 @@ var useStore = function useStore() {
227
250
  var setFetchDiffFn = function setFetchDiffFn(fn) {
228
251
  fetchDiffFn.current = fn;
229
252
  };
253
+ var setFetchFormulaSqlFn = function setFetchFormulaSqlFn(fn) {
254
+ fetchFormulaSqlFn.current = fn;
255
+ setHasFormulaSqlCode(Boolean(fn));
256
+ };
257
+ var setFetchFormulaDiffFn = function setFetchFormulaDiffFn(fn) {
258
+ fetchFormulaDiffFn.current = fn;
259
+ setHasFormulaDiffCode(Boolean(fn));
260
+ };
230
261
  var setExistsErrorFn = function () {
231
262
  var _ref = _asyncToGenerator(_regeneratorRuntime.mark(function _callee(fn, value) {
232
263
  var data;
@@ -284,6 +315,60 @@ var useStore = function useStore() {
284
315
  return _ref2.apply(this, arguments);
285
316
  };
286
317
  }();
318
+ var getFormulaSqlCode = function () {
319
+ var _ref3 = _asyncToGenerator(_regeneratorRuntime.mark(function _callee3(value) {
320
+ var data;
321
+ return _regeneratorRuntime.wrap(function (_context3) {
322
+ while (1) switch (_context3.prev = _context3.next) {
323
+ case 0:
324
+ if (fetchFormulaSqlFn.current) {
325
+ _context3.next = 1;
326
+ break;
327
+ }
328
+ return _context3.abrupt("return", '');
329
+ case 1:
330
+ _context3.next = 2;
331
+ return fetchFormulaSqlFn.current(value);
332
+ case 2:
333
+ data = _context3.sent;
334
+ return _context3.abrupt("return", data);
335
+ case 3:
336
+ case "end":
337
+ return _context3.stop();
338
+ }
339
+ }, _callee3);
340
+ }));
341
+ return function getFormulaSqlCode(_x3) {
342
+ return _ref3.apply(this, arguments);
343
+ };
344
+ }();
345
+ var getFormulaDiffCode = function () {
346
+ var _ref4 = _asyncToGenerator(_regeneratorRuntime.mark(function _callee4(params) {
347
+ var data;
348
+ return _regeneratorRuntime.wrap(function (_context4) {
349
+ while (1) switch (_context4.prev = _context4.next) {
350
+ case 0:
351
+ if (fetchFormulaDiffFn.current) {
352
+ _context4.next = 1;
353
+ break;
354
+ }
355
+ return _context4.abrupt("return", undefined);
356
+ case 1:
357
+ _context4.next = 2;
358
+ return fetchFormulaDiffFn.current(params);
359
+ case 2:
360
+ data = _context4.sent;
361
+ return _context4.abrupt("return", data);
362
+ case 3:
363
+ case "end":
364
+ return _context4.stop();
365
+ }
366
+ }, _callee4);
367
+ }));
368
+ return function getFormulaDiffCode(_x4) {
369
+ return _ref4.apply(this, arguments);
370
+ };
371
+ }();
287
372
  var setFetchColumnsFn = function setFetchColumnsFn(fn) {
288
373
  fetchColumnsFn.current = fn;
289
374
  };
@@ -317,84 +402,84 @@ var useStore = function useStore() {
317
402
  }
318
403
  }, [sourceList, isExit, tableFlat]);
319
404
  var getSourceTable = function () {
320
- var _ref3 = _asyncToGenerator(_regeneratorRuntime.mark(function _callee4(source) {
405
+ var _ref5 = _asyncToGenerator(_regeneratorRuntime.mark(function _callee6(source) {
321
406
  var results;
322
- return _regeneratorRuntime.wrap(function (_context4) {
323
- while (1) switch (_context4.prev = _context4.next) {
407
+ return _regeneratorRuntime.wrap(function (_context6) {
408
+ while (1) switch (_context6.prev = _context6.next) {
324
409
  case 0:
325
- _context4.next = 1;
410
+ _context6.next = 1;
326
411
  return Promise.all(source.map(function () {
327
- var _ref4 = _asyncToGenerator(_regeneratorRuntime.mark(function _callee3(v) {
412
+ var _ref6 = _asyncToGenerator(_regeneratorRuntime.mark(function _callee5(v) {
328
413
  var tables;
329
- return _regeneratorRuntime.wrap(function (_context3) {
330
- while (1) switch (_context3.prev = _context3.next) {
414
+ return _regeneratorRuntime.wrap(function (_context5) {
415
+ while (1) switch (_context5.prev = _context5.next) {
331
416
  case 0:
332
- _context3.next = 1;
417
+ _context5.next = 1;
333
418
  return fetchDataset(v.datasourceId);
334
419
  case 1:
335
- tables = _context3.sent;
336
- return _context3.abrupt("return", _objectSpread(_objectSpread({}, v), {}, {
420
+ tables = _context5.sent;
421
+ return _context5.abrupt("return", _objectSpread(_objectSpread({}, v), {}, {
337
422
  children: tables
338
423
  }));
339
424
  case 2:
340
425
  case "end":
341
- return _context3.stop();
426
+ return _context5.stop();
342
427
  }
343
- }, _callee3);
428
+ }, _callee5);
344
429
  }));
345
- return function (_x4) {
346
- return _ref4.apply(this, arguments);
430
+ return function (_x6) {
431
+ return _ref6.apply(this, arguments);
347
432
  };
348
433
  }()));
349
434
  case 1:
350
- results = _context4.sent;
435
+ results = _context6.sent;
351
436
  setSourceTable(results || []);
352
437
  case 2:
353
438
  case "end":
354
- return _context4.stop();
439
+ return _context6.stop();
355
440
  }
356
- }, _callee4);
441
+ }, _callee6);
357
442
  }));
358
- return function getSourceTable(_x3) {
359
- return _ref3.apply(this, arguments);
443
+ return function getSourceTable(_x5) {
444
+ return _ref5.apply(this, arguments);
360
445
  };
361
446
  }();
362
447
  var showToolbar = function showToolbar(name) {
363
448
  return !!~toolbar.indexOf(name);
364
449
  };
365
450
  var fetchDataset = function () {
366
- var _ref5 = _asyncToGenerator(_regeneratorRuntime.mark(function _callee5(datasourceId) {
451
+ var _ref7 = _asyncToGenerator(_regeneratorRuntime.mark(function _callee7(datasourceId) {
367
452
  var tables, _tables;
368
- return _regeneratorRuntime.wrap(function (_context5) {
369
- while (1) switch (_context5.prev = _context5.next) {
453
+ return _regeneratorRuntime.wrap(function (_context7) {
454
+ while (1) switch (_context7.prev = _context7.next) {
370
455
  case 0:
371
456
  tables = getDataset(datasourceId);
372
457
  if (!tables.length) {
373
- _context5.next = 1;
458
+ _context7.next = 1;
374
459
  break;
375
460
  }
376
- return _context5.abrupt("return", tables);
461
+ return _context7.abrupt("return", tables);
377
462
  case 1:
378
- _context5.next = 2;
463
+ _context7.next = 2;
379
464
  return fetchDatasetFn.current(datasourceId, {
380
465
  isExit: isExit
381
466
  });
382
467
  case 2:
383
- _tables = _context5.sent;
468
+ _tables = _context7.sent;
384
469
  setDataset(datasourceId, _tables);
385
- return _context5.abrupt("return", _tables);
470
+ return _context7.abrupt("return", _tables);
386
471
  case 3:
387
472
  case "end":
388
- return _context5.stop();
473
+ return _context7.stop();
389
474
  }
390
- }, _callee5);
475
+ }, _callee7);
391
476
  }));
392
- return function fetchDataset(_x5) {
393
- return _ref5.apply(this, arguments);
477
+ return function fetchDataset(_x7) {
478
+ return _ref7.apply(this, arguments);
394
479
  };
395
480
  }();
396
481
  var fetchColumns = function () {
397
- var _ref6 = _asyncToGenerator(_regeneratorRuntime.mark(function _callee6(table, datasourceId) {
482
+ var _ref8 = _asyncToGenerator(_regeneratorRuntime.mark(function _callee8(table, datasourceId) {
398
483
  var _columns2;
399
484
  var oldColumns,
400
485
  callback,
@@ -412,15 +497,15 @@ var useStore = function useStore() {
412
497
  tableName,
413
498
  columns,
414
499
  _columns,
415
- _args6 = arguments;
416
- return _regeneratorRuntime.wrap(function (_context6) {
417
- while (1) switch (_context6.prev = _context6.next) {
500
+ _args8 = arguments;
501
+ return _regeneratorRuntime.wrap(function (_context8) {
502
+ while (1) switch (_context8.prev = _context8.next) {
418
503
  case 0:
419
- oldColumns = _args6.length > 2 && _args6[2] !== undefined ? _args6[2] : [];
420
- callback = _args6.length > 3 ? _args6[3] : undefined;
421
- isSelect = _args6.length > 4 && _args6[4] !== undefined ? _args6[4] : isSelectFields;
422
- _isSubquery = _args6.length > 5 && _args6[5] !== undefined ? _args6[5] : isSubquery;
423
- _isExit = _args6.length > 6 && _args6[6] !== undefined ? _args6[6] : isExit;
504
+ oldColumns = _args8.length > 2 && _args8[2] !== undefined ? _args8[2] : [];
505
+ callback = _args8.length > 3 ? _args8[3] : undefined;
506
+ isSelect = _args8.length > 4 && _args8[4] !== undefined ? _args8[4] : isSelectFields;
507
+ _isSubquery = _args8.length > 5 && _args8[5] !== undefined ? _args8[5] : isSubquery;
508
+ _isExit = _args8.length > 6 && _args8[6] !== undefined ? _args8[6] : isExit;
424
509
  oldObj = {};
425
510
  selectId = oldColumns.filter(function (v) {
426
511
  oldObj[v.id] = v;
@@ -438,15 +523,15 @@ var useStore = function useStore() {
438
523
  tableName = table.name;
439
524
  columns = getColumns(tableName);
440
525
  if (columns.length) {
441
- _context6.next = 2;
526
+ _context8.next = 2;
442
527
  break;
443
528
  }
444
- _context6.next = 1;
529
+ _context8.next = 1;
445
530
  return fetchColumnsFn.current(extra, datasourceId, {
446
531
  isExit: _isExit
447
532
  });
448
533
  case 1:
449
- columns = _context6.sent;
534
+ columns = _context8.sent;
450
535
  setColumns(tableName, columns);
451
536
  case 2:
452
537
  _columns = (_columns2 = columns) === null || _columns2 === void 0 ? void 0 : _columns2.map(function (v) {
@@ -462,54 +547,56 @@ var useStore = function useStore() {
462
547
  typeof callback === 'function' && callback(_columns);
463
548
  case 3:
464
549
  case "end":
465
- return _context6.stop();
550
+ return _context8.stop();
466
551
  }
467
- }, _callee6);
552
+ }, _callee8);
468
553
  }));
469
- return function fetchColumns(_x6, _x7) {
470
- return _ref6.apply(this, arguments);
554
+ return function fetchColumns(_x8, _x9) {
555
+ return _ref8.apply(this, arguments);
471
556
  };
472
557
  }();
473
558
  var setMeta = function () {
474
- var _ref7 = _asyncToGenerator(_regeneratorRuntime.mark(function _callee7(curData, groupInd) {
559
+ var _ref9 = _asyncToGenerator(_regeneratorRuntime.mark(function _callee9(curData, groupInd) {
475
560
  var changeObj,
476
561
  _metaList,
562
+ prevMeta,
477
563
  newMeta,
478
564
  isChange,
479
- _args7 = arguments;
480
- return _regeneratorRuntime.wrap(function (_context7) {
481
- while (1) switch (_context7.prev = _context7.next) {
565
+ _args9 = arguments;
566
+ return _regeneratorRuntime.wrap(function (_context9) {
567
+ while (1) switch (_context9.prev = _context9.next) {
482
568
  case 0:
483
- changeObj = _args7.length > 2 && _args7[2] !== undefined ? _args7[2] : {};
484
- _metaList = _args7.length > 3 && _args7[3] !== undefined ? _args7[3] : metaList;
485
- newMeta = cloneDeep(_metaList);
569
+ changeObj = _args9.length > 2 && _args9[2] !== undefined ? _args9[2] : {};
570
+ _metaList = _args9.length > 3 ? _args9[3] : undefined;
571
+ prevMeta = cloneDeep(_metaList || latestMetaListRef.current);
572
+ newMeta = cloneDeep(prevMeta);
486
573
  if (newMeta[groupInd]) {
487
- newMeta[groupInd].list = curData;
574
+ newMeta[groupInd].list = cloneDeep(curData);
488
575
  _setMeta(newMeta);
489
576
  }
490
577
  if (!(changeObj === 'init')) {
491
- _context7.next = 1;
578
+ _context9.next = 1;
492
579
  break;
493
580
  }
494
- return _context7.abrupt("return");
581
+ return _context9.abrupt("return");
495
582
  case 1:
496
- _context7.next = 2;
497
- return fetchChangeFn.current(splitByUnion(_metaList), changeObj, {
583
+ _context9.next = 2;
584
+ return fetchChangeFn.current(splitByUnion(newMeta), changeObj, {
498
585
  isExit: isExit
499
586
  });
500
587
  case 2:
501
- isChange = _context7.sent;
588
+ isChange = _context9.sent;
502
589
  if (isChange === false) {
503
- _setMeta(_metaList);
590
+ _setMeta(prevMeta);
504
591
  }
505
592
  case 3:
506
593
  case "end":
507
- return _context7.stop();
594
+ return _context9.stop();
508
595
  }
509
- }, _callee7);
596
+ }, _callee9);
510
597
  }));
511
- return function setMeta(_x8, _x9) {
512
- return _ref7.apply(this, arguments);
598
+ return function setMeta(_x0, _x1) {
599
+ return _ref9.apply(this, arguments);
513
600
  };
514
601
  }();
515
602
  var setPreData = function setPreData(data) {
@@ -908,6 +995,9 @@ var useStore = function useStore() {
908
995
  set_cacheSource2TableMap({});
909
996
  set_cacheColumnsMap({});
910
997
  };
998
+ var getCurrentMetaList = function getCurrentMetaList() {
999
+ return cloneDeep(latestMetaListRef.current);
1000
+ };
911
1001
  return {
912
1002
  showFields: showFields,
913
1003
  setShowFields: setShowFields,
@@ -952,6 +1042,7 @@ var useStore = function useStore() {
952
1042
  setDataset: setDataset,
953
1043
  getDataset: getDataset,
954
1044
  reset: reset,
1045
+ getCurrentMetaList: getCurrentMetaList,
955
1046
  setProps: setProps,
956
1047
  preProps: preProps.current,
957
1048
  showSubquery: showSubquery,
@@ -987,10 +1078,20 @@ var useStore = function useStore() {
987
1078
  setMetabaseCopy: setMetabaseCopy,
988
1079
  moduleDiff: moduleDiff,
989
1080
  setModuleDiff: setModuleDiff,
1081
+ showFormulaSql: showFormulaSql,
1082
+ setShowFormulaSql: setShowFormulaSql,
1083
+ showFormulaDiff: showFormulaDiff,
1084
+ setShowFormulaDiff: setShowFormulaDiff,
1085
+ hasFormulaSqlCode: hasFormulaSqlCode,
1086
+ hasFormulaDiffCode: hasFormulaDiffCode,
990
1087
  sourceData: sourceData,
991
1088
  setSourceData: setSourceData,
992
1089
  setFetchDiffFn: setFetchDiffFn,
993
1090
  getModuleDiffCode: getModuleDiffCode,
1091
+ setFetchFormulaSqlFn: setFetchFormulaSqlFn,
1092
+ getFormulaSqlCode: getFormulaSqlCode,
1093
+ setFetchFormulaDiffFn: setFetchFormulaDiffFn,
1094
+ getFormulaDiffCode: getFormulaDiffCode,
994
1095
  isSubquery: isSubquery,
995
1096
  setIsSubquery: setIsSubquery,
996
1097
  moduleCopy: moduleCopy,