@gingkoo/pandora-metabase 1.0.27 → 1.0.29

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 (66) hide show
  1. package/lib/cjs/common/SplitView/index.js +11 -12
  2. package/lib/cjs/components/dialog/custom-column/expression-editor.js +1 -2
  3. package/lib/cjs/components/dialog/custom-column/tokenizedI-input.js +1 -2
  4. package/lib/cjs/components/dialog/expression/index.js +11 -12
  5. package/lib/cjs/components/dialog/formula-list/index.js +53 -43
  6. package/lib/cjs/components/dialog/index.js +2 -2
  7. package/lib/cjs/components/dialog/select-column/index.js +4 -4
  8. package/lib/cjs/components/dialog/select-column-multiple/index.js +21 -10
  9. package/lib/cjs/components/dialog/select-join-column/index.js +13 -2
  10. package/lib/cjs/components/dialog/select-permission-table/index.js +2 -2
  11. package/lib/cjs/components/dialog/select-table/index.js +7 -7
  12. package/lib/cjs/components/icons.js +36 -36
  13. package/lib/cjs/components/metabase/index.js +41 -12
  14. package/lib/cjs/components/metabase/index.less +3 -0
  15. package/lib/cjs/components/modules/components/Wrapper.js +6 -6
  16. package/lib/cjs/components/modules/components/item-name.d.ts +7 -0
  17. package/lib/cjs/components/modules/components/item-name.js +34 -0
  18. package/lib/cjs/components/modules/components/meta-icon.js +6 -0
  19. package/lib/cjs/components/modules/custom-column.js +25 -25
  20. package/lib/cjs/components/modules/filter.js +2 -2
  21. package/lib/cjs/components/modules/join-data.js +215 -81
  22. package/lib/cjs/components/modules/permission-table.js +24 -10
  23. package/lib/cjs/components/modules/sort.js +17 -13
  24. package/lib/cjs/components/modules/summarize/group-by.js +90 -38
  25. package/lib/cjs/components/modules/summarize/select-index.js +84 -38
  26. package/lib/cjs/components/modules/table-data.js +14 -6
  27. package/lib/cjs/components/popup.js +1 -2
  28. package/lib/cjs/hooks/use-state.js +58 -65
  29. package/lib/cjs/index.js +1 -2
  30. package/lib/cjs/locale/en.js +5 -2
  31. package/lib/cjs/locale/zh.js +5 -2
  32. package/lib/cjs/utils/transformSql.d.ts +6 -0
  33. package/lib/cjs/utils/transformSql.js +968 -0
  34. package/lib/cjs/utils.d.ts +7 -1
  35. package/lib/cjs/utils.js +112 -15
  36. package/lib/es/common/SplitView/index.js +10 -10
  37. package/lib/es/components/dialog/expression/index.js +10 -10
  38. package/lib/es/components/dialog/formula-list/index.js +54 -44
  39. package/lib/es/components/dialog/select-column/index.js +4 -4
  40. package/lib/es/components/dialog/select-column-multiple/index.js +21 -10
  41. package/lib/es/components/dialog/select-join-column/index.js +13 -2
  42. package/lib/es/components/dialog/select-permission-table/index.js +2 -2
  43. package/lib/es/components/dialog/select-table/index.js +7 -7
  44. package/lib/es/components/icons.js +36 -36
  45. package/lib/es/components/metabase/index.js +42 -13
  46. package/lib/es/components/metabase/index.less +3 -0
  47. package/lib/es/components/modules/components/Wrapper.js +6 -6
  48. package/lib/es/components/modules/components/item-name.d.ts +7 -0
  49. package/lib/es/components/modules/components/item-name.js +28 -0
  50. package/lib/es/components/modules/components/meta-icon.js +6 -0
  51. package/lib/es/components/modules/custom-column.js +26 -26
  52. package/lib/es/components/modules/filter.js +2 -2
  53. package/lib/es/components/modules/join-data.js +216 -82
  54. package/lib/es/components/modules/permission-table.js +24 -10
  55. package/lib/es/components/modules/sort.js +18 -14
  56. package/lib/es/components/modules/summarize/group-by.js +92 -40
  57. package/lib/es/components/modules/summarize/select-index.js +86 -40
  58. package/lib/es/components/modules/table-data.js +14 -6
  59. package/lib/es/hooks/use-state.js +58 -65
  60. package/lib/es/locale/en.js +5 -2
  61. package/lib/es/locale/zh.js +5 -2
  62. package/lib/es/utils/transformSql.d.ts +6 -0
  63. package/lib/es/utils/transformSql.js +961 -0
  64. package/lib/es/utils.d.ts +7 -1
  65. package/lib/es/utils.js +102 -4
  66. package/package.json +1 -1
