summaryrefslogtreecommitdiff
path: root/addons/web_graph
diff options
context:
space:
mode:
authorGery Debongnie <ged@openerp.com>2013-12-16 15:49:35 +0100
committerGery Debongnie <ged@openerp.com>2013-12-16 15:49:35 +0100
commitc256cd4f14d1f1cde45f5eecdd705fe758295b4d (patch)
treedfc30e38c0bcafd82f9f7b9f705dc3a03e52fa8f /addons/web_graph
parenta22648c083e6fc9ef5170a6458bb52da5123faa6 (diff)
[REF] merges update_data and query_all_values method into load_data, to simplify code (addon web_graph)
bzr revid: ged@openerp.com-20131216144935-2ur7pgk7ml2064j0
Diffstat (limited to 'addons/web_graph')
-rw-r--r--addons/web_graph/static/src/js/graph.js2
-rw-r--r--addons/web_graph/static/src/js/pivot.js108
2 files changed, 50 insertions, 60 deletions
diff --git a/addons/web_graph/static/src/js/graph.js b/addons/web_graph/static/src/js/graph.js
index 912f56e79fc..8433e560cfd 100644
--- a/addons/web_graph/static/src/js/graph.js
+++ b/addons/web_graph/static/src/js/graph.js
@@ -163,7 +163,7 @@ instance.web_graph.GraphView = instance.web.View.extend({
display_data: function () {
var pivot = this.pivot_table;
if (pivot.stale_data) {
- pivot.update_data().done(this.proxy('display_data'));
+ pivot.load_data().done(this.proxy('display_data'));
} else {
this.$('.graph_main_content svg').remove();
this.table.empty();
diff --git a/addons/web_graph/static/src/js/pivot.js b/addons/web_graph/static/src/js/pivot.js
index 1c7ae27fc31..793c9f50454 100644
--- a/addons/web_graph/static/src/js/pivot.js
+++ b/addons/web_graph/static/src/js/pivot.js
@@ -214,15 +214,6 @@ openerp.web_graph.PivotTable = openerp.web.Class.extend({
this.fold(this.cols.main);
},
- expand_headers: function (root, new_headers) {
- root.headers = new_headers;
- root.main = new_headers[0];
- _.each(root.headers, function (header) {
- header.root = root;
- header.is_expanded = (header.children.length > 0);
- });
- },
-
get_total: function (header) {
if (header) {
var main = (header.root === this.rows) ? this.cols.main : this.rows.main;
@@ -241,9 +232,45 @@ openerp.web_graph.PivotTable = openerp.web.Class.extend({
this.stale_data = true;
},
- update_data: function () {
- var self = this;
- return this.query_all_values().then(function (result) {
+ // To obtain all the values required to draw the full table, we have to do
+ // at least 2 + min(row.groupby.length, col.groupby.length)
+ // calls to readgroup. For example, if row.groupby = [r1, r2, r3] and
+ // col.groupby = [c1, c2, c3, c4], then a minimal set of calls is done
+ // with the following groupby:
+ // [], [c1, c2, c3, c4], r1, c1, c2, c3, c4], [r1, r2, c1, c2, c3, c4],
+ // [r1, r2, r3, c1, c2, c3, c4]
+ // To simplify the code, we will always do 2 + row.groupby.length calls,
+ // unless col.groupby.length = 0, in which case we do 2 calls ([] and
+ // row_groupbys), but this can be optimized later.
+ load_data: function () {
+ var self = this,
+ cols = this.cols.groupby,
+ rows = this.rows.groupby,
+ def_array,
+ groupbys;
+
+ if (cols.length > 0) {
+ groupbys = _.map(_.range(rows.length + 1), function (i) {
+ return rows.slice(0, i).concat(cols);
+ });
+ groupbys.push([]);
+ } else {
+ groupbys = [rows, []];
+ }
+ def_array = _.map(groupbys, function (groupby) {
+ return self.data_loader.get_groups(self.visible_fields(), self.domain, groupby);
+ });
+
+ return $.when.apply(null, def_array).then(function () {
+ var args = Array.prototype.slice.call(arguments),
+ col_data = _.first(args),
+ total = _.last(args)[0],
+ row_data = _.last(_.initial(args)),
+ cell_data = args;
+
+ return (total === undefined) ? undefined
+ : self.format_data(total, col_data, row_data, cell_data);
+ }).then(function (result) {
self.stale_data = false;
if (result) {
self.no_data = false;
@@ -261,6 +288,15 @@ openerp.web_graph.PivotTable = openerp.web.Class.extend({
});
},
+ expand_headers: function (root, new_headers) {
+ root.headers = new_headers;
+ root.main = new_headers[0];
+ _.each(root.headers, function (header) {
+ header.root = root;
+ header.is_expanded = (header.children.length > 0);
+ });
+ },
+
update_headers: function (root, new_headers) {
_.each(root.headers, function (header) {
var corresponding_header = _.find(new_headers, function (h) {
@@ -289,52 +325,6 @@ openerp.web_graph.PivotTable = openerp.web.Class.extend({
root.main = root.headers[0];
},
- // this method is a little tricky. In order to obtain all the values
- // required to draw the full table, we have to do at least
- // 2 + min(row.groupby.length, col.groupby.length)
- // calls to readgroup. For example, if row.groupby = [r1, r2, r3] and
- // col.groupby = [c1, c2, c3, c4], then a minimal set of calls is done
- // with the following groupby:
- // []
- // [c1, c2, c3, c4]
- // [r1, c1, c2, c3, c4]
- // [r1, r2, c1, c2, c3, c4]
- // [r1, r2, r3, c1, c2, c3, c4]
- // To simplify the code, we will always do 2 + row.groupby.length calls,
- // unless col.groupby.length = 0, in which case we do 2 calls ([] and
- // row_groupbys), but this can be optimized later.
- query_all_values: function () {
- var self = this,
- cols = this.cols.groupby,
- rows = this.rows.groupby,
- def_array,
- groupbys;
-
- if (cols.length > 0) {
- groupbys = _.map(_.range(rows.length + 1), function (i) {
- return rows.slice(0, i).concat(cols);
- });
- groupbys.push([]);
- } else {
- groupbys = [rows, []];
- }
- def_array = _.map(groupbys, function (groupby) {
- return self.data_loader.get_groups(self.visible_fields(), self.domain, groupby);
- });
-
- return $.when.apply(null, def_array).then(function () {
- var args = Array.prototype.slice.call(arguments),
- col_data = _.first(args),
- total = _.last(args)[0],
- row_data = _.last(_.initial(args)),
- cell_data = args;
-
- return (total === undefined) ? undefined
- : self.format_data(total, col_data, row_data, cell_data);
- });
-
- },
-
format_data: function (total, col_data, row_data, cell_data) {
var self = this,
dim_row = this.rows.groupby.length,
@@ -388,7 +378,7 @@ openerp.web_graph.PivotTable = openerp.web.Class.extend({
}
function make_tree_headers (data_pt, parent, max_depth) {
- var value = data_pt.attributes.value, //get_attribute_value(data_pt),
+ var value = data_pt.attributes.value,
node = {
id: _.uniqueId(),
path: parent.path.concat(value),