예제 #1
0
 public string GetProjectionsSummaryText(BoardProjections projections)
 {
     var template = "Team Velocity is <strong>[[velocity]]</strong> points per week. Incomplete estimated points are <strong>[[remaining_points]]</strong>. Expected completion window is <strong>[[expected_completion_min]] - [[expected_completion_max]]</strong>.";
     template = template.Replace("[[velocity]]", projections.historicalPointsPerWeek.ToString("##"))
         .Replace("[[remaining_points]]", projections.EstimatePoints.ToString())
         .Replace("[[expected_completion_min]]", projections.ProjectedMinimumCompletionDate.ToLongDateString())
         .Replace("[[expected_completion_max]]", projections.ProjectedMaximumCompletionDate.ToLongDateString());
     return template;
 }
예제 #2
0
        private BoardProjections BuildBoardProjection(BoardStatsAnalysis boardStatsAnalysis, double estimatedPoints)
        {
            var totalDonePoints = boardStatsAnalysis.TotalPoints;
            var elapsedWeeks = boardStatsAnalysis.CompletedWeeksElapsed - _configuration.WeeksToSkipForVelocityCalculation;

            var historicalPointsPerWeek = totalDonePoints / elapsedWeeks;
            var projectedWeeksToComplete = estimatedPoints / historicalPointsPerWeek;
            var projectedWeeksMin = projectedWeeksToComplete * _configuration.TrelloProjectionsEstimateWindowLowerBoundFactor;
            var projectedWeeksMax = projectedWeeksToComplete * _configuration.TrelloProjectionsEstimateWindowUpperBoundFactor;

            var projection = new BoardProjections()
            {
                EstimatePoints = estimatedPoints,
                TotalPointsCompleted = totalDonePoints,
                elapsedWeeks = elapsedWeeks,
                historicalPointsPerWeek = historicalPointsPerWeek,
                ProjectedWeeksToCompletion = projectedWeeksToComplete,
                ProjectionCompletionDate = GetCompletionDate(projectedWeeksToComplete),
                ProjectedMinimumCompletionDate = GetCompletionDate(projectedWeeksMin),
                ProjectedMaximumCompletionDate = GetCompletionDate(projectedWeeksMax)
            };
            return projection;
        }
 private void AddProjectionsSeries(BoardProjections projections, dynamic burndownSeries)
 {
     burndownSeries.projectionSeriesBestCase = GetCompletionProjectionSeries("Best Case", projections.EstimatePoints, projections.ProjectedMinimumCompletionDate);
     burndownSeries.projectionSeriesWorstCase = GetCompletionProjectionSeries("Worst Case", projections.EstimatePoints, projections.ProjectedMaximumCompletionDate);
     burndownSeries.projectionSeriesIdeal = GetCompletionProjectionSeries("Ideal", projections.EstimatePoints, projections.ProjectionCompletionDate);
 }