@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.
- package/lib/cjs/components/dialog/expression/index.js +0 -1
- package/lib/cjs/components/dialog/formula-list/utils.js +0 -3
- package/lib/cjs/components/dialog/select-column/index.js +2 -2
- package/lib/cjs/components/dialog/select-column-multiple/index.d.ts +0 -1
- package/lib/cjs/components/dialog/select-column-multiple/index.js +44 -19
- package/lib/cjs/components/dialog/select-join-column/index.js +23 -7
- package/lib/cjs/components/dialog/select-join-column-multiple/index.js +15 -6
- package/lib/cjs/components/dialog/select-permission-table/index.js +2 -2
- package/lib/cjs/components/dialog/select-summarize/index.js +1 -3
- package/lib/cjs/components/dialog/select-table/index.d.ts +1 -2
- package/lib/cjs/components/dialog/select-table/index.js +231 -261
- package/lib/cjs/components/dialog/select-table/index.less +51 -36
- package/lib/cjs/components/metabase/index.js +34 -16
- package/lib/cjs/components/modules/components/item-name.js +0 -1
- package/lib/cjs/components/modules/custom-column.js +3 -7
- package/lib/cjs/components/modules/filter.js +3 -6
- package/lib/cjs/components/modules/join-data.js +45 -88
- package/lib/cjs/components/modules/permission-table.js +5 -9
- package/lib/cjs/components/modules/sort.js +1 -2
- package/lib/cjs/components/modules/summarize/group-by.js +1 -8
- package/lib/cjs/components/modules/summarize/select-index.js +1 -4
- package/lib/cjs/components/modules/table-data.js +28 -44
- package/lib/cjs/hooks/use-state.js +22 -147
- package/lib/cjs/index.js +1 -7
- package/lib/cjs/locale/en.js +1 -0
- package/lib/cjs/locale/zh.js +1 -0
- package/lib/cjs/store/types.d.ts +4 -5
- package/lib/cjs/types.d.ts +0 -8
- package/lib/cjs/utils/helper.d.ts +4 -0
- package/lib/cjs/utils/helper.js +102 -1
- package/lib/cjs/utils/transformSql.js +0 -2
- package/lib/cjs/utils.js +38 -18
- package/lib/es/components/dialog/expression/index.js +0 -1
- package/lib/es/components/dialog/formula-list/utils.js +0 -3
- package/lib/es/components/dialog/select-column/index.js +3 -3
- package/lib/es/components/dialog/select-column-multiple/index.d.ts +0 -1
- package/lib/es/components/dialog/select-column-multiple/index.js +45 -21
- package/lib/es/components/dialog/select-join-column/index.js +24 -8
- package/lib/es/components/dialog/select-join-column-multiple/index.js +16 -7
- package/lib/es/components/dialog/select-permission-table/index.js +3 -3
- package/lib/es/components/dialog/select-summarize/index.js +1 -3
- package/lib/es/components/dialog/select-table/index.d.ts +1 -2
- package/lib/es/components/dialog/select-table/index.js +233 -263
- package/lib/es/components/dialog/select-table/index.less +51 -36
- package/lib/es/components/metabase/index.js +34 -16
- package/lib/es/components/modules/components/item-name.js +0 -1
- package/lib/es/components/modules/custom-column.js +3 -7
- package/lib/es/components/modules/filter.js +3 -6
- package/lib/es/components/modules/join-data.js +46 -89
- package/lib/es/components/modules/permission-table.js +6 -10
- package/lib/es/components/modules/sort.js +1 -2
- package/lib/es/components/modules/summarize/group-by.js +1 -8
- package/lib/es/components/modules/summarize/select-index.js +1 -4
- package/lib/es/components/modules/table-data.js +29 -45
- package/lib/es/hooks/use-state.js +23 -148
- package/lib/es/index.js +1 -7
- package/lib/es/locale/en.js +1 -0
- package/lib/es/locale/zh.js +1 -0
- package/lib/es/store/types.d.ts +4 -5
- package/lib/es/types.d.ts +0 -8
- package/lib/es/utils/helper.d.ts +4 -0
- package/lib/es/utils/helper.js +101 -0
- package/lib/es/utils/transformSql.js +0 -2
- package/lib/es/utils.js +39 -19
- 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)(
|
|
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
|
-
|
|
51
|
-
|
|
52
|
-
var _useState7 = (0, _react.useState)(
|
|
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
|
-
|
|
57
|
-
|
|
104
|
+
list = _useState8[0],
|
|
105
|
+
setList = _useState8[1];
|
|
58
106
|
var _useState9 = (0, _react.useState)([]),
|
|
59
107
|
_useState0 = (0, _slicedToArray2["default"])(_useState9, 2),
|
|
60
|
-
|
|
61
|
-
|
|
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
|
-
|
|
65
|
-
|
|
66
|
-
var _useState11 = (0, _react.useState)(
|
|
112
|
+
searchVal = _useState10[0],
|
|
113
|
+
setSearchVal = _useState10[1];
|
|
114
|
+
var _useState11 = (0, _react.useState)(''),
|
|
67
115
|
_useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
|
|
68
|
-
|
|
69
|
-
|
|
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
|
-
|
|
73
|
-
|
|
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
|
-
|
|
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
|
|
93
|
-
|
|
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
|
|
157
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
299
|
-
|
|
300
|
-
|
|
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
|
-
|
|
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: [(
|
|
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:
|
|
336
|
+
active: (0, _helper.isSameTableByIdFirst)(value, tableValue)
|
|
368
337
|
}),
|
|
369
338
|
onClick: function onClick() {
|
|
370
|
-
onChange(
|
|
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
|
-
},
|
|
354
|
+
}, (0, _helper.getTableIdFirstKey)(tableValue));
|
|
388
355
|
}))]
|
|
389
|
-
},
|
|
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
|
-
|
|
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.
|
|
421
|
+
children: [(0, _jsxRuntime.jsxs)("div", {
|
|
449
422
|
className: 'header',
|
|
450
|
-
children: (0, _jsxRuntime.
|
|
423
|
+
children: [(0, _jsxRuntime.jsx)("div", {
|
|
451
424
|
className: 'left-info',
|
|
452
|
-
children:
|
|
425
|
+
children: (0, _jsxRuntime.jsxs)("span", {
|
|
453
426
|
onClick: goPrevPage,
|
|
454
427
|
children: [(0, _jsxRuntime.jsx)(_icons.LeftArrowIcon, {}), val.datasourceName]
|
|
455
|
-
})
|
|
456
|
-
|
|
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
|
-
|
|
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:
|
|
458
|
+
active: (0, _helper.isSameTableByIdFirst)(value, tableValue)
|
|
487
459
|
}),
|
|
488
460
|
onClick: function onClick() {
|
|
489
|
-
onChange(
|
|
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
|
-
},
|
|
476
|
+
}, (0, _helper.getTableIdFirstKey)(tableValue));
|
|
507
477
|
})]
|
|
508
478
|
})]
|
|
509
479
|
})
|