mirror of
https://gitlab.com/MrFry/moodle-test-userscript
synced 2025-04-01 20:22:48 +02:00
Unused code removal, and some function moving
This commit is contained in:
parent
8956cbade9
commit
702a5d90fa
1 changed files with 41 additions and 167 deletions
208
main.js
208
main.js
|
@ -610,27 +610,6 @@ function GetRightAnswerFromResultv2(i) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// this should get the image url from a result page
|
|
||||||
// i is the index of the question
|
|
||||||
function GetImageFormResult(i) {
|
|
||||||
var temp = null;
|
|
||||||
try {
|
|
||||||
var imgElements = GetResultImage(i); // trying to get image
|
|
||||||
var imgURL = []; // image urls
|
|
||||||
for (var j = 0; j < imgElements.length; j++) {
|
|
||||||
if (!imgElements[j].src.includes("brokenfile")) // idk why brokenfile is in some urls, which are broken, so why tf are they there damn moodle
|
|
||||||
{
|
|
||||||
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(ShortenString(filePart, 30)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (imgURL.length > 0) {
|
|
||||||
temp = JSON.stringify(imgURL);
|
|
||||||
return temp;
|
|
||||||
}
|
|
||||||
} catch (e) {}
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------------------------
|
||||||
// Interface stuff
|
// Interface stuff
|
||||||
|
@ -698,19 +677,6 @@ function Init(cwith) {
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function SearchInActiveSubjs(question, imgNodes, data) {
|
|
||||||
var result = []; // the results will be here
|
|
||||||
for (var i = 0; i < data.length; i++) // going through data
|
|
||||||
{
|
|
||||||
if (data.GetIfActive(i)) // if the current subject is marked as active
|
|
||||||
{
|
|
||||||
result = result.concat(Search(question, imgNodes, data.Subjects[i]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
function PrepareAnswers(result, j) {
|
function PrepareAnswers(result, j) {
|
||||||
if (result.length > 0) // if there are more than zero results
|
if (result.length > 0) // if there are more than zero results
|
||||||
{
|
{
|
||||||
|
@ -976,27 +942,6 @@ function NLoad(resource, cwith) {
|
||||||
cwith(count);
|
cwith(count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function SearchSameQuestion(questionData, quiz, i) {
|
|
||||||
var j = 0;
|
|
||||||
for (var j = 0; j < questionData.length; j++) {
|
|
||||||
var q1 = SimplifyStringForComparison(questionData[j].q); // existing data-s question
|
|
||||||
var q2 = SimplifyStringForComparison(quiz[i].q); // new datas question
|
|
||||||
var a1 = SimplifyStringForComparison(questionData[j].a); // existing data-s answer
|
|
||||||
var a2 = SimplifyStringForComparison(quiz[i].a); // new datas answer
|
|
||||||
if (q1.includes(q2) && a2.includes(a2)) { // if the questions and the answers match
|
|
||||||
if (quiz[i].i && questionData[j].i) { // if it has image questionData
|
|
||||||
if (questionData[j].i.includes(quiz[i].i)) // if they are the same
|
|
||||||
return j;
|
|
||||||
} else {
|
|
||||||
return j;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
function ShowSaveQuizDialog(addedQ, allQ, allOutput, output, sendSuccess, sentData) {
|
function ShowSaveQuizDialog(addedQ, allQ, allOutput, output, sendSuccess, sentData) {
|
||||||
var msg = "";
|
var msg = "";
|
||||||
if (addedQ > 0) // if there are more than 0 new question
|
if (addedQ > 0) // if there are more than 0 new question
|
||||||
|
@ -1025,6 +970,47 @@ function ShowSaveQuizDialog(addedQ, allQ, allOutput, output, sendSuccess, sentDa
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function SearchSameQuestion(questionData, quiz, i) {
|
||||||
|
var j = 0;
|
||||||
|
for (var j = 0; j < questionData.length; j++) {
|
||||||
|
var q1 = SimplifyStringForComparison(questionData[j].q); // existing data-s question
|
||||||
|
var q2 = SimplifyStringForComparison(quiz[i].q); // new datas question
|
||||||
|
var a1 = SimplifyStringForComparison(questionData[j].a); // existing data-s answer
|
||||||
|
var a2 = SimplifyStringForComparison(quiz[i].a); // new datas answer
|
||||||
|
if (q1.includes(q2) && a2.includes(a2)) { // if the questions and the answers match
|
||||||
|
if (quiz[i].i && questionData[j].i) { // if it has image questionData
|
||||||
|
if (questionData[j].i.includes(quiz[i].i)) // if they are the same
|
||||||
|
return j;
|
||||||
|
} else {
|
||||||
|
return j;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// this should get the image url from a result page
|
||||||
|
// i is the index of the question
|
||||||
|
function GetImageFormResult(i) {
|
||||||
|
var temp = null;
|
||||||
|
try {
|
||||||
|
var imgElements = GetResultImage(i); // trying to get image
|
||||||
|
var imgURL = []; // image urls
|
||||||
|
for (var j = 0; j < imgElements.length; j++) {
|
||||||
|
if (!imgElements[j].src.includes("brokenfile")) // idk why brokenfile is in some urls, which are broken, so why tf are they there damn moodle
|
||||||
|
{
|
||||||
|
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(ShortenString(filePart, 30)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (imgURL.length > 0) {
|
||||||
|
temp = JSON.stringify(imgURL);
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
} catch (e) {}
|
||||||
|
}
|
||||||
|
|
||||||
// saves the current quiz. questionData contains the active subjects questions
|
// saves the current quiz. questionData contains the active subjects questions
|
||||||
function SaveQuiz(quiz, questionData) {
|
function SaveQuiz(quiz, questionData) {
|
||||||
try {
|
try {
|
||||||
|
@ -1149,118 +1135,6 @@ function SimplifyImages(imgs) {
|
||||||
return questionImages;
|
return questionImages;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function GetImageMatchCount(dataImages, questionImages) {
|
|
||||||
var includedImages = 0;
|
|
||||||
for (var j = 0; j < dataImages.length; j++) // going through the read data from the .txt
|
|
||||||
{
|
|
||||||
// maybe this loop is not needed, if we use dataImages.includes(questionImages[k]), but JSON data is not parsed, so its still string
|
|
||||||
for (var k = 0; k < questionImages.length; k++) // going through the read data from the .txt
|
|
||||||
{
|
|
||||||
if (dataImages[j].includes(questionImages[k])) {
|
|
||||||
includedImages++; // match count
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return includedImages;
|
|
||||||
}
|
|
||||||
|
|
||||||
function AddImageResults(dataImages, results, currData, percent) {
|
|
||||||
if (dataImages.length > 1) // if there are multiple images, it adds the image names, so its easier to figure out the order. Moodle mixes questions, and without this, the help is useless.
|
|
||||||
{
|
|
||||||
var questionImagesAsText = "Képek sorban:\n" + dataImages.join(", ") + ".";
|
|
||||||
results.push({
|
|
||||||
"q": currData.q,
|
|
||||||
"a": currData.a.replace(/, /g, "\n").replace(/: /g, ":\n"),
|
|
||||||
"p": percent,
|
|
||||||
"i": questionImagesAsText
|
|
||||||
});
|
|
||||||
} else // if there is only one image, it wont add the image name, couse its trivial
|
|
||||||
{
|
|
||||||
results.push({
|
|
||||||
"q": currData.q,
|
|
||||||
"a": currData.a.replace(/, /g, "\n").replace(/: /g, ":\n"),
|
|
||||||
"p": percent
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function ImageSearch(question, imgs, questionData, questionParts) {
|
|
||||||
var results = []; // the final results
|
|
||||||
var currData;
|
|
||||||
var questionImages = SimplifyImages(imgs); // the array for the image names in question
|
|
||||||
// searching for the image name in the current questionData.
|
|
||||||
for (var i = 0; i < questionData.length; i++) // going throug questionData
|
|
||||||
{
|
|
||||||
if (questionData[i].i) // if the questionData[i]-s image part is not null, else it does not matter, since our question is with image
|
|
||||||
{
|
|
||||||
currData = questionData[i]; // gets the current questionData from all data
|
|
||||||
var dataImages = ""; // this will be an array with string in it. the strings are image file names
|
|
||||||
try // try cus json
|
|
||||||
{
|
|
||||||
dataImages = JSON.parse(currData.i);
|
|
||||||
} catch (e) {
|
|
||||||
dataImages = [currData.i]; // if json couldnt parse the string, than it may be from a previous versions export. Also, if its corrupted, mayhaps this works.
|
|
||||||
}
|
|
||||||
|
|
||||||
var includedImages = GetImageMatchCount(dataImages, questionImages);
|
|
||||||
|
|
||||||
if (includedImages > 0) // if there is at least one match
|
|
||||||
{
|
|
||||||
var percent = GetMatchPercent(currData, questionParts); // getting question match
|
|
||||||
percent -= Math.abs(dataImages.length - includedImages) * 10; // substarcting some percent based on how many images does not match
|
|
||||||
if (percent > 10) // only adding if its more than 10%
|
|
||||||
AddImageResults(dataImages, results, currData, percent);
|
|
||||||
}
|
|
||||||
} // end if questionData[i].i
|
|
||||||
} // end for questionData.length
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
function TextSearch(question, imgs, questionData, questionParts) {
|
|
||||||
var results = [];
|
|
||||||
for (var j = 0; j < questionData.length; j++) // goin thru the questionData
|
|
||||||
{
|
|
||||||
var currData = questionData[j]; // the current question parts greatly simplified and split by " ", and i-th item
|
|
||||||
var percent = GetMatchPercent(currData, questionParts);
|
|
||||||
if (percent > 10) // only adding if its more than 10%
|
|
||||||
{
|
|
||||||
results.push({
|
|
||||||
"q": currData.q,
|
|
||||||
"a": currData.a.replace(/, /g, "\n").replace(/: /g, ":\n"),
|
|
||||||
"p": percent
|
|
||||||
}); // adds it to results
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// simple sorting by results percent
|
|
||||||
return SortByPercent(results);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// searches for a "question", or the "imgs" if given or not null in questiondata
|
|
||||||
function Search(question, imgs, questionData) {
|
|
||||||
if (EmptyOrWhiteSpace(question)) // if the question is empty
|
|
||||||
{
|
|
||||||
throw {
|
|
||||||
message: "question is empty!"
|
|
||||||
};
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
var questionParts = RemoveMultipleItems(SimplifyQuery(question).split(" ")); // the current question parts greatly simplified and split
|
|
||||||
if (imgs && imgs.length > 0) // if there is img link
|
|
||||||
return ImageSearch(question, imgs, questionData, questionParts);
|
|
||||||
else // if the question doesnt have any pictures
|
|
||||||
return TextSearch(question, imgs, questionData, questionParts);
|
|
||||||
} catch (e) {
|
|
||||||
console.log("------------------------------------------");
|
|
||||||
console.log("script error at searching:");
|
|
||||||
console.log(e.message);
|
|
||||||
console.log("------------------------------------------");
|
|
||||||
console.log(e.stack);
|
|
||||||
console.log("------------------------------------------");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------------------------
|
||||||
// Minor logic stuff
|
// Minor logic stuff
|
||||||
//-----------------------------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------------------------
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue