@gingkoo/pandora-metabase 1.0.72 → 1.0.73

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 (35) hide show
  1. package/lib/cjs/components/dialog/expression/index.js +0 -1
  2. package/lib/cjs/components/modules/components/header.d.ts +2 -0
  3. package/lib/cjs/components/modules/components/header.js +54 -1
  4. package/lib/cjs/components/modules/custom-column.js +1 -0
  5. package/lib/cjs/components/modules/filter.js +1 -0
  6. package/lib/cjs/components/modules/join-data.js +1 -0
  7. package/lib/cjs/components/modules/permission-table.js +1 -0
  8. package/lib/cjs/components/modules/row-limit.js +1 -0
  9. package/lib/cjs/components/modules/sort.js +1 -0
  10. package/lib/cjs/components/modules/summarize/index.js +1 -0
  11. package/lib/cjs/components/modules/table-data.js +1 -0
  12. package/lib/cjs/components/modules/union.js +1 -0
  13. package/lib/cjs/hooks/use-state.js +103 -55
  14. package/lib/cjs/index.js +13 -7
  15. package/lib/cjs/types.d.ts +8 -0
  16. package/lib/cjs/utils.d.ts +1 -0
  17. package/lib/cjs/utils.js +6 -1
  18. package/lib/es/components/dialog/expression/index.js +0 -1
  19. package/lib/es/components/modules/components/header.d.ts +2 -0
  20. package/lib/es/components/modules/components/header.js +54 -2
  21. package/lib/es/components/modules/custom-column.js +1 -0
  22. package/lib/es/components/modules/filter.js +1 -0
  23. package/lib/es/components/modules/join-data.js +1 -0
  24. package/lib/es/components/modules/permission-table.js +1 -0
  25. package/lib/es/components/modules/row-limit.js +1 -0
  26. package/lib/es/components/modules/sort.js +1 -0
  27. package/lib/es/components/modules/summarize/index.js +1 -0
  28. package/lib/es/components/modules/table-data.js +1 -0
  29. package/lib/es/components/modules/union.js +1 -0
  30. package/lib/es/hooks/use-state.js +103 -55
  31. package/lib/es/index.js +13 -7
  32. package/lib/es/types.d.ts +8 -0
  33. package/lib/es/utils.d.ts +1 -0
  34. package/lib/es/utils.js +5 -0
  35. package/package.json +1 -1
@@ -713,7 +713,6 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
713
713
  })
714
714
  });
715
715
  };
