Files
MoodleGPT/src/background/core/questions/match.ts
T

37 lines
1.1 KiB
TypeScript

import type Config from '../../types/config';
import type GPTAnswer from '../../types/gpt-answer';
import type { MatchResponse } from '../../types/question-types';
import { MoodleQuestionType } from '../../types/question-types';
export default function handleMatch(
config: Config,
inputList: NodeListOf<HTMLElement>,
gptAnswer: GPTAnswer
): boolean {
if (!gptAnswer.response || gptAnswer.response.question_type !== MoodleQuestionType.MATCH)
return false;
const response = gptAnswer.response as MatchResponse;
const selects = Array.from(inputList).filter(
el => el.tagName === 'SELECT'
) as HTMLSelectElement[];
for (const answer of response.correct_answers) {
const selectEl = selects[answer.sub_question_index];
if (!selectEl) continue;
const options = selectEl.querySelectorAll('option');
const correctOption = options[answer.option_index + 1]; // + 1 because index 0 is "Choose..."
if (correctOption) {
if (config.mouseover) {
selectEl.addEventListener('click', () => (correctOption.selected = true), { once: true });
} else {
correctOption.selected = true;
}
}
}
return true;
}