summaryrefslogtreecommitdiffstats
path: root/js/gsec.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/gsec.js')
-rw-r--r--js/gsec.js26
1 files changed, 14 insertions, 12 deletions
diff --git a/js/gsec.js b/js/gsec.js
index 488794a..7bfad46 100644
--- a/js/gsec.js
+++ b/js/gsec.js
@@ -1,4 +1,3 @@
-
// tab = 2 || any spaces; use tabs
// not tested yet -- NOTE: document.createElement is xssy, use DOMParser!
var gseAbsenceTypes = ["notProcessed", "authorizedAbsence", "unauthorizedAbsence", "doesNotCount"];
@@ -22,7 +21,8 @@ const GSEC_ERR_NET_POSTBACK_POST = "GSEC NETWORK ERROR (ajax error) in postback
const GSEC_MSGTYPE_RECEIVED = 0;
const GSEC_MSGTYPE_SENT = 1;
const GSEC_MSGTYPE_DELETED = 2;
-
+const GSEC_ERR_LOGIN = "GSEC LOGIN ERROR";
+const GSEC_NO_ABSENCES = "noAbsences";
const GSEC_MSGTYPES = ["msgReceived", "msgSent", "msgDeleted"];
class gsec {
@@ -102,10 +102,10 @@ class gsec {
resolve(true);
} else {
if(!!(parsed.getElementById("lblMsg"))) { // če obstaja lblMsg (napaka pri prijavi)
- reject(new Error(false));
+ reject(new Error(GSEC_ERR_LOGIN));
}
if(!(parsed.getElementById("ctl00_lblLoginName"))) { // če ni ctl00_lblLoginName nismo na Default.aspx
- reject(new Error(false));
+ reject(new Error(GSEC_ERR_LOGIN));
} else {
resolve(parsed.getElementById("ctl00_lblLoginName").innerHTML); // vrne ime dijaka, to je lahko uporabno
}
@@ -232,7 +232,7 @@ class gsec {
});
});
}
- fetchTeachers() {
+ fetchTeachers() { // razrednika ne vrne kot razrednika, če le-ta uči še en predmet. razlog: razrednik je napisan dvakrat, drugič se prepiše. Ne da se mi popravljat.
return new Promise((resolve, reject) => {
var Teachers = {};
this.postback(GSE_URL+"Page_Gim/Ucenec/UciteljskiZbor.aspx", {}, null, true).then((response)=>{
@@ -246,10 +246,8 @@ class gsec {
var subjects = {};
for(const subjectString of subjectStrings) {
var abkurzung = "";
- try {
- abkurzung = stripHtml(subjectString).split('(').pop().split(')')[0];
- } catch (err) {}
var subjectName = stripHtml(subjectString).split(" (")[0];
+ abkurzung = stripHtml(subjectString).split('(').pop().split(')')[0];
subjects[abkurzung] = subjectName;
}
var TP = {};
@@ -305,7 +303,7 @@ class gsec {
});
});
}
- fetchAbsences(fromDate = null, tillDate = null) {
+ fetchAbsences(fromDate = null, tillDate = null) { // navedba datumov je deprecated. Internet je dovolj hiter za poslat maksimalno 4160 ur (16 ur/dan, 5 dni/ted, 52 ted/leto)
return new Promise((resolve, reject)=>{
if(!(fromDate instanceof Date) || !(tillDate instanceof Date)) {
tillDate = new Date(Date.UTC(9999, 11, 30)); // overkill?
@@ -318,8 +316,12 @@ class gsec {
this.postback(GSE_URL+"Page_Gim/Ucenec/IzostankiUcenec.aspx", dataToBeSent, null, true).then((response)=>{
let parser = new DOMParser();
let parsed = parser.parseFromString(response.data, "text/html");
- var rowElements = parsed.getElementById("ctl00_ContentPlaceHolder1_gvwIzostankiGroup").getElementsByTagName("tbody")[0].getElementsByTagName("tr");
- var absences = {};
+ try {
+ var rowElements = parsed.getElementById("ctl00_ContentPlaceHolder1_gvwIzostankiGroup").getElementsByTagName("tbody")[0].getElementsByTagName("tr");
+ } catch (err) {
+ resolve(GSEC_NO_ABSENCES);
+ }
+ var absences = [];
for(const izostanek of rowElements) {
var subFields = izostanek.getElementsByTagName("td");
var date = subFields[0].innerHTML.trim().split(".");
@@ -332,7 +334,7 @@ class gsec {
var period = Number(subject.split('">').pop().split('</span>')[0]);
subjects[period] = {status: status, subject: subjectName};
}
- absences[dateObj] = subjects;
+ absences.push({subjects: subjects, date: dateObj});
}
resolve(absences);
});