summaryrefslogtreecommitdiff
path: root/addons/web_graph/static/src
diff options
context:
space:
mode:
authorGery Debongnie <ged@openerp.com>2013-12-06 13:44:37 +0100
committerGery Debongnie <ged@openerp.com>2013-12-06 13:44:37 +0100
commitd1caee2a5f04ff5919e5a6f1240a867832a480f6 (patch)
tree649863d4e99806b5b4dacd7a300e69b16c3ee689 /addons/web_graph/static/src
parentd3fffbff509f171fe658181891d90f0476f5145b (diff)
[IMP] supports search bar integration in graph view (but not everything works yet) (addon web_graph)
bzr revid: ged@openerp.com-20131206124437-8m1gnhz3ill6w1eo
Diffstat (limited to 'addons/web_graph/static/src')
-rw-r--r--addons/web_graph/static/src/js/graph.js164
-rw-r--r--addons/web_graph/static/src/js/pivot.js30
2 files changed, 97 insertions, 97 deletions
diff --git a/addons/web_graph/static/src/js/graph.js b/addons/web_graph/static/src/js/graph.js
index 83f9ee4e33c..bd4842eac41 100644
--- a/addons/web_graph/static/src/js/graph.js
+++ b/addons/web_graph/static/src/js/graph.js
@@ -123,14 +123,20 @@ instance.web_graph.GraphView = instance.web.View.extend({
},
do_search: function (domain, context, group_by) {
+ console.log('dgb', this.default_row_groupby);
+ if (this.groupby_mode === 'getting_ready') {
+ this.groupby_mode = 'manual';
+ return;
+ }
+
var self = this,
col_groupby = get_col_groupby('ColGroupBy');
if (group_by.length || col_groupby.length) {
this.groupby_mode = 'manual';
- if (!group_by.length) {
- group_by = this.default_row_groupby;
- }
+ // if (!group_by.length) {
+ // group_by = this.default_row_groupby;
+ // }
}
this.pivot_table.set_domain(domain);
@@ -138,7 +144,7 @@ instance.web_graph.GraphView = instance.web.View.extend({
this.pivot_table.set_row_groupby(group_by);
this.pivot_table.set_col_groupby(col_groupby);
} else {
- this.pivot_table.set_row_groupby(this.default_row_groupby);
+ this.pivot_table.set_row_groupby(_.toArray(this.default_row_groupby));
this.pivot_table.set_col_groupby([]);
}
this.display_data();
@@ -190,15 +196,37 @@ instance.web_graph.GraphView = instance.web.View.extend({
/******************************************************************************
* Event handling methods...
******************************************************************************/
-
handle_header_event: function (options) {
var pivot = this.pivot_table,
id = options.id,
- header = pivot.get_header(id);
+ header = pivot.get_header(id),
+ dim = header.root.groupby.length;
+ console.log('test');
+ // debugger;
if (header.is_expanded) {
+ this.groupby_mode = 'manual';
pivot.fold(header);
- this.display_data();
+ if (header.root.groupby.length < dim) {
+ if (pivot.is_row(header.id)) {
+ this.clear_groupby('GroupBy');
+ if (header.root.groupby.length) {
+ this.register_groupby('GroupBy', header.root.groupby);
+ } else {
+
+ this.display_data();
+ }
+ } else {
+ this.clear_groupby('ColGroupBy');
+ if (header.root.groupby.length) {
+ this.register_groupby('ColGroupBy', header.root.groupby);
+ } else {
+ this.display_data();
+ }
+ }
+ } else {
+ this.display_data();
+ }
} else {
if (header.path.length < header.root.groupby.length) {
var field = header.root.groupby[header.path.length];
@@ -212,60 +240,60 @@ instance.web_graph.GraphView = instance.web.View.extend({
}
},
-
mode_selection: function (event) {
event.preventDefault();
var mode = event.target.attributes['data-mode'].nodeValue;
this.mode = mode;
this.display_data();
- // console.log('yop');
- // var attr2 = [{label: self.fields['user_id'].string, value: {
- // attrs: {domain: [], context: {'group_by':'user_id'}}
- // }}];
- // var groupbytest = {
- // category: 'GroupBy',
- // values: attr2,
- // icon: 'u',
- // field: self.search_view._s_groupby,
- // };
-
- // // console.log("rnst",self.search_view);
- // var self = this;
- // var attr = [{label: self.fields['user_id'].string, value: 'user_id'}];
- // var test = {
- // values: attr,
- // icon: 'u',
- // field: self.search_field,
- // category: _t("ColGroupBy"),
- // };
- // self.search_view.query.add(test);
- // self.search_view.query.add(groupbytest, {});
},
register_groupby: function (category, field) {
- var groupby;
+ var self = this,
+ values,
+ groupby;
if (category === 'ColGroupBy') {
+ if (!(field instanceof Array)) {
+ field = [field];
+ }
+ values = _.map(field, function (f) {
+ return {label: self.fields[f].string, value: f};
+ });
+ // values = [{label: this.fields[field].string, value: field}];
groupby = {
category: 'ColGroupBy',
- values: [{label: this.fields[field].string, value: field}],
- icon: 'u',
+ values: values,
+ icon: 'f',
field: this.search_field,
};
this.search_view.query.add(groupby);
}
if (category === 'GroupBy') {
- var value = {attrs: {domain: [], context: {'group_by':field}}};
+ if (!(field instanceof Array)) {
+ field = [field];
+ }
+ values = _.map(field, function (f) {
+ return {label: self.fields[f].string, value: {attrs:{domain: [], context: {'group_by':f}}}};
+ });
+ // var value = {attrs: {domain: [], context: {'group_by':field}}};
+ // var value2 = {attrs: {domain: [], context: {'group_by':'user_id'}}}; [{label: this.fields[field].string, value: value}, {label: 'test', value:value2}]
groupby = {
category: 'GroupBy',
- values: [{label: this.fields[field].string, value: value}],
- icon: 'u',
+ values: values,
+ icon: 'w',
field: this.search_view._s_groupby,
};
this.search_view.query.add(groupby);
}
},
+ clear_groupby: function (category) {
+ // debugger;
+ this.search_view.query.models = _.filter(this.search_view.query.models, function (model) {
+ return model.attributes.category !== category;
+ });
+ },
+
measure_selection: function (event) {
event.preventDefault();
var measure = event.target.attributes['data-choice'].nodeValue;
@@ -297,11 +325,27 @@ instance.web_graph.GraphView = instance.web.View.extend({
},
option_selection: function (event) {
+ var pivot = this.pivot_table;
event.preventDefault();
switch (event.target.attributes['data-choice'].nodeValue) {
case 'swap_axis':
this.pivot_table.swap_axis();
- this.display_data();
+ this.clear_groupby('GroupBy');
+ this.clear_groupby('ColGroupBy');
+ if (pivot.rows.groupby.length && pivot.cols.groupby.length) {
+ this.groupby_mode = 'getting_ready';
+ this.register_groupby('GroupBy', pivot.rows.groupby);
+ this.register_groupby('ColGroupBy', pivot.cols.groupby);
+ } else {
+ this.groupby_mode = 'manual';
+ if (pivot.rows.groupby.length) {
+ this.register_groupby('GroupBy', pivot.rows.groupby);
+ } else {
+ this.register_groupby('ColGroupBy', pivot.cols.groupby);
+ }
+ }
+
+ // this.display_data();
break;
case 'update_values':
this.pivot_table.stale_data = true;
@@ -328,38 +372,21 @@ instance.web_graph.GraphView = instance.web.View.extend({
event.preventDefault();
this.pivot_table.expand(id, field_id).then(function () {
- if (self.pivot_table.is_col(id)) {
- self.register_groupby('ColGroupBy', field_id);
+
+ if (self.pivot_table.is_row(id)) {
+ if (self.groupby_mode === 'default') {
+ self.groupby_mode = 'manual';
+ self.register_groupby('GroupBy', self.default_row_groupby.concat([field_id]));
+ } else {
+ self.register_groupby('GroupBy', field_id);
+ }
} else {
- self.register_groupby('GroupBy', field_id);
- // self.display_data();
+ if (self.groupby_mode === 'default') {
+ self.groupby_mode = 'getting_ready';
+ self.register_groupby('GroupBy', self.default_row_groupby);
+ }
+ self.register_groupby('ColGroupBy', field_id);
}
- // var attr = [{label: self.fields[field_id].string, value: field_id}];
- // var attr2 = [{label: self.fields[field_id].string, value: {
- // attrs: {domain: [], context: {'group_by':'stage_id'}}
- // }}];
-
- // var test = {
- // values: attr,
- // icon: 'u',
- // field: self.search_field,
- // category: _t("ColGroupBy"),
- // };
-
- // var groupbytest = {
- // category: 'GroupBy',
- // values: attr2,
- // icon: 'u',
- // field: self.search_view._s_groupby,
- // };
-
- // // console.log("rnst",self.search_view);
- // console.log('BEF ADD CGB');
- // // self.search_view.query.add(test);
- // console.log('BEF ADD RGB');
- // // self.search_view.query.add(groupbytest, {});
- // console.log('AFTER ADD GB');
- // self.display_data();
});
},
@@ -385,7 +412,6 @@ instance.web_graph.GraphView = instance.web.View.extend({
/******************************************************************************
* Drawing pivot table methods...
******************************************************************************/
-
draw_table: function () {
this.pivot_table.rows.main.title = 'Total';
this.pivot_table.cols.main.title = this.measure_label();
@@ -522,6 +548,4 @@ instance.web_graph.GraphView = instance.web.View.extend({
},
});
-
-
};
diff --git a/addons/web_graph/static/src/js/pivot.js b/addons/web_graph/static/src/js/pivot.js
index 5446fd36fb3..8748de7dda0 100644
--- a/addons/web_graph/static/src/js/pivot.js
+++ b/addons/web_graph/static/src/js/pivot.js
@@ -51,14 +51,14 @@ openerp.web_graph.PivotTable = openerp.web.Class.extend({
set_row_groupby: function (groupby) {
if (!_.isEqual(groupby, this.rows.groupby)) {
this.rows.groupby = groupby;
- this.stale_data = true;
+ this.invalidate_data();
}
},
set_col_groupby: function (groupby) {
if (!_.isEqual(groupby, this.cols.groupby)) {
this.cols.groupby = groupby;
- this.stale_data = true;
+ this.invalidate_data();
}
},
@@ -201,31 +201,6 @@ openerp.web_graph.PivotTable = openerp.web.Class.extend({
});
},
- set_groupby: function (root, groupby) {
- var self = this;
- var other_root = (root === this.cols) ? this.rows : this.cols;
-
- root.groupby = groupby;
- return this.query_all_values().then(function (result) {
- if (result) {
- var new_root_headers, new_other_root_headers;
- if (root === this.cols) {
- new_root_headers = result.col_headers;
- new_other_root_headers = result.how_headers;
- } else {
- new_root_headers = result.row_headers;
- new_other_root_headers = result.col_headers;
- }
- self.no_data = false;
- self.expand_headers(root, new_root_headers);
- self.update_headers(other_root, new_other_root_headers);
- self.cells = result.cells;
- } else {
- self.no_data = true;
- }
- });
- },
-
get_total: function (header) {
if (header) {
var main = (header.root === this.rows) ? this.cols.main : this.rows.main;
@@ -265,6 +240,7 @@ openerp.web_graph.PivotTable = openerp.web.Class.extend({
},
update_headers: function (root, new_headers) {
+ console.log('updateheader', root, new_headers);
_.each(root.headers, function (header) {
var corresponding_header = _.find(new_headers, function (h) {
return _.isEqual(h.path, header.path);