@gingkoo/pandora-metabase 1.0.117 → 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 +966 -509
  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 -112
  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 +14 -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 +965 -509
  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 -112
  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 +14 -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
package/lib/es/utils.js CHANGED
@@ -8,7 +8,7 @@ var _excluded = ["list"];
8
8
  import { __ } from './locale';
9
9
  import { TypeEnum, SQL_COLUMN_TYPE } from './store/enum';
10
10
  import { AtomsTypeEnum } from './store/types';
11
- import { summarizeToSql } from './store/helper';
11
+ import { summarizeByToSql, summarizeToSql } from './store/helper';
12
12
  import { transformSql } from './utils/transformSql';
13
13
  import { uuidv4 } from './utils/helper';
14
14
  import cloneDeep from 'lodash/cloneDeep';
@@ -39,7 +39,6 @@ export var getMetaTabels = function getMetaTabels(data) {
39
39
  export var getColumnsTables = function getColumnsTables(data) {
40
40
  var obj = {};
41
41
  data.map(function (v) {
42
- // data也可直接是下拉框
43
42
  var _v$datasourceId = v.datasourceId,
44
43
  datasourceId = _v$datasourceId === void 0 ? 'source' : _v$datasourceId,
45
44
  _v$id = v.id,
@@ -58,13 +57,11 @@ export var getHelper = function getHelper(list, item) {
58
57
  return v.type;
59
58
  });
60
59
  var curIndex = list.indexOf(item);
61
- var leftTypes = types.slice(0, curIndex); // 当前元素上面的所有元素 (不包含自己)
62
- var rightTypes = types.slice(curIndex + 1); // 当前元素下面的所有元素 (不包含自己)
60
+ var leftTypes = types.slice(0, curIndex);
61
+ var rightTypes = types.slice(curIndex + 1);
63
62
  var leftList = list.slice(0, curIndex);
64
63
  var rightList = list.slice(curIndex + 1);
65
- var topList = leftList; // 包含自己
66
- // let prevType = list[curIndex - 1]?.type || '';
67
- // let nextType = list[curIndex + 1]?.type || '';
64
+ var topList = leftList;
68
65
  var prevItem = list[curIndex - 1] || {};
69
66
  var nextItem = list[curIndex + 1] || {};
70
67
  var ExistAboveGroupBy = false;
@@ -106,16 +103,13 @@ export var getHelper = function getHelper(list, item) {
106
103
  nextItem: nextItem
107
104
  };
108
105
  };
109
- // 获取子查询的字段
110
106
  export var getSubColumns = function getSubColumns(metaList) {
111
107
  var obj = {
112
108
  metaKey: -1,
113
109
  type: TypeEnum.customColumn,
114
110
  customColumn: [{
115
111
  name: '',
116
- // 用户起的别名
117
112
  fieldUuid: ''
118
- // formula: '', // 公式}];
119
113
  }]
120
114
  };
121
115
  var _getHelper = getHelper([].concat(_toConsumableArray(metaList), [obj]), obj),
@@ -140,9 +134,7 @@ export var getSubColumns = function getSubColumns(metaList) {
140
134
  name: v.name || v.quotes,
141
135
  name_zh: v.name_zh || v.quotes,
142
136
  id: v.id || v.fieldId,
143
- // fieldUuid: uuidv4('field'),
144
137
  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]) || '',
145
- // name_zh: '',
146
138
  database_type: (v === null || v === void 0 ? void 0 : v.database_type) || SQL_COLUMN_TYPE.FLOAT,
147
139
  special_type: '',
148
140
  select: true
@@ -157,7 +149,6 @@ export var getSubColumns = function getSubColumns(metaList) {
157
149
  name_zh: v.name_zh || v.quotes,
158
150
  id: v.id || v.fieldId,
159
151
  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]) || '',
160
- // name_zh: '',
161
152
  database_type: (v === null || v === void 0 ? void 0 : v.database_type) || SQL_COLUMN_TYPE.FLOAT,
162
153
  special_type: '',
163
154
  select: true
@@ -167,20 +158,15 @@ export var getSubColumns = function getSubColumns(metaList) {
167
158
  data = [_data];
168
159
  var joinData = prevList.filter(function (v) {
169
160
  return v.type === TypeEnum.joinData;
170
- })
171
- // @ts-ignore
172
- .filter(function (v) {
161
+ }).filter(function (v) {
173
162
  return v && v.table2.name;
174
163
  });
175
164
  if (joinData.length) {
176
- data = data.concat(
177
- // @ts-ignore
178
- joinData.map(function (v) {
165
+ data = data.concat(joinData.map(function (v) {
179
166
  var columns = v.columns.map(function (column) {
180
167
  return _objectSpread(_objectSpread({}, column), {}, {
181
168
  name: column.fieldAlias || column.name,
182
169
  fieldAlias: ''
183
- // fieldUuid: uuidv4('field'),
184
170
  });
185
171
  });
186
172
  return {
@@ -191,14 +177,12 @@ export var getSubColumns = function getSubColumns(metaList) {
191
177
  }));
192
178
  }
193
179
  } else {
194
- // @ts-ignore
195
180
  data = metaList.slice().map(function (v) {
196
181
  if (v.type === TypeEnum.data) {
197
182
  var columns = v.columns.map(function (column) {
198
183
  return _objectSpread(_objectSpread({}, column), {}, {
199
184
  name: column.fieldAlias || column.name,
200
185
  fieldAlias: ''
201
- // fieldUuid: uuidv4('field'),
202
186
  });
203
187
  }).filter(function (item) {
204
188
  return item.select;
@@ -213,7 +197,6 @@ export var getSubColumns = function getSubColumns(metaList) {
213
197
  return _objectSpread(_objectSpread({}, column), {}, {
214
198
  name: column.fieldAlias || column.name,
215
199
  fieldAlias: ''
216
- // fieldUuid: uuidv4('field'),
217
200
  });
218
201
  }).filter(function (item) {
219
202
  return item.select;
@@ -252,20 +235,11 @@ export var getSubColumns = function getSubColumns(metaList) {
252
235
  }
253
236
  return data;
254
237
  };
255
- // data = 'data',
256
- // joinData = 'joinData',
257
- // permissionTable = 'permissionTable', // 权限表
258
- // customColumn = 'customColumn',
259
- // filter = 'filter',
260
- // summarize = 'summarize',
261
- // sort = 'sort',
262
- // rowLimit = 'rowLimit',
263
238
  var AliasType;
264
239
  (function (AliasType) {
265
240
  AliasType["table"] = "table";
266
241
  AliasType["field"] = "field";
267
242
  })(AliasType || (AliasType = {}));
268
- // 修改别名
269
243
  var _changeAlias = function changeAlias(items, val, type) {
270
244
  return items.map(function (v) {
271
245
  if (v.type === AtomsTypeEnum.JOIN_DEFAULT || v.type === AtomsTypeEnum.EXPRESSION) {
@@ -368,13 +342,26 @@ export var changeTableAlias = function changeTableAlias(list, curObj) {
368
342
  v.group.map(function (group) {
369
343
  if (group.tableUuid === tableUuid) {
370
344
  group.alias = alias;
345
+ var groupAtoms = group.atoms;
346
+ if (groupAtoms && groupAtoms.length > 0) {
347
+ group.atoms = _changeAlias(groupAtoms, {
348
+ uuid: tableUuid,
349
+ alias: alias
350
+ }, AliasType.table);
351
+ }
371
352
  group.sql = summarizeToSql(v.group, group).sql;
372
353
  }
373
354
  });
374
355
  v.by.map(function (by) {
375
356
  if (by.tableUuid === tableUuid) {
376
357
  by.alias = alias;
377
- by.sql = "".concat(by.alias, ".").concat(by.realName || by.name);
358
+ if (by.atoms && by.atoms.length > 0) {
359
+ by.atoms = _changeAlias(by.atoms, {
360
+ uuid: tableUuid,
361
+ alias: alias
362
+ }, AliasType.table);
363
+ }
364
+ by.sql = summarizeByToSql(by);
378
365
  }
379
366
  });
380
367
  }
@@ -386,12 +373,6 @@ export var changeTableAlias = function changeTableAlias(list, curObj) {
386
373
  }, AliasType.table);
387
374
  }
388
375
  }
389
- // if ((v as MetaData | MetaJoin).subquery) {
390
- // (v as MetaData | MetaJoin).subquery = changeTableAlias(
391
- // (v as MetaData | MetaJoin).subquery || [],
392
- // curObj,
393
- // );
394
- // }
395
376
  return v;
396
377
  })) || [];
397
378
  };
@@ -425,13 +406,26 @@ export var changeFieldAlias = function changeFieldAlias(list, curObj) {
425
406
  v.group.map(function (group) {
426
407
  if (group.fieldUuid === uuid) {
427
408
  group.fieldAlias = alias;
409
+ var groupAtoms = group.atoms;
410
+ if (groupAtoms && groupAtoms.length > 0) {
411
+ group.atoms = _changeAlias(groupAtoms, {
412
+ uuid: uuid,
413
+ alias: alias
414
+ }, AliasType.field);
415
+ }
428
416
  group.sql = summarizeToSql(v.group, group).sql;
429
417
  }
430
418
  });
431
419
  v.by.map(function (by) {
432
420
  if (by.fieldUuid === uuid) {
433
421
  by.fieldAlias = alias;
434
- by.sql = "".concat(by.alias, ".").concat(by.realName || by.name);
422
+ if (by.atoms && by.atoms.length > 0) {
423
+ by.atoms = _changeAlias(by.atoms, {
424
+ uuid: uuid,
425
+ alias: alias
426
+ }, AliasType.field);
427
+ }
428
+ by.sql = summarizeByToSql(by);
435
429
  }
436
430
  });
437
431
  }
@@ -466,7 +460,6 @@ export function splitByUnion(data) {
466
460
  while (i < original.length) {
467
461
  var item = original[i];
468
462
  if (item.type === 'group') {
469
- // group.list 中每一项原样推入结果
470
463
  var _iterator = _createForOfIteratorHelper(item.list),
471
464
  _step;
472
465
  try {
@@ -483,7 +476,6 @@ export function splitByUnion(data) {
483
476
  } else if (item.type === 'union') {
484
477
  var list = item.list,
485
478
  otehr = _objectWithoutProperties(item, _excluded);
486
- // 查找下一个 group,并将其 list 转成 subquery
487
479
  var nextItem = original[i + 1];
488
480
  if (nextItem && nextItem.type === 'group') {
489
481
  result.push(_objectSpread(_objectSpread({}, otehr), {}, {
@@ -502,6 +494,67 @@ export function splitByUnion(data) {
502
494
  }
503
495
  return result;
504
496
  }
497
+ var summarizeNoArgumentConditions = ['总行数', '累积行数'];
498
+ var createSummarizeFieldAtom = function createSummarizeFieldAtom(record) {
499
+ if (!record.name) return null;
500
+ return {
501
+ fieldName: record.name,
502
+ fieldNameZh: record.name_zh || '',
503
+ fieldAlias: '',
504
+ fieldUuid: uuidv4('field'),
505
+ fieldId: record.id || record.fieldId || '',
506
+ tableName: record.table || '',
507
+ tableNameZh: '',
508
+ tableId: record.tableId || '',
509
+ tableAlias: record.alias || '',
510
+ tableUuid: record.tableUuid || '',
511
+ datasourceName: record.datasourceName || '',
512
+ datasourceId: record.datasourceId || '',
513
+ type: AtomsTypeEnum.FIELD
514
+ };
515
+ };
516
+ var normalizeSummarizeItemForSave = function normalizeSummarizeItemForSave(record) {
517
+ var _record$atoms;
518
+ if ((_record$atoms = record.atoms) !== null && _record$atoms !== void 0 && _record$atoms.length || summarizeNoArgumentConditions.includes(record.condition)) {
519
+ return record;
520
+ }
521
+ var fieldAtom = createSummarizeFieldAtom(record);
522
+ if (!fieldAtom) return record;
523
+ return _objectSpread(_objectSpread({}, record), {}, {
524
+ atoms: [fieldAtom]
525
+ });
526
+ };
527
+ var normalizeSummarizeByForSave = function normalizeSummarizeByForSave(record) {
528
+ var _record$atoms2;
529
+ if ((_record$atoms2 = record.atoms) !== null && _record$atoms2 !== void 0 && _record$atoms2.length) return record;
530
+ var fieldAtom = createSummarizeFieldAtom(record);
531
+ if (!fieldAtom) return record;
532
+ return _objectSpread(_objectSpread({}, record), {}, {
533
+ atoms: [fieldAtom]
534
+ });
535
+ };
536
+ var _normalizeLegacySummarizeForSave = function normalizeLegacySummarizeForSave() {
537
+ var metas = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
538
+ return metas.map(function (meta) {
539
+ if (meta.type === TypeEnum.summarize) {
540
+ return _objectSpread(_objectSpread({}, meta), {}, {
541
+ group: meta.group.map(function (item) {
542
+ return normalizeSummarizeItemForSave(item);
543
+ }),
544
+ by: meta.by.map(function (item) {
545
+ return normalizeSummarizeByForSave(item);
546
+ })
547
+ });
548
+ }
549
+ if (meta.type === TypeEnum.union) {
550
+ return _objectSpread(_objectSpread({}, meta), {}, {
551
+ subquery: _normalizeLegacySummarizeForSave(meta.subquery || [])
552
+ });
553
+ }
554
+ return meta;
555
+ });
556
+ };
557
+ export { _normalizeLegacySummarizeForSave as normalizeLegacySummarizeForSave };
505
558
  export var getObjTem = function getObjTem(arr) {
506
559
  var obj = {};
507
560
  arr === null || arr === void 0 || arr.map(function (v) {
@@ -516,12 +569,8 @@ export var getObjTem = function getObjTem(arr) {
516
569
  export var patchData = function patchData(metas) {
517
570
  var constantList = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
518
571
  var formulaTemplates = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
519
- // return metas;
520
572
  var mainTable = metas[0] || {};
521
573
  var version = (mainTable === null || mainTable === void 0 ? void 0 : mainTable.patchVersion) || '';
522
- // if (version != '1.0.0') {
523
- // return patchMetas(metas);
524
- // }
525
574
  if (version != '1.1.0') {
526
575
  return patchMetas(metas, constantList, getObjTem(formulaTemplates));
527
576
  }
@@ -533,7 +582,6 @@ export function reassembleByUnion() {
533
582
  var result = [];
534
583
  var i = 0;
535
584
  var len = target.length;
536
- // 如果没有任何 union,直接放入一个 group.list
537
585
  var hasUnion = target.some(function (item) {
538
586
  return item.type === 'union';
539
587
  });
@@ -544,11 +592,9 @@ export function reassembleByUnion() {
544
592
  list: _toConsumableArray(target)
545
593
  }];
546
594
  }
547
- // 否则正常处理
548
595
  while (i < len) {
549
596
  var item = target[i];
550
597
  if (item.type !== 'union') {
551
- // 收集连续非 union 的 item,统一放入一个 group.list
552
598
  var groupList = [];
553
599
  while (i < len && target[i].type !== 'union') {
554
600
  groupList.push(target[i]);
@@ -561,7 +607,6 @@ export function reassembleByUnion() {
561
607
  });
562
608
  } else {
563
609
  var _item$union;
564
- // 处理 union
565
610
  result.push({
566
611
  type: 'union',
567
612
  name: 'union',
@@ -571,39 +616,11 @@ export function reassembleByUnion() {
571
616
  var subquery = item.subquery || [];
572
617
  var convertedSubquery = reassembleByUnion(subquery);
573
618
  result.push.apply(result, _toConsumableArray(convertedSubquery));
574
- i++; // 跳过当前 union
619
+ i++;
575
620
  }
576
621
  }
577
622
  return result;
578
623
  }
579
- // export const buildSqlQuery = (data?: MetaListType[]): string => {
580
- // if (!data || data.length === 0) return '';
581
- // let sqlClauses: string[] = ['not exitis ( '];
582
- // data.forEach((item) => {
583
- // if (item.type === TypeEnum.data) {
584
- // const meta = item as MetaData;
585
- // const tableName = meta.table.name;
586
- // const alias = meta.table.alias ? `AS ${meta.table.alias}` : '';
587
- // const dataSource = meta.table.datasourceName;
588
- // sqlClauses.push(`SELECT 1 FROM ${dataSource}.${tableName} ${alias}`);
589
- // }
590
- // if (item.type === TypeEnum.joinData) {
591
- // const meta = item as MetaJoin;
592
- // const table1 = meta.table1.alias ? meta.table1.alias : meta.table1.name;
593
- // const table2 = `${meta.table2.datasourceName}.${meta.table2.name}`;
594
- // const alias2 = meta.table2.alias ? meta.table2.alias : '';
595
- // joins.push(`LEFT JOIN ${table2} ${alias2} ON ${table1}.${meta.columns[0]?.name} = ${alias2}.${meta.columns[0]?.name}`);
596
- // }
597
- // if (item.type === TypeEnum.filter) {
598
- // const filterStrings = (item as MetaFilter).filter.map((f) => f.quotes).filter(Boolean); // 排除空条件
599
- // if (filterStrings.length > 0) {
600
- // sqlClauses.push(`WHERE ${filterStrings.join(' AND ')}`);
601
- // }
602
- // }
603
- // });
604
- // // 简单拼接 SQL 片段
605
- // return sqlClauses.join(' ') + ' )' + ';';
606
- // };
607
624
  export var buildSqlQuery = function buildSqlQuery() {
608
625
  var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
609
626
  var type = arguments.length > 1 ? arguments[1] : undefined;
@@ -618,124 +635,17 @@ export var buildSqlQuery = function buildSqlQuery() {
618
635
  var _transformSql = transformSql(data),
619
636
  sql = _transformSql.sql;
620
637
  return "".concat(typeName, "(").concat(sql, ") ");
621
- // if (!data || data.length === 0) return '';
622
- // const name = type === AtomsTypeEnum.EXISTS ? 'EXISTS' : 'NOT EXISTS';
623
- // let sqlClauses: string[] = [`${name} (`];
624
- // let tables: string[] = [];
625
- // let joins: string[] = [];
626
- // let wheres: string[] = [];
627
- // data?.forEach((item) => {
628
- // if (item.type === TypeEnum.data) {
629
- // const meta = item as MetaData;
630
- // const tableName = `${meta.table.name}`;
631
- // const alias = meta.table.alias ? ` AS ${meta.table.alias}` : '';
632
- // tables.push(`${tableName}${alias}`);
633
- // }
634
- // if (item.type === TypeEnum.joinData) {
635
- // const meta = item as MetaJoin;
636
- // const table2Name = `${meta.table2.name}`;
637
- // const alias2 = meta.table2.alias ? ` AS ${meta.table2.alias}` : '';
638
- // const table2 = `${meta.table2.alias || meta.table2.name}`;
639
- // const table1 = `${meta.table1.alias || meta.table1.name}`;
640
- // joins.push(`LEFT JOIN ${table2Name}${alias2} ON `);
641
- // if (Array.isArray(item.expressions) && item.expressions?.length > 0) {
642
- // item.expressions?.forEach((expression) => {
643
- // let left = '',
644
- // right = '';
645
- // if (expression.type === AtomsTypeEnum.JOIN_DEFAULT) {
646
- // if (expression.lhs[0].type === AtomsTypeEnum.FIELD) {
647
- // left = expression.lhs
648
- // .map((v) => {
649
- // if (v.type === AtomsTypeEnum.FIELD) {
650
- // return v.fieldName;
651
- // } else {
652
- // return '';
653
- // }
654
- // })
655
- // .join(' || ');
656
- // } else if (
657
- // expression.lhs[0].type === AtomsTypeEnum.CONSTANT ||
658
- // expression.lhs[0].type === AtomsTypeEnum.INPUT_STRING
659
- // ) {
660
- // left = expression.lhs[0].val;
661
- // }
662
- // if (expression.rhs[0].type === AtomsTypeEnum.FIELD) {
663
- // right = expression.rhs
664
- // .map((v) => {
665
- // if (v.type === AtomsTypeEnum.FIELD) {
666
- // return v.fieldName;
667
- // } else {
668
- // return '';
669
- // }
670
- // })
671
- // .join(' || ');
672
- // } else if (
673
- // expression.rhs[0].type === AtomsTypeEnum.CONSTANT ||
674
- // expression.rhs[0].type === AtomsTypeEnum.INPUT_STRING
675
- // ) {
676
- // right = expression.rhs[0].val;
677
- // }
678
- // }
679
- // joins.push(`${left} = ${right}`);
680
- // });
681
- // }
682
- // }
683
- // if (item.type === TypeEnum.filter) {
684
- // const filterStrings = (item as MetaFilter).filter
685
- // .map((f) => {
686
- // if (f.type === AtomsTypeEnum.FIELD) {
687
- // return f.fieldName;
688
- // } else if (
689
- // f.type === AtomsTypeEnum.EXPRESSION ||
690
- // f.type === AtomsTypeEnum.EXISTS ||
691
- // f.type === AtomsTypeEnum.NOT_EXISTS ||
692
- // f.type === AtomsTypeEnum.FORMULA ||
693
- // f.type === AtomsTypeEnum.COLLECTION
694
- // ) {
695
- // return f.quotes;
696
- // } else if (f.type === AtomsTypeEnum.JOIN_DEFAULT) {
697
- // return '';
698
- // } else if (
699
- // f.type === AtomsTypeEnum.INPUT_NUMBER ||
700
- // f.type === AtomsTypeEnum.INPUT_NUMBER_LIST ||
701
- // f.type === AtomsTypeEnum.INPUT_STRING_LIST
702
- // ) {
703
- // return '';
704
- // } else {
705
- // return f.val;
706
- // }
707
- // })
708
- // .filter(Boolean);
709
- // if (filterStrings.length > 0) {
710
- // wheres.push(...filterStrings);
711
- // }
712
- // }
713
- // });
714
- // // 构建子查询
715
- // if (tables.length > 0) {
716
- // sqlClauses.push(`SELECT 1 FROM ${tables[0]}`);
717
- // if (joins.length > 0) {
718
- // sqlClauses.push(joins.join(' '));
719
- // }
720
- // if (wheres.length > 0) {
721
- // sqlClauses.push(`WHERE ${wheres.join(' ')}`);
722
- // }
723
- // }
724
- // sqlClauses.push(')');
725
- // return sqlClauses.join(' ');
726
638
  };
727
639
  var _isError = function isError(item, data) {
728
640
  var tables = getColumnsTables(data);
729
- // 不存在
730
641
  if (!item) {
731
642
  return false;
732
643
  }
733
644
  if (Array.isArray(item)) {
734
645
  return item.some(function (v) {
735
646
  return _isError(v, data);
736
- }); // item可能为数组关联的时候有多选情况,只要有一个错,整体就错
647
+ });
737
648
  }
738
- // 字段类型
739
649
  if (item.type === AtomsTypeEnum.FIELD) {
740
650
  var datasourceId = item.datasourceId,
741
651
  _item$tableId = item.tableId,
@@ -744,16 +654,15 @@ var _isError = function isError(item, data) {
744
654
  tableAlias = _item$tableAlias === void 0 ? '' : _item$tableAlias,
745
655
  fieldName = item.fieldName,
746
656
  fieldId = item.fieldId;
747
- var _datasourceId = datasourceId || 'source'; // 默认为source
657
+ var _datasourceId = datasourceId || 'source';
748
658
  if (tableId === 'source') {
749
659
  _datasourceId = 'source';
750
660
  }
751
661
  if (!tableId) {
752
- return false; // 未选不报错
662
+ return false;
753
663
  }
754
664
  if (_datasourceId === 'source') {
755
665
  var _tables$_datasourceId;
756
- // 检查是否所有字段的 name 都不等于 fieldName
757
666
  if (!(tables !== null && tables !== void 0 && (_tables$_datasourceId = tables[_datasourceId]) !== null && _tables$_datasourceId !== void 0 && _tables$_datasourceId[tableId + tableAlias])) {
758
667
  return true;
759
668
  } else {
@@ -770,45 +679,32 @@ var _isError = function isError(item, data) {
770
679
  var hasField = (_tables$_datasourceId3 = tables === null || tables === void 0 || (_tables$_datasourceId4 = tables[_datasourceId]) === null || _tables$_datasourceId4 === void 0 || (_tables$_datasourceId4 = _tables$_datasourceId4[tableId + tableAlias]) === null || _tables$_datasourceId4 === void 0 ? void 0 : _tables$_datasourceId4.some(function (v) {
771
680
  return v.name === fieldName && (v.id === undefined || v.id === fieldId);
772
681
  })) !== null && _tables$_datasourceId3 !== void 0 ? _tables$_datasourceId3 : false;
773
- return !hasField; // 注意:返回 true 表示“有错误”
682
+ return !hasField;
774
683
  }
775
684
  }
776
- // 表达式类型
777
685
  if (item.type === AtomsTypeEnum.EXPRESSION) {
778
686
  var lhsHasError = _isError(item.lhs, data);
779
687
  var rhsHasError = _isError(item.rhs, data);
780
688
  return lhsHasError || rhsHasError;
781
689
  }
782
- // 公式
783
690
  if (item.type === AtomsTypeEnum.FORMULA) {
784
691
  return _isError(item.args, data);
785
692
  }
786
- // 公式
787
693
  if (item.type === AtomsTypeEnum.COLLECTION) {
788
694
  return _isError(item.list, data);
789
695
  }
790
- return false; // 其他类型默认无错误
696
+ return false;
791
697
  };
792
- /**
793
- * 深度判断 sub 是否是 obj 的子集(递归比较所有可枚举自有属性)
794
- * @param sub 可能包含部分属性的对象
795
- * @param obj 待比较的对象
796
- * @param visited 用于处理循环引用的 WeakSet
797
- */
798
698
  export { _isError as isError };
799
699
  function isSubset(sub, obj) {
800
700
  var visited = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new WeakSet();
801
- // 基本类型或引用相同
802
701
  if (sub === obj) return true;
803
- // 如果任一不是对象/数组,或者为 null,则不相等(sub 为基本类型时,上面已经比较过,这里只处理对象不等的情况)
804
702
  if (_typeof(sub) !== 'object' || sub === null || _typeof(obj) !== 'object' || obj === null) {
805
703
  return false;
806
704
  }
807
- // 避免循环引用
808
705
  if (visited.has(sub) || visited.has(obj)) return false;
809
706
  visited.add(sub);
810
707
  visited.add(obj);
811
- // 处理数组
812
708
  if (Array.isArray(sub)) {
813
709
  if (!Array.isArray(obj) || sub.length !== obj.length) return false;
814
710
  for (var i = 0; i < sub.length; i++) {
@@ -816,35 +712,23 @@ function isSubset(sub, obj) {
816
712
  }
817
713
  return true;
818
714
  }
819
- // 普通对象:遍历 sub 的每个键
820
715
  for (var key in sub) {
821
716
  if (Object.prototype.hasOwnProperty.call(sub, key)) {
822
- // obj 必须包含该键
823
717
  if (!Object.prototype.hasOwnProperty.call(obj, key)) return false;
824
- // 递归比较值
825
718
  if (!isSubset(sub[key], obj[key], visited)) return false;
826
719
  }
827
720
  }
828
721
  return true;
829
722
  }
830
- /**
831
- * 在嵌套结构 root 中查找是否存在一个对象,使得 target 是该对象的子集
832
- * @param root 可能包含任意层数组/对象的根数据
833
- * @param target 目标对象(可能只包含部分字段)
834
- * @returns 是否存在
835
- */
836
723
  export function containsSubset(root, target) {
837
724
  var visited = new WeakSet();
838
725
  function search(current) {
839
726
  if (current && _typeof(current) === 'object') {
840
- // 避免循环引用
841
727
  if (visited.has(current)) return false;
842
728
  visited.add(current);
843
- // 如果是普通对象(非数组),先检查是否包含 target 子集
844
729
  if (!Array.isArray(current) && isSubset(target, current)) {
845
730
  return true;
846
731
  }
847
- // 继续深入遍历子元素
848
732
  if (Array.isArray(current)) {
849
733
  var _iterator2 = _createForOfIteratorHelper(current),
850
734
  _step2;
@@ -870,45 +754,37 @@ export function containsSubset(root, target) {
870
754
  }
871
755
  return search(root);
872
756
  }
873
- // 判断当前meta中是否含有errorList
874
757
  export var isExistsError = function isExistsError(meta, errorList) {
875
758
  var _meta = cloneDeep(meta);
876
759
  return errorList.some(function (error) {
877
760
  return containsSubset(_meta, error);
878
761
  });
879
762
  };
880
- // 设置新字段信息
881
763
  function setNewField(field, data) {
882
- console.log('🚀 ~ setNewField ~ field:', field);
883
764
  var _iterator3 = _createForOfIteratorHelper(data),
884
765
  _step3;
885
766
  try {
886
767
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
887
768
  var table = _step3.value;
888
- // 第一步:判断表名是否一致
889
769
  if (table.name !== field.tableName) {
890
770
  continue;
891
771
  }
892
- // 第二步:✅ 表名一致,立即更新所有表相关信息(不管字段是否存在)
893
772
  field.datasourceId = table.datasourceId || '';
894
773
  field.datasourceName = table.datasourceName || '';
895
774
  field.tableId = table.id || '';
896
- field.tableName = table.name || ''; // 虽然相同,但确保标准化
775
+ field.tableName = table.name || '';
897
776
  field.tableAlias = table.alias || '';
898
777
  field.tableUuid = table.tableUuid || '';
899
778
  field.tableNameZh = table.name_zh || '';
900
- // 第三步:尝试找字段,更新字段相关信息(仅当字段存在时)
901
779
  var matchedColumn = table.columns.find(function (col) {
902
780
  return col.name === field.fieldName;
903
781
  });
904
- console.log('🚀 ~ setNewField ~ matchedColumn:', matchedColumn);
905
782
  if (matchedColumn) {
906
783
  field.fieldId = matchedColumn.id || '';
907
784
  field.fieldNameZh = matchedColumn.name_zh || '';
908
785
  field.fieldUuid = matchedColumn.fieldUuid || '';
909
786
  field.fieldAlias = matchedColumn.fieldAlias || '';
910
787
  }
911
- // 找到同名表就停止(假设表名唯一)
912
788
  break;
913
789
  }
914
790
  } catch (err) {
@@ -916,10 +792,8 @@ function setNewField(field, data) {
916
792
  } finally {
917
793
  _iterator3.f();
918
794
  }
919
- console.log('🚀 ~ setNewField ~ field:', field);
920
795
  return field;
921
796
  }
922
- // 复制字段别名后修改对应的表id或字段id的别名
923
797
  var _changeCopyField = function changeCopyField(items, data) {
924
798
  return items.map(function (v) {
925
799
  if (v.type === AtomsTypeEnum.JOIN_DEFAULT || v.type === AtomsTypeEnum.EXPRESSION) {
@@ -928,22 +802,10 @@ var _changeCopyField = function changeCopyField(items, data) {
928
802
  rhs: _changeCopyField(v.rhs, data)
929
803
  });
930
804
  } else if (v.type === AtomsTypeEnum.FIELD) {
931
- // if (type === AliasType.table && v.tableUuid === val.uuid) {
932
- // v.tableAlias = val.alias;
933
- // }
934
- // if (type === AliasType.field && v.fieldUuid === val.uuid) {
935
- // v.fieldAlias = val.alias;
936
- // }
937
- // 需要处理复制的字段别名
938
805
  v = setNewField(v, data);
939
806
  return v;
940
807
  } else if (v.type === AtomsTypeEnum.EXISTS || v.type === AtomsTypeEnum.NOT_EXISTS) {
941
808
  v.notExists = changeExistsCopyField(v.notExists || [], data);
942
- // if (type === AliasType.table) {
943
- // v.notExists = changeExistsCopyTable(v.notExists || [], data);
944
- // }
945
- // if (type === AliasType.field) {
946
- // }
947
809
  return v;
948
810
  } else if (v.type === AtomsTypeEnum.FORMULA) {
949
811
  v.args = _changeCopyField(v.args, data);
@@ -975,23 +837,22 @@ export var changeExistsCopyField = function changeExistsCopyField(list, data) {
975
837
  });
976
838
  }
977
839
  if (v.type === TypeEnum.rowLimit) {}
978
- // if (v.type === TypeEnum.summarize) {
979
- // v.group.map((group) => {
980
- // if (group.fieldUuid === uuid) {
981
- // group.fieldAlias = alias;
982
- // group.sql = summarizeToSql(v.group, group).sql;
983
- // }
984
- // });
985
- // v.by.map((by) => {
986
- // if (by.fieldUuid === uuid) {
987
- // by.fieldAlias = alias;
988
- // by.sql = `${by.alias}.${by.realName || by.name}`;
989
- // }
990
- // });
991
- // }
840
+ if (v.type === TypeEnum.summarize) {
841
+ v.group.map(function (group) {
842
+ if (group.atoms && group.atoms.length > 0) {
843
+ group.atoms = _changeCopyField(group.atoms, _data);
844
+ group.sql = summarizeToSql(v.group, group).sql;
845
+ }
846
+ });
847
+ v.by.map(function (by) {
848
+ if (by.atoms && by.atoms.length > 0) {
849
+ by.atoms = _changeCopyField(by.atoms, _data);
850
+ by.sql = summarizeByToSql(by);
851
+ }
852
+ });
853
+ }
992
854
  if (v.type === TypeEnum.filter) {
993
855
  if (v.filter && v.filter.length > 0) {
994
- console.log(v.filter);
995
856
  v.filter = _changeCopyField(v.filter, _data);
996
857
  }
997
858
  }