[FIX] web: set selection fields' default value in custom filters

Before this commit, the 'selection' fields were treated like 'char' fields in the
"Add Custom Filter" menu of the control panel's filter menu. This meant that their
value was defaulted to "".

Now, the default value of a selection field is its first selection value.

closes odoo/odoo#49772

X-original-commit: 62b62570725bc8eb3d3fa77fd1e8efd7a4fb5d2b
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
Signed-off-by: Julien Mougenot (jum) <jum@odoo.com>
This commit is contained in:
Julien Mougenot
2020-04-20 09:28:21 +00:00
parent b8a8ad27de
commit f50c3298bb
2 changed files with 46 additions and 0 deletions
@@ -122,6 +122,10 @@ odoo.define('web.CustomFilterItem', function (require) {
condition.value.push(moment('23:59:59', 'hh:mm:ss'));
}
break;
case 'selection':
const [firstValue] = this.fields[condition.field].selection[0];
condition.value = firstValue;
break;
default:
condition.value = "";
}
@@ -29,6 +29,7 @@ odoo.define('web.filter_menu_generator_tests', function (require) {
boolean_field: { name: 'boolean_field', string: "Boolean Field", type: 'boolean', default: true, searchable: true },
char_field: { name: 'char_field', string: "Char Field", type: 'char', default: "foo", trim: true, searchable: true },
float_field: { name: 'float_field', string: "Floaty McFloatface", type: 'float', searchable: true },
color: { name: 'color', string: "Color", type: 'selection', selection: [['black', "Black"], ['white', "White"]], searchable: true },
};
},
}, function () {
@@ -80,6 +81,47 @@ odoo.define('web.filter_menu_generator_tests', function (require) {
cfi.destroy();
});
QUnit.test('selection field: default and updated value', async function (assert) {
assert.expect(2);
let expectedFilters;
class MockedControlPanelModel extends Model {
createNewFilters(preFilters) {
assert.deepEqual(preFilters, expectedFilters);
}
}
const controlPanelModel = new MockedControlPanelModel();
const cfi = await createComponent(CustomFilterItem, {
props: {
fields: this.fields,
},
env: { controlPanelModel },
});
// Default value
expectedFilters = [{
description: 'Color is "black"',
domain: '[["color","=","black"]]',
type: 'filter',
}];
await cpHelpers.toggleAddCustomFilter(cfi);
await testUtils.fields.editSelect(cfi.el.querySelector('.o_generator_menu_field'), 'color');
await cpHelpers.applyFilter(cfi);
// Updated value
expectedFilters = [{
description: 'Color is "white"',
domain: '[["color","=","white"]]',
type: 'filter',
}];
await cpHelpers.toggleAddCustomFilter(cfi);
await testUtils.fields.editSelect(cfi.el.querySelector('.o_generator_menu_field'), 'color');
await testUtils.fields.editSelect(cfi.el.querySelector('.o_generator_menu_value select'), 'white');
await cpHelpers.applyFilter(cfi);
cfi.destroy();
});
QUnit.test('adding a simple filter works', async function (assert) {
assert.expect(5);