Skip ke Konten
Menu
Pertanyaan ini telah diberikan tanda
1 Balas
15683 Tampilan

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!

Avatar
Buang

Lo resolviste te puedo ayudar?

Jawaban Terbai

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

   

Avatar
Buang
Penulis

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.

Penulis

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?

Penulis

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 :)

Post Terkait Replies Tampilan Aktivitas
0
Agu 19
2931
1
Jul 24
2677
1
Jul 20
4927
4
Jul 24
10649
1
Des 21
4216