summaryrefslogtreecommitdiff
path: root/addons/web_graph
diff options
context:
space:
mode:
authorGery Debongnie <ged@openerp.com>2013-11-15 17:32:47 +0100
committerGery Debongnie <ged@openerp.com>2013-11-15 17:32:47 +0100
commitafb1382575c2904fb40217c8cba7fee2d3de0d17 (patch)
treebe4b5736152d99a6e60b9cf35a6a30d9a56cd7ae /addons/web_graph
parent990deeebe465ae9ee992b1251b89c46683d84589 (diff)
[ADD] forgot to add utility.js file to addon web_graph
bzr revid: ged@openerp.com-20131115163247-9tv5t7w9ygcmcnnm
Diffstat (limited to 'addons/web_graph')
-rw-r--r--addons/web_graph/static/src/js/utility.js38
1 files changed, 38 insertions, 0 deletions
diff --git a/addons/web_graph/static/src/js/utility.js b/addons/web_graph/static/src/js/utility.js
new file mode 100644
index 00000000000..9f4ab2bb6a3
--- /dev/null
+++ b/addons/web_graph/static/src/js/utility.js
@@ -0,0 +1,38 @@
+
+function removeFromArray(array, element) {
+ var index = array.indexOf(element);
+ if (index > -1) {
+ array.splice(index, 1);
+ }
+}
+
+/**
+ * Query the server and return a deferred which will return the data
+ * with all the groupbys applied (this is done for now, but the goal
+ * is to modify read_group in order to allow eager and lazy groupbys
+ */
+function query_groups (model, fields, domain, groupbys) {
+ return model.query(fields)
+ .filter(domain)
+ .group_by(groupbys)
+ .then(function (results) {
+ var non_empty_results = _.filter(results, function (group) {
+ return group.attributes.length > 0;
+ });
+ if (groupbys.length <= 1) {
+ return non_empty_results;
+ } else {
+ var get_subgroups = $.when.apply(null, _.map(non_empty_results, function (result) {
+ var new_domain = result.model._domain;
+ var new_groupings = groupbys.slice(1);
+ return query_groups(model, fields,new_domain, new_groupings).then(function (subgroups) {
+ result.subgroups_data = subgroups;
+ });
+ }));
+ return get_subgroups.then(function () {
+ return non_empty_results;
+ });
+ }
+ });
+}
+