在自定义商店上使用PortfolioItem / Feature模型

时间:2018-05-15 12:36:09

标签: rally code-rally

我创建了功能概述及其功能依赖性(非用户故事)。

我正在获取在步骤1和第2步中发布时过滤的wsapi商店我获取前任和后续集合以显示其值。

我想直接在网格中使用这个wsapi商店,但是当执行onScopeChange(发布过滤的应用程序)时,网格的呈现在我加载前任+后继集合之前发生。因此,我试图将数据存储在custom.store中以便在网格中使用 - 到目前为止一直很好。

我的问题是我需要自己在网格中进行所有(大多数)格式化。我将自定义商店模型设置为PortfolioItem / Feature,并希望在网格上使用它,但它不会。这可能吗?如果是这样,我做错了什么?

自定义商店

_getViewStore: function () {

var me = this;
/*
    Extract data from featureStore
*/
var records = me.myFeatureStore.getRecords();

/*
    Create new, update, store for adding into grid
*/
if (!me.myViewStore) {
  me.myViewStore = Ext.create('Rally.data.custom.Store', {
    model: 'PortfolioItem/Feature',
    data: records,
  });
} else {
  me.myViewStore.removeAll();
  me.myViewStore.add(records);
}

},

网格

_createGrid: function () {
var me = this;

me.myGrid = Ext.create('Ext.Container', {
  items: [{
    xtype: 'rallygrid',
    store: me.myViewStore,

    columnCfgs: [{
        xtype: 'gridcolumn',
        align: 'left',
        tpl: Ext.create('Rally.ui.renderer.template.FormattedIDTemplate'),
        text: 'Predecessors',
        dataIndex: 'Predecessors',
        width: 200,

        renderer: function (value, metaData, record) {
          var mFieldOutputPre = '';
          var records = record.predecessorStore.getRecords();

          _.each(records, function (feature) {
            mFieldOutputPre += Rally.nav.DetailLink.getLink({
              record: feature,
              text: feature.get('FormattedID'),
              showTooltip: true
            });
            // Add the feature name and a line break.
            mFieldOutputPre += ' - ' + feature.get('Name') + '<br>';
          }); //_.each

          return mFieldOutputPre;
        },
      },
      {
        text: 'FormattedID',
        dataIndex: 'FormattedID',
        xtype: 'templatecolumn',
        tpl: Ext.create('Rally.ui.renderer.template.FormattedIDTemplate')
      },
      {
        text: 'Name',
        dataIndex: 'Name',
        flex: 1
      },
      {
        text: 'Release',
        dataIndex: 'Release',
        flex: 1
      },
     {
        text: 'State',
        dataIndex: 'State',
        flex: 1
      },
      { // Column 'Successors'
        xtype: 'templatecolumn',
        align: 'left',
        tpl: Ext.create('Rally.ui.renderer.template.FormattedIDTemplate'),
        text: 'Successors',
        dataIndex: 'Successors',
        width: 200,

        renderer: function (value, metaData, record) {
          var mFieldOutputSuc = '';
          var records = record.successorStore.getRecords();

          _.each(records, function (feature) {
            //console.log('feature = ', feature);
            mFieldOutputSuc += Rally.nav.DetailLink.getLink({
              record: feature,
              text: feature.get('FormattedID'),
              showTooltip: true
            });
            // Add the feature name and a line break.
            mFieldOutputSuc += ' - ' + feature.get('Name') + '<br>';
          }); 

          return mFieldOutputSuc;
        }, 
      } 
    ] 
  }],
  renderTo: Ext.getBody()
});
me.add(me.myGrid);

}

发布+状态字段在使用我的自定义商店时不显示正确的数据,但是如果我使用格式正确的wsapi(feature)商店。

提前谢谢

1 个答案:

答案 0 :(得分:0)

我可能先加载所有商店,然后添加配置了已加载功能商店的拉力网格。然后你不必担心时间问题。我猜你已经在加载子集合的文档中找到了这个例子吗?

https://help.rallydev.com/apps/2.1/doc/#!/guide/collections_in_v2-section-collection-fetching

这个例子也非常有用,因为它显示了如何加载分层数据,就像你正在做的那样,并使用promises来帮助管理所有这些,然后在一切都完成加载时做一些事情:

https://help.rallydev.com/apps/2.1/doc/#!/guide/promises-section-retrieving-hierarchical-data