Question getting improvements, handling dropdown in test

This commit is contained in:
mrfry 2020-11-22 15:04:21 +01:00
parent 4e64180cb3
commit d62a546655

View file

@ -182,8 +182,7 @@
// : Basic processing helpers {{{
function getTextPromisesFromNode(node) {
const promises = []
Array.from(node.childNodes).forEach(elem => {
return Array.from(node.childNodes).reduce((promises, elem) => {
let img = elem
if (elem.tagName !== 'IMG') {
const t = elem.tagName ? elem.getElementsByTagName('img') : []
@ -192,6 +191,12 @@
}
}
let select = elem.tagName ? elem.getElementsByTagName('select') : []
if (select.length > 0) {
promises.push({ type: 'txt', val: '...', node: select[0] })
return promises
}
if (img.tagName === 'IMG') {
promises.push(
new Promise(resolve => {
@ -209,8 +214,9 @@
} else {
promises.push({ type: 'txt', val: elem.innerText, node: elem })
}
})
return promises
}, [])
}
function makeTextFromElements(acc, item) {
@ -369,9 +375,20 @@
function getPossibleAnswersFromTest(node) {
const promises = []
const answerRoot = node.getElementsByClassName('answer')[0]
let answerRoot = node.getElementsByClassName('answer')[0]
if (answerRoot.tagName === 'DIV') {
if (!answerRoot) {
answerRoot = node.getElementsByClassName('subquestion')[0]
const options = Array.from(answerRoot.getElementsByTagName('option'))
const possibleAnswers = options.reduce((acc, option) => {
if (!emptyOrWhiteSpace(option.innerText)) {
acc.push(option.innerText)
}
return acc
}, [])
return possibleAnswers
} else if (answerRoot.tagName === 'DIV') {
const answers = Array.from(answerRoot.childNodes)
answers.forEach(answer => {
@ -418,11 +435,17 @@
function getQuestionPromiseForSingleQuestion(node) {
return new Promise(resolve => {
try {
const qtextNode = node.getElementsByClassName('qtext')[0]
let qtextNode = node.getElementsByClassName('qtext')[0]
if (!qtextNode) {
qtextNode = node.getElementsByClassName('subquestion')[0]
qtextNode = qtextNode.parentNode
}
const questionPromises = getTextPromisesFromNode(qtextNode)
const possibleAnswerPromises = getPossibleAnswersFromTest(node)
console.log(questionPromises)
const unflattenedPossibleAnswerPromises = possibleAnswerPromises
? possibleAnswerPromises.map(x => {
return Promise.all(x)
@ -1379,8 +1402,7 @@
function installedFromCorrectSource(source) {
// https://qmining.frylabs.net/moodle-test-userscript/stable.user.js?up
// TODO: test this
return info().script.updateURL === correctSource && false
return info().script.updateURL === correctSource
}
// : }}}
@ -2290,6 +2312,7 @@
}
function GetXHRQuestionAnswer(question) {
console.log('QUESTIONS', question)
return new Promise((resolve, reject) => {
let url = apiAdress + 'ask?'
let params = []