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