self.addFilter = function(filter, lookup, value, isNot) { var item = {filter: filter, values: [], isNot: isNot}; var types = filter.type.split('|'), keys = filter.key.split('|'), values = (value !== undefined) ? value.split('|') : [], lookups = (lookup !== undefined) ? lookup.split('|') : []; for (var i = 0; i < keys.length; i++) { var v = {type: types[i], lookup: lookups[i]}; if (types[i] == 'dt') { if (v.lookup == 'range') { var range = values[i].split('r'); v.value = {from: moment(range[0]), to: moment(range[1])}; } else if (['exact', 'lte', 'gte'].indexOf(v.lookup) > -1) v.value = {from: moment(values[i])}; else v.value = {days: values[i]}; } else v.value = values[i]; v.lookup = lookups[i]; if (types[i] == 'sl') { v.facets = $scope.filtering.getFacetsAction(keys[i])({facet: keys[i]}); } item.values.push(v); } return item; }; self.getQueryFilters = function(query){ var filters = []; angular.forEach(query.items, function(item) { var values = [], lookups = []; angular.forEach(item.values, function (v) { if (v.lookup !== undefined && v.value !== undefined && v.value !== '') { if (v.type == 'dt') { if (v.lookup == 'range') v._value = v.value.from.format("YYYY-MM-DD") + 'r' + v.value.to.format("YYYY-MM-DD"); else if (['exact', 'lte', 'gte'].indexOf(v.lookup) > -1) v._value = v.value.from.format("YYYY-MM-DD"); else v._value = v.value.days; } else v._value = v.value; values.push(v._value); lookups.push(v.lookup); } }); filters.push({filter: item.filter.id, lookup: lookups.join('|'), value: values.join('|'), is_not: item.isNot}); }); return filters; };