vscode 时间线:允许将同一类型的多个条目分组到一个可以展开的单个节点中,

laawzig2  于 7个月前  发布在  Vscode
关注(0)|答案(5)|浏览(63)

这是一个探索时间线视图是否可以将同一来源的多个条目聚合到单个节点下,以减少本地历史中的垃圾邮件。

其他产品中的例子:

注意事项

  • 即使在父节点下,条目仍应按从最新到最旧排序
  • 相对时间应与顶级条目一样可见
  • 父节点应显示最近的条目时间

//cc @JacksonKearl@daviddossett @misolori

pjngdqdw

pjngdqdw1#

这实际上是一个出乎意料的小变化,所以我推动了它:

@daviddossett @misolori 请注意,我很乐意收到反馈:

  • 我最终使用了相同的图标,因为在大多数情况下,用户会看到聚合版本,而不是单个条目,我已经很喜欢那个图标了
  • 聚合条目的数量作为标签的一部分显示
  • 没有工具提示和除了展开/折叠之外的其他命令,但我们可以丰富这个功能

//cc @JacksonKearl 这个方法通过使 Timeline 能够返回 children 来工作:
vscode/src/vs/workbench/contrib/timeline/common/timeline.ts
第56行到第61行的代码:
| | /** |
| | * 可选的支持,用于将多个时间线项目分组 |
| | * 在父时间线上,例如将同一类型的条目展平。 |
| | */ |
| | children?: TimelineItem[]; |

fae0ux8s

fae0ux8s2#

哦,我不得不撤销那个更改,我忘记了聚合不应该在提供者级别发生,而是需要在时间轴视图内部发生,因为我们想要对所有来源的所有项目进行聚合,而不是在源内部。否则时间轴将不再显示一个真实的时间轴,其中的条目一个接一个...

axkjgtzd

axkjgtzd3#

看起来不错!是否可以使用显式的树形父节点与打开/关闭?如果我不知道行为是什么,我就不会知道它是可点击的,以显示实际条目。例如:

聚合条目数量作为标签的一部分显示
我想知道这里是否也可以使用类似于SCM徽章的效果。括号中的纯文本很清晰,但在这里感觉有些定制化,因为我们在其他地方也有类似的计数子项的模式:

它可以看起来像这样:

t1qtbnec

t1qtbnec4#

对于这两个建议,我表示赞同。

qmb5sa22

qmb5sa225#

虽然这很酷,但我会让这个想法再沉淀一段时间,等待用户反馈。有趣的是到目前为止,我没有听到用户的需求,但这也还很早。
如果有人想提前尝试这个想法,这里有一些建议:

  • 原始的天真尝试,timelinePane看到显示树节点所需的更改
  • 然而,我的尝试有一个缺点,那就是这种分组是由提供者控制的,但它需要从时间轴本身实现
  • 我认为*getItems()需要改变,以便以一种方式实现分组,只要有相同类型的条目被产生,它们就应该在1个节点下分组
  • 这需要在时间轴项目级别上引入某种新的API来表示同意采用这种方式

挑战可能在于*getItems()中实现这一点的同时,仍然支持yield,所以这也需要一些窥视操作 -> 有趣。

相关问题