diff options
| author | Adrien Dieudonne <adr@odoo.com> | 2018-09-06 13:11:06 +0200 |
|---|---|---|
| committer | Adrien Dieudonne <adr@odoo.com> | 2018-09-20 15:20:03 +0200 |
| commit | b23a981320293e60d5e509e2f0299d934bffbe17 (patch) | |
| tree | d9ddeb46d542e96cae243c811fe87a25af2acebc /addons/web/static/src/js/views | |
| parent | 009e1ab4b6198a0f048a08d5c98d7c4fe2b2e8dc (diff) | |
[IMP] web: graph view: design improvements
This commit improves UI of charts:
- Reduce margins of svg
- Put ticks label on right of y axis
- Bigger lines (line chart only)
- ligther area color (line chart only)
- Hide y axis line
- Force charts to begin at y=0
- Hide zero tick on y axes
There is no test because these changes only concerns visual effects.
Task ID: 1877588
Diffstat (limited to 'addons/web/static/src/js/views')
| -rw-r--r-- | addons/web/static/src/js/views/graph/graph_renderer.js | 50 |
1 files changed, 32 insertions, 18 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 80edb8047ba..5942da9ed97 100644 --- a/addons/web/static/src/js/views/graph/graph_renderer.js +++ b/addons/web/static/src/js/views/graph/graph_renderer.js @@ -308,8 +308,8 @@ return AbstractRenderer.extend({ this.state.data.forEach(self._sanitizeLabel); var data = []; - var tickValues; - var tickFormat; + var ticksLabels = []; + var tickValues = []; var measure = this.state.fields[this.state.measure].string; var values; @@ -345,7 +345,6 @@ return AbstractRenderer.extend({ }); } - var ticksLabels = []; for (i = 0; i < graphData.length; i++) { ticksLabels.push(graphData[i].labels); } @@ -363,22 +362,17 @@ return AbstractRenderer.extend({ } } } - - tickFormat = function (d) { - return ticksLabels[d]; - }; } else if (this.state.groupedBy.length > 1) { var data_dict = {}; var tick = 0; - var tickLabels = []; var serie, tickLabel; var identity = function (p) {return p;}; - tickValues = []; + for (var i = 0; i < this.state.data.length; i++) { if (graphData[i].labels[0] !== tickLabel) { tickLabel = this.state.data[i].labels[0]; tickValues.push(tick); - tickLabels.push(tickLabel); + ticksLabels.push(tickLabel); tick++; } serie = graphData[i].labels[1]; @@ -393,8 +387,8 @@ return AbstractRenderer.extend({ }); data = _.map(data_dict, identity); } - tickFormat = function (d) {return tickLabels[d];}; } + var $svgContainer = $('<div/>', {class: 'o_graph_svg_container'}); this.$el.append($svgContainer); var svg = d3.select($svgContainer[0]).append('svg'); @@ -404,22 +398,34 @@ return AbstractRenderer.extend({ var chart = nv.models.lineChart(); chart.options({ - margin: {left: 80, bottom: 100, top: 80, right: 80}, + margin: {left: 0, bottom: 20, top: 0, right: 0}, useInteractiveGuideline: true, showLegend: _.size(data) <= MAX_LEGEND_LENGTH, showXAxis: true, showYAxis: true, wrapLabels: true, }); - chart.xAxis.tickValues(tickValues) - .tickFormat(tickFormat); - chart.yAxis.tickFormat(function (d) { - return field_utils.format.float(d, { - digits : self.state.fields[self.state.measure] && self.state.fields[self.state.measure].digits || [69, 2], + chart.forceY([0]); + chart.xAxis + .tickValues(tickValues) + .tickFormat(function (d) { + return ticksLabels[d]; }); - }); + chart.yAxis + .showMaxMin(false) + .tickFormat(function (d) { + return field_utils.format.float(d, { + digits : self.state.fields[self.state.measure] && self.state.fields[self.state.measure].digits || [69, 2], + }); + }); + chart.yAxis.tickPadding(5); + chart.yAxis.orient("right"); chart(svg); + + // Bigger line (stroke-width 1.5 is hardcoded in nv.d3) + $svgContainer.find('.nvd3 .nv-groups g.nv-group').css('stroke-width', '3px') + return chart; }, /** @@ -441,6 +447,14 @@ return AbstractRenderer.extend({ } } var chart1 = 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 () { + $('.nv-y .tick > line').attr('x2', function (i, value) { + return Math.abs(value); + }); + }) + chartResize(chart1); if (this.state.mode === 'pie' && this.isComparison) { var chart2 = this['_render' + _.str.capitalize(this.state.mode) + 'Chart'](this.state.comparisonData); |
