From a533b9f29090e56bbffbabb90628cd117c166d62 Mon Sep 17 00:00:00 2001 From: Adrien Dieudonne Date: Wed, 19 Sep 2018 11:42:43 +0200 Subject: [PATCH] [FIX] web: graph_renderer: show graph title Since odoo/enterprise@e3b0d2a, the title wasn't set anymore. This logic is now moved in the graph renderer to be able to set a title in every graphs. For now, we only use the title attribute for pie charts embedded in dashboard views. Additional tests has been added in 'web_dashboard' (enterprise). --- .../src/js/views/graph/graph_renderer.js | 32 +++++++++++++++---- .../static/src/js/views/graph/graph_view.js | 1 + addons/web/static/src/js/widgets/pie_chart.js | 1 - addons/web/static/src/xml/pie_chart.xml | 2 +- addons/web/static/tests/views/graph_tests.js | 15 +++++++++ doc/reference/views.rst | 3 ++ 6 files changed, 46 insertions(+), 8 deletions(-) diff --git a/addons/web/static/src/js/views/graph/graph_renderer.js b/addons/web/static/src/js/views/graph/graph_renderer.js index 5942da9ed97..653281ad214 100644 --- a/addons/web/static/src/js/views/graph/graph_renderer.js +++ b/addons/web/static/src/js/views/graph/graph_renderer.js @@ -35,6 +35,7 @@ return AbstractRenderer.extend({ this._super.apply(this, arguments); this.isComparison = !!state.comparisonData; this.stacked = this.isComparison ? false : params.stacked; + this.title = params.title || ''; }, /** * @override @@ -446,20 +447,39 @@ return AbstractRenderer.extend({ chart.tooltip.chartContainer(self.$('.o_graph_svg_container').last()[0]); } } - var chart1 = this['_render' + _.str.capitalize(this.state.mode) + 'Chart'](this.state.data); + var chart = this['_render' + _.str.capitalize(this.state.mode) + 'Chart'](this.state.data); // FIXME: When 'orient' is right for Y axis, horizontal lines aren't displayed correctly - chart1.dispatch.on('renderEnd', function () { + chart.dispatch.on('renderEnd', function () { $('.nv-y .tick > line').attr('x2', function (i, value) { return Math.abs(value); }); }) - chartResize(chart1); + chartResize(chart); + if (this.state.mode === 'pie' && this.isComparison) { - var chart2 = this['_render' + _.str.capitalize(this.state.mode) + 'Chart'](this.state.comparisonData); - chartResize(chart2); - chart1.update(); + // Render graph title + var timeRangeMenuData = this.state.context.timeRangeMenuData; + var chartTitle = this.title + ' (' + timeRangeMenuData.timeRangeDescription + ')'; + this.$('.o_graph_svg_container').last().prepend($('