如何为Odoo 12日历视图事件设置自定义颜色?

时间:2019-02-14 23:25:32

标签: odoo odoo-12

这里有一个很好的教程,说明如何在Odoo-8中实现这一目标: Tutorial,但不适用于Odoo-12。

Odoo本身允许您设置模型字段作为日历视图中颜色区分的基础。

 <calendar ...  color="your_model_field">

问题在于他将自动决定为每个值分配哪种颜色。
我需要能够确定要使用的颜色映射

在Web模块js文件中进行一些潜水,更具体地说是在
第266行上的 web / static / src / js / views / calendar / calendar_renderer.js
我发现了一种很有前途的功能,似乎是负责决定要设置哪种颜色的功能。

    getColor: function (key) {
        if (!key) {
            return;
        }
        if (this.color_map[key]) {
            return this.color_map[key];
        }
        // check if the key is a css color
        if (typeof key === 'string' && key.match(/^((#[A-F0-9]{3})|(#[A-F0-9]{6})|((hsl|rgb)a?\(\s*(?:(\s*\d{1,3}%?\s*),?){3}(\s*,[0-9.]{1,4})?\))|)$/i)) {
            return this.color_map[key] = key;
        }
        var index = (((_.keys(this.color_map).length + 1) * 5) % 24) + 1;
        this.color_map[key] = index;
        return index;
    },

此函数将为您的字段(每个日历事件)提供值,并返回要“假定”用作日历事件正方形背景的颜色。

根据第二个if语句,如果您设法使用color_map对象实例化CalendarRenderer类,则该对象可以将字段的可能值用作键,并将颜色代码用作值。

根据第三个if语句,如果您的字段的值是带有颜色代码的字符串(#FFF,rgb(x,y,z)等),则将它们设置在color_map对象中并返回以用作背景颜色。

我想的最后一部分是当没有提供映射时odoo如何决定颜色。

我尝试了两种方法具有相同的效果:

Image displaying the calendar view

即,所有日历事件均以fullcalendar.css样式表(第529行)中的默认颜色呈现,但是颜色参考正确显示在右侧边栏上。

在此问题上的任何启发,我将不胜感激,必须有可能使这项工作成功!!

谢谢。

0 个答案:

没有答案