Класс Task

Напишите нам, если не нашли ответ в Справке. Вы можете приложить скриншоты или видео, чтобы ускорить помощь:

Написать в чат  Написать в Telegram

Примечание

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

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

Методы:

blur()

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

constructor(options)

Конструктор интерфейса задания.

Параметры:

  • options.task — модель задания Task.

  • options.specs — параметры входных и выходных данных, интерфейса заданий.

  • options.workspaceOptions — параметры инициализации рабочего пространства исполнителя.

destroy()

Освобождает занятые в глобальном пространстве ресурсы, сервисы, обработчики событий. Вызывает onDestroy().

focus()

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

getAssignment()

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

Пример
// skip current assignment
this.getAssignment().skip()

getDOMElement()

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

getOptions()

Возвращает объект с набором параметров, переданных методу [constructor()](#constructor) при инициализации.

Пример
// getting specifications for all required fields:
let outputSpec = this.getOptions().specs.output_spec,
     requiredFields = Object.keys(outputSpec)
                            .filter(key => outputSpec[key].required)
                            .reduce((item, key) => (item[key] = outputSpec[key], item), {});

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()](#destroy)). Наиболее подходящий метод для очистки занятой памяти, удаления глобальных обработчиков событий, DOM-элементов и т. п.

onFocus()

Вызывается после установки фокуса.

onKey(key)

Передает нажатую клавишу. Параметр:

  • key — буквенно-числовой символ, нажатый на клавиатуре. Может быть использован как горячая клавиша.

onPause()

Вызывается после приостановки выполнения задания.

onRender()

Вызывается после отрисовки задания ([render()](#render)). Все манипуляции с DOM-элементом задания следует производить здесь.

onResume(savedState)

Вызывается после возобновления выполнения задания.

onValidationFail(errors)

Вызывается после неудачной валидации ответа исполнителя. Параметр:

  • errors — ошибки валидации ответа исполнителя [SolutionValidationError](../spec-advanced.md#obj-solutionvalidationerror).

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()](#onRender). Возвращает this.

resume()

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

saveState()

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

setSolution(solution)

Устанавливает ответы. Параметр:

  • solution — ответ исполнителя на задание ([Solution](../spec-advanced.md#obj-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()).

Написать в службу поддержки

Внешний вид задания для исполнителя и логика обработки ответов. Чаще всего настраивается с помощью конструктора шаблонов.

Формат входных и выходных данных, описываемых в поле Спецификации блока Интерфейс задания при настройке проекта.

Подробнее