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 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
- #### IIFE 方式
19
- ```html
20
- <script src="https://cdn.jsdelivr.net/npm/cloudpivot-sheet-filter@1/dist/index.iife.js"></script>
21
- <script>
22
- // 使用全局变量 sheetFilter 和 sheetFilter.FilterOperators
23
- </script>
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 sheetFilter, { FilterOperators } from 'cloudpivot-sheet-filter';
31
-
32
- // 子表筛选定义
33
- var sheetF = null;
34
-
35
- // 子表筛选类实例化
36
- sheetF = new sheetFilter();
37
-
38
- // 添加筛选条件:检结果等于NG
39
- // 第一个参数 'Radio1719304490857' 是子表内的控件的编码
40
- sheetF.addFilter('Radio1719304490857', FilterOperators.EQ, 'NG');
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('Radio1719304490857', FilterOperators.EQ, 'NG');
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('Radio1719304490857', FilterOperators.EQ, 'NG') // 控件编码:Radio1719304490857
86
- .addFilter('Number1719304500123', FilterOperators.GT, 100) // 控件编码:Number1719304500123
87
- .addFilter('Date1719304510456', FilterOperators.LTE, new Date()); // 控件编码:Date1719304510456
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('当前筛选逻辑:', logic); // 'AND' 或 'OR'
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('是否已筛选:', isFiltered); // true 或 false
115
+ console.log("是否已筛选:", isFiltered); // true 或 false
117
116
  ```
118
117
 
119
118
  ## 操作符说明
120
119
 
121
- | 操作符 | 描述 | 值 |
122
- |-------|------|----|
123
- | FilterOperators.EQ | 等于 | 'eq' |
124
- | FilterOperators.NEQ | 不等于 | 'neq' |
125
- | FilterOperators.LT | 小于 | 'lt' |
120
+ | 操作符 | 描述 | 值 |
121
+ | ------------------- | -------- | ----- |
122
+ | FilterOperators.EQ | 等于 | 'eq' |
123
+ | FilterOperators.NEQ | 不等于 | 'neq' |
124
+ | FilterOperators.LT | 小于 | 'lt' |
126
125
  | FilterOperators.LTE | 小于等于 | 'lte' |
127
- | FilterOperators.GT | 大于 | '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 'cloudpivot-sheet-filter';
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('Radio1719304490857', FilterOperators.EQ, 'NG') // 控件编码:Radio1719304490857
200
- .addFilter('Number1719304500123', FilterOperators.GT, 100); // 控件编码:Number1719304500123
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('是否已筛选:', sheetF.isFiltered());
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.1",
3
+ "version": "1.0.4",
4
4
  "description": "子表筛选工具 - Cloudpivot子表筛选解决方案",
5
- "main": "dist/index.cjs",
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.cjs --format=cjs --minify && esbuild src/index.js --bundle --outfile=dist/index.esm.js --format=esm --minify && esbuild src/index.js --bundle --outfile=dist/index.iife.js --format=iife --global-name=sheetFilter --minify",
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;
@@ -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);})();