Задача [CRD1, часть 3]: Конфигуратор: описание навигатора и вкладок элементов

Формулировка проблемы: для упрощения работы методологов ARTA Synergy необходимо заменить интерфейс конфигуратора на основе IDE Codiad.

Решение: в виду большого объема поставленной задачи она будет разделена на несколько логических частей. Данная задача описывает дерево, которое содержит все категории свойст системы, понятия и их сущности.

Конфигуратор состоит из следующих элементов:

Рисунок 347. Схематичное представление конфигуратора

Схематичное представление конфигуратора

Навигатор

Панель навигатор располагается в левой части экрана. В ней содержатся:

  • дерево элементов

  • кнопка расширенного поиска

  • кнопка управления панелью навигатора

Ширина панели динамическая и регулируется разделителем. При изменении ширины навигатора происходит пропорциональное изменение ширины основной рабочей области таким образом, чтобы их сумма всегда составляла 100%. Граничные значения ширины навигатора выглядят следующим образом:

  • минимальный - 100px

  • максимальный - 90% от ширины экрана

По умолчанию ширина панели составляет 300px.

Панель навигатора может отображаться в двух режимах:

  • панель закреплена на экране

  • панель автоматически скрывается при потере фокуса курсора и разворачивается по наведению на левый край экрана

Данная функциональность регулируется кнопкой управления, расположенной в верхней части панели. По нажатию на кнопку также изменяется ее пиктограмма, показывающая текущий выбранный режим. По умолчанию панель закреплена.

Структура дерева
Интерфейс

Навигатор отображает категории свойств системы, понятия и их сущности, объединенные разделами. Совокупность этих элементов системы образует древовидную структуру. Элементы дерева имеют пиктограммы, различные для каждого типа элементов:

  • Раздел

  • Категория свойств системы

  • Понятие

  • Cущность

Дерево содержит следующие элементы (курсивом обозначены типы элементов):

  • Доступ (подраздел)

    • Группы (понятие)

    • Доступ к объектам конфигурации (понятие)

  • Документы (подраздел)

    • Типы документов (понятие)

    • Шаблоны документов (понятие)

    • Создание документов (понятие)

    • Дела (понятие)

  • Файлы (подраздел)

    • Папки (понятие)

    • Роли (понятие)

    • Свойства (понятие)

    • Классификатор (понятие)

  • Записи (подраздел)

    • Журналы (понятие)

    • Реестры (понятие)

    • Шаблоны номеров (понятие)

    • Счетчики (понятие)

  • Бизнес-процессы (подраздел)

    • Шаблоны маршрутов (понятие)

    • Приоритеты (понятие)

    • Нагрузки (понятие)

  • Трудовые ресурсы (подраздел)

    • Личное дело (понятие)

    • Карточки пользователей (понятие)

    • Карточки должностей (понятие)

    • Карточки подразделений (понятие)

    • Карточки адресной книги (свойства системы)

    • Действия по сотрудникам (понятие)

    • Действия по резерву (понятие)

  • Проекты (подраздел)

    • Категории рисков (понятие)

    • Портфели проектов (понятие)

    • Шаблоны проектов (понятие)

  • Операционная деятельность (подраздел)

    • Шаблоны системных показателей (понятие)

  • Приложение (свойства системы)

    • ARTA Synergy (свойства системы)

      • Платформа (подраздел)

        • Справочники (понятие)

        • Специальные справочники (понятие)

        • Формы (понятие)

        • Отчеты (подраздел)

          • Встроенные отчеты (понятие)

          • Пользовательские отчеты (понятие)

        • Управление модулями (свойства системы)

          • Диалоги создания (понятие)

          • Пункты создания (свойства системы)

          • Фильтры потоков работ (понятие)

          • Сотрудники (свойства системы)

        • Региональные настройки (подраздел)

          • Языки (понятие)

          • Переводы (свойства системы)

        • Настройки (подраздел)

          • Документы (подраздел)

            • Настройки документов (свойства системы)

            • Шаблоны протоколов (свойства системы)

          • Бизнес-процессы (подраздел)

            • Настройки бизнес-процессов (свойства системы)

            • Свойства процессов (свойства системы)

            • Настройки резолюций (свойства системы)

          • Проекты (подраздел)

            • Настройки проектов (свойства системы)

          • Делегирование (свойства системы)

          • Календарь (свойства системы)

      • Интеграция (подраздел)

        • Интеграция с DF-EX (свойства системы)

        • Пользовательские компоненты (понятие)

        • Внешние модули-компоненты (понятие)

        • Внешние модули (понятие)

