### Компонент для выбора портфеля или проекта {#project_chooser}

Компонент формы "Ссылка на проект/портфель" позволяет 
добавлять на форму ссылку на проект или портфель, открывать 
их местоположение в модуле "Проекты".

В режиме просмотра файла по форме является активной ссылкой, 
в режиме редактирования - поле с кнопкой, по нажатию которой 
открывается нативный экран «Портфели и проекты».

![Экран "Портфели и проекты"](resources/img/forms/project_chooser.png)

![Экран "Портфели и проекты"](resources/img/forms/iOS/project_chooser_ios.png)

**Элементы управления экрана "Портфели и проекты".**

+----------------------------------------------------------+------------------------+--------------------------------------------+
| Элемент управления                                       | Расположение на экране | Описание                                   |
+==========================================================+========================+============================================+
| *Верхняя панель*                                         |                        |                                            |
+----------------------------------------------------------+------------------------+--------------------------------------------+
| ![](resources/img/workflow/elements/button_filters.png)\ | Справа                 | "Навигатор" - кнопка перехода к            |
|                                                          |                        | навигатору экрана                          |
+----------------------------------------------------------+------------------------+--------------------------------------------+
| *Компонент "Путь"*                                       | Ниже верхней панели    | Компонент, отображающий путь до выделенной |
|                                                          |                        | ноды навигатора, согласно которой          |
|                                                          |                        | отображается текущий список портфелей и    |
|                                                          |                        | проектов                                   |
+----------------------------------------------------------+------------------------+--------------------------------------------+
| *Рабочая область*                                        |                        |                                            |
+----------------------------------------------------------+------------------------+--------------------------------------------+
| Панель со списком портфелей и проектов                   | Вся основная область   | Плашки, отображающие название и тип        |
|                                                          |                        | элемента выбора                            |
+----------------------------------------------------------+------------------------+--------------------------------------------+
| Выбрать                                                  | Внизу                  | Кнопка                                     |
+----------------------------------------------------------+------------------------+--------------------------------------------+

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

По нажатию на кнопку *навигатора*, а также проведя 
пальцем от правой стороны экрана к левой, раскрывается 
правая панель навигатора (илл. «Навигатор выбора 
портфелей»).

![Навигатор выбора портфелей](resources/img/forms/project_chooser_navigator.png)

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

Сортировка в дереве соответствует модулю "Проекты". По 
умолчанию, в нем выделена и раскрыта корневая нода, 
остальное дерево свернуто.

В остальном, навигатор повторяет поведение аналогичных 
навигаторов, например, в [хранилище](#sec.files_navigator):

*   после выделения узла в навигаторе необходимо 
    автоматически отображать соответствующий список;
*   при каждом новом открытии экрана "Портфели и проекты" 
    все узлы должны быть свернуты, кроме первого уровня;
*   в текущем открытом экране развернутость дерева и 
    последний выделенный узел должны сохранять свои 
    значения;
*   иконки свернутости и развернутости, их кликабельная 
    область;
*   отступы дочерних элементов дерева (включая вариант, 
    при котором уровни вложенности, начиная с 8-й, должны 
    иметь отступ как для 7-го уровня);
*   градиент невмещающегося текста;
*   скрытие навигатора свайпом от левой стороны экрана 
    к правой, нажатием по левой стороне экрана либо 
    кнопкой "Назад" (для ОС Android).

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

В целом, компонент повторяет поведение пути в модуле 
["Файлы"](#sec.files_list) (наличие горизонтального 
скролла и градиентов, кликабельность элементов пути).

> Пример.
> 
> Для выбранного портфеля путь отображает:
> 
> * `Фонд поддержки молодежи > Спортивные мероприятия`

Отображаемый *список портфелей и проектов* зависит от 
того, какая выделена нода дерева, и содержит:

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

Данный список также формируется согласно правам 
пользователя, вызвавшего данный диалог. Список сразу 
отображает все портфели и проекты (без постепенной 
догрузки). Выбор корневого элемента недоступен (в 
списке он всегда отсутствует). Между собой портфели и 
проекты в списке сортируются согласно их следованию в 
модуле "Проекты".

Плашка списка отображает информацию:

*   первый блок - полное название портфеля или проекта;
*   второй блок - статичная надпись `Портфель` или 
    `Проект`, показывающий тип элемента списка.

Невмещающиеся по ширине названия переносятся на новую 
строку.

*Поведение экрана:*

*   Для выбора портфеля или проекта необходимо нажать 
    на строку, вся строка выделится фоном.
    
*   Повторное нажатие на строку не снимает выделение.

*   При выделении портфеля или проекта в списке, 
    выделение предыдущего элемента снимается.

Если пользователь на экране "Портфели и проекты" 
нажимает на *кнопку "Назад"*, мобильный клиент 
возвращает пользователя в 
[проигрыватель форм](#forms_view) в том состоянии, 
которое было у компонента до вызова данного экрана.

После выделения записи списка пользователь нажимает на 
*кнопку «Выбрать»*. Действие выполняется, только если 
выделен какой-либо проект или портфель, иначе 
необходимо выдавать сообщение:

`Запись не выбрана`

и не выполнять действие.

В результате же успешного выполнения действия мобильный 
клиент также возвращает пользователя в 
[проигрыватель форм](#forms_view), в поле компонента 
отображается выбранный элемент списка.

*Проигрыватель форм. Переход по ссылкам.*

По нажатию на ссылку выводится сообщение о 
невозможности ее открытия:

`В мобильной версии просмотр портфеля и проекта не 
поддерживается`

Ссылка не открывается.

