private static GridBuilder <TeamSeasonSimulationResult> CreateSimulationGridBuilder(IReadOnlyList <TeamSeasonSimulationResult> teams, IEnumerable <PositionGrouping> positionGroupings) { var gridBuilder = new GridBuilder <TeamSeasonSimulationResult>(); gridBuilder.AddColumn("#", Alignment.Right, tssr => tssr.CurrentPosition); gridBuilder.AddColumn("Name", Alignment.Left, tssr => tssr.TeamName); foreach (var position in Enumerable.Range(1, teams.Count)) { gridBuilder.AddColumn($"#{position}", Alignment.Right, tssr => CalculatePercentage(position, tssr)); } gridBuilder.AddColumn("Avg GF", Alignment.Right, tssr => tssr.GoalsFors.Average().ToString("N1")); gridBuilder.AddColumn("Avg GA", Alignment.Right, tssr => tssr.GoalsAgainsts.Average().ToString("N1")); gridBuilder.AddColumn("Avg GD", Alignment.Right, tssr => tssr.GoalDifferences.Average().ToString("N1")); gridBuilder.AddColumn("Avg Pts", Alignment.Right, tssr => tssr.Points.Average().ToString("N1")); foreach (var positionGrouping in positionGroupings) { gridBuilder.AddColumn(positionGrouping.ShortName, Alignment.Right, tssr => CalculatePercentage(positionGrouping, tssr)); } gridBuilder.AddColumn("Name", Alignment.Left, tssr => tssr.TeamName); return(gridBuilder); }
private static string CreateLeagueTableGrid(Season season) { var gridBuilder = new GridBuilder <TablePlacing>(); gridBuilder.AddColumn("#", Alignment.Right, tp => tp.Position); gridBuilder.AddColumn("Name", Alignment.Left, tp => tp.TeamName); gridBuilder.AddColumn("Pld", Alignment.Right, tp => tp.Played); gridBuilder.AddColumn("W", Alignment.Right, tp => tp.Won); gridBuilder.AddColumn("D", Alignment.Right, tp => tp.Drawn); gridBuilder.AddColumn("L", Alignment.Right, tp => tp.Lost); gridBuilder.AddColumn("GF", Alignment.Right, tp => tp.GoalsFor); gridBuilder.AddColumn("GA", Alignment.Right, tp => tp.GoalsAgainst); gridBuilder.AddColumn("GD", Alignment.Right, tp => tp.GoalDifference); gridBuilder.AddColumn("Pts", Alignment.Right, tp => tp.Points); gridBuilder.AddColumn("AS", Alignment.Right, tp => tp.AttackingStrength.ToString("N2")); gridBuilder.AddColumn("DW", Alignment.Right, tp => tp.DefensiveWeakness.ToString("N2")); gridBuilder.AddColumn( string.Empty, Alignment.Left, tp => season.League.PositionGroupings .Where(pg => pg.Contains(tp.Position)) .Select(pg => pg.LongName) .Join(", ")); return(gridBuilder.Build(season.Table)); }