AnyChart 8.1.0 - 资源甘特图 - 将时间段从一个资源移动到另一个资源

时间:2018-02-21 08:06:34

标签: anychart

我正在使用AnyChart 8.1.0资源Gantt(anychart.ganttResource())来显示和编辑计划数据(汽车预订)。 我可以水平编辑/移动预订以更改预订的时间/周期,也可以拖动开始和/或结束日期。但我想将预订从一辆车(行)转移到另一辆车 - 非常类似于将任务从一个人移动到另一个人。 这可能 - 以及如何?

谢谢! 罗埃尔

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,据我所知,你可以使用

    tree.listen("treeItemMove", function (e) {
                // do your stuff
                });

不幸的是,我认为只有在每行只有一个预订时才会有效。如果您有多个,所有预订都将被移动。 到目前为止,我还没有找到一个解决方案来获得一个预订并将其移至另一行。但我希望它可以帮助你走向严谨的方向。

编辑:

我已联系Anychart支持并询问是否有办法从一个(子)行移动一个句点并在另一个父项下创建一个新行?

以下是答案:

当前版本的AnyGantt 8.1.0并不提供开箱即用的功能,甚至还有额外的代码。 但您可以根据需要从代码中修改dataTree。这提供了数据下的完全控制,但没有鼠标交互性。

答案 1 :(得分:0)

太糟糕了。我可以操纵树 - 甚至一个时期,使用此代码删除并添加句点。您也可以更新句点,代码应该类似。

function deletePeriod( pItemId, pPeriodId ){
  var item = treeData.search("id", pItemId);
  var periods = item.get("periods")
  var i = periods.findIndex(function(e){ return e.id == pPeriodId; });
  periods.splice(i,1);
  item.set('periods', periods);
  treeData.addChildAt( item, treeData.indexOfChild(item) );
}

function addPeriod( pItemId, pPeriodId, start, end){
  var period = {
    "id": pPeriodId,
    "start": start,
    "end": end,
    "name": "Whatever name you want"
  };

  var item = treeData.search("id", pItemId);
  var periods = item.get("periods");
  periods.push(period);
  item.set('periods', periods);
  treeData.addChildAt( item, treeData.indexOfChild(item) );
}