根据OpenERP 7中的记录状态显示动态看板颜色

时间:2013-11-04 19:58:17

标签: openerp

有人可以告诉我,我可以根据记录的状态在具有特定颜色的视图看板中显示项目。

我正在尝试这样的事情

<div t-attf-class="#{record.state=='scheduled' ? oe_kanban_color_#{kanban_getcolor(1)} : oe_kanban_color_#{kanban_getcolor(0)}">

但我查看了所有元素,而不仅仅是那些处于“预定”状态的人。

谢谢:)

1 个答案:

答案 0 :(得分:3)

如果您完全复制/粘贴了在视图定义中输入的内容,那么您的t-attf- class属性格式不正确,并且所有记录都将包含以下类:

class="#{record.state=='scheduled' ? oe_kanban_color_1 : oe_kanban_color_0"

,由于CSS类的优先级,将导致它们都具有oe_kanban_color_1样式。

一些提示:

  • 为避免为某些记录着色,您可以在某些情况下完全省略oe_kanban_color_X
  • 您可以使用t-att-class属性来允许任意Javascript表达式,具体取决于您要执行的操作。相比之下,t-attf-class仅允许替换占位符。
  • 将字段值与Javascript运算符进行比较时,您通常希望使用字段的valueraw_value,而不是Field对象本身。当值需要特定呈现时,value只会与raw_value不同,例如日期,数字等。
  • kanban_getcolor()函数接受任何整数或字符串,并返回10个默认看板颜色索引中的一个。

基于以上所述,以下内容可能更接近您的尝试(请注意 t-att-class 属性:

<div t-att-class="record.state.value == 'scheduled' ?
                  'oe_kanban_color_1' :
                  'oe_kanban_color_0' ">

或者,您可以使用t-attf-class并让kanban_getcolor()根据状态字符串选择颜色:

<div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.state.value)}">

最后一个示例与官方OpenERP发行版中的许多默认看板视图中的内容类似。