[IMP] re-enable min and max aggregation functions because why not
bzr revid: xmo@openerp.com-20110725104630-vs4wi5740340dtyj
This commit is contained in:
parent
05b9d6217f
commit
4110cb0828
|
@ -25,7 +25,10 @@ openerp.base.list = {
|
|||
}
|
||||
|
||||
var record = row_data[column.id];
|
||||
if (record.value === false) {
|
||||
switch (record.value) {
|
||||
case false:
|
||||
case Infinity:
|
||||
case -Infinity:
|
||||
return value_if_empty === undefined ? '' : value_if_empty;
|
||||
}
|
||||
switch (column.widget || column.type) {
|
||||
|
@ -353,10 +356,6 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi
|
|||
}
|
||||
var aggregation_func = column['group_operator'] || 'sum';
|
||||
|
||||
if (!column[aggregation_func]) {
|
||||
return {};
|
||||
}
|
||||
|
||||
return _.extend({}, column, {
|
||||
'function': aggregation_func,
|
||||
label: column[aggregation_func]
|
||||
|
@ -566,7 +565,6 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi
|
|||
compute_aggregates: function (records) {
|
||||
var columns = _(this.aggregate_columns).filter(function (column) {
|
||||
return column['function']; });
|
||||
|
||||
if (_.isEmpty(columns)) { return; }
|
||||
|
||||
if (_.isEmpty(records)) {
|
||||
|
@ -574,17 +572,39 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi
|
|||
}
|
||||
|
||||
var count = 0, sums = {};
|
||||
_(columns).each(function (column) { sums[column.id] = 0; });
|
||||
_(columns).each(function (column) {
|
||||
switch (column['function']) {
|
||||
case 'max':
|
||||
sums[column.id] = -Infinity;
|
||||
break;
|
||||
case 'min':
|
||||
sums[column.id] = Infinity;
|
||||
break;
|
||||
default:
|
||||
sums[column.id] = 0;
|
||||
}
|
||||
});
|
||||
_(records).each(function (record) {
|
||||
count += record.count || 1;
|
||||
_(columns).each(function (column) {
|
||||
var field = column.id;
|
||||
var field = column.id,
|
||||
value = record.values[field];
|
||||
switch (column['function']) {
|
||||
case 'sum':
|
||||
sums[field] += record.values[field];
|
||||
sums[field] += value;
|
||||
break;
|
||||
case 'avg':
|
||||
sums[field] += record.count * record.values[field];
|
||||
sums[field] += record.count * value;
|
||||
break;
|
||||
case 'min':
|
||||
if (sums[field] > value) {
|
||||
sums[field] = value;
|
||||
}
|
||||
break;
|
||||
case 'max':
|
||||
if (sums[field] < value) {
|
||||
sums[field] = value;
|
||||
}
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
@ -594,12 +614,11 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi
|
|||
_(columns).each(function (column) {
|
||||
var field = column.id;
|
||||
switch (column['function']) {
|
||||
case 'sum':
|
||||
aggregates[field] = {value: sums[field]};
|
||||
break;
|
||||
case 'avg':
|
||||
aggregates[field] = {value: sums[field] / count};
|
||||
break;
|
||||
default:
|
||||
aggregates[field] = {value: sums[field]};
|
||||
}
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in New Issue