summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorschneefux <schneefux+commit@schneefux.xyz>2014-06-04 17:35:41 +0200
committerschneefux <schneefux+commit@schneefux.xyz>2016-08-15 20:02:37 +0200
commit2bde90a677b65f6be0892741328ee8fe848eb78d (patch)
tree44750f1b7045a40bfd36fa71a5dd53a922bc335d /js
parent37555f127a7651d78c82de645e58c225b89274cf (diff)
downloadwvs-vplan-2bde90a677b65f6be0892741328ee8fe848eb78d.tar.gz
wvs-vplan-2bde90a677b65f6be0892741328ee8fe848eb78d.zip
ändere Vertretungs-Ausdruck: Anpassung an Untis 2015
Diffstat (limited to 'js')
-rw-r--r--js/index.js100
1 files changed, 78 insertions, 22 deletions
diff --git a/js/index.js b/js/index.js
index da350b4..7639cbc 100644
--- a/js/index.js
+++ b/js/index.js
@@ -339,26 +339,64 @@ function entkuerzeleFach(kuerzel){ // wenn vorhanden, Langform zurückgeben
/* konvertiert die extrahierten Strings in ein lesbares Format und filtert nach relevanten Vertretungen */
function parseVertretungen(str, username){
- //Klasse Stunde Entfall Vertreter Fach Raum Art Lehrer Info
- var vertretungenRe = /([\wäöü]+)[ ]+(\d(?:[ ]*-[ ]*\d)?)[ ]+(x?)[ ]*([\wäöü]+|---|[+.])[ ]+([\wäöü]+|---|[+.])[ ]+(\d+|---)[ ]+([\wäöü]*|---|[+.])[ ]+([\wäöü]+|\+)()/i; //TODO Info nicht dabei, Probleme mit "Klasse xxx" oder "Jahrgang yy"
+ /*
+ * Abstandhalter [ ]*
+ *
+ * ([\wäöü]+)
+ * Klasse
+ *
+ * (\d+(?:[ ]*-[ ]*\d+)?)
+ * (Stunde x bis)? Stunde y
+ *
+ * (x?)
+ * Entfall ja/nein
+ *
+ * (?:(?:([\wäöü]+|\+)[ ]*->[ ]*([\wäöü]+|\+))|(?:()([\wäöü]+|\+)))
+ * Altes Fach -> Neues Fach | Neues Fach
+ *
+ * (?:(?:(\d+|---)[ ]*->[ ]*(\d+|---))|(?:()(\d+|---)))
+ * Alter Raum -> neuer Raum | neuer Raum
+ *
+ * ([\wäöü]+|---|[+.])
+ * Art-Text
+ *
+ * (?:(?:([\wäöü]+|\+)[ ]*->[ ]*([\wäöü]+|\+))|(?:()([\wäöü]+|\+)))
+ * Alter Lehrer -> Neuer Lehrer | Neuer Lehrer
+ *
+ * ([\wäöü]*)
+ * Info-Text
+ */
+
+ var vertretungenRe = /([\wäöü]+)[ ]+(\d+(?:[ ]*-[ ]*\d+)?)[ ]+(x?)[ ]*(?:(?:([\wäöü]+|\+)[ ]*->[ ]*([\wäöü]+|\+))|(?:()([\wäöü]+|\+)))[ ]+(?:(?:(\d+|---)[ ]*->[ ]*(\d+|---))|(?:()(\d+|---)))[ ]+([\wäöü]+|---|[+.])[ ]+(?:(?:([\wäöü]+|\+)[ ]*->[ ]*([\wäöü]+|\+))|(?:()([\wäöü]+|\+)))[ ]*([\wäöü]*)/i;
var res;
var vertretungen = [];
var nutzerklasse = username.match(/(\w+)_.*/)[1].toUpperCase();
str.split('\n').forEach(function(vertretungsstr){
- res = vertretungsstr.match(vertretungenRe);
+ result = vertretungsstr.match(vertretungenRe);
+
+ if(result !== null){
+ // aufräumen
+ var res = [];
+
+ for(var j = 0; j < result.length; j++){
+ if(result[j] != null){
+ res.push(result[j]);
+ }
+ }
- if(res !== null){
- var klasse = res[1].toUpperCase();
- var stunde = res[2].replace(/ /g, '');
+ var klasse = res[1].toUpperCase()
+ var stunde = res[2].trim();
var entfall = res[3].indexOf('x') > -1;
- var vertreter = res[4];
+ var altFach = res[4];
var fach = res[5];
- var raum = res[6];
- var art = res[7];
- var lehrer = res[8];
- var info = res[9];
+ var altRaum = res[6];
+ var raum = res[7];
+ var art = res[8];
+ var lehrer = res[9];
+ var vertreter = res[10];
+ var info = res[11];
var wichtig = false;
@@ -377,41 +415,59 @@ function parseVertretungen(str, username){
/* entkürzeln :) */
lehrer = entkuerzeleLehrer(lehrer);
vertreter = entkuerzeleLehrer(vertreter);
+ altFach = entkuerzeleFach(altFach);
fach = entkuerzeleFach(fach);
if(wichtig === false){
return;
}
- if(entfall === true){
+ if(entfall === false){
if(info.length <= 1){
info = "";
}else{
info = " Info:" + info;
}
- vertretungen.push(klasse + " " + stunde + ". Stunde Entfall statt " + lehrer + info);
- }else{
if(art.length <= 1){
art = "";
}else{
art = art + " in ";
}
- if(info.length <= 1){
- info = "";
+ var nlehrer;
+ var nraum;
+ var nfach;
+
+ if(lehrer != vertreter && lehrer != '' && vertreter != ''){
+ nlehrer = "mit " + vertreter + " (statt " + lehrer + ") ";
}else{
- info = " Info:" + info;
+ nlehrer = "mit " + vertreter + " ";
}
- var nlehrer;
+ if(raum != altRaum && raum != '' && altRaum != ''){
+ nraum = "in Raum " + raum + " (statt " + altRaum + ") ";
+ }else{
+ nraum = "in Raum " + raum + " ";
+ }
- if(lehrer !== vertreter){
- nlehrer = " bei " + vertreter + " (statt " + lehrer + ")";
- vertretungen.push(klasse + " " + stunde + ". Stunde " + art + fach + nlehrer + " in Raum " + raum + info);
+ if(fach != altFach && fach != '' && altFach != ''){
+ nfach = fach + " (statt " + altFach + ") ";
}else{
- vertretungen.push(klasse + " " + stunde + ". Stunde " + art + fach + ", Raum " + raum + info);
+ nfach = fach + " ";
}
+
+ vertretungen.push(klasse + " " + stunde + ". Stunde " + art + nfach + nlehrer + nraum + info);
+ }else{
+ var nstr = " (statt " + fach + " mit " + vertreter + ")";
+
+ if(info.length <= 1){
+ info = "";
+ }else{
+ info = " Info:" + info;
+ }
+
+ vertretungen.push(klasse + " " + stunde + ". Stunde Entfall" + nstr + info);
}
}else{
if(vertretungsstr.indexOf('Unterrichtsschluss') > -1){