Show/Hide Toolbars

Полное руководство администратора

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

Ссылки Назад Вверх Вперед

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

для новой задачи (вызывается при создании новой задачи),

для карточки задачи (вызывается при просмотре задачи),

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

mob_template_new_task

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

mob_template_task

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

mob_template_list

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

Эти шаблоны назначаются в настройках категории, на вкладке "Вид", по кнопке Шаблонизация.

Каждый вид шаблона имеет свои особенности - в нем могут быть допустимы или недопустимы отдельные ключи и настройки.

Структура шаблона

В базовом варианте динамический шаблон задачи - это JSON трехуровневой структуры: sections -> blocks -> elements. Также может присутствовать необязательный раздел настроек settings, как для всего шаблона, так и для отдельных элементов.

{
   "sections": [
       {
           "name": "...",
           "blocks": [
               {
                   "name": "...",
                   "isExpandable": false,
                   "defaultIsExpanded": true,
                   "footer": "",
                   "header": "",
                   "elements": [
                       {
                           "name": "...",
                           "type": "...",
                           "dataKey": "...",
                           "viewMode": "...",

                           "settings": {...}  
                       },
                         ...

                   ]
               }
           ]
       },

    ...

   ],

   "settings": {...}  
}

Раздел Sections соответствует вертикальным вкладкам (секциям), раздел blocks - горизонтальным блокам, раздел elements - элементам. В настоящее время блок в секции может быть только один.

mobile_template_ex

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

Секции (sections)

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

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

Ключ

Описание

name

имя

blocks

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

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

{
   "sections": [
     {
          "name": "Первая",
          "blocks": []
     },
     {
          "name": "Вторая",
          "blocks": []
     }
   ]
}

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

Блоки (blocks)

Каждый блок (из массива 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

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

viewMode

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

normal

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

valueOnly

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

full

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

title

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

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

icon

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

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 могут настраиваться следующие ключи:

Ключ

Описание

Вид шаблона

Ключи общих настроек

alwaysShowTabMenu

признак отображения меню вкладок шаблона. Может принимать значения true или false

только для карточки задачи

avatar

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


fontSize

размер шрифта значений полей (px)


groupUsedBlockTables

true / false. Отображение нескольких блоков "Используется" на одной вкладке (true) или на отдельных (false)

только для карточки задачи

onTap

настройки действия, которое выполняется по нажатию на ячейку в списке задач (см. ниже)

только для краткого отображения

options

список действий (см. ниже)

только для карточки задачи

showSignatures

true / false. Отображение вкладки "Подписи" в карточке задачи. Вкладка отображается только если есть запрошенные подписи

только для карточки задачи

subscribersReadOnly

признак доступа на редактирование списка подписчиков задачи. Может принимать значения true или false

только для карточки задачи

title

заголовок. Это подраздел с возможными ключами:

viewMode  - режим просмотра. Возможные значения: channel - канал, chat - чат;

парой ключей type и dataKey,
например: { "type": "mainParam", "dataKey": "taskText" } - в заголовке отображается текст задачи

(для приложения iOS в заголовке может быть только текст или дата)


titleSize

размер шрифта заголовков полей (px)


usedBlockTables

JSON со списком настроек блоков "Используется", см. пример

только для карточки задачи

Ключи настроек элемента

align

left / right / center. Выравнивание текста.


allowCommentToAll

true / false. Только для элемента comments.

Разрешено отправлять комментарии без адресатов, т.е. всем подписчикам задачи

только для карточки задачи

commentTypes

типы комментариев, которые будут отображаться в ленте. Только для элемента comments.

Передается в виде массива, например:

"commentTypes": [3,15]

только для карточки задачи

forbidOfflineChange

ячейка блокируется от нажатия при отсутствии подключения к интернету. В настоящее время работает только для ячейки buttons


forbidOpen

true / false. Блокирование ячейки для открытия. При просмотре списка задач нельзя перейти в карточку задачи

только для краткого отображения

hideInfoButton

true / false. Признак, скрывать ли значок i рядом с ячейкой для ДП Lookup.


hideSubscribers

true / false. Только для элемента comments.

При написании комментария не отображать подписчиков (например, чтобы пользователь не видел, кто еще участвует в обсуждении)

только для карточки задачи

prefix

текст, который будет отображаться перед значением элемента

только для краткого отображения

shortListCount

количество отображаемых элементов списка. Если элементов больше, они по умолчанию скрываются в спойлер "Показать все"

Может использоваться для блока "Вложения"

только для карточки задачи

showTaskFilter

true / false.


states

Только для элемента state.

Подраздел для описания отображения различных статусов.

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

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

только для краткого отображения

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"
 },

 ...

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