@gingkoo/pandora-metabase 1.0.126 → 1.0.128

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 (65) hide show
  1. package/lib/cjs/components/dialog/expression/index.js +15 -5
  2. package/lib/cjs/components/dialog/expression/index.less +31 -16
  3. package/lib/cjs/components/dialog/formula-list/CaseWhenGroup.d.ts +14 -5
  4. package/lib/cjs/components/dialog/formula-list/CaseWhenGroup.js +236 -62
  5. package/lib/cjs/components/dialog/formula-list/LogicGroup.d.ts +3 -2
  6. package/lib/cjs/components/dialog/formula-list/LogicGroup.js +19 -11
  7. package/lib/cjs/components/dialog/formula-list/index.d.ts +1 -0
  8. package/lib/cjs/components/dialog/formula-list/index.js +658 -174
  9. package/lib/cjs/components/dialog/formula-list/index.less +1438 -145
  10. package/lib/cjs/components/dialog/formula-list/utils.js +50 -19
  11. package/lib/cjs/components/dialog/select-column-multiple/index.d.ts +1 -0
  12. package/lib/cjs/components/dialog/select-column-multiple/index.js +42 -22
  13. package/lib/cjs/components/dialog/select-summarize/index.js +10 -2
  14. package/lib/cjs/components/dialog/select-table/index.d.ts +2 -1
  15. package/lib/cjs/components/dialog/select-table/index.js +197 -52
  16. package/lib/cjs/components/dialog/select-table/index.less +45 -2
  17. package/lib/cjs/components/metabase/index.less +156 -39
  18. package/lib/cjs/components/modules/custom-column.js +7 -3
  19. package/lib/cjs/components/modules/filter.js +6 -3
  20. package/lib/cjs/components/modules/join-data.js +67 -16
  21. package/lib/cjs/components/modules/permission-table.js +8 -4
  22. package/lib/cjs/components/modules/sort.js +2 -1
  23. package/lib/cjs/components/modules/summarize/group-by.js +20 -6
  24. package/lib/cjs/components/modules/summarize/select-index.js +9 -5
  25. package/lib/cjs/components/modules/table-data.js +26 -5
  26. package/lib/cjs/hooks/use-state.js +143 -17
  27. package/lib/cjs/index.js +7 -1
  28. package/lib/cjs/store/types.d.ts +14 -7
  29. package/lib/cjs/types.d.ts +8 -0
  30. package/lib/cjs/utils/transformSql.js +44 -21
  31. package/lib/cjs/utils.d.ts +2 -2
  32. package/lib/cjs/utils.js +349 -58
  33. package/lib/es/components/dialog/expression/index.js +15 -5
  34. package/lib/es/components/dialog/expression/index.less +31 -16
  35. package/lib/es/components/dialog/formula-list/CaseWhenGroup.d.ts +14 -5
  36. package/lib/es/components/dialog/formula-list/CaseWhenGroup.js +238 -64
  37. package/lib/es/components/dialog/formula-list/LogicGroup.d.ts +3 -2
  38. package/lib/es/components/dialog/formula-list/LogicGroup.js +19 -11
  39. package/lib/es/components/dialog/formula-list/index.d.ts +1 -0
  40. package/lib/es/components/dialog/formula-list/index.js +660 -176
  41. package/lib/es/components/dialog/formula-list/index.less +1438 -145
  42. package/lib/es/components/dialog/formula-list/utils.js +50 -19
  43. package/lib/es/components/dialog/select-column-multiple/index.d.ts +1 -0
  44. package/lib/es/components/dialog/select-column-multiple/index.js +42 -22
  45. package/lib/es/components/dialog/select-summarize/index.js +10 -2
  46. package/lib/es/components/dialog/select-table/index.d.ts +2 -1
  47. package/lib/es/components/dialog/select-table/index.js +197 -52
  48. package/lib/es/components/dialog/select-table/index.less +45 -2
  49. package/lib/es/components/metabase/index.less +156 -39
  50. package/lib/es/components/modules/custom-column.js +7 -3
  51. package/lib/es/components/modules/filter.js +6 -3
  52. package/lib/es/components/modules/join-data.js +67 -16
  53. package/lib/es/components/modules/permission-table.js +8 -4
  54. package/lib/es/components/modules/sort.js +2 -1
  55. package/lib/es/components/modules/summarize/group-by.js +21 -7
  56. package/lib/es/components/modules/summarize/select-index.js +10 -6
  57. package/lib/es/components/modules/table-data.js +26 -5
  58. package/lib/es/hooks/use-state.js +143 -17
  59. package/lib/es/index.js +7 -1
  60. package/lib/es/store/types.d.ts +14 -7
  61. package/lib/es/types.d.ts +8 -0
  62. package/lib/es/utils/transformSql.js +45 -22
  63. package/lib/es/utils.d.ts +2 -2
  64. package/lib/es/utils.js +350 -59
  65. package/package.json +1 -1
