javascript - AngularJS - Filter on searchQueries (complex JSON) -


i'm doing filter webapp i'm developing, problem cannot manage have valid condition searchquery.

i got stuff:

myapp.filter('searchfilter', function() {   return function(arraytofilter, searchquery, searchvalue) {     var basearray = arraytofilter;     var userssearchafterquery = [];     var _searchqueryempty = {       searchvalue: searchvalue,       program: '',       location: '',       skilllevel: {         shouldbebeginner: false,         shouldbeintermediate: false,         shouldbeexpert: false       }     };      /**      * true if user has skilllevel @ beginner      * @param user      * @returns {boolean}      */     function isbeginner(user) {       return (user.skilllevel.tolowercase() === 'beginner');     }      /**      * true if user has skilllevel @ intermediate      * @param user      * @returns {boolean}      */     function isintermediate(user) {       return (user.skilllevel.tolowercase() === 'intermediate');     }      /**      * true if user has skilllevel @ expert      * @param user      * @returns {boolean}      */     function isexpert(user) {       return (user.skilllevel.tolowercase() === 'expert');     }      /**      * true if object1 , object2 has same program      * @param object1      * @param object2      * @returns {boolean}      */     function hassameprogram(object1, object2) {       return ((object1.program === object2.program));     }      /**      * true if object1 , object2 has same location      * @param object1      * @param object2      * @returns {boolean}      */     function hassamelocation(object1, object2) {       return ((object1.location === object2.location));     }      /**      * returns true if query1 === query2      * @param query1      * @param query2      * @returns {boolean}      */     function queriesareequals(query1, query2) {       return (hassameprogram(query1, query2)) &&     (hassamelocation(query1, query2)) && (query1.skilllevel.shouldbebeginner     === query2.skilllevel.shouldbebeginner) &&     (query1.skilllevel.shouldbeintermediate ===     query2.skilllevel.shouldbeintermediate) &&     (query1.skilllevel.shouldbeexpert === query2.skilllevel.shouldbeexpert);     }      /**      * if filter not empty or hasn't been reset      */     if (!queriesareequals(searchquery, _searchqueryempty)) {       console.log('query not empty');        /**        * second filter : if _user has same values in filter        */       angular.foreach(arraytofilter, function(_user) {          if ((               searchquery.skilllevel.shouldbebeginner && isbeginner(_user))                || (searchquery.skilllevel.shouldbeintermediate && isintermediate(_user))                || (searchquery.skilllevel.shouldbeexpert && isexpert(_user)             )              && (                   hassamelocation(_user, searchquery)                    && hassameprogram(_user, searchquery)                 )             ) {               userssearchafterquery.push(_user);         }       });     }      else if (searchvalue !== null && typeof searchvalue !== 'undefined' && searchvalue.replace(/ /g, '') !== '') {       if (typeof arraytofilter !== 'undefined' && (searchvalue.replace(/ /g, '') !== '' || searchvalue.length !== 0)) {          /**          * first filter : if _user has same skill in searchvalue          */         angular.foreach(arraytofilter, function (_user) {           if (_user.skill.tolowercase().indexof(searchvalue.tolowercase()) > -1) {             userssearchafterquery.push(_user);           }         });       }     } else {       userssearchafterquery = basearray;     }      return userssearchafterquery;   }; }); 

so, have compare searchquery received parameter filter , filter arraytofilter, after view should display users matching query. searchvalue text entered in search input.

my problem : when begin filter query, got nothing displayed.

i don't know if i'm doing wrong or if got condition problem (i wish not, dat stupid condition wrecked me 4 hours).

do guys have magic potion me ?

thanks lot !

cheers.


Comments