如何在 vis.js 时间轴中对嵌套组进行排序?

Posted

技术标签:

【中文标题】如何在 vis.js 时间轴中对嵌套组进行排序?【英文标题】:How to sort nestedGroups in vis.js timeline? 【发布时间】:2019-04-02 13:19:36 【问题描述】:

我对@9​​87654323@ 有疑问。我在创建 itemsnestedGroups 之前对数组进行了排序,但即便如此,由于某种原因,我还是在时间轴的最后一个位置获得了第一个项目。

这是我的问题的屏幕截图。 activity_9 项目需要在 activity_10 项目之前。我很困惑,因为在上面的组中nestedGroups 的顺序很好。谁能帮帮我。谢谢。

【问题讨论】:

如果你想用“人”的方式对它进行排序,你需要提取名称的数字,此时它以activity_9对事物进行排序开始晚于 * 以 activity_1 开始* 【参考方案1】:

我自己也遇到过这个问题,据我了解,原因是 js 按字母顺序读取,所以 1-9 很好,但 10 低于 2,因为它只读取第一个数字。

所以我所做的就是在我的 id 前面添加一些数字。所以它总是一样的长度。

1000、1001、1002 - 一直到 9999(如果您需要超过 10.000 个实体,请添加 ekstra 零)

我使用 mysql 来添加数字,因为我提取了所有数据。

所以我的代码看起来像这样

$sortnum = $row['id'];
$sortnum = "1".str_pad($sortnum, 4, '0', STR_PAD_LEFT);

如果您的 id 为 10,它将返回 10010,如果您有 2,它将返回 10002 这样 js 会正确读取它,因为 10002 小于 10010

我知道这可能不是一个好的或探测的方法,但对我有用,直到我找到更好的解决方案。

编辑:

如果您将 id 插槽锁定为其他内容,您可以按内容对其进行排序,然后简单地使用包含之前的“id”的隐藏字段开始内容也可以。

那么你所要做的就是在 vis.js 的选项中将 groupOrder 设置为 groupOrder: 'content',

【讨论】:

以上是关于如何在 vis.js 时间轴中对嵌套组进行排序?的主要内容,如果未能解决你的问题,请参考以下文章

Vis.js 时间轴 - 如何在不嵌套的情况下折叠组

vis.js 时间轴中不存在集群选项

如何在javascript中对嵌套的对象数组进行排序?

如何在sequelize中对嵌套模型中的列进行排序?

vis.js onclick 获取值

在Python列表中对嵌套字典进行排序? [复制]