@gingkoo/pandora-metabase 1.0.137-alpha.1 → 1.0.137-alpha.2

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.
@@ -37,7 +37,19 @@ var _dialog = require("../dialog");
37
37
  var _useProvider = require("../../hooks/use-provider");
38
38
  var _excluded = ["subToolbar", "notExistsColumns", "isExit", "toolbar"];
39
39
  var PrevResult = 'Previous results';
40
- var operators = ['AND', 'OR', '(', ')', ',', '+', '-', '*', '/', '!=', '<=', '>=', '<', '>', '='];
40
+ var normalizeJoinOperator = function normalizeJoinOperator(val) {
41
+ return String(val).toUpperCase() === 'OR' ? 'OR' : 'AND';
42
+ };
43
+ var isJoinOperator = function isJoinOperator(item) {
44
+ return (item === null || item === void 0 ? void 0 : item.type) === _types.AtomsTypeEnum.OPERATOR;
45
+ };
46
+ var menuJoinOperator = [{
47
+ key: 'AND',
48
+ label: 'AND'
49
+ }, {
50
+ key: 'OR',
51
+ label: 'OR'
52
+ }];
41
53
  var FlagLocation;
42
54
  (function (FlagLocation) {
43
55
  FlagLocation["TABLE_1"] = "table1";
@@ -49,7 +61,7 @@ var ExpressionsEnum;
49
61
  ExpressionsEnum["RIGHT"] = "rhs";
50
62
  })(ExpressionsEnum || (ExpressionsEnum = {}));
51
63
  var getText = function getText(v) {
52
- return (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, _types.AtomsTypeEnum.JOIN_DEFAULT, 'joinData.default'), _types.AtomsTypeEnum.EXPRESSION, 'joinData.expression'), _types.AtomsTypeEnum.OPERATOR, 'customColumn.operator'), _types.AtomsTypeEnum.COLLECTION, 'customColumn.collection')[v];
64
+ return (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, _types.AtomsTypeEnum.JOIN_DEFAULT, 'joinData.default'), _types.AtomsTypeEnum.EXPRESSION, 'joinData.expression'), _types.AtomsTypeEnum.COLLECTION, 'customColumn.collection')[v];
53
65
  };
54
66
  var menuTypes = [{
55
67
  key: _types.AtomsTypeEnum.JOIN_DEFAULT,
@@ -57,19 +69,10 @@ var menuTypes = [{
57
69
  }, {
58
70
  key: _types.AtomsTypeEnum.EXPRESSION,
59
71
  label: (0, _locale.__)(getText(_types.AtomsTypeEnum.EXPRESSION))
60
- }, {
61
- key: _types.AtomsTypeEnum.OPERATOR,
62
- label: (0, _locale.__)(getText(_types.AtomsTypeEnum.OPERATOR))
63
72
  }, {
64
73
  key: _types.AtomsTypeEnum.COLLECTION,
65
74
  label: (0, _locale.__)(getText(_types.AtomsTypeEnum.COLLECTION))
66
75
  }];
67
- var menuOperator = operators.map(function (v) {
68
- return {
69
- key: v,
70
- label: v
71
- };
72
- });
73
76
  var JoinData = function JoinData(props) {
74
77
  var _meta$subquery, _meta$subquery2, _meta$subquery3, _meta$table4, _meta$table5, _meta$table7, _meta$table8, _meta$table9, _meta$table0, _meta$expressions, _meta$table1, _meta$table10, _meta$expressions2, _store$showMainColumn, _store$showMainColumn2;
75
78
  var meta = props.meta,
@@ -130,6 +133,26 @@ var JoinData = function JoinData(props) {
130
133
  tableIsDel();
131
134
  }, 0);
132
135
  }, [meta]);
