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
Post a Comment