Не удается получить итерацию "Тема" в приложении Rally (2.0RC3)

Я изменяю приложение IterationSummary из 2.0RC3 SDK и добавляю в него дополнительную информацию об итерации. По какой-то причине я не могу получить "Тему" для итерации, хотя я могу запрашивать другие поля из объекта итерации. Начиная с примера, я просто добавил следующие строки @192

{
    cls: 'theme',
    html: iteration.get('Theme')
},

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

1 ответ

Решение

Вы выбираете "Тема"?

Вы можете увидеть общий пример, который строит сетку итераций, которые попадают в релиз (выбранный в выпуске comboobox), в котором столбец Тема заполнен, если в итерации есть тема, введенная в этом репозитории github.

Этот пример отличается от приложения IterationSummary, потому что в моем примере я явно создаю Rally.data.wsapi.Store для объекта Iteration и выбираю Theme.

Настройка приложения IterationSummary все еще потребует явной выборки поля Theme, но вы правы, что из приложения IterationSummary не очевидно, как выбираются другие поля, например, состояние итерации. Объект итерации в этом приложении возвращается из this.getContext().getTimeboxScope().getRecord() и если вы распечатаете этот объект в консоли, тема будет пустой. Поля, которые существуют на this.getContext().getTimeboxScope().getRecord() ограничены и не могут быть настроены по соображениям производительности.

Чтобы модифицировать это приложение для отображения Темы, необходимо обратиться к модели Итерации и явно выбрать тему. Вот шаги, которые я предпринял, чтобы изменить приложение:

добавлена ​​функция getTheme:

getTheme: function(){ 
            var iteration = this.getContext().getTimeboxScope().getRecord();
            return iteration.self.load(iteration.getId(), {
                fetch: ['Theme']
            });
        }

В RC3 каждый раз, когда у нас есть запись, .self даст свою модель, поэтому нет необходимости делать это вручную:

Rally.data.ModelFactory.getModel({
    type: 'Iteration',
    //... 

Заметка fetch: ['Theme']

Далее внутри _addContent метод getTheme() называется

return Deft.Promise.all([this.getTheme(), this.calculateTimeboxInfo()]).then({
                success: function(results) {
                    var theme = results[0].get('Theme');

и, наконец, значение переменной темы передается:

{
   cls: 'theme',
   html: theme
}

Полный код доступен в этом репозитории github.

Другие вопросы по тегам