136
+ (0, _react.useEffect)(function () {
137
+ var expressions = meta.expressions || [];
138
+ var hasInvalidOperator = expressions.some(function (item) {
139
+ return item.type === _types.AtomsTypeEnum.OPERATOR && item.val !== normalizeJoinOperator(item.val);
140
+ });
141
+ if (!hasInvalidOperator) {
142
+ return;
143
+ }
144
+ var currentIndex = (0, _utils2.findIndex)(store.metaList[groupIndex].list, meta);
145
+ var newMeta = store.metaList[groupIndex].list.slice();
146
+ newMeta[currentIndex].expressions = expressions.map(function (item) {
147
+ if (item.type !== _types.AtomsTypeEnum.OPERATOR) {
148
+ return item;
149
+ }
150
+ return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, item), {}, {
151
+ val: normalizeJoinOperator(item.val)
152
+ });
153
+ });
154
+ store.setMeta(newMeta, groupIndex);
155
+ }, [meta.expressions]);
133
156
  var getTableColumns = function getTableColumns() {
134
157
  var data = [];
135
158
  var _getHelper2 = (0, _utils2.getHelper)(store.metaList[groupIndex].list, meta),
@@ -1064,10 +1087,26 @@ var JoinData = function JoinData(props) {
1064
1087
  onCancel: function onCancel() {}
1065
1088
  });
1066
1089
  };
1090
+ var cleanJoinOperators = function cleanJoinOperators(expressions) {
1091
+ for (var i = expressions.length - 1; i >= 0; i--) {
1092
+ if (isJoinOperator(expressions[i]) && (i === 0 || i === expressions.length - 1 || isJoinOperator(expressions[i - 1]))) {
1093
+ expressions.splice(i, 1);
1094
+ }
1095
+ }
1096
+ };
1067
1097
  var changeOperator = function changeOperator(key, i) {
1068
1098
  var index = (0, _utils2.findIndex)(store.metaList[groupIndex].list, meta);
1069
1099
  var newMeta = store.metaList[groupIndex].list.slice();
1070
- newMeta[index].expressions[i].val = key;
1100
+ var operator = newMeta[index].expressions[i];
1101
+ operator.val = normalizeJoinOperator(key);
1102
+ store.setMeta(newMeta, groupIndex);
1103
+ };
1104
+ var removeExpression = function removeExpression(i) {
1105
+ var index = (0, _utils2.findIndex)(store.metaList[groupIndex].list, meta);
1106
+ var newMeta = store.metaList[groupIndex].list.slice();
1107
+ var expressions = newMeta[index].expressions;
1108
+ expressions.splice(i, 1);
1109
+ cleanJoinOperators(expressions);
1071
1110
  store.setMeta(newMeta, groupIndex);
1072
1111
  };
1073
1112
  var changeExpression = function changeExpression(e, i) {
@@ -1133,19 +1172,15 @@ var JoinData = function JoinData(props) {
1133
1172
  }],
1134
1173
  type: type
1135
1174
  };
1136
- store.setMeta(newMeta, groupIndex);
1137
- }
1138
- if (type === _types.AtomsTypeEnum.OPERATOR) {
1139
- item = {
1140
- val: 'AND',
1141
- type: type
1142
- };
1143
1175
  }
1144
1176
  if (!item) {
1145
1177
  return;
1146
1178
  }
1147
1179
  if (i >= 0) {
1148
- newMeta[index].expressions.splice(i + 1, 0, item);
1180
+ newMeta[index].expressions.splice(i + 1, 0, {
1181
+ val: 'AND',
1182
+ type: _types.AtomsTypeEnum.OPERATOR
1183
+ }, item);
1149
1184
  } else {
1150
1185
  newMeta[index].expressions.push(item);
1151
1186
  }
@@ -1460,16 +1495,14 @@ var JoinData = function JoinData(props) {
1460
1495
  className: 'mr-2 operator-icon',
1461
1496
  icon: (0, _jsxRuntime.jsx)(_pandoraIcons.FfLine, {}),
1462
1497
  onClick: function onClick() {
1463
- var index = (0, _utils2.findIndex)(store.metaList[groupIndex].list, meta);
1464
- var newMeta = store.metaList[groupIndex].list.slice();
1465
- newMeta[index].expressions.splice(i, 1);
1466
- store.setMeta(newMeta, groupIndex);
1498
+ removeExpression(i);
1467
1499
  }
1468
1500
  })
