File tree Expand file tree Collapse file tree 1 file changed +24
-12
lines changed Expand file tree Collapse file tree 1 file changed +24
-12
lines changed Original file line number Diff line number Diff 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 ;
You can’t perform that action at this time.
0 commit comments