您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Abbreviate big numbers in the event log using K,M,B suffixes.
- // ==UserScript==
- // @name Warcraft Logs Number Abbreviator
- // @namespace athei
- // @author Alexander Theißen
- // @version 1.0.0
- // @description Abbreviate big numbers in the event log using K,M,B suffixes.
- // @match http://*.warcraftlogs.com/*
- // @match https://*.warcraftlogs.com/*
- // @grant none
- // @license GPL3
- // ==/UserScript==
- // Process nodes that exist at load time of this script.
- if (document.readyState === 'loading') {
- document.addEventListener('DOMContentLoaded', processNodes);
- } else {
- processNodes();
- }
- // Process nodes that are added after this script is run.
- const observer = new MutationObserver(mutations => {
- mutations.forEach(mutation => {
- mutation.addedNodes.forEach(node => {
- // Only process element nodes.
- if (node.nodeType === Node.ELEMENT_NODE) {
- // If the added node itself is a span, process it.
- if (node.tagName.toLowerCase() === 'span') {
- processElement(node);
- }
- // Process any span descendants of the added node.
- processNodes(node);
- }
- });
- });
- });
- observer.observe(document.body, { childList: true, subtree: true });
- function processNodes(root = document) {
- root.querySelectorAll('.event-description-cell span').forEach(span => {
- processElement(span);
- });
- }
- // Process a given element if its text is a pure number.
- function processElement(el) {
- // There are other characters in the cell with the raw numbers
- // in case of healing or dots.
- let newText = el.textContent.replace(/(\d+(\.\d+)?)/g, function(match) {
- let num = parseInt(match);
- if (num >= 1000) {
- return abbreviateNumber(num);
- } else {
- return match;
- }
- });
- if (newText !== el.textContent) {
- el.textContent = newText;
- }
- }
- // Abbreviates numbers (e.g., 2358046 → 2.4M) if they're large enough.
- function abbreviateNumber(num) {
- if (num >= 1e9) return (num / 1e9).toFixed(1) + "B";
- if (num >= 1e6) return (num / 1e6).toFixed(1) + "M";
- if (num >= 1e3) return (num / 1e3).toFixed(1) + "K";
- return num.toString();
- }