Каждое понятие может иметь дочерние ноды - сущности. В свою очередь, если понятие предполагает наличие связанных сущностей, они также содержатся в соответствующих родительских сущностях. Для наглядности рассмотрим ноду подраздела "Записи" (реестр "Приказ о командировании"):

  • Записи (подраздел)

    • Журналы

    • Реестры (понятие)

      • Заявка на выделение денежных средств

      • Заявка на оплату счета

      • Заявка на ТМЦ

      • Оплачиваемый отпуск

      • Отпуск без сохранения заработной платы

      • Получение письма

      • Приказ о командировании (сущность)

        • Группы (понятие)

          • Отдел документации и активов (связанная сущность)

          • Сотрудники канцелярии (связанная сущность)

        • Типы документа (понятие)

          • Внутренний (Внутренние документы) (связанная сущность)

        • Реестры ответа (понятие)

          • Служебная записка о командировании (связанная сущность)

        • Формы (понятие)

          • Приказ о командировании (связанная сущность)

      • Приказ о повышении оклада

      • Приказ о приеме на работу

      • Приказ о расторжении трудового договора

      • Служебная записка о командировании

      • Трудовой договор

      • Штатное расписание

    • Шаблоны номеров

    • Счетчики

Если размеры дерева выходят за пределы панели навигатора, то в нее добавляется скролл (вертикальный, либо горизонтальный).

Поведение

По умолчанию дерево свернуто до первого уровня. Раскрытие одного уровня дерева возможно при двойном нажатии курсором по элементу, отличному от сущности. Возможна навигация по дереву с помощью курсорных клавиш, причем нажатие на кнопку Enter приравнивается к двойному клику.

Для управления элементами дерева для них имеется контекстное меню. Его состав зависит от типа элемента:

  • раздел:

    • "Поиск"

  • категория свойств системы:

    • "Изменить"

  • понятие:

    • "Создать"

    • "Поиск"

  • сущность:

    • "Изменить"

    • "Скрыть" либо "Восстановить" (зависит от текущего статуса сущности; может вовсе отсутствовать для понятия выбранной сущности)

    • "Удалить"

Выбор пункта контекстного меню "Изменить" приравнивается к двойному клику на сущность в дереве, а также к нажатию клавиши Enter для данной сущности.

Результатом редактирования и создания элемента является открытие новой вкладки в основной рабочей области.

При выборе пункта "Поиск" откроется диалог поиска элементов. В компонент выбора границ поиска "Ограничить" автоматически подставится значение данного понятия или подраздела.

API

Для получения списка элементов дерева будет реализован новый метод API. Он должен иметь следующие формат и параметры:

  • type - тип:

    • group - раздел

    • piece - понятие

    • item - сущность

    • options - категория свойств системы

  • elementUUID - идентификатор элемента

  • name - название элемента

  • child - дочерний элемент

Пример возврата ноды "Записи"

