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