2015-10-23 48 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,所以你不要有放大才能看到它堆疊