quote the "fits" filter string if the color/species contains spaces

This commit is contained in:
Matt Dunn-Rankin 2017-01-08 12:14:38 -08:00
parent 0fac707157
commit 0679d60c82

View file

@ -1336,7 +1336,13 @@ View.Search = function (wardrobe) {
var petType = wardrobe.outfits.getPetType(); var petType = wardrobe.outfits.getPetType();
var speciesName = attrs.species[petType.species_id].name.toLowerCase(); var speciesName = attrs.species[petType.species_id].name.toLowerCase();
var colorName = attrs.color[petType.color_id].unfunny_name.toLowerCase(); var colorName = attrs.color[petType.color_id].unfunny_name.toLowerCase();
return 'fits:' + colorName + '-' + speciesName; var value = colorName + '-' + speciesName;
if (value.indexOf(' ') >= 0) {
// Some color names contain spaces, in which case we'll need to quote
// the filter clause.
value = '"' + value + '"';
}
return 'fits:' + value;
} }
function addAutofilter(query) { function addAutofilter(query) {
@ -1349,22 +1355,19 @@ View.Search = function (wardrobe) {
function updateQuery() { function updateQuery() {
var human_query = typeof current_query === 'string' ? current_query : ''; var human_query = typeof current_query === 'string' ? current_query : '';
var autofilterClause = buildAutofilterClause(); var autofilterClause = buildAutofilterClause();
var autofilterPresent = false; var queryWithoutAutofilterClause = human_query
human_query = human_query.split(/\s+/).filter(function(clause) { .replace(autofilterClause, '') // remove autofilter clause
if (clause.toLowerCase() === autofilterClause) { .replace(/^\s+/, '') // remove leading spaces
autofilterPresent = true; .replace(/\s+$/, '') // remove trailing spaces
return false; .replace(/\s+/g, ' '); // collapse spaces
} else { var autofilterPresent = human_query !== queryWithoutAutofilterClause;
return true;
}
}).join(' ');
if (autofilterPresent) { if (autofilterPresent) {
$('#preview-search-autofilter').attr('checked', 'checked'); $('#preview-search-autofilter').attr('checked', 'checked');
} else if (current_query.length > 0) { } else if (current_query.length > 0) {
$('#preview-search-autofilter').removeAttr('checked'); $('#preview-search-autofilter').removeAttr('checked');
} }
input_el.val(human_query); input_el.val(queryWithoutAutofilterClause);
no_results_span.text(human_query); no_results_span.text(queryWithoutAutofilterClause);
} }
var autofilterLabels = $('label[for=preview-search-autofilter],' + var autofilterLabels = $('label[for=preview-search-autofilter],' +