ninegrid2 6.131.0 → 6.133.0

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.
@@ -0,0 +1,532 @@
1
+ import ninegrid from "../index.js";
2
+
3
+ export class ngFiltering
4
+ {
5
+ #owner;
6
+ #isFiltering;
7
+
8
+ constructor (owner) {
9
+ this.#owner = owner;
10
+ this.#isFiltering = false;
11
+
12
+ $(this.#owner.shadowRoot).append($('<ng-filter-panel></ng-filter-panel>').hide());
13
+ }
14
+
15
+ initialize = () => {
16
+ /**
17
+ * 1. grid attr == filter : on();
18
+ */
19
+ this.#isFiltering = false;
20
+ this.#owner.data.clearFilter();
21
+ };
22
+
23
+ isFiltering = () => {
24
+ return this.#isFiltering;
25
+ };
26
+
27
+ on = (v) => {
28
+
29
+ this.#on();
30
+
31
+ if (v) this.#set(v);
32
+ };
33
+
34
+ #on = () => {
35
+
36
+ this.#isFiltering = true;
37
+
38
+ var lastRowIndex = 0;
39
+ $(".ng-table thead", this.#owner.body).each((index,el) => {
40
+ lastRowIndex = Math.max(el.rows.length - 1, lastRowIndex);
41
+ });
42
+
43
+ $(".ng-table thead th,.ng-table thead td", this.#owner.body).each((index,el) => {
44
+
45
+ if (el.closest("tr").sectionRowIndex + el.rowSpan - 1 != lastRowIndex) return true;
46
+
47
+ var colnms = [];
48
+ $(this.#owner.template).find(`[data-col=${el.dataset.col}]`).each((index,el) => {
49
+ if (el.dataset.bind) colnms.push(el.dataset.bind);
50
+ });
51
+ if (colnms.length == 0) return true;
52
+
53
+ //console.log(colnms);
54
+
55
+ $(el).append($(`<ng-filter-button></ng-filter-button`));
56
+ el.querySelector("ng-filter-button").colnms = colnms;
57
+
58
+ //console.log(el.querySelector("ng-filter-button").colnms);
59
+ });
60
+ };
61
+ off = () => {
62
+ this.#isFiltering = false;
63
+ $(".ng-table ng-filter-button", this.#owner.body).remove();
64
+ };
65
+
66
+ #set = (option) => {
67
+
68
+ let jsonOption = {};
69
+ if (Array.isArray(option)) {
70
+
71
+ for (let key in option[0]) {
72
+ jsonOption[key] = Array.from(new Set(oFilter.map(item => item[key])));//oFilter.map(item => item[key]);
73
+ }
74
+ }
75
+ else {
76
+ jsonOption = option;
77
+ }
78
+
79
+ this.#owner.data.clearFilter();
80
+
81
+ for (let key in jsonOption) {
82
+ const arr = jsonOption[key];
83
+ const idx = this.#owner.fields.indexOf(key);
84
+
85
+ for (let o of this.#owner.data.getValidData()) {
86
+ if (o.v[idx] != null) {
87
+ if (typeof o.v[idx] === "number") {
88
+ for (var i = 0; i < arr.length; i++) {
89
+ arr[i] = Number(arr[i]);
90
+ }
91
+ }
92
+ break;
93
+ }
94
+ }
95
+
96
+ this.#owner.data.getValidData().filter(m => { return arr.nineBinarySearch(m.v[idx] || '') < 0; }).map(m => { m.__ng.filtered = true; });
97
+ }
98
+
99
+
100
+ this.#owner.data.refreshFilter();
101
+
102
+ var colnms = [];
103
+ for (let key in jsonOption) {
104
+ colnms.push(key);
105
+ }
106
+ //var colnms = filterData.map(item => item.colnm);
107
+
108
+ ninegrid.querySelectorAll("ng-filter-button").forEach(v => {
109
+ v.filterData = null;
110
+ });
111
+
112
+ for (let key in jsonOption) {
113
+ const arr = jsonOption[key];
114
+
115
+ ninegrid.querySelectorAll("ng-filter-button").forEach(v => {
116
+ //console.log(v.colnms);
117
+
118
+ v.colnms.forEach(colnm => {
119
+ if (colnms.includes(colnm)) {
120
+ v.filterData = arr;
121
+ }
122
+ });
123
+ });
124
+ }
125
+
126
+
127
+ this.#owner.scrollTo_V1(0);
128
+
129
+ this.#owner.paging.reset();
130
+ };
131
+ }
132
+
133
+ class ngFilterButton extends HTMLElement
134
+ {
135
+ #owner;
136
+ #filterData;
137
+ #colnms;
138
+
139
+ constructor () {
140
+ super();
141
+ }
142
+
143
+ connectedCallback() {
144
+ this.#owner = this.getRootNode().host;//this.closest("nine-grid");
145
+
146
+ $(this).off("click", this.#onClick);
147
+ $(this).on("click", this.#onClick);
148
+ };
149
+
150
+ get colnms() {
151
+ return this.#colnms || [];
152
+ };
153
+ set colnms(v) {
154
+ this.#colnms = v;
155
+ };
156
+
157
+ get filterData() {
158
+ return this.#filterData;
159
+ };
160
+ set filterData(v) {
161
+ this.#filterData = v;
162
+ v && v.length > 0 ? ninegrid.j.querySelectorAll(this).addClass('filtered') : ninegrid.j.querySelectorAll(this).removeClass('filtered');
163
+ };
164
+
165
+ #onClick = (e) => {
166
+
167
+ e.preventDefault();
168
+ e.stopPropagation();
169
+
170
+ var panel = this.#owner.shadowRoot.querySelector('ng-filter-panel');
171
+
172
+ if (this.#owner.shadowRoot.querySelectorAll('ng-filter-panel').length > 1) throw "too many ng-filter-panel";
173
+ if (!panel) throw 'ng-filter-panel is null';
174
+
175
+ var cell = e.target.closest("th,td");
176
+
177
+ var l = $(e.target).offset().left - $(this.#owner).offset().left;// - $(panel).width() + $(e.target).width() + 1;
178
+ if (l < 0) l = 0;
179
+ if (l + $(panel).width() > $(this.#owner).width()) l = $(this.#owner).width() - $(panel).width() - 5;
180
+
181
+
182
+
183
+ var t = $(cell).offset().top + $(cell).height()- $(this.#owner).offset().top;//$(e.target).offset().top + $(e.target).height() + 2;
184
+
185
+ //$(panel).offset({left: l, top: t});
186
+ $(panel).css({left: l, top: t});
187
+
188
+ panel.refresh(this.#owner, this);
189
+ };
190
+ }
191
+
192
+ class ngFilterPanel extends HTMLElement
193
+ {
194
+ #target;
195
+ #timer;
196
+
197
+ constructor () {
198
+ super();
199
+ this.attachShadow({ mode: 'open' });
200
+ }
201
+
202
+ connectedCallback() {
203
+ const cssPath = this.getRootNode().host.closest("nine-grid").getAttribute("css-path") || "";
204
+
205
+ this.shadowRoot.innerHTML = `
206
+ <style>
207
+ @import "https://cdn.jsdelivr.net/npm/ninegrid@${ninegrid.version}/dist/css/ngFilterPanel.css";
208
+ ${ninegrid.getCustomPath(this,"ngFilterPanel.css")}
209
+ </style>
210
+
211
+ <div class="head">
212
+ <input type="text">
213
+ </div>
214
+ <nine-grid class="simple filter" css-path="${cssPath}" select-type="row" auto-fit-col="true" col-indicator-type="collapse">
215
+ <table style="display: none;">
216
+ <colgroup>
217
+ <col width="180" />
218
+ <col width="30" />
219
+ </colgroup>
220
+ <tbody>
221
+ <tr style="height: 24px;">
222
+ <td data-bind="LVL" data-expr="data.DATA2">
223
+ <ng-tree-item />
224
+ </td>
225
+ <td data-bind="CHK">
226
+ <ng-checkbox update-row-state="false" visible="data.LVL!=1" selected-border-color="white" />
227
+ </td>
228
+ </tr>
229
+ </tbody>
230
+ </table>
231
+ </nine-grid>
232
+
233
+ <div>
234
+ <label><input type="checkbox" checked>Select All</label>
235
+ <button id="btnOk">OK</button>
236
+ <button id="btnCancel">Cancel</button>
237
+ </div>
238
+ `;
239
+
240
+ $(this.shadowRoot).find("input[type=text]") .on("input", this.#onInput);
241
+ $(this.shadowRoot).find("input[type=checkbox]") .on("change", this.#onSelectAll);
242
+ $(this.shadowRoot).find("#btnOk") .on("click", this.#onOk);
243
+ $(this.shadowRoot).find("#btnCancel") .on("click", this.#onCancel);
244
+
245
+ //$(this).on("mousedown", e => { e.preventDefault(); e.stopPropagation(); });
246
+ //$(this).on("mousedown", e => { e.stopPropagation(); });
247
+ };
248
+
249
+ #onOk = (e) => {
250
+
251
+ var grd = this.shadowRoot.querySelector("nine-grid");
252
+
253
+ //ninegrid.j.querySelectorAll(grd).addClass("loading");
254
+ ninegrid.j.querySelectorAll(this.#target.owner).addClass("loading");
255
+
256
+
257
+ setTimeout(() => {
258
+
259
+ const LVL_IDX = grd.fields.indexOf("LVL");
260
+ const CHK_IDX = grd.fields.indexOf("CHK");
261
+ const COLNM_IDX = grd.fields.indexOf("COLNM");
262
+ const DATA_IDX = grd.fields.indexOf("DATA");
263
+
264
+ const checked = grd.data.getValidDataNF().filter(m => { return m.v[LVL_IDX] == 2 && m.v[CHK_IDX] == "Y"; });
265
+ const unchecked = grd.data.getValidDataNF().filter(m => { return m.v[LVL_IDX] == 2 && m.v[CHK_IDX] != "Y"; });
266
+
267
+ if (unchecked.length == 0) {
268
+ //this.#target.button.filterData = null;
269
+ }
270
+
271
+ var filterData = [];
272
+ if (checked.length > 0) {
273
+
274
+ [...new Set(checked.map(m => { return m.v[COLNM_IDX] }))].forEach(v => {
275
+ filterData.push({
276
+ colnm : v,
277
+ data : [...new Set(grd.data.getValidData().filter(m => { return m.v[CHK_IDX] == "Y" && m.v[COLNM_IDX] == v; }).map(m => { return m.v[DATA_IDX] || ''; }))].sort((a,b) => { return a > b ? 1 : -1; }),
278
+ });
279
+ });
280
+ }
281
+
282
+ console.log(filterData);
283
+
284
+ //console.log(this.#target);
285
+
286
+ //console.log(this.#target, this.#target.button);
287
+
288
+ //this.#target.button.filterData = filterData;//grd.data.getValidData().filter(item => { return item.CHK == "Y"; });//.map(item => { return item.DATA; });
289
+
290
+
291
+ /**
292
+ this.#target.owner.data.clearFilter();
293
+
294
+ $("ng-filter-button", this.#target.owner.body).each((index,el) => {
295
+ if (!el.filterData) return true;
296
+ el.filterData.forEach(o => {
297
+ const idx = this.#target.owner.fields.indexOf(o.colnm);
298
+ this.#target.owner.data.getValidData().filter(m => { return o.data.nineBinarySearch(m.v[idx] || '') < 0; }).map(m => { m.__ng.filtered = true; });
299
+ //this.#target.owner.data.resetIndex();
300
+ });
301
+ });
302
+
303
+ this.#target.owner.data.refreshFilter();
304
+ */
305
+
306
+ console.log(this.#target, this.#target.button)
307
+
308
+ this.#target.button.filterData = [...new Set(checked.map(m => { return m.v[DATA_IDX] }))];
309
+
310
+ console.log(this.#target.button.filterData)
311
+
312
+ var oParam = {};
313
+
314
+ $("ng-filter-button", this.#target.owner.body).each((index,el) => {
315
+
316
+ //console.log(el, el.filterData);
317
+
318
+ if (!el.filterData) return true;
319
+
320
+ //console.log(el, el.filterData);
321
+
322
+ el.colnms.forEach(colnm => {
323
+ oParam[colnm] = el.filterData;
324
+ });
325
+
326
+ /**
327
+ el.filterData.forEach(o => {
328
+
329
+ oParam[o.colnm] = o.data;
330
+
331
+ //const idx = this.#target.owner.fields.indexOf(o.colnm);
332
+ //this.#target.owner.data.getValidData().filter(m => { return o.data.nineBinarySearch(m.v[idx] || '') < 0; }).map(m => { m.__ng.filtered = true; });
333
+ }); */
334
+ });
335
+
336
+ console.log(oParam);
337
+
338
+ //this.#target.owner.data.setFilter(oParam);
339
+ this.#target.owner.filtering.on(oParam);
340
+
341
+
342
+ //this.#target.owner.data.getValidDataNF().filter(rowData => { return this.#target.button.filterData.findIndex(item => (item.DATA || '') == (rowData[item.COLNM] || '') ) < 0; }).map(item => { item.__ng.filtered = true; });
343
+ //this.#target.owner.scrollTo_V1(0);
344
+
345
+ //this.#target.owner.paging.reset();
346
+
347
+ ninegrid.j.querySelectorAll(this.#target.owner).removeClass("loading");
348
+
349
+ });
350
+
351
+ $(this).hide();
352
+ };
353
+
354
+
355
+
356
+ #onCancel = (e) => {
357
+ $(this).hide();
358
+ };
359
+
360
+ #onSelectAll = (e) => {
361
+ var grd = this.shadowRoot.querySelector("nine-grid");
362
+ var idx = (grd.fields.indexOf("CHK"));
363
+
364
+ grd.data.getValidData().map(m => { m.v[idx] = $(e.target).prop("checked") ? "Y" : "N"; });
365
+
366
+ grd.refreshData();
367
+ };
368
+
369
+
370
+ #onInput = (e) => {
371
+ var grd = this.shadowRoot.querySelector("nine-grid");
372
+
373
+
374
+ ninegrid.j.querySelectorAll(grd).addClass("loading");
375
+
376
+
377
+ var data = grd.dataManager.rawRecords;
378
+
379
+ data.map(m => { m.__ng.filtered = false; });
380
+
381
+
382
+ var v = $(e.target).val().toLowerCase();
383
+
384
+
385
+ const LVL_IDX = grd.fields.indexOf("LVL");
386
+ const DATA_IDX = grd.fields.indexOf("DATA");
387
+
388
+ data.filter(m => { return m.v[LVL_IDX] == 2 && String(m.v[DATA_IDX] || '').toLowerCase().indexOf(v) < 0; }).map(m => { m.__ng.filtered = true; });
389
+
390
+ grd.data.resetRecords();
391
+
392
+ if (this.#timer) {
393
+ clearTimeout(this.#timer);
394
+ this.#timer = null;
395
+ }
396
+ this.#timer = setTimeout(() => {
397
+ grd.dataManager.viewRecords.reset();
398
+ grd.dataManager.viewRecords.touch();
399
+ //ninegrid.j.querySelectorAll(grd).removeClass("loading");
400
+ }, 200)
401
+ };
402
+
403
+ refresh = (owner, filterButton) => {
404
+
405
+ var col = filterButton.closest('th,td').dataset.col;
406
+
407
+ //if (this.#target && this.#target.uuid == owner.uuid && this.#target.col == col && $(this).is(':visible')) {
408
+ if (this.#target && this.#target.col == col && $(this).is(':visible')) {
409
+ $(this).hide();
410
+ return;
411
+ }
412
+
413
+ this.#target = {
414
+ owner : owner,
415
+ button : filterButton,
416
+ uuid : owner.uuid,
417
+ col : col,
418
+ }
419
+
420
+ $(this).show();
421
+
422
+ ninegrid.j.querySelectorAll(this).addClass("loading");
423
+
424
+ $(this.shadowRoot).find("input[type=text]").val("");
425
+
426
+ setTimeout(() => {
427
+
428
+ var ds = [];
429
+ var colnms = [];
430
+ $(owner.template).find(`[data-col=${col}]`).each((index,el) => {
431
+ if (el.dataset.bind) colnms.push(el.dataset.bind);
432
+ });
433
+
434
+ var data = owner.data.getValidDataNF();
435
+ $("ng-filter-button", owner.body).each((index,el) => {
436
+
437
+ if (el.closest('th,td').dataset.col == col || !el.filterData) return true;
438
+ /**
439
+ el.filterData.forEach(o => {
440
+ var idx = owner.fields.indexOf(o.colnm);
441
+
442
+ if (idx >= 0) {
443
+ data = data.filter(m => { return o.data.nineBinarySearch(m.v[idx] || '') >= 0; });
444
+ }
445
+ });
446
+ */
447
+
448
+ console.log(el.filterData, el.colnms, el.dataset.bind);
449
+
450
+ el.colnms.forEach(colnm => {
451
+ var idx = owner.fields.indexOf(colnm);
452
+
453
+ console.log(idx);
454
+
455
+ if (idx >= 0) {
456
+ data = data.filter(m => { return el.filterData.nineBinarySearch(m.v[idx] || '') >= 0; });
457
+ }
458
+ });
459
+
460
+ //data = data.filter(rowData => { return el.filterData.findIndex(item => (item.DATA || '') == (rowData[item.COLNM] || '') ) >= 0; });
461
+ });
462
+
463
+
464
+ colnms = [...new Set(colnms)];
465
+ colnms.forEach((colnm,i) => {
466
+
467
+ ds.push({
468
+ LVL: 1,
469
+ CHK: 'N',
470
+ DATA2: '<span class="group">' + $(filterButton).closest('th,td').text() + (colnms.length > 1 ? ` #${i+1} (${colnm})` : '') + '</span>',
471
+ });
472
+
473
+ var filterData = [];
474
+ if (filterButton.filterData) {
475
+ var idx = filterButton.filterData.findIndex(item => item.colnm == colnm);
476
+ if (idx >= 0) {
477
+ filterData = filterButton.filterData[idx].data;
478
+ }
479
+ }
480
+
481
+ /**
482
+ var cell = $(`[data-col=${col}][data-bind=${colnm}]`, owner.template);
483
+ var expr = cell.attr("data-expr");
484
+ var exprFunc = (expr) ? owner.exprFunction(expr) : null;
485
+ */
486
+
487
+ const cell = ninegrid.j.querySelectorAll(`[data-col="${col}"][data-bind="${colnm}"]`, owner.tmpl).elem();
488
+ const expr = cell.getAttribute("data-expr");
489
+ const exprFunc = (expr) ? owner.exprFunction(expr) : null;
490
+
491
+ var data2 = [];
492
+ for (var rowData of data) {
493
+ var idx = owner.fields.indexOf(colnm);
494
+
495
+ if (expr) {
496
+ var o = owner.data.conv(rowData);
497
+ data2.push({v:o[colnm],v2:exprFunc(o, rowData.__ng.rowidx, owner.data)});
498
+ }
499
+ else {
500
+ data2.push({v:rowData.v[idx],v2:rowData.v[idx]});
501
+ }
502
+ }
503
+
504
+ [...new Set(data2.sort( (a,b) => { return (a.v2||'') > (b.v2||'') ? 1 : ((a.v2||'') < (b.v2||'') ? -1 : 0); } ).map((m) => JSON.stringify(m)))].map((m) => JSON.parse(m)).forEach(o => {
505
+ ds.push({
506
+ LVL : 2,
507
+ DATA : o.v,
508
+ DATA2 : o.v2 || ` <span class="empty">(empty)</span> ${o.v}`,
509
+ COLNM : colnm,
510
+ CHK : filterData.length == 0 || filterData.nineBinarySearch(o.v || '') >= 0 ? "Y" : "N",
511
+ });
512
+ });
513
+ });
514
+
515
+ var grd = this.shadowRoot.querySelector("nine-grid");
516
+ //grd.dataSource = ds;
517
+ grd.fields.add(["DATA","DATA2","COLNM"]);
518
+
519
+ grd.data.set(ds);
520
+
521
+ $(this.shadowRoot).find("input[type=checkbox]").prop("checked", grd.data.getValidData().filter(item => { return item.LVL == 2 && item.CHK != "Y"; }).length == 0 ? true : false);
522
+
523
+ this.shadowRoot.querySelector("input").focus();
524
+
525
+ ninegrid.j.querySelectorAll(this).removeClass("loading");
526
+ });
527
+ };
528
+ }
529
+
530
+
531
+ customElements.define("ng-filter-button", ngFilterButton);
532
+ customElements.define("ng-filter-panel", ngFilterPanel);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ninegrid2",
3
3
  "type": "module",
4
- "version": "6.131.0",
4
+ "version": "6.133.0",
5
5
  "main": "dist/index.js",
6
6
  "exports": {
7
7
  "import": "./dist/index.js",
@@ -1,5 +1,12 @@
1
1
  import ninegrid from "../index.js";
2
2
 
3
+ /**
4
+ * button.filterDatas = [{
5
+ * colnm: "userId",
6
+ * data: [],
7
+ * }]
8
+ * button.
9
+ */
3
10
  export class ngFiltering
4
11
  {
5
12
  #owner;
@@ -28,11 +35,116 @@ export class ngFiltering
28
35
 
29
36
  this.#on();
30
37
 
31
- if (v) this.#set(v);
38
+ //if (v) this.#init(v);
32
39
  };
33
40
 
41
+ set = (oFilter) => {
42
+
43
+ this.on();
44
+
45
+ let jsonFilter = {};
46
+ if (Array.isArray(oFilter)) {
47
+ for (let key in oFilter[0]) {
48
+ jsonFilter[key] = Array.from(new Set(oFilter.map(item => item[key])));//oFilter.map(item => item[key]);
49
+ }
50
+ }
51
+ else {
52
+ jsonFilter = oFilter;
53
+ }
54
+
55
+ //jsonFilter.doc_id = [2, 18, 20, 28, 36, 45, 46, 48, 56, 64, 73, 81, 83, 90];
56
+
57
+ //let filterData = [];
58
+
59
+ console.log("==================", jsonFilter);
60
+
61
+ this.clearFilter();
62
+
63
+ for (let key in jsonFilter) {
64
+ const arr = jsonFilter[key];
65
+ const idx = this.#parent.owner.fields.indexOf(key);
66
+
67
+ let isNum = false;
68
+ for (let o of this.getValidData()) {
69
+ if (o.v[idx] == null) continue;
70
+
71
+ //console.log(o.v[idx], typeof o.v[idx])
72
+
73
+ isNum = (typeof o.v[idx] === "number") ? true : false;
74
+
75
+ break;
76
+ }
77
+
78
+ if (isNum) {
79
+ for (var i = 0; i < arr.length; i++) {
80
+ arr[i] = Number(arr[i]);
81
+ }
82
+ }
83
+
84
+ /** filtering button 용 데이타 */
85
+ /**
86
+ filterData.push({
87
+ "colnm" : key,
88
+ "data" : arr,
89
+ }); */
90
+ //console.log(arr);
91
+
92
+
93
+ //console.log(arr, idx, arr.nineBinarySearch(m.v[idx]));
94
+
95
+ this.getValidData().filter(m => { return arr.nineBinarySearch(m.v[idx] || '') < 0; }).map(m => { m.__ng.filtered = true; });
96
+
97
+
98
+ //break;
99
+
100
+
101
+ }
102
+
103
+
104
+ this.refreshFilter();
105
+
106
+ var colnms = [];
107
+ for (let key in jsonFilter) {
108
+ colnms.push(key);
109
+ }
110
+ //var colnms = filterData.map(item => item.colnm);
111
+
112
+ ninegrid.querySelectorAll("ng-filter-button").forEach(v => {
113
+ v.filterData = null;
114
+ });
115
+
116
+ for (let key in jsonFilter) {
117
+ const arr = jsonFilter[key];
118
+ const idx = this.#parent.owner.fields.indexOf(key);
119
+
120
+ //console.log(filterData);
121
+ ninegrid.querySelectorAll("ng-filter-button").forEach(v => {
122
+ //v.filterData = null;
123
+ //console.log(v);
124
+ //var b = v.colnms;
125
+ v.colnms.forEach(colnm => {
126
+
127
+ console.log(colnms, colnm);
128
+ if (colnms.includes(colnm)) {
129
+ console.log("==================");
130
+
131
+ v.filterData = arr;
132
+ }
133
+ });
134
+ });
135
+ }
136
+
137
+
138
+ this.#parent.owner.scrollTo_V1(0);
139
+
140
+ this.#parent.owner.paging.reset();
141
+ };
142
+
143
+
34
144
  #on = () => {
35
145
 
146
+ console.log("onnnnnnn");
147
+
36
148
  this.#isFiltering = true;
37
149
 
38
150
  var lastRowIndex = 0;
@@ -63,11 +175,10 @@ export class ngFiltering
63
175
  $(".ng-table ng-filter-button", this.#owner.body).remove();
64
176
  };
65
177
 
66
- #set = (option) => {
178
+ #init = (option) => {
67
179
 
68
180
  let jsonOption = {};
69
181
  if (Array.isArray(option)) {
70
-
71
182
  for (let key in option[0]) {
72
183
  jsonOption[key] = Array.from(new Set(oFilter.map(item => item[key])));//oFilter.map(item => item[key]);
73
184
  }
@@ -447,15 +558,15 @@ class ngFilterPanel extends HTMLElement
447
558
 
448
559
  console.log(el.filterData, el.colnms, el.dataset.bind);
449
560
 
450
- //colnms.forEach(colnm => {
451
- var idx = owner.fields.indexOf(el.colnms[0]);
561
+ el.colnms.forEach(colnm => {
562
+ var idx = owner.fields.indexOf(colnm);
452
563
 
453
564
  console.log(idx);
454
565
 
455
566
  if (idx >= 0) {
456
567
  data = data.filter(m => { return el.filterData.nineBinarySearch(m.v[idx] || '') >= 0; });
457
568
  }
458
- //});
569
+ });
459
570
 
460
571
  //data = data.filter(rowData => { return el.filterData.findIndex(item => (item.DATA || '') == (rowData[item.COLNM] || '') ) >= 0; });
461
572
  });