Рабочее место пользователя подсистемы Конструктор
=========================================================

Доступ к подсистеме
--------------------------------

Для того, чтобы получить доступ к подсистеме конструктор, необходимо

1. В подсистеме http://ip:8080/SynergyAdmin предоставить пользователю доступ (раздел "Управление пользователями" - карточка пользователя) **"Конструктор web-клиента"**
2. Перейти по адресу http://ip:8080/constructor  и авторизоватья в подсистеме Конструктор

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


Рабочее место пользователя
--------------------------------

Интерфейс подсистемы Конструктор представлен четырьмя основными панелями:

1. Верхняя панель

        .. figure:: img/18.png
        Верхняя панель конструктора
 
1.1 Кнопка "Меню"

1.2 Название открытого приложения

1.3 Кнопки отмены и повтора действий

1.4 Переключатель режима конструктора: при включенной опции отображается режим редактирования, в противном случае - режим просмотра

2. Левая панель - "Навигатор"

        .. figure:: img/19.png
        Левая панель конструктора
 
2.1 Страницы

2.2 Компоненты

2.2.1 Стандартные

2.2.2 Пользовательские

2.3 Ресурсы

2.4 Дерево компонентов

3.  Основная рабочая области 

        .. figure:: img/20.png
        Основная рабочая область
 
3.1 Панель навигации между открытыми объектами: страницами/ресурсами/пользовательскими компонентами

3.2 Панель действий над страницами: (кнопка сохранения, кнопки перемещения компонентов "выше"/"ниже" отонсительно других компонентов в рамках той же панели)

3.3 Область редактирования объекта: страницы, ресурса, пользовательского компонента

4. Правая панель - Панель "Свойств"

        .. figure:: img/21.png
        Панель свойств
 
4.1 Свойства

4.2 Кейсы

4.3 Параметры

Основные подразделы интерфейса
--------------------------------

Меню
~~~~~~~~~~~

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


**Создать** - создает новое приложение в конструкторе.

**Открыть приложение** - открывает существующее приложение.

**Свойства** - открывает окно редактирования свойств текущего открытого приложения.

Раздел "Свойства" отображает следующие свойства приложения: 

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

* URL - постфикс в адресе приложения, по которому оно будет доступно. В общем случае, ссылка формируется по принципу: http://ip:8080/*значение_указанное_в_этом_поле*

* Номер ревизии - автоматически заполняется (увеличивается +1) при сохранении новой версии приложении

* Требуется авторизация - если опция включена в приложении обязательно должна присутствовать страница авторизации, если опция отключена - ниже обязательно должен быть указан пользователь по-умолчанию (пользователь, от имени которого будет проверяться доступ к объектам SYNERGY, если они используются в приложении).

* Пользователь по-умолчанию (логин/пароль) - поля доступны только если отключена опция "Требуется авторизация"

* Группы доступа - 

**Помощь** - открывает инструкцию по созданию приложения на конструктор.

**Импорт** - позволяет импортировать json - файл приложения, созданного на конструкторе.

**Деплой** - создает и деплоит war-файл приложения в папке /opt/synergy/jboss/standalone/deployments . После деплоя приложение становится доступным для пользователя по адресу http://ip:8080/*значение_указанное_в_поле_URL_приложения*

**Экспорт** - позволяет экспортировать и скачать json-файл приложения.

**WAR** - позволяет скачать war-файл приложения.

**Выход** - осуществляет выход авторизованного пользователя в конструкторе.


Страницы
~~~~~~~~~~~

Подраздел позволяющий управлять страницами текущего открытого приложения. Подраздел позволяет осуществлять следующие действия:

1. Создавать/редактировать/удалять папки.
2. Создавать/редактировать/удалять страницы.
3. Импортировать и экспортировать страницы.
4. Создавать/редактировать/удалять модальные окна для страниц.
5. Просматривать дерево страниц.
6. Просматривать версии страниц и модальных окон.

**Свойства папки**

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

**Свойства страницы**

Новая страница в приложении может быть создана через кнопку "+" и выбор пункта контекстного меню "Добавить страницу" (активно только при выдленное ноде папки в навигаторе), 
а также страница может быть импортирована при выборе пункта "Импортировать страницу".


При создании или при выборе пункта "Изменить" контекстного меню страницы отображаются следующие свойства страницы: 


* Название - отображается в навигаторе конструктора

