@gingkoo/pandora-metabase 1.0.151 → 1.0.153

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 (53) hide show
  1. package/lib/cjs/components/dialog/formula-list/CaseWhenGroup.d.ts +2 -1
  2. package/lib/cjs/components/dialog/formula-list/CaseWhenGroup.js +7 -5
  3. package/lib/cjs/components/dialog/formula-list/LogicGroup.d.ts +2 -1
  4. package/lib/cjs/components/dialog/formula-list/LogicGroup.js +4 -2
  5. package/lib/cjs/components/dialog/formula-list/index.js +23 -14
  6. package/lib/cjs/components/dialog/select-column/index.d.ts +2 -1
  7. package/lib/cjs/components/dialog/select-column/index.js +10 -1
  8. package/lib/cjs/components/metabase/index.js +30 -2
  9. package/lib/cjs/components/modules/components/header.js +1 -1
  10. package/lib/cjs/components/modules/components/item-name.js +4 -1
  11. package/lib/cjs/components/modules/components/item-wrapper.js +1 -1
  12. package/lib/cjs/components/modules/components/meta-icon.js +4 -2
  13. package/lib/cjs/components/modules/custom-column.js +2 -2
  14. package/lib/cjs/components/modules/join-data.js +40 -41
  15. package/lib/cjs/components/modules/permission-table.js +1 -0
  16. package/lib/cjs/components/modules/row-limit.js +1 -0
  17. package/lib/cjs/components/modules/sort.js +2 -2
  18. package/lib/cjs/components/modules/summarize/group-by.js +6 -3
  19. package/lib/cjs/components/modules/summarize/select-index.js +3 -3
  20. package/lib/cjs/components/modules/table-data.js +6 -4
  21. package/lib/cjs/components/modules/union.js +1 -1
  22. package/lib/cjs/hooks/use-state.js +66 -52
  23. package/lib/cjs/index.js +7 -2
  24. package/lib/cjs/types.d.ts +1 -0
  25. package/lib/cjs/utils.d.ts +2 -0
  26. package/lib/cjs/utils.js +4 -4
  27. package/lib/es/components/dialog/formula-list/CaseWhenGroup.d.ts +2 -1
  28. package/lib/es/components/dialog/formula-list/CaseWhenGroup.js +7 -5
  29. package/lib/es/components/dialog/formula-list/LogicGroup.d.ts +2 -1
  30. package/lib/es/components/dialog/formula-list/LogicGroup.js +4 -2
  31. package/lib/es/components/dialog/formula-list/index.js +24 -15
  32. package/lib/es/components/dialog/select-column/index.d.ts +2 -1
  33. package/lib/es/components/dialog/select-column/index.js +10 -1
  34. package/lib/es/components/metabase/index.js +30 -2
  35. package/lib/es/components/modules/components/header.js +1 -1
  36. package/lib/es/components/modules/components/item-name.js +4 -1
  37. package/lib/es/components/modules/components/item-wrapper.js +1 -1
  38. package/lib/es/components/modules/components/meta-icon.js +4 -2
  39. package/lib/es/components/modules/custom-column.js +2 -2
  40. package/lib/es/components/modules/join-data.js +40 -41
  41. package/lib/es/components/modules/permission-table.js +1 -0
  42. package/lib/es/components/modules/row-limit.js +1 -0
  43. package/lib/es/components/modules/sort.js +2 -2
  44. package/lib/es/components/modules/summarize/group-by.js +7 -4
  45. package/lib/es/components/modules/summarize/select-index.js +3 -3
  46. package/lib/es/components/modules/table-data.js +6 -4
  47. package/lib/es/components/modules/union.js +1 -1
  48. package/lib/es/hooks/use-state.js +66 -52
  49. package/lib/es/index.js +7 -2
  50. package/lib/es/types.d.ts +1 -0
  51. package/lib/es/utils.d.ts +2 -0
  52. package/lib/es/utils.js +2 -1
  53. package/package.json +1 -1
@@ -23,7 +23,7 @@ import { AtomsTypeEnum, FormulaTypeEnum } from '../../../store/types';
23
23
  import { ColumnsPopupThemeEnum } from '../../../store/enum';
24
24
  import { Select, Input, Modal2, Modal, InputNumber, Space, Button, Checkbox, Tooltip, Toast, Editor } from '@gingkoo/pandora';
25
25
  import cloneDeep from 'lodash/cloneDeep';
26
- import { buildSqlQuery, isError, changeCopyField, isExistsError, normalizeAndOrStructure } from '../../../utils';
26
+ import { buildSqlQuery, getAtomDisplayText, isError, changeCopyField, isExistsError, normalizeAndOrStructure, syncAtomQuotes } from '../../../utils';
27
27
  import Formula from '../formula';
28
28
  import { AddIcon, CloseIcon } from '../../icons';
29
29
  import { Expression, SelectColumnMultiple } from '../../dialog';
@@ -156,6 +156,7 @@ var FormulaList = forwardRef(function (props, ref) {
156
156
  };
157
157
  }, []);
158
158
  var store = useStore();
159
+ var snapshotMode = Boolean(store.snapshotMode);
159
160
  var _props$value = props.value,
160
161
  value = _props$value === void 0 ? [] : _props$value,
161
162
  data = props.data,
@@ -284,7 +285,7 @@ var FormulaList = forwardRef(function (props, ref) {
284
285
  return map;
285
286
  }, [otherTypes]);
