moo64c / SG color-code entry amount.

// ==UserScript==
// @name         SG color-code entry amount.
// @namespace    https://www.steamgifts.com
// @version      0.2
// @description  Color-codes the "giveaway column" line in steamgifts.com according to the number of entries to a giveaway.
// @author       Moo64c
// @match        *://www.steamgifts.com/*
// @grant        GM_xmlhttpRequest
// ==/UserScript==


var current_url = window.location.href;


$( document ).ready(function() {
    if (/www.steamgifts.com\/($|giveaways$|giveaways\/search)/.test(current_url)) {
        // On main giveaways list page.

        // Add color-coded "chance calculation".
        var morph = function(start, stop, point,scale) {
            return Math.round(((stop - start) * point / scale) + start);
        };

        $('.giveaway__links').each(function() {
            var span = $(this).find('.fa-tag').siblings('span');
            var parent = span.parent().parent().parent();
            // Find out if there are more copies.
            var copies = 1;
            parent.find('.giveaway__heading span.giveaway__heading__thin').each(function() {
                var text = $(this).text();
                if (text.indexOf('Copies') >= 0) {
                    copies = parseInt(text.replace(/[^0-9]/gi, ''));
                }
            });
            var entries = parseInt(span.text().replace(/[^0-9]/gi, ''));
            var value = entries / copies;
            // Choose color.
            var hue = morph(120,0,value,2000); // Green - 120, yellow ~ 60, Red - 0.
            var saturation = '100%';
            // Should be ~50%
            var lightnessCalc = morph(70,20,value,2000);
            if (value > 2000) {
                // Only darken from this point on.
                lightnessCalc = morph(40,10,value,6000);
                hue = 0;
            }
            var lightness = lightnessCalc+'%';
            var hsl = 'hsl('+hue+','+saturation+','+lightness+')';
            var hslText = 'hsl('+(120+hue)+','+saturation+','+(100-lightnessCalc)+'%)';
            parent.find('.giveaway__columns').first().children().each(function() {
                $(this).css({
                    background: hsl,
                    color: hslText,
                    fontWeight: 'bold'
                });
            });
        });
    }
});