Использование PortfolioItem / Feature model в пользовательском магазине - PullRequest
0 голосов
/ 15 мая 2018

Я создаю обзор функций и их функциональных зависимостей (не пользовательских историй).

Я извлекаю хранилище wsapi, отфильтрованное при выпуске на шаге 1, а на шаге 2 я извлекаю предшественникаи последующие коллекции для отображения их значений.

Я хотел бы использовать это хранилище 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);

}

Поля Release + State не отображают правильные данные при использовании моего пользовательского хранилища, но если я использую мое хранилище wsapi (функция), которое правильно отформатировано.

Заранее спасибо

1 Ответ

0 голосов
/ 25 мая 2018

Я бы, вероятно, сначала загрузил бы все магазины, а затем добавил бы RallyGrid, настроенный с вашим уже загруженным хранилищем функций.Тогда вам не нужно беспокоиться о сроках.Я предполагаю, что вы уже нашли этот пример в документации для загрузки дочерних коллекций?

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

Этот пример также довольно полезен, так как он показывает, как загружать иерархические данные так же, каквы делаете, и используете обещания, чтобы помочь управлять всем этим, а затем сделать что-то, когда все будет загружено:

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

...