Преднастроенные доски из скриптового модуля приложения "Интерактивная доска" 2.4.0 — 2.7.0
Каждая интерактивная доска отображается в отдельном контенте, см. Размещение контента с приложением "Интерактивная доска" на карточке объекта.
Код контента и текст скрипта в модуле определяют настройку доски. В разделе приведено описание примеров досок, которые содержатся в скриптовом модуле.
При настройке скриптового модуля используйте коды атрибутов, соответствующие объектной модели Вашего приложения.
Доски на карточке команды
По ответственным сотрудникам
Встроенное приложение размещено в контенте с кодом teamServiceCallsByEmployeesBoard.
На доске отображаются запросы (serviceCall) сотрудников команды с разделением запросов по ответственным. Для каждого ответственного отображается отдельный столбец. В столбце "Без ответственного" находятся запросы, где не назначен конкретный сотрудник. При переносе запроса между столбцами меняется ответственный за запрос.
На плашке запроса отображается название и тема запроса, дедлайн, аватар ответственного, иконка запроса (если есть), цветовой индикатор приоритета (если задан). При наведении курсора на аватар ответственного отображается всплывающая подсказка с именем ответственного, при наведении на иконку запроса — подсказка с названием иконки, при наведении на цветовой индикатор приоритета — подсказка с названием приоритета.
Код скрипта для доски в модуле kanboardParams:
final KanboardParams teamServiceCallsByEmployeesBoard = new KanboardParams(
contentCode: 'teamServiceCallsByEmployeesBoard',
columnParams: { String subjectUuid ->
Collection<ISDtObject> members = utils.get(subjectUuid).members.grep({ !it.removed })
return [new ColumnParam(title: 'Без ответственного', linkValues: [null])] + members.collect(
{
new ColumnParam(title: it.title, linkValues: [it.UUID])
}
)
},
valueToLink : { String subjectUuid, ISDtObject item -> item.responsibleEmployee?.UUID },
attributeCodeForEditing: 'responsibleEmployee'
)
По статусам
Встроенное приложение размещено в контенте с кодом teamServiceCallsByStatesBoard.
На доске отображаются запросы (serviceCall) сотрудников команды с разделением запросов по статусам. Для каждого статуса, кроме "Закрыт" (closed), отображается отдельный столбец. При переносе запроса между столбцами меняется статус запроса.
На плашке запроса отображается название и тема запроса, дедлайн, аватар ответственного, иконка запроса (если есть), цветовой индикатор приоритета (если задан). При наведении курсора на аватар ответственного отображается всплывающая подсказка с именем ответственного, при наведении на иконку запроса — подсказка с названием иконки, при наведении на цветовой индикатор приоритета — подсказка с названием приоритета.
Код скрипта для доски в модуле kanboardParams:
final KanboardParams teamServiceCallsByStatesBoard = new KanboardParams(
contentCode: 'teamServiceCallsByStatesBoard'
)
По дедлайнам
Встроенное приложение размещено в контенте с кодом teamServiceCallsByDeadlinesBoard.
На доске отображаются запросы (serviceCall) сотрудников команды, разделенные по времени наступления дедлайна по столбцам:
- "Дедлайн не задан";
- "Дедлайн уже наступил!";
- "Текущая дата (в формате dd.MM.yyyy)";
- "Текущая дата + 1 день (в формате dd.MM.yyyy)";
- "Текущая дата + 2 дня (в формате dd.MM.yyyy)";
- "Текущая дата + 3 дня (в формате dd.MM.yyyy)";
- "Текущая дата + 4 дня (в формате dd.MM.yyyy)";
- "5 дней и более".
На плашке запроса отображается название и тема запроса, дедлайн, аватар ответственного, иконка запроса (если есть), цветовой индикатор приоритета (если задан). При наведении курсора на аватар ответственного отображается всплывающая подсказка с именем ответственного, при наведении на иконку запроса — подсказка с названием иконки, при наведении на цветовой индикатор приоритета — подсказка с названием приоритета.
Код скрипта для доски в модуле kanboardParams:
final KanboardParams teamServiceCallsByDeadlinesBoard = new KanboardParams(
contentCode: 'teamTasksByDeadlinesBoard',
columnParams: { String subjectUuid ->
Date now = new Date()
ArrayList<ColumnParam> result = [
new ColumnParam(
title: 'Дедлайн не задан',
color: '#808080',
matchingCondition: { ISDtObject item,
String subjectUUID,
Object column,
Object extractor
->
return extractor.deadline(subjectUUID, item) == null
}
),
new ColumnParam(
title: 'Дедлайн уже наступил!',
color: '#FF0000',
matchingCondition: { ISDtObject item,
String subjectUUID,
Object column,
Object extractor
->
Date deadLineTime = extractor.deadline(subjectUUID, item)
return deadLineTime && COMPARE_DATE_FORMAT.format(deadLineTime) < COMPARE_DATE_FORMAT.format(now)
}
)
] + (0..4).collect {
new ColumnParam(
title: PRESENTATION_DATE_FORMAT.format(now + it),
color: '#FFFF99',
matchingCondition: { ISDtObject item,
String subjectUUID,
Object column,
Object extractor
->
Date deadLineTime = extractor.deadline(subjectUUID, item)
return deadLineTime && COMPARE_DATE_FORMAT.format(deadLineTime) == COMPARE_DATE_FORMAT.format(now + it)
})
} + [new ColumnParam(
title: '5 дней и более',
color: '#00CC66',
matchingCondition: { ISDtObject item,
String subjectUUID,
Object column,
Object extractor
->
Date deadLineTime = extractor.deadline(subjectUUID, item)
return deadLineTime && COMPARE_DATE_FORMAT.format(deadLineTime) >= COMPARE_DATE_FORMAT.format(now + 5)
}
)]
return result
},
attributeCodeForEditing: 'timeAllowanceTimer'
)
Доска-пример
Встроенное приложение размещено в контенте с кодом teamTasksByStatesExtendedExampleBoard.
На доске отображаются задачи (task) сотрудников команды в разрезе статусов по столбцам:
- "Запланирована" (registered);
- "Остальные открытые";
- "Выполнена" (closed).
При переносе задачи между столбцами меняется статус задачи.
На плашке задачи отображается название задачи, описание, аватар ответственного. При наведении курсора на аватар отображается всплывающая подсказка с именем ответственного.
Иконка задачи и цветовой индикатор приоритета отображаются при выполнении условий:
-
в классе "Задача" настроены атрибуты с кодами icon и colorIndicator, к которым привязана настройка иконки и индикатора в модуле;
-
настроены справочники, на которые ссылаются атрибуты;
-
у задачи заполнены настроенные атрибуты.
Код скрипта для доски в модуле kanboardParams:
final KanboardParams teamTasksByStatesExtendedExampleBoard = new KanboardParams(
contentCode: 'teamTasksByStatesExtendedExampleBoard',
/**
* Выводим на доску все неархивные объекты класса 'Задача' (task) в ответственности
* команды.
*/
items: { String subjectUuid ->
utils.find('task', ['responsible': subjectUuid, 'removed': false])
},
/**
* В качестве дедлайна на доске будет выводиться значение атрибута 'Дедлайн' (deadline)
* класса 'Задача' (task).
*/
deadline: { String subjectUuid, ISDtObject item ->
item.hasProperty('deadline') ? item.deadline : null
},
/**
* В качестве описания на доске будет выводиться значение атрибута 'Описание' (description)
* класса 'Задача' (task). Значение очищается от html-тегов с помощью метода api.string.htmlToText.
*/
description: { String subjectUuid, ISDtObject item
->
item.hasProperty('description') ? api.string.htmlToText(item.description) ?: '' : ''
},
columnParams: { String subjectUuid ->
return [new ColumnParam(
/**
* Определяем заголовок колонки.
*/
title: 'Запланирована',
/** Определяем статусы, задачи с которыми будут попадать в данную колонку.
* Может быть задано несколько кодов статусов. В этом случае, при
* перетаскивании в колонку, надо будет выбрать, в какой именно статус из
* предложенных будет произведен переход. Набор предлагаемых статусов можно
* урезать с помощью параметра колонки customStatesCodes.
*/
linkValues: ['registered'],
/**
* Определяем цвет колонки.
*/
color: '#33CCFF'
),
new ColumnParam(
title: 'Остальные открытые',
linkValues: api.metainfo.getMetaClass('task').workflow.states.findResults{
if (!['registered', 'closed'].contains(it.code))
{
return it.code
}
},
color: '#808080'
),
new ColumnParam(
title: 'Выполнена',
linkValues: ['closed'],
color: '#00CC66'
)
]
},
/**
* Пример настройки вывода на карточку задачи на доске иконки из справочника из атрибута с
* кодом 'icon'. При необходимости использования какого-то другого атрибута - нужно
* указать его код.
*/
iconUUID: { String subjectUuid, ISDtObject item
->
item.hasProperty('icon') ? item.icon?.icon?.getAt(0)?.UUID : ''
},
/**
* Пример настройки названия, которое будет появляться при наведении мыши на иконку,
* настроенную выше. При необходимости использования какого-то другого атрибута - нужно
* указать его код.
*/
iconTitle: { String subjectUuid, ISDtObject item
->
item.hasProperty('icon') ? item.icon?.title : ''
},
/**
* Пример настройки вывода на карточку задачи на доске цветового индикатора, который берется
* из справочника из атрибута с кодом 'colorIndicator'. При необходимости использования
* какого-то другого атрибута - нужно указать его код.
*/
indicatorColor: { String subjectUuid, ISDtObject item
->
item.hasProperty('colorIndicator') ? item.colorIndicator?.color : ''
},
/**
* Пример настройки названия, которое будет появляться при наведении мыши на цветовой индикатор,
* который берется из справочника из атрибута с кодом 'colorIndicator'. При необходимости
* использования какого-то другого атрибута - нужно указать его код.
*/
indicatorTitle: { String subjectUuid, ISDtObject item
->
item.hasProperty('colorIndicator') ? item.colorIndicator.title : ''
},
)
Доски на карточке сотрудника
По статусам
Встроенное приложение размещено в контенте с кодом employeeServiceCallsByStatesBoard.
На доске отображаются запросы (serviceCall) сотрудника с разделением запросов по статусам. Для каждого статуса, кроме "Закрыт" (closed), отображается отдельный столбец. При переносе запроса между столбцами меняется статус запроса.
На плашке запроса отображается название и тема запроса, дедлайн, иконка запроса (если есть), цветовой индикатор приоритета (если задан). Аватар ответственного не отображается. При наведении курсора на иконку запроса отображается всплывающая подсказка с названием иконки, при наведении на цветовой индикатор приоритета — подсказка с названием приоритета.
Код скрипта для доски в модуле kanboardParams:
final KanboardParams employeeServiceCallsByStatesBoard = new KanboardParams(
contentCode: 'employeeServiceCallsByStatesBoard',
assigneeUUID: { String subjectUuid, ISDtObject item -> null },
assigneeTitle: { String subjectUuid, ISDtObject item -> null },
assigneeAvatarUUID: { String subjectUuid, ISDtObject item -> null }
)
По дедлайнам
Встроенное приложение размещено в контенте с кодом employeeServiceCallsByDeadlinesBoard.
На доске отображаются запросы (serviceCall) сотрудника, разделенные по времени наступления дедлайна по столбцам:
- "Дедлайн не задан";
- "Дедлайн уже наступил!";
- "Текущая дата (в формате dd.MM.yyyy)";
- "Текущая дата + 1 день (в формате dd.MM.yyyy)";
- "Текущая дата + 2 дня (в формате dd.MM.yyyy)";
- "Текущая дата + 3 дня (в формате dd.MM.yyyy)";
- "Текущая дата + 4 дня (в формате dd.MM.yyyy)";
- "5 дней и более".
На плашке запроса отображается название и тема запроса, дедлайн, иконка запроса (если есть), цветовой индикатор приоритета (если задан). Аватар ответственного не отображается. При наведении курсора на иконку запроса отображается всплывающая подсказка с названием иконки, при наведении на цветовой индикатор приоритета — подсказка с названием приоритета.
Код скрипта для доски в модуле kanboardParams:
final KanboardParams employeeServiceCallsByDeadlinesBoard = new KanboardParams(
contentCode: 'employeeServiceCallsByDeadlinesBoard',
assigneeUUID: { String subjectUuid, ISDtObject item -> null},
assigneeTitle: { String subjectUuid, ISDtObject item -> null},
assigneeAvatarUUID: { String subjectUuid, ISDtObject item -> null},
columnParams: { String subjectUuid ->
Date now = new Date()
ArrayList<ColumnParam> result = [
new ColumnParam(
title: 'Дедлайн не задан',
color: '#808080',
matchingCondition: { ISDtObject item,
String subjectUUID,
Object column,
Object extractor
->
return extractor.deadline(subjectUUID, item) == null
}
),
new ColumnParam(
title: 'Дедлайн уже наступил!',
color: '#FF0000',
matchingCondition: { ISDtObject item,
String subjectUUID,
Object column,
Object extractor
->
Date deadLineTime = extractor.deadline(subjectUUID, item)
return deadLineTime && COMPARE_DATE_FORMAT.format(deadLineTime) < COMPARE_DATE_FORMAT.format(now)
})
] + (0..4).collect {
new ColumnParam(
title: PRESENTATION_DATE_FORMAT.format(now + it),
color: '#FFFF99',
matchingCondition: { ISDtObject item,
String subjectUUID,
Object column,
Object extractor
->
Date deadLineTime = extractor.deadline(subjectUUID, item)
return deadLineTime && COMPARE_DATE_FORMAT.format(deadLineTime) == COMPARE_DATE_FORMAT.format(now + it)
})
} + [new ColumnParam(
title: '5 дней и более',
color: '#00CC66',
matchingCondition: { ISDtObject item,
String subjectUUID,
Object column,
Object extractor
->
Date deadLineTime = extractor.deadline(subjectUUID, item)
return deadLineTime && COMPARE_DATE_FORMAT.format(deadLineTime) >= COMPARE_DATE_FORMAT.format(now + 5)
}
)]
return result
},
attributeCodeForEditing: 'timeAllowanceTimer'
)
Доска-пример
Встроенное приложение размещено в контенте с кодом employeeTasksByStatesExtendedExampleBoard.
На доске отображаются задачи (task) сотрудников команды в разрезе статусов по столбцам:
- "Запланирована" (registered);
- "Остальные открытые";
- "Выполнена" (closed).
При переносе задачи между столбцами меняется статус задачи.
На плашке задачи отображается название задачи, описание, дедлайн.
Иконка задачи и цветовой индикатор приоритета отображаются при выполнении условий:
- в классе "Задача" настроены атрибуты с кодами icon и colorIndicator, к которым привязана настройка иконки и индикатора в модуле;
- настроены справочники, на которые ссылаются атрибуты;
- настроенные атрибуты заполнены у задачи.
Аватар ответственного не отображается.
Код скрипта для доски в модуле kanboardParams:
final KanboardParams employeeTasksByStatesExtendedExampleBoard = new KanboardParams(
contentCode: 'employeeTasksByStatesExtendedExampleBoard',
/**
* Выводим на доску все неархивные объекты класса 'Задача' (task) в ответственности сотрудника.
*/
items: { String subjectUuid ->
utils.find('task', ['responsible': subjectUuid, 'removed': false])
},
/**
* В качестве дедлайна на доске будет выводиться значение атрибута 'Дедлайн' (deadline)
* класса 'Задача' (task).
*/
deadline: { String subjectUuid, ISDtObject item ->
item.hasProperty('deadline') ? item.deadline : null
},
/**
* В качестве описания на доске будет выводиться значение атрибута 'Описание' (description)
* класса 'Задача' (task). Значение очищается от html-тегов с помощью метода api.string.htmlToText.
*/
description: { String subjectUuid, ISDtObject item
->
item.hasProperty('description') ? api.string.htmlToText(item.description) ?: '' : ''
},
columnParams: { String subjectUuid ->
return [new ColumnParam(
/**
* Определяем заголовок колонки.
*/
title: 'Запланирована',
/** Определяем статусы, задачи с которыми будут попадать в данную колонку.
* Может быть задано несколько кодов статусов. В этом случае, при
* перетаскивании в колонку, надо будет выбрать, в какой именно статус из
* предложенных будет произведен переход. Набор предлагаемых статусов можно
* урезать с помощью параметра колонки customStatesCodes.
*/
linkValues: ['registered'],
/**
* Определяем цвет колонки.
*/
color: '#33CCFF'
),
new ColumnParam(
title: 'Остальные открытые',
linkValues: api.metainfo.getMetaClass('task').workflow.states.findResults {
if (!['registered', 'closed'].contains(it.code))
{
return it.code
}
},
color: '#808080'
),
new ColumnParam(
title: 'Выполнена',
linkValues: ['closed'],
color: '#00CC66'
)
]
},
/**
* Пример настройки вывода на карточку задачи на доске иконки из справочника из атрибута с
* кодом 'icon'. При необходимости использования какого-то другого атрибута - нужно
* указать его код.
*/
iconUUID: { String subjectUuid, ISDtObject item
->
item.hasProperty('icon') ? item.icon?.icon?.getAt(0)?.UUID : ''
},
/**
* Пример настройки названия, которое будет появляться при наведении мыши на иконку,
* настроенную выше. При необходимости использования какого-то другого атрибута - нужно
* указать его код.
*/
iconTitle: { String subjectUuid, ISDtObject item
->
item.hasProperty('icon') ? item.icon?.title : ''
},
/**
* Пример настройки вывода на карточку задачи на доске цветового индикатора, который берется
* из справочника из атрибута с кодом 'colorIndicator'. При необходимости использования
* какого-то другого атрибута - нужно указать его код.
*/
indicatorColor: { String subjectUuid, ISDtObject item
->
item.hasProperty('colorIndicator') ? item.colorIndicator?.color : ''
},
/**
* Пример настройки названия, которое будет появляться при наведении мыши на цветовой
* индикатор, который берется из справочника из атрибута с кодом 'colorIndicator'.
* При необходимости использования какого-то другого атрибута - нужно указать его код.
*/
indicatorTitle: { String subjectUuid, ISDtObject item
->
item.hasProperty('colorIndicator') ? item.colorIndicator.title : ''
},
assigneeUUID: { String subjectUuid, ISDtObject item -> null },
assigneeTitle: { String subjectUuid, ISDtObject item -> null },
assigneeAvatarUUID: { String subjectUuid, ISDtObject item -> null }
)