1469
1501
  })]
1470
1502
  }, i);
1471
1503
  }
1472
1504
  if (v.type === _types.AtomsTypeEnum.OPERATOR) {
1505
+ var operator = normalizeJoinOperator(v.val);
1473
1506
  return (0, _jsxRuntime.jsxs)("div", {
1474
1507
  className: (0, _classnames["default"])("Sqb-where block"),
1475
1508
  children: [i == 0 && (0, _jsxRuntime.jsx)("span", {
@@ -1480,41 +1513,12 @@ var JoinData = function JoinData(props) {
1480
1513
  onChange: function onChange(key) {
1481
1514
  changeOperator(key, i);
1482
1515
  },
1483
- droplist: menuOperator,
1516
+ droplist: menuJoinOperator,
1484
1517
  children: (0, _jsxRuntime.jsx)(_pandora.Button, {
1518
+ disabled: meta.readonly,
1485
1519
  className: 'ml-2 mr-4 text-gray-500',
1486
1520
  type: 'link',
1487
- children: v.val
1488
- })
1489
- }), (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
1490
- title: (0, _locale.__)('SqlQueryBuilder.add'),
1491
- children: (0, _jsxRuntime.jsx)(_pandora.Dropdown, {
1492
- trigger: ['click'],
1493
- onChange: function onChange(key) {
1494
- addExpression(key, i);
1495
- },
1496
- droplist: menuTypes,
1497
- children: (0, _jsxRuntime.jsx)(_pandora.Button, {
1498
- disabled: meta.readonly,
1499
- primary: true,
1500
- ghost: true,
1501
- className: 'mr-2 operator-icon',
1502
- icon: (0, _jsxRuntime.jsx)(_pandoraIcons.FfPlus, {})
1503
- })
1504
- })
1505
- }), (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
1506
- title: (0, _locale.__)('SqlQueryBuilder.del'),
1507
- children: (0, _jsxRuntime.jsx)(_pandora.Button, {
1508
- disabled: meta.readonly,
1509
- danger: true,
1510
- className: 'mr-2 operator-icon',
1511
- icon: (0, _jsxRuntime.jsx)(_pandoraIcons.FfLine, {}),
1512
- onClick: function onClick() {
1513
- var index = (0, _utils2.findIndex)(store.metaList[groupIndex].list, meta);
1514
- var newMeta = store.metaList[groupIndex].list.slice();
1515
- newMeta[index].expressions.splice(i, 1);
1516
- store.setMeta(newMeta, groupIndex);
1517
- }
1521
+ children: operator
1518
1522
  })
1519
1523
  })]
1520
1524
  }, i);
@@ -1560,10 +1564,7 @@ var JoinData = function JoinData(props) {
1560
1564
  className: 'mr-2 operator-icon',
1561
1565
  icon: (0, _jsxRuntime.jsx)(_pandoraIcons.FfLine, {}),
1562
1566
  onClick: function onClick() {
1563
- var index = (0, _utils2.findIndex)(store.metaList[groupIndex].list, meta);
1564
- var newMeta = store.metaList[groupIndex].list.slice();
1565
- newMeta[index].expressions.splice(i, 1);
1566
- store.setMeta(newMeta, groupIndex);
1567
+ removeExpression(i);
1567
1568
  }
1568
1569
  })
1569
1570
  })]
@@ -1614,10 +1615,7 @@ var JoinData = function JoinData(props) {
1614
1615
  className: 'mr-2 operator-icon',
1615
1616
  icon: (0, _jsxRuntime.jsx)(_pandoraIcons.FfLine, {}),
1616
1617
  onClick: function onClick() {
1617
- var index = (0, _utils2.findIndex)(store.metaList[groupIndex].list, meta);
1618
- var newMeta = store.metaList[groupIndex].list.slice();
1619
- newMeta[index].expressions.splice(i, 1);
1620
- store.setMeta(newMeta, groupIndex);
1618
+ removeExpression(i);
1621
1619
  }
1622
1620
  })
