Создание новой доски для приложения "Интерактивная доска" 2.8.0 и выше
Описание настройки
Для каждой доски используется своя функция.
Настройка доски включает в себя несколько частей:
- Объекты, которые будут отображаться на доске.
- Соответствие параметров объекта и элементов плашки объекта на доске.
- Настройку столбцов и дорожек доски.
Место настройки в интерфейсе
Интерфейс администратора.
Раздел "Настройка системы" → "Каталог скриптов и модулей" → "Каталог модулей" → Модуль kanboardParams.
Форма редактирования модуля, см. Редактирование модуля.
Выполнение настройки
Создание доски
-
Функция для построения доски:
Copyfinal KanboardParams serviceCallByStatus = new KanboardParams
Для создания новой доски:
-
Скопируйте функцию, соответствующую желаемому типу доски (разбивка столбцов по статусу, по ответственному, по дедлайну).
Примеры типов досок, см. Преднастроенные доски из скриптового модуля приложения "Интерактивная доска" 2.8.0 и выше.
- Дайте новое название функции и настройте новую доску.
Добавление кода контента
-
Код контента, для которого строится доска:
CopycontentCode: 'statusBoard',Значение параметра должно совпадать с кодом контента, в котором будет выведена доска с данной настройкой.
Настройка доски
Настройка доски — это настройка значений параметров класса KanboardParams. Если значение параметра не будет задано вручную, используется его значение по умолчанию, см. Описание классов скриптового модуля приложения "Интерактивная доска" 2.8.0 и выше.
Настройка каждой доски включает в себя несколько частей:
-
Объекты, которые будут отображаться на доске.
Например, вывод на доску запросов может быть задан с помощью метода utils.find или api.db.query.
Пример с использованием utils.find:
Copyitems: { String subjectUuid ->
return utils.find('serviceCall', ['responsibleTeam':subjectUuid, 'state': op.in('registered', 'inwork', 'wait', 'closed')])},Пример с использованием api.db.query:
Copyitems : { String subjectUuid ->
def query = api.db.query(
"""
FROM serviceCall WHERE state IN :states AND responsibleTeam.id = :subjectUuid
"""
)
def params = [
'states' : ['registered', 'inwork', 'wait', 'closed'],
'subjectUuid' : subjectUuid
]
query.set(params)
return query.list()
}, -
Соответствие параметров объекта и элементов плашки объекта на доске.
Copydescription: { String subjectUuid, ISDtObject item ->item.hasProperty('descriptionRTF') ? api.string.htmlToText(item.descriptionRTF) : null},
deadline: {String subjectUuid, ISDtObject item -> item.hasProperty('deadLineDate') ? item.deadLineDate.deadLineTime :null}, -
Настройку столбцов доски.
CopycolumnParams: { String subjectUuid ->
return [
new ColumnParam(
title: 'Новые',
linkValues: ['registered']
),
new ColumnParam(
title: 'В работе',
linkValues: ['inwork'],
color: '#E08A85'
),
new ColumnParam(
title: 'Отложен',
linkValues: ['wait'],
color: '#DDC688'
),
new ColumnParam(
title: 'DONE',
linkValues: ['closed'],
color: '#008000'
)
]
}, -
Настройку дорожек доски (опционально).
CopyrowParams: { String subjectUuid ->
utils.find('employee', [teams: subjectUuid, removed: false])
.collect {
new RowParam(title: it.title as String,
linkValues: [it.UUID] as List<String>)
}
}
Добавление новой функции в параметры функции KanboardSettings
-
Для отображения доски в интерфейсе добавьте название новой функции в параметры функции KanboardSettings:
Copyfinal KanboardSettings settings = new KanboardSettings([teamServiceCallsByEmployeesBoard,
teamServiceCallsByStatesBoard,
teamServiceCallsByDeadlinesBoard,
teamTasksByStatesExtendedExampleBoard,
employeeServiceCallsByStatesBoard,
employeeServiceCallsByDeadlinesBoard,
employeeTasksByStatesExtendedExampleBoard,
название новой функции для новой доски])
Пример
Встроенное приложение размещено в контенте с кодом statusBoard.
На доске отображаются запросы (serviceCall) сотрудников команды в статусах "Новый" (registered), "В работе" (inwork), "Отложен" (wait) и "Закрыт" (closed):
- Для каждого статуса отображается отдельный столбец. При переносе запроса между столбцами меняется статус запроса.
- Для каждого сотрудника отображается отдельная дорожка (горизонтально). При переносе запроса между дорожками меняется ответственный за запрос.
-
На плашке запроса отображается его название, описание (descriptionRTF), дедлайн (deadLineDate), аватар ответственного, иконка запроса (если есть), цветовой индикатор приоритета (если задан). При наведении курсора на аватар ответственного отображается всплывающая подсказка с именем ответственного, при наведении на иконку запроса — подсказка с названием иконки, при наведении на цветовой индикатор приоритета — подсказка с названием приоритета.
В данном примере у доски переопределены набор выводимых объектов, описание и дедлайн на плашке, а также набор дорожек. Остальные параметры используются со значениями по умолчанию.
final KanboardParams serviceCallByStatus = new KanboardParams( // функция для построения доски
contentCode: 'statusBoard', // код контента, для которого строится доска
items: { String subjectUuid ->
return utils.find('serviceCall', ['responsibleTeam':subjectUuid, 'state': op.in('registered', 'inprogress', 'waitClientAnswer', 'closed')])}, // получаем объекты, которые будут отображаться на доске
description: { String subjectUuid, ISDtObject item ->item.hasProperty('descriptionRTF') ? api.string.htmlToText(item.descriptionRTF) : null},
deadline: {String subjectUuid, ISDtObject item -> item.hasProperty('deadLineDate') ? item.deadLineDate.deadLineTime :null}, // определяем соответствие параметров объекта доски и элементов плашки на доске
columnParams: { String subjectUuid ->
return [ // определяем колонки и их содержимое для доски
new ColumnParam(
title: 'Новые',
linkValues: ['registered']
),
new ColumnParam(
title: 'В работе',
linkValues: ['inprogress'],
color: '#E08A85'
),
new ColumnParam(
title: 'Отложен',
linkValues: ['waitClientAnswer'],
color: '#DDC688'
),
new ColumnParam(
title: 'DONE',
linkValues: ['closed'],
color: '#008000'
)
]
},
rowParams: { String subjectUuid ->
utils.find('employee', [teams: subjectUuid, removed: false])
.collect {
new RowParam(title: it.title as String, linkValues: [it.UUID] as List<String>)
}
}
)
Пример внешнего вида доски представлен на рисунке.