Использование Rally WsapiDataStore на определенную дату

Я хочу создать график того, сколько задач находится в заданном состоянии расписания в течение всего спринта. Можно ли вызывать WsapiDataStore каждый день?

2 ответа

То, что вы ищете, - это магазин SnapshotSnapshot, использующий API Lookback - это позволяет вам указать дату или момент времени, к которому вы хотите выполнить запрос.

Типичное использование выглядит так:

    Ext.create('Rally.data.lookback.SnapshotStore', {
        pageSize : 10000,
        fetch    : ['fetch'],
        filters  : [{
            property : '__At',
            value    : 'current'
        },{
            property : '_ItemHierarchy',
            value    : 'HierarchicalRequirement'
        }]
    }).load({
        callback : function(records) {
            Ext.Array.each(records, function(record) {
                // do something with each record
            });
        }
    });

WsapiDataStore не предназначен для исторических данных. Вам необходимо использовать Rally.data.lookback.SnapshotStore, который получает данные из API Lookback.

Lookback API позволяет увидеть, как выглядел любой рабочий элемент или набор рабочих элементов в прошлом. Это отличается от использования WS API напрямую (или через WsapiDataStore), который может предоставить вам текущее состояние объектов, но не имеет исторических данных.

Документация LBAPI доступна здесь

Что касается атрибутов объекта Rally, см. Здесь объектную модель WS API. Но из вашего комментария не ясно, что вы подразумеваете под данными для всего выпуска. Если вы заинтересованы в получении пользовательских историй, назначенных для определенного выпуска, тогда ваш объект запроса должен быть иерархическим, а не выпуском, и вы можете фильтровать по выпускам.

Вот приложение, которое строит диаграмму, используя выпадающий список. На основе выбора в раскрывающемся списке диаграмма обновляется (уничтожается и добавляется):

Ext.define('CustomApp', {
                extend: 'Rally.app.TimeboxScopedApp',
                componentCls: 'app',
                scopeType: 'release',
                comboboxConfig: {
                                fieldLabel: 'Select a Release:',
                                labelWidth: 100,
                                width: 300
                },

                addContent: function() {
                                this._makeStore();
                },

                onScopeChange: function() {
                                this._makeStore();
                },

                _makeStore: function() {
                    Ext.create('Rally.data.WsapiDataStore', {
                        model: 'UserStory',
                        autoLoad: true,
                        filters: [this.getContext().getTimeboxScope().getQueryFilter()],
                        listeners: {
                            load: this._onDataLoaded,
                            scope: this
                        }
                    });

                },
                _onDataLoaded: function(store, data) {
                    var records = [];
                    var scheduleStateGroups = ["Defined","In-Progress","Completed","Accepted"]

                    // State count variables
                    var definedCount = 0;
                    var inProgressCount = 0;
                    var completedCount = 0;
                    var acceptedCount = 0;

                    // Loop through returned data and group/count by ScheduleState
                    Ext.Array.each(data, function(record) {
                        //Perform custom actions with the data here
                        //Calculations, etc.

                        scheduleState = record.get('ScheduleState');

                        switch(scheduleState)
                        {
                            case "Defined":
                                definedCount++;
                                break;
                            case "In-Progress":
                                inProgressCount++;
                                break;
                            case "Completed":
                                completedCount++;
                                break;
                            case "Accepted":
                                acceptedCount++;
                        }
                    });
                    if (this.down('#myChart')) {
                                this.remove('myChart');
                    }
                    this.add(
                        {
                            xtype: 'rallychart',
                            height: 400,
                            itemId: 'myChart',
                            chartConfig: {
                                chart: {
                                },
                                title: {
                                    text: 'User Story Schedule State Counts',
                                    align: 'center'
                                },
                                xField : 'ScheduleState',
                                xAxis: [
                                    {
                                        //categories: scheduleStateGroups,
                                        title: {
                                            text: 'ScheduleState'
                                        }
                                    }
                                ],
                                yAxis: {
                                    title: {
                                        text: 'Count'
                                    }
                                },
                                plotOptions : {
                                    column: {
                                        color: '#F00'
                                    },
                                    series : {
                                        animation : {
                                            duration : 2000,
                                            easing : 'swing'
                                        }
                                    }
                                }
                            },            
                            chartData: {
                                categories: scheduleStateGroups, 
                                series: [ 
                                    {   
                                        type: 'column',
                                        data: [definedCount, inProgressCount, completedCount, acceptedCount]
                                    }
                                ]
                            }
                        }
                    );
                    this.down('#myChart')._unmask(); 
                }
            });
Другие вопросы по тегам