ninegrid2 6.233.0 → 6.235.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.
@@ -16136,115 +16136,6 @@ class ngData
16136
16136
  }
16137
16137
 
16138
16138
 
16139
- /**
16140
- * { "key1": [1,2,...], "key2": [1,2,...], ... }
16141
- */
16142
- setFilter = (oFilter) => {
16143
-
16144
- this.#owner.filtering.on();
16145
-
16146
-
16147
- let jsonFilter = {};
16148
- if (Array.isArray(oFilter)) {
16149
-
16150
- for (let key in oFilter[0]) {
16151
- //console.log(`::::::${key}::::::`)
16152
- //key = key.trim();
16153
- //console.log(key);
16154
- jsonFilter[key] = Array.from(new Set(oFilter.map(item => item[key])));//oFilter.map(item => item[key]);
16155
- }
16156
- }
16157
- else {
16158
- jsonFilter = oFilter;
16159
- }
16160
-
16161
- //jsonFilter.doc_id = [2, 18, 20, 28, 36, 45, 46, 48, 56, 64, 73, 81, 83, 90];
16162
-
16163
- //let filterData = [];
16164
-
16165
- console.log("==================", jsonFilter);
16166
-
16167
- this.clearFilter();
16168
-
16169
- for (let key in jsonFilter) {
16170
- const arr = jsonFilter[key];
16171
- const idx = this.#parent.owner.fields.indexOf(key);
16172
-
16173
- let isNum = false;
16174
- for (let o of this.getValidData()) {
16175
- if (o.v[idx] == null) continue;
16176
-
16177
- //console.log(o.v[idx], typeof o.v[idx])
16178
-
16179
- isNum = (typeof o.v[idx] === "number") ? true : false;
16180
-
16181
- break;
16182
- }
16183
-
16184
- if (isNum) {
16185
- for (var i = 0; i < arr.length; i++) {
16186
- arr[i] = Number(arr[i]);
16187
- }
16188
- }
16189
-
16190
- /** filtering button 용 데이타 */
16191
- /**
16192
- filterData.push({
16193
- "colnm" : key,
16194
- "data" : arr,
16195
- }); */
16196
- //console.log(arr);
16197
-
16198
-
16199
- //console.log(arr, idx, arr.nineBinarySearch(m.v[idx]));
16200
-
16201
- this.getValidData().filter(m => { return arr.nineBinarySearch(m.v[idx] || '') < 0; }).map(m => { m.__ng.filtered = true; });
16202
-
16203
-
16204
- //break;
16205
-
16206
-
16207
- }
16208
-
16209
-
16210
- this.refreshFilter();
16211
-
16212
- var colnms = [];
16213
- for (let key in jsonFilter) {
16214
- colnms.push(key);
16215
- }
16216
- //var colnms = filterData.map(item => item.colnm);
16217
-
16218
- ninegrid.querySelectorAll("ng-filter-button").forEach(v => {
16219
- v.filterData = null;
16220
- });
16221
-
16222
- for (let key in jsonFilter) {
16223
- const arr = jsonFilter[key];
16224
- this.#parent.owner.fields.indexOf(key);
16225
-
16226
- //console.log(filterData);
16227
- ninegrid.querySelectorAll("ng-filter-button").forEach(v => {
16228
- //v.filterData = null;
16229
- //console.log(v);
16230
- //var b = v.colnms;
16231
- v.colnms.forEach(colnm => {
16232
-
16233
- console.log(colnms, colnm);
16234
- if (colnms.includes(colnm)) {
16235
- console.log("==================");
16236
-
16237
- v.filterData = arr;
16238
- }
16239
- });
16240
- });
16241
- }
16242
-
16243
-
16244
- this.#parent.owner.scrollTo_V1(0);
16245
-
16246
- this.#parent.owner.paging.reset();
16247
- };
16248
16139
 
16249
16140
  /**
16250
16141
  *
@@ -17942,12 +17833,14 @@ class ngFiltering
17942
17833
  #owner;
17943
17834
  #isFiltering;
17944
17835
 
17945
- constructor (owner) {
17946
- this.#owner = owner;
17947
- this.#isFiltering = false;
17836
+ constructor(owner) {
17837
+ this.#owner = owner;
17838
+ this.#isFiltering = false;
17948
17839
 
17949
- $(this.#owner.shadowRoot).append($('<ng-filter-panel></ng-filter-panel>').hide());
17950
- }
17840
+ const filterPanel = document.createElement("ng-filter-panel"); // ✅ 필터 패널 생성
17841
+ filterPanel.style.display = "none"; // ✅ 숨김 처리
17842
+ this.#owner.shadowRoot.appendChild(filterPanel); // ✅ Shadow DOM 내부에 추가
17843
+ }
17951
17844
 
17952
17845
  initialize = () => {
17953
17846
  /**
@@ -17955,8 +17848,6 @@ class ngFiltering
17955
17848
  */
