Hi there, we received an automated report of missing field references when a user clicks a button to change their grid view state. We haven't been able to recreate but the following common-sense checks to ensure that field is not null seem reasonable and hopefully, you can add these to the framework:
Code:
isc.ListGrid.getPrototype().addProperties({
$29w: function isc_ListGrid__cellMouseDown(_1, _2, _3) {
var _4 = this.getField(this.getLocalFieldNum(_3));
var _5;
//added check for _4
if (_4 && _4.cellMouseDown) {
if (_4.cellMouseDown(this, _1, _2, _3) == false) return false
}
},
rowClick: function isc_ListGrid_rowClick(_1, _2, _3, _4) {
this.$31q = _2;
var _1 = this.getCellRecord(_2, _3),
_5 = this.fields[_3];
if (Array.isLoading(_1)) return;
var _6 = this.getCellValue(_1, _2, _3);
var _7 = this.getRawCellValue(_1, _2, _3);
if (_1 != null && _1.$52e) {
if (this.canCollapseGroup == false) return;
if (_4) {
var _8 = isc.EH.getKey();
if (_8 != "Space" && _8 != "Enter") return
}
if (this.canSelectGroups && this.isCheckboxField(_5)) {
return
}
if (!this.collapseGroupOnRowClick) {
var _9 = this.getEventPart();
if (!_9 || _9.part != "opener") return
}
var _10 = this,
_11 = _1;
if (this.getEditRow() != null) {
if (this.autoSaveEdits) {
var _12 = this.saveAllEdits(null, function() {
_10.toggleFolder(_11)
});
if (_12) return
} else {
this.storeUpdatedEditorValue()
}
}
this.toggleFolder(_1);
return
}
//check for _5
if (_5 && _5.valueIconClick != null && !_4) {
var _9 = this.getEventPart();
if (_9 && _9.part == "valueicon") {
isc.Func.replaceWithMethod(_5, "valueIconClick", "viewer,record,recordNum,field,rawValue,editor");
var _13 = _5.valueIconClick(this, _1, _2, _5, _7, null);
if (_13 == false) return false
}
}
//check for _5
if (_5 && _5.recordClick && !(_4 && _5.keyboardFiresRecordClick == false)) {
isc.Func.replaceWithMethod(_5, "recordClick", "viewer,record,recordNum,field,fieldNum,value,rawValue");
var _13 = _5.recordClick(this, _1, _2, _5, _3, _6, _7);
if (_13 == false) return false
}
if (this.recordClick) {
if (this.onRecordClick(this, _1, _2, _5, _3, _6, _7) == false)
return false;
if (this.recordClick(this, _1, _2, _5, _3, _6, _7) == false)
return false
}
var _14 = this.canEdit != false && (this.editEvent == isc.EH.CLICK || this.editOnFocus);
if (this.isCheckboxField(_5)) _14 = false;
//check for _5
if (_5 &&_5.canToggle && this.canEditCell(_2, _3) && this.shouldToggle(_5, _4)) {
var _15 = this.getEditorValueMap(_5, this.getEditedRecord(_2, _3));
if (_15 == null && isc.SimpleType.getBaseType(_5.type) == this.$g2) {
_15 = [true, false]
}
if (_15 != null) {
if (!isc.isAn.Array(_15)) _15 = isc.getKeys(_15);
if (_15.length > 1) {
var _16 = this.getFieldName(_3),
_17 = this.getEditedCell(_2, _3),
_18 = _15.indexOf(_17);
_18 += 1;
if (_18 >= _15.length) _18 = 0;
var _19 = _17;
_17 = _15[_18];
var _20;
if (_5.change != null) {
this.logInfo("canToggle firing specified field.change() event directly", "gridEdit");
_20 = this.fireCallback(_5.change, "form,item,value,oldValue", [null, null, _17, _19]) == false
}
if (!_20) {
if (!_14 && this.autoSaveEdits) {
this.setEditValue(_2, _3, _17, true, false)
} else {
this.setEditValue(_2, _3, _17)
}
if (_5.changed != null) {
this.logInfo("canToggle firing specified field.changed() event directly", "gridEdit");
this.fireCallback(_5.changed, "form,item,value", [null, null, _17])
}
if (this.autoSaveEdits) {
this.saveEdits(null, null, _2, _3)
} else {
this.validateCell(_2, _3)
}
}
}
}
}
if (_14) {
if (this.handleEditCellEvent(_2, _3, isc.ListGrid.CLICK) == true) {
return true
}
if (_4) {
for (var i = 0; i < this.fields.length; i++) {
if (i == _3) continue;
if (this.handleEditCellEvent(_2, i, isc.ListGrid.CLICK) == true) {
return true
}
}
}
}
}
})
Comment