@gingkoo/pandora-metabase 1.0.33 → 1.0.35
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.
- package/lib/cjs/components/dialog/formula-list/index.js +4 -2
- package/lib/cjs/components/dialog/formula-list/utils.js +8 -0
- package/lib/cjs/components/dialog/select-column-multiple/index.js +11 -9
- package/lib/cjs/components/dialog/select-permission-table/index.js +0 -1
- package/lib/cjs/components/modules/filter.js +14 -1
- package/lib/cjs/components/modules/join-data.js +48 -20
- package/lib/cjs/components/modules/summarize/group-by.js +2 -1
- package/lib/cjs/components/modules/table-data.js +34 -16
- package/lib/cjs/hooks/use-state.js +8 -26
- package/lib/cjs/locale/en.js +2 -0
- package/lib/cjs/locale/zh.js +2 -0
- package/lib/cjs/utils/helper.d.ts +1 -1
- package/lib/cjs/utils/helper.js +5 -1
- package/lib/cjs/utils/transformSql.d.ts +3 -4
- package/lib/cjs/utils/transformSql.js +72 -80
- package/lib/es/components/dialog/formula-list/index.js +4 -2
- package/lib/es/components/dialog/formula-list/utils.js +8 -0
- package/lib/es/components/dialog/select-column-multiple/index.js +11 -9
- package/lib/es/components/dialog/select-permission-table/index.js +0 -1
- package/lib/es/components/modules/filter.js +14 -1
- package/lib/es/components/modules/join-data.js +48 -20
- package/lib/es/components/modules/summarize/group-by.js +3 -2
- package/lib/es/components/modules/table-data.js +34 -16
- package/lib/es/hooks/use-state.js +8 -26
- package/lib/es/locale/en.js +2 -0
- package/lib/es/locale/zh.js +2 -0
- package/lib/es/utils/helper.d.ts +1 -1
- package/lib/es/utils/helper.js +5 -1
- package/lib/es/utils/transformSql.d.ts +3 -4
- package/lib/es/utils/transformSql.js +72 -80
- package/package.json +1 -1
|
@@ -9,6 +9,7 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
|
|
|
9
9
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
|
|
10
10
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectWithoutProperties"));
|
|
11
11
|
var _excluded = ["children"];
|
|
12
|
+
// @ts-nocheck
|
|
12
13
|
var procEnum = {
|
|
13
14
|
mysql: 'mysql',
|
|
14
15
|
oracle: 'oracle',
|
|
@@ -83,7 +84,7 @@ var _recursionArr2 = function _recursionArr(arr) {
|
|
|
83
84
|
}
|
|
84
85
|
return obj;
|
|
85
86
|
};
|
|
86
|
-
var
|
|
87
|
+
var _handleBaseType2Sql8 = function _handleBaseType2Sql(list) {
|
|
87
88
|
var db = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : procEnum.mysql;
|
|
88
89
|
var sql = '';
|
|
89
90
|
var constants = [];
|
|
@@ -150,11 +151,11 @@ var _handleBaseType2Sql9 = function _handleBaseType2Sql(list) {
|
|
|
150
151
|
var lhs = item.lhs,
|
|
151
152
|
rhs = item.rhs;
|
|
152
153
|
// 他很特殊 左边里面只有一种类型 右边面只有一种类型
|
|
153
|
-
var _handleBaseType2Sql2 =
|
|
154
|
+
var _handleBaseType2Sql2 = _handleBaseType2Sql8(lhs, db),
|
|
154
155
|
leftSql = _handleBaseType2Sql2.sql,
|
|
155
156
|
leftSqlItems = _handleBaseType2Sql2.sql_items,
|
|
156
157
|
joinDefaultLeftConstants = _handleBaseType2Sql2.constants;
|
|
157
|
-
var _handleBaseType2Sql3 =
|
|
158
|
+
var _handleBaseType2Sql3 = _handleBaseType2Sql8(rhs, db),
|
|
158
159
|
rightSql = _handleBaseType2Sql3.sql,
|
|
159
160
|
rightSqlItems = _handleBaseType2Sql3.sql_items,
|
|
160
161
|
joinDefaultRightConstants = _handleBaseType2Sql3.constants;
|
|
@@ -194,11 +195,11 @@ var _handleBaseType2Sql9 = function _handleBaseType2Sql(list) {
|
|
|
194
195
|
condition = item.condition,
|
|
195
196
|
database_type = item.database_type,
|
|
196
197
|
formula = item.formula;
|
|
197
|
-
var _handleBaseType2Sql4 =
|
|
198
|
+
var _handleBaseType2Sql4 = _handleBaseType2Sql8(_lhs, db),
|
|
198
199
|
_leftSql = _handleBaseType2Sql4.sql,
|
|
199
200
|
_leftSqlItems = _handleBaseType2Sql4.sql_items,
|
|
200
201
|
_joinDefaultLeftConstants = _handleBaseType2Sql4.constants;
|
|
201
|
-
var _handleBaseType2Sql5 =
|
|
202
|
+
var _handleBaseType2Sql5 = _handleBaseType2Sql8(_rhs, db),
|
|
202
203
|
_rightSql = _handleBaseType2Sql5.sql,
|
|
203
204
|
_rightSqlItems = _handleBaseType2Sql5.sql_items,
|
|
204
205
|
_joinDefaultRightConstants = _handleBaseType2Sql5.constants;
|
|
@@ -469,40 +470,25 @@ var _handleBaseType2Sql9 = function _handleBaseType2Sql(list) {
|
|
|
469
470
|
if ([BlockTypeEnum.notExists, BlockTypeEnum.exists].includes(type)) {
|
|
470
471
|
var notExists = item.notExists;
|
|
471
472
|
if (notExists && notExists !== null && notExists !== void 0 && notExists.length) {
|
|
472
|
-
var _mainTable$table, _mainTable$table2;
|
|
473
|
-
var mainTable = notExists.find(function (v) {
|
|
474
|
-
return v.type === MetabaseTypeEnum.data;
|
|
475
|
-
});
|
|
476
|
-
var filterMeta = notExists.find(function (v) {
|
|
477
|
-
return v.type === MetabaseTypeEnum.filter;
|
|
478
|
-
});
|
|
479
|
-
var where = '';
|
|
480
|
-
if (filterMeta && filterMeta.filter && Array.isArray(filterMeta.filter) && filterMeta.filter.length) {
|
|
481
|
-
var _handleBaseType2Sql6 = _handleBaseType2Sql9(filterMeta.filter, db),
|
|
482
|
-
notExistsSql = _handleBaseType2Sql6.sql,
|
|
483
|
-
constInNotExistsFilter = _handleBaseType2Sql6.constants;
|
|
484
|
-
constants.push.apply(constants, (0, _toConsumableArray2["default"])(constInNotExistsFilter));
|
|
485
|
-
where = "WHERE ".concat(notExistsSql);
|
|
486
|
-
}
|
|
487
473
|
if (type === BlockTypeEnum.notExists) {
|
|
488
474
|
sql += ' NOT EXISTS';
|
|
489
475
|
} else {
|
|
490
476
|
sql += ' EXISTS';
|
|
491
477
|
}
|
|
492
|
-
sql += " (
|
|
478
|
+
sql += " (".concat(handleSqlUnion(notExists, db, true).sql, ")");
|
|
493
479
|
}
|
|
494
480
|
}
|
|
495
481
|
if (type === BlockTypeEnum.FORMULA) {
|
|
496
|
-
var
|
|
497
|
-
argSql =
|
|
498
|
-
formulaConstants =
|
|
482
|
+
var _handleBaseType2Sql6 = _handleBaseType2Sql8(item.args, db),
|
|
483
|
+
argSql = _handleBaseType2Sql6.sql,
|
|
484
|
+
formulaConstants = _handleBaseType2Sql6.constants;
|
|
499
485
|
sql += " ".concat(item.name, "(").concat(argSql, ")");
|
|
500
486
|
constants.push.apply(constants, (0, _toConsumableArray2["default"])(formulaConstants));
|
|
501
487
|
}
|
|
502
488
|
if (type === BlockTypeEnum.collection) {
|
|
503
|
-
var
|
|
504
|
-
collectionSql =
|
|
505
|
-
collectionConstants =
|
|
489
|
+
var _handleBaseType2Sql7 = _handleBaseType2Sql8(item.list, db),
|
|
490
|
+
collectionSql = _handleBaseType2Sql7.sql,
|
|
491
|
+
collectionConstants = _handleBaseType2Sql7.constants;
|
|
506
492
|
sql += " ".concat(collectionSql);
|
|
507
493
|
constants.push.apply(constants, (0, _toConsumableArray2["default"])(collectionConstants));
|
|
508
494
|
}
|
|
@@ -526,9 +512,9 @@ var _handleJoinData = function _handleJoinData(joinData) {
|
|
|
526
512
|
if (isSubquery) {
|
|
527
513
|
subQuery = subquery;
|
|
528
514
|
}
|
|
529
|
-
var
|
|
530
|
-
sql =
|
|
531
|
-
joinConstants =
|
|
515
|
+
var _handleBaseType2Sql9 = _handleBaseType2Sql8(expressions, db),
|
|
516
|
+
sql = _handleBaseType2Sql9.sql,
|
|
517
|
+
joinConstants = _handleBaseType2Sql9.constants;
|
|
532
518
|
var joinCondition = "on ".concat(sql);
|
|
533
519
|
constants = joinConstants;
|
|
534
520
|
return {
|
|
@@ -618,9 +604,9 @@ var _handleNesting = function handleNesting(data) {
|
|
|
618
604
|
var customColumnsConstants = [];
|
|
619
605
|
var handleCustomColumn = function handleCustomColumn(data) {
|
|
620
606
|
return data.map(function (it) {
|
|
621
|
-
var
|
|
622
|
-
field_sql =
|
|
623
|
-
constants =
|
|
607
|
+
var _handleBaseType2Sql0 = _handleBaseType2Sql8(it.formulaList, db),
|
|
608
|
+
field_sql = _handleBaseType2Sql0.sql,
|
|
609
|
+
constants = _handleBaseType2Sql0.constants;
|
|
624
610
|
customColumnsConstants.push.apply(customColumnsConstants, (0, _toConsumableArray2["default"])(constants));
|
|
625
611
|
return {
|
|
626
612
|
field_sql: "".concat(field_sql, " as ").concat(it.name),
|
|
@@ -635,9 +621,9 @@ var _handleNesting = function handleNesting(data) {
|
|
|
635
621
|
obj.customColumnsConstants = customColumnsConstants;
|
|
636
622
|
}
|
|
637
623
|
if (filterData && filterData.filter.length) {
|
|
638
|
-
var
|
|
639
|
-
sql =
|
|
640
|
-
constants =
|
|
624
|
+
var _handleBaseType2Sql1 = _handleBaseType2Sql8(filterData.filter, db),
|
|
625
|
+
sql = _handleBaseType2Sql1.sql,
|
|
626
|
+
constants = _handleBaseType2Sql1.constants;
|
|
641
627
|
obj.filters = 'WHERE ' + sql;
|
|
642
628
|
obj.filtersConstants = constants;
|
|
643
629
|
}
|
|
@@ -682,8 +668,8 @@ var _handleNesting = function handleNesting(data) {
|
|
|
682
668
|
}
|
|
683
669
|
if (sortData && sortData.sort.length) {
|
|
684
670
|
obj.orderInfos = "ORDER BY ".concat(sortData.sort.map(function (v) {
|
|
685
|
-
var
|
|
686
|
-
sql =
|
|
671
|
+
var _handleBaseType2Sql10 = _handleBaseType2Sql8(v.expression, db),
|
|
672
|
+
sql = _handleBaseType2Sql10.sql;
|
|
687
673
|
return "".concat(sql, " ").concat(v.sort);
|
|
688
674
|
}).join(', '));
|
|
689
675
|
}
|
|
@@ -754,6 +740,7 @@ var handleSqlStruct = function handleSqlStruct(list) {
|
|
|
754
740
|
// 处理 union
|
|
755
741
|
var handleSqlUnion = function handleSqlUnion(metas) {
|
|
756
742
|
var db = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : procEnum.mysql;
|
|
743
|
+
var noFields = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
757
744
|
var unionMetas = metas.filter(function (it) {
|
|
758
745
|
return it.type === MetabaseTypeEnum.union;
|
|
759
746
|
});
|
|
@@ -761,7 +748,7 @@ var handleSqlUnion = function handleSqlUnion(metas) {
|
|
|
761
748
|
return it.type !== MetabaseTypeEnum.union;
|
|
762
749
|
});
|
|
763
750
|
var data = handleSqlStruct(baseMetas, db);
|
|
764
|
-
var _sqlStruct2text = _sqlStruct2text3(data, 0, db),
|
|
751
|
+
var _sqlStruct2text = _sqlStruct2text3(data, 0, db, noFields),
|
|
765
752
|
sql = _sqlStruct2text.sql,
|
|
766
753
|
fields = _sqlStruct2text.fields;
|
|
767
754
|
var union_fields = [fields];
|
|
@@ -792,6 +779,7 @@ var handleSqlUnion = function handleSqlUnion(metas) {
|
|
|
792
779
|
var _sqlStruct2text3 = function sqlStruct2text(data) {
|
|
793
780
|
var indent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
794
781
|
var db = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : procEnum.mysql;
|
|
782
|
+
var noFields = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
795
783
|
var sql = '';
|
|
796
784
|
var hasInnerSql = data.hasInnerSql,
|
|
797
785
|
innerSqlStruct = data.innerSqlStruct,
|
|
@@ -811,51 +799,55 @@ var _sqlStruct2text3 = function sqlStruct2text(data) {
|
|
|
811
799
|
// 情况一、一层 带聚合 字段是 聚合字段
|
|
812
800
|
// 情况二、一层 不带聚合 字段是 主表和关联表的字段
|
|
813
801
|
// 情况三、二层 带聚合 第一层 聚合字段 + 关联表字段 第二层 聚合字段 第三层 聚合字段
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
sql += "TOP(".concat(limit, ") ");
|
|
817
|
-
}
|
|
818
|
-
if (hasInnerSql) {
|
|
819
|
-
// 情况三 innerSqlStruct.queryColumns 是内层 聚合输出的字段,这种字段虽说是内层的,但是其实外层也需要
|
|
820
|
-
if (innerSqlStruct.queryColumns && innerSqlStruct.queryColumns.length) {
|
|
821
|
-
sql += innerSqlStruct.queryColumns.map(function (v) {
|
|
822
|
-
return "".concat(alias, ".").concat(v.name, " as ").concat(v.name);
|
|
823
|
-
}).join(', ') + ' ';
|
|
824
|
-
flag = true;
|
|
825
|
-
}
|
|
802
|
+
if (noFields) {
|
|
803
|
+
sql += '1 ';
|
|
826
804
|
} else {
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
// 情况三 queryColumns 是聚合字段
|
|
831
|
-
flag = true;
|
|
832
|
-
sql += queryColumns.map(function (v) {
|
|
833
|
-
return v.field_sql;
|
|
834
|
-
}).join(', ') + ' ';
|
|
805
|
+
var flag = false; // 是否加逗号
|
|
806
|
+
if (limit && db === procEnum.sqlserver) {
|
|
807
|
+
sql += "TOP(".concat(limit, ") ");
|
|
835
808
|
}
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
if (Array.isArray(it.queryColumns) && it.queryColumns.length) {
|
|
842
|
-
if (flag) {
|
|
843
|
-
sql += ', ';
|
|
844
|
-
}
|
|
845
|
-
sql += it.queryColumns.map(function (v) {
|
|
846
|
-
return v.field_sql;
|
|
809
|
+
if (hasInnerSql) {
|
|
810
|
+
// 情况三 innerSqlStruct.queryColumns 是内层 聚合输出的字段,这种字段虽说是内层的,但是其实外层也需要
|
|
811
|
+
if (innerSqlStruct.queryColumns && innerSqlStruct.queryColumns.length) {
|
|
812
|
+
sql += innerSqlStruct.queryColumns.map(function (v) {
|
|
813
|
+
return "".concat(alias, ".").concat(v.name, " as ").concat(v.name);
|
|
847
814
|
}).join(', ') + ' ';
|
|
848
815
|
flag = true;
|
|
849
816
|
}
|
|
850
|
-
}
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
817
|
+
} else {
|
|
818
|
+
if (Array.isArray(queryColumns) && queryColumns.length) {
|
|
819
|
+
// 情况一 queryColumns 是聚合字段
|
|
820
|
+
// 情况二 queryColumns 是主表字段
|
|
821
|
+
// 情况三 queryColumns 是聚合字段
|
|
822
|
+
flag = true;
|
|
823
|
+
sql += queryColumns.map(function (v) {
|
|
824
|
+
return v.field_sql;
|
|
825
|
+
}).join(', ') + ' ';
|
|
826
|
+
}
|
|
827
|
+
}
|
|
828
|
+
if (firstEntry && joinTables && !groupBy) {
|
|
829
|
+
// 情况二 joinTables 是关联表字段
|
|
830
|
+
// 情况三 joinTables 是关联表字段
|
|
831
|
+
joinTables.forEach(function (it) {
|
|
832
|
+
if (Array.isArray(it.queryColumns) && it.queryColumns.length) {
|
|
833
|
+
if (flag) {
|
|
834
|
+
sql += ', ';
|
|
835
|
+
}
|
|
836
|
+
sql += it.queryColumns.map(function (v) {
|
|
837
|
+
return v.field_sql;
|
|
838
|
+
}).join(', ') + ' ';
|
|
839
|
+
flag = true;
|
|
840
|
+
}
|
|
841
|
+
});
|
|
842
|
+
}
|
|
843
|
+
if (customColumns && customColumns.length) {
|
|
844
|
+
if (flag) {
|
|
845
|
+
sql += ', ';
|
|
846
|
+
}
|
|
847
|
+
sql += customColumns.map(function (v) {
|
|
848
|
+
return v.field_sql;
|
|
849
|
+
}).join(', ') + ' ';
|
|
855
850
|
}
|
|
856
|
-
sql += customColumns.map(function (v) {
|
|
857
|
-
return v.field_sql;
|
|
858
|
-
}).join(', ') + ' ';
|
|
859
851
|
}
|
|
860
852
|
// -------- 处理 main table --------
|
|
861
853
|
sql += 'FROM ';
|
|
@@ -908,7 +900,7 @@ var _sqlStruct2text3 = function sqlStruct2text(data) {
|
|
|
908
900
|
}
|
|
909
901
|
// -------- 获取 字段列表 --------
|
|
910
902
|
var fields = [];
|
|
911
|
-
if (firstEntry) {
|
|
903
|
+
if (firstEntry && !noFields) {
|
|
912
904
|
function addFields(data) {
|
|
913
905
|
var name = data.name,
|
|
914
906
|
name_zh = data.name_zh,
|
|
@@ -956,7 +948,7 @@ var _sqlStruct2text3 = function sqlStruct2text(data) {
|
|
|
956
948
|
var transformSql = exports.transformSql = function transformSql(metas) {
|
|
957
949
|
var db = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : procEnum.mysql;
|
|
958
950
|
// let new_metas = upgradeLegacyData(metas);
|
|
959
|
-
var _handleSqlUnion = handleSqlUnion(metas, db),
|
|
951
|
+
var _handleSqlUnion = handleSqlUnion(metas, db, true),
|
|
960
952
|
sql = _handleSqlUnion.sql,
|
|
961
953
|
fields = _handleSqlUnion.fields,
|
|
962
954
|
union_fields = _handleSqlUnion.union_fields;
|
|
@@ -2,7 +2,7 @@ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
|
2
2
|
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
3
3
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
4
4
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
5
|
-
var _excluded = ["notExistsToolbar", "toolbar"];
|
|
5
|
+
var _excluded = ["notExistsToolbar", "subShowSubquery", "toolbar"];
|
|
6
6
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
7
|
import { useState, forwardRef } from 'react';
|
|
8
8
|
import cx from 'classnames';
|
|
@@ -139,6 +139,8 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
139
139
|
var _caseList$i, _caseList$i2;
|
|
140
140
|
var _store$preProps = store.preProps,
|
|
141
141
|
notExistsToolbar = _store$preProps.notExistsToolbar,
|
|
142
|
+
_store$preProps$subSh = _store$preProps.subShowSubquery,
|
|
143
|
+
subShowSubquery = _store$preProps$subSh === void 0 ? false : _store$preProps$subSh,
|
|
142
144
|
toolbar = _store$preProps.toolbar,
|
|
143
145
|
other = _objectWithoutProperties(_store$preProps, _excluded);
|
|
144
146
|
var _value = ((_caseList$i = caseList[i]) === null || _caseList$i === void 0 ? void 0 : _caseList$i.notExists) || [];
|
|
@@ -154,7 +156,7 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
154
156
|
children: _jsx(Metabase, _objectSpread(_objectSpread({}, other), {}, {
|
|
155
157
|
notExistsColumns: exitData,
|
|
156
158
|
showFields: false,
|
|
157
|
-
showSubquery
|
|
159
|
+
// showSubquery={subShowSubquery}
|
|
158
160
|
toolbar: _toolbar,
|
|
159
161
|
btnText: __('SqlQueryBuilder.confirm'),
|
|
160
162
|
value: cloneDeep(_value),
|
|
@@ -157,6 +157,14 @@ export var customTypes = [
|
|
|
157
157
|
value: AtomsTypeEnum.FORMULA,
|
|
158
158
|
label: __('customColumn.formula'),
|
|
159
159
|
children: operatorList
|
|
160
|
+
},
|
|
161
|
+
// EXISTS
|
|
162
|
+
{
|
|
163
|
+
value: AtomsTypeEnum.NOT_EXISTS,
|
|
164
|
+
label: 'NOT_EXISTS'
|
|
165
|
+
}, {
|
|
166
|
+
value: AtomsTypeEnum.EXISTS,
|
|
167
|
+
label: 'EXISTS'
|
|
160
168
|
}];
|
|
161
169
|
export var getTemplateItem = function getTemplateItem(type) {
|
|
162
170
|
var temItem;
|
|
@@ -65,7 +65,8 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
|
|
|
65
65
|
var _useState3 = useState((_value === null || _value === void 0 || (_value$ = _value[0]) === null || _value$ === void 0 ? void 0 : _value$.tableId) === SummarizeAlias ? '' : _value === null || _value === void 0 || (_value$2 = _value[0]) === null || _value$2 === void 0 ? void 0 : _value$2.tableUuid),
|
|
66
66
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
67
67
|
curTable = _useState4[0],
|
|
68
|
-
setCurTable = _useState4[1];
|
|
68
|
+
setCurTable = _useState4[1];
|
|
69
|
+
// 当前选择的表
|
|
69
70
|
// const [curColumn, setCurColumn] = useState(_value); // 当前选择的字段
|
|
70
71
|
var _useState5 = useState(data.map(function (v, i) {
|
|
71
72
|
var open = !i && !curTable ? true : v.tableUuid === curTable; // TODO.这里只判断表名相等 没有用了 因为表上面加了一层数据源 先这样吧
|
|
@@ -93,9 +94,10 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
|
|
|
93
94
|
return v.tableUuid === tableUuid;
|
|
94
95
|
});
|
|
95
96
|
if (isHas.length < 1 && tableUuid !== SummarizeAlias) {
|
|
96
|
-
|
|
97
|
+
var _data$;
|
|
98
|
+
tableUuid = (data === null || data === void 0 || (_data$ = data[0]) === null || _data$ === void 0 ? void 0 : _data$.tableUuid) || '';
|
|
97
99
|
}
|
|
98
|
-
setTableList(data.map(function (v, i) {
|
|
100
|
+
setTableList(data === null || data === void 0 ? void 0 : data.map(function (v, i) {
|
|
99
101
|
var open = !i && !tableUuid ? true : v.tableUuid === tableUuid; // TODO.这里只判断表名相等 没有用了 因为表上面加了一层数据源 先这样吧
|
|
100
102
|
return _objectSpread(_objectSpread({}, v), {}, {
|
|
101
103
|
open: open,
|
|
@@ -162,7 +164,7 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
|
|
|
162
164
|
style: {
|
|
163
165
|
width: 300
|
|
164
166
|
},
|
|
165
|
-
children: tableList.map(function (tableItem) {
|
|
167
|
+
children: tableList.map(function (tableItem, i) {
|
|
166
168
|
var tableAlias = tableItem.alias,
|
|
167
169
|
tableName = tableItem.name,
|
|
168
170
|
columns = tableItem.columns,
|
|
@@ -267,7 +269,7 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
|
|
|
267
269
|
className: cx("Sqb-List-section"),
|
|
268
270
|
children: _jsx("div", {
|
|
269
271
|
className: cx("Sqb-List-item mx-2", {
|
|
270
|
-
active: isActive(v.id)
|
|
272
|
+
active: isActive(v.id || v.name)
|
|
271
273
|
}),
|
|
272
274
|
onClick: function onClick() {
|
|
273
275
|
if (isSummarize) {
|
|
@@ -282,7 +284,7 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
|
|
|
282
284
|
datasourceName: tableItem.datasourceName || '',
|
|
283
285
|
datasourceId: tableItem.datasourceId || '',
|
|
284
286
|
fieldName: v.name,
|
|
285
|
-
fieldId: v.id,
|
|
287
|
+
fieldId: v.id || v.name,
|
|
286
288
|
fieldNameZh: v.name_zh || '',
|
|
287
289
|
fieldAlias: v.fieldAlias,
|
|
288
290
|
fieldUuid: v.fieldUuid,
|
|
@@ -310,9 +312,9 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
|
|
|
310
312
|
className: 'List-item-icon',
|
|
311
313
|
children: IconMap[special_type || database_type] || _jsx(LetterAaIcon, {})
|
|
312
314
|
}), _jsx("div", {
|
|
313
|
-
children:
|
|
315
|
+
children: _jsxs("h4", {
|
|
314
316
|
className: 'List-item-title ml-2',
|
|
315
|
-
children: replaceTpl(store.fieldNameTpl, v)
|
|
317
|
+
children: [replaceTpl(store.fieldNameTpl, v), v.fieldAlias ? " as ".concat(v.fieldAlias) : '']
|
|
316
318
|
})
|
|
317
319
|
})]
|
|
318
320
|
})
|
|
@@ -320,7 +322,7 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
|
|
|
320
322
|
}, i);
|
|
321
323
|
})]
|
|
322
324
|
})]
|
|
323
|
-
}, tableUuid || tableAlias);
|
|
325
|
+
}, (tableUuid || tableAlias) + '' + i);
|
|
324
326
|
})
|
|
325
327
|
})
|
|
326
328
|
}), showNextBtn && multiple && _jsx(Button, {
|
|
@@ -34,7 +34,6 @@ var SelectPermissionTable = function SelectPermissionTable(_ref) {
|
|
|
34
34
|
width: '100%'
|
|
35
35
|
},
|
|
36
36
|
children: Array.isArray(datasource) && datasource.map(function (v) {
|
|
37
|
-
console.log('🚀 ~ SelectPermissionTable ~ v:', v);
|
|
38
37
|
return _jsx("div", {
|
|
39
38
|
className: cx("Sqb-List-section"),
|
|
40
39
|
children: _jsx("div", {
|
|
@@ -142,6 +142,19 @@ var Filter = function Filter(props) {
|
|
|
142
142
|
newMeta[index].filter = val;
|
|
143
143
|
store.setMeta(newMeta, groupIndex);
|
|
144
144
|
};
|
|
145
|
+
var getPreColumns = function getPreColumns() {
|
|
146
|
+
var data = [].concat(_toConsumableArray(getColumns()), _toConsumableArray(cloneDeep(notExistsColumns || [])));
|
|
147
|
+
// 将source 拍到最前面
|
|
148
|
+
var priorityNames = ['source'];
|
|
149
|
+
var sorted = data.sort(function (a, b) {
|
|
150
|
+
var aPriority = priorityNames.includes(a.name);
|
|
151
|
+
var bPriority = priorityNames.includes(b.name);
|
|
152
|
+
if (aPriority && !bPriority) return -1;
|
|
153
|
+
if (!aPriority && bPriority) return 1;
|
|
154
|
+
return 0;
|
|
155
|
+
});
|
|
156
|
+
return sorted;
|
|
157
|
+
};
|
|
145
158
|
return _jsx(Wrapper, {
|
|
146
159
|
className: "Sqb-item",
|
|
147
160
|
children: _jsxs("div", {
|
|
@@ -159,7 +172,7 @@ var Filter = function Filter(props) {
|
|
|
159
172
|
customTypes: customTypes,
|
|
160
173
|
operatorList: operatorList,
|
|
161
174
|
value: filter,
|
|
162
|
-
data:
|
|
175
|
+
data: getPreColumns(),
|
|
163
176
|
exitData: getColumns(),
|
|
164
177
|
onChange: function onChange(val) {
|
|
165
178
|
selectFilter(val);
|
|
@@ -61,7 +61,7 @@ var menuOperator = operators.map(function (v) {
|
|
|
61
61
|
};
|
|
62
62
|
});
|
|
63
63
|
var JoinData = function JoinData(props) {
|
|
64
|
-
var _meta$subquery, _meta$subquery2, _meta$subquery3, _meta$
|
|
64
|
+
var _meta$subquery, _meta$subquery2, _meta$subquery3, _meta$table3, _meta$table4, _meta$table6, _meta$table7, _meta$table8, _meta$table9, _meta$expressions, _meta$table0, _meta$table1, _meta$expressions2, _store$showMainColumn, _store$showMainColumn2;
|
|
65
65
|
var meta = props.meta,
|
|
66
66
|
groupIndex = props.groupIndex;
|
|
67
67
|
var store = useStore();
|
|
@@ -73,7 +73,8 @@ var JoinData = function JoinData(props) {
|
|
|
73
73
|
var subQuerySelected = Boolean((_meta$subquery = meta.subquery) === null || _meta$subquery === void 0 || (_meta$subquery = _meta$subquery[0]) === null || _meta$subquery === void 0 || (_meta$subquery = _meta$subquery.table) === null || _meta$subquery === void 0 ? void 0 : _meta$subquery.name);
|
|
74
74
|
var columnsSelected = meta.table1.name && meta.table2.name;
|
|
75
75
|
var _getHelper = getHelper(store.metaList[groupIndex].list, meta),
|
|
76
|
-
prevTables = _getHelper.prevTables
|
|
76
|
+
prevTables = _getHelper.prevTables,
|
|
77
|
+
prevGroupBy = _getHelper.prevGroupBy;
|
|
77
78
|
// const ref = useRef(null);
|
|
78
79
|
// useEffect(() => {
|
|
79
80
|
// let newMetaList = store.metaList[groupIndex].list.slice();
|
|
@@ -365,8 +366,9 @@ var JoinData = function JoinData(props) {
|
|
|
365
366
|
onChange: function onChange(data) {
|
|
366
367
|
var tableName = data.name;
|
|
367
368
|
if (meta.table2.name !== tableName || meta.table2.datasourceId !== data.datasourceId) {
|
|
369
|
+
var _store$preProps;
|
|
368
370
|
var newMeta = store.metaList[groupIndex].list.slice();
|
|
369
|
-
var alias = getAlias(tableName, newMeta);
|
|
371
|
+
var alias = getAlias(tableName, newMeta, ((_store$preProps = store.preProps) === null || _store$preProps === void 0 ? void 0 : _store$preProps.notExistsColumns) || []);
|
|
370
372
|
var _table2 = _objectSpread(_objectSpread({}, data), {}, {
|
|
371
373
|
name: tableName,
|
|
372
374
|
tableUuid: data.tableUuid || uuidv4('table'),
|
|
@@ -600,6 +602,7 @@ var JoinData = function JoinData(props) {
|
|
|
600
602
|
return data;
|
|
601
603
|
}
|
|
602
604
|
function selectMoreJoinColumn(e) {
|
|
605
|
+
var _data2, _data3, _data4;
|
|
603
606
|
var node = e.currentTarget;
|
|
604
607
|
var _position = node.getAttribute('v-position');
|
|
605
608
|
var _ind = Number(node.getAttribute('v-index'));
|
|
@@ -716,6 +719,10 @@ var JoinData = function JoinData(props) {
|
|
|
716
719
|
columns: meta.columns
|
|
717
720
|
}];
|
|
718
721
|
}
|
|
722
|
+
// 字段为空,或只存在聚合且聚合为空时
|
|
723
|
+
if (data.length < 1 || Array.isArray(data) && ((_data2 = data) === null || _data2 === void 0 ? void 0 : _data2.length) === 1 && ((_data3 = data) === null || _data3 === void 0 || (_data3 = _data3[0]) === null || _data3 === void 0 ? void 0 : _data3.name) === SummarizeAlias && ((_data4 = data) === null || _data4 === void 0 || (_data4 = _data4[0]) === null || _data4 === void 0 || (_data4 = _data4.columns) === null || _data4 === void 0 ? void 0 : _data4.length) < 1) {
|
|
724
|
+
Toast.warning(__('SqlQueryBuilder.pleaseSelectTable'));
|
|
725
|
+
}
|
|
719
726
|
!meta.readonly && store.setPopup({
|
|
720
727
|
visible: true,
|
|
721
728
|
node: node,
|
|
@@ -883,10 +890,10 @@ var JoinData = function JoinData(props) {
|
|
|
883
890
|
// 子查询弹窗
|
|
884
891
|
var showSubQuery = function showSubQuery() {
|
|
885
892
|
var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
886
|
-
var _store$
|
|
887
|
-
subToolbar = _store$
|
|
888
|
-
toolbar = _store$
|
|
889
|
-
other = _objectWithoutProperties(_store$
|
|
893
|
+
var _store$preProps2 = store.preProps,
|
|
894
|
+
subToolbar = _store$preProps2.subToolbar,
|
|
895
|
+
toolbar = _store$preProps2.toolbar,
|
|
896
|
+
other = _objectWithoutProperties(_store$preProps2, _excluded);
|
|
890
897
|
var newMeta = store.metaList[groupIndex].list.slice();
|
|
891
898
|
var index = findIndex(store.metaList[groupIndex].list, meta);
|
|
892
899
|
var oldList = cloneDeep(newMeta[index].subquery);
|
|
@@ -905,6 +912,7 @@ var JoinData = function JoinData(props) {
|
|
|
905
912
|
value: cloneDeep(val),
|
|
906
913
|
onOk: function onOk(newList) {
|
|
907
914
|
try {
|
|
915
|
+
var _store$preProps3;
|
|
908
916
|
// 子查询未改变不做操作
|
|
909
917
|
if (isEqual(newList, oldList)) {
|
|
910
918
|
o.close();
|
|
@@ -912,7 +920,7 @@ var JoinData = function JoinData(props) {
|
|
|
912
920
|
}
|
|
913
921
|
newMeta[index].subquery = newList;
|
|
914
922
|
newMeta[index].table2 = _objectSpread(_objectSpread({}, newList[0].table), {}, {
|
|
915
|
-
alias: newMeta[index].table2.alias || getAlias(newList[0].table.name, newMeta)
|
|
923
|
+
alias: newMeta[index].table2.alias || getAlias(newList[0].table.name, newMeta, ((_store$preProps3 = store.preProps) === null || _store$preProps3 === void 0 ? void 0 : _store$preProps3.notExistsColumns) || [])
|
|
916
924
|
// fields: [],
|
|
917
925
|
});
|
|
918
926
|
var items = getSubColumns(newList);
|
|
@@ -1137,6 +1145,9 @@ var JoinData = function JoinData(props) {
|
|
|
1137
1145
|
var leftTableIsError = function leftTableIsError() {
|
|
1138
1146
|
var _prevTables$meta$tabl;
|
|
1139
1147
|
if (!meta.table1.datasourceId || !meta.table1.id || meta.table1.datasourceId === SummarizeAlias) {
|
|
1148
|
+
if (!prevGroupBy && meta.table1.id === SummarizeAlias) {
|
|
1149
|
+
return true;
|
|
1150
|
+
}
|
|
1140
1151
|
return false;
|
|
1141
1152
|
}
|
|
1142
1153
|
return !(prevTables !== null && prevTables !== void 0 && (_prevTables$meta$tabl = prevTables[meta.table1.datasourceId]) !== null && _prevTables$meta$tabl !== void 0 && _prevTables$meta$tabl[meta.table1.alias || meta.table1.id]);
|
|
@@ -1216,6 +1227,17 @@ var JoinData = function JoinData(props) {
|
|
|
1216
1227
|
});
|
|
1217
1228
|
}
|
|
1218
1229
|
};
|
|
1230
|
+
var tableIsError = function tableIsError() {
|
|
1231
|
+
var _store$preProps4, _meta$table;
|
|
1232
|
+
var aliass = ((_store$preProps4 = store.preProps) === null || _store$preProps4 === void 0 || (_store$preProps4 = _store$preProps4.notExistsColumns) === null || _store$preProps4 === void 0 ? void 0 : _store$preProps4.map(function (v) {
|
|
1233
|
+
return v.alias;
|
|
1234
|
+
})) || [];
|
|
1235
|
+
var tableAlias = (_meta$table = meta.table2) === null || _meta$table === void 0 ? void 0 : _meta$table.alias;
|
|
1236
|
+
if (tableAlias && aliass.includes(tableAlias)) {
|
|
1237
|
+
return true;
|
|
1238
|
+
}
|
|
1239
|
+
return false;
|
|
1240
|
+
};
|
|
1219
1241
|
return _jsx(Wrapper, {
|
|
1220
1242
|
className: cx("Sqb-item"),
|
|
1221
1243
|
children: _jsxs("div", {
|
|
@@ -1265,42 +1287,48 @@ var JoinData = function JoinData(props) {
|
|
|
1265
1287
|
showSubQuery(meta.subquery);
|
|
1266
1288
|
},
|
|
1267
1289
|
children: [subQuerySelected && _jsx(Tooltip, {
|
|
1268
|
-
title: __('SqlQueryBuilder.alias'),
|
|
1290
|
+
title: __(tableIsError() ? 'SqlQueryBuilder.repeatAlias' : 'SqlQueryBuilder.alias'),
|
|
1269
1291
|
children: _jsx(Button, {
|
|
1270
|
-
|
|
1292
|
+
danger: tableIsError(),
|
|
1293
|
+
className: cx(':Sqb-TableName-as', {
|
|
1294
|
+
isError: tableIsError()
|
|
1295
|
+
}),
|
|
1271
1296
|
shape: 'circle',
|
|
1272
1297
|
iconOnly: true,
|
|
1273
1298
|
primary: true,
|
|
1274
1299
|
icon: 'As',
|
|
1275
1300
|
size: 'small',
|
|
1276
1301
|
onClick: function onClick(e) {
|
|
1277
|
-
var _meta$
|
|
1302
|
+
var _meta$table2;
|
|
1278
1303
|
e.stopPropagation();
|
|
1279
|
-
onChangeTableAlias(((_meta$
|
|
1304
|
+
onChangeTableAlias(((_meta$table2 = meta.table2) === null || _meta$table2 === void 0 ? void 0 : _meta$table2.alias) || '');
|
|
1280
1305
|
}
|
|
1281
1306
|
})
|
|
1282
|
-
}), subQuerySelected ? "".concat(((_meta$subquery2 = meta.subquery) === null || _meta$subquery2 === void 0 ? void 0 : _meta$subquery2[0]).table.datasourceName, ".").concat(((_meta$subquery3 = meta.subquery) === null || _meta$subquery3 === void 0 ? void 0 : _meta$subquery3[0]).table.name, " ").concat((_meta$
|
|
1307
|
+
}), subQuerySelected ? "".concat(((_meta$subquery2 = meta.subquery) === null || _meta$subquery2 === void 0 ? void 0 : _meta$subquery2[0]).table.datasourceName, ".").concat(((_meta$subquery3 = meta.subquery) === null || _meta$subquery3 === void 0 ? void 0 : _meta$subquery3[0]).table.name, " ").concat((_meta$table3 = meta.table2) !== null && _meta$table3 !== void 0 && _meta$table3.alias ? "as ".concat((_meta$table4 = meta.table2) === null || _meta$table4 === void 0 ? void 0 : _meta$table4.alias) : '', " ") : __('SqlQueryBuilder.setSubQuery')]
|
|
1283
1308
|
}) : _jsxs("div", {
|
|
1284
1309
|
className: cx("Sqb-TableName", {
|
|
1285
1310
|
notSelected: !table2Selected
|
|
1286
1311
|
}),
|
|
1287
1312
|
onClick: selectTable,
|
|
1288
1313
|
children: [table2Selected && _jsx(Tooltip, {
|
|
1289
|
-
title: __('SqlQueryBuilder.alias'),
|
|
1314
|
+
title: __(tableIsError() ? 'SqlQueryBuilder.repeatAlias' : 'SqlQueryBuilder.alias'),
|
|
1290
1315
|
children: _jsx(Button, {
|
|
1291
|
-
|
|
1316
|
+
danger: tableIsError(),
|
|
1317
|
+
className: cx(':Sqb-TableName-as', {
|
|
1318
|
+
isError: tableIsError()
|
|
1319
|
+
}),
|
|
1292
1320
|
shape: 'circle',
|
|
1293
1321
|
iconOnly: true,
|
|
1294
1322
|
primary: true,
|
|
1295
1323
|
icon: 'As',
|
|
1296
1324
|
size: 'small',
|
|
1297
1325
|
onClick: function onClick(e) {
|
|
1298
|
-
var _meta$
|
|
1326
|
+
var _meta$table5;
|
|
1299
1327
|
e.stopPropagation();
|
|
1300
|
-
onChangeTableAlias(((_meta$
|
|
1328
|
+
onChangeTableAlias(((_meta$table5 = meta.table2) === null || _meta$table5 === void 0 ? void 0 : _meta$table5.alias) || '');
|
|
1301
1329
|
}
|
|
1302
1330
|
})
|
|
1303
|
-
}), table2Selected ? "".concat(meta.table2.datasourceName, ".").concat(meta.table2.name, " ").concat((_meta$
|
|
1331
|
+
}), table2Selected ? "".concat(meta.table2.datasourceName, ".").concat(meta.table2.name, " ").concat((_meta$table6 = meta.table2) !== null && _meta$table6 !== void 0 && _meta$table6.alias ? "as ".concat((_meta$table7 = meta.table2) === null || _meta$table7 === void 0 ? void 0 : _meta$table7.alias) : '') : __('SqlQueryBuilder.pickTable')]
|
|
1304
1332
|
}), store.showSubquery && _jsx(Tooltip, {
|
|
1305
1333
|
title: __('SqlQueryBuilder.switchSubQuery'),
|
|
1306
1334
|
children: _jsx(Button, {
|
|
@@ -1311,7 +1339,7 @@ var JoinData = function JoinData(props) {
|
|
|
1311
1339
|
icon: _jsx(RelatedWork, {}),
|
|
1312
1340
|
onClick: switchSubQuery
|
|
1313
1341
|
})
|
|
1314
|
-
}), ((_meta$
|
|
1342
|
+
}), ((_meta$table8 = meta.table2) === null || _meta$table8 === void 0 ? void 0 : _meta$table8.name) && ((_meta$table9 = meta.table1) === null || _meta$table9 === void 0 ? void 0 : _meta$table9.name) && ((_meta$expressions = meta.expressions) === null || _meta$expressions === void 0 ? void 0 : _meta$expressions.map(function (v, i) {
|
|
1315
1343
|
if (v.type === AtomsTypeEnum.JOIN_DEFAULT) {
|
|
1316
1344
|
return _jsxs("div", {
|
|
1317
1345
|
className: cx("Sqb-where block"),
|
|
@@ -1538,7 +1566,7 @@ var JoinData = function JoinData(props) {
|
|
|
1538
1566
|
})]
|
|
1539
1567
|
}, i);
|
|
1540
1568
|
}
|
|
1541
|
-
})), ((_meta$
|
|
1569
|
+
})), ((_meta$table0 = meta.table2) === null || _meta$table0 === void 0 ? void 0 : _meta$table0.name) && ((_meta$table1 = meta.table1) === null || _meta$table1 === void 0 ? void 0 : _meta$table1.name) && (((_meta$expressions2 = meta.expressions) === null || _meta$expressions2 === void 0 ? void 0 : _meta$expressions2.length) || 0) < 1 && _jsx(Tooltip, {
|
|
1542
1570
|
title: __('SqlQueryBuilder.add'),
|
|
1543
1571
|
children: _jsx(Dropdown, {
|
|
1544
1572
|
trigger: ['click'],
|
|
@@ -9,7 +9,7 @@ import { TypeEnum, ColumnsPopupThemeEnum, SQL_COLUMN_TYPE } from '../../../store
|
|
|
9
9
|
import { MetaSummarize_Enum, AtomsTypeEnum } from '../../../store/types';
|
|
10
10
|
import SelectJoinColumn from '../../dialog/select-join-column';
|
|
11
11
|
import { Tooltip, Button, Modal, Input, Toast } from '@gingkoo/pandora';
|
|
12
|
-
import { uuidv4 } from '../../../utils/helper';
|
|
12
|
+
import { uuidv4, getAlias } from '../../../utils/helper';
|
|
13
13
|
import { changeFieldAlias, isValidSQLAlias, isError } from '../../../utils';
|
|
14
14
|
import ItemName from '../components/item-name';
|
|
15
15
|
import { AddIcon, CloseIcon } from '../../icons';
|
|
@@ -194,7 +194,8 @@ var GroupBy = function GroupBy(props) {
|
|
|
194
194
|
newMeta[index].by.push(data);
|
|
195
195
|
// @ts-ignore
|
|
196
196
|
newMeta[index].by = newMeta[index].by.map(function (v) {
|
|
197
|
-
var
|
|
197
|
+
var _store$preProps;
|
|
198
|
+
var fieldAlias = "".concat(getAlias(v.alias, newMeta, ((_store$preProps = store.preProps) === null || _store$preProps === void 0 ? void 0 : _store$preProps.notExistsColumns) || []), "__").concat(v.name);
|
|
198
199
|
return _objectSpread(_objectSpread({}, v), {}, {
|
|
199
200
|
sql: "".concat(v.alias, ".").concat(v.realName || v.name),
|
|
200
201
|
fieldAlias: fieldAlias,
|