@gingkoo/pandora-metabase 1.0.130 → 1.0.132

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 +231 -261
  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 +45 -88
  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 +233 -263
  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 +46 -89
  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,21 +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 _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
12
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
13
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
13
+ var _objectSpread3 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
14
14
  var _jsxRuntime = require("react/jsx-runtime");
15
15
  require("./index.less");
16
16
  var _react = _interopRequireWildcard(require("react"));
17
- var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
18
17
  var _classnames = _interopRequireDefault(require("classnames"));
18
+ var _pandora = require("@gingkoo/pandora");
19
19
  var _helper = require("../../../utils/helper");
20
20
  var _useProvider = require("../../../hooks/use-provider");
21
21
  var _Loading = _interopRequireDefault(require("../../../common/Loading"));
22
22
  var _locale = require("../../../locale");
23
23
  var _icons = require("../../icons");
24
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
+ }
25
79
  var SelectTable = function SelectTable(_ref) {
26
80
  var _ref$data = _ref.data,
27
81
  data = _ref$data === void 0 ? [] : _ref$data,
@@ -30,12 +84,10 @@ var SelectTable = function SelectTable(_ref) {
30
84
  value = _ref.value,
31
85
  _ref$onChange = _ref.onChange,
32
86
  onChange = _ref$onChange === void 0 ? function () {} : _ref$onChange,
33
- onDatasourceTypeChange = _ref.onDatasourceTypeChange,
34
87
  didUpdate = _ref.didUpdate,
35
88
  _ref$tableFlat = _ref.tableFlat,
36
89
  tableFlat = _ref$tableFlat === void 0 ? false : _ref$tableFlat;
37
90
  var store = (0, _useProvider.useStore)();
38
- var flatTableRef = (0, _react.useRef)(null);
39
91
  var _useState = (0, _react.useState)(false),
40
92
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
41
93
  loading = _useState2[0],
@@ -43,267 +95,145 @@ var SelectTable = function SelectTable(_ref) {
43
95
  var _useState3 = (0, _react.useState)(data.slice()),
44
96
  _useState4 = (0, _slicedToArray2["default"])(_useState3, 1),
45
97
  datasource = _useState4[0];
46
- var _useState5 = (0, _react.useState)(function () {
47
- return sortSelectedDatasourceFirst(sourceTable.slice(), value.datasourceId);
48
- }),
98
+ var _useState5 = (0, _react.useState)(sourceTable.slice()),
49
99
  _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
50
- originDatasourceTable = _useState6[0],
51
- setOriginDatasourceTable = _useState6[1];
52
- var _useState7 = (0, _react.useState)(function () {
53
- return sortSelectedDatasourceFirst(sourceTable.slice(), value.datasourceId);
54
- }),
100
+ datasourceTable = _useState6[0],
101
+ setDatasourceTable = _useState6[1];
102
+ var _useState7 = (0, _react.useState)([]),
55
103
  _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
56
- datasourceTable = _useState8[0],
57
- setDatasourceTable = _useState8[1];
104
+ list = _useState8[0],
105
+ setList = _useState8[1];
58
106
  var _useState9 = (0, _react.useState)([]),
59
107
  _useState0 = (0, _slicedToArray2["default"])(_useState9, 2),
60
- list = _useState0[0],
61
- setList = _useState0[1];
62
- var _useState1 = (0, _react.useState)([]),
108
+ originList = _useState0[0],
109
+ setOriginList = _useState0[1];
110
+ var _useState1 = (0, _react.useState)(''),
63
111
  _useState10 = (0, _slicedToArray2["default"])(_useState1, 2),
64
- originList = _useState10[0],
65
- setOriginList = _useState10[1];
66
- var _useState11 = (0, _react.useState)(value),
112
+ searchVal = _useState10[0],
113
+ setSearchVal = _useState10[1];
114
+ var _useState11 = (0, _react.useState)(''),
67
115
  _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
68
- val = _useState12[0],
69
- setVal = _useState12[1];
70
- var _useState13 = (0, _react.useState)(''),
116
+ flatSearchVal = _useState12[0],
117
+ setFlatSearchVal = _useState12[1];
118
+ var _useState13 = (0, _react.useState)([]),
71
119
  _useState14 = (0, _slicedToArray2["default"])(_useState13, 2),
72
- tableFilterValue = _useState14[0],
73
- 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;
74
139
  (0, _react.useEffect)(function () {
75
140
  if (value.datasourceId) {
76
- var datasourceItem = getDatasource(value.datasourceId);
77
- var _datasourceType = value.datasourceType || getDefaultDatasourceType(datasourceItem);
78
- var nextVal = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, value), {}, {
79
- datasourceType: _datasourceType
80
- });
81
- setVal(nextVal);
82
- if (!value.datasourceType && _datasourceType) {
83
- emitDatasourceTypeChange(nextVal);
84
- }
85
- loadTables(value.datasourceId, _datasourceType).then(function (tables) {
86
- if (tableFlat) {
87
- updateFlatDatasourceTables(value.datasourceId, _datasourceType, tables);
88
- }
89
- });
141
+ getTables(value.datasourceId);
90
142
  }
91
143
  }, []);
92
- function getDefaultDatasourceType(datasource) {
93
- var _datasource$datasourc;
94
- 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) || '';
95
- }
96
- function getDatasource(datasourceId) {
97
- return datasource.find(function (v) {
98
- return v.datasourceId === datasourceId;
99
- });
100
- }
101
- function getFlatDatasourceType(datasourceItem) {
102
- if (val.datasourceId === datasourceItem.datasourceId && val.datasourceType) {
103
- return val.datasourceType;
104
- }
105
- return datasourceItem.datasourceType || getDefaultDatasourceType(datasourceItem);
106
- }
107
- function sortSelectedDatasourceFirst(tables, datasourceId) {
108
- var selectedDatasourceId = datasourceId || value.datasourceId;
109
- if (!tableFlat || !selectedDatasourceId) return tables.slice();
110
- var selectedIndex = tables.findIndex(function (item) {
111
- return item.datasourceId === selectedDatasourceId;
112
- });
113
- if (selectedIndex <= 0) return tables.slice();
114
- var nextTables = tables.slice();
115
- var _nextTables$splice = nextTables.splice(selectedIndex, 1),
116
- _nextTables$splice2 = (0, _slicedToArray2["default"])(_nextTables$splice, 1),
117
- selectedTable = _nextTables$splice2[0];
118
- return [selectedTable].concat((0, _toConsumableArray2["default"])(nextTables));
119
- }
120
- function updateFlatDatasourceTables(datasourceId, datasourceType, tables) {
121
- var tablesData = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : originDatasourceTable;
122
- var scrollToTop = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
123
- var nextOriginDatasourceTable = sortSelectedDatasourceFirst(tablesData, datasourceId).map(function (v) {
124
- if (v.datasourceId !== datasourceId) return v;
125
- return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, v), {}, {
126
- datasourceType: datasourceType,
127
- children: tables
128
- });
129
- });
130
- setOriginDatasourceTable(nextOriginDatasourceTable);
131
- setDatasourceTable(filterDatasourceTables(nextOriginDatasourceTable, tableFilterValue));
132
- if (scrollToTop) {
133
- requestAnimationFrame(function () {
134
- var _flatTableRef$current;
135
- var scrollContainer = (_flatTableRef$current = flatTableRef.current) === null || _flatTableRef$current === void 0 ? void 0 : _flatTableRef$current.parentElement;
136
- if (scrollContainer) {
137
- scrollContainer.scrollTop = 0;
138
- }
139
- });
140
- }
141
- }
142
- function filterDatasourceTables(tables, keyword) {
143
- var searchVal = keyword.toLocaleLowerCase();
144
- if (!searchVal) return tables.slice();
145
- return (0, _cloneDeep["default"])(tables.slice()).map(function (v) {
146
- var _v$children;
147
- return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, v), {}, {
148
- children: v === null || v === void 0 || (_v$children = v.children) === null || _v$children === void 0 ? void 0 : _v$children.filter(function (vv) {
149
- return ~(vv.name + (vv.name_zh || '')).toLocaleLowerCase().indexOf(searchVal);
150
- })
151
- });
152
- }).filter(function (v) {
153
- return (v.children || []).length > 0;
154
- });
144
+ function getTables(_x) {
145
+ return _getTables.apply(this, arguments);
155
146
  }
