chyoa user page fixer

adds a filter to remove stories from chapters tab on chyoa author page

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey, Greasemonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Userscripts.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een gebruikersscriptbeheerder nodig.

(Ik heb al een user script manager, laat me het downloaden!)

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

(Ik heb al een beheerder - laat me doorgaan met de installatie!)

// ==UserScript==
// @name         chyoa user page fixer
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  adds a filter to remove stories from chapters tab on chyoa author page
// @author       You
// @match        https://chyoa.com/user/*
// @match        http://chyoa.com/user/*
// @match        https://chyoa.com/index.php/user/*
// @require      http://code.jquery.com/jquery-latest.js
// @grant        none
// ==/UserScript==

$("body").append("<div class='storiesRemoved'><input class='storyNameFilter' placeholder='Stories to filter out'></input><br>Stories Removed:</div>");

$(".storiesRemoved").css("position", "fixed");

$(".storiesRemoved").css("background-color", "white");

$(".storiesRemoved").css("bottom", "1%");

$(".storiesRemoved").css("right", "1%");

var storiesRemoved = [];

function filterButtonSetup() {
    $(".filterButton").remove();
    Array.prototype.forEach.call($("#chapters > div.chapter-list > ol").children(), function(el) {
        if (el.className !== "text-center") {
            el.children[0].children[1].children[0].children[1].innerHTML += "<span class='filterButton'>Filter out this story</span>";
        }
    })
    $(".filterButton").css("right", "0%");
    $(".filterButton").css("position", "absolute");
    Array.prototype.forEach.call($(".filterButton"), function(el) {
        console.log("running forEach on buttons");
        el.addEventListener("click", function(e) {
            console.log("event listener ran on button");
            let title = el.parentNode.parentNode.parentNode.children[1].children[0].innerText;
            if (!storiesRemoved.includes(title)) {
                storiesRemoved.push(title);
                $(".storiesRemoved").append("<br>"+title);
            }
            Array.prototype.forEach.call($("#chapters > div.chapter-list > ol").children(), function(el) {
                if (el.className !== "text-center" && el.children[0].children[1].children[1].children[0].innerText === title) {
                    el.remove();
                }
            })
        })
    })
}

filterButtonSetup();

$(".storyNameFilter").on("keydown", function(e) {
    if (e.key === "Enter") {
        let title = $(".storyNameFilter").val();
        $(".storyNameFilter").val("");
        if (!storiesRemoved.includes(title)) {
            storiesRemoved.push(title);
            $(".storiesRemoved").append("<br>"+title);
        }
        Array.prototype.forEach.call($("#chapters > div.chapter-list > ol").children(), function(el) {
            if (el.className !== "text-center" && el.children[0].children[1].children[1].children[0].innerText === title) {
                el.remove();
            }
        })
    }
})

var mutObserver = new MutationObserver(function(mutations) {
    filterButtonSetup();
    storiesRemoved.forEach(function(title) {
        Array.prototype.forEach.call($("#chapters > div.chapter-list > ol").children(), function(el) {
            if (el.className !== "text-center" && el.children[0].children[1].children[1].children[0].innerText === title) {
                el.remove();
            }
        })
    })
})

mutObserver.observe($("#chapters > div.chapter-list > ol")[0], {childList: true});