@gingkoo/pandora-metabase 1.0.118 → 1.0.120

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 (195) hide show
  1. package/lib/cjs/common/Portal/index.js +0 -2
  2. package/lib/cjs/common/SplitView/index.d.ts +0 -4
  3. package/lib/cjs/common/SplitView/index.js +0 -10
  4. package/lib/cjs/components/dialog/custom-column/config.js +4 -48
  5. package/lib/cjs/components/dialog/custom-column/expression-editor.js +3 -14
  6. package/lib/cjs/components/dialog/custom-column/expressions/suggest.d.ts +2 -34
  7. package/lib/cjs/components/dialog/custom-column/expressions/suggest.js +2 -43
  8. package/lib/cjs/components/dialog/custom-column/expressions/tokenizer.js +8 -65
  9. package/lib/cjs/components/dialog/custom-column/index.js +2 -4
  10. package/lib/cjs/components/dialog/custom-column/tokenized-expression.js +2 -3
  11. package/lib/cjs/components/dialog/custom-column/tokenizedI-input.js +1 -1
  12. package/lib/cjs/components/dialog/custom-editor/index.js +2 -7
  13. package/lib/cjs/components/dialog/diff-viewer/index copy.js +1 -16
  14. package/lib/cjs/components/dialog/expression/date-format-picker.js +2 -20
  15. package/lib/cjs/components/dialog/expression/date-format.js +2 -8
  16. package/lib/cjs/components/dialog/expression/index.d.ts +0 -3
  17. package/lib/cjs/components/dialog/expression/index.js +2 -83
  18. package/lib/cjs/components/dialog/formula/index.js +6 -31
  19. package/lib/cjs/components/dialog/formula/utils.js +2 -10
  20. package/lib/cjs/components/dialog/formula-list/CaseWhenGroup.d.ts +19 -0
  21. package/lib/cjs/components/dialog/formula-list/CaseWhenGroup.js +109 -0
  22. package/lib/cjs/components/dialog/formula-list/LogicGroup.d.ts +9 -0
  23. package/lib/cjs/components/dialog/formula-list/LogicGroup.js +43 -0
  24. package/lib/cjs/components/dialog/formula-list/index.d.ts +3 -0
  25. package/lib/cjs/components/dialog/formula-list/index.js +970 -504
  26. package/lib/cjs/components/dialog/formula-list/index.less +724 -0
  27. package/lib/cjs/components/dialog/formula-list/utils.d.ts +0 -7
  28. package/lib/cjs/components/dialog/formula-list/utils.js +117 -113
  29. package/lib/cjs/components/dialog/select-column/index.d.ts +0 -6
  30. package/lib/cjs/components/dialog/select-column/index.js +4 -15
  31. package/lib/cjs/components/dialog/select-column-multiple/index.d.ts +0 -8
  32. package/lib/cjs/components/dialog/select-column-multiple/index.js +6 -45
  33. package/lib/cjs/components/dialog/select-join/index.d.ts +0 -5
  34. package/lib/cjs/components/dialog/select-join/index.js +0 -6
  35. package/lib/cjs/components/dialog/select-join-column/index.d.ts +0 -8
  36. package/lib/cjs/components/dialog/select-join-column/index.js +7 -21
  37. package/lib/cjs/components/dialog/select-join-column-multiple/index.d.ts +0 -8
  38. package/lib/cjs/components/dialog/select-join-column-multiple/index.js +5 -35
  39. package/lib/cjs/components/dialog/select-permission-table/index.d.ts +0 -5
  40. package/lib/cjs/components/dialog/select-permission-table/index.js +0 -6
  41. package/lib/cjs/components/dialog/select-summarize/index.d.ts +7 -4
  42. package/lib/cjs/components/dialog/select-summarize/index.js +105 -18
  43. package/lib/cjs/components/dialog/select-summarize/index.less +23 -0
  44. package/lib/cjs/components/dialog/select-table/index.d.ts +0 -6
  45. package/lib/cjs/components/dialog/select-table/index.js +1 -9
  46. package/lib/cjs/components/metabase/index.js +72 -86
  47. package/lib/cjs/components/metabase/index.less +7 -7
  48. package/lib/cjs/components/modules/components/Wrapper.js +1 -1
  49. package/lib/cjs/components/modules/components/header.js +2 -2
  50. package/lib/cjs/components/modules/components/meta-icon.d.ts +0 -3
  51. package/lib/cjs/components/modules/components/meta-icon.js +2 -47
  52. package/lib/cjs/components/modules/custom-column.js +3 -29
  53. package/lib/cjs/components/modules/enum/filter-enum.js +9 -88
  54. package/lib/cjs/components/modules/filter.js +2 -20
  55. package/lib/cjs/components/modules/index.d.ts +4 -2
  56. package/lib/cjs/components/modules/index.js +24 -1
  57. package/lib/cjs/components/modules/join-data.js +13 -291
  58. package/lib/cjs/components/modules/row-limit.js +0 -1
  59. package/lib/cjs/components/modules/sort.js +1 -61
  60. package/lib/cjs/components/modules/summarize/group-by.d.ts +0 -5
  61. package/lib/cjs/components/modules/summarize/group-by.js +251 -89
  62. package/lib/cjs/components/modules/summarize/select-index.js +116 -59
  63. package/lib/cjs/components/modules/table-data.js +11 -64
  64. package/lib/cjs/components/popup.js +26 -32
  65. package/lib/cjs/hooks/patch.d.ts +1 -0
  66. package/lib/cjs/hooks/patch.js +104 -6
  67. package/lib/cjs/hooks/patch2.js +3 -165
  68. package/lib/cjs/hooks/use-provider.js +0 -3
  69. package/lib/cjs/hooks/use-state.js +55 -135
  70. package/lib/cjs/index.js +0 -15
  71. package/lib/cjs/locale/en.js +5 -0
  72. package/lib/cjs/locale/index.js +1 -4
  73. package/lib/cjs/locale/zh.js +5 -0
  74. package/lib/cjs/sql-formula.js +0 -1
  75. package/lib/cjs/store/enum.d.ts +6 -6
  76. package/lib/cjs/store/enum.js +0 -13
  77. package/lib/cjs/store/helper.d.ts +2 -1
  78. package/lib/cjs/store/helper.js +15 -225
  79. package/lib/cjs/store/types.d.ts +45 -67
  80. package/lib/cjs/store/types.js +3 -49
  81. package/lib/cjs/types.d.ts +1 -0
  82. package/lib/cjs/utils/cookies.js +0 -3
  83. package/lib/cjs/utils/event.js +1 -1
  84. package/lib/cjs/utils/helper-dom.d.ts +1 -0
  85. package/lib/cjs/utils/helper-dom.js +17 -10
  86. package/lib/cjs/utils/helper.js +1 -24
  87. package/lib/cjs/utils/keydown.js +4 -7
  88. package/lib/cjs/utils/platform.d.ts +0 -9
  89. package/lib/cjs/utils/platform.js +0 -10
  90. package/lib/cjs/utils/selection.js +0 -6
  91. package/lib/cjs/utils/storage.d.ts +0 -9
  92. package/lib/cjs/utils/storage.js +1 -11
  93. package/lib/cjs/utils/transformSql.d.ts +5 -0
  94. package/lib/cjs/utils/transformSql.js +40 -101
  95. package/lib/cjs/utils.d.ts +1 -6
  96. package/lib/cjs/utils.js +126 -255
  97. package/lib/es/common/Portal/index.js +0 -2
  98. package/lib/es/common/SplitView/index.d.ts +0 -4
  99. package/lib/es/common/SplitView/index.js +0 -10
  100. package/lib/es/components/dialog/custom-column/config.js +4 -48
  101. package/lib/es/components/dialog/custom-column/expression-editor.js +3 -14
  102. package/lib/es/components/dialog/custom-column/expressions/suggest.d.ts +2 -34
  103. package/lib/es/components/dialog/custom-column/expressions/suggest.js +2 -43
  104. package/lib/es/components/dialog/custom-column/expressions/tokenizer.js +8 -65
  105. package/lib/es/components/dialog/custom-column/index.js +2 -4
  106. package/lib/es/components/dialog/custom-column/tokenized-expression.js +1 -3
  107. package/lib/es/components/dialog/custom-column/tokenizedI-input.js +1 -1
  108. package/lib/es/components/dialog/custom-editor/index.js +1 -7
  109. package/lib/es/components/dialog/diff-viewer/index copy.js +1 -15
  110. package/lib/es/components/dialog/expression/date-format-picker.js +2 -20
  111. package/lib/es/components/dialog/expression/date-format.js +2 -8
  112. package/lib/es/components/dialog/expression/index.d.ts +0 -3
  113. package/lib/es/components/dialog/expression/index.js +2 -82
  114. package/lib/es/components/dialog/formula/index.js +5 -31
  115. package/lib/es/components/dialog/formula/utils.js +2 -10
  116. package/lib/es/components/dialog/formula-list/CaseWhenGroup.d.ts +19 -0
  117. package/lib/es/components/dialog/formula-list/CaseWhenGroup.js +102 -0
  118. package/lib/es/components/dialog/formula-list/LogicGroup.d.ts +9 -0
  119. package/lib/es/components/dialog/formula-list/LogicGroup.js +36 -0
  120. package/lib/es/components/dialog/formula-list/index.d.ts +3 -0
  121. package/lib/es/components/dialog/formula-list/index.js +969 -504
  122. package/lib/es/components/dialog/formula-list/index.less +724 -0
  123. package/lib/es/components/dialog/formula-list/utils.d.ts +0 -7
  124. package/lib/es/components/dialog/formula-list/utils.js +117 -113
  125. package/lib/es/components/dialog/index.js +3 -3
  126. package/lib/es/components/dialog/select-column/index.d.ts +0 -6
  127. package/lib/es/components/dialog/select-column/index.js +4 -14
  128. package/lib/es/components/dialog/select-column-multiple/index.d.ts +0 -8
  129. package/lib/es/components/dialog/select-column-multiple/index.js +7 -47
  130. package/lib/es/components/dialog/select-join/index.d.ts +0 -5
  131. package/lib/es/components/dialog/select-join/index.js +0 -5
  132. package/lib/es/components/dialog/select-join-column/index.d.ts +0 -8
  133. package/lib/es/components/dialog/select-join-column/index.js +7 -20
  134. package/lib/es/components/dialog/select-join-column-multiple/index.d.ts +0 -8
  135. package/lib/es/components/dialog/select-join-column-multiple/index.js +5 -34
  136. package/lib/es/components/dialog/select-permission-table/index.d.ts +0 -5
  137. package/lib/es/components/dialog/select-permission-table/index.js +0 -5
  138. package/lib/es/components/dialog/select-summarize/index.d.ts +7 -4
  139. package/lib/es/components/dialog/select-summarize/index.js +106 -18
  140. package/lib/es/components/dialog/select-summarize/index.less +23 -0
  141. package/lib/es/components/dialog/select-table/index.d.ts +0 -6
  142. package/lib/es/components/dialog/select-table/index.js +1 -8
  143. package/lib/es/components/metabase/index.js +72 -87
  144. package/lib/es/components/metabase/index.less +7 -7
  145. package/lib/es/components/modules/components/Wrapper.js +1 -1
  146. package/lib/es/components/modules/components/header.js +2 -2
  147. package/lib/es/components/modules/components/meta-icon.d.ts +0 -3
  148. package/lib/es/components/modules/components/meta-icon.js +2 -46
  149. package/lib/es/components/modules/custom-column.js +3 -29
  150. package/lib/es/components/modules/enum/filter-enum.js +9 -88
  151. package/lib/es/components/modules/filter.js +2 -19
  152. package/lib/es/components/modules/index.d.ts +4 -2
  153. package/lib/es/components/modules/index.js +24 -1
  154. package/lib/es/components/modules/join-data.js +13 -291
  155. package/lib/es/components/modules/row-limit.js +0 -1
  156. package/lib/es/components/modules/sort.js +1 -61
  157. package/lib/es/components/modules/summarize/group-by.d.ts +0 -5
  158. package/lib/es/components/modules/summarize/group-by.js +253 -91
  159. package/lib/es/components/modules/summarize/select-index.js +116 -59
  160. package/lib/es/components/modules/table-data.js +11 -64
  161. package/lib/es/components/popup.js +27 -33
  162. package/lib/es/hooks/patch.d.ts +1 -0
  163. package/lib/es/hooks/patch.js +103 -5
  164. package/lib/es/hooks/patch2.js +2 -164
  165. package/lib/es/hooks/use-provider.js +0 -3
  166. package/lib/es/hooks/use-state.js +55 -135
  167. package/lib/es/index.js +0 -14
  168. package/lib/es/locale/en.js +5 -0
  169. package/lib/es/locale/index.js +1 -4
  170. package/lib/es/locale/zh.js +5 -0
  171. package/lib/es/sql-formula.js +0 -1
  172. package/lib/es/store/enum.d.ts +6 -6
  173. package/lib/es/store/enum.js +0 -13
  174. package/lib/es/store/helper.d.ts +2 -1
  175. package/lib/es/store/helper.js +13 -224
  176. package/lib/es/store/types.d.ts +45 -67
  177. package/lib/es/store/types.js +3 -49
  178. package/lib/es/types.d.ts +1 -0
  179. package/lib/es/types.js +1 -18
  180. package/lib/es/utils/cookies.js +0 -3
  181. package/lib/es/utils/event.js +1 -1
  182. package/lib/es/utils/helper-dom.d.ts +1 -0
  183. package/lib/es/utils/helper-dom.js +16 -9
  184. package/lib/es/utils/helper.js +1 -24
  185. package/lib/es/utils/keydown.js +4 -7
  186. package/lib/es/utils/platform.d.ts +0 -9
  187. package/lib/es/utils/platform.js +0 -10
  188. package/lib/es/utils/selection.js +0 -6
  189. package/lib/es/utils/storage.d.ts +0 -9
  190. package/lib/es/utils/storage.js +1 -10
  191. package/lib/es/utils/transformSql.d.ts +5 -0
  192. package/lib/es/utils/transformSql.js +40 -100
  193. package/lib/es/utils.d.ts +1 -6
  194. package/lib/es/utils.js +127 -255
  195. package/package.json +1 -1
@@ -22,7 +22,6 @@ var RowLimit = function RowLimit(props) {
22
22
  var index = (0, _utils.findIndex)(store.metaList[groupIndex].list, meta);
23
23
  function handleChange(inputValue) {
24
24
  var newMeta = store.metaList[groupIndex].list.slice();
25
- // @ts-ignore
26
25
  newMeta[index].limit = inputValue;
27
26
  store.setMeta(newMeta, groupIndex);
28
27
  }
@@ -41,7 +41,6 @@ var Sort = function Sort(props) {
41
41
  name: prevGroupBy.alias,
42
42
  id: prevGroupBy.alias,
43
43
  tableUuid: prevGroupBy.tableUuid || (0, _helper.uuidv4)('table'),
44
- // alias: (prevGroupBy as MetaSummarize).alias,
45
44
  columns: []
46
45
  };
47
46
  if (prevGroupBy !== null && prevGroupBy !== void 0 && (_prevGroupBy$group = prevGroupBy.group) !== null && _prevGroupBy$group !== void 0 && _prevGroupBy$group.length) {
@@ -50,7 +49,6 @@ var Sort = function Sort(props) {
50
49
  name: v.name || v.quotes,
51
50
  name_zh: v.name_zh || v.quotes,
52
51
  id: v.id || v.fieldId,
53
- // name_zh: '',
54
52
  database_type: (v === null || v === void 0 ? void 0 : v.database_type) || _enum.SQL_COLUMN_TYPE.FLOAT,
55
53
  special_type: '',
56
54
  sql: v.sql,
@@ -73,7 +71,6 @@ var Sort = function Sort(props) {
73
71
  }
74
72
  data = [_data];
75
73
  } else {
76
- //@ts-ignore
77
74
  data = store.metaList[groupIndex].list.slice(0, index).map(function (v) {
78
75
  if (v.type === _enum.TypeEnum.data) {
79
76
  return {
@@ -110,9 +107,7 @@ var Sort = function Sort(props) {
110
107
  var node = e.currentTarget || e.target;
111
108
  var newMeta = store.metaList[groupIndex].list.slice();
112
109
  var data = getColumns();
113
- // 过滤掉已经选择的 排序参数
114
- var selectedSort = {}; // {tableAlias: [columnName, columnName]}
115
- //@ts-ignore
110
+ var selectedSort = {};
116
111
  newMeta[index].sort.forEach(function (v) {
117
112
  v.expression.forEach(function (vv) {
118
113
  if (vv.type === _types.AtomsTypeEnum.FIELD) {
@@ -148,59 +143,6 @@ var Sort = function Sort(props) {
148
143
  expression: fields,
149
144
  sort: _enum.SortEnum.asc
150
145
  }]);
151
- // let { table, name, tableId, tableUuid, id, alias, sql } = record;
152
- // if (alias === SummarizeAlias) {
153
- // let aliasColumns = (sql as string)?.split(' AS ')?.[1] || '';
154
- // if (store.metaList[groupIndex].list[index - 1].type === TypeEnum.summarize) {
155
- // //@ts-ignore
156
- // newMeta[index].sort = [
157
- // //@ts-ignore
158
- // ...newMeta[index].sort,
159
- // {
160
- // table,
161
- // tableId,
162
- // tableUuid,
163
- // id,
164
- // alias,
165
- // name,
166
- // sort: SortEnum.asc,
167
- // sql: aliasColumns,
168
- // },
169
- // ];
170
- // } else {
171
- // //@ts-ignore
172
- // newMeta[index].sort = [
173
- // //@ts-ignore
174
- // ...newMeta[index].sort,
175
- // {
176
- // table,
177
- // id,
178
- // tableId,
179
- // tableUuid,
180
- // alias,
181
- // name,
182
- // sort: SortEnum.asc,
183
- // sql: `${SummarizeAlias}.${aliasColumns}`,
184
- // },
185
- // ];
186
- // }
187
- // } else {
188
- // //@ts-ignore
189
- // newMeta[index].sort = [
190
- // //@ts-ignore
191
- // ...newMeta[index].sort,
192
- // {
193
- // table,
194
- // tableId,
195
- // tableUuid,
196
- // id,
197
- // alias,
198
- // name,
199
- // sort: SortEnum.asc,
200
- // sql: `${alias}.${name}`,
201
- // },
202
- // ];
203
- // }
204
146
  store.setMeta(newMeta, groupIndex);
205
147
  store.setPopup({
206
148
  visible: false
@@ -211,7 +153,6 @@ var Sort = function Sort(props) {
211
153
  }
212
154
  function handleSort(itemIndex) {
213
155
  var newMeta = store.metaList[groupIndex].list.slice();
214
- //@ts-ignore
215
156
  newMeta[index].sort = sort.map(function (v, i) {
216
157
  if (i === itemIndex) {
217
158
  return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, v), {}, {
@@ -225,7 +166,6 @@ var Sort = function Sort(props) {
225
166
  function delSortColumn(e, itemIndex) {
226
167
  e.stopPropagation();
227
168
  var newMeta = store.metaList[groupIndex].list.slice();
228
- //@ts-ignore
229
169
  newMeta[index].sort = sort.filter(function (_, i) {
230
170
  return i !== itemIndex;
231
171
  });
@@ -1,9 +1,4 @@
1
1
  import { MetaSummarize } from '../../../store/types';
2
- import { ColumnType } from '../../dialog/select-join-column';
3
- export type ValueType = ColumnType & {
4
- condition: string;
5
- quotes: string;
6
- };
7
2
  interface PropsType {
8
3
  meta: MetaSummarize;
9
4
  groupIndex: number;
@@ -7,21 +7,153 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports["default"] = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
11
+ var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createForOfIteratorHelper"));
10
12
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/asyncToGenerator"));
11
13
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
12
15
  var _jsxRuntime = require("react/jsx-runtime");
16
+ var _react = require("react");
13
17
  var _classnames = _interopRequireDefault(require("classnames"));
14
18
  var _locale = require("../../../locale");
15
19
  var _utils = require("../../../utils");
16
20
  var _enum = require("../../../store/enum");
17
21
  var _types = require("../../../store/types");
18
- var _selectJoinColumn = _interopRequireDefault(require("../../dialog/select-join-column"));
19
22
  var _pandora = require("@gingkoo/pandora");
20
23
  var _helper = require("../../../utils/helper");
21
24
  var _itemName = _interopRequireDefault(require("../components/item-name"));
22
25
  var _icons = require("../../icons");
26
+ var _formulaList = _interopRequireDefault(require("../../dialog/formula-list"));
23
27
  var _useProvider = require("../../../hooks/use-provider");
24
28
  var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
29
+ var _helper2 = require("../../../store/helper");
30
+ var _getSummaryText = function getSummaryText() {
31
+ var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
32
+ var itemToText = function itemToText(item) {
33
+ if (!item) return '';
34
+ if (item.quotes) return item.quotes;
35
+ if (item.fieldName) return item.fieldAlias || item.fieldName;
36
+ if (item.type === _types.AtomsTypeEnum.FORMULA) {
37
+ var argsText = (item.args || []).map(function (arg) {
38
+ return _getSummaryText((arg === null || arg === void 0 ? void 0 : arg.list) || []);
39
+ }).filter(Boolean).join(', ');
40
+ return "".concat(item.name || '').concat(argsText ? "(".concat(argsText, ")") : '').trim();
41
+ }
42
+ if (item.type === _types.AtomsTypeEnum.EXPRESSION) {
43
+ var lhs = _getSummaryText(item.lhs || []);
44
+ var rhs = _getSummaryText(item.rhs || []);
45
+ return [lhs, item.condition, rhs].filter(Boolean).join(' ').trim();
46
+ }
47
+ if (item.type === _types.AtomsTypeEnum.AND_OR) {
48
+ return "".concat(item.operator || 'and', " ( ").concat(_getSummaryText(item.list || []), " )").replace(/\s+/g, ' ').trim();
49
+ }
50
+ if (item.type === _types.AtomsTypeEnum.CASE_WHEN) {
51
+ return item.quotes || 'case when';
52
+ }
53
+ if (Array.isArray(item.val)) return item.val.join(', ');
54
+ return item.val || '';
55
+ };
56
+ return list.map(function (item) {
57
+ return itemToText(item);
58
+ }).filter(Boolean).join(' ').replace(/\s+/g, ' ').trim();
59
+ };
60
+ var SQL_ALIAS_MAX_LENGTH = 30;
61
+ var sanitizeAliasPart = function sanitizeAliasPart() {
62
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
63
+ return value.replace(/[^a-zA-Z0-9_]/g, '_').replace(/_+/g, '_').replace(/^_+|_+$/g, '');
64
+ };
65
+ var buildAutoGroupByAlias = function buildAutoGroupByAlias(tableAlias, fieldName, itemIndex) {
66
+ var fallbackAlias = "group_by_".concat(itemIndex + 1);
67
+ var aliasPrefix = sanitizeAliasPart(tableAlias);
68
+ var aliasField = sanitizeAliasPart(fieldName);
69
+ var autoAlias = (aliasPrefix && aliasField ? "".concat(aliasPrefix, "__").concat(aliasField) : aliasField || aliasPrefix) || fallbackAlias;
70
+ if (!/^[a-zA-Z]/.test(autoAlias)) {
71
+ autoAlias = "a_".concat(autoAlias.replace(/^[^a-zA-Z]+/, ''));
72
+ }
73
+ if (!/^[a-zA-Z]/.test(autoAlias)) {
74
+ autoAlias = fallbackAlias;
75
+ }
76
+ if (autoAlias.length > SQL_ALIAS_MAX_LENGTH) {
77
+ var uniqueSuffix = "_".concat(itemIndex + 1);
78
+ var maxBaseLength = Math.max(1, SQL_ALIAS_MAX_LENGTH - uniqueSuffix.length);
79
+ autoAlias = "".concat(autoAlias.slice(0, maxBaseLength)).concat(uniqueSuffix);
80
+ }
81
+ return autoAlias.slice(0, SQL_ALIAS_MAX_LENGTH);
82
+ };
83
+ var GroupByEditor = function GroupByEditor(_ref) {
84
+ var data = _ref.data,
85
+ value = _ref.value,
86
+ onChange = _ref.onChange;
87
+ var _useState = (0, _react.useState)(function () {
88
+ if (Array.isArray(value.atoms) && value.atoms.length) {
89
+ return value.atoms;
90
+ }
91
+ if (value.name) {
92
+ var fieldAtom = {
93
+ fieldName: value.name,
94
+ fieldNameZh: value.name_zh || '',
95
+ fieldAlias: '',
96
+ fieldUuid: (0, _helper.uuidv4)('field'),
97
+ fieldId: value.id || value.fieldId || '',
98
+ tableName: value.table || '',
99
+ tableNameZh: '',
100
+ tableId: value.tableId || '',
101
+ tableAlias: value.alias || '',
102
+ tableUuid: value.tableUuid || '',
103
+ datasourceName: value.datasourceName || '',
104
+ datasourceId: value.datasourceId || '',
105
+ type: _types.AtomsTypeEnum.FIELD
106
+ };
107
+ return [fieldAtom];
108
+ }
109
+ return [];
110
+ }),
111
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
112
+ atoms = _useState2[0],
113
+ setAtoms = _useState2[1];
114
+ return (0, _jsxRuntime.jsxs)("div", {
115
+ className: 'Sqb-SelectSummarize-formula',
116
+ children: [(0, _jsxRuntime.jsx)("div", {
117
+ className: 'back-title',
118
+ children: (0, _jsxRuntime.jsx)("div", {
119
+ children: (0, _jsxRuntime.jsx)("h3", {
120
+ children: (0, _locale.__)('SqlQueryBuilder.by')
121
+ })
122
+ })
123
+ }), (0, _jsxRuntime.jsx)("div", {
124
+ className: 'Sqb-SelectSummarize-formula-body',
125
+ children: (0, _jsxRuntime.jsx)("div", {
126
+ className: 'Sqb-item',
127
+ children: (0, _jsxRuntime.jsx)("div", {
128
+ className: 'Sqb-item--content',
129
+ children: (0, _jsxRuntime.jsx)(_formulaList["default"], {
130
+ value: atoms,
131
+ data: data,
132
+ exitData: data,
133
+ enableCopy: false,
134
+ parentPopupChannel: 'secondary',
135
+ onChange: function onChange(nextValue) {
136
+ setAtoms(nextValue);
137
+ }
138
+ })
139
+ })
140
+ })
141
+ }), (0, _jsxRuntime.jsx)("div", {
142
+ className: 'Sqb-SelectSummarize-formula-footer',
143
+ children: (0, _jsxRuntime.jsx)(_pandora.Button, {
144
+ primary: true,
145
+ disabled: !atoms.length,
146
+ onClick: function onClick() {
147
+ onChange((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, value), {}, {
148
+ atoms: atoms,
149
+ quotes: _getSummaryText(atoms)
150
+ }));
151
+ },
152
+ children: "\u786E\u5B9A"
153
+ })
154
+ })]
155
+ });
156
+ };
25
157
  var GroupBy = function GroupBy(props) {
26
158
  var meta = props.meta,
27
159
  groupIndex = props.groupIndex;
@@ -38,8 +170,9 @@ var GroupBy = function GroupBy(props) {
38
170
  if (ExistAboveGroupBy) {
39
171
  var _prevGroupBy$group, _prevGroupBy$by;
40
172
  var _data = {
41
- table: prevGroupBy.alias,
42
- tableId: prevGroupBy.alias,
173
+ name: prevGroupBy.alias,
174
+ id: prevGroupBy.alias,
175
+ name_zh: prevGroupBy.alias,
43
176
  tableUuid: prevGroupBy.tableUuid || (0, _helper.uuidv4)('table'),
44
177
  alias: prevGroupBy.alias,
45
178
  columns: []
@@ -52,7 +185,6 @@ var GroupBy = function GroupBy(props) {
52
185
  name_zh: v.name_zh || v.quotes,
53
186
  id: v.id || v.fieldId,
54
187
  realName: ((_v$sql = v.sql) === null || _v$sql === void 0 || (_v$sql = _v$sql.split(' AS ')) === null || _v$sql === void 0 ? void 0 : _v$sql[1]) || '',
55
- // name_zh: '',
56
188
  database_type: (v === null || v === void 0 ? void 0 : v.database_type) || _enum.SQL_COLUMN_TYPE.FLOAT,
57
189
  special_type: '',
58
190
  select: true
@@ -67,7 +199,6 @@ var GroupBy = function GroupBy(props) {
67
199
  name_zh: v.name_zh || v.quotes,
68
200
  id: v.id || v.fieldId,
69
201
  realName: ((_v$sql2 = v.sql) === null || _v$sql2 === void 0 || (_v$sql2 = _v$sql2.split(' AS ')) === null || _v$sql2 === void 0 ? void 0 : _v$sql2[1]) || '',
70
- // name_zh: '',
71
202
  database_type: (v === null || v === void 0 ? void 0 : v.database_type) || _enum.SQL_COLUMN_TYPE.FLOAT,
72
203
  special_type: '',
73
204
  select: true
@@ -77,20 +208,17 @@ var GroupBy = function GroupBy(props) {
77
208
  data = [_data];
78
209
  var joinData = prevList.filter(function (v) {
79
210
  return v.type === _enum.TypeEnum.joinData;
80
- })
81
- // @ts-ignore
82
- .filter(function (v) {
211
+ }).filter(function (v) {
83
212
  return v && v.table2.name;
84
213
  });
85
214
  if (joinData.length) {
86
- data = data.concat(
87
- // @ts-ignore
88
- joinData.map(function (v) {
215
+ data = data.concat(joinData.map(function (v) {
89
216
  return {
217
+ name: v.table2.name,
218
+ id: v.table2.id,
219
+ name_zh: v.table2.name_zh || v.table2.name,
90
220
  alias: v.table2.alias,
91
221
  tableUuid: v.table2.tableUuid,
92
- tableId: v.table2.id,
93
- table: v.table2.name,
94
222
  datasourceId: v.table2.datasourceId,
95
223
  datasourceName: v.table2.datasourceName,
96
224
  columns: v.columns
@@ -98,23 +226,24 @@ var GroupBy = function GroupBy(props) {
98
226
  }));
99
227
  }
100
228
  } else {
101
- // @ts-ignore
102
229
  data = store.metaList[groupIndex].list.slice(0, index).map(function (v) {
103
230
  if (v.type === _enum.TypeEnum.data) {
104
231
  return {
232
+ name: v.table.name,
233
+ id: v.table.id,
234
+ name_zh: v.table.name_zh || v.table.name,
105
235
  alias: v.table.alias,
106
- table: v.table.name,
107
236
  tableUuid: v.table.tableUuid,
108
- tableId: v.table.id,
109
237
  datasourceId: v.table.datasourceId,
110
238
  datasourceName: v.table.datasourceName,
111
239
  columns: v.columns
112
240
  };
113
241
  } else if (v.type === _enum.TypeEnum.joinData) {
114
242
  return {
243
+ name: v.table2.name,
244
+ id: v.table2.id,
245
+ name_zh: v.table2.name_zh || v.table2.name,
115
246
  alias: v.table2.alias,
116
- table: v.table2.name,
117
- tableId: v.table2.id,
118
247
  tableUuid: v.table2.tableUuid,
119
248
  datasourceId: v.table2.datasourceId,
120
249
  datasourceName: v.table2.datasourceName,
@@ -122,11 +251,16 @@ var GroupBy = function GroupBy(props) {
122
251
  };
123
252
  } else {
124
253
  return {
125
- table: null
254
+ name: '',
255
+ id: '',
256
+ name_zh: '',
257
+ alias: '',
258
+ tableUuid: '',
259
+ columns: []
126
260
  };
127
261
  }
128
262
  }).filter(function (v) {
129
- return v.table;
263
+ return Boolean(v.name);
130
264
  });
131
265
  }
132
266
  return data;
@@ -135,29 +269,14 @@ var GroupBy = function GroupBy(props) {
135
269
  var newMeta = store.metaList[groupIndex].list.slice();
136
270
  var data = getColumns();
137
271
  var value = by[i];
138
- store.setPopup({
272
+ store.setPopup2({
139
273
  visible: true,
140
274
  node: e.currentTarget,
141
- content: (0, _jsxRuntime.jsx)(_selectJoinColumn["default"], {
275
+ content: (0, _jsxRuntime.jsx)(GroupByEditor, {
142
276
  data: data,
143
277
  value: value,
144
- theme: _enum.ColumnsPopupThemeEnum.greenGrass,
145
- isGroup: true,
146
- // @ts-ignore
147
- onGroup: function onGroup(data) {
148
- // @ts-ignore
149
- newMeta[index].by.splice(i, 1, data);
150
- // @ts-ignore
151
- newMeta[index].by = newMeta[index].by.map(function (v) {
152
- var fieldAlias = "".concat(v.alias, "__").concat(v.name);
153
- return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, v), {}, {
154
- sql: "".concat(v.alias, ".").concat(v.realName || v.name),
155
- fieldAlias: fieldAlias
156
- });
157
- });
158
- // if (value.quotes !== data.quotes) {
159
- // newMeta = newMeta.filter((_: MetaListType, _i: number) => _i <= index);
160
- // }
278
+ onChange: function onChange(nextValue) {
279
+ newMeta[index].by.splice(i, 1, normalizeByRecord(nextValue, i, newMeta));
161
280
  store.setMeta(newMeta, groupIndex, {
162
281
  obj: newMeta[index].by,
163
282
  type: _types.ChangeType.by
@@ -186,36 +305,17 @@ var GroupBy = function GroupBy(props) {
186
305
  quotes: '',
187
306
  datasourceId: '',
188
307
  datasourceName: '',
189
- // column: '',
190
- // column_id: '',
308
+ atoms: [],
191
309
  summarizeType: _types.MetaSummarize_Enum.BY
192
310
  };
193
- store.setPopup({
311
+ store.setPopup2({
194
312
  visible: true,
195
313
  node: e.currentTarget,
196
- content: (0, _jsxRuntime.jsx)(_selectJoinColumn["default"], {
314
+ content: (0, _jsxRuntime.jsx)(GroupByEditor, {
197
315
  data: data,
198
316
  value: value,
199
- theme: _enum.ColumnsPopupThemeEnum.greenGrass,
200
- isGroup: true,
201
- // @ts-ignore
202
- onGroup: function onGroup(data) {
203
- // @ts-ignore
204
- newMeta[index].by.push(data);
205
- // @ts-ignore
206
- newMeta[index].by = newMeta[index].by.map(function (v) {
207
- var _store$preProps;
208
- var fieldAlias = "".concat((0, _helper.getAlias)(v.alias, newMeta, ((_store$preProps = store.preProps) === null || _store$preProps === void 0 ? void 0 : _store$preProps.notExistsColumns) || []), "__").concat(v.name);
209
- if (!(0, _utils.isValidSQLAlias)(fieldAlias)) {
210
- _pandora.Toast.warning((0, _locale.__)('SqlQueryBuilder.aliasForRules'));
211
- }
212
- return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, v), {}, {
213
- sql: "".concat(v.alias, ".").concat(v.realName || v.name),
214
- fieldAlias: v.fieldAlias || fieldAlias,
215
- fieldUuid: (0, _helper.uuidv4)('field'),
216
- summarizeType: _types.MetaSummarize_Enum.BY
217
- });
218
- });
317
+ onChange: function onChange(nextValue) {
318
+ newMeta[index].by.push(normalizeByRecord(nextValue, newMeta[index].by.length, newMeta));
219
319
  store.setMeta(newMeta, groupIndex, {
220
320
  obj: newMeta[index].by,
221
321
  type: _types.ChangeType.by
@@ -229,15 +329,13 @@ var GroupBy = function GroupBy(props) {
229
329
  e.stopPropagation();
230
330
  closePopup();
231
331
  var newMeta = store.metaList[groupIndex].list.slice();
232
- // @ts-ignore
233
332
  newMeta[index].by = by.filter(function (_, i) {
234
333
  return i !== itemId;
235
334
  });
236
- // newMeta = newMeta.filter((_: MetaListType, _i: number) => _i <= index);
237
335
  store.setMeta(newMeta, groupIndex);
238
336
  }
239
337
  function closePopup() {
240
- store.setPopup({
338
+ store.setPopup2({
241
339
  visible: false
242
340
  });
243
341
  }
@@ -245,7 +343,6 @@ var GroupBy = function GroupBy(props) {
245
343
  var fieldAlias = val || '';
246
344
  _pandora.Modal.confirm({
247
345
  title: (0, _locale.__)('SqlQueryBuilder.alias'),
248
- // 设置别名
249
346
  content: (0, _jsxRuntime.jsx)(_pandora.Input, {
250
347
  defaultValue: fieldAlias,
251
348
  onChange: function onChange(val) {
@@ -253,7 +350,7 @@ var GroupBy = function GroupBy(props) {
253
350
  }
254
351
  }),
255
352
  onOk: function () {
256
- var _onOk = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
353
+ var _onOk = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee() {
257
354
  var newMeta;
258
355
  return _regenerator["default"].wrap(function (_context) {
259
356
  while (1) switch (_context.prev = _context.next) {
@@ -265,9 +362,9 @@ var GroupBy = function GroupBy(props) {
265
362
  _pandora.Toast.warning((0, _locale.__)('SqlQueryBuilder.aliasForRules'));
266
363
  return _context.abrupt("return", false);
267
364
  case 1:
268
- newMeta = store.metaList[groupIndex].list.slice(); // @ts-ignore
269
- newMeta[index].by[i].sql = newMeta[index].by[i].sql.split('AS ')[0] + "AS ".concat(fieldAlias); //修改sql
365
+ newMeta = store.metaList[groupIndex].list.slice();
270
366
  newMeta[index].by[i].fieldAlias = fieldAlias;
367
+ newMeta[index].by[i].sql = (0, _helper2.summarizeByToSql)(newMeta[index].by[i]);
271
368
  newMeta = (0, _utils.changeFieldAlias)(newMeta, newMeta[index].by[i]);
272
369
  store.setMeta(newMeta, groupIndex, {
273
370
  obj: newMeta[index].by,
@@ -290,15 +387,11 @@ var GroupBy = function GroupBy(props) {
290
387
  var _getColumns = function _getColumns() {
291
388
  return getColumns().map(function (v) {
292
389
  return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, v), {}, {
293
- name: v.table,
294
- id: v.tableId,
295
- name_zh: '',
390
+ name_zh: v.name_zh || '',
296
391
  tableUuid: v.tableUuid,
297
392
  alias: v.alias,
298
- // 线上的都为空,默认会标红。 等统一格式后可隐藏
299
393
  datasourceName: '',
300
- // 数据源名
301
- datasourceId: '' // 数据源id
394
+ datasourceId: ''
302
395
  });
303
396
  });
304
397
  };
@@ -306,36 +399,105 @@ var GroupBy = function GroupBy(props) {
306
399
  var _v = (0, _cloneDeep["default"])(v);
307
400
  return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, _v), {}, {
308
401
  fieldName: v.name,
309
- // 字段名
310
402
  fieldNameZh: v.name_zh,
311
- // 字段中文名
312
403
  fieldAlias: v.fieldAlias,
313
- // 别名
314
404
  fieldUuid: v.fieldUuid,
315
- // uuid
316
405
  fieldId: v.fieldId,
317
- // 字段id
318
406
  tableName: v.table,
319
- // 表名
320
407
  tableNameZh: '',
321
408
  tableId: v.tableId,
322
- // 表名
323
409
  tableAlias: v.alias,
324
- // 别名
325
410
  tableUuid: v.tableUuid,
326
- // 表唯一标识
327
- // 线上的都为空,默认会标红。 等统一格式后可隐藏
328
411
  datasourceName: '',
329
- // 数据源名
330
412
  datasourceId: '',
331
- // 数据源id
332
413
  type: _types.AtomsTypeEnum.FIELD
333
414
  });
334
415
  };
416
+ var _getFirstField = function getFirstField() {
417
+ var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
418
+ var _iterator = (0, _createForOfIteratorHelper2["default"])(list),
419
+ _step;
420
+ try {
421
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
422
+ var item = _step.value;
423
+ if (!item) continue;
424
+ if (item.type === _types.AtomsTypeEnum.FIELD) return item;
425
+ if (item.type === _types.AtomsTypeEnum.EXPRESSION) {
426
+ var found = _getFirstField([].concat((0, _toConsumableArray2["default"])(item.lhs || []), (0, _toConsumableArray2["default"])(item.rhs || [])));
427
+ if (found) return found;
428
+ }
429
+ if (item.type === _types.AtomsTypeEnum.FORMULA) {
430
+ var _found = (item.args || []).map(function (arg) {
431
+ return _getFirstField((arg === null || arg === void 0 ? void 0 : arg.list) || []);
432
+ }).find(Boolean);
433
+ if (_found) return _found;
434
+ }
435
+ if (item.type === _types.AtomsTypeEnum.AND_OR) {
436
+ var _found2 = _getFirstField(item.list || []);
437
+ if (_found2) return _found2;
438
+ }
439
+ if (item.type === _types.AtomsTypeEnum.CASE_WHEN) {
440
+ var _found3 = _getFirstField(item.caseValue || []) || (item.branches || []).map(function (branch) {
441
+ return _getFirstField([].concat((0, _toConsumableArray2["default"])(branch.when || []), (0, _toConsumableArray2["default"])(branch.then || [])));
442
+ }).find(Boolean) || _getFirstField(item.elseValue || []);
443
+ if (_found3) return _found3;
444
+ }
445
+ if (item.type === _types.AtomsTypeEnum.EXISTS || item.type === _types.AtomsTypeEnum.NOT_EXISTS) {
446
+ var _found4 = _getFirstField(item.notExists || []);
447
+ if (_found4) return _found4;
448
+ }
449
+ }
450
+ } catch (err) {
451
+ _iterator.e(err);
452
+ } finally {
453
+ _iterator.f();
454
+ }
455
+ return null;
456
+ };
457
+ var getAtomsValue = function getAtomsValue(record) {
458
+ var _record$atoms;
459
+ if ((_record$atoms = record.atoms) !== null && _record$atoms !== void 0 && _record$atoms.length) return record.atoms;
460
+ var field = getField(record);
461
+ return field.fieldName ? [field] : [];
462
+ };
463
+ var normalizeByRecord = function normalizeByRecord(record, itemIndex, metaList) {
464
+ var _store$preProps;
465
+ var atoms = getAtomsValue(record);
466
+ var firstField = _getFirstField(atoms);
467
+ var nextRecord = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, record), {}, {
468
+ atoms: atoms.length ? atoms : undefined,
469
+ quotes: _getSummaryText(atoms) || record.quotes || record.name || '',
470
+ summarizeType: _types.MetaSummarize_Enum.BY
471
+ });
472
+ if (firstField) {
473
+ nextRecord.table = firstField.tableName || nextRecord.table;
474
+ nextRecord.tableId = firstField.tableId || nextRecord.tableId;
475
+ nextRecord.tableUuid = firstField.tableUuid || nextRecord.tableUuid;
476
+ nextRecord.alias = firstField.tableAlias || nextRecord.alias;
477
+ nextRecord.name = firstField.fieldName || nextRecord.name;
478
+ nextRecord.name_zh = firstField.fieldNameZh || nextRecord.name_zh;
479
+ nextRecord.id = firstField.fieldId || nextRecord.id;
480
+ nextRecord.fieldId = firstField.fieldId || nextRecord.fieldId;
481
+ nextRecord.realName = firstField.fieldName || nextRecord.realName;
482
+ nextRecord.fieldUuid = firstField.fieldUuid || nextRecord.fieldUuid;
483
+ nextRecord.datasourceId = firstField.datasourceId || nextRecord.datasourceId;
484
+ nextRecord.datasourceName = firstField.datasourceName || nextRecord.datasourceName;
485
+ nextRecord.database_type = firstField.database_type || nextRecord.database_type;
486
+ }
487
+ var defaultFieldAlias = firstField !== null && firstField !== void 0 && firstField.fieldName ? buildAutoGroupByAlias((0, _helper.getAlias)(firstField.tableAlias || nextRecord.alias, metaList, ((_store$preProps = store.preProps) === null || _store$preProps === void 0 ? void 0 : _store$preProps.notExistsColumns) || []), firstField.fieldName, itemIndex) : "group_by_".concat(itemIndex + 1);
488
+ nextRecord.fieldAlias = nextRecord.fieldAlias || defaultFieldAlias;
489
+ nextRecord.fieldUuid = nextRecord.fieldUuid || (0, _helper.uuidv4)('field');
490
+ nextRecord.sql = (0, _helper2.summarizeByToSql)(nextRecord);
491
+ if (!(0, _utils.isValidSQLAlias)(nextRecord.fieldAlias)) {
492
+ _pandora.Toast.warning((0, _locale.__)('SqlQueryBuilder.aliasForRules'));
493
+ }
494
+ return nextRecord;
495
+ };
335
496
  return (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
336
497
  children: [meta.by.map(function (v, i) {
498
+ var atomsValue = getAtomsValue(v);
337
499
  return (0, _jsxRuntime.jsx)(_itemName["default"], {
338
- isError: (0, _utils.isError)(getField(v), _getColumns()),
500
+ isError: (0, _utils.isError)(atomsValue.length ? atomsValue : getField(v), _getColumns()),
339
501
  children: (0, _jsxRuntime.jsxs)("div", {
340
502
  className: "Sqb-TableName green-name",
341
503
  onClick: function onClick(e) {