Как правильно построить фильтр
От: CaptainX http://www.cushystock.com
Дата: 12.11.07 16:17
Оценка:
Задача следующая: Есть набор объектов, на который можно наложить фильтр. Каждый из объектов имеет n признаков. Каждый из признаков может находиться в одном из m состояний (набор m фиксированный и используется для всех признаков). Надо максимально просто построить интерфейс для такого фильтра.
Вариантов сейчас два:
1. Дерево с чекбоксами вида

   1
      1
      2
      ...
      m
   2
      1
      2
      ...
      m
   ...
   n
      1
      2
      ...
      m



2. таблица m x n, с теми же чекбоксами.

Может быть есть что-то изящнее?
Re: Как правильно построить фильтр
От: LeonidV Ниоткуда http://vygovskiy.com
Дата: 13.11.07 05:06
Оценка:
Я понял ващу задачу так. Существует несколько объекто в с одинаковым набором признаков мощностью n. Состояние признака задается множеством m. Необходимо предоставить интерфейс для сопоставления состояний признаков объектам. Тогда я бы делал это таблицей. А вот таблицу уже можно делать весьма изящной, как вы написали.
С другой стороны, на решение этой задачи также влияет количество объектов и количество признаков. Если объектов мало, а признаков много и все они (признаки) разные, можно вообще с помощью вкладок (tab) решить проблему.
http://jvmmemory.com — простой способ настройки JVM
Re: Как правильно построить фильтр
От: AK85 Беларусь  
Дата: 16.11.07 08:44
Оценка:
Здравствуйте, CaptainX, Вы писали:

CX>Задача следующая: Есть набор объектов, на который можно наложить фильтр. Каждый из объектов имеет n признаков. Каждый из признаков может находиться в одном из m состояний (набор m фиксированный и используется для всех признаков). Надо максимально просто построить интерфейс для такого фильтра.

CX>Вариантов сейчас два:
CX>1. Дерево с чекбоксами вида

CX>2. таблица m x n, с теми же чекбоксами.


CX>Может быть есть что-то изящнее?


Тогда уже RadioButtons, ну или комбобоксы.
Re: Как правильно построить фильтр
От: Кодт Россия  
Дата: 16.11.07 09:59
Оценка:
Здравствуйте, CaptainX, Вы писали:

CX>Задача следующая: Есть набор объектов, на который можно наложить фильтр.


Что значит "наложить фильтр"?

Ну а пока ждём твоих разъяснений — вот ещё один вариант.
Список из двух колонок: имя-признак
Имена — от 1 до N.
Признак — у каждой записи принимает значение { 1..M | выкл | множество } — последние два варианта могут и не быть, тут я не знаю твою задачу.
Редактирование записи — это выбор значения у признака (комбобокс).
Возможны групповые операции: выбрать все или несколько записей и назначить им одно значение.

Если принципиально, что значение признака — это набор флагов, и M фиксировано и невелико — то можно каждый флаг в своей колонке, с логикой чекбокса.
Опять же, допускаются групповые операции.

Если набор флагов, но в колонки они не влезают — то можно визуализировать флаги:
— строкой с перечислением того, что включено (текстом или пиктограммами — не суть)
— комбинацией шрифта (жирный, курсив, зачёркнуто, подчёркнуто, заглавные) и цвета
Редактирование — аналогично включению флагов у почтового клиента: через контекстное меню (почти комбобокс) или кнопками на панели инструментов.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[2]: Как правильно построить фильтр
От: CaptainX http://www.cushystock.com
Дата: 16.11.07 13:16
Оценка:
Согласен, абстрактно задача воспринимается сложнее. Опишу подробнее. Есть файлы картинок. Их можно заливать на различные сайты (1..n). Каждой картинке на любом из сайтов может соответствовать рейтинг (1..m) — он не числовой, это набор строковых значений. Данные о том куда залили картинку и какой рейтинг она там получила хранятся в программе.
Итак, нужен фильтр который позволит задавать условия типа "Показать все картинки, залитые на сайт №1 с рейтингами №2,3,5 и залитые на сайт №2 с рейтингами №1,2,4".
Сейчас делаю его в виде таблички по одной стороне которой сайты, а по другой стороне рейтинги. В ячейках таблицы чекбоксы, которые и определяют наличие рейтинга на данном сайте.
Re[3]: Как правильно построить фильтр
От: Кодт Россия  
Дата: 16.11.07 13:57
Оценка:
Здравствуйте, CaptainX, Вы писали:

CX>Согласен, абстрактно задача воспринимается сложнее. Опишу подробнее. Есть файлы картинок. Их можно заливать на различные сайты (1..n). Каждой картинке на любом из сайтов может соответствовать рейтинг (1..m) — он не числовой, это набор строковых значений. Данные о том куда залили картинку и какой рейтинг она там получила хранятся в программе.

CX>Итак, нужен фильтр который позволит задавать условия типа "Показать все картинки, залитые на сайт №1 с рейтингами №2,3,5 и залитые на сайт №2 с рейтингами №1,2,4".
CX>Сейчас делаю его в виде таблички по одной стороне которой сайты, а по другой стороне рейтинги. В ячейках таблицы чекбоксы, которые и определяют наличие рейтинга на данном сайте.

Это именно рейтинги или просто категории?
В первом случае — непонятно, зачем показывать картинки с рейтингами вразбивку (2,3,5 вместо 2..5), а во втором — откуда уверенность, что на всех сайтах одинаковое множество категорий?

Мне кажется, ты изначально усложнил себе задачу.
Тебе же не микшер Большого Концертного Зала нужно сделать, поэтому всякие комбинаторные взрывы нужно исключать ещё на уровне юз-кейсов.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[4]: Как правильно построить фильтр
От: CaptainX http://www.cushystock.com
Дата: 16.11.07 14:11
Оценка:
К>Это именно рейтинги или просто категории?
К>В первом случае — непонятно, зачем показывать картинки с рейтингами вразбивку (2,3,5 вместо 2..5), а во втором — откуда уверенность, что на всех сайтах одинаковое множество категорий?

К>Мне кажется, ты изначально усложнил себе задачу.

К>Тебе же не микшер Большого Концертного Зала нужно сделать, поэтому всякие комбинаторные взрывы нужно исключать ещё на уровне юз-кейсов.

Это просто категории, причем они одинаковы для всех сайтов. Категории поддерживаются на уровне программы, а не сайта, например: загружено, отклонено, удалено и т.д.
Re[5]: Как правильно построить фильтр
От: Кодт Россия  
Дата: 16.11.07 14:39
Оценка: 1 (1)
Здравствуйте, CaptainX, Вы писали:

CX>Это просто категории, причем они одинаковы для всех сайтов. Категории поддерживаются на уровне программы, а не сайта, например: загружено, отклонено, удалено и т.д.


1.
Может ли одной картинке соответствовать несколько категорий сразу? Какие сочетания возможны в принципе? Например, "отклонено" и "удалено" одновременно
Отсюда получаем набор состояний (каждому из которых соответствует некоторое сочетание флагов — или несколько сочетаний).
После чего имеем дело не с 2^m сочетаниями и микшером БКЗ, а с одним k-позиционным слайдером (для каждой картинки).

2.
Какие дизъюнкции состояний нужны пользователю?
— "ещё не загружали" ()
— "ждёт загрузки" (заявляли)
— "присутствует" (загрузили)
— "отсутствует" (не загружали / отклонено / удалено)
— "обломились" (отклонено / удалено)
— "однажды уже загружали" (заявляли / загрузили / отклонено / удалено)
и т.п.
То есть, от сочетаний слайдеров перешли к фиксированному количеству синдромов.

3.
Нужно ли в одном фильтре независимо конфигурировать каждый сайт?
Или, всё-таки, фильтровать один синдром для некоторого множества интересующих нас сайтов.

Для особо извращённых пользователей можно составлять дизъюнкцию (или конъюнкцию) фильтров: синдром А для сайтов X,Y,Z + синдром Б для сайтов X,T,U,V...



Таблица с комбинаторным взрывом имеет смысл в том случае, когда пользователю нужно часто менять отдельные элементы. Всё тот же звукооператор в БКЗ.
А фильтры — это вещь, которая делается один раз надолго, и затем они только быстро включаются/выключаются.
Поэтому конструктор фильтра можно сделать хоть визардом.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[6]: Как правильно построить фильтр
От: CaptainX http://www.cushystock.com
Дата: 19.11.07 15:31
Оценка:
Здравствуйте, Кодт, Вы писали:

К>3.

К>Нужно ли в одном фильтре независимо конфигурировать каждый сайт?
К>Или, всё-таки, фильтровать один синдром для некоторого множества интересующих нас сайтов.

К>Для особо извращённых пользователей можно составлять дизъюнкцию (или конъюнкцию) фильтров: синдром А для сайтов X,Y,Z + синдром Б для сайтов X,T,U,V...


Спасибо, мысль понятна. По идее, конфигурировать нужно позволить каждый сайт. Т.е. приходим к слайдеру или комбобоксу для каждого сайта.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.