Ahab / lj stat

// ==UserScript==
// @name        lj stat
// @namespace   torn.com
// @include     *torn.com/personalstats.php*
// @author      Ahab [1735214]
// @version     0.2
// @license     MIT
// ==/UserScript==

var observerTarget = $('div[class*="users___"]')[0];
var observerConfig = { attributes: false, childList: true, characterData: false, subtree: false };
var observer = new MutationObserver(function(mutations) {
    dataCheck()
});
observer.observe(observerTarget, observerConfig);

function dataCheck(){
    var check = setInterval(() => {
        if($("[class*='statValue']").length > 0 && $("a").is("[class*='drugs___'][class*=' active___']")){
            if($('div[aria-label*="Love Juice Taken"]')){
                $('div[aria-label*="Love Juice Taken"]').closest($('div[class*="statRow___"]')).remove()
            }
            clearInterval(check)
            lj()
        }
    }, 50);
}

function lj(){
    var cols = $('div[class*=titleItem]:not(#drugs)').length +1
    var rows = $('div[class*=statRows]:not(div[class*=statName])').children().length
    var rowClass = $("[class*='categoriesValues'] [class*='statRow']:not([class*='statRows'])")[0].className
    var nameClass = $("[class^='statName']:not(#drugs)")[0].classList[0]
    var valueClass = $("[class*='statValue']")[0].classList[0]
    var best = $('div[class*=best]')[0]?.classList[1] || 0
    var worse = $('div[class*=worse]')[0]?.classList[1] || 0
    var current = $('div[class*=current]')[0]?.classList[1] || 0
    var div = $('<div class="'+rowClass+'"><div class="'+nameClass+'" aria-label="Love Juice Taken">Love Juice Taken</div></div>')
    for(var i = 1; i < cols; i++) {
        var totalDrugs = parseInt($("[class*='categoriesValues'] [class*='statRow']:not([class*='statRows'])")[0].children[i].children[1].innerText.replace(/\,/g,''))
        for (let j = 4; j < rows; j++) {
            totalDrugs -= parseInt($("[class*='categoriesValues'] [class*='statRow']:not([class*='statRows'])")[j].children[i].children[1].innerText.replace(/\,/g,''))
        }
        div.append('<div class="'+valueClass+'"><span>'+totalDrugs+'</span></div>')
    }

    div.find("div[class*='statValue']").first().addClass(current)

    var spans = div.find("div[class*='statValue'] span");
    var nums = spans.map(function () {
        return Number($(this).text());
    }).get();

    var min = Math.min(...nums);
    var max = Math.max(...nums);

    if(min !== max){
        var minCount = nums.filter(n => n === min).length;
        var maxCount = nums.filter(n => n === max).length;

        spans.each(function(){
            var val = Number($(this).text().replace(/,/g, "").trim());

            if(val === min && minCount === 1){
                $(this).parent().addClass(worse);
            }
            if(val === max && maxCount === 1){
                $(this).parent().addClass(best);
            }
        });
    }
    $('div[class*=statRows]:not(div[class*=statName])').append(div)
}

$(document).on("click", "a[class*='drugs']", function() {
    dataCheck()
});