1

我正在使用 vis.js 时间线 ( http://visjs.org/docs/timeline/ )。

我想实现元素之间不可能有间隙。

  1. 如果有人正在删除其他元素之间的元素并将新元素添加到间隙中,则新元素应自动适应间隙。

  2. 如果有人通过调整大小来更新元素的时间(大小),它也应该自动适应下一个元素。

  3. 我需要验证所有组中的所有元素都在给定日期范围内填充。

这些是我的可编辑选项:

 editable: {
     add: true,         // add new items by double tapping
     updateTime: true,  // drag items horizontally
     updateGroup: false, // drag items from one group to another
     remove: true,       // delete an item by tapping the delete button top right
     overrideItems: false  // allow these options to override item.editable
 },

不允许在组之间移动元素。

我的第一个猜测是使用该onMove函数,但我不知道如何找到上一个和下一个元素来调整开始和结束。

也许其他人有同样的问题并找到了解决方案。

4

2 回答 2

0

伙计们,这是一个很好的答案:

默认情况下在选项中使用stack: false + stackSubgroups: true并简单地使用相同的子组,元素将内联显示;)

检查<script>此 html 页面末尾的http://visjs.org/examples/timeline/groups/subgroups.html

我将分享我正在研究的高级路线图;)

最好的

于 2018-07-18T14:26:36.723 回答
0

我有一个类似的场景,拖动一个元素会重新排列所有其他元素,将一个元素拖动到另一个组会使其紧随最后一个元素之后。

没有简单的选项可以设置来执行此操作。基本上你必须听这些事件并跟踪你的元素在哪里才能更新它。

例如,在您的第一种情况下,您必须做的是:

  • 监听onAdd()事件
  • start通过查看和时间来搜索将在其中创建新元素的该组的元素end
  • 更新这个新项目,start使其end与前一个元素的end相等并与start下一个元素的相等。

这是一个简单的 JS Fiddle 可以帮助您入门:http: //jsfiddle.net/rj35mbvd/

在这个小提琴中,每次您尝试添加一个项目时,它都会添加到时间轴中已经存在的两个元素之间。

于 2018-04-03T01:18:20.420 回答