[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:
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user