public string RenderProjection( string header, IWeekMaster weekMaster, IAdpMaster adpMaster = null) { var html = new RenderStatsToHtml(WeekMaster) { RenderToCsv = RenderToCsv, Season = Season, Week = Week, LongStats = LongStats, WeeksToGoBack = WeeksToGoBack }; if (header.EndsWith("Short")) { html.LongStats = false; } if (!string.IsNullOrEmpty(SubHeader)) { html.SubHeader = SubHeader; } FileOut = html.RenderProjectedData( playerList: PlayerList, sHead: header, sortOrder: SortOrder, scorer: _mMyScorer, weekMaster: weekMaster, adpMaster: adpMaster); return(FileOut); }
public HotListReporter(IKeepTheTime timekeeper) : base(timekeeper) { WeekMaster = new WeekMaster(); Name = "Hot Lists"; Configs = new List <HotListConfig>(); Configs.Add(new HotListConfig { Category = Constants.K_QUARTERBACK_CAT, Position = "QB", FreeAgents = true, Starters = true }); #if !DEBUG Configs.Add(new HotListConfig { Category = Constants.K_RUNNINGBACK_CAT, Position = "RB", FreeAgents = false, Starters = false }); Configs.Add(new HotListConfig { Category = Constants.K_RECEIVER_CAT, Position = "WR", FreeAgents = true, Starters = true }); Configs.Add(new HotListConfig { Category = Constants.K_RECEIVER_CAT, Position = "TE", FreeAgents = true, Starters = true }); Configs.Add(new HotListConfig { Category = Constants.K_KICKER_CAT, Position = "PK", FreeAgents = true, Starters = true }); #endif Leagues = new List <RosterGridLeague>(); Leagues.Add(new RosterGridLeague { Id = Constants.K_LEAGUE_Gridstats_NFL1, Name = "Gridstats GS1" }); #if !DEBUG Leagues.Add(new RosterGridLeague { Id = Constants.K_LEAGUE_Yahoo, Name = "Spitzys League" }); Leagues.Add(new RosterGridLeague { Id = Constants.K_LEAGUE_Rants_n_Raves, Name = "NFL.COM" }); #endif }
public RenderStatsToWeekly( IRatePlayers scorerIn, IWeekMaster weekMasterIn, IKeepTheTime timekeeper) { _scorer = scorerIn; WeekMaster = weekMasterIn; TimeKeeper = timekeeper; }
public string Render(string header) { if (WeekMaster == null) { WeekMaster = new WeekMaster(); } if (_mFormat.Equals("weekly")) { var html = new RenderStatsToWeekly( _mMyScorer, WeekMaster, TimeKeeper) { CurrentSeasonOnly = true, FullStart = AllWeeks, WeeksToGoBack = WeeksToGoBack > 0 ? WeeksToGoBack : 99 }; FileOut = html.RenderData( PlayerList, header, _mMyScorer.Week); } else { var html = new RenderStatsToHtml( WeekMaster) { RenderToCsv = RenderToCsv, Season = Season, Week = Week, WeeksToGoBack = WeeksToGoBack, LongStats = LongStats }; if (!string.IsNullOrEmpty(SubHeader)) { html.SubHeader = SubHeader; } html.FileOut = $@"{ Utility.OutputDirectory() }{ Utility.CurrentSeason() }\\{ Folder }\\{ header }.htm" ; FileOut = html.RenderData( PlayerList, header, SortOrder, _mMyScorer); } return(FileOut); }
public RenderStatsToWeekly( IRatePlayers scorerIn, IWeekMaster weekMasterIn, IKeepTheTime timekeeper ) { _scorer = scorerIn; WeekMaster = weekMasterIn; TimeKeeper = timekeeper; }
public string RenderProjectedData( ArrayList playerList, string sHead, [Optional] string sortOrder, IRatePlayers scorer, IWeekMaster weekMaster, IAdpMaster adpMaster = null) { // Output the list Utility.Announce("PlayerListing " + sHead); SimpleTableReport r = SetUpProjectionReport( sHead); var ds = LoadProjectedData( plyrList: playerList, scorer: scorer, weekMaster: weekMaster, adpMaster: adpMaster); var dt = ds.Tables[0]; dt.DefaultView.Sort = LongStats ? (string.IsNullOrEmpty(sortOrder) ? "Points DESC" : sortOrder) : "Points DESC"; r.LoadBody(dt); // just assigns the data table FileOut = $@"{ Utility.OutputDirectory() }//{ Season }//Projections//{ sHead }.htm" ; r.RenderAsHtml( fileName: FileOut, persist: true); if (RenderToCsv) { r.RenderAsCsv( "Starters-" + sHead, Logger); } return(FileOut); }
public HotListReporter() { WeekMaster = new WeekMaster(); Name = "Hot Lists"; Configs = new List<HotListConfig>(); Configs.Add(new HotListConfig { Category = Constants.K_QUARTERBACK_CAT, Position = "QB", FreeAgents = true, Starters = true }); #if ! DEBUG Configs.Add(new HotListConfig { Category = Constants.K_RUNNINGBACK_CAT, Position = "RB", FreeAgents = false, Starters = false }); Configs.Add(new HotListConfig { Category = Constants.K_RECEIVER_CAT, Position = "WR", FreeAgents = true, Starters = true }); Configs.Add(new HotListConfig { Category = Constants.K_RECEIVER_CAT, Position = "TE", FreeAgents = true, Starters = true }); Configs.Add(new HotListConfig { Category = Constants.K_KICKER_CAT, Position = "PK", FreeAgents = true, Starters = true }); #endif Leagues = new List<RosterGridLeague>(); Leagues.Add(new RosterGridLeague { Id = Constants.K_LEAGUE_Gridstats_NFL1, Name = "Gridstats GS1" }); #if ! DEBUG Leagues.Add( new RosterGridLeague { Id = Constants.K_LEAGUE_Yahoo, Name = "Spitzys League" } ); Leagues.Add( new RosterGridLeague { Id = Constants.K_LEAGUE_Rants_n_Raves, Name = "NFL.COM" } ); #endif }
public string RenderProjection(string header, IWeekMaster weekMaster) { var html = new RenderStatsToHtml(WeekMaster) { RenderToCsv = RenderToCsv, Season = Season, Week = Week, LongStats = LongStats, WeeksToGoBack = WeeksToGoBack }; if (!string.IsNullOrEmpty(SubHeader)) { html.SubHeader = SubHeader; } FileOut = html.RenderProjectedData(PlayerList, header, SortOrder, _mMyScorer, weekMaster); return(FileOut); }
public RenderStatsToHtml(IWeekMaster weekMasterIn) { WeekMaster = weekMasterIn; Logger = LogManager.GetCurrentClassLogger(); }
public DataSet LoadProjectedData( ArrayList plyrList, IRatePlayers scorer, IWeekMaster weekMaster, IAdpMaster adpMaster = null) { var ds = new DataSet(); var dt = new DataTable(); DefineReportColumns(dt); if (Season == null) { Season = Utility.CurrentSeason(); } var dao = new DbfPlayerGameMetricsDao(); foreach (NFLPlayer p in plyrList) { if (p.PlayerName.Equals("Mark Ingram")) { Console.WriteLine("TestPlayer check"); } var pgms = dao.GetSeason(Season, p.PlayerCode); var totPoints = 0M; foreach (PlayerGameMetrics pgm in pgms) { var nWeek = Int32.Parse(pgm.Week()); var theWeek = weekMaster.GetWeek( season: Season, week: nWeek); // We are only concerned with the first 4 weeks //if (nWeek > 4) // continue; // if there is no scorer it just reads the stats, // this is what we want if (scorer == null) { p.Points = pgm.CalculateProjectedFantasyPoints(p); } else { scorer.RatePlayer(p, theWeek); } if (p.TotStats == null) { p.TotStats = new PlayerStats(); } p.TotStats.Tdp += pgm.ProjTDp; p.TotStats.YDp += pgm.ProjYDp; p.TotStats.Tdr += pgm.ProjTDr; p.TotStats.Tdc += pgm.ProjTDc; p.TotStats.YDr += pgm.ProjYDr; p.TotStats.YDc += pgm.ProjYDc; p.TotStats.Fg += pgm.ProjFG; totPoints += p.Points; } if (totPoints > 0 || !SupressZeros) { var dr = dt.NewRow(); dr["Name"] = p.ProjectionLink(Season); dr["Pos"] = p.PlayerPos; dr["Role"] = p.RoleOut(); dr["RookieYr"] = p.RookieYear; dr["CurrTeam"] = p.TeamCode; if (ShowOpponent) { dr["Opponent"] = p.Opponent; dr["Spread"] = p.PlayerSpread; dr["OppRate"] = p.OppRate; } if (p.Owner == null) { p.LoadOwner(); } dr["FT"] = p.Owner; dr["Age"] = p.PlayerAge(); if (LongStats) { dr["cat"] = p.PlayerCat; dr["scoremod"] = p.ScoreModifier(); dr["seasons"] = p.NoOfSeasons(); dr["newteam"] = p.IsNewbie() ? "*" : string.Empty; dr["CurSCORES"] = p.CurrScores; dr["SCORES"] = p.Scores; dr["Avg"] = p.ScoresPerYear(); dr["INJURY"] = p.Injuries(); dr["Tdp"] = p.TotStats.Tdp; dr["YDp"] = p.TotStats.YDp; dr["Tdr"] = p.TotStats.Tdr; dr["TDc"] = p.TotStats.Tdc; dr["YDr"] = p.TotStats.YDr; dr["YDc"] = p.TotStats.YDc; dr["Fg"] = p.TotStats.Fg; dr["Health"] = p.HealthRating(); dr["newbie"] = 1.0M - p.NewbieModifier(); dr["adjProj"] = AdjustedPoints( p, totPoints); dr["AgeRate"] = p.AgeRating(); } dr["Points"] = totPoints; if (!LongStats) { dr["Points"] = (int)AdjustedPoints( p, totPoints); } dr["Adp"] = AsDraftRound(p.Adp); if (adpMaster != null) { dr["Adp"] = adpMaster.GetAdp( p.PlayerName); } dt.Rows.Add(dr); //Logger.Trace($"{p.PlayerName:-20} {totPoints:0.0}"); } } ds.Tables.Add(dt); return(ds); }
public DataSet LoadProjectedData( ArrayList plyrList, IRatePlayers scorer, IWeekMaster weekMaster) { var ds = new DataSet(); var dt = new DataTable(); var cols = dt.Columns; cols.Add("Name", typeof(String)); cols.Add("Pos", typeof(String)); cols.Add("Role", typeof(String)); cols.Add("RookieYr", typeof(String)); cols.Add("Age", typeof(String)); cols.Add("Currteam", typeof(String)); if (ShowOpponent) { cols.Add("Opponent", typeof(String)); cols.Add("Spread", typeof(String)); cols.Add("OppRate", typeof(String)); } cols.Add("FT", typeof(String)); if (LongStats) { cols.Add("CurScores", typeof(Int32)); cols.Add("Scores", typeof(Int32)); cols.Add("Avg", typeof(Decimal)); cols.Add("Injury", typeof(Int32)); cols.Add("Tdp", typeof(Int32)); cols.Add("YDp", typeof(Int32)); cols.Add("Tdr", typeof(Int32)); cols.Add("TDc", typeof(Int32)); cols.Add("YDr", typeof(Int32)); cols.Add("YDc", typeof(Int32)); cols.Add("Fg", typeof(Int32)); cols.Add("Health", typeof(Decimal)); cols.Add("AdjProj", typeof(Int32)); } cols.Add("Points", typeof(Decimal)); cols.Add("PFP", typeof(Int32)); cols.Add("Adp", typeof(Int32)); if (Season == null) { Season = Utility.CurrentSeason(); } var dao = new DbfPlayerGameMetricsDao(); foreach (NFLPlayer p in plyrList) { var pgms = dao.GetSeason(Season, p.PlayerCode); var totPoints = 0M; foreach (PlayerGameMetrics pgm in pgms) { var theWeek = weekMaster.GetWeek(Season, Int32.Parse(pgm.Week())); // if there is no scorer it just reads the stats, this is what we want if (scorer == null) { p.Points = pgm.CalculateProjectedFantasyPoints(p); } else { scorer.RatePlayer(p, theWeek); } if (p.TotStats == null) { p.TotStats = new PlayerStats(); } p.TotStats.Tdp += pgm.ProjTDp; p.TotStats.YDp += pgm.ProjYDp; p.TotStats.Tdr += pgm.ProjTDr; p.TotStats.Tdc += pgm.ProjTDc; p.TotStats.YDr += pgm.ProjYDr; p.TotStats.YDc += pgm.ProjYDc; p.TotStats.Fg += pgm.ProjFG; totPoints += p.Points; } if (totPoints > 0 || !SupressZeros) { var dr = dt.NewRow(); dr["Name"] = p.PlayerName; dr["Pos"] = p.PlayerPos; dr["Role"] = p.RoleOut(); dr["RookieYr"] = p.RookieYear; dr["CurrTeam"] = p.TeamCode; if (ShowOpponent) { dr["Opponent"] = p.Opponent; dr["Spread"] = p.PlayerSpread; dr["OppRate"] = p.OppRate; } if (p.Owner == null) { p.LoadOwner(); } dr["FT"] = p.Owner; dr["Age"] = p.PlayerAge(); if (LongStats) { dr["CurSCORES"] = p.CurrScores; dr["SCORES"] = p.Scores; dr["Avg"] = p.ScoresPerYear(); dr["INJURY"] = p.Injuries(); dr["Tdp"] = p.TotStats.Tdp; dr["YDp"] = p.TotStats.YDp; dr["Tdr"] = p.TotStats.Tdr; dr["TDc"] = p.TotStats.Tdc; dr["YDr"] = p.TotStats.YDr; dr["YDc"] = p.TotStats.YDc; dr["Fg"] = p.TotStats.Fg; dr["Health"] = p.HealthRating(); dr["AdjProj"] = p.HealthRating() * totPoints; } dr["Points"] = totPoints; dr["PFP"] = p.Rating; dr["Adp"] = p.Adp; dt.Rows.Add(dr); //Logger.Info( $"{p.PlayerName:-20} {totPoints:0.0}" ); } } ds.Tables.Add(dt); return(ds); }
public RenderStatsToHtml( IWeekMaster weekMasterIn ) { WeekMaster = weekMasterIn; }
public DataSet LoadProjectedData( ArrayList plyrList, IRatePlayers scorer, IWeekMaster weekMaster ) { var ds = new DataSet(); var dt = new DataTable(); var cols = dt.Columns; cols.Add("Name", typeof (String)); cols.Add("Pos", typeof (String)); cols.Add("Role", typeof (String)); cols.Add("RookieYr", typeof (String)); cols.Add("Age", typeof (String)); cols.Add("Currteam", typeof (String)); if (ShowOpponent) { cols.Add("Opponent", typeof(String)); cols.Add("Spread", typeof(String)); cols.Add("OppRate", typeof(String)); } cols.Add("FT", typeof (String)); if (LongStats) { cols.Add("CurScores", typeof (Int32)); cols.Add("Scores", typeof (Int32)); cols.Add("Avg", typeof (Decimal)); cols.Add("Injury", typeof (Int32)); cols.Add("Tdp", typeof (Int32)); cols.Add("YDp", typeof (Int32)); cols.Add("Tdr", typeof (Int32)); cols.Add("TDc", typeof (Int32)); cols.Add("YDr", typeof (Int32)); cols.Add("YDc", typeof (Int32)); cols.Add("Fg", typeof (Int32)); cols.Add( "Health", typeof( Decimal ) ); cols.Add( "AdjProj", typeof( Int32 ) ); } cols.Add("Points", typeof (Decimal)); if (Season == null) Season = Utility.CurrentSeason(); var dao = new DbfPlayerGameMetricsDao(); foreach (NFLPlayer p in plyrList) { var pgms = dao.GetSeason(Season, p.PlayerCode); var totPoints = 0M; foreach (PlayerGameMetrics pgm in pgms) { var theWeek = weekMaster.GetWeek( Season, Int32.Parse( pgm.Week() ) ); // if there is no scorer it just reads the stats, this is what we want if ( scorer == null ) p.Points = pgm.CalculateProjectedFantasyPoints(p); else scorer.RatePlayer( p, theWeek ); if ( p.TotStats == null) p.TotStats = new PlayerStats(); p.TotStats.Tdp += pgm.ProjTDp; p.TotStats.YDp += pgm.ProjYDp; p.TotStats.Tdr += pgm.ProjTDr; p.TotStats.Tdc += pgm.ProjTDc; p.TotStats.YDr += pgm.ProjYDr; p.TotStats.YDc += pgm.ProjYDc; p.TotStats.Fg += pgm.ProjFG; totPoints += p.Points; } if (totPoints > 0 || !SupressZeros) { var dr = dt.NewRow(); dr["Name"] = p.PlayerName; dr["Pos"] = p.PlayerPos; dr["Role"] = p.RoleOut(); dr["RookieYr"] = p.RookieYear; dr["CurrTeam"] = p.TeamCode; if (ShowOpponent) { dr["Opponent"] = p.Opponent; dr["Spread"] = p.PlayerSpread; dr["OppRate"] = p.OppRate; } if (p.Owner == null) p.LoadOwner(); dr["FT"] = p.Owner; dr["Age"] = p.PlayerAge(); if (LongStats) { dr["CurSCORES"] = p.CurrScores; dr["SCORES"] = p.Scores; dr["Avg"] = p.ScoresPerYear(); dr["INJURY"] = p.Injuries(); dr["Tdp"] = p.TotStats.Tdp; dr["YDp"] = p.TotStats.YDp; dr["Tdr"] = p.TotStats.Tdr; dr["TDc"] = p.TotStats.Tdc; dr["YDr"] = p.TotStats.YDr; dr["YDc"] = p.TotStats.YDc; dr["Fg"] = p.TotStats.Fg; dr[ "Health" ] = p.HealthRating(); dr[ "AdjProj" ] = p.HealthRating()*totPoints; } dr["Points"] = totPoints; dt.Rows.Add(dr); } } ds.Tables.Add(dt); return ds; }
public string RenderProjection( string header, IWeekMaster weekMaster ) { var html = new RenderStatsToHtml( WeekMaster ) { RenderToCsv = RenderToCsv, Season = Season, Week = Week, LongStats = LongStats, WeeksToGoBack = WeeksToGoBack }; if (!string.IsNullOrEmpty(SubHeader)) html.SubHeader = SubHeader; FileOut = html.RenderProjectedData(PlayerList, header, SortOrder, _mMyScorer, weekMaster ); return FileOut; }
public string Render(string header) { if ( WeekMaster == null ) WeekMaster = new WeekMaster(); if (_mFormat.Equals("weekly")) { var html = new RenderStatsToWeekly(_mMyScorer, WeekMaster, TimeKeeper) { CurrentSeasonOnly = true, FullStart = AllWeeks, WeeksToGoBack = WeeksToGoBack > 0 ? WeeksToGoBack : 99 }; FileOut = html.RenderData(PlayerList, header, _mMyScorer.Week); } else { var html = new RenderStatsToHtml( WeekMaster ) { RenderToCsv = RenderToCsv, Season = Season, Week = Week, WeeksToGoBack = WeeksToGoBack, LongStats = LongStats }; if (!string.IsNullOrEmpty(SubHeader)) html.SubHeader = SubHeader; html.FileOut = string.Format("{0}{2}\\{3}\\{1}.htm", Utility.OutputDirectory(), header, Utility.CurrentSeason(), Folder); FileOut = html.RenderData(PlayerList, header, SortOrder, _mMyScorer); } return FileOut; }
public string RenderProjectedData(ArrayList playerList, string sHead, [Optional] string sortOrder, IRatePlayers scorer, IWeekMaster weekMaster ) { // Output the list Utility.Announce("PlayerListing " + sHead); var r = new SimpleTableReport { ReportHeader = sHead, ReportFooter = Season, DoRowNumbers = true}; if (!string.IsNullOrEmpty(SubHeader)) r.SubHeader = SubHeader; /////////////////////////////////////////////////////////////// var ds = LoadProjectedData(playerList, scorer, weekMaster ); // <-- projection action here /////////////////////////////////////////////////////////////// r.AddColumn(new ReportColumn("Name", "NAME", "{0,-15}")); r.AddColumn(new ReportColumn("Pos", "POS", "{0,9}")); r.AddColumn(new ReportColumn("Role", "ROLE", "{0,9}")); r.AddColumn(new ReportColumn("RookieYr", "ROOKIEYR", "{0,4}")); r.AddColumn(new ReportColumn("Team", "CURRTEAM", "{0,2}")); if (ShowOpponent) { r.AddColumn(new ReportColumn("Opp", "OPPONENT", "{0,2}")); r.AddColumn(new ReportColumn("Opp", "OPPRATE", "{0,2}")); r.AddColumn(new ReportColumn("Spread", "SPREAD", "{0,5}")); } r.AddColumn(new ReportColumn("Age", "AGE", "{0,2}")); r.AddColumn(new ReportColumn("Owner", "FT", "{0,2}")); if (LongStats) { r.AddColumn(new ReportColumn("Curr", "CURSCORES", "{0,5}")); r.AddColumn(new ReportColumn("Tot", "SCORES", "{0,5}")); r.AddColumn(new ReportColumn("Avg", "AVG", "{0:0.0}")); r.AddColumn(new ReportColumn("Inj", "INJURY", "{0,5}")); r.AddColumn(new ReportColumn("YDp", "YDP", "{0,5}")); r.AddColumn(new ReportColumn("Tdp", "TDP", "{0,5}")); r.AddColumn(new ReportColumn("YDr", "YDR", "{0,5}")); r.AddColumn(new ReportColumn("Tdr", "TDR", "{0,5}")); r.AddColumn(new ReportColumn("YDc", "YDC", "{0,5}")); r.AddColumn(new ReportColumn("TDc", "TDC", "{0,5}")); r.AddColumn(new ReportColumn("Fg", "Fg", "{0,5}")); } r.AddColumn(new ReportColumn("Points", "POINTS", "{0,5}")); var dt = ds.Tables[0]; dt.DefaultView.Sort = LongStats ? (string.IsNullOrEmpty(sortOrder) ? "Points DESC" : sortOrder) : "Points DESC"; r.LoadBody(dt); // just assigns the data table FileOut = string.Format("{0}{1}.htm", Utility.OutputDirectory(), sHead); r.RenderAsHtml( FileOut, true); if (RenderToCsv) r.RenderAsCsv("Starters-" + sHead); return FileOut; }
public string RenderProjectedData( ArrayList playerList, string sHead, [Optional] string sortOrder, IRatePlayers scorer, IWeekMaster weekMaster) { // Output the list Utility.Announce("PlayerListing " + sHead); var r = new SimpleTableReport { ReportHeader = sHead, ReportFooter = Season, DoRowNumbers = true }; if (!string.IsNullOrEmpty(SubHeader)) { r.SubHeader = SubHeader; } /////////////////////////////////////////////////////////////// var ds = LoadProjectedData(playerList, scorer, weekMaster); // <-- projection action here /////////////////////////////////////////////////////////////// r.AddColumn(new ReportColumn("Name", "NAME", "{0,-15}")); r.AddColumn(new ReportColumn("Pos", "POS", "{0,9}")); r.AddColumn(new ReportColumn("Role", "ROLE", "{0,9}")); r.AddColumn(new ReportColumn("RookieYr", "ROOKIEYR", "{0,4}")); r.AddColumn(new ReportColumn("Team", "CURRTEAM", "{0,2}")); if (ShowOpponent) { r.AddColumn(new ReportColumn("Opp", "OPPONENT", "{0,2}")); r.AddColumn(new ReportColumn("Opp", "OPPRATE", "{0,2}")); r.AddColumn(new ReportColumn("Spread", "SPREAD", "{0,5}")); } r.AddColumn(new ReportColumn("Age", "AGE", "{0,2}")); r.AddColumn(new ReportColumn("Owner", "FT", "{0,2}")); if (LongStats) { r.AddColumn(new ReportColumn("Curr", "CURSCORES", "{0,5}")); r.AddColumn(new ReportColumn("Tot", "SCORES", "{0,5}")); r.AddColumn(new ReportColumn("Avg", "AVG", "{0:0.0}")); r.AddColumn(new ReportColumn("Inj", "INJURY", "{0,5}")); r.AddColumn(new ReportColumn("YDp", "YDP", "{0,5}")); r.AddColumn(new ReportColumn("Tdp", "TDP", "{0,5}")); r.AddColumn(new ReportColumn("YDr", "YDR", "{0,5}")); r.AddColumn(new ReportColumn("Tdr", "TDR", "{0,5}")); r.AddColumn(new ReportColumn("YDc", "YDC", "{0,5}")); r.AddColumn(new ReportColumn("TDc", "TDC", "{0,5}")); r.AddColumn(new ReportColumn("Fg", "Fg", "{0,5}")); } r.AddColumn(new ReportColumn("Points", "POINTS", "{0,5}")); r.AddColumn(new ReportColumn("PFP", "PFP", "{0,5}")); r.AddColumn(new ReportColumn("ADP", "ADP", "{0,5}")); var dt = ds.Tables[0]; dt.DefaultView.Sort = LongStats ? (string.IsNullOrEmpty(sortOrder) ? "Points DESC" : sortOrder) : "Points DESC"; r.LoadBody(dt); // just assigns the data table FileOut = string.Format("{0}{1}.htm", Utility.OutputDirectory(), sHead); r.RenderAsHtml(FileOut, true); if (RenderToCsv) { r.RenderAsCsv("Starters-" + sHead, Logger); } return(FileOut); }