17956
17849
  this.#isFiltering = false;
17957
17850
  this.#owner.data.clearFilter();
17958
-
17959
- //this.#on();
17960
17851
  };
17961
17852
 
17962
17853
  isFiltering = () => {
@@ -18004,78 +17895,47 @@ class ngFiltering
18004
17895
 
18005
17896
  this.on();
18006
17897
 
18007
- let jsonFilter = {};
18008
- if (Array.isArray(oFilter)) {
18009
- for (let key in oFilter[0]) {
18010
- jsonFilter[key] = Array.from(new Set(oFilter.map(item => item[key])));//oFilter.map(item => item[key]);
18011
- }
18012
- }
18013
- else {
18014
- jsonFilter = oFilter;
18015
- }
18016
-
18017
- //jsonFilter.doc_id = [2, 18, 20, 28, 36, 45, 46, 48, 56, 64, 73, 81, 83, 90];
18018
-
18019
- //let filterData = [];
18020
-
18021
- console.log("==================", jsonFilter);
17898
+ // JSON 변환 (배열 → 객체)
17899
+ let jsonFilter = Array.isArray(oFilter)
17900
+ ? Object.fromEntries(Object.keys(oFilter[0]).map(key => [key, [...new Set(oFilter.map(item => item[key]))]]))
17901
+ : oFilter;
17902
+
17903
+ //console.log(oFilter, jsonFilter);
18022
17904
 
18023
17905
  this.#owner.data.clearFilter();
18024
17906
 
18025
- for (let key in jsonFilter) {
18026
- const arr = jsonFilter[key];
17907
+ Object.entries(jsonFilter).forEach(([key, arr]) => {
18027
17908
  const idx = this.#owner.fields.indexOf(key);
18028
-
18029
- let isNum = false;
18030
- for (let o of this.#owner.data.getValidData()) {
18031
- if (o.v[idx] == null) continue;
18032
-
18033
- //console.log(o.v[idx], typeof o.v[idx])
18034
-
18035
- isNum = (typeof o.v[idx] === "number") ? true : false;
18036
-
18037
- break;
18038
- }
18039
-
18040
- if (isNum) {
18041
- for (var i = 0; i < arr.length; i++) {
18042
- arr[i] = Number(arr[i]);
18043
- }
17909
+
17910
+ // 숫자 판별 및 변환
17911
+ if (this.#owner.data.getValidData().some(o => typeof o.v[idx] === "number")) {
17912
+ arr = arr.map(Number);
18044
17913
  }
18045
-
18046
- this.#owner.data.getValidData().filter(m => { return arr.nineBinarySearch(m.v[idx] || '') < 0; }).map(m => { m.__ng.filtered = true; });
18047
- }
17914
+
17915
+ // 필터 적용
17916
+ this.#owner.data.getValidData()
17917
+ .filter(m => arr.nineBinarySearch(m.v[idx] || '') < 0)
17918
+ .forEach(m => { m.__ng.filtered = true; });
17919
+ });
18048
17920
 
18049
17921
 
18050
17922
  this.#owner.data.refreshFilter();
18051
17923
 
17924
+ // ✅ 필터 버튼 초기화
18052
17925
  this.#owner.shadowRoot.querySelectorAll("ng-filter-button").forEach(el => {
18053
- let options = el.filterOptions;
18054
-
18055
- options.forEach(opt => {
18056
- opt.data = [];
18057
- });
18058
-
18059
- el.filterOptions = options;
17926
+ el.filterOptions.forEach(opt => { opt.data = []; });
18060
17927
  });
18061
17928
 
18062
- for (let key in jsonFilter) {
17929
+ // 필터 데이터 적용
17930
+ Object.entries(jsonFilter).forEach(([key, arr]) => {
18063
17931
  this.#owner.shadowRoot.querySelectorAll("ng-filter-button").forEach(el => {
18064
- let options = el.filterOptions;
18065
-
18066
- options.forEach(opt => {
18067
- if (opt.colnm === key) {
18068
- opt.data = jsonFilter[key];
18069
- }
17932
+ el.filterOptions.forEach(opt => {
17933
+ if (opt.colnm === key) opt.data = arr;
18070
17934
  });
18071
-
18072
- el.filterOptions = options;
18073
17935
  });
18074
- }
18075
-
17936
+ });
18076
17937
 