1623
1621
  })]
@@ -32,7 +32,19 @@ import { SelectTable, SelectJoin, SelectColumnMultiple, SelectColumn, Expression
32
32
  import { ExclamationCircleFill } from '@gingkoo/pandora-icons';
33
33
  import { useStore } from '../../hooks/use-provider';
34
34
  var PrevResult = 'Previous results';
35
- var operators = ['AND', 'OR', '(', ')', ',', '+', '-', '*', '/', '!=', '<=', '>=', '<', '>', '='];
35
+ var normalizeJoinOperator = function normalizeJoinOperator(val) {
36
+ return String(val).toUpperCase() === 'OR' ? 'OR' : 'AND';
37
+ };
38
+ var isJoinOperator = function isJoinOperator(item) {
39
+ return (item === null || item === void 0 ? void 0 : item.type) === AtomsTypeEnum.OPERATOR;
40
+ };
41
+ var menuJoinOperator = [{
42
+ key: 'AND',
43
+ label: 'AND'
44
+ }, {
45
+ key: 'OR',
46
+ label: 'OR'
47
+ }];
36
48
  var FlagLocation;
37
49
  (function (FlagLocation) {
38
50
  FlagLocation["TABLE_1"] = "table1";
@@ -44,7 +56,7 @@ var ExpressionsEnum;
44
56
  ExpressionsEnum["RIGHT"] = "rhs";
45
57
  })(ExpressionsEnum || (ExpressionsEnum = {}));
46
58
  var getText = function getText(v) {
47
- return _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, AtomsTypeEnum.JOIN_DEFAULT, 'joinData.default'), AtomsTypeEnum.EXPRESSION, 'joinData.expression'), AtomsTypeEnum.OPERATOR, 'customColumn.operator'), AtomsTypeEnum.COLLECTION, 'customColumn.collection')[v];
59
+ return _defineProperty(_defineProperty(_defineProperty({}, AtomsTypeEnum.JOIN_DEFAULT, 'joinData.default'), AtomsTypeEnum.EXPRESSION, 'joinData.expression'), AtomsTypeEnum.COLLECTION, 'customColumn.collection')[v];
48
60
  };
49
61
  var menuTypes = [{
50
62
  key: AtomsTypeEnum.JOIN_DEFAULT,
@@ -52,19 +64,10 @@ var menuTypes = [{
52
64
  }, {
53
65
  key: AtomsTypeEnum.EXPRESSION,
54
66
  label: __(getText(AtomsTypeEnum.EXPRESSION))
55
- }, {
56
- key: AtomsTypeEnum.OPERATOR,
57
- label: __(getText(AtomsTypeEnum.OPERATOR))
58
67
  }, {
59
68
  key: AtomsTypeEnum.COLLECTION,
60
69
  label: __(getText(AtomsTypeEnum.COLLECTION))
61
70
  }];
62
- var menuOperator = operators.map(function (v) {
63
- return {
64
- key: v,
65
- label: v
66
- };
67
- });
68
71
  var JoinData = function JoinData(props) {
69
72
  var _meta$subquery, _meta$subquery2, _meta$subquery3, _meta$table4, _meta$table5, _meta$table7, _meta$table8, _meta$table9, _meta$table0, _meta$expressions, _meta$table1, _meta$table10, _meta$expressions2, _store$showMainColumn, _store$showMainColumn2;
70
73
  var meta = props.meta,
@@ -125,6 +128,26 @@ var JoinData = function JoinData(props) {
125
128
  tableIsDel();
126
129
  }, 0);
127
130
  }, [meta]);
