summaryrefslogtreecommitdiff
path: root/addons/web_graph/static/src/js/graph_widget.js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web_graph/static/src/js/graph_widget.js')
-rw-r--r--addons/web_graph/static/src/js/graph_widget.js28
1 files changed, 25 insertions, 3 deletions
diff --git a/addons/web_graph/static/src/js/graph_widget.js b/addons/web_graph/static/src/js/graph_widget.js
index fb738d5d593..1a7c1c1d45f 100644
--- a/addons/web_graph/static/src/js/graph_widget.js
+++ b/addons/web_graph/static/src/js/graph_widget.js
@@ -294,7 +294,11 @@ openerp.web_graph.Graph = openerp.web.Widget.extend({
self = this;
if (header.expanded) {
- this.fold(header);
+ if (header.root === this.pivot.rows) {
+ this.fold_row(header, event);
+ } else {
+ this.fold_col(header);
+ }
return;
}
if (header.path.length < header.root.groupby.length) {
@@ -353,9 +357,27 @@ openerp.web_graph.Graph = openerp.web.Widget.extend({
},
- fold: function (header) {
- var update_groupby = this.pivot.fold(header);
+ fold_row: function (header, event) {
+ var rows_before = this.pivot.rows.headers.length,
+ update_groupby = this.pivot.fold(header),
+ rows_after = this.pivot.rows.headers.length,
+ rows_removed = rows_before - rows_after;
+ if (rows_after === 1) {
+ // probably faster to redraw the unique row instead of removing everything
+ this.display_data();
+ } else {
+ var $row = $(event.target).parent().parent();
+ $row.nextAll().slice(0,rows_removed).remove();
+ }
+ if (update_groupby && this.graph_view) {
+ this.graph_view.register_groupby(this.pivot.rows.groupby, this.pivot.cols.groupby);
+ }
+ },
+
+ fold_col: function (header) {
+ var update_groupby = this.pivot.fold(header);
+
this.display_data();
if (update_groupby && this.graph_view) {
this.graph_view.register_groupby(this.pivot.rows.groupby, this.pivot.cols.groupby);