Канбан — Администрирование¶
Что настраивается¶
Админ-контур канбана состоит из трех блоков:
- включение канбана как представления категории;
- настройка карточки и поведения доски через шаблон задач;
- ~~настройка пользовательского канбана через публикации~~ (устарело, не поддерживается).
1. Типовой канбан категории¶
Канбан категории доступен по URL:
~/spa/tasks/subcat/{subcatId}/kanban- legacy-формат:
~/spa/kanban/subcat/{subcatId}
Что контролируется настройками категории:
- доступность представления "Канбан";
- маршрут и статусы, из которых строятся колонки;
- права на принудительную смену статуса;
- параметры, доступные для фильтрации/группировки.
2. Шаблон карточки канбана¶
Шаблон настраивается через "Шаблоны задач" (динамический шаблон, контекст kanban).
Ключевые параметры:
templateClass: "kanban"-- тип шаблона;showHeaderColors-- включение/выключение цветных заголовков статусов;leftBorder-- цветовая левая обводка карточки;groupings-- список доступных группировок и признак default-группировки;aggregations-- агрегаты по числовым/денежным ДП (sum/avg/max/min).
В карточке настраиваются блоки:
headerиfooter-- предопределенные блоки;body-- динамический вывод ДП и системных полей.
2.1 Элементы блоков header и footer¶
Каждый элемент блока описывается JSON:
{ "type": "mainParam"|"extparam", "dataKey": "..."|123, "alias": "...", "viewMode": "...", "settings": {} }
type—mainParam(системный параметр) илиextparam(ДП);dataKey— дляmainParamключ системного поля; дляextparam— ID ДП;alias— роль элемента в блоке (см. таблицы ниже).
Alias для header:
| Alias | Описание | Ключевые settings |
|---|---|---|
title |
Заголовок — текст задачи (dataKey: "taskText") |
— |
headerCounter |
Индикатор с количеством задач | color, emphasis |
subtitle |
Подзаголовок, вторая строка | — |
mainTag |
Главный тег | color |
tags |
Теги задачи (из viewTags) |
— |
headerDate |
Срок задачи | — |
cover |
Обложка карточки | showEmptyCover, ratioWH |
cardIdentifier |
Номер задачи (dataKey: "taskId") |
prefix |
Alias для footer:
| Alias | Описание | Ключевые особенности |
|---|---|---|
avatar |
Аватар карточки (из ДП-файла) | dataKey = ID ДП с типом «Файл» |
priority |
Приоритет | valueMapper для кастомных подписей |
users |
Пользователи (исполнители, ДП-выбор пользователей) | viewMode: "table" обязателен |
cardIdentifier |
Номер задачи | settings.prefix добавляет префикс (напр. #) |
totalSubtasks |
Общее количество подзадач | Поддерживает extparam с типом «Число» |
activeSubtasks |
Количество активных подзадач | Аналогично totalSubtasks |
totalSubtasks и activeSubtasks также поддерживают значения из ДП с типом «Число»: "type": "extparam", "dataKey": {ID ДП}, alias остаётся без изменений.
Параметры settings для элемента headerCounter:
| Параметр | Значения | Описание |
|---|---|---|
color |
primary accent info success warning fav danger error default blackWhite |
Цвет индикатора |
emphasis |
accent container |
Акцент индикатора |
Параметры settings для элемента cover:
| Параметр | Тип | Описание |
|---|---|---|
showEmptyCover |
bool | Обязательный: true — показывать пустую обложку |
ratioWH |
string | Соотношение сторон: 16:9 или 1:1 |
Параметры settings для элемента priority (footer):
valueMapper позволяет задать кастомные подписи для уровней приоритета:
"settings": {
"valueMapper": { "0": "low", "3": "high" }
}
2.2 Элементы блока body¶
Блок body — динамический: отображаются только те ДП, в которых есть значение. Для каждого элемента обязателен параметр viewMode.
Значения viewMode:
| Значение | Описание |
|---|---|
normal |
Названия параметров строкой выше значений |
compact |
Названия слева от значений (по умолчанию) |
valueOnly |
Только значения, без названий |
one |
Параметры не отображаются |
table |
Табличный вид (для пользователей; в settings: showUserStatus: true для статуса «как в ленте») |
icon |
Иконка слева вместо названия (требует settings.icon) |
iconSet |
Для Multilookup — иконки задач вместо текста; showColor: true окрашивает по цвету задачи |
tags |
Lookup/Multilookup в виде тегов; showIcon и showColor управляют иконкой/цветом задачи |
Параметры settings для элементов body:
| Параметр | Тип | Описание |
|---|---|---|
icon |
string | Иконка при viewMode: icon (из /spa/content-icons) |
truncate |
bool | Обрезка текста троеточием (true — по умолчанию) |
showUserStatus |
bool | Статус пользователя при viewMode: table |
showIcon |
bool | Иконка задачи в тегах при viewMode: tags |
showColor |
bool | Цвет задачи в тегах при viewMode: tags; при использовании в leftBorder — автоматическое определение цвета |
2.3 Секция settings шаблона¶
В settings внутри contexts[] задаются глобальные настройки карточки канбана:
leftBorder— левая обводка;showHeaderColors— цветные заголовки статусов;groupings— группировки;aggregations— агрегаты по числовым/денежным ДП;sortings— сортировка карточек внутри колонки.
showHeaderColors¶
По умолчанию true (цвета статусов из настроек маршрута). Завершающие статусы всегда зелёные, отклоняющие — красные; изменение цвета для них недоступно. false — все статусы серые.
leftBorder¶
Настраивается как элемент с source/mainParam. Два режима:
-
Ручной — через
dynamicSettingsсо значениями и цветами:"leftBorder": { "type": "mainParam", "dataKey": "priority", "alias": "leftBorder", "dynamicSettings": { "0": { "color": "var(--base-info)" }, "3": { "color": "var(--base-danger)" } } } -
Автоматический — через
"settings": { "showColor": true }: - для
dataKey: "priority"— все 5 уровней приоритета; - для Lookup-полей — цвет значения (
taskColor); dynamicSettingsв этом режиме игнорируется.
Минимальная настройка:
"leftBorder": {
"type": "mainParam", "dataKey": "priority",
"alias": "leftBorder",
"settings": { "showColor": true }
}
groupings¶
Список доступных группировок. Элемент с "settings": { "isDefault": true } — группировка по умолчанию при открытии канбана.
Если groupings не задан, в выпадающем списке по умолчанию доступны: Исполнители, Заказчик, Срок, Дата создания, Дата изменения.
Пример:
"groupings": [
{
"type": "mainParam", "dataKey": "performers",
"name": "Исполнители",
"settings": { "isDefault": true }
}
]
aggregations¶
Сумма, среднее, максимум, минимум по числовым/денежным ДП. Параметры:
| Параметр | Описание |
|---|---|
column |
ID ДП в формате ExtParam{ID} |
name |
Отображаемое имя |
operation |
sum avg max min |
postfix |
Текст после значения |
separator |
Разделитель между агрегациями |
Пример:
"aggregations": [
{ "column": "ExtParam12872", "name": "Efforts(сумма)", "operation": "sum", "postfix": "сум", "separator": "/" },
{ "column": "ExtParam12872", "name": "Efforts(среднее)", "operation": "avg", "postfix": "ср" }
]
sortings (v2.259+)¶
Сортировка карточек внутри колонки. Задаётся на уровне конфигурации канбана, без пользовательского переключателя. Поддерживает множественные правила — второе правило применяется к карточкам, равным по первому, и т.д.
Параметры элемента сортировки:
| Параметр | Описание |
|---|---|
type |
mainParam или extParam |
dataKey |
Ключ системного поля или ID ДП |
name |
Отображаемое имя |
settings.direction |
asc (по возрастанию) или desc (по убыванию) |
settings.isDefault |
Признак сортировки по умолчанию (может быть несколько — все применяются последовательно) |
Ограничения:
- сортировка действует внутри колонки, порядок колонок не меняется;
- если сортировка не задана — используется порядок от источника данных;
- при настроенной сортировке перетаскивание карточек внутри колонки отключено (карточка возвращается на исходную позицию);
- параметр сортировки не должен передаваться в запрос получения данных, если настройка не выбрана.
Пример:
"sortings": [
{
"type": "mainParam", "dataKey": "order",
"name": "Порядок", "settings": { "direction": "desc" }
},
{
"type": "extParam", "dataKey": 76690,
"name": "Фича", "settings": { "isDefault": true, "direction": "desc" }
}
]
3. Канбан по Lookup-полю¶
Админ может переключить построение канбана с маршрута на конкретный Lookup-параметр.
Особенности:
- порядок колонок задается настройкой Lookup "Колонка сортировки";
- при переносе карточки меняется значение Lookup;
- появляется колонка "Не заполнено" для пустых значений.
4. Пользовательский канбан на публикациях (устаревший способ)¶
⚠️ Устарело. Настройка через публикации больше не поддерживается. Кастомный канбан настраивается через шаблон задач (см. раздел 2).
Канбан вызывается по URL:
~/spa/kanban/{publicationAlias}
Нужно настроить 3 публикации:
- публикация структуры (
columns,rows,templates, ссылки на data/move); - публикация данных;
- публикация перемещения карточки между колонками/строками.
Ключевые элементы структуры:
columns-- колонки сmovableFrom/movableTo,template,showArrow;rows-- строки доски, опционально сmovableFrom/movableTo;dataSet-- URL публикации данных;moveWebRequest-- URL публикации перемещения.
Важно:
- права на публикации должны быть настроены отдельно;
- ограничение прав на move можно сделать через доступ к публикации перемещения.
Типовые мисконфигурации¶
-
Канбан не отображается в категории:
-
не включено представление "Канбан" в настройках категории;
-
у пользователя нет прав на категорию.
-
Колонки не соответствуют ожиданиям:
-
основной маршрут не настроен или настроен не тот;
-
выбран режим канбана по Lookup, а не по маршруту.
-
Карточка выглядит "по-старому":
-
шаблон задач не привязан в шаблонизации категории;
-
контекст шаблона задан не как
kanban. -
Drag-and-drop не работает:
-
в пользовательском канбане не задан
moveWebRequest; - нет прав на публикацию перемещения;
- в типовом канбане переход запрещен маршрутом/правами.
Связанные контуры¶
Шаблон карточки галереи¶
Представление категории «Галерея» использует конструктор шаблона, аналогичный канбан-шаблону: те же блоки header/body/footer, элементы, viewMode, settings. Отличия:
context: "gallery"(вместо"kanban");templateClass: "gallery";- уникальный параметр
bootstrapSize(sm/md/lg), влияющий на минимальное количество элементов в строке и размер карточек (sm— до 6 элементов в ряду).
Канбан не является владельцем context: "gallery": переносить в этот файл таблицы параметров галереи не нужно, потому что они дублируют конструктор карточки и отличаются только контекстом и размером bootstrap-сетки.
Подробнее о представлениях списков задач — grids/admin.md; полный перенос галереи должен жить в домене grids/gallery, а в kanban остаётся только эта связь, чтобы не смешивать разные представления.
Мобильный дашборд (Dashboard-контейнер)¶
Функциональность мобильного дашборда (AllDashboards, Dashboard-контейнер с плитками/баннерами/стеками, Избранное в дашборде) не относится к домену kanban. Это сквозная функциональность мобильного клиента, администрируемая через контейнеры мобильного приложения.
→ Ожидает выделения в отдельный домен
dashboards/admin.md. Вkanban/admin.mdоставлены только аннотации фактов (alldashboards.md,api_dashboard.md,fav_dashboard.md) для целостности картины.