public FootballLeaguePage() { InitializeComponent(); DataContext = this; Settings.LogPageOpened(this); League = new FootballLeague(); FilterStateList(); FilterTeamList(); }
public FootballLeaguePage() { InitializeComponent(); DataContext = this; Settings.LogPageOpened(this); League = new FootballLeague(); FilterStateList(); FilterTeamList(); }
/// <summary> /// Erstellt den Code für die Tabelle der angegebenen <see cref="FootballLeague"/> /// </summary> /// <param name="league"><see cref="FootballLeague"/> der zu generierenden Tabelle</param> /// <param name="qual1Count">Anzahl der Qual1-Plätze</param> /// <param name="qual2Count">Anzahl der Qual2-Plätze</param> /// <returns>Generierten Tabellencode</returns> public static string GenerateTableCode(FootballLeague league, int qual1Count, int qual2Count) { StringBuilder sb = new StringBuilder(Settings.WikiStrings.FootballLeagueTableHeader); int position = 1; foreach (DataRow row in league.Table.Rows) { try { var team = row["Team"] as FootballTeam; var matches = (int)row["Matches"]; var win = (int)row["Win"]; var drawn = (int)row["Drawn"]; var lose = (int)row["Lose"]; var goalsFor = (int)row["GoalsFor"]; var goalsAgainst = (int)row["GoalsAgainst"]; var goalsString = String.Format("{0}:{1}", goalsFor, goalsAgainst); var points = (int)row["Points"]; string classString = String.Empty; if (position <= qual1Count) { classString = Settings.WikiStrings.ClassQual1; } else if (position - qual1Count <= qual2Count) { classString = Settings.WikiStrings.ClassQual2; } sb.AppendFormat(Settings.WikiStrings.FootballLeagueTableElememt, classString, position++, team.Name, matches, win, drawn, lose, goalsString, points); } catch (Exception e) { System.Diagnostics.Debug.WriteLine(e); } } sb.Append(WikiStrings.TableEnd); return(sb.ToString()); }
/// <summary> /// Generiert den Code für die Darstellung der Ergebnisse der angegebenen <see cref="FootballLeague"/> und nutzt dazu die angegebene <see cref="LeagueWikiTemplate"/> /// </summary> /// <param name="league"><see cref="FootballLeague"/> der darzustellenden Ergebnisse</param> /// <param name="template"><see cref="LeagueWikiTemplate"/> der darzustellenden Ergebnisse</param> /// <returns>Generierten Ergebniscode</returns> public static string GenerateResultsCode(FootballLeague league, LeagueWikiTemplate template) { if (template == null) { throw new NotImplementedException("Results output without template not implemented"); } var templateRegex = new Regex(WikiStrings.TemplateRegexString); var teamRegex = new Regex(@"(A\d+)"); var teamIndexRegex = new Regex(@"(\d+)"); var templateCode = Regex.Replace(template.TemplateCode, @"\r\n?|\n", String.Empty); string[] templateLines = templateCode.Split('|'); string[] filledLines = new string[templateLines.Length + 1]; // Vorlagenzeilen einzeln durchgehen for (int i = 0; i < templateLines.Length; i++) { var line = templateLines[i].Replace(WikiStrings.TemplateEnd, String.Empty); var templateMatch = templateRegex.Match(line); var teamMatches = teamRegex.Matches(line); // Wenn nur ein Team enthalten ist: Teamnamen if (teamMatches.Count == 1) { var index = Int32.Parse(teamMatches[0].Value.Substring(1)); var team = league.Teams[index - 1]; line = String.Format("{0}{1}{2}", WikiStrings.TemplateVariableStartRegexString, line, team.Name); } // Wenn 2 Teams enthalten sind: Ergebnisse oder Zusatzdaten else if (teamMatches.Count == 2) { var index1 = Int32.Parse(teamMatches[0].Value.Substring(1)); var team1 = league.Teams[index1 - 1]; var index2 = Int32.Parse(teamMatches[1].Value.Substring(1)); var team2 = league.Teams[index2 - 1]; var match = league.Matches.Where(x => x.TeamA == team1 && x.TeamB == team2).FirstOrDefault(); line = String.Format("{0}{1}", WikiStrings.TemplateVariableStartRegexString, line); // Datumsangabe if (HasLeagueTemplateDate(line)) { line += match.Date.ToShortDateString(); } // Ortsangabe else if (HasLeagueTemplateLocation(line)) { line += match.TeamA.Stadium.City; } // Spielergebnis else { line += String.Format("{0}:{1}", match.ResultA, match.ResultB); } } // Wenn nicht benötigte Variable else if (templateMatch.Success) { line = (line.StartsWith(WikiStrings.TemplateVariableStartRegexString) ? line : String.Format("{0}{1}", WikiStrings.TemplateVariableStartRegexString, line)); } filledLines[i] = line; } filledLines[filledLines.Length - 1] = WikiStrings.TemplateEnd; return(String.Join(Environment.NewLine, filledLines)); }
/// <summary> /// Generiert den Code für die Darstellung der Ergebnisse der angegebenen <see cref="FootballLeague"/> und nutzt dazu die angegebene <see cref="LeagueWikiTemplate"/> asynchron /// </summary> /// <param name="league"><see cref="FootballLeague"/> der darzustellenden Ergebnisse</param> /// <param name="template"><see cref="LeagueWikiTemplate"/> der darzustellenden Ergebnisse</param> /// <returns>Generierten Ergebniscode</returns> public async static Task <string> GenerateResultsCodeAsync(FootballLeague league, LeagueWikiTemplate template) { return(await Task.Run(() => GenerateResultsCode(league, template))); }
/// <summary> /// Erstellt den Code für die Tabelle der angegebenen <see cref="FootballLeague"/> asynchron /// </summary> /// <param name="league"><see cref="FootballLeague"/> der zu generierenden Tabelle</param> /// <param name="qual1Count">Anzahl der Qual1-Plätze</param> /// <param name="qual2Count">Anzahl der Qual2-Plätze</param> /// <returns>Generierten Tabellencode</returns> public async static Task <string> GenerateTableCodeAsync(FootballLeague league, int qual1Count, int qual2Count) { return(await Task.Run(() => GenerateTableCode(league, qual1Count, qual2Count))); }
/// <summary> /// Generiert den Code für die Darstellung der Ergebnisse der angegebenen <see cref="FootballLeague"/> und nutzt dazu die angegebene <see cref="LeagueWikiTemplate"/> /// </summary> /// <param name="league"><see cref="FootballLeague"/> der darzustellenden Ergebnisse</param> /// <param name="template"><see cref="LeagueWikiTemplate"/> der darzustellenden Ergebnisse</param> /// <returns>Generierten Ergebniscode</returns> public static string GenerateResultsCode(FootballLeague league, LeagueWikiTemplate template) { if(template == null) throw new NotImplementedException("Results output without template not implemented"); var templateRegex = new Regex(WikiStrings.TemplateRegexString); var teamRegex = new Regex(@"(A\d+)"); var teamIndexRegex = new Regex(@"(\d+)"); var templateCode = Regex.Replace(template.TemplateCode, @"\r\n?|\n", String.Empty); string[] templateLines = templateCode.Split('|'); string[] filledLines = new string[templateLines.Length + 1]; // Vorlagenzeilen einzeln durchgehen for(int i = 0; i < templateLines.Length; i++) { var line = templateLines[i].Replace(WikiStrings.TemplateEnd, String.Empty); var templateMatch = templateRegex.Match(line); var teamMatches = teamRegex.Matches(line); // Wenn nur ein Team enthalten ist: Teamnamen if(teamMatches.Count == 1) { var index = Int32.Parse(teamMatches[0].Value.Substring(1)); var team = league.Teams[index - 1]; line = String.Format("{0}{1}{2}", WikiStrings.TemplateVariableStartRegexString, line, team.Name); } // Wenn 2 Teams enthalten sind: Ergebnisse oder Zusatzdaten else if(teamMatches.Count == 2) { var index1 = Int32.Parse(teamMatches[0].Value.Substring(1)); var team1 = league.Teams[index1 - 1]; var index2 = Int32.Parse(teamMatches[1].Value.Substring(1)); var team2 = league.Teams[index2 - 1]; var match = league.Matches.Where(x => x.TeamA == team1 && x.TeamB == team2).FirstOrDefault(); line = String.Format("{0}{1}", WikiStrings.TemplateVariableStartRegexString, line); // Datumsangabe if(HasLeagueTemplateDate(line)) { line += match.Date.ToShortDateString(); } // Ortsangabe else if(HasLeagueTemplateLocation(line)) { line += match.TeamA.Stadium.City; } // Spielergebnis else { line += String.Format("{0}:{1}", match.ResultA, match.ResultB); } } // Wenn nicht benötigte Variable else if(templateMatch.Success) { line = (line.StartsWith(WikiStrings.TemplateVariableStartRegexString) ? line : String.Format("{0}{1}", WikiStrings.TemplateVariableStartRegexString, line)); } filledLines[i] = line; } filledLines[filledLines.Length - 1] = WikiStrings.TemplateEnd; return String.Join(Environment.NewLine, filledLines); }
/// <summary> /// Generiert den Code für die Darstellung der Ergebnisse der angegebenen <see cref="FootballLeague"/> und nutzt dazu die angegebene <see cref="LeagueWikiTemplate"/> asynchron /// </summary> /// <param name="league"><see cref="FootballLeague"/> der darzustellenden Ergebnisse</param> /// <param name="template"><see cref="LeagueWikiTemplate"/> der darzustellenden Ergebnisse</param> /// <returns>Generierten Ergebniscode</returns> public async static Task<string> GenerateResultsCodeAsync(FootballLeague league, LeagueWikiTemplate template) { return await Task.Run(() => GenerateResultsCode(league, template)); }
/// <summary> /// Erstellt den Code für die Tabelle der angegebenen <see cref="FootballLeague"/> /// </summary> /// <param name="league"><see cref="FootballLeague"/> der zu generierenden Tabelle</param> /// <param name="qual1Count">Anzahl der Qual1-Plätze</param> /// <param name="qual2Count">Anzahl der Qual2-Plätze</param> /// <returns>Generierten Tabellencode</returns> public static string GenerateTableCode(FootballLeague league, int qual1Count, int qual2Count) { StringBuilder sb = new StringBuilder(Settings.WikiStrings.FootballLeagueTableHeader); int position = 1; foreach(DataRow row in league.Table.Rows) { try { var team = row["Team"] as FootballTeam; var matches = (int) row["Matches"]; var win = (int) row["Win"]; var drawn = (int) row["Drawn"]; var lose = (int) row["Lose"]; var goalsFor = (int) row["GoalsFor"]; var goalsAgainst = (int) row["GoalsAgainst"]; var goalsString = String.Format("{0}:{1}", goalsFor, goalsAgainst); var points = (int) row["Points"]; string classString = String.Empty; if(position <= qual1Count) classString = Settings.WikiStrings.ClassQual1; else if(position - qual1Count <= qual2Count) classString = Settings.WikiStrings.ClassQual2; sb.AppendFormat(Settings.WikiStrings.FootballLeagueTableElememt, classString, position++, team.Name, matches, win, drawn, lose, goalsString, points); } catch(Exception e) { System.Diagnostics.Debug.WriteLine(e); } } sb.Append(WikiStrings.TableEnd); return sb.ToString(); }
/// <summary> /// Erstellt den Code für die Tabelle der angegebenen <see cref="FootballLeague"/> asynchron /// </summary> /// <param name="league"><see cref="FootballLeague"/> der zu generierenden Tabelle</param> /// <param name="qual1Count">Anzahl der Qual1-Plätze</param> /// <param name="qual2Count">Anzahl der Qual2-Plätze</param> /// <returns>Generierten Tabellencode</returns> public async static Task<string> GenerateTableCodeAsync(FootballLeague league, int qual1Count, int qual2Count) { return await Task.Run(() => GenerateTableCode(league, qual1Count, qual2Count)); }
/// <summary> /// Prüft, ob in der Gruppe 2 Mannschaften oder mehr aus dem gleichen Staat sind /// </summary> /// <param name="group">Gruppe</param> /// <returns>True, wenn 2 oder mehr Mannschaften aus dem gleichen Staat</returns> private bool AreSameStatesInGroup(FootballLeague group) { return (group.Teams[0].State == group.Teams[1].State) || (group.Teams[0].State == group.Teams[2].State) || (group.Teams[0].State == group.Teams[3].State) || (group.Teams[1].State == group.Teams[2].State) || (group.Teams[1].State == group.Teams[3].State) || (group.Teams[2].State == group.Teams[3].State); }
/// <summary> /// Prüft, ob in der Gruppe 2 Mannschaften oder mehr aus dem gleichen Staat sind /// </summary> /// <param name="group">Gruppe</param> /// <returns>True, wenn 2 oder mehr Mannschaften aus dem gleichen Staat</returns> private bool AreSameStatesInGroup(FootballLeague group) { return((group.Teams[0].State == group.Teams[1].State) || (group.Teams[0].State == group.Teams[2].State) || (group.Teams[0].State == group.Teams[3].State) || (group.Teams[1].State == group.Teams[2].State) || (group.Teams[1].State == group.Teams[3].State) || (group.Teams[2].State == group.Teams[3].State)); }