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.
- package/dist/bundle.cjs.js +35 -276
- package/dist/bundle.esm.js +35 -276
- package/dist/etc/ngData.js +0 -109
- package/dist/etc/ngFiltering.js +36 -168
- package/package.json +1 -1
- package/src/etc/ngData.js +0 -109
- package/src/etc/ngFiltering.js +36 -168
package/dist/bundle.cjs.js
CHANGED
|
@@ -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
|
|
17948
|
-
|
|
17949
|
-
|
|
17838
|
+
constructor(owner) {
|
|
17839
|
+
this.#owner = owner;
|
|
17840
|
+
this.#isFiltering = false;
|
|
17950
17841
|
|
|
17951
|
-
|
|
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
|
-
|
|
18010
|
-
|
|
18011
|
-
|
|
18012
|
-
|
|
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
|
-
|
|
18028
|
-
const arr = jsonFilter[key];
|
|
17909
|
+
Object.entries(jsonFilter).forEach(([key, arr]) => {
|
|
18029
17910
|
const idx = this.#owner.fields.indexOf(key);
|
|
18030
|
-
|
|
18031
|
-
|
|
18032
|
-
|
|
18033
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
17931
|
+
// ✅ 필터 데이터 적용
|
|
17932
|
+
Object.entries(jsonFilter).forEach(([key, arr]) => {
|
|
18065
17933
|
this.#owner.shadowRoot.querySelectorAll("ng-filter-button").forEach(el => {
|
|
18066
|
-
|
|
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
|
-
|
|
18178
|
-
|
|
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
|
-
|
|
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
|
|