private void GenerateChartData(DataIndicator indicator, RawAgileSprint sprint, IEnumerable <JiraIssue> issues) { IdealLineSeries.Clear(); IssuesCountSeries.Clear(); IdealLineSeries.Add(new DataPoint { Date = sprint.StartDate.Date, Value = issues.Where(i => i.Created.Date <= sprint.StartDate && (i.Resolved == null || i.Resolved >= sprint.StartDate)) .Select(indicator.CalculateIssueWeight).Sum(), ResolvedIssues = issues.Where(i => i.Resolved.HasValue && i.Resolved.Value.Date == sprint.StartDate.Date).Count(), CreatedIssues = issues.Where(i => i.Created.Date == sprint.StartDate.Date).Count() }); IdealLineSeries.Add(new DataPoint { Date = sprint.EndDate.Date, Value = 0 }); var endDate = sprint.EndDate > DateTime.Now ? DateTime.Today : sprint.EndDate.Date; var iterator = sprint.StartDate.Date; while (iterator <= endDate) { IssuesCountSeries.Add(new DataPoint { Date = iterator, Value = issues.Where(i => i.Created.Date <= iterator && (i.Resolved == null || i.Resolved.Value.Date > iterator)) .Select(indicator.CalculateIssueWeight).Sum(), ResolvedIssues = issues.Where(i => i.Resolved.HasValue && i.Resolved.Value.Date == iterator).Count(), CreatedIssues = issues.Where(i => i.Created.Date == iterator).Count() }); iterator = iterator.AddDays(1); } if (sprint.State != "closed") { BurndownSeriesBrush = new SolidColorBrush(Color.FromRgb(121, 117, 235)); } else if (IssuesCountSeries.Last().Value > 0) { BurndownSeriesBrush = new SolidColorBrush(Color.FromRgb(212, 0, 0)); } else { BurndownSeriesBrush = new SolidColorBrush(Color.FromRgb(0, 181, 27)); } }
public BurnDownChartViewModel(RawAgileSprint sprint, IEnumerable <JiraIssue> issues) { _sprint = sprint; _issues = issues; IdealLineSeries = new ObservableCollection <DataPoint>(); IssuesCountSeries = new ObservableCollection <DataPoint>(); AvailableIndicators = new ObservableCollection <DataIndicator> { new DataIndicator { Name = "Issues count", CalculateIssueWeight = i => 1 }, new DataIndicator { Name = "Story points", CalculateIssueWeight = i => i.StoryPoints } }; SelectedIndicator = AvailableIndicators[0]; }
public SprintDetailsViewModel(RawAgileSprint sprint, IList <JiraIssue> issues, IMessenger messenger, IssuesStatisticsCalculator statisticsCalculator) { Sprint = sprint; Issues = issues; _messenger = messenger; _statisticsCalculator = statisticsCalculator; ScrumCardsCommand = new RelayCommand(() => _messenger.Send(new OpenScrumCardsMessage(Issues))); BurnDownCommand = new RelayCommand(() => _messenger.Send(new OpenBurnDownMessage(Sprint, Issues))); EngagementCommand = new RelayCommand(() => _messenger.Send(new OpenEngagementChartMessage(Issues))); BrowseIssuesCommand = new RelayCommand(() => _messenger.Send(new OpenIssuesBrowserMessage(Issues))); GatherStatistics(); }
private void PickUpSprint(RawAgileSprint sprint) { _messenger.Send(new OpenPageMessage(_followUp(sprint))); }
public OpenBurnDownMessage(RawAgileSprint sprint, IList <JiraIssue> issues) { Issues = issues; Sprint = sprint; }
public GetAgileSprintDetailsResponse(RawAgileSprint sprint) { Sprint = sprint; }