Класс Task
Обратите внимание
Документация на русском языке может быть устаревшей. Самые последние изменения доступны в документации на английском языке.
Примечание
Справочник по настройке интерфейса описывает работу редактора 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()
).