使用rallycardboard创建故事地图应用程序

使用rallycardboard创建故事地图应用程序,rally,Rally,我想使用Initiative(第二级)项目组合作为主干(列),构建一个StoryMap应用程序。要做到这一点,应用程序需要查询所有二级投资组合项目,然后将每个PI用作rallycardboard中的列标题 我已经用硬纸板正确地显示了列标题,但是我无法让它显示卡片,这应该是组合项目的第一级(PortfolioItem/Feature) 以下是我目前的代码: launch: function() { this._getInitiativeStore(); }, _getInitiative

我想使用Initiative(第二级)项目组合作为主干(列),构建一个StoryMap应用程序。要做到这一点,应用程序需要查询所有二级投资组合项目,然后将每个PI用作rallycardboard中的列标题

我已经用硬纸板正确地显示了列标题,但是我无法让它显示卡片,这应该是组合项目的第一级(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的源代码,但到目前为止进展缓慢。

我能够通过使用Ext.define()覆盖cardboardcolumn getStoreFilter函数来打印其筛选值来解决问题。可能对于那些擅长浏览器调试器的人来说,这是不必要的,但我不是,而且它马上就指出了问题:initiativeColumn配置的“value”字段应该是record.get(“'u ref'),而不是record.get('Parent')。我将编辑上面的代码,使其正常工作

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

另外,我认为我在“rallycardboard”构造函数中发现了一个bug——如果我向它传递一个上下文引用,比如:context:{project:'project/XXX'},其中XXX是一个OID,它就会崩溃。相反,我需要实例化一个上下文对象并传递它。但这与其他项目(如wsapi存储)不一致。解决方法很简单,但有点烦人