Класс Task
Базовый класс Task
отвечает за интерфейс задания. Класс доступен в глобальной переменной window.TolokaTask
.
Методы:
- blur()
-
Реализует логику снятия фокуса с задания, вызывает метод
onBlur()
. - constructor(options)
- Конструктор интерфейса задания. Параметры:
options.task
— модель задания Task.options.specs
— параметры входных и выходных данных, интерфейса заданий. См. формат объектаtask_spec
.options.workspaceOptions
— параметры инициализации песочницы {{isReadOnly: boolean}}
- 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)
- Вызывается после неудачной валидации ответа исполнителя. Параметр:
errors
— ошибки валидации ответа исполнителя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()
. Возвращает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()
).