[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 AbstractModel = require('web.AbstractModel');
|
||||||
var concurrency = require('web.concurrency');
|
var concurrency = require('web.concurrency');
|
||||||
var core = require('web.core');
|
|
||||||
var Context = require('web.Context');
|
var Context = require('web.Context');
|
||||||
|
var core = require('web.core');
|
||||||
var Domain = require('web.Domain');
|
var Domain = require('web.Domain');
|
||||||
var fieldUtils = require('web.field_utils');
|
var fieldUtils = require('web.field_utils');
|
||||||
var session = require('web.session');
|
var session = require('web.session');
|
||||||
@@ -3087,7 +3087,8 @@ var BasicModel = AbstractModel.extend({
|
|||||||
lazy: true,
|
lazy: true,
|
||||||
})
|
})
|
||||||
.then(function (groups) {
|
.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) {
|
var previousGroups = _.map(list.data, function (groupID) {
|
||||||
return self.localData[groupID];
|
return self.localData[groupID];
|
||||||
});
|
});
|
||||||
@@ -3098,13 +3099,13 @@ var BasicModel = AbstractModel.extend({
|
|||||||
_.each(groups, function (group) {
|
_.each(groups, function (group) {
|
||||||
var aggregateValues = {};
|
var aggregateValues = {};
|
||||||
_.each(group, function (value, key) {
|
_.each(group, function (value, key) {
|
||||||
if (_.contains(fields, key) && key !== list.groupedBy[0]) {
|
if (_.contains(fields, key) && key !== groupByField) {
|
||||||
aggregateValues[key] = value;
|
aggregateValues[key] = value;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// When a view is grouped, we need to display the name of each group in
|
// When a view is grouped, we need to display the name of each group in
|
||||||
// the 'title'.
|
// the 'title'.
|
||||||
var value = group[rawGroupBy];
|
var value = group[groupByField];
|
||||||
if (list.fields[rawGroupBy].type === "selection") {
|
if (list.fields[rawGroupBy].type === "selection") {
|
||||||
var choice = _.find(list.fields[rawGroupBy].selection, function (c) {
|
var choice = _.find(list.fields[rawGroupBy].selection, function (c) {
|
||||||
return c[0] === value;
|
return c[0] === value;
|
||||||
|
|||||||
@@ -377,6 +377,10 @@ var ListRenderer = BasicRenderer.extend({
|
|||||||
$cells.unshift($('<td>'));
|
$cells.unshift($('<td>'));
|
||||||
}
|
}
|
||||||
var name = group.value === undefined ? _t('Undefined') : group.value;
|
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>')
|
var $th = $('<th>')
|
||||||
.addClass('o_group_name')
|
.addClass('o_group_name')
|
||||||
.text(name + ' (' + group.count + ')');
|
.text(name + ' (' + group.count + ')');
|
||||||
|
|||||||
@@ -632,7 +632,9 @@ var MockServer = Class.extend({
|
|||||||
var fieldName = groupByField.split(':')[0];
|
var fieldName = groupByField.split(':')[0];
|
||||||
var aggregateFunction = groupByField.split(':')[1] || 'month';
|
var aggregateFunction = groupByField.split(':')[1] || 'month';
|
||||||
if (fields[fieldName].type === 'date') {
|
if (fields[fieldName].type === 'date') {
|
||||||
if (aggregateFunction === 'day') {
|
if (!val) {
|
||||||
|
return false;
|
||||||
|
} else if (aggregateFunction === 'day') {
|
||||||
return moment(val).format('YYYY-MM-DD');
|
return moment(val).format('YYYY-MM-DD');
|
||||||
} else {
|
} else {
|
||||||
return moment(val).format('MMMM YYYY');
|
return moment(val).format('MMMM YYYY');
|
||||||
|
|||||||
@@ -2466,6 +2466,23 @@ QUnit.module('Views', {
|
|||||||
|
|
||||||
list.destroy();
|
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