Greasy Fork

OnlineligaLineupInfo

Zusatzinfos zur Aufstellung bei www.onlineliga.de (OFA)

目前为 2021-04-06 提交的版本。查看 最新版本

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.greasyfork.icu/scripts/424584/918954/OnlineligaLineupInfo.js

/*jshint esversion: 6, multistr: true */

// ==UserScript==
// @name           OnlineligaLineupInfo
// @namespace      https://greasyfork.org/de/users/577453
// @version        0.1.0
// @license        LGPLv3
// @description    Zusatzinfos zur Aufstellung bei www.onlineliga.de (OFA)
// @author         KnutEdelbert
// @match          https://www.onlineliga.de
// @grant          GM_addStyle
// ==/UserScript==

/*********************************************
 * 0.1.0 06.04.2021 Release
 *********************************************/
'use strict';

const $ = unsafeWindow.jQuery;

const OnlineligaLineupInfo = {};

OnlineligaLineupInfo.showInfo = async function(){

    if ($("div.ol-team-settings-pitch-wrapper").length === 0){
        return;
    }

    function getData(url){ return $.get(url); }

    function euroValue(val){
        return `${new Intl.NumberFormat('de-DE').format(val)} €`;
    }

    function parseTeamData(teamData){
        const teamValue = $(teamData).find('span.bandarole-team-value > span.pull-right').text();
        const teamRows = $(teamData).filter('div.team-overview-squad-row');
        const teamSize = teamRows.length;
        const playerData = {};
        const playerArray = [];
        teamRows.each(function(){
            const row = $(this);
            const playerSpan = row.find("span.ol-player-name");
            if (playerSpan.length > 0){
                const playerId = playerSpan.attr("onclick").match(/\s*'?playerId'?\s*:\s*(\d+)\s*}/)[1];
                const playerValue = parseInt(row.find('div.col-md-3.col-lg-3.col-sm-6.col-xs-6.text-right').text().trim().replace(/\./g,''),10) || 0;
                if (playerId > 0){
                    playerData[playerId] = playerValue;
                    playerArray.push({"id":playerId, "value": playerValue});
                }
            }
        });
        const top11value = playerArray
        .sort((a,b) => b.value - a.value)
        .slice(0,11)
        .map(a => a.value)
        .reduce((pv, cv) => pv + cv, 0);
        const teamValueInt = parseInt(teamValue.replace(/\./g,''),10);
        const averageTeam = Math.round(teamValueInt/teamSize);
        return {
            "teamVal" : teamValueInt,
            "teamAvg" : averageTeam,
            "top11" : top11value,
            "playerObj": playerData,
            "playerArr": playerArray,
            "lineupVal": 0
        }
    }

    const userIdCont = $("div#matchdayresult > div.ol-page-content > div.row.ol-paragraph-2 > div > a[onclick]");
    const userId0 = $(userIdCont[0]).attr("onclick").match(/\s*'?userId'?\s*:\s*(\d+)\s*}/)[1];
    const userId1 = $(userIdCont[1]).attr("onclick").match(/\s*'?userId'?\s*:\s*(\d+)\s*}/)[1];

    const teamData0 = parseTeamData(await getData(`/team/overview/squad?userId=${userId0}`));
    const teamData1 = parseTeamData(await getData(`/team/overview/squad?userId=${userId1}`));

    const pitches = $("div#matchContent div.ol-team-settings-pitch-position-wrapper");
    const pitch0 = pitches[0];
    const pitch1 = pitches[1];

    $(pitch0).find("a[onclick]:has(div.ol-pitch-position)").each(function(i,e){
        const playerId = $(this).attr("onclick").match(/\s*'?playerId'?\s*:\s*(\d+)\s*}/)[1];
        if (playerId > 0){
            teamData0.lineupVal += teamData0.playerObj[playerId] || 0;
        }
    });
    $(pitch1).find("a[onclick]:has(div.ol-pitch-position)").each(function(i,e){
        const playerId = $(this).attr("onclick").match(/\s*'?playerId'?\s*:\s*(\d+)\s*}/)[1];
        if (playerId > 0){
            teamData1.lineupVal += teamData1.playerObj[playerId] || 0;
        }
    });

    teamData0.lineupPercent11 = Math.round(teamData0.lineupVal*100/teamData0.top11,0);
    teamData0.lineupPercentAll = Math.round(teamData0.lineupVal*100/teamData0.teamVal,0);
    teamData1.lineupPercent11 = Math.round(teamData1.lineupVal*100/teamData1.top11,0);
    teamData1.lineupPercentAll = Math.round(teamData1.lineupVal*100/teamData1.teamVal,0);

    $(pitch0).append(`<div class="lineupinfo_percentLineup" style="top: 0%" title="% v. Top 11 (MW)">${teamData0.lineupPercent11}%</div>`);
    $(pitch0).append(`<div class="lineupinfo_percentLineup" style="top: 5%" title="% v. gesamt Team">${teamData0.lineupPercentAll}%</div>`);
    $(pitch0).append(`<div class="lineupinfo_percentLineup" style="top: 0%; right:0%;" title="MW Aufstellung">${euroValue(teamData0.lineupVal)}</div>`);
    $(pitch0).append(`<div class="lineupinfo_percentLineup" style="top: 5%; right:0%;" title="MW Team">${euroValue(teamData0.teamVal)}</div>`);
    $(pitch1).append(`<div class="lineupinfo_percentLineup" style="top: 0%" title="% v. Top 11 (MW)">${teamData1.lineupPercent11}%</div>`);
    $(pitch1).append(`<div class="lineupinfo_percentLineup" style="top: 5%" title="% v. gesamtes Team">${teamData1.lineupPercentAll}%</div>`);
    $(pitch1).append(`<div class="lineupinfo_percentLineup" style="top: 0%; right:0%;" title="MW Aufstellung">${euroValue(teamData1.lineupVal)}</div>`);
    $(pitch1).append(`<div class="lineupinfo_percentLineup" style="top: 5%; right:0%;" title="MW Team">${euroValue(teamData1.teamVal)}</div>`);

    console.log('team0', teamData0);
    console.log('team1', teamData1);

};

OnlineligaLineupInfo.init = function(){
    GM_addStyle("div.lineupinfo_percentLineup {position:absolute;}");
    OnlineligaLineupInfo.showInfo();
};

/* for testing
waitForKeyElements(
  "div#matchContent:has(div.ol-team-settings-pitch)",
  function(){ OnlineligaLineupInfo.init(); }
);
*/