flarity228 / Classed Raider list

// ==UserScript==
// @name         Classed Raider list
// @namespace    http://tampermonkey.net/
// @version      0.4
// @description  try to take over the world!
// @author       You
// @match        http://armory.warmane.com/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    function extractRaiderList() {
        var ranksToSkip = ['Flex Raider', 'Officer', 'Guild Master', 'Alt', 'Social'];
        var constantRaiders = [
            {name: 'Svartkuk', class: 'Priest'},
            {name: 'Exai', class: 'Druid'},
            {name: 'Redink', class: 'Warlock'},
            {name: 'Masquadetv', class: 'Paladin'}
        ];
        var raiders = [];
        jQuery('#data-table-list tr').each(function() {
            var tr = $(this);
            var rank = tr.find('td:eq(5)').text().trim();
            if (ranksToSkip.some(r => r == rank)) {
                return;
            }
            var name = tr.find('td:eq(0) a').text();
            var klass = tr.find('td:eq(2) img').attr('alt');
            raiders.push({name: name, class: klass});
        });
        return raiders.concat(constantRaiders);
    }

    function createEmptyListHtml() {
        return `
<div class="stats"></div>
<ul id="raider-list">
<li>
<ul class="shaman">

</ul>
</li>
<li>
<ul class="warlock">

</ul>
</li>
<li>
<ul class="hunter">

</ul>
</li>
<li>
<ul class="warrior">

</ul>
</li>
<li>
<ul class="priest">

</ul>
</li>
<li>
<ul class="druid">

</ul>
</li>
<li>
<ul class="mage">

</ul>
</li>
<li>
<ul class="paladin">

</ul>
</li>
<li>
<ul class="rogue">

</ul>
</li>
</ul>`;
    }

    function createListStyle() {
        return `
<style>
.stats {
    padding-left: 0px;
    color: #c1b575;
}
ul#raider-list {
margin-top: 10px;
margin-bottom: 0px;
height: 100%;
width: 100%;
float: left;
}
ul#raider-list, ul#raider-list ul {
list-style: none;
height: 100%;
padding: 10px;
font-size: 16px;
color: #ddd;
}
ul#raider-list li ul {
height: 100%;
display: inline-block;
float: left;
}
ul#raider-list li ul.warrior a {
color: #C79C6E;
}
ul#raider-list li ul.warlock a {
color: #9482C9;
}
ul#raider-list li ul.shaman a {
color: #0070DE;
}
ul#raider-list li ul.rogue a {
color: #FFF569;
}
ul#raider-list li ul.priest a {
color: #FFFFFF;
}
ul#raider-list li ul.paladin a {
color: #F58CBA;
}
ul#raider-list li ul.mage a {
color: #69CCF0;
}
ul#raider-list li ul.hunter a {
color: #ABD473;
}
ul#raider-list li ul.druid a {
color: #FF7D0A;
}

ul#raider-list li ul a:hover {
opacity: 0.85;
}

ul#raider-list li ul li {
padding: 0 0 5px 0;
}
</style>`;
    }

    function appendListToGuildInfo() {
        var listHtml = createEmptyListHtml();
        var listStyle = createListStyle();
        jQuery('head').append(listStyle);
        jQuery('#guild-sheet h3').after(jQuery(listHtml));

        var raiders = extractRaiderList();
        raiders.forEach(raider => {
            var listItemHtml = `<li><a href='/character/${raider.name}/Outland/profile'>${raider.name}</a></li>`;
            jQuery(`#raider-list ul.${raider.class.toLowerCase()}`).append(listItemHtml);
        });
        jQuery('.stats').html(`<div class="stats">Total: ${raiders.length}</div>`);
    }

    if (jQuery('#guild-sheet .name').text() == 'Marbles') {
        appendListToGuildInfo();
    }

    jQuery('.model').remove();
})();