@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
@@ -1,11 +1,4 @@
1
1
  import { AtomsTypeEnum, AtomsItem } from '../../../store/types';
2
- /**
3
- *
4
- * @param type 当前选择的类型
5
- * @param list 当前数组
6
- * @param index 需要讲模版插入的位置
7
- * @returns
8
- */
9
2
  export declare const insertTemplateAt: (oldType: string, type: string, list: any[], index: number) => any[];
10
3
  export declare const operatorList: string[];
11
4
  export declare const customTypes: ({
@@ -10,18 +10,9 @@ var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime
10
10
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
11
11
  var _locale = require("../../../locale");
12
12
  var _types = require("../../../store/types");
13
- // import { FUNCTION_TEMPLATES } from '../function/utils';
14
- /**
15
- *
16
- * @param type 当前选择的类型
17
- * @param list 当前数组
18
- * @param index 需要讲模版插入的位置
19
- * @returns
20
- */
21
13
  var insertTemplateAt = exports.insertTemplateAt = function insertTemplateAt(oldType, type, list, index) {
22
14
  var temList = [];
23
15
  var needChange = ['RANK()', 'DENSE_RANK()', 'ROW_NUMBER()', 'when', 'case', 'then'].includes(oldType);
24
- // 只改变类型不需要插入模版
25
16
  if (needChange) {
26
17
  return list;
27
18
  }
@@ -73,58 +64,34 @@ var insertTemplateAt = exports.insertTemplateAt = function insertTemplateAt(oldT
73
64
  type: _types.AtomsTypeEnum.OPERATOR
74
65
  }, {
75
66
  fieldName: '',
76
- // 字段名
77
67
  fieldNameZh: '',
78
- // 字段中文名
79
68
  fieldAlias: '',
80
- // 别名
81
69
  fieldUuid: '',
82
- // uuid
83
70
  fieldId: '',
84
- // 字段id
85
- // quotes?: string; // 字段展示的 不知道有没有用
86
71
  tableName: '',
87
- // 表名
88
72
  tableNameZh: '',
89
73
  tableId: '',
90
- // 表名
91
74
  tableAlias: '',
92
- // 别名
93
75
  tableUuid: '',
94
- // 表唯一标识
95
76
  datasourceName: '',
96
- // 数据源名
97
77
  datasourceId: '',
98
- // 数据源id
99
78
  type: _types.AtomsTypeEnum.FIELD
100
79
  }, {
101
80
  val: 'ORDER BY',
102
81
  type: _types.AtomsTypeEnum.OPERATOR
103
82
  }, {
104
83
  fieldName: '',
105
- // 字段名
106
84
  fieldNameZh: '',
107
- // 字段中文名
108
85
  fieldAlias: '',
109
- // 别名
110
86
  fieldUuid: '',
111
- // uuid
112
87
  fieldId: '',
113
- // 字段id
114
- // quotes?: string; // 字段展示的 不知道有没有用
115
88
  tableName: '',
116
- // 表名
117
89
  tableNameZh: '',
118
90
  tableId: '',
119
- // 表名
120
91
  tableAlias: '',
121
- // 别名
122
92
  tableUuid: '',
123
- // 表唯一标识
124
93
  datasourceName: '',
125
- // 数据源名
126
94
  datasourceId: '',
127
- // 数据源id
128
95
  type: _types.AtomsTypeEnum.FIELD
129
96
  }, {
130
97
  val: ')',
@@ -135,46 +102,30 @@ var insertTemplateAt = exports.insertTemplateAt = function insertTemplateAt(oldT
135
102
  return list;
136
103
  };
137
104
  var operatorList = exports.operatorList = ['and', 'or', '(', ')', ',', '+', '-', '*', '/', '!', '!=', '<=', '>=', '<', '>', '=', 'case', 'when', 'then', 'else', 'end', 'NULL', 'DESC', 'ASC', 'OVER', 'PARTITION BY', 'ORDER BY', 'RANK()', 'DENSE_RANK()', 'ROW_NUMBER()'];
138
- var customTypes = exports.customTypes = [
139
- // 字段
140
- {
105
+ var customTypes = exports.customTypes = [{
141
106
  value: _types.AtomsTypeEnum.FIELD,
142
107
  label: (0, _locale.__)('customColumn.field')
143
- },
144
- // 表达式
145
- {
108
+ }, {
146
109
  value: _types.AtomsTypeEnum.EXPRESSION,
147
110
  label: (0, _locale.__)('customColumn.expression')
148
- },
149
- // 输入框
150
- {
111
+ }, {
151
112
  value: _types.AtomsTypeEnum.INPUT_STRING,
152
113
  label: (0, _locale.__)('customColumn.input')
153
- },
154
- // 数字输入框
155
- {
114
+ }, {
156
115
  value: _types.AtomsTypeEnum.INPUT_NUMBER,
157
116
  label: (0, _locale.__)('customColumn.numberInput')
158
- },
159
- // 数字输入框
160
- {
117
+ }, {
161
118
  value: _types.AtomsTypeEnum.CONSTANT,
162
119
  label: (0, _locale.__)('customColumn.constant')
163
- },
164
- // 连接符
165
- {
120
+ }, {
166
121
  value: _types.AtomsTypeEnum.OPERATOR,
167
122
  label: (0, _locale.__)('customColumn.operator'),
168
123
  children: operatorList
169
- },
170
- // 函数
171
- {
124
+ }, {
172
125
  value: _types.AtomsTypeEnum.FORMULA,
173
126
  label: (0, _locale.__)('customColumn.formula'),
174
127
  children: operatorList
175
- },
176
- // EXISTS
177
- {
128
+ }, {
178
129
  value: _types.AtomsTypeEnum.NOT_EXISTS,
179
130
  label: 'NOT_EXISTS'
180
131
  }, {
@@ -186,38 +137,23 @@ var customTypes = exports.customTypes = [
186
137
  }];
187
138
  var getTemplateItem = exports.getTemplateItem = function getTemplateItem(type, item) {
188
139
  var temItem;
189
- // 字段
190
140
  if (type === _types.AtomsTypeEnum.FIELD) {
191
141
  temItem = {
192
142
  fieldName: '',
193
- // 字段名
194
143
  fieldNameZh: '',
195
- // 字段中文名
196
144
  fieldAlias: '',
197
- // 别名
198
145
  fieldUuid: '',
199
- // uuid
200
146
  fieldId: '',
201
- // 字段id
202
- // quotes?: string; // 字段展示的 不知道有没有用
203
147
  tableName: '',
204
- // 表名
205
148
  tableNameZh: '',
206
149
  tableId: '',
207
- // 表名
208
150
  tableAlias: '',
209
- // 别名
210
151
  tableUuid: '',
211
- // 表唯一标识
212
152
  datasourceName: '',
213
- // 数据源名
214
153
  datasourceId: '',
215
- // 数据源id
216
154
  type: _types.AtomsTypeEnum.FIELD
217
155
  };
218
- }
219
- // 表达式
220
- else if (type === _types.AtomsTypeEnum.EXPRESSION || type === _types.AtomsTypeEnum.JOIN_DEFAULT) {
156
+ } else if (type === _types.AtomsTypeEnum.EXPRESSION || type === _types.AtomsTypeEnum.JOIN_DEFAULT) {
221
157
  return {
222
158
  lhs: [],
223
159
  rhs: [],
@@ -228,21 +164,17 @@ var getTemplateItem = exports.getTemplateItem = function getTemplateItem(type, i
228
164
  } else if (type === _types.AtomsTypeEnum.EXISTS || type === _types.AtomsTypeEnum.NOT_EXISTS) {
229
165
  return {
230
166
  quotes: '',
231
- // 展示用户看的 组装的文字
232
167
  notExists: [],
233
168
  type: type
234
169
  };
235
170
  } else if (type === _types.AtomsTypeEnum.SUB_QUERY) {
236
171
  return {
237
172
  quotes: '',
238
- // 展示用户看的 组装的文字
239
173
  subQuery: [],
240
174
  type: type
241
175
  };
242
176
  } else if (type === _types.AtomsTypeEnum.UNKNOWN) {
243
177
  return {
244
- // quotes: '', // 展示用户看的 组装的文字
245
- // notExists: [],
246
178
  val: (item === null || item === void 0 ? void 0 : item["default"]) || '',
247
179
  type: type
248
180
  };
@@ -259,12 +191,37 @@ var getTemplateItem = exports.getTemplateItem = function getTemplateItem(type, i
259
191
  } else if (type === _types.AtomsTypeEnum.FORMULA) {
260
192
  temItem = {
261
193
  args: [],
262
- // params: FUNCTION_TEMPLATES?.[type]?.params || [],
263
- // arity: FUNCTION_TEMPLATES?.[type]?.arity || {},
264
194
  name: '',
265
195
  quotes: '',
266
196
  type: type
267
197
  };
198
+ } else if (type === _types.AtomsTypeEnum.CASE_WHEN) {
199
+ return {
200
+ caseValue: [],
201
+ branches: [{
202
+ when: [{
203
+ val: '',
204
+ type: _types.AtomsTypeEnum.UNKNOWN
205
+ }],
206
+ then: [{
207
+ val: '',
208
+ type: _types.AtomsTypeEnum.UNKNOWN
209
+ }]
210
+ }],
211
+ elseValue: [],
212
+ quotes: '',
213
+ type: type
214
+ };
215
+ } else if (type === _types.AtomsTypeEnum.AND_OR) {
216
+ return {
217
+ operator: 'and',
218
+ list: [{
219
+ val: '',
220
+ type: _types.AtomsTypeEnum.UNKNOWN
221
+ }],
222
+ quotes: '',
223
+ type: type
224
+ };
268
225
  } else if (type === _types.AtomsTypeEnum.COLLECTION) {
269
226
  return {
270
227
  list: [],
@@ -281,7 +238,6 @@ var getTemplateItem = exports.getTemplateItem = function getTemplateItem(type, i
281
238
  type: type
282
239
  };
283
240
  } else {
284
- // 其他
285
241
  temItem = {
286
242
  val: '',
287
243
  type: type
@@ -294,32 +250,36 @@ var _isOk = exports.isOk = function isOk(rhsVal) {
294
250
  if (v.type === _types.AtomsTypeEnum.UNKNOWN) {
295
251
  return false;
296
252
  } else if (v.type === _types.AtomsTypeEnum.JOIN_DEFAULT) {
297
- // 这个情况应该是不存在的
298
- return true; // 或者根据业务逻辑决定是否算“有效”
253
+ return true;
299
254
  } else if (v.type === _types.AtomsTypeEnum.FIELD) {
300
- return Boolean(v.fieldName); // 确保 fieldName 存在且非空
255
+ return Boolean(v.fieldName);
301
256
  } else if (v.type === _types.AtomsTypeEnum.EXPRESSION || v.type === _types.AtomsTypeEnum.EXISTS || v.type === _types.AtomsTypeEnum.NOT_EXISTS || v.type === _types.AtomsTypeEnum.SUB_QUERY) {
302
- return Boolean(v.quotes); // 确保 quotes 存在
257
+ return Boolean(v.quotes);
303
258
  } else if (v.type === _types.AtomsTypeEnum.INPUT_STRING_LIST) {
304
259
  return Array.isArray(v.val) && v.val.every(function (vv) {
305
260
  return Boolean(vv);
306
261
  });
307
262
  } else if (v.type === _types.AtomsTypeEnum.COLLECTION) {
308
263
  return _isOk(v.list || []);
264
+ } else if (v.type === _types.AtomsTypeEnum.CASE_WHEN) {
265
+ return (v.branches || []).length > 0 && (v.branches || []).every(function (branch) {
266
+ return _isOk(branch.when || []) && _isOk(branch.then || []);
267
+ }) && _isOk(v.caseValue || []) && _isOk(v.elseValue || []);
268
+ } else if (v.type === _types.AtomsTypeEnum.AND_OR) {
269
+ return Boolean(v.operator) && _isOk(v.list || []);
309
270
  } else if (v.type === _types.AtomsTypeEnum.FORMULA) {
310
271
  if (!v.quotes) {
311
272
  return false;
312
273
  }
313
274
  return _isOk(v.args || []);
275
+ } else if (v.type === _types.AtomsTypeEnum.SELECT) {
276
+ return Array.isArray(v.val) ? v.val.length > 0 : Boolean(v.val);
314
277
  } else {
315
- return Boolean(v.val) || v.val === 0; // 兜底,确保 val 存在
278
+ return 'val' in v ? Boolean(v.val) || v.val === 0 : false;
316
279
  }
317
280
  });
318
281
  };
319
- // 校验表达式完整性
320
- // 括号不匹配
321
282
  function validateParentheses(list) {
322
- console.log('🚀 ~ validateParentheses ~ list:', list);
323
283
  var depth = 0;
324
284
  var _iterator = (0, _createForOfIteratorHelper2["default"])(list),
325
285
  _step;
@@ -340,14 +300,13 @@ function validateParentheses(list) {
340
300
  }
341
301
  return depth === 0;
342
302
  }
343
- // CASE 语句不完整(缺少 END 或 WHEN/THEN)
344
303
  function validateCaseStructure(list) {
345
304
  for (var i = 0; i < list.length; i++) {
346
305
  var item = list[i];
347
306
  if (item.type === _types.AtomsTypeEnum.OPERATOR && item.val === 'case') {
348
307
  var depth = 1;
349
308
  var hasValidWhenThen = false;
350
- var lastWasWhen = false; // 用于确保 then 前是 when
309
+ var lastWasWhen = false;
351
310
  for (var j = i + 1; j < list.length; j++) {
352
311
  var token = list[j];
353
312
  if (token.type !== _types.AtomsTypeEnum.OPERATOR) continue;
@@ -357,13 +316,11 @@ function validateCaseStructure(list) {
357
316
  } else if (val === 'end') {
358
317
  depth--;
359
318
  if (depth === 0) {
360
- // 当前 case 块结束
361
319
  if (!hasValidWhenThen) {
362
- return false; // 至少需要一个 when-then
320
+ return false;
363
321
  }
364
- break; // 成功找到匹配的 end
322
+ break;
365
323
  }
366
- // 如果 depth < 0,说明 end 多余,但这里我们只关心当前 case,可忽略或报错
367
324
  } else if (val === 'when') {
368
325
  if (depth === 1) {
369
326
  lastWasWhen = true;
@@ -371,28 +328,24 @@ function validateCaseStructure(list) {
371
328
  } else if (val === 'then') {
372
329
  if (depth === 1) {
373
330
  if (!lastWasWhen) {
374
- return false; // then 前没有 when
331
+ return false;
375
332
  }
376
333
  hasValidWhenThen = true;
377
- lastWasWhen = false; // then 消费掉 when
334
+ lastWasWhen = false;
378
335
  }
379
336
  }
380
- // 注意:其他操作符(如 else)可在此扩展
381
337
  }
382
- // 如果循环结束还没找到匹配的 end(即 depth > 0)
383
338
  if (depth > 0) {
384
- return false; // 缺少 end
339
+ return false;
385
340
  }
386
341
  }
387
342
  }
388
343
  return true;
389
344
  }
390
- // 窗口函数结构不完整(缺少 OVER 或括号)
391
345
  function validateWindowFunction(list) {
392
346
  for (var i = 0; i < list.length; i++) {
393
347
  var item = list[i];
394
348
  if (item.type === _types.AtomsTypeEnum.OPERATOR && ['RANK()', 'DENSE_RANK()', 'ROW_NUMBER()'].includes(item.val)) {
395
- // 找后面的 OVER (
396
349
  var foundOver = false;
397
350
  var parenDepth = 0;
398
351
  for (var j = i + 1; j < list.length; j++) {
@@ -402,41 +355,95 @@ function validateWindowFunction(list) {
402
355
  foundOver = true;
403
356
  } else if (foundOver && next.val === '(') {
404
357
  parenDepth = 1;
405
- // 继续找匹配的 )
406
358
  for (var k = j + 1; k < list.length; k++) {
407
359
  if (list[k].type !== _types.AtomsTypeEnum.OPERATOR) continue;
408
360
  if (list[k].val === '(') parenDepth++;else if (list[k].val === ')') {
409
361
  parenDepth--;
410
- if (parenDepth === 0) return true; // 完整
362
+ if (parenDepth === 0) return true;
411
363
  }
412
364
  }
413
- return false; // 有 ( 但没匹配 )
365
+ return false;
414
366
  }
415
367
  }
416
- return false; // 没找到 OVER 或 (
368
+ return false;
417
369
  }
418
370
  }
419
371
  return true;
420
372
  }
421
- // 表达式末尾不能是操作符(如 +, AND, WHEN 等)
422
373
  function validateNoTrailingOperator(list) {
423
- // 从后往前找第一个非空 OPERATOR
424
374
  for (var i = list.length - 1; i >= 0; i--) {
425
375
  var item = list[i];
426
376
  if (item.type === _types.AtomsTypeEnum.UNKNOWN && item.val === '') continue;
427
377
  if (item.type === _types.AtomsTypeEnum.OPERATOR) {
428
378
  var val = item.val;
429
- // 二元操作符、逗号、(、when、then 等不能结尾
430
379
  if (['+', '-', '*', '/', '=', '!=', '<', '>', 'and', 'or', ',', '(', 'when', 'then'].includes(val)) {
431
380
  return false;
432
381
  }
433
382
  }
434
- break; // 找到第一个有效项就停
383
+ break;
435
384
  }
436
385
  return true;
437
386
  }
438
387
  function validateExpressionIntegrity(list) {
439
- // 过滤掉空的 UNKNOWN 项(可选)
388
+ var _iterator2 = (0, _createForOfIteratorHelper2["default"])(list),
389
+ _step2;
390
+ try {
391
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
392
+ var item = _step2.value;
393
+ if (item.type === _types.AtomsTypeEnum.AND_OR) {
394
+ if (!item.operator) {
395
+ return {
396
+ isError: true,
397
+ error: 'AND / OR 结构缺少操作符'
398
+ };
399
+ }
400
+ var nestedError = validateExpressionIntegrity(item.list || []);
401
+ if (nestedError.isError) {
402
+ return nestedError;
403
+ }
404
+ }
405
+ if (item.type === _types.AtomsTypeEnum.CASE_WHEN) {
406
+ if ((item.branches || []).length < 1) {
407
+ return {
408
+ isError: true,
409
+ error: 'CASE WHEN 至少需要一个 when / then 分支',
410
+ isCase: true
411
+ };
412
+ }
413
+ var caseValueError = validateExpressionIntegrity(item.caseValue || []);
414
+ if (caseValueError.isError) {
415
+ return caseValueError;
416
+ }
417
+ var _iterator3 = (0, _createForOfIteratorHelper2["default"])(item.branches || []),
418
+ _step3;
419
+ try {
420
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
421
+ var branch = _step3.value;
422
+ var whenError = validateExpressionIntegrity(branch.when || []);
423
+ if (whenError.isError) {
424
+ return whenError;
425
+ }
426
+ var thenError = validateExpressionIntegrity(branch.then || []);
427
+ if (thenError.isError) {
428
+ return thenError;
429
+ }
430
+ }
431
+ } catch (err) {
432
+ _iterator3.e(err);
433
+ } finally {
434
+ _iterator3.f();
435
+ }
436
+ var elseError = validateExpressionIntegrity(item.elseValue || []);
437
+ if (elseError.isError) {
438
+ return elseError;
439
+ }
440
+ }
441
+ }
442
+ } catch (err) {
443
+ _iterator2.e(err);
444
+ } finally {
445
+ _iterator2.f();
446
+ }
440
447
  var cleanList = list.filter(function (item) {
441
448
  return !(item.type === _types.AtomsTypeEnum.UNKNOWN && item.val === '');
442
449
  });
@@ -461,9 +468,6 @@ function validateExpressionIntegrity(list) {
461
468
  isOver: true
462
469
  };
463
470
  }
464
- // if (!validateNoTrailingOperator(cleanList)) {
465
- // return { isError: true, error: '表达式末尾不能是操作符(如 +, AND, WHEN 等)' };
466
- // }
467
471
  return {
468
472
  isError: false
469
473
  };
@@ -1,9 +1,3 @@
1
- /**
2
- * 选择保留哪些表字段
3
- * 谁在用?
4
- * 1、数据模块
5
- * 2、关联模块
6
- */
7
1
  import './index.less';
8
2
  import { MetaData_ColumnsType } from '../../../store/types';
9
3
  interface PropsType {
@@ -21,14 +21,6 @@ var _icons = require("../../icons");
21
21
  var _useProvider = require("../../../hooks/use-provider");
22
22
  var _helper = require("../../../utils/helper");
23
23
  var _utils = require("../../../utils");
24
- /**
25
- * 选择保留哪些表字段
26
- * 谁在用?
27
- * 1、数据模块
28
- * 2、关联模块
29
- */
30
-
31
- // 选择表中参数
32
24
  var SelectColumn = function SelectColumn(_ref) {
33
25
  var _ref$data = _ref.data,
34
26
  data = _ref$data === void 0 ? [] : _ref$data,
@@ -84,12 +76,12 @@ var SelectColumn = function SelectColumn(_ref) {
84
76
  }
85
77
  }, [isAllSelect]);
86
78
  function onSelect(columns, newMetaList) {
87
- var originalData = (0, _cloneDeep["default"])(originList); // 原始数据
79
+ var originalData = (0, _cloneDeep["default"])(originList);
88
80
  var mergedColumns = originalData.map(function (item) {
89
81
  var match = columns.find(function (col) {
90
82
  return col.fieldUuid === item.fieldUuid;
91
83
  });
92
- return match ? (0, _cloneDeep["default"])(match) : item; // 可选:是否需要深拷贝 match
84
+ return match ? (0, _cloneDeep["default"])(match) : item;
93
85
  });
94
86
  setColumns(columns);
95
87
  setOriginList(mergedColumns);
@@ -99,7 +91,6 @@ var SelectColumn = function SelectColumn(_ref) {
99
91
  var fieldAlias = val || '';
100
92
  _pandora.Modal.confirm({
101
93
  title: (0, _locale.__)('SqlQueryBuilder.alias'),
102
- // 设置别名
103
94
  content: (0, _jsxRuntime.jsx)(_pandora.Input, {
104
95
  defaultValue: fieldAlias,
105
96
  onChange: function onChange(val) {
@@ -107,7 +98,7 @@ var SelectColumn = function SelectColumn(_ref) {
107
98
  }
108
99
  }),
109
100
  onOk: function () {
110
- var _onOk = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
101
+ var _onOk = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee() {
111
102
  var newColumns, newMetaList;
112
103
  return _regenerator["default"].wrap(function (_context) {
113
104
  while (1) switch (_context.prev = _context.next) {
@@ -156,9 +147,7 @@ var SelectColumn = function SelectColumn(_ref) {
156
147
  children: [(0, _jsxRuntime.jsxs)("div", {
157
148
  className: 'Sqb-SelectColumn--header pt-2',
158
149
  children: [(0, _jsxRuntime.jsx)("div", {
159
- className: (0, _classnames["default"])("SelectColumn-border mb-2 pb-2 px-2 flex items-center", {
160
- // 'events-none': isAllSelect
161
- }),
150
+ className: (0, _classnames["default"])("SelectColumn-border mb-2 pb-2 px-2 flex items-center", {}),
162
151
  onClick: function onClick() {
163
152
  var newColumns = columns.map(function (v) {
164
153
  return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, v), {}, {
@@ -1,11 +1,3 @@
1
- /**
2
- * 选择表字段当条件
3
- * 谁在用?
4
- * 1、关联模块
5
- * 2、过滤器模块
6
- * 3、聚合模块
7
- * 4、排序模块
8
- */
9
1
  import './index.less';
10
2
  import { ColumnsPopupThemeEnum, SQL_COLUMN_TYPE } from '../../../store/enum';
11
3
  import { MetaData_ColumnsType, MetaJoin_TalbeType, AtomsField } from '../../../store/types';