vis.js时间线显示/隐藏项目(以及点和线)

时间:2017-04-11 06:18:58

标签: javascript vis.js

我已经编写了一些代码来按类名显示/隐藏项目。我通过将vis-box的不透明度更改为0来实现此目的。但是,当我隐藏vis-box时,vis-dot和从时间线延伸的垂直线仍然显示。我也想隐藏这些。

Image of hidden boxes with lines showing

到目前为止,我已经能够通过将FolderView fview = new FolderView(1); fview.setPropertySet(new PropertySet(FolderSchema.DisplayName,FolderSchema.Id)); Folder msgF = Folder.bind(service,WellKnownFolderName.MsgFolderRoot); FindFoldersResults res = msgF.findFolders(new SearchFilter.ContainsSubstring(FolderSchema.DisplayName,"test"),fview); List<Folder> fl = res.getFolders(); css属性更改为白色来隐藏整个时间轴的所有线条和点(使用chrome检查器)。但是我想只隐藏属于特定类的项目的点和线。

2 个答案:

答案 0 :(得分:1)

一种解决方案是更改时间轴使用的数据集,根据需要删除和添加项目。

来自doc(http://visjs.org/docs/data/dataset.html):

  

dataset.add(data [,senderId]) - 将一个或多个项添加到DataSet。数据可以是单个项目,也可以是包含项目的数组。当已存在具有相同ID的项目时,添加项目将失败。该函数返回一个包含已添加项的ID的数组。请参阅数据操作部分。

     

remove(ids [,senderId]) - 按ID或项目本身删除一个或多个项目。返回包含已删除项的ID的数组。请参阅数据操作部分。

您只需要保留要隐藏/显示在变量中的项目列表。

答案 1 :(得分:0)

在我的情况下,为了隐藏项目,我将项目设置为每年隐藏一次,然后设置原始日期和时间以再次显示该项目。

当时间轴为可见范围设置了最小日期,并且无法超出该最小日期时,例如在我的情况下时间轴不能在一个月前移动时,这很有用。

然后代码可能是这样的:

function item_hide(id)
{
    var item;

    item= dataSet_items.get(id);
    if(item === null)
        return;

    item.start= moment(item.start_original).subtract(1, 'y').format("YYYY-MM-DD HH:mm:ss");
    item.end= moment(item.end_original).subtract(1, 'y').format("YYYY-MM-DD HH:mm:ss");
    item.hidden= true;
    dataSet_items.update(item);

    return item;
}


function item_show(id)
{
    var item;

    item= dataSet_items.get(id);
    if(item === null)
        return;

    item.start= item.start_original;
    item.end= item.end_original;
    item.hidden= false;
    dataSet_items.update(item);

    return item;
}