@@ -52,11 +52,40 @@ var Metabase = function Metabase(props) {
52
52
  if (!visible) return null;
53
53
  return content;
54
54
  }, [store.popupData2]);
55
+ var onCheck = function onCheck() {
56
+ var doms = store.popupContainer.current.querySelectorAll('.isError');
57
+ if (doms.length) {
58
+ _pandora.Modal.confirm({
59
+ title: (0, _locale.__)('metabase.prompt'),
60
+ content: (0, _locale.__)('metabase.validationFailed'),
61
+ onOk: function () {
62
+ var _onOk = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
63
+ return _regenerator["default"].wrap(function (_context) {
64
+ while (1) switch (_context.prev = _context.next) {
65
+ case 0:
66
+ _context.next = 1;
67
+ return onSave();
68
+ case 1:
69
+ case "end":
70
+ return _context.stop();
71
+ }
72
+ }, _callee);
73
+ }));
74
+ function onOk() {
75
+ return _onOk.apply(this, arguments);
76
+ }
77
+ return onOk;
78
+ }()
79
+ });
80
+ } else {
81
+ onSave();
82
+ }
83
+ };
55
84
  var onSave = /*#__PURE__*/function () {
56
- var _ref = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
85
+ var _ref = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
57
86
  var intercept, _metaList;
58
- return _regenerator["default"].wrap(function _callee$(_context) {
59
- while (1) switch (_context.prev = _context.next) {
87
+ return _regenerator["default"].wrap(function (_context2) {
88
+ while (1) switch (_context2.prev = _context2.next) {
60
89
  case 0:
61
90
  intercept = false; // 是否返回
62
91
  _metaList = (0, _utils.splitByUnion)(store.metaList);
@@ -69,21 +98,21 @@ var Metabase = function Metabase(props) {
69
98
  }
70
99
  });
71
100
  if (!(saveLoading || intercept)) {
72
- _context.next = 6;
101
+ _context2.next = 1;
73
102
  break;
74
103
  }
75
- return _context.abrupt("return", null);
76
- case 6:
104
+ return _context2.abrupt("return", null);
105
+ case 1:
77
106
  setSaveLoading(true);
78
- _context.next = 9;
107
+ _context2.next = 2;
79
108
  return onOk === null || onOk === void 0 ? void 0 : onOk(_metaList);
80
- case 9:
109
+ case 2:
81
110
  setSaveLoading(false);
82
- case 10:
111
+ case 3:
83
112
  case "end":
84
- return _context.stop();
113
+ return _context2.stop();
85
114
  }
86
- }, _callee);
115
+ }, _callee2);
87
116
  }));
88
117
  return function onSave() {
89
118
  return _ref.apply(this, arguments);
@@ -126,7 +155,7 @@ var Metabase = function Metabase(props) {
126
155
  className: ":Sqb-btn",
127
156
  loading: saveLoading,
128
157
  disabled: saveLoading,
129
- onClick: onSave,
158
+ onClick: onCheck,
130
159
  children: btnText || (0, _locale.__)('SqlQueryBuilder.visualize')
131
160
  }) : null, store.popupContainer.current && (0, _jsxRuntime.jsx)(_popup["default"], {
132
161
  container: store.popupData.container || store.popupContainer.current,
@@ -259,6 +259,9 @@
259
259
  }
260
260
  }
261
261
  }
262
+ &.isError {
263
+ background-color: red;
264
+ }
262
265
  }
263
266
 