156
- function loadTables(_x) {
157
- return _loadTables.apply(this, arguments);
158
- }
159
- function _loadTables() {
160
- _loadTables = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(datasourceId) {
161
- var datasourceType,
162
- force,
163
- tables,
164
- _args = arguments;
147
+ function _getTables() {
148
+ _getTables = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(datasourceId) {
149
+ var tables;
165
150
  return _regenerator["default"].wrap(function (_context) {
166
151
  while (1) switch (_context.prev = _context.next) {
167
152
  case 0:
168
- datasourceType = _args.length > 1 && _args[1] !== undefined ? _args[1] : '';
169
- force = _args.length > 2 && _args[2] !== undefined ? _args[2] : false;
170
153
  setLoading(true);
171
154
  _context.next = 1;
172
- return store.fetchDataset(datasourceId, datasourceType, force);
155
+ return store.fetchDataset(datasourceId);
173
156
  case 1:
174
157
  tables = _context.sent;
175
158
  setLoading(false);
176
159
  setList(tables);
177
160
  setOriginList(tables);
178
- return _context.abrupt("return", tables);
161
+ setSearchVal('');
162
+ setSelectedTableTypes([]);
179
163
  case 2:
180
164
  case "end":
181
165
  return _context.stop();
182
166
  }
183
167
  }, _callee);
184
168
  }));
185
- return _loadTables.apply(this, arguments);
186
- }
187
- function emitDatasourceTypeChange(nextVal) {
188
- if (!nextVal.datasourceId || !nextVal.name) return;
189
- onDatasourceTypeChange === null || onDatasourceTypeChange === void 0 || onDatasourceTypeChange(nextVal);
190
- }
191
- function handleSelectDatasource(datasource, datasourceType) {
192
- var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
193
- var nextDatasourceType = datasourceType || getDefaultDatasourceType(datasource);
194
- setVal({
195
- datasourceId: datasource.datasourceId,
196
- datasourceName: datasource.datasourceName,
197
- datasourceType: nextDatasourceType,
198
- name: '',
199
- name_zh: '',
200
- id: '',
201
- tableUuid: (0, _helper.uuidv4)('table'),
202
- alias: ''
203
- });
204
- loadTables(datasource.datasourceId, nextDatasourceType, force);
205
- }
206
- function handleDatasourceTypeChange(datasourceType) {
207
- var nextVal = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, val), {}, {
208
- datasourceType: datasourceType
209
- });
210
- setVal(nextVal);
211
- loadTables(nextVal.datasourceId, datasourceType, true);
212
- }
213
- function handleFlatDatasourceTypeChange(_x2, _x3) {
214
- return _handleFlatDatasourceTypeChange.apply(this, arguments);
215
- }
216
- function _handleFlatDatasourceTypeChange() {
217
- _handleFlatDatasourceTypeChange = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2(datasourceItem, datasourceType) {
218
- var nextVal, tables;
219
- return _regenerator["default"].wrap(function (_context2) {
220
- while (1) switch (_context2.prev = _context2.next) {
221
- case 0:
222
- if (val.datasourceId === datasourceItem.datasourceId) {
223
- nextVal = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, val), {}, {
224
- datasourceType: datasourceType
225
- });
226
- setVal(nextVal);
227
- }
228
- _context2.next = 1;
229
- return loadTables(datasourceItem.datasourceId, datasourceType, true);
230
- case 1:
231
- tables = _context2.sent;
232
- updateFlatDatasourceTables(datasourceItem.datasourceId, datasourceType, tables, undefined, true);
233
- case 2:
234
- case "end":
235
- return _context2.stop();
236
- }
237
- }, _callee2);
238
- }));
239
- return _handleFlatDatasourceTypeChange.apply(this, arguments);
240
- }
241
- function renderDatasourceTypeSelector(datasourceItem, datasourceType, onChange) {
242
- var datasourceTypeList = datasourceItem.datasourceTypeList || [];
243
- if (!datasourceTypeList.length) return null;
244
- return (0, _jsxRuntime.jsx)("div", {
245
- className: 'Sqb-DatasourceType-radio',
246
- onClick: function onClick(e) {
247
- return e.stopPropagation();
248
- },
249
- children: datasourceTypeList.map(function (item) {
250
- var checked = datasourceType === item.value;
251
- var handleChangeType = function handleChangeType(e) {
252
- e.preventDefault();
253
- e.stopPropagation();
254
- if (!checked) onChange(item.value);
255
- };
256
- return (0, _jsxRuntime.jsxs)("label", {
257
- className: 'Sqb-DatasourceType-radio-item',
258
- onMouseDown: handleChangeType,
259
- onClick: handleChangeType,
260
- children: [(0, _jsxRuntime.jsx)("input", {
261
- type: 'radio',
262
- name: "datasourceType_".concat(datasourceItem.datasourceId || 'current'),
263
- checked: checked,
264
- readOnly: true
265
- }), (0, _jsxRuntime.jsx)("span", {
266
- children: item.label
267
- })]
268
- }, item.value);
269
- })
270
- });
169
+ return _getTables.apply(this, arguments);
271
170
  }
