تخطي للذهاب إلى المحتوى
القائمة
لقد تم الإبلاغ عن هذا السؤال
1 الرد
15824 أدوات العرض

Is it possible to assign colors to a certain event state as default? (Calendar)

I.e. Ocupied is red / available is green / no-show is blue / ready to start is yellow...

right now odoo as default color for 1st event, 2nd event is another color.. i want by state! is it possible and how? Thanks!

الصورة الرمزية
إهمال

Lo resolviste te puedo ayudar?

أفضل إجابة

Hello Rick,

FYI odoo is currently setting event colors based on different partners not based on different events.
Regarding your requirement, yes you can replace this current functionality with the state field. For that, you just need to do the following steps.

For odoo12,
1)Inherit calendar view and change attribute color="state(your_field_name)"
2)Then you have to assign a color index to your state by updating the init method for "web.CalendarRenderer".
E.g - this.color_map.state(your_field_name) = 2(will be index value);

For more information, you can contact us.

Regards,





Email: odoo@aktivsoftware.com

Skype: kalpeshmaheshwari

   

الصورة الرمزية
إهمال
الكاتب

This is 1):

<record id="view_calendar_event_calendar_inherit" model="ir.ui.view">

<field name="name">calendar.event.calendar.inherit</field>

<field name="model">calendar.event</field>

<field name="inherit_id" ref="view_calendar_event_calendar"/>

<field name="arch" type="xml">

<calendar string="Meetings" date_start="start" date_stop="stop" date_delay="duration" all_day="allday"

readonly_form_view_id="%(calendar.view_calendar_event_form_popup)s"

event_open_popup="true"

event_limit="3"

color="NEWCOLOR">

</calendar>

</field>

</record>

But i didn't exactly understood the 2) part, can you explain it better if you can? It would be a huge help!

Thank you for your understanding.

Hello Ricardo Gil,

-In the calendar module, you can find the "web.CalendarRenderer" class.

-You have to change that class's init function.

-So inherit that function and you can find the "color_map" variable in that.

-In that "color_map" you will get data for "NEWCOLOR" field, so you have to assign a color index value to those data. then your functionality will work.

FYI We have already developed a module for this functionality for V12, if you need that then you can contact us.

الكاتب

in this: init: function (parent, state, params) {

this._super.apply(this, arguments);

this.displayFields = params.displayFields;

this.model = params.model;

this.filters = [];

-> this.color_map = {};

if (params.eventTemplate) {

this.qweb = new QWeb(session.debug, {_s: session.origin});

this.qweb.add_template(utils.json_node_to_xml(params.eventTemplate));

and i have the getColor:

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;

Have to say color_map[0] = red / color_map[1] = green in my inherence... right?

الكاتب

if possible , if you could show what you did in your module, it would hep me a lot!!

I've build the module i want with the changes i need but the only thing missing is the colors... I would realy appreciate it!! Thank you :)

المنشورات ذات الصلة الردود أدوات العرض النشاط
0
أغسطس 19
3019
1
يوليو 24
2826
1
يوليو 20
5052
4
يوليو 24
10852
1
ديسمبر 21
4317