@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 CHANGED
@@ -42,7 +42,6 @@ export type ToolbarType =
42
42
  export interface MetaBaseProps {
43
43
  loading?: boolean; // 加载状态
44
44
  btnText?: string; //按钮文字
45
- showPermissionTable?: boolean; // 是否显示权限表
46
45
  showFields?:boolean ; //是否显示字段
47
46
  tableNameTpl?: string; //表名
48
47
  fieldNameTpl?: string; //字段名
package/lib/es/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @gingkoo/pandora-metabase v0.0.1-alpha.6
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
- showPermissionTable = false; // 开启权限表
2173
- showFields = true; // 开启权限表
2184
+ showFields = true; // 显示字段
2174
2185
  //工具列表
2175
- toolbar = ['filter', 'summarize', 'joinData', 'permissionTable', 'customColumn', 'sort', 'rowLimit'];
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(tableName, datasourceId, callback) {
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(tableName, datasourceId);
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
- let tableName = newMeta[i].table2.name;
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
- let tableName = newMeta[i].table.name;
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.showPermissionTable) {
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(tableName, data.datasourceId, columns => {
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
- newMeta[index].table2 = {
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
- store.fetchColumns(tableName, data.datasourceId, columns => {
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', 'permissionTable', 'customColumn', 'sort', 'rowLimit']
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, showPermissionTable, toolbar, fieldNameTpl, tableNameTpl]);
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.setPreData(preData);
6742
+ store.reset();
6742
6743
  }
6743
6744
  }));
6744
6745
  // ② 表集合没有查出来前 不加载页面