@gingkoo/pandora-metabase 1.0.82 → 1.0.83

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.
Files changed (57) hide show
  1. package/lib/cjs/components/dialog/formula-list/index.js +137 -74
  2. package/lib/cjs/components/dialog/formula-list/index.less +13 -0
  3. package/lib/cjs/components/metabase/index.js +26 -4
  4. package/lib/cjs/components/metabase/index.less +32 -1
  5. package/lib/cjs/components/modules/components/header.d.ts +2 -0
  6. package/lib/cjs/components/modules/components/header.js +11 -6
  7. package/lib/cjs/components/modules/components/item-wrapper.d.ts +9 -0
  8. package/lib/cjs/components/modules/components/item-wrapper.js +45 -0
  9. package/lib/cjs/components/modules/components/meta-icon.d.ts +11 -0
  10. package/lib/cjs/components/modules/components/meta-icon.js +60 -12
  11. package/lib/cjs/components/modules/custom-column.js +34 -28
  12. package/lib/cjs/components/modules/filter.js +18 -12
  13. package/lib/cjs/components/modules/join-data.js +417 -411
  14. package/lib/cjs/components/modules/permission-table.js +17 -11
  15. package/lib/cjs/components/modules/row-limit.js +18 -12
  16. package/lib/cjs/components/modules/sort.js +33 -27
  17. package/lib/cjs/components/modules/summarize/index.js +26 -20
  18. package/lib/cjs/components/modules/table-data.js +137 -131
  19. package/lib/cjs/components/modules/union.js +14 -8
  20. package/lib/cjs/hooks/use-state.js +44 -4
  21. package/lib/cjs/index.js +5 -2
  22. package/lib/cjs/locale/en.js +5 -3
  23. package/lib/cjs/locale/zh.js +5 -3
  24. package/lib/cjs/types.d.ts +1 -0
  25. package/lib/cjs/utils/storage.d.ts +1 -0
  26. package/lib/cjs/utils/storage.js +2 -1
  27. package/lib/cjs/utils.d.ts +6 -0
  28. package/lib/cjs/utils.js +23 -3
  29. package/lib/es/components/dialog/formula-list/index.js +137 -76
  30. package/lib/es/components/dialog/formula-list/index.less +13 -0
  31. package/lib/es/components/metabase/index.js +26 -4
  32. package/lib/es/components/metabase/index.less +32 -1
  33. package/lib/es/components/modules/components/header.d.ts +2 -0
  34. package/lib/es/components/modules/components/header.js +12 -7
  35. package/lib/es/components/modules/components/item-wrapper.d.ts +9 -0
  36. package/lib/es/components/modules/components/item-wrapper.js +38 -0
  37. package/lib/es/components/modules/components/meta-icon.d.ts +11 -0
  38. package/lib/es/components/modules/components/meta-icon.js +60 -14
  39. package/lib/es/components/modules/custom-column.js +34 -28
  40. package/lib/es/components/modules/filter.js +18 -12
  41. package/lib/es/components/modules/join-data.js +417 -411
  42. package/lib/es/components/modules/permission-table.js +17 -11
  43. package/lib/es/components/modules/row-limit.js +18 -12
  44. package/lib/es/components/modules/sort.js +33 -27
  45. package/lib/es/components/modules/summarize/index.js +26 -20
  46. package/lib/es/components/modules/table-data.js +137 -131
  47. package/lib/es/components/modules/union.js +14 -8
  48. package/lib/es/hooks/use-state.js +44 -4
  49. package/lib/es/index.js +5 -2
  50. package/lib/es/locale/en.js +5 -3
  51. package/lib/es/locale/zh.js +5 -3
  52. package/lib/es/types.d.ts +1 -0
  53. package/lib/es/utils/storage.d.ts +1 -0
  54. package/lib/es/utils/storage.js +2 -1
  55. package/lib/es/utils.d.ts +6 -0
  56. package/lib/es/utils.js +21 -1
  57. package/package.json +1 -1
@@ -15,6 +15,7 @@ var _react = require("react");
15
15
  var _helper = require("../utils/helper");
16
16
  var _enum = require("../store/enum");
17
17
  var _utils = require("../utils");
18
+ var _storage = _interopRequireDefault(require("../utils/storage"));
18
19
  var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
19
20
  var _excluded = ["alias", "datasourceName", "datasourceId", "column"];
20
21
  var metaKey = 1;
@@ -178,6 +179,18 @@ var useStore = function useStore() {
178
179
  _useState60 = (0, _slicedToArray2["default"])(_useState59, 2),
179
180
  sourceData = _useState60[0],
180
181
  setSourceData = _useState60[1]; // 原始数据
182
+ var _useState61 = (0, _react.useState)(false),
183
+ _useState62 = (0, _slicedToArray2["default"])(_useState61, 2),
184
+ moduleCopy = _useState62[0],
185
+ setModuleCopy = _useState62[1]; // 是否开启模块复制功能
186
+ var _useState63 = (0, _react.useState)(false),
187
+ _useState64 = (0, _slicedToArray2["default"])(_useState63, 2),
188
+ isMetabaseCopy = _useState64[0],
189
+ setIsMetabaseCopy = _useState64[1]; // 是否开启勾选组复制
190
+ var _useState65 = (0, _react.useState)(_storage["default"]._metabaseCopyModule || []),
191
+ _useState66 = (0, _slicedToArray2["default"])(_useState65, 2),
192
+ metabaseCopyModule = _useState66[0],
193
+ setMetabaseCopyModule = _useState66[1]; // 复制的内容
181
194
  // 外层ref
182
195
  var popupContainer = (0, _react.useRef)();
183
196
  // const [fetchDatasetFn, setFetchDatasetFn] = useState<(id: string) => Promise<any>>(
@@ -544,9 +557,10 @@ var useStore = function useStore() {
544
557
  _setMeta(defaultMeta);
545
558
  }
546
559
  };
547
- var addMeta = function addMeta(type, index, groupIndex) {
560
+ var getNewMeta = function getNewMeta(_type, index, groupIndex, obj) {
561
+ var type = _type || obj.type;
562
+ var item = false;
548
563
  var newMeta = metaList[groupIndex].list.slice();
549
- var item;
550
564
  var mainTable = newMeta[0];
551
565
  metaKey += 1;
552
566
  if (type === _enum.TypeEnum.joinData) {
@@ -653,10 +667,30 @@ var useStore = function useStore() {
653
667
  var newMetaList = metaList.slice();
654
668
  newMetaList.splice.apply(newMetaList, [groupIndex + 1, 0, defaultOperator].concat(defaultMeta));
655
669
  _setMeta(newMetaList);
670
+ return false;
671
+ }
672
+ if (obj) {
673
+ item = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, obj), {}, {
674
+ metaKey: metaKey
675
+ });
676
+ }
677
+ return item;
678
+ };
679
+ var addMeta = function addMeta(type, index, groupIndex, obj) {
680
+ var newMeta = metaList[groupIndex].list.slice();
681
+ var items = [];
682
+ if (obj) {
683
+ items = obj.map(function (v) {
684
+ return getNewMeta(type, index, groupIndex, v);
685
+ });
686
+ } else {
687
+ items = [getNewMeta(type, index, groupIndex, obj)];
688
+ }
689
+ if (items[0] === false) {
656
690
  return;
657
691
  }
658
692
  // @ts-ignore
659
- newMeta.splice(index, 0, item);
693
+ newMeta.splice.apply(newMeta, [index, 0].concat((0, _toConsumableArray2["default"])(items)));
660
694
  setMeta(newMeta, groupIndex);
661
695
  };
662
696
  var delMeta = function delMeta(meta, groupIndex) {
@@ -816,7 +850,13 @@ var useStore = function useStore() {
816
850
  setFetchDiffFn: setFetchDiffFn,
817
851
  getModuleDiffCode: getModuleDiffCode,
818
852
  isSubquery: isSubquery,
819
- setIsSubquery: setIsSubquery
853
+ setIsSubquery: setIsSubquery,
854
+ moduleCopy: moduleCopy,
855
+ setModuleCopy: setModuleCopy,
856
+ metabaseCopyModule: metabaseCopyModule,
857
+ setMetabaseCopyModule: setMetabaseCopyModule,
858
+ isMetabaseCopy: isMetabaseCopy,
859
+ setIsMetabaseCopy: setIsMetabaseCopy
820
860
  };
821
861
  };
