From a548e77b6f9f4e46da3c2ad594ebd87cd481e004 Mon Sep 17 00:00:00 2001 From: Adrien Dieudonne Date: Fri, 6 Jul 2018 15:08:43 +0200 Subject: [PATCH] [FIX] web: groups of filters ordered correctly In the filters menus, the order of groups of filters comming from the search view arch was not always preserved in the filters menu. This commit fixes that situation. forward-port of @4094f755 --- .../search/groupby_menu_interface_mixin.js | 1 + .../static/src/js/widgets/dropdown_menu.js | 2 +- .../static/tests/views/search_view_tests.js | 54 +++++++++++++++++-- 3 files changed, 53 insertions(+), 4 deletions(-) diff --git a/addons/web/static/src/js/views/search/groupby_menu_interface_mixin.js b/addons/web/static/src/js/views/search/groupby_menu_interface_mixin.js index 9e0e1621c27..d782eb99015 100644 --- a/addons/web/static/src/js/views/search/groupby_menu_interface_mixin.js +++ b/addons/web/static/src/js/views/search/groupby_menu_interface_mixin.js @@ -54,6 +54,7 @@ var GroupByMenuInterfaceMixin = { defaultOptionId: groupby ? groupby.interval : false, }); }); + groupbys = _.sortBy(groupbys, 'description'); var groupByMenu = new GroupByMenu(this, groupbys, groupableFields, {headerStyle: 'primary'}); groupByMenu.insertAfter($node.find('div:first')); }, diff --git a/addons/web/static/src/js/widgets/dropdown_menu.js b/addons/web/static/src/js/widgets/dropdown_menu.js index 335eed80e0e..6fb8aab9bb4 100644 --- a/addons/web/static/src/js/widgets/dropdown_menu.js +++ b/addons/web/static/src/js/widgets/dropdown_menu.js @@ -52,7 +52,7 @@ var DropdownMenu = Widget.extend({ el: {class: 'btn-group o_dropdown', attrs: {}}, mainButton: {class: 'o_dropdown_toggler_btn btn btn-sm btn-default dropdown-toggle'}, }; - this.items = _.sortBy(items, 'groupId'); + this.items = items; _.each(this.items, this._prepareItem.bind(this)); }, /** diff --git a/addons/web/static/tests/views/search_view_tests.js b/addons/web/static/tests/views/search_view_tests.js index 53f387d4990..e88028e5da4 100644 --- a/addons/web/static/tests/views/search_view_tests.js +++ b/addons/web/static/tests/views/search_view_tests.js @@ -78,11 +78,18 @@ QUnit.module('Search View', { search_view_id: [5, 'search'], }, { id: 7, - name: 'Partners Action 8', + name: 'Partners Action 7', res_model: 'partner', type: 'ir.actions.act_window', views: [[2, 'list']], search_view_id: [6, 'search'], + }, { + id: 8, + name: 'Partners Action 8', + res_model: 'partner', + type: 'ir.actions.act_window', + views: [[2, 'list']], + search_view_id: [7, 'search'], } ]; @@ -118,12 +125,35 @@ QUnit.module('Search View', { 'partner,5,search': ''+ '' + '' + - '', + '', 'partner,6,search': ''+ '' + '' + '' + - '', + '', + 'partner,7,search': ''+ + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '', }; }, }, function () { @@ -475,5 +505,23 @@ QUnit.module('Search View', { $('.o_favorites_menu .o_save_name button').click(); actionManager.destroy(); }); + + QUnit.test('arch order of groups of filters preserved', function (assert) { + assert.expect(12); + + var actionManager = createActionManager({ + actions: this.actions, + archs: this.archs, + data: this.data, + }); + + actionManager.doAction(8); + $('span.fa-filter').click(); + assert.strictEqual($('.o_filters_menu .o_menu_item').length, 11); + for (var i = 0; i < 11; i++) { + assert.strictEqual($('.o_filters_menu .o_menu_item').eq(i).text().trim(), (i+1).toString()); + } + actionManager.destroy(); + }); }); });