/employees-combobox

Автосаджест для выбора сотрудников в AirPlans

Primary LanguageJavaScript

#Автосаджест выбора сотрудников в AirPlans.


##Формат входных данных

[{
  id: 1,
  name:'Элит',
  departments: [{
    id: 1,
    name: 'IT отдел',
    employees:[{
      fullName: 'Уруков Андрей',
      avatarUrl: 'https://s3.amazonaws.com/airplans-staging/avatars/s/1.jpg',
      id: 1,
      position:'Программист'
    }]
  }]
}]

##Выходные данные

Айдишники выбранных сотрудников через запятую

##Настройки (Options)

###Режим выбора

  • ####Single Выбрать можно только 1 сотрудника. Переход из состояния Selected в состояние Focus осуществляется после нажатия на крестик справа. Дропдаун появляется в состоянии фокуса.

  • ####Multi Выбрать можно любое количество сотрудников. Можно выбрать целиком отдел. Отдел выбирается кликом на названии отдела, после чего автоматом помечаются выбранными все сотрудники этого отдела

###Вид отображения выбранной группы сотрудников

  • ####List Сотрудники отображаются обычным списком, где порядок не важен.

  • ###Ordered list Для составления цепочки согласования. Сотрудники отображаются в порядке следования, в виде диаграммы. Порядок следования можно менять перетаскиванием

##API

  • Установка значений
  • Получение текущих выбранных значений
  • Колбэки

##Поддержка клавиатуры

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

    • Esc – схлопывание выпадающего списка
    • Enter – подтверждение выбора
  • Удаление из выбранных Нажатием на пиктограмму креста в блоке сотрудника, сотрудник должен удаляться из выбранных.

##Поиск

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

##Встраиваемость в хтмл форму

Контрол, расположенный внутри хтмл формы, должен поддерживать вывод выбранных данных в параметры запроса при сабмите этой формы (hidden inputs).

##Если отфильтрованный список пустой, то выводится:

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

##Дальнейшее усовершенстование

  • Анимация
  • Отображение выбранных сотрудников
    • в зависимости от кол-ва
    • в зависимости от количества выбранных сотрудников выбирается оптимальный способов их отображения (для эффективности использования доступности пространства).
      • До 10 сотрудников
      • Более 10 сотрудников
  • Ajax загрузка входных данных и ajax поиск
  • При выборе всего отдела вместо полного списка сотрудников отображается только название отдела.
  • Избранные
  • Умный поиск – cортировка результатов поиска идет на основе весовых критериев(когда последний раз выбирал этого сотрудника, сколько раз был выбран этот сотрудник).