@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
@@ -106,55 +106,135 @@
106
106
  }
107
107
  }
108
108
  .Sqb-Filter-item {
109
+ --sqb-item-shell-margin-x: 14px;
110
+ --sqb-action-size: 12px;
111
+ --sqb-action-height: 18px;
112
+ --sqb-action-zone: 16px;
113
+ --sqb-action-bridge: 18px;
114
+ --sqb-action-radius: 5px;
115
+ --sqb-action-offset: -16px;
116
+ --sqb-arrow-offset-left: var(--sqb-action-offset);
117
+ --sqb-arrow-offset-right: var(--sqb-action-offset);
109
118
  position: relative;
110
- margin: 0 10px;
119
+ // margin: 0 var(--sqb-item-shell-margin-x);
111
120
  .right-arrow,
112
121
  .left-arrow {
113
122
  position: absolute;
114
123
  top: 50%;
115
- height: 40px;
116
- width: 30px;
124
+ z-index: 3;
125
+ height: var(--sqb-action-height);
126
+ width: var(--sqb-action-zone);
117
127
  display: flex;
118
128
  align-items: center;
119
129
  justify-content: center;
120
- opacity: 0.4;
130
+ border: 0;
131
+ background: transparent;
132
+ opacity: 0;
121
133
  cursor: pointer;
122
- transform: translateY(-50%) scale(0);
123
- transition: all 0.3s;
134
+ pointer-events: none;
135
+ transform: translateY(-50%) scale(0.86);
136
+ transition:
137
+ opacity 160ms ease,
138
+ border-color 160ms ease,
139
+ background-color 160ms ease,
140
+ transform 160ms ease;
141
+
142
+ &::before {
143
+ content: none;
144
+ position: absolute;
145
+ top: 50%;
146
+ width: var(--sqb-action-size);
147
+ height: var(--sqb-action-height);
148
+ border: 0;
149
+ border-radius: var(--sqb-action-radius);
150
+ background: transparent;
151
+ box-shadow: none;
152
+ transform: translateY(-50%);
153
+ transition:
154
+ border-color 160ms ease,
155
+ background-color 160ms ease;
156
+ }
157
+
124
158
  img {
125
- transform: scale(0.8);
159
+ position: absolute;
160
+ top: 50%;
161
+ left: 50%;
162
+ z-index: 1;
163
+ width: 16px;
164
+ height: 12px;
165
+ pointer-events: none;
166
+ }
167
+
168
+ &:hover::before {
169
+ border-color: rgba(80, 158, 227, 0.36);
170
+ background: #fff;
126
171
  }
172
+
127
173
  &:hover {
128
174
  opacity: 1;
129
175
  }
130
176
  }
131
177
  .left-arrow {
132
- transform: translateY(-50%) rotate(180deg) scale(0);
133
- transform-origin: 50% 50%;
134
178
  // padding-top: 10px;
135
- left: -30px;
179
+ left: var(--sqb-arrow-offset-left);
180
+
181
+ &::before {
182
+ left: 0;
183
+ }
184
+
185
+ img {
186
+ transform: translate(-50%, -50%) rotate(180deg);
187
+ }
136
188
  }
137
189
  .right-arrow {
138
- right: -20px;
190
+ right: var(--sqb-arrow-offset-right);
139
191
  // padding-bottom: 10px;
192
+
193
+ &::before {
194
+ right: 0;
195
+ }
196
+
197
+ img {
198
+ transform: translate(-50%, -50%);
199
+ }
200
+ }
201
+ &.has-left-arrow::before,
202
+ &.has-right-arrow::after {
203
+ content: '';
204
+ position: absolute;
205
+ top: 0;
206
+ bottom: 0;
207
+ z-index: 2;
208
+ width: var(--sqb-action-bridge);
209
+ }
210
+ &.has-left-arrow::before {
211
+ left: var(--sqb-arrow-offset-left);
212
+ }
213
+ &.has-right-arrow::after {
214
+ right: var(--sqb-arrow-offset-right);
140
215
  }
141
216
  &:not(.item-fixed).hover {
142
217
  > .left-arrow {
143
- transform: translateY(-50%) rotate(180deg) scale(1);
218
+ opacity: 0.82;
219
+ pointer-events: auto;
220
+ transform: translateY(-50%) scale(1);
144
221
  }
145
222
  > .right-arrow {
223
+ opacity: 0.82;
224
+ pointer-events: auto;
146
225
  transform: translateY(-50%) scale(1);
147
226
  }
148
227
  }
149
228
  }
