From c826889695c08a76c0e4c4f5d8ae126a3eb09ab6 Mon Sep 17 00:00:00 2001 From: emkael Date: Sun, 30 Jul 2017 00:51:34 +0200 Subject: Tournament info code refactored for incoming generalization --- Aktywator/Tournament.cs | 37 ++++++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-) (limited to 'Aktywator/Tournament.cs') diff --git a/Aktywator/Tournament.cs b/Aktywator/Tournament.cs index b46740b..ec45c15 100644 --- a/Aktywator/Tournament.cs +++ b/Aktywator/Tournament.cs @@ -8,6 +8,10 @@ namespace Aktywator { public class Tournament { + public const int TYPE_PARY = 1; + public const int TYPE_TEAMY = 2; + public const int TYPE_UNKNOWN = 0; + private string _name; public string name { @@ -34,17 +38,17 @@ namespace Aktywator if ((mysql.selectOne("SHOW TABLES LIKE 'admin'") == "admin") && (mysql.selectOne("SHOW FIELDS IN admin LIKE 'dnazwa'") == "dnazwa") && (mysql.selectOne("SHOW TABLES LIKE 'zawodnicy'") == "zawodnicy")) - _type = 1; + _type = Tournament.TYPE_PARY; else if ((mysql.selectOne("SHOW TABLES LIKE 'admin'") == "admin") && (mysql.selectOne("SHOW FIELDS IN admin LIKE 'teamcnt'") == "teamcnt") && (mysql.selectOne("SHOW TABLES LIKE 'players'") == "players")) - _type = 2; - else _type = 0; + _type = Tournament.TYPE_TEAMY; + else _type = Tournament.TYPE_UNKNOWN; } public override string ToString() { - return this.name + " [" + (this.type == 1 ? 'P' : 'T') + "]"; + return this.name + " [" + (this.type == Tournament.TYPE_PARY ? 'P' : 'T') + "]"; } public static List getTournaments() @@ -55,7 +59,7 @@ namespace Aktywator while (dbs.Read()) { Tournament t = new Tournament(dbs.GetString(0)); - if (t.type > 0) + if (t.type > Tournament.TYPE_UNKNOWN) list.Add(t); t.mysql.close(); } @@ -64,7 +68,7 @@ namespace Aktywator public string getSectionsNum() { - if (type == 1) + if (type == Tournament.TYPE_PARY) return mysql.selectOne("SELECT COUNT(DISTINCT seknum) FROM sektory;"); else return "1"; @@ -72,11 +76,30 @@ namespace Aktywator public string getTablesNum() { - if (type == 1) + if (type == Tournament.TYPE_PARY) return mysql.selectOne("SELECT COUNT(*) FROM sektory;"); else return mysql.selectOne("SELECT teamcnt FROM admin;"); } + + internal void setup() + { + if (this.mysql != null) + { + this.mysql.close(); + this.mysql.connect(); + } + } + + internal string getName() + { + return this.name; + } + + internal string getTypeLabel() + { + return this._type == Tournament.TYPE_PARY ? "Pary" : "Teamy"; + } } } -- cgit v1.2.3 From f14238e95bf1a10789585bf7632c5506daecc630 Mon Sep 17 00:00:00 2001 From: emkael Date: Sun, 30 Jul 2017 00:55:33 +0200 Subject: Refactoring Tournament as MySQLTournament --- Aktywator/Aktywator.csproj | 2 +- Aktywator/Bws.cs | 2 +- Aktywator/ChooseTournament.cs | 10 ++-- Aktywator/MainForm.cs | 6 +-- Aktywator/MySQLTournament.cs | 105 ++++++++++++++++++++++++++++++++++++++++++ Aktywator/Tournament.cs | 105 ------------------------------------------ 6 files changed, 115 insertions(+), 115 deletions(-) create mode 100644 Aktywator/MySQLTournament.cs delete mode 100644 Aktywator/Tournament.cs (limited to 'Aktywator/Tournament.cs') diff --git a/Aktywator/Aktywator.csproj b/Aktywator/Aktywator.csproj index edee3c0..97fa090 100644 --- a/Aktywator/Aktywator.csproj +++ b/Aktywator/Aktywator.csproj @@ -107,7 +107,7 @@ - + ChooseTournament.cs diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 6a3b394..24e707c 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -344,7 +344,7 @@ namespace Aktywator else return 0; } - public void syncNames(Tournament tournament, bool interactive, string startRounds) + public void syncNames(MySQLTournament tournament, bool interactive, string startRounds) { int count = 0, countNew = 0, SKOK_STOLOW = 100; data d; diff --git a/Aktywator/ChooseTournament.cs b/Aktywator/ChooseTournament.cs index 2bc2ded..155624b 100644 --- a/Aktywator/ChooseTournament.cs +++ b/Aktywator/ChooseTournament.cs @@ -10,8 +10,8 @@ namespace Aktywator { public partial class ChooseTournament : Form { - private Tournament[] turns; - public Tournament chosenTournament; + private MySQLTournament[] turns; + public MySQLTournament chosenTournament; public ChooseTournament() { @@ -20,10 +20,10 @@ namespace Aktywator private void ChooseTournament_Load(object sender, EventArgs e) { - List list = Tournament.getTournaments(); - turns = new Tournament[list.Count]; + List list = MySQLTournament.getTournaments(); + turns = new MySQLTournament[list.Count]; int c = 0; - foreach (Tournament t in list) + foreach (MySQLTournament t in list) { turns[c++] = t; listBox.Items.Add(t.ToString()); diff --git a/Aktywator/MainForm.cs b/Aktywator/MainForm.cs index 55e2f53..96d965b 100644 --- a/Aktywator/MainForm.cs +++ b/Aktywator/MainForm.cs @@ -15,7 +15,7 @@ namespace Aktywator public string date = "28.06.2017"; private Bws bws; - private Tournament tournament; + private MySQLTournament tournament; public MainForm() { @@ -181,7 +181,7 @@ namespace Aktywator } } - private void updateTournamentInfo(Tournament tournament) + private void updateTournamentInfo(MySQLTournament tournament) { if (tournament != null) { @@ -194,7 +194,7 @@ namespace Aktywator bSync.Enabled = true; bAutoSync.Enabled = true; eInterval.Enabled = true; - if (tournament.type == Tournament.TYPE_TEAMY) + if (tournament.type == MySQLTournament.TYPE_TEAMY) { lSkok.Visible = true; lNazwyTeamow.Visible = true; diff --git a/Aktywator/MySQLTournament.cs b/Aktywator/MySQLTournament.cs new file mode 100644 index 0000000..54f3f7b --- /dev/null +++ b/Aktywator/MySQLTournament.cs @@ -0,0 +1,105 @@ +using System; +using System.Collections.Generic; +using System.Text; +using MySql.Data.MySqlClient; +using data = MySql.Data.MySqlClient.MySqlDataReader; + +namespace Aktywator +{ + public class MySQLTournament + { + public const int TYPE_PARY = 1; + public const int TYPE_TEAMY = 2; + public const int TYPE_UNKNOWN = 0; + + private string _name; + public string name + { + get { return _name; } + } + + private int _type; // 0-unknown, 1-Pary, 2-Teamy + public int type + { + get { return _type; } + } + + public MySQL mysql; + + public MySQLTournament(string name) + { + this._name = name; + mysql = new MySQL(name); + recognizeType(); + } + + private void recognizeType() + { + if ((mysql.selectOne("SHOW TABLES LIKE 'admin'") == "admin") + && (mysql.selectOne("SHOW FIELDS IN admin LIKE 'dnazwa'") == "dnazwa") + && (mysql.selectOne("SHOW TABLES LIKE 'zawodnicy'") == "zawodnicy")) + _type = MySQLTournament.TYPE_PARY; + else if ((mysql.selectOne("SHOW TABLES LIKE 'admin'") == "admin") + && (mysql.selectOne("SHOW FIELDS IN admin LIKE 'teamcnt'") == "teamcnt") + && (mysql.selectOne("SHOW TABLES LIKE 'players'") == "players")) + _type = MySQLTournament.TYPE_TEAMY; + else _type = MySQLTournament.TYPE_UNKNOWN; + } + + public override string ToString() + { + return this.name + " [" + (this.type == MySQLTournament.TYPE_PARY ? 'P' : 'T') + "]"; + } + + public static List getTournaments() + { + List list = new List(); + MySQL c = new MySQL(""); + data dbs = c.select("SHOW DATABASES;"); + while (dbs.Read()) + { + MySQLTournament t = new MySQLTournament(dbs.GetString(0)); + if (t.type > MySQLTournament.TYPE_UNKNOWN) + list.Add(t); + t.mysql.close(); + } + return list; + } + + public string getSectionsNum() + { + if (type == MySQLTournament.TYPE_PARY) + return mysql.selectOne("SELECT COUNT(DISTINCT seknum) FROM sektory;"); + else + return "1"; + } + + public string getTablesNum() + { + if (type == MySQLTournament.TYPE_PARY) + return mysql.selectOne("SELECT COUNT(*) FROM sektory;"); + else + return mysql.selectOne("SELECT teamcnt FROM admin;"); + } + + + internal void setup() + { + if (this.mysql != null) + { + this.mysql.close(); + this.mysql.connect(); + } + } + + internal string getName() + { + return this.name; + } + + internal string getTypeLabel() + { + return this._type == MySQLTournament.TYPE_PARY ? "Pary" : "Teamy"; + } + } +} diff --git a/Aktywator/Tournament.cs b/Aktywator/Tournament.cs deleted file mode 100644 index ec45c15..0000000 --- a/Aktywator/Tournament.cs +++ /dev/null @@ -1,105 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using MySql.Data.MySqlClient; -using data = MySql.Data.MySqlClient.MySqlDataReader; - -namespace Aktywator -{ - public class Tournament - { - public const int TYPE_PARY = 1; - public const int TYPE_TEAMY = 2; - public const int TYPE_UNKNOWN = 0; - - private string _name; - public string name - { - get { return _name; } - } - - private int _type; // 0-unknown, 1-Pary, 2-Teamy - public int type - { - get { return _type; } - } - - public MySQL mysql; - - public Tournament(string name) - { - this._name = name; - mysql = new MySQL(name); - recognizeType(); - } - - private void recognizeType() - { - if ((mysql.selectOne("SHOW TABLES LIKE 'admin'") == "admin") - && (mysql.selectOne("SHOW FIELDS IN admin LIKE 'dnazwa'") == "dnazwa") - && (mysql.selectOne("SHOW TABLES LIKE 'zawodnicy'") == "zawodnicy")) - _type = Tournament.TYPE_PARY; - else if ((mysql.selectOne("SHOW TABLES LIKE 'admin'") == "admin") - && (mysql.selectOne("SHOW FIELDS IN admin LIKE 'teamcnt'") == "teamcnt") - && (mysql.selectOne("SHOW TABLES LIKE 'players'") == "players")) - _type = Tournament.TYPE_TEAMY; - else _type = Tournament.TYPE_UNKNOWN; - } - - public override string ToString() - { - return this.name + " [" + (this.type == Tournament.TYPE_PARY ? 'P' : 'T') + "]"; - } - - public static List getTournaments() - { - List list = new List(); - MySQL c = new MySQL(""); - data dbs = c.select("SHOW DATABASES;"); - while (dbs.Read()) - { - Tournament t = new Tournament(dbs.GetString(0)); - if (t.type > Tournament.TYPE_UNKNOWN) - list.Add(t); - t.mysql.close(); - } - return list; - } - - public string getSectionsNum() - { - if (type == Tournament.TYPE_PARY) - return mysql.selectOne("SELECT COUNT(DISTINCT seknum) FROM sektory;"); - else - return "1"; - } - - public string getTablesNum() - { - if (type == Tournament.TYPE_PARY) - return mysql.selectOne("SELECT COUNT(*) FROM sektory;"); - else - return mysql.selectOne("SELECT teamcnt FROM admin;"); - } - - - internal void setup() - { - if (this.mysql != null) - { - this.mysql.close(); - this.mysql.connect(); - } - } - - internal string getName() - { - return this.name; - } - - internal string getTypeLabel() - { - return this._type == Tournament.TYPE_PARY ? "Pary" : "Teamy"; - } - } -} -- cgit v1.2.3 From cfe97d223573c4792e5d42a4443c139fd8c87381 Mon Sep 17 00:00:00 2001 From: emkael Date: Sun, 30 Jul 2017 01:44:48 +0200 Subject: Refactoring MySQL tournament names: generalization --- Aktywator/Aktywator.csproj | 3 ++ Aktywator/Bws.cs | 4 +-- Aktywator/ChooseTournament.cs | 10 ++++++- Aktywator/MainForm.cs | 7 +++-- Aktywator/MySQLTournament.cs | 65 +++++++++++++++---------------------------- Aktywator/ParyTournament.cs | 30 ++++++++++++++++++++ Aktywator/TeamyTournament.cs | 30 ++++++++++++++++++++ Aktywator/Tournament.cs | 36 ++++++++++++++++++++++++ 8 files changed, 136 insertions(+), 49 deletions(-) create mode 100644 Aktywator/ParyTournament.cs create mode 100644 Aktywator/TeamyTournament.cs create mode 100644 Aktywator/Tournament.cs (limited to 'Aktywator/Tournament.cs') diff --git a/Aktywator/Aktywator.csproj b/Aktywator/Aktywator.csproj index 97fa090..e1b78f1 100644 --- a/Aktywator/Aktywator.csproj +++ b/Aktywator/Aktywator.csproj @@ -99,6 +99,7 @@ MysqlSettings.cs + @@ -108,6 +109,8 @@ + + ChooseTournament.cs diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 24e707c..41717b2 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -344,7 +344,7 @@ namespace Aktywator else return 0; } - public void syncNames(MySQLTournament tournament, bool interactive, string startRounds) + public void syncNames(Tournament tournament, bool interactive, string startRounds) { int count = 0, countNew = 0, SKOK_STOLOW = 100; data d; @@ -394,7 +394,7 @@ namespace Aktywator query.Append(ew); query.Append(" UNION ALL SELECT ' '; "); } - mydata n = tournament.mysql.select(query.ToString()); + mydata n = ((MySQLTournament)tournament).mysql.select(query.ToString()); DialogResult dr = DialogResult.None; diff --git a/Aktywator/ChooseTournament.cs b/Aktywator/ChooseTournament.cs index 155624b..734b191 100644 --- a/Aktywator/ChooseTournament.cs +++ b/Aktywator/ChooseTournament.cs @@ -34,7 +34,15 @@ namespace Aktywator { if (listBox.SelectedIndex >= 0) { - chosenTournament = turns[listBox.SelectedIndex]; + switch (turns[listBox.SelectedIndex].type) + { + case Tournament.TYPE_PARY: + chosenTournament = new ParyTournament(turns[listBox.SelectedIndex].name); + break; + case Tournament.TYPE_TEAMY: + chosenTournament = new TeamyTournament(turns[listBox.SelectedIndex].name); + break; + } Close(); } } diff --git a/Aktywator/MainForm.cs b/Aktywator/MainForm.cs index 96d965b..e2e87db 100644 --- a/Aktywator/MainForm.cs +++ b/Aktywator/MainForm.cs @@ -15,7 +15,7 @@ namespace Aktywator public string date = "28.06.2017"; private Bws bws; - private MySQLTournament tournament; + private Tournament tournament; public MainForm() { @@ -181,7 +181,7 @@ namespace Aktywator } } - private void updateTournamentInfo(MySQLTournament tournament) + private void updateTournamentInfo(Tournament tournament) { if (tournament != null) { @@ -194,7 +194,7 @@ namespace Aktywator bSync.Enabled = true; bAutoSync.Enabled = true; eInterval.Enabled = true; - if (tournament.type == MySQLTournament.TYPE_TEAMY) + if (tournament.GetType().Equals(typeof(TeamyTournament))) { lSkok.Visible = true; lNazwyTeamow.Visible = true; @@ -209,6 +209,7 @@ namespace Aktywator { lSkok.Visible = false; lNazwyTeamow.Visible = false; + } } diff --git a/Aktywator/MySQLTournament.cs b/Aktywator/MySQLTournament.cs index 54f3f7b..ff3258a 100644 --- a/Aktywator/MySQLTournament.cs +++ b/Aktywator/MySQLTournament.cs @@ -6,24 +6,8 @@ using data = MySql.Data.MySqlClient.MySqlDataReader; namespace Aktywator { - public class MySQLTournament + public class MySQLTournament : Tournament { - public const int TYPE_PARY = 1; - public const int TYPE_TEAMY = 2; - public const int TYPE_UNKNOWN = 0; - - private string _name; - public string name - { - get { return _name; } - } - - private int _type; // 0-unknown, 1-Pary, 2-Teamy - public int type - { - get { return _type; } - } - public MySQL mysql; public MySQLTournament(string name) @@ -38,17 +22,17 @@ namespace Aktywator if ((mysql.selectOne("SHOW TABLES LIKE 'admin'") == "admin") && (mysql.selectOne("SHOW FIELDS IN admin LIKE 'dnazwa'") == "dnazwa") && (mysql.selectOne("SHOW TABLES LIKE 'zawodnicy'") == "zawodnicy")) - _type = MySQLTournament.TYPE_PARY; + _type = Tournament.TYPE_PARY; else if ((mysql.selectOne("SHOW TABLES LIKE 'admin'") == "admin") && (mysql.selectOne("SHOW FIELDS IN admin LIKE 'teamcnt'") == "teamcnt") && (mysql.selectOne("SHOW TABLES LIKE 'players'") == "players")) - _type = MySQLTournament.TYPE_TEAMY; - else _type = MySQLTournament.TYPE_UNKNOWN; + _type = Tournament.TYPE_TEAMY; + else _type = Tournament.TYPE_UNKNOWN; } public override string ToString() { - return this.name + " [" + (this.type == MySQLTournament.TYPE_PARY ? 'P' : 'T') + "]"; + return this.name + " [" + (this.type == Tournament.TYPE_PARY ? 'P' : 'T') + "]"; } public static List getTournaments() @@ -59,31 +43,14 @@ namespace Aktywator while (dbs.Read()) { MySQLTournament t = new MySQLTournament(dbs.GetString(0)); - if (t.type > MySQLTournament.TYPE_UNKNOWN) + if (t.type > Tournament.TYPE_UNKNOWN) list.Add(t); t.mysql.close(); } return list; } - public string getSectionsNum() - { - if (type == MySQLTournament.TYPE_PARY) - return mysql.selectOne("SELECT COUNT(DISTINCT seknum) FROM sektory;"); - else - return "1"; - } - - public string getTablesNum() - { - if (type == MySQLTournament.TYPE_PARY) - return mysql.selectOne("SELECT COUNT(*) FROM sektory;"); - else - return mysql.selectOne("SELECT teamcnt FROM admin;"); - } - - - internal void setup() + override internal void setup() { if (this.mysql != null) { @@ -92,14 +59,26 @@ namespace Aktywator } } - internal string getName() + override internal string getName() { return this.name; } - internal string getTypeLabel() + override public string getSectionsNum() + { + throw new NotImplementedException("Don't call this method on generic class instance"); + } + + override public string getTablesNum() { - return this._type == MySQLTournament.TYPE_PARY ? "Pary" : "Teamy"; + throw new NotImplementedException("Don't call this method on generic class instance"); } + + override internal string getTypeLabel() + { + throw new NotImplementedException("Don't call this method on generic class instance"); + } + } } + diff --git a/Aktywator/ParyTournament.cs b/Aktywator/ParyTournament.cs new file mode 100644 index 0000000..8d80d9f --- /dev/null +++ b/Aktywator/ParyTournament.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Aktywator +{ + class ParyTournament: MySQLTournament + { + public ParyTournament(string name) + : base(name) + { + } + + override internal string getTypeLabel() + { + return "Pary"; + } + + override public string getSectionsNum() + { + return this.mysql.selectOne("SELECT COUNT(DISTINCT seknum) FROM sektory;"); + } + + override public string getTablesNum() + { + return this.mysql.selectOne("SELECT COUNT(*) FROM sektory;"); + } + + } +} diff --git a/Aktywator/TeamyTournament.cs b/Aktywator/TeamyTournament.cs new file mode 100644 index 0000000..34908be --- /dev/null +++ b/Aktywator/TeamyTournament.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Aktywator +{ + class TeamyTournament : MySQLTournament + { + public TeamyTournament(string name) + : base(name) + { + } + + override internal string getTypeLabel() + { + return "Teamy"; + } + + override public string getSectionsNum() + { + return "1"; + } + + override public string getTablesNum() + { + return this.mysql.selectOne("SELECT teamcnt FROM admin;"); + } + + } +} diff --git a/Aktywator/Tournament.cs b/Aktywator/Tournament.cs new file mode 100644 index 0000000..fdeb323 --- /dev/null +++ b/Aktywator/Tournament.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Aktywator +{ + abstract public class Tournament + { + public const int TYPE_PARY = 1; + public const int TYPE_TEAMY = 2; + public const int TYPE_UNKNOWN = 0; + + protected string _name; + public string name + { + get { return _name; } + } + + protected int _type; // 0-unknown, 1-Pary, 2-Teamy + public int type + { + get { return _type; } + } + + abstract internal void setup(); + + abstract internal string getName(); + + abstract public string getSectionsNum(); + + abstract public string getTablesNum(); + + abstract internal string getTypeLabel(); + + } +} -- cgit v1.2.3 From 14f684cee81e45ebaea0dd0abb60c5039a7ed467 Mon Sep 17 00:00:00 2001 From: emkael Date: Sun, 30 Jul 2017 02:28:57 +0200 Subject: Loading names from MySQL tournaments generalized as a dataset --- Aktywator/Bws.cs | 147 ++++++++++++++++++++----------------------- Aktywator/ParyTournament.cs | 25 ++++++++ Aktywator/TeamyTournament.cs | 16 +++++ Aktywator/Tournament.cs | 4 ++ 4 files changed, 114 insertions(+), 78 deletions(-) (limited to 'Aktywator/Tournament.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 41717b2..5302454 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -3,9 +3,7 @@ using System.Collections.Generic; using System.Text; using System.Data.OleDb; using System.Windows.Forms; -using MySql.Data.MySqlClient; -using mydata = MySql.Data.MySqlClient.MySqlDataReader; -using data = System.Data.OleDb.OleDbDataReader; +using System.Data.OleDb; namespace Aktywator { @@ -111,7 +109,7 @@ namespace Aktywator try { string s; - data d = sql.select("SELECT DISTINCT `Section` FROM " + table + " ORDER BY 1"); + OleDbDataReader d = sql.select("SELECT DISTINCT `Section` FROM " + table + " ORDER BY 1"); d.Read(); s = d[0].ToString(); while (d.Read()) @@ -347,10 +345,10 @@ namespace Aktywator public void syncNames(Tournament tournament, bool interactive, string startRounds) { int count = 0, countNew = 0, SKOK_STOLOW = 100; - data d; + OleDbDataReader d; startRounds = startRounds.Trim(); - if (tournament.type == 1) + if (tournament.type == Tournament.TYPE_PARY) { if (startRounds.Length > 0) { @@ -367,94 +365,87 @@ namespace Aktywator d = sql.select("SELECT `Section`, `Table`, NSPair, EWPair FROM RoundData WHERE `Table`<=" + SKOK_STOLOW); } - while (d.Read()) + try { - string section = d.GetInt32(0).ToString(); - string table = d.GetInt32(1).ToString(); - string ns = d.GetInt32(2).ToString(); - string ew = d.GetInt32(3).ToString(); + Dictionary> names = tournament.getNameList(); - StringBuilder query = new StringBuilder(); - if (tournament.type == 1) - { - query.Append("SELECT CONCAT(SUBSTR(imie,1,1),'.',nazw) name FROM zawodnicy WHERE idp="); - query.Append(ns); - query.Append(" OR idp="); - query.Append(ew); - query.Append(" ORDER BY idp "); - if (int.Parse(ew) < int.Parse(ns)) - query.Append("DESC"); - } - else + while (d.Read()) { - query.Append("SELECT fullname NAME FROM teams WHERE id="); - query.Append(ns); - query.Append(" UNION ALL SELECT ' ' UNION ALL"); - query.Append(" SELECT fullname NAME FROM teams WHERE id="); - query.Append(ew); - query.Append(" UNION ALL SELECT ' '; "); - } - mydata n = ((MySQLTournament)tournament).mysql.select(query.ToString()); - - DialogResult dr = DialogResult.None; + string section = d.GetInt32(0).ToString(); + string table = d.GetInt32(1).ToString(); + int ns = d.GetInt32(2); + int ew = d.GetInt32(3); - try - { - n.Read(); - countNew += updateName(section, table, "N", n.IsDBNull(0) ? "" : n.GetString(0)); - if (tournament.type == 2) - countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "E", n.IsDBNull(0) ? "" : n.GetString(0)); - n.Read(); - countNew += updateName(section, table, "S", n.IsDBNull(0) ? "" : n.GetString(0)); - if (tournament.type == 2) - countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "W", n.IsDBNull(0) ? "" : n.GetString(0)); - n.Read(); - countNew += updateName(section, table, "E", n.IsDBNull(0) ? "" : n.GetString(0)); - if (tournament.type == 2) - countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "N", n.IsDBNull(0) ? "" : n.GetString(0)); - n.Read(); - countNew += updateName(section, table, "W", n.IsDBNull(0) ? "" : n.GetString(0)); - if (tournament.type == 2) - countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "S", n.IsDBNull(0) ? "" : n.GetString(0)); - - if (tournament.type == 1) count += 4; - else count += 8; - } - catch (MySqlException ee) - { - if (interactive) + try { - if (ee.ErrorCode == -2147467259) + if (!names.ContainsKey(ns)) { - dr = MessageBox.Show("W bws-ie jest para/team (" + ns + " albo " + ew - + "), który nie istnieje w wybranym turnieju. Może to nie ten turniej?" - + "\n\n" + "Kontynuować wczytywanie?", - "Zły turniej", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); + throw new KeyNotFoundException(ns.ToString()); } - else + countNew += updateName(section, table, "N", names[ns][0]); + countNew += updateName(section, table, "S", names[ns][1]); + count += 2; + if (tournament.type == Tournament.TYPE_TEAMY) { - dr = MessageBox.Show(ee.Message + "\n\n" + "Kontynuować?", - "Błąd MySQL", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); + countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "E", names[ns][0]); + countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "W", names[ns][1]); + count += 2; + } + } + catch (KeyNotFoundException keyE) + { + if (interactive) + { + DialogResult dr = MessageBox.Show("W bws-ie jest para/team (" + keyE.Message + ")" + + ", który nie istnieje w wybranym turnieju." + + "Może to nie ten turniej?" + "\n\n" + "Kontynuować wczytywanie?", + "Zły turniej", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); + if (dr == DialogResult.No) break; } } - } - finally - { try { - n.Close(); + if (!names.ContainsKey(ew)) + { + throw new KeyNotFoundException(ew.ToString()); + } + countNew += updateName(section, table, "E", names[ew][0]); + countNew += updateName(section, table, "W", names[ew][1]); + count += 2; + if (tournament.type == Tournament.TYPE_TEAMY) + { + countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "N", names[ew][0]); + countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "S", names[ew][1]); + count += 2; + } + } + catch (KeyNotFoundException keyE) + { + if (interactive) + { + DialogResult dr = MessageBox.Show("W bws-ie jest para/team (" + keyE.Message + ")" + + ", który nie istnieje w wybranym turnieju." + + "Może to nie ten turniej?" + "\n\n" + "Kontynuować wczytywanie?", + "Zły turniej", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); + if (dr == DialogResult.No) break; + } } - catch (Exception) { } } - if (dr == DialogResult.No) break; + if (interactive) + { + MessageBox.Show("Synchronizacja zakończona!\nPrzejrzanych nazwisk: " + count + "\nZmienionych: " + countNew, + "Synchronizacja nazwisk", MessageBoxButtons.OK, MessageBoxIcon.Information); + if (sql.selectOne("SELECT BM2ShowPlayerNames FROM Settings") != "1") + MessageBox.Show("Pamiętaj żeby włączyć opcję \"pokazuj nazwiska\"!", "Brakujące ustawienie", + MessageBoxButtons.OK, MessageBoxIcon.Information); + } } - if (interactive) + catch (Exception ee) { - MessageBox.Show("Synchronizacja zakończona!\nPrzejrzanych nazwisk: " + count + "\nZmienionych: " + countNew, - "Synchronizacja nazwisk", MessageBoxButtons.OK, MessageBoxIcon.Information); - if (sql.selectOne("SELECT BM2ShowPlayerNames FROM Settings") != "1") - MessageBox.Show("Pamiętaj żeby włączyć opcję \"pokazuj nazwiska\"!", "Brakujące ustawienie", - MessageBoxButtons.OK, MessageBoxIcon.Information); + if (interactive) + { + MessageBox.Show(ee.Message, "Błąd wczytywania nazwisk", MessageBoxButtons.OK, MessageBoxIcon.Error); + } } } diff --git a/Aktywator/ParyTournament.cs b/Aktywator/ParyTournament.cs index 8d80d9f..a5d9ff2 100644 --- a/Aktywator/ParyTournament.cs +++ b/Aktywator/ParyTournament.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Text; +using MySql.Data.MySqlClient; namespace Aktywator { @@ -26,5 +27,29 @@ namespace Aktywator return this.mysql.selectOne("SELECT COUNT(*) FROM sektory;"); } + override internal Dictionary> getNameList() + { + Dictionary> pairs = new Dictionary>(); + MySqlDataReader dbData = this.mysql.select("SELECT idp, CONCAT(SUBSTR(imie,1,1),'.',nazw) name FROM zawodnicy"); + while (dbData.Read()) + { + int pairNo = dbData.GetInt32(0); + if (!pairs.ContainsKey(pairNo)) + { + pairs.Add(pairNo, new List()); + } + pairs[pairNo].Add(dbData.IsDBNull(1) ? "" : dbData.GetString(1)); + } + foreach (KeyValuePair> pair in pairs) + { + while (pair.Value.Count < 2) + { + pair.Value.Add(""); + } + } + dbData.Close(); + return pairs; + } + } } diff --git a/Aktywator/TeamyTournament.cs b/Aktywator/TeamyTournament.cs index 34908be..3b83c8b 100644 --- a/Aktywator/TeamyTournament.cs +++ b/Aktywator/TeamyTournament.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Text; +using MySql.Data.MySqlClient; namespace Aktywator { @@ -26,5 +27,20 @@ namespace Aktywator return this.mysql.selectOne("SELECT teamcnt FROM admin;"); } + override internal Dictionary> getNameList() + { + Dictionary> teams = new Dictionary>(); + MySqlDataReader dbData = this.mysql.select("SELECT id, fullname NAME FROM teams"); + while (dbData.Read()) + { + List names = new List(); + names.Add(dbData.IsDBNull(1) ? "" : dbData.GetString(1)); + names.Add(""); + teams.Add(dbData.GetInt32(0), names); + } + dbData.Close(); + return teams; + } + } } diff --git a/Aktywator/Tournament.cs b/Aktywator/Tournament.cs index fdeb323..70fe268 100644 --- a/Aktywator/Tournament.cs +++ b/Aktywator/Tournament.cs @@ -32,5 +32,9 @@ namespace Aktywator abstract internal string getTypeLabel(); + virtual internal Dictionary> getNameList() + { + return new Dictionary>(); + } } } -- cgit v1.2.3 From 618dad37ac9fa986facdcc21c1faa277f760dcb2 Mon Sep 17 00:00:00 2001 From: emkael Date: Sun, 30 Jul 2017 03:39:44 +0200 Subject: Data retrieval from RRB tournament files --- Aktywator/Aktywator.csproj | 1 + Aktywator/RRBTournament.cs | 83 ++++++++++++++++++++++++++++++++++++++++++++++ Aktywator/Tournament.cs | 4 ++- 3 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 Aktywator/RRBTournament.cs (limited to 'Aktywator/Tournament.cs') diff --git a/Aktywator/Aktywator.csproj b/Aktywator/Aktywator.csproj index e1b78f1..a4dc515 100644 --- a/Aktywator/Aktywator.csproj +++ b/Aktywator/Aktywator.csproj @@ -105,6 +105,7 @@ + diff --git a/Aktywator/RRBTournament.cs b/Aktywator/RRBTournament.cs new file mode 100644 index 0000000..d35e8f3 --- /dev/null +++ b/Aktywator/RRBTournament.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Xml; +using System.IO; + +namespace Aktywator +{ + class RRBTournament : Tournament + { + private XmlDocument _xml; + private string p; + + public RRBTournament(string name) + { + this._name = name; + this._type = Tournament.TYPE_RRB; + } + + override internal void setup() + { + this._xml = new XmlDocument(); + this._xml.Load(this._name); + } + + override internal string getName() + { + return this._xml.SelectSingleNode("//ustawienia/nazwa").InnerText; + } + + override public string getSectionsNum() + { + List sections = new List(); + foreach (XmlNode table in this._xml.SelectNodes("//monitor/stoly/stol")) + { + string section = table.SelectSingleNode("sektor").InnerText; + if (!sections.Contains(section)) + { + sections.Add(section); + } + } + return sections.Count.ToString(); + } + + override public string getTablesNum() + { + return this._xml.SelectNodes("//monitor/stoly/stol").Count.ToString(); + } + + override internal string getTypeLabel() + { + return "RRBridge"; + } + + override internal Dictionary> getNameList() + { + Dictionary> names = new Dictionary>(); + foreach (XmlNode pair in this._xml.SelectNodes("//lista/para")) + { + int pairNo = Int32.Parse(pair.SelectSingleNode("numer").InnerText); + names.Add(pairNo, new List()); + foreach (XmlNode player in pair.SelectNodes("gracz/nazwisko")) + { + string[] name = player.InnerText.Trim().Split(' '); + if (name.Length > 0) + { + name[0] = name[0][0].ToString(); + names[pairNo].Add(String.Join(" ", name)); + } + } + } + + foreach (KeyValuePair> pair in names) + { + while (pair.Value.Count < 2) + { + pair.Value.Add(""); + } + } + return names; + } + } +} diff --git a/Aktywator/Tournament.cs b/Aktywator/Tournament.cs index 70fe268..85a2666 100644 --- a/Aktywator/Tournament.cs +++ b/Aktywator/Tournament.cs @@ -8,6 +8,7 @@ namespace Aktywator { public const int TYPE_PARY = 1; public const int TYPE_TEAMY = 2; + public const int TYPE_RRB = 3; public const int TYPE_UNKNOWN = 0; protected string _name; @@ -16,7 +17,7 @@ namespace Aktywator get { return _name; } } - protected int _type; // 0-unknown, 1-Pary, 2-Teamy + protected int _type = Tournament.TYPE_UNKNOWN; // 0-unknown, 1-Pary, 2-Teamy, 3-RRB public int type { get { return _type; } @@ -36,5 +37,6 @@ namespace Aktywator { return new Dictionary>(); } + } } -- cgit v1.2.3 From 6ad488f28bfd74c39be0c420a671b7c33f9250d6 Mon Sep 17 00:00:00 2001 From: emkael Date: Wed, 23 Aug 2017 17:17:49 +0200 Subject: Name shortening independent from torunament source --- Aktywator/ParyTournament.cs | 2 +- Aktywator/RRBTournament.cs | 14 +------------- Aktywator/Tournament.cs | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 14 deletions(-) (limited to 'Aktywator/Tournament.cs') diff --git a/Aktywator/ParyTournament.cs b/Aktywator/ParyTournament.cs index f467119..4950c3d 100644 --- a/Aktywator/ParyTournament.cs +++ b/Aktywator/ParyTournament.cs @@ -31,7 +31,7 @@ namespace Aktywator override internal Dictionary> getNameList() { Dictionary> pairs = new Dictionary>(); - MySqlDataReader dbData = this.mysql.select("SELECT idp, CONCAT(SUBSTR(imie,1,1),'.',nazw) name FROM zawodnicy"); + MySqlDataReader dbData = this.mysql.select("SELECT idp, CONCAT(imie, ' ', nazw) name FROM zawodnicy"); while (dbData.Read()) { int pairNo = dbData.GetInt32(0); diff --git a/Aktywator/RRBTournament.cs b/Aktywator/RRBTournament.cs index 4c8f281..48040ee 100644 --- a/Aktywator/RRBTournament.cs +++ b/Aktywator/RRBTournament.cs @@ -62,19 +62,7 @@ namespace Aktywator names.Add(pairNo, new List()); foreach (XmlNode player in pair.SelectNodes("gracz/nazwisko")) { - if ("pauza".Equals(player.InnerText.Trim())) - { - names[pairNo].Add(" "); - } - else - { - string[] name = player.InnerText.Trim().Split(' '); - if (name.Length > 0) - { - name[0] = (name[0].Length > 0) ? name[0][0].ToString() : " "; - } - names[pairNo].Add(String.Join(" ", name)); - } + names[pairNo].Add(player.InnerText); } } diff --git a/Aktywator/Tournament.cs b/Aktywator/Tournament.cs index 85a2666..cbe9bf9 100644 --- a/Aktywator/Tournament.cs +++ b/Aktywator/Tournament.cs @@ -38,5 +38,21 @@ namespace Aktywator return new Dictionary>(); } + virtual internal string shortenNameToBWS(string name) + { + if ("pauza".Equals(name.Trim())) + { + return " "; + } + else + { + string[] nameParts = name.Trim().Split(' '); + if (nameParts.Length > 0) + { + nameParts[0] = (nameParts[0].Length > 0) ? nameParts[0][0].ToString() : " "; + } + return String.Join(" ", nameParts); + } + } } } -- cgit v1.2.3 From 7a496566f759a5aac8b56d46c1b9eb36bdcb3f52 Mon Sep 17 00:00:00 2001 From: emkael Date: Wed, 23 Aug 2017 17:18:38 +0200 Subject: Editor for BWS names --- Aktywator/Bws.cs | 4 +- Aktywator/MainForm.Designer.cs | 310 +++++++++++++++++++++++++---------------- Aktywator/MainForm.cs | 25 +++- Aktywator/MainForm.resx | 214 ++++++++++++++-------------- Aktywator/Tournament.cs | 89 ++++++++++++ 5 files changed, 416 insertions(+), 226 deletions(-) (limited to 'Aktywator/Tournament.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 31686c9..4400272 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -358,7 +358,7 @@ namespace Aktywator throw new InvalidCastException("Unable to read numeric value from BWS field"); } - public void syncNames(Tournament tournament, bool interactive, string startRounds) + public void syncNames(Tournament tournament, bool interactive, string startRounds, DataGridView grid) { int count = 0, countNew = 0, SKOK_STOLOW = 100; OleDbDataReader d; @@ -382,7 +382,7 @@ namespace Aktywator try { - Dictionary> names = tournament.getNameList(); + Dictionary> names = tournament.getBWSNames(grid); while (d.Read()) { diff --git a/Aktywator/MainForm.Designer.cs b/Aktywator/MainForm.Designer.cs index eb5cf5f..50830b6 100644 --- a/Aktywator/MainForm.Designer.cs +++ b/Aktywator/MainForm.Designer.cs @@ -84,6 +84,22 @@ this.xShowPlayerNames = new System.Windows.Forms.CheckBox(); this.label1 = new System.Windows.Forms.Label(); this.tabPage2 = new System.Windows.Forms.TabPage(); + this.namesPanel = new System.Windows.Forms.Panel(); + this.label3 = new System.Windows.Forms.Label(); + this.namesGridView = new System.Windows.Forms.DataGridView(); + this.Number = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.NorthSouth = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.EastWest = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.lTournament = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.lType = new System.Windows.Forms.Label(); + this.lNazwyTeamow = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.lSkok = new System.Windows.Forms.Label(); + this.lSections = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.lTables = new System.Windows.Forms.Label(); this.syncToolStrip = new System.Windows.Forms.ToolStrip(); this.bSync = new System.Windows.Forms.ToolStripButton(); this.bAutoSync = new System.Windows.Forms.ToolStripButton(); @@ -98,17 +114,6 @@ this.bMysqlSettings = new System.Windows.Forms.ToolStripButton(); this.bForceSync = new System.Windows.Forms.ToolStripButton(); this.bTruncate = new System.Windows.Forms.ToolStripButton(); - this.lNazwyTeamow = new System.Windows.Forms.Label(); - this.lSkok = new System.Windows.Forms.Label(); - this.label8 = new System.Windows.Forms.Label(); - this.lTables = new System.Windows.Forms.Label(); - this.lSections = new System.Windows.Forms.Label(); - this.lType = new System.Windows.Forms.Label(); - this.label6 = new System.Windows.Forms.Label(); - this.label5 = new System.Windows.Forms.Label(); - this.label4 = new System.Windows.Forms.Label(); - this.lTournament = new System.Windows.Forms.Label(); - this.label3 = new System.Windows.Forms.Label(); this.tabPage3 = new System.Windows.Forms.TabPage(); this.toolStrip3 = new System.Windows.Forms.ToolStrip(); this.bLoadHands = new System.Windows.Forms.ToolStripButton(); @@ -122,6 +127,7 @@ this.labelFilename = new System.Windows.Forms.ToolStripLabel(); this.bLaunch = new System.Windows.Forms.ToolStripButton(); this.bUpdateSession = new System.Windows.Forms.ToolStripButton(); + this.namesTimer = new System.Windows.Forms.Timer(this.components); this.statusStrip1.SuspendLayout(); this.groupBox1.SuspendLayout(); this.tabControl1.SuspendLayout(); @@ -135,6 +141,8 @@ this.groupBox3.SuspendLayout(); this.groupBox2.SuspendLayout(); this.tabPage2.SuspendLayout(); + this.namesPanel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.namesGridView)).BeginInit(); this.syncToolStrip.SuspendLayout(); this.toolStrip4.SuspendLayout(); this.tabPage3.SuspendLayout(); @@ -704,19 +712,9 @@ // // tabPage2 // + this.tabPage2.Controls.Add(this.namesPanel); this.tabPage2.Controls.Add(this.syncToolStrip); this.tabPage2.Controls.Add(this.toolStrip4); - this.tabPage2.Controls.Add(this.lNazwyTeamow); - this.tabPage2.Controls.Add(this.lSkok); - this.tabPage2.Controls.Add(this.label8); - this.tabPage2.Controls.Add(this.lTables); - this.tabPage2.Controls.Add(this.lSections); - this.tabPage2.Controls.Add(this.lType); - this.tabPage2.Controls.Add(this.label6); - this.tabPage2.Controls.Add(this.label5); - this.tabPage2.Controls.Add(this.label4); - this.tabPage2.Controls.Add(this.lTournament); - this.tabPage2.Controls.Add(this.label3); this.tabPage2.Location = new System.Drawing.Point(4, 22); this.tabPage2.Name = "tabPage2"; this.tabPage2.Padding = new System.Windows.Forms.Padding(3); @@ -725,9 +723,163 @@ this.tabPage2.Text = "Nazwiska"; this.tabPage2.UseVisualStyleBackColor = true; // + // namesPanel + // + this.namesPanel.Controls.Add(this.label3); + this.namesPanel.Controls.Add(this.namesGridView); + this.namesPanel.Controls.Add(this.lTournament); + this.namesPanel.Controls.Add(this.label4); + this.namesPanel.Controls.Add(this.lType); + this.namesPanel.Controls.Add(this.lNazwyTeamow); + this.namesPanel.Controls.Add(this.label5); + this.namesPanel.Controls.Add(this.lSkok); + this.namesPanel.Controls.Add(this.lSections); + this.namesPanel.Controls.Add(this.label8); + this.namesPanel.Controls.Add(this.label6); + this.namesPanel.Controls.Add(this.lTables); + this.namesPanel.Location = new System.Drawing.Point(3, 31); + this.namesPanel.Name = "namesPanel"; + this.namesPanel.Size = new System.Drawing.Size(562, 449); + this.namesPanel.TabIndex = 29; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(16, 18); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(42, 13); + this.label3.TabIndex = 0; + this.label3.Text = "Turniej:"; + // + // namesGridView + // + this.namesGridView.AllowUserToAddRows = false; + this.namesGridView.AllowUserToDeleteRows = false; + this.namesGridView.AllowUserToResizeColumns = false; + this.namesGridView.AllowUserToResizeRows = false; + this.namesGridView.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; + this.namesGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.namesGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.Number, + this.NorthSouth, + this.EastWest}); + this.namesGridView.Location = new System.Drawing.Point(2, 112); + this.namesGridView.Name = "namesGridView"; + this.namesGridView.Size = new System.Drawing.Size(557, 318); + this.namesGridView.TabIndex = 28; + this.namesGridView.CellValueChanged += new System.Windows.Forms.DataGridViewCellEventHandler(this.namesGridView_CellValueChanged); + // + // Number + // + this.Number.HeaderText = "Nr"; + this.Number.Name = "Number"; + this.Number.ReadOnly = true; + // + // NorthSouth + // + this.NorthSouth.FillWeight = 300F; + this.NorthSouth.HeaderText = "NS"; + this.NorthSouth.Name = "NorthSouth"; + // + // EastWest + // + this.EastWest.FillWeight = 300F; + this.EastWest.HeaderText = "EW"; + this.EastWest.Name = "EastWest"; + // + // lTournament + // + this.lTournament.AutoSize = true; + this.lTournament.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.lTournament.Location = new System.Drawing.Point(64, 18); + this.lTournament.Name = "lTournament"; + this.lTournament.Size = new System.Drawing.Size(0, 16); + this.lTournament.TabIndex = 2; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(30, 40); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(28, 13); + this.label4.TabIndex = 3; + this.label4.Text = "Typ:"; + // + // lType + // + this.lType.AutoSize = true; + this.lType.Location = new System.Drawing.Point(64, 40); + this.lType.Name = "lType"; + this.lType.Size = new System.Drawing.Size(0, 13); + this.lType.TabIndex = 6; + // + // lNazwyTeamow + // + this.lNazwyTeamow.AutoSize = true; + this.lNazwyTeamow.Location = new System.Drawing.Point(30, 66); + this.lNazwyTeamow.Name = "lNazwyTeamow"; + this.lNazwyTeamow.Size = new System.Drawing.Size(227, 13); + this.lNazwyTeamow.TabIndex = 20; + this.lNazwyTeamow.Text = "w piernikach będą wyświetlane nazwy teamów"; + this.lNazwyTeamow.Visible = false; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(410, 18); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(55, 13); + this.label5.TabIndex = 4; + this.label5.Text = "Sektorów:"; + // + // lSkok + // + this.lSkok.AutoSize = true; + this.lSkok.Location = new System.Drawing.Point(52, 84); + this.lSkok.Name = "lSkok"; + this.lSkok.Size = new System.Drawing.Size(188, 13); + this.lSkok.TabIndex = 19; + this.lSkok.Text = "mam nadzieję, że skok stołów = 100 :)"; + this.lSkok.Visible = false; + // + // lSections + // + this.lSections.AutoSize = true; + this.lSections.Location = new System.Drawing.Point(471, 18); + this.lSections.Name = "lSections"; + this.lSections.Size = new System.Drawing.Size(0, 13); + this.lSections.TabIndex = 7; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(0, 433); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(291, 13); + this.label8.TabIndex = 12; + this.label8.Text = "Do serwerka wysyłane są tylko nazwiska, które się zmieniły."; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(421, 40); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(44, 13); + this.label6.TabIndex = 5; + this.label6.Text = "Stołów:"; + // + // lTables + // + this.lTables.AutoSize = true; + this.lTables.Location = new System.Drawing.Point(471, 40); + this.lTables.Name = "lTables"; + this.lTables.Size = new System.Drawing.Size(0, 13); + this.lTables.TabIndex = 8; + // // syncToolStrip // this.syncToolStrip.BackColor = System.Drawing.Color.White; + this.syncToolStrip.Dock = System.Windows.Forms.DockStyle.Bottom; this.syncToolStrip.GripMargin = new System.Windows.Forms.Padding(0); this.syncToolStrip.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; this.syncToolStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -737,7 +889,7 @@ this.eOomRounds, this.lOomLabel, this.toolStripButton2}); - this.syncToolStrip.Location = new System.Drawing.Point(3, 28); + this.syncToolStrip.Location = new System.Drawing.Point(3, 483); this.syncToolStrip.Name = "syncToolStrip"; this.syncToolStrip.Size = new System.Drawing.Size(563, 25); this.syncToolStrip.TabIndex = 27; @@ -878,104 +1030,6 @@ this.bTruncate.Text = "Usuń nazwiska z BWS"; this.bTruncate.Click += new System.EventHandler(this.bTruncate_Click); // - // lNazwyTeamow - // - this.lNazwyTeamow.AutoSize = true; - this.lNazwyTeamow.Location = new System.Drawing.Point(25, 121); - this.lNazwyTeamow.Name = "lNazwyTeamow"; - this.lNazwyTeamow.Size = new System.Drawing.Size(227, 13); - this.lNazwyTeamow.TabIndex = 20; - this.lNazwyTeamow.Text = "w piernikach będą wyświetlane nazwy teamów"; - this.lNazwyTeamow.Visible = false; - // - // lSkok - // - this.lSkok.AutoSize = true; - this.lSkok.Location = new System.Drawing.Point(47, 139); - this.lSkok.Name = "lSkok"; - this.lSkok.Size = new System.Drawing.Size(188, 13); - this.lSkok.TabIndex = 19; - this.lSkok.Text = "mam nadzieję, że skok stołów = 100 :)"; - this.lSkok.Visible = false; - // - // label8 - // - this.label8.AutoSize = true; - this.label8.Location = new System.Drawing.Point(126, 161); - this.label8.Name = "label8"; - this.label8.Size = new System.Drawing.Size(291, 13); - this.label8.TabIndex = 12; - this.label8.Text = "Do serwerka wysyłane są tylko nazwiska, które się zmieniły."; - // - // lTables - // - this.lTables.AutoSize = true; - this.lTables.Location = new System.Drawing.Point(423, 97); - this.lTables.Name = "lTables"; - this.lTables.Size = new System.Drawing.Size(0, 13); - this.lTables.TabIndex = 8; - // - // lSections - // - this.lSections.AutoSize = true; - this.lSections.Location = new System.Drawing.Point(423, 70); - this.lSections.Name = "lSections"; - this.lSections.Size = new System.Drawing.Size(0, 13); - this.lSections.TabIndex = 7; - // - // lType - // - this.lType.AutoSize = true; - this.lType.Location = new System.Drawing.Point(59, 97); - this.lType.Name = "lType"; - this.lType.Size = new System.Drawing.Size(0, 13); - this.lType.TabIndex = 6; - // - // label6 - // - this.label6.AutoSize = true; - this.label6.Location = new System.Drawing.Point(373, 97); - this.label6.Name = "label6"; - this.label6.Size = new System.Drawing.Size(44, 13); - this.label6.TabIndex = 5; - this.label6.Text = "Stołów:"; - // - // label5 - // - this.label5.AutoSize = true; - this.label5.Location = new System.Drawing.Point(362, 70); - this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(55, 13); - this.label5.TabIndex = 4; - this.label5.Text = "Sektorów:"; - // - // label4 - // - this.label4.AutoSize = true; - this.label4.Location = new System.Drawing.Point(25, 97); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(28, 13); - this.label4.TabIndex = 3; - this.label4.Text = "Typ:"; - // - // lTournament - // - this.lTournament.AutoSize = true; - this.lTournament.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); - this.lTournament.Location = new System.Drawing.Point(59, 70); - this.lTournament.Name = "lTournament"; - this.lTournament.Size = new System.Drawing.Size(0, 16); - this.lTournament.TabIndex = 2; - // - // label3 - // - this.label3.AutoSize = true; - this.label3.Location = new System.Drawing.Point(11, 70); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(42, 13); - this.label3.TabIndex = 0; - this.label3.Text = "Turniej:"; - // // tabPage3 // this.tabPage3.Controls.Add(this.toolStrip3); @@ -1104,6 +1158,11 @@ this.bUpdateSession.ToolTipText = "Update ustawień w trakcie sesji"; this.bUpdateSession.Click += new System.EventHandler(this.updateSession_Click); // + // namesTimer + // + this.namesTimer.Interval = 500; + this.namesTimer.Tick += new System.EventHandler(this.namesTimer_Tick); + // // MainForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -1144,6 +1203,9 @@ this.groupBox2.PerformLayout(); this.tabPage2.ResumeLayout(false); this.tabPage2.PerformLayout(); + this.namesPanel.ResumeLayout(false); + this.namesPanel.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.namesGridView)).EndInit(); this.syncToolStrip.ResumeLayout(false); this.syncToolStrip.PerformLayout(); this.toolStrip4.ResumeLayout(false); @@ -1253,6 +1315,12 @@ private System.Windows.Forms.ToolStripTextBox eOomRounds; private System.Windows.Forms.ToolStripLabel lOomLabel; private System.Windows.Forms.ToolStripButton toolStripButton2; + private System.Windows.Forms.DataGridView namesGridView; + private System.Windows.Forms.DataGridViewTextBoxColumn Number; + private System.Windows.Forms.DataGridViewTextBoxColumn NorthSouth; + private System.Windows.Forms.DataGridViewTextBoxColumn EastWest; + private System.Windows.Forms.Panel namesPanel; + private System.Windows.Forms.Timer namesTimer; } } diff --git a/Aktywator/MainForm.cs b/Aktywator/MainForm.cs index 3cf660a..4eec352 100644 --- a/Aktywator/MainForm.cs +++ b/Aktywator/MainForm.cs @@ -73,6 +73,7 @@ namespace Aktywator bindSettingChanges(); bws.loadSettings(); syncToolStrip.Visible = false; + namesPanel.Visible = false; this.WindowState = FormWindowState.Normal; } @@ -339,6 +340,11 @@ namespace Aktywator lSections.Text = tournament.getSectionsNum(); lTables.Text = tournament.getTablesNum(); syncToolStrip.Visible = true; + namesPanel.Visible = true; + tournament.clearCellLocks(namesGridView); + tournament.displayNameList(namesGridView); + tournament.clearCellLocks(namesGridView); + namesTimer.Enabled = true; if (tournament.GetType().Equals(typeof(TeamyTournament))) { lSkok.Visible = true; @@ -361,7 +367,7 @@ namespace Aktywator { try { - bws.syncNames(tournament, true, eOomRounds.Text); + bws.syncNames(tournament, true, eOomRounds.Text, namesGridView); } catch (Exception ee) { @@ -416,7 +422,7 @@ namespace Aktywator private void timer_Tick(object sender, EventArgs e) { - bws.syncNames(tournament, false, eOomRounds.Text); + bws.syncNames(tournament, false, eOomRounds.Text, namesGridView); } private void bForceSync_Click(object sender, EventArgs e) @@ -497,5 +503,20 @@ namespace Aktywator lOomLabel.Enabled = toolStripButton2.Checked; } + private void namesGridView_CellValueChanged(object sender, DataGridViewCellEventArgs e) + { + if (e.RowIndex > -1 && e.ColumnIndex > 0) + { + DataGridViewCell cell = namesGridView.Rows[e.RowIndex].Cells[e.ColumnIndex]; + cell.Tag = true; + cell.Style.BackColor = Color.Yellow; + } + } + + private void namesTimer_Tick(object sender, EventArgs e) + { + tournament.displayNameList(namesGridView); + } + } } diff --git a/Aktywator/MainForm.resx b/Aktywator/MainForm.resx index 4b74fb3..089c663 100644 --- a/Aktywator/MainForm.resx +++ b/Aktywator/MainForm.resx @@ -158,6 +158,15 @@ AABJRU5ErkJggg== + + True + + + True + + + True + 343, 21 @@ -178,12 +187,12 @@ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAH5SURBVDhPYyAG8CryqumkqZRDuSQACwZOIMmlGaoY0/G1 8L+wNp8pRIIAkPUUD/eeb7ch9VjY3ewL0fdLbyQ+7/5W+j9yvedZoDQrRBV2wGTVqDev7HnC/9YfOf87 /+f/b/6T8b/4VfT/xBs+/yOuOf+XTxRuhqrFBGZVupOKnsf8D97o+Nhmou4uix6tDV4bja/G3nL773Xc - 7L/1fvX/KvPFPzNwMUhAtSCAsAGfaeBO+4/i9kI5QK4IRJSBQT5etCLgluV/k6VKX6VSeJaySDJYA4VZ + 7L/1fvX/8vPFPzNwMUhAtSCAsAGfaeBO+4/i9kI5QK4IRJSBQT5etCLgluV/k6VKX6VSeJaySDJYA4VZ ILJIQNZXPIFbmt0ByoUD9Xap9XIpgvNYBRj0oEI4ASOURgVcDJJQFmmAU5ZTileX1wLKRQWCDPxQFibg - 0OSQ1yyWbwreb/9SPlCyESoMAyxKlWJTuTWZXaB8BOASYZBUL5Lr99pl9Dbpmvf/1Jv+//lNOQOBdglw - 6jLISCcIhdpv1TlpOFn2BlA5B0QXEuBWZNULOmn7P+6i+//YKy7/Ux8CDbnn/inhqtfL2Kvun2Pvu/63 - 36Tyi0WcwRyqBRMoxkk2Rj2w/5/62Ot/5c/Y/9V/Ev4XvA/7H3Hd6b8B0GZmOWYnqFKcgM1lvcHZqt9x - /807NDYYVassVM+Rms1ny5kOlIOnDbyA15DDMvK6/VegL+WgQqQDXkM2XyAFyokEAAMDANzCm1l1mttC + 0OSQ1yyWbwreb/9SPlCyESoMAyxKlWJTuTWZXaB8BOASYZBUL5Lr99pl+Dbpmvf/1Jv+//lNOQOBdglw + 6jLISCcIhdpv1TlpOFn2BlA5B0QXEuBWZNULOmn7P+6i+//YKy7/Ux8CDbnn8inhqtfL2Kvun2Pvu/63 + 3yT3i0WcwRyqBRMoxkk2Rj2w/5/62Ot/5c/Y/9V/Ev4XvA/7H3Hd6b8B0GZmOWYnqFKcgM1lvcHZqt9x + /807NDYYVassVM+Rms1ny5kOlIOnDbyA15DDMvK6/VegL+WgQqQDXkM2XyAFyokEAAMDAMMSm0rf6i8H AAAAAElFTkSuQmCC @@ -243,22 +252,22 @@ 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 @@ -275,57 +284,57 @@ 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 - QmCC + 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 + gg== @@ -351,35 +360,35 @@ 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 @@ -424,6 +433,9 @@ to także należy ręcznie zrobić Upload. ZYMGMDAAAE5bDhZeNnGYAAAAAElFTkSuQmCC + + 343, 21 + 43 diff --git a/Aktywator/Tournament.cs b/Aktywator/Tournament.cs index cbe9bf9..87fa759 100644 --- a/Aktywator/Tournament.cs +++ b/Aktywator/Tournament.cs @@ -1,6 +1,8 @@ using System; using System.Collections.Generic; using System.Text; +using System.Windows.Forms; +using System.Drawing; namespace Aktywator { @@ -38,6 +40,77 @@ namespace Aktywator return new Dictionary>(); } + virtual public void displayNameList(DataGridView grid) + { + Dictionary> names = this.getNameList(); + foreach (KeyValuePair> item in names) { + if (!this.updateNameListRow(grid, item.Key, item.Value)) + { + this.addNameListRow(grid, item.Key, item.Value); + } + } + List toDelete = new List(); + foreach (DataGridViewRow row in grid.Rows) + { + if (!names.ContainsKey(Int32.Parse(row.Cells[0].Value.ToString()))) + { + toDelete.Add(row); + } + } + foreach (DataGridViewRow r in toDelete) + { + grid.Rows.Remove(r); + } + } + + virtual internal bool updateNameListRow(DataGridView grid, int pairNumber, List names) + { + foreach (DataGridViewRow row in grid.Rows) + { + if (Int32.Parse(row.Cells[0].Value.ToString()) == pairNumber) + { + for (int i = 1; i < 3; i++) + { + if (!(bool)row.Cells[i].Tag) + { + row.Cells[i].Value = names[i - 1]; + row.Cells[i].Tag = false; + row.Cells[i].Style.BackColor = Color.White; + } + } + return true; + } + } + return false; + } + + virtual internal void addNameListRow(DataGridView grid, int pairNumber, List names) + { + DataGridViewRow row = new DataGridViewRow(); + row.Cells.Add(new DataGridViewTextBoxCell()); + row.Cells[0].Value = pairNumber.ToString(); + foreach (string name in names) + { + DataGridViewTextBoxCell cell = new DataGridViewTextBoxCell(); + cell.Value = name; + cell.Tag = false; + row.Cells.Add(cell); + } + grid.Rows.Add(row); + } + + virtual internal void clearCellLocks(DataGridView grid) + { + foreach (DataGridViewRow row in grid.Rows) + { + for (int i = 1; i < 3; i++) + { + row.Cells[i].Tag = false; + row.Cells[i].Style.BackColor = Color.White; + } + } + } + virtual internal string shortenNameToBWS(string name) { if ("pauza".Equals(name.Trim())) @@ -54,5 +127,21 @@ namespace Aktywator return String.Join(" ", nameParts); } } + + virtual public Dictionary> getBWSNames(DataGridView grid) + { + Dictionary> dict = new Dictionary>(); + foreach (DataGridViewRow row in grid.Rows) + { + List names = new List(); + for (int i = 1; i < 3; i++) + { + names.Add(this.shortenNameToBWS(row.Cells[i].Value.ToString())); + } + dict.Add(Int32.Parse(row.Cells[0].Value.ToString()), names); + } + return dict; + } + } } -- cgit v1.2.3 From ddc074e5d1f21ed79efc81d5406eeeb6598445be Mon Sep 17 00:00:00 2001 From: emkael Date: Wed, 23 Aug 2017 18:01:31 +0200 Subject: Not shortening teams' names --- Aktywator/Tournament.cs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'Aktywator/Tournament.cs') diff --git a/Aktywator/Tournament.cs b/Aktywator/Tournament.cs index 87fa759..aa5f042 100644 --- a/Aktywator/Tournament.cs +++ b/Aktywator/Tournament.cs @@ -113,18 +113,23 @@ namespace Aktywator virtual internal string shortenNameToBWS(string name) { + name = Common.bezOgonkow(name); if ("pauza".Equals(name.Trim())) { return " "; } else { - string[] nameParts = name.Trim().Split(' '); - if (nameParts.Length > 0) + if (this._type != Tournament.TYPE_TEAMY) { - nameParts[0] = (nameParts[0].Length > 0) ? nameParts[0][0].ToString() : " "; + string[] nameParts = name.Trim().Split(' '); + if (nameParts.Length > 0) + { + nameParts[0] = (nameParts[0].Length > 0) ? nameParts[0][0].ToString() : " "; + } + return String.Join(" ", nameParts); } - return String.Join(" ", nameParts); + return name; } } -- cgit v1.2.3 From b936f4d7aac6b677be2c16fe4e750eda2df6f230 Mon Sep 17 00:00:00 2001 From: emkael Date: Wed, 23 Aug 2017 18:07:44 +0200 Subject: Shortened names in preview now accurate with what's actually sent to BWS --- Aktywator/Tournament.cs | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'Aktywator/Tournament.cs') diff --git a/Aktywator/Tournament.cs b/Aktywator/Tournament.cs index aa5f042..038fdbb 100644 --- a/Aktywator/Tournament.cs +++ b/Aktywator/Tournament.cs @@ -114,6 +114,10 @@ namespace Aktywator virtual internal string shortenNameToBWS(string name) { name = Common.bezOgonkow(name); + if (name.Length > 18) + { + name = name.Substring(0, 18); + } if ("pauza".Equals(name.Trim())) { return " "; -- cgit v1.2.3 From 06372138c88e0a46a823cbc9114b553770c01a3d Mon Sep 17 00:00:00 2001 From: emkael Date: Wed, 23 Aug 2017 18:09:46 +0200 Subject: Bugfix: shortening after initial, not before --- Aktywator/Tournament.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'Aktywator/Tournament.cs') diff --git a/Aktywator/Tournament.cs b/Aktywator/Tournament.cs index 038fdbb..33ecd26 100644 --- a/Aktywator/Tournament.cs +++ b/Aktywator/Tournament.cs @@ -114,10 +114,6 @@ namespace Aktywator virtual internal string shortenNameToBWS(string name) { name = Common.bezOgonkow(name); - if (name.Length > 18) - { - name = name.Substring(0, 18); - } if ("pauza".Equals(name.Trim())) { return " "; @@ -131,7 +127,11 @@ namespace Aktywator { nameParts[0] = (nameParts[0].Length > 0) ? nameParts[0][0].ToString() : " "; } - return String.Join(" ", nameParts); + name = String.Join(" ", nameParts); + } + if (name.Length > 18) + { + name = name.Substring(0, 18); } return name; } -- cgit v1.2.3 From a9f5093df64222395f6b0de21e6afee954c7a9a2 Mon Sep 17 00:00:00 2001 From: emkael Date: Tue, 19 Sep 2017 19:35:01 +0200 Subject: Writing and sanitizing additional info for Teamy tournaments --- Aktywator/Bws.cs | 12 ++++++++---- Aktywator/TeamyTournament.cs | 4 ++-- Aktywator/Tournament.cs | 3 ++- 3 files changed, 12 insertions(+), 7 deletions(-) (limited to 'Aktywator/Tournament.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 763b11d..580b08f 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -453,8 +453,10 @@ namespace Aktywator count += 2; if (tournament.type == Tournament.TYPE_TEAMY) { - countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "E", names[ns][0]); - countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "W", names[ns][1]); + countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "E", + names.ContainsKey(ns + TeamNamesSettings.OpenClosedDiff) ? names[ns + TeamNamesSettings.OpenClosedDiff][0] : names[ns][0]); + countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "W", + names.ContainsKey(ns + TeamNamesSettings.OpenClosedDiff) ? names[ns + TeamNamesSettings.OpenClosedDiff][1] : names[ns][1]); count += 2; } } @@ -480,8 +482,10 @@ namespace Aktywator count += 2; if (tournament.type == Tournament.TYPE_TEAMY) { - countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "N", names[ew][0]); - countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "S", names[ew][1]); + countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "N", + names.ContainsKey(ns + TeamNamesSettings.OpenClosedDiff) ? names[ew + TeamNamesSettings.OpenClosedDiff][0] : names[ew][0]); + countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "S", + names.ContainsKey(ns + TeamNamesSettings.OpenClosedDiff) ? names[ew + TeamNamesSettings.OpenClosedDiff][1] : names[ew][1]); count += 2; } } diff --git a/Aktywator/TeamyTournament.cs b/Aktywator/TeamyTournament.cs index bd6b619..990583f 100644 --- a/Aktywator/TeamyTournament.cs +++ b/Aktywator/TeamyTournament.cs @@ -31,12 +31,12 @@ namespace Aktywator override internal Dictionary> getNameList() { Dictionary> teams = new Dictionary>(); - MySqlDataReader dbData = this.mysql.select("SELECT id, fullname NAME FROM teams"); + MySqlDataReader dbData = this.mysql.select(MainForm.teamNames.getQuery()); while (dbData.Read()) { List names = new List(); names.Add(dbData.IsDBNull(1) ? " " : dbData.GetString(1)); - names.Add(" "); + names.Add(dbData.IsDBNull(2) ? " " : dbData.GetString(2)); teams.Add(dbData.GetInt32(0), names); } dbData.Close(); diff --git a/Aktywator/Tournament.cs b/Aktywator/Tournament.cs index 33ecd26..fd6fec1 100644 --- a/Aktywator/Tournament.cs +++ b/Aktywator/Tournament.cs @@ -120,7 +120,7 @@ namespace Aktywator } else { - if (this._type != Tournament.TYPE_TEAMY) + if (this._type != Tournament.TYPE_TEAMY || MainForm.teamNames.arePlayerNamesDisplayed()) { string[] nameParts = name.Trim().Split(' '); if (nameParts.Length > 0) @@ -152,5 +152,6 @@ namespace Aktywator return dict; } + } } -- cgit v1.2.3 From 3e81ce7e22d6405d31425b835c3d1fb24c052daa Mon Sep 17 00:00:00 2001 From: emkael Date: Sat, 18 Nov 2017 13:01:22 +0100 Subject: Fixing issues with adding rows to data grid --- Aktywator/Resources/BuildDate.txt | 2 +- Aktywator/Tournament.cs | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) (limited to 'Aktywator/Tournament.cs') diff --git a/Aktywator/Resources/BuildDate.txt b/Aktywator/Resources/BuildDate.txt index 3649349..4accc51 100644 --- a/Aktywator/Resources/BuildDate.txt +++ b/Aktywator/Resources/BuildDate.txt @@ -1 +1 @@ -2017-11-10 +2017-11-18 diff --git a/Aktywator/Tournament.cs b/Aktywator/Tournament.cs index fd6fec1..117b1da 100644 --- a/Aktywator/Tournament.cs +++ b/Aktywator/Tournament.cs @@ -61,6 +61,8 @@ namespace Aktywator { grid.Rows.Remove(r); } + grid.Update(); + grid.Refresh(); } virtual internal bool updateNameListRow(DataGridView grid, int pairNumber, List names) @@ -97,6 +99,7 @@ namespace Aktywator row.Cells.Add(cell); } grid.Rows.Add(row); + grid.FirstDisplayedScrollingRowIndex = grid.RowCount - 1; } virtual internal void clearCellLocks(DataGridView grid) -- cgit v1.2.3