in src/service/ProgressCalculationService.ts [130:153]
description: stripHTML(item.fields["System.Description"]),
teamId: id
};
}
function getParentId(item: WorkItem) {
return item.relations ?
item.relations.filter((relation) => relation.rel === 'System.LinkTypes.Hierarchy-Reverse')
.map((relation) => relation.url.substring(relation.url.lastIndexOf('/') + 1))[0]
: null;
}
function calculateProgress(startDate: Date, endDate: Date, subtasks: number[]): [storyProgress: number, status: Styles] {
const today = new Date();
const totalDays = dateDiff(startDate, endDate);
const remainingDays = dateDiff(today, endDate) > 0 ? dateDiff(today, endDate) : 0;
const totalSubtasks = subtasks.length;
const completedSubtasks = subtasks.filter((t) => t === 100).length;
const subtaskProgress = totalSubtasks > 0 ? completedSubtasks / totalSubtasks : 0;
const timelineProgress = totalDays > 0 ? (remainingDays / totalDays) : 0;
let status: ItemStatus;
if (subtaskProgress === 0) {