static XElement GetHtmlScrumBoardSection(ScrumSprint sprint, ScrumState state) { return new XElement( "div", new XAttribute("class", "scrum_board_section"), new XElement("h2", new XAttribute("id", sprint.States.IndexOf(state)), state.Name + " issues"), sprint.Issues.Where(i => state == sprint.GetStateOfIssue(i)).Select(GetHtmlScrumBoardIssue)); }
static IEnumerable<XElement> GetHtmlScrumBoardIssues(ScrumSprint sprint, ScrumState state) { return sprint.Issues.Where(i => state == sprint.GetStateOfIssue(i)).Select(GetHtmlScrumBoardIssue); }
static XElement GetHtmlScrumBoard(ScrumSprint sprint) { return new XElement( "div", new XAttribute("class", "scrum_board"), new XElement("h1", sprint.Name+" Scrum Board"), new XElement( "table", new XElement( "tr", sprint.States.Select(s => new XElement( "th", String.Format( "{0} [{1} issues] [{2:0.0} points]", s.Name, sprint.Issues.Count(i => s == sprint.GetStateOfIssue(i)), sprint .Issues .Where(i => s == sprint.GetStateOfIssue(i)) .Select(i => i.GetScrumPoints()) .Select(p => p.HasValue?p.Value:0.0) .Aggregate(0.0, (t,n)=> t+n))))), new XElement( "tr", sprint.States.Select(s => new XElement("td", GetHtmlScrumBoardIssues(sprint, s)))))); }