// ==UserScript==
// @name 洛谷题目难度显示 luogu dif render(PLUS版)
// @namespace https://feilongproject.com/
// @version 1.0.1
// @description 在个人空间显示每一道题的难度(PLUS版)
// @author 飞龙project
// @match https://www.luogu.com.cn/user/*
// @grant none
// @require https://code.jquery.com/jquery-1.12.4.min.js
// @license GPL 3.0
// ==/UserScript==
var colors = [
'rgb(191, 191, 191)',
'rgb(254, 76, 97)',
'rgb(243, 156, 17)',
'rgb(255, 193, 22)',
'rgb(82, 196, 26)',
'rgb(52, 152, 219)',
'rgb(157, 61, 207)',
'rgb(14, 29, 105)'
];
var classList = [
'diff0',
'diff1',
'diff2',
'diff3',
'diff4',
'diff5',
'diff6',
'diff7',
]
var diffWord = [
"[无] ",
"[红] ",
"[橙] ",
"[黄] ",
"[绿] ",
"[蓝] ",
"[紫] ",
"[黑] "
]
$(window).load(function () {
'use strict';
var problems = [];
var style = document.createElement("style");
style.type = "text/css"
var text = document.createTextNode(`
.diff0:before{content: "无][";}
.diff1:before{content: "红][";}
.diff2:before{content: "橙][";}
.diff3:before{content: "黄][";}
.diff4:before{content: "绿][";}
.diff5:before{content: "蓝][";}
.diff6:before{content: "紫][";}
.diff7:before{content: "黑][";}
`)
style.appendChild(text)
var head = document.getElementsByTagName("head")[0]
head.appendChild(style)
for (var passed of window._feInjection.currentData.passedProblems) problems.push({ pid: passed.pid, dif: passed.difficulty, rendered: false });
for (var tryed of window._feInjection.currentData.submittedProblems) problems.push({ pid: tryed.pid, dif: tryed.difficulty, rendered: false });
console.log(window._feInjection)
var button = document.createElement("div");
button.style.backgroundColor = "#fff";
button.style.boxShadow = "0 1px 3px rgba(26,26,26,.1)"
button.style.padding = "1.3em"
$(".side").append(button);
var h3Text = document.createElement("h3");
h3Text.style.fontWeight = "normal"
h3Text.style.fontSize = "1.125em"
h3Text.style.marginTop = "0"
h3Text.style.marginBottom = ".5em"
h3Text.style.fontFamily = "inherit"
h3Text.style.lineHeight = "1.2"
h3Text.innerText = "手动刷新"
button.append(h3Text);
var btn = document.createElement("button");
btn.style = "border-color: #3085d6;border-width: 1px;background-color: #3085d6;border-radius: 5px;color: white;box-shadow: none;";
btn.innerText = "刷新";
button.append(btn);
btn.onclick = () => {
for (var i = 0; i < problems.length; i++)
problems[i].rendered = false;
}
setInterval(() => {
if (window.location.href.split("#").length == 2 && window.location.href.split("#")[1] == 'practice') {
//console.log(problems)
for (var i = 0; i < problems.length; i++) {
if (!problems[i].rendered) {
var elements = document.querySelectorAll('a');
for (var el of elements) {
if (el.textContent == problems[i].pid) {
//console.log(el)
if (el.classList) {
//el.classList.remove("color-default");
try {
el.className = el.className.replace('color-default', `${classList[problems[i].dif]}`);
} catch {
}
}
problems[i].rendered = true;
el.style.color = colors[problems[i].dif];
break;
}
}
}
}
} else {
for (var j = 0; j < problems.length; j++) {
problems[j].rendered = false;
}
}
}, 1000);
for (let i = 0; i < $(".difficulty-tags .row .lfe-caption").length; i++) {
var nowText = $(`.difficulty-tags .row:eq(${i}) .lfe-caption`).text()
$(`.difficulty-tags .row:eq(${i}) .lfe-caption`).text(`${diffWord[i]}${nowText}`)
}
});