18077
17938
  this.#owner.scrollTo_V1(0);
18078
-
18079
17939
  this.#owner.paging.reset();
18080
17940
  };
18081
17941
 
@@ -18088,82 +17948,12 @@ class ngFiltering
18088
17948
 
18089
17949
  return index;
18090
17950
  };
18091
-
18092
-
18093
-
18094
-
18095
-
18096
- #init = (option) => {
18097
-
18098
- let jsonOption = {};
18099
- if (Array.isArray(option)) {
18100
- for (let key in option[0]) {
18101
- jsonOption[key] = Array.from(new Set(oFilter.map(item => item[key])));//oFilter.map(item => item[key]);
18102
- }
18103
- }
18104
- else {
18105
- jsonOption = option;
18106
- }
18107
-
18108
- this.#owner.data.clearFilter();
18109
-
18110
- for (let key in jsonOption) {
18111
- const arr = jsonOption[key];
18112
- const idx = this.#owner.fields.indexOf(key);
18113
-
18114
- for (let o of this.#owner.data.getValidData()) {
18115
- if (o.v[idx] != null) {
18116
- if (typeof o.v[idx] === "number") {
18117
- for (var i = 0; i < arr.length; i++) {
18118
- arr[i] = Number(arr[i]);
18119
- }
18120
- }
18121
- break;
18122
- }
18123
- }
18124
-
18125
- this.#owner.data.getValidData().filter(m => { return arr.nineBinarySearch(m.v[idx] || '') < 0; }).map(m => { m.__ng.filtered = true; });
18126
- }
18127
-
18128
-
18129
- this.#owner.data.refreshFilter();
18130
-
18131
- var colnms = [];
18132
- for (let key in jsonOption) {
18133
- colnms.push(key);
18134
- }
18135
- //var colnms = filterData.map(item => item.colnm);
18136
-
18137
- this.#owner.shadowRoot.querySelectorAll("ng-filter-button").forEach(v => {
18138
- v.filterData = null;
18139
- });
18140
-
18141
- for (let key in jsonOption) {
18142
- const arr = jsonOption[key];
18143
-
18144
- this.#owner.shadowRoot.querySelectorAll("ng-filter-button").forEach(v => {
18145
- //console.log(v.colnms);
18146
-
18147
- v.colnms.forEach(colnm => {
18148
- if (colnms.includes(colnm)) {
18149
- v.filterData = arr;
18150
- }
18151
- });
18152
- });
18153
- }
18154
-
18155
-
18156
- this.#owner.scrollTo_V1(0);
18157
-
18158
- this.#owner.paging.reset();
18159
- };
18160
17951
  }
18161
17952
 
18162
17953
  class ngFilterButton extends HTMLElement
