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