[CHG] allow deselecting a custom filter by clicking on it again in the drawer
as asked in project.task:4837: > Cannot uncheck a custom filter by clicking on it (it's possible on > classic filters) bzr revid: xmo@openerp.com-20130131112617-8vul65bb4lbfbfvk
This commit is contained in:
parent
0272007aae
commit
69171aa805
|
@ -697,7 +697,7 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea
|
|||
return filter.user_id && filter.is_default;
|
||||
});
|
||||
if (personal_filter) {
|
||||
this.custom_filters.enable_filter(personal_filter, true);
|
||||
this.custom_filters.toggle_filter(personal_filter, true);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -705,7 +705,7 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea
|
|||
return !filter.user_id && filter.is_default;
|
||||
});
|
||||
if (global_filter) {
|
||||
this.custom_filters.enable_filter(global_filter, true);
|
||||
this.custom_filters.toggle_filter(global_filter, true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -1598,6 +1598,7 @@ instance.web.search.CustomFilters = instance.web.search.Input.extend({
|
|||
get_groupby: function () { return [filter.context]; },
|
||||
get_domain: function () { return filter.domain; }
|
||||
},
|
||||
id: filter['id'],
|
||||
is_custom_filter: true,
|
||||
values: [{label: filter.name, value: null}]
|
||||
};
|
||||
|
@ -1639,10 +1640,18 @@ instance.web.search.CustomFilters = instance.web.search.Input.extend({
|
|||
}
|
||||
|
||||
$filter.unbind('click').click(function () {
|
||||
self.enable_filter(filter);
|
||||
self.toggle_filter(filter);
|
||||
});
|
||||
},
|
||||
enable_filter: function (filter, preventSearch) {
|
||||
toggle_filter: function (filter, preventSearch) {
|
||||
var current = this.view.query.find(function (facet) {
|
||||
return facet.get('id') === filter.id;
|
||||
});
|
||||
if (current) {
|
||||
this.view.query.remove(current);
|
||||
this.$filters[this.key_for(filter)].removeClass('oe_selected');
|
||||
return;
|
||||
}
|
||||
this.view.query.reset([this.facet_for(filter)], {
|
||||
preventSearch: preventSearch || false});
|
||||
this.$filters[this.key_for(filter)].addClass('oe_selected');
|
||||
|
|
|
@ -1038,6 +1038,44 @@ openerp.testing.section('saved_filters', {
|
|||
"should not be checked anymore");
|
||||
});
|
||||
});
|
||||
test('toggling', {asserts: 2}, function (instance, $fix, mock) {
|
||||
var view = makeSearchView(instance);
|
||||
mock('ir.filters:get_filters', function () {
|
||||
return [{name: 'filter name', user_id: 42, id: 1}];
|
||||
});
|
||||
|
||||
return view.appendTo($fix)
|
||||
.done(function () {
|
||||
var $row = $fix.find('.oe_searchview_custom li:first').click();
|
||||
equal(view.query.length, 1, "should have one facet");
|
||||
$row.click();
|
||||
equal(view.query.length, 0, "should have removed facet");
|
||||
});
|
||||
});
|
||||
test('replacement', {asserts: 4}, function (instance, $fix, mock) {
|
||||
var view = makeSearchView(instance);
|
||||
mock('ir.filters:get_filters', function () {
|
||||
return [
|
||||
{name: 'f', user_id: 42, id: 1, context: {'private': 1}},
|
||||
{name: 'f', user_id: false, id: 2, context: {'private': 0}}
|
||||
];
|
||||
});
|
||||
return view.appendTo($fix)
|
||||
.done(function () {
|
||||
$fix.find('.oe_searchview_custom li:eq(0)').click();
|
||||
equal(view.query.length, 1, "should have one facet");
|
||||
deepEqual(
|
||||
view.query.at(0).get('field').get_context(),
|
||||
{'private': 1},
|
||||
"should have selected first filter");
|
||||
$fix.find('.oe_searchview_custom li:eq(1)').click();
|
||||
equal(view.query.length, 1, "should have one facet");
|
||||
deepEqual(
|
||||
view.query.at(0).get('field').get_context(),
|
||||
{'private': 0},
|
||||
"should have selected second filter");
|
||||
});
|
||||
});
|
||||
});
|
||||
openerp.testing.section('advanced', {
|
||||
dependencies: ['web.search'],
|
||||
|
|
Loading…
Reference in New Issue