// ==UserScript==
// @name 碧蓝航线舰队科技
// @version 1
// @namespace https://fiammanda.github.io
// @description 碧蓝航线 WIKI 舰队科技功能增强(样式修改、全选选中、数据备份)
// @author fiammanda
// @grant none
// @match https://wiki.biligame.com/blhx/%E8%88%B0%E9%98%9F%E7%A7%91%E6%8A%80
// @icon https://azurlane.netojuu.com/images/thumb/a/a6/Wisdom_Cube.png/35px-Wisdom_Cube.png
// @downloadURL none
// ==/UserScript==
"use strict";
const bt = document.querySelector("#editButton");
const tb = document.querySelector("#CardSelectTr");
const ft = document.querySelector(".resourceLoader + .wikitable tbody");
bt.addEventListener("click", (e) => {
if (bt.classList.contains("selected")) {
tb.classList.remove("editable");
ft.classList.remove("visible");
} else {
tb.classList.add("editable");
ft.classList.add("visible");
}
});
tb.querySelectorAll("tbody a").forEach(a => {
a.innerHTML = a.innerHTML.replace("(", "[").replace(")", "]");
a.target = "_blank";
});
document.querySelector("#CardSelectTabHeader1 th:nth-child(3)").textContent = "满级";
document.querySelector("#CardSelectTabHeader1 th:nth-child(5)").textContent = "获得";
document.querySelector("#CardSelectTabHeader1 th:nth-child(6)").textContent = "满级";
ft.querySelector("tr:last-child th").textContent = "功能";
ft.insertAdjacentHTML("beforeend", `
脚本 |
全选「获得」
全清「获得」
全选「120」
全清「120」
数据备份
|
`);
ft.querySelector("a[aria-label=\"select-all-get\"]").addEventListener("click", (e) => {
if (confirm("是否全选当前舰船的「获得」状态?")) {
tb.querySelectorAll("tbody tr:not([style=\"display: none;\"]) td:nth-last-child(2):not(.fleetTechSelected)").forEach(cell => {
cell.click();
});
}
});
ft.querySelector("a[aria-label=\"select-none-get\"]").addEventListener("click", (e) => {
if (confirm("是否全清当前舰船的「获得」状态?")) {
tb.querySelectorAll("tbody tr:not([style=\"display: none;\"]) td:nth-last-child(2).fleetTechSelected").forEach(cell => {
cell.click();
});
}
});
ft.querySelector("a[aria-label=\"select-all-120\"]").addEventListener("click", (e) => {
if (confirm("是否全选当前舰船的「120」状态?")) {
tb.querySelectorAll("tbody tr:not([style=\"display: none;\"]) td:nth-last-child(1):not(.fleetTechSelected)").forEach(cell => {
cell.click();
});
}
});
ft.querySelector("a[aria-label=\"select-none-120\"]").addEventListener("click", (e) => {
if (confirm("是否全清当前舰船的「120」状态?")) {
tb.querySelectorAll("tbody tr:not([style=\"display: none;\"]) td:nth-last-child(1).fleetTechSelected").forEach(cell => {
cell.click();
});
}
});
ft.querySelector("a[aria-label=\"data\"]").addEventListener("click", () => {
ft.querySelector(".modal-content").setAttribute("aria-hidden", "false");
});
ft.querySelector("a[aria-label=\"data-close\"]").addEventListener("click", (e) => {
ft.querySelector(".modal-content").setAttribute("aria-hidden", "true");
});
ft.querySelector("a[aria-label=\"data-import\"]").addEventListener("click", () => {
if (ft.querySelector("textarea").value && confirm("是否覆盖当前数据?")) {
localStorage["userjs-fleettech-data"] = ft.querySelector("textarea").value;
} else {
alert("没有找到导入内容?!");
}
});
ft.querySelector("a[aria-label=\"data-export\"]").addEventListener("click", () => {
if (localStorage["userjs-fleettech-data"] && confirm("是否复制科技数据?")) {
navigator.clipboard.writeText(localStorage["userjs-fleettech-data"]);
} else {
alert("你又没啥需要导出的!");
}
});
ft.querySelector("a[aria-label=\"data-download\"]").addEventListener("click", () => {
if (localStorage["userjs-fleettech-data"]) {
if (confirm("是否下载科技数据?") == true) {
let link = document.createElement("a");
link.setAttribute("href", "data:text/plain;charset=utf-8," + encodeURIComponent(localStorage["userjs-fleettech-data"]));
link.setAttribute("download", "碧蓝航线舰队科技." + new Date().toLocaleString("sv-SE").replace(/[-: ]/g, "") + ".txt");
link.style.display = "none";
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
} else {
alert("你又没啥需要导出的!");
}
});
ft.querySelector("input").addEventListener("change", () => {
const [file] = ft.querySelector("input").files;
const reader = new FileReader();
reader.addEventListener("load", () => {
localStorage["userjs-fleettech-data"] = reader.result;
alert("数据导入成功,即将刷新。");
setTimeout(() => { location.replace("/blhx/舰队科技#舰队科技列表") }, 2500);
}, false);
if (file && confirm("是否覆盖当前数据?")) {
reader.readAsText(file);
}
});
document.head.insertAdjacentHTML("beforeend", ``);