131
+ useEffect(function () {
132
+ var expressions = meta.expressions || [];
133
+ var hasInvalidOperator = expressions.some(function (item) {
134
+ return item.type === AtomsTypeEnum.OPERATOR && item.val !== normalizeJoinOperator(item.val);
135
+ });
136
+ if (!hasInvalidOperator) {
137
+ return;
138
+ }
139
+ var currentIndex = findIndex(store.metaList[groupIndex].list, meta);
140
+ var newMeta = store.metaList[groupIndex].list.slice();
141
+ newMeta[currentIndex].expressions = expressions.map(function (item) {
142
+ if (item.type !== AtomsTypeEnum.OPERATOR) {
143
+ return item;
144
+ }
145
+ return _objectSpread(_objectSpread({}, item), {}, {
146
+ val: normalizeJoinOperator(item.val)
147
+ });
148
+ });
149
+ store.setMeta(newMeta, groupIndex);
150
+ }, [meta.expressions]);
128
151
  var getTableColumns = function getTableColumns() {
129
152
  var data = [];
130
153
  var _getHelper2 = getHelper(store.metaList[groupIndex].list, meta),
@@ -1059,10 +1082,26 @@ var JoinData = function JoinData(props) {
1059
1082
  onCancel: function onCancel() {}
1060
1083
  });
1061
1084
  };
1085
+ var cleanJoinOperators = function cleanJoinOperators(expressions) {
1086
+ for (var i = expressions.length - 1; i >= 0; i--) {
1087
+ if (isJoinOperator(expressions[i]) && (i === 0 || i === expressions.length - 1 || isJoinOperator(expressions[i - 1]))) {
1088
+ expressions.splice(i, 1);
1089
+ }
1090
+ }
1091
+ };
1062
1092
  var changeOperator = function changeOperator(key, i) {
1063
1093
  var index = findIndex(store.metaList[groupIndex].list, meta);
1064
1094
  var newMeta = store.metaList[groupIndex].list.slice();
1065
- newMeta[index].expressions[i].val = key;
1095
+ var operator = newMeta[index].expressions[i];
1096
+ operator.val = normalizeJoinOperator(key);
1097
+ store.setMeta(newMeta, groupIndex);
1098
+ };
1099
+ var removeExpression = function removeExpression(i) {
1100
+ var index = findIndex(store.metaList[groupIndex].list, meta);
1101
+ var newMeta = store.metaList[groupIndex].list.slice();
1102
+ var expressions = newMeta[index].expressions;
1103
+ expressions.splice(i, 1);
1104
+ cleanJoinOperators(expressions);
1066
1105
  store.setMeta(newMeta, groupIndex);
1067
1106
  };
1068
1107
  var changeExpression = function changeExpression(e, i) {
@@ -1128,19 +1167,15 @@ var JoinData = function JoinData(props) {
1128
1167
  }],
1129
1168
  type: type
1130
1169
  };
1131
- store.setMeta(newMeta, groupIndex);
1132
- }
1133
- if (type === AtomsTypeEnum.OPERATOR) {
1134
- item = {
1135
- val: 'AND',
1136
- type: type
1137
- };
1138
1170
  }
1139
1171
  if (!item) {
1140
1172
  return;
1141
1173
  }
1142
1174
  if (i >= 0) {
1143
- newMeta[index].expressions.splice(i + 1, 0, item);
1175
+ newMeta[index].expressions.splice(i + 1, 0, {
1176
+ val: 'AND',
1177
+ type: AtomsTypeEnum.OPERATOR
1178
+ }, item);
1144
1179
  } else {
1145
1180
  newMeta[index].expressions.push(item);
1146
1181
  }
@@ -1455,16 +1490,14 @@ var JoinData = function JoinData(props) {
1455
1490
  className: 'mr-2 operator-icon',
1456
1491
  icon: _jsx(FfLine, {}),
1457
1492
  onClick: function onClick() {
1458
- var index = findIndex(store.metaList[groupIndex].list, meta);
1459
- var newMeta = store.metaList[groupIndex].list.slice();
1460
- newMeta[index].expressions.splice(i, 1);
1461
- store.setMeta(newMeta, groupIndex);
1493
+ removeExpression(i);
1462
1494
  }
1463
1495
  })
