[MERGE] merge trunk-new-graphview-ged into trunk (tweaks to pivot table look, and some bug fixes)
bzr revid: ged@openerp.com-20140130142723-9yt19h8x7vgt3woe
This commit is contained in:
@@ -234,9 +234,9 @@ instance.web.QueryGroup = instance.web.Class.extend({
|
||||
this.model = new instance.web.Model(
|
||||
model, fixed_group.__context, fixed_group.__domain);
|
||||
|
||||
var group_size = fixed_group[grouping_field + '_count'] || fixed_group.__count || 0;
|
||||
var raw_field = grouping_field && grouping_field.split(':')[0];
|
||||
var group_size = fixed_group[raw_field + '_count'] || fixed_group.__count || 0;
|
||||
var leaf_group = fixed_group.__context.group_by.length === 0;
|
||||
var raw_field = (_.contains(grouping_field, ':')) ? grouping_field.split(':')[0] : grouping_field;
|
||||
|
||||
this.attributes = {
|
||||
folded: !!(fixed_group.__fold),
|
||||
|
||||
@@ -6,6 +6,15 @@
|
||||
border-bottom: 1px solid #ccc;
|
||||
padding: 6px 8px;
|
||||
text-align: right;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.graph_main_content td:first-child {
|
||||
background-color: rgb(240, 238, 238);
|
||||
}
|
||||
|
||||
.graph_main_content table {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.graph_measure_selection .oe_selected {
|
||||
@@ -26,30 +35,44 @@
|
||||
.graph_main_content th {
|
||||
font-size: 13px;
|
||||
font-weight: normal;
|
||||
color: #039;
|
||||
padding: 10px 8px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.graph_main_content thead {
|
||||
border: 1px solid #6678b1;
|
||||
border-bottom: 2px solid #6678b1;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.graph_main_content tbody td{
|
||||
border: 1px solid #ccc;
|
||||
border: 1px solid #b8b8b8;
|
||||
}
|
||||
|
||||
.graph_main_content tbody {
|
||||
border-top: 1px solid black;
|
||||
}
|
||||
|
||||
.graph_main_content thead {
|
||||
background-color: rgb(240, 238, 238);
|
||||
border: 1px solid #b8b8b8;
|
||||
}
|
||||
|
||||
.graph_main_content thead th {
|
||||
border-left: 1px solid #b8b8b8;
|
||||
}
|
||||
|
||||
div.graph_widget {
|
||||
padding:10px;
|
||||
}
|
||||
|
||||
.oe_dashboard div.graph_widget {
|
||||
padding:0;
|
||||
}
|
||||
|
||||
td.graph_border {
|
||||
color: #039;
|
||||
text-align: left;
|
||||
border-right: 1px solid #6678b1;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.graph_main_content tbody tr:hover td
|
||||
.graph_main_content table:not(.heatmap) tr:hover td:not(:first-child)
|
||||
{
|
||||
color: #009;
|
||||
background-color: rgb(245, 245, 245);
|
||||
}
|
||||
|
||||
span.field-selection {
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
(function () {
|
||||
'use strict';
|
||||
var QWeb = openerp.web.qweb;
|
||||
var _lt = openerp.web._lt;
|
||||
var _t = openerp.web._t;
|
||||
|
||||
nv.dev = false; // sets nvd3 library in production mode
|
||||
|
||||
openerp.web_graph.Graph = openerp.web.Widget.extend({
|
||||
@@ -18,7 +21,6 @@ openerp.web_graph.Graph = openerp.web.Widget.extend({
|
||||
this.domain = domain;
|
||||
this.mode = options.mode || 'pivot'; // pivot, bar, pie, line
|
||||
this.heatmap_mode = options.heatmap_mode || 'none';
|
||||
this.title = options.title || 'Graph';
|
||||
this.visible_ui = options.visible_ui || true;
|
||||
this.bar_ui = options.bar_ui || 'group';
|
||||
this.graph_view = options.graph_view || null;
|
||||
@@ -39,7 +41,7 @@ openerp.web_graph.Graph = openerp.web.Widget.extend({
|
||||
|
||||
return this.model.call('fields_get', []).then(function (f) {
|
||||
self.fields = f;
|
||||
self.fields.__count = {field:'__count', type: 'integer', string:'Quantity'};
|
||||
self.fields.__count = {field:'__count', type: 'integer', string:_t('Quantity')};
|
||||
self.important_fields = self.get_search_fields();
|
||||
self.measure_list = self.get_measures();
|
||||
self.add_measures_to_options();
|
||||
@@ -360,6 +362,7 @@ openerp.web_graph.Graph = openerp.web.Widget.extend({
|
||||
this.$('.graph_main_content svg').remove();
|
||||
this.$('.graph_main_content div').remove();
|
||||
this.table.empty();
|
||||
this.table.toggleClass('heatmap', this.heatmap_mode !== 'none')
|
||||
this.width = this.$el.width();
|
||||
this.height = Math.min(Math.max(document.documentElement.clientHeight - 116 - 60, 250), Math.round(0.8*this.$el.width()));
|
||||
|
||||
@@ -381,12 +384,6 @@ openerp.web_graph.Graph = openerp.web.Widget.extend({
|
||||
// Drawing the table
|
||||
// ----------------------------------------------------------------------
|
||||
draw_table: function () {
|
||||
this.pivot.main_row().title = 'Total';
|
||||
if (this.pivot.measures.length == 1) {
|
||||
this.pivot.main_col().title = this.pivot.measures[0].string;
|
||||
} else {
|
||||
this.pivot.main_col().title = this.title;
|
||||
}
|
||||
this.draw_top_headers();
|
||||
_.each(this.pivot.rows.headers, this.proxy('draw_row'));
|
||||
},
|
||||
@@ -449,7 +446,7 @@ openerp.web_graph.Graph = openerp.web.Widget.extend({
|
||||
} else {
|
||||
make_cells(pivot.main_col().children, 1);
|
||||
if (pivot.get_cols_leaves().length > 1) {
|
||||
header_cells[0].push(self.make_border_cell(pivot.measures.length, height, true).text('Total').css('font-weight', 'bold'));
|
||||
header_cells[0].push(self.make_border_cell(pivot.measures.length, height, true).text(_t('Total')).css('font-weight', 'bold'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -554,8 +551,8 @@ openerp.web_graph.Graph = openerp.web.Widget.extend({
|
||||
|
||||
// No groupby
|
||||
if ((dim_x === 0) && (dim_y === 0)) {
|
||||
data = [{key: 'Total', values:[{
|
||||
x: 'Total',
|
||||
data = [{key: _t('Total'), values:[{
|
||||
x: _t('Total'),
|
||||
y: this.pivot.get_total(),
|
||||
}]}];
|
||||
// Only column groupbys
|
||||
@@ -570,7 +567,7 @@ openerp.web_graph.Graph = openerp.web.Widget.extend({
|
||||
} else if ((dim_x === 1) && (dim_y === 0)) {
|
||||
data = _.map(this.pivot.main_row().children, function (pt) {
|
||||
var value = self.pivot.get_total(pt),
|
||||
title = (pt.title !== undefined) ? pt.title : 'Undefined';
|
||||
title = (pt.title !== undefined) ? pt.title : _t('Undefined');
|
||||
return {x: title, y: value};
|
||||
});
|
||||
data = [{key: self.pivot.measures[0].string, values:data}];
|
||||
@@ -579,24 +576,24 @@ openerp.web_graph.Graph = openerp.web.Widget.extend({
|
||||
data = _.map(this.pivot.get_cols_with_depth(1), function (colhdr) {
|
||||
var values = _.map(self.pivot.get_rows_with_depth(1), function (header) {
|
||||
return {
|
||||
x: header.title || 'Undefined',
|
||||
x: header.title || _t('Undefined'),
|
||||
y: self.pivot.get_values(header.id, colhdr.id)[0] || 0
|
||||
};
|
||||
});
|
||||
return {key: colhdr.title || 'Undefined', values: values};
|
||||
return {key: colhdr.title || _t('Undefined'), values: values};
|
||||
});
|
||||
// At least two row groupby
|
||||
} else {
|
||||
var keys = _.uniq(_.map(this.pivot.get_rows_with_depth(2), function (hdr) {
|
||||
return hdr.title || 'Undefined';
|
||||
return hdr.title || _t('Undefined');
|
||||
}));
|
||||
data = _.map(keys, function (key) {
|
||||
var values = _.map(self.pivot.get_rows_with_depth(1), function (hdr) {
|
||||
var subhdr = _.find(hdr.children, function (child) {
|
||||
return ((child.title === key) || ((child.title === undefined) && (key === 'Undefined')));
|
||||
return ((child.title === key) || ((child.title === undefined) && (key === _t('Undefined'))));
|
||||
});
|
||||
return {
|
||||
x: hdr.title || 'Undefined',
|
||||
x: hdr.title || _t('Undefined'),
|
||||
y: (subhdr) ? self.pivot.get_total(subhdr)[0] : 0
|
||||
};
|
||||
});
|
||||
@@ -640,7 +637,7 @@ openerp.web_graph.Graph = openerp.web.Widget.extend({
|
||||
return {x: row.title, y: self.pivot.get_values(row.id,col.id)[0] || 0};
|
||||
});
|
||||
var title = _.map(col.path, function (p) {
|
||||
return p || 'Undefined';
|
||||
return p || _t('Undefined');
|
||||
}).join('/');
|
||||
if (dim_y === 0) {
|
||||
title = self.pivot.measures[0].string;
|
||||
@@ -670,7 +667,7 @@ openerp.web_graph.Graph = openerp.web.Widget.extend({
|
||||
dim_x = this.pivot.rows.groupby.length;
|
||||
var data = _.map(this.pivot.get_rows_leaves(), function (row) {
|
||||
var title = _.map(row.path, function (p) {
|
||||
return p || 'Undefined';
|
||||
return p || _t('Undefined');
|
||||
}).join('/');
|
||||
if (dim_x === 0) {
|
||||
title = self.measure_label;
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
var _lt = openerp.web._lt;
|
||||
var _t = openerp.web._t;
|
||||
|
||||
// PivotTable requires a call to update_data after initialization
|
||||
openerp.web_graph.PivotTable = openerp.web.Class.extend({
|
||||
|
||||
@@ -13,7 +16,7 @@ openerp.web_graph.PivotTable = openerp.web.Class.extend({
|
||||
this.no_data = true;
|
||||
this.model = model;
|
||||
this.fields = fields;
|
||||
this.fields.__count = {type: 'integer', string:'Quantity'};
|
||||
this.fields.__count = {type: 'integer', string:_t('Quantity')};
|
||||
this.measures = options.measures || [];
|
||||
this.rows = { groupby: options.row_groupby, headers: null };
|
||||
this.cols = { groupby: options.col_groupby, headers: null };
|
||||
@@ -235,7 +238,7 @@ openerp.web_graph.PivotTable = openerp.web.Class.extend({
|
||||
},
|
||||
|
||||
make_header: function (group, parent) {
|
||||
var title = parent ? group.attributes.value : '';
|
||||
var title = parent ? group.attributes.value : _t('Total');
|
||||
return {
|
||||
id: _.uniqueId(),
|
||||
path: parent ? parent.path.concat(title) : [],
|
||||
@@ -397,11 +400,11 @@ openerp.web_graph.PivotTable = openerp.web.Class.extend({
|
||||
grouped_on = attrs.grouped_on ? this.raw_field(attrs.grouped_on) : false;
|
||||
|
||||
if (value === false) {
|
||||
group.attributes.value = 'undefined';
|
||||
group.attributes.value = _t('Undefined');
|
||||
} else if (grouped_on && this.fields[grouped_on].type === 'selection') {
|
||||
var selection = this.fields[grouped_on].selection,
|
||||
value_lookup = _.where(selection, {0:value});
|
||||
group.attributes.value = value_lookup ? value_lookup[0][1] : 'undefined';
|
||||
group.attributes.value = value_lookup ? value_lookup[0][1] : _t('Undefined');
|
||||
} else if (value instanceof Array) {
|
||||
group.attributes.value = value[1];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user