From cecac9a32a786a4bdb5d0e0c8a4847738c7ffc00 Mon Sep 17 00:00:00 2001 From: Gery Debongnie Date: Wed, 13 Nov 2013 15:44:24 +0100 Subject: [IMP] improve the rendering of the table in pivottable widget (addon web_graph) bzr revid: ged@openerp.com-20131113144424-8i4ld0fjggw6nled --- addons/web_graph/static/src/js/graph.js | 73 +++++++++++++++++++++++---------- 1 file changed, 52 insertions(+), 21 deletions(-) (limited to 'addons/web_graph/static/src') diff --git a/addons/web_graph/static/src/js/graph.js b/addons/web_graph/static/src/js/graph.js index 0361cd12e0d..f400f76d459 100644 --- a/addons/web_graph/static/src/js/graph.js +++ b/addons/web_graph/static/src/js/graph.js @@ -167,30 +167,67 @@ var BasicDataView = instance.web.Widget.extend({ */ var PivotTable = BasicDataView.extend({ template: 'pivot_table', + rows: null, + cols: null, draw: function () { - this.get_data(this.row_groupby).done(this._draw.bind(this)); + this.get_data(this.row_groupby) + .then(this.proxy('build_table')) + .done(this.proxy('_draw')); }, - _draw: function (data) { - console.log("data",data); + build_table: function (data) { + var self = this; + function make_cell (content, is_border) { + return '' + content + ''; + } + + this.cols = [{ + path: [], + value: this.measure_label, + expanded: false, + parent: null, + children: [], + html_tds: [], + domain: this.domain, + header: $(make_cell(this.measure_label, true)), + }]; + + this.rows = _.map(data, function (datapt) { + var row = $(''); + row.html(make_cell(datapt.attributes.value[1], true)); + row.append(make_cell(datapt.attributes.aggregates[self.measure])); + + return { + path: [datapt.attributes.grouped_on], + value: datapt.attributes.value[1], + expanded: false, + parent: null, + children: [], + html_tr: row, + domain: datapt.model._domain + }; + }); + }, + + _draw: function () { + this.$el.empty(); var self = this; - var rows = '' + + var header = '' + this.fields[this.row_groupby[0]].string + '' + this.measure_label + ''; + this.$el.append(header); - _.each(data, function (datapt) { - rows += '' + - datapt.attributes.value[1] + - '' + - datapt.attributes.aggregates[self.measure] + - ''; + _.each(this.rows, function (row) { + self.$el.append(row.html_tr); }); - this.$el.append(rows); + } }); @@ -202,13 +239,7 @@ var ChartView = BasicDataView.extend({ template: 'chart_view', set_mode: function (mode) { - var render_functions = { - 'bar_chart' : this.render_bar_chart, - 'line_chart' : this.render_line_chart, - 'pie_chart' : this.render_pie_chart, - }; - - this.render = render_functions[mode]; + this.render = this['render_' + mode]; this.need_redraw = true; }, @@ -232,7 +263,7 @@ var ChartView = BasicDataView.extend({ render_bar_chart: function (data) { var formatted_data = [{ key: 'Bar chart', - values: _.map(data, this.format_data.bind(this)), + values: _.map(data, this.proxy('format_data')), }]; nv.addGraph(function () { @@ -257,7 +288,7 @@ var ChartView = BasicDataView.extend({ render_line_chart: function (data) { var formatted_data = [{ key: this.measure_label, - values: _.map(data, this.format_data.bind(this)) + values: _.map(data, this.proxy('format_data')) }]; nv.addGraph(function () { @@ -278,7 +309,7 @@ var ChartView = BasicDataView.extend({ }, render_pie_chart: function (data) { - var formatted_data = _.map(data, this.format_data.bind(this)); + var formatted_data = _.map(data, this.proxy('format_data')); nv.addGraph(function () { var chart = nv.models.pieChart() -- cgit v1.2.3