@gingkoo/pandora-metabase 1.0.24 → 1.0.25
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/common/SplitView/index.js +12 -11
- package/lib/cjs/components/dialog/custom-column/expression-editor.js +2 -1
- package/lib/cjs/components/dialog/custom-column/tokenizedI-input.js +2 -1
- package/lib/cjs/components/dialog/custom-editor/index.js +1 -0
- package/lib/cjs/components/dialog/expression/index.js +12 -11
- package/lib/cjs/components/dialog/formula-list/index.d.ts +3 -1
- package/lib/cjs/components/dialog/formula-list/index.js +25 -19
- package/lib/cjs/components/dialog/index.d.ts +1 -0
- package/lib/cjs/components/dialog/index.js +9 -2
- package/lib/cjs/components/dialog/select-column/index.js +6 -13
- package/lib/cjs/components/dialog/select-column-multiple/index.js +0 -1
- package/lib/cjs/components/dialog/select-table/index.js +7 -7
- package/lib/cjs/components/icons.js +36 -36
- package/lib/cjs/components/metabase/index.js +6 -6
- package/lib/cjs/components/metabase/index.less +9 -0
- package/lib/cjs/components/modules/components/Wrapper.js +6 -6
- package/lib/cjs/components/modules/custom-column.js +4 -4
- package/lib/cjs/components/modules/join-data.js +76 -59
- package/lib/cjs/components/modules/summarize/group-by.js +6 -13
- package/lib/cjs/components/modules/summarize/select-index.js +6 -13
- package/lib/cjs/components/modules/table-data.js +9 -16
- package/lib/cjs/components/popup.js +2 -1
- package/lib/cjs/hooks/patch.js +29 -1
- package/lib/cjs/hooks/use-state.js +91 -62
- package/lib/cjs/index.js +2 -1
- package/lib/cjs/locale/en.js +2 -1
- package/lib/cjs/locale/zh.js +2 -1
- package/lib/cjs/utils.d.ts +1 -0
- package/lib/cjs/utils.js +14 -1
- package/lib/es/common/SplitView/index.js +10 -10
- package/lib/es/components/dialog/custom-editor/index.js +1 -0
- package/lib/es/components/dialog/expression/index.js +10 -10
- package/lib/es/components/dialog/formula-list/index.d.ts +3 -1
- package/lib/es/components/dialog/formula-list/index.js +25 -19
- package/lib/es/components/dialog/index.d.ts +1 -0
- package/lib/es/components/dialog/index.js +2 -1
- package/lib/es/components/dialog/select-column/index.js +7 -14
- package/lib/es/components/dialog/select-column-multiple/index.js +0 -1
- package/lib/es/components/dialog/select-table/index.js +7 -7
- package/lib/es/components/icons.js +36 -36
- package/lib/es/components/metabase/index.js +6 -6
- package/lib/es/components/metabase/index.less +9 -0
- package/lib/es/components/modules/components/Wrapper.js +6 -6
- package/lib/es/components/modules/custom-column.js +4 -4
- package/lib/es/components/modules/join-data.js +76 -59
- package/lib/es/components/modules/summarize/group-by.js +7 -14
- package/lib/es/components/modules/summarize/select-index.js +7 -14
- package/lib/es/components/modules/table-data.js +10 -17
- package/lib/es/hooks/patch.js +28 -0
- package/lib/es/hooks/use-state.js +92 -63
- package/lib/es/locale/en.js +2 -1
- package/lib/es/locale/zh.js +2 -1
- package/lib/es/utils.d.ts +1 -0
- package/lib/es/utils.js +11 -0
- package/package.json +2 -2
|
@@ -8,7 +8,7 @@ import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
|
8
8
|
import { useState, useRef, useMemo } from 'react';
|
|
9
9
|
import { uuidv4 } from '../utils/helper';
|
|
10
10
|
import { TypeEnum, JoinEnum, UnionEnum } from '../store/enum';
|
|
11
|
-
import { getSubColumns } from '../utils';
|
|
11
|
+
import { getSubColumns, findIndex } from '../utils';
|
|
12
12
|
var metaKey = 1;
|
|
13
13
|
export var SummarizeAlias = 'source';
|
|
14
14
|
var useStore = function useStore() {
|
|
@@ -55,69 +55,69 @@ var useStore = function useStore() {
|
|
|
55
55
|
toolbar = _useState8[0],
|
|
56
56
|
setToolbar = _useState8[1]; //工具列表
|
|
57
57
|
var _useState9 = useState('${name}'),
|
|
58
|
-
|
|
59
|
-
fieldNameTpl =
|
|
60
|
-
setFieldNameTpl =
|
|
61
|
-
var
|
|
62
|
-
_useState10 = _slicedToArray(_useState1, 2),
|
|
63
|
-
tableNameTpl = _useState10[0],
|
|
64
|
-
setTableNameTpl = _useState10[1]; //显示字段
|
|
65
|
-
var _useState11 = useState([]),
|
|
58
|
+
_useState10 = _slicedToArray(_useState9, 2),
|
|
59
|
+
fieldNameTpl = _useState10[0],
|
|
60
|
+
setFieldNameTpl = _useState10[1]; //显示字段
|
|
61
|
+
var _useState11 = useState('${name}'),
|
|
66
62
|
_useState12 = _slicedToArray(_useState11, 2),
|
|
67
|
-
|
|
68
|
-
|
|
63
|
+
tableNameTpl = _useState12[0],
|
|
64
|
+
setTableNameTpl = _useState12[1]; //显示字段
|
|
69
65
|
var _useState13 = useState([]),
|
|
70
66
|
_useState14 = _slicedToArray(_useState13, 2),
|
|
71
|
-
|
|
72
|
-
|
|
67
|
+
sourceList = _useState14[0],
|
|
68
|
+
setSourceList = _useState14[1]; //数据源列表
|
|
73
69
|
var _useState15 = useState([]),
|
|
74
70
|
_useState16 = _slicedToArray(_useState15, 2),
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
var _useState17 = useState(
|
|
71
|
+
constantList = _useState16[0],
|
|
72
|
+
setConstantList = _useState16[1]; //常量列表
|
|
73
|
+
var _useState17 = useState([]),
|
|
78
74
|
_useState18 = _slicedToArray(_useState17, 2),
|
|
79
|
-
|
|
80
|
-
|
|
75
|
+
formulaTemplates = _useState18[0],
|
|
76
|
+
setFormulaTemplates = _useState18[1]; //公式配置数组
|
|
81
77
|
var _useState19 = useState(false),
|
|
82
78
|
_useState20 = _slicedToArray(_useState19, 2),
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
var _useState21 = useState(
|
|
79
|
+
ignoreGroupByType = _useState20[0],
|
|
80
|
+
setIgnoreGroupByType = _useState20[1]; // 忽略groupBy类型
|
|
81
|
+
var _useState21 = useState(false),
|
|
86
82
|
_useState22 = _slicedToArray(_useState21, 2),
|
|
87
|
-
|
|
88
|
-
|
|
83
|
+
filterCustomType = _useState22[0],
|
|
84
|
+
setfilterCustomType = _useState22[1]; // 过滤器自定义类型
|
|
89
85
|
var _useState23 = useState({}),
|
|
90
86
|
_useState24 = _slicedToArray(_useState23, 2),
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
var _useState25 = useState(
|
|
87
|
+
_cacheSource2TableMap = _useState24[0],
|
|
88
|
+
set_cacheSource2TableMap = _useState24[1]; //数据源id 对应数据集列表
|
|
89
|
+
var _useState25 = useState({}),
|
|
94
90
|
_useState26 = _slicedToArray(_useState25, 2),
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
var _useState27 = useState(
|
|
91
|
+
_cacheColumnsMap = _useState26[0],
|
|
92
|
+
set_cacheColumnsMap = _useState26[1]; //数据源id 对应数据集列表
|
|
93
|
+
var _useState27 = useState(defaultMeta),
|
|
94
|
+
_useState28 = _slicedToArray(_useState27, 2),
|
|
95
|
+
metaList = _useState28[0],
|
|
96
|
+
_setMeta = _useState28[1]; //数据源id 对应数据集列表
|
|
97
|
+
var _useState29 = useState({
|
|
98
98
|
visible: false,
|
|
99
99
|
node: null,
|
|
100
100
|
content: null
|
|
101
101
|
}),
|
|
102
|
-
|
|
103
|
-
popupData =
|
|
104
|
-
setPopup =
|
|
105
|
-
var
|
|
102
|
+
_useState30 = _slicedToArray(_useState29, 2),
|
|
103
|
+
popupData = _useState30[0],
|
|
104
|
+
setPopup = _useState30[1]; //弹窗
|
|
105
|
+
var _useState31 = useState({
|
|
106
106
|
visible: false,
|
|
107
107
|
node: null,
|
|
108
108
|
content: null
|
|
109
109
|
}),
|
|
110
|
-
_useState30 = _slicedToArray(_useState29, 2),
|
|
111
|
-
popupData2 = _useState30[0],
|
|
112
|
-
setPopup2 = _useState30[1]; //弹窗
|
|
113
|
-
var _useState31 = useState(true),
|
|
114
110
|
_useState32 = _slicedToArray(_useState31, 2),
|
|
115
|
-
|
|
116
|
-
|
|
111
|
+
popupData2 = _useState32[0],
|
|
112
|
+
setPopup2 = _useState32[1]; //弹窗
|
|
117
113
|
var _useState33 = useState(true),
|
|
118
114
|
_useState34 = _slicedToArray(_useState33, 2),
|
|
119
|
-
|
|
120
|
-
|
|
115
|
+
popupClosable = _useState34[0],
|
|
116
|
+
setClosable = _useState34[1]; //是否可关闭 如果弹框里面再弹框 则不可关闭
|
|
117
|
+
var _useState35 = useState(true),
|
|
118
|
+
_useState36 = _slicedToArray(_useState35, 2),
|
|
119
|
+
popupClosable2 = _useState36[0],
|
|
120
|
+
setClosable2 = _useState36[1]; //是否可关闭 如果弹框里面再弹框 则不可关闭
|
|
121
121
|
// 外层ref
|
|
122
122
|
var popupContainer = useRef();
|
|
123
123
|
// const [fetchDatasetFn, setFetchDatasetFn] = useState<(id: string) => Promise<any>>(
|
|
@@ -142,14 +142,21 @@ var useStore = function useStore() {
|
|
|
142
142
|
var summarizeItems = item.list.filter(function (v) {
|
|
143
143
|
return v.type === TypeEnum.summarize;
|
|
144
144
|
});
|
|
145
|
+
var index = findIndex(item.list, summarizeItems[summarizeItems.length - 1]);
|
|
145
146
|
// 如果没有汇总项,默认显示主列
|
|
146
147
|
if (summarizeItems.length === 0) {
|
|
147
|
-
return
|
|
148
|
+
return {
|
|
149
|
+
showColumn: true,
|
|
150
|
+
index: -1
|
|
151
|
+
};
|
|
148
152
|
}
|
|
149
153
|
// 如果只有一个汇总项,并且 group 和 by 都为空,则也显示主列
|
|
150
154
|
var onlyItem = summarizeItems[0];
|
|
151
155
|
var hasGroupOrBy = Array.isArray(onlyItem.group) && onlyItem.group.length > 0 || Array.isArray(onlyItem.by) && onlyItem.by.length > 0;
|
|
152
|
-
return
|
|
156
|
+
return {
|
|
157
|
+
showColumn: !hasGroupOrBy,
|
|
158
|
+
index: index
|
|
159
|
+
};
|
|
153
160
|
});
|
|
154
161
|
}, [metaList]);
|
|
155
162
|
// const showMainColumn = useMemo(() => {
|
|
@@ -170,23 +177,23 @@ var useStore = function useStore() {
|
|
|
170
177
|
var fetchDataset = /*#__PURE__*/function () {
|
|
171
178
|
var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(datasourceId) {
|
|
172
179
|
var tables, _tables;
|
|
173
|
-
return _regeneratorRuntime.wrap(function (_context) {
|
|
180
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
174
181
|
while (1) switch (_context.prev = _context.next) {
|
|
175
182
|
case 0:
|
|
176
183
|
tables = getDataset(datasourceId);
|
|
177
184
|
if (!tables.length) {
|
|
178
|
-
_context.next =
|
|
185
|
+
_context.next = 3;
|
|
179
186
|
break;
|
|
180
187
|
}
|
|
181
188
|
return _context.abrupt("return", tables);
|
|
182
|
-
case
|
|
183
|
-
_context.next =
|
|
189
|
+
case 3:
|
|
190
|
+
_context.next = 5;
|
|
184
191
|
return fetchDatasetFn.current(datasourceId);
|
|
185
|
-
case
|
|
192
|
+
case 5:
|
|
186
193
|
_tables = _context.sent;
|
|
187
194
|
setDataset(datasourceId, _tables);
|
|
188
195
|
return _context.abrupt("return", _tables);
|
|
189
|
-
case
|
|
196
|
+
case 8:
|
|
190
197
|
case "end":
|
|
191
198
|
return _context.stop();
|
|
192
199
|
}
|
|
@@ -200,38 +207,60 @@ var useStore = function useStore() {
|
|
|
200
207
|
// fetchDataset():
|
|
201
208
|
// 查询表字段
|
|
202
209
|
var fetchColumns = /*#__PURE__*/function () {
|
|
203
|
-
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(table, datasourceId
|
|
210
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(table, datasourceId) {
|
|
204
211
|
var _columns2;
|
|
205
|
-
var
|
|
206
|
-
|
|
212
|
+
var oldColumns,
|
|
213
|
+
callback,
|
|
214
|
+
selectId,
|
|
215
|
+
_table$alias,
|
|
216
|
+
alias,
|
|
217
|
+
datasourceName,
|
|
218
|
+
did,
|
|
219
|
+
column,
|
|
220
|
+
extra,
|
|
221
|
+
tableName,
|
|
222
|
+
columns,
|
|
223
|
+
_columns,
|
|
224
|
+
_args2 = arguments;
|
|
225
|
+
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
207
226
|
while (1) switch (_context2.prev = _context2.next) {
|
|
208
227
|
case 0:
|
|
228
|
+
oldColumns = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : [];
|
|
229
|
+
callback = _args2.length > 3 ? _args2[3] : undefined;
|
|
230
|
+
// 获取之前选中的数据
|
|
231
|
+
selectId = oldColumns.filter(function (v) {
|
|
232
|
+
return v.select;
|
|
233
|
+
}).map(function (v) {
|
|
234
|
+
return v.id;
|
|
235
|
+
});
|
|
209
236
|
_table$alias = table.alias, alias = _table$alias === void 0 ? '' : _table$alias, datasourceName = table.datasourceName, did = table.datasourceId, column = table.column, extra = _objectWithoutProperties(table, _excluded);
|
|
210
237
|
tableName = table.name;
|
|
211
238
|
columns = getColumns(tableName);
|
|
212
239
|
if (columns.length) {
|
|
213
|
-
_context2.next =
|
|
240
|
+
_context2.next = 11;
|
|
214
241
|
break;
|
|
215
242
|
}
|
|
216
|
-
_context2.next =
|
|
243
|
+
_context2.next = 9;
|
|
217
244
|
return fetchColumnsFn.current(extra, datasourceId);
|
|
218
|
-
case
|
|
245
|
+
case 9:
|
|
219
246
|
columns = _context2.sent;
|
|
220
247
|
setColumns(tableName, columns);
|
|
221
|
-
case
|
|
248
|
+
case 11:
|
|
222
249
|
_columns = (_columns2 = columns) === null || _columns2 === void 0 ? void 0 : _columns2.map(function (v) {
|
|
250
|
+
var select = selectId.includes(v.id);
|
|
223
251
|
return _objectSpread(_objectSpread({}, v), {}, {
|
|
224
|
-
|
|
252
|
+
select: select,
|
|
253
|
+
fieldUuid: v.fieldUuid || uuidv4('field')
|
|
225
254
|
});
|
|
226
255
|
});
|
|
227
256
|
typeof callback === 'function' && callback(_columns);
|
|
228
|
-
case
|
|
257
|
+
case 13:
|
|
229
258
|
case "end":
|
|
230
259
|
return _context2.stop();
|
|
231
260
|
}
|
|
232
261
|
}, _callee2);
|
|
233
262
|
}));
|
|
234
|
-
return function fetchColumns(_x2, _x3
|
|
263
|
+
return function fetchColumns(_x2, _x3) {
|
|
235
264
|
return _ref2.apply(this, arguments);
|
|
236
265
|
};
|
|
237
266
|
}();
|
|
@@ -287,8 +316,8 @@ var useStore = function useStore() {
|
|
|
287
316
|
// newMeta[i] = setFilterQuotes(newMeta[i]);
|
|
288
317
|
// }
|
|
289
318
|
// 设置右侧column
|
|
290
|
-
if ((_v$table = v.table2) !== null && _v$table !== void 0 && _v$table.datasourceId
|
|
291
|
-
fetchColumns(newMeta[i].table2, newMeta[i].table2.datasourceId, function () {
|
|
319
|
+
if ((_v$table = v.table2) !== null && _v$table !== void 0 && _v$table.datasourceId) {
|
|
320
|
+
fetchColumns(newMeta[i].table2, newMeta[i].table2.datasourceId, v.columns, function () {
|
|
292
321
|
var columns = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
293
322
|
if (v.isSubquery) {
|
|
294
323
|
var newColumns = [];
|
|
@@ -305,8 +334,8 @@ var useStore = function useStore() {
|
|
|
305
334
|
return _objectSpread({}, v);
|
|
306
335
|
}
|
|
307
336
|
// 设置column
|
|
308
|
-
if ((_v$table2 = v.table) !== null && _v$table2 !== void 0 && _v$table2.datasourceId
|
|
309
|
-
fetchColumns(newMeta[i].table, newMeta[i].table.datasourceId, function () {
|
|
337
|
+
if ((_v$table2 = v.table) !== null && _v$table2 !== void 0 && _v$table2.datasourceId) {
|
|
338
|
+
fetchColumns(newMeta[i].table, newMeta[i].table.datasourceId, v.columns, function () {
|
|
310
339
|
var columns = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
311
340
|
if (v.isSubquery) {
|
|
312
341
|
var newColumns = [];
|
package/lib/es/locale/en.js
CHANGED
|
@@ -49,8 +49,9 @@ export default register('en', {
|
|
|
49
49
|
'SqlQueryBuilder.visualize': 'visualize',
|
|
50
50
|
'SqlQueryBuilder.selectColumnAll': 'select all',
|
|
51
51
|
'SqlQueryBuilder.alias': 'alias',
|
|
52
|
-
'SqlQueryBuilder.
|
|
52
|
+
'SqlQueryBuilder.aliasForRules': 'Please modify the alias according to the rules, and ensure its length does not exceed 30 characters',
|
|
53
53
|
'customColumn.operator': 'operator',
|
|
54
|
+
'customColumn.collection': 'collection',
|
|
54
55
|
'customColumn.field': 'field',
|
|
55
56
|
'customColumn.constant': 'constant',
|
|
56
57
|
'customColumn.str': 'string',
|
package/lib/es/locale/zh.js
CHANGED
|
@@ -45,8 +45,9 @@ export default register('zh', {
|
|
|
45
45
|
'SqlQueryBuilder.visualize': '可视化',
|
|
46
46
|
'SqlQueryBuilder.selectColumnAll': '全选',
|
|
47
47
|
'SqlQueryBuilder.alias': '别名',
|
|
48
|
-
'SqlQueryBuilder.
|
|
48
|
+
'SqlQueryBuilder.aliasForRules': '请按规则修改别名,且长度不能超过30',
|
|
49
49
|
'customColumn.operator': '操作符',
|
|
50
|
+
'customColumn.collection': '自定义组合',
|
|
50
51
|
'customColumn.field': '字段',
|
|
51
52
|
'customColumn.constant': '常量',
|
|
52
53
|
'customColumn.str': '字符串',
|
package/lib/es/utils.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ interface HelperResultType {
|
|
|
14
14
|
}
|
|
15
15
|
export declare const getHelper: (list: MetaListType[], item: MetaListType) => HelperResultType;
|
|
16
16
|
export declare const getSubColumns: (metaList: any) => DataType[];
|
|
17
|
+
export declare function isValidSQLAlias(str: string): boolean;
|
|
17
18
|
export declare const changeTableAlias: (list: MetaListType[] | [], curObj: Pick<MetaData_TableType, "tableUuid" | "alias">) => MetaListType[];
|
|
18
19
|
export declare const changeFieldAlias: (list: MetaListType[], curObj: Pick<MetaData_ColumnsType, "fieldUuid" | "fieldAlias">) => MetaListType[];
|
|
19
20
|
export declare function splitByUnion(data: any): any[];
|
package/lib/es/utils.js
CHANGED
|
@@ -241,11 +241,22 @@ var _changeAlias = function changeAlias(items, val, type) {
|
|
|
241
241
|
});
|
|
242
242
|
}
|
|
243
243
|
return v;
|
|
244
|
+
} else if (v.type === AtomsTypeEnum.FORMULA) {
|
|
245
|
+
v.args = _changeAlias(v.args, val, type);
|
|
246
|
+
return v;
|
|
247
|
+
} else if (v.type === AtomsTypeEnum.COLLECTION) {
|
|
248
|
+
v.list = _changeAlias(v.list, val, type);
|
|
249
|
+
return v;
|
|
244
250
|
} else {
|
|
245
251
|
return v;
|
|
246
252
|
}
|
|
247
253
|
});
|
|
248
254
|
};
|
|
255
|
+
export function isValidSQLAlias(str) {
|
|
256
|
+
if (!str) return false;
|
|
257
|
+
var regex = /^[A-Za-z_][A-Za-z0-9_]{0,29}$/;
|
|
258
|
+
return regex.test(str);
|
|
259
|
+
}
|
|
249
260
|
export var changeTableAlias = function changeTableAlias(list, curObj) {
|
|
250
261
|
var _cloneDeep = cloneDeep(curObj),
|
|
251
262
|
tableUuid = _cloneDeep.tableUuid,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gingkoo/pandora-metabase",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.25",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "lib/es/index.js",
|
|
6
6
|
"module": "lib/es/index.js",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"react-dom": "^17.0.0 || ^18.0.0"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@gingkoo/pandora": "1.2.
|
|
30
|
+
"@gingkoo/pandora": "1.2.3",
|
|
31
31
|
"@gingkoo/pandora-hooks": "1.0.5",
|
|
32
32
|
"@gingkoo/pandora-icons": "0.0.1-alpha.28",
|
|
33
33
|
"dayjs": "^1.11.11",
|