Получение списка объектов, которые должны быть отображены на Kanban-доске
{
"ApiKey": "",
"ApiVersion": "100",
"ModuleId":"",
"Method": "Kanban.GetObjects",
"UserKey":"37a26a08-4ead-4f69-a780-4ade7ff01561",
"Parameters":
{
KanbanViewCode:"код kanban-доски",
Filter:{"txtSmartFilter":"белоусов", "ddlOverdue":"1,2"}
}
}
Допустимые коды канбан-досок можно получить в конфигурации системы в секции KanbanViews каждого модуля. Если модуль НЕ поддерживает канбан-доски, то данная коллекция будет NULL. В качестве кода в значение StringParamValue запроса подставляем значение KanbanViewCode из конфигурации.
Дополнительно можно передать объект Filter, в котором определить условия фильтрации элементов канабан—доски. Для каждой из доски поддерживается свой список параметров, и его необходимо уточнить у разработчиков. В примере запроса приведен фильтр для доски “Мои задачи”. Любое значение фильтра является не обязательным.
{
"Title": "Мои задачи",
"Id": "KanbanTasks",
"PrimaryColor": "",
"SecondaryColor": "",
"BaseObjectType": 0,
"IsTableModule": false,
"IgnoreAccessRights": true,
"UseAsBaseTypeModule": true,
"Columns": null,
"DefaultSortColumn": "",
"DefaultSortDirection": 0,
"KanbanViews": [
{
"Title": "Группировка по статусу и дате",
"KanbanViewCode": "Kanban.Tasks.GroupByStateAndTime",
"Columns": [
{
"Title": "Задачи для меня",
"Color": "",
"Code": "UserPotentialTasks",
"Items": null
},
{
"Title": "Новый задачи",
"Color": "",
"Code": "UserNewTasks",
"Items": null
},
{
"Title": "Просрочено завершение",
"Color": "",
"Code": "UserOverdueTasks",
"Items": null
},
{
"Title": "Задачи на сегодня",
"Color": "",
"Code": "UserTodayTasks",
"Items": null
},
{
"Title": "Задачи на завтра",
"Color": "",
"Code": "UserTomorrowTasks",
"Items": null
},
{
"Title": "Начну позже",
"Color": "",
"Code": "UserTomorrowTasks",
"Items": null
}
]
}
]
}
В ответе будут возвращены все столбцы канбан-доски, и для каждого столбца в коллекции Items будут находится доступные для отображения карточки объектов. Каждый элемент канбан-доски в обязательно порядке будет иметь следующие поля:
public interface IKanbanDto
{
/// <summary>
/// Поле заголовка, которое отображается в карточке
/// </summary>
Classes.FieldViewDto KanbanHeader { get; set; }
/// <summary>
/// Код столбца, которому принадлежит объект
/// </summary>
string KanbanColumnCode { get; set; }
/// <summary>
/// Массив полей, которые необходимо вывести в карточку объекта
/// </summary>
XL.Base.Modules.DtoFactory.Classes.FieldsView.GroupViewDto KanbanFields { get; set; }
/// <summary>
/// Основная команда для выполенения в карточке
/// </summary>
CommandDto KanbanPrimaryCommand { get; set; }
}
<aside> 💡 ВАЖНО! для каждой доски структура возвращаемых объектов может иметь дополнительные поля, необходимые для функционирования той или иной доски. Например, в приведенном ниже примере каждый объект содержит дополнительное поле StatusField
</aside>
{
"Result": {
"Title": "Группировка по статусу и дате",
"KanbanViewCode": "Kanban.Tasks.GroupByStateAndTime",
"TotalCount": 1,
"Columns": [
{
"Title": "Задачи для меня",
"Color": "",
"Code": "UserPotentialTasks",
"Items": []
},
{
"Title": "Новый задачи",
"Color": "",
"Code": "UserNewTasks",
"Items": [
{
"KanbanColumnCode": "UserNewTasks",
"Status": 1,
"StatusField": {
"Title": "",
"Code": "Status",
"Value": "Новая",
"CustomColor": "",
"SystemColor": 4,
"IsBold": false,
"FieldType": 0,
"ColSpan": 1
},
"KanbanFields": {
"Title": "",
"Code": "",
"Fields": [
{
"Title": "Автор",
"Code": "AuthorName",
"Value": "тест1 тест1",
"CustomColor": "",
"SystemColor": -1,
"IsBold": false,
"FieldType": 0,
"ColSpan": 1
},
{
"Title": "Просрочено",
"Code": "DeadlineStatusString",
"Value": "завершение",
"CustomColor": "",
"SystemColor": 1,
"IsBold": false,
"FieldType": 0,
"ColSpan": 1
},
{
"Title": "Завершить",
"Code": "ExpectedСompletionDateTime",
"Value": "20.06.2023 16:06",
"CustomColor": "",
"SystemColor": 1,
"IsBold": false,
"FieldType": 0,
"ColSpan": 1
},
{
"Title": "",
"Code": "CommonDescription",
"Value": "фываыфаыфвва",
"CustomColor": "",
"SystemColor": -1,
"IsBold": false,
"FieldType": 5,
"ColSpan": 1
}
]
},
"KanbanHeader": {
"Title": "",
"Code": "KanbanHeader",
"Value": "задачу завершить позже",
"CustomColor": "",
"SystemColor": 1,
"IsBold": false,
"FieldType": 0,
"ColSpan": 1
},
"KanbanPrimaryCommand": {
"Title": "старт",
"Code": "taskStart"
},
"DtoViewType": 4,
"Flags": null,
"BaseObjectId": 10019,
"BaseObjectDate": "01.01.1900 00:00:00",
"BaseObjectType": 11,
"BaseObjectName": "задачу завершить позже"
}
]
},
{
"Title": "Просрочено завершение",
"Color": "",
"Code": "UserOverdueTasks",
"Items": []
},
{
"Title": "Завершить сегодня",
"Color": "",
"Code": "UserTodayTasks",
"Items": []
},
{
"Title": "Завершить завтра",
"Color": "",
"Code": "UserTomorrowTasks",
"Items": []
},
{
"Title": "Завершить позже",
"Color": "",
"Code": "UserAfterTomorrowTasks",
"Items": []
}
]
},
"ApiKey": "",
"ApiVersion": "100",
"Method": "Kanban.GetObjects",
"Errors": [],
"Duration": 765.9604
}
Обратите внимание, что для каждого элемента в списке есть свойство KanbanColumnCode в котором дополнительно явным образом прописывается код столбца, которому принадлежит тот или иной элемент. Данная опция становится критичной при изменении на сервере какого-либо свойства элемента, в ответ на которое будет возвращен DTO-объект, с уже установленным значение в KanbanColumnCode.
Рассмотрим указанный сценарий на примере канбан-доски задачи. Есть задача которая находится в статусе новая задача в столбце UserNewTasks (новые задачи). При старте этой задаче (выполнении метода Tasks.StartTask) статус объекта будет изменен на сервере и возвращенный объект будет иметь в поле KanbanColumnCode новое значение UserTodayTasks. Таким образом клиентское приложение может динамически изменять столбец у элемента после его изменения на сервере.