[FIX] web: fix boolean fields display in calendar

Since formatBoolean returns a jQuery object, boolean fields were
displayed as [Object object] in calendar view.

This is a fix for stable version. The real fix would be to get rid
of the jQuery object returned by formatBoolean but the change is
not trivial.
This commit is contained in:
David Monjoie
2017-07-18 15:59:48 +02:00
parent bce3defc8c
commit 1ceb201d5e
3 changed files with 15 additions and 6 deletions
+11 -3
View File
@@ -29,12 +29,20 @@ var _t = core._t;
/**
* @todo Really? it returns a jqueryElement... We should try to move this to a
* module with dom helpers functions, such as web.dom, maybe. And replace this
* with a function that returns a string
* with a function that returns a string so we can get rid of the forceString.
*
* @param {boolean} value
* @returns {jQueryElement}
* @param {Object} [field]
* a description of the field (note: this parameter is ignored)
* @param {Object} [options] additional options
* @param {boolean} [options.forceString=false] if true, returns a string
* representation of the boolean rather than a jQueryElement
* @returns {jQueryElement | string}
*/
function formatBoolean(value) {
function formatBoolean(value, field, options) {
if (options && options.forceString) {
return value ? _t('True') : _t('False');
}
var $input = $('<input/>', {
type: 'checkbox',
}).prop({
@@ -288,7 +288,7 @@ return AbstractRenderer.extend({
if (field.type === "one2many" || field.type === "many2many") {
return field_utils.format[field.type]({data: record[fieldName]}, field);
} else {
return field_utils.format[field.type](record[fieldName], field);
return field_utils.format[field.type](record[fieldName], field, {forceString: true});
}
},
/**
@@ -433,6 +433,7 @@ QUnit.module('Views', {
'readonly_form_view_id="1">'+
'<field name="name"/>'+
'<field name="start"/>'+
'<field name="allday"/>'+
'</calendar>',
archs: archs,
viewOptions: {
@@ -480,8 +481,8 @@ QUnit.module('Views', {
$('.modal button.btn:contains(Create)').trigger('click');
var $newevent = calendar.$('.fc-event:contains(new event)');
assert.strictEqual($newevent.text().replace(/[\s\n\r]+/g, ''), "08:00-10:00newevent12/13/201608:00:00",
"should display the new event with time and title");
assert.strictEqual($newevent.text().replace(/[\s\n\r]+/g, ''), "08:00-10:00newevent12/13/201608:00:00False",
"should display the new event with time, title and additional fields");
assert.deepEqual($newevent.data('fcSeg').event.record,
{