2015-11-19 5 views
0

Я пытаюсь создать экспортируемое в приложение CSV grid приложение для ралли, чтобы показать зависимости. но я не получаю результатов, которые я ожидал от SDK 2, используя магазин. Я нашел унаследованное SDK 1 приложение, которое возвращает то, что я ищу.Rally Query в SDK 1 vs Хранить в SDK 2

Я не уверен, что мне нужно, чтобы показать предшественникам. все, что я получаю, - это счет из хранилища в объекте данных. Я прошел через документы несколько раз, и я застрял.

var dependencydata = Ext.create('Rally.data.wsapi.Store', { 
 
    model: 'hierarchicalrequirement', 
 
    autoLoad: true, 
 
    
 
     listeners: { 
 
     load: function(dependencydata, data, success) { 
 
      //process data 
 
      console.log("Woot Data !",dependencydata, data, success); 
 
      this.loadgrid(dependencydata); 
 
     }, 
 
     scope: this 
 
    }, 
 
    fetch: ['Rank','FormattedID','Name','Predecessors','Successors','Project','ScheduleState'] 
 
});//end Store

Результат является

данные

FormatId 12345

Бла

предшественнику

граф 2

Что мне нужно это данные

FormatId 12345

Бла

Предшественник

object 

    Array 

    FormatId 45637 

В SDK 1 это было бы сделано, как это Я думаю

var queryConfig = { 
 
        type : 'hierarchicalrequirement', 
 
        key : 'stories', 
 
        fetch: 'Rank,FormattedID,Name,Predecessors,Successors,Project,ScheduleState', 
 
        query: '(Release.Name = "' + relDropdown.getSelectedName() + '")', 
 
        order: 'Rank' 
 
       }; 
 
       rallyDataSource.findAll(queryConfig, showUserStoriesTable); 
 
      } 
 
    

ответ

1

v2.0 из WSAPI, который используется SDK 2 не позволяет увлажняющие коллекции в одном запросе, как v1.0 сделал.

К счастью, есть руководство в документации, связанную с этой точной темой: https://help.rallydev.com/apps/2.0/doc/#!/guide/collections_in_v2

Вашего случай является немного более сложным, так как вам нужно загрузить 2 коллекции для каждой истории (Предшественники и правопреемники)

так что-то подобное должно работать:

//keep track of all the pending collection loads 
var promises = []; 

Ext.create('Rally.data.wsapi.Store', { 
    model: 'UserStory', 
    fetch: ['Rank','FormattedID','Name','Predecessors','Successors','Project','ScheduleState'], 
    autoLoad: true, 
    listeners: { 
     load: function(store, records) {    
      _.each(records, function(story) { 
       //create the stores to load the collections 
       story.predecessorStore = story.getCollection('Predecessors'); 
       story.successorStore = story.getCollection('Successors'); 

       //load the stores and keep track of the load operations 
       promises.push(predecessorStore.load({fetch: ['FormattedID']})); 
       promises.push(successorStore.load({fetch: ['FormattedID']})); 
      }); 

      //wait for all promises to finish 
      Deft.Promise.all(promises).then({ 
       success: function() { 
        //all data loaded. 
        console.log(records[0].predecessorStore.getRange()); 
        console.log(records[0].successorStore.getRange()); 
       } 
      }); 
     } 
    } 
}); 

Обратите внимание, что это будет генерировать тонны запросов, так что лучше, чтобы ограничить общее количество историй в корневом хранилище через фил Ослабляет.

+0

Спасибо Я попробую это немного позже к ночи. Думаю, я не должен пытаться вытащить всю коллекцию рассказов с вершины дерева. 36000 + истории :-) – Scrummando

+0

Спасибо за помощь, которую я дал, чтобы заставить это работать с вышеуказанным кодом. Теперь я борюсь с передачей этого в сетку. Мне нужно, я думаю, потребуется сращивать записи [0] с записями [0] .predecessor, чтобы показывать в одной строке. на сетке. – Scrummando

+0

Вам необходимо использовать собственное определение столбца с помощью функции рендеринга.Итак, передайте что-то подобное вашему столбцу в сетке: {dataIndex: 'Преемники', текст: 'Зависимости', renderer: function (value, metaData, record) {// использовать record.predecessorStore и record.successorStore для возврата html, который вы хотите отобразить в ячейке}} –