代码之家  ›  专栏  ›  技术社区  ›  Oleg Sakharov

最优雅的分类项目的用户界面?

  •  8
  • Oleg Sakharov  · 技术社区  · 17 年前

    • 车身形状(舱口、轿车、轿跑车、旅行车等)
    • 座位(2、4、5、6等)
    • 等

    您是否遇到过一种特别优雅的方式,允许用户完全自由地定义自己的类别和值?

    显然,在任何设计中都会有许多权衡。例如,可学习的设计可能没有效率,反之亦然。或者一些设计可能比其他设计对房地产的要求更高。而有些项目的开发时间要比其他项目长得多。

    不管怎样,如果你已经看到或者设计了一个很好的模式,我很想听听。如果你有截图,那就更好了。

    试图澄清 :标记确实是一种很好的分类方式,但在我所看到的所有实现中,标记只有一个级别。用户通常无法定义类别/属性和项的值 . 要使用上面的示例和StackOverflow的标记,您需要将汽车标记为“蓝色”、“轿车”、“4”,等等。StackOverflow不知道一件物品不能同时标记为“轿车”和“双门轿车”。

    这更清楚了吗?如果没有,请留下评论,我将再次尝试澄清。:)

    7 回复  |  直到 17 年前
        1
  •  9
  •   Michael Zuschlag    17 年前

    听起来您有两个任务:任务1对对象进行分类,其中对于一系列对象,用户在多个维度(属性)的每个维度上为每个对象分配一个类别(值)。任务2:创建和修改维度和类别。

    除了数据建模者、面向对象程序员和数据库设计者之外,维度和类别的概念是一个很难掌握的概念。您应该为不了解类别和维度之间差异的用户做好准备。但是,用户通常会理解表,其中每列都是一个维度(包含多个类别),每行都是一个对象。尽可能多地使用表格。

    如果任务是集成的,用户通常在没有太多考虑的情况下从一个任务流畅地切换到另一个任务,那么一个UI设计就是按维度创建一个对象表,但提供一个空白列(或插入按钮)以允许用户添加维度。列标题具有维度名称,用户可以编辑该名称。标题下是一个空格,列出该维度的类别。每个类别名称都是可编辑的,并且有一个空行(或“插入”按钮)用于添加新类别。下面是要分类的对象,每个对象在维度的每列中都有一个下拉列表。

    在可用性测试中,请注意试图通过单击类别列表中的类别而不是从下拉列表中选择来设置对象类别的用户。使类别列表在视觉上独立显示,以防止出现这种情况。

    您可能需要一个按钮来隐藏/显示类别列表,因为这会占用大量空间(即使使用滚动条)。即使任务1和任务2是紧密集成的,我想你也会发现用户有时可能会想把类别列表弄到一边。

    任务1的窗口与以前相同:对象表,每个维度都有一列下拉列表,但不包括类别列表、编辑维度名称以及添加新维度的能力。如果用户需要扫描需要分类或重新分类的对象,或者如果用户通常需要将一个对象与其他对象进行比较(例如,决定如何对对象进行分类),则这是最有效的。但是,如果用户任务真正限于 分类 一个对象一次基于外部信息(例如,从纸上转录信息),然后考虑一个表单而不是一个表,显示一个列表框数组,每个属性一个。只需单击每个列表框即可设置每个类别,这比使用下拉列表更快。

    任务2的窗口可能类似于任务1的标题部分。它与任务1使用的表格一致,允许用户一次查看多个维度的类别,帮助他们找出最佳分类方案(例如,帮助他们找到基本相同的类别在两个不同维度中出现的位置)。但是,如果空间是一个问题,那么考虑一个维度列表,每个维度都显示一个主-细节关系中的类别列表。

    依靠的 关于类别。例如,可能有一个车辆类型尺寸,其中包括汽车、轮船、飞机等类别。对于汽车类别,可能有一个车身类型尺寸,其类别仅适用于该类别(双门轿车、掀背车等)。从属维度在树中由类别的分支表示。结果是,树在维度和类别之间交替,每个级别都处于活动状态。

    我想再次强调人们在维度和类别等抽象方面的困难。即使他们确实理解了,人们通常也很难自己创建合适的维度和类别。有一些复杂的交互可能导致您需要仔细考虑(例如,当类别移动到新维度时,对象分类会发生什么情况?)。如果您希望每个用户真正创建自己的新颖维度,那么您可能需要认真地重新思考您的整个方法。这是一项内在复杂的任务。

    如果在文化、组织或领域中已经有了相关的多维方案(比如我们的汽车),用户会做得更好。当然,如果已经有一个方案,那么您可以研究它并将其作为默认的维度集安装到产品中。任务2只需要支持专家用户对其进行微调。

        2
  •  4
  •   David Koelle    17 年前

    你可以用

    可能比标记更高级的是一组用户定义的属性。例如,使用属性“color=red”标记图片,而不是用“red”标记图片。

        3
  •  1
  •   Bob    17 年前

    我建议使用与stackoverflow上类似的标签系统。允许他们标记图像,然后按标记或选项卡组合查看。查看页面时,显示图像的缩略图及其下方图像的标记。

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

    当用户想要添加标记图像时,给他们一个带有标记类型的下拉列表。下面是另一个带有tabsubtype的下拉列表。给他们一个选项“定义新的”,这将导致一个文本框出现在他们可以键入新类型的地方。

    我还将这些选项添加到上下文菜单中,以便用户可以在树样式菜单中查看标记。

        4
  •  1
  •   2 revs<br/>Scott McKissock&#13;    17 年前

    分面分类是一种对没有得到应有关注的事物进行分类的方法。它允许您定义相互排斥的类别,并为每个类别的每个内容项提供值。例如,您可以按地区、品种、年份和价格对葡萄酒进行分类,用户可以通过在一个或多个类别中选择一个或多个值来进行搜索。例如,40美元以下的法国或意大利红酒。假设您手头有类别数据,这通常是可用的最强大的分类和搜索技术,比尝试将所有内容放入单个层次结构或依赖标记要好。

    要在后端实现这一点,请为每个类别创建表,并用不同的值填充它们。然后创建一个表,每个类别表都有一个外键,以及一个包含内容的字段。这类似于维度数据库设计中的事实表。

    要了解这在UI中的工作方式,请查看FaceMap。我不能担保他们的产品,因为我没有使用过它,但我为自己的应用程序实现了类似的功能,并取得了良好的效果。

    http://www.facetmap.com/

    再一次,刻面分类背后的想法值得更多的关注,我知道我在这里没有公正地对待它们。关于Clay Shirky对主题的娱乐性处理,请听“本体论被高估”:

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

        5
  •  0
  •   grieve    17 年前

    我可能误解了你们的问题,但这不是很相似,如果不完全是什么标签(如堆栈溢出和gmail)。还是你在寻找比这更具体的东西?

        6
  •  0
  •   Ali Afshar    17 年前

    Car|Tagged_with|Red
    Red|Is_child_of|Colours
    

    这样,您的数据保持了极大的灵活性,实际上,什么是数据,什么是元数据之间的界限变得模糊。

        7
  •  0
  •   quackamole    10 年前

    这似乎是一个需要解决的问题,尤其是让用户将维度数据分类为更进一步、更简化的维度(组或类别,无论您如何称呼它们),以便通过简化的类别/维度更好地可视化数据。

    用户需要能够导入列表,并为列表创建维度,然后根据这些维度直观地对列表进行分类。创建维度包括命名/重命名维度(列名称),然后添加/重命名/删除该维度的类别(列项目)。在创建新维度和使用用户创建的新维度单独或批量地对列表项进行实际分类之间进行切换应该是无缝的。然后,用户可以导出包含新创建类别的附加列(维度)的列表。

    其想法是,仅仅拥有一个表并向其中添加列将更加方便用户。理想情况下,您可以选择列表中的项目,然后从用户创建的维度列表中为其分配一个已验证的类别项目,该列表将自动填充可导出的只读表。输入=列表,输出=综合分类列表。不需要电子表格。

    推荐文章