@gingkoo/pandora-metabase 1.0.129 → 1.0.131

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 (65) hide show
  1. package/lib/cjs/components/dialog/expression/index.js +0 -1
  2. package/lib/cjs/components/dialog/formula-list/utils.js +0 -3
  3. package/lib/cjs/components/dialog/select-column/index.js +2 -2
  4. package/lib/cjs/components/dialog/select-column-multiple/index.d.ts +0 -1
  5. package/lib/cjs/components/dialog/select-column-multiple/index.js +44 -19
  6. package/lib/cjs/components/dialog/select-join-column/index.js +23 -7
  7. package/lib/cjs/components/dialog/select-join-column-multiple/index.js +15 -6
  8. package/lib/cjs/components/dialog/select-permission-table/index.js +2 -2
  9. package/lib/cjs/components/dialog/select-summarize/index.js +1 -3
  10. package/lib/cjs/components/dialog/select-table/index.d.ts +1 -2
  11. package/lib/cjs/components/dialog/select-table/index.js +230 -210
  12. package/lib/cjs/components/dialog/select-table/index.less +51 -36
  13. package/lib/cjs/components/metabase/index.js +34 -16
  14. package/lib/cjs/components/modules/components/item-name.js +0 -1
  15. package/lib/cjs/components/modules/custom-column.js +3 -7
  16. package/lib/cjs/components/modules/filter.js +3 -6
  17. package/lib/cjs/components/modules/join-data.js +41 -87
  18. package/lib/cjs/components/modules/permission-table.js +5 -9
  19. package/lib/cjs/components/modules/sort.js +1 -2
  20. package/lib/cjs/components/modules/summarize/group-by.js +1 -8
  21. package/lib/cjs/components/modules/summarize/select-index.js +1 -4
  22. package/lib/cjs/components/modules/table-data.js +28 -44
  23. package/lib/cjs/hooks/use-state.js +22 -147
  24. package/lib/cjs/index.js +1 -7
  25. package/lib/cjs/locale/en.js +1 -0
  26. package/lib/cjs/locale/zh.js +1 -0
  27. package/lib/cjs/store/types.d.ts +4 -5
  28. package/lib/cjs/types.d.ts +0 -8
  29. package/lib/cjs/utils/helper.d.ts +4 -0
  30. package/lib/cjs/utils/helper.js +102 -1
  31. package/lib/cjs/utils/transformSql.js +0 -2
  32. package/lib/cjs/utils.js +38 -18
  33. package/lib/es/components/dialog/expression/index.js +0 -1
  34. package/lib/es/components/dialog/formula-list/utils.js +0 -3
  35. package/lib/es/components/dialog/select-column/index.js +3 -3
  36. package/lib/es/components/dialog/select-column-multiple/index.d.ts +0 -1
  37. package/lib/es/components/dialog/select-column-multiple/index.js +45 -21
  38. package/lib/es/components/dialog/select-join-column/index.js +24 -8
  39. package/lib/es/components/dialog/select-join-column-multiple/index.js +16 -7
  40. package/lib/es/components/dialog/select-permission-table/index.js +3 -3
  41. package/lib/es/components/dialog/select-summarize/index.js +1 -3
  42. package/lib/es/components/dialog/select-table/index.d.ts +1 -2
  43. package/lib/es/components/dialog/select-table/index.js +232 -212
  44. package/lib/es/components/dialog/select-table/index.less +51 -36
  45. package/lib/es/components/metabase/index.js +34 -16
  46. package/lib/es/components/modules/components/item-name.js +0 -1
  47. package/lib/es/components/modules/custom-column.js +3 -7
  48. package/lib/es/components/modules/filter.js +3 -6
  49. package/lib/es/components/modules/join-data.js +42 -88
  50. package/lib/es/components/modules/permission-table.js +6 -10
  51. package/lib/es/components/modules/sort.js +1 -2
  52. package/lib/es/components/modules/summarize/group-by.js +1 -8
  53. package/lib/es/components/modules/summarize/select-index.js +1 -4
  54. package/lib/es/components/modules/table-data.js +29 -45
  55. package/lib/es/hooks/use-state.js +23 -148
  56. package/lib/es/index.js +1 -7
  57. package/lib/es/locale/en.js +1 -0
  58. package/lib/es/locale/zh.js +1 -0
  59. package/lib/es/store/types.d.ts +4 -5
  60. package/lib/es/types.d.ts +0 -8
  61. package/lib/es/utils/helper.d.ts +4 -0
  62. package/lib/es/utils/helper.js +101 -0
  63. package/lib/es/utils/transformSql.js +0 -2
  64. package/lib/es/utils.js +39 -19
  65. package/package.json +1 -1
