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

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

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

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

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


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

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

1. Верхняя панель, состоящая из четырех элементов:

* Кнопка "Меню" - открывает меню для управления приложениями конструктора.
* Название открытого приложения
* Кнопки отмены и повтора действий
* Переключатель режима конструктора - при включенной опции отображается режим редактирования, в противном случае - режим просмотра

        .. figure:: img/18.png
        рис. Верхняя панель конструктора
        
2. Левая панель - "Навигатор"

* Страницы - отображает структуру приложения: дерево папок, страниц и модальных окон. Позволяет создавать, управлять и удалять объектами данного типа.
* Компоненты
    * Стандартные - позволяет добавлять на страницу стандартные компоненты
    * Пользовательские - позволяет создавать, управлять и удалять пользовательские компоненты.
* Ресурсы - позволяет добавлять файлы в формате css или js, расширяя возможности конструктора.
* Дерево компонентов - позволяет осуществлять навигацию по всем компонентам открытой страницы.

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

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

* Панель навигации между открытыми объектами: страницами/ресурсами/пользовательскими компонентами
* Панель действий над страницами: кнопка сохранения, кнопки перемещения компонентов "выше"/ "ниже" относительно других компонентов в рамках той же панели
* Область редактирования объекта: страницы, ресурса, пользовательского компонента

        .. figure:: img/20.png
        рис. Основная рабочая область

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

* Свойства
* Кейсы
* Параметры

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

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

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

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


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

**Открыть приложение** - открывает модальное окно со списком всех существующих приложений. В этом окне представленное в списке приложение можно или открыть на редактирование или удалить, при необходимости.

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

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

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

* 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. Создавать/редактировать/удалять папки (для упрощения навигации в рамках подраздела "Ресурсы")
2. Создавать/редактировать/удалять ресурсы (могут быть добавлены только файлы с расширением .js или .css)
3. Создавать/редактировать/удалять библиотеки (*на текущий момент функциональность не доступна*)



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


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

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



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

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

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

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

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

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

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

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

* Сравнить

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

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

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

4. Список возможных действий представлен в таблице ниже.

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


+---------------------------------------+---------------------------------------------------------------+
|Действие                               | Параметры действия                                            |
+=======================================+===============================================================+
| Перейти на страницу                   |Код страницы                                                   | 
|                                       |                                                               |
|                                       |Принимаемы параметры                                           |
+---------------------------------------+---------------------------------------------------------------+
| Выполнить на странице                 |Код компонента (над которым будет осуществляться действие)     |
|                                       |                                                               |
|                                       |Действие:                                                      |
|                                       |                                                               |
|                                       |* Скрыть/показать                                              |
|                                       |                                                               |
|                                       |* Одно из **Специальных действий над компонентом**             |
|                                       |                                                               |
|                                       |Параметры выбранного действия                                  |
+---------------------------------------+---------------------------------------------------------------+
| Выполнить на итераторе                |Код итератора                                                  |
|                                       |                                                               |
| Выполнить на странице                 |Код компонента (над которым будет осуществляться действие)     |
|                                       |                                                               |
|                                       |**Специальные действия над компонентом**                       |
|                                       |                                                               |
|                                       |Параметры этого действия                                       |
+---------------------------------------+---------------------------------------------------------------+
| Открыть URL                           |Источник URL:                                                  |
|                                       |                                                               |
|                                       |* Произвольный текст (поле для ввода URL)                      |
|                                       |                                                               |
|                                       |* Параметры страницы (поле для выбора параметра)               |
|                                       |                                                               |
|                                       |* Значения компонента (поле для выбора компонента)             |
|                                       |                                                               |
|                                       |* Локализованный текст (поле для ввода URL)                    |
|                                       |                                                               |
|                                       |* Параметр итератора (поле для ввода параметра)                |
|                                       |                                                               |
|                                       |* Кастомный источник                                           |
+---------------------------------------+---------------------------------------------------------------+
| Показать сообщение                    |Источник сообщения:                                            |
|                                       |                                                               |
|                                       |* Произвольный текст (поле для ввода URL)                      |
|                                       |                                                               |
|                                       |* Параметры страницы (поле для выбора параметра)               |
|                                       |                                                               |
|                                       |* Значения компонента (поле для выбора компонента)             |
|                                       |                                                               |
|                                       |* Локализованный текст (поле для ввода URL)                    |
|                                       |                                                               |
|                                       |* Параметр итератора (поле для ввода параметра)                |
|                                       |                                                               |
|                                       |* Кастомный источник                                           |
|                                       |                                                               |
|                                       |Тип сообщения                                                  |
|                                       |                                                               |
|                                       |* Успешное сообщение (отобразиться зеленым шрифтом)            |
|                                       |                                                               |
|                                       |* Сообщение  (отобразиться синим шрифтом)                      |
|                                       |                                                               |
|                                       |* Ошибка    (отобразиться красным шрифтом)                     | 
|                                       |                                                               |
|                                       |Время отображения (в секундах)                                 |
+---------------------------------------+---------------------------------------------------------------+
| Логин                                 |* Логин (выбор одного из текстовых полей                       |
|                                       |                                                               |
|                                       |с отключенной опцией "Не отображать вводимые символы")         | 
|                                       |                                                               |
|                                       |* Пароль (выбор одного из текстовых полей                      | 
|                                       |                                                               |
|                                       |со включенной опцией "Не отображать вводимые символы")         | 
+---------------------------------------+---------------------------------------------------------------+
| Выход из системы                      |                                                               |
+---------------------------------------+---------------------------------------------------------------+
| Вернуться со страницы логина          |                                                               |
+---------------------------------------+---------------------------------------------------------------+
| Выполнить API                         |Входной параметр (произвольный или параметр страницы)          |
|                                       |                                                               |
|                                       |Метод (Данные по форме, Данные документ)                       |
|                                       |                                                               |
|                                       |Выходной параметр                                              | 
+---------------------------------------+---------------------------------------------------------------+
| Модальное окно                        |Код модального окна                                            |
|                                       |                                                               |
|                                       |Скрыть/Показать                                                | 
+---------------------------------------+---------------------------------------------------------------+



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

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