272
- (0, _react.useEffect)(function () {
273
- var nextSourceTable = sourceTable.slice();
274
- if (tableFlat && val.datasourceId) {
275
- var _store$getDataset;
276
- var _datasourceType2 = val.datasourceType;
277
- var cachedTables = _datasourceType2 ? (_store$getDataset = store.getDataset) === null || _store$getDataset === void 0 ? void 0 : _store$getDataset.call(store, val.datasourceId, _datasourceType2) : [];
278
- if (_datasourceType2 && cachedTables !== null && cachedTables !== void 0 && cachedTables.length) {
279
- updateFlatDatasourceTables(val.datasourceId, _datasourceType2, cachedTables, nextSourceTable);
280
- return;
281
- }
282
- }
283
- var sortedSourceTable = sortSelectedDatasourceFirst(nextSourceTable, val.datasourceId);
284
- setOriginDatasourceTable(sortedSourceTable);
285
- setDatasourceTable(filterDatasourceTables(sortedSourceTable, tableFilterValue));
286
- }, [sourceTable]);
287
171
  (0, _react.useEffect)(function () {
288
172
  didUpdate === null || didUpdate === void 0 || didUpdate();
289
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]);
290
208
  function onInput(e) {
291
- var val = e.target.value;
292
- var newList = (0, _cloneDeep["default"])(originList.slice());
293
- setList(newList.filter(function (v) {
294
- return ~(v.name + (v.name_zh || '')).toLocaleLowerCase().indexOf(val.toLocaleLowerCase());
295
- }));
209
+ setSearchVal(e.target.value);
296
210
  }
