ninegrid2 6.243.0 → 6.244.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 +15 -20
- package/dist/bundle.esm.js +15 -20
- package/dist/etc/ngFiltering.js +15 -20
- package/package.json +1 -1
- package/src/etc/ngFiltering.js +15 -20
package/dist/bundle.cjs.js
CHANGED
|
@@ -17991,7 +17991,7 @@ class ngFilterButton extends HTMLElement
|
|
|
17991
17991
|
class ngFilterPanel extends HTMLElement
|
|
17992
17992
|
{
|
|
17993
17993
|
#owner;
|
|
17994
|
-
#
|
|
17994
|
+
#button;
|
|
17995
17995
|
#timer;
|
|
17996
17996
|
|
|
17997
17997
|
constructor () {
|
|
@@ -18082,11 +18082,11 @@ class ngFilterPanel extends HTMLElement
|
|
|
18082
18082
|
//console.log(filterOptions);
|
|
18083
18083
|
//console.log(this.#target, this.#target.button, filterOptions)
|
|
18084
18084
|
|
|
18085
|
-
this.#
|
|
18085
|
+
this.#button.filterOptions = filterOptions;
|
|
18086
18086
|
|
|
18087
18087
|
var oParam = {};
|
|
18088
18088
|
|
|
18089
|
-
this.#
|
|
18089
|
+
this.#owner.body.querySelectorAll("ng-filter-button").forEach(el => {
|
|
18090
18090
|
|
|
18091
18091
|
//if (!el.filterOptions) return true;
|
|
18092
18092
|
|
|
@@ -18095,7 +18095,7 @@ class ngFilterPanel extends HTMLElement
|
|
|
18095
18095
|
});
|
|
18096
18096
|
});
|
|
18097
18097
|
|
|
18098
|
-
this.#
|
|
18098
|
+
this.#owner.filtering.set(oParam);
|
|
18099
18099
|
|
|
18100
18100
|
this.classList.remove("loading");
|
|
18101
18101
|
});
|
|
@@ -18159,13 +18159,13 @@ class ngFilterPanel extends HTMLElement
|
|
|
18159
18159
|
|
|
18160
18160
|
open = (filterButton) => {
|
|
18161
18161
|
|
|
18162
|
-
const owner = this.shadow.closest("nine-grid");
|
|
18162
|
+
//const owner = this.shadow.closest("nine-grid");
|
|
18163
18163
|
|
|
18164
18164
|
/** 위치 */
|
|
18165
18165
|
const cell = filterButton.closest("th,td");
|
|
18166
18166
|
|
|
18167
18167
|
const filterButtonRect = filterButton.getBoundingClientRect();
|
|
18168
|
-
const ownerRect = owner.getBoundingClientRect();
|
|
18168
|
+
const ownerRect = this.#owner.getBoundingClientRect();
|
|
18169
18169
|
const cellRect = cell.getBoundingClientRect();
|
|
18170
18170
|
const targetRect = this.getBoundingClientRect();
|
|
18171
18171
|
|
|
@@ -18185,12 +18185,7 @@ class ngFilterPanel extends HTMLElement
|
|
|
18185
18185
|
var col = filterButton.closest('th,td').dataset.col;
|
|
18186
18186
|
this.col = col;
|
|
18187
18187
|
|
|
18188
|
-
this.#
|
|
18189
|
-
owner : owner,
|
|
18190
|
-
button : filterButton,
|
|
18191
|
-
uuid : owner.uuid,
|
|
18192
|
-
col : col,
|
|
18193
|
-
};
|
|
18188
|
+
this.#button = filterButton;
|
|
18194
18189
|
|
|
18195
18190
|
this.style.display = 'flex';
|
|
18196
18191
|
this.classList.add("loading");
|
|
@@ -18204,7 +18199,7 @@ class ngFilterPanel extends HTMLElement
|
|
|
18204
18199
|
setTimeout(() => {
|
|
18205
18200
|
|
|
18206
18201
|
|
|
18207
|
-
let data = owner.data.getValidDataNF();
|
|
18202
|
+
let data = this.#owner.data.getValidDataNF();
|
|
18208
18203
|
|
|
18209
18204
|
var ds = [];
|
|
18210
18205
|
filterButton.filterOptions.forEach((filterOption,i) => {
|
|
@@ -18216,22 +18211,22 @@ class ngFilterPanel extends HTMLElement
|
|
|
18216
18211
|
});
|
|
18217
18212
|
|
|
18218
18213
|
/**
|
|
18219
|
-
var cell = $(`[data-col=${col}][data-bind=${filterOption.colnm}]`, owner.template);
|
|
18214
|
+
var cell = $(`[data-col=${col}][data-bind=${filterOption.colnm}]`, this.#owner.template);
|
|
18220
18215
|
var expr = cell.attr("data-expr");
|
|
18221
|
-
var exprFunc = (expr) ? owner.exprFunction(expr) : null;
|
|
18216
|
+
var exprFunc = (expr) ? this.#owner.exprFunction(expr) : null;
|
|
18222
18217
|
*/
|
|
18223
18218
|
|
|
18224
|
-
const cell = ninegrid.j.querySelectorAll(`[data-col="${col}"][data-bind="${filterOption.colnm}"]`, owner.tmpl).elem();
|
|
18219
|
+
const cell = ninegrid.j.querySelectorAll(`[data-col="${col}"][data-bind="${filterOption.colnm}"]`, this.#owner.tmpl).elem();
|
|
18225
18220
|
const expr = cell.getAttribute("data-expr");
|
|
18226
|
-
const exprFunc = (expr) ? owner.exprFunction(expr) : null;
|
|
18221
|
+
const exprFunc = (expr) ? this.#owner.exprFunction(expr) : null;
|
|
18227
18222
|
|
|
18228
18223
|
var data2 = [];
|
|
18229
18224
|
for (var rowData of data) {
|
|
18230
|
-
var idx = owner.fields.indexOf(filterOption.colnm);
|
|
18225
|
+
var idx = this.#owner.fields.indexOf(filterOption.colnm);
|
|
18231
18226
|
|
|
18232
18227
|
if (expr) {
|
|
18233
|
-
var o = owner.data.conv(rowData);
|
|
18234
|
-
data2.push({v:o[filterOption.colnm],v2:exprFunc(o, rowData.__ng.rowidx, owner.data)});
|
|
18228
|
+
var o = this.#owner.data.conv(rowData);
|
|
18229
|
+
data2.push({v:o[filterOption.colnm],v2:exprFunc(o, rowData.__ng.rowidx, this.#owner.data)});
|
|
18235
18230
|
}
|
|
18236
18231
|
else {
|
|
18237
18232
|
data2.push({v:rowData.v[idx],v2:rowData.v[idx]});
|
package/dist/bundle.esm.js
CHANGED
|
@@ -17989,7 +17989,7 @@ class ngFilterButton extends HTMLElement
|
|
|
17989
17989
|
class ngFilterPanel extends HTMLElement
|
|
17990
17990
|
{
|
|
17991
17991
|
#owner;
|
|
17992
|
-
#
|
|
17992
|
+
#button;
|
|
17993
17993
|
#timer;
|
|
17994
17994
|
|
|
17995
17995
|
constructor () {
|
|
@@ -18080,11 +18080,11 @@ class ngFilterPanel extends HTMLElement
|
|
|
18080
18080
|
//console.log(filterOptions);
|
|
18081
18081
|
//console.log(this.#target, this.#target.button, filterOptions)
|
|
18082
18082
|
|
|
18083
|
-
this.#
|
|
18083
|
+
this.#button.filterOptions = filterOptions;
|
|
18084
18084
|
|
|
18085
18085
|
var oParam = {};
|
|
18086
18086
|
|
|
18087
|
-
this.#
|
|
18087
|
+
this.#owner.body.querySelectorAll("ng-filter-button").forEach(el => {
|
|
18088
18088
|
|
|
18089
18089
|
//if (!el.filterOptions) return true;
|
|
18090
18090
|
|
|
@@ -18093,7 +18093,7 @@ class ngFilterPanel extends HTMLElement
|
|
|
18093
18093
|
});
|
|
18094
18094
|
});
|
|
18095
18095
|
|
|
18096
|
-
this.#
|
|
18096
|
+
this.#owner.filtering.set(oParam);
|
|
18097
18097
|
|
|
18098
18098
|
this.classList.remove("loading");
|
|
18099
18099
|
});
|
|
@@ -18157,13 +18157,13 @@ class ngFilterPanel extends HTMLElement
|
|
|
18157
18157
|
|
|
18158
18158
|
open = (filterButton) => {
|
|
18159
18159
|
|
|
18160
|
-
const owner = this.shadow.closest("nine-grid");
|
|
18160
|
+
//const owner = this.shadow.closest("nine-grid");
|
|
18161
18161
|
|
|
18162
18162
|
/** 위치 */
|
|
18163
18163
|
const cell = filterButton.closest("th,td");
|
|
18164
18164
|
|
|
18165
18165
|
const filterButtonRect = filterButton.getBoundingClientRect();
|
|
18166
|
-
const ownerRect = owner.getBoundingClientRect();
|
|
18166
|
+
const ownerRect = this.#owner.getBoundingClientRect();
|
|
18167
18167
|
const cellRect = cell.getBoundingClientRect();
|
|
18168
18168
|
const targetRect = this.getBoundingClientRect();
|
|
18169
18169
|
|
|
@@ -18183,12 +18183,7 @@ class ngFilterPanel extends HTMLElement
|
|
|
18183
18183
|
var col = filterButton.closest('th,td').dataset.col;
|
|
18184
18184
|
this.col = col;
|
|
18185
18185
|
|
|
18186
|
-
this.#
|
|
18187
|
-
owner : owner,
|
|
18188
|
-
button : filterButton,
|
|
18189
|
-
uuid : owner.uuid,
|
|
18190
|
-
col : col,
|
|
18191
|
-
};
|
|
18186
|
+
this.#button = filterButton;
|
|
18192
18187
|
|
|
18193
18188
|
this.style.display = 'flex';
|
|
18194
18189
|
this.classList.add("loading");
|
|
@@ -18202,7 +18197,7 @@ class ngFilterPanel extends HTMLElement
|
|
|
18202
18197
|
setTimeout(() => {
|
|
18203
18198
|
|
|
18204
18199
|
|
|
18205
|
-
let data = owner.data.getValidDataNF();
|
|
18200
|
+
let data = this.#owner.data.getValidDataNF();
|
|
18206
18201
|
|
|
18207
18202
|
var ds = [];
|
|
18208
18203
|
filterButton.filterOptions.forEach((filterOption,i) => {
|
|
@@ -18214,22 +18209,22 @@ class ngFilterPanel extends HTMLElement
|
|
|
18214
18209
|
});
|
|
18215
18210
|
|
|
18216
18211
|
/**
|
|
18217
|
-
var cell = $(`[data-col=${col}][data-bind=${filterOption.colnm}]`, owner.template);
|
|
18212
|
+
var cell = $(`[data-col=${col}][data-bind=${filterOption.colnm}]`, this.#owner.template);
|
|
18218
18213
|
var expr = cell.attr("data-expr");
|
|
18219
|
-
var exprFunc = (expr) ? owner.exprFunction(expr) : null;
|
|
18214
|
+
var exprFunc = (expr) ? this.#owner.exprFunction(expr) : null;
|
|
18220
18215
|
*/
|
|
18221
18216
|
|
|
18222
|
-
const cell = ninegrid.j.querySelectorAll(`[data-col="${col}"][data-bind="${filterOption.colnm}"]`, owner.tmpl).elem();
|
|
18217
|
+
const cell = ninegrid.j.querySelectorAll(`[data-col="${col}"][data-bind="${filterOption.colnm}"]`, this.#owner.tmpl).elem();
|
|
18223
18218
|
const expr = cell.getAttribute("data-expr");
|
|
18224
|
-
const exprFunc = (expr) ? owner.exprFunction(expr) : null;
|
|
18219
|
+
const exprFunc = (expr) ? this.#owner.exprFunction(expr) : null;
|
|
18225
18220
|
|
|
18226
18221
|
var data2 = [];
|
|
18227
18222
|
for (var rowData of data) {
|
|
18228
|
-
var idx = owner.fields.indexOf(filterOption.colnm);
|
|
18223
|
+
var idx = this.#owner.fields.indexOf(filterOption.colnm);
|
|
18229
18224
|
|
|
18230
18225
|
if (expr) {
|
|
18231
|
-
var o = owner.data.conv(rowData);
|
|
18232
|
-
data2.push({v:o[filterOption.colnm],v2:exprFunc(o, rowData.__ng.rowidx, owner.data)});
|
|
18226
|
+
var o = this.#owner.data.conv(rowData);
|
|
18227
|
+
data2.push({v:o[filterOption.colnm],v2:exprFunc(o, rowData.__ng.rowidx, this.#owner.data)});
|
|
18233
18228
|
}
|
|
18234
18229
|
else {
|
|
18235
18230
|
data2.push({v:rowData.v[idx],v2:rowData.v[idx]});
|
package/dist/etc/ngFiltering.js
CHANGED
|
@@ -168,7 +168,7 @@ class ngFilterButton extends HTMLElement
|
|
|
168
168
|
class ngFilterPanel extends HTMLElement
|
|
169
169
|
{
|
|
170
170
|
#owner;
|
|
171
|
-
#
|
|
171
|
+
#button;
|
|
172
172
|
#timer;
|
|
173
173
|
|
|
174
174
|
constructor () {
|
|
@@ -259,11 +259,11 @@ class ngFilterPanel extends HTMLElement
|
|
|
259
259
|
//console.log(filterOptions);
|
|
260
260
|
//console.log(this.#target, this.#target.button, filterOptions)
|
|
261
261
|
|
|
262
|
-
this.#
|
|
262
|
+
this.#button.filterOptions = filterOptions;
|
|
263
263
|
|
|
264
264
|
var oParam = {};
|
|
265
265
|
|
|
266
|
-
this.#
|
|
266
|
+
this.#owner.body.querySelectorAll("ng-filter-button").forEach(el => {
|
|
267
267
|
|
|
268
268
|
//if (!el.filterOptions) return true;
|
|
269
269
|
|
|
@@ -272,7 +272,7 @@ class ngFilterPanel extends HTMLElement
|
|
|
272
272
|
});
|
|
273
273
|
});
|
|
274
274
|
|
|
275
|
-
this.#
|
|
275
|
+
this.#owner.filtering.set(oParam);
|
|
276
276
|
|
|
277
277
|
this.classList.remove("loading");
|
|
278
278
|
});
|
|
@@ -336,13 +336,13 @@ class ngFilterPanel extends HTMLElement
|
|
|
336
336
|
|
|
337
337
|
open = (filterButton) => {
|
|
338
338
|
|
|
339
|
-
const owner = this.shadow.closest("nine-grid");
|
|
339
|
+
//const owner = this.shadow.closest("nine-grid");
|
|
340
340
|
|
|
341
341
|
/** 위치 */
|
|
342
342
|
const cell = filterButton.closest("th,td");
|
|
343
343
|
|
|
344
344
|
const filterButtonRect = filterButton.getBoundingClientRect();
|
|
345
|
-
const ownerRect = owner.getBoundingClientRect();
|
|
345
|
+
const ownerRect = this.#owner.getBoundingClientRect();
|
|
346
346
|
const cellRect = cell.getBoundingClientRect();
|
|
347
347
|
const targetRect = this.getBoundingClientRect();
|
|
348
348
|
|
|
@@ -362,12 +362,7 @@ class ngFilterPanel extends HTMLElement
|
|
|
362
362
|
var col = filterButton.closest('th,td').dataset.col;
|
|
363
363
|
this.col = col;
|
|
364
364
|
|
|
365
|
-
this.#
|
|
366
|
-
owner : owner,
|
|
367
|
-
button : filterButton,
|
|
368
|
-
uuid : owner.uuid,
|
|
369
|
-
col : col,
|
|
370
|
-
}
|
|
365
|
+
this.#button = filterButton;
|
|
371
366
|
|
|
372
367
|
this.style.display = 'flex';
|
|
373
368
|
this.classList.add("loading");
|
|
@@ -381,7 +376,7 @@ class ngFilterPanel extends HTMLElement
|
|
|
381
376
|
setTimeout(() => {
|
|
382
377
|
|
|
383
378
|
|
|
384
|
-
let data = owner.data.getValidDataNF();
|
|
379
|
+
let data = this.#owner.data.getValidDataNF();
|
|
385
380
|
|
|
386
381
|
var ds = [];
|
|
387
382
|
filterButton.filterOptions.forEach((filterOption,i) => {
|
|
@@ -393,22 +388,22 @@ class ngFilterPanel extends HTMLElement
|
|
|
393
388
|
});
|
|
394
389
|
|
|
395
390
|
/**
|
|
396
|
-
var cell = $(`[data-col=${col}][data-bind=${filterOption.colnm}]`, owner.template);
|
|
391
|
+
var cell = $(`[data-col=${col}][data-bind=${filterOption.colnm}]`, this.#owner.template);
|
|
397
392
|
var expr = cell.attr("data-expr");
|
|
398
|
-
var exprFunc = (expr) ? owner.exprFunction(expr) : null;
|
|
393
|
+
var exprFunc = (expr) ? this.#owner.exprFunction(expr) : null;
|
|
399
394
|
*/
|
|
400
395
|
|
|
401
|
-
const cell = ninegrid.j.querySelectorAll(`[data-col="${col}"][data-bind="${filterOption.colnm}"]`, owner.tmpl).elem();
|
|
396
|
+
const cell = ninegrid.j.querySelectorAll(`[data-col="${col}"][data-bind="${filterOption.colnm}"]`, this.#owner.tmpl).elem();
|
|
402
397
|
const expr = cell.getAttribute("data-expr");
|
|
403
|
-
const exprFunc = (expr) ? owner.exprFunction(expr) : null;
|
|
398
|
+
const exprFunc = (expr) ? this.#owner.exprFunction(expr) : null;
|
|
404
399
|
|
|
405
400
|
var data2 = [];
|
|
406
401
|
for (var rowData of data) {
|
|
407
|
-
var idx = owner.fields.indexOf(filterOption.colnm);
|
|
402
|
+
var idx = this.#owner.fields.indexOf(filterOption.colnm);
|
|
408
403
|
|
|
409
404
|
if (expr) {
|
|
410
|
-
var o = owner.data.conv(rowData);
|
|
411
|
-
data2.push({v:o[filterOption.colnm],v2:exprFunc(o, rowData.__ng.rowidx, owner.data)});
|
|
405
|
+
var o = this.#owner.data.conv(rowData);
|
|
406
|
+
data2.push({v:o[filterOption.colnm],v2:exprFunc(o, rowData.__ng.rowidx, this.#owner.data)});
|
|
412
407
|
}
|
|
413
408
|
else {
|
|
414
409
|
data2.push({v:rowData.v[idx],v2:rowData.v[idx]});
|
package/package.json
CHANGED
package/src/etc/ngFiltering.js
CHANGED
|
@@ -168,7 +168,7 @@ class ngFilterButton extends HTMLElement
|
|
|
168
168
|
class ngFilterPanel extends HTMLElement
|
|
169
169
|
{
|
|
170
170
|
#owner;
|
|
171
|
-
#
|
|
171
|
+
#button;
|
|
172
172
|
#timer;
|
|
173
173
|
|
|
174
174
|
constructor () {
|
|
@@ -259,11 +259,11 @@ class ngFilterPanel extends HTMLElement
|
|
|
259
259
|
//console.log(filterOptions);
|
|
260
260
|
//console.log(this.#target, this.#target.button, filterOptions)
|
|
261
261
|
|
|
262
|
-
this.#
|
|
262
|
+
this.#button.filterOptions = filterOptions;
|
|
263
263
|
|
|
264
264
|
var oParam = {};
|
|
265
265
|
|
|
266
|
-
this.#
|
|
266
|
+
this.#owner.body.querySelectorAll("ng-filter-button").forEach(el => {
|
|
267
267
|
|
|
268
268
|
//if (!el.filterOptions) return true;
|
|
269
269
|
|
|
@@ -272,7 +272,7 @@ class ngFilterPanel extends HTMLElement
|
|
|
272
272
|
});
|
|
273
273
|
});
|
|
274
274
|
|
|
275
|
-
this.#
|
|
275
|
+
this.#owner.filtering.set(oParam);
|
|
276
276
|
|
|
277
277
|
this.classList.remove("loading");
|
|
278
278
|
});
|
|
@@ -336,13 +336,13 @@ class ngFilterPanel extends HTMLElement
|
|
|
336
336
|
|
|
337
337
|
open = (filterButton) => {
|
|
338
338
|
|
|
339
|
-
const owner = this.shadow.closest("nine-grid");
|
|
339
|
+
//const owner = this.shadow.closest("nine-grid");
|
|
340
340
|
|
|
341
341
|
/** 위치 */
|
|
342
342
|
const cell = filterButton.closest("th,td");
|
|
343
343
|
|
|
344
344
|
const filterButtonRect = filterButton.getBoundingClientRect();
|
|
345
|
-
const ownerRect = owner.getBoundingClientRect();
|
|
345
|
+
const ownerRect = this.#owner.getBoundingClientRect();
|
|
346
346
|
const cellRect = cell.getBoundingClientRect();
|
|
347
347
|
const targetRect = this.getBoundingClientRect();
|
|
348
348
|
|
|
@@ -362,12 +362,7 @@ class ngFilterPanel extends HTMLElement
|
|
|
362
362
|
var col = filterButton.closest('th,td').dataset.col;
|
|
363
363
|
this.col = col;
|
|
364
364
|
|
|
365
|
-
this.#
|
|
366
|
-
owner : owner,
|
|
367
|
-
button : filterButton,
|
|
368
|
-
uuid : owner.uuid,
|
|
369
|
-
col : col,
|
|
370
|
-
}
|
|
365
|
+
this.#button = filterButton;
|
|
371
366
|
|
|
372
367
|
this.style.display = 'flex';
|
|
373
368
|
this.classList.add("loading");
|
|
@@ -381,7 +376,7 @@ class ngFilterPanel extends HTMLElement
|
|
|
381
376
|
setTimeout(() => {
|
|
382
377
|
|
|
383
378
|
|
|
384
|
-
let data = owner.data.getValidDataNF();
|
|
379
|
+
let data = this.#owner.data.getValidDataNF();
|
|
385
380
|
|
|
386
381
|
var ds = [];
|
|
387
382
|
filterButton.filterOptions.forEach((filterOption,i) => {
|
|
@@ -393,22 +388,22 @@ class ngFilterPanel extends HTMLElement
|
|
|
393
388
|
});
|
|
394
389
|
|
|
395
390
|
/**
|
|
396
|
-
var cell = $(`[data-col=${col}][data-bind=${filterOption.colnm}]`, owner.template);
|
|
391
|
+
var cell = $(`[data-col=${col}][data-bind=${filterOption.colnm}]`, this.#owner.template);
|
|
397
392
|
var expr = cell.attr("data-expr");
|
|
398
|
-
var exprFunc = (expr) ? owner.exprFunction(expr) : null;
|
|
393
|
+
var exprFunc = (expr) ? this.#owner.exprFunction(expr) : null;
|
|
399
394
|
*/
|
|
400
395
|
|
|
401
|
-
const cell = ninegrid.j.querySelectorAll(`[data-col="${col}"][data-bind="${filterOption.colnm}"]`, owner.tmpl).elem();
|
|
396
|
+
const cell = ninegrid.j.querySelectorAll(`[data-col="${col}"][data-bind="${filterOption.colnm}"]`, this.#owner.tmpl).elem();
|
|
402
397
|
const expr = cell.getAttribute("data-expr");
|
|
403
|
-
const exprFunc = (expr) ? owner.exprFunction(expr) : null;
|
|
398
|
+
const exprFunc = (expr) ? this.#owner.exprFunction(expr) : null;
|
|
404
399
|
|
|
405
400
|
var data2 = [];
|
|
406
401
|
for (var rowData of data) {
|
|
407
|
-
var idx = owner.fields.indexOf(filterOption.colnm);
|
|
402
|
+
var idx = this.#owner.fields.indexOf(filterOption.colnm);
|
|
408
403
|
|
|
409
404
|
if (expr) {
|
|
410
|
-
var o = owner.data.conv(rowData);
|
|
411
|
-
data2.push({v:o[filterOption.colnm],v2:exprFunc(o, rowData.__ng.rowidx, owner.data)});
|
|
405
|
+
var o = this.#owner.data.conv(rowData);
|
|
406
|
+
data2.push({v:o[filterOption.colnm],v2:exprFunc(o, rowData.__ng.rowidx, this.#owner.data)});
|
|
412
407
|
}
|
|
413
408
|
else {
|
|
414
409
|
data2.push({v:rowData.v[idx],v2:rowData.v[idx]});
|