716
- console.log('🚀 ~ SelectFilterColumn ~ curColumn:', curColumn);
717
716
  if (isNext) {
718
717
  // SQL_GROUP_TYPE
719
718
  var _getData = getData(curColumn),
@@ -2,6 +2,8 @@ interface HeaderProps {
2
2
  title: string;
3
3
  className?: string;
4
4
  onClose?: Function;
5
+ moduleDiff?: boolean;
6
+ meta?: any;
5
7
  }
6
8
  declare const Header: (props: HeaderProps) => import("react/jsx-runtime").JSX.Element;
7
9
  export default Header;
@@ -1,17 +1,70 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports["default"] = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/asyncToGenerator"));
7
10
  var _jsxRuntime = require("react/jsx-runtime");
8
11
  var _pandora = require("@gingkoo/pandora");
9
12
  var _icons = require("../../icons");
10
13
  var _locale = require("../../../locale");
14
+ var _useProvider = require("../../../hooks/use-provider");
15
+ var _utils = require("../../../utils");
16
+ var _diffViewer = _interopRequireDefault(require("../../dialog/diff-viewer"));
11
17
  var Header = function Header(props) {
18
+ var meta = props.meta;
19
+ var store = (0, _useProvider.useStore)();
20
+ var diff = /*#__PURE__*/function () {
21
+ var _ref = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
22
+ var index, _oldMeta, _newMeta, _yield$store$getModul, oldCode, newCode, o;
23
+ return _regenerator["default"].wrap(function (_context) {
24
+ while (1) switch (_context.prev = _context.next) {
25
+ case 0:
26
+ index = (0, _utils.findMetaKey)(store.sourceData, meta);
27
+ _oldMeta = store.sourceData[index];
28
+ _newMeta = meta;
29
+ _context.next = 1;
30
+ return store.getModuleDiffCode(_oldMeta, _newMeta);
31
+ case 1:
32
+ _yield$store$getModul = _context.sent;
33
+ oldCode = _yield$store$getModul.oldCode;
34
+ newCode = _yield$store$getModul.newCode;
35
+ o = _pandora.Modal2.openModal({
36
+ title: '差异对比',
37
+ transparentMask: true,
38
+ content: (0, _jsxRuntime.jsx)(_diffViewer["default"], {
39
+ oldCode: oldCode,
40
+ newCode: newCode
41
+ }),
42
+ onClose: function onClose() {}
43
+ });
44
+ case 2:
45
+ case "end":
46
+ return _context.stop();
47
+ }
48
+ }, _callee);
49
+ }));
50
+ return function diff() {
51
+ return _ref.apply(this, arguments);
52
+ };
53
+ }();
12
54
  return (0, _jsxRuntime.jsxs)("div", {
13
55
  className: "Sqb-item--text ".concat(props.className || ''),
14
- children: [props.title, props.onClose && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
56
+ children: [props.title, store.moduleDiff && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
57
+ title: '点击比对当前模块与初始模块的差异',
58
+ children: (0, _jsxRuntime.jsx)(_pandora.Button, {
59
+ style: {
60
+ color: 'inherit'
61
+ },
62
+ size: 'small',
63
+ type: 'link',
64
+ onClick: diff,
65
+ children: "\u5DEE\u5F02\u5BF9\u6BD4"
66
+ })
67
+ }), props.onClose && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
15
68
  placement: 'top',
16
69
  title: (0, _locale.__)('data.del'),
17
70
  children: (0, _jsxRuntime.jsx)(_icons.CloseIcon2, {
@@ -315,6 +315,7 @@ var CustomColumn = function CustomColumn(props) {
315
315
  children: (0, _jsxRuntime.jsxs)("div", {
316
316
  className: "Sqb-hover-parent",
317
317
  children: [(0, _jsxRuntime.jsx)(_header["default"], {
318
+ meta: meta,
318
319
  className: 'gray-text',
319
320
  title: (0, _locale.__)('SqlQueryBuilder.customColumn'),
320
321
  onClose: function onClose() {
@@ -172,6 +172,7 @@ var Filter = function Filter(props) {
172
172
  children: (0, _jsxRuntime.jsxs)("div", {
173
173
  className: "Sqb-hover-parent",
174
174
  children: [!meta.isPermanent ? (0, _jsxRuntime.jsx)(_header["default"], {
175
+ meta: meta,
175
176
  className: 'purple-text',
176
177
  title: (0, _locale.__)('SqlQueryBuilder.filter'),
177
178
  onClose: function onClose() {
@@ -1458,6 +1458,7 @@ var JoinData = function JoinData(props) {
1458
1458
  children: (0, _jsxRuntime.jsxs)("div", {
1459
1459
  className: (0, _classnames["default"])("Sqb-hover-parent"),
1460
1460
  children: [(0, _jsxRuntime.jsx)(_header["default"], {
1461
+ meta: meta,
1461
1462
  title: (0, _locale.__)('SqlQueryBuilder.joinData'),
1462
1463
  onClose: function onClose() {
1463
1464
  return store.delMeta(meta, groupIndex);
@@ -118,6 +118,7 @@ var PermissionTable = function PermissionTable(props) {
118
118
  children: (0, _jsxRuntime.jsxs)("div", {
119
119
  className: "Sqb-hover-parent",
120
120
  children: [(0, _jsxRuntime.jsx)(_header["default"], {
121
+ meta: meta,
121
122
  className: 'gray-text',
122
123
  title: (0, _locale.__)('SqlQueryBuilder.permissionTable'),
123
124
  onClose: function onClose() {
@@ -30,6 +30,7 @@ var RowLimit = function RowLimit(props) {
30
30
  children: (0, _jsxRuntime.jsxs)("div", {
31
31
  className: (0, _classnames["default"])("Sqb-hover-parent"),
32
32
  children: [(0, _jsxRuntime.jsx)(_header["default"], {
33
+ meta: meta,
33
34
  className: 'gray-text',
34
35
  title: (0, _locale.__)('SqlQueryBuilder.rowLimit'),
35
36
  onClose: function onClose() {
@@ -241,6 +241,7 @@ var Sort = function Sort(props) {
241
241
  children: (0, _jsxRuntime.jsxs)("div", {
242
242
  className: (0, _classnames["default"])("Sqb-hover-parent"),
243
243
  children: [(0, _jsxRuntime.jsx)(_header["default"], {
244
+ meta: meta,
244
245
  className: 'gray-text',
245
246
  title: (0, _locale.__)('SqlQueryBuilder.sort'),
246
247
  onClose: function onClose() {
@@ -23,6 +23,7 @@ var Summarize = function Summarize(props) {
23
23
  children: (0, _jsxRuntime.jsxs)("div", {
24
24
  className: (0, _classnames["default"])("Sqb-hover-parent"),
25
25
  children: [(0, _jsxRuntime.jsx)(_header["default"], {
26
+ meta: meta,
26
27
  className: 'green-text',
27
28
  title: (0, _locale.__)('SqlQueryBuilder.summarize'),
28
29
  onClose: function onClose() {
@@ -296,6 +296,7 @@ var TableData = function TableData(props) {
296
296
  children: (0, _jsxRuntime.jsxs)("div", {
297
297
  className: "Sqb-hover-parent",
298
298
  children: [(0, _jsxRuntime.jsx)(_header["default"], {
299
+ meta: meta,
299
300
  title: (0, _locale.__)('SqlQueryBuilder.data')
300
301
  }), (0, _jsxRuntime.jsx)("div", {
301
302
  className: "Sqb-item--content",
@@ -48,6 +48,7 @@ var RowLimit = function RowLimit(props) {
48
48
  children: (0, _jsxRuntime.jsxs)("div", {
49
49
  className: (0, _classnames["default"])("Sqb-hover-parent"),
50
50
  children: [(0, _jsxRuntime.jsx)(_header["default"], {
51
+ meta: meta,
51
52
  title: (0, _locale.__)('SqlQueryBuilder.union'),
52
53
  onClose: function onClose() {
53
54
  return store.delMeta(meta, groupIndex);
@@ -166,6 +166,14 @@ var useStore = function useStore() {
166
166
  _useState54 = (0, _slicedToArray2["default"])(_useState53, 2),
167
167
  metabaseCopy = _useState54[0],
168
168
  setMetabaseCopy = _useState54[1]; // 是否开启复制功能
169
+ var _useState55 = (0, _react.useState)(false),
170
+ _useState56 = (0, _slicedToArray2["default"])(_useState55, 2),
171
+ moduleDiff = _useState56[0],
172
+ setModuleDiff = _useState56[1]; // 是否开启模块比对功能
173
+ var _useState57 = (0, _react.useState)([]),
174
+ _useState58 = (0, _slicedToArray2["default"])(_useState57, 2),
175
+ sourceData = _useState58[0],
176
+ setSourceData = _useState58[1]; // 原始数据
169
177
  // 外层ref
170
178
  var popupContainer = (0, _react.useRef)();
171
179
  // const [fetchDatasetFn, setFetchDatasetFn] = useState<(id: string) => Promise<any>>(
@@ -177,9 +185,43 @@ var useStore = function useStore() {
177
185
  };
178
186
  var fetchColumnsFn = (0, _react.useRef)();
179
187
  var fetchChangeFn = (0, _react.useRef)();
188
+ var fetchDiffFn = (0, _react.useRef)();
180
189
  var setFetchChangeFn = function setFetchChangeFn(fn) {
181
190
  fetchChangeFn.current = fn;
182
191
  };
192
+ var setFetchDiffFn = function setFetchDiffFn(fn) {
193
+ fetchDiffFn.current = fn;
194
+ };
195
+ // 获取所有数据表
196
+ var getModuleDiffCode = /*#__PURE__*/function () {
197
+ var _ref = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
198
+ var oldCode,
199
+ newCode,
200
+ data,
201
+ _args = arguments;
202
+ return _regenerator["default"].wrap(function (_context) {
203
+ while (1) switch (_context.prev = _context.next) {
204
+ case 0:
205
+ oldCode = _args.length > 0 && _args[0] !== undefined ? _args[0] : [];
206
+ newCode = _args.length > 1 ? _args[1] : undefined;
207
+ _context.next = 1;
208
+ return fetchDiffFn.current({
209
+ oldCode: oldCode,
210
+ newCode: newCode
211
+ });
212
+ case 1:
213
+ data = _context.sent;
214
+ return _context.abrupt("return", data);
215
+ case 2:
216
+ case "end":
217
+ return _context.stop();
218
+ }
219
+ }, _callee);
220
+ }));
221
+ return function getModuleDiffCode() {
222
+ return _ref.apply(this, arguments);
223
+ };
224
+ }();
183
225
  var setFetchColumnsFn = function setFetchColumnsFn(fn) {
184
226
  fetchColumnsFn.current = fn;
185
227
  };
@@ -218,46 +260,46 @@ var useStore = function useStore() {
218
260
  }, [sourceList, isExit, tableFlat]);
219
261
  // 获取所有数据表
220
262
  var getSourceTable = /*#__PURE__*/function () {
221
- var _ref = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2(source) {
263
+ var _ref2 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3(source) {
222
264
  var results;
223
- return _regenerator["default"].wrap(function (_context2) {
224
- while (1) switch (_context2.prev = _context2.next) {
265
+ return _regenerator["default"].wrap(function (_context3) {
266
+ while (1) switch (_context3.prev = _context3.next) {
225
267
  case 0:
226
- _context2.next = 1;
268
+ _context3.next = 1;
227
269
  return Promise.all(source.map(/*#__PURE__*/function () {
228
- var _ref2 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(v) {
270
+ var _ref3 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2(v) {
229
271
  var tables;
230
- return _regenerator["default"].wrap(function (_context) {
231
- while (1) switch (_context.prev = _context.next) {
272
+ return _regenerator["default"].wrap(function (_context2) {
273
+ while (1) switch (_context2.prev = _context2.next) {
232
274
  case 0:
233
- _context.next = 1;
275
+ _context2.next = 1;
234
276
  return fetchDataset(v.datasourceId);
235
277
  case 1:
236
- tables = _context.sent;
237
- return _context.abrupt("return", (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, v), {}, {
278
+ tables = _context2.sent;
279
+ return _context2.abrupt("return", (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, v), {}, {
238
280
  children: tables
239
281
  }));
240
282
  case 2:
241
283
  case "end":
242
- return _context.stop();
284
+ return _context2.stop();
243
285
  }
244
- }, _callee);
286
+ }, _callee2);
245
287
  }));
246
288
  return function (_x2) {
247
- return _ref2.apply(this, arguments);
289
+ return _ref3.apply(this, arguments);
248
290
  };
249
291
  }()));
250
292
  case 1:
251
- results = _context2.sent;
293
+ results = _context3.sent;
252
294
  setSourceTable(results || []);
253
295
  case 2:
254
296
  case "end":
255
- return _context2.stop();
297
+ return _context3.stop();
256
298
  }
257
- }, _callee2);
299
+ }, _callee3);
258
300
  }));
259
301
  return function getSourceTable(_x) {
260
- return _ref.apply(this, arguments);
302
+ return _ref2.apply(this, arguments);
261
303
  };
262
304
  }();
263
305
  // const showMainColumn = useMemo(() => {
@@ -276,41 +318,41 @@ var useStore = function useStore() {
276
318
  return !!~toolbar.indexOf(name);
277
319
  };
278
320
  var fetchDataset = /*#__PURE__*/function () {
279
- var _ref3 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3(datasourceId) {
321
+ var _ref4 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4(datasourceId) {
280
322
  var tables, _tables;
281
- return _regenerator["default"].wrap(function (_context3) {
282
- while (1) switch (_context3.prev = _context3.next) {
323
+ return _regenerator["default"].wrap(function (_context4) {
324
+ while (1) switch (_context4.prev = _context4.next) {
283
325
  case 0:
284
326
  tables = getDataset(datasourceId);
285
327
  if (!tables.length) {
286
- _context3.next = 1;
328
+ _context4.next = 1;
287
329
  break;
288
330
  }
289
- return _context3.abrupt("return", tables);
331
+ return _context4.abrupt("return", tables);
290
332
  case 1:
291
- _context3.next = 2;
333
+ _context4.next = 2;
292
334
  return fetchDatasetFn.current(datasourceId, {
293
335
  isExit: isExit
294
336
  });
295
337
  case 2:
296
- _tables = _context3.sent;
338
+ _tables = _context4.sent;
297
339
  setDataset(datasourceId, _tables);
298
- return _context3.abrupt("return", _tables);
340
+ return _context4.abrupt("return", _tables);
299
341
  case 3:
300
342
  case "end":
301
- return _context3.stop();
343
+ return _context4.stop();
302
344
  }
303
- }, _callee3);
345
+ }, _callee4);
304
346
  }));
305
347
  return function fetchDataset(_x3) {
306
- return _ref3.apply(this, arguments);
348
+ return _ref4.apply(this, arguments);
307
349
  };
308
350
  }();
309
351
  // 根据数据源id查询集合列表
310
352
  // fetchDataset():
311
353
  // 查询表字段
312
354
  var fetchColumns = /*#__PURE__*/function () {
313
- var _ref4 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4(table, datasourceId) {
355
+ var _ref5 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee5(table, datasourceId) {
314
356
  var _columns2;
315
357
  var oldColumns,
316
358
  callback,
@@ -326,13 +368,13 @@ var useStore = function useStore() {
326
368
  tableName,
327
369
  columns,
328
370
  _columns,
329
- _args4 = arguments;
330
- return _regenerator["default"].wrap(function (_context4) {
331
- while (1) switch (_context4.prev = _context4.next) {
371
+ _args5 = arguments;
372
+ return _regenerator["default"].wrap(function (_context5) {
373
+ while (1) switch (_context5.prev = _context5.next) {
332
374
  case 0:
333
- oldColumns = _args4.length > 2 && _args4[2] !== undefined ? _args4[2] : [];
334
- callback = _args4.length > 3 ? _args4[3] : undefined;
335
- isSelect = _args4.length > 4 && _args4[4] !== undefined ? _args4[4] : isSelectFields;
375
+ oldColumns = _args5.length > 2 && _args5[2] !== undefined ? _args5[2] : [];
376
+ callback = _args5.length > 3 ? _args5[3] : undefined;
377
+ isSelect = _args5.length > 4 && _args5[4] !== undefined ? _args5[4] : isSelectFields;
336
378
  // 获取之前选中的数据
337
379
  oldObj = {};
338
380
  selectId = oldColumns.filter(function (v) {
@@ -347,15 +389,15 @@ var useStore = function useStore() {
347
389
  tableName = table.name;
348
390
  columns = getColumns(tableName);
349
391
  if (columns.length) {
350
- _context4.next = 2;
392
+ _context5.next = 2;
351
393
  break;
352
394
  }
353
- _context4.next = 1;
395
+ _context5.next = 1;
354
396
  return fetchColumnsFn.current(extra, datasourceId, {
355
397
  isExit: isExit
356
398
  });
357
399
  case 1:
358
- columns = _context4.sent;
400
+ columns = _context5.sent;
359
401
  setColumns(tableName, columns);
360
402
  case 2:
361
403
  _columns = (_columns2 = columns) === null || _columns2 === void 0 ? void 0 : _columns2.map(function (v) {
@@ -370,26 +412,26 @@ var useStore = function useStore() {
370
412
  typeof callback === 'function' && callback(_columns);
371
413
  case 3:
372
414
  case "end":
373
- return _context4.stop();
415
+ return _context5.stop();
374
416
  }
375
- }, _callee4);
417
+ }, _callee5);
376
418
  }));
377
419
  return function fetchColumns(_x4, _x5) {
378
- return _ref4.apply(this, arguments);
420
+ return _ref5.apply(this, arguments);
379
421
  };
380
422
  }();
381
423
  var setMeta = /*#__PURE__*/function () {
382
- var _ref5 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee5(curData, groupInd) {
424
+ var _ref6 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee6(curData, groupInd) {
383
425
  var changeObj,
384
426
  _metaList,
385
427
  newMeta,
386
428
  isChange,
387
- _args5 = arguments;
388
- return _regenerator["default"].wrap(function (_context5) {
389
- while (1) switch (_context5.prev = _context5.next) {
429
+ _args6 = arguments;
430
+ return _regenerator["default"].wrap(function (_context6) {
431
+ while (1) switch (_context6.prev = _context6.next) {
390
432
  case 0:
391
- changeObj = _args5.length > 2 && _args5[2] !== undefined ? _args5[2] : {};
392
- _metaList = _args5.length > 3 && _args5[3] !== undefined ? _args5[3] : metaList;
433
+ changeObj = _args6.length > 2 && _args6[2] !== undefined ? _args6[2] : {};
434
+ _metaList = _args6.length > 3 && _args6[3] !== undefined ? _args6[3] : metaList;
393
435
  newMeta = (0, _cloneDeep["default"])(_metaList);
394
436
  if (newMeta[groupInd]) {
395
437
  newMeta[groupInd].list = curData;
@@ -397,29 +439,29 @@ var useStore = function useStore() {
397
439
  }
398
440
  // 过滤掉初始化
399
441
  if (!(changeObj === 'init')) {
400
- _context5.next = 1;
442
+ _context6.next = 1;
401
443
  break;
402
444
  }
403
- return _context5.abrupt("return");
445
+ return _context6.abrupt("return");
404
446
  case 1:
405
- _context5.next = 2;
447
+ _context6.next = 2;
406
448
  return fetchChangeFn.current((0, _utils.splitByUnion)(_metaList), changeObj, {
407
449
  isExit: isExit
408
450
  });
409
451
  case 2:
410
- isChange = _context5.sent;
452
+ isChange = _context6.sent;
411
453
  // 是否还原
412
454
  if (isChange === false) {
413
455
  _setMeta(_metaList);
414
456
  }
415
457
  case 3:
416
458
  case "end":
417
- return _context5.stop();
459
+ return _context6.stop();
418
460
  }
419
- }, _callee5);
461
+ }, _callee6);
420
462
  }));
421
463
  return function setMeta(_x6, _x7) {
422
- return _ref5.apply(this, arguments);
464
+ return _ref6.apply(this, arguments);
423
465
  };
424
466
  }();
425
467
  // 回显
@@ -755,7 +797,13 @@ var useStore = function useStore() {
755
797
  copyType: copyType,
756
798
  setCopyType: setCopyType,
757
799
  metabaseCopy: metabaseCopy,
758
- setMetabaseCopy: setMetabaseCopy
800
+ setMetabaseCopy: setMetabaseCopy,
801
+ moduleDiff: moduleDiff,
802
+ setModuleDiff: setModuleDiff,
803
+ sourceData: sourceData,
804
+ setSourceData: setSourceData,
805
+ setFetchDiffFn: setFetchDiffFn,
806
+ getModuleDiffCode: getModuleDiffCode
759
807
  };
760
808
  };
761
809
  var _default = exports["default"] = useStore;
package/lib/cjs/index.js CHANGED
@@ -17,6 +17,7 @@ var _locale = require("./locale");
17
17
  var _Loading = _interopRequireDefault(require("./common/Loading"));
18
18
  var _metabase = _interopRequireDefault(require("./components/metabase"));
19
19
  var _utils = require("./utils");
20
+ var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
20
21
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
21
22
  // export { restoreStructure, handleSqlStruct, compressionStructure } from './store/helper';
22
23
 
@@ -34,6 +35,7 @@ var SqlVisionBuilder = _react["default"].forwardRef(function (props, ref) {
34
35
  getTables = props.getTables,
35
36
  getColumns = props.getColumns,
36
37
  onChange = props.onChange,
38
+ getModuleDiffCode = props.getModuleDiffCode,
37
39
  _props$tableNameTpl = props.tableNameTpl,
38
40
  tableNameTpl = _props$tableNameTpl === void 0 ? '${name}' : _props$tableNameTpl,
39
41
  _props$fieldNameTpl = props.fieldNameTpl,
@@ -68,23 +70,26 @@ var SqlVisionBuilder = _react["default"].forwardRef(function (props, ref) {
68
70
  isSelectFields = _props$isSelectFields === void 0 ? true : _props$isSelectFields,
69
71
  _props$tableFlat = props.tableFlat,
70
72
  tableFlat = _props$tableFlat === void 0 ? false : _props$tableFlat,
71
- _props$copyType = props.copyType,
72
- copyType = _props$copyType === void 0 ? [] : _props$copyType,
73
+ copyType = props.copyType,
73
74
  _props$metabaseCopy = props.metabaseCopy,
74
- metabaseCopy = _props$metabaseCopy === void 0 ? false : _props$metabaseCopy;
75
+ metabaseCopy = _props$metabaseCopy === void 0 ? false : _props$metabaseCopy,
76
+ _props$moduleDiff = props.moduleDiff,
77
+ moduleDiff = _props$moduleDiff === void 0 ? false : _props$moduleDiff;
75
78
  var store = (0, _useState["default"])();
76
79
  (0, _react.useEffect)(function () {
77
80
  getTables && store.setFetchDatasetFn(getTables);
78
81
  getColumns && store.setFetchColumnsFn(getColumns);
79
82
  onChange && store.setFetchChangeFn(onChange);
83
+ getModuleDiffCode && store.setFetchDiffFn(getModuleDiffCode);
80
84
  }, []);
81
85
  (0, _react.useEffect)(function () {
82
86
  store.setProps(props);
83
87
  }, [props]);
84
88
  (0, _react.useEffect)(function () {
85
89
  var _value = (0, _utils.reassembleByUnion)((0, _utils.patchData)(value));
86
- console.log('🚀 ~ _value:', _value);
87
- store.setPreData(_value);
90
+ var source_value = (0, _utils.patchData)(value);
91
+ store.setPreData((0, _cloneDeep["default"])(_value));
92
+ store.setSourceData(source_value);
88
93
  }, [value]);
89
94
  (0, _react.useEffect)(function () {
90
95
  store.setSourceList(isExit && exitSourceList && Array.from(exitSourceList).length > 0 ? exitSourceList || sourceList : sourceList);
@@ -106,9 +111,10 @@ var SqlVisionBuilder = _react["default"].forwardRef(function (props, ref) {
106
111
  store.setGroupByEnableAlias(groupByEnableAlias);
107
112
  store.setIsSelectFields(isSelectFields);
108
113
  store.setTableFlat(tableFlat);
109
- store.setCopyType(copyType);
114
+ store.setCopyType(copyType || []);
110
115
  store.setMetabaseCopy(metabaseCopy);
111
- }, [showFields, fieldNameTpl, tableNameTpl, toolbar, showSubquery, subShowSubquery, constantList, formulaTemplates, ignoreGroupByType, filterCustomType, isExit, tableEnableAlias, fieldEnableAlias, groupByEnableAlias, isSelectFields, tableFlat, copyType, metabaseCopy]);
116
+ store.setModuleDiff(moduleDiff);
117
+ }, [showFields, fieldNameTpl, tableNameTpl, toolbar, showSubquery, subShowSubquery, constantList, formulaTemplates, ignoreGroupByType, filterCustomType, isExit, tableEnableAlias, fieldEnableAlias, groupByEnableAlias, isSelectFields, tableFlat, copyType, metabaseCopy, moduleDiff]);
112
118
  _react["default"].useImperativeHandle(ref, function () {
113
119
  return {
114
120
  // setDatasource: (list) => {
@@ -49,6 +49,14 @@ export interface MetabaseProps {
49
49
  }, options: FetchOptions) => Promise<void | Boolean>;
50
50
  copyType?: (FormulaTypeEnum | string)[];
51
51
  metabaseCopy?: boolean;
52
+ moduleDiff?: boolean;
53
+ getModuleDiffCode?: (obj: {
54
+ oldCode: MetaListType;
55
+ newCode: MetaListType;
56
+ }) => Promise<{
57
+ oldCode: string;
58
+ newCode: string;
59
+ }>;
52
60
  }
53
61
  export interface OptionItem {
54
62
  value?: string;
@@ -2,6 +2,7 @@ import { TypeEnum } from './store/enum';
2
2
  import { MetaListType, MetaSummarize, MetaData_TableType, MetaData_ColumnsType, AtomsItem } from './store/types';
3
3
  import { DataType } from './components/dialog/select-column-multiple';
4
4
  export declare const findIndex: <T>(arr: T[], item: T) => number;
5
+ export declare const findMetaKey: <T>(arr: T[], item: T) => number;
5
6
  export declare const getMetaTabels: (data: MetaListType[]) => any;
6
7
  export declare const getColumnsTables: (data: DataType[]) => any;
7
8
  interface HelperResultType {
package/lib/cjs/utils.js CHANGED
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.isError = exports.getSubColumns = exports.getMetaTabels = exports.getHelper = exports.getColumnsTables = exports.findIndex = exports.changeTableAlias = exports.changeFieldAlias = exports.changeExistsCopyField = exports.changeCopyField = exports.buildSqlQuery = void 0;
7
+ exports.isError = exports.getSubColumns = exports.getMetaTabels = exports.getHelper = exports.getColumnsTables = exports.findMetaKey = exports.findIndex = exports.changeTableAlias = exports.changeFieldAlias = exports.changeExistsCopyField = exports.changeCopyField = exports.buildSqlQuery = void 0;
8
8
  exports.isValidSQLAlias = isValidSQLAlias;
9
9
  exports.patchData = void 0;
10
10
  exports.reassembleByUnion = reassembleByUnion;
@@ -26,6 +26,11 @@ var _excluded = ["list"];
26
26
  var findIndex = exports.findIndex = function findIndex(arr, item) {
27
27
  return arr.indexOf(item);
28
28
  };
29
+ var findMetaKey = exports.findMetaKey = function findMetaKey(arr, item) {
30
+ return arr.findIndex(function (v) {
31
+ return v.metaKey === item.metaKey;
32
+ });
33
+ };
29
34
  var getMetaTabels = exports.getMetaTabels = function getMetaTabels(data) {
30
35
  var obj = {};
31
36
  data.map(function (v) {
@@ -704,7 +704,6 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
704
704
  })
705
705
  });
706
706
  };
707
- console.log('🚀 ~ SelectFilterColumn ~ curColumn:', curColumn);
708
707
  if (isNext) {
709
708
  // SQL_GROUP_TYPE
710
709
  var _getData = getData(curColumn),
@@ -2,6 +2,8 @@ interface HeaderProps {
2
2
  title: string;
3
3
  className?: string;
4
4
  onClose?: Function;
5
+ moduleDiff?: boolean;
6
+ meta?: any;
5
7
  }
6
8
  declare const Header: (props: HeaderProps) => import("react/jsx-runtime").JSX.Element;
7
9
  export default Header;
@@ -1,11 +1,63 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
2
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
1
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Tooltip } from '@gingkoo/pandora';
4
+ import { Tooltip, Button, Modal2 } from '@gingkoo/pandora';
3
5
  import { CloseIcon2 } from '../../icons';
4
6
  import { __ } from '../../../locale';
7
+ import { useStore } from '../../../hooks/use-provider';
8
+ import { findMetaKey } from '../../../utils';
9
+ import DiffViewer from '../../dialog/diff-viewer';
5
10
  var Header = function Header(props) {
11
+ var meta = props.meta;
12
+ var store = useStore();
13
+ var diff = /*#__PURE__*/function () {
14
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
15
+ var index, _oldMeta, _newMeta, _yield$store$getModul, oldCode, newCode, o;
16
+ return _regeneratorRuntime.wrap(function (_context) {
17
+ while (1) switch (_context.prev = _context.next) {
18
+ case 0:
19
+ index = findMetaKey(store.sourceData, meta);
20
+ _oldMeta = store.sourceData[index];
21
+ _newMeta = meta;
22
+ _context.next = 1;
23
+ return store.getModuleDiffCode(_oldMeta, _newMeta);
24
+ case 1:
25
+ _yield$store$getModul = _context.sent;
26
+ oldCode = _yield$store$getModul.oldCode;
27
+ newCode = _yield$store$getModul.newCode;
28
+ o = Modal2.openModal({
29
+ title: '差异对比',
30
+ transparentMask: true,
31
+ content: _jsx(DiffViewer, {
32
+ oldCode: oldCode,
33
+ newCode: newCode
34
+ }),
35
+ onClose: function onClose() {}
36
+ });
37
+ case 2:
38
+ case "end":
39
+ return _context.stop();
40
+ }
41
+ }, _callee);
42
+ }));
43
+ return function diff() {
44
+ return _ref.apply(this, arguments);
45
+ };
46
+ }();
6
47
  return _jsxs("div", {
7
48
  className: "Sqb-item--text ".concat(props.className || ''),
8
- children: [props.title, props.onClose && _jsx(Tooltip, {
49
+ children: [props.title, store.moduleDiff && _jsx(Tooltip, {
50
+ title: '点击比对当前模块与初始模块的差异',
51
+ children: _jsx(Button, {
52
+ style: {
53
+ color: 'inherit'
54
+ },
55
+ size: 'small',
56
+ type: 'link',
57
+ onClick: diff,
58
+ children: "\u5DEE\u5F02\u5BF9\u6BD4"
59
+ })
60
+ }), props.onClose && _jsx(Tooltip, {
9
61
  placement: 'top',
10
62
  title: __('data.del'),
11
63
  children: _jsx(CloseIcon2, {
@@ -311,6 +311,7 @@ var CustomColumn = function CustomColumn(props) {
311
311
  children: _jsxs("div", {
312
312
  className: "Sqb-hover-parent",
313
313
  children: [_jsx(Header, {
314
+ meta: meta,
314
315
  className: 'gray-text',
315
316
  title: __('SqlQueryBuilder.customColumn'),
316
317
  onClose: function onClose() {
@@ -164,6 +164,7 @@ var Filter = function Filter(props) {
164
164
  children: _jsxs("div", {
165
165
  className: "Sqb-hover-parent",
166
166
  children: [!meta.isPermanent ? _jsx(Header, {
167
+ meta: meta,
167
168
  className: 'purple-text',
168
169
  title: __('SqlQueryBuilder.filter'),
169
170
  onClose: function onClose() {
@@ -1453,6 +1453,7 @@ var JoinData = function JoinData(props) {
1453
1453
  children: _jsxs("div", {
1454
1454
  className: cx("Sqb-hover-parent"),
1455
1455
  children: [_jsx(Header, {
1456
+ meta: meta,
1456
1457
  title: __('SqlQueryBuilder.joinData'),
1457
1458
  onClose: function onClose() {
1458
1459
  return store.delMeta(meta, groupIndex);
@@ -112,6 +112,7 @@ var PermissionTable = function PermissionTable(props) {
112
112
  children: _jsxs("div", {
113
113
  className: "Sqb-hover-parent",
114
114
  children: [_jsx(Header, {
115
+ meta: meta,
115
116
  className: 'gray-text',
116
117
  title: __('SqlQueryBuilder.permissionTable'),
117
118
  onClose: function onClose() {
@@ -23,6 +23,7 @@ var RowLimit = function RowLimit(props) {
23
23
  children: _jsxs("div", {
24
24
  className: cx("Sqb-hover-parent"),
25
25
  children: [_jsx(Header, {
26
+ meta: meta,
26
27
  className: 'gray-text',
27
28
  title: __('SqlQueryBuilder.rowLimit'),
28
29
  onClose: function onClose() {
@@ -234,6 +234,7 @@ var Sort = function Sort(props) {
234
234
  children: _jsxs("div", {
235
235
  className: cx("Sqb-hover-parent"),
236
236
  children: [_jsx(Header, {
237
+ meta: meta,
237
238
  className: 'gray-text',
238
239
  title: __('SqlQueryBuilder.sort'),
239
240
  onClose: function onClose() {
@@ -16,6 +16,7 @@ var Summarize = function Summarize(props) {
16
16
  children: _jsxs("div", {
17
17
  className: cx("Sqb-hover-parent"),
18
18
  children: [_jsx(Header, {
19
+ meta: meta,
19
20
  className: 'green-text',
20
21
  title: __('SqlQueryBuilder.summarize'),
21
22
  onClose: function onClose() {
@@ -290,6 +290,7 @@ var TableData = function TableData(props) {
290
290
  children: _jsxs("div", {
291
291
  className: "Sqb-hover-parent",
292
292
  children: [_jsx(Header, {
293
+ meta: meta,
293
294
  title: __('SqlQueryBuilder.data')
294
295
  }), _jsx("div", {
295
296
  className: "Sqb-item--content",
@@ -41,6 +41,7 @@ var RowLimit = function RowLimit(props) {
41
41
  children: _jsxs("div", {
42
42
  className: cx("Sqb-hover-parent"),
43
43
  children: [_jsx(Header, {
44
+ meta: meta,
44
45
  title: __('SqlQueryBuilder.union'),
45
46
  onClose: function onClose() {
46
47
  return store.delMeta(meta, groupIndex);
@@ -160,6 +160,14 @@ var useStore = function useStore() {
160
160
  _useState54 = _slicedToArray(_useState53, 2),
161
161
  metabaseCopy = _useState54[0],
162
162
  setMetabaseCopy = _useState54[1]; // 是否开启复制功能
163
+ var _useState55 = useState(false),
164
+ _useState56 = _slicedToArray(_useState55, 2),
165
+ moduleDiff = _useState56[0],
166
+ setModuleDiff = _useState56[1]; // 是否开启模块比对功能
167
+ var _useState57 = useState([]),
168
+ _useState58 = _slicedToArray(_useState57, 2),
169
+ sourceData = _useState58[0],
170
+ setSourceData = _useState58[1]; // 原始数据
163
171
  // 外层ref
164
172
  var popupContainer = useRef();
165
173
  // const [fetchDatasetFn, setFetchDatasetFn] = useState<(id: string) => Promise<any>>(
@@ -171,9 +179,43 @@ var useStore = function useStore() {
171
179
  };
172
180
  var fetchColumnsFn = useRef();
173
181
  var fetchChangeFn = useRef();
182
+ var fetchDiffFn = useRef();
174
183
  var setFetchChangeFn = function setFetchChangeFn(fn) {
175
184
  fetchChangeFn.current = fn;
176
185
  };
186
+ var setFetchDiffFn = function setFetchDiffFn(fn) {
187
+ fetchDiffFn.current = fn;
188
+ };
189
+ // 获取所有数据表
190
+ var getModuleDiffCode = /*#__PURE__*/function () {
191
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
192
+ var oldCode,
193
+ newCode,
194
+ data,
195
+ _args = arguments;
196
+ return _regeneratorRuntime.wrap(function (_context) {
197
+ while (1) switch (_context.prev = _context.next) {
198
+ case 0:
199
+ oldCode = _args.length > 0 && _args[0] !== undefined ? _args[0] : [];
200
+ newCode = _args.length > 1 ? _args[1] : undefined;
201
+ _context.next = 1;
202
+ return fetchDiffFn.current({
203
+ oldCode: oldCode,
204
+ newCode: newCode
205
+ });
206
+ case 1:
207
+ data = _context.sent;
208
+ return _context.abrupt("return", data);
209
+ case 2:
210
+ case "end":
211
+ return _context.stop();
212
+ }
213
+ }, _callee);
214
+ }));
215
+ return function getModuleDiffCode() {
216
+ return _ref.apply(this, arguments);
217
+ };
218
+ }();
177
219
  var setFetchColumnsFn = function setFetchColumnsFn(fn) {
178
220
  fetchColumnsFn.current = fn;
179
221
  };
@@ -212,46 +254,46 @@ var useStore = function useStore() {
212
254
  }, [sourceList, isExit, tableFlat]);
213
255
  // 获取所有数据表
214
256
  var getSourceTable = /*#__PURE__*/function () {
215
- var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(source) {
257
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(source) {
216
258
  var results;
217
- return _regeneratorRuntime.wrap(function (_context2) {
218
- while (1) switch (_context2.prev = _context2.next) {
259
+ return _regeneratorRuntime.wrap(function (_context3) {
260
+ while (1) switch (_context3.prev = _context3.next) {
219
261
  case 0:
220
- _context2.next = 1;
262
+ _context3.next = 1;
221
263
  return Promise.all(source.map(/*#__PURE__*/function () {
222
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(v) {
264
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(v) {
223
265
  var tables;
224
- return _regeneratorRuntime.wrap(function (_context) {
225
- while (1) switch (_context.prev = _context.next) {
266
+ return _regeneratorRuntime.wrap(function (_context2) {
267
+ while (1) switch (_context2.prev = _context2.next) {
226
268
  case 0:
227
- _context.next = 1;
269
+ _context2.next = 1;
228
270
  return fetchDataset(v.datasourceId);
229
271
  case 1:
230
- tables = _context.sent;
231
- return _context.abrupt("return", _objectSpread(_objectSpread({}, v), {}, {
272
+ tables = _context2.sent;
273
+ return _context2.abrupt("return", _objectSpread(_objectSpread({}, v), {}, {
232
274
  children: tables
233
275
  }));
234
276
  case 2:
235
277
  case "end":
236
- return _context.stop();
278
+ return _context2.stop();
237
279
  }
238
- }, _callee);
280
+ }, _callee2);
239
281
  }));
240
282
  return function (_x2) {
241
- return _ref2.apply(this, arguments);
283
+ return _ref3.apply(this, arguments);
242
284
  };
243
285
  }()));
244
286
  case 1:
245
- results = _context2.sent;
287
+ results = _context3.sent;
246
288
  setSourceTable(results || []);
247
289
  case 2:
248
290
  case "end":
249
- return _context2.stop();
291
+ return _context3.stop();
250
292
  }
251
- }, _callee2);
293
+ }, _callee3);
252
294
  }));
253
295
  return function getSourceTable(_x) {
254
- return _ref.apply(this, arguments);
296
+ return _ref2.apply(this, arguments);
255
297
  };
256
298
  }();
257
299
  // const showMainColumn = useMemo(() => {
@@ -270,41 +312,41 @@ var useStore = function useStore() {
270
312
  return !!~toolbar.indexOf(name);
271
313
  };
272
314
  var fetchDataset = /*#__PURE__*/function () {
273
- var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(datasourceId) {
315
+ var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(datasourceId) {
274
316
  var tables, _tables;
275
- return _regeneratorRuntime.wrap(function (_context3) {
276
- while (1) switch (_context3.prev = _context3.next) {
317
+ return _regeneratorRuntime.wrap(function (_context4) {
318
+ while (1) switch (_context4.prev = _context4.next) {
277
319
  case 0:
278
320
  tables = getDataset(datasourceId);
279
321
  if (!tables.length) {
280
- _context3.next = 1;
322
+ _context4.next = 1;
281
323
  break;
282
324
  }
283
- return _context3.abrupt("return", tables);
325
+ return _context4.abrupt("return", tables);
284
326
  case 1:
285
- _context3.next = 2;
327
+ _context4.next = 2;
286
328
  return fetchDatasetFn.current(datasourceId, {
287
329
  isExit: isExit
288
330
  });
289
331
  case 2:
290
- _tables = _context3.sent;
332
+ _tables = _context4.sent;
291
333
  setDataset(datasourceId, _tables);
292
- return _context3.abrupt("return", _tables);
334
+ return _context4.abrupt("return", _tables);
293
335
  case 3:
294
336
  case "end":
295
- return _context3.stop();
337
+ return _context4.stop();
296
338
  }
297
- }, _callee3);
339
+ }, _callee4);
298
340
  }));
299
341
  return function fetchDataset(_x3) {
300
- return _ref3.apply(this, arguments);
342
+ return _ref4.apply(this, arguments);
301
343
  };
302
344
  }();
303
345
  // 根据数据源id查询集合列表
304
346
  // fetchDataset():
305
347
  // 查询表字段
306
348
  var fetchColumns = /*#__PURE__*/function () {
307
- var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(table, datasourceId) {
349
+ var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5(table, datasourceId) {
308
350
  var _columns2;
309
351
  var oldColumns,
310
352
  callback,
@@ -320,13 +362,13 @@ var useStore = function useStore() {
320
362
  tableName,
321
363
  columns,
322
364
  _columns,
323
- _args4 = arguments;
324
- return _regeneratorRuntime.wrap(function (_context4) {
325
- while (1) switch (_context4.prev = _context4.next) {
365
+ _args5 = arguments;
366
+ return _regeneratorRuntime.wrap(function (_context5) {
367
+ while (1) switch (_context5.prev = _context5.next) {
326
368
  case 0:
327
- oldColumns = _args4.length > 2 && _args4[2] !== undefined ? _args4[2] : [];
328
- callback = _args4.length > 3 ? _args4[3] : undefined;
329
- isSelect = _args4.length > 4 && _args4[4] !== undefined ? _args4[4] : isSelectFields;
369
+ oldColumns = _args5.length > 2 && _args5[2] !== undefined ? _args5[2] : [];
370
+ callback = _args5.length > 3 ? _args5[3] : undefined;
371
+ isSelect = _args5.length > 4 && _args5[4] !== undefined ? _args5[4] : isSelectFields;
330
372
  // 获取之前选中的数据
331
373
  oldObj = {};
332
374
  selectId = oldColumns.filter(function (v) {
@@ -341,15 +383,15 @@ var useStore = function useStore() {
341
383
  tableName = table.name;
342
384
  columns = getColumns(tableName);
343
385
  if (columns.length) {
344
- _context4.next = 2;
386
+ _context5.next = 2;
345
387
  break;
346
388
  }
347
- _context4.next = 1;
389
+ _context5.next = 1;
348
390
  return fetchColumnsFn.current(extra, datasourceId, {
349
391
  isExit: isExit
350
392
  });
351
393
  case 1:
352
- columns = _context4.sent;
394
+ columns = _context5.sent;
353
395
  setColumns(tableName, columns);
354
396
  case 2:
355
397
  _columns = (_columns2 = columns) === null || _columns2 === void 0 ? void 0 : _columns2.map(function (v) {
@@ -364,26 +406,26 @@ var useStore = function useStore() {
364
406
  typeof callback === 'function' && callback(_columns);
365
407
  case 3:
366
408
  case "end":
367
- return _context4.stop();
409
+ return _context5.stop();
368
410
  }
369
- }, _callee4);
411
+ }, _callee5);
370
412
  }));
371
413
  return function fetchColumns(_x4, _x5) {
372
- return _ref4.apply(this, arguments);
414
+ return _ref5.apply(this, arguments);
373
415
  };
374
416
  }();
375
417
  var setMeta = /*#__PURE__*/function () {
376
- var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5(curData, groupInd) {
418
+ var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee6(curData, groupInd) {
377
419
  var changeObj,
378
420
  _metaList,
379
421
  newMeta,
380
422
  isChange,
381
- _args5 = arguments;
382
- return _regeneratorRuntime.wrap(function (_context5) {
383
- while (1) switch (_context5.prev = _context5.next) {
423
+ _args6 = arguments;
424
+ return _regeneratorRuntime.wrap(function (_context6) {
425
+ while (1) switch (_context6.prev = _context6.next) {
384
426
  case 0:
385
- changeObj = _args5.length > 2 && _args5[2] !== undefined ? _args5[2] : {};
386
- _metaList = _args5.length > 3 && _args5[3] !== undefined ? _args5[3] : metaList;
427
+ changeObj = _args6.length > 2 && _args6[2] !== undefined ? _args6[2] : {};
428
+ _metaList = _args6.length > 3 && _args6[3] !== undefined ? _args6[3] : metaList;
387
429
  newMeta = cloneDeep(_metaList);
388
430
  if (newMeta[groupInd]) {
389
431
  newMeta[groupInd].list = curData;
@@ -391,29 +433,29 @@ var useStore = function useStore() {
391
433
  }
392
434
  // 过滤掉初始化
393
435
  if (!(changeObj === 'init')) {
394
- _context5.next = 1;
436
+ _context6.next = 1;
395
437
  break;
396
438
  }
397
- return _context5.abrupt("return");
439
+ return _context6.abrupt("return");
398
440
  case 1:
399
- _context5.next = 2;
441
+ _context6.next = 2;
400
442
  return fetchChangeFn.current(splitByUnion(_metaList), changeObj, {
401
443
  isExit: isExit
402
444
  });
403
445
  case 2:
404
- isChange = _context5.sent;
446
+ isChange = _context6.sent;
405
447
  // 是否还原
406
448
  if (isChange === false) {
407
449
  _setMeta(_metaList);
408
450
  }
409
451
  case 3:
410
452
  case "end":
411
- return _context5.stop();
453
+ return _context6.stop();
412
454
  }
413
- }, _callee5);
455
+ }, _callee6);
414
456
  }));
415
457
  return function setMeta(_x6, _x7) {
416
- return _ref5.apply(this, arguments);
458
+ return _ref6.apply(this, arguments);
417
459
  };
418
460
  }();
419
461
  // 回显
@@ -749,7 +791,13 @@ var useStore = function useStore() {
749
791
  copyType: copyType,
750
792
  setCopyType: setCopyType,
751
793
  metabaseCopy: metabaseCopy,
752
- setMetabaseCopy: setMetabaseCopy
794
+ setMetabaseCopy: setMetabaseCopy,
795
+ moduleDiff: moduleDiff,
796
+ setModuleDiff: setModuleDiff,
797
+ sourceData: sourceData,
798
+ setSourceData: setSourceData,
799
+ setFetchDiffFn: setFetchDiffFn,
800
+ getModuleDiffCode: getModuleDiffCode
753
801
  };
754
802
  };
755
803
  export default useStore;
package/lib/es/index.js CHANGED
@@ -10,6 +10,7 @@ import { __ } from './locale';
10
10
  import Loading from './common/Loading';
11
11
  import Metabase from './components/metabase';
12
12
  import { reassembleByUnion, patchData } from './utils';
13
+ import cloneDeep from 'lodash/cloneDeep';
13
14
  /**
14
15
  * 规则
15
16
  * 1、主表一换 下面全部删除
@@ -24,6 +25,7 @@ var SqlVisionBuilder = React.forwardRef(function (props, ref) {
24
25
  getTables = props.getTables,
25
26
  getColumns = props.getColumns,
26
27
  onChange = props.onChange,
28
+ getModuleDiffCode = props.getModuleDiffCode,
27
29
  _props$tableNameTpl = props.tableNameTpl,
28
30
  tableNameTpl = _props$tableNameTpl === void 0 ? '${name}' : _props$tableNameTpl,
29
31
  _props$fieldNameTpl = props.fieldNameTpl,
@@ -58,23 +60,26 @@ var SqlVisionBuilder = React.forwardRef(function (props, ref) {
58
60
  isSelectFields = _props$isSelectFields === void 0 ? true : _props$isSelectFields,
59
61
  _props$tableFlat = props.tableFlat,
60
62
  tableFlat = _props$tableFlat === void 0 ? false : _props$tableFlat,
61
- _props$copyType = props.copyType,
62
- copyType = _props$copyType === void 0 ? [] : _props$copyType,
63
+ copyType = props.copyType,
63
64
  _props$metabaseCopy = props.metabaseCopy,
64
- metabaseCopy = _props$metabaseCopy === void 0 ? false : _props$metabaseCopy;
65
+ metabaseCopy = _props$metabaseCopy === void 0 ? false : _props$metabaseCopy,
66
+ _props$moduleDiff = props.moduleDiff,
67
+ moduleDiff = _props$moduleDiff === void 0 ? false : _props$moduleDiff;
65
68
  var store = useData();
66
69
  useEffect(function () {
67
70
  getTables && store.setFetchDatasetFn(getTables);
68
71
  getColumns && store.setFetchColumnsFn(getColumns);
69
72
  onChange && store.setFetchChangeFn(onChange);
73
+ getModuleDiffCode && store.setFetchDiffFn(getModuleDiffCode);
70
74
  }, []);
71
75
  useEffect(function () {
72
76
  store.setProps(props);
73
77
  }, [props]);
74
78
  useEffect(function () {
75
79
  var _value = reassembleByUnion(patchData(value));
76
- console.log('🚀 ~ _value:', _value);
77
- store.setPreData(_value);
80
+ var source_value = patchData(value);
81
+ store.setPreData(cloneDeep(_value));
82
+ store.setSourceData(source_value);
78
83
  }, [value]);
79
84
  useEffect(function () {
80
85
  store.setSourceList(isExit && exitSourceList && Array.from(exitSourceList).length > 0 ? exitSourceList || sourceList : sourceList);
@@ -96,9 +101,10 @@ var SqlVisionBuilder = React.forwardRef(function (props, ref) {
96
101
  store.setGroupByEnableAlias(groupByEnableAlias);
97
102
  store.setIsSelectFields(isSelectFields);
98
103
  store.setTableFlat(tableFlat);
99
- store.setCopyType(copyType);
104
+ store.setCopyType(copyType || []);
100
105
  store.setMetabaseCopy(metabaseCopy);
101
- }, [showFields, fieldNameTpl, tableNameTpl, toolbar, showSubquery, subShowSubquery, constantList, formulaTemplates, ignoreGroupByType, filterCustomType, isExit, tableEnableAlias, fieldEnableAlias, groupByEnableAlias, isSelectFields, tableFlat, copyType, metabaseCopy]);
106
+ store.setModuleDiff(moduleDiff);
107
+ }, [showFields, fieldNameTpl, tableNameTpl, toolbar, showSubquery, subShowSubquery, constantList, formulaTemplates, ignoreGroupByType, filterCustomType, isExit, tableEnableAlias, fieldEnableAlias, groupByEnableAlias, isSelectFields, tableFlat, copyType, metabaseCopy, moduleDiff]);
102
108
  React.useImperativeHandle(ref, function () {
103
109
  return {
104
110
  // setDatasource: (list) => {
package/lib/es/types.d.ts CHANGED
@@ -49,6 +49,14 @@ export interface MetabaseProps {
49
49
  }, options: FetchOptions) => Promise<void | Boolean>;
50
50
  copyType?: (FormulaTypeEnum | string)[];
51
51
  metabaseCopy?: boolean;
52
+ moduleDiff?: boolean;
53
+ getModuleDiffCode?: (obj: {
54
+ oldCode: MetaListType;
55
+ newCode: MetaListType;
56
+ }) => Promise<{
57
+ oldCode: string;
58
+ newCode: string;
59
+ }>;
52
60
  }
53
61
  export interface OptionItem {
54
62
  value?: string;
package/lib/es/utils.d.ts CHANGED
@@ -2,6 +2,7 @@ import { TypeEnum } from './store/enum';
2
2
  import { MetaListType, MetaSummarize, MetaData_TableType, MetaData_ColumnsType, AtomsItem } from './store/types';
3
3
  import { DataType } from './components/dialog/select-column-multiple';
4
4
  export declare const findIndex: <T>(arr: T[], item: T) => number;
5
+ export declare const findMetaKey: <T>(arr: T[], item: T) => number;
5
6
  export declare const getMetaTabels: (data: MetaListType[]) => any;
6
7
  export declare const getColumnsTables: (data: DataType[]) => any;
7
8
  interface HelperResultType {
package/lib/es/utils.js CHANGED
@@ -15,6 +15,11 @@ import { patchMetas } from './hooks/patch';
15
15
  export var findIndex = function findIndex(arr, item) {
16
16
  return arr.indexOf(item);
17
17
  };
18
+ export var findMetaKey = function findMetaKey(arr, item) {
19
+ return arr.findIndex(function (v) {
20
+ return v.metaKey === item.metaKey;
21
+ });
22
+ };
18
23
  export var getMetaTabels = function getMetaTabels(data) {
19
24
  var obj = {};
20
25
  data.map(function (v) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gingkoo/pandora-metabase",
3
- "version": "1.0.72",
3
+ "version": "1.0.73",
4
4
  "description": "",
5
5
  "main": "lib/es/index.js",
6
6
  "module": "lib/es/index.js",