cloudpivot-sheet-filter 1.0.1 → 1.0.4
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/README.md +61 -46
- package/package.json +3 -4
- package/dist/index.cjs +0 -1
- package/dist/index.iife.js +0 -1
package/README.md
CHANGED
|
@@ -11,40 +11,39 @@
|
|
|
11
11
|
### 通过 CDN 使用
|
|
12
12
|
|
|
13
13
|
#### ES 模块方式
|
|
14
|
-
```javascript
|
|
15
|
-
import sheetFilter, { FilterOperators } from 'https://cdn.jsdelivr.net/npm/cloudpivot-sheet-filter@1/+esm';
|
|
16
|
-
```
|
|
17
14
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
15
|
+
```javascript
|
|
16
|
+
import("https://cdn.jsdelivr.net/npm/cloudpivot-sheet-filter/+esm").then(
|
|
17
|
+
({ default: sheetFilter, FilterOperators }) => {
|
|
18
|
+
// 此处写自己的代码...
|
|
19
|
+
},
|
|
20
|
+
);
|
|
24
21
|
```
|
|
25
22
|
|
|
26
23
|
## 基本使用
|
|
27
24
|
|
|
28
25
|
```javascript
|
|
29
26
|
// 导入模块
|
|
30
|
-
import
|
|
31
|
-
|
|
32
|
-
// 子表筛选定义
|
|
33
|
-
var sheetF = null;
|
|
34
|
-
|
|
35
|
-
// 子表筛选类实例化
|
|
36
|
-
sheetF = new sheetFilter();
|
|
37
|
-
|
|
38
|
-
// 添加筛选条件:检结果等于NG
|
|
39
|
-
// 第一个参数 'Radio1719304490857' 是子表内的控件的编码
|
|
40
|
-
sheetF.addFilter(
|
|
41
|
-
|
|
42
|
-
// 启用筛选
|
|
43
|
-
// 第一个参数 this.Sheet1719303475853 是子表的对象
|
|
44
|
-
sheetF.filter(this.Sheet1719303475853, true);
|
|
45
|
-
|
|
46
|
-
// 关闭筛选
|
|
47
|
-
// sheetF.filter(this.Sheet1719303475853, false);
|
|
27
|
+
import("https://cdn.jsdelivr.net/npm/cloudpivot-sheet-filter/+esm").then(
|
|
28
|
+
({ default: sheetFilter, FilterOperators }) => {
|
|
29
|
+
// 子表筛选定义
|
|
30
|
+
var sheetF = null;
|
|
31
|
+
|
|
32
|
+
// 子表筛选类实例化
|
|
33
|
+
sheetF = new sheetFilter();
|
|
34
|
+
|
|
35
|
+
// 添加筛选条件:检结果等于NG
|
|
36
|
+
// 第一个参数 'Radio1719304490857' 是子表内的控件的编码
|
|
37
|
+
sheetF.addFilter("Radio1719304490857", FilterOperators.EQ, "NG");
|
|
38
|
+
|
|
39
|
+
// 启用筛选
|
|
40
|
+
// 第一个参数 this.Sheet1719303475853 是子表的对象
|
|
41
|
+
sheetF.filter(this.Sheet1719303475853, true);
|
|
42
|
+
|
|
43
|
+
// 关闭筛选
|
|
44
|
+
// sheetF.filter(this.Sheet1719303475853, false);
|
|
45
|
+
},
|
|
46
|
+
);
|
|
48
47
|
```
|
|
49
48
|
|
|
50
49
|
## 高级用法
|
|
@@ -55,7 +54,7 @@ sheetF.filter(this.Sheet1719303475853, true);
|
|
|
55
54
|
|
|
56
55
|
```javascript
|
|
57
56
|
// 添加筛选条件
|
|
58
|
-
sheetF.addFilter(
|
|
57
|
+
sheetF.addFilter("Radio1719304490857", FilterOperators.EQ, "NG");
|
|
59
58
|
|
|
60
59
|
// 预筛选,获取筛选结果但不修改子表
|
|
61
60
|
const previewResult = sheetF.previewFilter(this.Sheet1719303475853);
|
|
@@ -64,7 +63,7 @@ const previewResult = sheetF.previewFilter(this.Sheet1719303475853);
|
|
|
64
63
|
if (previewResult !== null) {
|
|
65
64
|
// 有筛选结果,显示switch开关
|
|
66
65
|
showFilterSwitch(true);
|
|
67
|
-
|
|
66
|
+
|
|
68
67
|
// 用户点击switch开关时应用筛选
|
|
69
68
|
applyFilterButton.onclick = () => {
|
|
70
69
|
sheetF.applyFilter(this.Sheet1719303475853, previewResult);
|
|
@@ -72,7 +71,7 @@ if (previewResult !== null) {
|
|
|
72
71
|
} else {
|
|
73
72
|
// 无筛选结果,隐藏switch开关或禁用
|
|
74
73
|
showFilterSwitch(false);
|
|
75
|
-
alert(
|
|
74
|
+
alert("当前筛选条件无匹配结果,无法进行筛选操作");
|
|
76
75
|
}
|
|
77
76
|
```
|
|
78
77
|
|
|
@@ -82,9 +81,9 @@ if (previewResult !== null) {
|
|
|
82
81
|
// 链式调用添加多个筛选条件
|
|
83
82
|
// 每个 addFilter 的第一个参数都是子表内的控件的编码
|
|
84
83
|
sheetF
|
|
85
|
-
.addFilter(
|
|
86
|
-
.addFilter(
|
|
87
|
-
.addFilter(
|
|
84
|
+
.addFilter("Radio1719304490857", FilterOperators.EQ, "NG") // 控件编码:Radio1719304490857
|
|
85
|
+
.addFilter("Number1719304500123", FilterOperators.GT, 100) // 控件编码:Number1719304500123
|
|
86
|
+
.addFilter("Date1719304510456", FilterOperators.LTE, new Date()); // 控件编码:Date1719304510456
|
|
88
87
|
```
|
|
89
88
|
|
|
90
89
|
### 设置筛选逻辑
|
|
@@ -98,7 +97,7 @@ sheetF.setOrLogic();
|
|
|
98
97
|
|
|
99
98
|
// 获取当前筛选逻辑
|
|
100
99
|
const logic = sheetF.getLogic();
|
|
101
|
-
console.log(
|
|
100
|
+
console.log("当前筛选逻辑:", logic); // 'AND' 或 'OR'
|
|
102
101
|
```
|
|
103
102
|
|
|
104
103
|
### 清除筛选条件
|
|
@@ -113,18 +112,18 @@ sheetF.clearFilters();
|
|
|
113
112
|
```javascript
|
|
114
113
|
// 检查是否已筛选
|
|
115
114
|
const isFiltered = sheetF.isFiltered();
|
|
116
|
-
console.log(
|
|
115
|
+
console.log("是否已筛选:", isFiltered); // true 或 false
|
|
117
116
|
```
|
|
118
117
|
|
|
119
118
|
## 操作符说明
|
|
120
119
|
|
|
121
|
-
| 操作符
|
|
122
|
-
|
|
123
|
-
| FilterOperators.EQ
|
|
124
|
-
| FilterOperators.NEQ | 不等于
|
|
125
|
-
| FilterOperators.LT
|
|
120
|
+
| 操作符 | 描述 | 值 |
|
|
121
|
+
| ------------------- | -------- | ----- |
|
|
122
|
+
| FilterOperators.EQ | 等于 | 'eq' |
|
|
123
|
+
| FilterOperators.NEQ | 不等于 | 'neq' |
|
|
124
|
+
| FilterOperators.LT | 小于 | 'lt' |
|
|
126
125
|
| FilterOperators.LTE | 小于等于 | 'lte' |
|
|
127
|
-
| FilterOperators.GT
|
|
126
|
+
| FilterOperators.GT | 大于 | 'gt' |
|
|
128
127
|
| FilterOperators.GTE | 大于等于 | 'gte' |
|
|
129
128
|
|
|
130
129
|
## API 文档
|
|
@@ -132,6 +131,7 @@ console.log('是否已筛选:', isFiltered); // true 或 false
|
|
|
132
131
|
### sheetFilter 类
|
|
133
132
|
|
|
134
133
|
#### 构造函数
|
|
134
|
+
|
|
135
135
|
```javascript
|
|
136
136
|
const sheetF = new sheetFilter();
|
|
137
137
|
```
|
|
@@ -139,45 +139,60 @@ const sheetF = new sheetFilter();
|
|
|
139
139
|
#### 方法
|
|
140
140
|
|
|
141
141
|
##### setAndLogic()
|
|
142
|
+
|
|
142
143
|
设置筛选逻辑为 AND(默认)。
|
|
143
144
|
|
|
144
145
|
##### setOrLogic()
|
|
146
|
+
|
|
145
147
|
设置筛选逻辑为 OR。
|
|
146
148
|
|
|
147
149
|
##### getLogic()
|
|
150
|
+
|
|
148
151
|
返回当前筛选逻辑,'AND' 或 'OR'。
|
|
149
152
|
|
|
150
153
|
##### isFiltered()
|
|
154
|
+
|
|
151
155
|
返回筛选状态,true 表示已筛选,false 表示未筛选。
|
|
152
156
|
|
|
153
157
|
##### clearFilters()
|
|
158
|
+
|
|
154
159
|
清除所有筛选条件。
|
|
155
160
|
|
|
156
161
|
##### addFilter(columnKey, operator, value)
|
|
162
|
+
|
|
157
163
|
添加筛选条件。
|
|
164
|
+
|
|
158
165
|
- `columnKey`: 子表内的控件的编码(字符串)
|
|
159
166
|
- `operator`: 操作符(字符串或 FilterOperators 常量)
|
|
160
167
|
- `value`: 筛选值(任意类型)
|
|
161
168
|
- 返回值:当前实例,支持链式调用
|
|
162
169
|
|
|
163
170
|
##### filter(key, enable)
|
|
171
|
+
|
|
164
172
|
执行筛选操作。
|
|
173
|
+
|
|
165
174
|
- `key`: 子表的对象
|
|
166
175
|
- `enable`: true 启用筛选,false 关闭筛选
|
|
167
176
|
|
|
168
177
|
##### previewFilter(key)
|
|
178
|
+
|
|
169
179
|
预筛选子表,获取筛选结果但不修改子表对象。
|
|
180
|
+
|
|
170
181
|
- `key`: 子表的对象
|
|
171
182
|
- 返回值:筛选结果 `{ index: [], value: [] }` 或 `null`(无匹配结果)
|
|
172
183
|
|
|
173
184
|
##### applyFilter(key, filteredList)
|
|
185
|
+
|
|
174
186
|
应用筛选,根据预筛选结果修改子表对象。
|
|
187
|
+
|
|
175
188
|
- `key`: 子表的对象
|
|
176
189
|
- `filteredList`: 预筛选结果(可选,如果不提供则自动执行预筛选)
|
|
177
190
|
- 返回值:`true` 成功应用筛选,`false` 筛选失败
|
|
178
191
|
|
|
179
192
|
##### cancelFilter(key)
|
|
193
|
+
|
|
180
194
|
取消筛选,恢复原始子表数据。
|
|
195
|
+
|
|
181
196
|
- `key`: 子表的对象
|
|
182
197
|
- 返回值:`true` 成功取消筛选,`false` 取消失败
|
|
183
198
|
|
|
@@ -185,7 +200,7 @@ const sheetF = new sheetFilter();
|
|
|
185
200
|
|
|
186
201
|
```javascript
|
|
187
202
|
// 导入模块
|
|
188
|
-
import sheetFilter, { FilterOperators } from
|
|
203
|
+
import sheetFilter, { FilterOperators } from "cloudpivot-sheet-filter";
|
|
189
204
|
|
|
190
205
|
// 实例化
|
|
191
206
|
const sheetF = new sheetFilter();
|
|
@@ -196,21 +211,21 @@ sheetF.setOrLogic();
|
|
|
196
211
|
// 添加多个筛选条件
|
|
197
212
|
// 第一个参数都是子表内的控件的编码
|
|
198
213
|
sheetF
|
|
199
|
-
.addFilter(
|
|
200
|
-
.addFilter(
|
|
214
|
+
.addFilter("Radio1719304490857", FilterOperators.EQ, "NG") // 控件编码:Radio1719304490857
|
|
215
|
+
.addFilter("Number1719304500123", FilterOperators.GT, 100); // 控件编码:Number1719304500123
|
|
201
216
|
|
|
202
217
|
// 启用筛选
|
|
203
218
|
// 第一个参数 this.Sheet1719303475853 是子表的对象
|
|
204
219
|
sheetF.filter(this.Sheet1719303475853, true);
|
|
205
220
|
|
|
206
221
|
// 检查筛选状态
|
|
207
|
-
console.log(
|
|
222
|
+
console.log("是否已筛选:", sheetF.isFiltered());
|
|
208
223
|
|
|
209
224
|
// 稍后关闭筛选
|
|
210
225
|
setTimeout(() => {
|
|
211
226
|
// 第一个参数 this.Sheet1719303475853 是子表的对象
|
|
212
227
|
sheetF.filter(this.Sheet1719303475853, false);
|
|
213
|
-
console.log(
|
|
228
|
+
console.log("筛选已关闭");
|
|
214
229
|
}, 5000);
|
|
215
230
|
```
|
|
216
231
|
|
package/package.json
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cloudpivot-sheet-filter",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "子表筛选工具 - Cloudpivot子表筛选解决方案",
|
|
5
|
-
"main": "dist/index.
|
|
5
|
+
"main": "dist/index.esm.js",
|
|
6
6
|
"module": "dist/index.esm.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
8
8
|
"exports": {
|
|
9
9
|
".": {
|
|
10
10
|
"import": "./dist/index.esm.js",
|
|
11
|
-
"require": "./dist/index.cjs",
|
|
12
11
|
"default": "./dist/index.esm.js"
|
|
13
12
|
}
|
|
14
13
|
},
|
|
@@ -16,7 +15,7 @@
|
|
|
16
15
|
"dist"
|
|
17
16
|
],
|
|
18
17
|
"scripts": {
|
|
19
|
-
"build": "esbuild src/index.js --bundle --outfile=dist/index.
|
|
18
|
+
"build": "esbuild src/index.js --bundle --outfile=dist/index.esm.js --format=esm --minify",
|
|
20
19
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
21
20
|
},
|
|
22
21
|
"keywords": [
|
package/dist/index.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var n=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var v=Object.prototype.hasOwnProperty;var d=(o,e)=>{for(var t in e)n(o,t,{get:e[t],enumerable:!0})},p=(o,e,t,l)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of g(e))!v.call(o,s)&&s!==t&&n(o,s,{get:()=>e[s],enumerable:!(l=c(e,s))||l.enumerable});return o};var b=o=>p(n({},"__esModule",{value:!0}),o);var L={};d(L,{FilterOperators:()=>w,default:()=>F});module.exports=b(L);var f=class{#t;#e;#l;#i;#s;constructor(){this.#t=[],this.#e={index:[],value:[]},this.#l=[],this.setAndLogic(),this.#s=!1}setAndLogic(){this.#i="AND"}setOrLogic(){this.#i="OR"}getLogic(){return this.#i}isFiltered(){return this.#s}clearFilters(){this.#l=[]}addFilter(e,t,l){return this.#l.push({columnKey:e,operator:t,value:l}),this}#r(e){let t={index:[],value:[]};for(let l=0;l<e.value.length;l++){let s=e.rows[l].value,i=!0;for(let h=0;h<this.#l.length;h++){let{columnKey:r,operator:u,value:a}=this.#l[h];switch(u){case"eq":s[r]!=a&&(i=!1);break;case"neq":s[r]==a&&(i=!1);break;case"lt":s[r]<a||(i=!1);break;case"lte":s[r]<=a||(i=!1);break;case"gt":s[r]>a||(i=!1);break;case"gte":s[r]>=a||(i=!1);break;default:throw new Error(`Unsupported operator: ${u}`)}if(!i)break}i&&(t.index.push(l),t.value.push(s))}return t.value.length>0?t:null}#a(e){console.log("filterOr");let t={index:[],value:[]};for(let l=0;l<e.value.length;l++){let s=e.rows[l].value,i=!1;for(let h=0;h<this.#l.length;h++){let{columnKey:r,operator:u,value:a}=this.#l[h];switch(u){case"eq":s[r]==a&&(i=!0);break;case"neq":s[r]!=a&&(i=!0);break;case"lt":s[r]<a&&(i=!0);break;case"lte":s[r]<=a&&(i=!0);break;case"gt":s[r]>a&&(i=!0);break;case"gte":s[r]>=a&&(i=!0);break;default:throw new Error(`Unsupported operator: ${u}`)}if(i)break}i&&(t.index.push(l),t.value.push(s))}return t.value.length>0?t:null}previewFilter(e){return this.getLogic()=="AND"?this.#r(e):this.#a(e)}applyFilter(e,t=null){return this.isFiltered()||(t===null&&(t=this.previewFilter(e)),t===null)?!1:(console.log("applyFilter enable"),this.#t=this.sheetValueSafeCopy(e.value),console.log("this.#beforeList",this.#t),this.#e=t,console.log("this.#filteredList",this.#e),e.removeAllRow(),e.value=this.#e.value,this.#s=!0,console.log("key.value",e.value),!0)}cancelFilter(e){if(!this.isFiltered())return!1;if(this.#e.value.length>0){console.log("cancelFilter disable"),console.log("this.#beforeList",this.#t),console.log("before key.value",e.value);let t=this.sheetValueSafeCopy(e.value);for(let l=0;l<t.length;l++)l+1<=this.#e.value.length?this.#t[this.#e.index[l]]=t[l]:this.#t.push(t[l]);return e.removeAllRow(),e.value=this.#t,this.#s=!1,console.log("after key.value",e.value),!0}return!1}filter(e,t){debugger;if(t){if(this.isFiltered())return;console.log("filter enable"),this.#t=this.sheetValueSafeCopy(e.value),console.log("this.#beforeList",this.#t),this.#e=this.getLogic()=="AND"?this.#r(e):this.#a(e),console.log("this.#filteredList",this.#e),this.#e!=null&&(e.removeAllRow(),e.value=this.#e.value,this.#s=!0),console.log("key.value",e.value)}else{if(!this.isFiltered())return;if(this.#e.value.length>0){console.log("filter disable"),console.log("this.#beforeList",this.#t),console.log("before key.value",e.value);let l=this.sheetValueSafeCopy(e.value);for(let s=0;s<l.length;s++)s+1<=this.#e.value.length?this.#t[this.#e.index[s]]=l[s]:this.#t.push(l[s]);e.removeAllRow(),e.value=this.#t,this.#s=!1,console.log("after key.value",e.value)}}}sheetValueSafeCopy(e){let t=e;for(let l=0;l<t.length;l++)delete t[l].rowStatus,delete t[l].id;return t}},w={EQ:"eq",NEQ:"neq",LT:"lt",LTE:"lte",GT:"gt",GTE:"gte"},F=f;
|
package/dist/index.iife.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var sheetFilter=(()=>{var n=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var v=Object.prototype.hasOwnProperty;var d=(o,e)=>{for(var t in e)n(o,t,{get:e[t],enumerable:!0})},p=(o,e,t,l)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of g(e))!v.call(o,s)&&s!==t&&n(o,s,{get:()=>e[s],enumerable:!(l=c(e,s))||l.enumerable});return o};var b=o=>p(n({},"__esModule",{value:!0}),o);var L={};d(L,{FilterOperators:()=>w,default:()=>F});var f=class{#t;#e;#l;#i;#s;constructor(){this.#t=[],this.#e={index:[],value:[]},this.#l=[],this.setAndLogic(),this.#s=!1}setAndLogic(){this.#i="AND"}setOrLogic(){this.#i="OR"}getLogic(){return this.#i}isFiltered(){return this.#s}clearFilters(){this.#l=[]}addFilter(e,t,l){return this.#l.push({columnKey:e,operator:t,value:l}),this}#r(e){let t={index:[],value:[]};for(let l=0;l<e.value.length;l++){let s=e.rows[l].value,i=!0;for(let h=0;h<this.#l.length;h++){let{columnKey:r,operator:u,value:a}=this.#l[h];switch(u){case"eq":s[r]!=a&&(i=!1);break;case"neq":s[r]==a&&(i=!1);break;case"lt":s[r]<a||(i=!1);break;case"lte":s[r]<=a||(i=!1);break;case"gt":s[r]>a||(i=!1);break;case"gte":s[r]>=a||(i=!1);break;default:throw new Error(`Unsupported operator: ${u}`)}if(!i)break}i&&(t.index.push(l),t.value.push(s))}return t.value.length>0?t:null}#a(e){console.log("filterOr");let t={index:[],value:[]};for(let l=0;l<e.value.length;l++){let s=e.rows[l].value,i=!1;for(let h=0;h<this.#l.length;h++){let{columnKey:r,operator:u,value:a}=this.#l[h];switch(u){case"eq":s[r]==a&&(i=!0);break;case"neq":s[r]!=a&&(i=!0);break;case"lt":s[r]<a&&(i=!0);break;case"lte":s[r]<=a&&(i=!0);break;case"gt":s[r]>a&&(i=!0);break;case"gte":s[r]>=a&&(i=!0);break;default:throw new Error(`Unsupported operator: ${u}`)}if(i)break}i&&(t.index.push(l),t.value.push(s))}return t.value.length>0?t:null}previewFilter(e){return this.getLogic()=="AND"?this.#r(e):this.#a(e)}applyFilter(e,t=null){return this.isFiltered()||(t===null&&(t=this.previewFilter(e)),t===null)?!1:(console.log("applyFilter enable"),this.#t=this.sheetValueSafeCopy(e.value),console.log("this.#beforeList",this.#t),this.#e=t,console.log("this.#filteredList",this.#e),e.removeAllRow(),e.value=this.#e.value,this.#s=!0,console.log("key.value",e.value),!0)}cancelFilter(e){if(!this.isFiltered())return!1;if(this.#e.value.length>0){console.log("cancelFilter disable"),console.log("this.#beforeList",this.#t),console.log("before key.value",e.value);let t=this.sheetValueSafeCopy(e.value);for(let l=0;l<t.length;l++)l+1<=this.#e.value.length?this.#t[this.#e.index[l]]=t[l]:this.#t.push(t[l]);return e.removeAllRow(),e.value=this.#t,this.#s=!1,console.log("after key.value",e.value),!0}return!1}filter(e,t){debugger;if(t){if(this.isFiltered())return;console.log("filter enable"),this.#t=this.sheetValueSafeCopy(e.value),console.log("this.#beforeList",this.#t),this.#e=this.getLogic()=="AND"?this.#r(e):this.#a(e),console.log("this.#filteredList",this.#e),this.#e!=null&&(e.removeAllRow(),e.value=this.#e.value,this.#s=!0),console.log("key.value",e.value)}else{if(!this.isFiltered())return;if(this.#e.value.length>0){console.log("filter disable"),console.log("this.#beforeList",this.#t),console.log("before key.value",e.value);let l=this.sheetValueSafeCopy(e.value);for(let s=0;s<l.length;s++)s+1<=this.#e.value.length?this.#t[this.#e.index[s]]=l[s]:this.#t.push(l[s]);e.removeAllRow(),e.value=this.#t,this.#s=!1,console.log("after key.value",e.value)}}}sheetValueSafeCopy(e){let t=e;for(let l=0;l<t.length;l++)delete t[l].rowStatus,delete t[l].id;return t}},w={EQ:"eq",NEQ:"neq",LT:"lt",LTE:"lte",GT:"gt",GTE:"gte"},F=f;return b(L);})();
|