@@ -7,20 +7,75 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports["default"] = void 0;
9
9
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
10
11
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/asyncToGenerator"));
11
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
12
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
13
+ var _objectSpread3 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
13
14
  var _jsxRuntime = require("react/jsx-runtime");
14
15
  require("./index.less");
15
16
  var _react = _interopRequireWildcard(require("react"));
16
- var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
17
17
  var _classnames = _interopRequireDefault(require("classnames"));
18
+ var _pandora = require("@gingkoo/pandora");
18
19
  var _helper = require("../../../utils/helper");
19
20
  var _useProvider = require("../../../hooks/use-provider");
20
21
  var _Loading = _interopRequireDefault(require("../../../common/Loading"));
21
22
  var _locale = require("../../../locale");
22
23
  var _icons = require("../../icons");
23
24
  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); }
25
+ function focusWithoutScroll(input) {
26
+ if (!input) return;
27
+ setTimeout(function () {
28
+ try {
29
+ input.focus({
30
+ preventScroll: true
31
+ });
32
+ } catch (e) {
33
+ input.focus();
34
+ }
35
+ }, 0);
36
+ }
37
+ function getTableTypeOptions(tables) {
38
+ return Array.from(new Set(tables.map(function (v) {
39
+ return v.table_type;
40
+ }).filter(function (v) {
41
+ return Boolean(v);
42
+ })));
43
+ }
44
+ function getFlatTableTypeOptions(sourceTable) {
45
+ return sourceTable.reduce(function (mo, datasource) {
46
+ if (datasource !== null && datasource !== void 0 && datasource.datasourceId && Array.isArray(datasource === null || datasource === void 0 ? void 0 : datasource.children)) {
47
+ mo[datasource.datasourceId] = getTableTypeOptions(datasource.children);
48
+ }
49
+ return mo;
50
+ }, {});
51
+ }
52
+ function matchTableName(table, searchVal) {
53
+ if (!searchVal) return true;
54
+ return Boolean(~(table.name + (table.name_zh || '')).toLocaleLowerCase().indexOf(searchVal.toLocaleLowerCase()));
55
+ }
56
+ function matchTableType(table, selectedTableTypes) {
57
+ if (!selectedTableTypes.length) {
58
+ return true;
59
+ }
60
+ return selectedTableTypes.includes(table.table_type || '');
61
+ }
62
+ function filterTables(tables, searchVal, selectedTableTypes) {
63
+ return tables.filter(function (table) {
64
+ return matchTableName(table, searchVal) && matchTableType(table, selectedTableTypes);
65
+ });
66
+ }
67
+ function filterDatasourceTable(sourceTable, searchVal, selectedTableTypesMap) {
68
+ return sourceTable.map(function (datasource) {
69
+ var children = Array.isArray(datasource === null || datasource === void 0 ? void 0 : datasource.children) ? datasource.children : [];
70
+ var selectedTableTypes = selectedTableTypesMap[datasource === null || datasource === void 0 ? void 0 : datasource.datasourceId] || [];
71
+ return (0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, datasource), {}, {
72
+ children: filterTables(children, searchVal, selectedTableTypes)
73
+ });
74
+ }).filter(function (datasource) {
75
+ var _selectedTableTypesMa;
76
+ return datasource.children.length > 0 || Boolean((_selectedTableTypesMa = selectedTableTypesMap[datasource === null || datasource === void 0 ? void 0 : datasource.datasourceId]) === null || _selectedTableTypesMa === void 0 ? void 0 : _selectedTableTypesMa.length);
77
+ });
78
+ }
24
79
  var SelectTable = function SelectTable(_ref) {
25
80
  var _ref$data = _ref.data,
26
81
  data = _ref$data === void 0 ? [] : _ref$data,
@@ -29,7 +84,6 @@ var SelectTable = function SelectTable(_ref) {
29
84
  value = _ref.value,
30
85
  _ref$onChange = _ref.onChange,
31
86
  onChange = _ref$onChange === void 0 ? function () {} : _ref$onChange,
32
- onDatasourceTypeChange = _ref.onDatasourceTypeChange,
33
87
  didUpdate = _ref.didUpdate,
34
88
  _ref$tableFlat = _ref.tableFlat,
35
89
  tableFlat = _ref$tableFlat === void 0 ? false : _ref$tableFlat;
@@ -43,218 +97,143 @@ var SelectTable = function SelectTable(_ref) {
43
97
  datasource = _useState4[0];
44
98
  var _useState5 = (0, _react.useState)(sourceTable.slice()),
45
99
  _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
46
- originDatasourceTable = _useState6[0],
47
- setOriginDatasourceTable = _useState6[1];
48
- var _useState7 = (0, _react.useState)(sourceTable.slice()),
100
+ datasourceTable = _useState6[0],
101
+ setDatasourceTable = _useState6[1];
102
+ var _useState7 = (0, _react.useState)([]),
49
103
  _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
50
- datasourceTable = _useState8[0],
51
- setDatasourceTable = _useState8[1];
104
+ list = _useState8[0],
105
+ setList = _useState8[1];
52
106
  var _useState9 = (0, _react.useState)([]),
53
107
  _useState0 = (0, _slicedToArray2["default"])(_useState9, 2),
54
- list = _useState0[0],
55
- setList = _useState0[1];
56
- var _useState1 = (0, _react.useState)([]),
108
+ originList = _useState0[0],
109
+ setOriginList = _useState0[1];
110
+ var _useState1 = (0, _react.useState)(''),
57
111
  _useState10 = (0, _slicedToArray2["default"])(_useState1, 2),
58
- originList = _useState10[0],
59
- setOriginList = _useState10[1];
60
- var _useState11 = (0, _react.useState)(value),
112
+ searchVal = _useState10[0],
113
+ setSearchVal = _useState10[1];
114
+ var _useState11 = (0, _react.useState)(''),
61
115
  _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
62
- val = _useState12[0],
63
- setVal = _useState12[1];
64
- var _useState13 = (0, _react.useState)(''),
116
+ flatSearchVal = _useState12[0],
117
+ setFlatSearchVal = _useState12[1];
118
+ var _useState13 = (0, _react.useState)([]),
65
119
  _useState14 = (0, _slicedToArray2["default"])(_useState13, 2),
66
- tableFilterValue = _useState14[0],
67
- setTableFilterValue = _useState14[1];
120
+ selectedTableTypes = _useState14[0],
121
+ setSelectedTableTypes = _useState14[1];
122
+ var _useState15 = (0, _react.useState)({}),
123
+ _useState16 = (0, _slicedToArray2["default"])(_useState15, 2),
124
+ selectedFlatTableTypes = _useState16[0],
125
+ setSelectedFlatTableTypes = _useState16[1];
126
+ var _useState17 = (0, _react.useState)(value),
127
+ _useState18 = (0, _slicedToArray2["default"])(_useState17, 2),
128
+ val = _useState18[0],
129
+ setVal = _useState18[1];
130
+ var searchInputRef = (0, _react.useRef)(null);
131
+ var flatSearchInputRef = (0, _react.useRef)(null);
132
+ var tableTypeOptions = (0, _react.useMemo)(function () {
133
+ return getTableTypeOptions(originList);
134
+ }, [originList]);
135
+ var flatTableTypeOptions = (0, _react.useMemo)(function () {
136
+ return getFlatTableTypeOptions(sourceTable);
137
+ }, [sourceTable]);
138
+ var nextPage = !val.datasourceId;
68
139
  (0, _react.useEffect)(function () {
69
140
  if (value.datasourceId) {
70
- var datasourceItem = getDatasource(value.datasourceId);
71
- var _datasourceType = value.datasourceType || getDefaultDatasourceType(datasourceItem);
72
- var nextVal = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, value), {}, {
73
- datasourceType: _datasourceType
74
- });
75
- setVal(nextVal);
76
- if (!value.datasourceType && _datasourceType) {
77
- emitDatasourceTypeChange(nextVal);
78
- }
79
- loadTables(value.datasourceId, _datasourceType);
141
+ getTables(value.datasourceId);
80
142
  }
81
143
  }, []);
82
- function getDefaultDatasourceType(datasource) {
83
- var _datasource$datasourc;
84
- return (datasource === null || datasource === void 0 ? void 0 : datasource.defaultDatasourceType) || (datasource === null || datasource === void 0 ? void 0 : datasource.datasourceType) || (datasource === null || datasource === void 0 || (_datasource$datasourc = datasource.datasourceTypeList) === null || _datasource$datasourc === void 0 || (_datasource$datasourc = _datasource$datasourc[0]) === null || _datasource$datasourc === void 0 ? void 0 : _datasource$datasourc.value) || '';
85
- }
86
- function getDatasource(datasourceId) {
87
- return datasource.find(function (v) {
88
- return v.datasourceId === datasourceId;
89
- });
90
- }
91
- function filterDatasourceTables(tables, keyword) {
92
- var searchVal = keyword.toLocaleLowerCase();
93
- if (!searchVal) return tables.slice();
94
- return (0, _cloneDeep["default"])(tables.slice()).map(function (v) {
95
- var _v$children;
96
- return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, v), {}, {
97
- children: v === null || v === void 0 || (_v$children = v.children) === null || _v$children === void 0 ? void 0 : _v$children.filter(function (vv) {
98
- return ~(vv.name + (vv.name_zh || '')).toLocaleLowerCase().indexOf(searchVal);
99
- })
100
- });
101
- }).filter(function (v) {
102
- return (v.children || []).length > 0;
103
- });
104
- }
105
- function loadTables(_x) {
106
- return _loadTables.apply(this, arguments);
144
+ function getTables(_x) {
145
+ return _getTables.apply(this, arguments);
107
146
  }
108
- function _loadTables() {
109
- _loadTables = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(datasourceId) {
110
- var datasourceType,
111
- force,
112
- tables,
113
- _args = arguments;
147
+ function _getTables() {
148
+ _getTables = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(datasourceId) {
149
+ var tables;
114
150
  return _regenerator["default"].wrap(function (_context) {
115
151
  while (1) switch (_context.prev = _context.next) {
116
152
  case 0:
117
- datasourceType = _args.length > 1 && _args[1] !== undefined ? _args[1] : '';
118
- force = _args.length > 2 && _args[2] !== undefined ? _args[2] : false;
119
153
  setLoading(true);
120
154
  _context.next = 1;
121
- return store.fetchDataset(datasourceId, datasourceType, force);
155
+ return store.fetchDataset(datasourceId);
122
156
  case 1:
123
157
  tables = _context.sent;
124
158
  setLoading(false);
125
159
  setList(tables);
126
160
  setOriginList(tables);
127
- return _context.abrupt("return", tables);
161
+ setSearchVal('');
162
+ setSelectedTableTypes([]);
128
163
  case 2:
129
164
  case "end":
130
165
  return _context.stop();
131
166
  }
132
167
  }, _callee);
133
168
  }));
134
- return _loadTables.apply(this, arguments);
135
- }
136
- function emitDatasourceTypeChange(nextVal) {
137
- if (!nextVal.datasourceId || !nextVal.name) return;
138
- onDatasourceTypeChange === null || onDatasourceTypeChange === void 0 || onDatasourceTypeChange(nextVal);
139
- }
140
- function handleSelectDatasource(datasource, datasourceType) {
141
- var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
142
- var nextDatasourceType = datasourceType || getDefaultDatasourceType(datasource);
143
- setVal({
144
- datasourceId: datasource.datasourceId,
145
- datasourceName: datasource.datasourceName,
146
- datasourceType: nextDatasourceType,
147
- name: '',
148
- name_zh: '',
149
- id: '',
150
- tableUuid: (0, _helper.uuidv4)('table'),
151
- alias: ''
152
- });
153
- loadTables(datasource.datasourceId, nextDatasourceType, force);
154
- }
155
- function handleDatasourceTypeChange(datasourceType) {
156
- var nextVal = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, val), {}, {
157
- datasourceType: datasourceType
158
- });
159
- setVal(nextVal);
160
- emitDatasourceTypeChange(nextVal);
161
- loadTables(nextVal.datasourceId, datasourceType, true);
162
- }
163
- function handleFlatDatasourceTypeChange(_x2, _x3) {
164
- return _handleFlatDatasourceTypeChange.apply(this, arguments);
165
- }
166
- function _handleFlatDatasourceTypeChange() {
167
- _handleFlatDatasourceTypeChange = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2(datasourceItem, datasourceType) {
168
- var nextVal, tables, updateDatasourceTable, nextOriginDatasourceTable;
169
- return _regenerator["default"].wrap(function (_context2) {
170
- while (1) switch (_context2.prev = _context2.next) {
171
- case 0:
172
- if (val.datasourceId === datasourceItem.datasourceId) {
173
- nextVal = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, val), {}, {
174
- datasourceType: datasourceType
175
- });
176
- setVal(nextVal);
177
- emitDatasourceTypeChange(nextVal);
178
- }
179
- _context2.next = 1;
180
- return loadTables(datasourceItem.datasourceId, datasourceType, true);
181
- case 1:
182
- tables = _context2.sent;
183
- updateDatasourceTable = function updateDatasourceTable(tablesData) {
184
- return tablesData.map(function (v) {
185
- if (v.datasourceId !== datasourceItem.datasourceId) return v;
186
- return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, v), {}, {
187
- datasourceType: datasourceType,
188
- children: tables
189
- });
190
- });
191
- };
192
- nextOriginDatasourceTable = updateDatasourceTable(originDatasourceTable);
193
- setOriginDatasourceTable(nextOriginDatasourceTable);
194
- setDatasourceTable(filterDatasourceTables(nextOriginDatasourceTable, tableFilterValue));
195
- case 2:
196
- case "end":
197
- return _context2.stop();
198
- }
199
- }, _callee2);
200
- }));
201
- return _handleFlatDatasourceTypeChange.apply(this, arguments);
202
- }
203
- function renderDatasourceTypeSelector(datasourceItem, datasourceType, onChange) {
204
- var datasourceTypeList = datasourceItem.datasourceTypeList || [];
205
- if (!datasourceTypeList.length) return null;
206
- return (0, _jsxRuntime.jsx)("div", {
207
- className: 'Sqb-DatasourceType-radio',
208
- onClick: function onClick(e) {
209
- return e.stopPropagation();
210
- },
211
- children: datasourceTypeList.map(function (item) {
212
- var checked = datasourceType === item.value;
213
- var handleChangeType = function handleChangeType(e) {
214
- e.preventDefault();
215
- e.stopPropagation();
216
- if (!checked) onChange(item.value);
217
- };
218
- return (0, _jsxRuntime.jsxs)("label", {
219
- className: 'Sqb-DatasourceType-radio-item',
220
- onMouseDown: handleChangeType,
221
- onClick: handleChangeType,
222
- children: [(0, _jsxRuntime.jsx)("input", {
223
- type: 'radio',
224
- name: "datasourceType_".concat(datasourceItem.datasourceId || 'current'),
225
- checked: checked,
226
- readOnly: true
227
- }), (0, _jsxRuntime.jsx)("span", {
228
- children: item.label
229
- })]
230
- }, item.value);
231
- })
232
- });
169
+ return _getTables.apply(this, arguments);
233
170
  }
