sortClanIvent

Сортировка Клана по очкам ивента

// ==UserScript==
// @name         sortClanIvent
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  Сортировка Клана по очкам ивента
// @author       Яшка
// @match      https://www.heroeswm.ru/clan_info.php?id=*
// @match      https://www.lordswm.com/clan_info.php?id=*
// @include        https://www.heroeswm.ru/clan_info.php?id=*
// @grant        none
// @license Яшка
// ==/UserScript==

(async function () {
    'use strict';
    let allTableArr = document.querySelectorAll(".wb");
    const tableUserInClan = allTableArr[allTableArr.length - 1]
    let allTrArr = allTableArr[allTableArr.length - 1].querySelectorAll("tr");
    let clanUserArr = []
    let clanUserStartArr = []
    const regexScore = /,/i;
    const ids = {
        sortDiv: 'sortMinUserClanScoreHwmHelper',
        sortMax: 'sortMaxUserClanScoreHwmHelper',
        sortMin: 'sortMinUserClanScoreHwmHelper',
        sortStart: 'sortStartUserClanScoreHwmHelper',
    }

    function createDiv(html, place, id, display) {
        const divHwmHelper = document.createElement("div");
        divHwmHelper.id = id;
        divHwmHelper.style.display = display;
        switch (place) {
            case 'before': {
                html.before(divHwmHelper)
                break;
            }
            default: {
                break;
            }
        }
        return divHwmHelper;
    }

    function createBtn(html, place, text, id, func) {
        const btnHwmHelper = document.createElement("a");
        btnHwmHelper.innerHTML = text;
        btnHwmHelper.id = id;
        btnHwmHelper.style.cursor = 'pointer';
        btnHwmHelper.style.border = '1px solid black';
        btnHwmHelper.style.margin = '5px';
        btnHwmHelper.style.padding = '5px';
        btnHwmHelper.style.display = 'flex';
        btnHwmHelper.style.width = 'fit-content';
        switch (place) {
            case 'before': {
                html.before(btnHwmHelper)
                break;
            }
            case 'in': {
                html.appendChild(btnHwmHelper)
            }
            default: {
                break;
            }
        }
        btnHwmHelper.addEventListener("click", () => {
            console.log(1)
            func()
        })
        return;
    }

    function SortMaxScore(a, b) {
        return b.score - a.score;
    }

    function SortMinScore(a, b) {
        return a.score - b.score;
    }

    function SortMaxClanUserScore() {
        allTrArr.forEach(td => {
            let html = td
            td.childNodes.forEach((el, index) => {
                if (index === 5) {
                    let score = el.textContent.trim();
                    clanUserArr.push({
                        html,
                        score: score !== '' ? JSON.parse(score.replace(regexScore, '')) : 0,
                    })
                }
            })
        })
        clanUserArr.sort(SortMaxScore)
        allTrArr.forEach(td => {
            td.remove()
        })
        clanUserArr.forEach(el => {
            tableUserInClan.appendChild(el.html)
        })
    }

    function SortMinClanUserScore() {
        allTrArr.forEach(td => {
            let html = td
            td.childNodes.forEach((el, index) => {
                if (index === 5) {
                    let score = el.textContent.trim();
                    clanUserArr.push({
                        html,
                        score: score !== '' ? JSON.parse(score.replace(regexScore, '')) : 0,
                    })
                }
            })
        })
        clanUserArr.sort(SortMinScore)
        allTrArr.forEach(td => {
            td.remove()
        })
        clanUserArr.forEach(el => {
            tableUserInClan.appendChild(el.html)
        })
    }

    function SortStartClanUserScore() {
        if (clanUserStartArr.length) {
            console.log('вошел')
            console.log(allTrArr)
            allTrArr.forEach(td => {
                td.remove()
            })
            clanUserStartArr.forEach(el => {
                tableUserInClan.appendChild(el.html)
            })
        }
    }

    function GetStartClanUser() {
        allTrArr.forEach(td => {
            let html = td
            td.childNodes.forEach((el, index) => {
                if (index === 5) {
                    let score = el.textContent.trim();
                    clanUserStartArr.push({
                        html,
                        score: score !== '' ? JSON.parse(score.replace(regexScore, '')) : 0,
                    })
                }
            })
        })
    }

    GetStartClanUser();
    let divSort = createDiv(tableUserInClan, 'before', ids.sortDiv, 'flex')
    createBtn(divSort, 'in', 'Сортировка ↑', ids.sortMax, () => {
        SortMaxClanUserScore()
    })
    createBtn(divSort, 'in', 'Сортировка ↓', ids.sortMin, () => {
        SortMinClanUserScore()
    })
    createBtn(divSort, 'in', 'Сборс', ids.sortStart, () => {
        SortStartClanUserScore()
    })


})();