You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.8 KiB
57 lines
1.8 KiB
openerp.web_option_auto_color = function(instance) {
|
|
var _t = instance.web._t,
|
|
_lt = instance.web._lt;
|
|
var QWeb = instance.web.qweb;
|
|
|
|
instance.web.ListView.include({
|
|
|
|
dh : function (n){
|
|
var hex = (255-n).toString(16).toUpperCase();
|
|
if (hex.length==1) {
|
|
hex='0'+hex;
|
|
}
|
|
return (hex);
|
|
},
|
|
|
|
inverse_color: function (couleur) {
|
|
|
|
var r = /#?(\w{2})(\w{2})(\w{2})/i;
|
|
var splitH = r.exec(couleur);
|
|
|
|
var ar=16*Number('0x'+splitH[1].slice(0,1))+Number('0x'+splitH[1].slice(1,2));
|
|
var br=16*Number('0x'+splitH[2].slice(0,1))+Number('0x'+splitH[2].slice(1,2));
|
|
var cr=16*Number('0x'+splitH[3].slice(0,1))+Number('0x'+splitH[3].slice(1,2));
|
|
|
|
return ('#'+this.dh(ar)+this.dh(br)+this.dh(cr));
|
|
|
|
},
|
|
|
|
get_seed_random_color: function(seed){
|
|
color = Math.floor((Math.abs(Math.sin(seed) * 16777215)) % 16777215);
|
|
color = color.toString(16);
|
|
while(color.length < 6) {
|
|
color = '0' + color;
|
|
}
|
|
return '#' + color;
|
|
},
|
|
|
|
getIntValue: function(str){
|
|
var sum = 0
|
|
for (i=0; i<str.length;i++){
|
|
sum += str.charCodeAt(i);
|
|
}
|
|
return sum
|
|
},
|
|
|
|
auto_color_cell_style: function(value){
|
|
style = ''
|
|
if (value != "" && value != undefined) {
|
|
var intValue = this.getIntValue(value)
|
|
bgcolor = this.get_seed_random_color(intValue)
|
|
fontcolor = this.inverse_color(bgcolor)
|
|
style = style + 'background-color: ' + bgcolor + ';' + 'color: ' + fontcolor + ';';
|
|
}
|
|
return style
|
|
}
|
|
});
|
|
};
|