From ade6af288c9c8dc3e6dccbca911750138d6e6af1 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 29 Nov 2022 12:19:25 +0100 Subject: [PATCH] First commit --- adapter.js | 123 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 adapter.js diff --git a/adapter.js b/adapter.js new file mode 100644 index 0000000..f842971 --- /dev/null +++ b/adapter.js @@ -0,0 +1,123 @@ +// Taka musi być struktura pliku adapter.js - nie zmieniamy nazw funkcji i tablicy customCalculatedTags! + +var customCalculatedTags = ["tagNiestandardowy1", "nowyTag", "firstJumpTo"] // lista tagów niestandardowych + +var cfr = null; + +function getCustomCalculatedTagCurrentValue(tag) { + if (document.getElementById('page-content-frame') != null) { + cfr = document.getElementById('page-content-frame').contentWindow; + } else { + cfr = window; + } + + let suspendDataTags = cfr.SuspendDataHandler.getValue('eduexe.1.tag.result'); // efekty uczenia liczone niestandardowo warto sobie zapisać w pierwszym komponencie typu Learning object - u nas w kursie jest on na pierwszej pozycji (zatem eduexe.1.tag.result) + switch(tag) { + case "tagNiestandardowy1": + var numberOfVisitedSCOs = getVisitedSCOsNumber([1]); // funkcja z biblioteki students.js + var scosNumber = getSCOsNumber(); // funkcja z biblioteki students.js + var scoreScaledInTest1 = getScoreScaledForSCO(3); // funkcja z biblioteki students.js + + var result = (numberOfVisitedSCOs + scoreScaledInTest1) / (scosNumber + 1); + + console.log("tagNiestandardowy1: " + result); + + if (suspendDataTags == null || suspendDataTags == undefined || suspendDataTags == '') { // linie 25-41 zapisują wartość efektu uczenia do eduexe.1.tag.result - przy innych efektach uczenia - skopiować i zmienić nazwę efektu uczenia + suspendDataTags = btoa(JSON.stringify({})); + } + + if (suspendDataTags != null && suspendDataTags != '') { + let parsedTagsObj = JSON.parse(atob(suspendDataTags)); + if (parsedTagsObj == undefined || parsedTagsObj == null) { + parsedTagsObj = {}; + } + if ('tagNiestandardowy1' in parsedTagsObj) { + if (parsedTagsObj['tagNiestandardowy1'] == result) { + return result; + } + } + parsedTagsObj['tagNiestandardowy1'] = result; + cfr.SuspendDataHandler.setValue('eduexe.1.tag.result', btoa(JSON.stringify(parsedTagsObj))); + cfr.SuspendDataHandler.saveAndCommit(); + } + case "nowyTag": + var scoreScaledInTest1 = getScoreScaledForSCO(3); // funkcja z biblioteki students.js + var scoreScaledInTest3 = getScoreScaledForSCO(5); + + var result = (scoreScaledInTest1 + scoreScaledInTest3) / 2; + + console.log("nowyTag: " + result); + + if (suspendDataTags == null || suspendDataTags == undefined || suspendDataTags == '') { // linie 25-41 zapisują wartość efektu uczenia do eduexe.1.tag.result - przy innych efektach uczenia - skopiować i zmienić nazwę efektu uczenia + suspendDataTags = btoa(JSON.stringify({})); + } + + if (suspendDataTags != null && suspendDataTags != '') { + let parsedTagsObj = JSON.parse(atob(suspendDataTags)); + if (parsedTagsObj == undefined || parsedTagsObj == null) { + parsedTagsObj = {}; + } + if ('nowyTag' in parsedTagsObj) { + if (parsedTagsObj['nowyTag'] == result) { + return result; + } + } + parsedTagsObj['nowyTag'] = result; + cfr.SuspendDataHandler.setValue('eduexe.1.tag.result', btoa(JSON.stringify(parsedTagsObj))); + cfr.SuspendDataHandler.saveAndCommit(); + } + case "firstJumpTo": + var testsIds = getAllSCOIdsByTypeInCourse('test'); + var max_score_test_count = 0; + var result = 0; + var index = 0; + + for (var index = 0; index < testsIds.length; index++) + { + if (getScoreScaledForSCO(testsIds[index]) == 1) { + max_score_test_count += 1; + } + if (max_score_test_count == 3) { + result = 1; + break; + } + } + + console.log("firstJumpTo: " + result); + + if (suspendDataTags == null || suspendDataTags == undefined || suspendDataTags == '') { // linie 25-41 zapisują wartość efektu uczenia do eduexe.1.tag.result - przy innych efektach uczenia - skopiować i zmienić nazwę efektu uczenia + suspendDataTags = btoa(JSON.stringify({})); + } + + if (suspendDataTags != null && suspendDataTags != '') { + let parsedTagsObj = JSON.parse(atob(suspendDataTags)); + if (parsedTagsObj == undefined || parsedTagsObj == null) { + parsedTagsObj = {}; + } + if ('firstJumpTo' in parsedTagsObj) { + if (parsedTagsObj['firstJumpTo'] == result) { + return result; + } + } + parsedTagsObj['firstJumpTo'] = result; + cfr.SuspendDataHandler.setValue('eduexe.1.tag.result', btoa(JSON.stringify(parsedTagsObj))); + cfr.SuspendDataHandler.saveAndCommit(); + } + + return result; + default: + return 0; + } +} + +function getCustomCalculatedTagMaxValue(tag) { // tu określamy jaką maksymalną wartość może uzyskać dany efekt uczenia + switch(tag) { + case "tagNiestandardowy1": + return 1; + case "nowyTag": + return 1; + default: + return 1; + } +} +