@gingkoo/pandora-metabase 1.0.118 → 1.0.119

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 +1 -30
  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 +967 -503
  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 +3 -3
  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 +231 -76
  62. package/lib/cjs/components/modules/summarize/select-index.js +96 -46
  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 +42 -113
  95. package/lib/cjs/utils.d.ts +1 -6
  96. package/lib/cjs/utils.js +115 -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 +0 -30
  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 +966 -503
  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 +3 -3
  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 +233 -78
  159. package/lib/es/components/modules/summarize/select-index.js +96 -46
  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 +42 -112
  193. package/lib/es/utils.d.ts +1 -6
  194. package/lib/es/utils.js +116 -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;
@@ -52,7 +184,6 @@ var GroupBy = function GroupBy(props) {
52
184
  name_zh: v.name_zh || v.quotes,
53
185
  id: v.id || v.fieldId,
54
186
  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
187
  database_type: (v === null || v === void 0 ? void 0 : v.database_type) || _enum.SQL_COLUMN_TYPE.FLOAT,
57
188
  special_type: '',
58
189
  select: true
@@ -67,7 +198,6 @@ var GroupBy = function GroupBy(props) {
67
198
  name_zh: v.name_zh || v.quotes,
68
199
  id: v.id || v.fieldId,
69
200
  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
201
  database_type: (v === null || v === void 0 ? void 0 : v.database_type) || _enum.SQL_COLUMN_TYPE.FLOAT,
72
202
  special_type: '',
73
203
  select: true
@@ -77,15 +207,11 @@ var GroupBy = function GroupBy(props) {
77
207
  data = [_data];
78
208
  var joinData = prevList.filter(function (v) {
79
209
  return v.type === _enum.TypeEnum.joinData;
80
- })
81
- // @ts-ignore
82
- .filter(function (v) {
210
+ }).filter(function (v) {
83
211
  return v && v.table2.name;
84
212
  });
85
213
  if (joinData.length) {
86
- data = data.concat(
87
- // @ts-ignore
88
- joinData.map(function (v) {
214
+ data = data.concat(joinData.map(function (v) {
89
215
  return {
90
216
  alias: v.table2.alias,
91
217
  tableUuid: v.table2.tableUuid,
@@ -98,7 +224,6 @@ var GroupBy = function GroupBy(props) {
98
224
  }));
99
225
  }
100
226
  } else {
101
- // @ts-ignore
102
227
  data = store.metaList[groupIndex].list.slice(0, index).map(function (v) {
103
228
  if (v.type === _enum.TypeEnum.data) {
104
229
  return {
@@ -135,29 +260,14 @@ var GroupBy = function GroupBy(props) {
135
260
  var newMeta = store.metaList[groupIndex].list.slice();
136
261
  var data = getColumns();
137
262
  var value = by[i];
138
- store.setPopup({
263
+ store.setPopup2({
139
264
  visible: true,
140
265
  node: e.currentTarget,
141
- content: (0, _jsxRuntime.jsx)(_selectJoinColumn["default"], {
266
+ content: (0, _jsxRuntime.jsx)(GroupByEditor, {
142
267
  data: data,
143
268
  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
- // }
269
+ onChange: function onChange(nextValue) {
270
+ newMeta[index].by.splice(i, 1, normalizeByRecord(nextValue, i, newMeta));
161
271
  store.setMeta(newMeta, groupIndex, {
162
272
  obj: newMeta[index].by,
163
273
  type: _types.ChangeType.by
@@ -186,36 +296,17 @@ var GroupBy = function GroupBy(props) {
186
296
  quotes: '',
187
297
  datasourceId: '',
188
298
  datasourceName: '',
189
- // column: '',
190
- // column_id: '',
299
+ atoms: [],
191
300
  summarizeType: _types.MetaSummarize_Enum.BY
192
301
  };
193
- store.setPopup({
302
+ store.setPopup2({
194
303
  visible: true,
195
304
  node: e.currentTarget,
196
- content: (0, _jsxRuntime.jsx)(_selectJoinColumn["default"], {
305
+ content: (0, _jsxRuntime.jsx)(GroupByEditor, {
197
306
  data: data,
198
307
  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
- });
308
+ onChange: function onChange(nextValue) {
309
+ newMeta[index].by.push(normalizeByRecord(nextValue, newMeta[index].by.length, newMeta));
219
310
  store.setMeta(newMeta, groupIndex, {
220
311
  obj: newMeta[index].by,
221
312
  type: _types.ChangeType.by
@@ -229,15 +320,13 @@ var GroupBy = function GroupBy(props) {
229
320
  e.stopPropagation();
230
321
  closePopup();
231
322
  var newMeta = store.metaList[groupIndex].list.slice();
232
- // @ts-ignore
233
323
  newMeta[index].by = by.filter(function (_, i) {
234
324
  return i !== itemId;
235
325
  });
236
- // newMeta = newMeta.filter((_: MetaListType, _i: number) => _i <= index);
237
326
  store.setMeta(newMeta, groupIndex);
238
327
  }
239
328
  function closePopup() {
240
- store.setPopup({
329
+ store.setPopup2({
241
330
  visible: false
242
331
  });
243
332
  }
@@ -245,7 +334,6 @@ var GroupBy = function GroupBy(props) {
245
334
  var fieldAlias = val || '';
246
335
  _pandora.Modal.confirm({
247
336
  title: (0, _locale.__)('SqlQueryBuilder.alias'),
248
- // 设置别名
249
337
  content: (0, _jsxRuntime.jsx)(_pandora.Input, {
250
338
  defaultValue: fieldAlias,
251
339
  onChange: function onChange(val) {
@@ -253,7 +341,7 @@ var GroupBy = function GroupBy(props) {
253
341
  }
254
342
  }),
255
343
  onOk: function () {
256
- var _onOk = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
344
+ var _onOk = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee() {
257
345
  var newMeta;
258
346
  return _regenerator["default"].wrap(function (_context) {
259
347
  while (1) switch (_context.prev = _context.next) {
@@ -265,9 +353,9 @@ var GroupBy = function GroupBy(props) {
265
353
  _pandora.Toast.warning((0, _locale.__)('SqlQueryBuilder.aliasForRules'));
266
354
  return _context.abrupt("return", false);
267
355
  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
356
+ newMeta = store.metaList[groupIndex].list.slice();
270
357
  newMeta[index].by[i].fieldAlias = fieldAlias;
358
+ newMeta[index].by[i].sql = (0, _helper2.summarizeByToSql)(newMeta[index].by[i]);
271
359
  newMeta = (0, _utils.changeFieldAlias)(newMeta, newMeta[index].by[i]);
272
360
  store.setMeta(newMeta, groupIndex, {
273
361
  obj: newMeta[index].by,
@@ -295,10 +383,8 @@ var GroupBy = function GroupBy(props) {
295
383
  name_zh: '',
296
384
  tableUuid: v.tableUuid,
297
385
  alias: v.alias,
298
- // 线上的都为空,默认会标红。 等统一格式后可隐藏
299
386
  datasourceName: '',
300
- // 数据源名
301
- datasourceId: '' // 数据源id
387
+ datasourceId: ''
302
388
  });
303
389
  });
304
390
  };
@@ -306,36 +392,105 @@ var GroupBy = function GroupBy(props) {
306
392
  var _v = (0, _cloneDeep["default"])(v);
307
393
  return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, _v), {}, {
308
394
  fieldName: v.name,
309
- // 字段名
310
395
  fieldNameZh: v.name_zh,
311
- // 字段中文名
312
396
  fieldAlias: v.fieldAlias,
313
- // 别名
314
397
  fieldUuid: v.fieldUuid,
315
- // uuid
316
398
  fieldId: v.fieldId,
317
- // 字段id
318
399
  tableName: v.table,
319
- // 表名
320
400
  tableNameZh: '',
321
401
  tableId: v.tableId,
322
- // 表名
323
402
  tableAlias: v.alias,
324
- // 别名
325
403
  tableUuid: v.tableUuid,
326
- // 表唯一标识
327
- // 线上的都为空,默认会标红。 等统一格式后可隐藏
328
404
  datasourceName: '',
329
- // 数据源名
330
405
  datasourceId: '',
331
- // 数据源id
332
406
  type: _types.AtomsTypeEnum.FIELD
333
407
  });
334
408
  };
409
+ var _getFirstField = function getFirstField() {
410
+ var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
411
+ var _iterator = (0, _createForOfIteratorHelper2["default"])(list),
412
+ _step;
413
+ try {
414
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
415
+ var item = _step.value;
416
+ if (!item) continue;
417
+ if (item.type === _types.AtomsTypeEnum.FIELD) return item;
418
+ if (item.type === _types.AtomsTypeEnum.EXPRESSION) {
419
+ var found = _getFirstField([].concat((0, _toConsumableArray2["default"])(item.lhs || []), (0, _toConsumableArray2["default"])(item.rhs || [])));
420
+ if (found) return found;
421
+ }
422
+ if (item.type === _types.AtomsTypeEnum.FORMULA) {
423
+ var _found = (item.args || []).map(function (arg) {
424
+ return _getFirstField((arg === null || arg === void 0 ? void 0 : arg.list) || []);
425
+ }).find(Boolean);
426
+ if (_found) return _found;
427
+ }
428
+ if (item.type === _types.AtomsTypeEnum.AND_OR) {
429
+ var _found2 = _getFirstField(item.list || []);
430
+ if (_found2) return _found2;
431
+ }
432
+ if (item.type === _types.AtomsTypeEnum.CASE_WHEN) {
433
+ var _found3 = _getFirstField(item.caseValue || []) || (item.branches || []).map(function (branch) {
434
+ return _getFirstField([].concat((0, _toConsumableArray2["default"])(branch.when || []), (0, _toConsumableArray2["default"])(branch.then || [])));
435
+ }).find(Boolean) || _getFirstField(item.elseValue || []);
436
+ if (_found3) return _found3;
437
+ }
438
+ if (item.type === _types.AtomsTypeEnum.EXISTS || item.type === _types.AtomsTypeEnum.NOT_EXISTS) {
439
+ var _found4 = _getFirstField(item.notExists || []);
440
+ if (_found4) return _found4;
441
+ }
442
+ }
443
+ } catch (err) {
444
+ _iterator.e(err);
445
+ } finally {
446
+ _iterator.f();
447
+ }
448
+ return null;
449
+ };
450
+ var getAtomsValue = function getAtomsValue(record) {
451
+ var _record$atoms;
452
+ if ((_record$atoms = record.atoms) !== null && _record$atoms !== void 0 && _record$atoms.length) return record.atoms;
453
+ var field = getField(record);
454
+ return field.fieldName ? [field] : [];
455
+ };
456
+ var normalizeByRecord = function normalizeByRecord(record, itemIndex, metaList) {
457
+ var _store$preProps;
458
+ var atoms = getAtomsValue(record);
459
+ var firstField = _getFirstField(atoms);
460
+ var nextRecord = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, record), {}, {
461
+ atoms: atoms.length ? atoms : undefined,
462
+ quotes: _getSummaryText(atoms) || record.quotes || record.name || '',
463
+ summarizeType: _types.MetaSummarize_Enum.BY
464
+ });
465
+ if (firstField) {
466
+ nextRecord.table = firstField.tableName || nextRecord.table;
467
+ nextRecord.tableId = firstField.tableId || nextRecord.tableId;
468
+ nextRecord.tableUuid = firstField.tableUuid || nextRecord.tableUuid;
469
+ nextRecord.alias = firstField.tableAlias || nextRecord.alias;
470
+ nextRecord.name = firstField.fieldName || nextRecord.name;
471
+ nextRecord.name_zh = firstField.fieldNameZh || nextRecord.name_zh;
472
+ nextRecord.id = firstField.fieldId || nextRecord.id;
473
+ nextRecord.fieldId = firstField.fieldId || nextRecord.fieldId;
474
+ nextRecord.realName = firstField.fieldName || nextRecord.realName;
475
+ nextRecord.fieldUuid = firstField.fieldUuid || nextRecord.fieldUuid;
476
+ nextRecord.datasourceId = firstField.datasourceId || nextRecord.datasourceId;
477
+ nextRecord.datasourceName = firstField.datasourceName || nextRecord.datasourceName;
478
+ nextRecord.database_type = firstField.database_type || nextRecord.database_type;
479
+ }
480
+ 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);
481
+ nextRecord.fieldAlias = nextRecord.fieldAlias || defaultFieldAlias;
482
+ nextRecord.fieldUuid = nextRecord.fieldUuid || (0, _helper.uuidv4)('field');
483
+ nextRecord.sql = (0, _helper2.summarizeByToSql)(nextRecord);
484
+ if (!(0, _utils.isValidSQLAlias)(nextRecord.fieldAlias)) {
485
+ _pandora.Toast.warning((0, _locale.__)('SqlQueryBuilder.aliasForRules'));
486
+ }
487
+ return nextRecord;
488
+ };
335
489
  return (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
336
490
  children: [meta.by.map(function (v, i) {
491
+ var atomsValue = getAtomsValue(v);
337
492
  return (0, _jsxRuntime.jsx)(_itemName["default"], {
338
- isError: (0, _utils.isError)(getField(v), _getColumns()),
493
+ isError: (0, _utils.isError)(atomsValue.length ? atomsValue : getField(v), _getColumns()),
339
494
  children: (0, _jsxRuntime.jsxs)("div", {
340
495
  className: "Sqb-TableName green-name",
341
496
  onClick: function onClick(e) {