Image handling basics

This commit is contained in:
mrfry 2020-11-12 17:11:47 +01:00
parent 8d38ea6b49
commit c59fc4cb4a

View file

@ -164,16 +164,20 @@
do { do {
const question = getQuestionFromNode(containerNode) const question = getQuestionFromNode(containerNode)
const answer = getAnswerFromNode(containerNode) const answer = getAnswerFromNode(containerNode)
const image = getImageFromNode(containerNode)
result = [ result = [
...result, ...result,
{ {
Q: question, Q: question,
A: answer, A: answer,
data: getData(image),
}, },
] ]
console.log(question) console.log(question)
console.log(answer) console.log(answer)
console.log('########################') console.log(image)
console.log('')
console.log('')
i++ i++
containerNode = document.getElementById(`q${i}`) containerNode = document.getElementById(`q${i}`)
@ -189,6 +193,29 @@
return result return result
} }
function getData(image) {
if (image) {
return {
type: 'simple',
}
} else {
return {
type: 'image',
src: image,
}
}
}
function getImageFromNode(node) {
const img = node.getElementsByTagName('img')
if (img.length === 0) {
return []
}
return Array.from(img).map(image => {
return image.src
})
}
function getAnswerFromNode(node) { function getAnswerFromNode(node) {
let answer = node.getElementsByClassName('rightanswer') let answer = node.getElementsByClassName('rightanswer')
if (answer.length === 0) { if (answer.length === 0) {
@ -196,7 +223,7 @@
} }
answer = answer[0] answer = answer[0]
return SUtils.RemoveUnnecesarySpaces(answer.innerText) return SUtils.RemoveUnnecesarySpaces(answer.innerHTML)
} }
function getQuestionFromNode(node) { function getQuestionFromNode(node) {
@ -1072,50 +1099,6 @@
) )
} }
// this should get the image url from a result page
// i is the index of the question
// FIXME: move this to RPM class ??? and refactor this
function GetImageFormResult(i) {
try {
var imgElements = RPM.GetResultImage(i) // trying to get image
var imgURL = [] // image urls
for (var j = 0; j < imgElements.length; j++) {
if (!imgElements[j].src.includes('brokenfile')) {
var filePart = imgElements[j].src.split('/') // splits the link by "/"
filePart = filePart[filePart.length - 1] // the last one is the image name
imgURL.push(decodeURI(SUtils.ShortenString(filePart, 30)))
}
}
if (imgURL.length > 0) {
return imgURL
}
} catch (e) {
Log("Couldn't get images from result")
}
}
function GetDataFormResult(i) {
let data = { type: 'simple' }
let img = GetImageFormResult(i)
let grabbox = RPM.GetAnswersFromGrabBox(i)
if (img) {
data = {
type: 'image',
images: img,
}
}
if (grabbox) {
data = {
type: 'grabbox',
images: img,
grabbox: grabbox,
}
}
return data
}
// saves the current quiz. questionData contains the active subjects questions // saves the current quiz. questionData contains the active subjects questions
function SaveQuiz(quiz, next) { function SaveQuiz(quiz, next) {
try { try {
@ -1248,9 +1231,10 @@
// highlights the possible solutions to the current question // highlights the possible solutions to the current question
function HighLightAnswer(results, currQuestionNumber) { function HighLightAnswer(results, currQuestionNumber) {
// TODO: fix this
try { try {
if (results.length > 0) { if (results.length > 0) {
var answers = RPM.GetAllAnswer(currQuestionNumber) // getting all answers var answers = QPM.GetAllAnswer(currQuestionNumber) // getting all answers
var toColor = [] // the numberth in the array will be colored, and .length items will be colored var toColor = [] // the numberth in the array will be colored, and .length items will be colored
var type = '' // type of the question. radio or ticbox or whatitscalled var type = '' // type of the question. radio or ticbox or whatitscalled
for (let i = 0; i < answers.length; i++) { for (let i = 0; i < answers.length; i++) {