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(); })();