public void SetRootProjectBuild(ProjectBuild rootProjectBuild) { List <ProjectBuild> projectBuilds = rootProjectBuild.GetAllMergedRealProjectBuilds().ToList(); TimeSpan maxDuration = projectBuilds.Max(projectBuild => projectBuild.RealDuration); IEnumerable <ProjectSummary> buildTimelines = projectBuilds.Select( projectBuild => new ProjectSummary { ProjectBuild = projectBuild, Name = Path.GetFileName(projectBuild.Name), Duration = $"{projectBuild.RealDuration.TotalSeconds:0.00} s", DurationRatio = projectBuild.RealDuration.TotalSeconds / maxDuration.TotalSeconds, }); this.ProjectSummaryListBox.Items.Clear(); foreach (ProjectSummary ps in buildTimelines.OrderByDescending(x => x.DurationRatio)) { this.ProjectSummaryListBox.Items.Add(ps); } }
public void SetRootProjectBuild(ProjectBuild rootProjectBuild) { IEnumerable <ProjectTimeline> projectTimelines = rootProjectBuild.GetAllMergedRealProjectBuilds() .Select( projectBuild => new ProjectTimeline { ProjectBuild = projectBuild, Name = projectBuild.ShortName, RealWork = projectBuild.RealWork, StartedAt = projectBuild.StartedAt, CompletedAt = projectBuild.CompletedAt, Duration = $"{projectBuild.RealDuration.TotalSeconds:0.00} s", RootStartedAt = rootProjectBuild.StartedAt, RootCompletedAt = rootProjectBuild.CompletedAt }); this.ProjectTimelineListBox.Items.Clear(); foreach (ProjectTimeline pt in projectTimelines.OrderBy(x => x.CompletedAt)) { this.ProjectTimelineListBox.Items.Add(pt); } }