234
- (0, _react.useEffect)(function () {
235
- setOriginDatasourceTable(sourceTable.slice());
236
- setDatasourceTable(filterDatasourceTables(sourceTable.slice(), tableFilterValue));
237
- }, [sourceTable]);
238
171
  (0, _react.useEffect)(function () {
239
172
  didUpdate === null || didUpdate === void 0 || didUpdate();
240
173
  }, [list, loading, datasource]);
174
+ (0, _react.useEffect)(function () {
175
+ if (tableFlat) {
176
+ focusWithoutScroll(flatSearchInputRef.current);
177
+ return;
178
+ }
179
+ if (!nextPage && !loading) {
180
+ focusWithoutScroll(searchInputRef.current);
181
+ }
182
+ }, [tableFlat, nextPage, loading]);
183
+ (0, _react.useEffect)(function () {
184
+ setList(filterTables(originList, searchVal, selectedTableTypes));
185
+ }, [originList, searchVal, selectedTableTypes]);
186
+ (0, _react.useEffect)(function () {
187
+ setDatasourceTable(filterDatasourceTable(sourceTable, flatSearchVal, selectedFlatTableTypes));
188
+ }, [sourceTable, flatSearchVal, selectedFlatTableTypes]);
189
+ (0, _react.useEffect)(function () {
190
+ setSelectedTableTypes(function (prev) {
191
+ return prev.filter(function (v) {
192
+ return tableTypeOptions.includes(v);
193
+ });
194
+ });
195
+ }, [tableTypeOptions]);
196
+ (0, _react.useEffect)(function () {
197
+ setSelectedFlatTableTypes(function (prev) {
198
+ var next = Object.keys(flatTableTypeOptions).reduce(function (mo, datasourceId) {
199
+ var selected = prev[datasourceId] || [];
200
+ mo[datasourceId] = selected.filter(function (v) {
201
+ return flatTableTypeOptions[datasourceId].includes(v);
202
+ });
203
+ return mo;
204
+ }, {});
205
+ return next;
206
+ });
207
+ }, [flatTableTypeOptions]);
241
208
  function onInput(e) {
242
- var val = e.target.value;
243
- var newList = (0, _cloneDeep["default"])(originList.slice());
244
- setList(newList.filter(function (v) {
245
- return ~(v.name + (v.name_zh || '')).toLocaleLowerCase().indexOf(val.toLocaleLowerCase());
246
- }));
209
+ setSearchVal(e.target.value);
247
210
  }
