Show/Hide Toolbars

Руководство администратора

Настройка динамического шаблона

В системе можно настраивать три вида шаблонов для каждой категории:

NTF - вызывается при создании новой задачи (NTF - сокращение от New Task Form),

MTF - вызывается при просмотре задачи (MTF - сокращение от Main Task Form),

Cell - используется для краткого отображения задачи в списке задач (cell - это ячейка).

mob_template_new_task

Карточка новой задачи.

mob_template_task

Карточка задачи.

mob_template_list

Список задач.

Эти шаблоны назначаются в настройках категории, на вкладке Вид, по кнопке Шаблонизация. Для редактирования динамического шаблона можно использовать 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 - элементам. В настоящее время блок в секции может быть только один.

mobile_template_ex

Структура шаблона задачи.

Если шаблон NTF включает несколько секций, то они будут отображаться пользователю не одновременно в виде вкладок, а последовательно в виде отдельных экранов, имитируя пошаговое создание задачи. На каждом таком экране будет отображаться кнопка Далее, на последнем экране - кнопка Готово.

mob_template_ntf_steps

Последовательный ввод — секции в карточке новой задачи.

Секции (sections)

Шаблон содержит одну или несколько секций.

Каждая секция (из массива sections) содержит ключи:

Ключ

Описание

name

имя

blocks

массив блоков в секции. В настоящее время внутри секции лучше использовать только один блок (функционал дорабатывается)

Пример шаблона с двумя секциями:

{
   "sections": [
     {
          "name": "Вкладка 1",
          "blocks": []
     },
     {
          "name": "Вкладка 2",
          "blocks": []
     }
   ]
}

Блоки (blocks)

!warning В настоящее время деление на горизонтальные блоки не поддерживается, поэтому в каждой вкладке (section) должен быть только один блок (block).

Каждый блок (из массива blocks) может содержать содержит ключи:

Ключ

Описание

name

имя

isExpandable

признак, может ли блок скрываться/раскрываться. В настоящее время скрытие блоков не реализовано

defaultIsExpanded

признак скрытия/раскрытия блока при загрузке карточки. В настоящее время скрытие блоков не реализовано

elements

массив элементов в блоке

Пример массива блоков:

"blocks": [
            {
               "name": "Название блока",
               "isExpandable": false,
               "defaultIsExpanded": true,
               "footer": "",
               "header": "",
               "elements": [...]
            }
         ]

Элементы (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

лента комментариев

!warning элемент должен располагаться в отдельной секции, в единственном блоке

requestedSignatures

запрошенные подписи

subTasks

подчиненные задачи

linkedTasks

связанные задачи (только для Android)

tasksHierarchy

дерево подзадач

usedTasks

блок "Используется"

signatures

блок подписей

defaultValue

значение по умолчанию. Например:

"defaultValue":33

Для ДП Lookup задается JSON:

"defaultValue": {"taskId": 123456, "taskText": "Компания Ромашка"}

Данное значение имеет более высокий приоритет, чем значение ДП по умолчанию, настроенное для категории

viewMode

тип отображения. Возможные значения:

normal

для элементов, занимающих часть блока

valueOnly

если элемент занимает часть блока и отображается только значение элемента, а название не отображается (например, в шаблоне карточки задачи так часто отображается текст задачи)

full

для элементов, занимающих весь блок и всю вкладку (например, лента комментариев)

title

для заголовка

!warning Используется только в шаблонах для краткого отображения и для одного поля, которое должно отображаться как заголовок ячейки. Для этого поля не нужен ключ name

icon

название значка

!warning Используется только для 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"
 }

]

!warning Если в шаблоне для основного или дополнительного параметра задано название (name), то в мобильном приложении в карточке задачи будет отображаться название из шаблона. Если в шаблоне названия нет, то будет отображаться обычное название основного параметра или название ДП - так, как оно задано для ДП в данной категории или в настройках ДП.

Настройки (settings)

Настройки можно описать с помощью раздела 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": {
  "viewMode": "chat"
}

пара ключей type и dataKey.
Например, так в заголовке будет выводиться текст задачи:

"title": {
  "type": "mainParam",
  "dataKey": "taskText"
}

!warning Для приложения 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.

Описывает варианты отображения статусов.

{
 "id_статуса": {
    "bgcolor": "цвет_фона_статуса",
    "textColor": "цвет_текста_статуса"
  },
  ...
}

!warning Цвет фона bgcolor используется только в приложении для iOS

только для шаблона Cell

textColor

Цвет текста в формате hex


viewMode

flat - обычный вид ячеек. Если не указать, то будут ячейки с округлыми границами без разделителей


Список действий (options)

В шаблоне для задачи доступно меню со списком доступных действий. Это меню настраивается с помощью подраздела options в разделе settings. Если такого подраздела в шаблоне нет, будут доступны все возможные действия (т.е. с помощью options список доступных действий можно сократить, но не расширить).

Пример настройки подраздела options:

 "settings": {

         ...        

         "options": {
                 "createSubtask": true,
                 "createLinkedTask": true,
                 "createNewTask": true,
                 "changeTaskText": true,
         }

         ...

 }

Возможные действия:

Ключ

Описание

createLinkedTask

Создать связанную задачу

createNewTask

Создать новую задачу

createSubtask

Создать подзадачу

changeTaskText

Изменить текст задачи

favorites

Добавить в Избранное / Удалить из Избранного

mute

Переключить признак "бесшумного" режима (без звуковых уведомлений)

openDefaultTask

Открыть задачу по умолчанию

pin

Закрепить задачу в списке чатов /Открепить задачу из списка чатов

shareToChat

Поделиться в чате

Нажатие (onTap)

В шаблоне для задачи можно настроить действие, которое будет выполняться по нажатию на элемент. Это действие настраивается с помощью подраздела 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"
 },

 ...

Полезные ссылки