Skip to content

Instantly share code, notes, and snippets.

@victornpb
Last active February 26, 2020 14:14
Show Gist options
  • Save victornpb/c7b8e9d374a2288983b554f30ed62420 to your computer and use it in GitHub Desktop.
Save victornpb/c7b8e9d374a2288983b554f30ed62420 to your computer and use it in GitHub Desktop.
Bookmarklet to make frozen tasks more effortless
(() => {
if (window.MOD) return alert("Already running!");
window.MOD = true;
const doc = document;
doc.querySelector("#toggle-side-nav").click();
doc.querySelector("nav").style.position = "absolute";
const delay = async t => new Promise(r => setTimeout(r, t));
const wait4Elm = async selector => {
console.log(`Waiting for ${selector}...`);
let el;
while (1) {
el = doc.querySelector(selector);
if (el) break;
await delay(100);
}
console.log(`Elm found ${selector}!`);
return el;
};
const fillForm = async _ => {
doc.querySelector("#content").style.marginRight = "768px";
doc.querySelector("#content > div").style.zoom = "0.75";
const generateBtn = doc.querySelector("[name=task-generator-button]");
generateBtn.click();
generateBtn.parentElement.removeChild(generateBtn);
const finishBtn = await wait4Elm("[name=finish-task-button]");
doc.querySelector("[name=see-at-market]").click();
doc.querySelector("[name=see-at-market]").style.display = "none";
Array.from(
doc
.getElementsByClassName("inconsistencies-processed")[0]
.getElementsByClassName("panel-footer2")
)
.map(f =>
Array.from(f.getElementsByClassName("btn")).filter(
x => x.localName == "label"
)
)
.forEach((btns, i, list) => btns[i < list.length - 2 ? 1 : 0].click());
finishBtn.addEventListener("click", async () => {
await wait4Elm("[name=task-generator-button]");
fillForm();
});
finishBtn.className = "btn btn-success";
finishBtn.innerText = "Next >";
doc
.querySelector(".inconsistencies-processed .panel:nth-child(2)")
.scrollIntoView({
behavior: "smooth"
});
};
fillForm();
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment