@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
@@ -1,7 +1,8 @@
1
1
  import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
2
2
  import _regeneratorRuntime from "@babel/runtime/regenerator";
3
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
- import { Tooltip, Button, Modal2 } from '@gingkoo/pandora';
4
+ import { Tooltip, Button, Modal2, Space } from '@gingkoo/pandora';
5
+ import cx from 'classnames';
5
6
  import { CloseIcon2 } from '../../icons';
6
7
  import { __ } from '../../../locale';
7
8
  import { useStore } from '../../../hooks/use-provider';
@@ -9,6 +10,7 @@ import { splitByUnion } from '../../../utils';
9
10
  import DiffViewer from '../../dialog/diff-viewer';
10
11
  var Header = function Header(props) {
11
12
  var meta = props.meta,
13
+ groupIndex = props.groupIndex,
12
14
  isDataModule = props.isDataModule;
13
15
  var store = useStore();
14
16
  var diff = /*#__PURE__*/function () {
@@ -57,12 +59,15 @@ var Header = function Header(props) {
57
59
  onClick: diff,
58
60
  children: "\u5DEE\u5F02\u5BF9\u6BD4"
59
61
  })
60
- }), props.onClose && _jsx(Tooltip, {
61
- placement: 'top',
62
- title: __('data.del'),
63
- children: _jsx(CloseIcon2, {
64
- className: "Sqb-item-close",
65
- onClick: props.onClose
62
+ }), _jsx(Space, {
63
+ className: cx(':Sqb-item-actions'),
64
+ children: props.onClose && !store.isMetabaseCopy && _jsx(Tooltip, {
65
+ placement: 'top',
66
+ title: __('data.del'),
67
+ children: _jsx(CloseIcon2, {
68
+ className: "Sqb-item-close",
69
+ onClick: props.onClose
70
+ })
66
71
  })
67
72
  })]
68
73
  });
@@ -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,38 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Checkbox } from '@gingkoo/pandora';
4
+ import cx from 'classnames';
5
+ import { useStore } from '../../../hooks/use-provider';
6
+ import { metaIsCheck } from '../../../utils';
7
+ import storage from '../../../utils/storage';
8
+ import cloneDeep from 'lodash/cloneDeep';
9
+ var ItemWrapper = function ItemWrapper(props) {
10
+ var meta = props.meta,
11
+ groupIndex = props.groupIndex,
12
+ children = props.children;
13
+ var store = useStore();
14
+ var changeCopyModule = function changeCopyModule(isCheck, meta) {
15
+ var data = cloneDeep(store.metabaseCopyModule) || [];
16
+ if (isCheck) {
17
+ data = [].concat(_toConsumableArray(data), [meta]);
18
+ } else {
19
+ data = data.filter(function (v) {
20
+ return v.metaKey !== meta.metaKey;
21
+ });
22
+ }
23
+ store.setMetabaseCopyModule(data);
24
+ storage._metabaseCopyModule = data;
25
+ };
26
+ if (store.isMetabaseCopy && meta.type !== 'union' && meta.type !== 'data') {
27
+ return _jsx(Checkbox, {
28
+ checked: metaIsCheck(store.metabaseCopyModule, meta),
29
+ onChange: function onChange(val) {
30
+ changeCopyModule(val, meta);
31
+ },
32
+ className: cx(':Sqb-item-check'),
33
+ children: children
34
+ });
35
+ }
36
+ return children;
37
+ };
38
+ export 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,9 +1,14 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
4
+ import React, { useEffect } from 'react';
2
5
  import cx from 'classnames';
3
6
  import { __ } from '../../../locale';
4
7
  import { TypeEnum } from '../../../store/enum';
5
- import { Tooltip } from '@gingkoo/pandora';
6
- import { getHelper } from '../../../utils';
8
+ import { Tooltip, Button } from '@gingkoo/pandora';
9
+ import { FfPlus } from '@gingkoo/pandora-icons';
10
+ import storage from '../../../utils/storage';
11
+ import { getHelper, isCanPaste } from '../../../utils';
7
12
  // import { type SqlVisionStoreType } from '../../../store/helper';
8
13
  import { useStore } from '../../../hooks/use-provider';
9
14
  import { RowLimitIcon, SortIcon, CustomColumnIcon, JoinDataIcon, PermissionTableIcon, SummarizeIcon, FilterIcon, GroupIcon } from '../../icons';
@@ -12,7 +17,7 @@ var IconSIzeEnum;
12
17
  IconSIzeEnum["SMALL"] = "small";
13
18
  IconSIzeEnum["LARGE"] = "large";
14
19
  })(IconSIzeEnum || (IconSIzeEnum = {}));