248
211
  function onInput1(e) {
249
- var val = e.target.value;
250
- setTableFilterValue(val);
251
- setDatasourceTable(filterDatasourceTables(originDatasourceTable, val));
212
+ setFlatSearchVal(e.target.value);
213
+ }
214
+ function onTableTypeChange(tableType, checked) {
215
+ setSelectedTableTypes(function (prev) {
216
+ if (checked) {
217
+ return prev.includes(tableType) ? prev : prev.concat(tableType);
218
+ }
219
+ return prev.filter(function (v) {
220
+ return v !== tableType;
221
+ });
222
+ });
223
+ }
224
+ function onFlatTableTypeChange(datasourceId, tableType, checked) {
225
+ setSelectedFlatTableTypes(function (prev) {
226
+ var selectedTableTypes = prev[datasourceId] || [];
227
+ var nextTableTypes = checked ? selectedTableTypes.includes(tableType) ? selectedTableTypes : selectedTableTypes.concat(tableType) : selectedTableTypes.filter(function (v) {
228
+ return v !== tableType;
229
+ });
230
+ return (0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, prev), {}, (0, _defineProperty2["default"])({}, datasourceId, nextTableTypes));
231
+ });
252
232
  }
253
233
  function goPrevPage() {
254
234
  setVal({
255
235
  datasourceId: '',
256
236
  datasourceName: '',
257
- datasourceType: '',
258
237
  name: '',
259
238
  name_zh: '',
260
239
  tableUuid: '',
@@ -262,6 +241,54 @@ var SelectTable = function SelectTable(_ref) {
262
241
  alias: ''
263
242
  });
264
243
  }
244
+ function renderTableTypeFilter(tableTypes) {
245
+ if (tableTypes.length <= 1) return null;
246
+ return (0, _jsxRuntime.jsx)("div", {
247
+ className: 'Sqb-TableType-tag-group',
248
+ children: tableTypes.map(function (tableType) {
249
+ var checked = selectedTableTypes.includes(tableType);
250
+ return (0, _jsxRuntime.jsx)(_pandora.Tag, {
251
+ className: ':Sqb-TableType-filter-tag',
252
+ checkable: true,
253
+ checked: checked,
254
+ size: 'mini',
255
+ onChange: function onChange(checked) {
256
+ return onTableTypeChange(tableType, checked);
257
+ },
258
+ children: tableType
259
+ }, tableType);
260
+ })
261
+ });
262
+ }
263
+ function renderFlatTableTypeFilter(datasourceId, tableTypes) {
264
+ if (tableTypes.length <= 1) return null;
265
+ var selectedTableTypes = selectedFlatTableTypes[datasourceId] || [];
266
+ return (0, _jsxRuntime.jsx)("div", {
267
+ className: 'Sqb-TableType-tag-group',
268
+ children: tableTypes.map(function (tableType) {
269
+ var checked = selectedTableTypes.includes(tableType);
270
+ return (0, _jsxRuntime.jsx)(_pandora.Tag, {
271
+ className: ':Sqb-TableType-filter-tag',
272
+ checkable: true,
273
+ checked: checked,
274
+ size: 'mini',
275
+ onChange: function onChange(checked) {
276
+ return onFlatTableTypeChange(datasourceId, tableType, checked);
277
+ },
278
+ children: tableType
279
+ }, tableType);
280
+ })
281
+ });
282
+ }
283
+ function renderDatasourceTitle(table) {
284
+ return (0, _jsxRuntime.jsxs)("div", {
285
+ className: (0, _classnames["default"])("Sqb-List-title Sqb-List-title-with-filter mx-4 pb-2 pt-2"),
286
+ children: [(0, _jsxRuntime.jsx)("span", {
287
+ className: 'Sqb-List-title-text',
288
+ children: table.datasourceName
289
+ }), renderFlatTableTypeFilter(table.datasourceId, flatTableTypeOptions[table.datasourceId] || [])]
290
+ });
291
+ }
265
292
  if (tableFlat) {
266
293
  return (0, _jsxRuntime.jsx)("div", {
267
294
  className: (0, _classnames["default"])("Sqb-SelectTable--box pb-2"),
@@ -281,7 +308,7 @@ var SelectTable = function SelectTable(_ref) {
281
308
  className: 'px-2',
282
309
  children: (0, _jsxRuntime.jsx)(_icons.SearchIcon, {})
283
310
  }), (0, _jsxRuntime.jsx)("input", {
284
- autoFocus: true,
311
+ ref: flatSearchInputRef,
285
312
  type: 'text',
286
313
  className: 'p-2',
287
314
  placeholder: (0, _locale.__)('data.search'),
@@ -290,36 +317,26 @@ var SelectTable = function SelectTable(_ref) {
290
317
  })
291
318
  }), datasourceTable.map(function (table) {
292
319
  var _table$children;
293
- var datasourceType = table.datasourceType || getDefaultDatasourceType(table);
294
320
  return (0, _jsxRuntime.jsxs)(_react["default"].Fragment, {
295
- children: [(0, _jsxRuntime.jsxs)("div", {
296
- className: (0, _classnames["default"])("Sqb-List-title mx-4 pb-2 pt-2"),
297
- children: [(0, _jsxRuntime.jsx)("span", {
298
- children: table.datasourceName
299
- }), renderDatasourceTypeSelector(table, datasourceType, function (type) {
300
- return handleFlatDatasourceTypeChange(table, type);
301
- })]
302
- }), Array.isArray(table.children) && (table === null || table === void 0 || (_table$children = table.children) === null || _table$children === void 0 ? void 0 : _table$children.map(function (v) {
321
+ children: [renderDatasourceTitle(table), Array.isArray(table.children) && (table === null || table === void 0 || (_table$children = table.children) === null || _table$children === void 0 ? void 0 : _table$children.map(function (v) {
303
322
  var _val = {
304
323
  datasourceId: table.datasourceId,
305
324
  datasourceName: table.datasourceName,
306
- datasourceType: datasourceType,
307
325
  name: '',
308
326
  name_zh: '',
309
327
  id: '',
310
328
  tableUuid: (0, _helper.uuidv4)('table'),
311
329
  alias: ''
312
330
  };
331
+ var tableValue = (0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, _val), v);
313
332
  return (0, _jsxRuntime.jsx)("div", {
314
333
  className: (0, _classnames["default"])("Sqb-List-section"),
315
334
  children: (0, _jsxRuntime.jsx)("div", {
316
335
  className: (0, _classnames["default"])("Sqb-List-item mx-2", {
317
- active: val.datasourceId === table.datasourceId && val.name === v.name && (val.datasourceType || datasourceType) === datasourceType
336
+ active: (0, _helper.isSameTableByIdFirst)(value, tableValue)
318
337
  }),
319
338
  onClick: function onClick() {
320
- onChange((0, _objectSpread2["default"])((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, _val), v), {}, {
321
- datasourceType: datasourceType
322
- }));
339
+ onChange(tableValue);
323
340
  },
324
341
  children: (0, _jsxRuntime.jsxs)("a", {
325
342
  className: 'p-2',
@@ -334,15 +351,14 @@ var SelectTable = function SelectTable(_ref) {
334
351
  })]
335
352
  })
336
353
  })
337
- }, "".concat(datasourceType, "_").concat(v.name));
354
+ }, (0, _helper.getTableIdFirstKey)(tableValue));
338
355
  }))]
339
- }, "".concat(table.datasourceId, "_").concat(datasourceType));
356
+ }, table.datasourceId);
340
357
  })]
