[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;
|
return filter.user_id && filter.is_default;
|
||||||
});
|
});
|
||||||
if (personal_filter) {
|
if (personal_filter) {
|
||||||
this.custom_filters.enable_filter(personal_filter, true);
|
this.custom_filters.toggle_filter(personal_filter, true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -705,7 +705,7 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea
|
||||||
return !filter.user_id && filter.is_default;
|
return !filter.user_id && filter.is_default;
|
||||||
});
|
});
|
||||||
if (global_filter) {
|
if (global_filter) {
|
||||||
this.custom_filters.enable_filter(global_filter, true);
|
this.custom_filters.toggle_filter(global_filter, true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1598,6 +1598,7 @@ instance.web.search.CustomFilters = instance.web.search.Input.extend({
|
||||||
get_groupby: function () { return [filter.context]; },
|
get_groupby: function () { return [filter.context]; },
|
||||||
get_domain: function () { return filter.domain; }
|
get_domain: function () { return filter.domain; }
|
||||||
},
|
},
|
||||||
|
id: filter['id'],
|
||||||
is_custom_filter: true,
|
is_custom_filter: true,
|
||||||
values: [{label: filter.name, value: null}]
|
values: [{label: filter.name, value: null}]
|
||||||
};
|
};
|
||||||
|
@ -1639,10 +1640,18 @@ instance.web.search.CustomFilters = instance.web.search.Input.extend({
|
||||||
}
|
}
|
||||||
|
|
||||||
$filter.unbind('click').click(function () {
|
$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)], {
|
this.view.query.reset([this.facet_for(filter)], {
|
||||||
preventSearch: preventSearch || false});
|
preventSearch: preventSearch || false});
|
||||||
this.$filters[this.key_for(filter)].addClass('oe_selected');
|
this.$filters[this.key_for(filter)].addClass('oe_selected');
|
||||||
|
|
|
@ -1038,6 +1038,44 @@ openerp.testing.section('saved_filters', {
|
||||||
"should not be checked anymore");
|
"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', {
|
openerp.testing.section('advanced', {
|
||||||
dependencies: ['web.search'],
|
dependencies: ['web.search'],
|
||||||
|
|
Loading…
Reference in New Issue