Órarend megjelenítés működik!
This commit is contained in:
parent
6331bf14a0
commit
f30d18f744
4 changed files with 38 additions and 100 deletions
|
@ -13,37 +13,29 @@ namespace Orarend
|
||||||
{
|
{
|
||||||
public static class API
|
public static class API
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// Visszatér az adott nap óráival.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="osztályid">Az osztály azonosítója, ld. <see cref="Osztályok"/></param>
|
|
||||||
/// <param name="csoportok">A csoportok, amiknek az óráit kérjük, szóközökkel elválasztva</param>
|
|
||||||
/// <param name="nap">A nap egy betűs formában</param>
|
|
||||||
/// <returns></returns>
|
|
||||||
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" } };
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// <para>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.</para>
|
/// <para>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.</para>
|
||||||
/// <para>Lehet null, ha még nem volt sikeres <see cref="Frissítés"/>.</para>
|
/// <para>Lehet null, ha még nem volt sikeres <see cref="Frissítés"/>.</para>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static IEnumerable<string[]> Osztályok { get; set; }
|
public static IEnumerable<string[]> Osztályok { get; private set; }
|
||||||
private static Órarend aktuálisÓrarend;
|
public static Órarend AktuálisÓrarend { get; private set; }
|
||||||
public static async Task Frissítés()
|
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();
|
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();
|
var resp = await req.GetResponseAsync();
|
||||||
await Task.Run(() =>
|
await Task.Run(() =>
|
||||||
{
|
{
|
||||||
using (var sr = new StreamReader(resp.GetResponseStream()))
|
using (var sr = new StreamReader(resp.GetResponseStream()))
|
||||||
doc.LoadHtml(Regex.Replace(Regex.Replace(sr.ReadToEnd(), "<th([^>]*)>((?:\\w|[áéóüöőúű.])+)(?=<)(?!\\/)", "<th$1>$2</th><"), "(?<!\\/tr\\>)\\<tr\\>", "</tr><tr>")); //TODO
|
{
|
||||||
|
const string trtd = @"(?:\s\w+=(?:\""|\')?(?:\w|[áéóüöőúű.:;])+(?:\""|\')?)*>(?!.+?\<table(?:\s\w+?=\""?\w+\""?)*\>.+?)(.+?)(?=<\1(?:\s\w+=(?:\""|\')?(?:\w|[áéóüöőúű.:;])+(?:\""|\')?)*>)";
|
||||||
|
string html = Regex.Replace(Regex.Replace(Regex.Replace(sr.ReadToEnd(), "<th([^>]*)>((?:\\w|[áéóüöőúű.])+)(?=<)(?!\\/)", "<th$1>$2</th>"), "<(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 });
|
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;
|
bool ahét = true;
|
||||||
foreach (var node in doc.GetElementbyId("oda").FirstChild.FirstChild.ChildNodes[1].ChildNodes)
|
foreach (var node in doc.GetElementbyId("oda").FirstChild.FirstChild.ChildNodes[1].ChildNodes)
|
||||||
|
@ -59,14 +51,16 @@ namespace Orarend
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
int x = int.Parse(node.FirstChild.InnerText) - 1;
|
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
|
for (int i = 0; i < 5; i++) //Napok
|
||||||
{ //TODO: for ciklus az egy időben tartott órákhoz
|
{ //TODO: for ciklus az egy időben tartott órákhoz
|
||||||
var óranode = node.ChildNodes[i + 1].FirstChild;
|
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)
|
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.Sorszám = x + 1;
|
||||||
óra.Csoportok = csoportok;
|
óra.Csoportok = csoportok;
|
||||||
óra.Név = óranode.ChildNodes[2].Attributes["title"].Value;
|
óra.Név = óranode.ChildNodes[2].Attributes["title"].Value;
|
||||||
|
|
|
@ -9,9 +9,12 @@ namespace Orarend
|
||||||
public class Órarend
|
public class Órarend
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 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
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Óra[,] ÓrákAHét { get; } = new Óra[6, 16];
|
public Óra[,] ÓrákAHét { get; } = new Óra[6, 16];
|
||||||
|
/// <summary>
|
||||||
|
/// 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
|
||||||
|
/// </summary>
|
||||||
public Óra[,] ÓrákBHét { get; } = new Óra[6, 16];
|
public Óra[,] ÓrákBHét { get; } = new Óra[6, 16];
|
||||||
public string Név { get; set; }
|
public string Név { get; set; }
|
||||||
public string OsztályID { get; set; }
|
public string OsztályID { get; set; }
|
||||||
|
|
|
@ -30,27 +30,31 @@ namespace OrarendAndroidApp
|
||||||
textview.SetTextColor(color);
|
textview.SetTextColor(color);
|
||||||
tr1.AddView(textview);
|
tr1.AddView(textview);
|
||||||
};
|
};
|
||||||
/*foreach (var óra in API.Órák(""))
|
API.Frissítés().ContinueWith(t =>
|
||||||
{
|
|
||||||
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 =>
|
|
||||||
{
|
{
|
||||||
handler.Post(() =>
|
handler.Post(() =>
|
||||||
{
|
{
|
||||||
if (t.Exception?.InnerExceptions.Count > 0)
|
if (t.Exception?.InnerExceptions.Count > 0)
|
||||||
|
{
|
||||||
foreach (var ex in t.Exception.InnerExceptions)
|
foreach (var ex in t.Exception.InnerExceptions)
|
||||||
|
{
|
||||||
|
TableRow tr = new TableRow(this);
|
||||||
addCell(ex.ToString(), Color.Red, tr);
|
addCell(ex.ToString(), Color.Red, tr);
|
||||||
else
|
|
||||||
foreach (var osztály in t.Result)
|
|
||||||
addCell(osztály[0], Color.Aqua, tr);
|
|
||||||
table.AddView(tr);
|
table.AddView(tr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
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();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,68 +9,5 @@
|
||||||
android:id="@+id/tableLayout1"
|
android:id="@+id/tableLayout1"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="fill_parent"
|
android:layout_height="fill_parent"
|
||||||
android:stretchColumns="1">
|
android:stretchColumns="1" />
|
||||||
<TableRow>
|
|
||||||
<TextView
|
|
||||||
android:layout_column="1"
|
|
||||||
android:text="Open..."
|
|
||||||
android:padding="3dip" />
|
|
||||||
<TextView
|
|
||||||
android:text="Ctrl-O"
|
|
||||||
android:gravity="right"
|
|
||||||
android:padding="3dip" />
|
|
||||||
</TableRow>
|
|
||||||
<TableRow>
|
|
||||||
<TextView
|
|
||||||
android:layout_column="1"
|
|
||||||
android:text="Save..."
|
|
||||||
android:padding="3dip" />
|
|
||||||
<TextView
|
|
||||||
android:text="Ctrl-S"
|
|
||||||
android:gravity="right"
|
|
||||||
android:padding="3dip" />
|
|
||||||
</TableRow>
|
|
||||||
<TableRow>
|
|
||||||
<TextView
|
|
||||||
android:layout_column="1"
|
|
||||||
android:text="Save As..."
|
|
||||||
android:padding="3dip" />
|
|
||||||
<TextView
|
|
||||||
android:text="Ctrl-Shift-S"
|
|
||||||
android:gravity="right"
|
|
||||||
android:padding="3dip" />
|
|
||||||
</TableRow>
|
|
||||||
<View
|
|
||||||
android:layout_height="2dip"
|
|
||||||
android:background="#FF909090" />
|
|
||||||
<TableRow>
|
|
||||||
<TextView
|
|
||||||
android:text="X"
|
|
||||||
android:padding="3dip" />
|
|
||||||
<TextView
|
|
||||||
android:text="Import..."
|
|
||||||
android:padding="3dip" />
|
|
||||||
</TableRow>
|
|
||||||
<TableRow>
|
|
||||||
<TextView
|
|
||||||
android:text="X"
|
|
||||||
android:padding="3dip" />
|
|
||||||
<TextView
|
|
||||||
android:text="Export..."
|
|
||||||
android:padding="3dip" />
|
|
||||||
<TextView
|
|
||||||
android:text="Ctrl-E"
|
|
||||||
android:gravity="right"
|
|
||||||
android:padding="3dip" />
|
|
||||||
</TableRow>
|
|
||||||
<View
|
|
||||||
android:layout_height="2dip"
|
|
||||||
android:background="#FF909090" />
|
|
||||||
<TableRow>
|
|
||||||
<TextView
|
|
||||||
android:layout_column="1"
|
|
||||||
android:text="Quit"
|
|
||||||
android:padding="3dip" />
|
|
||||||
</TableRow>
|
|
||||||
</TableLayout>
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
Loading…
Reference in a new issue