Автоперенос текста в названии строк сводной таблицы в Odoo

Недавно мне потребовалось сделать отчет на основе сводной таблицы в Odoo 12, но из-за одно из названий строки было очень длинным и оказалось, что по-умолчанию ячейка сводной таблицы выравнивается по длинне всей этой строки. Меня такое поведение не устраивало, так как нужен был перенос слов и я начал искать решение.

Для переноса слов есть css свойство white-space, и если ему задать значение normal, то получится то поведение, которое мне было нужно.

После изучания кода страницы выяснилось, что нужные ячейки содержат класс o_pivot_header_cell_closed, поэтому вся задача свелась к добавлению в него нужного свойства.

После некоторого изучения исходников виджета PivotView, выяснилось, что за рендеринг элемента отвечает компонент PivotRenderer и его метод _render.

В результате я расширил данный метод следующим образом:

odoo.define('custom_pivot.PivotRenderer', function (require) {
    'use strict';

    var PivotRenderer = require('web.PivotRenderer');

    return PivotRenderer.include({
        _render: function () {
            var r = this._super.apply(this, arguments);
            this.$el.find(".o_pivot_header_cell_closed").css('white-space', 'normal');
            return r
        },

    });
});

В данном коде this.$el, содержит элемент сводной таблицы, которая будет отрисована. Поэтому в ней я ищу ячейки, которые содержат необходимый мне класс и просто добавил, нужное свойство.

Также стоит отметить что если в данном методе не указать return, то сама сводная поламается.

Теперь поведение сводной было такое, как я и ожидал.

 
comments powered by Disqus