mirror of
https://gitlab.com/MrFry/moodle-test-userscript
synced 2025-04-01 20:22:48 +02:00
Question getting improvements, handling dropdown in test
This commit is contained in:
parent
4e64180cb3
commit
d62a546655
1 changed files with 32 additions and 9 deletions
|
@ -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
|
||||
|
||||
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 = []
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue