在Odoo10中为状态栏添加颜色

3

如何在odoo10中添加状态栏的颜色,该功能也适用于openerp版本

例如:<field name='state' widget='statusbar' clickable='True' statusbar_colors='{"new": "blue"}'>

如何为odoo10中的状态栏添加颜色:

您需要为不同状态添加不同的颜色。例如:草稿状态为蓝色、进行中状态为绿色、取消状态为红色。

3个回答

5
你的要求有两种解决方案:
  1. 如果你只需要在一个表单视图中实现这种行为,那么很简单:

只需添加 style 标签即可覆盖 Odoo 生成的 css选择器

        <style>
            .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled {
               background: yellow;
            }
            .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled::after {
               border-left-color: yellow;
            }
        </style>
        ...
        ...
        <field name ="state" widget="statusbar">

在这里,我使用了相同的css选择器,因为它是在Odoo选择器之后加载的,所以它是被使用的。请注意,我的状态栏按钮具有.disabled类,因为它是只读。我认为你需要改变那个clickabe='True',这意味着它不是只读的。

  1. 如果您想将此应用于所有模型,则需要使用css文件并将其添加到assets_backend模板中,确保您的选择器击败了Odoo选择器。
   <template id="assets_backend" name="backend" inherit_id="web.assets_backend">
        <xpath expr="." position="inside">
            <link rel="stylesheet" href="/your_addon_name/static/src/css/your_css_file_name.css"/>
        </xpath>
    </template>

现在我不知道你想要如何准确地改变颜色。在这里,你需要处理 CSS 来选择正确的元素,例如,如果你想让状态栏颜色在值为 "new" 时仅为蓝色,那么幸运的是,Odoo 在属性 data-value 中显示选定的值 selected,该值不会因翻译而更改。请注意,保留 HTML 标签。
   .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled[data-value="new"] {
        background: blue;
    }
    .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled[data-value="new"]::after {
       border-left-color: blue;
    }

这是在Odoo 11中,当我检查元素时,我注意到以下内容:
  • 所选的状态具有类btn-primary,其余状态则具有btn-default
  • readonly具有属性disabled="disabled"和类disabled
为了展示这个工作,这里有一个截图,你可能会有一些副作用,就是当你在popup中打开一些record并且这个form仍然显示在网页中时,如果它有一个statuswidget,那么这也会影响到所显示的记录,因为当从网页中删除form视图时,style tag将被删除

screen shot

编辑:

假设你的选择有两个值:新的,有效的

如果选择了“新的”,则将其颜色变为蓝色;如果选择了“有效的”,则将其颜色变为绿色。

<style>

       .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled[data-value="new"] {
            background: blue;
        }
        .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled[data-value="new"]::after {
           border-left-color: blue;
        }

        .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled[data-value="progress"] {
            background: blue;
        }
        .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled[data-value="progress"]::after {
           border-left-color: blue;
        }

        .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled[data-value="cancel"] {
            background: red;
        }
        .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled[data-value="cancel"]::after {
           border-left-color: red;
        }
</style>
...
...
...
<field name="state" .....>

这完全是关于通过 data-value 选择字段。希望你明白了。这比处理JavaScript更容易。


谢谢您的回应,需要为不同的状态使用不同的颜色。 - Thayif kabir
是的,你可以按照我刚才告诉你的做任何想做的事情。你需要使用 data-value 来选择不同的元素,并为每个元素指定不同的颜色。 - Charif DZ
只需编辑您的问题并显示字段状态的不同值,以及您希望为每个选定值设置的颜色,我将为您提供帮助。如果您不知道如何做到这一点,请查看我的编辑以了解应该执行的操作。 - Charif DZ
2
非常清晰明了的解释,@ElegantOdoo。 - forvas
你好,我该如何仅在特定模块中实现这个功能? - user9523333
1
@user9523333,我在最后解释了一下,只需在表单视图中定义一个样式标签,最好是在 sheet 标签之前,它将仅应用于该表单视图。 - Charif DZ

0

0
 inherit_id="web.assets_backend"

按需添加样式,您也可以在CSS中设置样式


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接