822
862
  var _default = exports["default"] = useStore;
package/lib/cjs/index.js CHANGED
@@ -76,7 +76,9 @@ var SqlVisionBuilder = _react["default"].forwardRef(function (props, ref) {
76
76
  _props$metabaseCopy = props.metabaseCopy,
77
77
  metabaseCopy = _props$metabaseCopy === void 0 ? false : _props$metabaseCopy,
78
78
  _props$moduleDiff = props.moduleDiff,
79
- moduleDiff = _props$moduleDiff === void 0 ? false : _props$moduleDiff;
79
+ moduleDiff = _props$moduleDiff === void 0 ? false : _props$moduleDiff,
80
+ _props$moduleCopy = props.moduleCopy,
81
+ moduleCopy = _props$moduleCopy === void 0 ? false : _props$moduleCopy;
80
82
  var store = (0, _useState["default"])();
81
83
  (0, _react.useEffect)(function () {
82
84
  getTables && store.setFetchDatasetFn(getTables);
@@ -117,7 +119,8 @@ var SqlVisionBuilder = _react["default"].forwardRef(function (props, ref) {
117
119
  store.setMetabaseCopy(metabaseCopy);
118
120
  store.setModuleDiff(moduleDiff);
119
121
  store.setIsSubquery(isSubquery);
120
- }, [showFields, fieldNameTpl, tableNameTpl, toolbar, showSubquery, subShowSubquery, constantList, formulaTemplates, ignoreGroupByType, filterCustomType, isExit, tableEnableAlias, fieldEnableAlias, groupByEnableAlias, isSelectFields, tableFlat, copyType, metabaseCopy, moduleDiff, isSubquery]);
122
+ store.setModuleCopy(moduleCopy);
123
+ }, [showFields, fieldNameTpl, tableNameTpl, toolbar, showSubquery, subShowSubquery, constantList, formulaTemplates, ignoreGroupByType, filterCustomType, isExit, tableEnableAlias, fieldEnableAlias, groupByEnableAlias, isSelectFields, tableFlat, copyType, metabaseCopy, moduleDiff, isSubquery, moduleCopy]);
121
124
  _react["default"].useImperativeHandle(ref, function () {
122
125
  return {
123
126
  // setDatasource: (list) => {
@@ -175,7 +175,9 @@ var _default = exports["default"] = (0, _index.register)('en', {
175
175
  'metabase.copySuccess': 'Copy success',
176
176
  'metabase.pasteSuccess': 'Paste success',
177
177
  'metabase.paste': 'Paste',
178
- 'customColumn.closeCopy': 'Close Copy',
179
- 'customColumn.openCopy': 'Open Copy',
180
- 'customColumn.copyAll': 'Copy All'
178
+ 'customColumn.closeCopy': 'Close Select',
179
+ 'customColumn.openCopy': 'Open Select',
180
+ 'customColumn.copyAll': 'Copy All',
181
+ 'customColumn.delSelect': 'Delete Selected',
182
+ 'customColumn.confirmDelete': 'Confirm delete selected?'
181
183
  });
@@ -175,7 +175,9 @@ var _default = exports["default"] = (0, _index.register)('zh', {
175
175
  'metabase.copySuccess': '复制成功',
176
176
  'metabase.pasteSuccess': '粘贴成功',
177
177
  'metabase.paste': '粘贴',
178
- 'customColumn.closeCopy': '关闭复制',
179
- 'customColumn.openCopy': '开启复制',
180
- 'customColumn.copyAll': '复制全部'
178
+ 'customColumn.closeCopy': '关闭勾选',
179
+ 'customColumn.openCopy': '开启勾选',
180
+ 'customColumn.copyAll': '复制全部',
181
+ 'customColumn.delSelect': '删除选中',
182
+ 'customColumn.confirmDelete': '确认删除选中?'
181
183
  });
@@ -51,6 +51,7 @@ export interface MetabaseProps {
51
51
  copyType?: (FormulaTypeEnum | string)[];
52
52
  metabaseCopy?: boolean;
53
53
  moduleDiff?: boolean;
54
+ moduleCopy?: boolean;
54
55
  getModuleDiffCode?: (obj: {
55
56
  oldCode: MetaListType;
56
57
  newCode: MetaListType;
@@ -11,6 +11,7 @@ interface StorageType {
11
11
  theme?: string;
12
12
  _metabaseCopy?: any[];
13
13
  _metabaseCopyItems?: any[];
14
+ _metabaseCopyModule?: any[];
14
15
  }
15
16
  /**
16
17
  * 便捷操作 localStorage & sessionStorage
@@ -45,7 +45,8 @@ var Cache = exports.Cache = /*#__PURE__*/function () {
45
45
  var storageMap = {
46
46
  theme: new Cache(Local, _storageKey.THEME),
47
47
  _metabaseCopy: new Cache(Local, '_metabaseCopy'),
48
- _metabaseCopyItems: new Cache(Local, '_metabaseCopyItems')
48
+ _metabaseCopyItems: new Cache(Local, '_metabaseCopyItems'),
49
+ _metabaseCopyModule: new Cache(Local, '_metabaseCopyModule')
49
50
  };
50
51
  function observer(obj, key) {
51
52
  Object.defineProperty(obj, key, {
@@ -12,6 +12,8 @@ interface HelperResultType {
12
12
  nextTypes: TypeEnum[];
13
13
  prevList: MetaListType[];
14
14
  nextList: MetaListType[];
15
+ prevItem: MetaListType;
16
+ nextItem: MetaListType;
15
17
  prevGroupBy: MetaSummarize | undefined;
16
18
  nextGroupBy: MetaSummarize | undefined;
17
19
  prevTables: {
@@ -30,4 +32,8 @@ export declare const buildSqlQuery: (data: MetaListType[] | undefined, type: str
30
32
  export declare const isError: (item: AtomsItem | AtomsItem[], data: DataType[]) => boolean;
31
33
  export declare const changeCopyField: (items: AtomsItem[], data: any[]) => AtomsItem[];
32
34
  export declare const changeExistsCopyField: (list: MetaListType[], data: any[]) => MetaListType[];
35
+ export declare const metaIsCheck: (data: any[], item: any) => boolean;
36
+ export declare const isCanPaste: (item: MetaListType | MetaListType[], options: {
37
+ nextTypes: string[];
38
+ }) => boolean;
33
39
  export {};
package/lib/cjs/utils.js CHANGED
@@ -4,9 +4,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.isError = exports.getSubColumns = exports.getMetaTabels = exports.getHelper = exports.getColumnsTables = exports.findMetaKey = exports.findIndex = exports.changeTableAlias = exports.changeFieldAlias = exports.changeExistsCopyField = exports.changeCopyField = exports.buildSqlQuery = void 0;
7
+ exports.isError = exports.isCanPaste = exports.getSubColumns = exports.getMetaTabels = exports.getHelper = exports.getColumnsTables = exports.findMetaKey = exports.findIndex = exports.changeTableAlias = exports.changeFieldAlias = exports.changeExistsCopyField = exports.changeCopyField = exports.buildSqlQuery = void 0;
8
8
  exports.isValidSQLAlias = isValidSQLAlias;
9
- exports.patchData = void 0;
9
+ exports.patchData = exports.metaIsCheck = void 0;
10
10
  exports.reassembleByUnion = reassembleByUnion;
11
11
  exports.splitByUnion = splitByUnion;
12
12
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectWithoutProperties"));
@@ -73,6 +73,10 @@ var getHelper = exports.getHelper = function getHelper(list, item) {
73
73
  var leftList = list.slice(0, curIndex);
74
74
  var rightList = list.slice(curIndex + 1);
75
75
  var topList = leftList; // 包含自己
76
+ // let prevType = list[curIndex - 1]?.type || '';
77
+ // let nextType = list[curIndex + 1]?.type || '';
78
+ var prevItem = list[curIndex - 1] || {};
79
+ var nextItem = list[curIndex + 1] || {};
76
80
  var ExistAboveGroupBy = false;
77
81
  var ExistBelowGroupBy = false;
78
82
  var prevTypes = [];
@@ -107,7 +111,9 @@ var getHelper = exports.getHelper = function getHelper(list, item) {
107
111
  nextList: nextList,
108
112
  prevGroupBy: prevGroupBy,
109
113
  nextGroupBy: nextGroupBy,
110
- prevTables: prevTables
114
+ prevTables: prevTables,
115
+ prevItem: prevItem,
116
+ nextItem: nextItem
111
117
  };
112
118
  };
113
119
  // 获取子查询的字段
@@ -896,4 +902,18 @@ var changeExistsCopyField = exports.changeExistsCopyField = function changeExist
896
902
  }
897
903
  return (0, _objectSpread6["default"])({}, v);
898
904
  })) || [];
905
+ };
906
+ var metaIsCheck = exports.metaIsCheck = function metaIsCheck(data, item) {
907
+ return (data === null || data === void 0 ? void 0 : data.filter(function (v) {
908
+ return v.metaKey == item.metaKey;
909
+ }).length) > 0;
910
+ };
911
+ var isCanPaste = exports.isCanPaste = function isCanPaste(item, options) {
912
+ if (Array.isArray(item)) {
913
+ return item.every(function (v) {
914
+ return options.nextTypes.includes(v.type);
915
+ });
916
+ }
917
+ var type = item.type;
918
+ return options.nextTypes.includes(type);
899
919
  };
@@ -1,13 +1,15 @@
1
1
  import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
+ import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
3
4
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
4
5
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
5
6
  var _excluded = ["notExistsToolbar", "toolbar"],
6
7
  _excluded2 = ["subToolbar", "notExistsColumns", "showFields", "isExit", "toolbar"];
8
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
7
9
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
8
- import { useEffect, useState, useRef, forwardRef } from 'react';
10
+ import React, { useEffect, useState, useRef, forwardRef } from 'react';
9
11
  import './index.less';
10
- import { FieldString, FieldNumber } from '@gingkoo/pandora-icons';
12
+ import { FieldString, FieldNumber, FfPlus } from '@gingkoo/pandora-icons';
11
13
  import cx from 'classnames';
12
14
  // import './index.less';
13
15
  import Metabase from '../../../index';
@@ -15,7 +17,7 @@ import { __ } from '../../../locale';
15
17
  import isEqual from 'lodash/isEqual';
16
18
  import { AtomsTypeEnum, FormulaTypeEnum } from '../../../store/types';
17
19
  import { ColumnsPopupThemeEnum } from '../../../store/enum';
18
- import { Select, Input, Modal2, Modal, InputNumber, Radio, Space, Button, Checkbox } from '@gingkoo/pandora';
20
+ import { Select, Input, Modal2, Modal, InputNumber, Radio, Space, Button, Checkbox, Tooltip } from '@gingkoo/pandora';
19
21
  import cloneDeep from 'lodash/cloneDeep';
20
22
  import { buildSqlQuery, isError, changeCopyField } from '../../../utils';
21
23
  import Formula from '../formula';
@@ -309,12 +311,17 @@ var FormulaList = forwardRef(function (props, ref) {
309
311
  }
310
312
  // 粘贴到末尾并清除勾选
311
313
  function handlePaste() {
314
+ var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : -1;
312
315
  var _caseList = caseList.slice();
313
316
  // determine items to paste (selected items have priority)
314
317
  var itemsToPaste = storage._metabaseCopyItems || [];
315
318
  itemsToPaste = changeCopyField(itemsToPaste, data);
316
319
  if (itemsToPaste.length) {
317
- _caseList.push.apply(_caseList, _toConsumableArray(itemsToPaste));
320
+ if (index === -1) {
321
+ _caseList.push.apply(_caseList, _toConsumableArray(itemsToPaste));
322
+ } else {
323
+ _caseList.splice.apply(_caseList, [index, 0].concat(_toConsumableArray(itemsToPaste)));
324
+ }
318
325
  setCaseList(_caseList);
319
326
  }
320
327
  initPaste();
@@ -357,6 +364,38 @@ var FormulaList = forwardRef(function (props, ref) {
357
364
  setSelectedIndices(allIndices);
358
365
  setLocalItem(allIndices);
359
366
  };
367
+ var delSelect = function delSelect() {
368
+ Modal.confirm({
369
+ title: __('metabase.prompt'),
370
+ // 提示
371
+ content: __('customColumn.confirmDelete'),
372
+ // 确认删除吗
373
+ onOk: function () {
374
+ var _onOk = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
375
+ var _caseList;
376
+ return _regeneratorRuntime.wrap(function (_context) {
377
+ while (1) switch (_context.prev = _context.next) {
378
+ case 0:
379
+ _caseList = caseList.slice(); // 删除选中项,selectedIndices 已经是排序好的了
380
+ selectedIndices.forEach(function (i) {
381
+ _caseList.splice(i, 1);
382
+ });
383
+ setCaseList(_caseList);
384
+ initPaste();
385
+ case 1:
386
+ case "end":
387
+ return _context.stop();
388
+ }
389
+ }, _callee);
390
+ }));
391
+ function onOk() {
392
+ return _onOk.apply(this, arguments);
393
+ }
394
+ return onOk;
395
+ }(),
396
+ onCancel: function onCancel() {}
397
+ });
398
+ };
360
399
  // 开启关闭勾选,清除别的过滤器勾选
361
400
  var _setIsCheck = function _setIsCheck(val) {
362
401
  initPaste();
@@ -806,6 +845,21 @@ var FormulaList = forwardRef(function (props, ref) {
806
845
  });
807
846
  }
808
847
  };
848
+ var copyDom = function copyDom() {
849
+ var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : -1;
850
+ if (!isCopy || selectedIndices.length === 0 && checkedItemsCount === 0) return null;
851
+ return _jsx(Tooltip, {
852
+ title: "\u5728\u6B64\u5904\u7C98\u8D34(".concat(selectedIndices.length || checkedItemsCount, ")\u9879"),
853
+ children: _jsx(Button, {
854
+ className: cx(':Sqb-Filter-item-copy'),
855
+ onClick: function onClick() {
856
+ return handlePaste(index);
857
+ },
858
+ iconOnly: true,
859
+ icon: _jsx(FfPlus, {})
860
+ })
861
+ });
862
+ };
809
863
  return _jsx(_Fragment, {
810
864
  children: _jsxs("div", {
811
865
  className: "Sqb-NotebookCell",
@@ -831,70 +885,88 @@ var FormulaList = forwardRef(function (props, ref) {
831
885
  },
832
886
  primary: true,
833
887
  children: __('customColumn.copyAll')
834
- })]
835
- }), (_caseList2 = caseList) === null || _caseList2 === void 0 ? void 0 : _caseList2.map(function (v, i) {
836
- return _jsxs("div", {
837
- className: cx('Sqb-Filter-item', {
838
- hover: ind === i,
839
- 'item-fixed': v.fixed || false,
840
- 'item-selected': isCheck
841
- }),
842
- onMouseEnter: function onMouseEnter(e) {
843
- if (isCheck) return;
844
- setInd(i);
888
+ }), selectedIndices.length > 0 && _jsx(Button, {
889
+ primary: true,
890
+ danger: true,
891
+ size: 'small',
892
+ onClick: function onClick() {
893
+ return delSelect();
845
894
  },
846
- onMouseLeave: function onMouseLeave() {
847
- if (isCheck) return;
848
- setInd(-1);
895
+ children: __('customColumn.delSelect')
896
+ }), !isCheck && checkedItemsCount > 0 && _jsx(Button, {
897
+ primary: true,
898
+ warning: true,
899
+ size: 'small',
900
+ onClick: function onClick() {
901
+ return initPaste();
849
902
  },
850
- children: [selectOperator({
851
- triggerElement: function triggerElement() {
852
- return _jsx("div", {
853
- className: 'left-arrow',
854
- "v-index": i,
855
- "v-type": 'before',
856
- onClick: function onClick() {
857
- if (!selectedIndices.length) addOperator(AtomsTypeEnum.UNKNOWN, i, 'before');
858
- },
859
- children: _jsx("img", {
860
- src: arrow
861
- })
862
- });
863
- },
864
- ind: i,
865
- position: 'before',
866
- trigger: 'hover'
867
- }), v.type !== AtomsTypeEnum.UNKNOWN && _jsx(Checkbox, {
868
- className: 'item-check',
869
- checked: selectedIndices.includes(i),
870
- disabled: globalSelectionActive && globalSelectionOwner !== myInstanceIdRef.current,
871
- onChange: function onChange(e) {
872
- var _e$target$checked, _e$target;
873
- 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));
874
- }
875
- }), _jsx("div", {
876
- style: {
877
- pointerEvents: isCheck ? 'none' : 'auto'
903
+ children: "\u6E05\u9664\u590D\u5236"
904
+ })]
905
+ }), (_caseList2 = caseList) === null || _caseList2 === void 0 ? void 0 : _caseList2.map(function (v, i) {
906
+ return _jsxs(React.Fragment, {
907
+ children: [copyDom(i), _jsxs("div", {
908
+ className: cx('Sqb-Filter-item', {
909
+ hover: ind === i,
910
+ 'item-fixed': v.fixed || false,
911
+ 'item-selected': isCheck
912
+ }),
913
+ onMouseEnter: function onMouseEnter(e) {
914
+ if (isCheck) return;
915
+ setInd(i);
878
916
  },
879
- children: itemDom(v, i)
880
- }), selectOperator({
881
- triggerElement: function triggerElement(value) {
882
- return _jsx("div", {
883
- className: 'right-arrow',
884
- "v-index": i,
885
- "v-type": 'after',
886
- onClick: function onClick() {
887
- addOperator(AtomsTypeEnum.UNKNOWN, i, 'after');
888
- },
889
- children: _jsx("img", {
890
- src: arrow
891
- })
892
- });
917
+ onMouseLeave: function onMouseLeave() {
918
+ if (isCheck) return;
919
+ setInd(-1);
893
920
  },
894
- ind: i,
895
- position: 'after',
896
- trigger: 'hover'
897
- })]
921
+ children: [selectOperator({
922
+ triggerElement: function triggerElement() {
923
+ return _jsx("div", {
924
+ className: 'left-arrow',
925
+ "v-index": i,
926
+ "v-type": 'before',
927
+ onClick: function onClick() {
928
+ if (!selectedIndices.length) addOperator(AtomsTypeEnum.UNKNOWN, i, 'before');
929
+ },
930
+ children: _jsx("img", {
931
+ src: arrow
932
+ })
933
+ });
934
+ },
935
+ ind: i,
936
+ position: 'before',
937
+ trigger: 'hover'
938
+ }), v.type !== AtomsTypeEnum.UNKNOWN && _jsx(Checkbox, {
939
+ className: 'item-check',
940
+ checked: selectedIndices.includes(i),
941
+ disabled: globalSelectionActive && globalSelectionOwner !== myInstanceIdRef.current,
942
+ onChange: function onChange(e) {
943
+ var _e$target$checked, _e$target;
944
+ 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));
945
+ }
946
+ }), _jsx("div", {
947
+ style: {
948
+ pointerEvents: isCheck || store.isMetabaseCopy ? 'none' : 'auto'
949
+ },
950
+ children: itemDom(v, i)
951
+ }), selectOperator({
952
+ triggerElement: function triggerElement(value) {
953
+ return _jsx("div", {
954
+ className: 'right-arrow',
955
+ "v-index": i,
956
+ "v-type": 'after',
957
+ onClick: function onClick() {
958
+ addOperator(AtomsTypeEnum.UNKNOWN, i, 'after');
959
+ },
960
+ children: _jsx("img", {
961
+ src: arrow
962
+ })
963
+ });
964
+ },
965
+ ind: i,
966
+ position: 'after',
967
+ trigger: 'hover'
968
+ })]
969
+ }, i)]
898
970
  }, i);
899
971
  }), Array.from(caseList).length < 1 && selectOperator({
900
972
  triggerElement: function triggerElement() {
@@ -906,18 +978,7 @@ var FormulaList = forwardRef(function (props, ref) {
906
978
  ind: -1,
907
979
  position: 'add',
908
980
  trigger: 'click'
909
- }), isCopy && (selectedIndices.length > 0 || checkedItemsCount > 0) && selectOperator({
910
- triggerElement: function triggerElement(value) {
911
- return _jsxs("div", {
912
- className: cx("Sqb-TableName green-name"),
913
- onClick: handlePaste,
914
- children: ["\u7C98\u8D34(", selectedIndices.length || checkedItemsCount, ")\u9879"]
915
- });
916
- },
917
- ind: -1,
918
- position: 'add',
919
- trigger: 'click'
920
- }), showPreview && _jsx("div", {
981
+ }), copyDom(), showPreview && _jsx("div", {
921
982
  className: cx("mb-2 font-bold uppercase tracking-wider preview-box"),
922
983
  style: {
923
984
  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;
@@ -26,7 +26,8 @@ var Metabase = function Metabase(props) {
26
26
  _props$readonly = props.readonly,
27
27
  readonly = _props$readonly === void 0 ? false : _props$readonly,
28
28
  onOk = props.onOk,
29
- metabaseCopy = props.metabaseCopy;
29
+ metabaseCopy = props.metabaseCopy,
30
+ moduleCopy = props.moduleCopy;
30
31
  var store = useStore();
31
32
  var _useState = useState(false),
32
33
  _useState2 = _slicedToArray(_useState, 2),
@@ -131,8 +132,29 @@ var Metabase = function Metabase(props) {
131
132
  }();
132
133
  // 复制功能
133
134
  var copy = function copy() {
134
- return _jsx(Space, {
135
- children: metabaseCopy && _jsxs(_Fragment, {
135
+ return _jsxs(Space, {
136
+ children: [moduleCopy && _jsx(_Fragment, {
137
+ children: _jsx(Tooltip, {
138
+ title: '开启勾选后可勾选组进行复制,复制后可在其他地方粘贴使用',
139
+ children: _jsx(Button, {
140
+ size: 'small',
141
+ type: 'primary',
142
+ warning: store.isMetabaseCopy,
143
+ className: cx("Sqb-copy-btn ", {
144
+ 'primary-color': !store.isMetabaseCopy
145
+ }),
146
+ onClick: function onClick() {
147
+ // if (store.isMetabaseCopy) {
148
+ // storage._metabaseCopyModule = null;
149
+ // }
150
+ store.setIsMetabaseCopy(!store.isMetabaseCopy);
151
+ store.setMetabaseCopyModule([]);
152
+ storage._metabaseCopyModule = [];
153
+ },
154
+ children: store.isMetabaseCopy ? '清除勾选组复制' : '开启勾选组复制'
155
+ })
156
+ })
157
+ }), metabaseCopy && _jsxs(_Fragment, {
136
158
  children: [_jsx(Tooltip, {
137
159
  title: '点击复制当前配置,您可以在其他地方粘贴使用',
138
160
  children: _jsx(Button, {
@@ -169,7 +191,7 @@ var Metabase = function Metabase(props) {
169
191
  children: __('metabase.paste')
170
192
  })
171
193
  })]
172
- })
194
+ })]
173
195
  });
174
196
  };
175
197
  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 {
@@ -3,6 +3,8 @@ interface HeaderProps {
3
3
  className?: string;
4
4
  onClose?: Function;
5
5
  moduleDiff?: boolean;
6
+ moduleCopy?: boolean;
7
+ groupIndex: number;
6
8
  meta?: any;
7
9
  isDataModule?: boolean;
8
10
  }