seminarium/adapter.js

124 lines
5.5 KiB
JavaScript

// 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;
}
}