286
287
  var normalizedValue = useMemo(function () {
287
- return normalizeAndOrStructure(value || []);
288
+ return normalizeAndOrStructure(value || []).map(syncAtomQuotes);
288
289
  }, [value]);
289
290
  var caseList = normalizedValue;
290
291
  var initialValueRef = useRef(cloneDeep(caseList));
@@ -397,6 +398,9 @@ var FormulaList = forwardRef(function (props, ref) {
397
398
  if (visited.has(v)) return v.quotes || '';
398
399
  visited.add(v);
399
400
  }
401
+ if (v.type === AtomsTypeEnum.FIELD || v.type === AtomsTypeEnum.EXPRESSION || v.type === AtomsTypeEnum.FORMULA || v.type === AtomsTypeEnum.COLLECTION || v.type === AtomsTypeEnum.CASE_WHEN || v.type === AtomsTypeEnum.AND_OR || v.type === AtomsTypeEnum.SELECT) {
402
+ return getAtomDisplayText(v);
403
+ }
400
404
  if (v.quotes) return v.quotes;
401
405
  if (v.type === AtomsTypeEnum.FIELD) return getFieldDisplayName(v);
402
406
  if (v.fieldName) return v.fieldName;
@@ -954,6 +958,7 @@ var FormulaList = forwardRef(function (props, ref) {
954
958
  var caseRegionKey = "case-".concat(index, "-case");
955
959
  var elseRegionKey = "case-".concat(index, "-else");
956
960
  return _jsx(CaseWhenGroup, {
961
+ readonly: snapshotMode,
957
962
  isNested: embedded,
958
963
  useBranchScrollInner: !embedded,
959
964
  caseRegionKey: caseRegionKey,
@@ -1065,6 +1070,7 @@ var FormulaList = forwardRef(function (props, ref) {
1065
1070
  updateAtomAt(index, buildAndOrItem(value, nextItems));
1066
1071
  };
1067
1072
  return _jsx(LogicGroup, {
1073
+ readonly: snapshotMode,
1068
1074
  items: items.map(function (item, itemIndex) {
1069
1075
  return {
1070
1076
  operator: item.operator,
@@ -1972,22 +1978,23 @@ var FormulaList = forwardRef(function (props, ref) {
1972
1978
  };
1973
1979
  }
1974
1980
  if (type === AtomsTypeEnum.EXPRESSION) {
1981
+ var quotes = getAtomDisplayText(v);
1975
1982
  if (~['早于', '晚于', '在'].indexOf(v.condition) && v.rhs.length > 1) {
1976
- var _nextList$index$quote;
1983
+ var _getAtomDisplayText$s;
1977
1984
  var nextList = caseList.slice();
1978
1985
  nextList[index].rhs = [nextList[index].rhs[0]];
1979
- nextList[index].quotes = (_nextList$index$quote = nextList[index].quotes.split(' || ')) === null || _nextList$index$quote === void 0 ? void 0 : _nextList$index$quote[0];
1986
+ nextList[index].quotes = (_getAtomDisplayText$s = getAtomDisplayText(nextList[index]).split(' || ')) === null || _getAtomDisplayText$s === void 0 ? void 0 : _getAtomDisplayText$s[0];
1980
1987
  setCaseList(nextList);
1981
1988
  }
1982
1989
  return {
1983
1990
  className: cx('purple-name', {
1984
- notSelected: !v.quotes
1991
+ notSelected: !quotes
1985
1992
  }),
1986
1993
  onClick: function onClick(e) {
1987
1994
  return handleExpression(e, index, v);
1988
1995
  },
1989
1996
  node: _jsxs(_Fragment, {
1990
- children: [v.quotes ? v.quotes : __('customColumn.selectExpression'), renderDeleteIcon(v, index, groupType)]
1997
+ children: [quotes || __('customColumn.selectExpression'), renderDeleteIcon(v, index, groupType)]
1991
1998
  })
1992
1999
  };
1993
2000
  }
@@ -2084,6 +2091,7 @@ var FormulaList = forwardRef(function (props, ref) {
2084
2091
  var copyDom = function copyDom() {
2085
2092
  var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : -1;
2086
2093
  var positioned = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
2094
+ if (snapshotMode) return null;
2087
2095
  if (embedded) return null;
2088
2096
  if (!isCopy || selectedIndices.length === 0 && checkedItemsCount === 0) return null;
2089
2097
  return _jsx("div", {
@@ -2116,8 +2124,8 @@ var FormulaList = forwardRef(function (props, ref) {
2116
2124
  var showCheckbox = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
2117
2125
  var itemContent = itemDom(v, i, groupType);
2118
2126
  var isCompositeAtom = v.type === AtomsTypeEnum.CASE_WHEN || v.type === AtomsTypeEnum.AND_OR;
2119
- var showAfterArrow = canShowItemInsertArrows(v, groupType);
2120
- var showBeforeArrow = canShowItemInsertArrows(v, groupType);
2127
+ var showAfterArrow = !snapshotMode && canShowItemInsertArrows(v, groupType);
2128
+ var showBeforeArrow = !snapshotMode && canShowItemInsertArrows(v, groupType);
2121
2129
  return _jsx(React.Fragment, {
2122
2130
  children: _jsxs("div", {
2123
2131
  className: cx('Sqb-Filter-item', _defineProperty({
@@ -2156,7 +2164,7 @@ var FormulaList = forwardRef(function (props, ref) {
2156
2164
  ind: i,
2157
2165
  position: 'before',
2158
2166
  trigger: 'hover'
2159
- }), !embedded && showCheckbox && v.type !== AtomsTypeEnum.UNKNOWN && _jsx(Checkbox, {
2167
+ }), !snapshotMode && !embedded && showCheckbox && v.type !== AtomsTypeEnum.UNKNOWN && _jsx(Checkbox, {
2160
2168
  className: 'item-check',
2161
2169
  checked: selectedIndices.includes(i),
2162
2170
  disabled: globalSelectionActive && globalSelectionOwner !== myInstanceIdRef.current,
@@ -2166,7 +2174,7 @@ var FormulaList = forwardRef(function (props, ref) {
2166
2174
  }
2167
2175
  }), _jsx("div", {
2168
2176
  style: {
2169
- pointerEvents: isCheck || store.isMetabaseCopy ? 'none' : 'auto'
2177
+ pointerEvents: snapshotMode || isCheck || store.isMetabaseCopy ? 'none' : 'auto'
2170
2178
  },
2171
2179
  className: cx('Sqb-Filter-item-node', {
2172
2180
  openCheck: isCheck && !isCompositeAtom
@@ -2210,6 +2218,7 @@ var FormulaList = forwardRef(function (props, ref) {
2210
2218
  });
2211
2219
  };
2212
2220
  var renderDeleteIcon = function renderDeleteIcon(item, index, groupType) {
2221
+ if (snapshotMode) return null;
2213
2222
  if (!canDeleteItem(item, groupType)) return null;
2214
2223
  return _jsx(Tooltip, {
2215
2224
  title: "\u5220\u9664",
@@ -2262,8 +2271,8 @@ var FormulaList = forwardRef(function (props, ref) {
2262
2271
  trigger: 'hover'
2263
2272
  });
2264
2273
  };
2265
- var showFormulaListZoom = !embedded && enableZoom;
2266
- var showCopyTools = !embedded && isCopy && caseList.length > 0;
2274
+ var showFormulaListZoom = !snapshotMode && !embedded && enableZoom;
2275
+ var showCopyTools = !snapshotMode && !embedded && isCopy && caseList.length > 0;
2267
2276
  var renderFormulaListZoomButton = function renderFormulaListZoomButton() {
2268
2277
  return _jsx(Tooltip, {
2269
2278
  title: "\u7F16\u8F91",
@@ -2328,7 +2337,7 @@ var FormulaList = forwardRef(function (props, ref) {
2328
2337
  children: renderFormulaListZoomButton()
2329
2338
  }), caseList.map(function (item, itemIndex) {
2330
2339
  return renderItemShell(item, itemIndex, 'single');
2331
- }), Array.from(caseList).length < 1 && selectOperator({
2340
+ }), !snapshotMode && Array.from(caseList).length < 1 && selectOperator({
2332
2341
  triggerElement: function triggerElement() {
2333
2342
  return _jsx(Tooltip, {
2334
2343
  title: "\u6DFB\u52A0",
@@ -2342,7 +2351,7 @@ var FormulaList = forwardRef(function (props, ref) {
2342
2351
  ind: -1,
2343
2352
  position: 'add',
2344
2353
  trigger: 'click'
2345
- }), !embedded && copyDom(-1, false), !embedded && showPreview && _jsx("div", {
2354
+ }), !embedded && !snapshotMode && copyDom(-1, false), !snapshotMode && !embedded && showPreview && _jsx("div", {
2346
2355
  className: cx("mb-2 font-bold uppercase tracking-wider preview-box"),
2347
2356
  style: {
2348
2357
  fontSize: 12,
@@ -2372,7 +2381,7 @@ var FormulaList = forwardRef(function (props, ref) {
2372
2381
  onClick: showFormulaDiff,
2373
2382
  children: "\u5BF9\u6BD4\u7ED3\u679C"
2374
2383
  })]
2375
- }), _jsx("div", {
2384
+ }), !snapshotMode && _jsx("div", {
2376
2385
  className: 'errorMsg mt-2',
2377
2386
  children: errorInfo.isError && _jsxs(_Fragment, {
2378
2387
  children: ["\u63D0\u793A\uFF1A", _jsx("span", {
@@ -6,7 +6,8 @@ interface PropsType {
6
6
  table?: Partial<MetaData_TableType>;
7
7
  metaIndex?: number;
8
8
  groupIndex: number;
9
+ readonly?: boolean;
9
10
  onChange: (record: MetaData_ColumnsType[], newMetaList?: any[]) => void;
10
11
  }
11
- declare const SelectColumn: ({ data, table, metaIndex, groupIndex, onChange }: PropsType) => React.JSX.Element;
12
+ declare const SelectColumn: ({ data, table, metaIndex, groupIndex, readonly, onChange, }: PropsType) => React.JSX.Element;
12
13
  export default SelectColumn;
@@ -22,6 +22,8 @@ var SelectColumn = function SelectColumn(_ref) {
22
22
  table = _ref.table,
23
23
  metaIndex = _ref.metaIndex,
24
24
  groupIndex = _ref.groupIndex,
25
+ _ref$readonly = _ref.readonly,
26
+ readonly = _ref$readonly === void 0 ? false : _ref$readonly,
25
27
  onChange = _ref.onChange;
26
28
  var _useState = useState([]),
27
29
  _useState2 = _slicedToArray(_useState, 2),
@@ -88,6 +90,7 @@ var SelectColumn = function SelectColumn(_ref) {
88
90
  }, [isAllSelect]);
89
91
  function onSelect(columns, newMetaList) {
90
92
  var useColumnsDirectly = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
93
+ if (readonly) return;
91
94
  var originalData = cloneDeep(originList);
92
95
  var mergedColumns = useColumnsDirectly ? cloneDeep(columns) : originalData.map(function (item) {
93
96
  var match = columns.find(function (col) {
@@ -100,6 +103,7 @@ var SelectColumn = function SelectColumn(_ref) {
100
103
  typeof onChange === 'function' && onChange(mergedColumns, newMetaList);
101
104
  }
102
105
  var onChangeFieldAlias = function onChangeFieldAlias(val, i) {
106
+ if (readonly) return;
103
107
  var fieldAlias = val || '';
104
108
  var currentColumn = columns[i];
105
109
  Modal.confirm({
@@ -177,11 +181,15 @@ var SelectColumn = function SelectColumn(_ref) {
177
181
  return _jsx("div", {
178
182
  className: "Sqb-SelectColumn--box",
179
183
  children: _jsxs("div", {
184
+ style: readonly ? {
185
+ cursor: 'default'
186
+ } : undefined,
180
187
  children: [_jsxs("div", {
181
188
  className: 'Sqb-SelectColumn--header pt-2',
182
189
  children: [_jsx("div", {
183
190
  className: cx("SelectColumn-border mb-2 pb-2 px-2 flex items-center", {}),
184
191
  onClick: function onClick() {
192
+ if (readonly) return;
185
193
  var newColumns = columns.map(function (v) {
186
194
  return _objectSpread(_objectSpread({}, v), {}, {
187
195
  select: !isAllSelect
@@ -209,6 +217,7 @@ var SelectColumn = function SelectColumn(_ref) {
209
217
  return _jsxs("div", {
210
218
  className: 'pb-2 px-2 flex items-center',
211
219
  onClick: function onClick() {
220
+ if (readonly) return;
212
221
  var newColumns = cloneDeep(columns);
213
222
  newColumns[i].select = !v.select;
214
223
  onSelect(newColumns);
@@ -218,7 +227,7 @@ var SelectColumn = function SelectColumn(_ref) {
218
227
  children: _jsx(SelectIcon, {})
219
228
  }) : _jsx("div", {
220
229
  className: 'no-select mr-2'
221
- }), v.name, v.name_zh ? " \uFF08".concat(v.name_zh, "\uFF09") : '', v.fieldAlias ? " as ".concat(v.fieldAlias) : '', store.fieldEnableAlias && _jsx(Tooltip, {
230
+ }), v.name, v.name_zh ? " \uFF08".concat(v.name_zh, "\uFF09") : '', v.fieldAlias ? " as ".concat(v.fieldAlias) : '', store.fieldEnableAlias && !readonly && _jsx(Tooltip, {
222
231
  title: __('SqlQueryBuilder.alias'),
223
232
  children: _jsx(Button, {
224
233
  className: ':Sqb-TableName-as',
@@ -34,6 +34,7 @@ var Metabase = function Metabase(props) {
34
34
  rightClickMenu = _props$rightClickMenu === void 0 ? EMPTY_ARRAY : _props$rightClickMenu,
35
35
  onRightClickMenuClick = props.onRightClickMenuClick;
36
36
  var store = useStore();
37
+ var readonlyMode = readonly || store.snapshotMode;
37
38
  var _useState = useState(false),
38
39
  _useState2 = _slicedToArray(_useState, 2),
39
40
  saveLoading = _useState2[0],
@@ -153,7 +154,18 @@ var Metabase = function Metabase(props) {
153
154
  store.setRightClickMenu(rightClickMenu || EMPTY_ARRAY);
154
155
  store.setRightClickMenuClick(onRightClickMenuClick);
155
156
  }, [rightClickMenu, onRightClickMenuClick]);
157
+ useEffect(function () {
158
+ if (!readonlyMode) return;
159
+ store.setPopup({
160
+ visible: false
161
+ });
162
+ store.setPopup2({
163
+ visible: false
164
+ });
165
+ store.setRightClickMenuState(null);
166
+ }, [readonlyMode]);
156
167
  var copy = function copy() {
168
+ if (readonlyMode) return null;
157
169
  return _jsxs(Space, {
158
170
  children: [moduleCopy && _jsx(_Fragment, {
159
171
  children: _jsx(Tooltip, {
@@ -213,10 +225,22 @@ var Metabase = function Metabase(props) {
213
225
  })]
214
226
  });
215
227
  };
228
+ var stopReadonlyInteraction = function stopReadonlyInteraction(e) {
229
+ var _target$closest;
230
+ if (!readonlyMode) return;
231
+ var target = e.target;
232
+ if (target !== null && target !== void 0 && (_target$closest = target.closest) !== null && _target$closest !== void 0 && _target$closest.call(target, '[data-sqb-snapshot-allow="true"]')) return;
233
+ e.preventDefault();
234
+ e.stopPropagation();
235
+ };
216
236
  return _jsx(VisualBox, {
217
237
  ref: store.popupContainer,
218
238
  onContextMenu: function onContextMenu(e) {
219
- return openSqbRightClickMenu(store, e);
239
+ if (readonlyMode) {
240
+ e.preventDefault();
241
+ return;
242
+ }
243
+ openSqbRightClickMenu(store, e);
220
244
  },
221
245
  children: _jsxs("div", {
222
246
  className: 'Sqb',
@@ -228,6 +252,8 @@ var Metabase = function Metabase(props) {
228
252
  if (v.type === 'union' && v.union) {
229
253
  return _jsx("div", {
230
254
  className: cx("Sqb-list"),
255
+ onMouseDownCapture: stopReadonlyInteraction,
256
+ onClickCapture: stopReadonlyInteraction,
231
257
  children: _jsx(Union, {
232
258
  union: v.union,
233
259
  meta: v,
@@ -237,6 +263,8 @@ var Metabase = function Metabase(props) {
237
263
  }
238
264
  return _jsx("div", {
239
265
  className: cx("Sqb-list"),
266
+ onMouseDownCapture: stopReadonlyInteraction,
267
+ onClickCapture: stopReadonlyInteraction,
240
268
  children: v === null || v === void 0 || (_v$list2 = v.list) === null || _v$list2 === void 0 ? void 0 : _v$list2.map(function (meta) {
241
269
  var metaType = meta.type,
242
270
  metaKey = meta.metaKey,
@@ -249,7 +277,7 @@ var Metabase = function Metabase(props) {
249
277
  }, metaKey);
250
278
  })
251
279
  }, 'group' + index);
252
- }), !readonly && typeof onOk === 'function' ? _jsx(Button, {
280
+ }), !readonlyMode && typeof onOk === 'function' ? _jsx(Button, {
253
281
  type: 'primary',
254
282
  className: ":Sqb-btn",
255
283
  loading: saveLoading,
@@ -63,7 +63,7 @@ var Header = function Header(props) {
63
63
  })
64
64
  }), _jsx(Space, {
65
65
  className: cx(':Sqb-item-actions'),
66
- children: props.onClose && !store.isMetabaseCopy && _jsx(Tooltip, {
66
+ children: props.onClose && !store.isMetabaseCopy && !store.snapshotMode && _jsx(Tooltip, {
67
67
  placement: 'top',
68
68
  title: __('data.del'),
69
69
  children: _jsx(CloseIcon2, {
@@ -2,12 +2,15 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Badge, Button, Tooltip } from '@gingkoo/pandora';
3
3
  import { ExclamationCircleFill } from '@gingkoo/pandora-icons';
4
4
  import { __ } from '../../../locale';
5
+ import { useStore } from '../../../hooks/use-provider';
5
6
  var ItemName = function ItemName(props) {
6
7
  var children = props.children,
7
8
  isError = props.isError,
8
9
  message = props.message;
10
+ var store = useStore();
11
+ var showError = isError && !store.snapshotMode;
9
12
  return _jsx(Badge, {
10
- count: isError ? _jsx(Tooltip, {
13
+ count: showError ? _jsx(Tooltip, {
11
14
  title: message || __('metabase.verify'),
12
15
  children: _jsx(Button, {
13
16
  className: 'isError',
@@ -23,7 +23,7 @@ var ItemWrapper = function ItemWrapper(props) {
23
23
  store.setMetabaseCopyModule(data);
24
24
  storage._metabaseCopyModule = data;
25
25
  };
26
- if (store.isMetabaseCopy && meta.type !== 'union' && meta.type !== 'data') {
26
+ if (store.isMetabaseCopy && !store.snapshotMode && meta.type !== 'union' && meta.type !== 'data') {
27
27
  return _jsx(Checkbox, {
28
28
  checked: metaIsCheck(store.metabaseCopyModule, meta),
29
29
  onChange: function onChange(val) {
@@ -314,8 +314,9 @@ var NextDom = function NextDom(props) {
314
314
  storage._metabaseCopyModule = [];
315
315
  }
316
316
  };
317
+ if (store.snapshotMode) return null;
317
318
  return _jsxs(_Fragment, {
318
- children: [store.metabaseCopyModule && store.metabaseCopyModule.length > 0 && isShowAdd && _jsx(Tooltip, {
319
+ children: [store.metabaseCopyModule && store.metabaseCopyModule.length > 0 && isShowAdd && !store.snapshotMode && _jsx(Tooltip, {
319
320
  title: "\u5728\u6B64\u5904\u7C98\u8D34",
320
321
  children: _jsxs(Button, {
321
322
  className: cx(':Sqb-item-copy'),
@@ -339,7 +340,8 @@ var NextDom = function NextDom(props) {
339
340
  large: size === IconSIzeEnum.LARGE
340
341
  }),
341
342
  onClick: function onClick() {
342
- return handleClick(v);
343
+ if (store.snapshotMode) return;
344
+ handleClick(v);
343
345
  },
344
346
  children: _jsxs("div", {
345
347
  children: [info.icon, size === IconSIzeEnum.LARGE ? _jsx("div", {
@@ -318,7 +318,7 @@ var CustomColumn = function CustomColumn(props) {
318
318
  onClick: function onClick(e) {
319
319
  return showSubQuery(e, i);
320
320
  },
321
- children: [v.name, _jsx("span", {
321
+ children: [v.name, !store.snapshotMode && _jsx("span", {
322
322
  style: {
323
323
  fontSize: 0
324
324
  },
@@ -330,7 +330,7 @@ var CustomColumn = function CustomColumn(props) {
330
330
  })
331
331
  })
332
332
  }, i);
333
- }), _jsx("div", {
333
+ }), !store.snapshotMode && _jsx("div", {
334
334
  className: "Sqb-TableName gray-name",
335
335
  onClick: function onClick(e) {
336
336
  showSubQuery(e, -1);
@@ -373,6 +373,7 @@ var JoinData = function JoinData(props) {
373
373
  table: meta.table2,
374
374
  metaIndex: index,
375
375
  groupIndex: groupIndex,
376
+ readonly: store.snapshotMode,
376
377
  onChange: function onChange(data, newMetaList) {
377
378
  var _newMetaList = newMetaList || store.metaList[groupIndex].list.slice();
378
379
  _newMetaList[index].columns = data;
@@ -1302,6 +1303,33 @@ var JoinData = function JoinData(props) {
1302
1303
  }
1303
1304
  return false;
1304
1305
  };
1306
+ var renderSwitchTypeButton = function renderSwitchTypeButton(position, expressionIndex) {
1307
+ if (store.snapshotMode) {
1308
+ return _jsx("span", {
1309
+ "aria-hidden": 'true',
1310
+ style: {
1311
+ display: 'inline-block',
1312
+ marginRight: 8
1313
+ }
1314
+ });
1315
+ }
1316
+ return _jsx(Tooltip, {
1317
+ title: __('SqlQueryBuilder.switch'),
1318
+ children: _jsx(Button, {
1319
+ disabled: meta.readonly,
1320
+ primary: true,
1321
+ ghost: true,
1322
+ className: 'mr-2 operator-icon',
1323
+ icon: _jsx(Repeat, {}),
1324
+ onClick: function onClick(e) {
1325
+ onChangeType(e, {
1326
+ position: position,
1327
+ index: expressionIndex
1328
+ });
1329
+ }
1330
+ })
1331
+ });
1332
+ };
1305
1333
  return _jsx(Wrapper, {
1306
1334
  className: cx("Sqb-item"),
1307
1335
  children: _jsxs("div", {
@@ -1362,7 +1390,7 @@ var JoinData = function JoinData(props) {
1362
1390
  },
1363
1391
  children: [subQuerySelected && _jsx(_Fragment, {
1364
1392
  children: function () {
1365
- var showButton = store.tableEnableAlias || tableIsError() && isDel;
1393
+ var showButton = !store.snapshotMode && (store.tableEnableAlias || tableIsError() && isDel);
1366
1394
  var icon = isDel ? _jsx(ExclamationCircleFill, {}) : store.tableEnableAlias ? 'As' : '';
1367
1395
  return showButton ? _jsx(Tooltip, {
1368
1396
  title: __(tableIsError() ? isDel ? 'metabase.verify' : 'SqlQueryBuilder.repeatAlias' : 'SqlQueryBuilder.alias'),
@@ -1403,7 +1431,7 @@ var JoinData = function JoinData(props) {
1403
1431
  onClick: selectTable,
1404
1432
  children: [table2Selected && _jsx(_Fragment, {
1405
1433
  children: function () {
1406
- var showButton = store.tableEnableAlias || tableIsError() && isDel;
1434
+ var showButton = !store.snapshotMode && (store.tableEnableAlias || tableIsError() && isDel);
1407
1435
  var icon = isDel ? _jsx(ExclamationCircleFill, {}) : store.tableEnableAlias ? 'As' : '';
1408
1436
  return showButton ? _jsx(Tooltip, {
1409
1437
  title: __(tableIsError() ? isDel ? 'metabase.verify' : 'SqlQueryBuilder.repeatAlias' : 'SqlQueryBuilder.alias'),
@@ -1435,7 +1463,7 @@ var JoinData = function JoinData(props) {
1435
1463
  }()
1436
1464
  }), table2Selected ? "".concat(meta.table2.datasourceName, ".").concat(meta.table2.name, " ").concat((_meta$table7 = meta.table2) !== null && _meta$table7 !== void 0 && _meta$table7.alias && store.tableEnableAlias ? "as ".concat((_meta$table8 = meta.table2) === null || _meta$table8 === void 0 ? void 0 : _meta$table8.alias) : '') : __('SqlQueryBuilder.pickTable')]
1437
1465
  })
1438
- }), store.showSubquery && _jsx(Tooltip, {
1466
+ }), store.showSubquery && (!store.snapshotMode || meta.isSubquery) && _jsx(Tooltip, {
1439
1467
  title: __('SqlQueryBuilder.switchSubQuery'),
1440
1468
  children: _jsx(Button, {
1441
1469
  disabled: meta.readonly,
@@ -1452,40 +1480,10 @@ var JoinData = function JoinData(props) {
1452
1480
  children: [i == 0 && _jsx("span", {
1453
1481
  className: 'ml-2 mr-4 text-gray-500',
1454
1482
  children: "on"
1455
- }), renderItem(v.lhs, ExpressionsEnum.LEFT, i), _jsx(Tooltip, {
1456
- title: __('SqlQueryBuilder.switch'),
1457
- children: _jsx(Button, {
1458
- disabled: meta.readonly,
1459
- primary: true,
1460
- ghost: true,
1461
- className: 'mr-2 operator-icon',
1462
- icon: _jsx(Repeat, {}),
1463
- onClick: function onClick(e) {
1464
- onChangeType(e, {
1465
- position: ExpressionsEnum.LEFT,
1466
- index: i
1467
- });
1468
- }
1469
- })
1470
- }), _jsx("span", {
1483
+ }), renderItem(v.lhs, ExpressionsEnum.LEFT, i), renderSwitchTypeButton(ExpressionsEnum.LEFT, i), _jsx("span", {
1471
1484
  className: 'mr-2 text-gray-500',
1472
1485
  children: "="
1473
- }), renderItem(v.rhs, ExpressionsEnum.RIGHT, i), _jsx(Tooltip, {
1474
- title: __('SqlQueryBuilder.switch'),
1475
- children: _jsx(Button, {
1476
- disabled: meta.readonly,
1477
- primary: true,
1478
- ghost: true,
1479
- className: 'mr-2 operator-icon',
1480
- icon: _jsx(Repeat, {}),
1481
- onClick: function onClick(e) {
1482
- onChangeType(e, {
1483
- position: ExpressionsEnum.RIGHT,
1484
- index: i
1485
- });
1486
- }
1487
- })
1488
- }), _jsx(Tooltip, {
1486
+ }), renderItem(v.rhs, ExpressionsEnum.RIGHT, i), renderSwitchTypeButton(ExpressionsEnum.RIGHT, i), !store.snapshotMode && _jsx(Tooltip, {
1489
1487
  title: __('SqlQueryBuilder.add'),
1490
1488
  children: _jsx(Dropdown, {
1491
1489
  trigger: ['click'],
@@ -1501,7 +1499,7 @@ var JoinData = function JoinData(props) {
1501
1499
  icon: _jsx(FfPlus, {})
1502
1500
  })
1503
1501
  })
1504
- }), _jsx(Tooltip, {
1502
+ }), !store.snapshotMode && _jsx(Tooltip, {
1505
1503
  title: __('SqlQueryBuilder.del'),
1506
1504
  children: _jsx(Button, {
1507
1505
  disabled: meta.readonly,
@@ -1557,7 +1555,7 @@ var JoinData = function JoinData(props) {
1557
1555
  children: v.quotes || __('joinData.selectExpression')
1558
1556
  }, i)
1559
1557
  })
1560
- }), _jsx(Tooltip, {
1558
+ }), !store.snapshotMode && _jsx(Tooltip, {
1561
1559
  title: __('SqlQueryBuilder.add'),
1562
1560
  children: _jsx(Dropdown, {
1563
1561
  trigger: ['click'],
@@ -1573,7 +1571,7 @@ var JoinData = function JoinData(props) {
1573
1571
  icon: _jsx(FfPlus, {})
1574
1572
  })
1575
1573
  })
1576
- }), _jsx(Tooltip, {
1574
+ }), !store.snapshotMode && _jsx(Tooltip, {
1577
1575
  title: __('SqlQueryBuilder.del'),
1578
1576
  children: _jsx(Button, {
1579
1577
  disabled: meta.readonly,
@@ -1608,7 +1606,7 @@ var JoinData = function JoinData(props) {
1608
1606
  type: ChangeType.expressions
1609
1607
  });
1610
1608
  }
1611
- }), _jsx(Tooltip, {
1609
+ }), !store.snapshotMode && _jsx(Tooltip, {
1612
1610
  title: __('SqlQueryBuilder.add'),
1613
1611
  children: _jsx(Dropdown, {
1614
1612
  trigger: ['click'],
@@ -1624,7 +1622,7 @@ var JoinData = function JoinData(props) {
1624
1622
  icon: _jsx(FfPlus, {})
1625
1623
  })
1626
1624
  })
1627
- }), _jsx(Tooltip, {
1625
+ }), !store.snapshotMode && _jsx(Tooltip, {
1628
1626
  title: __('SqlQueryBuilder.del'),
1629
1627
  children: _jsx(Button, {
1630
1628
  disabled: meta.readonly,
@@ -1638,7 +1636,7 @@ var JoinData = function JoinData(props) {
1638
1636
  })]
1639
1637
  }, i);
1640
1638
  }
1641
- })), ((_meta$table1 = meta.table2) === null || _meta$table1 === void 0 ? void 0 : _meta$table1.name) && ((_meta$table10 = meta.table1) === null || _meta$table10 === void 0 ? void 0 : _meta$table10.name) && (((_meta$expressions2 = meta.expressions) === null || _meta$expressions2 === void 0 ? void 0 : _meta$expressions2.length) || 0) < 1 && _jsx(Tooltip, {
1639
+ })), !store.snapshotMode && ((_meta$table1 = meta.table2) === null || _meta$table1 === void 0 ? void 0 : _meta$table1.name) && ((_meta$table10 = meta.table1) === null || _meta$table10 === void 0 ? void 0 : _meta$table10.name) && (((_meta$expressions2 = meta.expressions) === null || _meta$expressions2 === void 0 ? void 0 : _meta$expressions2.length) || 0) < 1 && _jsx(Tooltip, {
1642
1640
  title: __('SqlQueryBuilder.add'),
1643
1641
  children: _jsx(Dropdown, {
1644
1642
  trigger: ['click'],
@@ -1656,6 +1654,7 @@ var JoinData = function JoinData(props) {
1656
1654
  })
1657
1655
  }), columnsSelected && (((_store$showMainColumn = store.showMainColumn[groupIndex]) === null || _store$showMainColumn === void 0 ? void 0 : _store$showMainColumn.showColumn) || ((_store$showMainColumn2 = store.showMainColumn[groupIndex]) === null || _store$showMainColumn2 === void 0 ? void 0 : _store$showMainColumn2.index) < index) && (!store.isExit || store.isSubquery) && store.showFields && _jsx("div", {
1658
1656
  className: "Sqb-TableColumns",
1657
+ "data-sqb-snapshot-allow": 'true',
1659
1658
  onClick: selectColumns,
1660
1659
  children: __('SqlQueryBuilder.columns')
1661
1660
  })]
@@ -22,6 +22,7 @@ var PermissionTable = function PermissionTable(props) {
22
22
  var _getHelper = getHelper(store.metaList[groupIndex].list, meta),
23
23
  prevTables = _getHelper.prevTables;
24
24
  function selectTable(e) {
25
+ if (store.snapshotMode) return;
25
26
  var _getHelper2 = getHelper(store.metaList[groupIndex].list, meta),
26
27
  ExistAboveGroupBy = _getHelper2.ExistAboveGroupBy,
27
28
  prevList = _getHelper2.prevList,
@@ -14,6 +14,7 @@ var RowLimit = function RowLimit(props) {
14
14
  var store = useStore();
15
15
  var index = findIndex(store.metaList[groupIndex].list, meta);
16
16
  function handleChange(inputValue) {
17
+ if (store.snapshotMode) return;
17
18
  var newMeta = store.metaList[groupIndex].list.slice();
18
19
  newMeta[index].limit = inputValue;
19
20
  store.setMeta(newMeta, groupIndex);
@@ -200,7 +200,7 @@ var Sort = function Sort(props) {
200
200
  onClick: function onClick() {
201
201
  return handleSort(i);
202
202
  },
203
- children: [v.sort === SortEnum.asc ? _jsx(UpArrowIcon, {}) : _jsx(DownArrowIcon, {}), getName(v.expression), _jsx("span", {
203
+ children: [v.sort === SortEnum.asc ? _jsx(UpArrowIcon, {}) : _jsx(DownArrowIcon, {}), getName(v.expression), !store.snapshotMode && _jsx("span", {
204
204
  style: {
205
205
  fontSize: 0
206
206
  },
@@ -212,7 +212,7 @@ var Sort = function Sort(props) {
212
212
  }, i)
213
213
  })
214
214
  }, i);
215
- }), _jsx("div", {
215
+ }), !store.snapshotMode && _jsx("div", {
216
216
  className: "Sqb-TableName gray-name",
217
217
  onClick: addSortColumn,
218
218
  children: _jsx(AddIcon, {})
@@ -9,7 +9,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
9
9
  import { useState } from 'react';
10
10
  import cx from 'classnames';
11
11
  import { __ } from '../../../locale';
12
- import { findIndex, getHelper } from '../../../utils';
12
+ import { findIndex, getAtomDisplayText, getHelper } from '../../../utils';
13
13
  import { TypeEnum, SQL_COLUMN_TYPE } from '../../../store/enum';
14
14
  import { MetaSummarize_Enum, AtomsTypeEnum, ChangeType } from '../../../store/types';
15
15
  import { Tooltip, Button, Modal, Input, Toast } from '@gingkoo/pandora';
@@ -26,6 +26,9 @@ var _getSummaryText = function getSummaryText() {
26
26
  var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
27
27
  var itemToText = function itemToText(item) {
28
28
  if (!item) return '';
29
+ if (item.type === AtomsTypeEnum.FIELD || item.type === AtomsTypeEnum.EXPRESSION || item.type === AtomsTypeEnum.FORMULA || item.type === AtomsTypeEnum.COLLECTION || item.type === AtomsTypeEnum.CASE_WHEN || item.type === AtomsTypeEnum.AND_OR) {
30
+ return getAtomDisplayText(item);
31
+ }
29
32
  if (item.quotes) return item.quotes;
30
33
  if (item.fieldName) return item.fieldAlias || item.fieldName;
31
34
  if (item.type === AtomsTypeEnum.FORMULA) {
@@ -519,7 +522,7 @@ var GroupBy = function GroupBy(props) {
519
522
  return handleUpdate(e, i);
520
523
  },
521
524
  children: [v.quotes && _jsx(_Fragment, {
522
- children: store.groupByEnableAlias && _jsx(Tooltip, {
525
+ children: store.groupByEnableAlias && !store.snapshotMode && _jsx(Tooltip, {
523
526
  title: !isValidSQLAlias(v === null || v === void 0 ? void 0 : v.fieldAlias) ? __('SqlQueryBuilder.aliasForRules') : __('SqlQueryBuilder.alias'),
524
527
  children: _jsx(Button, {
525
528
  className: cx(':Sqb-TableName-as :Sqb-TableName green-name', _defineProperty({}, 'isError', !isValidSQLAlias(v === null || v === void 0 ? void 0 : v.fieldAlias))),
@@ -534,7 +537,7 @@ var GroupBy = function GroupBy(props) {
534
537
  }
535
538
  })
536
539
  })
537
- }), "".concat(v.quotes, " ").concat(v.fieldAlias ? "as ".concat(v.fieldAlias) : ''), _jsx("span", {
540
+ }), "".concat(v.quotes, " ").concat(v.fieldAlias ? "as ".concat(v.fieldAlias) : ''), !store.snapshotMode && _jsx("span", {
538
541
  style: {
539
542
  fontSize: 0
540
543
  },
@@ -546,7 +549,7 @@ var GroupBy = function GroupBy(props) {
546
549
  })
547
550
  })
548
551
  }, i);
549
- }), _jsx("div", {
552
+ }), !store.snapshotMode && _jsx("div", {
550
553
  className: cx("Sqb-TableName green-name", {
551
554
  notSelected: notBySelected
552
555
  }),