Самый элегантный интерфейс для категоризации предметов?

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

  • Цвет (красный, серебристый, синий, черный и др.)
  • Форма кузова (хэтчбек, седан, купе, универсал и др.)
  • Сиденья (2, 4, 5, 6 и т. д.)
  • и т.п.

Вы когда-нибудь сталкивались с особенно элегантным способом сделать это, который дает пользователю полную свободу определять свои собственные категории и ценности?

Очевидно, что в любом дизайне придется пойти на множество компромиссов. Например, обучаемый дизайн может быть неэффективным, и наоборот. Или одни проекты могут быть более требовательными к недвижимости, чем другие. И некоторые из них будут развиваться значительно дольше, чем другие.

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

Попытка разъяснения: теги действительно являются отличным способом категоризации вещей, но во всех реализациях, которые я видел, всегда есть только один уровень тегов. Обычно пользователь не может определить категорию / свойство и значение в этой категории элемента. Чтобы использовать приведенный выше пример и теги StackOverflow, вы должны отметить автомобиль как «синий», «седан», «4» и так далее. StackOverflow не знает, что элемент нельзя пометить как «седан», так и «купе».

Интерфейс, о котором я думаю, должен знать такие вещи, поэтому предложение определяемых пользователем атрибутов больше соответствует тому, что я думаю. Я просто хочу найти конкретный пример того, как такая система может быть элегантно реализована (в настольном приложении, если это имеет значение).

Это яснее? Если нет, оставьте комментарий, и я постараюсь уточнить еще раз. :)

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

Vinko Vrsalovic 11.11.2008 19:09
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
8
1
3 018
6

Ответы 6

Я могу неправильно понять ваш вопрос, но это не очень похоже, если не совсем то, для чего нужны теги (например, переполнение стека и gmail). Или вы ищете что-то более конкретное?

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

Возможно, более продвинутым, чем теги, был бы набор определяемых пользователем атрибутов. Например, вместо того, чтобы отмечать изображение «красным», пометьте его атрибутом «color = red».

Я бы предложил систему тегов, аналогичную той, что здесь, в stackoverflow. Разрешите им помечать изображения, а затем просматривать по тегам или комбинации вкладок. При просмотре страницы показывайте миниатюры изображений и теги для этого изображения под ней.

Обновлено: на основе ваших пояснений у вас могут быть типы тегов. Когда пользователь определяет свой собственный тег, ему необходимо указать, от какого типа он происходит. Имея это в виду, вам нужно ограничить теги только одним из этого типа.

TagType { Color, Seats, BodyType, Seats }
TabSubType { Color-Red, Color-Blue, Color-Green, Seats-2, Seats-4, ... }

Когда пользователь хочет добавить тег к изображению, дайте ему раскрывающийся список с TagType. Ниже приведено еще одно раскрывающееся меню с TabSubTypes. Дайте им возможность «Определить новый», что приведет к появлению текстового поля, в котором они могут ввести новый тип.

Я бы также добавил эти параметры в контекстное меню, чтобы пользователи могли просматривать теги в меню в виде дерева. Вы также можете захватить нажатие клавиши, даже когда изображение сфокусировано, найти TagType и TagSubType имя и представить меню параметров на выбор. Если совпадений не найдено, предложите вариант «Щелкните, чтобы добавить новый тег».

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

Чтобы реализовать это на сервере, создайте таблицы для каждой категории и заполните их различными значениями. Затем создайте таблицу с внешним ключом для каждой таблицы категорий вместе с полем, содержащим контент. Это похоже на таблицу «фактов» в трехмерном дизайне базы данных.

Чтобы понять, как это работает в пользовательском интерфейсе, взгляните на Facetmap. Я не могу поручиться за их продукт, потому что я не использовал его, но я реализовал нечто подобное для своих собственных приложений с хорошими результатами.

http://www.facetmap.com/

Опять же, идеи, лежащие в основе многогранной классификации, заслуживают большего внимания, и я знаю, что здесь не оправдываю их. Если Клэй Ширки развлекает эту тему, послушайте "Онтология переоценена":

http://itc.conversationsnetwork.org/shows/detail470.html

Из того, что я могу сказать на сайте facetmap, их продукт больше ориентирован на то, чтобы «пользователи» писали бэкэнд-файл XML, который затем переводится их приложением и представляется в нескольких различных форматах. Не совсем то, о чем я думал. Я хочу, чтобы нетехнические пользователи определяли категории и т. д.
Mal Ross 14.11.2008 18:06

Другими словами, задняя часть звучит нормально, но мне нужна передняя часть.

Mal Ross 14.11.2008 18:07

Хорошо, хорошо, я склонен слишком много говорить об этом, но тегирование - это всего лишь пример того, что вы можете делать с тройным графом, например, используя RDF. [Вставить ссылку на Википедию]. Теперь я знаю, что вы сказали, что тегов недостаточно, исходя из требований к вложенности, но нет причин, по которым вы не можете дальше «тегировать теги» как дочерние элементы друг друга.

Car|Tagged_with|Red
Red|Is_child_of|Colours

Таким образом, ваши данные остаются сверхгибкими, и разница между тем, что является данными, и тем, что является метаданными, стирается.

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

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

Идея состоит в том, что было бы намного удобнее иметь таблицу и добавлять к ней столбцы. В идеале вы могли бы выбирать элементы в списке, а затем назначать им проверенный элемент категории из созданного пользователем списка измерений, который автоматически заполнял бы таблицу, доступную только для чтения, которую можно было бы экспортировать. Вход = список, Выход = полностью категоризованный список. Электронная таблица не требуется.

Другие вопросы по теме