Odoo XML Условное форматирование текста - PullRequest
0 голосов
/ 09 ноября 2019

Я пытаюсь отредактировать XML-код на Odoo с помощью приложения студии. Я хочу отформатировать цвет текста на основе значения ячейки - красный для некоторых значений, зеленый для других.

Пожалуйста, кто-нибудь может помочь?

Я использовал ответ на эту предыдущую тему в качестверуководство. Условное цветовое форматирование поля XML Odoo

<field name="x_studio_mr_approval" string="MR Approval (test)" style="color: red;" attrs="{'invisible': ['|',['x_studio_mr_approval','=','Approved'],['x_studio_mr_approval','=','Approved Unseen']]}"/>

<field name="x_studio_mr_approval" string="MR Approval (test)" style="color: green;" attrs="{'invisible': ['|',['x_studio_mr_approval','=','New'],['x_studio_mr_approval','=','Awaiting Approval'],['x_studio_mr_approval','=','Rejected']]}"/>

Я бы ожидал, что «Одобрено» и «Одобрено невидимо» зеленым, а остальные 3 параметра - красным.

То, что происходит с моим текущим кодом, таково: - Если значение «Одобрено» или «Одобрено Невидимым», оно работает правильно и показывает зеленое поле. Красное поле невидимо.

  • Если значение равно «Ожидание утверждения», «Новое» или «Отклонено», оно работает неправильно. Это показывает поле и значение дважды в представлении формы. Одно поле красное, другое зеленое. По какой-то причине оно не делает зеленое поле невидимым

Ответы [ 2 ]

0 голосов
/ 12 ноября 2019

Другой практикой является создание виджета для этого конкретного поля с использованием чего-то подобного.

<field name="x_studio_mr_approval" string="MR Approval (test)" widget="my_widget"/>

Создание виджета в js с чем-то вроде этого:

odoo.define('widget_colored', function (require) {
    "use strict";

    var registry = require('web.field_registry');
    var basic_fields = require('web.basic_fields');
    var InputField = basic_fields.InputField;

    var FieldColored = InputField.extend({
        _render: function () {
            this.$el.html(this._formatValue(this.value));
            if (this.value === 'Approved') {
                this.$el[0].className = this.$el[0].className + ' font-weight-bold'; // Using class
            }
            ...
        },
    });

    registry.add('my_widget', FieldColored);
});

Незабудьте интегрировать JS в свои активы

<template id="assets_backend" inherit_id="web.assets_backend">
    <xpath expr=".">
       <script type="text/javascript" src="demo_erp_event/static/src/js/MYJS.js"/>
    </xpath>
</template>
0 голосов
/ 12 ноября 2019

Лучшее использование доменов может помочь:

<field name="x_studio_mr_approval" string="MR Approval (test)" style="color: red;" attrs="{'invisible': [('x_studio_mr_approval','in',['Approved','Approved Unseen'])}"/>
<field name="x_studio_mr_approval" string="MR Approval (test)" style="color: green;" attrs="{'invisible': ['!',('x_studio_mr_approval','in',['Approved','Approved Unseen'])}"/>

Для справки прочитайте https://www.odoo.com/documentation/12.0/reference/orm.html#domains

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...