MarkScript: различия между версиями

Материал из MyTestXPro Wiki Help
Перейти к навигации Перейти к поиску
Строка 98: Строка 98:
  
 
Скрипт оценивания может содержать несколько функций. Для вычисления оценки вызывается функция main().
 
Скрипт оценивания может содержать несколько функций. Для вычисления оценки вызывается функция main().
Эта функция main должна вернуть объект с оценкой и (необязательно) с названием оценки и примечанием.
+
Эта функция main должна вернуть объект с оценкой и (необязательно) с названием оценки и примечанием. Примечание можно увидеть в журнале (столбец "Примечание") и всплывающей подсказкой наведя мышь на оценку в окне результата.
  
 
В контекстном меню (правой кнопкой) поля скрипта есть несколько заготовок, облегчающих понимание и написание своих скриптов.
 
В контекстном меню (правой кнопкой) поля скрипта есть несколько заготовок, облегчающих понимание и написание своих скриптов.
  
 +
Пример №1 показывает как скрипт должен возвращать результат:
 +
<pre>
 +
function main(R, G){
 +
  var m = {};
 +
  m['value'] = 3;
 +
  m['title'] = 'Зачет';
 +
  m['note'] = 'Примечание!';
 +
  return m;
 +
}
 +
</pre>
  
[[File:mtx_editor_markedit.png]] [[File:mtx_editor_markscript1.png|580px]]
+
Пример №2 соответствует обычному способу оценивая (делает тоже самое):
 +
<pre>
 +
function main(R, G){
 +
  var m = {};
 +
  var X = {3:30, 4:60, 5:90};
 +
  m['value'] = 2;
 +
  for (var i in X){
 +
    if (X[i] <= (100*R['Score']/R['ScoreMax'])){
 +
      m['value'] = i;
 +
    }
 +
  }
 +
  return m;
 +
}
 +
</pre>
 +
 
 +
Пример №3 это уже один из возможных способов использования этой функции:
 +
<pre>
 +
function main(R, G){
 +
  var m = {};
 +
  var X = {3:30, 4:60, 5:90};
 +
  m['value'] = 2;
 +
  for (var i in X){
 +
    if (X[i] <= (100*R['Score']/R['ScoreMax'])){
 +
      m['value'] = i;
 +
    }
 +
  }
 +
  return m;
 +
}
 +
</pre>
  
 
Для сохранения неизменным формата теста, оценочный скрипт записывается в конце заметок к тесту после строки ''/*MarkScript*/'' (до нее можно писать в заметках все что угодно).
 
Для сохранения неизменным формата теста, оценочный скрипт записывается в конце заметок к тесту после строки ''/*MarkScript*/'' (до нее можно писать в заметках все что угодно).
Строка 152: Строка 190:
 
   return m;
 
   return m;
 
</pre>
 
</pre>
 
Примечание можно увидеть в журнале (столбец "Примечание") и всплывающей подсказкой наведя мышь на оценку в окне результата.
 

Версия 12:30, 24 июля 2021

Выставление оценки за тест используя свой скрипт.

Настройка оценивая теста находится в Редакторе тестов на странице Параметры теста.

Mark param1.png

Для изменения критерия оценивания нажмите кнопку Изменить...

В редких случаях обычной шкалы оценивания может быть недостаточно и нужно учитывать какие-то особые требования. Например, кроме набранных баллов нужно еще учесть результаты по каждой группе в отдельности. В этом случае для вычисления оценки за тест можно использовать свой скрипт (небольшую программу на языке программирования JavaScript).

Предупреждение: не используйте эту возможность без необходимости. Это бета-версия, реализация может измениться в дальнейшем.

Работа скрипта может зависеть от операционной системы. Если вычисление оценки завершится неудачно, то оценка будет выставлена обычным образом.


Для настройки скрипта используйте кнопку: Mark script onoff.png

Откроется окно:

Mark script editor.png

Если скрипт уже задан ранее, то он будет показан в этом окне.

Функция вычисления оценки получает два параметра: общие результаты по тесту и результаты по каждой группе. Эти два объекта создаются автоматически и зависят от теста и его результатов. Например, они могут выглядеть так:

Показать


Для отладки скрипта вы можете изменять эти данные в верхнем поле.


Скрипт оценивания может содержать несколько функций. Для вычисления оценки вызывается функция main(). Эта функция main должна вернуть объект с оценкой и (необязательно) с названием оценки и примечанием. Примечание можно увидеть в журнале (столбец "Примечание") и всплывающей подсказкой наведя мышь на оценку в окне результата.

В контекстном меню (правой кнопкой) поля скрипта есть несколько заготовок, облегчающих понимание и написание своих скриптов.

Пример №1 показывает как скрипт должен возвращать результат:

function main(R, G){
  var m = {};
  m['value'] = 3;
  m['title'] = 'Зачет';
  m['note'] = 'Примечание!';
  return m;
}

Пример №2 соответствует обычному способу оценивая (делает тоже самое):

function main(R, G){
  var m = {};
  var X = {3:30, 4:60, 5:90};
  m['value'] = 2;
  for (var i in X){
    if (X[i] <= (100*R['Score']/R['ScoreMax'])){
      m['value'] = i;
    }
  }
  return m;
}

Пример №3 это уже один из возможных способов использования этой функции:

function main(R, G){
  var m = {};
  var X = {3:30, 4:60, 5:90};
  m['value'] = 2;
  for (var i in X){
    if (X[i] <= (100*R['Score']/R['ScoreMax'])){
      m['value'] = i;
    }
  }
  return m;
}

Для сохранения неизменным формата теста, оценочный скрипт записывается в конце заметок к тесту после строки /*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;
}


  var m = {};
  //...
  m['value'] = 3; 
  m['title'] = 'Зачет';
  m['note'] = 'Есть нулевые темы!';   
  return m;