diff options
| author | Gery Debongnie <ged@openerp.com> | 2014-04-09 11:39:20 +0200 |
|---|---|---|
| committer | Gery Debongnie <ged@openerp.com> | 2014-04-09 11:39:20 +0200 |
| commit | 1330bb615e7f42a130b578f0ab79be7c0fa1765e (patch) | |
| tree | 24e0d69b1106fea5b4977554a9b6468478c7daab /addons/web_graph/static/src/js/graph_widget.js | |
| parent | 05ec7d45bacfdd9dd9b907f1987064e4d2695b9d (diff) | |
[IMP] massive optimization of the graph view code: more efficient access to values and smarter code to avoid reading uselessly many cells (graph view in web_graph)
bzr revid: ged@openerp.com-20140409093920-xqls2o6j6tocgf6l
Diffstat (limited to 'addons/web_graph/static/src/js/graph_widget.js')
| -rw-r--r-- | addons/web_graph/static/src/js/graph_widget.js | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/addons/web_graph/static/src/js/graph_widget.js b/addons/web_graph/static/src/js/graph_widget.js index 3d8d8fa2d98..317ea6cbfb9 100644 --- a/addons/web_graph/static/src/js/graph_widget.js +++ b/addons/web_graph/static/src/js/graph_widget.js @@ -453,12 +453,25 @@ openerp.web_graph.Graph = openerp.web.Widget.extend({ build_rows: function (raw) { var self = this, pivot = this.pivot, - m, cell; + m, i, cell; return _.map(pivot.rows.headers, function (row) { var cells = []; + var pivot_cells = []; + for (i = 0; i < pivot.cells.length; i++) { + if (pivot.cells[i].x == row.id || pivot.cells[i].y == row.id) { + pivot_cells.push(pivot.cells[i]); + } + } _.each(pivot.get_cols_leaves(), function (col) { - var values = pivot.get_values(row.id,col.id); + var values; + for (i = 0; i < pivot_cells.length; i++) { + if (pivot_cells[i].x == col.id || pivot_cells[i].y == col.id) { + values = pivot_cells[i].values; + break; + } + } + if (!values) { values = new Array(pivot.measures.length);} for (m = 0; m < pivot.measures.length; m++) { cells.push(self.make_cell(row,col,values[m], m, raw)); } |
