added skip action

This commit is contained in:
EthanThatOneKid 2021-01-02 15:07:29 -08:00
parent 266297e08a
commit 279d7aaf19
3 changed files with 42 additions and 28 deletions

View file

@ -22,6 +22,7 @@ My goal is to make an entirely keyboard-navigable enhancement in the form of a b
| Key | Action |
| ---------------- | ------------------------------ |
| <kbd>i</kbd> | Marks assignment as incomplete |
| <kbd>s</kbd> | Skips to next assignment |
| <kbd>1</kbd> | Rates assignment as 1-star |
| <kbd>2</kbd> | Rates assignment as 2-star |
| <kbd>3</kbd> | Rates assignment as 3-star |

View file

@ -1,26 +1,27 @@
// https://gist.github.com/EthanThatOneKid/95e8393c0afc1a35efda6f514d4ee6ea
const selectors = {
incompleteBtn: "#IsIncompleteYes",
notesTextarea:
"#gradingNode > div > div:nth-child(1) > table > tbody > tr:nth-child(8) > td:nth-child(2) > textarea",
star1:
"#gradingNode > div > div:nth-child(1) > table > tbody > tr:nth-child(7) > td:nth-child(2) > span.pull-left.ml-3.mt-1.stars > i:nth-child(1)",
star2:
"#gradingNode > div > div:nth-child(1) > table > tbody > tr:nth-child(7) > td:nth-child(2) > span.pull-left.ml-3.mt-1.stars > i:nth-child(2)",
star3:
"#gradingNode > div > div:nth-child(1) > table > tbody > tr:nth-child(7) > td:nth-child(2) > span.pull-left.ml-3.mt-1.stars > i:nth-child(3)",
submit: "#grade-form > button",
previewContainer: "#gradingNode > div > div:nth-child(2)",
assignmentBtn:
"body > div.body-content > div:nth-child(2) > div:nth-child(3) > table > tbody > tr > td:nth-child(7) > a",
assignmentLink: "#gradingNode > div > div:nth-child(2) > div > a",
};
let currentAssignmentOnPage = 0;
const defaultIdleTimeout = 5e3,
assignmentLoadDelay = 1e3;
assignmentLoadDelay = 1e3,
previewLoadDelay = 8e3,
submitLoadDelay = 5e3,
selectors = {
incompleteBtn: "#IsIncompleteYes",
notesTextarea:
"#gradingNode > div > div:nth-child(1) > table > tbody > tr:nth-child(8) > td:nth-child(2) > textarea",
star1:
"#gradingNode > div > div:nth-child(1) > table > tbody > tr:nth-child(7) > td:nth-child(2) > span.pull-left.ml-3.mt-1.stars > i:nth-child(1)",
star2:
"#gradingNode > div > div:nth-child(1) > table > tbody > tr:nth-child(7) > td:nth-child(2) > span.pull-left.ml-3.mt-1.stars > i:nth-child(2)",
star3:
"#gradingNode > div > div:nth-child(1) > table > tbody > tr:nth-child(7) > td:nth-child(2) > span.pull-left.ml-3.mt-1.stars > i:nth-child(3)",
submit: "#grade-form > button",
previewContainer: "#gradingNode > div > div:nth-child(2)",
assignmentBtn:
"body > div.body-content > div:nth-child(2) > div:nth-child(3) > table > tbody > tr > td:nth-child(7) > a",
assignmentLink: "#gradingNode > div > div:nth-child(2) > div > a",
selectedRow:
"body > div.body-content > div:nth-child(2) > div:nth-child(3) > table > tbody > tr.selected",
startGame:
"body > div.body-content > div:nth-child(2) > div > div.padding-left-3.padding-right-3 > div > div > div.col-xs-6.text-center > div:nth-child(3) > button:nth-child(1)",
};
const setIdleTimeout = (...args) => {
let timeoutId = setTimeout(...args);
@ -51,20 +52,28 @@ const actions = {
this.submit();
}
},
skip() {
document.querySelector(selectors.selectedRow).remove();
setTimeout(() => {
this.nextAssignment();
}, submitLoadDelay);
},
submit() {
document.querySelector(selectors.submit).click();
currentAssignmentOnPage++;
this.nextAssignment();
this.skip();
},
nextAssignment() {
document
.querySelectorAll(selectors.assignmentBtn)
[currentAssignmentOnPage].click();
document.querySelector(selectors.assignmentBtn).click();
setTimeout(() => {
const preview = document.createElement("iframe");
preview.width = "1600px";
preview.height = "1400px";
preview.src = document.querySelector(selectors.assignmentLink).href;
preview.addEventListener("load", () => {
setTimeout(() => {
preview.contentDocument.querySelector(selectors.startGame).click();
}, previewLoadDelay);
});
document.querySelector(selectors.previewContainer).innerHTML = "";
document.querySelector(selectors.previewContainer).appendChild(preview);
document
@ -93,6 +102,10 @@ document.addEventListener("keypress", (event) => {
actions.rate(3);
break;
case "s":
actions.skip();
break;
case "enter":
actions.submit();
break;

View file

@ -1 +1 @@
javascript:(function()%7B%22use%20strict%22%3Bvar%20selectors%3D%7BincompleteBtn%3A%22%23IsIncompleteYes%22%2CnotesTextarea%3A%22%23gradingNode%20%3E%20div%20%3E%20div%3Anth-child(1)%20%3E%20table%20%3E%20tbody%20%3E%20tr%3Anth-child(8)%20%3E%20td%3Anth-child(2)%20%3E%20textarea%22%2Cstar1%3A%22%23gradingNode%20%3E%20div%20%3E%20div%3Anth-child(1)%20%3E%20table%20%3E%20tbody%20%3E%20tr%3Anth-child(7)%20%3E%20td%3Anth-child(2)%20%3E%20span.pull-left.ml-3.mt-1.stars%20%3E%20i%3Anth-child(1)%22%2Cstar2%3A%22%23gradingNode%20%3E%20div%20%3E%20div%3Anth-child(1)%20%3E%20table%20%3E%20tbody%20%3E%20tr%3Anth-child(7)%20%3E%20td%3Anth-child(2)%20%3E%20span.pull-left.ml-3.mt-1.stars%20%3E%20i%3Anth-child(2)%22%2Cstar3%3A%22%23gradingNode%20%3E%20div%20%3E%20div%3Anth-child(1)%20%3E%20table%20%3E%20tbody%20%3E%20tr%3Anth-child(7)%20%3E%20td%3Anth-child(2)%20%3E%20span.pull-left.ml-3.mt-1.stars%20%3E%20i%3Anth-child(3)%22%2Csubmit%3A%22%23grade-form%20%3E%20button%22%2CpreviewContainer%3A%22%23gradingNode%20%3E%20div%20%3E%20div%3Anth-child(2)%22%2CassignmentBtn%3A%22body%20%3E%20div.body-content%20%3E%20div%3Anth-child(2)%20%3E%20div%3Anth-child(3)%20%3E%20table%20%3E%20tbody%20%3E%20tr%20%3E%20td%3Anth-child(7)%20%3E%20a%22%2CassignmentLink%3A%22%23gradingNode%20%3E%20div%20%3E%20div%3Anth-child(2)%20%3E%20div%20%3E%20a%22%7D%2CcurrentAssignmentOnPage%3D0%2CdefaultIdleTimeout%3D5e3%2CassignmentLoadDelay%3D1e3%2CsetIdleTimeout%3Dfunction()%7Bfor(var%20e%3Darguments.length%2Ct%3DArray(e)%2Cn%3D0%3Bn%3Ce%3Bn%2B%2B)t%5Bn%5D%3Darguments%5Bn%5D%3Bvar%20i%3DsetTimeout.apply(void%200%2Ct)%3Breturn%20function()%7BclearTimeout(i)%2Ci%3DsetTimeout.apply(void%200%2Ct)%7D%7D%2Cactions%3D%7Bincomplete%3Afunction()%7Bdocument.querySelector(selectors.incompleteBtn).click()%3Bvar%20e%3Ddocument.querySelector(selectors.notesTextarea)%3Be.focus()%3Bvar%20t%3DsetIdleTimeout(function()%7Breturn%20document.querySelector(selectors.submit).focus()%7D%2CdefaultIdleTimeout)%3Be.addEventListener(%22keypress%22%2Ct)%7D%2Crate%3Afunction(e)%7Be%3D%22star%22%2Be%3Be%20in%20selectors%26%26(document.querySelector(selectors%5Be%5D).click()%2Cthis.submit())%7D%2Csubmit%3Afunction()%7Bdocument.querySelector(selectors.submit).click()%2CcurrentAssignmentOnPage%2B%2B%2Cthis.nextAssignment()%7D%2CnextAssignment%3Afunction()%7Bdocument.querySelectorAll(selectors.assignmentBtn)%5BcurrentAssignmentOnPage%5D.click()%2CsetTimeout(function()%7Bvar%20e%3Ddocument.createElement(%22iframe%22)%3Be.width%3D%221600px%22%2Ce.height%3D%221400px%22%2Ce.src%3Ddocument.querySelector(selectors.assignmentLink).href%2Cdocument.querySelector(selectors.previewContainer).innerHTML%3D%22%22%2Cdocument.querySelector(selectors.previewContainer).appendChild(e)%2Cdocument.querySelector(selectors.previewContainer).parentElement.scrollIntoView()%7D%2CassignmentLoadDelay)%7D%7D%3Bdocument.addEventListener(%22keypress%22%2Cfunction(e)%7Btry%7Bswitch(e.key)%7Bcase%22i%22%3Aactions.incomplete()%3Bbreak%3Bcase%221%22%3Aactions.rate(1)%3Bbreak%3Bcase%222%22%3Aactions.rate(2)%3Bbreak%3Bcase%223%22%3Aactions.rate(3)%3Bbreak%3Bcase%22enter%22%3Aactions.submit()%7D%7Dcatch(e)%7Bconsole.log(%22Sensei%20Error%3A%20%22%2Be)%7D%7D)%3Bvar%20main%3Dfunction()%7Bactions.nextAssignment()%7D%3Bmain()%3B%7D)()
javascript:(function()%7B%22use%20strict%22%3Bvar%20defaultIdleTimeout%3D5e3%2CassignmentLoadDelay%3D1e3%2CpreviewLoadDelay%3D8e3%2CsubmitLoadDelay%3D5e3%2Cselectors%3D%7BincompleteBtn%3A%22%23IsIncompleteYes%22%2CnotesTextarea%3A%22%23gradingNode%20%3E%20div%20%3E%20div%3Anth-child(1)%20%3E%20table%20%3E%20tbody%20%3E%20tr%3Anth-child(8)%20%3E%20td%3Anth-child(2)%20%3E%20textarea%22%2Cstar1%3A%22%23gradingNode%20%3E%20div%20%3E%20div%3Anth-child(1)%20%3E%20table%20%3E%20tbody%20%3E%20tr%3Anth-child(7)%20%3E%20td%3Anth-child(2)%20%3E%20span.pull-left.ml-3.mt-1.stars%20%3E%20i%3Anth-child(1)%22%2Cstar2%3A%22%23gradingNode%20%3E%20div%20%3E%20div%3Anth-child(1)%20%3E%20table%20%3E%20tbody%20%3E%20tr%3Anth-child(7)%20%3E%20td%3Anth-child(2)%20%3E%20span.pull-left.ml-3.mt-1.stars%20%3E%20i%3Anth-child(2)%22%2Cstar3%3A%22%23gradingNode%20%3E%20div%20%3E%20div%3Anth-child(1)%20%3E%20table%20%3E%20tbody%20%3E%20tr%3Anth-child(7)%20%3E%20td%3Anth-child(2)%20%3E%20span.pull-left.ml-3.mt-1.stars%20%3E%20i%3Anth-child(3)%22%2Csubmit%3A%22%23grade-form%20%3E%20button%22%2CpreviewContainer%3A%22%23gradingNode%20%3E%20div%20%3E%20div%3Anth-child(2)%22%2CassignmentBtn%3A%22body%20%3E%20div.body-content%20%3E%20div%3Anth-child(2)%20%3E%20div%3Anth-child(3)%20%3E%20table%20%3E%20tbody%20%3E%20tr%20%3E%20td%3Anth-child(7)%20%3E%20a%22%2CassignmentLink%3A%22%23gradingNode%20%3E%20div%20%3E%20div%3Anth-child(2)%20%3E%20div%20%3E%20a%22%2CselectedRow%3A%22body%20%3E%20div.body-content%20%3E%20div%3Anth-child(2)%20%3E%20div%3Anth-child(3)%20%3E%20table%20%3E%20tbody%20%3E%20tr.selected%22%2CstartGame%3A%22body%20%3E%20div.body-content%20%3E%20div%3Anth-child(2)%20%3E%20div%20%3E%20div.padding-left-3.padding-right-3%20%3E%20div%20%3E%20div%20%3E%20div.col-xs-6.text-center%20%3E%20div%3Anth-child(3)%20%3E%20button%3Anth-child(1)%22%7D%2CsetIdleTimeout%3Dfunction()%7Bfor(var%20e%3Darguments.length%2Ct%3DArray(e)%2Cn%3D0%3Bn%3Ce%3Bn%2B%2B)t%5Bn%5D%3Darguments%5Bn%5D%3Bvar%20i%3DsetTimeout.apply(void%200%2Ct)%3Breturn%20function()%7BclearTimeout(i)%2Ci%3DsetTimeout.apply(void%200%2Ct)%7D%7D%2Cactions%3D%7Bincomplete%3Afunction()%7Bdocument.querySelector(selectors.incompleteBtn).click()%3Bvar%20e%3Ddocument.querySelector(selectors.notesTextarea)%3Be.focus()%3Bvar%20t%3DsetIdleTimeout(function()%7Breturn%20document.querySelector(selectors.submit).focus()%7D%2CdefaultIdleTimeout)%3Be.addEventListener(%22keypress%22%2Ct)%7D%2Crate%3Afunction(e)%7Be%3D%22star%22%2Be%3Be%20in%20selectors%26%26(document.querySelector(selectors%5Be%5D).click()%2Cthis.submit())%7D%2Cskip%3Afunction()%7Bvar%20e%3Dthis%3Bdocument.querySelector(selectors.selectedRow).remove()%2CsetTimeout(function()%7Be.nextAssignment()%7D%2CsubmitLoadDelay)%7D%2Csubmit%3Afunction()%7Bdocument.querySelector(selectors.submit).click()%2Cthis.skip()%7D%2CnextAssignment%3Afunction()%7Bdocument.querySelector(selectors.assignmentBtn).click()%2CsetTimeout(function()%7Bvar%20e%3Ddocument.createElement(%22iframe%22)%3Be.width%3D%221600px%22%2Ce.height%3D%221400px%22%2Ce.src%3Ddocument.querySelector(selectors.assignmentLink).href%2Ce.addEventListener(%22load%22%2Cfunction()%7BsetTimeout(function()%7Be.contentDocument.querySelector(selectors.startGame).click()%7D%2CpreviewLoadDelay)%7D)%2Cdocument.querySelector(selectors.previewContainer).innerHTML%3D%22%22%2Cdocument.querySelector(selectors.previewContainer).appendChild(e)%2Cdocument.querySelector(selectors.previewContainer).parentElement.scrollIntoView()%7D%2CassignmentLoadDelay)%7D%7D%3Bdocument.addEventListener(%22keypress%22%2Cfunction(e)%7Btry%7Bswitch(e.key)%7Bcase%22i%22%3Aactions.incomplete()%3Bbreak%3Bcase%221%22%3Aactions.rate(1)%3Bbreak%3Bcase%222%22%3Aactions.rate(2)%3Bbreak%3Bcase%223%22%3Aactions.rate(3)%3Bbreak%3Bcase%22s%22%3Aactions.skip()%3Bbreak%3Bcase%22enter%22%3Aactions.submit()%7D%7Dcatch(e)%7Bconsole.log(%22Sensei%20Error%3A%20%22%2Be)%7D%7D)%3Bvar%20main%3Dfunction()%7Bactions.nextAssignment()%7D%3Bmain()%3B%7D)()