Before this commit, when two week calendar were used, the tooltip was wrongfully assuming which week were odd and even. Even with correct information, it was not easy to fill and could easily lead to wrong information on the payroll. closes odoo/odoo#56055 Taskid: 2308804 Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
92 lines
2.7 KiB
JavaScript
92 lines
2.7 KiB
JavaScript
|
|
odoo.define('resource.section_backend', function (require) {
|
|
// The goal of this file is to contain JS hacks related to allowing
|
|
// section on resource calendar.
|
|
|
|
"use strict";
|
|
var FieldOne2Many = require('web.relational_fields').FieldOne2Many;
|
|
var fieldRegistry = require('web.field_registry');
|
|
var ListRenderer = require('web.ListRenderer');
|
|
|
|
var SectionListRenderer = ListRenderer.extend({
|
|
/**
|
|
* We want section to take the whole line (except handle and trash)
|
|
* to look better and to hide the unnecessary fields.
|
|
*
|
|
* @override
|
|
*/
|
|
_renderBodyCell: function (record, node, index, options) {
|
|
var $cell = this._super.apply(this, arguments);
|
|
|
|
var isSection = record.data.display_type === 'line_section';
|
|
|
|
if (isSection) {
|
|
if (node.attrs.widget === "handle") {
|
|
return $cell;
|
|
} else if (node.attrs.name === "display_name") {
|
|
var nbrColumns = this._getNumberOfCols();
|
|
if (this.handleField) {
|
|
nbrColumns--;
|
|
}
|
|
if (this.addTrashIcon) {
|
|
nbrColumns--;
|
|
}
|
|
$cell.attr('colspan', nbrColumns);
|
|
} else {
|
|
return $cell.addClass('o_hidden');
|
|
}
|
|
}
|
|
|
|
return $cell;
|
|
},
|
|
/**
|
|
* We add the o_is_{display_type} class to allow custom behaviour both in JS and CSS.
|
|
*
|
|
* @override
|
|
*/
|
|
_renderRow: function (record, index) {
|
|
var $row = this._super.apply(this, arguments);
|
|
|
|
if (record.data.display_type) {
|
|
$row.addClass('o_is_' + record.data.display_type);
|
|
}
|
|
|
|
return $row;
|
|
},
|
|
/**
|
|
* We want to add .o_section_list_view on the table to have stronger CSS.
|
|
*
|
|
* @override
|
|
* @private
|
|
*/
|
|
_renderView: function () {
|
|
var self = this;
|
|
return this._super.apply(this, arguments).then(function () {
|
|
self.$('.o_list_table').addClass('o_section_list_view');
|
|
// Discard the possibility to remove the sections
|
|
self.$('.o_is_line_section .o_list_record_remove').remove()
|
|
});
|
|
},
|
|
});
|
|
|
|
// We create a custom widget because this is the cleanest way to do it:
|
|
// to be sure this custom code will only impact selected fields having the widget
|
|
// and not applied to any other existing ListRenderer.
|
|
var SectionFieldOne2Many = FieldOne2Many.extend({
|
|
/**
|
|
* We want to use our custom renderer for the list.
|
|
*
|
|
* @override
|
|
*/
|
|
_getRenderer: function () {
|
|
if (this.view.arch.tag === 'tree') {
|
|
return SectionListRenderer;
|
|
}
|
|
return this._super.apply(this, arguments);
|
|
},
|
|
});
|
|
|
|
fieldRegistry.add('section_one2many', SectionFieldOne2Many);
|
|
|
|
});
|