297
211
  function onInput1(e) {
298
- var val = e.target.value;
299
- setTableFilterValue(val);
300
- 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
+ });
301
232
  }
302
233
  function goPrevPage() {
303
234
  setVal({
304
235
  datasourceId: '',
305
236
  datasourceName: '',
306
- datasourceType: '',
307
237
  name: '',
308
238
  name_zh: '',
309
239
  tableUuid: '',
@@ -311,10 +241,57 @@ var SelectTable = function SelectTable(_ref) {
311
241
  alias: ''
312
242
  });
313
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
+ }
314
292
  if (tableFlat) {
315
293
  return (0, _jsxRuntime.jsx)("div", {
316
294
  className: (0, _classnames["default"])("Sqb-SelectTable--box pb-2"),
317
- ref: flatTableRef,
318
295
  children: (0, _jsxRuntime.jsx)("div", {
319
296
  style: {
320
297
  minWidth: 300
@@ -331,7 +308,7 @@ var SelectTable = function SelectTable(_ref) {
331
308
  className: 'px-2',
332
309
  children: (0, _jsxRuntime.jsx)(_icons.SearchIcon, {})
333
310
  }), (0, _jsxRuntime.jsx)("input", {
334
- autoFocus: true,
311
+ ref: flatSearchInputRef,
335
312
  type: 'text',
336
313
  className: 'p-2',
337
314
  placeholder: (0, _locale.__)('data.search'),
@@ -340,36 +317,26 @@ var SelectTable = function SelectTable(_ref) {
340
317
  })
341
318
  }), datasourceTable.map(function (table) {
342
319
  var _table$children;
343
- var datasourceType = getFlatDatasourceType(table);
344
320
  return (0, _jsxRuntime.jsxs)(_react["default"].Fragment, {
345
- children: [(0, _jsxRuntime.jsxs)("div", {
346
- className: (0, _classnames["default"])("Sqb-List-title mx-4 pb-2 pt-2"),
347
- children: [(0, _jsxRuntime.jsx)("span", {
348
- children: table.datasourceName
349
- }), renderDatasourceTypeSelector(table, datasourceType, function (type) {
350
- return handleFlatDatasourceTypeChange(table, type);
351
- })]
352
- }), 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) {
353
322
  var _val = {
354
323
  datasourceId: table.datasourceId,
355
324
  datasourceName: table.datasourceName,
356
- datasourceType: datasourceType,
357
325
  name: '',
358
326
  name_zh: '',
359
327
  id: '',
360
328
  tableUuid: (0, _helper.uuidv4)('table'),
361
329
  alias: ''
362
330
  };
331
+ var tableValue = (0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, _val), v);
363
332
  return (0, _jsxRuntime.jsx)("div", {
364
333
  className: (0, _classnames["default"])("Sqb-List-section"),
365
334
  children: (0, _jsxRuntime.jsx)("div", {
366
335
  className: (0, _classnames["default"])("Sqb-List-item mx-2", {
367
- active: val.datasourceId === table.datasourceId && val.id === v.id && (val.datasourceType || datasourceType) === datasourceType
336
+ active: (0, _helper.isSameTableByIdFirst)(value, tableValue)
368
337
  }),
369
338
  onClick: function onClick() {
370
- onChange((0, _objectSpread2["default"])((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, _val), v), {}, {
371
- datasourceType: datasourceType
372
- }));
339
+ onChange(tableValue);
373
340
  },
374
341
  children: (0, _jsxRuntime.jsxs)("a", {
375
342
  className: 'p-2',
@@ -384,15 +351,14 @@ var SelectTable = function SelectTable(_ref) {
384
351
  })]
385
352
  })
386
353
  })
387
- }, "".concat(datasourceType, "_").concat(v.name));
354
+ }, (0, _helper.getTableIdFirstKey)(tableValue));
388
355
  }))]