18163
17954
  {
18164
17955
  #owner;
18165
17956
  #filterOptions;
18166
- #colnms;
18167
17957
 
18168
17958
  constructor () {
18169
17959
  super();
@@ -18172,15 +17962,8 @@ class ngFilterButton extends HTMLElement
18172
17962
  connectedCallback() {
18173
17963
  this.#owner = this.getRootNode().host;//this.closest("nine-grid");
18174
17964
 
18175
- $(this).off("click", this.#onClick);
18176
- $(this).on("click", this.#onClick);
18177
- };
18178
-
18179
- get colnms() {
18180
- return this.#colnms || [];
18181
- };
18182
- set colnms(v) {
18183
- this.#colnms = v;
17965
+ this.removeEventListener("click", this.#onClick);
17966
+ this.addEventListener("click", this.#onClick);
18184
17967
  };
18185
17968
 
18186
17969
  get filterOptions() {
@@ -18197,32 +17980,8 @@ class ngFilterButton extends HTMLElement
18197
17980
  e.stopPropagation();
18198
17981
 
18199
17982
  const panel = this.#owner.shadowRoot.querySelector('ng-filter-panel');
18200
-
18201
- //console.log(panel.isHidden);
18202
-
18203
- //panel.style.display = 'flex' : 'none';
18204
- //console.log(panel.isHidden, panel.col, this.closest('th,td').dataset.col);
18205
-
18206
- if (panel.col === this.closest('th,td').dataset.col) {
18207
- panel.close();
18208
- }
18209
- else {
18210
- /**
18211
- var cell = e.target.closest("th,td");
18212
-
18213
- var l = $(e.target).offset().left - $(this.#owner).offset().left;// - $(panel).width() + $(e.target).width() + 1;
18214
- if (l < 0) l = 0;
18215
- if (l + $(panel).width() > $(this.#owner).width()) l = $(this.#owner).width() - $(panel).width() - 5;
18216
-
18217
-
18218
-
18219
- var t = $(cell).offset().top + $(cell).height()- $(this.#owner).offset().top;//$(e.target).offset().top + $(e.target).height() + 2;
18220
-
18221
- //$(panel).offset({left: l, top: t});
18222
- $(panel).css({left: l, top: t});
18223
- */
18224
- panel.open(this);
18225
- }
17983
+
17984
+ (panel.col === this.closest('th,td').dataset.col) ? panel.close() : panel.open(this);
18226
17985
  };
18227
17986
  }
18228
17987
 
@@ -219,115 +219,6 @@ export class ngData
219
219
  }
220
220
 
221
221
 
222
- /**
223
- * { "key1": [1,2,...], "key2": [1,2,...], ... }
224
- */
225
- setFilter = (oFilter) => {
226
-
227
- this.#owner.filtering.on();
228
-
229
-
230
- let jsonFilter = {};
231
- if (Array.isArray(oFilter)) {
232
-
233
- for (let key in oFilter[0]) {
234
- //console.log(`::::::${key}::::::`)
235
- //key = key.trim();
236
- //console.log(key);
237
- jsonFilter[key] = Array.from(new Set(oFilter.map(item => item[key])));//oFilter.map(item => item[key]);
238
- }
239
- }
240
- else {
241
- jsonFilter = oFilter;
242
- }
243
-
244
- //jsonFilter.doc_id = [2, 18, 20, 28, 36, 45, 46, 48, 56, 64, 73, 81, 83, 90];
245
-
246
- //let filterData = [];
247
-
248
- console.log("==================", jsonFilter);
249
-
250
- this.clearFilter();
251
-
252
- for (let key in jsonFilter) {
253
- const arr = jsonFilter[key];
254
- const idx = this.#parent.owner.fields.indexOf(key);
255
-
256
- let isNum = false;
257
- for (let o of this.getValidData()) {
258
- if (o.v[idx] == null) continue;
259
-
260
- //console.log(o.v[idx], typeof o.v[idx])
261
-
262
- isNum = (typeof o.v[idx] === "number") ? true : false;
263
-
264
- break;
265
- }
266
-
267
- if (isNum) {
268
- for (var i = 0; i < arr.length; i++) {
269
- arr[i] = Number(arr[i]);
270
- }
271
- }
272
-
273
- /** filtering button 용 데이타 */
274
- /**
275
- filterData.push({
276
- "colnm" : key,
277
- "data" : arr,
278
- }); */
279
- //console.log(arr);
280
-
281
-
282
- //console.log(arr, idx, arr.nineBinarySearch(m.v[idx]));
283
-
284
- this.getValidData().filter(m => { return arr.nineBinarySearch(m.v[idx] || '') < 0; }).map(m => { m.__ng.filtered = true; });
285
-
286
-
287
- //break;
288
-
289
-
290
- }
291
-
292
-
293
- this.refreshFilter();
294
-
295
- var colnms = [];
296
- for (let key in jsonFilter) {
297
- colnms.push(key);
298
- }
299
- //var colnms = filterData.map(item => item.colnm);
300
-
301
- ninegrid.querySelectorAll("ng-filter-button").forEach(v => {
302
- v.filterData = null;
303
- });
304
-
305
- for (let key in jsonFilter) {
306
- const arr = jsonFilter[key];
307
- const idx = this.#parent.owner.fields.indexOf(key);
308
-
309
- //console.log(filterData);
310
- ninegrid.querySelectorAll("ng-filter-button").forEach(v => {
311
- //v.filterData = null;
312
- //console.log(v);
313
- //var b = v.colnms;
314
- v.colnms.forEach(colnm => {
315
-
316
- console.log(colnms, colnm);
317
- if (colnms.includes(colnm)) {
318
- console.log("==================");
319
-
320
- v.filterData = arr;
321
- }
322
- });
323
- });
324
- }
325
-
326
-
327
- this.#parent.owner.scrollTo_V1(0);
328
-
329
- this.#parent.owner.paging.reset();
330
- };
331
222
 
332
223
  /**
333
224
  *