자바 스크립트에서 REST API를 사용하여 표보기 및 차트보기에 맞춤 (매우 세부적인)주기/리드 타임 데이터를 생성하려고합니다.룩백 API를 통해 순환 맞춤/리드 타임 데이터
내 이야기에 사용자 지정 (필수 항목이 아님) 필드가 & 개이며, c_KanbanStatus의 값은 다음과 같습니다. null, Kickoff, PO, Creative, Team Backlog, Coding, "수락 테스트", "수락 됨".
저는이 사용자 정의 필드를 최근에 추가 했으므로 많은 이야기에 해당 필드가 없거나 그 필드가 없습니다. 다음과 같이
내 생각은 간다 :
- 는, 각각의 상태에 대해, 각 OBJECTID를 들어 OBJECTID 각 칸반 상태 전환을
- 을
- 집계를 전환 확인 쿼리를 수행 사이의 시간 - 델타을 계산할 때 객체는 그 상태로 들어가고 객체가 다음 상태로 들어갈 때.
이 내 코드의 추출물 :
var kanbanStates =
[
"Kickoff",
"PO",
"Creative",
"Team Backlog",
"Coding",
"Acceptance Testing"
];
var username = "**************";
var password = "**************";
var deferreds = [];
for(var i = 0; i < kanbanStates.length; i++)
{
var find =
{
_ProjectHierarchy: ***************,
"_PreviousValues.c_KanbanStatus": { $lt: kanbanStates[i] },
c_KanbanStatus: kanbanStates[i]
};
var config =
{
url:"https://rally1.rallydev.com/analytics/v2.0/service/rally/workspace/********/artifact/snapshot/query.js?find=" + JSON.stringify(find) + "&fields=true&pagesize=999999",
dataType: "jsonp",
jsonp: "jsonp",
contentType: "application/json",
beforeSend: function(xhr)
{
xhr.setRequestHeader("Authorization", "Basic " + btoa(username + ":" + password));
}
};
deferreds.push($.ajax(config));
}
var aggregateResultsByObjectID = function(results)
{
var resultsByItemID = {};
for(var i = 0; i < results.length; i++)
{
if(!results[i][0].Results.c_KanbanStatus === kanbanStates[i])
throw "States don't match!";
for(var j = 0; j < results[i][0].Results.length; j++)
{
var itemID = results[i][0].Results[j].ObjectID;
if(!resultsByItemID.hasOwnProperty(itemID))
{
resultsByItemID[itemID] =
{
creationDate: results[i][0].Results[j].CreationDate,
name: results[i][0].Results[j].Name,
states: [],
results: []
};
}
resultsByItemID[itemID].results.push(results[i][0].Results[j]);
resultsByItemID[itemID].states.push(results[i][0].Results[j].c_KanbanStatus);
}
}
return resultsByItemID;
};
$.when.apply($, deferreds).done(function()
{
var resultsByItemID = aggregateResultsByObjectID(arguments);
console.log(resultsByItemID);
});
이 쿼리의 문제는 사용자가 지정한 비록 내가, 각 상태에 대해 다시 각 OBJECTID에 대해 여러 결과를 얻을 수 있다는 것이다 나는 단지 그 스냅 샷을 원하는 다른 c_KanbanStatus 필드가 있습니다. 결과를 확인하면 c_KanbanStatus 및 _PreviousValues.c_KanbanStatus와 동일한 ObjectID와 동일한 조합에 대해 스냅 샷을 다시 얻습니다. 각 스냅 샷은 다른 일부 필드 편집과 함께 다시 나타납니다. 나는 (그것이 c_KanbanStatus 필드를 가지고 있지로부터 갔을 때에 대한 스냅 샷을 첫 번째 결과를 기대
_PreviousValues:
{
_User: 10301773174
c_KanbanStatus: null
},
c_KanbanStatus: "Coding"
및
_PreviousValues:
{
ScheduleState: 10148772688
_User: 10148977759
},
c_KanbanStatus: "Coding"
:
예를 들어, 같은 OBJECTID, 나는이 두 가지 결과를 얻을 수 "코딩"으로 설정). 두 번째 결과는 c_KanbanStatus 필드가 없다는 것에서 "코딩"으로 넘어 갔다는 것을 암시하는 것처럼 보입니다. 그러나 그 이유는 무엇입니까?
Lookback API에서 뭔가 빠져 있다는 느낌이 들었습니다. 이해 좀 도와주세요!
이 게시물 http://stackoverflow.com/questions/18971688/custom-cycle-time를 참조하십시오. 조건을 만족하는 레코드는 다음과 같이 반환됩니다. 'Ext.Array.filter (records, function (record) { return record.get ('ScheduleState ') ==='Accepted'' 그리고'Rally.util.Array.last ' – nickm