Skip to content

Instantly share code, notes, and snippets.

@dev-marisa
Last active March 28, 2021 15:05
Show Gist options
  • Save dev-marisa/a3cdeb248a573f0e4b89fb102cc69fc3 to your computer and use it in GitHub Desktop.
Save dev-marisa/a3cdeb248a573f0e4b89fb102cc69fc3 to your computer and use it in GitHub Desktop.
Simple tampermonkey script to let a user hide tracks they don't need to see.
// ==UserScript==
// @name Hide Unneeded Tracks
// @namespace http://tampermonkey.net/
// @version 1.0
// @description Hide tracks that you don't need to see
// @author Marisa Goode
// @match https://learn.codingdojo.com/dashboard
// @icon https://www.google.com/s2/favicons?domain=codingdojo.com
// @grant none
// ==/UserScript==
(function() {
'use strict';
window.getHiddenTracks = function() {
let ids = JSON.parse(localStorage.getItem("hidden-tracks"));
return Array.isArray(ids) ? ids : [];
}
window.setHiddenTrack = function(id) {
let tracksToHide = getHiddenTracks();
tracksToHide.push(id);
localStorage.setItem("hidden-tracks", JSON.stringify(tracksToHide));
}
window.hideTrack = function(trackId, e) {
if(e) {
e.target.remove();
setHiddenTrack(trackId);
}
let selector = `[data-track-id="${trackId}"]`;
document.querySelector(selector).style.display = "none";
}
window.showAllTracks = function() {
document.querySelectorAll(".btn-hide").forEach(b => b.remove());
getHiddenTracks().forEach(trackId => {
let selector = `[data-track-id="${trackId}"]`;
document.querySelector(selector).style.display = "block";
});
localStorage.setItem("hidden-tracks", "[]");
enableHideTracks();
}
window.enableHideTracks = function() {
getHiddenTracks().forEach(id => hideTrack(id));
document.querySelectorAll("[data-track-id]").forEach(t => {
if(t.style.display === "none") {
return;
}
const button = document.createElement("button");
button.textContent = "[hide]";
button.style = "border:none;background-color:transparent;" +
"color:#009cc6;cursor: pointer;";
button.classList = "btn-hide";
button.onclick = e => hideTrack(t.dataset.trackId, e);
t.parentNode.insertBefore(button, t);
});
}
let firstTrack = document.querySelector("[data-track-id]");
const button = document.createElement("button");
button.textContent = "[show all]";
button.style = "border:none;background-color:transparent;" +
"color:#009cc6;cursor: pointer;display:block;";
button.onclick = e => showAllTracks();
firstTrack.parentNode.insertBefore(button, firstTrack);
enableHideTracks();
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment