Что разберём
- Длинные значения: перенести, обрезать или вынестипереключатель
- Много колонок: закрепить, выбрать, уплотнитьнастройка
- Таблица на узком экранетри способа
- Фильтры: видно, что примененодо и после
- Выбор строк и групповые действиятренажёр
- Сотня строк и тысяча строк
- Прогон на длинных данныхпоиск
1Длинные значения: перенести, обрезать или вынести
В макете у всех покупателей имена по 12 букв. В базе рано или поздно появится имя на 50. Что с ним будет, решают заранее — для каждой колонки.
Способов три, и у каждого своя цена:
- перенести на вторую строку — строки станут разной высоты;
- обрезать с многоточием — конец спрячется;
- вынести длинное в отдельное место — понадобится место, куда вынести.
Без правила
| № | Покупатель | Трек-номер | Сумма, ₽ |
|---|---|---|---|
| 1061 | Константинопольская-Щедрина Александра Вячеславовна | RU482917360544RU | 3 480 |
| 1062 | Ли Ан | RU482917360581RU | 890 |
Перенос
| № | Покупатель | Трек-номер | Сумма, ₽ |
|---|---|---|---|
| 1061 | Константинопольская-Щедрина Александра Вячеславовна | RU482917360544RU | 3 480 |
| 1062 | Ли Ан | RU482917360581RU | 890 |
Обрезка
| № | Покупатель | Трек-номер | Сумма, ₽ |
|---|---|---|---|
| 1061 | Константинопольская-Щедрина Александра Вячеславовна | RU482917360544RU | 3 480 |
| 1062 | Ли Ан | RU482917360581RU | 890 |
Обрезка в середине
| № | Покупатель | Трек-номер | Сумма, ₽ |
|---|---|---|---|
| 1061 | Константинопольская-Щедрина Александра Вячеславовна | RU4829…544RU | 3 480 |
| 1062 | Ли Ан | RU4829…581RU | 890 |
| Что в колонке | Что делать с длинным | Где увидеть целиком |
|---|---|---|
| Имя, название товара | Перенос на две строки, дальше обрезка с конца | Подсказка при наведении и карточка |
| Адрес, комментарий | Обрезка с конца или пометка «есть комментарий» | Карточка |
| Номер, код, путь к файлу | Обрезка в середине | Подсказка, кнопка «скопировать» |
| Число, сумма, дата | Не обрезать. Колонка шире самого длинного значения | — |
| Заголовок колонки | Перенос на вторую строку. Если и двух мало — понятное сокращение: «Ср. цена» | Подсказка при наведении, пояснение под таблицей |
2Много колонок: закрепить, выбрать, уплотнить
Когда колонок больше, чем помещается, таблицу листают вбок. Чтобы при этом не потерять, чья это строка, первую колонку закрепляют.
У бухгалтера магазина своя таблица заказов: к номеру и покупателю добавляются способ оплаты, сумма без скидки, скидка, доставка, налог, итог.
Десять колонок на ноутбуке не помещаются.
Сначала проверьте, нельзя ли колонок сделать меньше. Илья Бирман из Бюро Горбунова советует начинать со структуры: разделить таблицу на две, объединить связанные колонки, вынести общее в название таблицы.
Если колонки всё равно не помещаются, работают четыре приёма.
| Приём | Что даёт | Когда нужен |
|---|---|---|
| Закрепить первую колонку | Номер или имя стоят на месте, пока остальное листается | Всегда, если таблица шире экрана |
| Закрепить заголовок | Названия колонок видны, когда листают вниз | Если строк больше, чем помещается на экран |
| Дать выбрать колонки | Каждый оставляет свои: бухгалтеру — налог, оператору — доставку | Если с одной таблицей работают люди с разными задачами |
| Дать выбрать плотность | Больше строк на экране у тех, кто работает с таблицей весь день | В рабочих инструментах, где таблицу смотрят часами |
Попробуйте сами
Пролистайте таблицу ниже вбок: номер заказа остаётся на месте.
Кнопками под таблицей меняется плотность строк.
| № | Дата | Покупатель | Оплата | Товары, ₽ | Скидка, ₽ | Доставка, ₽ | НДС, ₽ | Итог, ₽ | Чек |
|---|---|---|---|---|---|---|---|---|---|
| 1061 | 28.09 | Александра Щедрина | карта | 3 580 | −400 | 300 | 580 | 3 480 | выбит |
| 1062 | 28.09 | Ли Ан | СБП | 890 | 0 | 0 | 148 | 890 | выбит |
| 1063 | 29.09 | Кофейня «Зерно» | счёт | 48 200 | −4 820 | 0 | 7 230 | 43 380 | ждёт оплаты |
| 1064 | 29.09 | Павел Орлов | карта | 12 450 | 0 | 0 | 2 075 | 12 450 | выбит |
В дизайн-системе IBM Carbon у таблицы пять высот строки: 24, 32, 40, 48 и 64 пикселя. Самую высокую там советуют брать, только если в строке две строки текста. А в Nielsen Norman Group советуют закреплять строку заголовков и первую колонку, если таблица больше экрана. И давать прятать колонки так, чтобы было видно, что часть спрятана.
3Таблица на узком экране
Прятать таблицу на телефоне нельзя: оператор на складе работает с планшета, а управляющая смотрит заказы с телефона. Способов показать таблицу на узком экране три, и выбирают по задаче.
Главный вопрос: человек сравнивает строки между собой или смотрит записи по одной? Если сравнивает, ему нужны колонки. Если смотрит по одной, колонки можно превратить в карточки.
Листать вбок
| № | Доставка | Сумма, ₽ | Статус | Покупатель |
|---|---|---|---|---|
| 1051 | 10–14 | 1 850 | Собран | Ирина Соколова |
| 1052 | 10–14 | 890 | Новый | Марат Хасанов |
| 1049 | 18–22 | 12 450 | Новый | Павел Орлов |
Карточки
Главное и раскрытие
| № | Доставка | Сумма, ₽ | Подробнее |
|---|---|---|---|
| 1051 | 10–14 | 1 850 | раскрыть |
| 1052 | 10–14 | 890 | свернуть |
| Марат Хасанов · Колумбия, 250 г · новый · «Позвоните за час» | |||
| 1049 | 18–22 | 12 450 | раскрыть |
| Задача на телефоне | Способ |
|---|---|
| Сравнить значения в строках: суммы, сроки, остатки | Листать вбок, первая колонка закреплена |
| Найти запись и открыть её | Карточки или главное в строке |
| Пробежать список и сделать что-то с каждой записью | Главное в строке, действие — в строке, подробности — по нажатию |
В Nielsen Norman Group для таблиц на телефоне советуют закреплять заголовки и первую колонку, а обрезанной колонкой у края показывать, что таблица листается дальше. Новая таблица Shopify Polaris на узком экране сама превращается в список.
По WCAG таблица данных может листаться вбок — это исключение из критерия 1.4.10 о перестройке под узкий экран. Но заголовок, поиск и страницы вокруг неё перестраиваться обязаны.
4Фильтры: видно, что применено
Фильтр, который не видно, опаснее, чем отсутствие фильтра: человек думает, что видит все заказы, а видит часть.
Оператор вчера отфильтровал заказы по самовывозу, а сегодня открыл таблицу и не нашёл заказ, о котором звонит покупатель.
Фильтр сохранился, но был спрятан за кнопкой «Фильтры».
Такие случаи решают три правила:
- применённые фильтры видны над таблицей;
- каждый можно снять одним нажатием;
- рядом видно, сколько строк осталось из скольких.
| № | Доставка | Покупатель | Сумма, ₽ |
|---|---|---|---|
| 1055 | 30.09 · самовывоз | Анна Коваль | 1 290 |
| 1058 | 30.09 · самовывоз | Игорь Белов | 640 |
| № | Доставка | Покупатель | Сумма, ₽ |
|---|---|---|---|
| 1055 | 30.09 · самовывоз | Анна Коваль | 1 290 |
| 1058 | 30.09 · самовывоз | Игорь Белов | 640 |
| Вопрос | Решение |
|---|---|
| Что сейчас отфильтровано? | Каждый фильтр — плашкой над таблицей, со значением: «Самовывоз», а не «Доставка (1)» |
| Как снять один фильтр? | Крестик на плашке |
| Как вернуть всё? | «Сбросить всё» рядом с плашками |
| Сколько осталось? | «2 из 1 240» в шапке таблицы |
| Фильтр дал ноль строк? | Пустая таблица называет фильтры и предлагает снять тот, без которого что-то найдётся |
| Фильтр сохраняется до завтра? | Можно, если так удобнее работать. Но тогда он особенно заметен, а не ждёт за кнопкой |
Baymard Institute по исследованиям интернет-магазинов советует показывать применённые фильтры списком над результатами, каждый с крестиком, и не ограничиваться числом вроде «Фильтры (2)».
5Выбор строк и групповые действия
Утром оператор передаёт курьеру сорок заказов. По одному — сорок раз одно и то же. Выбор строк и групповое действие делают это за три нажатия.
Выбор строк — это флажок в начале каждой строки и флажок в заголовке, который выбирает все.
Когда выбрана хотя бы одна строка, над таблицей появляется панель: сколько выбрано и что с ними можно сделать. Посмотрите, как меняется таблица по шагам.
Ничего не выбрано
| Выбрать все | № | Доставка | Покупатель | Сумма, ₽ |
|---|---|---|---|---|
| 1051 | 30.09 · 10–14 | Ирина Соколова | 1 850 | |
| 1047 | 30.09 · 14–18 | Ольга Ким | 2 670 | |
| 1044 | 30.09 · 14–18 | Сергей Лебедев | 1 780 |
Выбраны два
| Выбрать все | № | Доставка | Покупатель | Сумма, ₽ |
|---|---|---|---|---|
| 1051 | 30.09 · 10–14 | Ирина Соколова | 1 850 | |
| 1047 | 30.09 · 14–18 | Ольга Ким | 2 670 | |
| 1044 | 30.09 · 14–18 | Сергей Лебедев | 1 780 |
Все на странице
| Выбрать все | № | Доставка | Покупатель | Сумма, ₽ |
|---|---|---|---|---|
| 1051 | 30.09 · 10–14 | Ирина Соколова | 1 850 | |
| 1047 | 30.09 · 14–18 | Ольга Ким | 2 670 | |
| 1044 | 30.09 · 14–18 | Сергей Лебедев | 1 780 |
После действия
| Выбрать все | № | Доставка | Покупатель | Сумма, ₽ |
|---|---|---|---|---|
| Собранных заказов нетВсе 42 переданы курьеру. | ||||
Спросить до или отменить после
Групповое действие меняет десятки записей одним нажатием, и ошибиться в нём дороже, чем в строке.
Защитить можно двумя способами: спросить до или дать отменить после.
Подтверждение нужно там, где отменить нельзя. Где можно — лучше сразу сделать и показать «Отменить»: вопрос «Вы уверены?» на каждое действие приучает нажимать «Да» не читая.
Проверьте себя
Восемь групповых действий в админке. Спросить до или дать отменить после?
Передать курьеру 42 собранных заказа.
Сразу, с отменойДействие частое, и пока курьер не забрал заказы, его можно отменить. Вопрос каждое утро приучит нажимать «Да» не глядя.
Отменить 12 заказов: каждому покупателю уйдёт письмо об отмене, деньги вернутся на карту.
ПодтверждениеПисьма и возврат денег не отменить. В вопросе — число и последствия: «Отменить 12 заказов? Покупатели получат письма, 21 480 ₽ вернутся на карты».
Выгрузить 300 выбранных заказов в файл.
Ничего не нужноВыгрузка ничего не меняет в данных. Хватит сообщения, что файл готов.
Переместить 8 отзывов в архив.
Сразу, с отменойИз архива отзывы возвращаются. «8 отзывов в архиве. Отменить».
Удалить навсегда 1 240 заказов за сентябрь: так просит сделать новая бухгалтерская программа.
ПодтверждениеНавсегда — значит без отмены, и строк очень много. В вопросе — число и что пропадёт. Можно ещё попросить ввести это число, чтобы не нажать по привычке.
Поставить статус «Собран» 15 заказам.
Сразу, с отменойСтатус можно вернуть, покупатель ничего не получит. Отмена спасает от промаха строкой.
Разослать 400 покупателям письмо с промокодом.
ПодтверждениеОтправленное письмо не вернуть. В вопросе — сколько получателей и какое письмо уходит.
Напечатать накладные для 42 заказов.
Ничего не нужноДанные не меняются. Печать и так спрашивает, на каком принтере печатать.
6Сотня строк и тысяча строк
Макет рисуют на десяти строках. Таблица живёт на тысяче. Что человек видит при тысяче строк, решают заранее.
Три способа показать много строк:
- по страницам;
- кнопкой «Показать ещё»;
- бесконечной прокруткой, когда строки догружаются сами.
Для рабочей таблицы бесконечная прокрутка подходит хуже всего. До подвала не добраться, общее число строк не видно, а вернуться к заказу, на котором остановился, трудно.
В Nielsen Norman Group её не советуют, когда нужно найти что-то конкретное или сравнить элементы длинного списка. А это и есть работа с таблицей.
| Способ | Что хорошо | Что плохо | Когда брать |
|---|---|---|---|
| Страницы | Видно, сколько всего строк и на какой странице человек сейчас; к странице можно вернуться по ссылке | Сравнивать строки с разных страниц неудобно | Рабочие таблицы: заказы, заявки, клиенты |
| «Показать ещё» | Список растёт, пока нужно, подвал доступен | Длинный список тяжелеет, место легко потерять | Списки, которые смотрят подряд: история заказов покупателя |
| Бесконечная прокрутка | Не нужно нажимать | Нет подвала, нет общего числа, трудно вернуться на место | Лента, которую листают без цели. В рабочей таблице — почти никогда |
Что ещё решить, когда строк много:
| Вопрос | Решение в таблице заказов |
|---|---|
| Сколько строк на странице? | 25 по умолчанию, выбор 25, 50 или 100 — рядом с номерами страниц |
| Сколько всего? | «1–25 из 1 240» в подвале и «1 240» в шапке |
| Что видно при листании вниз? | Заголовок таблицы закреплён: названия колонок не уезжают |
| Что при возврате из карточки? | Та же страница, те же фильтры и сортировка, строка, из которой ушли, на виду |
| Что пока грузится следующая страница? | Строки на месте, поверх — скелет или индикатор в подвале. Таблица не прыгает к началу |
| Что, если строк 50 000? | Поиск и фильтры важнее листания: столько страниц никто не пролистает |
7Прогон на длинных данных
Таблицу заказов прогнали на выгрузке из настоящей базы: самые длинные имена, адреса и суммы месяца. Пять мест сломались.
Нажимайте на куски таблицы, которые вы бы переделали. Разбор покажется под таблицей. Нормальные куски тоже можно нажать.
| № · закреплена | Покупатель | Интервал доставки | Трек-номер | Сумма, ₽ |
|---|---|---|---|---|
| 1061 | Константинопольская-Щедрина Александра Вячеславовна | 10:00–14:00 | RU482917360544RU | 3 480 |
| 1063 | Кофейня «Зерно» | 09:00–12:00 | RU482917360581RU | 43 380 |
| 1064 | Павел Орлов | 18:00–22:00 | RU482917360613RU | 12 450 |
- «Заказы» без числа строк и кнопка «Фильтры (3)».Переделать. Три фильтра применены, но не видно какие, и не видно, сколько строк осталось из скольких. Плашки со значениями над таблицей и «3 из 1 240» в шапке.
- «Выбрано: 25» и «Удалить».Переделать. Флажок в заголовке выбрал видимые 25 строк, а панель не говорит, что это только эта страница, и не предлагает выбрать все. А удаление 25 заказов идёт без вопроса и без отмены.
- Первая колонка закреплена.Оставить. Таблица шире экрана, и номер заказа остаётся на месте, пока листают вбок.
- Заголовок «Интервал доставки» в две строки.Оставить. Длинный заголовок перенесён, а не обрезан: видно, что в колонке, и колонка не шире своих данных.
- Имя на две строки.Оставить. Имя читают целиком, и две строки — в пределах правила. Строка стала выше, но ничего не уехало.
- Трек-номера обрезаны с конца.Переделать. Все номера начинаются с «RU48291», и после обрезки они одинаковые. Отличается конец — обрезку ставят в середину: «RU4829…544RU».
- Сумма «43 3…».Переделать. Числа не обрезают. Самая крупная сумма месяца — ровно та, которую ищут, а она не читается. Колонка шире самого длинного числа, ужимается текстовая.
- Суммы по правому краю.Оставить. Разряды стоят друг под другом, крупное видно сразу.
- «Загружаем ещё…» — бесконечная прокрутка.Переделать. В рабочей таблице не видно, сколько всего, а после карточки заказа не вернуться на место. Страницы с «1–25 из 1 240».
- «Строк на странице: 25».Оставить. Разумное число по умолчанию, и тот, кому мало, выберет 50 или 100.
Все пять найдены. Спрятанные фильтры, «все», которых только 25, номера, неотличимые после обрезки, обрезанная сумма и бесконечная прокрутка. На десяти строках из макета ни одна из этих поломок не видна.
8Задание
Доведите свою таблицу до настоящих объёмов: фильтры, выбор строк, групповое действие, поведение на узком экране. Прогоните её на данных с длинными значениями.
Часть 1 · Собрать худшие данные, 20 минут
- Возьмите таблицу из задания Junior или любую рабочую таблицу своего продукта.
- Соберите худшие значения для каждой колонки: самое длинное, самое короткое, пустое. Лучше из настоящей выгрузки, а не придуманные.
- Выпишите объёмы: сколько строк обычно, сколько в самый загруженный день, сколько за год.
- Решите по каждой колонке, что делать с длинным: перенос, обрезка с конца, обрезка в середине или «не обрезать».
ТАБЛИЦА: ______________________ Дата: __.__.____ ОБЪЁМЫ обычно: ____ строк в пиковый день: ____ за год: ____ показ: страницы по ____ / «Показать ещё» почему: __________ КОЛОНКИ И ДЛИННЫЕ ЗНАЧЕНИЯ колонка ________ самое длинное: ________________ перенос / обрезка с конца / в середине / не обрезать колонка ________ самое длинное: ________________ перенос / обрезка с конца / в середине / не обрезать первая колонка закреплена: да / нет УЗКИЙ ЭКРАН задача на телефоне: сравнить / найти и открыть / пройти по списку способ: листать вбок / карточки / главное и раскрытие что остаётся на экране: ______________________ ФИЛЬТРЫ где видно применённые: ______________________ «N из M»: где ______________ сброс всего: где ______________ ВЫБОР И ГРУППОВЫЕ ДЕЙСТВИЯ действие ________________ отменить можно: да / нет → отмена / подтверждение «все на странице» → «выбрать все N»: текст ______________________ ВОЗВРАТ ИЗ КАРТОЧКИ: страница, фильтры, сортировка сохраняются: да / нет
Часть 2 · Нарисовать, 60 минут
- Подставьте худшие данные в таблицу и поправьте колонки по своим решениям.
- Нарисуйте фильтры в применённом виде: плашки, «N из M», «Сбросить всё», пустой результат.
- Нарисуйте выбор по шагам: ничего, часть, все на странице с предложением выбрать все, после действия с отменой.
- Нарисуйте узкий экран выбранным способом на тех же худших данных.
Часть 3 · Проверить, 15 минут
- Проверьте каждую ширину: ноутбук, планшет, телефон. Ничего не уехало за край, числа не обрезаны.
- Пройдите сценарий «отфильтровал → выбрал → сделал → ошибся → отменил» и сценарий «открыл карточку → вернулся».
Что должно получиться
- Таблица на худших данных на трёх ширинах.
- Фильтры и выбор строк по шагам, с отменой группового действия.
- Заполненный шаблон с решениями по каждой колонке.
План работы: 20 минут на данные, час на макеты, 15 минут на проверку. Всего — около полутора часов.
Частые сложности
- «Настоящих данных не дают». Попросите не данные, а крайние значения: длину самого длинного имени, самую крупную сумму, число строк за год. Это не личные данные, а цифры.
- «На телефоне таблицей никто не пользуется». Посмотрите статистику: заходят ли в админку с телефона. Если заходят хоть изредка, таблица должна там хотя бы читаться.
- «Отмену сложно сделать». Тогда это действие с подтверждением, и в вопросе — число записей и что с ними будет. Но спросите разработку: часто «отменить» — это просто вернуть прежний статус.
- «Фильтров слишком много для плашек». Плашками показывают применённые фильтры, а не все возможные. Применённых обычно два-три.
9Чек-лист и ошибки
Таблица готова к настоящим данным, если
- Для каждой колонки решено, что делать с длинным значением
- Числа не обрезаются, длинный заголовок переносится или понятно сокращается
- Обрезанное значение можно прочитать целиком в карточке
- Первая колонка закреплена, если таблица шире экрана
- На телефоне остаётся то, по чему решают, и видно, как добраться до остального
- Применённые фильтры видны плашками, рядом «N из M» и «Сбросить всё»
- «Выбрать все» говорит, сколько выбрано, и предлагает выбрать все подходящие
- Групповое действие либо отменяется, либо спрашивает с числом и последствиями
- После возврата из карточки — та же страница, фильтры и сортировка
Что мешает
- Макет на средних данных. Поломки видны только на самых длинных.
- Фильтры за кнопкой. Человек не знает, что видит часть строк.
- «Выбраны все» на одной странице. Действие уходит на 25 строк вместо 1 240, или наоборот.
- «Вы уверены?» на всё. Люди привыкают нажимать «Да», и вопрос перестаёт защищать.
- Бесконечная прокрутка в рабочей таблице. Не видно, сколько всего, и не вернуться на место.
10Три ступени темы
В этом уроке учимся держать настоящие объёмы и настоящую работу с таблицей. На следующей ступени — сводить все таблицы продукта к общим правилам.
| Ступень | Что нужно уметь | Как проверить результат |
|---|---|---|
| Junior | Выбирать колонки под решение; выравнивать числа и текст; показывать сортировку; рисовать пустую таблицу с объяснением; решать, где живёт действие над строкой | Для каждой колонки можно объяснить, какое решение она помогает принять |
| Middle — этот урок | Держать длинные значения, много колонок и сотни строк; проектировать таблицу для узкого экрана; показывать применённые фильтры; давать выбор строк и групповые действия с отменой | На данных с самыми длинными значениями раскладка не ломается ни на одной ширине |
| Senior | Сводить таблицы продукта к общим правилам; задавать поведение по умолчанию; описывать, когда таблица не подходит; проверять новые экраны по правилам и обновлять правила | Новая таблица, собранная другим дизайнером по правилам, ведёт себя так же, как остальные |
Что почитать дальше
- Mobile Tables: Comparisons and Other Data TablesКак уместить большую таблицу в телефон: ширина колонок, закреплённые шапка и первый столбец, заметная прокрутка вбок, выбор нужных строк и колонок. Примеры 2017 года, в основном сравнение товаров.
- Overflow contentКороткий паттерн IBM Carbon об обрезке текста: многоточие в начале, в середине и в конце, обязательная подсказка с полным текстом и что обрезать нельзя. Про таблицы и телефон там ничего.
- Расскажите про вёрстку больших таблицОтвет Ильи Бирмана про таблицу в 20 колонок: разделить и объединить колонки, сократить заголовки, переносить длинные значения, закрепить шапку — или оставить таблицу широкой. С девятью примерами 2015 года.
- Display “Applied Filters” in an OverviewИсследование Baymard на каталогах магазинов: почему без списка выбранных фильтров люди неверно понимают, что видят, где этот список ставить и почему одного числа «Фильтры (2)» мало. Перенос на рабочие таблицы — вывод урока.
- Infinite Scrolling: When to Use It, When to Avoid ItЧем бесконечная прокрутка удобна и чем мешает: трудно найти элемент снова, не видно конца, недоступен подвал. Когда лучше страницы или «Показать ещё» и почему после карточки человека возвращают на то же место.
- Пагинация таблицы ордеров с тысячами строкКороткий ответ Ильи Бирмана про таблицу на десятки тысяч строк: вместо умной разбивки на страницы разобрать задачи поиска и сравнения и дать под них фильтры, поиск и отчёты.