NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Github_show_top_entries
// @version 1.0
// @description Show or hide repositories on github dashboard.
// @copyright 2019, Steven Liu (no.website.yet)
// @license MIT
// @author acenturyandabit
// @match https://github.com
// @grant none
// ==/UserScript==
(function () {
// add a hidden item
let hidden = document.createElement("div");
hidden.innerHTML = `<p style="cursor:pointer; user-select:none">Show hidden items</p><ul style="list-style:none"></ul>`;
hidden.children[1].style.display = "none";
hidden.children[0].addEventListener("click", (e) => {
if (hidden.children[1].style.display == "block") {
hidden.children[1].style.display = "none";
} else {
hidden.children[1].style.display = "block"
}
})
document.querySelector(".dashboard-sidebar.js-sticky").appendChild(hidden);
//refresh when 'show more' clicked
document.querySelector("button[type='submit']").addEventListener("click", () => {
setTimeout(refresh, 10000);
})
//event handler for eye clicks in main container
document.querySelector(".js-repos-container").addEventListener("click", (e) => {
if (e.target.matches("span.hide")) {
let id = e.target.parentElement.querySelector("a[href]").href;
let unwanted = JSON.parse(localStorage.getItem("unwanted"));
if (!unwanted) unwanted = {};
unwanted[id] = true;
localStorage.setItem("unwanted", JSON.stringify(unwanted));
refresh();
}
})
//event handler for eye clicks in hidden area
hidden.addEventListener("click", (e) => {
if (e.target.matches("span.hide")) {
let id = e.target.parentElement.querySelector("a[href]").href;
let unwanted = JSON.parse(localStorage.getItem("unwanted"));
if (!unwanted) unwanted = {};
unwanted[id] = false;
//move back to rightful place
document.querySelector("ul[data-filterable-for='dashboard-repos-filter-left']").appendChild(e.target.parentElement.parentElement);
localStorage.setItem("unwanted", JSON.stringify(unwanted));
refresh();
}
})
function refresh() {
let unwanted = JSON.parse(localStorage.getItem("unwanted"));
if (!unwanted) unwanted = {};
let visible = document.querySelectorAll("ul[data-filterable-for='dashboard-repos-filter-left'] li");
for (let i = 0; i < visible.length; i++) {
//add hide button, if not already there
if (!visible[i].querySelector("span.hide")) {
let span = document.createElement("span");
span.classList.add("hide");
span.innerHTML = "👁";
let ti = visible[i].children[0];
ti.style.display = "inline-block";
ti.insertBefore(span, ti.children[0]);
span.appendChild(ti.children[1])
}
let id = visible[i].querySelector("a[href]").href;
if (unwanted[id]) {
hidden.children[1].appendChild(visible[i]);
}
}
}
refresh();
})();