MediaWiki:Gadget-GradientHeaders.js

From Elwiki
Revision as of 22:55, 4 June 2016 by Boxsnake (talk | contribs)

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
$('tr:not(.rainbow)').each(function(){
    var regAlpha = /rgba\(\s*\d+\s*,\s*\d+\s*,\s*\d+,\s*(0?\.\d+|[01](\.0*)?)\s*\)/;
    var tr = $(this);
    var bgcolor = tr.css('background-color');
    var bgimage = tr.css('background-image');

    if(bgcolor != 'Rainbow' && bgimage == 'none'){
        var Pc = bgcolor.match(regAlpha);
        Pc = Pc && Pc[1] ? Pc[1] : 1;
        Pc = Math.round(255 - 17 * Pc);
        var grayscale = 'rgb(' + [Pc, Pc, Pc].join() + ')';

        tr.children('th').each(function(){
            var th = $(this);
            var Hbgcolor = th.css('background-color');
            var Hbgimage = th.css('background-image');

            if(Hbgcolor != 'Rainbow' && Hbgimage == 'none'){
                if(Hbgcolor == bgcolor){
                    var Hgrayscale = grayscale;
                }
                else{
                    var HPc = Hbgcolor.match(regAlpha);
                    HPc = HPc && HPc[1] ? HPc[1] : 1;
                    HPc = Math.round(255 - 17 * Pc);
                    var Hgrayscale = 'rgb(' + [HPc, HPc, HPc].join() + ')';
                }
                th.css('background-image', 'linear-gradient(to bottom, ' + Hgrayscale + ', ' + Hbgcolor + ')');
            }
        });
    }
});