hiding default search param as a search tag

in scenario where the user types a search that conflicts w/ the default search params.
Ex: searching for kind:gce when kind:ssh is a default search param shouldn't create a
search tag for kind:ssh, as someone shouldn't be able to remove that tag...it's a default!
This commit is contained in:
jaredevantabor 2017-01-10 21:12:29 -08:00
parent 86582c89a8
commit cd61f58b11

View File

@ -23,11 +23,24 @@ export default ['$stateParams', '$scope', '$state', 'QuerySet', 'GetBasePath', '
// Removes state definition defaults and pagination terms
function stripDefaultParams(params) {
let stripped =_.pick(params, (value, key) => {
let strippedCopy, stripped =_.pick(params, (value, key) => {
// setting the default value of a term to null in a state definition is a very explicit way to ensure it will NEVER generate a search tag, even with a non-default value
return defaults[key] !== value && key !== 'order_by' && key !== 'page' && key !== 'page_size' && defaults[key] !== null;
});
return _(stripped).map(qs.decodeParam).flatten().value();
strippedCopy = _.cloneDeep(stripped);
if(_.keys(_.pick(defaults, _.keys(strippedCopy))).length > 0){
for (var key in strippedCopy) {
if (strippedCopy.hasOwnProperty(key)) {
let value = strippedCopy[key];
if(_.isArray(value)){
let index = _.indexOf(value, defaults[key]);
value = value.splice(index, 1)[0];
}
}
}
stripped = strippedCopy;
}
return _(strippedCopy).map(qs.decodeParam).flatten().value();
}
// searchable relationships