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

Материал из MyTestXPro Wiki Help
Перейти к навигации Перейти к поиску
 
(не показано 16 промежуточных версий этого же участника)
Строка 1: Строка 1:
'''Выставление оценки за тест используя свой скрипт.'''
+
== Выставление оценки за тест используя свой скрипт ==
  
Настройка оценивая теста находится в Редакторе тестов на странице Параметры теста.
+
<font color='#aaaaaa'>Эта информация для версии 11.0.0.62 (и, возможно, для следующих).</font>
 +
 
 +
Настройка оценивания теста находится в Редакторе тестов на странице [[Параметры_теста_MyTestXPro|Параметры теста]].
  
 
[[File:mark_param1.png]]
 
[[File:mark_param1.png]]
 +
 +
Для изменения критерия оценивания нажмите кнопку [[Оценивание_теста_и_заданий_MyTestXPro|Изменить]]...
  
 
В редких случаях обычной шкалы оценивания может быть недостаточно и нужно учитывать какие-то особые требования. Например, кроме набранных баллов нужно еще учесть результаты по каждой группе в отдельности. В этом случае для вычисления оценки за тест можно использовать свой скрипт (небольшую программу на языке программирования JavaScript).
 
В редких случаях обычной шкалы оценивания может быть недостаточно и нужно учитывать какие-то особые требования. Например, кроме набранных баллов нужно еще учесть результаты по каждой группе в отдельности. В этом случае для вычисления оценки за тест можно использовать свой скрипт (небольшую программу на языке программирования JavaScript).
Строка 21: Строка 25:
 
Если скрипт уже задан ранее, то он будет показан в этом окне.  
 
Если скрипт уже задан ранее, то он будет показан в этом окне.  
  
Функция для вычисления оценки называется main. Она получает два параметра: общие результаты по тесту и результаты по каждой группе. Эти два объекта создаются автоматически. Например, они могут выглядеть так:
+
Функция вычисления оценки получает два параметра: общие результаты по тесту и результаты по каждой группе. Эти два объекта создаются автоматически и зависят от теста и его результатов. Например, они могут выглядеть так:
  
 
<spoiler>  
 
<spoiler>  
Строка 92: Строка 96:
 
</spoiler>
 
</spoiler>
  
Функция main должна вернуть объект с оценкой и (необязательно) с названием оценки и примечанием.
+
Для отладки скрипта вы можете изменять эти данные в верхнем поле.
  
  
[[File:mtx_editor_markedit.png]]  [[File:mtx_editor_markscript1.png|580px]]
+
Скрипт оценивания может содержать несколько функций. Для вычисления оценки вызывается функция main().
 +
Эта функция main должна вернуть объект с оценкой и (необязательно) с названием оценки и примечанием. Примечание можно увидеть в журнале (столбец "Примечание") и всплывающей подсказкой наведя мышь на оценку в окне результата.
  
Для сохранения неизменным формата теста, оценочный скрипт записывается в конце заметок к тесту после строки ''/*MarkScript*/'' (до нее можно писать в заметках все что угодно).
+
В контекстном меню (правой кнопкой) поля скрипта есть несколько заготовок, облегчающих понимание и написание своих скриптов.
  
Например, если требуется поставить оценку в соответствии со следующими критериями:
+
Пример №1 показывает как скрипт должен возвращать результат:
 +
<pre>
 +
function main(R, G){
 +
  var m = {};
 +
  m['value'] = 3;
 +
  m['title'] = 'Зачет';
 +
  m['note'] = 'Примечание!';
 +
  return m;
 +
}
 +
</pre>
  
а) если есть хотя бы одна группа из которой не решено верно хотя бы одно задание, то "2"
+
Пример №2 соответствует обычному способу оценивая (делает тоже самое):
 
+
<pre>
б) иначе "3" - 30% от возможного кол-ва баллов, на "4" - 60%, на "5" - 90%.
+
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>
 
<pre>
/*MarkScript*/
 
 
function main(R, G){
 
function main(R, G){
 
   var m = {};
 
   var m = {};
Строка 122: Строка 145:
 
     m['value'] = 2;
 
     m['value'] = 2;
 
     for (var i in X){
 
     for (var i in X){
       if (X[i]<=(100*R['Score']/R['ScoreMax'])){
+
       if (X[i] <= (100*R['Score']/R['ScoreMax'])){
 
           m['value'] = i;
 
           m['value'] = i;
 
       }
 
       }
Строка 128: Строка 151:
 
     m['note'] = 'Все хорошо!';
 
     m['note'] = 'Все хорошо!';
 
   }else{
 
   }else{
     m['value'] = 2;  
+
     m['value'] = 2;
     m['note'] = 'Есть нулевые темы!';  
+
     m['note'] = 'Есть нулевые темы!';
 
   }
 
   }
 
   return m;
 
   return m;
Строка 135: Строка 158:
 
</pre>
 
</pre>
  
 +
Его можно применять, например, если требуется поставить оценку в соответствии со следующими критериями:
 +
 +
а) если есть хотя бы одна группа из которой не решено верно хотя бы одно задание, то "2"
  
<pre>
+
б) иначе "3" - 30% от возможного кол-ва баллов, на "4" - 60%, на "5" - 90%.
  var m = {};
+
 
  //...
+
[[File:mark_script_editor2.png]]
  m['value'] = 3;
+
 
  m['title'] = 'Зачет';
+
После запуска скрипта в поле ниже отобразиться результат (для данных примерных результатов). Если скрипт работает без ошибок и выдает оценку, то его можно сохранить.
  m['note'] = 'Есть нулевые темы!'; 
+
 
  return m;
+
После изменения скрипта кнопка {{Клавиша|Сохранить}} становится не активной, это предназначено, что уменьшения рисков задать не рабой скрипт.
</pre>
 
  
Примечание можно увидеть в журнале (столбец "Примечание") и всплывающей подсказкой наведя мышь на оценку в окне результата.
+
Кнопка {{Клавиша|Удалить}} удаляет скрипт из оценивания, при этом поле скрипта не очищается и вы можете еще с ним поработать.

Текущая версия на 21:15, 24 июля 2021

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

Эта информация для версии 11.0.0.62 (и, возможно, для следующих).

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

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

Его можно применять, например, если требуется поставить оценку в соответствии со следующими критериями:

а) если есть хотя бы одна группа из которой не решено верно хотя бы одно задание, то "2"

б) иначе "3" - 30% от возможного кол-ва баллов, на "4" - 60%, на "5" - 90%.

Mark script editor2.png

После запуска скрипта в поле ниже отобразиться результат (для данных примерных результатов). Если скрипт работает без ошибок и выдает оценку, то его можно сохранить.

После изменения скрипта кнопка Сохранить становится не активной, это предназначено, что уменьшения рисков задать не рабой скрипт.

Кнопка Удалить удаляет скрипт из оценивания, при этом поле скрипта не очищается и вы можете еще с ним поработать.