diff --git a/Orarend/API.cs b/Orarend/API.cs index 5d201b6..c1665bf 100644 --- a/Orarend/API.cs +++ b/Orarend/API.cs @@ -13,37 +13,29 @@ namespace Orarend { public static class API { - /// - /// Visszatér az adott nap óráival. - /// - /// Az osztály azonosítója, ld. - /// A csoportok, amiknek az óráit kérjük, szóközökkel elválasztva - /// A nap egy betűs formában - /// - public static IEnumerable<Óra> Órák(string osztályid, string csoportok, char nap) - { - return new Óra[] { new Óra { Azonosító = "test", Név = "Test", Tanár = new Tanár { Név = "A B" }, Terem = "222" }, new Óra { Azonosító = "asd", Név = "Asd", Tanár = new Tanár { Név = "B A" }, Terem = "216" } }; - } - /// /// Visszatér az osztályok listájával, egy-egy kételemű tömbbel, az első elem az azonosító, a második a megjelenített név. /// Lehet null, ha még nem volt sikeres . /// /// - public static IEnumerable Osztályok { get; set; } - private static Órarend aktuálisÓrarend; + public static IEnumerable Osztályok { get; private set; } + public static Órarend AktuálisÓrarend { get; private set; } public static async Task Frissítés() { - aktuálisÓrarend = new Órarend { OsztályID = "12.b|2" }; //TODO: TMP + AktuálisÓrarend = new Órarend { OsztályID = "12.b|2" }; //TODO: TMP HtmlDocument doc = new HtmlDocument(); - var req = WebRequest.CreateHttp("http://deri.enaplo.net/ajax/orarend/orarendoszt.php" + (aktuálisÓrarend == null ? "" : "?p=" + Uri.EscapeDataString(aktuálisÓrarend.OsztályID))); + var req = WebRequest.CreateHttp("http://deri.enaplo.net/ajax/orarend/orarendoszt.php" + (AktuálisÓrarend == null ? "" : "?p=" + Uri.EscapeDataString(AktuálisÓrarend.OsztályID))); var resp = await req.GetResponseAsync(); await Task.Run(() => { using (var sr = new StreamReader(resp.GetResponseStream())) - doc.LoadHtml(Regex.Replace(Regex.Replace(sr.ReadToEnd(), "]*)>((?:\\w|[áéóüöőúű.])+)(?=<)(?!\\/)", "$2<"), "(?)\\", "")); //TODO + { + const string trtd = @"(?:\s\w+=(?:\""|\')?(?:\w|[áéóüöőúű.:;])+(?:\""|\')?)*>(?!.+?\.+?)(.+?)(?=<\1(?:\s\w+=(?:\""|\')?(?:\w|[áéóüöőúű.:;])+(?:\""|\')?)*>)"; + string html = Regex.Replace(Regex.Replace(Regex.Replace(sr.ReadToEnd(), "]*)>((?:\\w|[áéóüöőúű.])+)(?=<)(?!\\/)", "$2"), "<(tr)" + trtd, "<$1>$2"), "<(td)" + trtd, "<$1>$2"); + doc.LoadHtml(html); + } Osztályok = doc.GetElementbyId("uok").ChildNodes.Where(node => node.HasAttributes).Select(node => new string[] { node.GetAttributeValue("value", ""), node.NextSibling.InnerText }); - if (aktuálisÓrarend != null) + if (AktuálisÓrarend != null) { bool ahét = true; foreach (var node in doc.GetElementbyId("oda").FirstChild.FirstChild.ChildNodes[1].ChildNodes) @@ -59,14 +51,16 @@ namespace Orarend default: { int x = int.Parse(node.FirstChild.InnerText) - 1; - aktuálisÓrarend.Órakezdetek[x] = TimeSpan.Parse(node.FirstChild.Attributes["title"].Value.Split('-')[0].Trim()); + AktuálisÓrarend.Órakezdetek[x] = TimeSpan.Parse(node.FirstChild.Attributes["title"].Value.Split('-')[0].Trim()); for (int i = 0; i < 5; i++) //Napok { //TODO: for ciklus az egy időben tartott órákhoz var óranode = node.ChildNodes[i + 1].FirstChild; - var csoportok = óranode.FirstChild.InnerText.TrimEnd(':'); - var óra = (ahét ? aktuálisÓrarend.ÓrákAHét : aktuálisÓrarend.ÓrákBHét)[i, x]; + var óra = (ahét ? AktuálisÓrarend.ÓrákAHét : AktuálisÓrarend.ÓrákBHét)[i, x]; + if (óranode.ChildNodes.Count == 0) + continue; if (óra == null) - óra = new Óra(); + (ahét ? AktuálisÓrarend.ÓrákAHét : AktuálisÓrarend.ÓrákBHét)[i, x] = óra = new Óra(); + var csoportok = óranode.FirstChild.InnerText.TrimEnd(':'); óra.Sorszám = x + 1; óra.Csoportok = csoportok; óra.Név = óranode.ChildNodes[2].Attributes["title"].Value; diff --git a/Orarend/Órarend.cs b/Orarend/Órarend.cs index 71b7392..efe67d7 100644 --- a/Orarend/Órarend.cs +++ b/Orarend/Órarend.cs @@ -9,9 +9,12 @@ namespace Orarend public class Órarend { /// - /// Egy 6x16 2D tömb, az első koordináta a nap indexe, a második az óráé + /// Egy 6x16 2D tömb, az első koordináta a nap indexe, a második az óráé. Az értékek lehetnek null-ok, ha nincs óra az adott időpontban /// public Óra[,] ÓrákAHét { get; } = new Óra[6, 16]; + /// + /// Egy 6x16 2D tömb, az első koordináta a nap indexe, a második az óráé. Az értékek lehetnek null-ok, ha nincs óra az adott időpontban + /// public Óra[,] ÓrákBHét { get; } = new Óra[6, 16]; public string Név { get; set; } public string OsztályID { get; set; } diff --git a/OrarendAndroidApp/MainActivity.cs b/OrarendAndroidApp/MainActivity.cs index 582baff..8d91102 100644 --- a/OrarendAndroidApp/MainActivity.cs +++ b/OrarendAndroidApp/MainActivity.cs @@ -30,27 +30,31 @@ namespace OrarendAndroidApp textview.SetTextColor(color); tr1.AddView(textview); }; - /*foreach (var óra in API.Órák("")) - { - TableRow tr1 = new TableRow(this); - addCell(óra.Név + "\n" + óra.Tanár.Név + "\n" + óra.Terem, Color.White, tr1); - table.AddView(tr1); - }*/ - TableRow tr = new TableRow(this); - /*API.Osztályok().ContinueWith(t => + API.Frissítés().ContinueWith(t => { handler.Post(() => { if (t.Exception?.InnerExceptions.Count > 0) + { foreach (var ex in t.Exception.InnerExceptions) + { + TableRow tr = new TableRow(this); addCell(ex.ToString(), Color.Red, tr); + table.AddView(tr); + } + } else - foreach (var osztály in t.Result) - addCell(osztály[0], Color.Aqua, tr); - table.AddView(tr); + { + for (int j = 0; j < API.AktuálisÓrarend.ÓrákAHét.GetLength(1); j++) + { + TableRow tr = new TableRow(this); + for (int i = 0; i < API.AktuálisÓrarend.ÓrákAHét.GetLength(0); i++) + addCell(API.AktuálisÓrarend.ÓrákAHét[i, j] != null ? API.AktuálisÓrarend.ÓrákAHét[i, j].Név : "", Color.Aqua, tr); + table.AddView(tr); + } + } }); - });*/ - API.Frissítés(); + }); } } } diff --git a/OrarendAndroidApp/Resources/layout/MainLayout.axml b/OrarendAndroidApp/Resources/layout/MainLayout.axml index 5103e26..cea9dca 100644 --- a/OrarendAndroidApp/Resources/layout/MainLayout.axml +++ b/OrarendAndroidApp/Resources/layout/MainLayout.axml @@ -9,68 +9,5 @@ android:id="@+id/tableLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" - android:stretchColumns="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:stretchColumns="1" /> \ No newline at end of file