我想使用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源代码,但到目前为止进展缓慢。
答案 0 :(得分:1)
我能够通过使用Ext.define()覆盖cardboardcolumn getStoreFilter函数来打印出其过滤器值来解决问题。可能对于那些没有必要的浏览器调试器的好人,但我不是,它立即查明了问题:initiativeColumn配置的“值”字段应该是record.get('_ ref'),而不是record.get( '父')。我将编辑上面的代码,以便它可以工作。
现在,基本板作为一个包含投资组合项目的故事地图非常有用!下一步是看看我是否可以将发布的概念合并到地图中。
另外,我认为我在'rallycardboard'构造函数中发现了一个错误 - 如果我传递了一个上下文引用,例如:context:{project:'project / XXX'}其中XXX是一个OID,它会崩溃。相反,我需要实例化一个上下文对象并传递它。但这与wsapi商店等其他商品不一致。解决方法很简单,但有点烦人。