Класс Task

Примечание. Справочник по настройке интерфейса описывает работу редактора HTML/JS/CSS. Вы также можете попробовать создать интерфейс задания в Конструкторе шаблонов.

Базовый класс Task отвечает за интерфейс задания. Класс доступен в глобальной переменной window.TolokaTask.

Методы:

blur()

Реализует логику снятия фокуса с задания, вызывает метод onBlur() .

constructor(options)
Конструктор интерфейса задания. Параметры:
destroy()
Освобождает занятые в глобальном пространстве ресурсы, сервисы, обработчики событий. Вызывает onDestroy() .
focus()

Реализует логику установки фокуса на задание, вызывает метод onFocus() .

getAssignment()

Возвращает ссылку на экземпляр класса TolokaAssignment. После этого можно обращаться ко всем его свойствам и методам.

Пример
// skip current assignment
this.getAssignment().skip()
Скопировано
getDOMElement()

Возвращает DOM-элемент задания.

getOptions()

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

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

Возвращает сохраненное состояние задания (объект).

Получает из локального хранилища браузера сохраненное состояние задания по ключу TASK_STATE:{assignmentId}:{taskId}.

getSolution()

Возвращает ответы задания Solution .

getStyleDOMElement()

Возвращает DOM-элемент для стилей задания, который добавляется в document.head при отрисовке.

getTask()

Возвращает модель задания Task .

getTemplateData()

Возвращает объект, который получит шаблонизатор перед компиляцией шаблона задания.

Метод доступен в toloka-handlebars-templates. Он возвращает набор полей и их значений, переданный на вход задания: return this.getTask().input_values.

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

Пример
// if the user completes the assignment under iOS, we show additional layout
getTemplateData: function() {
    let data = TolokaHandlebarsTask.prototype.getTemplateData.call(this),
        userAgent = navigator.userAgent || navigator.vendor || window.opera;


    if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {
        data.ios = true;
    }

    return data;
}
Скопировано
getWorkspaceOptions()

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

hideTaskError()

Cкрывает глобальную ошибку (только если подключена библиотека toloka-handlebars-templates).

id

Содержит id текущего задания.

Пример
let myId = this.getTask().id
Скопировано
onBlur()
Вызывается после удаления фокуса.
onDestroy()
Вызывается после уничтожения задания ( destroy() ). Наиболее подходящий метод для очистки занятой памяти, удаления глобальных обработчиков событий, DOM-элементов и т. п.
onFocus()
Вызывается после установки фокуса.
onKey(key)
Передает нажатую клавишу. Параметр:
  • key — буквенно-числовой символ, нажатый на клавиатуре. Может быть использован как горячая клавиша.
onPause()
Вызывается после приостановки выполнения задания.
onRender()
Вызывается после отрисовки задания ( render() ). Все манипуляции с DOM-элементом задания следует производить здесь.
onResume(savedState)
Вызывается после возобновления выполнения задания.
onValidationFail(errors)
Вызывается после неудачной валидации ответа исполнителя. Параметр:
pause()

Приостанавливает выполнение задания. Сохраняет промежуточное состояние в локальном хранилище браузера (saveState) и вызывает метод onPause.

proxy(path, options)

Создает GET- или POST-запрос через прокси.

Параметры:

  • path — путь для запроса (строка).
  • options — параметры запроса (объект). Подробнее читайте в описании параметров Jquery Ajax.

Возвращает объект promise.

Важно. Некоторые возможности (например, таймауты или кастомные заголовки) не поддерживаются.
Пример
// need to find user logins which start with 'jones' and 'smith' (not more than 10 of each instance)
// we make two POST requests to the search service
// then wait for results

let promises = [],
     patterns = ['jones*', 'smith*'];

patterns.forEach(pattern => promises.push(Promise.resolve(this.proxy('myproxy/search', {
   type: 'POST',
   contentType: 'application/json',
   dataType: 'json',
   data: JSON.stringify({
       query: pattern,
       limit: 10
   }),
   processData: false
}))));

Promise.all(promises)
       .then(results => console.log(results))
       .catch(error => console.error(error));
Скопировано
render()

Формирует DOM-представление интерфейса задания. Вызывает onRender() . Возвращает this.

resume()

Возобновляет выполнение задания. Получает из локального хранилища браузера сохраненное состояние. Восстанавливает из него набор ответов и заново выполняет незавершенные в прошлом сеансе запросы в сервисах file и webview. Вызывает onResume.

saveState()

Проверяет assignmentId, чтобы убедиться, что задание работает в режиме исполнителя, а не в превью. Получает набор ответов, а также необработанные запросы в сервисах file и webview. Используя сервис storage, сохраняет их в локальное хранилище браузера c ключом TASK_STATE:{assignmentId}:{taskId}.

setSolution(solution)
Устанавливает ответы. Параметр:
  • solution — ответ исполнителя на задание ( Solution ).
setSolutionOutputValue(fieldName, value)

Записывает требуемое значение в указанное поле. Параметры:

  • fieldName — поле (строка) в выходной спецификации, в которое будет передано значение.
  • value — значение заданного для fieldName типа в спецификации проекта.
setSolutionOutputValues(outputValues)

Обновляет выходную спецификацию, записывая в нее переданный объект с ответами. Вызывает saveState для сохранения промежуточных результатов в локальном хранилище браузера. Параметр:

  • outputValues — объект с ответами.
showTaskError(message)

Принудительно показывает глобальную ошибку в задании (только если подключена библиотека toloka-handlebars-templates). Параметры:

  • message — текст ошибки (строка).
template(data)
Шаблонизатор задания. В HTML-интерфейсе задания заменяет вхождения типа ${fieldX} на соответствующее значение с ключем fieldX из параметра data. Возвращает HTML-интерфейс задания в виде строки. Параметр:
  • data — объект с данными для подстановки в шаблон.
validate(solution)
Валидирует ответы согласно параметрам выходных данных. Возращает SolutionValidationError , если ответы не корректные, или null. Параметр:
  • solution — ответ исполнителя на задание. Если не передан, то используется текущее ( getSolution() ).