Класс TaskSuite

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

Основная задача класса TaskSuite — отрисовать задания на странице (render()). Через него также происходит сбор ответов (getSolutions()), валидация (validate(solutions)) и управление горячими клавишами (focusNextTask(), onKey(key) и т.д.).

Базовый класс для TaskSuite доступен в глобальной переменной window.TolokaTaskSuite.

Методы:

constructor(options)
Констуктор базового класса страницы заданий. Параметры:
  • options.task — массив моделей задания Task.
  • options.specs — параметры входных и выходных данных, интерфейса заданий. См. формат объекта task_spec.
  • options.assignmentId — идентификаторы заданий на странице.
  • options.workspaceOptions — параметры инициализации песочницы {{isReadOnly: boolean}}
  • options.TaskClass — массив классов создаваемых заданий.
  • options.solutions — массив ответов Solution. Может быть пуст.
getOptions()

Возвращает параметры, переданные методу constructor().

getWorkspaceOptions()

Возвращает параметры инициализации песочницы, переданные методу constructor().

getTasks()

Возвращает массив инициализированных моделей задания Task.

getTasksIndexed()
Возвращает задания, индексированные по идентификаторам: "<taskId>": Task, …
getSolutions()

Возвращает массив ответов Solution.

getProxyUrl(path)
Возвращает полный URL для доступа к данным на прокси-сервере. Параметр:
  • path — относительный путь к файлу.
getDOMElement()

Возвращает DOM-элемент стилей страницы.

getStyleDOMElement()

Возвращает DOM-элемент страницы (до отрисовки пустой, после — инициализированный, содержащий интерфейс).

validate(solutions)
Валидирует ответы согласно параметрам выходных данных. Возращает промис с массивом ошибок SolutionValidationError, если ответы некорректные, или null. Параметр:
  • solutions — массив ответ исполнителя на задания. Если не передан, то используются текущие (getSolutions()).
initHotkeys()
Инициализатор обработчиков горячих клавиш:
  • Устанавливает фокус на предыдущее задание по стрелке влево/вверх.
  • Устанавливает фокус на следующее задание по стрелке вправо/вниз.
  • Передает нажимаемые клавиши активному заданию.
  • Устанавливает фокус на первое задание.
focusTask(index)
Устанавливает фокус на задание по индексу. Параметр:
  • index — индекс задания на странице.
focusNextTask()
Устанавливает фокус на следующее задание.
focusPreviousTask()
Устанавливает фокус на предыдущее задание.
onKey(key)
Передает нажатую клавишу активному заданию.
render()

Формирует DOM-представление страницы заданий: отрисовывает все задания на странице — вызывает render() класса Task для каждого задания. Вызывает onRender(). Возвращает this.

destroy()
Уничтожает все задания страницы. Освобождает занятые в глобальном пространстве ресурсы, сервисы, обработчики событий. Вызывает onDestroy().
onRender()
Вызывается после отрисовки страницы (render()). Все манипуляции с DOM-элементом задания следует производить здесь.
onDestroy()
Вызывается после уничтожения страницы (destroy()). Наиболее подходящий метод для очистки занятой памяти, удаления глобальных обработчиков событий, DOM-элементов и т. п.
onValidationFail(errors)
Вызывается после неудачной валидации с описанием ошибок в параметре. Параметр: