Skip to Content
Menu
Musisz się zarejestrować, aby móc wchodzić w interakcje z tą społecznością.
To pytanie dostało ostrzeżenie
1 Odpowiedz
1746 Widoki

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?



Awatar
Odrzuć
Najlepsza odpowiedź

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.

Awatar
Odrzuć
Powiązane posty Odpowiedzi Widoki Czynność
1
gru 24
1349
0
lis 23
1712
1
sie 23
4807
0
kwi 22
4375
0
maj 21
19