diff --git a/stable.user.js b/stable.user.js index 77456d2..137d052 100755 --- a/stable.user.js +++ b/stable.user.js @@ -167,15 +167,16 @@ function getQuiz() { return new Promise(resolve => { - let promises = [] - let i = 1 - let containerNode = document.getElementById(`q${i}`) - do { - promises.push(getQuizFromNode(containerNode)) + const promises = [] + const questionNodes = Array.from( + document.getElementsByTagName('form')[0].childNodes[0].childNodes + ) + let i = 0 + while (i < questionNodes.length && questionNodes[i].tagName === 'DIV') { + promises.push(getQuizFromNode(questionNodes[i])) i++ - containerNode = document.getElementById(`q${i}`) - } while (containerNode) + } // [{ // "Q": "Mekkora tényezővel kell számolnunk, ha 100.000 Ft jelenértékét keressük 24% kamatláb, havi tőkésítés és 2,5 éves futamidő mellett?\n\n\n", @@ -201,10 +202,15 @@ Object.keys(getters).some(key => { const getter = getters[key] if (getter.requirement(node)) { - res = getter.getterFunction(node) - return true + try { + res = getter.getterFunction(node) + return true + } catch (e) { + Log(`${key} failed`) + console.log(e) + } } else { - Log(`${getter.description} did not pass`) + Log(`${key} did not pass`) } }) @@ -221,7 +227,9 @@ answerGetters, node ) + if (!answerPromises || !questionPromises) { + Log('Answer or question array is empty, skipping question') resolve({ success: false }) } @@ -250,8 +258,8 @@ images = uniq(images) resolve({ - A: removeUnnecesarySpaces(answerText), Q: removeUnnecesarySpaces(questionText), + A: removeUnnecesarySpaces(answerText), data: getData(images), success: true, }) @@ -335,6 +343,61 @@ return 'asd' }, }, + noCorrect: { + description: 'Gets correct answer, even if the correct is not shown', + index: 2, + requirement: node => { + return ( + node.getElementsByClassName('rightanswer').length === 0 && + node.getElementsByClassName('answer').length > 0 + ) + }, + getterFunction: node => { + const gradeText = node.getElementsByClassName('grade')[0].innerText + const possibleAnswers = getPossibleAnswers(node) + + if (gradeText.includes('0,00')) { + if (possibleAnswers.length === 2) { + return [ + { + type: 'txt', + val: possibleAnswers.find(x => { + return x.selectedByUser === false + }).text, + }, + ] + } + } else { + return [ + { + type: 'txt', + val: possibleAnswers.find(x => { + return x.selectedByUser === true + }).text, + }, + ] + } + }, + }, + } + + function getPossibleAnswers(node) { + const answerNodes = Array.from( + node.getElementsByClassName('answer')[0].childNodes + ) + + return answerNodes.reduce((acc, answerNode) => { + let selectedByUser + if (answerNode.childNodes.length > 0) { + selectedByUser = answerNode.childNodes[0].checked + } + + acc.push({ + text: answerNode.innerText, + selectedByUser: selectedByUser, + }) + return acc + }, []) } function digestMessage(message) { @@ -1041,11 +1104,12 @@ function HandleResults(url) { getQuiz().then(res => { console.log('\n\n\n') - res.forEach(r => { + res.forEach((r, i) => { + console.log('') + console.log(i + 1) console.log(r.Q) console.log(r.A) console.log(r.data) - console.log('') }) SaveQuiz(res, ShowSaveQuizDialog) // saves the quiz questions and answers }) @@ -1727,6 +1791,12 @@ // APPEND EVERYTHING appedtTo.appendChild(menuButtonDiv) + + addEventListener(menuButtonDiv, 'mousedown', function(e) { + if (e.which === 2) { + menuButtonDiv.parentNode.removeChild(menuButtonDiv) + } + }) } catch (e) { Exception(e, 'script error at showing menu:') }