### Компонент для выбора должности {#positionchooser}

Компонент для выбора должности представляет собой 
кликабельное поле ввода, по нажатию которой открывается 
нативный экран «Должности».

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

Для построения экрана компонент принимает следующие 
параметры:

*   имеется ли связь с компонентом;
*   отображать ли вакантные должности.

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

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

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

В целом, логика выбора должности аналогична выбору одного 
[пользователя](#userchooser).

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

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

*   `Выбранные`
*   `%Название_организации%` (выделен по умолчанию при 
    открытии экрана) - содержит дерево всей орг.структуры.

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

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

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

Плашки могут отличаться, в зависимости от отображаемой 
информации:

*   Плашка должности содержит:

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

*   Плашка произвольного текста содержит:

    *   первый блок - произвольный текст;
    *   второй блок содержит лейбл `Введен вручную` (цвет 
        `#ff4800`).

Во всех вариантах невмещающиеся по ширине названия 
должностей / подразделений переносятся на новую строку.

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

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

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

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

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

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

*Поиск должностей* осуществляется только внутри 
отображаемого списка и только в узле навигатора 
"%Название_организации%" (отсутствует для узла 
"Выбранные"). Поиск является "живым", его результаты 
фильтруют отображаемый список. При вводе текста 
иконка лупы заменяется на иконку крестика. Очистить 
поле ввода можно, нажав на крестик (крестик 
заменяется на иконку лупы). Пустой запрос поиска - 
отображается список со всеми должностями данного 
узла навигатора.

Если пользователь на экране "Должности" нажимает 
на *кнопку "Назад"*, мобильный клиент возвращает 
пользователя к экрану, из которого он был вызван.

Если пользователь нажимает на *кнопку "Выбрать"*, 
мобильный клиент возвращает пользователя к предыдущему 
экрану, в поле компонента отображается выбранная 
должность:

*   в нативных диалогах приложения - как текст;
*   иначе - согласно проигрывателю формы.

> **Примечание**
> 
> Метод получения списка пользователей описан в javadoc:
> 
> kz.arta.synergy.server.api.rest.userchooser#getPositions
> 
> Метод получения списка подразделений описан в javadoc:
> 
> kz.arta.synergy.server.api.rest.userchooser#getDepartments

