@gingkoo/pandora-metabase 0.0.1-alpha.7 → 0.0.1-alpha.9
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/es/index.js +51 -47
- package/lib/es/index.js.map +1 -1
- package/lib/es/store/index.d.ts +12 -5
- package/lib/es/store/types.d.ts +3 -0
- package/lib/es/types.d.ts +4 -1
- package/package.json +1 -1
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.9
|
|
3
3
|
*/
|
|
4
4
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
5
5
|
import * as React from 'react';
|
|
@@ -2165,29 +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
|
-
showFields = true; //
|
|
2184
|
+
showFields = true; // 显示字段
|
|
2173
2185
|
//工具列表
|
|
2174
|
-
toolbar =
|
|
2186
|
+
toolbar = defaultToolbar;
|
|
2175
2187
|
fieldNameTpl = '${name}';
|
|
2176
2188
|
tableNameTpl = '${name}';
|
|
2177
2189
|
sourceList = []; // 数据源列表
|
|
2178
2190
|
_cacheSource2TableMap = {}; // 数据源id 对应数据集列表
|
|
2179
2191
|
_cacheColumnsMap = {};
|
|
2180
|
-
metaList =
|
|
2181
|
-
metaKey,
|
|
2182
|
-
type: TypeEnum.data,
|
|
2183
|
-
table: {
|
|
2184
|
-
name: '',
|
|
2185
|
-
alias: '',
|
|
2186
|
-
datasourceId: '',
|
|
2187
|
-
datasourceName: ''
|
|
2188
|
-
},
|
|
2189
|
-
columns: []
|
|
2190
|
-
}];
|
|
2192
|
+
metaList = defaultMetaList;
|
|
2191
2193
|
popupData = {
|
|
2192
2194
|
visible: false,
|
|
2193
2195
|
node: null,
|
|
@@ -2224,10 +2226,21 @@ class SqlVisionStore {
|
|
|
2224
2226
|
return _tables;
|
|
2225
2227
|
}
|
|
2226
2228
|
// 查询表字段
|
|
2227
|
-
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;
|
|
2228
2241
|
let columns = this.getColumns(tableName);
|
|
2229
2242
|
if (!columns.length) {
|
|
2230
|
-
columns = await this.fetchColumnsFn(
|
|
2243
|
+
columns = await this.fetchColumnsFn(extra, datasourceId);
|
|
2231
2244
|
runInAction(() => {
|
|
2232
2245
|
this.setColumns(tableName, columns);
|
|
2233
2246
|
});
|
|
@@ -2240,10 +2253,8 @@ class SqlVisionStore {
|
|
|
2240
2253
|
this.metaList = data.map((v, i) => {
|
|
2241
2254
|
// 设置右侧column
|
|
2242
2255
|
if (v.table2?.datasourceId && v.columns.length < 1) {
|
|
2243
|
-
// let newMetaList = this.metaList.slice() as MetaData[];
|
|
2244
2256
|
let newMeta = data.slice();
|
|
2245
|
-
|
|
2246
|
-
this.fetchColumns(tableName, newMeta[i].table2.datasourceId, columns => {
|
|
2257
|
+
this.fetchColumns(newMeta[i].table2, newMeta[i].table2.datasourceId, columns => {
|
|
2247
2258
|
newMeta[i].columns = columns;
|
|
2248
2259
|
this.setMeta(newMeta);
|
|
2249
2260
|
});
|
|
@@ -2253,10 +2264,8 @@ class SqlVisionStore {
|
|
|
2253
2264
|
}
|
|
2254
2265
|
// 设置column
|
|
2255
2266
|
if (v.table?.datasourceId && v.columns.length < 1) {
|
|
2256
|
-
// let newMetaList = this.metaList.slice() as MetaData[];
|
|
2257
2267
|
let newMeta = data.slice();
|
|
2258
|
-
|
|
2259
|
-
this.fetchColumns(tableName, newMeta[i].table.datasourceId, columns => {
|
|
2268
|
+
this.fetchColumns(newMeta[i].table, newMeta[i].table.datasourceId, columns => {
|
|
2260
2269
|
newMeta[i].columns = columns;
|
|
2261
2270
|
this.setMeta(newMeta);
|
|
2262
2271
|
});
|
|
@@ -2270,17 +2279,7 @@ class SqlVisionStore {
|
|
|
2270
2279
|
});
|
|
2271
2280
|
metaKey = Math.max.apply(null, this.metaList.map(v => Number(v.metaKey)));
|
|
2272
2281
|
} else {
|
|
2273
|
-
this.setMeta(
|
|
2274
|
-
metaKey,
|
|
2275
|
-
type: TypeEnum.data,
|
|
2276
|
-
table: {
|
|
2277
|
-
name: '',
|
|
2278
|
-
alias: '',
|
|
2279
|
-
datasourceId: '',
|
|
2280
|
-
datasourceName: ''
|
|
2281
|
-
},
|
|
2282
|
-
columns: []
|
|
2283
|
-
}]);
|
|
2282
|
+
this.setMeta(defaultMetaList);
|
|
2284
2283
|
}
|
|
2285
2284
|
}
|
|
2286
2285
|
setSourceList(list) {
|
|
@@ -2428,6 +2427,13 @@ class SqlVisionStore {
|
|
|
2428
2427
|
setTableNameTpl(tpl) {
|
|
2429
2428
|
this.tableNameTpl = tpl;
|
|
2430
2429
|
}
|
|
2430
|
+
reset() {
|
|
2431
|
+
this.setSourceList([]);
|
|
2432
|
+
this.setMeta(defaultMetaList);
|
|
2433
|
+
this.setToolbar(defaultToolbar);
|
|
2434
|
+
this._cacheSource2TableMap = {};
|
|
2435
|
+
this._cacheColumnsMap = {};
|
|
2436
|
+
}
|
|
2431
2437
|
}
|
|
2432
2438
|
const sqlVisionStore = new SqlVisionStore();
|
|
2433
2439
|
const Store = /*#__PURE__*/React__default.createContext(sqlVisionStore);
|
|
@@ -4683,7 +4689,7 @@ const TableData = props => {
|
|
|
4683
4689
|
const store = useStore();
|
|
4684
4690
|
let selected = Boolean(meta.table.name);
|
|
4685
4691
|
function selectTable(e) {
|
|
4686
|
-
store.setPopup({
|
|
4692
|
+
!meta.readonly && store.setPopup({
|
|
4687
4693
|
visible: true,
|
|
4688
4694
|
node: e.currentTarget,
|
|
4689
4695
|
content: jsx(SelectTable$1, {
|
|
@@ -4692,9 +4698,8 @@ const TableData = props => {
|
|
|
4692
4698
|
onChange: data => {
|
|
4693
4699
|
if (meta.table.datasourceId !== data.datasourceId || meta.table.name !== data.name) {
|
|
4694
4700
|
let newMetaList = store.metaList.slice()[0];
|
|
4695
|
-
let tableName = data.name;
|
|
4696
4701
|
newMetaList.table = data;
|
|
4697
|
-
store.fetchColumns(
|
|
4702
|
+
store.fetchColumns(data, data.datasourceId, columns => {
|
|
4698
4703
|
newMetaList.columns = columns;
|
|
4699
4704
|
// ① 主表动了 其他都得重新选
|
|
4700
4705
|
store.setMeta([newMetaList]);
|
|
@@ -4709,7 +4714,7 @@ const TableData = props => {
|
|
|
4709
4714
|
}
|
|
4710
4715
|
function selectColumns(e) {
|
|
4711
4716
|
let columns = meta.columns;
|
|
4712
|
-
store.setPopup({
|
|
4717
|
+
!meta.readonly && store.setPopup({
|
|
4713
4718
|
visible: true,
|
|
4714
4719
|
node: e.currentTarget || e.target,
|
|
4715
4720
|
content: jsx(SelectColumn, {
|
|
@@ -4773,7 +4778,7 @@ const JoinData = props => {
|
|
|
4773
4778
|
let columnsSelected = meta.table1.column && meta.table2.column;
|
|
4774
4779
|
function selectColumns(e) {
|
|
4775
4780
|
let columns = meta.columns;
|
|
4776
|
-
store.setPopup({
|
|
4781
|
+
!meta.readonly && store.setPopup({
|
|
4777
4782
|
visible: true,
|
|
4778
4783
|
node: e.currentTarget,
|
|
4779
4784
|
content: jsx(SelectColumn, {
|
|
@@ -4793,7 +4798,7 @@ const JoinData = props => {
|
|
|
4793
4798
|
datasourceId: meta.table2.datasourceId,
|
|
4794
4799
|
datasourceName: meta.table2.datasourceName
|
|
4795
4800
|
};
|
|
4796
|
-
store.setPopup({
|
|
4801
|
+
!meta.readonly && store.setPopup({
|
|
4797
4802
|
visible: true,
|
|
4798
4803
|
node: e.currentTarget,
|
|
4799
4804
|
content: jsx(SelectTable$1, {
|
|
@@ -4831,7 +4836,7 @@ const JoinData = props => {
|
|
|
4831
4836
|
alias = `${tableName}_2`;
|
|
4832
4837
|
}
|
|
4833
4838
|
}
|
|
4834
|
-
|
|
4839
|
+
let _table2 = {
|
|
4835
4840
|
...data,
|
|
4836
4841
|
name: tableName,
|
|
4837
4842
|
alias,
|
|
@@ -4839,7 +4844,8 @@ const JoinData = props => {
|
|
|
4839
4844
|
datasourceId: data.datasourceId,
|
|
4840
4845
|
datasourceName: data.datasourceName
|
|
4841
4846
|
};
|
|
4842
|
-
|
|
4847
|
+
newMeta[index].table2 = _table2;
|
|
4848
|
+
store.fetchColumns(_table2, data.datasourceId, columns => {
|
|
4843
4849
|
newMeta[index].columns = columns;
|
|
4844
4850
|
// 关联表变了 下面模块全部删除
|
|
4845
4851
|
newMeta = newMeta.filter((v, i) => i <= index);
|
|
@@ -4855,7 +4861,7 @@ const JoinData = props => {
|
|
|
4855
4861
|
}
|
|
4856
4862
|
function selectJoin(e) {
|
|
4857
4863
|
let newMeta = store.metaList.slice();
|
|
4858
|
-
store.setPopup({
|
|
4864
|
+
!meta.readonly && store.setPopup({
|
|
4859
4865
|
visible: true,
|
|
4860
4866
|
node: e.currentTarget,
|
|
4861
4867
|
content: jsx(SelectJoin, {
|
|
@@ -4963,7 +4969,7 @@ const JoinData = props => {
|
|
|
4963
4969
|
columns: meta.columns
|
|
4964
4970
|
}];
|
|
4965
4971
|
}
|
|
4966
|
-
store.setPopup({
|
|
4972
|
+
!meta.readonly && store.setPopup({
|
|
4967
4973
|
visible: true,
|
|
4968
4974
|
node,
|
|
4969
4975
|
content: jsx(SelectJoinColumn$1, {
|
|
@@ -6712,10 +6718,9 @@ const SqlVisionBuilder = /*#__PURE__*/React__default.forwardRef((props, ref) =>
|
|
|
6712
6718
|
getColumns,
|
|
6713
6719
|
tableNameTpl = '${name}',
|
|
6714
6720
|
fieldNameTpl = '${name}',
|
|
6715
|
-
toolbar = ['filter', 'summarize', 'joinData', '
|
|
6721
|
+
toolbar = ['filter', 'summarize', 'joinData', 'customColumn', 'sort', 'rowLimit']
|
|
6716
6722
|
} = props;
|
|
6717
6723
|
const store = useStore();
|
|
6718
|
-
const [preData, setPreData] = useState([]);
|
|
6719
6724
|
useEffect(() => {
|
|
6720
6725
|
getTables && store.setFetchDatasetFn(getTables);
|
|
6721
6726
|
getColumns && store.setFetchColumnsFn(getColumns);
|
|
@@ -6732,10 +6737,9 @@ const SqlVisionBuilder = /*#__PURE__*/React__default.forwardRef((props, ref) =>
|
|
|
6732
6737
|
},
|
|
6733
6738
|
setPreData: data => {
|
|
6734
6739
|
store.setPreData(data);
|
|
6735
|
-
setPreData(data);
|
|
6736
6740
|
},
|
|
6737
6741
|
reset: () => {
|
|
6738
|
-
store.
|
|
6742
|
+
store.reset();
|
|
6739
6743
|
}
|
|
6740
6744
|
}));
|
|
6741
6745
|
// ② 表集合没有查出来前 不加载页面
|