@gingkoo/pandora-metabase 1.0.82 → 1.0.84
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 +1 -0
- package/lib/cjs/components/dialog/formula-list/index.js +137 -74
- package/lib/cjs/components/dialog/formula-list/index.less +13 -0
- package/lib/cjs/components/metabase/index.js +26 -4
- package/lib/cjs/components/metabase/index.less +32 -1
- package/lib/cjs/components/modules/components/header.d.ts +2 -0
- package/lib/cjs/components/modules/components/header.js +11 -6
- package/lib/cjs/components/modules/components/item-wrapper.d.ts +9 -0
- package/lib/cjs/components/modules/components/item-wrapper.js +45 -0
- package/lib/cjs/components/modules/components/meta-icon.d.ts +11 -0
- package/lib/cjs/components/modules/components/meta-icon.js +60 -12
- package/lib/cjs/components/modules/custom-column.js +34 -28
- package/lib/cjs/components/modules/filter.js +18 -12
- package/lib/cjs/components/modules/join-data.js +417 -411
- package/lib/cjs/components/modules/permission-table.js +17 -11
- package/lib/cjs/components/modules/row-limit.js +18 -12
- package/lib/cjs/components/modules/sort.js +33 -27
- package/lib/cjs/components/modules/summarize/index.js +26 -20
- package/lib/cjs/components/modules/table-data.js +137 -131
- package/lib/cjs/components/modules/union.js +14 -8
- package/lib/cjs/components/popup.d.ts +1 -0
- package/lib/cjs/components/popup.js +37 -4
- package/lib/cjs/hooks/use-state.js +44 -4
- package/lib/cjs/index.js +5 -2
- package/lib/cjs/locale/en.js +5 -3
- package/lib/cjs/locale/zh.js +5 -3
- package/lib/cjs/types.d.ts +1 -0
- package/lib/cjs/utils/storage.d.ts +1 -0
- package/lib/cjs/utils/storage.js +2 -1
- package/lib/cjs/utils.d.ts +6 -0
- package/lib/cjs/utils.js +23 -3
- package/lib/es/components/dialog/expression/index.js +1 -0
- package/lib/es/components/dialog/formula-list/index.js +137 -76
- package/lib/es/components/dialog/formula-list/index.less +13 -0
- package/lib/es/components/metabase/index.js +26 -4
- package/lib/es/components/metabase/index.less +32 -1
- package/lib/es/components/modules/components/header.d.ts +2 -0
- package/lib/es/components/modules/components/header.js +12 -7
- package/lib/es/components/modules/components/item-wrapper.d.ts +9 -0
- package/lib/es/components/modules/components/item-wrapper.js +38 -0
- package/lib/es/components/modules/components/meta-icon.d.ts +11 -0
- package/lib/es/components/modules/components/meta-icon.js +60 -14
- package/lib/es/components/modules/custom-column.js +34 -28
- package/lib/es/components/modules/filter.js +18 -12
- package/lib/es/components/modules/join-data.js +417 -411
- package/lib/es/components/modules/permission-table.js +17 -11
- package/lib/es/components/modules/row-limit.js +18 -12
- package/lib/es/components/modules/sort.js +33 -27
- package/lib/es/components/modules/summarize/index.js +26 -20
- package/lib/es/components/modules/table-data.js +137 -131
- package/lib/es/components/modules/union.js +14 -8
- package/lib/es/components/popup.d.ts +1 -0
- package/lib/es/components/popup.js +37 -4
- package/lib/es/hooks/use-state.js +44 -4
- package/lib/es/index.js +5 -2
- package/lib/es/locale/en.js +5 -3
- package/lib/es/locale/zh.js +5 -3
- package/lib/es/types.d.ts +1 -0
- package/lib/es/utils/storage.d.ts +1 -0
- package/lib/es/utils/storage.js +2 -1
- package/lib/es/utils.d.ts +6 -0
- package/lib/es/utils.js +21 -1
- package/package.json +1 -1
|
@@ -549,6 +549,7 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
549
549
|
var options = firstVal ? firstVal.split(',') : [];
|
|
550
550
|
return (0, _jsxRuntime.jsx)("div", {
|
|
551
551
|
children: (0, _jsxRuntime.jsx)(_pandora.Select, {
|
|
552
|
+
maxWidth: '500px',
|
|
552
553
|
size: 'large',
|
|
553
554
|
placeholder: "\u53EF\u8F93\u5165\u56DE\u8F66\u65B0\u589E\u4E0B\u62C9\u9009\u9879",
|
|
554
555
|
allowCreate: true,
|
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
8
|
exports["default"] = void 0;
|
|
8
9
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
|
|
9
10
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectWithoutProperties"));
|
|
11
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
12
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/asyncToGenerator"));
|
|
10
13
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
|
|
11
14
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
12
15
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
|
-
var _react = require("react");
|
|
16
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
14
17
|
require("./index.less");
|
|
15
18
|
var _pandoraIcons = require("@gingkoo/pandora-icons");
|
|
16
19
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
@@ -34,6 +37,7 @@ var _diffViewer = _interopRequireDefault(require("../diff-viewer"));
|
|
|
34
37
|
var _storage = _interopRequireDefault(require("../../../utils/storage"));
|
|
35
38
|
var _excluded = ["notExistsToolbar", "toolbar"],
|
|
36
39
|
_excluded2 = ["subToolbar", "notExistsColumns", "showFields", "isExit", "toolbar"]; // import './index.less';
|
|
40
|
+
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); }
|
|
37
41
|
var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
38
42
|
var _storage$_metabaseCop, _caseList2;
|
|
39
43
|
// 响应 storage._metabaseCopyItems 变化,保证粘贴按钮能实时显示
|
|
@@ -315,12 +319,17 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
315
319
|
}
|
|
316
320
|
// 粘贴到末尾并清除勾选
|
|
317
321
|
function handlePaste() {
|
|
322
|
+
var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : -1;
|
|
318
323
|
var _caseList = caseList.slice();
|
|
319
324
|
// determine items to paste (selected items have priority)
|
|
320
325
|
var itemsToPaste = _storage["default"]._metabaseCopyItems || [];
|
|
321
326
|
itemsToPaste = (0, _utils.changeCopyField)(itemsToPaste, data);
|
|
322
327
|
if (itemsToPaste.length) {
|
|
323
|
-
|
|
328
|
+
if (index === -1) {
|
|
329
|
+
_caseList.push.apply(_caseList, (0, _toConsumableArray2["default"])(itemsToPaste));
|
|
330
|
+
} else {
|
|
331
|
+
_caseList.splice.apply(_caseList, [index, 0].concat((0, _toConsumableArray2["default"])(itemsToPaste)));
|
|
332
|
+
}
|
|
324
333
|
setCaseList(_caseList);
|
|
325
334
|
}
|
|
326
335
|
initPaste();
|
|
@@ -363,6 +372,38 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
363
372
|
setSelectedIndices(allIndices);
|
|
364
373
|
setLocalItem(allIndices);
|
|
365
374
|
};
|
|
375
|
+
var delSelect = function delSelect() {
|
|
376
|
+
_pandora.Modal.confirm({
|
|
377
|
+
title: (0, _locale.__)('metabase.prompt'),
|
|
378
|
+
// 提示
|
|
379
|
+
content: (0, _locale.__)('customColumn.confirmDelete'),
|
|
380
|
+
// 确认删除吗
|
|
381
|
+
onOk: function () {
|
|
382
|
+
var _onOk = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
383
|
+
var _caseList;
|
|
384
|
+
return _regenerator["default"].wrap(function (_context) {
|
|
385
|
+
while (1) switch (_context.prev = _context.next) {
|
|
386
|
+
case 0:
|
|
387
|
+
_caseList = caseList.slice(); // 删除选中项,selectedIndices 已经是排序好的了
|
|
388
|
+
selectedIndices.forEach(function (i) {
|
|
389
|
+
_caseList.splice(i, 1);
|
|
390
|
+
});
|
|
391
|
+
setCaseList(_caseList);
|
|
392
|
+
initPaste();
|
|
393
|
+
case 1:
|
|
394
|
+
case "end":
|
|
395
|
+
return _context.stop();
|
|
396
|
+
}
|
|
397
|
+
}, _callee);
|
|
398
|
+
}));
|
|
399
|
+
function onOk() {
|
|
400
|
+
return _onOk.apply(this, arguments);
|
|
401
|
+
}
|
|
402
|
+
return onOk;
|
|
403
|
+
}(),
|
|
404
|
+
onCancel: function onCancel() {}
|
|
405
|
+
});
|
|
406
|
+
};
|
|
366
407
|
// 开启关闭勾选,清除别的过滤器勾选
|
|
367
408
|
var _setIsCheck = function _setIsCheck(val) {
|
|
368
409
|
initPaste();
|
|
@@ -812,6 +853,21 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
812
853
|
});
|
|
813
854
|
}
|
|
814
855
|
};
|
|
856
|
+
var copyDom = function copyDom() {
|
|
857
|
+
var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : -1;
|
|
858
|
+
if (!isCopy || selectedIndices.length === 0 && checkedItemsCount === 0) return null;
|
|
859
|
+
return (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
|
|
860
|
+
title: "\u5728\u6B64\u5904\u7C98\u8D34(".concat(selectedIndices.length || checkedItemsCount, ")\u9879"),
|
|
861
|
+
children: (0, _jsxRuntime.jsx)(_pandora.Button, {
|
|
862
|
+
className: (0, _classnames["default"])(':Sqb-Filter-item-copy'),
|
|
863
|
+
onClick: function onClick() {
|
|
864
|
+
return handlePaste(index);
|
|
865
|
+
},
|
|
866
|
+
iconOnly: true,
|
|
867
|
+
icon: (0, _jsxRuntime.jsx)(_pandoraIcons.FfPlus, {})
|
|
868
|
+
})
|
|
869
|
+
});
|
|
870
|
+
};
|
|
815
871
|
return (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
816
872
|
children: (0, _jsxRuntime.jsxs)("div", {
|
|
817
873
|
className: "Sqb-NotebookCell",
|
|
@@ -837,70 +893,88 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
837
893
|
},
|
|
838
894
|
primary: true,
|
|
839
895
|
children: (0, _locale.__)('customColumn.copyAll')
|
|
840
|
-
})
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
'item-selected': isCheck
|
|
847
|
-
}),
|
|
848
|
-
onMouseEnter: function onMouseEnter(e) {
|
|
849
|
-
if (isCheck) return;
|
|
850
|
-
setInd(i);
|
|
896
|
+
}), selectedIndices.length > 0 && (0, _jsxRuntime.jsx)(_pandora.Button, {
|
|
897
|
+
primary: true,
|
|
898
|
+
danger: true,
|
|
899
|
+
size: 'small',
|
|
900
|
+
onClick: function onClick() {
|
|
901
|
+
return delSelect();
|
|
851
902
|
},
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
903
|
+
children: (0, _locale.__)('customColumn.delSelect')
|
|
904
|
+
}), !isCheck && checkedItemsCount > 0 && (0, _jsxRuntime.jsx)(_pandora.Button, {
|
|
905
|
+
primary: true,
|
|
906
|
+
warning: true,
|
|
907
|
+
size: 'small',
|
|
908
|
+
onClick: function onClick() {
|
|
909
|
+
return initPaste();
|
|
855
910
|
},
|
|
856
|
-
children:
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
},
|
|
870
|
-
ind: i,
|
|
871
|
-
position: 'before',
|
|
872
|
-
trigger: 'hover'
|
|
873
|
-
}), v.type !== _types.AtomsTypeEnum.UNKNOWN && (0, _jsxRuntime.jsx)(_pandora.Checkbox, {
|
|
874
|
-
className: 'item-check',
|
|
875
|
-
checked: selectedIndices.includes(i),
|
|
876
|
-
disabled: globalSelectionActive && globalSelectionOwner !== myInstanceIdRef.current,
|
|
877
|
-
onChange: function onChange(e) {
|
|
878
|
-
var _e$target$checked, _e$target;
|
|
879
|
-
return toggleSelect(i, (_e$target$checked = e === null || e === void 0 || (_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.checked) !== null && _e$target$checked !== void 0 ? _e$target$checked : !selectedIndices.includes(i));
|
|
880
|
-
}
|
|
881
|
-
}), (0, _jsxRuntime.jsx)("div", {
|
|
882
|
-
style: {
|
|
883
|
-
pointerEvents: isCheck ? 'none' : 'auto'
|
|
911
|
+
children: "\u6E05\u9664\u590D\u5236"
|
|
912
|
+
})]
|
|
913
|
+
}), (_caseList2 = caseList) === null || _caseList2 === void 0 ? void 0 : _caseList2.map(function (v, i) {
|
|
914
|
+
return (0, _jsxRuntime.jsxs)(_react["default"].Fragment, {
|
|
915
|
+
children: [copyDom(i), (0, _jsxRuntime.jsxs)("div", {
|
|
916
|
+
className: (0, _classnames["default"])('Sqb-Filter-item', {
|
|
917
|
+
hover: ind === i,
|
|
918
|
+
'item-fixed': v.fixed || false,
|
|
919
|
+
'item-selected': isCheck
|
|
920
|
+
}),
|
|
921
|
+
onMouseEnter: function onMouseEnter(e) {
|
|
922
|
+
if (isCheck) return;
|
|
923
|
+
setInd(i);
|
|
884
924
|
},
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
return (0, _jsxRuntime.jsx)("div", {
|
|
889
|
-
className: 'right-arrow',
|
|
890
|
-
"v-index": i,
|
|
891
|
-
"v-type": 'after',
|
|
892
|
-
onClick: function onClick() {
|
|
893
|
-
addOperator(_types.AtomsTypeEnum.UNKNOWN, i, 'after');
|
|
894
|
-
},
|
|
895
|
-
children: (0, _jsxRuntime.jsx)("img", {
|
|
896
|
-
src: _arrow["default"]
|
|
897
|
-
})
|
|
898
|
-
});
|
|
925
|
+
onMouseLeave: function onMouseLeave() {
|
|
926
|
+
if (isCheck) return;
|
|
927
|
+
setInd(-1);
|
|
899
928
|
},
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
929
|
+
children: [selectOperator({
|
|
930
|
+
triggerElement: function triggerElement() {
|
|
931
|
+
return (0, _jsxRuntime.jsx)("div", {
|
|
932
|
+
className: 'left-arrow',
|
|
933
|
+
"v-index": i,
|
|
934
|
+
"v-type": 'before',
|
|
935
|
+
onClick: function onClick() {
|
|
936
|
+
if (!selectedIndices.length) addOperator(_types.AtomsTypeEnum.UNKNOWN, i, 'before');
|
|
937
|
+
},
|
|
938
|
+
children: (0, _jsxRuntime.jsx)("img", {
|
|
939
|
+
src: _arrow["default"]
|
|
940
|
+
})
|
|
941
|
+
});
|
|
942
|
+
},
|
|
943
|
+
ind: i,
|
|
944
|
+
position: 'before',
|
|
945
|
+
trigger: 'hover'
|
|
946
|
+
}), v.type !== _types.AtomsTypeEnum.UNKNOWN && (0, _jsxRuntime.jsx)(_pandora.Checkbox, {
|
|
947
|
+
className: 'item-check',
|
|
948
|
+
checked: selectedIndices.includes(i),
|
|
949
|
+
disabled: globalSelectionActive && globalSelectionOwner !== myInstanceIdRef.current,
|
|
950
|
+
onChange: function onChange(e) {
|
|
951
|
+
var _e$target$checked, _e$target;
|
|
952
|
+
return toggleSelect(i, (_e$target$checked = e === null || e === void 0 || (_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.checked) !== null && _e$target$checked !== void 0 ? _e$target$checked : !selectedIndices.includes(i));
|
|
953
|
+
}
|
|
954
|
+
}), (0, _jsxRuntime.jsx)("div", {
|
|
955
|
+
style: {
|
|
956
|
+
pointerEvents: isCheck || store.isMetabaseCopy ? 'none' : 'auto'
|
|
957
|
+
},
|
|
958
|
+
children: itemDom(v, i)
|
|
959
|
+
}), selectOperator({
|
|
960
|
+
triggerElement: function triggerElement(value) {
|
|
961
|
+
return (0, _jsxRuntime.jsx)("div", {
|
|
962
|
+
className: 'right-arrow',
|
|
963
|
+
"v-index": i,
|
|
964
|
+
"v-type": 'after',
|
|
965
|
+
onClick: function onClick() {
|
|
966
|
+
addOperator(_types.AtomsTypeEnum.UNKNOWN, i, 'after');
|
|
967
|
+
},
|
|
968
|
+
children: (0, _jsxRuntime.jsx)("img", {
|
|
969
|
+
src: _arrow["default"]
|
|
970
|
+
})
|
|
971
|
+
});
|
|
972
|
+
},
|
|
973
|
+
ind: i,
|
|
974
|
+
position: 'after',
|
|
975
|
+
trigger: 'hover'
|
|
976
|
+
})]
|
|
977
|
+
}, i)]
|
|
904
978
|
}, i);
|
|
905
979
|
}), Array.from(caseList).length < 1 && selectOperator({
|
|
906
980
|
triggerElement: function triggerElement() {
|
|
@@ -912,18 +986,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
912
986
|
ind: -1,
|
|
913
987
|
position: 'add',
|
|
914
988
|
trigger: 'click'
|
|
915
|
-
}),
|
|
916
|
-
triggerElement: function triggerElement(value) {
|
|
917
|
-
return (0, _jsxRuntime.jsxs)("div", {
|
|
918
|
-
className: (0, _classnames["default"])("Sqb-TableName green-name"),
|
|
919
|
-
onClick: handlePaste,
|
|
920
|
-
children: ["\u7C98\u8D34(", selectedIndices.length || checkedItemsCount, ")\u9879"]
|
|
921
|
-
});
|
|
922
|
-
},
|
|
923
|
-
ind: -1,
|
|
924
|
-
position: 'add',
|
|
925
|
-
trigger: 'click'
|
|
926
|
-
}), showPreview && (0, _jsxRuntime.jsx)("div", {
|
|
989
|
+
}), copyDom(), showPreview && (0, _jsxRuntime.jsx)("div", {
|
|
927
990
|
className: (0, _classnames["default"])("mb-2 font-bold uppercase tracking-wider preview-box"),
|
|
928
991
|
style: {
|
|
929
992
|
fontSize: 12,
|
|
@@ -22,6 +22,19 @@
|
|
|
22
22
|
}
|
|
23
23
|
.Sqb-Filter-item {
|
|
24
24
|
position: relative;
|
|
25
|
+
// &-copy {
|
|
26
|
+
// position: absolute;
|
|
27
|
+
// left: 0;
|
|
28
|
+
// top: 50%;
|
|
29
|
+
// z-index: 1;
|
|
30
|
+
// transform: translate(-100%, -50%);
|
|
31
|
+
// &.isEndCopy {
|
|
32
|
+
// position: relative;
|
|
33
|
+
// left: auto;
|
|
34
|
+
// top: auto;
|
|
35
|
+
// transform: none;
|
|
36
|
+
// }
|
|
37
|
+
// }
|
|
25
38
|
&.item-selected {
|
|
26
39
|
.item-check {
|
|
27
40
|
display: block;
|
|
@@ -32,7 +32,8 @@ var Metabase = function Metabase(props) {
|
|
|
32
32
|
_props$readonly = props.readonly,
|
|
33
33
|
readonly = _props$readonly === void 0 ? false : _props$readonly,
|
|
34
34
|
onOk = props.onOk,
|
|
35
|
-
metabaseCopy = props.metabaseCopy
|
|
35
|
+
metabaseCopy = props.metabaseCopy,
|
|
36
|
+
moduleCopy = props.moduleCopy;
|
|
36
37
|
var store = (0, _useProvider.useStore)();
|
|
37
38
|
var _useState = (0, _react.useState)(false),
|
|
38
39
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
@@ -137,8 +138,29 @@ var Metabase = function Metabase(props) {
|
|
|
137
138
|
}();
|
|
138
139
|
// 复制功能
|
|
139
140
|
var copy = function copy() {
|
|
140
|
-
return (0, _jsxRuntime.
|
|
141
|
-
children:
|
|
141
|
+
return (0, _jsxRuntime.jsxs)(_pandora.Space, {
|
|
142
|
+
children: [moduleCopy && (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
143
|
+
children: (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
|
|
144
|
+
title: '开启勾选后可勾选组进行复制,复制后可在其他地方粘贴使用',
|
|
145
|
+
children: (0, _jsxRuntime.jsx)(_pandora.Button, {
|
|
146
|
+
size: 'small',
|
|
147
|
+
type: 'primary',
|
|
148
|
+
warning: store.isMetabaseCopy,
|
|
149
|
+
className: (0, _classnames["default"])("Sqb-copy-btn ", {
|
|
150
|
+
'primary-color': !store.isMetabaseCopy
|
|
151
|
+
}),
|
|
152
|
+
onClick: function onClick() {
|
|
153
|
+
// if (store.isMetabaseCopy) {
|
|
154
|
+
// storage._metabaseCopyModule = null;
|
|
155
|
+
// }
|
|
156
|
+
store.setIsMetabaseCopy(!store.isMetabaseCopy);
|
|
157
|
+
store.setMetabaseCopyModule([]);
|
|
158
|
+
_storage["default"]._metabaseCopyModule = [];
|
|
159
|
+
},
|
|
160
|
+
children: store.isMetabaseCopy ? '清除勾选组复制' : '开启勾选组复制'
|
|
161
|
+
})
|
|
162
|
+
})
|
|
163
|
+
}), metabaseCopy && (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
142
164
|
children: [(0, _jsxRuntime.jsx)(_pandora.Tooltip, {
|
|
143
165
|
title: '点击复制当前配置,您可以在其他地方粘贴使用',
|
|
144
166
|
children: (0, _jsxRuntime.jsx)(_pandora.Button, {
|
|
@@ -175,7 +197,7 @@ var Metabase = function Metabase(props) {
|
|
|
175
197
|
children: (0, _locale.__)('metabase.paste')
|
|
176
198
|
})
|
|
177
199
|
})]
|
|
178
|
-
})
|
|
200
|
+
})]
|
|
179
201
|
});
|
|
180
202
|
};
|
|
181
203
|
return (
|
|
@@ -23,6 +23,24 @@
|
|
|
23
23
|
}
|
|
24
24
|
&-list {
|
|
25
25
|
padding-top: 1.5rem;
|
|
26
|
+
.Sqb-item-check {
|
|
27
|
+
display: flex;
|
|
28
|
+
align-items: center;
|
|
29
|
+
width: 66.6667%;
|
|
30
|
+
.pd-Checkbox-text {
|
|
31
|
+
width: 100%;
|
|
32
|
+
|
|
33
|
+
.Sqb-item--content {
|
|
34
|
+
width: 100%;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
pointer-events: none; /* 该 div 及内部所有元素不接收鼠标事件 */
|
|
38
|
+
|
|
39
|
+
.Sqb-item {
|
|
40
|
+
pointer-events: none; /* 该 div 及内部所有元素不接收鼠标事件 */
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
26
44
|
}
|
|
27
45
|
&-hover-parent {
|
|
28
46
|
margin-bottom: 16px;
|
|
@@ -52,10 +70,18 @@
|
|
|
52
70
|
width: 16px;
|
|
53
71
|
height: 16px;
|
|
54
72
|
color: #b8bbc3;
|
|
55
|
-
margin-left: auto;
|
|
73
|
+
// margin-left: auto;
|
|
56
74
|
visibility: hidden;
|
|
57
75
|
cursor: pointer;
|
|
58
76
|
}
|
|
77
|
+
&-actions {
|
|
78
|
+
margin-left: auto;
|
|
79
|
+
// align-items: center;
|
|
80
|
+
.pd-Space-item {
|
|
81
|
+
display: flex;
|
|
82
|
+
align-items: center;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
59
85
|
&--content {
|
|
60
86
|
width: 66.6667%;
|
|
61
87
|
box-sizing: border-box;
|
|
@@ -419,6 +445,11 @@
|
|
|
419
445
|
visibility: visible;
|
|
420
446
|
}
|
|
421
447
|
}
|
|
448
|
+
&-copy {
|
|
449
|
+
width: 33%;
|
|
450
|
+
min-width: 150px;
|
|
451
|
+
margin: 5px 0;
|
|
452
|
+
}
|
|
422
453
|
}
|
|
423
454
|
|
|
424
455
|
& > &-btn {
|
|
@@ -9,6 +9,7 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
|
|
|
9
9
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/asyncToGenerator"));
|
|
10
10
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
11
|
var _pandora = require("@gingkoo/pandora");
|
|
12
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
12
13
|
var _icons = require("../../icons");
|
|
13
14
|
var _locale = require("../../../locale");
|
|
14
15
|
var _useProvider = require("../../../hooks/use-provider");
|
|
@@ -16,6 +17,7 @@ var _utils = require("../../../utils");
|
|
|
16
17
|
var _diffViewer = _interopRequireDefault(require("../../dialog/diff-viewer"));
|
|
17
18
|
var Header = function Header(props) {
|
|
18
19
|
var meta = props.meta,
|
|
20
|
+
groupIndex = props.groupIndex,
|
|
19
21
|
isDataModule = props.isDataModule;
|
|
20
22
|
var store = (0, _useProvider.useStore)();
|
|
21
23
|
var diff = /*#__PURE__*/function () {
|
|
@@ -64,12 +66,15 @@ var Header = function Header(props) {
|
|
|
64
66
|
onClick: diff,
|
|
65
67
|
children: "\u5DEE\u5F02\u5BF9\u6BD4"
|
|
66
68
|
})
|
|
67
|
-
}),
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
69
|
+
}), (0, _jsxRuntime.jsx)(_pandora.Space, {
|
|
70
|
+
className: (0, _classnames["default"])(':Sqb-item-actions'),
|
|
71
|
+
children: props.onClose && !store.isMetabaseCopy && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
|
|
72
|
+
placement: 'top',
|
|
73
|
+
title: (0, _locale.__)('data.del'),
|
|
74
|
+
children: (0, _jsxRuntime.jsx)(_icons.CloseIcon2, {
|
|
75
|
+
className: "Sqb-item-close",
|
|
76
|
+
onClick: props.onClose
|
|
77
|
+
})
|
|
73
78
|
})
|
|
74
79
|
})]
|
|
75
80
|
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface HeaderProps {
|
|
3
|
+
className?: string;
|
|
4
|
+
groupIndex: number;
|
|
5
|
+
meta?: any;
|
|
6
|
+
children?: React.ReactNode;
|
|
7
|
+
}
|
|
8
|
+
declare const ItemWrapper: (props: HeaderProps) => string | number | boolean | Iterable<React.ReactNode> | import("react/jsx-runtime").JSX.Element | null | undefined;
|
|
9
|
+
export default ItemWrapper;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = void 0;
|
|
8
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
|
|
9
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
10
|
+
var _pandora = require("@gingkoo/pandora");
|
|
11
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
12
|
+
var _useProvider = require("../../../hooks/use-provider");
|
|
13
|
+
var _utils = require("../../../utils");
|
|
14
|
+
var _storage = _interopRequireDefault(require("../../../utils/storage"));
|
|
15
|
+
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
16
|
+
var ItemWrapper = function ItemWrapper(props) {
|
|
17
|
+
var meta = props.meta,
|
|
18
|
+
groupIndex = props.groupIndex,
|
|
19
|
+
children = props.children;
|
|
20
|
+
var store = (0, _useProvider.useStore)();
|
|
21
|
+
var changeCopyModule = function changeCopyModule(isCheck, meta) {
|
|
22
|
+
var data = (0, _cloneDeep["default"])(store.metabaseCopyModule) || [];
|
|
23
|
+
if (isCheck) {
|
|
24
|
+
data = [].concat((0, _toConsumableArray2["default"])(data), [meta]);
|
|
25
|
+
} else {
|
|
26
|
+
data = data.filter(function (v) {
|
|
27
|
+
return v.metaKey !== meta.metaKey;
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
store.setMetabaseCopyModule(data);
|
|
31
|
+
_storage["default"]._metabaseCopyModule = data;
|
|
32
|
+
};
|
|
33
|
+
if (store.isMetabaseCopy && meta.type !== 'union' && meta.type !== 'data') {
|
|
34
|
+
return (0, _jsxRuntime.jsx)(_pandora.Checkbox, {
|
|
35
|
+
checked: (0, _utils.metaIsCheck)(store.metabaseCopyModule, meta),
|
|
36
|
+
onChange: function onChange(val) {
|
|
37
|
+
changeCopyModule(val, meta);
|
|
38
|
+
},
|
|
39
|
+
className: (0, _classnames["default"])(':Sqb-item-check'),
|
|
40
|
+
children: children
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
return children;
|
|
44
|
+
};
|
|
45
|
+
var _default = exports["default"] = ItemWrapper;
|
|
@@ -1,7 +1,18 @@
|
|
|
1
|
+
import { TypeEnum } from '../../../store/enum';
|
|
1
2
|
import { MetaListType } from '../../../store/types';
|
|
2
3
|
interface PropsType {
|
|
3
4
|
meta: MetaListType;
|
|
4
5
|
groupIndex: number;
|
|
5
6
|
}
|
|
7
|
+
type IconInfoType = {
|
|
8
|
+
name: string;
|
|
9
|
+
icon: JSX.Element;
|
|
10
|
+
className?: string;
|
|
11
|
+
};
|
|
12
|
+
export declare const IconTypeMap: Map<TypeEnum, IconInfoType>;
|
|
13
|
+
/**
|
|
14
|
+
* 查找模块下面能放哪些icon (参考来源:metabase.com)
|
|
15
|
+
*/
|
|
16
|
+
export declare const findNextIcon: (store: any, props: PropsType) => TypeEnum[];
|
|
6
17
|
declare const NextDom: (props: PropsType) => import("react/jsx-runtime").JSX.Element | null;
|
|
7
18
|
export default NextDom;
|
|
@@ -1,18 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
|
-
exports["default"] = void 0;
|
|
8
|
+
exports.findNextIcon = exports["default"] = exports.IconTypeMap = void 0;
|
|
9
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
8
11
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
13
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
10
14
|
var _locale = require("../../../locale");
|
|
11
15
|
var _enum = require("../../../store/enum");
|
|
12
16
|
var _pandora = require("@gingkoo/pandora");
|
|
17
|
+
var _pandoraIcons = require("@gingkoo/pandora-icons");
|
|
18
|
+
var _storage = _interopRequireDefault(require("../../../utils/storage"));
|
|
13
19
|
var _utils = require("../../../utils");
|
|
14
20
|
var _useProvider = require("../../../hooks/use-provider");
|
|
15
21
|
var _icons = require("../../icons");
|
|
22
|
+
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); }
|
|
16
23
|
// import { type SqlVisionStoreType } from '../../../store/helper';
|
|
17
24
|
|
|
18
25
|
var IconSIzeEnum;
|
|
@@ -20,7 +27,7 @@ var IconSIzeEnum;
|
|
|
20
27
|
IconSIzeEnum["SMALL"] = "small";
|
|
21
28
|
IconSIzeEnum["LARGE"] = "large";
|
|
22
29
|
})(IconSIzeEnum || (IconSIzeEnum = {}));
|
|
23
|
-
var IconTypeMap = new Map([[_enum.TypeEnum.filter, {
|
|
30
|
+
var IconTypeMap = exports.IconTypeMap = new Map([[_enum.TypeEnum.filter, {
|
|
24
31
|
name: (0, _locale.__)('SqlQueryBuilder.filter'),
|
|
25
32
|
icon: (0, _jsxRuntime.jsx)(_icons.FilterIcon, {}),
|
|
26
33
|
className: 'filter'
|
|
@@ -125,7 +132,7 @@ var judgeSize = function judgeSize(store, props, nextLen, groupIndex) {
|
|
|
125
132
|
/**
|
|
126
133
|
* 查找模块下面能放哪些icon (参考来源:metabase.com)
|
|
127
134
|
*/
|
|
128
|
-
var findNextIcon = function findNextIcon(store, props) {
|
|
135
|
+
var findNextIcon = exports.findNextIcon = function findNextIcon(store, props) {
|
|
129
136
|
var _store$metaList$group;
|
|
130
137
|
var meta = props.meta,
|
|
131
138
|
groupIndex = props.groupIndex;
|
|
@@ -326,15 +333,56 @@ var NextDom = function NextDom(props) {
|
|
|
326
333
|
store.addMeta(type, index + 1, groupIndex);
|
|
327
334
|
}
|
|
328
335
|
var MetaIconDom = metaIcon(size, handleClick);
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
336
|
+
var _React$useState = _react["default"].useState(false),
|
|
337
|
+
_React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
|
|
338
|
+
isShowAdd = _React$useState2[0],
|
|
339
|
+
setIsShowAdd = _React$useState2[1];
|
|
340
|
+
(0, _react.useEffect)(function () {
|
|
341
|
+
if (store.metabaseCopyModule) {
|
|
342
|
+
// let { prevItem, nextItem } = getHelper(store.metaList[groupIndex].list, meta);
|
|
343
|
+
var nextTypes = findNextIcon(store, {
|
|
344
|
+
meta: meta,
|
|
345
|
+
groupIndex: groupIndex
|
|
346
|
+
});
|
|
347
|
+
var isCan = (0, _utils.isCanPaste)(store.metabaseCopyModule, {
|
|
348
|
+
nextTypes: (0, _toConsumableArray2["default"])(nextTypes)
|
|
349
|
+
});
|
|
350
|
+
setIsShowAdd(isCan);
|
|
351
|
+
} else {
|
|
352
|
+
setIsShowAdd(false);
|
|
353
|
+
}
|
|
354
|
+
}, [store.metabaseCopyModule]);
|
|
355
|
+
var handlePaste = function handlePaste() {
|
|
356
|
+
var _store$metaList3;
|
|
357
|
+
var index = (_store$metaList3 = store.metaList) === null || _store$metaList3 === void 0 || (_store$metaList3 = _store$metaList3[groupIndex]) === null || _store$metaList3 === void 0 || (_store$metaList3 = _store$metaList3.list) === null || _store$metaList3 === void 0 ? void 0 : _store$metaList3.indexOf(meta);
|
|
358
|
+
store.addMeta('', index + 1, groupIndex, store.metabaseCopyModule);
|
|
359
|
+
// 粘贴后重置
|
|
360
|
+
store.setMetabaseCopyModule([]);
|
|
361
|
+
store.setIsMetabaseCopy(false);
|
|
362
|
+
_storage["default"]._metabaseCopyModule = [];
|
|
363
|
+
};
|
|
364
|
+
return (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
365
|
+
children: [store.metabaseCopyModule && store.metabaseCopyModule.length > 0 && isShowAdd && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
|
|
366
|
+
title: "\u5728\u6B64\u5904\u7C98\u8D34",
|
|
367
|
+
children: (0, _jsxRuntime.jsxs)(_pandora.Button, {
|
|
368
|
+
className: (0, _classnames["default"])(':Sqb-item-copy'),
|
|
369
|
+
onClick: handlePaste,
|
|
370
|
+
// iconOnly={false}
|
|
371
|
+
// icon={}
|
|
372
|
+
dashed: true,
|
|
373
|
+
ghost: true,
|
|
374
|
+
children: [(0, _jsxRuntime.jsx)(_pandoraIcons.FfPlus, {}), "\u5C06\u5185\u5BB9\u7C98\u8D34\u5230\u6B64\u5904"]
|
|
375
|
+
})
|
|
376
|
+
}), (0, _jsxRuntime.jsx)("div", {
|
|
377
|
+
className: "Sqb-item--func",
|
|
378
|
+
children: sortList(available).filter(function (v) {
|
|
379
|
+
return ~store.toolbar.indexOf(v);
|
|
380
|
+
}).map(function (v) {
|
|
381
|
+
return (0, _jsxRuntime.jsx)(MetaIconDom, {
|
|
382
|
+
type: v
|
|
383
|
+
}, v);
|
|
384
|
+
})
|
|
385
|
+
})]
|
|
338
386
|
});
|
|
339
387
|
};
|
|
340
388
|
var _default = exports["default"] = NextDom;
|