From 49136a3f031b997f959a76dbe1a210fbe0b51969 Mon Sep 17 00:00:00 2001 From: svs-odoo Date: Mon, 10 Sep 2018 09:05:57 +0200 Subject: [PATCH] [FIX] web: menu items are now correctly sorted by alphabetical order Menu items for measures list are now sorted by their 'string' value. We set that string in lowercase because uppercase/lowercase influences string comparison, so we are sure to compare always strings with the same case. This fix is effective for pivot view, cohord view and graph board. Task #1882576 --- addons/web/static/src/js/views/graph/graph_controller.js | 2 +- addons/web/static/src/js/views/pivot/pivot_controller.js | 2 +- addons/web/static/tests/views/pivot_tests.js | 7 ++++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/addons/web/static/src/js/views/graph/graph_controller.js b/addons/web/static/src/js/views/graph/graph_controller.js index b6a1c121f0f..48f15de8902 100644 --- a/addons/web/static/src/js/views/graph/graph_controller.js +++ b/addons/web/static/src/js/views/graph/graph_controller.js @@ -88,7 +88,7 @@ var GraphController = AbstractController.extend(GroupByMenuInterfaceMixin,{ renderButtons: function ($node) { if ($node) { var context = { - measures: _.sortBy(_.pairs(_.omit(this.measures, '__count__')), function (x) { return x[0]; }), + measures: _.sortBy(_.pairs(_.omit(this.measures, '__count__')), function (x) { return x[1].string.toLowerCase(); }), }; this.$buttons = $(qweb.render('GraphView.buttons', context)); this.$measureList = this.$buttons.find('.o_graph_measures_list'); diff --git a/addons/web/static/src/js/views/pivot/pivot_controller.js b/addons/web/static/src/js/views/pivot/pivot_controller.js index f5e268da285..48b5fb033fa 100644 --- a/addons/web/static/src/js/views/pivot/pivot_controller.js +++ b/addons/web/static/src/js/views/pivot/pivot_controller.js @@ -102,7 +102,7 @@ var PivotController = AbstractController.extend({ */ renderButtons: function ($node) { if ($node) { - var context = {measures: _.sortBy(_.pairs(_.omit(this.measures, '__count')), function(x) { return x[0]; })}; + var context = {measures: _.sortBy(_.pairs(_.omit(this.measures, '__count')), function (x) { return x[1].string.toLowerCase(); })}; this.$buttons = $(QWeb.render('PivotView.buttons', context)); this.$buttons.click(this._onButtonClick.bind(this)); this.$buttons.find('button').tooltip(); diff --git a/addons/web/static/tests/views/pivot_tests.js b/addons/web/static/tests/views/pivot_tests.js index 66e5a1c8cc5..9980b3fff23 100644 --- a/addons/web/static/tests/views/pivot_tests.js +++ b/addons/web/static/tests/views/pivot_tests.js @@ -1204,18 +1204,23 @@ QUnit.module('Views', { assert.expect(2); var data = this.data; + // It's important to compare capitalized and lowercased words + // to be sure the sorting is effective with both of them data.partner.fields.bouh = {string: "bouh", type: "integer"}; + data.partner.fields.modd = {string: "modd", type: "integer"}; + data.partner.fields.zip = {string: "Zip", type: "integer"}; var pivot = createView({ View: PivotView, model: "partner", data: data, arch: '' + + '' + '' + '' + + '' + '', }); - assert.strictEqual(pivot.$buttons.find('.o_pivot_measures_list .dropdown-item:first').data('field'), 'bouh', "Bouh should be the first measure"); assert.strictEqual(pivot.$buttons.find('.o_pivot_measures_list .dropdown-item:last').data('field'), '__count',