summaryrefslogtreecommitdiff
path: root/addons/web_graph/static/src/js
diff options
context:
space:
mode:
authorXavier Morel <xmo@openerp.com>2011-12-14 14:59:30 +0100
committerXavier Morel <xmo@openerp.com>2011-12-14 14:59:30 +0100
commit032ba8b1b7fc5d7230ba635a32e9675d4871d174 (patch)
tree3cbf37d8221584fd5594d4bfd8482c96c209ec60 /addons/web_graph/static/src/js
parentce67d2252c6c4f3e615f7aa1bda6e1578c0c13e2 (diff)
parent165f43d2ce63e2c4ad6c513466e7e79173422d55 (diff)
[ADD] line and area chart types support
bzr revid: xmo@openerp.com-20111214135930-1u461pi2ym2y9nij
Diffstat (limited to 'addons/web_graph/static/src/js')
-rw-r--r--addons/web_graph/static/src/js/graph.js65
1 files changed, 43 insertions, 22 deletions
diff --git a/addons/web_graph/static/src/js/graph.js b/addons/web_graph/static/src/js/graph.js
index 8c330434075..6cf9998fdda 100644
--- a/addons/web_graph/static/src/js/graph.js
+++ b/addons/web_graph/static/src/js/graph.js
@@ -177,19 +177,20 @@ openerp.web_graph.GraphView = openerp.web.View.extend({
graph_data = _(graph_data).sortBy(function (point) {
return point[self.abscissa] + '[[--]]' + point[self.group_field];
});
-
- if (this.chart == 'bar') {
- return this.schedule_bar(graph_data);
+ if (this.chart == 'bar' || 'line' || 'area') {
+ return this.schedule_bar_line_area(graph_data);
} else if (this.chart == "pie") {
return this.schedule_pie(graph_data);
}
},
-
- schedule_bar: function(results) {
+ schedule_bar_line_area: function(results) {
var self = this;
- var group_list, view_chart;
+ var group_list,
+ view_chart = (self.chart == 'line')?'line':(self.chart == 'area')?'area':'';
if (!this.group_field) {
- view_chart = (this.orientation === 'horizontal') ? 'barH' : 'bar';
+ if (self.chart == 'bar'){
+ view_chart = (this.orientation === 'horizontal') ? 'barH' : 'bar';
+ }
group_list = _(this.columns).map(function (column, index) {
return {
group: column.name,
@@ -202,7 +203,7 @@ openerp.web_graph.GraphView = openerp.web.View.extend({
// value) and stacked bar charts (basically the same but with the
// columns on top of one another instead of side by side), but it
// does not handle clustered stacked bar charts
- if (this.columns.length > 1) {
+ if (self.chart == 'bar' && (this.columns.length > 1)) {
this.$element.text(
'OpenERP Web does not support combining grouping and '
+ 'multiple columns in graph at this time.');
@@ -211,8 +212,10 @@ openerp.web_graph.GraphView = openerp.web.View.extend({
}
// transform series for clustered charts into series for stacked
// charts
- view_chart = (this.orientation === 'horizontal')
- ? 'stackedBarH' : 'stackedBar';
+ if (self.chart == 'bar'){
+ view_chart = (this.orientation === 'horizontal')
+ ? 'stackedBarH' : 'stackedBar';
+ }
group_list = _(results).chain()
.pluck(this.group_field)
.uniq()
@@ -253,7 +256,7 @@ openerp.web_graph.GraphView = openerp.web.View.extend({
};
var x_axis, y_axis;
- if (self.orientation == 'horizontal') {
+ if (self.chart == 'bar' && self.orientation == 'horizontal') {
x_axis = ordinate_description;
y_axis = abscissa_description;
} else {
@@ -266,11 +269,12 @@ openerp.web_graph.GraphView = openerp.web.View.extend({
return;
}
self.renderer = null;
- var bar_chart = new dhtmlXChart({
+ var charts = new dhtmlXChart({
view: view_chart,
- container: self.element_id+"-barchart",
+ container: self.element_id+"-"+self.chart+"chart",
value:"#"+group_list[0].group+"#",
- gradient: "3d",
+ gradient: (self.chart == "bar") ? "3d" : "light",
+ alpha: (self.chart == "area") ? 0.6 : 1,
border: false,
width: 1024,
tooltip:{
@@ -278,7 +282,15 @@ openerp.web_graph.GraphView = openerp.web.View.extend({
self.abscissa, group_list[0].text, group_list[0].group)
},
radius: 0,
- color:group_list[0].color,
+ color: (self.chart != "line") ? group_list[0].color : "",
+ item: (self.chart == "line") ? {
+ borderColor: group_list[0].color,
+ color: "#000000"
+ } : "",
+ line: (self.chart == "line") ? {
+ color: group_list[0].color,
+ width: 3
+ } : "",
origin:0,
xAxis: x_axis,
yAxis: y_axis,
@@ -296,23 +308,32 @@ openerp.web_graph.GraphView = openerp.web.View.extend({
}
}
});
+
for (var m = 1; m<group_list.length;m++){
var column = group_list[m];
if (column.group === self.group_field) { continue; }
- bar_chart.addSeries({
+ charts.addSeries({
value: "#"+column.group+"#",
tooltip:{
template: _.str.sprintf("#%s#, %s=#%s#",
self.abscissa, column.text, column.group)
},
- color: column.color
+ color: (self.chart != "line") ? column.color : "",
+ item: (self.chart == "line") ? {
+ borderColor: column.color,
+ color: "#000000"
+ } : "",
+ line: (self.chart == "line") ? {
+ color: column.color,
+ width: 3
+ } : ""
});
}
- bar_chart.parse(results, "json");
- self.$element.find("#"+self.element_id+"-barchart").height(
- self.$element.find("#"+self.element_id+"-barchart").height()+50);
- bar_chart.attachEvent("onItemClick", function(id) {
- self.open_list_view(bar_chart.get(id));
+ charts.parse(results, "json");
+ self.$element.find("#"+self.element_id+"-"+self.chart+"chart").height(
+ self.$element.find("#"+self.element_id+"-"+self.chart+"chart").height()+50);
+ charts.attachEvent("onItemClick", function(id) {
+ self.open_list_view(charts.get(id));
});
};
if (this.renderer) {