Zusatzinfos zur Aufstellung bei www.onlineliga.de (OFA)
สคริปต์นี้ไม่ควรถูกติดตั้งโดยตรง มันเป็นคลังสำหรับสคริปต์อื่น ๆ เพื่อบรรจุด้วยคำสั่งเมทา // @require https://update.greasyfork.org/scripts/424584/919064/OnlineligaLineupInfo.js
/* jshint esversion: 6, multistr: true */ /* globals waitForKeyElements, OLCore */ // ==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 // @require https://greasyfork.org/scripts/5392-waitforkeyelements/code/WaitForKeyElements.js?version=115012 // @require https://greasyfork.org/scripts/424598-olcore/code/OLCore.js?version=919044 // ==/UserScript== /********************************************* * 0.1.0 10.04.2021 Release *********************************************/ (function() { 'use strict'; var $ = unsafeWindow.jQuery; async function showInfo(){ 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 = parseInt(playerSpan.attr("onclick").match(/\s*'?playerId'?\s*:\s*(\d+)\s*}/)[1], 10); 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#matchdayr###lt > 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("div.ol-pitch-position").each(function(i,e){ const playerId = parseInt(e.parentNode.localName === "a" && e.parentNode.hasAttribute("onclick") ? $(e.parentNode).attr("onclick").match(/\s*'?playerId'?\s*:\s*(\d+)\s*}/)[1] : $(e).find("div[data-player-id]").attr("data-player-id"),10); if (playerId > 0){ teamData0.lineupVal += teamData0.playerObj[playerId] || 0; } }); $(pitch1).find("div.ol-pitch-position").each(function(i,e){ const playerId = parseInt(e.parentNode.localName === "a" && e.parentNode.hasAttribute("onclick") ? $(e.parentNode).attr("onclick").match(/\s*'?playerId'?\s*:\s*(\d+)\s*}/)[1] : $(e).find("div[data-player-id]").attr("data-player-id"),10); 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); }; function init(){ OLCore.addStyle("div.lineupinfo_percentLineup {position:absolute;}","OLI_LineupDiv"); showInfo(); }; waitForKeyElements( "div.row > div.statistics-lineup-wrapper:first-child", init ); })();