Eolymp+

Enhances Eolymp, a Ukrainian website for coding

目前为 2022-09-08 提交的版本。查看 最新版本

// ==UserScript==
// @name           Eolymp+
// @name:mk        Eolymp+
// @namespace      -
// @version        2
// @description    Enhances Eolymp, a Ukrainian website for coding
// @description:mk Ја збогатува Eolymp, украинска веб-страна за кодирање
// @author         Plantt
// @match          *://www.eolymp.com/*
// @match          *://eolymp.com/*
// @icon           https://www.google.com/s2/favicons?sz=64&domain=eolymp.com
// @grant          none
// @license        CC-BY-ND
// ==/UserScript==

addEventListener("load", () => {
    console.log("%c[Eolymp+] %cLoading %cEolymp+", "color:darkgray;font-style:italic", "", "color:#2b9ca0;text-decoration:underline");
    window.updatePage = updatePage;
    function updatePage() {
        console.log("%c[Eolymp+] %cUpdated page", "color:darkgray;font-style:italic", "");
        if (localStorage.getItem("hide_fund_banner") == "true") {
            document.querySelector("body > main > div.eo-container > div.eo-top-banner").style.display = "none";
        }
        else {
            document.querySelector("body > main > div.eo-container > div.eo-top-banner").style.display = "";
        }
        document.querySelector("body > main > div.ribbon").style.background =
        document.querySelector("body > main > div.eo-container > div.eo-top-banner").style.background = `hsl(${localStorage.getItem("hue") || 182}deg 58% 40%)`;
        document.querySelector("body > header").style.background = `hsl(${localStorage.getItem("hue") || 182}deg 58% 35%)`;
        document.querySelectorAll(".eo-header__link_darker").forEach(elm => void(elm.style.color = `hsl(${localStorage.getItem("hue") || 182}deg 58% 21%)`));
        document.querySelector("body > header > nav:nth-child(4) > a:nth-child(7) > svg").setAttribute("fill", `hsl(${localStorage.getItem("hue") || 182}deg 58% 21%)`);
    }
    updatePage();
    if (/^https?:\/\/www\.eolymp\.com\/..\/settings\/preferences/.test(document.URL)) {
        var custPref = document.createElement("fieldset");
        custPref.innerHTML = `
        <hr>
        <h2>Eolymp+</h2>
        <div class=form-group>
        <label class=control-label for=preferences_theme>Theme</label>
        <select id=preferences_theme class=form-control>
        <option value=182${localStorage.getItem("hue") == 182 ? " selected" : ""}>Default</option>
        <option value=2${localStorage.getItem("hue") == 2 ? " selected" : ""}>Red</option>
        <option value=122${localStorage.getItem("hue") == 122 ? " selected" : ""}>Green</option>
        <option value=242${localStorage.getItem("hue") == 242 ? " selected" : ""}>Blue</option>
        <option value=62${localStorage.getItem("hue") == 62 ? " selected" : ""}>Yellow</option>
        <option value=302${localStorage.getItem("hue") == 302 ? " selected" : ""}>Purple</option>
        </select>
        </div>
        <div class=form-group><div class=checkbox>
        <label for=preferences_hidefundbanner>
        <input type=checkbox id=preferences_hidefundbanner${localStorage.getItem("hide_fund_banner") == "true" ? " checked" : ""}>
        Hide funding banner
        </label>
        </div></div>`;
        custPref.querySelector("#preferences_theme").onchange = ev => {
            localStorage.setItem("hue", ev.target.value);
            updatePage();
        };
        custPref.querySelector("#preferences_hidefundbanner").onchange = ev => {
            localStorage.setItem("hide_fund_banner", ev.target.checked);
            updatePage();
        };
        document.getElementById("preferences").append(custPref);
    }
});