Недавно мне потребовалось сделать отчет на основе сводной таблицы в 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