341
358
  })
342
359
  })
343
360
  });
344
361
  }
345
- var nextPage = !val.datasourceId;
346
362
  if (nextPage) {
347
363
  return (0, _jsxRuntime.jsx)("div", {
348
364
  className: (0, _classnames["default"])("Sqb-SelectDataSource--box pb-2 pt-2"),
@@ -362,7 +378,16 @@ var SelectTable = function SelectTable(_ref) {
362
378
  active: val.datasourceId === v.datasourceId
363
379
  }),
364
380
  onClick: function onClick() {
365
- handleSelectDatasource(v);
381
+ setVal({
382
+ datasourceId: v.datasourceId,
383
+ datasourceName: v.datasourceName,
384
+ name: '',
385
+ name_zh: '',
386
+ id: '',
387
+ tableUuid: (0, _helper.uuidv4)('table'),
388
+ alias: ''
389
+ });
390
+ getTables(v.datasourceId);
366
391
  },
367
392
  children: (0, _jsxRuntime.jsxs)("a", {
368
393
  className: 'p-2',
@@ -383,8 +408,6 @@ var SelectTable = function SelectTable(_ref) {
383
408
  })
384
409
  });
385
410
  }
386
- var selectedDatasource = getDatasource(val.datasourceId) || val;
387
- var datasourceType = val.datasourceType || getDefaultDatasourceType(selectedDatasource);
388
411
  return (0, _jsxRuntime.jsx)("div", {
389
412
  className: (0, _classnames["default"])("Sqb-SelectTable--box pb-2"),
390
413
  children: (0, _jsxRuntime.jsx)("div", {
@@ -395,17 +418,15 @@ var SelectTable = function SelectTable(_ref) {
395
418
  style: {
396
419
  width: '100%'
397
420
  },
398
- children: [(0, _jsxRuntime.jsx)("div", {
421
+ children: [(0, _jsxRuntime.jsxs)("div", {
399
422
  className: 'header',
400
- children: (0, _jsxRuntime.jsxs)("div", {
423
+ children: [(0, _jsxRuntime.jsx)("div", {
401
424
  className: 'left-info',
402
- children: [(0, _jsxRuntime.jsxs)("span", {
425
+ children: (0, _jsxRuntime.jsxs)("span", {
403
426
  onClick: goPrevPage,
404
427
  children: [(0, _jsxRuntime.jsx)(_icons.LeftArrowIcon, {}), val.datasourceName]
405
- }), renderDatasourceTypeSelector(selectedDatasource, datasourceType, function (type) {
406
- return handleDatasourceTypeChange(type);
407
- })]
408
- })
428
+ })
429
+ }), renderTableTypeFilter(tableTypeOptions)]
409
430
  }), loading ? (0, _jsxRuntime.jsx)("div", {
410
431
  className: 'Sqb-SelectTable-loading',
411
432
  children: (0, _jsxRuntime.jsx)(_Loading["default"], {
@@ -421,7 +442,7 @@ var SelectTable = function SelectTable(_ref) {
421
442
  className: 'px-2',
422
443
  children: (0, _jsxRuntime.jsx)(_icons.SearchIcon, {})
423
444
  }), (0, _jsxRuntime.jsx)("input", {
424
- autoFocus: true,
445
+ ref: searchInputRef,
425
446
  type: 'text',
426
447
  className: 'p-2',
427
448
  placeholder: (0, _locale.__)('data.search'),
@@ -429,16 +450,15 @@ var SelectTable = function SelectTable(_ref) {
429
450
  })]
430
451
  })
431
452
  }), Array.isArray(list) && list.map(function (v) {
453
+ var tableValue = (0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, val), v);
432
454
  return (0, _jsxRuntime.jsx)("div", {
433
455
  className: (0, _classnames["default"])("Sqb-List-section"),
434
456
  children: (0, _jsxRuntime.jsx)("div", {
435
457
  className: (0, _classnames["default"])("Sqb-List-item mx-2", {
436
- active: val.datasourceId === value.datasourceId && val.name === v.name && (val.datasourceType || datasourceType) === datasourceType
458
+ active: (0, _helper.isSameTableByIdFirst)(value, tableValue)
437
459
  }),
438
460
  onClick: function onClick() {
439
- onChange((0, _objectSpread2["default"])((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, val), v), {}, {
440
- datasourceType: datasourceType
441
- }));
461
+ onChange(tableValue);
442
462
  },
443
463
  children: (0, _jsxRuntime.jsxs)("a", {
444
464
  className: 'p-2',
@@ -453,7 +473,7 @@ var SelectTable = function SelectTable(_ref) {
453
473
  })]
454
474
  })
455
475
  })
456
- }, v.name);
476
+ }, (0, _helper.getTableIdFirstKey)(tableValue));
457
477
  })]
458
478
  })]
459
479
  })