2015-10-23 79 views
4

我正在使用vis.js来显示时间轴。vis.js时间表,请勿堆叠时间不重叠的项目

我有以下各项:

var items = new vis.DataSet([ 
    {id: 1, content: '1) Next To 2', start: '2014-04-20 00:00:00', end : '2014-04-20 00:59:59'}, 
    {id: 2, content: '2) Next To 1', start: '2014-04-20 01:00:00', end : '2014-04-20 02:59:59'}, 
    {id: 3, content: 'Underneath ', start: '2014-04-20 00:00:00', end : '2014-04-20 05:59:59'} 
]); 

ID 1和ID 2开始/结束不彼此重叠(随时间)。所以我总是希望他们出现在时间轴内的同一行,无论缩放级别如何。

但是我无法设置stack : false,因为我想id : 3既1和2

这里下方是一个的jsfiddle:http://jsfiddle.net/uqn6q4jd/17/

1)和2)应始终在同一行上, 3)总是在下面

无论如何,我可以做到这一点吗?

我有看可见JS源,觉得我大概可以达到我通过改变需要:

exports.stack = function... 
exports.nostack = function... 

如果有一个设置或功能,我很想念这将是首选途径比我进行更改...

回答

7

我目前与vis一起工作并遇到过类似的问题。如果范围不重叠,且不能太小,中去除水平项目保证金应该做的很好:

var options = { 
    margin: { 
     item : { 
      horizontal : 0 
     } 
    } 
}; 

如果缩小太远,他们仍然会开始堆积,虽然。每个群组的堆叠选项是a requested feature,并且在实现后也可能做你想要的。

+0

真正的帮助! –

+1

使用-1而不是0来缩小没有项目堆叠。 –

4

你应该(现在)能够实现这个子组。

堆叠时是关闭的,子组仍然可以有效堆栈(但不塌陷回来时,你缩小等,因此他们只能“分成行”,而不是通过动态堆叠功能实际上管理)。

您需要通过an overlap check预先计算您的子组,这可能会根据您的数据变得复杂。

特别针对你的例子1 & 2将在子组1中,而子组2中的第3项。子组排序将确保sg2低于sg1。

var items = new vis.DataSet([ 
    {id: 1, subgroup:1, content: '1) Next To 2', start: '2014-04-20 00:00:00', end : '2014-04-20 00:59:59'}, 
    {id: 2, subgroup:1, content: '2) Next To 1', start: '2014-04-20 01:00:00', end : '2014-04-20 02:59:59'}, 
    {id: 3, subgroup:2, content: 'Underneath ', start: '2014-04-20 00:00:00', end : '2014-04-20 05:59:59'} 
]); 

群皆documented here

分组排序是documented here

我只是用这种方法作为一种解决方法,以实现每个组堆叠/与否是,作为@Kazua有益指出,仍然是一个要求的功能。

0

对于任何未来遇到此问题的人。

如果项目不重叠,并在同一时间或几乎同时开始,我刚刚离开堆叠并在水平边距选项上设置-25。

margin: { 
     item: 0, 
     axis: 0, 
     item : { 
      horizontal : -25 
     } 
    }, 

这反过来将所有项目放在同一行上,如果项目重叠,它们不会重叠并堆叠。我正在使用vis.js - Timeline Version:4.19.1

0
var options = { 
    margin: { 
     item : { 
      horizontal : -1 
     } 
    } 
}; 

我用-1,所以你不要有放大才能看到它堆叠