Why a ComboBox Is Not Enough
Вы создаете бизнес-приложения. Вы раз за разом решаете одни и те же задачи.
Вы создаете поиск клиентов. Вы создаете поля автозаполнения товаров. Вы создаете всплывающие окна выбора.
Большинство UI-библиотек рассматривают их как отдельные виджеты. Их называют полями поиска (lookups) или окнами автозаполнения. Это ошибка.
Это не разные задачи. Это одна и та же задача. Я называю эту концепцию Локатором (Locator).
Бизнес-приложения опираются на ссылки (references).
- Заказ на продажу ссылается на клиента.
- Счет-фактура ссылается на поставщика.
- Транзакция ссылается на товар.
Базы данных хранят их в виде ID. Пользователи не мыслят категориями ID. Пользователи мыслят именами, кодами или штрихкодами.
Настоящая проблема не в том, как вы храните ID. Проблема в том, как пользователь находит нужную сущность, используя то, что ему известно.
ComboBox подходит для небольших списков. Используйте его для стран или валют. В таких списках всего несколько десятков строк.
ComboBox не справляется с большими наборами данных. Вы не сможете прокрутить список из 100 000 клиентов. На таком масштабе вы уже не выбираете из списка — вы ищете конкретную запись.
Локатор (Locator) — это не элемент управления UI. Это поведение.
Локатор делает больше, чем просто возвращает значение. Он разрешает бизнес-ссылку (resolves a business reference).
Когда пользователь выбирает товар, приложению нужно нечто большее, чем просто ProductId. Ему нужна цена за единицу, ставка НДС и единица измерения.
Локатор предоставляет всё это, разрешая ссылку в определенном контексте.
Интерфейс может меняться:
- На десктопе это может выглядеть как два поля с поиском.
- В сетке (grid) это выглядит как кастомный редактор.
- На мобильных устройствах это выглядит как экран поиска.
Внешний вид меняется, но поведение остается прежним.
Хороший Локатор уважает пользователя. Опытные пользователи используют клавиатуру. Локатор должен завершать выбор мгновенно, если находит уникальное совпадение. Он должен предлагать выбор только в том случае, если найдено несколько совпадений.
Перестаньте относиться к поиску, автозаполнению и всплывающим окнам как к несвязанным виджетам. Признайте Локатор фундаментальной концепцией для бизнес-ПО.