150
229
  .Sqb-NotebookCell {
151
230
  box-sizing: border-box;
152
- padding: 16px 16px 8px;
231
+ padding: 12px 16px;
153
232
  color: rgb(80, 158, 227);
154
233
  display: flex;
155
234
  flex-wrap: wrap;
156
235
  -webkit-box-align: center;
157
236
  align-items: center;
237
+ gap: 8px 14px;
158
238
  border-radius: 8px;
159
239
  background-color: rgba(80, 158, 227, 0.1);
160
240
 
@@ -171,22 +251,23 @@
171
251
 
172
252
  .Sqb-TableName {
173
253
  position: relative;
174
- border: 2px solid transparent;
175
- border-radius: 6px;
254
+ border: 1px solid transparent;
255
+ border-radius: 5px;
176
256
  color: white;
177
257
  background-color: rgb(80, 158, 227);
178
258
  transition:
179
259
  background 300ms linear 0s,
180
260
  border 300ms linear 0s;
181
261
  box-sizing: border-box;
182
- margin-bottom: 8px;
183
- margin-right: 8px;
184
- padding: 8px;
262
+ margin: 0;
263
+ padding: 4px 7px;
185
264
  display: flex;
186
265
  -webkit-box-align: center;
187
266
  align-items: center;
188
267
  cursor: pointer;
189
- min-height: 36px;
268
+ min-height: 28px;
269
+ font-size: 13px;
270
+ line-height: 18px;
190
271
  word-break: break-word;
191
272
  // &-OPERATOR {
192
273
  // // 操作符
@@ -210,11 +291,11 @@
210
291
  margin: 0;
211
292
  padding: 0;
212
293
  border: none;
213
- border-radius: 50%;
214
- width: 20px;
215
- height: 20px;
216
- min-height: 20px;
217
- font-size: 12px;
294
+ border-radius: 999px;
295
+ width: 16px;
296
+ height: 16px;
297
+ min-height: 16px;
298
+ font-size: 10px;
218
299
  display: inline-flex;
219
300
  align-items: center;
220
301
  justify-content: center;
@@ -223,9 +304,8 @@
223
304
  }
224
305
  &-input {
225
306
  //输入框样式,稍微小了一点
226
- margin-bottom: 9px;
227
- margin-right: 8px;
228
- padding: 9px;
307
+ margin: 0;
308
+ padding: 5px 7px;
229
309
  }
230
310
  &::selection {
231
311
  color: #ffffff;
@@ -242,7 +322,7 @@
242
322
  }
243
323
  }
244
324
  &.notSelected {
245
- border: 2px solid rgba(80, 158, 227, 0.25);
325
+ border: 1px solid rgba(80, 158, 227, 0.25);
246
326
  color: rgb(80, 158, 227);
247
327
  background-color: transparent;
248
328
  &:hover {
@@ -256,11 +336,15 @@
256
336
  background-color: rgba(113, 114, 173, 0.8);
257
337
  }
258
338
  svg.closeIcon {
339
+ display: block;
340
+ flex: 0 0 auto;
259
341
  opacity: 0.6;
260
- margin-left: 8px;
342
+ margin-left: 5px;
343
+ width: 12px;
344
+ height: 12px;
261
345
  }
262
346
  &.notSelected {
263
- border: 2px solid rgba(113, 114, 173, 0.25);
347
+ border: 1px solid rgba(113, 114, 173, 0.25);
264
348
  color: rgb(113, 114, 173);
265
349
  background-color: transparent;
266
350
  &:hover {
@@ -275,11 +359,17 @@
275
359
  background-color: rgba(147, 161, 171, 0.8);
276
360
  }
277
361
  svg.sort-arrow {
278
- margin-right: 0.5rem;
362
+ margin-right: 0.35rem;
363
+ width: 12px;
364
+ height: 12px;
279
365
  }
280
366
  svg.closeIcon {
367
+ display: block;
368
+ flex: 0 0 auto;
281
369
  opacity: 0.6;
282
- margin-left: 8px;
370
+ margin-left: 5px;
371
+ width: 12px;
372
+ height: 12px;
283
373
  }
284
374
  }
285
375
  &.green-name {
@@ -289,11 +379,15 @@
289
379
  background-color: rgba(136, 191, 77, 0.8);
290
380
  }
291
381
  svg.closeIcon {
382
+ display: block;
383
+ flex: 0 0 auto;
292
384
  opacity: 0.6;
293
- margin-left: 8px;
385
+ margin-left: 5px;
386
+ width: 12px;
387
+ height: 12px;
294
388
  }
295
389
  &.notSelected {
296
- border: 2px solid rgba(136, 191, 77, 0.25);
390
+ border: 1px solid rgba(136, 191, 77, 0.25);
297
391
  color: rgb(136, 191, 77);
298
392
  background-color: transparent;
299
393
  &:hover {
@@ -309,6 +403,13 @@
309
403
  }
310
404
  }
311
405
 
406
+ > .pd-Badge,
407
+ .Sqb-where > .pd-Badge {
408
+ display: inline-flex;
409
+ align-items: center;
410
+ line-height: 1;
411
+ }
412
+
312
413
  .ant-input-number {
313
414
  margin-bottom: 0.5rem;
314
415
  .ant-input-number-input {
@@ -332,13 +433,27 @@
332
433
  margin-bottom: 8px;
333
434
  .Sqb-NotebookCell {
334
435
  padding-bottom: 0;
335
- padding-top: 8px;
436
+ // padding-top: 0;
336
437
  }
337
438
  }
338
439
  .operator-icon,
339
440
  .operator-icon button {
340
- font-size: 18px !important;
441
+ display: inline-flex !important;
442
+ align-items: center !important;
443
+ justify-content: center !important;
444
+ min-width: 28px !important;
445
+ height: 28px !important;
446
+ padding: 0 7px !important;
447
+ font-size: 14px !important;
341
448
  border: none !important;
449
+ line-height: 1 !important;
450
+ vertical-align: middle;
451
+ }
452
+
453
+ .operator-icon svg,
454
+ .operator-icon button svg {
455
+ width: 14px;
456
+ height: 14px;
342
457
  }
343
458
 
344
459
  .subquery-icon {
@@ -380,7 +495,7 @@
380
495
  cursor: pointer;
381
496
  font-weight: bold;
382
497
  padding: 12px 16px;
383
- border-radius: 6px;
498
+ border-radius: 5px;
384
499
  margin-right: 16px;
385
500
  margin-top: 16px;
386
501
  border: none;
@@ -462,8 +577,10 @@
462
577
 
463
578
  & > &-btn {
464
579
  min-width: 220px;
465
- height: 36px;
466
- border-radius: 6px;
580
+ height: 32px;
581
+ border-radius: 5px;
582
+ padding: 0 14px;
583
+ font-size: 13px;
467
584
  color: #ffffff;
468
585
  background-color: #509ee3 !important;
469
586
  border: 1px solid #509ee3;
@@ -131,6 +131,7 @@ var CustomColumn = function CustomColumn(props) {
131
131
  alias: prevGroupBy.alias,
132
132
  datasourceId: '',
133
133
  datasourceName: '',
134
+ datasourceType: '',
134
135
  columns: []
135
136
  };
136
137
  if (prevGroupBy !== null && prevGroupBy !== void 0 && (_prevGroupBy$group = prevGroupBy.group) !== null && _prevGroupBy$group !== void 0 && _prevGroupBy$group.length) {
@@ -174,7 +175,8 @@ var CustomColumn = function CustomColumn(props) {
174
175
  tableUuid: v.table2.tableUuid || (0, _helper.uuidv4)('table'),
175
176
  columns: v.columns,
176
177
  datasourceId: v.table2.datasourceId,
177
- datasourceName: v.table2.datasourceName
178
+ datasourceName: v.table2.datasourceName,
179
+ datasourceType: v.table2.datasourceType
178
180
  });
179
181
  }));
180
182
  }