@@ -75,6 +75,7 @@ var insertTemplateAt = exports.insertTemplateAt = function insertTemplateAt(oldT
75
75
  tableUuid: '',
76
76
  datasourceName: '',
77
77
  datasourceId: '',
78
+ datasourceType: '',
78
79
  type: _types.AtomsTypeEnum.FIELD
79
80
  }, {
80
81
  val: 'ORDER BY',
@@ -92,6 +93,7 @@ var insertTemplateAt = exports.insertTemplateAt = function insertTemplateAt(oldT
92
93
  tableUuid: '',
93
94
  datasourceName: '',
94
95
  datasourceId: '',
96
+ datasourceType: '',
95
97
  type: _types.AtomsTypeEnum.FIELD
96
98
  }, {
97
99
  val: ')',
@@ -108,6 +110,12 @@ var customTypes = exports.customTypes = [{
108
110
  }, {
109
111
  value: _types.AtomsTypeEnum.EXPRESSION,
110
112
  label: (0, _locale.__)('customColumn.expression')
113
+ }, {
114
+ value: _types.AtomsTypeEnum.CASE_WHEN,
115
+ label: (0, _locale.__)('customColumn.caseWhen')
116
+ }, {
117
+ value: _types.AtomsTypeEnum.AND_OR,
118
+ label: (0, _locale.__)('customColumn.andOr')
111
119
  }, {
112
120
  value: _types.AtomsTypeEnum.INPUT_STRING,
113
121
  label: (0, _locale.__)('customColumn.input')
@@ -151,6 +159,7 @@ var getTemplateItem = exports.getTemplateItem = function getTemplateItem(type, i
151
159
  tableUuid: '',
152
160
  datasourceName: '',
153
161
  datasourceId: '',
162
+ datasourceType: '',
154
163
  type: _types.AtomsTypeEnum.FIELD
155
164
  };
156
165
  } else if (type === _types.AtomsTypeEnum.EXPRESSION || type === _types.AtomsTypeEnum.JOIN_DEFAULT) {
@@ -197,25 +206,29 @@ var getTemplateItem = exports.getTemplateItem = function getTemplateItem(type, i
197
206
  };
198
207
  } else if (type === _types.AtomsTypeEnum.CASE_WHEN) {
199
208
  return {
200
- caseValue: [],
201
- branches: [{
202
- when: [{
209
+ caseAtoms: [],
210
+ whenClauses: [{
211
+ whenAtoms: [{
203
212
  val: '',
204
213
  type: _types.AtomsTypeEnum.UNKNOWN
205
214
  }],
206
- then: [{
215
+ thenAtoms: [{
207
216
  val: '',
208
217
  type: _types.AtomsTypeEnum.UNKNOWN
209
218
  }]
210
219
  }],
211
- elseValue: [],
220
+ elseAtoms: [],
212
221
  quotes: '',
213
222
  type: type
214
223
  };
215
224
  } else if (type === _types.AtomsTypeEnum.AND_OR) {
216
225
  return {
217
226
  operator: 'and',
218
- list: [{
227
+ leftAtoms: [{
228
+ val: '',
229
+ type: _types.AtomsTypeEnum.UNKNOWN
230
+ }],
231
+ rightAtoms: [{
219
232
  val: '',
220
233
  type: _types.AtomsTypeEnum.UNKNOWN
221
234
  }],
@@ -264,11 +277,16 @@ var _isOk = exports.isOk = function isOk(rhsVal) {
264
277
  } else if (v.type === _types.AtomsTypeEnum.COLLECTION) {
265
278
  return _isOk(v.list || []);
266
279
  } else if (v.type === _types.AtomsTypeEnum.CASE_WHEN) {
267
- return (v.branches || []).length > 0 && (v.branches || []).every(function (branch) {
268
- return _isOk(branch.when || []) && _isOk(branch.then || []);
269
- }) && _isOk(v.caseValue || []) && _isOk(v.elseValue || []);
280
+ return (v.whenClauses || []).length > 0 && (v.whenClauses || []).every(function (clause) {
281
+ return _isOk(clause.whenAtoms || []) && _isOk(clause.thenAtoms || []);
282
+ }) && _isOk(v.caseAtoms || []) && _isOk(v.elseAtoms || []);
270
283
  } else if (v.type === _types.AtomsTypeEnum.AND_OR) {
271
- return Boolean(v.operator) && _isOk(v.list || []);
284
+ var hasBinarySides = Array.isArray(v.leftAtoms) || Array.isArray(v.rightAtoms);
285
+ if (hasBinarySides) {
286
+ var _v$leftAtoms, _v$rightAtoms;
287
+ return Boolean(v.operator) && Boolean((_v$leftAtoms = v.leftAtoms) === null || _v$leftAtoms === void 0 ? void 0 : _v$leftAtoms.length) && Boolean((_v$rightAtoms = v.rightAtoms) === null || _v$rightAtoms === void 0 ? void 0 : _v$rightAtoms.length) && _isOk(v.leftAtoms || []) && _isOk(v.rightAtoms || []);
288
+ }
289
+ return Boolean(v.operator) && _isOk(v.atoms || []);
272
290
  } else if (v.type === _types.AtomsTypeEnum.FORMULA) {
273
291
  if (!v.quotes) {
274
292
  return false;
@@ -399,33 +417,46 @@ function validateExpressionIntegrity(list) {
399
417
  error: 'AND / OR 结构缺少操作符'
400
418
  };
401
419
  }
402
- var nestedError = validateExpressionIntegrity(item.list || []);
420
+ var hasBinarySides = Array.isArray(item.leftAtoms) || Array.isArray(item.rightAtoms);
421
+ if (hasBinarySides) {
422
+ var leftError = validateExpressionIntegrity(item.leftAtoms || []);
423
+ if (leftError.isError) {
424
+ return leftError;
425
+ }
426
+ var rightError = validateExpressionIntegrity(item.rightAtoms || []);
427
+ if (rightError.isError) {
428
+ return rightError;
429
+ }
430
+ continue;
431
+ }
432
+ var nestedError = validateExpressionIntegrity(item.atoms || []);
403
433
  if (nestedError.isError) {
404
434
  return nestedError;
405
435
  }
406
436
  }
407
437
  if (item.type === _types.AtomsTypeEnum.CASE_WHEN) {
408
- if ((item.branches || []).length < 1) {
438
+ var whenClauses = item.whenClauses || [];
439
+ if (whenClauses.length < 1) {
409
440
  return {
410
441
  isError: true,
411
442
  error: 'CASE WHEN 至少需要一个 when / then 分支',
412
443
  isCase: true
413
444
  };
414
445
  }
415
- var caseValueError = validateExpressionIntegrity(item.caseValue || []);
416
- if (caseValueError.isError) {
417
- return caseValueError;
446
+ var caseAtomsError = validateExpressionIntegrity(item.caseAtoms || []);
447
+ if (caseAtomsError.isError) {
448
+ return caseAtomsError;
418
449
  }
419
- var _iterator3 = (0, _createForOfIteratorHelper2["default"])(item.branches || []),
450
+ var _iterator3 = (0, _createForOfIteratorHelper2["default"])(whenClauses),
420
451
  _step3;
421
452
  try {
422
453
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
423
454
  var branch = _step3.value;
424
- var whenError = validateExpressionIntegrity(branch.when || []);
455
+ var whenError = validateExpressionIntegrity(branch.whenAtoms || []);
425
456
  if (whenError.isError) {
426
457
  return whenError;
427
458
  }
428
- var thenError = validateExpressionIntegrity(branch.then || []);
459
+ var thenError = validateExpressionIntegrity(branch.thenAtoms || []);
429
460
  if (thenError.isError) {
430
461
  return thenError;
431
462
  }
@@ -435,7 +466,7 @@ function validateExpressionIntegrity(list) {
435
466
  } finally {
436
467
  _iterator3.f();
437
468
  }
438
- var elseError = validateExpressionIntegrity(item.elseValue || []);
469
+ var elseError = validateExpressionIntegrity(item.elseAtoms || []);
439
470
  if (elseError.isError) {
440
471
  return elseError;
441
472
  }
@@ -14,6 +14,7 @@ export interface ColumnType {
14
14
  id: string;
15
15
  datasourceId: string;
16
16
  datasourceName: string;
17
+ datasourceType?: string;
17
18
  table2?: Omit<MetaJoin_TalbeType, 'column' | 'column_id'> | null;
18
19
  }
19
20
  export interface ColumnGroupType {
@@ -85,9 +85,22 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
85
85
  (0, _react.useEffect)(function () {
86
86
  setValue(_value);
87
87
  }, [_value]);
88
+ var getSelectedFieldKey = function getSelectedFieldKey(field) {
89
+ if (!field) return '';
90
+ if (field.tableId === _helper.SummarizeAlias) {
91
+ return field.fieldAlias || '';
92
+ }
93
+ return "".concat(field.fieldId).concat(field.fieldAlias || '');
94
+ };
95
+ var getColumnKey = function getColumnKey(column, isSummarizeColumn) {
96
+ if (isSummarizeColumn) {
97
+ return column.fieldAlias || column.name || '';
98
+ }
99
+ return "".concat(column.id || column.name).concat(column.fieldAlias || '');
100
+ };
88
101
  var isActive = function isActive(id_alias) {
89
102
  return (value === null || value === void 0 ? void 0 : value.filter(function (v) {
90
- return v.fieldId + (v.fieldAlias || '') === id_alias;
103
+ return getSelectedFieldKey(v) === id_alias;
91
104
  }).length) > 0;
92
105
  };
93
106
  (0, _react.useEffect)(function () {
@@ -128,11 +141,10 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
128
141
  }
129
142
  var getQuotes = function getQuotes(items) {
130
143
  return items.map(function (v) {
131
- return v.fieldName;
144
+ return v.tableId === _helper.SummarizeAlias ? v.fieldAlias : v.fieldName;
132
145
  }).join(' || ');
133
146
  };
134
147
  var changeValue = function changeValue(tableUuid, val) {
135
- var _value$filter;
136
148
  if (!multiple) {
137
149
  var _data = val ? [val] : [];
138
150
  setValue(_data);
@@ -140,10 +152,11 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
140
152
  onSelect === null || onSelect === void 0 || onSelect(_data, getQuotes(_data));
141
153
  return;
142
154
  }
143
- var isHas = (value === null || value === void 0 || (_value$filter = value.filter(function (v) {
144
- return v.fieldId === (val === null || val === void 0 ? void 0 : val.fieldId);
145
- })) === null || _value$filter === void 0 ? void 0 : _value$filter.length) > 0;
146
- var _value = value;
155
+ var selectedKey = getSelectedFieldKey(val);
156
+ var isHas = (value === null || value === void 0 ? void 0 : value.filter(function (v) {
157
+ return getSelectedFieldKey(v) === selectedKey;
158
+ }).length) > 0;
159
+ var _value = value.slice();
147
160
  if (tableUuid != curTable) {
148
161
  _value = [];
149
162
  }
@@ -151,7 +164,7 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
151
164
  _value.push(val);
152
165
  } else {
153
166
  _value = _value.filter(function (v) {
154
- return v.fieldId != (val === null || val === void 0 ? void 0 : val.fieldId);
167
+ return getSelectedFieldKey(v) !== selectedKey;
155
168
  });
156
169
  }
157
170
  var curTableColumn = data.filter(function (v) {
@@ -161,6 +174,9 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
161
174
  });
162
175
  _value = _value.filter(function (item2) {
163
176
  return curTableColumn.some(function (item1) {
177
+ if (item2.tableId === _helper.SummarizeAlias) {
178
+ return (item1.fieldAlias || item1.name) === item2.fieldAlias;
179
+ }
164
180
  return item1.name === item2.fieldName;
165
181
  });
166
182
  });
@@ -230,12 +246,14 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
230
246
  _tableItem$datasource2 = tableItem.datasourceId,
231
247
  datasourceId = _tableItem$datasource2 === void 0 ? '' : _tableItem$datasource2,
232
248
  _tableItem$tableUuid = tableItem.tableUuid,
233
- tableUuid = _tableItem$tableUuid === void 0 ? '' : _tableItem$tableUuid;
249
+ tableUuid = _tableItem$tableUuid === void 0 ? '' : _tableItem$tableUuid,
250
+ _tableItem$id = tableItem.id,
251
+ tableId = _tableItem$id === void 0 ? '' : _tableItem$id;
234
252
  var isMultiple = tableList.length > 1;
235
253
  if (!isMultiple) {
236
254
  open = true;
237
255
  }
238
- var isSummarize = tableAlias === _helper.SummarizeAlias;
256
+ var isSummarize = tableId === _helper.SummarizeAlias;
239
257
  return (0, _jsxRuntime.jsxs)("div", {
240
258
  children: [!isSummarize && (0, _jsxRuntime.jsx)("div", {
241
259
  className: (0, _classnames["default"])("Sqb-List-section"),
@@ -259,7 +277,7 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
259
277
  } else {
260
278
  setTableList(newTables.map(function (v) {
261
279
  return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, v), {}, {
262
- open: tableUuid === v.tableUuid || v.alias === _helper.SummarizeAlias
280
+ open: tableUuid === v.tableUuid || v.id === _helper.SummarizeAlias
263
281
  });
264
282
  }));
265
283
  }
@@ -307,10 +325,12 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
307
325
  var special_type = v.special_type,
308
326
  _v$database_type = v.database_type,
309
327
  database_type = _v$database_type === void 0 ? '' : _v$database_type,
310
- name = v.name,
311
- _v$realName = v.realName,
312
- realName = _v$realName === void 0 ? '' : _v$realName,
313
- fieldId = v.id;
328
+ name = v.name;
329
+ var columnKey = getColumnKey(v, isSummarize);
330
+ var fieldAlias = isSummarize ? v.fieldAlias || name || '' : v.fieldAlias || '';
331
+ var fieldName = isSummarize ? '' : name || '';
332
+ var fieldId = isSummarize ? '' : v.id || name || '';
333
+ var fieldNameZh = isSummarize ? '' : v.name_zh || '';
314
334
  var groupe = _enum.SQL_GROUP_TYPE.STRING;
315
335
  if (~_const.NUMBER_GROUP.indexOf(database_type)) {
316
336
  groupe = _enum.SQL_GROUP_TYPE.NUMBER;
@@ -322,22 +342,22 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
322
342
  className: (0, _classnames["default"])("Sqb-List-section"),
323
343
  children: (0, _jsxRuntime.jsx)("div", {
324
344
  className: (0, _classnames["default"])("Sqb-List-item mx-2", {
325
- active: isActive((v.id || v.name) + (v.fieldAlias || ''))
345
+ active: isActive(columnKey)
326
346
  }),
327
347
  onClick: function onClick() {
328
- if (isSummarize) {}
329
348
  changeValue(tableUuid, {
330
349
  tableName: tableItem.name || '',
331
- tableId: tableItem.id || '',
350
+ tableId: tableId || '',
332
351
  tableNameZh: tableItem.name_zh || '',
333
352
  tableAlias: tableItem.alias || '',
334
353
  tableUuid: tableItem.tableUuid || '',
335
354
  datasourceName: tableItem.datasourceName || '',
336
355
  datasourceId: tableItem.datasourceId || '',
337
- fieldName: v.name || '',
338
- fieldId: v.id || v.name || '',
339
- fieldNameZh: v.name_zh || '',
340
- fieldAlias: v.fieldAlias || '',
356
+ datasourceType: tableItem.datasourceType || '',
357
+ fieldName: fieldName,
358
+ fieldId: fieldId,
359
+ fieldNameZh: fieldNameZh,
360
+ fieldAlias: fieldAlias,
341
361
  fieldUuid: v.fieldUuid || '',
342
362
  type: _types.AtomsTypeEnum.FIELD
343
363
  });
@@ -110,6 +110,7 @@ var SelectSummarize = function SelectSummarize(_ref) {
110
110
  tableUuid: value.tableUuid || '',
111
111
  datasourceName: value.datasourceName || '',
112
112
  datasourceId: value.datasourceId || '',
113
+ datasourceType: value.datasourceType || '',
113
114
  type: _types.AtomsTypeEnum.FIELD
114
115
  };
115
116
  return [fieldAtom];
@@ -140,7 +141,13 @@ var SelectSummarize = function SelectSummarize(_ref) {
140
141
  return [lhs, item.condition, rhs].filter(Boolean).join(' ').trim();
141
142
  }
142
143
  if (item.type === _types.AtomsTypeEnum.AND_OR) {
143
- return "".concat(item.operator || 'and', " ( ").concat(getFormulaSummary(item.list || []), " )").replace(/\s+/g, ' ').trim();
144
+ var hasBinarySides = Array.isArray(item.leftAtoms) || Array.isArray(item.rightAtoms);
145
+ if (hasBinarySides) {
146
+ var leftText = getFormulaSummary(item.leftAtoms || []);
147
+ var rightText = getFormulaSummary(item.rightAtoms || []);
148
+ return "( ".concat(leftText, " ").concat(item.operator || 'and', " ").concat(rightText, " )").replace(/\s+/g, ' ').trim();
149
+ }
150
+ return "".concat(item.operator || 'and', " ( ").concat(getFormulaSummary(item.atoms || []), " )").replace(/\s+/g, ' ').trim();
144
151
  }
145
152
  if (item.type === _types.AtomsTypeEnum.CASE_WHEN) {
146
153
  return item.quotes || 'case when';
@@ -170,7 +177,8 @@ var SelectSummarize = function SelectSummarize(_ref) {
170
177
  fieldAlias: '',
171
178
  fieldUuid: '',
172
179
  datasourceId: '',
173
- datasourceName: ''
180
+ datasourceName: '',
181
+ datasourceType: ''
174
182
  } : {}), record), {}, {
175
183
  condition: condition,
176
184
  quotes: quotes
@@ -6,8 +6,9 @@ interface PropsType {
6
6
  sourceTable: any[];
7
7
  value: MetaData_TableType;
8
8
  onChange: (reocrd: MetaData_TableType) => void;
9
+ onDatasourceTypeChange?: (record: MetaData_TableType) => void;
9
10
  didUpdate?: Function;
10
11
  tableFlat?: boolean;
11
12
  }
12
- declare const SelectTable: ({ data, sourceTable, value, onChange, didUpdate, tableFlat, }: PropsType) => import("react/jsx-runtime").JSX.Element;
13
+ declare const SelectTable: ({ data, sourceTable, value, onChange, onDatasourceTypeChange, didUpdate, tableFlat, }: PropsType) => import("react/jsx-runtime").JSX.Element;
13
14
  export default SelectTable;