ninegrid2 6.244.0 → 6.246.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.
@@ -18002,7 +18002,6 @@ class ngFilterPanel extends HTMLElement
18002
18002
  connectedCallback() {
18003
18003
 
18004
18004
  this.#owner = this.getRootNode().host;
18005
- console.log("========================", this.#owner);
18006
18005
 
18007
18006
  const cssPath = this.getRootNode().host.closest("nine-grid").getAttribute("css-path") || "";
18008
18007
 
@@ -18041,114 +18040,89 @@ class ngFilterPanel extends HTMLElement
18041
18040
  </div>
18042
18041
  `;
18043
18042
 
18044
- $(this.shadowRoot).find("input[type=text]") .on("input", this.#onInput);
18045
- $(this.shadowRoot).find("input[type=checkbox]") .on("change", this.#onSelectAll);
18046
- $(this.shadowRoot).find("#btnOk") .on("click", this.#onOk);
18047
- $(this.shadowRoot).find("#btnCancel") .on("click", this.#onCancel);
18048
-
18049
- //$(this).on("mousedown", e => { e.preventDefault(); e.stopPropagation(); });
18050
- //$(this).on("mousedown", e => { e.stopPropagation(); });
18043
+ this.shadowRoot.querySelector("input[type=text]").addEventListener("input", this.#onInput);
18044
+ this.shadowRoot.querySelector("input[type=checkbox]").addEventListener("change", this.#onSelectAll);
18045
+ this.shadowRoot.querySelector("#btnOk").addEventListener("click", this.#onOk);
18046
+ this.shadowRoot.querySelector("#btnCancel").addEventListener("click", this.#onCancel);
18051
18047
  };
18052
18048
 
18053
18049
  #onOk = (e) => {
18054
18050
 
18055
18051
  const grd = this.shadowRoot.querySelector("nine-grid");
18056
18052
 
18057
- //ninegrid.j.querySelectorAll(grd).addClass("loading");
18058
- //ninegrid.j.querySelectorAll(this.#target.owner).addClass("loading");
18059
18053
  this.classList.add("loading");
18060
18054
 
18061
18055
  setTimeout(() => {
18062
-
18063
- const LVL_IDX = grd.fields.indexOf("LVL");
18064
- const CHK_IDX = grd.fields.indexOf("CHK");
18065
- const COLNM_IDX = grd.fields.indexOf("COLNM");
18066
- const DATA_IDX = grd.fields.indexOf("DATA");
18067
-
18068
- const checked = grd.data.getValidDataNF().filter(m => { return m.v[LVL_IDX] == 2 && m.v[CHK_IDX] == "Y"; });
18069
- //const unchecked = grd.data.getValidDataNF().filter(m => { return m.v[LVL_IDX] == 2 && m.v[CHK_IDX] != "Y"; });
18070
-
18071
- var filterOptions = [];
18072
- if (checked.length > 0) {
18073
-
18074
- [...new Set(checked.map(m => { return m.v[COLNM_IDX] }))].forEach(v => {
18075
- filterOptions.push({
18076
- colnm : v,
18077
- 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; }),
18078
- });
18079
- });
18080
- }
18056
+ const [LVL_IDX, CHK_IDX, COLNM_IDX, DATA_IDX] = ["LVL", "CHK", "COLNM", "DATA"].map(k => grd.fields.indexOf(k));
18057
+ const checked = grd.data.getValidDataNF().filter(m => m.v[LVL_IDX] === 2 && m.v[CHK_IDX] === "Y");
18058
+ const filterOptions = checked.length > 0 ? [...new Set(checked.map(m => m.v[COLNM_IDX]))].map(v => ({
18059
+ colnm: v,
18060
+ data: [...new Set(grd.data.getValidData().filter(m => m.v[CHK_IDX] === "Y" && m.v[COLNM_IDX] === v).map(m => m.v[DATA_IDX] || ''))].sort()
18061
+ })) : [];
18081
18062
 
18082
- //console.log(filterOptions);
18083
- //console.log(this.#target, this.#target.button, filterOptions)
18084
18063
 
18085
18064
  this.#button.filterOptions = filterOptions;
18086
-
18087
- var oParam = {};
18088
-
18089
- this.#owner.body.querySelectorAll("ng-filter-button").forEach(el => {
18090
-
18091
- //if (!el.filterOptions) return true;
18092
18065
 
18093
- el.filterOptions.forEach(filterOptions => {
18094
- if (filterOptions.data.length > 0) oParam[filterOptions.colnm] = filterOptions.data;
18095
- });
18096
- });
18066
+ const oParam = Object.fromEntries(
18067
+ [...this.#owner.body.querySelectorAll("ng-filter-button")]
18068
+ .flatMap(el => el.filterOptions)
18069
+ .filter(opt => opt.data.length > 0)
18070
+ .map(opt => [opt.colnm, opt.data])
18071
+ );
18097
18072
 
18098
18073
  this.#owner.filtering.set(oParam);
18099
18074
 
18100
18075
  this.classList.remove("loading");
18076
+ this.style.display = 'none';
18101
18077
  });
18102
-
18103
- $(this).hide();
18104
18078
  };
18105
18079
 
18106
18080
 
18107
18081
 
18108
18082
  #onCancel = (e) => {
18109
- $(this).hide();
18083
+ this.style.display = 'none';
18110
18084
  };
18111
18085
 
18112
18086
  #onSelectAll = (e) => {
18113
- var grd = this.shadowRoot.querySelector("nine-grid");
18114
- var idx = (grd.fields.indexOf("CHK"));
18087
+ const grd = this.shadowRoot.querySelector("nine-grid");
18088
+ const idx = grd.fields.indexOf("CHK");
18089
+ const isChecked = e.target.checked; // ✅ jQuery 없이 `checked` 값 가져오기
18090
+
18091
+ grd.data.getValidData().forEach(m => {
18092
+ m.v[idx] = isChecked ? "Y" : "N"; // ✅ `Y` 또는 `N` 값 설정
18093
+ });
18115
18094
 
18116
- grd.data.getValidData().map(m => { m.v[idx] = $(e.target).prop("checked") ? "Y" : "N"; });
18117
-
18118
18095
  grd.refreshData();
18119
18096
  };
18097
+
18120
18098
 
18121
18099
 
18122
18100
  #onInput = (e) => {
18123
- var grd = this.shadowRoot.querySelector("nine-grid");
18124
-
18101
+ const grd = this.shadowRoot.querySelector("nine-grid");
18125
18102
 
18126
- ninegrid.j.querySelectorAll(grd).addClass("loading");
18127
-
18103
+ grd.classList.add("loading");
18128
18104
 
18129
- var data = grd.dataManager.rawRecords;
18105
+ const data = grd.dataManager.rawRecords;
18106
+ data.forEach(m => { m.__ng.filtered = false; });
18130
18107
 
18131
- data.map(m => { m.__ng.filtered = false; });
18108
+ const v = e.target.value.toLowerCase(); // jQuery 없이 값 가져오기
18109
+ const [LVL_IDX, DATA_IDX] = ["LVL", "DATA"].map(field => grd.fields.indexOf(field));
18132
18110
 
18133
-
18134
- var v = $(e.target).val().toLowerCase();
18135
-
18111
+ data.forEach(m => {
18112
+ m.__ng.filtered = m.v[LVL_IDX] === 2 && !String(m.v[DATA_IDX] || "").toLowerCase().includes(v);
18113
+ });
18136
18114
 
18137
- const LVL_IDX = grd.fields.indexOf("LVL");
18138
- const DATA_IDX = grd.fields.indexOf("DATA");
18139
-
18140
- data.filter(m => { return m.v[LVL_IDX] == 2 && String(m.v[DATA_IDX] || '').toLowerCase().indexOf(v) < 0; }).map(m => { m.__ng.filtered = true; });
18141
-
18142
18115
  grd.data.resetRecords();
18143
18116
 
18144
18117
  if (this.#timer) {
18118
+ console.log("-------------", this.#timer);
18145
18119
  clearTimeout(this.#timer);
18120
+ console.log("===============", this.#timer);
18146
18121
  this.#timer = null;
18147
18122
  }
18148
18123
  this.#timer = setTimeout(() => {
18149
18124
  grd.dataManager.viewRecords.reset();
18150
18125
  grd.dataManager.viewRecords.touch();
18151
- //ninegrid.j.querySelectorAll(grd).removeClass("loading");
18152
18126
  }, 200);
18153
18127
  };
18154
18128
 
@@ -18000,7 +18000,6 @@ class ngFilterPanel extends HTMLElement
18000
18000
  connectedCallback() {
18001
18001
 
18002
18002
  this.#owner = this.getRootNode().host;
18003
- console.log("========================", this.#owner);
18004
18003
 
18005
18004
  const cssPath = this.getRootNode().host.closest("nine-grid").getAttribute("css-path") || "";
18006
18005
 
@@ -18039,114 +18038,89 @@ class ngFilterPanel extends HTMLElement
18039
18038
  </div>
18040
18039
  `;
18041
18040
 
18042
- $(this.shadowRoot).find("input[type=text]") .on("input", this.#onInput);
18043
- $(this.shadowRoot).find("input[type=checkbox]") .on("change", this.#onSelectAll);
18044
- $(this.shadowRoot).find("#btnOk") .on("click", this.#onOk);
18045
- $(this.shadowRoot).find("#btnCancel") .on("click", this.#onCancel);
18046
-
18047
- //$(this).on("mousedown", e => { e.preventDefault(); e.stopPropagation(); });
18048
- //$(this).on("mousedown", e => { e.stopPropagation(); });
18041
+ this.shadowRoot.querySelector("input[type=text]").addEventListener("input", this.#onInput);
18042
+ this.shadowRoot.querySelector("input[type=checkbox]").addEventListener("change", this.#onSelectAll);
18043
+ this.shadowRoot.querySelector("#btnOk").addEventListener("click", this.#onOk);
18044
+ this.shadowRoot.querySelector("#btnCancel").addEventListener("click", this.#onCancel);
18049
18045
  };
18050
18046
 
18051
18047
  #onOk = (e) => {
18052
18048
 
18053
18049
  const grd = this.shadowRoot.querySelector("nine-grid");
18054
18050
 
18055
- //ninegrid.j.querySelectorAll(grd).addClass("loading");
18056
- //ninegrid.j.querySelectorAll(this.#target.owner).addClass("loading");
18057
18051
  this.classList.add("loading");
18058
18052
 
18059
18053
  setTimeout(() => {
18060
-
18061
- const LVL_IDX = grd.fields.indexOf("LVL");
18062
- const CHK_IDX = grd.fields.indexOf("CHK");
18063
- const COLNM_IDX = grd.fields.indexOf("COLNM");
18064
- const DATA_IDX = grd.fields.indexOf("DATA");
18065
-
18066
- const checked = grd.data.getValidDataNF().filter(m => { return m.v[LVL_IDX] == 2 && m.v[CHK_IDX] == "Y"; });
18067
- //const unchecked = grd.data.getValidDataNF().filter(m => { return m.v[LVL_IDX] == 2 && m.v[CHK_IDX] != "Y"; });
18068
-
18069
- var filterOptions = [];
18070
- if (checked.length > 0) {
18071
-
18072
- [...new Set(checked.map(m => { return m.v[COLNM_IDX] }))].forEach(v => {
18073
- filterOptions.push({
18074
- colnm : v,
18075
- 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; }),
18076
- });
18077
- });
18078
- }
18054
+ const [LVL_IDX, CHK_IDX, COLNM_IDX, DATA_IDX] = ["LVL", "CHK", "COLNM", "DATA"].map(k => grd.fields.indexOf(k));
18055
+ const checked = grd.data.getValidDataNF().filter(m => m.v[LVL_IDX] === 2 && m.v[CHK_IDX] === "Y");
18056
+ const filterOptions = checked.length > 0 ? [...new Set(checked.map(m => m.v[COLNM_IDX]))].map(v => ({
18057
+ colnm: v,
18058
+ data: [...new Set(grd.data.getValidData().filter(m => m.v[CHK_IDX] === "Y" && m.v[COLNM_IDX] === v).map(m => m.v[DATA_IDX] || ''))].sort()
18059
+ })) : [];
18079
18060
 
18080
- //console.log(filterOptions);
18081
- //console.log(this.#target, this.#target.button, filterOptions)
18082
18061
 
18083
18062
  this.#button.filterOptions = filterOptions;
18084
-
18085
- var oParam = {};
18086
-
18087
- this.#owner.body.querySelectorAll("ng-filter-button").forEach(el => {
18088
-
18089
- //if (!el.filterOptions) return true;
18090
18063
 
18091
- el.filterOptions.forEach(filterOptions => {
18092
- if (filterOptions.data.length > 0) oParam[filterOptions.colnm] = filterOptions.data;
18093
- });
18094
- });
18064
+ const oParam = Object.fromEntries(
18065
+ [...this.#owner.body.querySelectorAll("ng-filter-button")]
18066
+ .flatMap(el => el.filterOptions)
18067
+ .filter(opt => opt.data.length > 0)
18068
+ .map(opt => [opt.colnm, opt.data])
18069
+ );
18095
18070
 
18096
18071
  this.#owner.filtering.set(oParam);
18097
18072
 
18098
18073
  this.classList.remove("loading");
18074
+ this.style.display = 'none';
18099
18075
  });
18100
-
18101
- $(this).hide();
18102
18076
  };
18103
18077
 
18104
18078
 
18105
18079
 
18106
18080
  #onCancel = (e) => {
18107
- $(this).hide();
18081
+ this.style.display = 'none';
18108
18082
  };
18109
18083
 
18110
18084
  #onSelectAll = (e) => {
18111
- var grd = this.shadowRoot.querySelector("nine-grid");
18112
- var idx = (grd.fields.indexOf("CHK"));
18085
+ const grd = this.shadowRoot.querySelector("nine-grid");
18086
+ const idx = grd.fields.indexOf("CHK");
18087
+ const isChecked = e.target.checked; // ✅ jQuery 없이 `checked` 값 가져오기
18088
+
18089
+ grd.data.getValidData().forEach(m => {
18090
+ m.v[idx] = isChecked ? "Y" : "N"; // ✅ `Y` 또는 `N` 값 설정
18091
+ });
18113
18092
 
18114
- grd.data.getValidData().map(m => { m.v[idx] = $(e.target).prop("checked") ? "Y" : "N"; });
18115
-
18116
18093
  grd.refreshData();
18117
18094
  };
18095
+
18118
18096
 
18119
18097
 
18120
18098
  #onInput = (e) => {
18121
- var grd = this.shadowRoot.querySelector("nine-grid");
18122
-
18099
+ const grd = this.shadowRoot.querySelector("nine-grid");
18123
18100
 
18124
- ninegrid.j.querySelectorAll(grd).addClass("loading");
18125
-
18101
+ grd.classList.add("loading");
18126
18102
 
18127
- var data = grd.dataManager.rawRecords;
18103
+ const data = grd.dataManager.rawRecords;
18104
+ data.forEach(m => { m.__ng.filtered = false; });
18128
18105
 
18129
- data.map(m => { m.__ng.filtered = false; });
18106
+ const v = e.target.value.toLowerCase(); // jQuery 없이 값 가져오기
18107
+ const [LVL_IDX, DATA_IDX] = ["LVL", "DATA"].map(field => grd.fields.indexOf(field));
18130
18108
 
18131
-
18132
- var v = $(e.target).val().toLowerCase();
18133
-
18109
+ data.forEach(m => {
18110
+ m.__ng.filtered = m.v[LVL_IDX] === 2 && !String(m.v[DATA_IDX] || "").toLowerCase().includes(v);
18111
+ });
18134
18112
 
18135
- const LVL_IDX = grd.fields.indexOf("LVL");
18136
- const DATA_IDX = grd.fields.indexOf("DATA");
18137
-
18138
- data.filter(m => { return m.v[LVL_IDX] == 2 && String(m.v[DATA_IDX] || '').toLowerCase().indexOf(v) < 0; }).map(m => { m.__ng.filtered = true; });
18139
-
18140
18113
  grd.data.resetRecords();
18141
18114
 
18142
18115
  if (this.#timer) {
18116
+ console.log("-------------", this.#timer);
18143
18117
  clearTimeout(this.#timer);
18118
+ console.log("===============", this.#timer);
18144
18119
  this.#timer = null;
18145
18120
  }
18146
18121
  this.#timer = setTimeout(() => {
18147
18122
  grd.dataManager.viewRecords.reset();
18148
18123
  grd.dataManager.viewRecords.touch();
18149
- //ninegrid.j.querySelectorAll(grd).removeClass("loading");
18150
18124
  }, 200);
18151
18125
  };
18152
18126
 
@@ -179,7 +179,6 @@ class ngFilterPanel extends HTMLElement
179
179
  connectedCallback() {
180
180
 
181
181
  this.#owner = this.getRootNode().host;
182
- console.log("========================", this.#owner)
183
182
 
184
183
  const cssPath = this.getRootNode().host.closest("nine-grid").getAttribute("css-path") || "";
185
184
 
@@ -218,114 +217,89 @@ class ngFilterPanel extends HTMLElement
218
217
  </div>
219
218
  `;
220
219
 
221
- $(this.shadowRoot).find("input[type=text]") .on("input", this.#onInput);
222
- $(this.shadowRoot).find("input[type=checkbox]") .on("change", this.#onSelectAll);
223
- $(this.shadowRoot).find("#btnOk") .on("click", this.#onOk);
224
- $(this.shadowRoot).find("#btnCancel") .on("click", this.#onCancel);
225
-
226
- //$(this).on("mousedown", e => { e.preventDefault(); e.stopPropagation(); });
227
- //$(this).on("mousedown", e => { e.stopPropagation(); });
220
+ this.shadowRoot.querySelector("input[type=text]").addEventListener("input", this.#onInput);
221
+ this.shadowRoot.querySelector("input[type=checkbox]").addEventListener("change", this.#onSelectAll);
222
+ this.shadowRoot.querySelector("#btnOk").addEventListener("click", this.#onOk);
223
+ this.shadowRoot.querySelector("#btnCancel").addEventListener("click", this.#onCancel);
228
224
  };
229
225
 
230
226
  #onOk = (e) => {
231
227
 
232
228
  const grd = this.shadowRoot.querySelector("nine-grid");
233
229
 
234
- //ninegrid.j.querySelectorAll(grd).addClass("loading");
235
- //ninegrid.j.querySelectorAll(this.#target.owner).addClass("loading");
236
230
  this.classList.add("loading");
237
231
 
238
232
  setTimeout(() => {
239
-
240
- const LVL_IDX = grd.fields.indexOf("LVL");
241
- const CHK_IDX = grd.fields.indexOf("CHK");
242
- const COLNM_IDX = grd.fields.indexOf("COLNM");
243
- const DATA_IDX = grd.fields.indexOf("DATA");
244
-
245
- const checked = grd.data.getValidDataNF().filter(m => { return m.v[LVL_IDX] == 2 && m.v[CHK_IDX] == "Y"; });
246
- //const unchecked = grd.data.getValidDataNF().filter(m => { return m.v[LVL_IDX] == 2 && m.v[CHK_IDX] != "Y"; });
247
-
248
- var filterOptions = [];
249
- if (checked.length > 0) {
250
-
251
- [...new Set(checked.map(m => { return m.v[COLNM_IDX] }))].forEach(v => {
252
- filterOptions.push({
253
- colnm : v,
254
- 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; }),
255
- });
256
- });
257
- }
233
+ const [LVL_IDX, CHK_IDX, COLNM_IDX, DATA_IDX] = ["LVL", "CHK", "COLNM", "DATA"].map(k => grd.fields.indexOf(k));
234
+ const checked = grd.data.getValidDataNF().filter(m => m.v[LVL_IDX] === 2 && m.v[CHK_IDX] === "Y");
235
+ const filterOptions = checked.length > 0 ? [...new Set(checked.map(m => m.v[COLNM_IDX]))].map(v => ({
236
+ colnm: v,
237
+ data: [...new Set(grd.data.getValidData().filter(m => m.v[CHK_IDX] === "Y" && m.v[COLNM_IDX] === v).map(m => m.v[DATA_IDX] || ''))].sort()
238
+ })) : [];
258
239
 
259
- //console.log(filterOptions);
260
- //console.log(this.#target, this.#target.button, filterOptions)
261
240
 
262
241
  this.#button.filterOptions = filterOptions;
263
-
264
- var oParam = {};
265
-
266
- this.#owner.body.querySelectorAll("ng-filter-button").forEach(el => {
267
-
268
- //if (!el.filterOptions) return true;
269
242
 
270
- el.filterOptions.forEach(filterOptions => {
271
- if (filterOptions.data.length > 0) oParam[filterOptions.colnm] = filterOptions.data;
272
- });
273
- });
243
+ const oParam = Object.fromEntries(
244
+ [...this.#owner.body.querySelectorAll("ng-filter-button")]
245
+ .flatMap(el => el.filterOptions)
246
+ .filter(opt => opt.data.length > 0)
247
+ .map(opt => [opt.colnm, opt.data])
248
+ );
274
249
 
275
250
  this.#owner.filtering.set(oParam);
276
251
 
277
252
  this.classList.remove("loading");
253
+ this.style.display = 'none';
278
254
  });
279
-
280
- $(this).hide();
281
255
  };
282
256
 
283
257
 
284
258
 
285
259
  #onCancel = (e) => {
286
- $(this).hide();
260
+ this.style.display = 'none';
287
261
  };
288
262
 
289
263
  #onSelectAll = (e) => {
290
- var grd = this.shadowRoot.querySelector("nine-grid");
291
- var idx = (grd.fields.indexOf("CHK"));
264
+ const grd = this.shadowRoot.querySelector("nine-grid");
265
+ const idx = grd.fields.indexOf("CHK");
266
+ const isChecked = e.target.checked; // ✅ jQuery 없이 `checked` 값 가져오기
267
+
268
+ grd.data.getValidData().forEach(m => {
269
+ m.v[idx] = isChecked ? "Y" : "N"; // ✅ `Y` 또는 `N` 값 설정
270
+ });
292
271
 
293
- grd.data.getValidData().map(m => { m.v[idx] = $(e.target).prop("checked") ? "Y" : "N"; });
294
-
295
272
  grd.refreshData();
296
273
  };
274
+
297
275
 
298
276
 
299
277
  #onInput = (e) => {
300
- var grd = this.shadowRoot.querySelector("nine-grid");
301
-
278
+ const grd = this.shadowRoot.querySelector("nine-grid");
302
279
 
303
- ninegrid.j.querySelectorAll(grd).addClass("loading");
304
-
280
+ grd.classList.add("loading");
305
281
 
306
- var data = grd.dataManager.rawRecords;
282
+ const data = grd.dataManager.rawRecords;
283
+ data.forEach(m => { m.__ng.filtered = false; });
307
284
 
308
- data.map(m => { m.__ng.filtered = false; });
285
+ const v = e.target.value.toLowerCase(); // jQuery 없이 값 가져오기
286
+ const [LVL_IDX, DATA_IDX] = ["LVL", "DATA"].map(field => grd.fields.indexOf(field));
309
287
 
310
-
311
- var v = $(e.target).val().toLowerCase();
312
-
288
+ data.forEach(m => {
289
+ m.__ng.filtered = m.v[LVL_IDX] === 2 && !String(m.v[DATA_IDX] || "").toLowerCase().includes(v);
290
+ });
313
291
 
314
- const LVL_IDX = grd.fields.indexOf("LVL");
315
- const DATA_IDX = grd.fields.indexOf("DATA");
316
-
317
- data.filter(m => { return m.v[LVL_IDX] == 2 && String(m.v[DATA_IDX] || '').toLowerCase().indexOf(v) < 0; }).map(m => { m.__ng.filtered = true; });
318
-
319
292
  grd.data.resetRecords();
320
293
 
321
294
  if (this.#timer) {
295
+ console.log("-------------", this.#timer);
322
296
  clearTimeout(this.#timer);
297
+ console.log("===============", this.#timer);
323
298
  this.#timer = null;
324
299
  }
325
300
  this.#timer = setTimeout(() => {
326
301
  grd.dataManager.viewRecords.reset();
327
302
  grd.dataManager.viewRecords.touch();
328
- //ninegrid.j.querySelectorAll(grd).removeClass("loading");
329
303
  }, 200)
330
304
  };
331
305
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ninegrid2",
3
3
  "type": "module",
4
- "version": "6.244.0",
4
+ "version": "6.246.0",
5
5
  "main": "dist/index.js",
6
6
  "exports": {
7
7
  "import": "./dist/index.js",
@@ -179,7 +179,6 @@ class ngFilterPanel extends HTMLElement
179
179
  connectedCallback() {
180
180
 
181
181
  this.#owner = this.getRootNode().host;
182
- console.log("========================", this.#owner)
183
182
 
184
183
  const cssPath = this.getRootNode().host.closest("nine-grid").getAttribute("css-path") || "";
185
184
 
@@ -218,114 +217,89 @@ class ngFilterPanel extends HTMLElement
218
217
  </div>
219
218
  `;
220
219
 
221
- $(this.shadowRoot).find("input[type=text]") .on("input", this.#onInput);
222
- $(this.shadowRoot).find("input[type=checkbox]") .on("change", this.#onSelectAll);
223
- $(this.shadowRoot).find("#btnOk") .on("click", this.#onOk);
224
- $(this.shadowRoot).find("#btnCancel") .on("click", this.#onCancel);
225
-
226
- //$(this).on("mousedown", e => { e.preventDefault(); e.stopPropagation(); });
227
- //$(this).on("mousedown", e => { e.stopPropagation(); });
220
+ this.shadowRoot.querySelector("input[type=text]").addEventListener("input", this.#onInput);
221
+ this.shadowRoot.querySelector("input[type=checkbox]").addEventListener("change", this.#onSelectAll);
222
+ this.shadowRoot.querySelector("#btnOk").addEventListener("click", this.#onOk);
223
+ this.shadowRoot.querySelector("#btnCancel").addEventListener("click", this.#onCancel);
228
224
  };
229
225
 
230
226
  #onOk = (e) => {
231
227
 
232
228
  const grd = this.shadowRoot.querySelector("nine-grid");
233
229
 
234
- //ninegrid.j.querySelectorAll(grd).addClass("loading");
235
- //ninegrid.j.querySelectorAll(this.#target.owner).addClass("loading");
236
230
  this.classList.add("loading");
237
231
 
238
232
  setTimeout(() => {
239
-
240
- const LVL_IDX = grd.fields.indexOf("LVL");
241
- const CHK_IDX = grd.fields.indexOf("CHK");
242
- const COLNM_IDX = grd.fields.indexOf("COLNM");
243
- const DATA_IDX = grd.fields.indexOf("DATA");
244
-
245
- const checked = grd.data.getValidDataNF().filter(m => { return m.v[LVL_IDX] == 2 && m.v[CHK_IDX] == "Y"; });
246
- //const unchecked = grd.data.getValidDataNF().filter(m => { return m.v[LVL_IDX] == 2 && m.v[CHK_IDX] != "Y"; });
247
-
248
- var filterOptions = [];
249
- if (checked.length > 0) {
250
-
251
- [...new Set(checked.map(m => { return m.v[COLNM_IDX] }))].forEach(v => {
252
- filterOptions.push({
253
- colnm : v,
254
- 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; }),
255
- });
256
- });
257
- }
233
+ const [LVL_IDX, CHK_IDX, COLNM_IDX, DATA_IDX] = ["LVL", "CHK", "COLNM", "DATA"].map(k => grd.fields.indexOf(k));
234
+ const checked = grd.data.getValidDataNF().filter(m => m.v[LVL_IDX] === 2 && m.v[CHK_IDX] === "Y");
235
+ const filterOptions = checked.length > 0 ? [...new Set(checked.map(m => m.v[COLNM_IDX]))].map(v => ({
236
+ colnm: v,
237
+ data: [...new Set(grd.data.getValidData().filter(m => m.v[CHK_IDX] === "Y" && m.v[COLNM_IDX] === v).map(m => m.v[DATA_IDX] || ''))].sort()
238
+ })) : [];
258
239
 
259
- //console.log(filterOptions);
260
- //console.log(this.#target, this.#target.button, filterOptions)
261
240
 
262
241
  this.#button.filterOptions = filterOptions;
263
-
264
- var oParam = {};
265
-
266
- this.#owner.body.querySelectorAll("ng-filter-button").forEach(el => {
267
-
268
- //if (!el.filterOptions) return true;
269
242
 
270
- el.filterOptions.forEach(filterOptions => {
271
- if (filterOptions.data.length > 0) oParam[filterOptions.colnm] = filterOptions.data;
272
- });
273
- });
243
+ const oParam = Object.fromEntries(
244
+ [...this.#owner.body.querySelectorAll("ng-filter-button")]
245
+ .flatMap(el => el.filterOptions)
246
+ .filter(opt => opt.data.length > 0)
247
+ .map(opt => [opt.colnm, opt.data])
248
+ );
274
249
 
275
250
  this.#owner.filtering.set(oParam);
276
251
 
277
252
  this.classList.remove("loading");
253
+ this.style.display = 'none';
278
254
  });
279
-
280
- $(this).hide();
281
255
  };
282
256
 
283
257
 
284
258
 
285
259
  #onCancel = (e) => {
286
- $(this).hide();
260
+ this.style.display = 'none';
287
261
  };
288
262
 
289
263
  #onSelectAll = (e) => {
290
- var grd = this.shadowRoot.querySelector("nine-grid");
291
- var idx = (grd.fields.indexOf("CHK"));
264
+ const grd = this.shadowRoot.querySelector("nine-grid");
265
+ const idx = grd.fields.indexOf("CHK");
266
+ const isChecked = e.target.checked; // ✅ jQuery 없이 `checked` 값 가져오기
267
+
268
+ grd.data.getValidData().forEach(m => {
269
+ m.v[idx] = isChecked ? "Y" : "N"; // ✅ `Y` 또는 `N` 값 설정
270
+ });
292
271
 
293
- grd.data.getValidData().map(m => { m.v[idx] = $(e.target).prop("checked") ? "Y" : "N"; });
294
-
295
272
  grd.refreshData();
296
273
  };
274
+
297
275
 
298
276
 
299
277
  #onInput = (e) => {
300
- var grd = this.shadowRoot.querySelector("nine-grid");
301
-
278
+ const grd = this.shadowRoot.querySelector("nine-grid");
302
279
 
303
- ninegrid.j.querySelectorAll(grd).addClass("loading");
304
-
280
+ grd.classList.add("loading");
305
281
 
306
- var data = grd.dataManager.rawRecords;
282
+ const data = grd.dataManager.rawRecords;
283
+ data.forEach(m => { m.__ng.filtered = false; });
307
284
 
308
- data.map(m => { m.__ng.filtered = false; });
285
+ const v = e.target.value.toLowerCase(); // jQuery 없이 값 가져오기
286
+ const [LVL_IDX, DATA_IDX] = ["LVL", "DATA"].map(field => grd.fields.indexOf(field));
309
287
 
310
-
311
- var v = $(e.target).val().toLowerCase();
312
-
288
+ data.forEach(m => {
289
+ m.__ng.filtered = m.v[LVL_IDX] === 2 && !String(m.v[DATA_IDX] || "").toLowerCase().includes(v);
290
+ });
313
291
 
314
- const LVL_IDX = grd.fields.indexOf("LVL");
315
- const DATA_IDX = grd.fields.indexOf("DATA");
316
-
317
- data.filter(m => { return m.v[LVL_IDX] == 2 && String(m.v[DATA_IDX] || '').toLowerCase().indexOf(v) < 0; }).map(m => { m.__ng.filtered = true; });
318
-
319
292
  grd.data.resetRecords();
320
293
 
321
294
  if (this.#timer) {
295
+ console.log("-------------", this.#timer);
322
296
  clearTimeout(this.#timer);
297
+ console.log("===============", this.#timer);
323
298
  this.#timer = null;
324
299
  }
325
300
  this.#timer = setTimeout(() => {
326
301
  grd.dataManager.viewRecords.reset();
327
302
  grd.dataManager.viewRecords.touch();
328
- //ninegrid.j.querySelectorAll(grd).removeClass("loading");
329
303
  }, 200)
330
304
  };
331
305