Шаблоны блоков¶
Список шаблонов блоков:
ℹ️ Обработка шаблона и его ключей настраивается в коде приложения. Любые изменения, вносимые в шаблон, должны строго соответствовать тому, что заложено в коде приложения. Редактирование шаблона обычно производится специалистами ТП "Первой Формы".
В процессе развития приложения и расширения его возможностей набор ключей для существующих шаблонов может расширяться. Однако при обновлении платформы "Первая Форма" новые ключи для существующих шаблонов не добавляются автоматически, и при необходимости их надо добавлять вручную, в соответствии с эталонными настройками.
Создание шаблона¶
Чтобы создать новый шаблон, нажмите кнопку +Создать. Откроется окно для добавления шаблона.
Редактирование шаблона¶
Для изменения существующего шаблона нажмите на него в общем списке, после чего будет открыто окно редактирования. После внесения данных нажмите кнопку Сохранить, чтобы применить изменения, или Сбросить, чтобы отменить изменения. Кнопка Назад позволит вернуться в общему списку.
Удаление шаблона¶
Для удаления шаблона нажмите кнопку Удалить на форме или выберите соответствующий пункт в контекстном меню строки.
Ключи шаблона¶
Каждому шаблону может соответствовать свой набор ключей (этот набор может быть и пустым). Для редактирования набора ключей шаблона кликните мышью по соответствующей строке таблицы шаблонов. Откроется окно со списком ключей данного шаблона.
Удаление ключа¶
Для удаления ключа нажмите кнопку Удалить в строке ключа или на форме редактирования.
Значения ключа шаблона блока¶
Для каждого ключа можно задать набор допустимых значений. Чтобы открыть список значений ключа, кликните мышью по соответствующей строке в списке ключей шаблона.
Для добавления нового значения нажмите кнопку +Создать.
Для удаления значения нажмите кнопку Удалить в строке значения или на форме редактирования.
Преднастроенные шаблоны¶
Общие ключи для преднастроенных шаблонов.
Общие ключи¶
Данные ключи отвечают за общее расположение, логику отрисовки и отображения плитки на дашборде в мобильном приложении.
| Общие ключи | Описание |
|---|---|
| badgeItemColor | Цвет элемента значка |
| fallBackTitle | Заголовок плитки |
| footerTitle | Текст подвала (нижней части) |
| groups | Группы, для которых плитка должна отображаться. |
В плитках может приходить не пустой массив id групп для параметра groups. Если он непустой, то МП определяет пересечение групп текущего сессионного пользователя и массива groups. Если пересечение пустое, то такие элементы не отображаются на экране.
ℹ️ Обратите внимание: отображение блоков для пользователя не меняется в период замещения, блоки доступны пользователю только в соответствии с правами для групп, в которых он состоит.
| Общие ключи | Описание |
|---|---|
| headerBackgroundColor | Цвет фона заголовка, выражение вида #000000. Если значение не указано — цвет будет прозрачным |
| heightMultiplier | Высота плитки в условных единицах. Целое или десятичное число 1 условная единица - это 1/2 ширины экрана в режиме "портрет". |
| icon | Название одного из преднастроенных значков, который будет отображаться на плитке. icon переопределяется в плитке, и если значение не задано, то значения для него берется из template целого дашбоарда |
| iconColor | Цвет иконки. Если цвет не задан, то он автоматически подтягивается от цвета текста заголовка плитки titleColor |
| interactions | JSON строка взаимодействия с плитками. В нем содержится строка типа: {"tap": { onTapDto }, "longTap": { onTapDto } } Например: {"tap": {"action":"openSubcategory", "id":2867 , "title": "Все >"}, "longTap": {"action": "openTaskSource", "dataSourceUrl": "/app/v1.2/api/publications/action/mob-notifications"}} |
| textColor | Цвет текста в блоке, выражение вида #000000 |
| titleColor | Цвет заголовка в блоке, выражение вида #000000 |
| verticalGradientColor | Вертикальный градиент в плитке |
| widthRatio | Ширина в условных единицах |
Ниже на странице будут приведены разные типы шаблонов, в разделе которых будут прописаны ключи, используемые конкретно для реализации их функционала, тонких настроек отображения, получение источников данных и передачи контекстов.
dashboard¶
Шаблон экрана рабочего стола. Выбор плиток по порядку.
Специфичные ключи (характерные для данного шаблона):
| Специфичные ключи | Описание |
|---|---|
| bgImage | Изображение фона |
| bgImageURL | URL адрес на изображение фона с анонимным доступом |
| cellCounterFontSize | Размер шрифта счетчика, по умолчанию 15. Если не заданы в плитке, то берутся из настроек контейнера. |
| cellIconSize | Размер иконки, по умолчанию 16. Если не заданы в плитке, то берутся из настроек контейнера. |
| cellTextFontSize | Размер текста внутри ячейки (плитки) |
| cellTitleFontSize | Размер заголовка ячейки (плитки), по умолчанию 15 |
| containerBackgroundColor | Цвет фона контейнера в целом |
| rightBarButtons | JSON onTap действий |
| showStyle | Тип анимации. Возможные значения: -expand — элемент возникает -push — элемент появляется снизу -swipe -background — фон |
| showTileBorderShadow | Отображение тени для виджета на рабочем столе |
| tileCornerRadius | Радиус углов плиток, по умолчанию 6 pt |
| tileSpacing | Отступ от края экрана |
dashboardItem¶
Шаблон одной плитки рабочего стола. Плитки на половину экрана используются для навигации в системе. Для плиток на всю ширину экрана допустимо вводить не более 2х задач.
Специфичные ключи (характерные для данного шаблона):
| Специфичные ключи | Описание |
|---|---|
| actionStyle | Стиль отображения при нажатии. Возможные значения: -push (переход), -popup (всплывающее окно) |
| autoHeight | Высота определяется автоматически по контенту |
| bgImageUploadId | Изображение фона |
| bgImageURL | URL адрес на изображение фона с анонимным доступом |
| cellCounterFontSize | Размер шрифта счетчика |
| cellIconSize | Размер иконки, значение по умолчанию: 16 Если не заданы в плитке, то берутся из настроек контейнера. |
| cellStyle | Стиль ячейки. Возможные значения default/custom. если не задано — то default. Если в TaskSource стоит cellStyle = default, то он открывается в виде типовых ячеек, если же cellStyle = custom, то каждая ячейка отображается согласно ее шаблону CELL (краткое представление в шаблонизаторе). |
| cellTitleFontSize | Размер шрифта для заголовка, по умолчанию 15 |
| cellTextFontSize | Размер шрифта для текста плитки |
| click | JSON описания нажатий на разные части плитки |
| context | Контекст, который будет браться из настроенного динамического шаблона |
| disabled | Выключение нажатия на плитку. Если 1, то нажатие на плитку ничего не делает. Если 0, то обычное нажатие и дальнейшее проваливание в плитку |
| emptyContentTitle | Отображаемый заголовок, если плитка пустая |
| forbidCreateTask | Признак запрета на создание задач 0 — запрета на создание задач нет, 1 — запрет на создание задач есть |
| hideCounter | Возможность скрыть счётчик. 0 — не включено 1 — включено Если цвет не задан, то он автоматически подтягивается от цвета текста заголовка плитки titleColor Счетчик идет слева от иконки. если иконки нет — счетчик сдвигается на ее место. Счетчик отображается в виде тикера — в круге/овале, цвет фона тикера берется как цвет текста счетчика с альфой 0.3 |
| hideOnZeroCount | Признак, который определяет, будет ли плитка отображаться на рабочем столе при нулевом счетчике 0 — отображается только при ненулевом счетчике, 1 — отображается всегда |
| onTapAlert | Сообщение при нажатии неактивной плитки. Связано с параметром needConfirm. |
При нажатии на плитку появляется алерт с данным текстом (если disabled = 0, то чисто формально показывается алерт и переходим в плитку)
| leftEdgeColor | Цвет левой границы ячеек дашбоарда |
| --- | --- |
| needConfirm | Ключ, отвечающий за отображение кнопок Отменить/Подтвердить под баннером с текстом с onTapAlert.
Если значение равно 1 и onTapAlert не пустая строка, то вместо алерта показываем конферм с текстом onTapAlert, две кнопки "Отменить" и "Подтвердить".
После нажатия Подтвердить просизодит переход в плитку |
| slideShow | Признак автоматического прокручивания элементов в виде "карусели" |
| subcatId | ID категории для создания задачи |
| taskFilter | Фильтр (json для task/feeds) |
| tileCornerRadius | Радиус углов плиток (по умолчанию 6 pt) |
| tileSpacing | Отступ от края экрана |
dashboardCustomURL¶
Шаблон для блока с ссылкой, прописанной в интерфейсе администрирования.
Специфичные ключи (характерные для данного шаблона):
| Специфичные ключи | Описание |
|---|---|
| allowPreviewInteraction | С помощью данного параметра мы определяем взаимодействие с контентом. Если 1, то пользователь может взаимодействовать с контентом (previewURL) внутри фрейма (блока на дэше). Любые нажатия будут происходить внутри фрейма, даже переходы по ссылкам. |
| autoHeight | Высота определяется автоматически по контенту |
| bgImageUploadId | ID загруженного изображения для фона плитки |
Если значение не указано — цвет будет прозрачным | bgImageURL | Высота плитки в условных единицах | | --- | --- | | cellTitleFontSize | Название одного из преднастроенных значков, который будет отображаться на плитке | | isButton | Если 1, то значит при нажатии на плитку мп не переходит по ссылке URLPath, а просто запускает асинхронный запрос по указанной ссылке (это для post публикаций делается, чтобы запустить какой-то фоновый процесс на бэке). |
Иначе просто дает переход по URLPath
| openInBrowser | Открытие ссылок вне МП (в браузере) |
| --- | --- |
| phone | Номер телефона для звонка в формате +74951234567 |
| previewURL | Ссылка для отображения webView внутри плитки (может и совпадать с URLPath)
Вся верстка будет приходить в таком случае с сайта по указанной ссылке |
| URLPath | Ссылка, которая будет открываться по нажатию на плитку. Если не указана, то плитка не кликабельна |
dashboardSignatures
Плитка подписей с возможным ограничением на группы.
Специфичные ключи (характерные для данного шаблона):
| Специфичные ключи | Описание |
|---|---|
| actionStyle | Стиль отображения при нажатии. Возможные значения: -push (переход), -popup (всплывающее окно) |
| autoHeight | Высота определяется автоматически по контенту |
| bgImageUploadId | Изображение фона |
| bgImageURL | URL адрес на изображение фона с анонимным доступом |
| cellCounterFontSize | Размер шрифта счетчика |
| cellIconSize | Размер иконки, значение по умолчанию: 16 Если не заданы в плитке, то берутся из настроек контейнера. |
| cellStyle | Стиль ячейки. Возможные значения: default/custom. Если не задано — то default. Если в TaskSource стоит cellStyle = default, то он открывается в виде типовых ячеек, если же cellStyle = custom, то каждая ячейка отображается согласно ее шаблону CELL (краткое представление в шаблонизаторе). |
| cellTitleFontSize | Размер шрифта для заголовка, по умолчанию 15 |
| cellTextFontSize | Размер шрифта для текста плитки |
| click | JSON описания нажатий на разные части плитки |
| context | Контекст, который будет браться из настроенного динамического шаблона |
| emptyContentTitle | Отображаемый заголовок, если плитка пустая |
| excludeSubcatIds | Список категорий для исключения из показа |
| forbidCreateTask | Признак запрета на создание задач. 0 — запрета на создание задач нет, 1 — запрет на создание задач есть |
| hideCounter | Возможность скрыть счётчик 0 — не включено 1 — включено Если цвет не задан, то он автоматически подтягивается от цвета текста заголовка плитки titleColor Счетчик идет слева от иконки, если иконки нет — счетчик сдвигается на ее место. Счетчик отображается в виде тикера — в круге/овале, цвет фона тикера берется как цвет текста счетчика с альфой 0.3 |
| hideOnZeroCount | Признак, который определяет, будет ли плитка отображаться на рабочем столе при нулевом счетчике |
0 — отображается только при ненулевом счетчике,
1 — отображается всегда
| includeSubcatIds | Список категорий для показа |
| --- | --- |
| leftEdgeColor | Цвет левой границы ячеек дашбоарда |
| showAcceptAll | Показ кнопки "Подписать все" в списке подписей (кнопка отображается если подписей больше 1).
По нажатию кнопки выносится резолюция "Согласовать" по всем подписям, которые в момент нажатия отображаются в списке (например, если включен отбор по категориям, то будут согласованы только отобранные подписи). После нажатия кнопки запрашивается дополнительное подтверждение |
| showCategoryFilter | Показ кнопки отбора подписей по категориям.можно выбрать одну или несколько категорий, и тогда в списке останутся только подписи, запрошенные в этих категориях |
| slideShow | Признак автоматического прокручивания элементов в виде "карусели" |
| subcatId | ID категории для создания задачи |
| taskFilter | Фильтр (json для task/feeds) |
| tileCornerRadius | Радиус углов плиток (по умолчанию 6 pt) |
| tileSpacing | Отступ от края экрана |
dashboardStack¶
Стек элементов дашборда (объект палитры — Папка). Используется для создания иерархии вложенных элементов.
Специфичные ключи (характерные для данного шаблона):
| Специфичные ключи | Описание |
|---|---|
| bgImageURL | Ссылка на фоновое изображение для элемента стека |
| cellTitleFontSize | Размер шрифта для заголовка, по умолчанию 15 |
| cellTitleColor | Задает цвет текста под кнопками в стеке |
| colCount | Число колонок |
| iconURL | URL загрузки картинки иконки по ссылке (логика загрузки и кэширования как для фоновых изображений); iconURL имеет приоритет над icon |
| presentationStyle | Галерея кнопок фиксированного дизайна. Возможные стили для dashboardStack с style = horizontal. Возможные значения: small (по умолчанию), medium |
| separatorColor | Задание цвета сепаратора в квадратном стеке |
| showIconCircle | Показ круга вокруг иконки |
| showSeparators | Показ разделителей между элементами |
| style | Вертикальный/горизонтальный |
| titleFontSize | Размер шрифта заголовка плитки |
| tileCornerRadius | Радиус углов плиток (по умолчанию 6 pt) |
| tileSpacing | Отступ от края экрана |
Особенности при настройке dashboardStack
Общая логика рисования иконки и круга:
Если круга нет, то рисуются просто иконки, но чаще всего при настройке указывают сразу иконку.
Параметры для настройки отображения счетчика у элемента стека:
Для отображения счетчика нужно:
1. Указать у элемента папки ненулевое количество задач, которые должны приносить с собой общий счетчик для отображения
2. Указать значение цвета для счетчика в ключе badgeItemColor
Параметры шаблона для UI любого элемента, которые попадают в стек:
-
fallBackTitle — заголовок в плитке (максимум 2 строки).
-
headerBackgroundColor — цвет фона ячейки (по умолчанию пустой, определяется цветом стека в целом).
-
icon — название иконки, хранящейся в БД.
-
cellIconSize — размер иконки.
-
iconColor — цвет иконки.
-
titleColor — цвет текста (если не задан, то берем из titleColor стека).
Вертикальный блок
Особенности настройки блока по параметрам:
В текущем кейсе style = vertical
-
showSeparators — 1/0 — небходимость рисовать тонкие разделители между элементами по вертикали.
-
heightMultiplier — высота стека, будет являться суммой всех блоков внутри папки.
-
headerBackgroundColor — цвет фона стека в целом, если не задано, то белый по умолчанию.
-
cellTitleFontSize — размер заголовков в ячейках таблицы, может быть переопределен в самом блоке.
-
titleColor — цвет текста в ячейках, по умолчанию черный.
ℹ️ Внутри папки может быть любое число блоков. Блок может быть абсолютно любой, как и в общем дереве дэша.
Есть возможность настроить вертикальный блок, где созданные задачи будут выступать вложенными блоками папки. Для этого нужно задать при редактировании папки количество задач, которые будут отображаться в вертикальном стеке.
В таком случае МП будет подстраивать отображаемый стек под количество задач из источника и названиями таких плиток будут выступать названия этих же задач.
Вариант настройки на примере плитки Ближайшая ВКС встреча:
Текущий шаблон элемента может использоваться для настройки плитки Ближайшая коонференция, позвляющая пользователю подключиться к комнате ВКС, где начнется встреча в ближайшие 15 минут. Данный пример построен с помощью папки dashboardStack, внутри которой помещен task source на основе lua скрипта, где происходит обработка данных с календаря outlook пользователя. [Полный код lua скрипта](../ local LOOK_AHEAD_MINUTES = 15
local MAX_RETURN_COUNT = 1
local from_date = os.date("%Y-%m-%d %H:%M:%S")
local to_date = os.date("%Y-%m-%d %H:%M:%S", os.time() + LOOK_AHEAD_MINUTES*60)
--RESULT = string.len(url)
--do return end
local meetings = SMART:execute_action(\'FindMeetingsByPeriod\', 0, \'task\', {
CalendarOwnerId = SESSION_USER.Id,
From = from_date,
To = to_date
});
--RESULT = meetings
--do return end
local result_meetings = {}
--local function get_net_date(dt)
-- return string.format("%04d-%02d-%02dT%02d:%02d:%02d", dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second)
--end
local function get_time(dt)
return string.format("%02d:%02d", dt.Hour, dt.Minute)
end
local meetCount = meetings.Length
local count = MAX_RETURN_COUNT > meetCount and meetCount or MAX_RETURN_COUNT
local i = 0
local stop = count == 0
while stop == false and i \< meetCount do
local meeting = meetings[i]{.f_CodeExample style="font-style: italic;"}
local skip = meeting.IsCanceled or meeting.IsAllDayEvent
if skip == false then
local text = get_time(meeting.Start) .. " " .. meeting.Title
local location = meeting.Location or \'\'
local len = string.len(location)
local url = string.match(location, \'[a-z+://\^ >,;+\')]{.f_CodeExample style="font-style: italic;"}
local imageName = \'Calendar\'
if len > 0 and string.len(url) == len then
imageName = \'VideoCall\'
else
if len > 0 then
text = text .. \'\n\' .. location
location = \'\'
end
end
table.insert(result_meetings, {
taskId = 1000000000 + i,
subcatID = 1000000000,
subcat = {
rules = {
subcatId = 1000000000,
compactIds = { 1000000000 }
},
subcatID = 1000000000
},
taskText = text,
extParams = {
{
value = text,
id = 1,
type = "Text"
},
{
value = location,
id = 2,
type = "Text"
},
{
value = imageName,
id = 3,
type = "Text"
}
-- {
-- value = get_net_date(meeting.Start),
-- id = 3,
-- type = "DateTime"
-- }
}
})
end
i = i + 1
if #result_meetings >= count then
stop = true
end
end
--RESULT = meetings[0]{.f_CodeExample style="font-style: italic;"}
--do return end
local res = {
templates = {
{
typeId = "dynamic",
id = 1000000000,
content = {
settings = {
onTap = {
action = \'openLink\',
epId = 2
}
},
sections = {
{
blocks= {
{
elements =
{
{
_name = "Заголовок",
type = "extparam",
dataKey = 1,
alias = "title",
viewMode = "valueOnly",
settings = {
fontSize = 20,
fontWeight = "medium",
textColor = "#000"
}
},
{
_name = "Текст",
type = "extparam",
dataKey = 2,
alias = "text",
placeholder = "Подключиться",
viewMode = "valueOnly",
settings = {
fontSize = 17,
textColor = "#606060"
}
},
{
_name = "Иконка",
type = "extparam",
dataKey = 3,
alias = "image",
viewMode = "valueOnly"
}
}
}
}
}
}
}
}
},
categories = {
{ subcatID = 1000000000, rules = { compactIds = { 1000000000 } } }
},
tabs = { { tasks = result_meetings } }
}
RESULT = UTILS:json_encode(res) Горизонтальный блок
В текущем кейсе style = horizontal
Блок может быть абсолютно любой, как в общем дереве дэша.
Выравнивание в стеке идет по центральной линии. Положение иконки фиксированное. Блоки в стеке распределяются равноудаленно.
Есть возможность настроить действие при тапе на стек через onTap.
Новый стиль presentationStyle = small | medium PresentationStyle — это галерея кнопок фиксированного дизайна. То есть МП игнорирует внутренние настройки элементов блока stack в плане декора и берет уже указанные (см ниже).
Значения визуальных свойств для элементов стека:
-
Размер кнопок — 40.
-
Размер иконки внутри кнопки — 20.
-
Радиус закругления — 12.
Остальные декораторы берут из каждого блока внутри стека индивидуально.
В стиле presentationStyle = small | medium размеры полностью определяются содержанием, heightMutiplier не используется.
Настройка вертикального стека для информационной плитки¶
Внутри вертикального стека плиток есть возможность настроить 1+ вложенный блок, указать некоторое число задач для получения с сервера, а также отметить параметр "Специальный шаблон".
В такой конфигурации в отдаче сервера придет указанное(или меньшее) количество задач для отображения в настраиваемом блоке. В случае чекбокса МП получает данные по задачам с их настроенными шаблонами для каждого блока.
Особенности логики отображения:
-
Если приходит пустой массив в блоке, то рисуется 1 ячейка в стеке, в качестве текста берется значение параметра fallBackTitle.
-
Если для плитки внутри стека стоит hideOnZeroCount = 1 и в отдаче приходит нулевой счетчик(нет задач), то такой блок скрывается и не тоображается в МП. Соответственно, если у всех плиток в стеке стоит hideOnZeroCount = 1 и у всех элементов в отдаче приходит нулевой счетчик(нет задач), то такая папка скрывается целиком при отрисовке дэша.
-
Если в плитке пришел не пустой массив задач и hideOnZeroCount = 1, то размеры блока подстраивается под пришедшее количество задач. Ячейки и их размеры под контент задач идентичны.
-
При нажатии на ячейку такого рода происходит переход в карточку задачи.
menu¶
Шаблон экрана меню.
Специфичные ключи (характерные для данного шаблона):
| Специфичные ключи | Описание |
|---|---|
| containerBackgroundColor | Заголовок |
| rightBarButtons | Цвет фона заголовка, выражение вида #000000 Если значение не указано — цвет будет прозрачным |
| showStyle | Ширина в условных единицах |
menuItem¶
Шаблон одного пункта меню.
Специфичные ключи (характерные для данного шаблона):
| Специфичные ключи | Описание |
|---|---|
| cellStyle | Стиль ячейки. Возможные значения default/custom, если не задано — то default. Если в TaskSource стоит cellStyle = default, то он открывается в виде типовых ячеек, если же cellStyle = custom, то каждая ячейка отображается согласно ее шаблону CELL (краткое представление в шаблонизаторе). |
| context | Контекст, который будет браться из настроенного динамического шаблона |
menuSeparator¶
Шаблон разделительной линии между пунктами меню. Не содержит данных и выглядит как пустая ячейка меню высотой 20px
tasksFeed¶
Контейнер для задания содержимого и вида лент задач.
Специфичные ключи (характерные для данного шаблона):
| Специфичные ключи | Описание |
|---|---|
| addButton | \ |
| catId | ID категории |
| cellStyle | Стиль ячейки. Возможные значения default/custom, если не задано — то default. Если в TaskSource стоит cellStyle = default, то он открывается в виде типовых ячеек, если же cellStyle = custom, то каждая ячейка отображается согласно ее шаблону CELL (краткое представление в шаблонизаторе). |
| feedType | Тип ленты задач. Возможные значения: |
-All -Owner -Performer -Favorites -Overdue -Discussions -Created -New -Likes -LastCommented -PinnedToChat -PrivateChat -GroupChat | interactions | \ | | --- | --- | | searchType | Тип поиска по тексту задачи |
Возможные значения:
-like
-fullText
-contains
| showCreateButton | Показывать кнопку создания задачи |
| --- | --- |
| showSearchButton | Показывать иконку лупы, кнопку поиска |
| showTabMenuButton | Кнопка показа popup меню из таббара |
| subcatId | ID категории для создания задачи |
| tickerAlias | Название счетчика. Возможные значения:
-overDueTasksCount
-myQuestionsCount
-unreadCommentsCount
-questionsCount
-questionsCount
-signaturesCount
-directorSignaturesCount
-overdueSigns
-missedCalls
-milestones
-unreadChatCommentsCount
-badge
-allTasksUserOwns
-allTasksUserPerforms
-95 |
| viewMode | Возможные значения:
-default
-calendar |
| topTitle | Альтернативный заголовок в верхнем баре. |
Если он не задан, то берется заголовок такой же как в табке нижнего бара
ℹ️ Типы лент комментов lentaCommTypes:
0 — Все 1 — Непрочитанные 4 — Вопросы мне 3 — Вопросы мои 5 — Избранные 6 — Мои вопросы и ответы на них 7 — Вопросы мне и мои ответы на них taskSourceDashboardItem
Плитка источника данных с возможностью выбора типа отображения списка. Для плиток на всю ширину экрана допустимо вводить не более 2х задач.
Специфичные ключи (характерные для данного шаблона):
| Специфичные ключи | Описание |
|---|---|
| actionStyle | Стиль отображения при нажатии. Возможные значения: -push (переход), -popup (всплывающее окно) |
| autoHeight | Высота определяется автоматически по контенту |
| bgImageUploadId | Изображение фона |
| bgImageURL | URL адрес на изображение фона с анонимным доступом |
| cellCounterFontSize | Размер шрифта счетчика |
| cellIconSize | Размер иконки, значение по умолчанию: 16 Если не заданы в плитке, то берутся из настроек контейнера. |
| cellStyle | Стиль ячейки. Возможные значения default/custom, если не задано — то default. Если в TaskSource стоит cellStyle = default, то он открывается в виде типовых ячеек, если же cellStyle = custom, то каждая ячейка отображается согласно ее шаблону CELL (краткое представление в шаблонизаторе). |
| cellTitleFontSize | Размер шрифта для заголовка, по умолчанию 15 |
| cellTextFontSize | Размер шрифта для текста плитки |
| click | JSON описания нажатий на разные части плитки |
| context | Контекст, который будет браться из настроенного динамического шаблона |
| disabled | выключение нажатия на плитку. |
если 1, то нажатие на плитку ничего не делает.
если 0, то обычное нажатие и дальнейшее проваливание в плитку
| dataSourseUrl | Ссылка на публикацию |
| --- | --- |
| emptyContentTitle | Отображаемый заголовок, если плитка пустая |
| forbidCreateTask | Признак запрета на создание задач
0 — запрета на создание задач нет,
1 — запрет на создание задач есть |
| hideCounter | Возможность скрыть счётчик.
0 — не включено
1 — включено
Если цвет не задан, то он автоматически подтягивается от цвета текста заголовка плитки titleColor
Счетчик идет слева от иконки. если иконки нет — счетчик сдвигается на ее место.
Счетчик отображается в виде тикера — в круге/овале, цвет фона тикера берется как цвет текста счетчика с альфой 0.3 |
| hideOnZeroCount | Признак, который определяет, будет ли плитка отображаться на рабочем столе при нулевом счетчике |
0 — отображается только при ненулевом счетчике, 1 — отображается всегда
Примечание: параметры hideCounter, hideOnZeroCount и badgeItemColor управляют отображением уже полученного счётчика, но не включают его расчёт. Для плиток на основе TaskSource счётчик в общем случае платформой не рассчитывается — подробнее см. Плитка-индикатор на мобильном рабочем столе.
| Специфичные ключи | Описание |
|---|---|
| needConfirm | Ключ, отвечающий за отображение кнопок Отменить/Подтвердить под баннером с текстом с onTapAlert |
Если значение равно 1 и onTapAlert не пустая строка, то вместо алерта показываем конферм с текстом onTapAlert, две кнопки "Отменить" и "Подтвердить". После нажатия Подтвердить просизодит переход в плитку | leftEdgeColor | Цвет левой границы ячеек дашбоарда | | --- | --- | | objectId | ID объекта для открытия | | onTapAlert | Сообщение при нажатии неактивной плитки. Связано с параметром needConfirm. |
При нажатии на плитку появляется алерт с данным текстом (если disabled = 0, то алерт отображается формально и совершается переход в плитку) | objectId | ID объекта для открытия | | --- | --- | | onTapAlert | Сообщение при нажатии неактивной плитки. Связано с параметром needConfirm. |
При нажатии на плитку появляется алерт с данным текстом (если disabled = 0, то алерт отображается формально и совершается переход в плитку)
| parentTaskId | Задача-шаблон, из которой копируется ДП |
| --- | --- |
| showSingleTask | Признак, определяющий отображение плитки, если в списке содержится всего одна задача
0 — отображается плитка со списком из одной задачи,
1 — отображается сама задача |
| showTaskOrCreate | Признак, который определяет поведение при отсутствии задач для отображения
0 — ничего не отображать
1 — создать новую задачу и отобразить ее |
| showTaskOrNTF | Признак, который определяет поведение при отсутствии задач для отображения
showTaskOrCreate у нас имел смысл автоматического создания задачи в категории сорса и открытия ее МТФ.
А showTaskOrNTF означает открыть задачу или же ее НТФ чтобы явно создать эту задачу. |
| slideShow | Признак автоматического прокручивания элементов в виде "карусели" |
| subcatId | ID категории для создания задачи |
| taskTemplateName | Название шаблона задач, содержащихся в отдачи данного источника данных |
Возможные значения: -План развития -Чеклист -Событие | taskFilter | Фильтр (json для task/feeds) | | --- | --- | | tileCornerRadius | Радиус углов плиток, по умолчанию 6 pt | | tileSpacing | Отступ от края экрана | | UrlPath | Ссылка, которая будет открываться по нажатию на плитку. Если не указана, то плитка не кликабельна |
toolbar¶
Шаблон нижнего меню (меню вкладок).
Ключи шаблона:
Название Описание badgeItemColor Цвет элемента значка containerBackgroundColor Цвет фона контейнера в целом itemColor Цвет элемента на таббаре selectedItemColor Цвет выделенного элемента
toolbarItem
Шаблон кнопки нижнего меню.
Специфичные ключи (характерные для данного шаблона):
| Специфичные ключи | Описание |
|---|---|
| addButton | JSON строка для создания модалки с пунктами onTap действий. Пример: {"icon": "GroupChat", "action": "openNewTask", "title": "Групповой чат", "id": 978, "isSeparated": true},{"icon": "Chat", "action": "openNewTask", "title": "Чат", "id": 969},{"icon": "Calendar", "action": "openNewTask", "title": "Встреча", "id": 1507},{"icon": "Task", "action": "openNewTask", "title": "Личная задача", "id": 43350}\ |
| context | Контекст, который будет браться из настроенного динамического шаблона |
| interactions | JSON строка взаимодействия с плитками. |
В нем содержится строка типа:
{"tap": { onTapDto }, "longTap": { onTapDto } }
Например: {"tap": {"action":"openSubcategory", "id":2867 , "title": "Все >"}, "longTap": {"action": "openTaskSource", "dataSourceUrl": "/app/v1.2/api/publications/action/mob-notifications"}}
| objectId | ID объекта для открытия |
| --- | --- |
| parentTaskId | Задача-шаблон, из которой копируется ДП |
| isDefault | Вкладка по умолчанию |
| showTabMenuButton | Показ кнопки popup в таб меню |
| topTitle | Альтернативный заголовок в верхнем баре.
Если он не задан, то берется заголовок такой же, как в заголовке нижнего бара |
| onLongTap | JSON описывающий модалку при длинном нажатии на элемент таббара |
| onTap | JSON onTap actions |
Настройка вкладок чатов
Через таббар в конкретном элементе-папке с id Chats мы можем настроить на одном экране чатов сразу несколько вкладок для отображения задач в виде списков задач.
В качестве содержимого во вкладке может быть либо ID TasksFeed, либо TaskSourceХХ, либо SubcatХХ. Принцип отображения списков задач аналогичен обычным чатам.
По fallBackTitle формируются названия элементов меню. Во всех блоках должны быть cellStyle chat — ячейки в виде чатов. Сортируются списки чатов по дате последнего коммента по умолчанию, то есть, чем позже написан комментарий, тем выше располагается чат в списке.
userProfile
Шаблона для представлений профиля пользователя
Специфичные ключи (характерные для данного шаблона):
| Специфичные ключи | Описание |
|---|---|
| bgImageURL | URL адрес на изображение фона с анонимным доступом |
| cellIconSize | Размер иконки, значение по умолчанию: 16 Если не заданы в плитке, то берутся из настроек контейнера. |
| cellTitleFontSize | Размер шрифта для заголовка, по умолчанию 15 |
| cellTextFontSize | Размер шрифта для текста плитки |
| fallbackTitle | Заголовок плитки |
| groups | ID групп через запятую. Если значения нет, то плитка отображается для всех групп |
В плитках может приходить не пустой массив id групп для параметра groups. Если он непустой, то МП определяет пересечение групп текущего сессионного пользователя и массива groups. Если пересечение пустое, то такие элементы не отображаются на экране.
ℹ️ Обратите внимание: отображение блоков для пользователя не меняется в период замещения, блоки доступны пользователю только в соответствии с правами для групп, в которых он состоит.
| Специфичные ключи | Описание |
|---|---|
| headerBackgroundColor | Цвет фона заголовка, выражение вида #000000 |
Если значение не указано — цвет будет прозрачным | heightMultiplier | Высота плитки в условных единицах | | --- | --- | | icon | Признак автоматического прокручивания элементов в виде "карусели" | | iconColor | ID категории для создания задачи | | showVCardQR | Показать QR код VCard на профиль текущего пользователя. |
showVCardQR = 1 дает нам понять, что нужно открывать при нажатии QR коде с визиткой Если showVCardQR = 0, то просто открывается профиль для аккаунта данного дэша. | tileCornerRadius | Радиус углов плиток, по умолчанию 6 pt | | --- | --- | | tileSpacing | Отступ от края экрана | | titleColor | Цвет заголовка плитки, выражение вида #000000 или список для выбора таких преднастроенных значений | | verticalGradientColor | Вертикальный градиент в плитке, строка вида #00000066 (или #0006) | | widthRatio | Ширина в условных единицах |
Общий список ключей в шаблонах
| Ключ | Описание | Возможные значения |
|---|---|---|
| addButton | JSON для обозначения действий onTap при нажатии на иконку плюса в категории. | "addButton": \ {"action": "openNewTask", "id": 3020, "context": "cat+text"}\ |
| actionStyle | Стиль отображения при нажатии | Возможные значения: -push (переход), -popup (всплывающее окно) |
| autoHeight | Высота определяется автоматически по контенту | -0 -1 |
| allowPreviewInteraction | С помощью данного параметра определяется взаимодействие с контентом. Если 1, то пользователь может взаимодействовать с контентом (previewURL) внутри фрейма (блока на дэше) — любые нажатия будут происходить внутри фрейма, даже переходы по ссылкам. |
0 или 1 |
| badgeItemColor | Цвет элемента значка | строка |
| bgImage | Изображение фона | строка |
| bgImageURL | URL андрес на изображение фона с анонимным доступом | строка |
| bgImageUploadId | UploadId хранящегося на сервере изображения фона с анонимным доступом | число |
| catId | ID категории | \ |
| cellCounterFontSize | Размер шрифта счетчика | по умолчанию 15 |
| Если не заданы в плитке, то берутся из настроек контейнера. | ||
| cellIconSize | Размер иконки | по умолчанию 16 Если не заданы в плитке, то берутся из настроек контейнера. |
| cellStyle | Стиль ячейки | Возможные значения default/custom. если не задано — то default. |
Если в task source стоит cellStyle = default, то мы его открывает ровно как сейчас — типовые ячейки
Если же cellStyle = custom, то мы должны каждую ячейку показать согласно ее шаблону CELL (краткое представление в шаблонизаторе).
| cellTitleFontSize | Размер шрифта для заголовка | по умолчанию 15 |
| --- | --- | --- |
| cellTextFontSize | Размер шрифта для текста задач | \ |
| click | JSON описания нажатий на разные части плитки | строка |
| colCount | Число колонок | строка |
| containerBackgroundColor | Цвет фона контейнера в целом | выражение вида #000000 или список для выбора таких преднастроенных значений
если значение не указано — цвет остаётся белым |
| context | Контекст, который будет браться из настроенного динамического шаблона | строка |
| dataSourceUrl | Ссылка на публикацию | строка |
| emptyContentTitle | Отображаемый заголовок, если плитка пустая | строка |
| excludeSubcatIds | Список категорий для исключения из показа | строка |
| extParamFilters | \ | строка |
| extParamLink | \ | число |
| fallBackText | Вторая строка текста в плитке, после заголовка | строка |
| fallBackTitle | Заголовок плитки | строка
Если поле оставлено пустым, то заголовок плитки может формироваться автоматически исходя из названия категории, профиля пользователя или иных источников данных |
| feedType | Типы лент задач | Возможные значения: |
| | | -All |
| | | -Owner |
-Performer
-Favorites
-Overdue
-Discussions
-Created
-New
-Likes
-LastCommented
-PinnedToChat
-PrivateChat
-GroupChat
MyQuestionsAndAnswers = 6
QuestionToMeAndAnswers = 7
| footerTitle | Текст подвала (нижней части) | строка |
| --- | --- | --- |
| forbidCreateTask | Признак запрела на создание задач | 0 — запрета на создание задач нет,
1 — запрет на создание задач есть |
| groups | Группы, для которых виджет должен отображаться | ID групп через запятую. |
Если значения нет, то плитка отображается для всех групп
В плитках может приходить не пустой массив id групп для параметра groups. Если он непустой, то МП определяет пересечение групп текущего сессионного пользователя и массива groups. Если пересечение пустое, то такие элементы не отображаются на экране.
ℹ️ Обратите внимание: отображение блоков для пользователя не меняется в период замещения, блоки доступны пользователю только в соответствии с правами для групп, в которых он состоит.
| headerBackgroundColor | Цвет фона заголовка | выражение вида #000000
если значение не указано — цвет будет прозрачным |
| heightMultiplier | Высота плитки в условных единицах | целое или десятичное число1 условная единица — это 1/3 ширины экрана в режиме "портрет".
В случае шаблона dashboardStack значение параметра определяется как сумма всех блоков внутри папки |
| hideCounter | Возможность скрыть счётчик | 0 — не включено
1 — включено
Если цвет не задан, то он автоматически подтягивается от цвета текста заголовка плитки titleColor
Счетчик идет слева от иконки. если иконки нет — счетчик сдвигается на ее место.
Счетчик отображается в виде тикера — в круге/овале, цвет фона тикера берется как цвет текста счетчика с альфой 0.3 |
| hideOnZeroCount | Признак, который определяет, будет ли плитка отображаться на рабочем столе при нулевом счетчике | 0 — отображается только при ненулевом счетчике,
1 — отображается всегда |
| icon | Название одного из преднастроенных значков, который будет отображаться на плитке | icon and iconColor переопределяются в плитке, и если не заданы, то их значения смотрит в template уровня выше. |
Возможные значения:
-DBAdvertising
-DBAgreement
-DBAirport
-DBAlarmClock
-DBBarcode
-DBBeginner
-DBBinoculars
-DBBookmark
-DBBox
-DBBoxImportant
-DBBriefcase
-DBBusiness
-DBCalendar
-DBCalls
-DBCategory
-DBChats
-DBCheckAll
-DBChecked
-DBChip
-DBChoice
-DBClock
-DBCoins
-DBCollaboration
-DBCollapse
-DBCollect
-DBComments
-DBConference
-DBConnect
-DBContacts
-DBCreate
-DBCurrencyExchange
-DBDocumentary
-DBDownloadFromTheCloud
-DBEdit
-DBError
-DBEvents
-DBExample
-DBExchange
-DBExclamationMark
-DBFile
-DBGamepad
-DBGood
-DBHandshake
-DBHighImportance
-DBHome
-DBIcons8
-DBIdea
-DBInstagram
-DBInstagramOld
-DBInTransit
-DBKey
-DBLeaderboard
-DBLink
-DBLogistics
-DBManager
-DBManual
-DBMaterials
-DBMedal
-DBMedia
-DBMySpace
-DBMySpace3
-DBMySpaceApp
-DBNewProduct
-DBNews
-DBOk
-DBOpenedFolder
-DBParticipants
-DBPen
-DBPlus
-DBProjects
-DBPuzzle
-DBQRCode
-DBQuestionIn
-DBQuestionMark
-DBQuestionOut
-DBReddit
-DBRate
-DBReport
-DBRestart
-DBRestaurant
-DBSearch
-DBSellProperty
-DBShare
-DBSign
-DBSmileQuestion
-DBStructure
-DBSun
-DBSupport
-DBSwot
-DBSynchronize
-DBTasks
-DBThink
-DBTickBox
-DBTinder
-DBToolbox
-DBTraining
-DBTreeStructure
-DBTwitter
-DBUncheckAll
-DBVideoCall
-DBWallet | iconColor | Цвет иконки | строка | | --- | --- | --- | | interactions | JSON строка взаимодействия с плитками | В нем содержится строка типа: |
{"tap": { onTapDto }, "longTap": { onTapDto } }
Например:
{"tap": {"action":"openSubcategory", "id":2867 , "title": "Все >"}, "longTap": {"action": "openTaskSource", "dataSourceUrl": "/app/v1.2/api/publications/action/mob-notifications"}}
| includeSubcatIds | Список категорий для показа | строка |
| --- | --- | --- |
| isAnimated | \ | 0 — не включено
1 — включено |
| isButton | Кнопка | Используется в шаблоне dashboardCustomURL.
0 — по нажатию на блок ссылка открывается,
1 — по нажатию на блок ссылка выполняется. Имеет смысл, если в качестве ссылки задан адрес публикации с пакетом действий (запускается асинхронный запрос по указанной ссылке) |
| isDefault | Вкладка по умолчанию | 0 — не включено |
1 — включено
| itemColor | Цвет вкладки | строка |
| --- | --- | --- |
| leftEdgeColor | Цвет левой границы ячеек дашбоарда | строка |
| listDescription | \ | строка |
| objectId | ID объекта для открытия | \ |
| onLongTap | Удерживание нажатия | строка |
| onTap | JSON для обозначения действий при нажатии на ячейку задачи в категории | "onTap": {"action": "openTask",
"context": "cat+text"} |
| openInBrowser | Открытие ссылок вне МП (в браузере) | 0 — не включено |
1 — включено | parentTaskId | Задача шаблон, из которой копировать ДП | число | | --- | --- | --- | | phone | Номер телефона для звонка в формате +74951234567 | строка | | previewURL | Ссылка для отображения webView внутри плитки (может и совпадать с URLPath) | строка |
Вся верстка будет приходить в таком случае с сайта по указанной ссылке | rightBarButtons | JSON onTap | строка | | --- | --- | --- | | searchType | Тип поиска по тексту задачи | Возможные значения: |
-like
-fullText
-contains
| selectedItemColor | Цвет выделенной вкладки | строка |
| --- | --- | --- |
| separatorColor | Задание цвета сепаратора в квадратном стеке | выражение вида #000000 |
| showAcceptAll | Показ кнопки "Подписать все" в списке подписей (кнопка отображается если подписей больше 1). | Используется в шаблоне dashboardSignatures.
по нажатию кнопки выносится резолюция "Согласовать" по всем подписям, которые в момент нажатия отображаются в списке (например, если включен отбор по категориям, то будут согласованы только отобранные подписи). | 0 — не включено |
после нажатия кнопки запрашивается дополнительное подтверждение | 1 — включено | |
| showCategoryFilter | Показ кнопки отбора подписей по категориям. | 0 — не включено
Можно выбрать одну или несколько категорий, и тогда в списке останутся только подписи, запрошенные в этих категориях | 1 — включено | |
| showCreateButton | Показ кнопки "создать" | 0 — не включено
1 — включено |
| showExtraInfo | Показ доп. информации в рейтинге | 0 — не включено
1 — включено |
| showIconCircle | Показ круга вокруг иконки | 0 — не включено |
1 — включено
| showNotificationsBarButton | Показа панели уведомлений | строка |
| --- | --- | --- |
| showRatingBars | Показ рейтинга | строка |
| showSearchButton | Показ кнопки поиска | 0 — не включено
1 — включено |
| showSeparators | Показ разделителей между элементами | 0 — не включено
1 — включено |
| showSingleTask | Признак, определяющий отображение плитки, если в списке содержится всего одна задача | 0 — отображается плитка со списком из одной задачи,
1 — отображается сама задача |
| showStyle | Тип анимации | Возможные значения:
-expand — элемент возникает
-push — элемент появляется снизу |
| showTabMenuButton | Показ кнопки popup в таб меню | 0 — не включено
1 — включено |
| showTaskOrCreate | Признак, который определяет поведение при отсутствии задач для отображения | 0 — ничего не отображать
1 — создать новую задачу и отобразить ее
showTaskOrCreate позволяет автоматически создать задачу в категории источнике и открыть ее карточку |
| showTaskOrNTF | Признак, который определяет поведение при отсутствии задач для отображения | showTaskOrNTF позволяет открыть задачу или же карточку ее создания |
| showTileBorderShadow | Отображение тени для виджета на рабочем столе | 0 — не отображать
1 — отображать |
| showVCardQR | Показать QR код VCard на профиль текущего пользователя | 0 — не включено
1 — включено |
| slideShow | Признак автоматического прокручивания элементов в виде "карусели" | 0 — не включено
1 — включено |
| style | Для шаблона dashboardStack — расположение элементов в блоке | Возможные значения: |
-vertical
-horizontal
-square
| subcatId | ID категории для создания задачи | число |
| --- | --- | --- |
| taskFilter | Фильтр (json для task/feeds) | строка |
| taskTemplateName | Название шаблона задач, содержащихся в отдачи данного источника данных | Возможные значения:
-План развития
-Чеклист
-Событие |
| text | Текст, накладываемый поверх медиа контента | строка |
| textColor | Цвет текста в блоке | выражение вида #000000 |
| tickerAlias | Название счетчика | Возможные значения: |
-overDueTasksCount
-myQuestionsCount
-unreadCommentsCount
-questionsCount
-overDueTasksCount
-signaturesCount
-directorSignaturesCount
-overdueSigns
-missedCalls
-milestones
-unreadChatCommentsCount
-badge
-allTasksUserOwns
-allTasksUserPerforms
-95
| tileCornerRadius | Радиус углов плиток (по умолчанию 6 pt) | строка |
| --- | --- | --- |
| tileSpacing | Отступ от края экрана | строка |
| title | Заголовок | строка |
| titleColor | Цвет заголовка виджета | выражение вида #000000 или список для выбора таких преднастроенных значений |
| tileCornerRadius | Радиус закругления углов плиток | число |
| topTitle | Альтернативный заголовок в верхнем баре. Если он не задан, то берется заголовок такой же, как в табе нижнего бара | строка |
| type | Тип ключа настроек | \ |
| URLPath | Ссылка, которая будет открываться по нажатию на плитку | строка со ссылкой относительно приложения |
| value | Значение ключа настроек | строка |
| verticalGradientColor | Вертикальный градиент в плитке | строка вида #00000066 (или #0006) |
| viewMode | Режим отображения | Возможные значения:
-default
-calendar |
| widthRatio | Ширина в условных единицах | Всего в один ряд по горизонтали можно расположить не более трех плиток. Поэтому 1 условная единица — это 1/3 ширины экрана в режиме "портрет". |
Возможные значения для ширины плитки:
-1 — плитка в 1/3 ширины экрана;
-1.5 — плитка в 1/2 ширины экрана;
-2 — плитка в 2/3 ширины экрана;
-3 — плитка в полную ширину экрана;
-4 — плитка в полную ширину дашборда. Может быть больше ширины экрана, и тогда используется "листание". Используется, например, для плитки "карусель" ("барабан").
По умолчанию значение равно 1 Локализация мобильного приложения
Локализация мобильного приложения выполняется по тем же принципам, что и локализация веб-интерфейса.
Если для ключа в шаблоне включена опция в колонке Локализуемый, то для контейнера, созданного на основе данного шаблона, напротив ключа будет отображаться значок локализации. По нажатию на значок отображается окно для ввода значений ключа на всех языках, которые поддерживаются в системе. Когда пользователь выбирает язык интерфейса мобильного приложения, значения локализуемых ключей отображаются на указанном языке.
Описание настроек шаблонов блоков в прежнем интерфейсе администрирования