Что разберём
- Колонки под решение, а не под базутренажёр
- Числа справа, текст слевадо и после
- Сортировка: по чему и в какую сторонуживая таблица
- Пустая таблицапереключатель
- Где живёт действие над строкойтренажёр
- Найдите ошибки в таблице заказовпоиск
1Колонки под решение, а не под базу
Таблицу собирают не из всех полей, которые есть в базе, а из тех, по которым человек что-то решает.
У заказа в базе магазина больше двадцати полей. Например: номер, дата, покупатель, телефон, почта, адрес, состав, вес, сумма, скидка, промокод, способ оплаты, способ доставки, интервал, комментарий, метка рекламной кампании.
Если вывести их все, таблица станет шире экрана, и нужное в ней придётся искать.
Зачем открывают таблицу
Сначала поймите, зачем человек открывает таблицу. В Nielsen Norman Group выделяют четыре задачи, ради которых работают с таблицами данных:
- найти записи по условию;
- сравнить значения;
- посмотреть или изменить одну запись;
- сделать что-то с записями.
У оператора утром все четыре. Найти заказы на сегодня, сравнить суммы, открыть заказ, когда звонит покупатель, передать собранное курьеру.
| Поле | Какое решение помогает принять | Где ему место |
|---|---|---|
| Доставка: день и интервал | Что собирать первым | Колонка, по ней отсортировано |
| Номер заказа | Какой заказ назвать курьеру или покупателю | Колонка |
| Сумма | Какие заказы проверить перед отправкой: от 10 000 ₽ магазин проверяет вручную | Колонка |
| Статус | Что уже собрано, а что ещё нет | Колонка |
| Телефон покупателя | Никакого в таблице: звонят из карточки заказа | Карточка заказа |
| Метка рекламной кампании | Никакого у оператора: это для маркетинга | Отчёт маркетинга |
Пометка в строке
Есть и третий путь, между колонкой и карточкой, — пометка в строке.
Например, комментарий «Позвоните за час» длинный, у большинства заказов его нет, и своя колонка вышла бы почти пустой. Но оператору важно видеть, что комментарий есть.
Тогда в строке стоит короткая пометка, а текст — в карточке.
Проверьте себя
Восемь полей заказа. Колонка, пометка или карточка?
Дата и интервал доставки: «30 сентября, 10:00–14:00».
КолонкойПо ней оператор решает, что собирать первым. По ней же таблица и отсортирована.
Телефон покупателя.
Только в карточкеЗвонят не из таблицы, а открыв заказ. Одиннадцать цифр в каждой строке мешают читать всё остальное.
Комментарий покупателя: «Позвоните за час, домофон не работает».
Пометкой в строкеВажно заметить, что он есть, а читают его в карточке. Своя колонка была бы широкой и почти пустой.
Номер заказа.
КолонкойПо номеру ищут заказ, когда звонит покупатель, и называют его курьеру.
Промокод, по которому дали скидку.
Только в карточкеСкидка уже вошла в сумму. Оператор по промокоду ничего не решает.
Отметка «Упаковать как подарок» — бывает у одного заказа из двадцати.
Пометкой в строкеСборщик должен её заметить, но колонка «да / нет», где почти везде «нет», займёт место зря.
Статус: новый, собран, передан курьеру.
КолонкойПо статусу видно, что ещё не собрано. Это главный вопрос утра.
Метка рекламной кампании, из которой пришёл покупатель.
Только в карточкеЭто данные для маркетинга. Оператору они не нужны, а в отчёте маркетинга им самое место.
2Числа справа, текст слева
Числа, которые сравнивают, выравнивают по правому краю. Тогда тысячи стоят под тысячами, и крупную сумму видно, не читая.
Текст читают слева направо, поэтому имена и составы стоят по левому краю.
Число сравнивают по величине, а величину видно по длине: 12 450 длиннее 890. Но видно это, только если разряды стоят друг под другом, то есть по правому краю.
Так советуют и GOV.UK, и Material Design, и Контур.Гайды.
Всё по левому краю
| № | Покупатель | Вес | Сумма |
|---|---|---|---|
| 1051 | Ирина Соколова | 0,5 кг | 1 850 ₽ |
| 1052 | Марат Хасанов | 0,25 кг | 890 ₽ |
| 1047 | Ольга Ким | 0,75 кг | 2 670 ₽ |
| 1049 | Павел Орлов | 3,2 кг | 12 450 ₽ |
| 1053 | Дина Абрамова | 0,25 кг | 990 ₽ |
По правилу
| № | Покупатель | Вес, кг | Сумма, ₽ |
|---|---|---|---|
| 1051 | Ирина Соколова | 0,50 | 1 850 |
| 1052 | Марат Хасанов | 0,25 | 890 |
| 1047 | Ольга Ким | 0,75 | 2 670 |
| 1049 | Павел Орлов | 3,20 | 12 450 |
| 1053 | Дина Абрамова | 0,25 | 990 |
| Что в колонке | Как выровнять | Что ещё |
|---|---|---|
| Текст: имя, состав, адрес | По левому краю | — |
| Числа, которые сравнивают: сумма, вес, количество | По правому краю | Поровну знаков после запятой, единица измерения — в заголовке, цифры одной ширины |
| Номера и коды: № заказа, артикул | По левому краю | Их не складывают и не сравнивают по величине |
| Заголовок колонки | Так же, как данные под ним | Иначе заголовок висит над пустым местом |
Цифры одной ширины
Чтобы разряды вставали ровно, у цифр должна быть одинаковая ширина. У многих шрифтов есть такой набор — моноширинные цифры, подробно о них в уроке «Типографика, Senior». Проверьте свой шрифт: наберите столбиком 1111 и 5555 и посмотрите, одной ли ширины строки.
3Сортировка: по чему и в какую сторону
Сортировка нужна, чтобы нужное оказалось наверху. Человек должен видеть, по какой колонке отсортировано и в какую сторону.
Порядок по умолчанию выбирают под главную задачу.
Оператору утром нужно собрать то, что везти раньше. Поэтому заказы стоят по дате и интервалу доставки: ближайшие сверху.
Если бы таблица открывалась по номеру заказа, оператор каждое утро начинал бы с того, что пересортировывает её.
Попробуйте сами
Нажмите на заголовки «Доставка», «Покупатель» и «Сумма». Повторное нажатие меняет направление.
| № | Доставка | Покупатель | Состав | Сумма, ₽ | Статус |
|---|---|---|---|---|---|
| 1051 | 30.0910:00–14:00 | Ирина Соколова | Эфиопия, Кения | 1 850 | Собран |
| 1052 | 30.0910:00–14:00 | Марат Хасанов | Колумбия | 890 | Новый |
| 1047 | 30.0914:00–18:00 | Ольга Ким | Бразилия, 3 пачки | 2 670 | Собран |
| 1049 | 30.0918:00–22:00 | Павел Орлов | Кения, кофемолка | 12 450 | Новый |
| 1053 | 01.1010:00–14:00 | Дина Абрамова | Эфиопия без кофеина | 990 | Новый |
| 1044 | 01.1014:00–18:00 | Сергей Лебедев | Гватемала, 2 пачки | 1 780 | Собран |
Отсортировано: доставка, сначала ближайшие
| Что показать | Как |
|---|---|
| По какой колонке отсортировано | Стрелка только у одной колонки, её заголовок темнее остальных |
| В какую сторону | Стрелка вверх или вниз. Под таблицей или в подсказке — словами колонки: «сначала ближайшие», «сначала крупные» |
| Какие колонки можно сортировать | Приглушённая двойная стрелка или подчёркивание при наведении. Несортируемые колонки без значка |
| Что будет по нажатию | Первое нажатие — самый нужный порядок, второе — обратный |
Илья Бирман из Бюро Горбунова идёт дальше: стрелка в шапке путает, а сортировать в обе стороны часто незачем. Он советует подсветить колонку, по которой отсортировано, или назвать полезные порядки словами — «Сначала самые нагруженные» вместо «Нагрузка ↑». В живой таблице выше словами сделана строка под ней.
Для разработки у сортировки есть своя разметка: у заголовка, по которому отсортировано, стоит атрибут aria-sort с направлением, а сам заголовок сделан кнопкой. Так порядок таблицы слышит и тот, кто читает её экранным диктором. Пример такой таблицы есть в руководстве W3C по доступным компонентам.
4Пустая таблица
Пустая таблица объясняет, почему в ней пусто, и показывает, что сделать. Поиск и фильтры над ней остаются на месте: через них строки и возвращают.
Причин у пустоты три, как и у любого пустого экрана из урока про состояния.
Пусто бывает и из-за ошибки или нехватки прав, но тогда это уже ошибка, и показывают её как ошибку. Как развести все четыре случая текстом, разобрано в уроке «Тексты ошибок и пустых состояний», Middle.
У таблицы есть особенность: она часто пустеет из-за фильтра или поиска. Тогда главное — показать, что именно отфильтровано.
Ещё ничего нет
| № заказа | Дата | Причина | Сумма, ₽ |
|---|---|---|---|
| Возвратов пока не былоКогда покупатель вернёт заказ, возврат появится здесь: причина, сумма и кто его оформил. | |||
Ничего не нашлось
| № | Доставка | Покупатель | Сумма, ₽ |
|---|---|---|---|
| На 30 сентября самовывоза нетБез фильтра «самовывоз» на эту дату 14 заказов.Показать все доставки | |||
Всё сделано
| № | Доставка | Состав | Статус |
|---|---|---|---|
| Все заказы на сегодня собраныСледующие придут вечером. Собранные — во вкладке «Передать курьеру». | |||
5Где живёт действие над строкой
У строки обычно одно частое действие и несколько редких. Частое видно сразу, редкие убраны в меню.
Когда у каждой строки пять кнопок, таблица превращается в ряды одинаковых кнопок, и данные теряются.
Разложите действия по частоте и по тому, сколько нужно знать, чтобы их сделать.
| Где | Для каких действий | В таблице заказов |
|---|---|---|
| Строка целиком | Открыть запись. Это самое частое действие с таблицей | Нажатие по строке открывает карточку заказа |
| Кнопка в строке | Одно частое действие, которое делают, не открывая запись | «Передать курьеру» — оператор делает это с каждым собранным заказом |
| Меню «⋯» в конце строки | Редкие действия. Опасные — там же, с подтверждением или отменой | «Скопировать номер», «Повторить заказ», «Отменить заказ» |
| Только в карточке | Действия, для которых нужно видеть всю запись | «Изменить адрес», «Изменить состав» |
| № | Покупатель | Сумма, ₽ | Действия |
|---|---|---|---|
| 1047 | Ольга Ким | 2 670 | Открыть Изменить Курьеру Печать Удалить |
| № | Покупатель | Сумма, ₽ | Действия |
|---|---|---|---|
| 1047 | Ольга Ким | 2 670 | Передать курьеру ⋯ ещё действия |
В Контур.Гайдах быстрые действия и флажки строки, наоборот, появляются при наведении. Это решение для рабочих мест, где у всех мышь, и таблица без них спокойнее. Если таблицу открывают с планшета, как оператор «Лесной обжарки» на складе, прятать нельзя.
Проверьте себя
Восемь действий над заказом. Где им место?
Посмотреть состав и адрес заказа.
Строка целикомЭто самое частое действие с таблицей. Отдельная кнопка «Открыть» в каждой строке не нужна.
«Передать курьеру»: оператор делает это с каждым собранным заказом, 40–60 раз за утро.
Кнопка в строкеЧастое действие, и для него не нужно открывать заказ. Каждое лишнее нажатие повторится шестьдесят раз.
«Отменить заказ» — пару раз в неделю, после звонка покупателя.
Меню «⋯»Редкое и опасное действие. В меню, с подтверждением: «Отменить заказ № 1047? Покупателю придёт письмо».
«Изменить адрес доставки».
Только в карточкеЧтобы менять адрес, нужно видеть весь заказ: интервал, комментарий, телефон. В строке этого нет.
«Скопировать номер заказа» — нужен, когда пишут в службу доставки, раз в несколько дней.
Меню «⋯»Редкое действие. Своя кнопка в каждой строке заняла бы место ради одного нажатия в неделю.
«Отметить собранным» в таблице сборщика: он собирает заказы один за другим весь день.
Кнопка в строкеДля сборщика это главное действие таблицы. То, что у оператора было бы в меню, у сборщика стоит кнопкой.
Покупатель звонит и спрашивает, где его заказ.
Строка целикомНайти заказ поиском по номеру или имени и открыть его. Всё, что нужно для ответа, — в карточке.
«Повторить заказ для покупателя» — когда покупатель просит то же самое по телефону.
Меню «⋯»Бывает, но нечасто. В меню оно не мешает и находится, когда нужно.
6Найдите ошибки в таблице заказов
Макет таблицы, который новый дизайнер принёс на обсуждение. Пять мест в нём мешают оператору.
Нажимайте на куски таблицы, которые вы бы переделали. В разборе будет, что с ними не так. Нормальные куски тоже можно нажать.
| № | Доставка ↕ | Покупатель ↕ | UTM-метка ↕ | Сумма ↕ | Действия |
|---|---|---|---|---|---|
| 1051 | 30.0910:00–14:00 | Ирина Соколова | vk_sept_promo | 1 850 руб. | Курьеру⋯ |
| 1052 | 30.0910:00–14:00 | Марат Хасановкомментарий | — | 890 руб. | Курьеру ⋯ |
| 1049 | 30.0918:00–22:00 | Павел Орлов | yandex_direct | 12 450 руб. | кнопки при наведении |
| фильтр «Завтра»:Нет данных | |||||
- Поиск «Номер, имя или телефон».Оставить. Покупатель звонит и называет что-то одно из трёх. Поиск по всем трём полям сразу — ровно то, что нужно.
- Одинаковые стрелки ↕ у всех колонок.Переделать. Непонятно, по какой колонке отсортировано и в какую сторону. У активной колонки — стрелка направления, а метку кампании сортировать незачем.
- Колонка «UTM-метка».Убрать. Оператор по ней ничего не решает, а место она занимает. Это данные для отчёта маркетинга.
- Номер заказа по левому краю.Оставить. Номер ищут глазами, а не сравнивают по величине, поэтому он стоит как текст.
- Суммы «1 850 руб.» по левому краю.Переделать. Разряды не стоят друг под другом, и 12 450 на глаз не длиннее 1 850. Суммы — по правому краю, «руб.» — один раз в заголовке: «Сумма, ₽».
- Кнопка «Курьеру» и меню «⋯».Оставить. Частое действие — кнопкой, редкие — в меню, которое видно всегда.
- Пометка «комментарий» у заказа.Оставить. Видно, что комментарий есть, а текст — в карточке. Своя колонка была бы почти пустой.
- Кнопки появляются только при наведении.Переделать. На планшете у склада наводить нечем, а мышью о кнопках узнают случайно. Кнопка и меню видны в каждой строке всегда.
- «Нет данных» под фильтром «Завтра».Дописать. Непонятно: заказов на завтра нет или они ещё грузятся. Нужно «На завтра заказов пока нет» и что делать: сбросить фильтр или посмотреть сегодняшние.
- Подвал «1–25 из 1 240» и страницы.Оставить. Видно, сколько всего заказов и какая часть на экране.
Все пять найдены. Лишняя колонка, суммы по левому краю, стрелки, по которым не понять порядок, спрятанные кнопки и пустота без объяснения. Каждую из этих ошибок оператор встречает десятки раз за утро.
7Задание
Соберите таблицу своего продукта с сортировкой, действиями над строкой и пустым состоянием.
Часть 1 · Выбрать колонки, 20 минут
- Выберите таблицу, с которой кто-то работает каждый день: заказы, заявки, клиенты, товары. Если своего продукта нет, возьмите таблицу заказов «Лесной обжарки» из урока.
- Назовите, кто с ней работает и что он делает первым делом, когда её открывает.
- Выпишите все поля записи и у каждого — какое решение оно помогает принять в таблице.
- Разложите поля: колонка, пометка в строке или только карточка.
ТАБЛИЦА: ______________________ Дата: __.__.____ КТО РАБОТАЕТ: ______________________ ЧТО ДЕЛАЕТ ПЕРВЫМ ДЕЛОМ: ______________________ КОЛОНКИ поле ____________ решение ____________ край: левый / правый сортировка: да / нет поле ____________ решение ____________ край: левый / правый сортировка: да / нет поле ____________ решение ____________ край: левый / правый сортировка: да / нет ПОМЕТКИ В СТРОКЕ: ______________________ ТОЛЬКО В КАРТОЧКЕ: ______________________ ПОРЯДОК ПО УМОЛЧАНИЮ: по ____________, сначала ____________ ПОЧЕМУ: ______________________ ДЕЙСТВИЯ строка целиком: ______________________ кнопка в строке: ______________________ меню «⋯»: ______________________ только в карточке: ______________________ ПУСТО ещё ничего нет: ______________________ ничего не нашлось: ______________________ всё сделано: ______________________
Часть 2 · Нарисовать, 40 минут
- Соберите таблицу на настоящих данных: пять–семь строк с разными суммами, именами и датами, а не «Текст, текст, 100».
- Выровняйте колонки по правилу и перенесите единицы измерения в заголовки.
- Покажите сортировку по умолчанию: стрелка только у одной колонки.
- Расставьте действия: строка открывает запись, частое — кнопкой, редкие — в меню.
- Нарисуйте три пустых состояния с текстом и действием.
Часть 3 · Проверить, 10 минут
- Пройдите по колонкам и для каждой скажите вслух, какое решение она помогает принять.
- Покажите таблицу тому, кто с ней будет работать, и спросите, что он ищет первым. Если это не наверху — порядок по умолчанию выбран не тот.
Что должно получиться
- Макет таблицы с сортировкой по умолчанию и действиями над строкой.
- Три пустых состояния с текстом и действием.
- Заполненный шаблон колонок с решением у каждой.
План работы: 20 минут на колонки, 40 на макет, 10 на проверку. Всего — чуть больше часа.
Частые сложности
- «Заказчик просит показать всё». Спросите, что он решает по каждому полю. Поля без ответа уйдут в карточку или в выгрузку, и никто по ним не заскучает.
- «Не знаю, какой порядок нужен». Посмотрите, что человек делает первым делом. Ищет срочное — сортируйте по сроку, ищет крупное — по сумме, ищет новое — по дате создания.
- «Действий у строки много, и все важные». Посчитайте, как часто делают каждое. Кнопкой остаётся одно, редко два.
- «В макете таблица всегда полная». Потому что в макете данные придумали. Пустое состояние видят все новые пользователи и все, кто промахнулся фильтром.
8Чек-лист и ошибки
Таблица готова, если
- Для каждой колонки названо решение, которое по ней принимают
- Числа, которые сравнивают, стоят по правому краю, заголовки над ними — тоже
- Единицы измерения — в заголовке, а не в каждой ячейке
- Порядок по умолчанию выбран под главную задачу
- Видно, по какой колонке отсортировано и в какую сторону
- Строка целиком открывает запись
- Частое действие видно в строке, редкие — в меню, которое тоже видно
- Для пустой таблицы есть текст: почему пусто и что сделать
Что мешает
- Все поля базы в колонках. Нужное теряется, таблица шире экрана.
- Суммы по левому краю. Крупное не видно, приходится читать каждое число.
- Стрелки на всех колонках. Непонятно, как таблица отсортирована сейчас.
- Кнопки при наведении. На сенсорном экране их нет, мышью их не находят.
- «Нет данных». Непонятно, пусто, ошибка или ещё грузится.
9Три ступени темы
В этом уроке учимся собирать таблицу, с которой можно работать. На следующих ступенях — держать настоящие объёмы данных, а потом сводить все таблицы продукта к общим правилам.
| Ступень | Что нужно уметь | Как проверить результат |
|---|---|---|
| Junior — этот урок | Выбирать колонки под решение; выравнивать числа и текст; показывать сортировку; рисовать пустую таблицу с объяснением; решать, где живёт действие над строкой | Для каждой колонки можно объяснить, какое решение она помогает принять |
| Middle | Держать длинные значения, много колонок и сотни строк; проектировать таблицу для узкого экрана; показывать применённые фильтры; давать выбор строк и групповые действия с отменой | На данных с самыми длинными значениями раскладка не ломается ни на одной ширине |
| Senior | Сводить таблицы продукта к общим правилам; задавать поведение по умолчанию; описывать, когда таблица не подходит; проверять новые экраны по правилам и обновлять правила | Новая таблица, собранная другим дизайнером по правилам, ведёт себя так же, как остальные |
Что почитать дальше
- Data Tables: Four Major User TasksЧетыре задачи, под которые строят рабочую таблицу, и что нужно каждой: понятный первый столбец, закреплённая шапка, скрытие колонок, правка записи в боковой панели, групповые действия.
- ТаблицыГайд Контура по рабочим таблицам на русском: какие колонки оставить, выравнивание и формат чисел, шапка, выбор строк, действия в строке, итоги и настройка колонок. Действия и флажки там появляются при наведении.
- TableКороткая справка GOV.UK: когда нужна таблица, подпись и заголовки строк и колонок для экранного диктора, числа по правому краю, что делать с большой таблицей. Половина страницы — код.
- Как верстать заголовки таблиц с сортировкой?Илья Бирман о том, почему стрелка в заголовке сбивает с толку и чем её заменить: подсветить колонку или вынести порядки в список со словами «Сначала новые». В комментариях с ним спорят.
- Empty statesПустые состояния в IBM Carbon: данных ещё нет, ничего не нашлось, всё сделано, ошибка или нет доступа — что писать и какую кнопку дать. У пустой таблицы Carbon убирает и шапку, и подвал.
- What to consider when creating tablesТаблицы в статьях и отчётах: когда таблица лучше графика, как сузить колонки, какие строки ставить первыми, когда нужны зебра и поиск. Совет прятать колонки на телефоне — для статей, а не для рабочих таблиц.