Skip to content

Commit 7afe0be

Browse files
committed
Filter: bug fix w/ "list" fields.
1 parent 99ed168 commit 7afe0be

File tree

1 file changed

+24
-12
lines changed

1 file changed

+24
-12
lines changed

js/dico/dico.js

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -392,23 +392,35 @@ return {
392392
*/
393393
filterModels: function(models, filters){
394394
if(filters.length){
395-
// TODO pre-build function to avoid repeating loop
395+
var fConds=Evol.Dico.fieldConditions;
396396
return models.filter(function(model){
397-
var want=true,
398-
fConds=Evol.Dico.fieldConditions;
399-
for(var i= 0, iMax=filters.length;i<iMax && want;i++){
400-
if(want===false){
401-
break;
402-
}
397+
var good=true;
398+
for(var i=0, iMax=filters.length;i<iMax;i++){
403399
var filter=filters[i],
404-
vm=model.get(filter.field.value);// TODO use field.value(m) || field.id
400+
vm=model.get(filter.field.value);
405401

406-
if(_.isUndefined(vm)){
407-
vm='';
402+
if(_.isArray(vm)){
403+
var ln=vm.length,
404+
fGood=false;
405+
for(var j=0;j<ln;j++){
406+
if(fConds[filter.operator.value](vm[j], filter.value.value)){
407+
fGood=true;
408+
break;
409+
}
410+
}
411+
if(!fGood){
412+
return fGood;
413+
}
414+
}else{
415+
if(_.isUndefined(vm)){
416+
vm='';
417+
}
418+
if(!fConds[filter.operator.value](vm, filter.value.value, filter.value.value2)){
419+
return false;
420+
}
408421
}
409-
want=fConds[filter.operator.value](vm, filter.value.value, filter.value.value2); // vf2 is only used in "between" conditions
410422
}
411-
return want;
423+
return good;
412424
});
413425
}
414426
return models;

0 commit comments

Comments
 (0)