aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--server.js184
-rw-r--r--shifts.txt133
2 files changed, 192 insertions, 125 deletions
diff --git a/server.js b/server.js
index 9d641eb..d0792c5 100644
--- a/server.js
+++ b/server.js
@@ -2,21 +2,83 @@ const http = require("http");
const fs = require("fs");
const url = require("url");
-mainPage = "./index.html";
-allowedPaths = [mainPage, "./index.css"];
-path404 = "./404/index.html";
+let maxshifts = Infinity;
-shifts = [
- //1:
- "Ruokailuvuoro 1",
- //2:
- "Ruokailuvuoro 2",
- //3:
- "Ruokailuvuoro 3"
-];
+function init()
+{
+ const mainPage = "./index.html";
+ const allowedPaths = [mainPage, "./index.css"];
+ const path404 = "./404/index.html";
+
+ const weekdays = [undefined, "MAANANTAI", "TIISTAI", "KESKIVIIKKO", "TORSTAI", "PERJANTAI", undefined];
+
+ shifts = [
+ //1:
+ "Ruokailuvuoro 1",
+ //2:
+ "Ruokailuvuoro 2",
+ //3:
+ "Ruokailuvuoro 3"
+ ];
+
+ /*openFile("shifts.txt").then(data =>
+ {
+ let shifts = 0;
+ let i = 0;
+ do
+ {
+ i = getToLineStartingWith(data.toString("utf-8"), i + 1, "RUOKAILUVUORO");
+ shifts++;
+ } while (i !== -1)
+ maxshifts = shifts / 5; // 5 = number of days
+ });*/
+ function server(req, res)
+ {
+ let q = url.parse(req.url, true); //true?
+ let path = "." + q.pathname;
+ if (path == "./")
+ path = "./index.html";
+
+ console.log(path);
+ if (!allowedPaths.includes(path))
+ path = path404;
-http.createServer((req, res) =>
+ switch(path)
+ {
+ case mainPage:
+ buildMain(q.query, path, maxshifts).then(
+ (data) =>
+ {
+ res.write(data);
+ res.end();
+ }
+ );
+ break;
+ case path404:
+ build404(path, q.pathname).then(
+ data =>
+ {
+ res.write(data);
+ res.end();
+ }
+ );
+ break;
+ default:
+ buildDefault(path).then(
+ data =>
+ {
+ res.write(data);
+ res.end();
+ }
+ );
+ }
+ }
+
+ http.createServer(server).listen(8080);
+}
+
+function server(req, res)
{
let q = url.parse(req.url, true); //true?
let path = "." + q.pathname;
@@ -31,7 +93,7 @@ http.createServer((req, res) =>
switch(path)
{
case mainPage:
- buildMain(q.query, path).then(
+ buildMain(q.query, path, maxshifts).then(
(data) =>
{
res.write(data);
@@ -57,7 +119,7 @@ http.createServer((req, res) =>
}
);
}
-}).listen(8080)
+}
function openFile(path)
{
@@ -73,7 +135,7 @@ function openFile(path)
});
}
-function buildMain(query, path)
+function buildMain(query, path, maxshifts)
{
return new Promise((resolve, reject) =>
{
@@ -83,7 +145,7 @@ function buildMain(query, path)
data_string = data.toString("utf-8");
if (query.index === undefined)
resolve(data_string.replace("\\(result\\)", ""));
- resolve(data_string.replace("\\(result\\)", shifts[parseshift(query) - 1]));
+ resolve(data_string.replace("\\(result\\)", shifts[parseshift(query, maxshifts) - 1]));
}
);
});
@@ -117,18 +179,57 @@ function buildDefault(path)
});
}
-function parseshift(index)
+function parseshift(index, maxshifts)
{
- //get index type
- is_teacher = isNaN(parseInt(index[index.length - 1]));
- is_course = !is_teacher;
+ /*//get index type
+ let is_teacher = isNaN(parseInt(index[index.length - 1]));
+ let is_course = !is_teacher;
+
+ //get day of week
+ const d = new Date();
+ let day = weekdays[d.getDay()];
+ if (day === undefined)
+ day = weekdays[1];
+
//read shiftfile
openFile("shifts.txt").then(
- data => {}
+ data =>
+ {
+ data = data.toString("utf-8");
+ // get to the position of the day
+ let i = getToLineStartingWith(data, 0, day);
+ if (i === -1)
+ return -1;
+
+ // iterate through shifts
+ let shift = "";
+ let shifts = 0;
+ while (shifts < maxshifts) // infinite loop if maxshift is infinity, FIX!
+ {
+ i = getToLineStartingWith(data, i, "RUOKAILUVUORO");
+ let nextLineStart = getNextChar(data, i, "\n");
+ shift = data.substring(i, nextLineStart);
+
+ // Get to the line with the teachers & courses
+ i = nextLineStart;
+ while (!((nextLineStart - i) > 2))
+ {
+ i = nextLineStart;
+ nextLineStart = getNextChar(data, i + 1, "\n");
+ }
+ i++;
+ // Find whether the course is in the line or not
+ let parsed_line = data.substring(i + 1, nextLineStart).replaceAll(",", "");
+ if (findExpression(parsed_line, index, i) !== -1)
+ return shift;
+ shifts++;
+ }
+ return -1;
+ }
);
//iterate over lines, search for day
//iterate shifts for course / teacher
- //return the shift number
+ //return the shift number*/
return 1;
}
@@ -141,3 +242,42 @@ function getCharAmount(s, c)
}
return n;
}
+
+function getNextChar(s, i, c)
+{
+ for (; i < s.length; i++)
+ {
+ if (s[i] === c)
+ return i;
+ }
+ return -1;
+}
+
+function getToLineStartingWith(s, start, ss)
+{
+ let i = start;
+ do
+ {
+ if (s.substr(i, ss.length) === ss)
+ break;
+ i = getNextChar(s, i, "\n") + 1;
+ } while(i !== -1)
+
+ if (i === -1)
+ return -1;
+ return i;
+
+}
+
+function findExpression(data, expr, start = 0)
+{
+ if (Number.isInteger(start) && (start < 0))
+ throw new TypeError("Start must be a positive integer!");
+ while ((data.substr(start, expr.length) !== expr) && (start + expr.length < data.length))
+ start++;
+ if (data.substr(start, expr.length) !== expr)
+ return -1;
+ return start;
+}
+
+init();
diff --git a/shifts.txt b/shifts.txt
index b9ee91e..4f74d4c 100644
--- a/shifts.txt
+++ b/shifts.txt
@@ -1,38 +1,22 @@
-RUOKAILUVUOROT JA OPPITUNTI 4.10.2021 ALKAEN
-
-
-
MAANANTAISIN
-RUOKAILUVUORO I klo 10.50 – 11.15, välitunti klo 11.15 - 11.40, oppitunti klo 11.40 – 13.00
+RUOKAILUVUORO I: ruokailu klo 10.50 – 11.30, oppitunti klo 11.40 – 13.00
-TE11 JUHO, GE21 PAHO, EA112 ANLE, MA72 JUMA ja KAHDEN TUTKINNON OPINTOJEN 1. VUOSITASON RYHMÄT
+TE11 JUHO, GE21 PAHO, EA112 ANLE, MA72 JUMA, MA141 SAKO, ÄI82 MIAU, ÄI63 TUTA ja KAHDEN TUTKINNON OPINNOT 1., 2. ja 3. VUOSITASON RYHMÄT
-RUOKAILUVUORO II klo 11.15 – 11.40, välitunti klo 10.50 - 11.15, oppitunti klo 11.40 – 13.00
+RUOKAILUVUORO II: ruokailu klo 11.40 – 12.20, oppitunti klo 11.00 – 11.40 ja klo 12.20 – 13.00
-MA141 SAKO, ÄI82 MIAU, ÄI63 TUTA, GE42 MAME, KE82 SALE, PS53 SATU ja KAHDEN TUTKINNON OPINNOT 2. ja 3. VUOSITASON RYHMÄT
+GE42 MAME, KE82 SALE, PS53 SATU, MB42 SAHE, YH25 JAJU, RB46 ANSU, MB83 MATI, EA48 VIHU, FD41 MASI ja FI31 TEKE
-RUOKAILUVUORO III klo 11.40 – 12.05, välitunti klo 10.50 - 11.00 ja klo 12.05 - 12.20, oppitunti klo 11.00 – 11.40 ja 12.20 - 13.00
+RUOKAILUVUORO III: ruokailu klo 12.20 – 13.00, oppitunti klo 11.00 – 12.20
-MB42 SAHE, YH25 JAJU, RB46 ANSU ja MB83 MATI
-
-
-
-RUOKAILUVUORO IV klo 12.05 – 12.30, välitunti klo 10.50 - 11.00 ja klo 12.50 - 13.20, oppitunti klo 11.00 – 12.00 ja 12.30 - 12.50
-
-BI14 LAMI, BI12 LAMI, ENA27 SABE, RB37 KAHU, EA48 VIHU, FD41 MASI ja FI31 KAMA
-
-
-
-RUOKAILUVUORO V klo 12.25 – 12.50, välitunti klo 10.50 - 11.05 ja klo 12.50 - 13.20, oppitunti klo 11.05 – 12.25
-
-AT12 RIHO, AT13 ESRI, RB62 SASA, KU15 REOJ ja OP16 PIKS
+BI14 LAMI, BI12 LAMI, ENA27 SABE, RB37 KAHU, AT12 RIHO, AT13 ESRI, RB62 SASA, KU15 REOJ ja OP16 PIKS
@@ -42,32 +26,21 @@ TIISTAISIN
-RUOKAILUVUORO I klo 10.50 – 11.15, välitunti klo 11.15 - 11.30, oppitunti klo 11.30 – 12.50
-
-MA111 MATI, ÄI62 HAPA, KU41 REOJ, MA73 SAKO ja PS82 JUNU
-
-
-
-RUOKAILUVUORO II klo 11.20 – 11.45, välitunti klo 10.50 - 11.00, oppitunti klo 11.00 - 11.20 ja klo 11.50 – 12.50
-
-RB41 ANSU, BI41 PAHO, UE27 SATU, RA41 SASA ja UE13 ALMA
-
+RUOKAILUVUORO I: ruokailu klo 10.50 – 11.20, oppitunti klo 11.30 – 12.50
-RUOKAILUVUORO III klo 11.40 – 12.05, välitunti klo 10.50 - 11.00, oppitunti klo 11.00 – 11.40 ja klo 12.10 - 12.50
-
-RB44 MAOI, HI31 JUSA, MA142 ESRI, KE81 SALE ja PS51 KAMA
+MA111 MATI, ÄI62 HAPA, KU41 REOJ, MA73 SAKO, PS82 JUNU, RB41 ANSU, BI41 PAHO, UE27 SATU ja RA41 SASA
-RUOKAILUVUORO IV klo 12.05 – 12.30, välitunti klo 10.50 - 11.00, oppitunti klo 11.00 – 12.00 ja 12.30 - 12.50
+RUOKAILUVUORO II: ruokailu klo 11.40 – 12.10, oppitunti klo 11.00 – 11.40 ja klo 12.10 – 12.50
-TE14 ANSA, TE12 ANSA, ENA25 VIHU, BI16 MAME, BI13 MAME ja TE17 JUHO
+UE13 TEKE, RB44 MAOI, HI31 JUSA, MA142 ESRI, KE81 SALE, PS51 ALMA, TE14 ANSA, TE12 ANSA, BI16 MAME ja BI13 MAME
-RUOKAILUVUORO V klo 12.25 – 12.50, välitunti klo 10.50 - 11.05, oppitunti klo 11.05 – 12.25
+RUOKAILUVUORO III: ruokailu klo 12.20 – 12.50, oppitunti klo 11.00 – 12.20
-AT11 RIHO, FY12 JUMA, MB84 OLNU, ÄI85 TUTA ja MU41 MAMY
+ENA25 VIHU, TE17 JUHO, AT11 RIHO, FY12 JUMA, MB84 OLNU, ÄI85 TUTA ja MU41 MAMY
@@ -77,35 +50,21 @@ KESKIVIIKKOISIN
-RUOKAILUVUORO I klo 10.50 – 11.15, välitunti klo 11.15 - 11.40, oppitunti klo 11.40 – 13.00
-
-LP91 JUHO, LT91 ANSA, ÄI84 HAPA, AT14 ESRI ja AT16 RIHO
-
-
-
-RUOKAILUVUORO II klo 11.15 – 11.40, välitunti klo 10.50 - 11.15, oppitunti klo 11.40 – 13.00
-
-GE61 MAME, HI32 HEAH, ÄI44 VETU, MB63 SAHE, RB82 MAOI ja UE51 SATU
-
-
-
-RUOKAILUVUORO III klo 11.40 – 12.05, välitunti klo 10.50 - 11.00 ja klo 12.05 - 12.20, oppitunti klo 11.00 – 11.40 ja 12.20 - 13.00
+RUOKAILUVUORO I: ruokailu klo 10.50 – 11.30, oppitunti klo 11.40 – 13.00
-KE33 SAKO, SC51 SABE, RB35 ANSU, EA46 KAHU ja HI27 JAJU
+LP91 JUHO, LT91 ANSA, ÄI84 HAPA, AT14 ESRI, AT16 RIHO, GE61 MAME, HI32 HEAH, ÄI44 VETU ja PS52 JSAL
-RUOKAILUVUORO IV klo 12.05 – 12.30, välitunti klo 10.50 - 11.00 ja klo 12.50 - 13.20, oppitunti klo 11.00 – 12.00 ja 12.30 - 12.50
+RUOKAILUVUORO II: ruokailu klo 11.40 – 12.20, oppitunti klo 11.00 – 11.40 ja klo 12.20 – 13.00
-ENA21 MASI, KE13 SALE, PS15 ALMA, PS12 ALMA, MA143 MATI ja PS52 JSAL
+MB63 SAHE, UE51 SATU, KE33 SAKO, SC51 SABE, RB35 ANSU, EA46 KAHU, HI27 JAJU, ENA21 MASI ja MA143 MATI
-RUOKAILUVUORO V klo 12.25 – 12.50, välitunti klo 10.50 - 11.05 ja klo 12.50 - 13.20, oppitunti klo 11.05 – 12.25
+RUOKAILUVUORO III: ruokailu klo 12.20 – 13.00, oppitunti klo 11.00 – 12.20
-OPO12 KIIK, OPO17 PIKS, EA51 ANLE ja ÄI61 TUTA
-
-
+RB82 MAOI, KE13 SALE, PS15 ALMA, PS12 ALMA, OPO12 KIIK, OPO17 PIKS, EA51 ANLE ja ÄI61 TUTA
@@ -113,35 +72,21 @@ TORSTAISIN
-RUOKAILUVUORO I klo 10.50 – 11.15, välitunti klo 11.15 - 11.30, oppitunti klo 11.30 – 12.50
+RUOKAILUVUORO I: ruokailu klo 10.50 – 11.20, oppitunti klo 11.30 – 12.50
-LP22 JUHO, PS71 KAMA, ÄI48 HAPA, ÄI86 VETU ja ÄI65 MIAU
+LP22 JUHO, PS71 KAMA, ÄI48 HAPA, ÄI86 VETU, ÄI65 MIAU, MA74 RIHO, YH42 JUSA ja RB72 MAOI
-RUOKAILUVUORO II klo 11.20 – 11.45, välitunti klo 10.50 - 11.00, oppitunti klo 11.00 - 11.20 ja klo 11.50 – 12.50
+RUOKAILUVUORO II: ruokailu klo 11.40 – 12.10, oppitunti klo 11.00 – 11.40 ja klo 12.10 – 12.50
-MA74 RIHO, YH42 JUSA, RB72 MAOI, ja MB64 SAHE
+MB64 SAHE, ENA24 ANLE, PS17 SATU, GE31 PAHO, SC101 SABE, MB43 JOTO, PC41 VIHU, PD51 VIHU, ENA22 KAHU ja FY72 JUMA
-RUOKAILUVUORO III klo 11.40 – 12.05, välitunti klo 10.50 - 11.00, oppitunti klo 11.00 – 11.40 ja klo 12.10 - 12.50
+RUOKAILUVUORO III: ruokailu klo 12.20 – 12.50, oppitunti klo 11.00 – 12.20
-ENA24 ANLE, ja PS17 SATU, GE31 PAHO, SC101 SABE, MB43 JOTO, PC41 VIHU ja PD51 VIHU
-
-
-
-RUOKAILUVUORO IV klo 12.05 – 12.30, välitunti klo 10.50 - 11.00, oppitunti klo 11.00 – 12.00 ja 12.30 - 12.50
-
-ENA22 KAHU, FI13 ALMA, HI15 HEAH, HI12 HEAH ja FY72 JUMA
-
-
-
-RUOKAILUVUORO V klo 12.25 – 12.50, välitunti klo 10.50 - 11.05, oppitunti klo 11.05 – 12.25
-
-KU11 REOJ, LT23 ANSA, MU16 MAMY, MU14 MAMY ja BI23 MAME
-
-
+FI13 ALMA, HI15 HEAH, HI12 HEAH, KU11 REOJ, LT23 ANSA, MU16 MAMY, MU14 MAMY ja BI23 MAME
@@ -149,36 +94,18 @@ PERJANTAISIN
-RUOKAILUVUORO I klo 10.50 – 11.15, välitunti klo 11.15 - 11.40, oppitunti klo 11.40 – 13.00
+RUOKAILUVUORO I: ruokailu klo 10.50 – 11.30, oppitunti klo 11.40 – 13.00
-OPO13 KIIK, OPO15 PIKS, ET21 ALMA, RA111 MAOI, RB111 MAOI, TE32 ANSA, FY111 JUMA ja PC81 VIHU
+OPO13 KIIK, OPO15 PIKS, ET21 ALMA, RA111 MAOI, RB111 MAOI, TE32 ANSA, FY111 JUMA, PC81 VIHU, TE22 JUHO, ÄI83 MIAU ja ÄI67 VETU
-RUOKAILUVUORO II klo 11.15 – 11.40, välitunti klo 10.50 - 11.15, oppitunti klo 11.40 – 13.00
+RUOKAILUVUORO II: ruokailu klo 11.40 – 12.20, oppitunti klo 11.00 – 11.40 ja klo 12.20 – 13.00
-TE22 JUHO, RB71 KAHU, AT17 RIHO ja MB82 JOTO
+RB71 KAHU, AT17 RIHO, MB82 JOTO, MA71 MATI, MB41 ESRI, EA44 ANLE ja HI25 HEAH
-RUOKAILUVUORO III klo 11.40 – 12.05, välitunti klo 10.50 - 11.00 ja klo 12.05 - 12.20, oppitunti klo 11.00 – 11.40 ja 12.20 - 13.00
-
-MA71 MATI, MB41 ESRI, EA44 ANLE ja BI26 PAHO
-
-
-
-RUOKAILUVUORO IV klo 12.05 – 12.30, välitunti klo 10.50 - 11.00 ja klo 12.50 - 13.20, oppitunti klo 11.00 – 12.00 ja 12.30 - 12.50
-
-FI11 JSAL, FI12 JSAL, PS14 KAMA, ENA26 SABE ja HI25 HEAH
-
-
-
-RUOKAILUVUORO V klo 12.25 – 12.50, välitunti klo 10.50 - 11.05 ja klo 12.50 - 13.20, oppitunti klo 11.05 – 12.25
-
-MU12 MAMY, MU13 MAMY, KE32 SALE, ÄI83 MIAU, FD81 MASI ja ÄI67 VETU
-
-
-
-
+RUOKAILUVUORO III: ruokailu klo 12.20 – 13.00, oppitunti klo 11.00 – 12.20
- \ No newline at end of file
+BI26 PAHO, FI11 JSAL, FI12 JSAL, PS14 TEKE, ENA26 SABE, MU12 MAMY, MU13 MAMY, KE32 SALE ja FD81 MASI \ No newline at end of file