chyoa user page fixer

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

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey, Greasemonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्क्रिप्ट व्यवस्थापक एक्स्टेंशन इंस्टॉल करावे लागेल.

(माझ्याकडे आधीच युझर स्क्रिप्ट व्यवस्थापक आहे, मला इंस्टॉल करू द्या!)

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

(माझ्याकडे आधीच युझर स्टाईल व्यवस्थापक आहे, मला इंस्टॉल करू द्या!)

// ==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});