如何在 visjs 时间轴中按时间顺序获取 getVisibleItems(或如何获取上一项)

how to get getVisibleItems in time order (or how to get the previous item) in visjs timeline

本文关键字:时间 获取 何获取 一项 顺序 visjs getVisibleItems      更新时间:2023-09-26

我需要为我的时间轴图表创建自定义的水平轴标签。当两天非常接近并且图表很小时。两个水平轴标签重叠。我想知道当有重叠时如何跳过一个或两个标签?

我正在做的方法是获取 vis-dot 位置,然后为 vis-dot 位置上方的标签创建一个div

var labeloffset = $(".vis-item.vis-dot."+item.id).offset().left;

我使用 getVisibleItems() 方法来获取所有可见项目。但问题是它没有按时间顺序排列。

var allVisableTtems = timeline.getVisibleItems();

我需要两个方面的帮助:

  1. 按时间顺序获取可见项。即,allVisableTtems 列表前面的最早项和 allVisableTtems 列表末尾的最后项

  2. 有什么方法可以在时间轴图表上获取上一项

感谢您的帮助。

您可以通过直接操作数据本身来对项目进行排序并获取以前的项目。

var ids = timeline.getVisibleItems();
var sortedVisibleItems = items.get(ids).sort(function (a,b) { 
  return a.start > b.start ? 1 : a.start < b.start ? -1 : 1
});
var index = sortedVisibleItems.indexOf(someItem);
var prevItem = sortedVisibleItems[index - 1];

您还可以通过为每个项目或类似内容添加prevIdnextId字段来自己创建一些链表。