Табличная форма
От: Johny B.Good Россия  
Дата: 16.11.05 12:10
Оценка:
Привет!

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

Рассмотрим пример:



Задача 1.
Необходимо отсортировать записи по году и модели по возрастанию. Как это реализовать в браузере, ведь кнопка Ctrl не работает? Я сделал отдельный диалог "Сортировка", в котором можно выбрать колонки для сортировки и направление сортировки, а также колонку для группировки. Вот он:



Проблема в том, что для задания сортировки по двум колонкам я должен сделать порядка 7 кликов(вместо 2): Фильтр — Сортировка — Клик на селект №1 — Клик выбрал колонку — Клик на селект №2 — Клик выбрал колонку — Установить. Есть ли варианты оптимизации?

Задача 2.
Необходимо отфильтровать записи, у которых год больше или равен 2003, а количество проданных машин больше 4. Вот диалог, который решает эту задачу:



По этому диалогу у меня больше всего вопросов и меньше всего ответов:
1. Выпадающий список для задания оператора мне совсем не нравится, есть ли другие варианты? Необходимо учесть, что поля в фильтре могут быть 4 типов:

-строка (операторы "Равно", "Не равно" и "Подстрока", но фактически сводятся к одному — "подстрока", т.к остальные редко используются )
-число ( числовые операторы, свести не к чему, по-моему )
-чекбокс ( один оператор — "равно" )
-выпадающий список ( операторы "Равно", "Входит в", "Не равно", "Не входит в" , фактически сводятся к "Входит в" и "Не входит в")

2. Может, удобнее задавать фильтрацию для каждой колонки, например, путем правого клика на колонке, а не с помощью диалога? Тогда как быть со скрытыми колонками(в данный момент не видны, но поддерживают фильтрацию)

Задача 3.

Настроить внешний вид отображаемой таблицы — порядок и видимость колонок. Сейчас для этого используется такой диалог:



Как мне кажется, его лучше заменить на список колонок, в котором видимость/невидимость будет задаваться с помощью, например, чекбокса, а порядок путем Drag'n'dropa.

Задача 4.

В какой момент применять изменения? Когда задано каждое из условий? (фильтрация, сортировка, внешний вид) или лучше сделать кнопку "Установить фильтр", которая применит все три условия? Мне кажется, что лучше кнопку.

Заранее благодарен за конструктивные предложения и конструктивную же критику. Если тыкнете в примеры — буду только рад.
Re: Табличная форма
От: WinterMute Россия http://yarrr.ru
Дата: 16.11.05 14:11
Оценка: 10 (2)
Насчёт сортировки в таблице по многим полям: Это тема уже как-то поднималась, тогда, если правильно помню, пришли к выводу что не стоит вообще с этим парится. Я тогда ничего не сказал, никаких удачных мыслей небыло, а вот сейчас подумал: если мы хотим отсортировать таблицу по полям A, B и C, то эти поля нас интересуют в первую очередь, т.е., мы хотим их видеть в первую очередь => поле, по которому происходит приоритетная сортировка должно быть левее остальных полей. Т.е., предлагаю такую реализацию: 1) у каждой колонки есть три состояния: сорт. по возрастанию, сорт. по убыванию, без сортировки; 2) Колонки можно перетаскивать и приоритет сортировки зависит от близости колонки к левому краю.
Re[2]: Табличная форма
От: wildwind Россия  
Дата: 16.11.05 18:22
Оценка: +1
Здравствуйте, WinterMute, Вы писали:

WM>если мы хотим отсортировать таблицу по полям A, B и C, то эти поля нас интересуют в первую очередь, т.е., мы хотим их видеть в первую очередь => поле, по которому происходит приоритетная сортировка должно быть левее остальных полей.


Не всегда. Например, список входящих писем я хочу видеть отсортированным по дате отправки, по убыванию; но сама отправки меня интересует редко, на первом месте я хочу видеть отправителя.
Re[3]: Табличная форма
От: WinterMute Россия http://yarrr.ru
Дата: 16.11.05 20:15
Оценка: -1
Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, WinterMute, Вы писали:


