Дерево дизайнов

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

Чтобы соответствие имело смысл, каждая цепочка должна оканчиваться указанием разметки. Смысл данных сопоставлений состоит в том, чтобы при создании или открытии карточки система могла выбрать нужную разметку, сопоставив состояние карточки и/или роль, которую выполняет пользователь.

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

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

Пример использования "Дерева дизайнов"
Рисунок 1. Пример использования "Дерева дизайнов"

На рисунке показаны цепочки соответствия для карточки Задание пользовательского вида На исполнение:

  • В состоянии карточки Делегировано будет применяться Разметка карточки делегата (цепочка Состояние-Разметка).

  • В состоянии карточки В работе разметки будут зависеть также от роли пользователя (цепочка Состояния-Роль-Разметка):

    • Для Автора будет применяться Разметка карточки автора (цепочка Роль-Разметка).

    • Для Исполнителя будет применяться Разметка карточки исполнителя.

  • Для самой карточки будет применяться разметка Базовая.

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

Корневой вид при этом удалить нельзя, т.к. разметка в отрыве от вида не существует.

Для узла разметки нельзя создать какой-либо подчиненный узел. Также невозможно удалить из дерева все узлы, хотя бы один узел обязательно должен присутствовать.

Добавить узел

Узлы Дерева дизайнов определяют те сущности, для которых предназначена та или иная разметка. Например, если разметка должна соответствовать определённой пользовательской роли, то в качестве узла следует выбрать роль. В Дереве дизайнов могут быть организованы цепочки соответствий Состояние-Разметка, или Состояния-Роль-Разметка, или Роль-Разметка. Состояния и роли должны быть настроены заранее в соответствующих конструкторах Docsvision.

Разметки для сущностей настраиваются в несколько этапов:
  • На начальном этапе определяется сущность, для которой будет использоваться разметка (состояние или роль).

  • На следующем — в уже созданный узел добавляется сама разметка из Списка разметок или новая сущность. Например, в узел состояния добавляется узел роли. При формировании дерева, разметки должны быть уже созданы и настроены.

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

Описание принципа выбора разметки для запущенной карточки содержится в разделе Автоматический выбор разметки.

Чтобы добавить в дерево новый дочерний узел:
  1. Выделите в Дереве дизайнов узел, в котором нужно создать подчиненный узел.

  2. Нажмите на кнопку Новый узел Новый узел.

    Будет открыто окно Добавление узла дерева дизайна.

    Добавление узла дерева дизайна
    Рисунок 2. Добавление узла дерева дизайна
  3. Установите переключатель на значение, соответствующее типу создаваемого узла:

    • Роль — если требуется создать соответствие Роль-Разметка.

    • Состояние — если требуется создать соответствие Состояние-Разметка или Состояния-Роль-Разметка.

    • Разметка — если требуется создать соответствие Карточка-Разметка.

      Следует учитывать, что за одну операцию нельзя создать узел роли или состояния и добавить разметку. Такое действие допускается только для соответствий Карточка-Разметка.

  4. Задайте значение узла любым из следующих способов:

    • Введите название узла вручную.

    • Из раскрывающегося списка выберите нужное значение.

      В списке будут присутствовать все роли, состояния и разметки, настроенные для данного вида.

      Пример первого этапа задания соответствия "Роль-Разметка"
      Рисунок 3. Пример первого этапа задания соответствия "Роль-Разметка"
  5. Нажмите на кнопку ОК.

    Созданный узел будет добавлен в дерево.

    Пример добавления узла для роли
    Рисунок 4. Пример добавления узла для роли
  6. Установите курсор на созданный узел.

  7. Нажмите на кнопку Новый узел Новый узел.

  8. Выберите для созданного ранее узла (в данном примере — узла роли) нужную разметку.

    Добавление узла дерева дизайна
    Рисунок 5. Добавление узла дерева дизайна

    В дереве для роли будет определена соответствующая разметка.

    Результат настройки соответствия "Роль-Разметка"
    Рисунок 6. Результат настройки соответствия "Роль-Разметка"
  9. Аналогичным образом выполните настройку других узлов.

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

    Кнопка и выпадающее меню для переключения разметок в открытой карточке
    Рисунок 7. Кнопка и выпадающее меню для переключения разметок в открытой карточке

    При первоначальном открытии карточки к ней по умолчанию применяется разметка, которая находится в дереве дизайнов на первом месте в списке (из числа удовлетворяющих условию разметок).

Удалить узел

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

Чтобы удалить узел из Дерева дизайнов:
  1. Выделите в Дереве дизайнов узел, который требуется удалить.

  2. Нажмите на кнопку Удалить узел Удалить узел.

    Кнопка доступна для всех разметок, кроме базовой, то есть той разметки, которая по умолчанию присутствовала в дереве разметок с названием Разметка 1. Удаление данной разметки будет запрещено.

  3. В появившемся окне с вопросом: Вы уверены, что хотите удалить узел дизайна? подтвердите удаление нажатием на кнопку Да.

    Узел будет удалён. Если в данном узле содержались вложенные узлы или добавленные разметки, они также будут удалены.

Автоматический выбор разметки

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

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

Алгоритм выбора разметки

Выбор разметки производится по следующему принципу:
  1. При открытии или создании карточки система проверяет роль, которую выполняет пользователь, и состояние карточки. При сопоставлении этих параметров в Дереве дизайнов вида карточки ищется наиболее полное соответствие, то есть пара Состояние — Роль и соответствующая этой паре разметка:

    1. При наличии подобного узла, система использует назначенную узлу разметку.

    2. Если такого узла нет, ищется частичное совпадение, то есть ищется настроенная разметка для состояния карточки или роли пользователя.

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

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

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

Выбор из равноправных разметок

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

  2. Установите курсор на разметку, которая должна автоматически выбираться в запущенной карточке.

  3. Нажмите на кнопку Повысить узел Переместить выше.

    Запись о разметке будет перемешена вверх.

  4. Выполните предыдущую операцию столько раз, сколько потребуется, чтобы разметка оказалась первой в списке узла.

    При необходимости аналогичным образом определите приоритет всех остальных разметок, воспользовавшись кнопками Повысить узел Переместить выше и Понизить узел Переместить ниже.