Создание новой доски для приложения "Интерактивная доска" 2.4.0 — 2.7.0

Описание настройки

Для каждой доски используется своя функция.

Настройка доски состоит из трех смысловых частей:

  1. Объекты, которые будут отображаться на доске.
  2. Соответствие параметров объекта и элементов плашки объекта на доске.
  3. Настройка столбцов доски.

Место настройки в интерфейсе

Интерфейс администратора.

Раздел "Настройка системы" → "Каталог скриптов и модулей" → "Каталог модулей" → Модуль kanboardParams.

Форма редактирования модуля, см. Редактирование модуля.

Выполнение настройки

Создание доски

  • Функция для построения доски:

    Copy
    final KanboardParams serviceCallByStatus = new KanboardParams

Для создания новой доски:

  1. Скопируйте функцию, соответствующую желаемому типу доски (разбивка столбцов по статусу, по ответственному, по дедлайну).

    Примеры типов досок, см. Преднастроенные доски из скриптового модуля приложения "Интерактивная доска" 2.4.0 — 2.7.0.

  2. Дайте новое название функции и настройте новую доску.

Добавление кода контента

  • Код контента, для которого строится доска:

    Copy
    contentCode: 'statusBoard',

    Значение параметра должно совпадать с кодом контента, в котором будет выведена доска с данной настройкой.

Настройка доски

Настройка доски — это настройка значений параметров класса KanboardParams. Если значение параметра не будет задано вручную, используется его значение по умолчанию, см. Описание классов скриптового модуля приложения "Интерактивная доска" 2.4.0 — 2.7.0.

Настройка каждой доски состоит из трех смысловых частей:

  1. Объекты, которые будут отображаться на доске.

    Например, вывод на доску запросов может быть задан с помощью метода utils.find или api.db.query.

    Пример с использованием utils.find:

    Copy
    items: { String subjectUuid ->
    return utils.find('serviceCall', ['responsibleTeam':subjectUuid, 'state': op.in('registered', 'inwork', 'wait', 'closed')])},

    Пример с использованием api.db.query:

    Copy
    items : { 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()
    },
  2. Соответствие параметров объекта и элементов плашки объекта на доске.

    Copy
    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},
  3. Настройка столбцов доски.

    Copy
    columnParams: { 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'
                   ) 
             ]
        } 

Добавление новой функции в параметры функции KanboardSettings

  • Для отображения доски в интерфейсе добавьте название новой функции в параметры функции KanboardSettings:

    Copy
    final KanboardSettings settings = new KanboardSettings([teamServiceCallsByEmployeesBoard,
                                                            teamServiceCallsByStatesBoard,
                                                            teamServiceCallsByDeadlinesBoard,
                                                            teamTasksByStatesExtendedExampleBoard,
                                                            employeeServiceCallsByStatesBoard,
                                                            employeeServiceCallsByDeadlinesBoard,
                                                            employeeTasksByStatesExtendedExampleBoard,
                                                            название новой функции для новой доски])

Пример

Встроенное приложение размещено в контенте с кодом statusBoard.

На доске отображаются запросы (serviceCall) сотрудников команды в статусах "Новый" (registered), "В работе" (inwork), "Отложен" (wait) и "Закрыт" (closed). Для каждого статуса отображается отдельный столбец. При переносе запроса между столбцами меняется статус запроса.

На плашке запроса отображается название запроса, его описание (descriptionRTF), дедлайн (deadLineDate), аватар ответственного, иконка запроса (если есть), цветовой индикатор приоритета (если задан). При наведении курсора на аватар ответственного отображается всплывающая подсказка с именем ответственного, при наведении на иконку запроса — подсказка с названием иконки, при наведении на цветовой индикатор приоритета — подсказка с названием приоритета.

В данном примере у доски переопределены набор выводимых объектов, описание и дедлайн на плашке. Остальные параметры используются со значениями по умолчанию.

Copy
final KanboardParams serviceCallByStatus = new KanboardParams( // функция для построения доски
    contentCode: 'statusBoard', // код контента, для которого строится доска 
    items: { String subjectUuid -> 
        return utils.find('serviceCall', ['responsibleTeam':subjectUuid, 'state': op.in('registered', 'inwork', 'wait', '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: ['inwork'],
                       color: '#E08A85'
                   ), 
                   new ColumnParam(
                       title: 'Отложен',
                       linkValues:  ['wait'], 
                       color: '#DDC688'
                   ), 
                   new ColumnParam(
                       title: 'DONE',
                       linkValues: ['closed'],
                       color: '#008000'
                   ) 
        ]
    } 

Пример внешнего вида доски представлен на рисунке.