Skip to Content
Menu
This question has been flagged
1 Reply
1046 Views

Dear All,

I have tried so many methods to override this function using patch (without prototype) and old JS methods but unable override it.
Original function path : addons/web/static/src/views/calendar/colors.js
Original Function : 

export function getColor(key) {
if (!key) {
return false;
}
if (colorMap.has(key)) {
return colorMap.get(key);
}

// check if the key is a css color
if (typeof key === "string" && key.match(CSS_COLOR_REGEX)) {
colorMap.set(key, key);
} else if (typeof key === "number") {
colorMap.set(key, ((key - 1) % 55) + 1);
} else {
colorMap.set(key, (((colorMap.size + 1) * 5) % 24) + 1);
}

return colorMap.get(key);
}

Can someone please help me to override this function?



Avatar
Discard
Best Answer

Hi,

You can create a new function to replace an existing one and use it wherever the old function was used. For example, if you want to modify the getColor function inside the openPopover function, you can patch the openPopover function with your new changes


openPopover(target, record) {

    const color = getColor(record.colorIndex);

    this.popover.open(

        target,

        this.getPopoverProps(record),

        `o_cw_popover o_calendar_color_${typeof color === "number" ? color : 0}`

    );

}



You can create your own version of the getColor function and then update the openPopover function to use it. This way, your new function will work wherever the old one was used


Hope it helps.

Avatar
Discard
Related Posts Replies Views Activity
1
Dec 24
742
0
Nov 23
1222
1
Aug 23
3932
0
Apr 22
3817
0
May 21
19