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$1>"), "<(td)" + trtd, "<$1>$2$1>");
+ 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