您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Use this script to hide quests manually on tw-calc.net. This script adds a button to all Quests in Quest overview on tw-calc.net to hide them. Data ist stored in localStorage.
// ==UserScript== // @name TW Calc Questmanager // @namespace http://tampermonkey.net/ // @version 0.1 // @description Use this script to hide quests manually on tw-calc.net. This script adds a button to all Quests in Quest overview on tw-calc.net to hide them. Data ist stored in localStorage. // @author Rikone // @match https://*.tw-calc.net/quests/* // @icon https://www.google.com/s2/favicons?domain=tw-calc.net // @grant none // ==/UserScript== (function(fn) { 'use strict'; var newScript = document.createElement('script'); newScript.setAttribute("type", "application/javascript"); newScript.textContent = '(' + fn + ')();'; (document.body || document.head || document.documentElement).appendChild(newScript); newScript.parentNode.removeChild(newScript); })(function() { const localStorageKey = 'tw_calc_questmanager_data'; const querySelector = '[quest_name]'; // run init functions addIconFont(); hideQuestsOnLocalStorage(); addClearButton(); addHideButtons(); // init functions function addIconFont() { var link = document.createElement('link'); link.rel = 'stylesheet'; link.async = false; link.type = 'text/css'; link.href = 'https://fonts.googleapis.com/icon?family=Material+Icons'; document.head.appendChild(link); } function hideQuestsOnLocalStorage() { let json = getStoredJson(); if (json.hiddenQuests) { json.hiddenQuests.forEach((id) => { hideQuest(id); }); } } function addClearButton() { let button = createClearButton(); document.querySelector('h1').appendChild(button); } function addHideButtons() { let questgroups = document.querySelectorAll(querySelector); questgroups.forEach((questgroup) => { questgroup.style.position = 'relative'; questgroup.classList.remove('fade'); questgroup.querySelector('.container').classList.add('fade'); questgroup.appendChild(createHideButton()); }); } // click handler function onHideQuestButtonClicked(event) { event.preventDefault(); let parentAnker = event.target.closest(querySelector); let id = parentAnker.id; addhiddenQuestToLocalStorage(id); hideQuest(id); } function onClearButtonClicked() { window.localStorage.removeItem(localStorageKey); showAllQuests(); } // logic functions function addhiddenQuestToLocalStorage(id) { let json = getStoredJson(); if (json.hiddenQuests) { if (!json.hiddenQuests.includes(id)) { json.hiddenQuests.push(id); } } else { json.hiddenQuests = [id]; } window.localStorage.setItem(localStorageKey, JSON.stringify(json)); } function hideQuest(id) { document.querySelector(`#${id}`).style.display = 'none'; } function showAllQuests() { let questgroups = document.querySelectorAll(querySelector); questgroups.forEach((questgroup) => { questgroup.style.display = 'inline-block'; }); } // button creation function createClearButton() { let icon = document.createElement('span'); icon.className = 'material-icons'; icon.style.color = '#eee'; icon.style.fontSize = '22px'; let text = document.createTextNode('visibility'); icon.appendChild(text); let button = document.createElement('button'); button.appendChild(icon); button.style.border = '1px #eee solid'; button.style.display = 'inline-flex'; button.style.borderRadius = '3px'; button.style.background = 'rgb(58 46 16 / 75%)'; button.style.padding = '1px'; button.style.marginLeft = '5px'; button.style.cursor = 'pointer'; button.classList.add('fade'); button.addEventListener('click', onClearButtonClicked); button.title = 'Show all quests'; return button; } function createHideButton() { let icon = document.createElement('span'); icon.className = 'material-icons'; icon.style.color = '#eee'; icon.style.fontSize = '22px'; let text = document.createTextNode('visibility_off'); icon.appendChild(text); let button = document.createElement('button'); button.appendChild(icon); button.style.position = 'absolute'; button.style.zIndex = '999'; button.style.top = '-5px'; button.style.right = '-4px'; button.style.border = '1px #eee solid'; button.style.display = 'flex'; button.style.borderRadius = '3px'; button.style.background = 'rgb(58 46 16 / 75%)'; button.style.padding = '1px'; button.style.cursor = 'pointer'; button.classList.add('fade'); button.addEventListener('click', onHideQuestButtonClicked); button.addEventListener('mouseover', removeEvent); button.title = 'Hide quest'; return button; } // utils function getStoredJson() { let localStorageItem = window.localStorage.getItem(localStorageKey); return JSON.parse(localStorageItem) || {}; } function removeEvent(event) { event.preventDefault(); event.stopPropagation(); } function debug(message) { console.log(message); } });