SDK2:重新排名投资组合对象

时间:2013-07-08 21:37:28

标签: rally

我正试图允许在两个不同的网格上进行拖放重新排名。

这似乎不适用于RC1(虽然在同一个网格内工作),所以我试图在我自己的网格中拖放排名。

这似乎相当简单,我只想补充一下:

viewConfig: {
            plugins: {
                  ptype: 'gridviewdragdrop',
                  dragGroup: dd1,
                  dropGroup: dd2
            }
}

现在我可以拖放网格(尽管它并不完全遵循Rally样式指南)。不幸的是,仅凭这一点并不能保存结果。为此,我需要定义一个drop listener:

            listeners: {
                  drop: function(node, data, dropRec, dropPosition) {
                      var dropOn = dropRec ? ' ' + dropPosition + ' ' + dropRec.get('ObjectID') : ' on empty view';

                      console.log('Dropped ' + data.records[0].get('ObjectID') + dropOn);

                }
              }

但我如何重新排名下降的记录?通过检查正常积压的集会如何运作,看起来在Rally WSAPI中有“rankAbove”和“rankBelow”命令,但我如何在我的drop函数中调用它们?如果我只是更新常规字段,我认为我可以只调用record.set(),但是对于排名我需要进行其中一个特殊调用并给出记录我不知道如何。

1 个答案:

答案 0 :(得分:1)

很好的工作连接网格之间的拖拽!对于排名,您可能希望查看Rally.data.Ranker Singleton。它被定义为私有。它用于Drag'n'Drop Ranking PluginRally.ui.grid.Grid

使用Ranker,您可以实现类似于以下示例的内容(当然,根据您自己的环境进行调整):

listeners: {
drop: function(node, dragData, droppedOnRec, dropPosition) {
    var draggedRec  = dragData.records[0];

    var dropOn = droppedOnRec ? ' ' + dropPosition + ' ' + droppedOnRec.get('FormattedID') : ' on empty view';

    console.log('Dropped ' + draggedRec.get('FormattedID') + dropOn);

    if (draggedRec && droppedOnRec) {
        console.log("what is this?", this.title, this.releaseRef, dropPosition, droppedOnRec);

        draggedRec.set('Release', this.releaseRef);

        Rally.data.Ranker.rankRelative({
            recordToRank: draggedRec,
            relativeRecord: droppedOnRec,
            position: dropPosition,
            saveOptions: {
                callback: function() {console.log('saved');}
            }
        });
    } else {
        console.log('no drop', draggedRec, droppedOnRe, dropPosition);
    }
},