This patch corrects a problem in the 7.0RC2 FilterBuilder where the operators drop-down list was not always correctly populated for fields with special sets of valid operators. This problem manifested itself a couple of ways, for example as an incorrect initial selection.
Code:
//----------------------------------------------------------------------------
// Isomorphic SmartClient 7.0rc2 patch
// Purpose: Fix FilterBuilder issues with fields that define validOperators or
// DataSources that define typeOperators
//
// Applies to SmartClient 7.0RC2 builds only
//----------------------------------------------------------------------------
if (window.isc && isc.version.startsWith("7.0rc2/")) {
isc.FilterBuilder.addProperties({
addNewClause : function(_1) {
var _2 = isc.clone(this.filterRow);
var _3 = this.getDataSource().getFieldNames(true);
var _4 = {};
for(var i = 0; i < _3.length; i++) {
var _6 = _3[i];
if(this.showFieldTitles) {
var _7 = this.getDataSource().getField(_6).title;
_7 = _7 ? _7 : _6;
_4[_6] = _7
} else {
_4[_6] = _6
}
}
_2[0].valueMap = _4;
if (_1 && _1.fieldName) {
if (_3.contains(_1.fieldName)) {
_2[0].defaultValue = _1.fieldName
} else {
isc.logWarn("Criterion specified field " + _1.fieldName + ", which is not" +
" in the record. Using the first record field (" +
_3[0] + ") instead");
_2[0].defaultValue = _3[0]
}
} else {
_2[0].defaultValue = _3[0]
}
var _8 = this.getDataSource().getFieldOperatorMap(_2[0].defaultValue,false,"criteria",true);
_2[1].valueMap = _8;
if(_1 && _1.operator) {
_2[1].defaultValue = _1.operator
} else {
_2[1].defaultValue = isc.firstKey(_8)
}
var _9 = this.getDataSource().getSearchOperator(_2[1].defaultValue),
_10 = this.getDataSource().getField(_2[0].defaultValue);
if(!_9) {
isc.logWarn("Criterion specified unknown operator " + _1.operator + ". Using the first valid operator (" +
isc.firstKey(_8) + ") instead");
_2[1].defaultValue = isc.firstKey(_8);
_9=this.getDataSource().getSearchOperator(_2[1].defaultValue)
}
var _11 = this.buildValueItemList(_10,_9);
if (_1) {
if (_1.value != null && _11.containsProperty("name","value")) {
_11.find("name","value").defaultValue=_1.value
}
if (_1.start != null && _11.containsProperty("name","start")) {
_11.find("name","start").defaultValue = _1.start
}
if (_1.end != null && _11.containsProperty("name","end")) {
_11.find("name","end").defaultValue=_1.end
}
}
_2.addList(_11);
var _12 = this.createAutoChild("clause",{flattenItems:true,items:_2});
this.clauses.add(_12);
this.updateFields(_12);
var _13 = this.createAutoChild("removeButton");
var _14 = [_13];
_14.add(_12);
var _15 = this.createAutoChild("clauseLayout",{visibility:"hidden",members:_14});
_12.removeButton = _13;
_12.clauseLayout = _15;
_13.clause = _12;
var _16=this.clauseStack;
var _17 = Math.max(0,_16.getMemberNumber(this.buttonBar));
_16.addMember(_15,_17);
_16.showMember(_15,function(){_12.focusInItem("fieldName")});
this.updateFirstRemoveButton()
}
});
} else if (window.isc) {
isc.logWarn("Patch code included for SmartClient build version 7.0rc2. This page loads " +
"SmartClient version:" + isc.version + ". The patch code will be disabled for this build and " +
"should be removed.");
}