WM>>если мы хотим отсортировать таблицу по полям A, B и C, то эти поля нас интересуют в первую очередь, т.е., мы хотим их видеть в первую очередь => поле, по которому происходит приоритетная сортировка должно быть левее остальных полей.


W>Не всегда. Например, список входящих писем я хочу видеть отсортированным по дате отправки, по убыванию; но сама дата(муа) отправки меня интересует редко, на первом месте я хочу видеть отправителя.


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

В описанном тобой случае, сортировка происходит только по одному полю, и ничего не мешает разместить колонку с датой последней. Если ты хочешь отсортировать по двум колонкам, например: в первую очередь по дате, во вторую по отправителю, то нужно поместить колонку с датой перед колонкой с отправителем -- оно и понятно, то поле, по которому сортируешь в первую очередь и интересует больше всего, и логично показывать его первым.


Что такое хорошо и что такое плохо

-- Меня здесь несколько смущает необходимость двигать колонки, но нужно принять в расчёт следующее: при сортировке по одному полю этой необходимости нет; сортировка по нескольким полям нужна весьма редко, она применяется при поиске в большом объёме данных и, в этом случае, новый порядок колонок даже упрощает восприятие.

Т.е., недостаток я вижу один: после поиска лениво будет восстанавливать привычное расположение колонок, ... а может и не линиво, чтобы с уверенностью сказать, нужно на пользователях потестировать.
Re[3]: Табличная форма
От: night_beast СССР  
Дата: 17.11.05 05:19
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, WinterMute, Вы писали:


WM>>если мы хотим отсортировать таблицу по полям A, B и C, то эти поля нас интересуют в первую очередь, т.е., мы хотим их видеть в первую очередь => поле, по которому происходит приоритетная сортировка должно быть левее остальных полей.


W>Не всегда. Например, список входящих писем я хочу видеть отсортированным по дате отправки, по убыванию; но сама отправки меня интересует редко, на первом месте я хочу видеть отправителя.


а чем не устраивает сортировка по нажатию лев.кнопки на заголовке колонки? в принципе, прав.кнопку можно приспособить для дальнейшей сортировки.
Re[4]: Табличная форма
От: Johny B.Good Россия  
Дата: 17.11.05 09:05
Оценка: +1
Здравствуйте, WinterMute, Вы писали:

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


Не могу согласиться

Имя | Дата изменения | Кто изменил | Размер

Я ищу файл "Шаблон1.jpg", я помню, что его размер — один из самых больших в папке. Я хочу отсортировать по размеру и искать имя в первой колонке. Собственно размер меня не интересует.

Да и вообще, эта идея, с прыгающими колонками, кажется мне сомнительной.
Re: Табличная форма
От: Johny B.Good Россия  
Дата: 17.11.05 09:07
Оценка:
Спасибо за комментарии по поводу сортировки, с этим у меня пока меньше всего проблем Больше всего вопросов по диалогу фильтрации. Неужели ни у кого нет предложений по этому поводу?
Re[2]: Табличная форма
От: Зверёк Харьковский  
Дата: 17.11.05 09:21
Оценка:
Здравствуйте, Johny B.Good, Вы писали:

JBG>Спасибо за комментарии по поводу сортировки, с этим у меня пока меньше всего проблем Больше всего вопросов по диалогу фильтрации. Неужели ни у кого нет предложений по этому поводу?


Есть конечно. В первую очередь — ты хочешь найти решение именно для той таблицы, которую показал, или решение "вообще", на все случаи жизни?
FAQ — це мiй ай-кью!
Re[3]: Табличная форма
От: Johny B.Good Россия  
Дата: 18.11.05 10:25
Оценка:
Здравствуйте, Зверёк Харьковский, Вы писали:

ЗХ>Здравствуйте, Johny B.Good, Вы писали:


JBG>>Спасибо за комментарии по поводу сортировки, с этим у меня пока меньше всего проблем Больше всего вопросов по диалогу фильтрации. Неужели ни у кого нет предложений по этому поводу?


