when advanced query is empty, go blank instead of saying no results

This commit is contained in:
Emi Matchu 2014-04-02 20:40:51 -05:00
parent d7af6cfd4a
commit d47ec7a0cd
3 changed files with 32 additions and 23 deletions

View file

@ -1166,7 +1166,7 @@ View.Search = function (wardrobe) {
var fit = $('#preview').data('fit') || $.noop;
stopLoading();
item_set.setItems(items);
if(wardrobe.search.request.query) {
if(wardrobe.search.request.query.length > 0) {
if(!items.length) {
no_results_el.show();
}
@ -1186,7 +1186,7 @@ View.Search = function (wardrobe) {
var human_query = typeof current_query === 'string' ? current_query : '';
input_el.val(human_query);
no_results_span.text(human_query);
clear_el.toggle(!!request.query);
clear_el.toggle(!!request.query && request.query.length > 0);
});
wardrobe.search.bind('updatePagination', function (current_page, total_pages) {

View file

@ -216,23 +216,11 @@ function Wardrobe() {
Item.PER_PAGE = 21;
function queryToFilters(query) {
if (typeof query === "string") return query;
var filters = [];
if (query.name.require)
filters.push({key: "name", value: query.name.require, is_positive: true});
if (query.name.exclude)
filters.push({key: "name", value: query.name.exclude, is_positive: false});
if (query.nc)
filters.push({key: "is_nc", is_positive: (query.nc === "nc")});
return filters;
}
Item.loadByQuery = function (query, offset, success, error) {
var page = Math.round(offset / Item.PER_PAGE) + 1;
$.ajax({
url: '/items.json',
data: {q: queryToFilters(query), per_page: Item.PER_PAGE, page: page},
data: {q: query, per_page: Item.PER_PAGE, page: page},
dataType: 'json',
success: function (data) {
var items = [], item, item_data;
@ -1342,6 +1330,24 @@ function Wardrobe() {
search.events.trigger('error', error);
}
function queryToFilters(query) {
if (typeof query === "string") return query;
var filters = [];
if (query.name.require)
filters.push({key: "name", value: query.name.require, is_positive: true});
if (query.name.exclude)
filters.push({key: "name", value: query.name.exclude, is_positive: false});
if (query.nc)
filters.push({key: "is_nc", is_positive: (query.nc === "nc")});
if (query.occupies)
filters.push({key: "occupied_zone_set_name", value: query.occupies,
is_positive: true});
if (query.restricts)
filters.push({key: "restricted_zone_set_name", value: query.restricts,
is_positive: true});
return filters;
}
this.setItemsByQuery = function (query, where) {
var offset = (typeof where.offset != 'undefined') ? where.offset : (Item.PER_PAGE * (where.page - 1));
search.request = {
@ -1349,12 +1355,15 @@ function Wardrobe() {
offset: offset
};
search.events.trigger('updateRequest', search.request);
if(query) {
Item.loadByQuery(query, offset, itemsOnLoad, itemsOnError);
search.events.trigger('startRequest');
} else {
search.events.trigger('updateItems', []);
search.events.trigger('updatePagination', 0, 0);
if (typeof query !== "undefined") {
var newQuery = queryToFilters(query);
if(newQuery.length > 0) { // works for strings *or* filters lists!
Item.loadByQuery(newQuery, offset, itemsOnLoad, itemsOnError);
search.events.trigger('startRequest');
} else {
search.events.trigger('updateItems', []);
search.events.trigger('updatePagination', 0, 0);
}
}
}

View file

@ -166,8 +166,8 @@ class Item
species: lambda { |id|
Species.find(id).name
},
zone: lambda { |id|
Zone.find(id).plain_label
zone: lambda { |ids|
Zone.find(ids.first).plain_label
},
ownership: lambda { |owned|
owned_key = owned ? 'owns' : 'wants'