Эта функция доступна только в бета-версии!
Выставление оценки за тест используя свой скрипт (небольшую программу на языке программирования JavaScript).
В бета-версии кроме обычной шкалы оценивания можно добавить еще свой скрипт, учитывающий какие-то особые требования. Если вычисление оценки завершится неудачно, то оценка будет выставлена обычным образом.
Для сохранения неизменным формата теста, оценочный скрипт записывается в конце заметок к тесту после строки /*MarkScript*/ (до нее можно писать в заметках все что угодно).
Например, если требуется поставить оценку в соответствии со следующими критериями:
а) если хотя бы из одной группы не решено верно хотя бы одно задание, то "2"
б) иначе (если в каждой группе есть хотя бы одно верное решенное задание), то на "3" - 30% от возможного кол-ва баллов, на "4" - 60%, на "5" - 90%.
то можно задать вот такой скрипт:
/*MarkScript*/
function main(R, G){
var m = {};
var f = true;
for (var key in G){
if(G[key]['CountLimit']!=0 && G[key]['CountCorrectTask']<1){
f = false;
break;
}
}
var X = {3:30, 4:60, 5:90};
if(f){
m['value'] = 2;
for (var i in X){
if (X[i]<=(100*R['Score']/R['ScoreMax'])){
m['value'] = i;
}
}
m['note'] = 'Все хорошо!';
}else{
m['value'] = 2;
m['note'] = 'Есть нулевые темы!';
}
return m;
}
Функция для вычисления оценки называется main. Она получает два параметра: общие результаты по тесту и результаты по каждой группе. Эти два объекта создаются автоматически. Например, они могут выглядеть так:
Показать
Result = {};
Result['ScoreMax'] = 9;
Result['Score'] = 6,00;
Result['CountTask'] = 9;
Result['CountAskTask'] = 9;
Result['CountCorrectTask'] = 6;
Result['CountPartiallyTask'] = 0;
Result['CountErrorTask'] = 3;
Result['CountMissTask'] = 0;
Result['CountUsePrompt'] = 0;
Result['CountSecond'] = 11;
Result['CountGroup'] = 5;
Group = {};
Group[0] = {};
Group[0]['Title'] = 'Группа 1';
Group[0]['CountLimit'] = 1;
Group[0]['Count'] = 1;
Group[0]['ScoreMax'] = 1;
Group[0]['Score'] = 1,00;
Group[0]['CountTask'] = 1;
Group[0]['CountCorrectTask'] = 1;
Group[0]['CountPartiallyTask'] = 0;
Group[0]['CountErrorTask'] = 0;
Group[1] = {};
Group[1]['Title'] = 'Группа 2';
Group[1]['CountLimit'] = 2;
Group[1]['Count'] = 2;
Group[1]['ScoreMax'] = 2;
Group[1]['Score'] = 0,00;
Group[1]['CountTask'] = 2;
Group[1]['CountCorrectTask'] = 0;
Group[1]['CountPartiallyTask'] = 0;
Group[1]['CountErrorTask'] = 2;
Group[2] = {};
Group[2]['Title'] = 'Группа 3';
Group[2]['CountLimit'] = 1;
Group[2]['Count'] = 1;
Group[2]['ScoreMax'] = 1;
Group[2]['Score'] = 1,00;
Group[2]['CountTask'] = 1;
Group[2]['CountCorrectTask'] = 1;
Group[2]['CountPartiallyTask'] = 0;
Group[2]['CountErrorTask'] = 0;
Group[3] = {};
Group[3]['Title'] = 'Группа 4';
Group[3]['CountLimit'] = 2;
Group[3]['Count'] = 2;
Group[3]['ScoreMax'] = 2;
Group[3]['Score'] = 2,00;
Group[3]['CountTask'] = 2;
Group[3]['CountCorrectTask'] = 2;
Group[3]['CountPartiallyTask'] = 0;
Group[3]['CountErrorTask'] = 0;
Group[4] = {};
Group[4]['Title'] = 'Группа 5';
Group[4]['CountLimit'] = 3;
Group[4]['Count'] = 3;
Group[4]['ScoreMax'] = 3;
Group[4]['Score'] = 2,00;
Group[4]['CountTask'] = 3;
Group[4]['CountCorrectTask'] = 2;
Group[4]['CountPartiallyTask'] = 0;
Group[4]['CountErrorTask'] = 1;