[imp] added text in white if status bar if arrow color is too dark
authorniv-openerp <nicolas.vanhoren@openerp.com>
Mon, 17 Oct 2011 12:09:01 +0000 (14:09 +0200)
committerniv-openerp <nicolas.vanhoren@openerp.com>
Mon, 17 Oct 2011 12:09:01 +0000 (14:09 +0200)
bzr revid: nicolas.vanhoren@openerp.com-20111017120901-zuxcqat247jfbgc9

addons/web/static/src/js/view_form.js

index c3baf8c..e998b3b 100644 (file)
@@ -2764,12 +2764,32 @@ openerp.web.form.FieldStatus = openerp.web.form.Field.extend({
         if (color) {
             var elem = this.$element.find("li.oe-arrow-list-selected span");
             elem.css("border-color", color);
+            if (this.check_white(color))
+                elem.css("color", "white");
             elem = this.$element.find("li.oe-arrow-list-selected .oe-arrow-list-before");
             elem.css("border-left-color", "rgba(0,0,0,0)");
             elem = this.$element.find("li.oe-arrow-list-selected .oe-arrow-list-after");
             elem.css("border-color", "rgba(0,0,0,0)");
             elem.css("border-left-color", color);
         }
+    },
+    check_white: function(color) {
+        var div = $("<div></div>");
+        div.css("display", "none");
+        div.css("color", color);
+        div.appendTo($("body"));
+        var ncolor = div.css("color");
+        div.remove();
+        var res = /^\s*rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)\s*$/.exec(ncolor);
+        if (!res) {
+            return false;
+        }
+        var comps = [parseInt(res[1]), parseInt(res[2]), parseInt(res[3])];
+        var lum = comps[0] * 0.3 + comps[1] * 0.59 + comps[1] * 0.11;
+        if (lum < 128) {
+            return true;
+        }
+        return false;
     }
 });