[FIX] web: don't read events if no filter is enabled
Previously, enabling some filters created a domain of which events to display, but disabling all filters resulted in a domain of [] which, instead of showing no events at all, actually showed all events.
This commit is contained in:
@@ -393,16 +393,19 @@ return AbstractModel.extend({
|
||||
this.data.fc_options = this._getFullCalendarOptions();
|
||||
|
||||
var defs = _.map(this.data.filters, this._loadFilter.bind(this));
|
||||
|
||||
return $.when.apply($, defs).then(function () {
|
||||
return self._rpc({
|
||||
var eventsDef = $.Deferred().resolve([]);
|
||||
var filterDomain = self._getFilterDomain();
|
||||
if (filterDomain.length || _.isEmpty(self.data.filters)) {
|
||||
eventsDef = self._rpc({
|
||||
model: self.modelName,
|
||||
method: 'search_read',
|
||||
context: self.data.context,
|
||||
fields: self.fieldNames,
|
||||
domain: self.data.domain.concat(self._getRangeDomain()).concat(self._getFilterDomain())
|
||||
})
|
||||
.then(function (events) {
|
||||
domain: self.data.domain.concat(self._getRangeDomain()).concat(filterDomain)
|
||||
});
|
||||
}
|
||||
return eventsDef.then(function (events) {
|
||||
self.data.data = _.map(events, self._recordToCalendarEvent.bind(self));
|
||||
return $.when(
|
||||
self._loadColors(self.data, self.data.data),
|
||||
|
||||
@@ -143,7 +143,7 @@ QUnit.module('Views', {
|
||||
};
|
||||
|
||||
QUnit.test('simple calendar rendering', function (assert) {
|
||||
assert.expect(19);
|
||||
assert.expect(22);
|
||||
|
||||
var calendar = createView({
|
||||
View: CalendarView,
|
||||
@@ -200,6 +200,13 @@ QUnit.module('Views', {
|
||||
assert.strictEqual($attendeesFilter.find('.o_calendar_filter_item').length, 3, "should display 3 filter items for 'attendees' who use write_model (2 saved + Everything)");
|
||||
assert.ok($attendeesFilter.find('.o_field_many2one').length, "should display one2many search bar for 'attendees' filter");
|
||||
|
||||
assert.strictEqual(calendar.$('.fc-event').length, 6,
|
||||
"should display 6 events ('event 5' counts for 2 because it spans two weeks and thus generate two fc-event elements)");
|
||||
calendar.$('.o_calendar_filter .o_checkbox input').first().click(); // Disable first filter
|
||||
assert.strictEqual(calendar.$('.fc-event').length, 4, "should now only display 4 event");
|
||||
calendar.$('.o_calendar_filter .o_checkbox input').eq(1).click(); // Disable second filter
|
||||
assert.strictEqual(calendar.$('.fc-event').length, 0, "should not display any event anymore");
|
||||
|
||||
// test search bar in filter
|
||||
|
||||
$sidebar.find('input[type="text"]').trigger('click');
|
||||
@@ -208,7 +215,7 @@ QUnit.module('Views', {
|
||||
assert.strictEqual($sidebar.find('.o_calendar_filter:has(h3:contains(attendees)) .o_calendar_filter_item').length, 4, "should display 4 filter items for 'attendees'");
|
||||
$sidebar.find('input[type="text"]').trigger('click');
|
||||
assert.strictEqual($('ul.ui-autocomplete li:not(.o_m2o_dropdown_option)').text(), "partner 4", "should display the last choice in one2many autocomplete"); // TODO: remove :not(.o_m2o_dropdown_option) because can't have "create & edit" choice
|
||||
$sidebar.find('.o_calendar_filter_item[data-id="1"] .o_remove').trigger('click');
|
||||
$sidebar.find('.o_calendar_filter_item .o_remove').first().trigger('click');
|
||||
assert.ok($('.modal button.btn:contains(Ok)').length, "should display the confirm message");
|
||||
$('.modal button.btn:contains(Ok)').trigger('click');
|
||||
assert.strictEqual($sidebar.find('.o_calendar_filter:has(h3:contains(attendees)) .o_calendar_filter_item').length, 3, "click on remove then should display 3 filter items for 'attendees'");
|
||||
|
||||
Reference in New Issue
Block a user