Условное цветовое форматирование поля XML Odoo - PullRequest
2 голосов
/ 10 июня 2019

Я работаю с Odoo и студией.

Я хочу отформатировать текст поля выбора на основе выбранного значения с использованием XML.

Вот что я уже пробовал, но это никак не отразилось:

<field name="my_status" string="Status" colors="orange:my_status == 'negotiation';green:my_status == 'signed';purple:my_status == 'internal'"/>

Я также пробовал:

<field name="my_status" string="Status" decoration-success="my_status == 'signed'" decoration-danger="my_status == 'negociation'" decoration-muted="my_status == 'internal'"/>

Знаете ли вы, чего мне не хватает для его работы?

РЕДАКТИРОВАТЬ: Я нашел это, я думаю, я не могу отформатировать любое из полей? https://github.com/odoo/odoo/blob/12.0/odoo/addons/base/rng/common.rng#L206

Ответы [ 2 ]

1 голос
/ 14 июня 2019

Я нашел обходной путь:

<field name="my_status" string="Status" style="color: red;" attrs="{'invisible': ['|',['my_status','=','signed'],['my_status','=','internal']]}"/>
<field name="my_status" string="Status" style="color: green;" attrs="{'invisible': ['|',['my_status','=','negotiation'],['my_status','=','internal']]}"/>
<field name="my_status" string="Status" style="color: purple;" attrs="{'invisible': ['|',['my_status','=','signed'],['my_status','=','negotiation']]}"/>
1 голос
/ 10 июня 2019

Если вы хотите сделать это, вам нужны css-селекторы. когда вы инвестируете элемент в браузере у вас есть два разных представления.

в режиме просмотра поле выбора превращается в простой диапазон:

<span name="priority" class="o_field_widget">Non urgent</span>

в режиме редактирования в поле выбора есть ввод HTML:

<select class="o_input o_field_widget" name="priority" id="o_field_input_229">
    <option value="false"></option>
    <option value="0">Non urgent</option>
    <option value="1">Normale</option>
    <option value="2">Urgent</option>
    <option value="3">Très urgent</option>
</select>

Невозможно выбрать элемент на основе его внутреннего HTML, используя только CSS. и, как вы можете видеть, значения параметров изменяются как язык меняется, даже если вы делаете селектор типа (Jquery)

         $(".o_field_widget[name='priority']:contains('Non urgent')")

Что происходит, когда французский пользователь получает доступ к странице? !!!

Типичный способ сделать это - изменить поведение виджета выбора в Odoo (это не так просто). Если вам это действительно нужно, попробуйте сначала найти какое-либо приложение в магазине Odoo, иначе я не вижу другого способа сделать это.

...