Add attendance

This commit is contained in:
Mikołaj Pich 2018-03-06 22:44:29 +01:00
parent 7aeca892d8
commit 6f5c589fdd
5 changed files with 191 additions and 5 deletions

View file

@ -0,0 +1,77 @@
[
{
"number": "0",
"days": [
{
"name": "Fizyka",
"isPresence": true
},
{
"name": "Metodologia programowania",
"isAbsenceUnexcused": true
},
{
"name": "Religia",
"isAbsenceExcused": true
},
{
"name": "Religia",
"isAbsenceForSchoolReasons": true
},
{
"name": "Uroczyste zakończenie roku szkolnego",
"isUnexcusedLateness": true
}
]
},
{
"number": "1",
"days": [
{
"name": "Metodologia programowania",
"isExcusedLateness": true
},
{
"name": "Język angielski",
"isExemption": true
},
{
"name": "Użytkowanie urządzeń peryferyjnych komputera",
"isPresence": true
},
{
"name": "Wychowanie fizyczne",
"isPresence": true
},
{
"name": "Wychowanie fizyczne",
"isPresence": true
}
]
},
{
"number": "2",
"days": [
{
"name": "Język polski",
"isPresence": true
},
{
"name": "Język polski",
"isPresence": true
},
{
"name": "Język niemiecki",
"isPresence": true
},
{
"name": "Język niemiecki",
"isPresence": true
},
{
"name": "Użytkowanie urządzeń peryferyjnych komputera",
"isPresence": true
}
]
}
]

View file

@ -0,0 +1,56 @@
.x-obecnosc:before {
content: 'obecność';
background: green;
}
.x-nieobecnosc-nieuspr:before {
content: 'nieobecność nieusprawiedliwiona';
background: red;
}
.x-nieobecnosc-uspr:before {
content: 'nieobecność usprawiedliwiona';
background: orange;
}
.x-nieobecnosc-przycz-szkol:before {
content: 'nieobecność z przyczyn szkolnych';
background: lightblue;
}
.x-sp-nieusprawiedliwione:before {
content: 'spóźnienie nieusprawiedliwione';
background: yellow;
}
.x-sp-spr:before {
content: 'spóźnienie usprawiedliwione';
background: black;
color: white;
}
.x-sp-zwolnienie:before {
content: 'zwolnienie';
background: purple;
}
.x-sp-nieobecny-w-oddziale:before {
content: 'nieobecny w oddziale';
background: grey;
}
.x-obecnosc:before {
content: 'obecność';
background: green;
}
[class^="x"]:before {
color: #fff;
padding: 2px;
}
.presentData td:not(.padding-zero):not(.x-sp-nieobecny-w-oddziale):not(:first-child):before {
display: block;
content: 'pusta';
background: grey;
}

View file

@ -1,5 +1,6 @@
@import "scaffolding";
@import "grades-table";
@import "attendance";
@import "timetable-table";
@import "filters";
@import "header";

View file

@ -34,25 +34,37 @@ router.get("/Default/123456/Uczen.mvc/DanePodstawowe", (req, res) => {
router.get("/Default/123456/Oceny(\.mvc|)/Wszystkie", (req, res) => {
let dataPath;
let viePath;
let viewPath;
if (req.query.details === '2') {
dataPath = "../../data/opiekun/oceny-szczegolowy.json";
viePath = "opiekun/oceny-szczegolowy";
viewPath = "opiekun/oceny-szczegolowy";
} else {
viePath = "opiekun/oceny-skrocony";
viewPath = "opiekun/oceny-skrocony";
dataPath = "../../data/opiekun/oceny-skrocony.json";
}
res.render(viePath, {
res.render(viewPath, {
title: "Witryna ucznia i rodzica Oceny",
data: require(dataPath)
});
});
router.get('/Default/123456/Frekwencja.mvc', (req, res) => {
res.render("opiekun/frekwencja", {
title: "Witryna ucznia i rodzica Frekwencja",
data: require("../../data/opiekun/frekwencja.json"),
weekDays: converter.getWeekDaysFrom(req.query.data),
tics: {
prev: converter.getPrevTick(req.query.data),
next: converter.getNextTick(req.query.data)
}
})
});
router.get("/Default/123456/Lekcja(\.mvc|)/PlanLekcji", (req, res) => {
res.render("opiekun/plan-lekcji", {
title: "Witryna ucznia i rodzica Paln Lekcji",
title: "Witryna ucznia i rodzica Plan lekcji",
data: require("../../data/opiekun/plan-lekcji.json"),
weekDays: converter.getWeekDaysFrom(req.query.data),
tics: {

View file

@ -0,0 +1,40 @@
extends layout
mixin nav
.navigation
a.button-prev(href="/Default/123456/Frekwencja.mvc?data=" + tics.prev) Poprzedni tydzień
a.button-next(href="/Default/123456/Frekwencja.mvc?data=" + tics.next) Następny tydzień
append content
main.mainContainer
h1 Frekwencja
+nav
div
table.presentData
thead
tr
th Lekcja
each item in weekDays
th
| #{item[0]}
br
| #{item[1]}
tbody
each item in data
tr
td= item.number
each cell in item.days
td.padding-zero
div(class={
'x-obecnosc': cell.isPresence,
'x-nieobecnosc-nieuspr': cell.isAbsenceUnexcused,
'x-nieobecnosc-uspr': cell.isAbsenceExcused,
'x-nieobecnosc-przycz-szkol': cell.isAbsenceForSchoolReasons,
'x-sp-nieusprawiedliwione': cell.isUnexcusedLateness,
'x-sp-spr': cell.isExcusedLateness,
'x-sp-zwolnienie': cell.isExemption
})
span= cell.name
+nav