264
267
  .ant-input-number {
@@ -32,19 +32,19 @@ var Wrapper = function Wrapper(_ref) {
32
32
  function _animation() {
33
33
  _animation = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
34
34
  var _couterRef$current;
35
- return _regenerator["default"].wrap(function _callee$(_context) {
35
+ return _regenerator["default"].wrap(function (_context) {
36
36
  while (1) switch (_context.prev = _context.next) {
37
37
  case 0:
38
- _context.next = 2;
38
+ _context.next = 1;
39
39
  return (0, _helper.sleep)(10);
40
- case 2:
40
+ case 1:
41
41
  setOpacity(1);
42
42
  ((_couterRef$current = couterRef.current) === null || _couterRef$current === void 0 || (_couterRef$current = _couterRef$current.childNodes) === null || _couterRef$current === void 0 ? void 0 : _couterRef$current.length) && setMaxHeight(couterRef.current.childNodes[0].clientHeight + 16);
43
- _context.next = 6;
43
+ _context.next = 2;
44
44
  return (0, _helper.sleep)(500);
45
- case 6:
45
+ case 2:
46
46
  setMaxHeight('auto');
47
- case 7:
47
+ case 3:
48
48
  case "end":
49
49
  return _context.stop();
50
50
  }
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ interface HeaderProps {
3
+ children: React.ReactNode;
4
+ isError: boolean;
5
+ }
6
+ declare const ItemName: (props: HeaderProps) => import("react/jsx-runtime").JSX.Element;
7
+ export default ItemName;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ var _pandora = require("@gingkoo/pandora");
9
+ var _pandoraIcons = require("@gingkoo/pandora-icons");
10
+ var _locale = require("../../../locale");
11
+ var ItemName = function ItemName(props) {
12
+ var children = props.children,
13
+ isError = props.isError;
14
+ return (0, _jsxRuntime.jsx)(_pandora.Badge, {
15
+ offset: [-8, 0],
16
+ count: isError ? (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
17
+ title: (0, _locale.__)('metabase.verify'),
18
+ children: (0, _jsxRuntime.jsx)(_pandora.Button, {
19
+ className: 'isError',
20
+ style: {
21
+ width: '100%',
22
+ height: '100%',
23
+ fontSize: 18
24
+ },
25
+ danger: true,
26
+ size: 'small',
27
+ icon: (0, _jsxRuntime.jsx)(_pandoraIcons.ExclamationCircleFill, {}),
28
+ iconOnly: true
29
+ })
30
+ }) : '',
31
+ children: children
32
+ });
33
+ };
34
+ var _default = exports["default"] = ItemName;
@@ -153,6 +153,9 @@ var findNextIcon = function findNextIcon(store, props) {
153
153
  } else {
154
154
  available = OrderType.slice(curLocation + 1, nextLocation);
155
155
  }
156
+ if (nextType === _enum.TypeEnum.joinData) {
157
+ available = [_enum.TypeEnum.joinData];
158
+ }
156
159
  }
157
160
  if (type === _enum.TypeEnum.joinData) {
158
161
  if (ExistAboveGroupBy && isLast) {
@@ -173,6 +176,9 @@ var findNextIcon = function findNextIcon(store, props) {
173
176
  if (nextType !== _enum.TypeEnum.joinData && meta.table2.name) {
174
177
  available.unshift(_enum.TypeEnum.joinData);
175
178
  }
179
+ if (nextType === _enum.TypeEnum.joinData) {
180
+ available = [_enum.TypeEnum.joinData];
181
+ }
176
182
  }
177
183
  if (type === _enum.TypeEnum.customColumn) {
178
184
  if (ExistAboveGroupBy && isLast) {
@@ -12,6 +12,7 @@ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/
12
12
  var _jsxRuntime = require("react/jsx-runtime");
13
13
  var _pandora = require("@gingkoo/pandora");
14
14
  var _useProvider = require("../../hooks/use-provider");
15
+ var _classnames = _interopRequireDefault(require("classnames"));
15
16
  var _locale = require("../../locale");
16
17
  var _utils = require("../../utils");
17
18
  var _helper = require("../../utils/helper");
@@ -22,6 +23,7 @@ var _dialog = require("../dialog");
22
23
  var _Wrapper = _interopRequireDefault(require("./components/Wrapper"));
23
24
  var _metaIcon = _interopRequireDefault(require("./components/meta-icon"));
24
25
  var _header = _interopRequireDefault(require("./components/header"));
26
+ var _itemName = _interopRequireDefault(require("./components/item-name"));
25
27
  var CustomColumn = function CustomColumn(props) {
26
28
  var meta = props.meta,
27
29
  groupIndex = props.groupIndex;
@@ -73,14 +75,14 @@ var CustomColumn = function CustomColumn(props) {
73
75
  function _handleUpdate() {
74
76
  _handleUpdate = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(e, i) {
75
77
  var node, newMeta, value, columns;
76
- return _regenerator["default"].wrap(function _callee$(_context) {
78
+ return _regenerator["default"].wrap(function (_context) {
77
79
  while (1) switch (_context.prev = _context.next) {
78
80
  case 0:
79
81
  node = e.currentTarget;
80
82
  closePopup();
81
- _context.next = 4;
83
+ _context.next = 1;
82
84
  return (0, _helper.sleep)(100);
83
- case 4:
85
+ case 1:
84
86
  newMeta = store.metaList[groupIndex].list.slice();
85
87
  value = customColumn[i];
86
88
  columns = getAvailableColumns();
@@ -102,7 +104,7 @@ var CustomColumn = function CustomColumn(props) {
102
104
  onClose: closePopup
103
105
  })
104
106
  });
105
- case 8:
107
+ case 2:
106
108
  case "end":
107
109
  return _context.stop();
108
110
  }
@@ -128,8 +130,8 @@ var CustomColumn = function CustomColumn(props) {
128
130
  tableId: prevGroupBy.alias,
129
131
  tableUuid: prevGroupBy.tableUuid || (0, _helper.uuidv4)('table'),
130
132
  alias: prevGroupBy.alias,
131
- datasourceId: mainTable.table.datasourceId,
132
- datasourceName: mainTable.table.datasourceName,
133
+ datasourceId: '',
134
+ datasourceName: '',
133
135
  columns: []
134
136
  };
135
137
  if (prevGroupBy !== null && prevGroupBy !== void 0 && (_prevGroupBy$group = prevGroupBy.group) !== null && _prevGroupBy$group !== void 0 && _prevGroupBy$group.length) {
@@ -161,15 +163,11 @@ var CustomColumn = function CustomColumn(props) {
161
163
  data = [_data];
162
164
  var joinData = prevList.filter(function (v) {
163
165
  return v.type === _enum.TypeEnum.joinData;
164
- })
165
- // @ts-ignore
166
- .filter(function (v) {
166
+ }).filter(function (v) {
167
167
  return v && v.table2.name;
168
168
  });
169
169
  if (joinData.length) {
170
- data = data.concat(
171
- // @ts-ignore
172
- joinData.map(function (v) {
170
+ data = data.concat(joinData.map(function (v) {
173
171
  return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, v.table2), {}, {
174
172
  alias: v.table2.alias,
175
173
  table: v.table2.name,
@@ -182,7 +180,6 @@ var CustomColumn = function CustomColumn(props) {
182
180
  }));
183
181
  }
184
182
  } else {
185
- // @ts-ignore
186
183
  data = store.metaList[groupIndex].list.slice(0, index).map(function (v) {
187
184
  if (v.type === _enum.TypeEnum.data) {
188
185
  return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, v.table), {}, {
@@ -303,20 +300,23 @@ var CustomColumn = function CustomColumn(props) {
303
300
  children: (0, _jsxRuntime.jsxs)("div", {
304
301
  className: "Sqb-NotebookCell gray-bg",
305
302
  children: [meta.customColumn.map(function (v, i) {
306
- return (0, _jsxRuntime.jsxs)("div", {
307
- className: "Sqb-TableName gray-name",
308
- onClick: function onClick(e) {
309
- return showSubQuery(e, i);
310
- },
311
- children: [v.name, (0, _jsxRuntime.jsx)("span", {
312
- style: {
313
- fontSize: 0
314
- },
303
+ return (0, _jsxRuntime.jsx)(_itemName["default"], {
304
+ isError: (0, _utils.isError)(v.formulaList, getColumns()),
305
+ children: (0, _jsxRuntime.jsxs)("div", {
306
+ className: (0, _classnames["default"])("Sqb-TableName gray-name"),
315
307
  onClick: function onClick(e) {
316
- return handleDel(e, i);
308
+ return showSubQuery(e, i);
317
309
  },
318
- children: (0, _jsxRuntime.jsx)(_icons.CloseIcon, {})
319
- })]
310
+ children: [v.name, (0, _jsxRuntime.jsx)("span", {
311
+ style: {
312
+ fontSize: 0
313
+ },
314
+ onClick: function onClick(e) {
315
+ return handleDel(e, i);
316
+ },
317
+ children: (0, _jsxRuntime.jsx)(_icons.CloseIcon, {})
318
+ })]
319
+ })
320
320
  }, i);
321
321
  }), (0, _jsxRuntime.jsx)("div", {
322
322
  className: "Sqb-TableName gray-name",
@@ -47,8 +47,8 @@ var Filter = function Filter(props) {
47
47
  id: prevGroupBy.alias,
48
48
  tableUuid: prevGroupBy.tableUuid,
49
49
  // alias: (prevGroupBy as MetaSummarize).alias,
50
- datasourceId: mainTable.table.datasourceId,
51
- datasourceName: mainTable.table.datasourceName,
50
+ // datasourceId: mainTable.table.datasourceId,
51
+ // datasourceName: mainTable.table.datasourceName,
52
52
  columns: []
53
53
  };
54
54
  if (prevGroupBy !== null && prevGroupBy !== void 0 && (_prevGroupBy$group = prevGroupBy.group) !== null && _prevGroupBy$group !== void 0 && _prevGroupBy$group.length) {