summaryrefslogtreecommitdiff
path: root/addons/web_graph/static/src
diff options
context:
space:
mode:
authorGery Debongnie <ged@openerp.com>2013-11-14 16:33:48 +0100
committerGery Debongnie <ged@openerp.com>2013-11-14 16:33:48 +0100
commitba5de8088bf0448a6c015ccf0292decbc03c760c (patch)
tree7bfa771181c25ad0dbfa3189a06d22919455dea5 /addons/web_graph/static/src
parent3e607e8e3c9809a4279d96727a46887eebeeb69c (diff)
[IMP] allows the user to clear the groupbys in pivottable (addon web_graph)
bzr revid: ged@openerp.com-20131114153348-bux7ldhkhe1jl29e
Diffstat (limited to 'addons/web_graph/static/src')
-rw-r--r--addons/web_graph/static/src/js/graph.js69
-rw-r--r--addons/web_graph/static/src/xml/web_graph.xml2
2 files changed, 57 insertions, 14 deletions
diff --git a/addons/web_graph/static/src/js/graph.js b/addons/web_graph/static/src/js/graph.js
index 46c739121f9..ffc773f1c3e 100644
--- a/addons/web_graph/static/src/js/graph.js
+++ b/addons/web_graph/static/src/js/graph.js
@@ -36,6 +36,9 @@ instance.web_graph.GraphView = instance.web.View.extend({
}
this.display_data();
},
+ 'click .graph_clear_groups' : function (event) {
+ this.pivot_table.clear_groups();
+ },
},
view_loading: function (fields_view_get) {
@@ -216,7 +219,7 @@ var PivotTable = BasicDataView.extend({
var dropdown_options = {
fields: _.map(this.important_fields, function (field) {
- return {id: field, value: self.fields[field].string};
+ return {id: field, value: self.get_descr(field)};
}),
row_id: event.target.attributes['data-row-id'].nodeValue,
};
@@ -235,6 +238,14 @@ var PivotTable = BasicDataView.extend({
},
},
+ clear_groups: function () {
+ this.row_groupby = [];
+ this.col_groupby = [];
+ this.rows = [];
+ this.cols = [];
+ this.draw();
+ },
+
init: function (model, options) {
this._super(model, options);
},
@@ -271,24 +282,31 @@ var PivotTable = BasicDataView.extend({
make_row: function (data, parent_id) {
var has_parent = (parent_id !== undefined);
var parent = has_parent ? this.get_row(parent_id) : null;
- var path = has_parent ? parent.path.concat(data.attributes.grouped_on)
- : [data.attributes.grouped_on];
-
+ var path;
+ if (has_parent) {
+ console.log("parent",parent);
+ path = parent.path.concat(data.attributes.grouped_on);
+ } else if (data.attributes.grouped_on !== undefined) {
+ path = [data.attributes.grouped_on];
+ } else {
+ path = [];
+ }
var indent_level = has_parent ? parent.path.length : 0;
+ var value = (this.row_groupby.length > 0) ? data.attributes.value[1] : "Total";
var jquery_row = $('<tr></tr>');
var row_id = this.generate_id();
- var header = $(this.make_cell(data.attributes.value[1], {is_border:true, indent: indent_level, foldable:true, row_id: row_id}));
+ var header = $(this.make_cell(value, {is_border:true, indent: indent_level, foldable:true, row_id: row_id}));
jquery_row.html(header);
jquery_row.append(this.make_cell(data.attributes.aggregates[this.measure]));
var row = {
id: row_id,
path: path,
- value: data.attributes.value[1],
+ value: value,
expanded: false,
parent: parent_id,
children: [],
@@ -297,6 +315,9 @@ var PivotTable = BasicDataView.extend({
};
this.rows.push(row); // to do, insert it properly
+ if (this.row_groupby.length === 0) {
+ row.remove_when_expanded = true;
+ }
if (has_parent) {
parent.children.push(row);
}
@@ -307,18 +328,31 @@ var PivotTable = BasicDataView.extend({
var self = this;
var row = this.get_row(row_id);
this.row_groupby.push(field_id);
+
var visible_fields = this.row_groupby.concat(this.col_groupby, this.measure);
+ if (row.remove_when_expanded) {
+ this.rows = [];
+ row.html_tr.remove();
+ } else {
+ row.expanded = true;
+ row.html_tr.find('.icon-plus-sign')
+ .removeClass('icon-plus-sign')
+ .addClass('icon-minus-sign');
+ }
+
query_groups(this.model, visible_fields, row.domain, [field_id])
.then(function (data) {
_.each(data, function (datapt) {
- var new_row = self.make_row(datapt, row_id);
- row.html_tr.after(new_row.html_tr);
+ var new_row;
+ if (row.remove_when_expanded) {
+ new_row = self.make_row(datapt);
+ self.$('tr.graph_table_header').after(new_row.html_tr);
+ } else {
+ new_row = self.make_row(datapt, row_id);
+ row.html_tr.after(new_row.html_tr);
+ }
});
- row.expanded = true;
- var icon = row.html_tr.find('.icon-plus-sign');
- icon.removeClass('icon-plus-sign')
- .addClass('icon-minus-sign');
});
},
@@ -332,6 +366,7 @@ var PivotTable = BasicDataView.extend({
build_table: function (data) {
var self = this;
+ console.log("data",data);
this.cols = [{
path: [],
@@ -353,12 +388,20 @@ var PivotTable = BasicDataView.extend({
this.$el.empty();
var self = this;
+ var header;
- var header = '<tr><td class="graph_border">' +
+ if (this.row_groupby.length > 0) {
+ header = '<tr><td class="graph_border">' +
this.fields[this.row_groupby[0]].string +
'</td><td class="graph_border">' +
this.measure_label +
'</td></tr>';
+ } else {
+ header = '<tr class="graph_table_header"><td class="graph_border">' +
+ '</td><td class="graph_border">' +
+ this.measure_label +
+ '</td></tr>';
+ }
this.$el.append(header);
_.each(this.rows, function (row) {
diff --git a/addons/web_graph/static/src/xml/web_graph.xml b/addons/web_graph/static/src/xml/web_graph.xml
index 19aa1018be8..5a56f34d84a 100644
--- a/addons/web_graph/static/src/xml/web_graph.xml
+++ b/addons/web_graph/static/src/xml/web_graph.xml
@@ -11,8 +11,8 @@
<li><a data-mode="line_chart" href="#">Line Chart</a></li>
<li><a data-mode="pie_chart" href="#">Pie chart</a></li>
</ul>
+ <label type="button" class="btn btn-default graph_clear_groups">Clear groups</label>
</div>
-
</div>
<div class="graph_main_content">
</div>