@gingkoo/pandora-metabase 1.0.149 → 1.0.150

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.
@@ -22,6 +22,19 @@ var _Loading = _interopRequireDefault(require("../../../common/Loading"));
22
22
  var _locale = require("../../../locale");
23
23
  var _icons = require("../../icons");
24
24
  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); }
25
+ var EMPTY_ARRAY = [];
26
+ function isStringArrayEqual(left, right) {
27
+ return left.length === right.length && left.every(function (item, index) {
28
+ return item === right[index];
29
+ });
30
+ }
31
+ function isSelectedTableTypesMapEqual(left, right) {
32
+ var leftKeys = Object.keys(left);
33
+ var rightKeys = Object.keys(right);
34
+ return isStringArrayEqual(leftKeys, rightKeys) && leftKeys.every(function (key) {
35
+ return isStringArrayEqual(left[key] || [], right[key] || []);
36
+ });
37
+ }
25
38
  function focusWithoutScroll(input) {
26
39
  if (!input) return;
27
40
  setTimeout(function () {
@@ -78,9 +91,9 @@ function filterDatasourceTable(sourceTable, searchVal, selectedTableTypesMap) {
78
91
  }
79
92
  var SelectTable = function SelectTable(_ref) {
80
93
  var _ref$data = _ref.data,
81
- data = _ref$data === void 0 ? [] : _ref$data,
94
+ data = _ref$data === void 0 ? EMPTY_ARRAY : _ref$data,
82
95
  _ref$sourceTable = _ref.sourceTable,
83
- sourceTable = _ref$sourceTable === void 0 ? [] : _ref$sourceTable,
96
+ sourceTable = _ref$sourceTable === void 0 ? EMPTY_ARRAY : _ref$sourceTable,
84
97
  value = _ref.value,
85
98
  _ref$onChange = _ref.onChange,
86
99
  onChange = _ref$onChange === void 0 ? function () {} : _ref$onChange,
@@ -188,21 +201,25 @@ var SelectTable = function SelectTable(_ref) {
188
201
  }, [sourceTable, flatSearchVal, selectedFlatTableTypes]);
189
202
  (0, _react.useEffect)(function () {
190
203
  setSelectedTableTypes(function (prev) {
191
- return prev.filter(function (v) {
204
+ var next = prev.filter(function (v) {
192
205
  return tableTypeOptions.includes(v);
193
206
  });
207
+ return isStringArrayEqual(prev, next) ? prev : next;
194
208
  });
195
209
  }, [tableTypeOptions]);
196
210
  (0, _react.useEffect)(function () {
197
211
  setSelectedFlatTableTypes(function (prev) {
198
212
  var next = Object.keys(flatTableTypeOptions).reduce(function (mo, datasourceId) {
199
213
  var selected = prev[datasourceId] || [];
200
- mo[datasourceId] = selected.filter(function (v) {
214
+ var nextSelected = selected.filter(function (v) {
201
215
  return flatTableTypeOptions[datasourceId].includes(v);
202
216
  });
217
+ if (nextSelected.length) {
218
+ mo[datasourceId] = nextSelected;
219
+ }
203
220
  return mo;
204
221
  }, {});
205
- return next;
222
+ return isSelectedTableTypesMapEqual(prev, next) ? prev : next;
206
223
  });
207
224
  }, [flatTableTypeOptions]);
208
225
  function onInput(e) {
@@ -29,6 +29,7 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
29
29
  var VisualBox = _styledComponents["default"].div.attrs({
30
30
  className: 'visual-box scroller'
31
31
  })(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])([""])));
32
+ var EMPTY_ARRAY = [];
32
33
  var Metabase = function Metabase(props) {
33
34
  var _props$btnText = props.btnText,
34
35
  btnText = _props$btnText === void 0 ? '' : _props$btnText,
@@ -39,7 +40,7 @@ var Metabase = function Metabase(props) {
39
40
  moduleCopy = props.moduleCopy,
40
41
  popupZIndex = props.popupZIndex,
41
42
  _props$rightClickMenu = props.rightClickMenu,
42
- rightClickMenu = _props$rightClickMenu === void 0 ? [] : _props$rightClickMenu,
43
+ rightClickMenu = _props$rightClickMenu === void 0 ? EMPTY_ARRAY : _props$rightClickMenu,
43
44
  onRightClickMenuClick = props.onRightClickMenuClick;
44
45
  var store = (0, _useProvider.useStore)();
45
46
  var _useState = (0, _react.useState)(false),
@@ -158,7 +159,7 @@ var Metabase = function Metabase(props) {
158
159
  };
159
160
  }();
160
161
  (0, _react.useEffect)(function () {
161
- store.setRightClickMenu(rightClickMenu || []);
162
+ store.setRightClickMenu(rightClickMenu || EMPTY_ARRAY);
162
163
  store.setRightClickMenuClick(onRightClickMenuClick);
163
164
  }, [rightClickMenu, onRightClickMenuClick]);
164
165
  var copy = function copy() {
package/lib/cjs/index.js CHANGED
@@ -20,6 +20,7 @@ var _utils = require("./utils");
20
20
  var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
21
21
  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); }
22
22
  var EMPTY_ARRAY = [];
23
+ var DEFAULT_TOOLBAR = ['filter', 'summarize', 'joinData', 'customColumn', 'sort', 'rowLimit'];
23
24
  var SqlVisionBuilder = _react["default"].forwardRef(function (props, ref) {
24
25
  var _props$loading = props.loading,
25
26
  loading = _props$loading === void 0 ? false : _props$loading,
@@ -37,7 +38,7 @@ var SqlVisionBuilder = _react["default"].forwardRef(function (props, ref) {
37
38
  _props$fieldNameTpl = props.fieldNameTpl,
38
39
  fieldNameTpl = _props$fieldNameTpl === void 0 ? '${name}' : _props$fieldNameTpl,
39
40
  _props$toolbar = props.toolbar,
40
- toolbar = _props$toolbar === void 0 ? ['filter', 'summarize', 'joinData', 'customColumn', 'sort', 'rowLimit'] : _props$toolbar,
41
+ toolbar = _props$toolbar === void 0 ? DEFAULT_TOOLBAR : _props$toolbar,
41
42
  _props$value = props.value,
42
43
  value = _props$value === void 0 ? EMPTY_ARRAY : _props$value,
43
44
  _props$sourceList = props.sourceList,
@@ -120,8 +121,8 @@ var SqlVisionBuilder = _react["default"].forwardRef(function (props, ref) {
120
121
  store.setToolbar(toolbar);
121
122
  store.setShowSubquery(showSubquery);
122
123
  store._setShowSubquery(subShowSubquery);
123
- store.setConstantList(constantList || []);
124
- store.setFormulaTemplates(formulaTemplates || []);
124
+ store.setConstantList(constantList || EMPTY_ARRAY);
125
+ store.setFormulaTemplates(formulaTemplates || EMPTY_ARRAY);
125
126
  store.setIgnoreGroupByType(ignoreGroupByType);
126
127
  store.setfilterCustomType(filterCustomType);
127
128
  store.setIsExit(isExit);
@@ -130,7 +131,7 @@ var SqlVisionBuilder = _react["default"].forwardRef(function (props, ref) {
130
131
  store.setGroupByEnableAlias(groupByEnableAlias);
131
132
  store.setIsSelectFields(isSelectFields);
132
133
  store.setTableFlat(tableFlat);
133
- store.setCopyType(copyType || []);
134
+ store.setCopyType(copyType || EMPTY_ARRAY);
134
135
  store.setMetabaseCopy(metabaseCopy);
135
136
  store.setModuleDiff(moduleDiff);
136
137
  store.setShowFormulaSql(showFormulaSql);
@@ -139,7 +140,7 @@ var SqlVisionBuilder = _react["default"].forwardRef(function (props, ref) {
139
140
  store.setIsSubquery(isSubquery);
140
141
  store.setModuleCopy(moduleCopy);
141
142
  store.setJoinAliasConflictCheck(joinAliasConflictCheck);
142
- store.setOperatorList(operatorList || []);
143
+ store.setOperatorList(operatorList || EMPTY_ARRAY);
143
144
  }, [showFields, fieldNameTpl, tableNameTpl, toolbar, showSubquery, subShowSubquery, constantList, formulaTemplates, ignoreGroupByType, filterCustomType, isExit, tableEnableAlias, fieldEnableAlias, groupByEnableAlias, isSelectFields, tableFlat, copyType, metabaseCopy, moduleDiff, showFormulaSql, showFormulaDiff, matchBrackets, getFormulaSqlCode, getFormulaDiffCode, isSubquery, moduleCopy, joinAliasConflictCheck, operatorList]);
144
145
  _react["default"].useImperativeHandle(ref, function () {
145
146
  return {
@@ -14,6 +14,19 @@ import Loading from '../../../common/Loading';
14
14
  import { __ } from '../../../locale';
15
15
  import { replaceTpl } from '../../../utils/helper';
16
16
  import { TableIcon, SearchIcon, DataSourceIcon, LeftArrowIcon } from '../../icons';
17
+ var EMPTY_ARRAY = [];
18
+ function isStringArrayEqual(left, right) {
19
+ return left.length === right.length && left.every(function (item, index) {
20
+ return item === right[index];
21
+ });
22
+ }
23
+ function isSelectedTableTypesMapEqual(left, right) {
24
+ var leftKeys = Object.keys(left);
25
+ var rightKeys = Object.keys(right);
26
+ return isStringArrayEqual(leftKeys, rightKeys) && leftKeys.every(function (key) {
27
+ return isStringArrayEqual(left[key] || [], right[key] || []);
28
+ });
29
+ }
17
30
  function focusWithoutScroll(input) {
18
31
  if (!input) return;
19
32
  setTimeout(function () {
@@ -70,9 +83,9 @@ function filterDatasourceTable(sourceTable, searchVal, selectedTableTypesMap) {
70
83
  }
71
84
  var SelectTable = function SelectTable(_ref) {
72
85
  var _ref$data = _ref.data,
73
- data = _ref$data === void 0 ? [] : _ref$data,
86
+ data = _ref$data === void 0 ? EMPTY_ARRAY : _ref$data,
74
87
  _ref$sourceTable = _ref.sourceTable,
75
- sourceTable = _ref$sourceTable === void 0 ? [] : _ref$sourceTable,
88
+ sourceTable = _ref$sourceTable === void 0 ? EMPTY_ARRAY : _ref$sourceTable,
76
89
  value = _ref.value,
77
90
  _ref$onChange = _ref.onChange,
78
91
  onChange = _ref$onChange === void 0 ? function () {} : _ref$onChange,
@@ -180,21 +193,25 @@ var SelectTable = function SelectTable(_ref) {
180
193
  }, [sourceTable, flatSearchVal, selectedFlatTableTypes]);
181
194
  useEffect(function () {
182
195
  setSelectedTableTypes(function (prev) {
183
- return prev.filter(function (v) {
196
+ var next = prev.filter(function (v) {
184
197
  return tableTypeOptions.includes(v);
185
198
  });
199
+ return isStringArrayEqual(prev, next) ? prev : next;
186
200
  });
187
201
  }, [tableTypeOptions]);
188
202
  useEffect(function () {
189
203
  setSelectedFlatTableTypes(function (prev) {
190
204
  var next = Object.keys(flatTableTypeOptions).reduce(function (mo, datasourceId) {
191
205
  var selected = prev[datasourceId] || [];
192
- mo[datasourceId] = selected.filter(function (v) {
206
+ var nextSelected = selected.filter(function (v) {
193
207
  return flatTableTypeOptions[datasourceId].includes(v);
194
208
  });
209
+ if (nextSelected.length) {
210
+ mo[datasourceId] = nextSelected;
211
+ }
195
212
  return mo;
196
213
  }, {});
197
- return next;
214
+ return isSelectedTableTypesMapEqual(prev, next) ? prev : next;
198
215
  });
199
216
  }, [flatTableTypeOptions]);
200
217
  function onInput(e) {
@@ -20,6 +20,7 @@ import SqbRightClickMenu, { openSqbRightClickMenu } from '../right-click-menu';
20
20
  var VisualBox = Styled.div.attrs({
21
21
  className: 'visual-box scroller'
22
22
  })(_templateObject || (_templateObject = _taggedTemplateLiteral([""])));
23
+ var EMPTY_ARRAY = [];
23
24
  var Metabase = function Metabase(props) {
24
25
  var _props$btnText = props.btnText,
25
26
  btnText = _props$btnText === void 0 ? '' : _props$btnText,
@@ -30,7 +31,7 @@ var Metabase = function Metabase(props) {
30
31
  moduleCopy = props.moduleCopy,
31
32
  popupZIndex = props.popupZIndex,
32
33
  _props$rightClickMenu = props.rightClickMenu,
33
- rightClickMenu = _props$rightClickMenu === void 0 ? [] : _props$rightClickMenu,
34
+ rightClickMenu = _props$rightClickMenu === void 0 ? EMPTY_ARRAY : _props$rightClickMenu,
34
35
  onRightClickMenuClick = props.onRightClickMenuClick;
35
36
  var store = useStore();
36
37
  var _useState = useState(false),
@@ -149,7 +150,7 @@ var Metabase = function Metabase(props) {
149
150
  };
150
151
  }();
151
152
  useEffect(function () {
152
- store.setRightClickMenu(rightClickMenu || []);
153
+ store.setRightClickMenu(rightClickMenu || EMPTY_ARRAY);
153
154
  store.setRightClickMenuClick(onRightClickMenuClick);
154
155
  }, [rightClickMenu, onRightClickMenuClick]);
155
156
  var copy = function copy() {
package/lib/es/index.js CHANGED
@@ -11,6 +11,7 @@ import Metabase from './components/metabase';
11
11
  import { reassembleByUnion, patchData, splitByUnion, normalizeLegacySummarizeForSave, normalizeAndOrStructure } from './utils';
12
12
  import cloneDeep from 'lodash/cloneDeep';
13
13
  var EMPTY_ARRAY = [];
14
+ var DEFAULT_TOOLBAR = ['filter', 'summarize', 'joinData', 'customColumn', 'sort', 'rowLimit'];
14
15
  var SqlVisionBuilder = React.forwardRef(function (props, ref) {
15
16
  var _props$loading = props.loading,
16
17
  loading = _props$loading === void 0 ? false : _props$loading,
@@ -28,7 +29,7 @@ var SqlVisionBuilder = React.forwardRef(function (props, ref) {
28
29
  _props$fieldNameTpl = props.fieldNameTpl,
29
30
  fieldNameTpl = _props$fieldNameTpl === void 0 ? '${name}' : _props$fieldNameTpl,
30
31
  _props$toolbar = props.toolbar,
31
- toolbar = _props$toolbar === void 0 ? ['filter', 'summarize', 'joinData', 'customColumn', 'sort', 'rowLimit'] : _props$toolbar,
32
+ toolbar = _props$toolbar === void 0 ? DEFAULT_TOOLBAR : _props$toolbar,
32
33
  _props$value = props.value,
33
34
  value = _props$value === void 0 ? EMPTY_ARRAY : _props$value,
34
35
  _props$sourceList = props.sourceList,
@@ -111,8 +112,8 @@ var SqlVisionBuilder = React.forwardRef(function (props, ref) {
111
112
  store.setToolbar(toolbar);
112
113
  store.setShowSubquery(showSubquery);
113
114
  store._setShowSubquery(subShowSubquery);
114
- store.setConstantList(constantList || []);
115
- store.setFormulaTemplates(formulaTemplates || []);
115
+ store.setConstantList(constantList || EMPTY_ARRAY);
116
+ store.setFormulaTemplates(formulaTemplates || EMPTY_ARRAY);
116
117
  store.setIgnoreGroupByType(ignoreGroupByType);
117
118
  store.setfilterCustomType(filterCustomType);
118
119
  store.setIsExit(isExit);
@@ -121,7 +122,7 @@ var SqlVisionBuilder = React.forwardRef(function (props, ref) {
121
122
  store.setGroupByEnableAlias(groupByEnableAlias);
122
123
  store.setIsSelectFields(isSelectFields);
123
124
  store.setTableFlat(tableFlat);
124
- store.setCopyType(copyType || []);
125
+ store.setCopyType(copyType || EMPTY_ARRAY);
125
126
  store.setMetabaseCopy(metabaseCopy);
126
127
  store.setModuleDiff(moduleDiff);
127
128
  store.setShowFormulaSql(showFormulaSql);
@@ -130,7 +131,7 @@ var SqlVisionBuilder = React.forwardRef(function (props, ref) {
130
131
  store.setIsSubquery(isSubquery);
131
132
  store.setModuleCopy(moduleCopy);
132
133
  store.setJoinAliasConflictCheck(joinAliasConflictCheck);
133
- store.setOperatorList(operatorList || []);
134
+ store.setOperatorList(operatorList || EMPTY_ARRAY);
134
135
  }, [showFields, fieldNameTpl, tableNameTpl, toolbar, showSubquery, subShowSubquery, constantList, formulaTemplates, ignoreGroupByType, filterCustomType, isExit, tableEnableAlias, fieldEnableAlias, groupByEnableAlias, isSelectFields, tableFlat, copyType, metabaseCopy, moduleDiff, showFormulaSql, showFormulaDiff, matchBrackets, getFormulaSqlCode, getFormulaDiffCode, isSubquery, moduleCopy, joinAliasConflictCheck, operatorList]);
135
136
  React.useImperativeHandle(ref, function () {
136
137
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gingkoo/pandora-metabase",
3
- "version": "1.0.149",
3
+ "version": "1.0.150",
4
4
  "description": "",
5
5
  "main": "lib/es/index.js",
6
6
  "module": "lib/es/index.js",