Устаревшее |
---|
В системе можно настраивать три вида шаблонов для каждой категории:
•NTF — вызывается при создании новой задачи (NTF — сокращение от New Task Form),
•MTF — вызывается при просмотре задачи (MTF — сокращение от Main Task Form),
•Cell — используется для краткого отображения задачи в списке задач (cell — это ячейка).
Карточка новой задачи. |
Карточка задачи. |
Список задач. |
Эти шаблоны назначаются в настройках категории, на вкладке Вид, по кнопке Шаблонизация. Для редактирования динамического шаблона можно использовать JSON-редактор.
Каждый вид шаблона имеет свои особенности — в нем могут быть допустимы или недопустимы отдельные ключи и настройки.
Структура шаблона
В базовом варианте динамический шаблон задачи — это JSON трехуровневой структуры: sections -> blocks -> elements. Также может присутствовать необязательный раздел настроек settings, как для всего шаблона, так и для отдельных элементов.
{
"sections": [
{
"name": "...",
"blocks": [
{
"name": "...",
"isExpandable": false,
"defaultIsExpanded": true,
"footer": "",
"header": "",
"elements": [
{
"name": "...",
"type": "...",
"dataKey": "...",
"viewMode": "...",
"settings": {...}
},
...
]
}
]
},
...
],
"settings": {...}
}
В шаблоне MTF раздел Sections соответствует вертикальным вкладкам (секциям), раздел blocks — горизонтальным блокам, раздел elements - элементам. В настоящее время блок в секции может быть только один.
Структура шаблона задачи.
Если шаблон NTF включает несколько секций, то они будут отображаться пользователю не одновременно в виде вкладок, а последовательно в виде отдельных экранов, имитируя пошаговое создание задачи. На каждом таком экране будет отображаться кнопка Далее, на последнем экране — кнопка Готово.
Последовательный ввод — секции в карточке новой задачи.
Шаблон содержит одну или несколько секций.
Каждая секция (из массива sections) содержит ключи:
Ключ |
Описание |
name |
имя |
blocks |
массив блоков в секции. В настоящее время внутри секции лучше использовать только один блок (функционал дорабатывается) |
Пример шаблона с двумя секциями:
{
"sections": [
{
"name": "Вкладка 1",
"blocks": []
},
{
"name": "Вкладка 2",
"blocks": []
}
]
}
В настоящее время деление на горизонтальные блоки не поддерживается, поэтому в каждой вкладке (section) должен быть только один блок (block).
Каждый блок (из массива blocks) может содержит ключи:
Ключ |
Описание |
name |
имя |
isExpandable |
признак, может ли блок скрываться/раскрываться. В настоящее время скрытие блоков не реализовано |
defaultIsExpanded |
признак скрытия/раскрытия блока при загрузке карточки. В настоящее время скрытие блоков не реализовано |
elements |
массив элементов в блоке |
Пример массива блоков:
"blocks": [
{
"name": "Название блока",
"isExpandable": false,
"defaultIsExpanded": true,
"footer": "",
"header": "",
"elements": [...]
}
]
Каждый элемент (из массива elements) может содержать ключи:
Ключ |
Описание |
|
name |
имя |
|
type |
тип элемента. Возможны значения: |
|
mainParam |
для основных параметров |
|
extparam |
для ДП |
|
dataKey |
Для ДП ("type":"extparam") в dataKey указывается ID ДП. Для основных параметров задачи ("type":"mainParam") dataKey может принимать следующие значения: |
|
category |
категория |
|
taskNum, taskId |
номер задачи |
|
taskText |
текст задачи |
|
owner |
заказчик |
|
createdDate |
дата создания |
|
orderedDate |
срок |
|
startedDate |
дата начала работ |
|
state |
статус |
|
priority |
приоритет |
|
performers |
исполнители |
|
subscribers |
подписчики |
|
buttons |
кнопки переходов |
|
files |
вложения |
|
comments |
лента комментариев элемент должен располагаться в отдельной секции, в единственном блоке
|
|
requestedSignatures |
запрошенные подписи |
|
subTasks |
подчиненные задачи |
|
linkedTasks |
связанные задачи (только для Android) |
|
tasksHierarchy |
дерево подзадач |
|
usedTasks |
блок "Используется" |
|
signatures |
блок подписей |
|
defaultValue |
значение по умолчанию. Например: "defaultValue":33 Для ДП Lookup задается JSON: "defaultValue": {"taskId": 123456, "taskText": "Компания Ромашка"} Данное значение имеет более высокий приоритет, чем значение ДП по умолчанию, настроенное для категории |
|
viewMode |
тип отображения. Возможные значения: |
|
normal |
для элементов, занимающих часть блока |
|
valueOnly |
если элемент занимает часть блока и отображается только значение элемента, а название не отображается (например, в шаблоне карточки задачи так часто отображается текст задачи) |
|
full |
для элементов, занимающих весь блок и всю вкладку (например, лента комментариев) |
|
title |
для заголовка Используется только в шаблонах для краткого отображения и для одного поля, которое должно отображаться как заголовок ячейки. Для этого поля не нужен ключ name
|
|
icon |
название значка Используется только для Android
|
|
placeholder |
строка с пояснением, которое отображается при пустом значении ячейки |
|
readOnly |
true \ false |
ячейка доступна только для чтения |
Пример массива элементов с основными параметрами "Текст задачи" и "Заказчик задачи" и одним ДП с ID=182:
[
{
"name": "Договор",
"type": "mainParam",
"dataKey": "taskText",
"viewMode": "normal"
},
{
"name": "От",
"type": "mainParam",
"dataKey": "owner",
"viewMode": "normal"
},
{
"name": "Участники встречи",
"type": "exparam",
"dataKey": "182",
"viewMode": "normal"
}
]
Настройки можно описать с помощью раздела settings. Общие настройки для всего шаблона должны идти перед или после раздела sections. Собственные настройки могут быть у каждого элемента.
В разделе settings могут настраиваться следующие ключи:
Ключ |
Описание |
Вид шаблона |
Общие настройки |
||
afterTaskCreationBehaviour |
Поведение после создания задачи. closeTask - сразу после создания карточка задачи будет закрыта |
только для шаблона NTF |
alwaysShowTabMenu |
true / false. Отображение меню вкладок шаблона. Если true - меню вкладок отображается |
только для шаблона MTF |
avatar |
Название значка |
|
fontSize |
Размер шрифта значений полей (px) |
|
groupUsedBlockTables |
true / false. Отображение нескольких блоков "Используется" на одной вкладке (true) или на отдельных (false) |
только для шаблона MTF |
onTap |
Действие, которое выполняется по нажатию на ячейку в списке задач (см. ниже) |
только для шаблона Cell |
options |
Список действий (см. ниже) |
только для шаблона MTF |
showSignatures |
true / false. Отображение вкладки "Подписи" в карточке задачи. Вкладка отображается только если есть запрошенные подписи |
только для шаблона MTF |
subscribersReadOnly |
true / false. Признак доступа на редактирование списка подписчиков задачи |
только для шаблона MTF |
title |
Заголовок. Возможные ключи: •viewMode — режим просмотра. Возможные значения: channel — канал, chat — чат. Например: "title": { •пара ключей type и dataKey. "title": { Для приложения iOS в заголовке может быть только текст или дата |
|
titleSize |
Размер шрифта заголовков полей (px) |
|
usedBlockTables |
JSON со списком настроек блоков "Используется", см. пример |
только для шаблона MTF |
Настройки элемента (ячейки) |
||
align |
left / right / center. Выравнивание текста. |
|
allowCommentToAll |
true / false. Только для элемента comments. Разрешено отправлять комментарии без адресатов, т.е. всем подписчикам задачи |
только для шаблона MTF |
commentTypes |
Типы комментариев, которые будут отображаться в ленте. Только для элемента comments. Передается в виде массива, например: "commentTypes": [3,15] |
только для шаблона MTF |
forbidOfflineChange |
Ячейка блокируется от нажатия при отсутствии подключения к интернету. В настоящее время работает только для ячейки buttons |
|
forbidOpen |
true / false. Блокирование ячейки для открытия. При просмотре списка задач нельзя перейти в карточку задачи |
только для шаблона Cell |
hideInfoButton |
true / false. Признак, скрывать ли значок i рядом с ячейкой для ДП Lookup. |
|
hideSubscribers |
true / false. Только для элемента comments. При написании комментария не отображать подписчиков (например, чтобы пользователь не видел, кто еще участвует в обсуждении) |
только для шаблона MTF |
prefix |
Текст, который будет отображаться перед значением элемента |
только для шаблона Cell |
shortListCount |
Количество отображаемых элементов списка. Если элементов больше, они по умолчанию скрываются в спойлер "Показать все". Может использоваться для блока "Вложения" |
только для шаблона MTF |
showTaskFilter |
true / false. |
|
states |
Только для элемента state. Описывает варианты отображения статусов. { Цвет фона bgcolor используется только в приложении для iOS |
только для шаблона Cell |
textColor |
Цвет текста в формате hex |
|
viewMode |
flat - обычный вид ячеек. Если не указать, то будут ячейки с округлыми границами без разделителей |
В шаблоне для задачи доступно меню со списком доступных действий. Это меню настраивается с помощью подраздела options в разделе settings. Если такого подраздела в шаблоне нет, будут доступны все возможные действия (т.е. с помощью options список доступных действий можно сократить, но не расширить).
Пример настройки подраздела options:
"settings": {
...
"options": {
"createSubtask": true,
"createLinkedTask": true,
"createNewTask": true,
"changeTaskText": true,
}
...
}
Возможные действия:
Ключ |
Описание |
createLinkedTask |
Создать связанную задачу |
createNewTask |
Создать новую задачу |
createSubtask |
Создать подзадачу |
changeTaskText |
Изменить текст задачи |
favorites |
Добавить в Избранное / Удалить из Избранного |
mute |
Переключить признак "бесшумного" режима (без звуковых уведомлений) |
openDefaultTask |
Открыть задачу по умолчанию |
pin |
Закрепить задачу в списке чатов /Открепить задачу из списка чатов |
shareToChat |
Поделиться в чате |
В шаблоне для задачи можно настроить действие, которое будет выполняться по нажатию на элемент. Это действие настраивается с помощью подраздела onTap в разделе settings данного элемента.
Возможные действия:
Ключ |
Описание |
openTask |
открыть карточку задачи (по умолчанию) |
openUsedBlock |
открыть список задач блока "Используется", настроенного в категории |
forbidOpen |
запрет перехода куда-либо при нажатии на ячейку задачи |
Пример настройки подраздела onTap - по нажатию на задачу открывается не карточка задачи, а блок "Используется". Такая настройка позволяет реализовать многоуровневый каталог.
{
"settings": {
"viewMode": "flat",
"showTaskFilter": false,
"onTap": {
"action": "openUsedBlock",
"id": 111
}
}
}
где 111 — это ID таблицы в блоке "Используется".
В приложении поддерживаются также некоторые агрегированные представления данных, где элементы агрегируются по какому-то признаку. В настоящее время приложения поддерживает два таких представления — календарь (агрегирует задачи на дату) и карта (агрегирует объекты по координатам в кластере).
Для них перед секциями добавляются еще два раздела: templateClass и aggregate.
Раздел templateClass задает тип представления — calendar или map.
Раздел aggregate описывает параметр, по которому агрегируются данные (например, ДП), причем только ключи type и dataKey (без name и viewMode).
Пример шаблона с агрегацией:
{
"templateClass": "calendar",
"aggregate": {
"element": {
"type": "extparam",
"dataKey": 4025
}
},
"sections": [
...
]
}
Мобильные шаблоны не поддерживают комментарии. Поэтому чтобы зафиксировать в шаблоне какие-то пояснения обычно используется какой-либо неподдерживаемый ключ с префиксом в виде подчеркивания — он не распознается приложением и никак не интерпретируется, и при этом не генерируется ошибка.
Пример использования комментария:
...
{
"_name": "Клиент",
"type": "extparam",
"dataKey": 3973,
"viewMode": "valueOnly"
},
...