Создание новой доски для приложения "Интерактивная доска" 2.8.0 и выше

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

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

Настройка доски включает в себя несколько частей:

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

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

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

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

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

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

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

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

    Copy
    final KanboardParams serviceCallByStatus = new KanboardParams

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

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

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

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

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

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

    Copy
    contentCode: 'statusBoard',

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

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

Настройка доски — это настройка значений параметров класса KanboardParams. Если значение параметра не будет задано вручную, используется его значение по умолчанию, см. Описание классов скриптового модуля приложения "Интерактивная доска" 2.8.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'
                ) 
        ]
    }, 
  4. Настройку дорожек доски (опционально).

    Copy
    rowParams: { 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:

    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', '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>)
                }
         }
    )

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