ЗХ>Есть конечно. В первую очередь — ты хочешь найти решение именно для той таблицы, которую показал, или решение "вообще", на все случаи жизни?


Таблицу я показал для примера. То что решений "на все случаи жизни" не бывает — это я уже понял Я пытаюсь найти удобный интерфейс для выполнения фильтрации, который будет работать хотя бы в 70% случаев. Как показывает практика, существующий механизм работает более или менее нормально, но к нему есть претензии с точки зрения эргономики, я сам пользуюсь им с большой неохотой, слишком много надо сделать движений.
Re[5]: Табличная форма
От: kavlad Россия http://www.wavesoft.ru
Дата: 18.11.05 12:03
Оценка:
Здравствуйте, Johny B.Good, Вы писали:

JBG>Да и вообще, эта идея, с прыгающими колонками, кажется мне сомнительной.


Согласен на все сто.
Пульзователь может обычно настраивать вид таблицы как ему удобно. Настройка собъется от таких кульбитов

Думаю, что можно сделать дополнительную панель для отображения текущего условия сортировки типа таскбара винды. Кнопка на панели соотвествует полю сортировки.
Кликнул пользователь на заголовок поля в таблице и на панели появляется кнопка с именем поля, а в заголовке появляется значек сотировки по возрастанию (на кнопке можно его тоже рисовать).
Кликнул еще раз — сортировка стала по убыванию, изменились значки на заголовке и кнопке. С третьего клика поле вообще исключается из условия сортировки (кнопка пропадает).
На панели дать возможность таскать кнопки-поля мышью, чтобы менять порядок полей в условии сотрировки. Можно и не мышью, например, на кнопке размещать еще две "кнопки" — сдвинуть влево и сдвинуть в право.

Нужно еще дать возможность скрывать эту панель, чтобы не загромождала экран, т.к. в простых случаях с использованием одного поля она нафиг не нужна
Если простых случаев более 95% то и панель эта вообще нафиг не нужна. ИМХО правильнее сделать отдельное средство для сложной сортировки дабы не засорять интерфейс редко используемыми возможностями в ущерб часто используемым.
У меня так и сделано:
Распознавание изображений на Delphi http://dfreader.sourceforge.net
Re[4]: Табличная форма
От: Зверёк Харьковский  
Дата: 19.11.05 05:09
Оценка:
Здравствуйте, Johny B.Good, Вы писали:

JBG>>>Спасибо за комментарии по поводу сортировки, с этим у меня пока меньше всего проблем Больше всего вопросов по диалогу фильтрации. Неужели ни у кого нет предложений по этому поводу?


ЗХ>>Есть конечно. В первую очередь — ты хочешь найти решение именно для той таблицы, которую показал, или решение "вообще", на все случаи жизни?


JBG>Таблицу я показал для примера. То что решений "на все случаи жизни" не бывает — это я уже понял Я пытаюсь найти удобный интерфейс для выполнения фильтрации, который будет работать хотя бы в 70% случаев. Как показывает практика, существующий механизм работает более или менее нормально, но к нему есть претензии с точки зрения эргономики, я сам пользуюсь им с большой неохотой, слишком много надо сделать движений.


Ну, один, например, из вариантов — плясать не от всех возможных значений, а от тех что уже есть в таблице. Т.е., грубо говоря, вместо всех этих логических операторов делаем что-то вроде:
Выберите, какие строки показывать:
По годам: [Все] [2003] [2004] [2005] 
По месяцам: [Все] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] 
...


В любое значение можно ткнуть, сделав его выбранным. Это вообще. В каких-то конкретных случаях придется поступать "немножко" или "совсем" по-другому: например, для "количества проданных" из примера это подходит плохо. Не зная конкретного юз-кейса, можно предпололжить что-то такое:
Количество проданных: [0] [<2] [2-5] [5-10] ...


Но непонятно, насколько это подойдет.

Примерно так. А вообще — в большинстве случаев частное решение окажется лучше общего, "на все случаи жизни".
FAQ — це мiй ай-кью!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.