diff options
Diffstat (limited to 'addons/resource/static/src')
| -rw-r--r-- | addons/resource/static/src/js/section_fields_backend.js | 89 | ||||
| -rw-r--r-- | addons/resource/static/src/scss/section_backend.scss | 8 |
2 files changed, 97 insertions, 0 deletions
diff --git a/addons/resource/static/src/js/section_fields_backend.js b/addons/resource/static/src/js/section_fields_backend.js new file mode 100644 index 00000000..e96757c5 --- /dev/null +++ b/addons/resource/static/src/js/section_fields_backend.js @@ -0,0 +1,89 @@ + +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 === "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'); + }); + }, +}); + +// 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); + +}); diff --git a/addons/resource/static/src/scss/section_backend.scss b/addons/resource/static/src/scss/section_backend.scss new file mode 100644 index 00000000..0cbcd1ef --- /dev/null +++ b/addons/resource/static/src/scss/section_backend.scss @@ -0,0 +1,8 @@ +// The goal of this file is to contain CSS hacks related to allowing +// section on resource calendar. +table.o_section_list_view tr.o_data_row.o_is_line_section { + font-weight: bold; + background-color: #DDDDDD; + border-top: 1px solid #BBB; + border-bottom: 1px solid #BBB; +} |