15
- var IconTypeMap = new Map([[TypeEnum.filter, {
20
+ export var IconTypeMap = new Map([[TypeEnum.filter, {
16
21
  name: __('SqlQueryBuilder.filter'),
17
22
  icon: _jsx(FilterIcon, {}),
18
23
  className: 'filter'
@@ -117,7 +122,7 @@ var judgeSize = function judgeSize(store, props, nextLen, groupIndex) {
117
122
  /**
118
123
  * 查找模块下面能放哪些icon (参考来源:metabase.com)
119
124
  */
120
- var findNextIcon = function findNextIcon(store, props) {
125
+ export var findNextIcon = function findNextIcon(store, props) {
121
126
  var _store$metaList$group;
122
127
  var meta = props.meta,
123
128
  groupIndex = props.groupIndex;
@@ -318,15 +323,56 @@ var NextDom = function NextDom(props) {
318
323
  store.addMeta(type, index + 1, groupIndex);
319
324
  }
320
325
  var MetaIconDom = metaIcon(size, handleClick);
321
- return _jsx("div", {
322
- className: "Sqb-item--func",
323
- children: sortList(available).filter(function (v) {
324
- return ~store.toolbar.indexOf(v);
325
- }).map(function (v) {
326
- return _jsx(MetaIconDom, {
327
- type: v
328
- }, v);
329
- })
326
+ var _React$useState = React.useState(false),
327
+ _React$useState2 = _slicedToArray(_React$useState, 2),
328
+ isShowAdd = _React$useState2[0],
329
+ setIsShowAdd = _React$useState2[1];
330
+ useEffect(function () {
331
+ if (store.metabaseCopyModule) {
332
+ // let { prevItem, nextItem } = getHelper(store.metaList[groupIndex].list, meta);
333
+ var nextTypes = findNextIcon(store, {
334
+ meta: meta,
335
+ groupIndex: groupIndex
336
+ });
337
+ var isCan = isCanPaste(store.metabaseCopyModule, {
338
+ nextTypes: _toConsumableArray(nextTypes)
339
+ });
340
+ setIsShowAdd(isCan);
341
+ } else {
342
+ setIsShowAdd(false);
343
+ }
344
+ }, [store.metabaseCopyModule]);
345
+ var handlePaste = function handlePaste() {
346
+ var _store$metaList3;
347
+ 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);
348
+ store.addMeta('', index + 1, groupIndex, store.metabaseCopyModule);
349
+ // 粘贴后重置
350
+ store.setMetabaseCopyModule([]);
351
+ store.setIsMetabaseCopy(false);
352
+ storage._metabaseCopyModule = [];
353
+ };
354
+ return _jsxs(_Fragment, {
355
+ children: [store.metabaseCopyModule && store.metabaseCopyModule.length > 0 && isShowAdd && _jsx(Tooltip, {
356
+ title: "\u5728\u6B64\u5904\u7C98\u8D34",
357
+ children: _jsxs(Button, {
358
+ className: cx(':Sqb-item-copy'),
359
+ onClick: handlePaste,
360
+ // iconOnly={false}
361
+ // icon={}
362
+ dashed: true,
363
+ ghost: true,
364
+ children: [_jsx(FfPlus, {}), "\u5C06\u5185\u5BB9\u7C98\u8D34\u5230\u6B64\u5904"]
365
+ })
366
+ }), _jsx("div", {
367
+ className: "Sqb-item--func",
368
+ children: sortList(available).filter(function (v) {
369
+ return ~store.toolbar.indexOf(v);
370
+ }).map(function (v) {
371
+ return _jsx(MetaIconDom, {
372
+ type: v
373
+ }, v);
374
+ })
375
+ })]
330
376
  });
331
377
  };
332
378
  export default NextDom;
@@ -19,6 +19,7 @@ import { CustomColumnPopup } from '../dialog';
19
19
  import Wrapper from './components/Wrapper';
20
20
  import NextDom from './components/meta-icon';
21
21
  import Header from './components/header';
22
+ import ItemWrapper from './components/item-wrapper';
22
23
  import ItemName from './components/item-name';
23
24
  import { useStore } from '../../hooks/use-provider';
24
25
  var CustomColumn = function CustomColumn(props) {
@@ -312,42 +313,47 @@ var CustomColumn = function CustomColumn(props) {
312
313
  className: "Sqb-hover-parent",
313
314
  children: [_jsx(Header, {
314
315
  meta: meta,
316
+ groupIndex: groupIndex,
315
317
  className: 'gray-text',
316
318
  title: __('SqlQueryBuilder.customColumn'),
317
319
  onClose: function onClose() {
318
320
  closePopup();
319
321
  store.delMeta(meta, groupIndex);
320
322
  }
321
- }), _jsx("div", {
322
- className: "Sqb-item--content",
323
- children: _jsxs("div", {
324
- className: "Sqb-NotebookCell gray-bg",
325
- children: [meta.customColumn.map(function (v, i) {
326
- return _jsx(ItemName, {
327
- isError: isError(v.formulaList, getColumns()),
328
- children: _jsxs("div", {
329
- className: cx("Sqb-TableName gray-name"),
330
- onClick: function onClick(e) {
331
- return showSubQuery(e, i);
332
- },
333
- children: [v.name, _jsx("span", {
334
- style: {
335
- fontSize: 0
336
- },
323
+ }), _jsx(ItemWrapper, {
324
+ meta: meta,
325
+ groupIndex: groupIndex,
326
+ children: _jsx("div", {
327
+ className: "Sqb-item--content",
328
+ children: _jsxs("div", {
329
+ className: "Sqb-NotebookCell gray-bg",
330
+ children: [meta.customColumn.map(function (v, i) {
331
+ return _jsx(ItemName, {
332
+ isError: isError(v.formulaList, getColumns()),
333
+ children: _jsxs("div", {
334
+ className: cx("Sqb-TableName gray-name"),
337
335
  onClick: function onClick(e) {
338
- return handleDel(e, i);
336
+ return showSubQuery(e, i);
339
337
  },
340
- children: _jsx(CloseIcon, {})
341
- })]
342
- })
343
- }, i);
344
- }), _jsx("div", {
345
- className: "Sqb-TableName gray-name",
346
- onClick: function onClick(e) {
347
- showSubQuery(e, -1);
348
- },
349
- children: _jsx(AddIcon, {})
350
- })]
338
+ children: [v.name, _jsx("span", {
339
+ style: {
340
+ fontSize: 0
341
+ },
342
+ onClick: function onClick(e) {
343
+ return handleDel(e, i);
344
+ },
345
+ children: _jsx(CloseIcon, {})
346
+ })]
347
+ })
348
+ }, i);
349
+ }), _jsx("div", {
350
+ className: "Sqb-TableName gray-name",
351
+ onClick: function onClick(e) {
352
+ showSubQuery(e, -1);
353
+ },
354
+ children: _jsx(AddIcon, {})
355
+ })]
356
+ })
351
357
  })
352
358
  }), _jsx(NextDom, {
353
359
  meta: meta,
@@ -11,6 +11,7 @@ import { ChangeType } from '../../store/types';
11
11
  import Wrapper from './components/Wrapper';
12
12
  import NextDom from './components/meta-icon';
13
13
  import Header from './components/header';
14
+ import ItemWrapper from './components/item-wrapper';
14
15
  // import { customTypes, operatorList } from './enum/filter-enum';
15
16
  import { useStore } from '../../hooks/use-provider';
16
17
  var Filter = function Filter(props) {
@@ -165,26 +166,31 @@ var Filter = function Filter(props) {
165
166
  className: "Sqb-hover-parent",
166
167
  children: [!meta.isPermanent ? _jsx(Header, {
167
168
  meta: meta,
169
+ groupIndex: groupIndex,
168
170
  className: 'purple-text',
169
171
  title: __('SqlQueryBuilder.filter'),
170
172
  onClose: function onClose() {
171
173
  closePopup();
172
174
  store.delMeta(meta, groupIndex);
173
175
  }
174
- }) : null, _jsx("div", {
175
- className: "Sqb-item--content",
176
- children: _jsx(FormulaList
177
- // customTypes={customTypes}
178
- // operatorList={operatorList}
179
- , {
176
+ }) : null, _jsx(ItemWrapper, {
177
+ meta: meta,
178
+ groupIndex: groupIndex,
179
+ children: _jsx("div", {
180
+ className: "Sqb-item--content",
181
+ children: _jsx(FormulaList
180
182
  // customTypes={customTypes}
181
183
  // operatorList={operatorList}
182
- value: filter,
183
- data: getPreColumns(),
184
- exitData: getColumns(),
185
- onChange: function onChange(val) {
186
- selectFilter(val);
187
- }
184
+ , {
185
+ // customTypes={customTypes}
186
+ // operatorList={operatorList}
187
+ value: filter,
188
+ data: getPreColumns(),
189
+ exitData: getColumns(),
190
+ onChange: function onChange(val) {
191
+ selectFilter(val);
192
+ }
193
+ })
188
194
  })
189
195
  }), _jsx(NextDom, {
190
196
  meta: meta,