Stats Xente Tamper

Stats xente wrapped code

目前為 2024-04-01 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name Stats Xente Tamper
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.2
  5. // @description Stats xente wrapped code
  6. // @author You
  7. // @match https://www.managerzone.com/*
  8. // @icon https://www.google.com/s2/favicons?sz=64&domain=managerzone.com
  9. // @grant GM_xmlhttpRequest
  10. // @grant GM_addStyle
  11. // @require https://code.jquery.com/jquery-3.7.1.js
  12. // @license MIT
  13. // ==/UserScript==
  14.  
  15. (function() {
  16. 'use strict';
  17.  
  18.  
  19. GM_addStyle(`
  20. /* The Modal (background) */
  21. .modal {
  22. display: none;
  23. /* Hidden by default */
  24. position: fixed;
  25. /* Stay in place */
  26. z-index: 1;
  27. /* Sit on top */
  28. padding-top: 25px;
  29. /* Location of the box */
  30. left: 0;
  31. top: 0;
  32. width: 100%;
  33. /* Full width */
  34. height: 100%;
  35. /* Full height */
  36. overflow: auto;
  37. /* Enable scroll if needed */
  38. background-color: rgb(0, 0, 0);
  39. /* Fallback color */
  40. background-color: rgba(0, 0, 0, 0.75);
  41. /* Black w/ opacity */
  42. }
  43.  
  44. /* Modal Content */
  45. .modal-content {
  46. background-color: #fefefe00;
  47. margin: auto;
  48. padding: 20px;
  49. width: 95%;
  50. }
  51.  
  52. /* The Close Button */
  53. .close {
  54. color: #aaaaaa;
  55. float: right;
  56. font-size: 28px;
  57. font-weight: bold;
  58. }
  59.  
  60. .close:hover,
  61. .close:focus {
  62. color: #000;
  63. text-decoration: none;
  64. cursor: pointer;
  65. }
  66.  
  67.  
  68. /* The Modal (background) */
  69. .modal_1 {
  70. display: none;
  71. /* Hidden by default */
  72. position: fixed;
  73. /* Stay in place */
  74. z-index: 1;
  75. /* Sit on top */
  76. padding-top: 25px;
  77. /* Location of the box */
  78. left: 0;
  79. top: 0;
  80. width: 100%;
  81. /* Full width */
  82. height: 100%;
  83. /* Full height */
  84. overflow: auto;
  85. /* Enable scroll if needed */
  86. background-color: rgb(0, 0, 0);
  87. /* Fallback color */
  88. background-color: rgba(0, 0, 0, 0.75);
  89. /* Black w/ opacity */
  90. }
  91.  
  92. /* Modal Content */
  93. .modal-content_1 {
  94. background-color: #fefefe00;
  95. margin: auto;
  96. padding: 20px;
  97. width: 45%;
  98. }
  99.  
  100. /* The Close Button */
  101. .close_1 {
  102. color: #aaaaaa;
  103. float: right;
  104. font-size: 28px;
  105. font-weight: bold;
  106. }
  107.  
  108. .close_1:hover,
  109. .close_1:focus {
  110. color: #000;
  111. text-decoration: none;
  112. cursor: pointer;
  113. }
  114.  
  115. .modal_cargando {
  116. display: none;
  117. /* Hidden by default */
  118. position: fixed;
  119. /* Stay in place */
  120. z-index: 1;
  121. /* Sit on top */
  122. padding-top: 25px;
  123. /* Location of the box */
  124. left: 0;
  125. top: 0;
  126. width: 100%;
  127. /* Full width */
  128. height: 100%;
  129. /* Full height */
  130. overflow: auto;
  131. /* Enable scroll if needed */
  132. background-color: rgb(0, 0, 0);
  133. /* Fallback color */
  134. background-color: rgba(0, 0, 0, 0.75);
  135. /* Black w/ opacity */
  136. }
  137.  
  138. /* Modal Content */
  139. .modal-content_cargando {
  140. background-color: #fefefe00;
  141. padding-top: 15%;
  142. width: 95%;
  143. display: flex;
  144. justify-content: center;
  145. align-items: center;
  146. }
  147.  
  148. /* The Close Button */
  149. .close_cargando {
  150. color: #aaaaaa;
  151. float: right;
  152. font-size: 28px;
  153. font-weight: bold;
  154. }
  155.  
  156. .close_cargando:hover,
  157. .close_cargando:focus {
  158. color: #000;
  159. text-decoration: none;
  160. cursor: pointer;
  161. }
  162.  
  163. `);
  164.  
  165.  
  166.  
  167. var cats = {};
  168. cats["senior"] = "senior";
  169. cats["world"] = "seniorw";
  170. cats["u23"] = "SUB23";
  171. cats["u21"] = "SUB21";
  172. cats["u18"] = "SUB18";
  173. cats["u23_world"] = "SUB23w";
  174. cats["u21_world"] = "SUB21w";
  175. cats["u18_world"] = "SUB18w";
  176. window.cats=cats;
  177.  
  178.  
  179.  
  180. function getCookie(nombre) {
  181. var regex = new RegExp("(?:(?:^|.*;\\s*)" + nombre + "\\s*\\=\\s*([^;]*).*$)|^.*$");
  182. var valorCookie = document.cookie.replace(regex, "$1");
  183. return decodeURIComponent(valorCookie);
  184. }
  185. var langs = new Map();
  186. langs.set('es', 'SPANISH');
  187. langs.set('ar', 'SPANISH')
  188. langs.set('en', 'ENGLISH');
  189. langs.set('br', 'PORTUGUES');
  190. langs.set('pt', 'PORTUGUES');
  191. langs.set('pl', 'POLISH');
  192. langs.set('ro', 'ROMANIAN');
  193. langs.set('tr', 'TURKISH');
  194.  
  195. var lanCookie = getCookie("MZLANG");
  196. if(langs.has(lanCookie)){
  197. window.lang=langs.get(lanCookie);
  198. }else{
  199. window.lang="ENGLISH";
  200. }
  201.  
  202. console.log(window.lang)
  203.  
  204.  
  205. // Ejemplo de uso
  206. var sportCookie = getCookie("MZSPORT");
  207. console.log(sportCookie);
  208. var lsport="F"
  209. if(sportCookie=="hockey"){
  210. lsport="H";
  211. }
  212. window.sport=sportCookie;
  213. window.lsport=lsport;
  214.  
  215.  
  216. document.addEventListener("DOMContentLoaded", function() {
  217. var urlParams = new URLSearchParams(window.location.search);
  218. if((urlParams.has('p')) && (urlParams.get('p') === 'league')){
  219.  
  220.  
  221. leagues();
  222.  
  223.  
  224. }
  225. });
  226.  
  227. var teams_data="";
  228.  
  229. function leagues(){
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236. var linkIds=""
  237. var urlParams = new URLSearchParams(window.location.search);
  238. setTimeout(function() {
  239.  
  240. var elems = document.getElementsByClassName("nice_table");
  241. var tabla = elems[0]
  242.  
  243.  
  244. var values = new Map();
  245.  
  246. // Agregar elementos al mapa
  247. values.set('valor23', 'Value U23');
  248. values.set('valor21', 'Value U21');
  249. values.set('valor18', 'Value U18');
  250. values.set('valorUPSenior', 'Value LM');
  251. values.set('valorUPSUB23', 'Value LM U23');
  252. values.set('valorUPSUB21', 'Value LM U21');
  253. values.set('valorUPSUB18', 'Value LM U18');
  254. values.set('valor11', 'TOP 11');
  255. values.set('valor11_23', 'TOP 11 U23');
  256. values.set('valor11_21', 'TOP 11 U21');
  257. values.set('valor11_18', 'TOP 11 U18');
  258. values.set('elo', 'ELO Score');
  259. values.set('elo23', 'ELO Score U23');
  260. values.set('elo21', 'ELO Score U21');
  261. values.set('elo18', 'ELO Score U18');
  262.  
  263. var contenidoNuevo = '<div id=testClick><center><table><tr><td><label><input class="statsxente" type="checkbox" id="valor" value="Value">Value</label></td>';
  264. values.forEach(function(valor, clave) {
  265. /*if(clave=="valorUPSenior"){
  266. contenidoNuevo+="</tr><tr>";
  267. }*/
  268. if(clave=="valor11"){
  269. contenidoNuevo+="</tr><tr>";
  270. }
  271. /* if(clave=="elo"){
  272. contenidoNuevo+="</tr><tr>";
  273. }*/
  274. contenidoNuevo+='<td><label><input class="statsxente" type="checkbox" value="'+valor+'" id="'+clave+'">'+valor+'</label></td>';
  275.  
  276. });
  277.  
  278.  
  279.  
  280. contenidoNuevo+="</tr></table></center></div>";
  281.  
  282.  
  283. values.set('valor', 'Value');
  284.  
  285. elems = document.getElementsByClassName("nice_table");
  286. tabla = elems[0]
  287.  
  288.  
  289. tabla.insertAdjacentHTML('beforebegin', contenidoNuevo);
  290.  
  291.  
  292.  
  293. values.forEach(function(valor, clave) {
  294.  
  295. var elemento = document.getElementById(clave);
  296. elemento.addEventListener('click', handleClick);
  297.  
  298. });
  299.  
  300.  
  301.  
  302. // Añadir una nueva celda en la fila de encabezados
  303. var nuevaCeldaEncabezado = document.createElement("th");
  304. nuevaCeldaEncabezado.textContent = "Stats Xente";
  305. nuevaCeldaEncabezado.style.backgroundColor="#246355"
  306. nuevaCeldaEncabezado.style.color="white"
  307. var ser = document.getElementsByClassName("seriesHeader")
  308. document.getElementsByClassName("seriesHeader")[0].appendChild(nuevaCeldaEncabezado);
  309.  
  310.  
  311. nuevaCeldaEncabezado = document.createElement("th");
  312. nuevaCeldaEncabezado.textContent = "Value";
  313. nuevaCeldaEncabezado.style.backgroundColor="#246355"
  314. nuevaCeldaEncabezado.style.color="white"
  315. ser = document.getElementsByClassName("seriesHeader")
  316. document.getElementsByClassName("seriesHeader")[0].appendChild(nuevaCeldaEncabezado);
  317.  
  318. // Añadir una nueva columna al final de cada fila de datos
  319. var contIds=0
  320. var filasDatos = tabla.getElementsByTagName("tbody")[0].getElementsByTagName("tr");
  321. for (var i = 0; i < filasDatos.length; i++) {
  322. var celda = tabla.rows[i+1].cells[1];
  323.  
  324. var equipo=celda.textContent.trim()
  325. var iniIndex = celda.innerHTML.indexOf("tid=");
  326. var lastIndex = celda.innerHTML.indexOf("\">", iniIndex+4);
  327. var data=String(celda.innerHTML)
  328. var id=data.substring(iniIndex+4,lastIndex)
  329. linkIds+="&idEquipo"+contIds+"="+id
  330. contIds++
  331. celda.innerHTML+="<input type='hidden' id='team_"+id+"' value='"+equipo+"'/>"
  332.  
  333.  
  334.  
  335.  
  336. var nuevaColumna = document.createElement("td");
  337. // var iner = "<img src='https://statsxente.com/MZ1/View/Images/detail.png' width='20px' height='20px' onclick=\"openModalStatsEquiposHistoricoFiltro1("+id+",'team_"+id+"','z_hola',77,77,'soccer')\"/>";
  338. var iner = "<img src='https://statsxente.com/MZ1/View/Images/detail.png' width='20px' height='20px' id='but"+id+"' style='cursor:pointer;'/>";
  339. iner += "<img src='https://statsxente.com/MZ1/View/Images/graph.png' width='20px' height='20px' id='but1"+id+"' style='cursor:pointer;'/>";
  340. iner += "<img src='https://statsxente.com/MZ1/View/Images/report.png' width='20px' height='20px' onclick=\"openModalStatsEquiposHistoricoFiltro1("+id+",'team_"+id+"','z_hola',77,77,'soccer')\"/>";
  341. var cat = cats[urlParams.get('type')]
  342. nuevaColumna.innerHTML=iner
  343. filasDatos[i].appendChild(nuevaColumna);
  344.  
  345. nuevaColumna = document.createElement("td");
  346.  
  347.  
  348. //var link="https://statsxente.com/MZ1/Graficos/graficoProgresoEquipo.php?idEquipo=276402&modal=yes&idioma=SPANISH&divisa=EUR&deporte=F"
  349.  
  350.  
  351.  
  352. (function (currentId,currentLSport,lang) {
  353. document.getElementById("but1" + currentId).addEventListener('click', function () {
  354. var link = "https://statsxente.com/MZ1/Graficos/graficoProgresoEquipo.php?idEquipo="+currentId+"&idioma="+lang+"&divisa=EUR&deporte="+currentLSport;
  355. openWindow(link,0.95,1.25);
  356. });
  357. })(id,window.lsport,window.lang);
  358.  
  359. (function (currentId, currentEquipo,currentCat,currentSport,lang) {
  360. document.getElementById("but" + currentId).addEventListener('click', function () {
  361. var link = "https://statsxente.com/MZ1/View/filtroStatsEquiposHistorico.php?tamper=yes&idEquipo=" + currentId + "&idioma="+lang+"&modal=yes&deporte="+currentSport+"&season=77&season_actual=77&categoria="+currentCat+"&equipo=" + currentEquipo + "&cerrar=no";
  362. openWindow(link,0.95,1.25);
  363. });
  364. })(id, equipo,cat,window.sport,window.lang);
  365.  
  366.  
  367.  
  368.  
  369. }
  370.  
  371. console.log(linkIds)
  372. GM_xmlhttpRequest({
  373. method: "GET",
  374. url: "https://bdstatsxente.sytes.net/MZ1/View/test6.php?team_id=771617&deporte=soccer&world=yes"+linkIds,
  375. headers: {
  376. "Content-Type": "application/json"
  377. },
  378. onload: function(response) {
  379. var jsonResponse = JSON.parse(response.responseText);
  380.  
  381. teams_data=jsonResponse;
  382. var filasDatos = tabla.getElementsByTagName("tbody")[0].getElementsByTagName("tr");
  383. for (var i = 0; i < filasDatos.length; i++) {
  384. var celda = tabla.rows[i+1].cells[1];
  385.  
  386. var equipo=celda.textContent.trim()
  387. var iniIndex = celda.innerHTML.indexOf("tid=");
  388. var lastIndex = celda.innerHTML.indexOf("\">", iniIndex+4);
  389. var data=String(celda.innerHTML)
  390. var id=data.substring(iniIndex+4,lastIndex)
  391.  
  392.  
  393.  
  394. var nuevaColumna = document.createElement("td");
  395.  
  396. var valor= new Intl.NumberFormat("es-ES").format(Math.round(jsonResponse[id]["valor"]))
  397. nuevaColumna.innerHTML=valor
  398. filasDatos[i].appendChild(nuevaColumna);
  399.  
  400.  
  401.  
  402. }
  403.  
  404.  
  405.  
  406.  
  407. var thead=document.getElementsByClassName("seriesHeader")[0]
  408.  
  409. console.log(thead)
  410. var ths = thead.querySelectorAll("th");
  411.  
  412. // Agregar event listener a cada th
  413. ths.forEach(function(th, index) {
  414. th.addEventListener("click", function() {
  415. ordenarTabla(index);
  416. });
  417. });
  418.  
  419.  
  420.  
  421. }
  422. });
  423.  
  424.  
  425.  
  426.  
  427.  
  428. }, 3000);
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435. }
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442. function openWindow(link,porAncho,porAlto){
  443. var ventanaAncho=(window.innerWidth)*porAncho
  444. var ventanaAlto= (window.innerHeight)*porAlto
  445. console.log(ventanaAlto)
  446. // Calcular las coordenadas para centrar la ventana
  447. var ventanaIzquierda = (window.innerWidth - ventanaAncho) / 2;
  448. var ventanaArriba = (window.innerHeight - ventanaAlto) / 2;
  449.  
  450. // Opciones de la ventana (puedes ajustar según tus necesidades)
  451. var opcionesVentana = "width=" + ventanaAncho +
  452. ",height=" + ventanaAlto +
  453. ",left=" + ventanaIzquierda +
  454. ",top=" + ventanaArriba;
  455. // Abrir la nueva ventana en el centro
  456. window.open(link, "_blank", opcionesVentana);
  457. }
  458.  
  459.  
  460.  
  461.  
  462. function handleClick(event) {
  463.  
  464.  
  465.  
  466. var elems = document.getElementsByClassName("nice_table");
  467. var tabla = elems[0]
  468. var filas = tabla.getElementsByTagName("tbody")[0].getElementsByTagName("tr");
  469.  
  470. // Obtener el segundo th del thead
  471. var thSegundo = tabla.querySelector("thead th:nth-child(2)");
  472.  
  473. // Cambiar el ancho del segundo th
  474. thSegundo.style.width = "320px";
  475.  
  476. // Iterar sobre cada fila
  477. for (var i = 0; i < filas.length; i++) {
  478. // Obtener todas las celdas de la fila
  479.  
  480.  
  481.  
  482. var celda = tabla.rows[i+1].cells[1];
  483.  
  484. var equipo=celda.textContent.trim()
  485. var iniIndex = celda.innerHTML.indexOf("tid=");
  486. var lastIndex = celda.innerHTML.indexOf("\">", iniIndex+4);
  487. var data=String(celda.innerHTML)
  488. var id=data.substring(iniIndex+4,lastIndex)
  489.  
  490.  
  491. var celdas = filas[i].getElementsByTagName("td");
  492.  
  493. // Obtener la última celda de la fila
  494. var ultimaCelda = celdas[celdas.length - 1];
  495.  
  496.  
  497.  
  498. console.log(teams_data[id])
  499.  
  500. var valor= new Intl.NumberFormat("es-ES").format(Math.round(teams_data[id][event.target.id]))
  501. ultimaCelda.innerHTML = valor;
  502. }
  503. var checkboxes = document.querySelectorAll('.statsxente');
  504.  
  505.  
  506.  
  507. var ultimaFilaEncabezado = tabla.querySelector("thead tr:last-child");
  508.  
  509. // Obtener la última celda de encabezado (<th>) dentro de la última fila de encabezado
  510. var ultimaCeldaEncabezado = ultimaFilaEncabezado.querySelector("th:last-child");
  511.  
  512. // Cambiar el texto de la última celda de encabezado
  513. ultimaCeldaEncabezado.textContent = event.target.value;
  514.  
  515.  
  516. // Iterar sobre los elementos
  517. checkboxes.forEach(function(checkbox) {
  518. console.log(checkbox.id )
  519. // Verificar si el checkbox no tiene el ID "hola"
  520. if (checkbox.id !== event.target.id) {
  521. // Deseleccionar el checkbox
  522. checkbox.checked = false;
  523. }
  524. });
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532. var columna=12
  533.  
  534.  
  535.  
  536. }
  537.  
  538.  
  539. function ordenarTabla(columna){
  540.  
  541.  
  542. var elems = document.getElementsByClassName("nice_table");
  543. var tabla = elems[0]
  544.  
  545. var filas, switching, i, x, y, debeCambiar, direccion, cambioRealizado;
  546.  
  547. switching = true;
  548. // Establecer la dirección de orden inicial a ascendente
  549. direccion = "descendente";
  550. // Continuar ordenando hasta que no haya más cambios realizados
  551. while (switching) {
  552. switching = false;
  553. filas = tabla.rows;
  554. // Recorrer todas las filas excepto la primera (encabezados)
  555. for (i = 1; i < (filas.length - 1); i++) {
  556. debeCambiar = false;
  557. // Obtener los elementos a comparar, uno de la columna actual y otro de la siguiente
  558. x = filas[i].getElementsByTagName("td")[columna];
  559. y = filas[i + 1].getElementsByTagName("td")[columna];
  560. // Comparar los elementos según la dirección de orden y el tipo de datos
  561. if (direccion == "ascendente") {
  562. if (isNaN(parseInt(x.innerHTML))) {
  563. if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) {
  564. debeCambiar = true;
  565. break;
  566. }
  567. } else {
  568. if (parseInt(x.innerHTML) > parseInt(y.innerHTML)) {
  569. debeCambiar = true;
  570. break;
  571. }
  572. }
  573. } else if (direccion == "descendente") {
  574. if (isNaN(parseInt(x.innerHTML))) {
  575. if (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) {
  576. debeCambiar = true;
  577. break;
  578. }
  579. } else {
  580. if (parseInt(x.innerHTML) < parseInt(y.innerHTML)) {
  581. debeCambiar = true;
  582. break;
  583. }
  584. }
  585. }
  586. }
  587. if (debeCambiar) {
  588. // Si debe cambiar, marcarlo y cambiar el orden de las filas
  589. filas[i].parentNode.insertBefore(filas[i + 1], filas[i]);
  590. switching = true;
  591. // Marcar que se realizó un cambio
  592. cambioRealizado = true;
  593. } else {
  594. // Si no se realizó ningún cambio y se estaba ordenando de forma ascendente,
  595. // cambiar a orden descendente y volver a empezar
  596. if (!cambioRealizado && direccion == "descendente") {
  597. direccion = "ascendente";
  598. switching = true;
  599. }
  600. }
  601. }
  602.  
  603.  
  604. filas = tabla.getElementsByTagName("tbody")[0].getElementsByTagName("tr");
  605.  
  606. // Recorrer todas las filas
  607. for ( i = 0; i < filas.length; i++) {
  608. // Obtener el primer td de la fila
  609. var primerTd = filas[i].querySelector("td");
  610.  
  611. // Establecer el contenido del primer td
  612. primerTd.innerHTML = (i+1);
  613. }
  614. }
  615.  
  616.  
  617.  
  618.  
  619. // Your code here...
  620. })();