@gingkoo/pandora-metabase 0.0.1-alpha.6 → 0.0.1-alpha.8
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/README.md +0 -1
- package/lib/es/index.js +50 -49
- package/lib/es/index.js.map +1 -1
- package/lib/es/store/index.d.ts +13 -7
- package/lib/es/store/types.d.ts +1 -0
- package/lib/es/types.d.ts +4 -2
- package/package.json +1 -1
package/README.md
CHANGED
package/lib/es/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @gingkoo/pandora-metabase v0.0.1-alpha.
|
|
2
|
+
* @gingkoo/pandora-metabase v0.0.1-alpha.8
|
|
3
3
|
*/
|
|
4
4
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
5
5
|
import * as React from 'react';
|
|
@@ -2165,30 +2165,31 @@ configure({
|
|
|
2165
2165
|
});
|
|
2166
2166
|
let metaKey = 1;
|
|
2167
2167
|
const SummarizeAlias = 'source';
|
|
2168
|
+
const defaultMetaList = [{
|
|
2169
|
+
metaKey,
|
|
2170
|
+
type: TypeEnum.data,
|
|
2171
|
+
table: {
|
|
2172
|
+
name: '',
|
|
2173
|
+
alias: '',
|
|
2174
|
+
datasourceId: '',
|
|
2175
|
+
datasourceName: ''
|
|
2176
|
+
},
|
|
2177
|
+
columns: []
|
|
2178
|
+
}];
|
|
2179
|
+
const defaultToolbar = ['filter', 'summarize', 'joinData', 'customColumn', 'sort', 'rowLimit'];
|
|
2168
2180
|
class SqlVisionStore {
|
|
2169
2181
|
constructor() {
|
|
2170
2182
|
makeAutoObservable(this);
|
|
2171
2183
|
}
|
|
2172
|
-
|
|
2173
|
-
showFields = true; // 开启权限表
|
|
2184
|
+
showFields = true; // 显示字段
|
|
2174
2185
|
//工具列表
|
|
2175
|
-
toolbar =
|
|
2186
|
+
toolbar = defaultToolbar;
|
|
2176
2187
|
fieldNameTpl = '${name}';
|
|
2177
2188
|
tableNameTpl = '${name}';
|
|
2178
2189
|
sourceList = []; // 数据源列表
|
|
2179
2190
|
_cacheSource2TableMap = {}; // 数据源id 对应数据集列表
|
|
2180
2191
|
_cacheColumnsMap = {};
|
|
2181
|
-
metaList =
|
|
2182
|
-
metaKey,
|
|
2183
|
-
type: TypeEnum.data,
|
|
2184
|
-
table: {
|
|
2185
|
-
name: '',
|
|
2186
|
-
alias: '',
|
|
2187
|
-
datasourceId: '',
|
|
2188
|
-
datasourceName: ''
|
|
2189
|
-
},
|
|
2190
|
-
columns: []
|
|
2191
|
-
}];
|
|
2192
|
+
metaList = defaultMetaList;
|
|
2192
2193
|
popupData = {
|
|
2193
2194
|
visible: false,
|
|
2194
2195
|
node: null,
|
|
@@ -2203,6 +2204,9 @@ class SqlVisionStore {
|
|
|
2203
2204
|
}
|
|
2204
2205
|
return false;
|
|
2205
2206
|
}
|
|
2207
|
+
showToolbar(name) {
|
|
2208
|
+
return !!~this.toolbar.indexOf(name);
|
|
2209
|
+
}
|
|
2206
2210
|
fetchDatasetFn = async () => {};
|
|
2207
2211
|
fetchColumnsFn = async () => {};
|
|
2208
2212
|
setFetchDatasetFn(fn) {
|
|
@@ -2222,10 +2226,21 @@ class SqlVisionStore {
|
|
|
2222
2226
|
return _tables;
|
|
2223
2227
|
}
|
|
2224
2228
|
// 查询表字段
|
|
2225
|
-
async fetchColumns(
|
|
2229
|
+
async fetchColumns(table, datasourceId, callback) {
|
|
2230
|
+
let {
|
|
2231
|
+
alias,
|
|
2232
|
+
datasourceName,
|
|
2233
|
+
datasourceId: did,
|
|
2234
|
+
// @ts-ignore
|
|
2235
|
+
column,
|
|
2236
|
+
// @ts-ignore
|
|
2237
|
+
groupSql,
|
|
2238
|
+
...extra
|
|
2239
|
+
} = table;
|
|
2240
|
+
let tableName = table.name;
|
|
2226
2241
|
let columns = this.getColumns(tableName);
|
|
2227
2242
|
if (!columns.length) {
|
|
2228
|
-
columns = await this.fetchColumnsFn(
|
|
2243
|
+
columns = await this.fetchColumnsFn(extra, datasourceId);
|
|
2229
2244
|
runInAction(() => {
|
|
2230
2245
|
this.setColumns(tableName, columns);
|
|
2231
2246
|
});
|
|
@@ -2238,10 +2253,8 @@ class SqlVisionStore {
|
|
|
2238
2253
|
this.metaList = data.map((v, i) => {
|
|
2239
2254
|
// 设置右侧column
|
|
2240
2255
|
if (v.table2?.datasourceId && v.columns.length < 1) {
|
|
2241
|
-
// let newMetaList = this.metaList.slice() as MetaData[];
|
|
2242
2256
|
let newMeta = data.slice();
|
|
2243
|
-
|
|
2244
|
-
this.fetchColumns(tableName, newMeta[i].table2.datasourceId, columns => {
|
|
2257
|
+
this.fetchColumns(newMeta[i].table2, newMeta[i].table2.datasourceId, columns => {
|
|
2245
2258
|
newMeta[i].columns = columns;
|
|
2246
2259
|
this.setMeta(newMeta);
|
|
2247
2260
|
});
|
|
@@ -2251,10 +2264,8 @@ class SqlVisionStore {
|
|
|
2251
2264
|
}
|
|
2252
2265
|
// 设置column
|
|
2253
2266
|
if (v.table?.datasourceId && v.columns.length < 1) {
|
|
2254
|
-
// let newMetaList = this.metaList.slice() as MetaData[];
|
|
2255
2267
|
let newMeta = data.slice();
|
|
2256
|
-
|
|
2257
|
-
this.fetchColumns(tableName, newMeta[i].table.datasourceId, columns => {
|
|
2268
|
+
this.fetchColumns(newMeta[i].table, newMeta[i].table.datasourceId, columns => {
|
|
2258
2269
|
newMeta[i].columns = columns;
|
|
2259
2270
|
this.setMeta(newMeta);
|
|
2260
2271
|
});
|
|
@@ -2268,17 +2279,7 @@ class SqlVisionStore {
|
|
|
2268
2279
|
});
|
|
2269
2280
|
metaKey = Math.max.apply(null, this.metaList.map(v => Number(v.metaKey)));
|
|
2270
2281
|
} else {
|
|
2271
|
-
this.setMeta(
|
|
2272
|
-
metaKey,
|
|
2273
|
-
type: TypeEnum.data,
|
|
2274
|
-
table: {
|
|
2275
|
-
name: '',
|
|
2276
|
-
alias: '',
|
|
2277
|
-
datasourceId: '',
|
|
2278
|
-
datasourceName: ''
|
|
2279
|
-
},
|
|
2280
|
-
columns: []
|
|
2281
|
-
}]);
|
|
2282
|
+
this.setMeta(defaultMetaList);
|
|
2282
2283
|
}
|
|
2283
2284
|
}
|
|
2284
2285
|
setSourceList(list) {
|
|
@@ -2414,9 +2415,6 @@ class SqlVisionStore {
|
|
|
2414
2415
|
setClosable(payload) {
|
|
2415
2416
|
this.popupClosable = payload;
|
|
2416
2417
|
}
|
|
2417
|
-
setShowPermissionTable(show) {
|
|
2418
|
-
this.showPermissionTable = show;
|
|
2419
|
-
}
|
|
2420
2418
|
setShowFields(show) {
|
|
2421
2419
|
this.showFields = show;
|
|
2422
2420
|
}
|
|
@@ -2429,6 +2427,13 @@ class SqlVisionStore {
|
|
|
2429
2427
|
setTableNameTpl(tpl) {
|
|
2430
2428
|
this.tableNameTpl = tpl;
|
|
2431
2429
|
}
|
|
2430
|
+
reset() {
|
|
2431
|
+
this.setSourceList([]);
|
|
2432
|
+
this.setMeta(defaultMetaList);
|
|
2433
|
+
this.setToolbar(defaultToolbar);
|
|
2434
|
+
this._cacheSource2TableMap = {};
|
|
2435
|
+
this._cacheColumnsMap = {};
|
|
2436
|
+
}
|
|
2432
2437
|
}
|
|
2433
2438
|
const sqlVisionStore = new SqlVisionStore();
|
|
2434
2439
|
const Store = /*#__PURE__*/React__default.createContext(sqlVisionStore);
|
|
@@ -4645,7 +4650,7 @@ const NextDom = props => {
|
|
|
4645
4650
|
// @ts-ignore
|
|
4646
4651
|
if (!store.metaList[0].table.name) return null;
|
|
4647
4652
|
let available = findNextIcon(store, props);
|
|
4648
|
-
if (!store.
|
|
4653
|
+
if (!store.showToolbar(TypeEnum.permissionTable)) {
|
|
4649
4654
|
available = available.filter(v => v !== TypeEnum.permissionTable);
|
|
4650
4655
|
}
|
|
4651
4656
|
let size = judgeSize(store, props, available.length);
|
|
@@ -4693,9 +4698,8 @@ const TableData = props => {
|
|
|
4693
4698
|
onChange: data => {
|
|
4694
4699
|
if (meta.table.datasourceId !== data.datasourceId || meta.table.name !== data.name) {
|
|
4695
4700
|
let newMetaList = store.metaList.slice()[0];
|
|
4696
|
-
let tableName = data.name;
|
|
4697
4701
|
newMetaList.table = data;
|
|
4698
|
-
store.fetchColumns(
|
|
4702
|
+
store.fetchColumns(data, data.datasourceId, columns => {
|
|
4699
4703
|
newMetaList.columns = columns;
|
|
4700
4704
|
// ① 主表动了 其他都得重新选
|
|
4701
4705
|
store.setMeta([newMetaList]);
|
|
@@ -4832,7 +4836,7 @@ const JoinData = props => {
|
|
|
4832
4836
|
alias = `${tableName}_2`;
|
|
4833
4837
|
}
|
|
4834
4838
|
}
|
|
4835
|
-
|
|
4839
|
+
let _table2 = {
|
|
4836
4840
|
...data,
|
|
4837
4841
|
name: tableName,
|
|
4838
4842
|
alias,
|
|
@@ -4840,7 +4844,8 @@ const JoinData = props => {
|
|
|
4840
4844
|
datasourceId: data.datasourceId,
|
|
4841
4845
|
datasourceName: data.datasourceName
|
|
4842
4846
|
};
|
|
4843
|
-
|
|
4847
|
+
newMeta[index].table2 = _table2;
|
|
4848
|
+
store.fetchColumns(_table2, data.datasourceId, columns => {
|
|
4844
4849
|
newMeta[index].columns = columns;
|
|
4845
4850
|
// 关联表变了 下面模块全部删除
|
|
4846
4851
|
newMeta = newMeta.filter((v, i) => i <= index);
|
|
@@ -6708,37 +6713,33 @@ const Metabase = observer(props => {
|
|
|
6708
6713
|
const SqlVisionBuilder = /*#__PURE__*/React__default.forwardRef((props, ref) => {
|
|
6709
6714
|
let {
|
|
6710
6715
|
loading = false,
|
|
6711
|
-
showPermissionTable = false,
|
|
6712
6716
|
showFields = true,
|
|
6713
6717
|
getTables,
|
|
6714
6718
|
getColumns,
|
|
6715
6719
|
tableNameTpl = '${name}',
|
|
6716
6720
|
fieldNameTpl = '${name}',
|
|
6717
|
-
toolbar = ['filter', 'summarize', 'joinData', '
|
|
6721
|
+
toolbar = ['filter', 'summarize', 'joinData', 'customColumn', 'sort', 'rowLimit']
|
|
6718
6722
|
} = props;
|
|
6719
6723
|
const store = useStore();
|
|
6720
|
-
const [preData, setPreData] = useState([]);
|
|
6721
6724
|
useEffect(() => {
|
|
6722
6725
|
getTables && store.setFetchDatasetFn(getTables);
|
|
6723
6726
|
getColumns && store.setFetchColumnsFn(getColumns);
|
|
6724
6727
|
}, []);
|
|
6725
6728
|
useEffect(() => {
|
|
6726
|
-
store.setShowPermissionTable(showPermissionTable);
|
|
6727
6729
|
store.setShowFields(showFields);
|
|
6728
6730
|
store.setToolbar(toolbar || []);
|
|
6729
6731
|
store.setFieldNameTpl(fieldNameTpl || '${name}');
|
|
6730
6732
|
store.setTableNameTpl(tableNameTpl || '${name}');
|
|
6731
|
-
}, [showFields,
|
|
6733
|
+
}, [showFields, toolbar, fieldNameTpl, tableNameTpl]);
|
|
6732
6734
|
React__default.useImperativeHandle(ref, () => ({
|
|
6733
6735
|
setDatasource: list => {
|
|
6734
6736
|
store.setSourceList(list);
|
|
6735
6737
|
},
|
|
6736
6738
|
setPreData: data => {
|
|
6737
6739
|
store.setPreData(data);
|
|
6738
|
-
setPreData(data);
|
|
6739
6740
|
},
|
|
6740
6741
|
reset: () => {
|
|
6741
|
-
store.
|
|
6742
|
+
store.reset();
|
|
6742
6743
|
}
|
|
6743
6744
|
}));
|
|
6744
6745
|
// ② 表集合没有查出来前 不加载页面
|