[FIX] web: undefined group name for group by date:<interval>
Previously, grouping a list by a non-default time interval (e.g. 'creation date:week') yielded a grouped list of records with undefined group names.
This commit is contained in:
@@ -84,8 +84,8 @@ odoo.define('web.BasicModel', function (require) {
|
||||
|
||||
var AbstractModel = require('web.AbstractModel');
|
||||
var concurrency = require('web.concurrency');
|
||||
var core = require('web.core');
|
||||
var Context = require('web.Context');
|
||||
var core = require('web.core');
|
||||
var Domain = require('web.Domain');
|
||||
var fieldUtils = require('web.field_utils');
|
||||
var session = require('web.session');
|
||||
@@ -3087,7 +3087,8 @@ var BasicModel = AbstractModel.extend({
|
||||
lazy: true,
|
||||
})
|
||||
.then(function (groups) {
|
||||
var rawGroupBy = list.groupedBy[0].split(':')[0];
|
||||
var groupByField = list.groupedBy[0];
|
||||
var rawGroupBy = groupByField.split(':')[0];
|
||||
var previousGroups = _.map(list.data, function (groupID) {
|
||||
return self.localData[groupID];
|
||||
});
|
||||
@@ -3098,13 +3099,13 @@ var BasicModel = AbstractModel.extend({
|
||||
_.each(groups, function (group) {
|
||||
var aggregateValues = {};
|
||||
_.each(group, function (value, key) {
|
||||
if (_.contains(fields, key) && key !== list.groupedBy[0]) {
|
||||
if (_.contains(fields, key) && key !== groupByField) {
|
||||
aggregateValues[key] = value;
|
||||
}
|
||||
});
|
||||
// When a view is grouped, we need to display the name of each group in
|
||||
// the 'title'.
|
||||
var value = group[rawGroupBy];
|
||||
var value = group[groupByField];
|
||||
if (list.fields[rawGroupBy].type === "selection") {
|
||||
var choice = _.find(list.fields[rawGroupBy].selection, function (c) {
|
||||
return c[0] === value;
|
||||
|
||||
@@ -377,6 +377,10 @@ var ListRenderer = BasicRenderer.extend({
|
||||
$cells.unshift($('<td>'));
|
||||
}
|
||||
var name = group.value === undefined ? _t('Undefined') : group.value;
|
||||
var groupBy = this.state.groupedBy[groupLevel];
|
||||
if (group.fields[groupBy.split(':')[0]].type !== 'boolean') {
|
||||
name = name || _t('Undefined');
|
||||
}
|
||||
var $th = $('<th>')
|
||||
.addClass('o_group_name')
|
||||
.text(name + ' (' + group.count + ')');
|
||||
|
||||
@@ -632,7 +632,9 @@ var MockServer = Class.extend({
|
||||
var fieldName = groupByField.split(':')[0];
|
||||
var aggregateFunction = groupByField.split(':')[1] || 'month';
|
||||
if (fields[fieldName].type === 'date') {
|
||||
if (aggregateFunction === 'day') {
|
||||
if (!val) {
|
||||
return false;
|
||||
} else if (aggregateFunction === 'day') {
|
||||
return moment(val).format('YYYY-MM-DD');
|
||||
} else {
|
||||
return moment(val).format('MMMM YYYY');
|
||||
|
||||
@@ -2466,6 +2466,23 @@ QUnit.module('Views', {
|
||||
|
||||
list.destroy();
|
||||
});
|
||||
|
||||
QUnit.test('list grouped by date:month', function (assert) {
|
||||
assert.expect(1);
|
||||
|
||||
var list = createView({
|
||||
View: ListView,
|
||||
model: 'foo',
|
||||
data: this.data,
|
||||
arch: '<tree><field name="date"/></tree>',
|
||||
groupBy: ['date:month'],
|
||||
});
|
||||
|
||||
assert.strictEqual(list.$('tbody').text(), "January 2017 (1)Undefined (3)",
|
||||
"the group names should be correct");
|
||||
|
||||
list.destroy();
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user