Skip to content

Commit ccdb0d4

Browse files
committed
some more tests for non-standard input data
1 parent 7f93667 commit ccdb0d4

12 files changed

+769
-747
lines changed

js/grid.base.js

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3961,14 +3961,16 @@
39613961
query = query.or();
39623962
}
39633963
cmi1 = cmtypes[rule.field];
3964-
r = cmi1.reader;
3965-
query = compareFnMap[rule.op](query, opr)(
3966-
isFunction(r) ?
3967-
"jQuery.jgrid.getAccessor(this,jQuery(\"" + p.idSel + "\")[0].p.colModel[" + cmi1.iCol + "].jsonmap)" :
3968-
"jQuery.jgrid.getAccessor(this,'" + r + "')",
3969-
rule.data,
3970-
cmtypes[rule.field]
3971-
);
3964+
if (cmi1 != null) {
3965+
r = cmi1.reader;
3966+
query = compareFnMap[rule.op](query, opr)(
3967+
isFunction(r) ?
3968+
"jQuery.jgrid.getAccessor(this,jQuery(\"" + p.idSel + "\")[0].p.colModel[" + cmi1.iCol + "].jsonmap)" :
3969+
"jQuery.jgrid.getAccessor(this,'" + r + "')",
3970+
rule.data,
3971+
cmtypes[rule.field]
3972+
);
3973+
}
39723974
} else if (p.customSortOperations != null && p.customSortOperations[rule.op] != null && isFunction(p.customSortOperations[rule.op].filter)) {
39733975
query = query.custom(rule.op, rule.field, rule.data);
39743976
}

js/grid.common.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,9 @@
381381
$(elm).attr("id", jgrid.randId());
382382
}
383383
}
384+
385+
if (options == null) { return ""; }
386+
384387
switch (eltype) {
385388
case "textarea":
386389
elem = document.createElement("textarea");
@@ -421,6 +424,8 @@
421424
case "select":
422425
elem = document.createElement("select");
423426
var msl, ovm = [], iCol = p.iColByName[options.name], cm = p.colModel[iCol], isSelected;
427+
428+
if (cm == null) { return ""; }
424429
if (options.multiple === true) {
425430
msl = true;
426431
elem.multiple = "multiple";

js/grid.custom.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,11 @@
275275
iColByName = p.iColByName, cm, soptions;
276276
if (!filters) { return; }
277277
if (typeof filters === "string") {
278-
filters = $.parseJSON(filters);
278+
try {
279+
filters = $.parseJSON(filters);
280+
} catch (ignore) {
281+
filters = {};
282+
}
279283
}
280284
rules = (filters || {}).rules;
281285
if (filters == null ||

js/jquery.jqgrid.min.js

Lines changed: 590 additions & 590 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/jquery.jqgrid.min.map

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

js/jquery.jqgrid.src.js

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3961,14 +3961,16 @@
39613961
query = query.or();
39623962
}
39633963
cmi1 = cmtypes[rule.field];
3964-
r = cmi1.reader;
3965-
query = compareFnMap[rule.op](query, opr)(
3966-
isFunction(r) ?
3967-
"jQuery.jgrid.getAccessor(this,jQuery(\"" + p.idSel + "\")[0].p.colModel[" + cmi1.iCol + "].jsonmap)" :
3968-
"jQuery.jgrid.getAccessor(this,'" + r + "')",
3969-
rule.data,
3970-
cmtypes[rule.field]
3971-
);
3964+
if (cmi1 != null) {
3965+
r = cmi1.reader;
3966+
query = compareFnMap[rule.op](query, opr)(
3967+
isFunction(r) ?
3968+
"jQuery.jgrid.getAccessor(this,jQuery(\"" + p.idSel + "\")[0].p.colModel[" + cmi1.iCol + "].jsonmap)" :
3969+
"jQuery.jgrid.getAccessor(this,'" + r + "')",
3970+
rule.data,
3971+
cmtypes[rule.field]
3972+
);
3973+
}
39723974
} else if (p.customSortOperations != null && p.customSortOperations[rule.op] != null && isFunction(p.customSortOperations[rule.op].filter)) {
39733975
query = query.custom(rule.op, rule.field, rule.data);
39743976
}
@@ -8191,6 +8193,9 @@
81918193
$(elm).attr("id", jgrid.randId());
81928194
}
81938195
}
8196+
8197+
if (options == null) { return ""; }
8198+
81948199
switch (eltype) {
81958200
case "textarea":
81968201
elem = document.createElement("textarea");
@@ -8231,6 +8236,8 @@
82318236
case "select":
82328237
elem = document.createElement("select");
82338238
var msl, ovm = [], iCol = p.iColByName[options.name], cm = p.colModel[iCol], isSelected;
8239+
8240+
if (cm == null) { return ""; }
82348241
if (options.multiple === true) {
82358242
msl = true;
82368243
elem.multiple = "multiple";
@@ -8867,7 +8874,11 @@
88678874
iColByName = p.iColByName, cm, soptions;
88688875
if (!filters) { return; }
88698876
if (typeof filters === "string") {
8870-
filters = $.parseJSON(filters);
8877+
try {
8878+
filters = $.parseJSON(filters);
8879+
} catch (ignore) {
8880+
filters = {};
8881+
}
88718882
}
88728883
rules = (filters || {}).rules;
88738884
if (filters == null ||

js/min/grid.base.js

Lines changed: 120 additions & 120 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/min/grid.base.map

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

js/min/grid.common.js

Lines changed: 13 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/min/grid.common.map

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

js/min/grid.custom.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/min/grid.custom.map

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)