@@ -188,7 +190,8 @@ var CustomColumn = function CustomColumn(props) {
188
190
  tableUuid: v.table.tableUuid || (0, _helper.uuidv4)('table'),
189
191
  columns: v.columns,
190
192
  datasourceId: mainTable.table.datasourceId,
191
- datasourceName: mainTable.table.datasourceName
193
+ datasourceName: mainTable.table.datasourceName,
194
+ datasourceType: mainTable.table.datasourceType
192
195
  });
193
196
  } else if (v.type === _enum.TypeEnum.joinData) {
194
197
  return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, v.table2), {}, {
@@ -198,7 +201,8 @@ var CustomColumn = function CustomColumn(props) {
198
201
  tableUuid: v.table2.tableUuid || (0, _helper.uuidv4)('table'),
199
202
  columns: v.columns,
200
203
  datasourceId: v.table2.datasourceId,
201
- datasourceName: v.table2.datasourceName
204
+ datasourceName: v.table2.datasourceName,
205
+ datasourceType: v.table2.datasourceType
202
206
  });
203
207
  } else {
204
208
  return {
@@ -89,7 +89,8 @@ var Filter = function Filter(props) {
89
89
  tableUuid: v.table2.tableUuid || (0, _helper.uuidv4)('table'),
90
90
  columns: v.columns,
91
91
  datasourceId: v.table2.datasourceId,
92
- datasourceName: v.table2.datasourceName
92
+ datasourceName: v.table2.datasourceName,
93
+ datasourceType: v.table2.datasourceType
93
94
  };
94
95
  }));
95
96
  }
@@ -104,7 +105,8 @@ var Filter = function Filter(props) {
104
105
  tableUuid: v.table.tableUuid || (0, _helper.uuidv4)('table'),
105
106
  columns: v.columns,
106
107
  datasourceId: mainTable.table.datasourceId,
107
- datasourceName: mainTable.table.datasourceName
108
+ datasourceName: mainTable.table.datasourceName,
109
+ datasourceType: mainTable.table.datasourceType
108
110
  };
109
111
  } else if (v.type === _enum.TypeEnum.joinData) {
110
112
  return {
@@ -115,7 +117,8 @@ var Filter = function Filter(props) {
115
117
  tableUuid: v.table2.tableUuid || (0, _helper.uuidv4)('table'),
116
118
  columns: v.columns,
117
119
  datasourceId: v.table2.datasourceId,
118
- datasourceName: v.table2.datasourceName
120
+ datasourceName: v.table2.datasourceName,
121
+ datasourceType: v.table2.datasourceType
119
122
  };
120
123
  } else {
121
124
  return {