@nokecy/qc-ui 1.1.22 → 1.1.24
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/dist/cjs/ag-grid-plus/ag-gridPlus.js +128 -8
- package/dist/cjs/ag-grid-plus/queryForm/AdvancedQueryBuilder.d.ts +10 -0
- package/dist/cjs/ag-grid-plus/queryForm/AdvancedQueryBuilder.js +547 -0
- package/dist/cjs/ag-grid-plus/queryForm/index.js +3 -6
- package/dist/cjs/ag-grid-plus/shared/storage/schemeStorageAdapter.d.ts +36 -0
- package/dist/cjs/ag-grid-plus/utils.d.ts +5 -0
- package/dist/cjs/ag-grid-plus/utils.js +101 -2
- package/dist/esm/ag-grid-plus/ag-gridPlus.js +131 -11
- package/dist/esm/ag-grid-plus/queryForm/AdvancedQueryBuilder.d.ts +10 -0
- package/dist/esm/ag-grid-plus/queryForm/AdvancedQueryBuilder.js +541 -0
- package/dist/esm/ag-grid-plus/queryForm/index.js +3 -6
- package/dist/esm/ag-grid-plus/shared/storage/schemeStorageAdapter.d.ts +36 -0
- package/dist/esm/ag-grid-plus/utils.d.ts +5 -0
- package/dist/esm/ag-grid-plus/utils.js +101 -1
- package/dist/umd/qc-ui.min.js +1 -1
- package/package.json +3 -2
|
@@ -12,8 +12,108 @@ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symb
|
|
|
12
12
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
13
13
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
14
14
|
import dayjs from 'dayjs';
|
|
15
|
+
import { GridifyQueryBuilder, ConditionalOperator as GridifyOp } from 'gridify-client';
|
|
16
|
+
|
|
17
|
+
// Gridify 值转义函数
|
|
15
18
|
var esc = function esc(v) {
|
|
16
|
-
return v.replace(/([(),|,\\]|\/i)/g, '\\$1');
|
|
19
|
+
return String(v).replace(/([(),|,\\]|\/i)/g, '\\$1');
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* 将高级查询规则转换为后端 Gridify Filter 字符串
|
|
24
|
+
* 使用 gridify-client 库确保安全性和兼容性
|
|
25
|
+
*/
|
|
26
|
+
export var convertRulesToFilterString = function convertRulesToFilterString(ruleGroup, colDefs) {
|
|
27
|
+
if (!ruleGroup || !ruleGroup.children || ruleGroup.children.length === 0) {
|
|
28
|
+
return "";
|
|
29
|
+
}
|
|
30
|
+
var mapOperator = function mapOperator(op) {
|
|
31
|
+
switch (op) {
|
|
32
|
+
case '=':
|
|
33
|
+
return GridifyOp.Equal;
|
|
34
|
+
case '!=':
|
|
35
|
+
return GridifyOp.NotEqual;
|
|
36
|
+
case '>':
|
|
37
|
+
return GridifyOp.GreaterThan;
|
|
38
|
+
case '>=':
|
|
39
|
+
return GridifyOp.GreaterThanOrEqual;
|
|
40
|
+
case '<':
|
|
41
|
+
return GridifyOp.LessThan;
|
|
42
|
+
case '<=':
|
|
43
|
+
return GridifyOp.LessThanOrEqual;
|
|
44
|
+
case 'contains':
|
|
45
|
+
return GridifyOp.Contains;
|
|
46
|
+
case 'startsWith':
|
|
47
|
+
return GridifyOp.StartsWith;
|
|
48
|
+
case 'endsWith':
|
|
49
|
+
return GridifyOp.EndsWith;
|
|
50
|
+
default:
|
|
51
|
+
return GridifyOp.Equal;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
var processItem = function processItem(builder, item, isFirst) {
|
|
55
|
+
if (item.logic) {
|
|
56
|
+
// 嵌套组
|
|
57
|
+
builder.startGroup();
|
|
58
|
+
processGroup(builder, item);
|
|
59
|
+
builder.endGroup();
|
|
60
|
+
} else {
|
|
61
|
+
// 单条规则
|
|
62
|
+
if (item.value === undefined || item.value === null || item.value === '') {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// 处理特殊操作符
|
|
67
|
+
if (item.operator === 'isEmpty') {
|
|
68
|
+
builder.addCondition(item.field, GridifyOp.Equal, '');
|
|
69
|
+
} else if (item.operator === 'isNotEmpty') {
|
|
70
|
+
builder.addCondition(item.field, GridifyOp.NotEqual, '');
|
|
71
|
+
} else if (item.operator === 'between' && Array.isArray(item.value)) {
|
|
72
|
+
// between 操作符需要拆成两个条件
|
|
73
|
+
if (item.value[0] !== null && item.value[0] !== undefined) {
|
|
74
|
+
builder.addCondition(item.field, GridifyOp.GreaterThanOrEqual, item.value[0], undefined, true);
|
|
75
|
+
}
|
|
76
|
+
if (item.value[1] !== null && item.value[1] !== undefined) {
|
|
77
|
+
if (item.value[0] !== null && item.value[0] !== undefined) {
|
|
78
|
+
builder.and();
|
|
79
|
+
}
|
|
80
|
+
builder.addCondition(item.field, GridifyOp.LessThanOrEqual, item.value[1], undefined, true);
|
|
81
|
+
}
|
|
82
|
+
} else {
|
|
83
|
+
var gridifyOp = mapOperator(item.operator);
|
|
84
|
+
// escapeValue = true 确保特殊字符(如 / , | ( ) \)被正确转义
|
|
85
|
+
builder.addCondition(item.field, gridifyOp, item.value, undefined, true);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
var processGroup = function processGroup(builder, group) {
|
|
90
|
+
var validChildren = group.children.filter(function (child) {
|
|
91
|
+
if (child.logic) return true;
|
|
92
|
+
return child.value !== undefined && child.value !== null && child.value !== '';
|
|
93
|
+
});
|
|
94
|
+
validChildren.forEach(function (child, index) {
|
|
95
|
+
if (index > 0) {
|
|
96
|
+
// 根据组逻辑添加连接符
|
|
97
|
+
if (group.logic === 'OR') {
|
|
98
|
+
builder.or(true); // true = optional, 避免无效表达式
|
|
99
|
+
} else {
|
|
100
|
+
builder.and(true);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
processItem(builder, child, index === 0);
|
|
104
|
+
});
|
|
105
|
+
};
|
|
106
|
+
try {
|
|
107
|
+
var builder = new GridifyQueryBuilder({
|
|
108
|
+
allowEmptyGroups: true
|
|
109
|
+
});
|
|
110
|
+
processGroup(builder, ruleGroup);
|
|
111
|
+
var query = builder.build();
|
|
112
|
+
return query.filter || "";
|
|
113
|
+
} catch (e) {
|
|
114
|
+
console.error('Failed to build Gridify filter:', e);
|
|
115
|
+
return "";
|
|
116
|
+
}
|
|
17
117
|
};
|
|
18
118
|
var getFilter = function getFilter(objectKey, value, colDef) {
|
|
19
119
|
if (typeof value === 'string') {
|