时间线中每行(行)一个项目? - Vis.js

时间:2017-11-08 13:56:53

标签: vis.js vis.js-timeline

有没有办法在时间轴中每行总共有一个项目?无论日期是什么,我都不希望两个或多个项目共享同一行。

感谢。

1 个答案:

答案 0 :(得分:0)

您必须使用群组,或者如果您已将其用于其他目的,则必须使用子群。
Here's the official documentation for items, groups and subgroups(我假设网站不会很快过期)。

如果您可以使用群组

为每个项目指定不同的组。如果您不想在时间轴的左侧为其添加标签,则可以将组的content设置为空字符串。
如果要以特定方式对组进行排序,请将排序函数指定为时间轴的选项“groupOrder属性”。示例:

var options = {
    // other properties...
    groupOrder: function (a, b) {
        if(a.content > b.content)// alphabetic order
            return 1;
        else if(a.content < b.content)
            return -1;
        return 0;
    }
};

如果必须使用子组

创建项目时,将其放在它所属的组中,同时为其指定subgroup属性,使其唯一,如项目的id。例如,您可以使用id本身,或者为其添加前缀或后缀 在时间轴的选项中,将stackstackSubgroups属性设置为true
在每个组中,将subgroupStack属性设置为true,并将排序函数指定为组的subgroupOrder属性。示例:

var group = {
    id: 1,
    content: 'example group',
    subgroupStack: true,
    subgroupOrder: function(a, b) {
        var tmp = a.start.getTime() - b.start.getTime();
        return tmp === 0 ? parseInt(a.id) - parseInt(b.id) : tmp;

        // if the start dates are the same, I compare the items' ids.
        // this is because due to a bug (I guess) the ordering of items
        // that return 0 in the ordering function might "flicker" in certain
        // situations. if you want to order the items alphabetically in that
        // case, compare their "content" property, or whatever other
        // property you want.
    }
};