[
    {
        "type": "group",
        "elementUUID": "some_uuid",
        "name": "Записи",
        "child": [
        {
            "type": "piece",
            "elementUUID": "some_uuid",
            "name": "Журналы",
            "child": [
        {
            "type": "piece",
            "elementUUID": "some_uuid",
            "name": "Реестры",
            "child": [
                {
                "type": "item",
                "elementUUID": "some_uuid",
                "name": "Реестр о командировании",
                "child": [
                    {
                        "type": "piece",
                        "elementUUID": "some_uuid",
                        "name": "Группы",
                        "child": [
                            {
                            "type": "item",
                            "elementUUID": "some_uuid",
                            "name": "Сотрудники отдела канцелярии",
                            },
                            {
                            "type": "item",
                            "elementUUID": "some_uuid",
                            "name": "Отдел документации и активов",
                            }
                        ]
                    },
                    {
                        "type": "piece",
                        "elementUUID": "some_uuid",
                        "name": "Типы документов",
                        "child": [
                            {
                            "type": "item",
                            "elementUUID": "some_uuid",
                            "name": "Внутренний (Внутренние документы)",
                            }
                        ]
                    },
                    {
                        "type": "piece",
                        "elementUUID": "some_uuid",
                        "name": "Реестры",
                        "child": [
                            {
                            "type": "item",
                            "elementUUID": "some_uuid",
                            "name": "Служебная записка о командировании",
                            }
                        ]
                    },
                    {
                        "type": "piece",
                        "elementUUID": "some_uuid",
                        "name": "Формы",
                        "child": [
                            {
                            "type": "item",
                            "elementUUID": "some_uuid",
                            "name": "Приказ о командировании",
                            }
                        ]
                    }
                ]
                }
            ]
        {
            "type": "piece",
            "elementUUID": "some_uuid",
            "name": "Шаблоны номеров",
        },
        {
            "type": "piece",
            "elementUUID": "some_uuid",
            "name": "Счетчики",
        }
        ]
    }
]
Поиск

По нажатию на кнопку "Поиск" из тулбара навигатора открывается диалоговое окно, которое содержит:

  • поле ввода поискового запроса "Найти"

  • компонент выбора границ поиска "Ограничить"

  • панель для отображения результатов поискового запроса

  • кнопка "Искать"

  • кнопка "Отмена"

Компонент выбора границ поиска позволяет сузить его границы. По умолчанию установлено значение "Все", которое позволяет производить поиск по всему конфигуратору. По нажатию на кнопку компонента откроется диалоговое окно, которое содержит:

  • дерево понятий, сгруппированных по соответствующим разделам

  • кнопка "Выбрать"

  • кнопка "Отмена"

Данное дерево имеет корень "Все" и содержит только понятия конфигуратора:

  • Все

    • Доступ

      • Группы

      • Доступ к объектам конфигурации

    • Документы

      • Типы документов

      • Шаблоны документов

      • Создание документов

      • Дела

    • Файлы

      • Папки

      • Роли

      • Свойства

      • Классификатор

    • Записи

      • Журналы

      • Реестры

      • Шаблоны номеров

      • Счетчики

    • Бизнес-процессы

      • Шаблоны маршрутов

      • Приоритеты

      • Нагрузки

    • Трудовые ресурсы

      • Личное дело

      • Карточки пользователей

      • Карточки должностей

      • Карточки подразделений

      • Действия по сотрудникам

      • Действия по резерву

    • Проекты

      • Категории рисков

      • Портфели проектов

      • Шаблоны проектов

    • Операционная деятельность

      • Шаблоны системных показателей

    • Приложение

      • ARTA Synergy

        • Платформа

          • Справочники

          • Специальные справочники

          • Формы

          • Отчеты

            • Встроенные отчеты

            • Пользовательские отчеты

          • Управление модулями

            • Диалоги создания

            • Фильтры потоков работ

          • Региональные настройки

            • Языки

        • Интеграция

          • Пользовательские компоненты

          • Внешние модули-компоненты

          • Внешние модули

Для поиска элементов методологу необходимо ввести в поле запрос и обозначить границы поиска. В результате поиска панель диалогового окна отображает дерево элементов, отфильтрованное согласно запросу. Ноды дерева автоматически раскрыты до уровня совпадения элемента и поискового запроса. При пустом поисковом запросе дерево отображается полностью.

Для наглядности рассмотрим результат поискового запроса "О командировании", причем только в подразделе "Записи":

  • Записи

    • Реестры

      • Приказ о командировании

        • Реестры ответа

          • Служебная записка о командировании

        • Формы

          • Приказ о командировании

      • Служебная записка о командировании

Примечание

Так как связанные сущности реестра "Служебная записка о командировании" не соответствую поисковой запрос, то нода этого реестра отображается свернутой. При желании методолог может раскрыть ее и увидеть все связанные сущности данного реестра.

При выборе найденного элемента из панели окно поиска закрывается. При этом открывается, либо становится активной вкладка данного элемента.

Основная рабчая область
Вкладки
Интерфейс

Все вкладки состоят из заголовков и основной области, в которой содержатся свойства элемента. Каждый заголовок содержит в себе информацию о полном пути до выбранного элемента и кнопку закрытия вкладки.

Размер заголовков вкладок статичен. Поэтому если путь до выбранного элемента такой, что его текст не отображается в заголовке полностью, то он обрезается по левому краю. При наведении курсором над заголовком отображается тултип с полным путем до элемента.

Вкладки имеют два свойства - активность и признак сохранения. В связи с этим вкладки могут находиться в следующих состояниях:

  • активна, но без сохранения изменений

  • активная с сохранением изменений

  • неактивна, но без сохранения изменений

  • неактивная с сохранением изменений

Активность вкладки определяется цветом ее заголовка - открытая вкладка имеет цвет, отличный от остальных вкладок. А если элемент во вкладке имеет несохраненные изменения, то ее заголовок подсвечивается по периметру.

Поведение

Открытие вкладок

Открытие вкладки возможно при создании и редактировании сущности:

  • из дерева элементов

  • из понятия

  • связанной сущности из другой сущности

Новая вкладка добавляется последней. При попытке открытия уже открытой вкладки она автоматически становится активной (без дублирования открытой вкладки).

В случае, если количество вкладок такое, что их заголовки не отображаются полностью, в области вкладок добавляется кнопка "Показать остальные". По нажатию на нее открывается список всех вкладок, которые не отображаются в рабочей области на данный момент. При выборе пункта из списка фокус переместится на соответствующую ему вкладку.

Перемещение вкладок

Изменение порядка следования вкладок в области можно осуществить при помощи drag & drop.

Закрытие вкладок

Закрытие вкладок осуществляется нажатием на кнопку на самой вкладке. В случае, если элемент во вкладке имеет несохраненные изменения, то отобразится модальное диалоговое окно с текстом:

Все несохраненные изменения будут потеряны! Вы действительно хотите продолжить?