Optische Änderungen: Ausnutzen des Platzes u.a. durch Weglassen der Navileiste; Korrekturraster
This commit is contained in:
@@ -11,12 +11,12 @@ Beim vorliegenden Projekt handelt es sich um ein Python-Skript, das für beliebi
|
||||
eine gemeinsame PDF-Datei generiert, die für jede Lerngruppe
|
||||
|
||||
- eine (Noten)-Übersicht für die Lerngruppe,
|
||||
- eine Geburtstagsliste,
|
||||
- für jede Lernerfolgskontrolle eine Punkte- und Notentabelle,
|
||||
- für jedes Quartal eine Tabelle zur Erfassung von SoMi-Notizen,
|
||||
- eine Tabelle zur HA-Kontrolle,
|
||||
- eine oder mehrere Checklisten-Tabelle(n) zum Abhaken und
|
||||
- ein Blatt zur Planung des Halbjahres.
|
||||
- eine oder mehrere Checklisten-Tabelle(n) zum Abhaken,
|
||||
- eine Geburtstagsliste und
|
||||
- ein Blatt zur Planung des Halbjahres
|
||||
|
||||
für ein Halbjahr umfasst. Zusätzlich kann optional als Startseite der Stundenplan eingebunden werden.
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ checkliste_seiten = 2
|
||||
Die Parameter sind zwar selbsterklärend, werden hier aber dennoch einmal kurz erläutert:
|
||||
|
||||
- Die Bezeichnung der Lerngruppe wird als Überschrift überall dort verwendet, wo genügend Platz zur Verfügung steht.
|
||||
- Ist nur wenig Platz vorhanden (z.B. im Stundenplan oder in der Navigationsleiste), kommt die Kurzbeschreibung der Lerngruppe zum Einsatz.
|
||||
- Ist nur wenig Platz vorhanden (z.B. im Stundenplan), kommt die Kurzbeschreibung der Lerngruppe zum Einsatz.
|
||||
- Die Anzahl der schriftlichen Lernerfolgskontrollen gibt an, wie viele Korrekturbögen erzeugt werden. Die Anzahl 0 sorgt dafür, dass diese automatisch weggelassen werden.
|
||||
- Die Bezeichnung der Lernerfolgskontrolle passt sich dem Sprachgebrauch an, z.B. Arbeit oder Kursarbeit oder Klausur.
|
||||
- Bei der Erfassung von Notizen zur Sonstigen Mitarbeit (SoMi) wird angegeben, ob eine durchlaufende Liste für beide Quartale oder zwei getrennte Listen für die beiden Quartale generiert werden sollen.
|
||||
|
||||
3168
src/data/a4.pdf
3168
src/data/a4.pdf
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
3894
src/data/rm2.pdf
3894
src/data/rm2.pdf
File diff suppressed because one or more lines are too long
@@ -11,7 +11,7 @@ anzahl_aufgaben = 6
|
||||
[SoMiNoten]
|
||||
|
||||
# Anzahl der SoMi-Noten-Spalten
|
||||
anzahl_noten = 14
|
||||
anzahl_noten = 16
|
||||
|
||||
[Hausaufgaben]
|
||||
|
||||
|
||||
@@ -69,15 +69,15 @@ table.headline td.nr {
|
||||
width: 5.5%;
|
||||
}
|
||||
td.left {
|
||||
width: 47.5%;
|
||||
padding-top: 2pt;
|
||||
width: 42.5%;
|
||||
padding-top: 4pt;
|
||||
text-align: left;
|
||||
}
|
||||
td.right {
|
||||
width: 48.0%;
|
||||
width: 52.0%;
|
||||
padding-top: 0pt;
|
||||
padding-right: 0pt;
|
||||
text-align: right;
|
||||
text-align: left;
|
||||
}
|
||||
table.headline a {
|
||||
color: black;
|
||||
@@ -131,8 +131,10 @@ table, tr, td {
|
||||
border: 0.3px solid black;
|
||||
}
|
||||
th, td {
|
||||
padding-top: 4pt;
|
||||
padding-top: 3pt;
|
||||
padding-bottom: -1pt;
|
||||
padding-left: 2pt;
|
||||
vertical-align: middle;
|
||||
text-align: left;
|
||||
}
|
||||
th.nr, td.nr {
|
||||
@@ -155,57 +157,6 @@ th.luecke, td.luecke {
|
||||
border: none;
|
||||
}
|
||||
|
||||
/* Halbjahresübersicht */
|
||||
table.halbjahr {
|
||||
border: none;
|
||||
}
|
||||
table.halbjahr tr {
|
||||
border: none;
|
||||
}
|
||||
th.kw, th.kwsmall, th.kw_sessions, th.kw_content {
|
||||
border: 0.3px solid black;
|
||||
border-bottom: 1px solid black;
|
||||
}
|
||||
th.kw, td.kw {
|
||||
width: 5.5%;
|
||||
text-align: right;
|
||||
padding-right: 2pt;
|
||||
vertical-align: middle;
|
||||
}
|
||||
th.kw {
|
||||
text-align: center;
|
||||
}
|
||||
th.kwsmall, td.kwsmall {
|
||||
font-size: 8.5pt;
|
||||
}
|
||||
th.kw_sessions, td.kw_sessions {
|
||||
width: 19%;
|
||||
text-align: center;
|
||||
padding-left: 0pt;
|
||||
border-left: 1px solid black;
|
||||
border-right: 1px solid black;
|
||||
}
|
||||
th.kw_content, td.kw_content {
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
/* Geburtstagstabelle */
|
||||
td.geb, th.geb {
|
||||
width: 15%;
|
||||
padding-left: 0pt;
|
||||
text-align: center;
|
||||
}
|
||||
td.age {
|
||||
width: 7.5%;
|
||||
padding-left: 0pt;
|
||||
text-align: center;
|
||||
}
|
||||
td.eightteen {
|
||||
background: lightgrey;
|
||||
}
|
||||
td.home {
|
||||
width: 42.5%;
|
||||
}
|
||||
|
||||
/* Übersichtstabelle */
|
||||
table.overview th.nr, th.name, th.endnote {
|
||||
@@ -266,6 +217,22 @@ tr.muster {
|
||||
border-top: 1px solid black;
|
||||
border-bottom: 1px solid black;
|
||||
}
|
||||
table.raster {
|
||||
-pdf-keep-with-next: true;
|
||||
}
|
||||
table.raster td.first {
|
||||
width: 8%;
|
||||
}
|
||||
table.raster td {
|
||||
text-align: center;
|
||||
padding-right: 1pt;
|
||||
}
|
||||
table.raster tr.line {
|
||||
border-bottom: 1px solid black;
|
||||
}
|
||||
table.raster tr {
|
||||
height: 25pt;
|
||||
}
|
||||
|
||||
/* SoMi-Tabelle */
|
||||
table.somi th {
|
||||
@@ -281,12 +248,12 @@ table.somi tr.secretheader {
|
||||
height: 30pt;
|
||||
}
|
||||
th.somi, td.somi, th.schr, td.schr {
|
||||
width: 4.5%;
|
||||
width: 4.25%;
|
||||
text-align: center;
|
||||
padding-left: 0pt;
|
||||
}
|
||||
th.sominote, td.sominote {
|
||||
width: 10%;
|
||||
width: 7.5%;
|
||||
text-align: center;
|
||||
padding-left: 0pt;
|
||||
}
|
||||
@@ -315,3 +282,54 @@ th.ha {
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
/* Geburtstagstabelle */
|
||||
td.geb, th.geb {
|
||||
width: 15%;
|
||||
padding-left: 0pt;
|
||||
text-align: center;
|
||||
}
|
||||
td.age {
|
||||
width: 7.5%;
|
||||
padding-left: 0pt;
|
||||
text-align: center;
|
||||
}
|
||||
td.eightteen {
|
||||
background: lightgrey;
|
||||
}
|
||||
td.home {
|
||||
width: 42.5%;
|
||||
}
|
||||
|
||||
/* Halbjahresübersicht */
|
||||
table.halbjahr {
|
||||
border: none;
|
||||
}
|
||||
table.halbjahr tr {
|
||||
border: none;
|
||||
}
|
||||
th.kw, th.kwsmall, th.kw_sessions, th.kw_content {
|
||||
border: 0.3px solid black;
|
||||
border-bottom: 1px solid black;
|
||||
}
|
||||
th.kw, td.kw {
|
||||
width: 5.5%;
|
||||
text-align: right;
|
||||
padding-right: 2pt;
|
||||
vertical-align: middle;
|
||||
}
|
||||
th.kw {
|
||||
text-align: center;
|
||||
}
|
||||
th.kwsmall, td.kwsmall {
|
||||
font-size: 8.5pt;
|
||||
}
|
||||
th.kw_sessions, td.kw_sessions {
|
||||
width: 19%;
|
||||
text-align: center;
|
||||
padding-left: 0pt;
|
||||
border-left: 1px solid black;
|
||||
border-right: 1px solid black;
|
||||
}
|
||||
th.kw_content, td.kw_content {
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[Navigation]
|
||||
|
||||
# Lerngruppenbezeichnung in der Navileiste (Zeilenumbruch vermeiden): kurz, normal
|
||||
bezeichnung = normal
|
||||
bezeichnung = kurz
|
||||
|
||||
[Korrekturbogen]
|
||||
|
||||
@@ -11,7 +11,7 @@ anzahl_aufgaben = 5
|
||||
[SoMiNoten]
|
||||
|
||||
# Anzahl der SoMi-Noten-Spalten
|
||||
anzahl_noten = 12
|
||||
anzahl_noten = 15
|
||||
|
||||
[Hausaufgaben]
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ anzahl_aufgaben = 5
|
||||
[SoMiNoten]
|
||||
|
||||
# Anzahl der SoMi-Noten-Spalten
|
||||
anzahl_noten = 12
|
||||
anzahl_noten = 14
|
||||
|
||||
[Hausaufgaben]
|
||||
|
||||
|
||||
@@ -172,12 +172,6 @@ for datei in dateien:
|
||||
# Übersichtsseite Noten zusammenbauen
|
||||
body = body + uebersicht.erstelleUebersicht(klassekurs_name, lerngruppen, path, namen, gebdaten, config, inputs, kurs_inputs)
|
||||
|
||||
# Geburtstagsseite zusammenbauen
|
||||
if (len(gebdaten)==0):
|
||||
print(' - Geburtstagsliste wird weggelassen.')
|
||||
else:
|
||||
body = body + birthday.erstelleGeburtstagsBogen(klassekurs_name, lerngruppen, path, namen, gebdaten, config, inputs, kurs_inputs)
|
||||
|
||||
# optional: Korrekturbögen zusammenbauen
|
||||
try:
|
||||
schr_anzahl = int(kurs_inputs["schriftlich_anzahl"])
|
||||
@@ -202,6 +196,12 @@ for datei in dateien:
|
||||
# Checkliste(n) zusammenbauen
|
||||
body = body + checkliste.erstelleCheckliste(klassekurs_name, lerngruppen, path, namen, gebdaten, config, inputs, kurs_inputs)
|
||||
|
||||
# Geburtstagsseite zusammenbauen
|
||||
if (len(gebdaten)==0):
|
||||
print(' - Geburtstagsliste wird weggelassen.')
|
||||
else:
|
||||
body = body + birthday.erstelleGeburtstagsBogen(klassekurs_name, lerngruppen, path, namen, gebdaten, config, inputs, kurs_inputs)
|
||||
|
||||
# Planungsseite für das Halbjahr zusammenbauen
|
||||
body = body + halbjahr.erstelleHalbjahresuebersicht(klassekurs_name, lerngruppen, path, namen, gebdaten, config, inputs, kurs_inputs)
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ def erstelleHABogen(klassekurs_name, dateien, path, namen, gebdaten, config, inp
|
||||
|
||||
table += '<a name="'+klassekurs_name+'HA"></a>'
|
||||
|
||||
table += header.erstelleHeader('Hausaufgaben', klassekurs_name, gebdaten, dateien, path, config, inputs, kurs_inputs)
|
||||
table += header.erstelleHeader('HA', klassekurs_name, gebdaten, dateien, path, config, inputs, kurs_inputs)
|
||||
|
||||
table += '<table class="'+css+'" repeat="1">'
|
||||
|
||||
|
||||
@@ -19,12 +19,6 @@ def erstelleNavigation(klassekurs_name, lerngruppen, path, config, inputs):
|
||||
print('Der Bereichsschlüssel "'+kursid+'" (zur entsprechenden Datei) existiert nicht in der Input-Datei (3).')
|
||||
exit(0)
|
||||
|
||||
try:
|
||||
device = inputs["Allgemein"]["device"]
|
||||
except KeyError:
|
||||
print('Der Schlüssel Allgemein oder "device" existiert nicht in der Input-Datei!')
|
||||
exit(0)
|
||||
|
||||
try:
|
||||
bezeichnung = config["Navigation"]["bezeichnung"]
|
||||
except KeyError:
|
||||
@@ -55,10 +49,11 @@ def erstelleNavigation(klassekurs_name, lerngruppen, path, config, inputs):
|
||||
|
||||
def erstelleHeader(line, klassekurs_name, gebdaten, lerngruppen, path, config, inputs, kurs_inputs):
|
||||
|
||||
# Part 1: Navigation für alle Lerngruppen
|
||||
header = erstelleNavigation(klassekurs_name, lerngruppen, path, config, inputs)
|
||||
# vorerst abgeschaltet: Navigation für alle Lerngruppen
|
||||
# header = erstelleNavigation(klassekurs_name, lerngruppen, path, config, inputs)
|
||||
|
||||
# Part2: Icons für die aktuelle Lerngruppe
|
||||
# Icons für die aktuelle Lerngruppe
|
||||
header = ''
|
||||
header += '<table class="headline"><tr class="headline">'
|
||||
|
||||
# Icon
|
||||
@@ -82,13 +77,12 @@ def erstelleHeader(line, klassekurs_name, gebdaten, lerngruppen, path, config, i
|
||||
# Iconleiste rechts
|
||||
header += '<td class="right headline">'
|
||||
|
||||
# Link zur Startseite
|
||||
header += '<a href="#Home"> <img class="icon" src="img/home-2.svg"/></a>'
|
||||
|
||||
# Notenübersicht
|
||||
header += '<a href="#'+klassekurs_name+'Overview"> <img class="icon" src="img/user-multiple-4.svg"/></a>'
|
||||
|
||||
# Geburtstagsseite
|
||||
if (len(gebdaten)>0):
|
||||
header += '<a href="#'+klassekurs_name+'Birthday"> <img class="icon" src="img/bell-1.svg"/></a>'
|
||||
|
||||
# Arbeiten/Klausuren
|
||||
schr_anzahl = int(kurs_inputs["schriftlich_anzahl"])
|
||||
schr_bez = kurs_inputs["schriftlich_bez"]
|
||||
@@ -116,6 +110,10 @@ def erstelleHeader(line, klassekurs_name, gebdaten, lerngruppen, path, config, i
|
||||
# Checklisten
|
||||
header += '<a href="#'+klassekurs_name+'Check"> <img class="icon" src="img/check-circle-1.svg"/></a>'
|
||||
|
||||
# Geburtstagsseite
|
||||
if (len(gebdaten)>0):
|
||||
header += '<a href="#'+klassekurs_name+'Birthday"> <img class="icon" src="img/bell-1.svg"/></a>'
|
||||
|
||||
# Halbjahresseite
|
||||
header += '<a href="#'+klassekurs_name+'Halbjahr"> <img class="icon" src="img/calendar-days.svg"/></a>'
|
||||
|
||||
|
||||
@@ -19,6 +19,12 @@ def erstelleKorrekturbogen(klassekurs_name, dateien, path, namen, gebdaten, conf
|
||||
print('Ein Parameter "schriftlich_XYZ" fehlt für die Lerngruppe in der Input-Datei!')
|
||||
exit(0)
|
||||
|
||||
try:
|
||||
device = inputs["Allgemein"]["device"]
|
||||
except KeyError:
|
||||
print('Der Schlüssel Allgemein oder "device" existiert nicht in der Input-Datei!')
|
||||
exit(0)
|
||||
|
||||
aufgaben_anzahl = int(config["Korrekturbogen"]["anzahl_aufgaben"])
|
||||
|
||||
offset = 0
|
||||
@@ -58,6 +64,14 @@ def erstelleKorrekturbogen(klassekurs_name, dateien, path, namen, gebdaten, conf
|
||||
|
||||
table += '</table>'
|
||||
|
||||
table += '<p/>'
|
||||
|
||||
table += '<table class="raster">'
|
||||
table += '<tr><td class="first">Note</td><td class="cs" colspan="3">1</td><td class="cs" colspan="3">2</td><td class="cs" colspan="3">3</td><td class="cs" colspan="3">4</td><td class="cs" colspan="3">5</td><td>6</td></tr>'
|
||||
table += '<tr class="line"><td class="first"> </td><td>1+</td><td>1</td><td>1-</td><td>2+</td><td>2</td><td>2-</td><td>3+</td><td>3</td><td>4-</td><td>4+</td><td>4</td><td>4-</td><td>5+</td><td>5</td><td>5-</td><td>6</td></tr>'
|
||||
table += '<tr class="line"><td class="first">Pt.</td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td></tr>'
|
||||
table += '</table>'
|
||||
|
||||
table += '<pdf:nextpage />'
|
||||
|
||||
return table
|
||||
|
||||
Reference in New Issue
Block a user