使用拉力纸板创建故事地图应用程序

时间:2013-12-26 23:19:05

标签: rally

我想使用Initiative(二级)组合项目作为主干(列)来组合StoryMap应用程序。要执行此操作,应用程序需要查询所有二级项目组合项,然后将每个PI用作rally卡板中的列标题。

我已经得到了正确显示列标题的纸板,但我无法显示卡片,这应该是第一级别的投资组合项目(PortfolioItem / Feature)。

到目前为止,这是我的代码:

launch: function() {
    this._getInitiativeStore();
},

_getInitiativeStore: function() {
    this.initiativeStore = Ext.create('Rally.data.wsapi.Store', {
        model: 'PortfolioItem/Initiative',
        fetch: ['Name', 'Children'],
        autoLoad: true,
        listeners: {
            load: this._createCardBoard,
            scope: this
        }
    });
},

_createCardBoard: function(store, records) {
    var initiativeColumns = [];

    Ext.each(records, function(record) {
        initiativeColumns.push({
            xtype: 'rallycardboardcolumn',
            columnHeaderConfig: {
                xtype: 'rallycardboardcolumnheader',
                fieldToDisplay: 'Name',
                record: record,
            },
            cardConfig: {
                xtype: 'rallycard',
                record: 'PortfolioItem/Feature'
            },
            fields: ['Name', 'Parent'],
            valueField: 'Parent',
            value: record.get('_ref') // BUG FIXED HERE.  Was: record.get('Parent')
        });
    }, this);

    var cardBoardConfig = {
            xtype: 'rallycardboard',
            types: ['PortfolioItem/Feature'],
            columns: initiativeColumns,
            attribute: 'Parent',
        };
    var cardBoard = this.add(cardBoardConfig);

    console.log('cardboard', cardBoard);
}

我意识到我使用它可能与作者计划的有点不同,但我愿意用Ext.define扩展rallycardboard和rallycolumnheader对象,如果这是它需要的。我开始查看Rally源代码,但到目前为止进展缓慢。

1 个答案:

答案 0 :(得分:1)

我能够通过使用Ext.define()覆盖cardboardcolumn getStoreFilter函数来打印出其过滤器值来解决问题。可能对于那些没有必要的浏览器调试器的好人,但我不是,它立即查明了问题:initiativeColumn配置的“值”字段应该是record.get('_ ref'),而不是record.get( '父')。我将编辑上面的代码,以便它可以工作。

现在,基本板作为一个包含投资组合项目的故事地图非常有用!下一步是看看我是否可以将发布的概念合并到地图中。

另外,我认为我在'rallycardboard'构造函数中发现了一个错误 - 如果我传递了一个上下文引用,例如:context:{project:'project / XXX'}其中XXX是一个OID,它会崩溃。相反,我需要实例化一个上下文对象并传递它。但这与wsapi商店等其他商品不一致。解决方法很简单,但有点烦人。