这里有一个很好的教程,说明如何在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行)中的默认颜色呈现,但是颜色参考正确显示在右侧边栏上。
在此问题上的任何启发,我将不胜感激,必须有可能使这项工作成功!!
谢谢。