Compare commits

...

2 Commits

3 changed files with 13 additions and 7 deletions

View File

@ -2,7 +2,7 @@
"manifestVersion": 1,
"id": "enhanced-sprint-history",
"publisher": "JamesSkemp",
"version": "0.0.115",
"version": "0.0.123",
"name": "Enhanced Sprint History",
"description": "Azure DevOps Extension",
"categories": [

View File

@ -110,7 +110,7 @@ class HubContent extends React.Component<{}, IHubContentState> {
function sprintDatesHeading(selectedTeamIteration: TeamSettingsIteration | undefined) {
if (selectedTeamIteration) {
return (
<h3>{selectedTeamIteration.attributes.startDate.toLocaleDateString()} - {selectedTeamIteration.attributes.finishDate.toLocaleDateString()}</h3>
<h3>{selectedTeamIteration.attributes.startDate.toLocaleDateString(undefined, { timeZone: 'UTC' })} - {selectedTeamIteration.attributes.finishDate.toLocaleDateString(undefined, { timeZone: 'UTC' })}</h3>
);
} else {
return null;
@ -167,12 +167,12 @@ class HubContent extends React.Component<{}, IHubContentState> {
<h2>Iteration History for {this.state.selectedTeamName} : {this.state.selectedTeamIterationName}</h2>
{sprintDatesHeading(this.state.selectedTeamIteration)}
<h4>Iteration User Story History</h4>
<IterationHistoryDisplay iteration={this.state.selectedTeamIteration} workItemHistory={this.state.workItemsHistory} />
<h4>User Stories</h4>
<p>These stories are or have been in this iteration.</p>
{displayUserStories(this.state.workItems)}
<h4>Iteration User Story History</h4>
<IterationHistoryDisplay iteration={this.state.selectedTeamIteration} workItemHistory={this.state.workItemsHistory} />
</Page>
);
}
@ -382,7 +382,7 @@ class HubContent extends React.Component<{}, IHubContentState> {
private updateQueryParams = async () => {
const navService = await SDK.getService<IHostNavigationService>(CommonServiceIds.HostNavigationService);
navService.setQueryParams({ selectedTeam: "" + this.state.selectedTeam, selectedTeamIterationId: this.state.selectedTeamIterationId });
navService.setDocumentTitle("" + this.state.selectedTeamName + " : " + this.state.selectedTeamIterationName + " - Iteration Work Items");
navService.setDocumentTitle("" + this.state.selectedTeamName + " : " + this.state.selectedTeamIterationName + " - Enhanced Sprint History");
}
}

View File

@ -45,7 +45,7 @@ export class IterationHistoryDisplay extends React.Component<IterationHistoryDis
return true;
}
const previousItem = array[i-1];
if (wi.id !== previousItem.id || isWorkItemClosed(wi) !== isWorkItemClosed(previousItem) || (wi.storyPoints !== previousItem.storyPoints && !isWorkItemClosed(wi)) || wi.iterationPath !== previousItem.iterationPath) {
if (wi.id !== previousItem.id || isWorkItemClosed(wi) !== isWorkItemClosed(previousItem) || (wi.storyPoints !== previousItem.storyPoints && !isWorkItemClosed(wi)) || ((wi.state === 'Removed' || previousItem.state === 'Removed') && (wi.state !== 'Removed' || previousItem.state !== 'Removed')) || wi.iterationPath !== previousItem.iterationPath) {
return true;
}
return false;
@ -74,6 +74,12 @@ export class IterationHistoryDisplay extends React.Component<IterationHistoryDis
if (lastRevision.iterationPath !== workItem.iterationPath) {
returnData.change.push(workItem.iterationPath === selectedIterationPath ? 'Added' : 'Removed');
} else {
if (lastRevision.state === 'Removed' && workItem.state !== 'Removed') {
returnData.change.push('Reopened');
} else if (lastRevision.state !== 'Removed' && workItem.state === 'Removed') {
returnData.change.push('Removed');
}
}
if (isWorkItemClosed(lastRevision) !== isWorkItemClosed(workItem)) {
if (isWorkItemClosed(workItem)) {