389
- }, "".concat(table.datasourceId, "_").concat(datasourceType));
356
+ }, table.datasourceId);
390
357
  })]
391
358
  })
392
359
  })
393
360
  });
394
361
  }
395
- var nextPage = !val.datasourceId;
396
362
  if (nextPage) {
397
363
  return (0, _jsxRuntime.jsx)("div", {
398
364
  className: (0, _classnames["default"])("Sqb-SelectDataSource--box pb-2 pt-2"),
@@ -412,7 +378,16 @@ var SelectTable = function SelectTable(_ref) {
412
378
  active: val.datasourceId === v.datasourceId
413
379
  }),
414
380
  onClick: function onClick() {
415
- 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);
416
391
  },
417
392
  children: (0, _jsxRuntime.jsxs)("a", {
418
393
  className: 'p-2',
@@ -433,8 +408,6 @@ var SelectTable = function SelectTable(_ref) {
433
408
  })
434
409
  });
435
410
  }
436
- var selectedDatasource = getDatasource(val.datasourceId) || val;
437
- var datasourceType = val.datasourceType || getDefaultDatasourceType(selectedDatasource);
438
411
  return (0, _jsxRuntime.jsx)("div", {
439
412
  className: (0, _classnames["default"])("Sqb-SelectTable--box pb-2"),
440
413
  children: (0, _jsxRuntime.jsx)("div", {
@@ -445,17 +418,15 @@ var SelectTable = function SelectTable(_ref) {
445
418
  style: {
446
419
  width: '100%'
447
420
  },
448
- children: [(0, _jsxRuntime.jsx)("div", {
421
+ children: [(0, _jsxRuntime.jsxs)("div", {
449
422
  className: 'header',
450
- children: (0, _jsxRuntime.jsxs)("div", {
423
+ children: [(0, _jsxRuntime.jsx)("div", {
451
424
  className: 'left-info',
452
- children: [(0, _jsxRuntime.jsxs)("span", {
425
+ children: (0, _jsxRuntime.jsxs)("span", {
453
426
  onClick: goPrevPage,
454
427
  children: [(0, _jsxRuntime.jsx)(_icons.LeftArrowIcon, {}), val.datasourceName]
455
- }), renderDatasourceTypeSelector(selectedDatasource, datasourceType, function (type) {
456
- return handleDatasourceTypeChange(type);
457
- })]
458
- })
428
+ })
429
+ }), renderTableTypeFilter(tableTypeOptions)]
459
430
  }), loading ? (0, _jsxRuntime.jsx)("div", {
460
431
  className: 'Sqb-SelectTable-loading',
461
432
  children: (0, _jsxRuntime.jsx)(_Loading["default"], {
@@ -471,7 +442,7 @@ var SelectTable = function SelectTable(_ref) {
471
442
  className: 'px-2',
472
443
  children: (0, _jsxRuntime.jsx)(_icons.SearchIcon, {})
473
444
  }), (0, _jsxRuntime.jsx)("input", {
474
- autoFocus: true,
445
+ ref: searchInputRef,
475
446
  type: 'text',
476
447
  className: 'p-2',
477
448
  placeholder: (0, _locale.__)('data.search'),
@@ -479,16 +450,15 @@ var SelectTable = function SelectTable(_ref) {
479
450
  })]
480
451
  })
481
452
  }), Array.isArray(list) && list.map(function (v) {
453
+ var tableValue = (0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, val), v);
482
454
  return (0, _jsxRuntime.jsx)("div", {
483
455
  className: (0, _classnames["default"])("Sqb-List-section"),
484
456
  children: (0, _jsxRuntime.jsx)("div", {
485
457
  className: (0, _classnames["default"])("Sqb-List-item mx-2", {
486
- active: val.datasourceId === value.datasourceId && val.id === v.id && (val.datasourceType || datasourceType) === datasourceType
458
+ active: (0, _helper.isSameTableByIdFirst)(value, tableValue)
487
459
  }),
488
460
  onClick: function onClick() {
489
- onChange((0, _objectSpread2["default"])((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, val), v), {}, {
490
- datasourceType: datasourceType
491
- }));
461
+ onChange(tableValue);
492
462
  },
493
463
  children: (0, _jsxRuntime.jsxs)("a", {
494
464
  className: 'p-2',
@@ -503,7 +473,7 @@ var SelectTable = function SelectTable(_ref) {
503
473
  })]
504
474
  })
505
475
  })
506
- }, v.name);
476
+ }, (0, _helper.getTableIdFirstKey)(tableValue));
507
477
  })]
508
478
  })]
509
479
  })