Přejít na obsah
Menu
You need to be registered to interact with the community.
This question has been flagged
1 Odpovědět
1591 Zobrazení

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
Zrušit
Nejlepší odpověď

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
Zrušit
Related Posts Odpovědi Zobrazení Aktivita
1
pro 24
1214
0
lis 23
1603
1
srp 23
4587
0
dub 22
4221
0
kvě 21
19