Author: jonesde
Date: Thu Jul 29 07:53:06 2010 New Revision: 980348 URL: http://svn.apache.org/viewvc?rev=980348&view=rev Log: Fixed two bugs with autocomplete functionality: init script in selectall.js was not doing the search/replace properly for ampersands, in the FindAutocompleteOptions.groovy script the andExprs were not really anded together so split into the or and main and lists and assembled the conditions properly, which will fix the conditionFields and the andCondition fields Modified: ofbiz/trunk/framework/common/webcommon/WEB-INF/actions/includes/FindAutocompleteOptions.groovy ofbiz/trunk/framework/images/webapp/images/selectall.js Modified: ofbiz/trunk/framework/common/webcommon/WEB-INF/actions/includes/FindAutocompleteOptions.groovy URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/webcommon/WEB-INF/actions/includes/FindAutocompleteOptions.groovy?rev=980348&r1=980347&r2=980348&view=diff ============================================================================== --- ofbiz/trunk/framework/common/webcommon/WEB-INF/actions/includes/FindAutocompleteOptions.groovy (original) +++ ofbiz/trunk/framework/common/webcommon/WEB-INF/actions/includes/FindAutocompleteOptions.groovy Thu Jul 29 07:53:06 2010 @@ -27,16 +27,21 @@ import org.ofbiz.entity.condition.Entity import org.ofbiz.entity.condition.EntityFunction; import org.ofbiz.entity.condition.EntityOperator; -def andExprs = []; +def mainAndConds = []; +def orExprs = []; def entityName = context.entityName; def searchFields = context.searchFields; def displayFields = context.displayFields ?: searchFields; + def searchValueFieldName = parameters.searchValueField; +def fieldValue = null; if (searchValueFieldName) fieldValue = parameters.get(searchValueFieldName); + def searchType = context.searchType; +def displayFieldsSet = null; if (searchFields && fieldValue) { - searchFieldsList = StringUtil.toList(searchFields); + def searchFieldsList = StringUtil.toList(searchFields); displayFieldsSet = StringUtil.toSet(displayFields); returnField = searchFieldsList[0]; //default to first element of searchFields displayFieldsSet.add(returnField); //add it to select fields, in case it is missing @@ -51,10 +56,10 @@ if (searchFields && fieldValue) { } searchFieldsList.each { fieldName -> if ("EQUALS".equals(searchType)) { - andExprs.add(EntityCondition.makeCondition(EntityFieldValue.makeFieldValue(returnField), EntityOperator.EQUALS, searchValue)); + orExprs.add(EntityCondition.makeCondition(EntityFieldValue.makeFieldValue(returnField), EntityOperator.EQUALS, searchValue)); return;//in case of EQUALS, we search only a match for the returned field } else { - andExprs.add(EntityCondition.makeCondition(EntityFunction.UPPER(EntityFieldValue.makeFieldValue(fieldName)), EntityOperator.LIKE, searchValue)); + orExprs.add(EntityCondition.makeCondition(EntityFunction.UPPER(EntityFieldValue.makeFieldValue(fieldName)), EntityOperator.LIKE, searchValue)); } } } @@ -67,17 +72,19 @@ def conditionFields = context.conditionF if (conditionFields) { // these fields are for additonal conditions, this is a Map of name/value pairs for (conditionFieldEntry in conditionFields.entrySet()) { - andExprs.add(EntityCondition.makeCondition(EntityFieldValue.makeFieldValue(conditionFieldEntry.getKey()), EntityOperator.EQUALS, conditionFieldEntry.getValue())); + mainAndConds.add(EntityCondition.makeCondition(EntityFieldValue.makeFieldValue(conditionFieldEntry.getKey()), EntityOperator.EQUALS, conditionFieldEntry.getValue())); } } -if (andExprs && entityName && displayFieldsSet) { - entityConditionList = EntityCondition.makeCondition(andExprs, EntityOperator.OR); +if (orExprs && entityName && displayFieldsSet) { + mainAndConds.add(EntityCondition.makeCondition(orExprs, EntityOperator.OR)); - //if there is an extra condition, add it to main condition - if (context.andCondition && context.andCondition instanceof EntityCondition) { - entityConditionList = EntityCondition.makeCondition(context.andCondition, entityConditionList); + //if there is an extra condition, add it to main condition list + if (context.andCondition && context.andCondition instanceof EntityCondition) { + mainAndConds.add(context.andCondition); } + + def entityConditionList = EntityCondition.makeCondition(mainAndConds, EntityOperator.AND); Integer autocompleterViewSize = Integer.valueOf(context.autocompleterViewSize ?: 10); EntityFindOptions findOptions = new EntityFindOptions(); Modified: ofbiz/trunk/framework/images/webapp/images/selectall.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/selectall.js?rev=980348&r1=980347&r2=980348&view=diff ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/selectall.js (original) +++ ofbiz/trunk/framework/images/webapp/images/selectall.js Thu Jul 29 07:53:06 2010 @@ -353,7 +353,7 @@ function ajaxSubmitFormUpdateAreas(form, * form of: areaId, target, target parameters [, areaId, target, target parameters...]. */ function ajaxAutoCompleter(areaCsvString, showDescription) { - var areaArray = areaCsvString.replace('&','&').split(","); + var areaArray = areaCsvString.replace(/&/g,'&').split(","); var numAreas = parseInt(areaArray.length / 3); for (var i = 0; i < numAreas * 3; i = i + 3) { var optionsDivId = areaArray[i] + "_autoCompleterOptions"; |
Free forum by Nabble | Edit this page |