BurndownData GetBurndownData(int project, string label, string historicalDataPath) { var tracker = new PivotalTracker(Environment.GetEnvironmentVariable("TrackerToken", EnvironmentVariableTarget.Machine)); var stories = tracker.Stories(project).Result .Where(item => item.Labels.Contains(label, StringComparer.InvariantCultureIgnoreCase)) .ToArray(); var pointsRemaining = stories.Where(item => item.CurrentState != PivotalStoryState.Accepted).Sum(item => Math.Max(0, item.Estimate ?? 0)); var totalPointsBurned = stories.Where(item => item.CurrentState == PivotalStoryState.Accepted).Sum(item => Math.Max(0, item.Estimate ?? 0)); var burndownData = new BurndownData(); burndownData.Load(Server.MapPath(historicalDataPath)); burndownData.Add(DateTime.Today, pointsRemaining, totalPointsBurned); return burndownData; }
string EstimateRemainingDisplay(BurndownData burndown, int meanVelocity) { var iterationsRemaining = meanVelocity == 0 ? "inf" : (burndown.PointsRemaining / meanVelocity).ToString(); return string.Format("{0} iterations remaining.", iterationsRemaining); }
public BurndownChart(BurndownData data, IChartDataEncoding encoding) { this.burndown = data; this.encoding = encoding; }