1464
1496
  })]
1465
1497
  }, i);
1466
1498
  }
1467
1499
  if (v.type === AtomsTypeEnum.OPERATOR) {
1500
+ var operator = normalizeJoinOperator(v.val);
1468
1501
  return _jsxs("div", {
1469
1502
  className: cx("Sqb-where block"),
1470
1503
  children: [i == 0 && _jsx("span", {
@@ -1475,41 +1508,12 @@ var JoinData = function JoinData(props) {
1475
1508
  onChange: function onChange(key) {
1476
1509
  changeOperator(key, i);
1477
1510
  },
1478
- droplist: menuOperator,
1511
+ droplist: menuJoinOperator,
1479
1512
  children: _jsx(Button, {
1513
+ disabled: meta.readonly,
1480
1514
  className: 'ml-2 mr-4 text-gray-500',
1481
1515
  type: 'link',
1482
- children: v.val
1483
- })
1484
- }), _jsx(Tooltip, {
1485
- title: __('SqlQueryBuilder.add'),
1486
- children: _jsx(Dropdown, {
1487
- trigger: ['click'],
1488
- onChange: function onChange(key) {
1489
- addExpression(key, i);
1490
- },
1491
- droplist: menuTypes,
1492
- children: _jsx(Button, {
1493
- disabled: meta.readonly,
1494
- primary: true,
1495
- ghost: true,
1496
- className: 'mr-2 operator-icon',
1497
- icon: _jsx(FfPlus, {})
1498
- })
1499
- })
1500
- }), _jsx(Tooltip, {
1501
- title: __('SqlQueryBuilder.del'),
1502
- children: _jsx(Button, {
1503
- disabled: meta.readonly,
1504
- danger: true,
1505
- className: 'mr-2 operator-icon',
1506
- icon: _jsx(FfLine, {}),
1507
- onClick: function onClick() {
1508
- var index = findIndex(store.metaList[groupIndex].list, meta);
1509
- var newMeta = store.metaList[groupIndex].list.slice();
1510
- newMeta[index].expressions.splice(i, 1);
1511
- store.setMeta(newMeta, groupIndex);
1512
- }
1516
+ children: operator
1513
1517
  })
1514
1518
  })]
1515
1519
  }, i);
@@ -1555,10 +1559,7 @@ var JoinData = function JoinData(props) {
1555
1559
  className: 'mr-2 operator-icon',
1556
1560
  icon: _jsx(FfLine, {}),
1557
1561
  onClick: function onClick() {
1558
- var index = findIndex(store.metaList[groupIndex].list, meta);
1559
- var newMeta = store.metaList[groupIndex].list.slice();
1560
- newMeta[index].expressions.splice(i, 1);
1561
- store.setMeta(newMeta, groupIndex);
1562
+ removeExpression(i);
1562
1563
  }
1563
1564
  })
1564
1565
  })]
@@ -1609,10 +1610,7 @@ var JoinData = function JoinData(props) {
1609
1610
  className: 'mr-2 operator-icon',
1610
1611
  icon: _jsx(FfLine, {}),
1611
1612
  onClick: function onClick() {
1612
- var index = findIndex(store.metaList[groupIndex].list, meta);
1613
- var newMeta = store.metaList[groupIndex].list.slice();
1614
- newMeta[index].expressions.splice(i, 1);
1615
- store.setMeta(newMeta, groupIndex);
1613
+ removeExpression(i);
1616
1614
  }
1617
1615
  })
1618
1616
  })]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gingkoo/pandora-metabase",
3
- "version": "1.0.137-alpha.1",
3
+ "version": "1.0.137-alpha.2",
4
4
  "description": "",
5
5
  "main": "lib/es/index.js",
6
6
  "module": "lib/es/index.js",