* Код - уникальный код страницы, используется в том числе при экспорте/импорте страницы (если код совпадает, то не создается новая страница, а обновляется версия существующей с таким же кодом).

* Требуется авторизация - позволяет настраивать авторизацию на каждую отдельно страницу. 


+---------------------------------------+---------------------------------------------------------+--------------------------------------------------------+
|                                       | Требуется авторизация страницы                          | Не Требуется авторизация страницы                      |
+=======================================+=========================================================+========================================================+
| Требуется авторизация приложения      |К странице, как и ко всему приложению,                   |К странице, как и ко всему приложению,                  |
|                                       |нет доступа без авторизации.                             |нет доступа без авторизации.                            |
|                                       |                                                         |Примечание: Если указано требование авторизации для     |
|                                       |                                                         |приложения, нет необходимости указывать требование      |
|                                       |                                                         |авторизации для каждой страницы                         |
+---------------------------------------+---------------------------------------------------------+--------------------------------------------------------+
| Не требуется авторизация приложения   |Ко всему приложению будет доступ без авторизации, к      |К странице, как и ко всему приложению,                  |
|                                       |странице - нет. (Если на произвольную странцу приложения |можно обратиться без авторизации                        |
|                                       |без авторизации добавить кнопку перехода на страницу     |                                                        | 
|                                       |с обязательной авторизацей, при клике на кнопку          |                                                        | 
|                                       |- страница, требующая авторизацию, не откроется или      |                                                        | 
|                                       |откроется страница авторизации - если такая существует)  |                                                        | 
+---------------------------------------+---------------------------------------------------------+--------------------------------------------------------+


* URL - *на текущий момент настройка не используется*

* Путь - *на текущий момент настройка не используется*

* Принимаемые параметры - Механизм позволяющий передавать значения между компонентами на разных страницах.


**Свойства модального окна**

Модальное окно является особым видом страницы со своими специфичными свойствами и обязательно являющейся дочерней к одной из основных страниц.
Модальное окно может быть создано через кнопку "+" и выбор пункта контекстного меню "Модальное окно" (активно только при выдленное ноде **страницы** в навигаторе).

Свойства модального окна:

Основные (редактируютя через "Изменить" в контекстном меню модального окна):

* Название
* Код

Специфичные (редактируются в разделе "Свойства" корневой панели):

* Заголовок модального окна - текстовое поле с локализацией.
* Вертикальный скролл - да/нет
* Горизонтальный скролл - да/нет
* Отображать кнопку закрыть - да/нет

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


Компоненты
~~~~~~~~~~~

Подраздел позволяющий добавлять на страницы компоненты: стандартные и пользовательские, а также создавать/редактирова/удалять пользовательские компоненты.

Список стандартных компонентов и их свойств определен в разделе: `Перечень компонентов и их атрибутов`_

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

Ресурсы
~~~~~~~~~~~

Подраздел позволяющий подключать стороние ресурсы для текущего открытого приложения. Подраздел позволяет осуществлять следующие действия:

1. Создавать/редактирова/удалять папки (для упрощения навигации в рамках подраздела "Ресурсы")
1. Создавать/редактирова/удалять ресурсы (могут быть добавлены только файлы с расширением .js или .css)
1. Создавать/редактирова/удалять библиотеки (*на текущий момент функциональность не доступна*)



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


Свойства
~~~~~~~~~~~

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



Кейсы
~~~~~~~~~~~

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

1. Создавать кейс
2. Удалять кейс
3. Редактировать кейс

**Процесс создания кейса**

1. Для создании кейса необходимо определить сочетание: Условие - Событие - Действие

2. Список возможных условий стандартный для каждого компонента и состоит из:

* Авторизация пользователя (два значения: авторизован, не авторизован)

* Локаль (русский, казахский, английский)

* Сравнить

* Свойства компонента

* Свойства компонента из итератора

3. Список событий для каждого компонента свой и определен в разделе `Перечень компонентов и их атрибутов`_
4. Список возможных действий для каждого компонента свой и определен в разделе `Перечень компонентов и их атрибутов`_. 
Для определения, что должно быть сделано при наступлении события и выполнении условий, необходимо выбрать группу действия, 
само действие и задать значения параметров действия, если это необходимо.


Параметры
~~~~~~~~~~~

Подраздел позволяющий управлять параметрами выбранного компонента (для компонента могут быть выбраны параметры заранее объявленные для данной страницы).

