Greasy Fork

MZ Oppponent Age Counter

Count players by age on other teams' player pages

目前为 2023-09-05 提交的版本。查看 最新版本

// ==UserScript==
// @name         MZ Oppponent Age Counter
// @namespace    http://tampermonkey.net/
// @version      0.87
// @description  Count players by age on other teams' player pages
// @author       You
// @match        https://www.managerzone.com/?p=players&tid=*
// @grant        GM_addStyle
// ==/UserScript==

(function () {
  "use strict";

  const ageCountMap = new Map();

  document
    .querySelectorAll("#players_container .playerContainer")
    .forEach((player) => {
      let ageElement = player.querySelector("td");
      if (ageElement) {
        let age = parseInt(ageElement.textContent.replace(/\D/g, "").trim());

        if (ageCountMap.has(age)) {
          ageCountMap.set(age, ageCountMap.get(age) + 1);
        } else {
          ageCountMap.set(age, 1);
        }
      }
    });

  const playerFiltersElement = document.querySelector("#player_filters");
  if (playerFiltersElement) {
    const table = document.createElement("table");
    table.id = "ageTable";
    const thead = document.createElement("thead");
    const tbody = document.createElement("tbody");
    const headerRow = document.createElement("tr");
    const ageHeader = document.createElement("th");
    ageHeader.textContent = "Age";
    const countHeader = document.createElement("th");
    countHeader.textContent = "Count";
    headerRow.appendChild(ageHeader);
    headerRow.appendChild(countHeader);
    thead.appendChild(headerRow);
    table.appendChild(thead);

    const tableEntries = Array.from(ageCountMap.entries());
    tableEntries.sort((a, b) => a[0] - b[0]);

    tableEntries.forEach(([age, count]) => {
      const row = document.createElement("tr");
      const ageCell = document.createElement("td");
      ageCell.textContent = age;
      const countCell = document.createElement("td");
      countCell.textContent = count;
      row.appendChild(ageCell);
      row.appendChild(countCell);
      tbody.appendChild(row);
    });

    table.appendChild(tbody);
    playerFiltersElement.appendChild(table);
  }
})();

GM_addStyle(`
  #ageTable {
      border-collapse: separate;
      border-spacing: 0;
      color: white;
      width: 30%;
  }

  #ageTable th,
  #ageTable td {
      padding: 5px 10px;
      color: white;  /* Adding this line to ensure white font */
  }

  #ageTable thead tr {
      background-color: #000080; /* Navy */
      color: #FFFF00; /* Yellow */
  }

  #ageTable tbody tr:nth-child(even) {
      background-color: #000080; /* Navy */
  }

  #ageTable tbody tr:nth-child(odd) {
      background-color: #FF1493; /* Pinky Red */
  }

  #ageTable tbody tr:hover {
      background-color: #00BFFF;
      color: black;
  }

  #ageTable th, #ageTable td {
      font-weight: normal;
      border: 1px solid #1E90FF;
      text-align: center;
  }

  #ageTable th {
      border-top: 2px solid #00BFFF;
      border-bottom: 2px solid #0000FF;
  }

  @import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&display=swap');
  `);