[FIX] formatting of aggregated fields, formatting of floats in list view (use digits if available, otherwise default to 2)

bzr revid: xmo@openerp.com-20110725102949-z7nkuwyybuczazxy
This commit is contained in:
Xavier Morel 2011-07-25 12:29:49 +02:00
parent 6b9ba5d46e
commit 05b9d6217f
2 changed files with 21 additions and 18 deletions

View File

@ -29,9 +29,11 @@ openerp.base.list = {
return value_if_empty === undefined ? '' : value_if_empty; return value_if_empty === undefined ? '' : value_if_empty;
} }
switch (column.widget || column.type) { switch (column.widget || column.type) {
case 'many2one': case 'integer':
// name_get value format return _.sprintf('%d', record.value);
return record.value[1]; case 'float':
var precision = column.digits ? column.digits[1] : 2;
return _.sprintf('%.' + precision + 'f', record.value);
case 'float_time': case 'float_time':
return _.sprintf("%02d:%02d", return _.sprintf("%02d:%02d",
Math.floor(record.value), Math.floor(record.value),
@ -40,6 +42,9 @@ openerp.base.list = {
return _.sprintf( return _.sprintf(
'<progress value="%.2f" max="100.0">%.2f%%</progress>', '<progress value="%.2f" max="100.0">%.2f%%</progress>',
record.value, record.value); record.value, record.value);
case 'many2one':
// name_get value format
return record.value[1];
default: default:
return record.value; return record.value;
} }
@ -352,12 +357,10 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi
return {}; return {};
} }
return { return _.extend({}, column, {
field: column.id,
type: column.type,
'function': aggregation_func, 'function': aggregation_func,
label: column[aggregation_func] label: column[aggregation_func]
}; });
}); });
}, },
/** /**
@ -571,11 +574,11 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi
} }
var count = 0, sums = {}; var count = 0, sums = {};
_(columns).each(function (column) { sums[column.field] = 0; }); _(columns).each(function (column) { sums[column.id] = 0; });
_(records).each(function (record) { _(records).each(function (record) {
count += record.count || 1; count += record.count || 1;
_(columns).each(function (column) { _(columns).each(function (column) {
var field = column.field; var field = column.id;
switch (column['function']) { switch (column['function']) {
case 'sum': case 'sum':
sums[field] += record.values[field]; sums[field] += record.values[field];
@ -589,13 +592,13 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi
var aggregates = {}; var aggregates = {};
_(columns).each(function (column) { _(columns).each(function (column) {
var field = column.field; var field = column.id;
switch (column['function']) { switch (column['function']) {
case 'sum': case 'sum':
aggregates[field] = sums[field]; aggregates[field] = {value: sums[field]};
break; break;
case 'avg': case 'avg':
aggregates[field] = sums[field] / count; aggregates[field] = {value: sums[field] / count};
break; break;
} }
}); });
@ -608,9 +611,9 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi
if (!column['function']) { if (!column['function']) {
return; return;
} }
var pattern = (column.type == 'integer') ? '%d' : '%.2f';
$footer_cells.filter(_.sprintf('[data-field=%s]', column.field)) $footer_cells.filter(_.sprintf('[data-field=%s]', column.id))
.text(_.sprintf(pattern, aggregation[column.field])); .html(openerp.base.list.render_cell(aggregation, column));
}); });
} }
// TODO: implement reorder (drag and drop rows) // TODO: implement reorder (drag and drop rows)
@ -988,8 +991,8 @@ openerp.base.ListView.Groups = openerp.base.Class.extend( /** @lends openerp.bas
row_data[group.grouped_on] = group; row_data[group.grouped_on] = group;
var group_column = _(self.columns).detect(function (column) { var group_column = _(self.columns).detect(function (column) {
return column.id === group.grouped_on; }); return column.id === group.grouped_on; });
$group_column.text(openerp.base.list.render_cell( $group_column.html(openerp.base.list.render_cell(
row_data, group_column, "Undefined" row_data, group_column, "Undefined"
)); ));
if (group.openable) { if (group.openable) {
// Make openable if not terminal group & group_by_no_leaf // Make openable if not terminal group & group_by_no_leaf

View File

@ -293,7 +293,7 @@
<tr> <tr>
<td t-if="options.selectable"/> <td t-if="options.selectable"/>
<td t-foreach="aggregate_columns" t-as="column" class="oe-list-footer oe-number" <td t-foreach="aggregate_columns" t-as="column" class="oe-list-footer oe-number"
t-att-data-field="column.field" t-att-title="column.label"> t-att-data-field="column.id" t-att-title="column.label">
</td> </td>
<td t-if="options.deletable"/> <td t-if="options.deletable"/>
</tr> </tr>