Ich bin in der Lage, Baumstruktur für die User Storys zu bekommen, aber es für Fehler auch wollen, die mit bestimmten User Story, so dass auf einem Bildschirm zusammenhängen Ich kann sowohl User Storys als auch die zugehörigen Defekte sehen.Wie sollte ich eine Baumstruktur in Rally von Mängeln in Bezug auf User Story erstellen
0
A
Antwort
0
Sie können features: [{ftype:'groupingsummary'}]
von ExtJS verwenden, um Defekte nach User Stories zu gruppieren und sogar durch ein anderes Feld im unten stehenden Code von PlanEstimate zusammenzufassen. Um Defekte nach Userstory zu gruppieren, wird das Requirement-Attribut defect verwendet, das auf die zugehörige Story verweist. In diesem Beispiel werden Defekte durch Iteration gefiltert.
Ext.define('CustomApp', {
extend: 'Rally.app.TimeboxScopedApp',
componentCls: 'app',
scopeType: 'iteration',
comboboxConfig: {
fieldLabel: 'Select Iteration:',
labelWidth: 100
},
onScopeChange: function() {
this.makeStore();
},
makeStore: function() {
var filter = Ext.create('Rally.data.wsapi.Filter', {
property: 'Requirement',
operator: '!=',
value: null
});
filter= filter.and(this.getContext().getTimeboxScope().getQueryFilter());
filter.toString();
Ext.create('Rally.data.wsapi.Store', {
model: 'Defect',
fetch: ['ObjectID', 'FormattedID', 'Name', 'State', 'Requirement', 'PlanEstimate'],
autoLoad: true,
filters: [filter],
listeners: {
load: this.onDataLoaded,
scope: this
}
});
},
onDataLoaded: function(store, records){
if (records.length === 0) {
this.notifyNoDefects();
}
else{
if (this.notifier) {
this.notifier.destroy();
}
var that = this;
var promises = [];
_.each(records, function(defect) {
promises.push(this.getStory(defect, this));
},this);
Deft.Promise.all(promises).then({
success: function(results) {
that.defects = results;
that.makeGrid();
}
});
}
},
getStory: function(defect, scope) {
var deferred = Ext.create('Deft.Deferred');
var that = scope;
var storyOid = defect.get('Requirement').ObjectID;
Rally.data.ModelFactory.getModel({
type: 'HierarchicalRequirement',
scope: this,
success: function(model, operation) {
fetch: ['FormattedID','ScheduleState'],
model.load(storyOid, {
scope: this,
success: function(record, operation) {
var storyScheduleState = record.get('ScheduleState');
var storyFid = record.get('FormattedID');
var defectRef = defect.get('_ref');
var defectOid = defect.get('ObjectID');
var defectFid = defect.get('FormattedID');
var defectPlanEstimate = defect.get('PlanEstimate');
var defectName = defect.get('Name');
var defectState = defect.get('State');
var story = defect.get('Requirement');
result = {
"_ref" : defectRef,
"ObjectID" : defectOid,
"FormattedID" : defectFid,
"Name" : defectName,
"PlanEstimate" : defectPlanEstimate,
"State" : defectState,
"Requirement" : story,
"StoryState" : storyScheduleState,
"StoryID" : storyFid
};
deferred.resolve(result);
}
});
}
});
return deferred;
},
makeGrid: function() {
var that = this;
if (this.grid) {
this.grid.destroy();
}
var gridStore = Ext.create('Rally.data.custom.Store', {
data: that.defects,
groupField: 'StoryID',
pageSize: 1000,
});
this.grid = Ext.create('Rally.ui.grid.Grid', {
itemId: 'defectGrid',
store: gridStore,
features: [{ftype:'groupingsummary'}],
minHeight: 500,
columnCfgs: [
{
text: 'Formatted ID', dataIndex: 'FormattedID', xtype: 'templatecolumn',
tpl: Ext.create('Rally.ui.renderer.template.FormattedIDTemplate')
},
{
text: 'Name', dataIndex: 'Name',
},
{
text: 'State', dataIndex: 'State',
summaryRenderer: function() {
return "PlanEstimate Total";
}
},
{
text: 'PlanEstimate', dataIndex: 'PlanEstimate',
summaryType: 'sum'
},
{
text: 'Story', dataIndex: 'Story',
renderer: function(val, meta, record) {
return '<a href="https://rally1.rallydev.com/#/detail/userstory/' + record.get('Requirement').ObjectID + '" target="_blank">' + record.get('Requirement').FormattedID + '</a>';
}
},
{
text: 'Story Schedule State', dataIndex: 'StoryState',
}
]
});
this.add(this.grid);
this.grid.reconfigure(gridStore);
},
notifyNoDefects: function() {
if (this.grid) {
this.grid.destroy();
}
if (this.notifier) {
this.notifier.destroy();
}
this.notifier = Ext.create('Ext.Container',{
xtype: 'container',
itemId: 'notifyContainer',
html: "No Defects found matching selection."
});
this.add(this.notifier);
}
});
Verwandte Themen
- 1. Erstellen einer benutzerdefinierten Vorlage für eine User Story in Rallydev
- 2. Infrastructural User Story Problem
- 3. Wie kann ich mithilfe der Rally-REST-API die URL ohne Website (Website) für eine User Story abrufen?
- 4. Fehler In Bezug auf User Defined Conversion
- 5. In Jira Agile wann sollte ich eine "Story" verwenden und wann sollte ich eine "Verbesserung" verwenden?
- 6. Eine Baumstruktur in Django-Modellen erstellen?
- 7. Wo finde ich die beste User Story Vorlage?
- 8. eine verschachtelte Baumstruktur von einem Pfad in XSLT erstellen
- 9. Wann sollte eine Baumstruktur class/struct sein?
- 10. Ändern des gelösten Status in den Status "Geschlossen" für eine User Story in Jira
- 11. Ich versuche, eine „unlöschbar“ admin user in Wordpress zu erstellen
- 12. Wie kann ich eine verschachtelte Baumstruktur aktualisieren?
- 13. Erstellen einer nicht binären Baumstruktur in C++
- 14. Authentifizierung für Java Rally Rest API
- 15. Muss ein Schauspieler einer User Story ein menschliches Wesen sein?
- 16. Baumstruktur in JSP mit Javascript erstellen
- 17. Wie drucke ich eine Baumstruktur in Ocaml schnell?
- 18. Wie viele DbContext-Unterklassen sollte ich in Bezug auf meine Modelle haben?
- 19. Übertragung von User Storys von Rally (CA Agile Central) auf Visual Studio Team Services
- 20. In Bezug auf Gridview
- 21. eine Baumstruktur 3D-Zeichnung in WebGL
- 22. Pass in Bezug auf eine in C++
- 23. Antonyme von "Parsing" in Bezug auf XML
- 24. Wo sollte Verhalten leben, wenn die User-Story die Eltern erwähnt, aber die Aktion ist auf ein Kind?
- 25. Wie soll ich User Stories in Bugzilla implementieren?
- 26. Baumstruktur in HTML
- 27. Wie in Bezug auf jede gewünschte Leistung
- 28. In Bezug auf Notify()
- 29. Präsentieren von Daten in einer Baumstruktur
- 30. Rally WSAPI - RestApi: Kann ich beim Erstellen mehrerer Elemente einen Rang festlegen?