Stats Xente Script

Example of description of statsxente

当前为 2024-04-02 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Stats Xente Script
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.5
  5. // @description Example of description of statsxente
  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. // @requier https://raw.githubusercontent.com/alexgomezg/Stats-Xente-Script/main/main.js
  13. // ==/UserScript==
  14.  
  15. (function() {
  16. 'use strict';
  17.  
  18.  
  19. GM_addStyle(`
  20. /* The Modal (background) test*/
  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. var langs = new Map();
  180. langs.set('es', 'SPANISH');
  181. langs.set('ar', 'SPANISH')
  182. langs.set('en', 'ENGLISH');
  183. langs.set('br', 'PORTUGUES');
  184. langs.set('pt', 'PORTUGUES');
  185. langs.set('pl', 'POLISH');
  186. langs.set('ro', 'ROMANIAN');
  187. langs.set('tr', 'TURKISH');
  188.  
  189. var lanCookie = getCookie("MZLANG");
  190. if(langs.has(lanCookie)){
  191. window.lang=langs.get(lanCookie);
  192. }else{
  193. window.lang="ENGLISH";
  194. }
  195.  
  196. console.log(window.lang)
  197.  
  198.  
  199. // Ejemplo de uso
  200. var sportCookie = getCookie("MZSPORT");
  201. console.log(sportCookie);
  202. var lsport="F"
  203. if(sportCookie=="hockey"){
  204. lsport="H";
  205. }
  206. window.sport=sportCookie;
  207. window.lsport=lsport;
  208.  
  209.  
  210. document.addEventListener("DOMContentLoaded", function() {
  211. var urlParams = new URLSearchParams(window.location.search);
  212. if((urlParams.has('p')) && (urlParams.get('p') === 'league')){
  213.  
  214.  
  215. leagues();
  216.  
  217.  
  218. }
  219. });
  220.  
  221. var teams_data="";
  222.  
  223. function leagues(){
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230. var linkIds=""
  231. var urlParams = new URLSearchParams(window.location.search);
  232. setTimeout(function() {
  233.  
  234. var elems = document.getElementsByClassName("nice_table");
  235. var tabla = elems[0]
  236.  
  237.  
  238. var values = new Map();
  239.  
  240. // Agregar elementos al mapa
  241. values.set('valor23', 'Value U23');
  242. values.set('valor21', 'Value U21');
  243. values.set('valor18', 'Value U18');
  244. values.set('valorUPSenior', 'Value LM');
  245. values.set('valorUPSUB23', 'Value LM U23');
  246. values.set('valorUPSUB21', 'Value LM U21');
  247. values.set('valorUPSUB18', 'Value LM U18');
  248. values.set('valor11', 'TOP 11');
  249. values.set('valor11_23', 'TOP 11 U23');
  250. values.set('valor11_21', 'TOP 11 U21');
  251. values.set('valor11_18', 'TOP 11 U18');
  252. values.set('elo', 'ELO Score');
  253. values.set('elo23', 'ELO Score U23');
  254. values.set('elo21', 'ELO Score U21');
  255. values.set('elo18', 'ELO Score U18');
  256.  
  257. var contenidoNuevo = '<div id=testClick><center><table><tr><td><label><input class="statsxente" type="checkbox" id="valor" value="Value">Value</label></td>';
  258. values.forEach(function(valor, clave) {
  259. /*if(clave=="valorUPSenior"){
  260. contenidoNuevo+="</tr><tr>";
  261. }*/
  262. if(clave=="valor11"){
  263. contenidoNuevo+="</tr><tr>";
  264. }
  265. /* if(clave=="elo"){
  266. contenidoNuevo+="</tr><tr>";
  267. }*/
  268. contenidoNuevo+='<td><label><input class="statsxente" type="checkbox" value="'+valor+'" id="'+clave+'">'+valor+'</label></td>';
  269.  
  270. });
  271.  
  272.  
  273.  
  274. contenidoNuevo+="</tr></table></center></div>";
  275.  
  276.  
  277. values.set('valor', 'Value');
  278.  
  279. elems = document.getElementsByClassName("nice_table");
  280. tabla = elems[0]
  281.  
  282.  
  283. tabla.insertAdjacentHTML('beforebegin', contenidoNuevo);
  284.  
  285.  
  286.  
  287. values.forEach(function(valor, clave) {
  288.  
  289. var elemento = document.getElementById(clave);
  290. elemento.addEventListener('click', handleClick);
  291.  
  292. });
  293.  
  294.  
  295.  
  296. // Añadir una nueva celda en la fila de encabezados
  297. var nuevaCeldaEncabezado = document.createElement("th");
  298. nuevaCeldaEncabezado.textContent = "Stats Xente";
  299. nuevaCeldaEncabezado.style.backgroundColor="#246355"
  300. nuevaCeldaEncabezado.style.color="white"
  301. var ser = document.getElementsByClassName("seriesHeader")
  302. document.getElementsByClassName("seriesHeader")[0].appendChild(nuevaCeldaEncabezado);
  303.  
  304.  
  305. nuevaCeldaEncabezado = document.createElement("th");
  306. nuevaCeldaEncabezado.textContent = "Value";
  307. nuevaCeldaEncabezado.style.backgroundColor="#246355"
  308. nuevaCeldaEncabezado.style.color="white"
  309. ser = document.getElementsByClassName("seriesHeader")
  310. document.getElementsByClassName("seriesHeader")[0].appendChild(nuevaCeldaEncabezado);
  311.  
  312. // Añadir una nueva columna al final de cada fila de datos
  313. var contIds=0
  314. var filasDatos = tabla.getElementsByTagName("tbody")[0].getElementsByTagName("tr");
  315. for (var i = 0; i < filasDatos.length; i++) {
  316. var celda = tabla.rows[i+1].cells[1];
  317.  
  318. var equipo=celda.textContent.trim()
  319. var iniIndex = celda.innerHTML.indexOf("tid=");
  320. var lastIndex = celda.innerHTML.indexOf("\">", iniIndex+4);
  321. var data=String(celda.innerHTML)
  322. var id=data.substring(iniIndex+4,lastIndex)
  323. linkIds+="&idEquipo"+contIds+"="+id
  324. contIds++
  325. celda.innerHTML+="<input type='hidden' id='team_"+id+"' value='"+equipo+"'/>"
  326.  
  327.  
  328.  
  329.  
  330. var nuevaColumna = document.createElement("td");
  331. // 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')\"/>";
  332. var iner = "<img src='https://statsxente.com/MZ1/View/Images/detail.png' width='20px' height='20px' id='but"+id+"' style='cursor:pointer;'/>";
  333. iner += "<img src='https://statsxente.com/MZ1/View/Images/graph.png' width='20px' height='20px' id='but1"+id+"' style='cursor:pointer;'/>";
  334. 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')\"/>";
  335. var cat = cats[urlParams.get('type')]
  336. nuevaColumna.innerHTML=iner
  337. filasDatos[i].appendChild(nuevaColumna);
  338.  
  339. nuevaColumna = document.createElement("td");
  340.  
  341.  
  342. //var link="https://statsxente.com/MZ1/Graficos/graficoProgresoEquipo.php?idEquipo=276402&modal=yes&idioma=SPANISH&divisa=EUR&deporte=F"
  343.  
  344.  
  345.  
  346. (function (currentId,currentLSport,lang) {
  347. document.getElementById("but1" + currentId).addEventListener('click', function () {
  348. var link = "https://statsxente.com/MZ1/Graficos/graficoProgresoEquipo.php?idEquipo="+currentId+"&idioma="+lang+"&divisa=EUR&deporte="+currentLSport;
  349. openWindow(link,0.95,1.25);
  350. });
  351. })(id,window.lsport,window.lang);
  352.  
  353. (function (currentId, currentEquipo,currentCat,currentSport,lang) {
  354. document.getElementById("but" + currentId).addEventListener('click', function () {
  355. 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";
  356. openWindow(link,0.95,1.25);
  357. });
  358. })(id, equipo,cat,window.sport,window.lang);
  359.  
  360.  
  361.  
  362.  
  363. }
  364.  
  365. console.log(linkIds)
  366. GM_xmlhttpRequest({
  367. method: "GET",
  368. url: "https://bdstatsxente.sytes.net/MZ1/View/test6.php?team_id=771617&deporte=soccer&world=yes"+linkIds,
  369. headers: {
  370. "Content-Type": "application/json"
  371. },
  372. onload: function(response) {
  373. var jsonResponse = JSON.parse(response.responseText);
  374.  
  375. teams_data=jsonResponse;
  376. var filasDatos = tabla.getElementsByTagName("tbody")[0].getElementsByTagName("tr");
  377. for (var i = 0; i < filasDatos.length; i++) {
  378. var celda = tabla.rows[i+1].cells[1];
  379.  
  380. var equipo=celda.textContent.trim()
  381. var iniIndex = celda.innerHTML.indexOf("tid=");
  382. var lastIndex = celda.innerHTML.indexOf("\">", iniIndex+4);
  383. var data=String(celda.innerHTML)
  384. var id=data.substring(iniIndex+4,lastIndex)
  385.  
  386.  
  387.  
  388. var nuevaColumna = document.createElement("td");
  389.  
  390. var valor= new Intl.NumberFormat("es-ES").format(Math.round(jsonResponse[id]["valor"]))
  391. nuevaColumna.innerHTML=valor
  392. filasDatos[i].appendChild(nuevaColumna);
  393.  
  394.  
  395.  
  396. }
  397.  
  398.  
  399.  
  400.  
  401. var thead=document.getElementsByClassName("seriesHeader")[0]
  402.  
  403. console.log(thead)
  404. var ths = thead.querySelectorAll("th");
  405.  
  406. // Agregar event listener a cada th
  407. ths.forEach(function(th, index) {
  408. th.addEventListener("click", function() {
  409. ordenarTabla(index);
  410. });
  411. });
  412.  
  413.  
  414.  
  415. }
  416. });
  417.  
  418.  
  419.  
  420.  
  421.  
  422. }, 3000);
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429. }
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436. function openWindow(link,porAncho,porAlto){
  437. var ventanaAncho=(window.innerWidth)*porAncho
  438. var ventanaAlto= (window.innerHeight)*porAlto
  439. console.log(ventanaAlto)
  440. // Calcular las coordenadas para centrar la ventana
  441. var ventanaIzquierda = (window.innerWidth - ventanaAncho) / 2;
  442. var ventanaArriba = (window.innerHeight - ventanaAlto) / 2;
  443.  
  444. // Opciones de la ventana (puedes ajustar según tus necesidades)
  445. var opcionesVentana = "width=" + ventanaAncho +
  446. ",height=" + ventanaAlto +
  447. ",left=" + ventanaIzquierda +
  448. ",top=" + ventanaArriba;
  449. // Abrir la nueva ventana en el centro
  450. window.open(link, "_blank", opcionesVentana);
  451. }
  452.  
  453.  
  454.  
  455.  
  456. function handleClick(event) {
  457.  
  458.  
  459.  
  460. var elems = document.getElementsByClassName("nice_table");
  461. var tabla = elems[0]
  462. var filas = tabla.getElementsByTagName("tbody")[0].getElementsByTagName("tr");
  463.  
  464. // Obtener el segundo th del thead
  465. var thSegundo = tabla.querySelector("thead th:nth-child(2)");
  466.  
  467. // Cambiar el ancho del segundo th
  468. thSegundo.style.width = "320px";
  469.  
  470. // Iterar sobre cada fila
  471. for (var i = 0; i < filas.length; i++) {
  472. // Obtener todas las celdas de la fila
  473.  
  474.  
  475.  
  476. var celda = tabla.rows[i+1].cells[1];
  477.  
  478. var equipo=celda.textContent.trim()
  479. var iniIndex = celda.innerHTML.indexOf("tid=");
  480. var lastIndex = celda.innerHTML.indexOf("\">", iniIndex+4);
  481. var data=String(celda.innerHTML)
  482. var id=data.substring(iniIndex+4,lastIndex)
  483.  
  484.  
  485. var celdas = filas[i].getElementsByTagName("td");
  486.  
  487. // Obtener la última celda de la fila
  488. var ultimaCelda = celdas[celdas.length - 1];
  489.  
  490.  
  491.  
  492. console.log(teams_data[id])
  493.  
  494. var valor= new Intl.NumberFormat("es-ES").format(Math.round(teams_data[id][event.target.id]))
  495. ultimaCelda.innerHTML = valor;
  496. }
  497. var checkboxes = document.querySelectorAll('.statsxente');
  498.  
  499.  
  500.  
  501. var ultimaFilaEncabezado = tabla.querySelector("thead tr:last-child");
  502.  
  503. // Obtener la última celda de encabezado (<th>) dentro de la última fila de encabezado
  504. var ultimaCeldaEncabezado = ultimaFilaEncabezado.querySelector("th:last-child");
  505.  
  506. // Cambiar el texto de la última celda de encabezado
  507. ultimaCeldaEncabezado.textContent = event.target.value;
  508.  
  509.  
  510. // Iterar sobre los elementos
  511. checkboxes.forEach(function(checkbox) {
  512. console.log(checkbox.id )
  513. // Verificar si el checkbox no tiene el ID "hola"
  514. if (checkbox.id !== event.target.id) {
  515. // Deseleccionar el checkbox
  516. checkbox.checked = false;
  517. }
  518. });
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526. var columna=12
  527.  
  528.  
  529.  
  530. }
  531.  
  532.  
  533. function ordenarTabla(columna){
  534.  
  535.  
  536. var elems = document.getElementsByClassName("nice_table");
  537. var tabla = elems[0]
  538.  
  539. var filas, switching, i, x, y, debeCambiar, direccion, cambioRealizado;
  540.  
  541. switching = true;
  542. // Establecer la dirección de orden inicial a ascendente
  543. direccion = "descendente";
  544. // Continuar ordenando hasta que no haya más cambios realizados
  545. while (switching) {
  546. switching = false;
  547. filas = tabla.rows;
  548. // Recorrer todas las filas excepto la primera (encabezados)
  549. for (i = 1; i < (filas.length - 1); i++) {
  550. debeCambiar = false;
  551. // Obtener los elementos a comparar, uno de la columna actual y otro de la siguiente
  552. x = filas[i].getElementsByTagName("td")[columna];
  553. y = filas[i + 1].getElementsByTagName("td")[columna];
  554. // Comparar los elementos según la dirección de orden y el tipo de datos
  555. if (direccion == "ascendente") {
  556. if (isNaN(parseInt(x.innerHTML))) {
  557. if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) {
  558. debeCambiar = true;
  559. break;
  560. }
  561. } else {
  562. if (parseInt(x.innerHTML) > parseInt(y.innerHTML)) {
  563. debeCambiar = true;
  564. break;
  565. }
  566. }
  567. } else if (direccion == "descendente") {
  568. if (isNaN(parseInt(x.innerHTML))) {
  569. if (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) {
  570. debeCambiar = true;
  571. break;
  572. }
  573. } else {
  574. if (parseInt(x.innerHTML) < parseInt(y.innerHTML)) {
  575. debeCambiar = true;
  576. break;
  577. }
  578. }
  579. }
  580. }
  581. if (debeCambiar) {
  582. // Si debe cambiar, marcarlo y cambiar el orden de las filas
  583. filas[i].parentNode.insertBefore(filas[i + 1], filas[i]);
  584. switching = true;
  585. // Marcar que se realizó un cambio
  586. cambioRealizado = true;
  587. } else {
  588. // Si no se realizó ningún cambio y se estaba ordenando de forma ascendente,
  589. // cambiar a orden descendente y volver a empezar
  590. if (!cambioRealizado && direccion == "descendente") {
  591. direccion = "ascendente";
  592. switching = true;
  593. }
  594. }
  595. }
  596.  
  597.  
  598. filas = tabla.getElementsByTagName("tbody")[0].getElementsByTagName("tr");
  599.  
  600. // Recorrer todas las filas
  601. for ( i = 0; i < filas.length; i++) {
  602. // Obtener el primer td de la fila
  603. var primerTd = filas[i].querySelector("td");
  604.  
  605. // Establecer el contenido del primer td
  606. primerTd.innerHTML = (i+1);
  607. }
  608. }
  609.  
  610.  
  611.  
  612.  
  613. // Your code here...
  614. })();