summaryrefslogtreecommitdiff
path: root/addons/web_graph/static/src/js
diff options
context:
space:
mode:
authorGery Debongnie <ged@openerp.com>2014-01-13 14:38:00 +0100
committerGery Debongnie <ged@openerp.com>2014-01-13 14:38:00 +0100
commite2bb629c3c2528c26b216ff8fe21b4c4fb7634e0 (patch)
treeb30b6a1721d27c1d89eb0f0a0c4e7fba43faa5a3 /addons/web_graph/static/src/js
parent58598420fc0af5a7c8fdc6fd28b1c9ec08dae3ca (diff)
[IMP] adds support for various intervals when grouping by date in graph view (addon web_graph)
bzr revid: ged@openerp.com-20140113133800-3n1hi5ajpioktr3d
Diffstat (limited to 'addons/web_graph/static/src/js')
-rw-r--r--addons/web_graph/static/src/js/graph.js12
-rw-r--r--addons/web_graph/static/src/js/pivot.js35
2 files changed, 41 insertions, 6 deletions
diff --git a/addons/web_graph/static/src/js/graph.js b/addons/web_graph/static/src/js/graph.js
index d92d09f3a8c..abd1d41d629 100644
--- a/addons/web_graph/static/src/js/graph.js
+++ b/addons/web_graph/static/src/js/graph.js
@@ -369,7 +369,7 @@ instance.web_graph.Graph = instance.web.Widget.extend(openerp.EventDispatcherMix
return;
}
var fields = _.map(this.important_fields, function (field) {
- return {id: field, value: self.fields[field].string};
+ return {id: field, value: self.fields[field].string, type:self.fields[field].type};
});
this.dropdown = $(QWeb.render('field_selection', {fields:fields, header_id:id}));
$(event.target).after(this.dropdown);
@@ -383,9 +383,15 @@ instance.web_graph.Graph = instance.web.Widget.extend(openerp.EventDispatcherMix
field_selection: function (event) {
var id = event.target.attributes['data-id'].nodeValue,
- field_id = event.target.attributes['data-field-id'].nodeValue;
+ field_id = event.target.attributes['data-field-id'].nodeValue,
+ interval;
event.preventDefault();
- this.pivot.expand(id, field_id);
+ if (this.fields[field_id].type === 'date' || this.fields[field_id].type === 'datetime') {
+ interval = event.target.attributes['data-interval'].nodeValue;
+ this.pivot.expand(id, {field: field_id, interval: interval});
+ } else {
+ this.pivot.expand(id, field_id);
+ }
},
/******************************************************************************
diff --git a/addons/web_graph/static/src/js/pivot.js b/addons/web_graph/static/src/js/pivot.js
index 69630d360a1..62d6e35b77c 100644
--- a/addons/web_graph/static/src/js/pivot.js
+++ b/addons/web_graph/static/src/js/pivot.js
@@ -107,6 +107,9 @@ openerp.web_graph.PivotTable = openerp.web.Class.extend(openerp.EventDispatcherM
},
create_field_value: function (f) {
+ if (f.field && f.interval) {
+ return {field:f.field, string: this.fields[f.field].string, type:this.fields[f.field].type, interval: f.interval};
+ }
return (f.field && f.string && f.type) ? f : {field: f, string: this.fields[f].string, type: this.fields[f].type};
},
@@ -376,11 +379,37 @@ openerp.web_graph.PivotTable = openerp.web.Class.extend(openerp.EventDispatcherM
_query_db: function (groupby, fields, domain, path) {
var self = this,
- field_ids = _.without(_.pluck(fields, 'field'), '__count');
- // To do : add code to check if groupby is date/datetime
- // and in that case, add the correct code to the context
+ field_ids = _.without(_.pluck(fields, 'field'), '__count'),
+ context = {};
+
+ if (groupby.interval) {
+ context.datetime_format = {};
+ var display_format;
+ switch (groupby.interval) {
+ case 'day':
+ display_format = 'dd MMMM YYYY';
+ break;
+ case 'week':
+ display_format = 'w YYYY';
+ break;
+ case 'month':
+ display_format = 'MMMM YYYY';
+ break;
+ case 'quarter':
+ display_format = 'QQQ YYYY';
+ break;
+ case 'year':
+ display_format = 'YYYY';
+ break;
+ }
+ context.datetime_format[groupby.field] = {
+ interval: groupby.interval,
+ display_format: display_format
+ };
+ }
return this.model.query(field_ids)
.filter(domain)
+ .context(context)
.group_by(groupby.field)
.then(function (results) {
var groups = _.filter(results, function (group) {