burningTyger 6 vuotta sitten
vanhempi
sitoutus
1e7125dacd

+ 1 - 1
ASZ Fachschule.html

@@ -19,7 +19,7 @@
               <Noten noten={hj.noten}></Noten>
               <Noten noten={hj.noten}></Noten>
             </div>
             </div>
             <hr />
             <hr />
-            <b>Bemerkungen</b><br />{bemerkungen(hj)}
+            <b>Bemerkungen</b><br />{@html bemerkungen(hj)}
           </div>
           </div>
           <div class="main-right">
           <div class="main-right">
             {s.anrede} {s.Vorname} {_.toString(s.Zusatz)} {s.Name} hat das staatliche
             {s.anrede} {s.Vorname} {_.toString(s.Zusatz)} {s.Name} hat das staatliche

+ 9 - 4
Abgangszeugnis.html

@@ -23,7 +23,12 @@
         {s.Geschlecht === 3 ? 'Er':'Sie'} war zuletzt {s.schueler_in} in der Klasse {s.Klasse}.
         {s.Geschlecht === 3 ? 'Er':'Sie'} war zuletzt {s.schueler_in} in der Klasse {s.Klasse}.
         <Voffset v="2"/>
         <Voffset v="2"/>
         Leistungen laut Konferenzbeschluss vom {datum(hj.Konferenzdatum)}:
         Leistungen laut Konferenzbeschluss vom {datum(hj.Konferenzdatum)}:
-        <Noten noten={hj.noten} fachGliederungen={s.fachklasse.fach_gliederungen}></Noten>
+        <Noten
+          noten={hj.noten}
+          fachGliederungen={s.fachklasse.fach_gliederungen}
+          ger
+          fachklasse={s.fachklasse.Kennung}
+        ></Noten>
         <hr />
         <hr />
         {#if !s.ASDSchulform.startsWith('E')}
         {#if !s.ASDSchulform.startsWith('E')}
           Fehlstunden: {Number(hj.SumFehlStd) || 0}
           Fehlstunden: {Number(hj.SumFehlStd) || 0}
@@ -33,9 +38,9 @@
           {/if}
           {/if}
         {/if}
         {/if}
         <Voffset v="1"/>
         <Voffset v="1"/>
-        <b>{versetzungsvermerk(s,hj)}</b>
+        <b>{versetzungsvermerk(s,hj, true)}</b>
         <Voffset v="1"/>
         <Voffset v="1"/>
-        <b>Bemerkungen</b><br />{bemerkungen(hj)}
+        <b>Bemerkungen</b><br />{@html bemerkungen(hj)}
       </div>
       </div>
       <div class="footer">
       <div class="footer">
         <div class="flex-grid">
         <div class="flex-grid">
@@ -73,7 +78,7 @@
             </div>
             </div>
           {/if}
           {/if}
         </div>
         </div>
-        <Fussnote schule={schule}></Fussnote>
+        <Fussnote schule={schule} ger></Fussnote>
       </div>
       </div>
     </div>
     </div>
   {/each}
   {/each}

+ 2 - 6
Halbjahreszeugnis LF.html

@@ -20,13 +20,9 @@
           <Noten lernfeld noten={hj.noten} fachGliederungen={s.fachklasse.fach_gliederungen}></Noten>
           <Noten lernfeld noten={hj.noten} fachGliederungen={s.fachklasse.fach_gliederungen}></Noten>
         </div>
         </div>
         <hr />
         <hr />
-        Fehlstunden: {_.toNumber(hj.SumFehlStd)}
-        {#if hj.SumFehlStdU > 0}
-          , davon unentschuldigt: {hj.SumFehlStdU}
-          <Voffset v="1"/>
-        {/if}
+        Fehlstunden: {Number(hj.SumFehlStd) || 0}{#if Number(hj.SumFehlStdU) > 0}, davon unentschuldigt: {hj.SumFehlStdU}<Voffset v="1"/>{/if}
         <Voffset v="1"/>
         <Voffset v="1"/>
-        <b>Bemerkungen</b><br />{bemerkungen(hj)}
+        <b>Bemerkungen</b><br />{@html bemerkungen(hj)}
       </div>
       </div>
       <div class="footer">
       <div class="footer">
         <div class="flex-grid">
         <div class="flex-grid">

+ 2 - 6
Halbjahreszeugnis.html

@@ -22,13 +22,9 @@
         Leistungen laut Konferenzbeschluss vom {datum(hj.Konferenzdatum)}:
         Leistungen laut Konferenzbeschluss vom {datum(hj.Konferenzdatum)}:
         <Noten noten={hj.noten} fachGliederungen={s.fachklasse.fach_gliederungen}></Noten>
         <Noten noten={hj.noten} fachGliederungen={s.fachklasse.fach_gliederungen}></Noten>
         <hr />
         <hr />
-        Fehlstunden: {_.toNumber(hj.SumFehlStd)}
-        {#if hj.SumFehlStdU > 0}
-          , davon unentschuldigt: {hj.SumFehlStdU}
-          <Voffset v="1"/>
-        {/if}
+        Fehlstunden: {Number(hj.SumFehlStd) || 0}{#if Number(hj.SumFehlStdU) > 0}, davon unentschuldigt: {hj.SumFehlStdU}<Voffset v="1"/>{/if}
         <Voffset v="1"/>
         <Voffset v="1"/>
-        <b>Bemerkungen</b><br />{bemerkungen(hj)}
+        <b>Bemerkungen</b><br />{@html bemerkungen(hj)}
       </div>
       </div>
       <div class="footer">
       <div class="footer">
         <div class="flex-grid">
         <div class="flex-grid">

+ 1 - 1
Jahreszeugnis.html

@@ -37,7 +37,7 @@
         <Voffset v="1"/>
         <Voffset v="1"/>
         <b>{versetzungsvermerk(s,hj)}</b>
         <b>{versetzungsvermerk(s,hj)}</b>
         <Voffset v="1"/>
         <Voffset v="1"/>
-        <b>Bemerkungen</b><br />{bemerkungen(hj)}
+        <b>Bemerkungen</b><br />{@html bemerkungen(hj)}
       </div>
       </div>
       <div class="footer">
       <div class="footer">
         <div class="flex-grid">
         <div class="flex-grid">

+ 1 - 1
Schullaufbahnbescheinigung AHR.html

@@ -70,7 +70,7 @@
           Abiturprüfung und zur Berufsabschlussprüfung gefährdet wird.
           Abiturprüfung und zur Berufsabschlussprüfung gefährdet wird.
         {/if}
         {/if}
         <Voffset v="0.5"/>
         <Voffset v="0.5"/>
-        <b>Bemerkungen:</b> {bemerkungen(hj)}
+        <b>Bemerkungen:</b> {@html bemerkungen(hj)}
       </div>
       </div>
       <div class="footer">
       <div class="footer">
         <div class="flex-grid">
         <div class="flex-grid">

+ 1 - 1
css/main.css

@@ -85,7 +85,7 @@ Link: https://www.w3.org/TR/css3-page/#using-named-pages
 .page[size="A4"][orientation="landscape"] {
 .page[size="A4"][orientation="landscape"] {
   /* page: a4landscape; */
   /* page: a4landscape; */
   width: 296.8mm;
   width: 296.8mm;
-  height: 210mm;
+  height: 209mm;
 }
 }
 /* @page a4landscape {
 /* @page a4landscape {
   margin: 0;
   margin: 0;

+ 2 - 75
daten/fachklassen.json

@@ -4,22 +4,12 @@
 		"Bereich": "Bereich fehlt",
 		"Bereich": "Bereich fehlt",
 		"Zeugniskopf": "ohne Angabe",
 		"Zeugniskopf": "ohne Angabe",
 		"Berufsbezeichnung_m": "männliche Berufsbezeichnung",
 		"Berufsbezeichnung_m": "männliche Berufsbezeichnung",
-		"Berufsbezeichnung_w": "weibliche Berufsbezeichnung",
-		"Fachgruppe": {
-			"10": "üblicherweise allgemeinbildende Fächer",
-			"20": "üblicherweise berufsbezogene Fächer",
-			"30": "üblicherweise Fächer des Differenzierungsbereichs"
-		}
+		"Berufsbezeichnung_w": "weibliche Berufsbezeichnung"
 	},
 	},
 	"10-106-00": {
 	"10-106-00": {
 		"Schulform": "Berufliches Gymnasium, Bereich Gesundheit und Soziales",
 		"Schulform": "Berufliches Gymnasium, Bereich Gesundheit und Soziales",
 		"Bereich": "Erzieherin/AHR, Erzieher/AHR",
 		"Bereich": "Erzieherin/AHR, Erzieher/AHR",
 		"Zeugniskopf": "Erzieherin/AHR, Erzieher/AHR",
 		"Zeugniskopf": "Erzieherin/AHR, Erzieher/AHR",
-		"Fachgruppe": {
-			"10": "Berufsübergreifender Lernbereich",
-			"20": "Berufsbezogener Lernbereich",
-			"30": "Differenzierungsbereich"
-		},
 		"Examen": "Berufsabschlussprüfung",
 		"Examen": "Berufsabschlussprüfung",
 		"Berufsbezeichnung_m": "Staatlich anerkannter Erzieher",
 		"Berufsbezeichnung_m": "Staatlich anerkannter Erzieher",
 		"Berufsbezeichnung_w": "Staatlich anerkannte Erzieherin",
 		"Berufsbezeichnung_w": "Staatlich anerkannte Erzieherin",
@@ -31,11 +21,6 @@
 		"Schulform": "Berufliches Gymnasium, Bereich Gesundheit und Soziales",
 		"Schulform": "Berufliches Gymnasium, Bereich Gesundheit und Soziales",
 		"Bereich": "Allgemeine Hochschulreife (Gesundheit)",
 		"Bereich": "Allgemeine Hochschulreife (Gesundheit)",
 		"Zeugniskopf": "Allgemeine Hochschulreife (Gesundheit)",
 		"Zeugniskopf": "Allgemeine Hochschulreife (Gesundheit)",
-		"Fachgruppe": {
-			"10": "Berufsübergreifender Lernbereich",
-			"20": "Berufsbezogener Lernbereich",
-			"30": "Differenzierungsbereich"
-		},
 		"Fremdsprache": {
 		"Fremdsprache": {
 			"114": "(B2/C1)"
 			"114": "(B2/C1)"
 		}
 		}
@@ -48,11 +33,6 @@
 		"Zeugniskopf": "Berufsfachschule für Gesundheit/Erziehung und Soziales",
 		"Zeugniskopf": "Berufsfachschule für Gesundheit/Erziehung und Soziales",
 		"Berufsbezeichnung_m": "Staatlich geprüfter Sozialassistent, Schwerpunkt Heilerziehung",
 		"Berufsbezeichnung_m": "Staatlich geprüfter Sozialassistent, Schwerpunkt Heilerziehung",
 		"Berufsbezeichnung_w": "Staatlich geprüfte Sozialassistentin, Schwerpunkt Heilerziehung",
 		"Berufsbezeichnung_w": "Staatlich geprüfte Sozialassistentin, Schwerpunkt Heilerziehung",
-		"Fachgruppe": {
-			"10": "Berufsübergreifender Lernbereich",
-			"20": "Berufsbezogener Lernbereich",
-			"30": "Differenzierungsbereich"
-		},
 		"Fremdsprache": {
 		"Fremdsprache": {
 			"114": "(B1)"
 			"114": "(B1)"
 		}
 		}
@@ -65,11 +45,6 @@
 		"Abschluss": true,
 		"Abschluss": true,
 		"Examen": "Berufsabschlussprüfung",
 		"Examen": "Berufsabschlussprüfung",
 		"Zeugniskopf": "Berufsfachschule für Sozial- und Gesundheitswesen",
 		"Zeugniskopf": "Berufsfachschule für Sozial- und Gesundheitswesen",
-		"Fachgruppe": {
-			"10": "Berufsübergreifender Lernbereich",
-			"20": "Berufsbezogener Lernbereich",
-			"30": "Differenzierungsbereich"
-		},
 		"Fremdsprache": {
 		"Fremdsprache": {
 			"114": "(B1)"
 			"114": "(B1)"
 		}
 		}
@@ -78,11 +53,6 @@
 		"Schulform": "Fachoberschule",
 		"Schulform": "Fachoberschule",
 		"Bereich": "Fachrichtung Gesundheit und Soziales",
 		"Bereich": "Fachrichtung Gesundheit und Soziales",
 		"Zeugniskopf": "Fachoberschule mit dem fachlichen Schwerpunkt Gesundheit und Soziales",
 		"Zeugniskopf": "Fachoberschule mit dem fachlichen Schwerpunkt Gesundheit und Soziales",
-		"Fachgruppe": {
-			"10": "Berufsübergreifender Lernbereich",
-			"20": "Berufsbezogener Lernbereich",
-			"30": "Differenzierungsbereich"
-		},
 		"Fremdsprache": {
 		"Fremdsprache": {
 			"114": "(B2)"
 			"114": "(B2)"
 		}
 		}
@@ -90,18 +60,10 @@
 	"100-102-01": {
 	"100-102-01": {
 		"Schulform": "Fachschule des Sozialwesens",
 		"Schulform": "Fachschule des Sozialwesens",
 		"Bereich": "Fachrichtung Sozialpädagogik",
 		"Bereich": "Fachrichtung Sozialpädagogik",
-		"Fachgruppe": {
-			"10": "Fachrichtungsübergreifender Lernbereich",
-			"20": "Fachrichtungsbezogener Lernbereich",
-			"30": "Differenzierungsbereich"
-		},
 		"Lernbereich": "Bildungsbereiche in der Kinder- und Jugendarbeit",
 		"Lernbereich": "Bildungsbereiche in der Kinder- und Jugendarbeit",
 		"Lernfeld_Lernbereich": "Vertiefung in den Bildungsbereichen",
 		"Lernfeld_Lernbereich": "Vertiefung in den Bildungsbereichen",
 		"Lernfeld_Lernbereich_LF": "Lernfelder",
 		"Lernfeld_Lernbereich_LF": "Lernfelder",
-		"Zeugniskopf": {
-			"2012": "der Fachschule für Sozialwesen in der Fachrichtung Sozialpädagogik",
-			"2013": "Fachschule des Sozialwesens in der Fachrichtung Sozialpädagogik"
-		},
+		"Zeugniskopf": "Fachschule des Sozialwesens in der Fachrichtung Sozialpädagogik",
 		"Fehlstunden": false,
 		"Fehlstunden": false,
 		"Examen": "Fachschulexamen",
 		"Examen": "Fachschulexamen",
 		"Berufsbezeichnung_m": "Staatlich anerkannter Erzieher",
 		"Berufsbezeichnung_m": "Staatlich anerkannter Erzieher",
@@ -113,11 +75,6 @@
 	"100-102-02": {
 	"100-102-02": {
 		"Schulform": "Fachschule des Sozialwesens",
 		"Schulform": "Fachschule des Sozialwesens",
 		"Bereich": "Fachrichtung Sozialpädagogik",
 		"Bereich": "Fachrichtung Sozialpädagogik",
-		"Fachgruppe": {
-			"10": "Fachrichtungsübergreifender Lernbereich",
-			"20": "Fachrichtungsbezogener Lernbereich",
-			"30": "Differenzierungsbereich"
-		},
 		"Lernbereich": "Bildungsbereiche in der Kinder- und Jugendarbeit",
 		"Lernbereich": "Bildungsbereiche in der Kinder- und Jugendarbeit",
 		"Lernfeld_Lernbereich": "Vertiefung in den Bildungsbereichen",
 		"Lernfeld_Lernbereich": "Vertiefung in den Bildungsbereichen",
 		"Lernfeld_Lernbereich_LF": "Lernfelder",
 		"Lernfeld_Lernbereich_LF": "Lernfelder",
@@ -134,11 +91,6 @@
 		"Schulform": "Fachschule des Sozialwesens",
 		"Schulform": "Fachschule des Sozialwesens",
 		"Bereich": "Fachrichtung Sozialpädagogik – praxisintegrierte Form",
 		"Bereich": "Fachrichtung Sozialpädagogik – praxisintegrierte Form",
 		"Zeugniskopf": "der Fachschule für Sozialwesen in der Fachrichtung Sozialpädagogik – praxisintegrierte Form",
 		"Zeugniskopf": "der Fachschule für Sozialwesen in der Fachrichtung Sozialpädagogik – praxisintegrierte Form",
-		"Fachgruppe": {
-			"10": "Fachrichtungsübergreifender Lernbereich",
-			"20": "Fachrichtungsbezogener Lernbereich",
-			"30": "Differenzierungsbereich"
-		},
 		"Lernbereich": "Bildungsbereiche in der Kinder- und Jugendarbeit",
 		"Lernbereich": "Bildungsbereiche in der Kinder- und Jugendarbeit",
 		"Lernfeld_Lernbereich": "Vertiefung in den Bildungsbereichen",
 		"Lernfeld_Lernbereich": "Vertiefung in den Bildungsbereichen",
 		"Lernfeld_Lernbereich_LF": "Lernfelder",
 		"Lernfeld_Lernbereich_LF": "Lernfelder",
@@ -153,11 +105,6 @@
 	"10-101-01": {
 	"10-101-01": {
 		"Schulform": "Fachschule des Sozialwesens",
 		"Schulform": "Fachschule des Sozialwesens",
 		"Bereich": "Fachrichtung Heilerziehungspflege",
 		"Bereich": "Fachrichtung Heilerziehungspflege",
-		"Fachgruppe": {
-			"10": "Fachrichtungsübergreifender Lernbereich",
-			"20": "Fachrichtungsbezogener Lernbereich",
-			"30": "Differenzierungsbereich"
-		},
 		"Lernbereich": "Heilerziehungspflegerische Schwerpunkte",
 		"Lernbereich": "Heilerziehungspflegerische Schwerpunkte",
 		"Zeugniskopf": "Fachschule des Sozialwesens in der Fachrichtung Heilerziehungspflege",
 		"Zeugniskopf": "Fachschule des Sozialwesens in der Fachrichtung Heilerziehungspflege",
 		"Berufsbezeichnung_m": "Staatlich anerkannter Heilerziehungspfleger",
 		"Berufsbezeichnung_m": "Staatlich anerkannter Heilerziehungspfleger",
@@ -171,11 +118,6 @@
 	"10-101-02": {
 	"10-101-02": {
 		"Schulform": "Fachschule des Sozialwesens",
 		"Schulform": "Fachschule des Sozialwesens",
 		"Bereich": "Fachrichtung Heilerziehungspflege",
 		"Bereich": "Fachrichtung Heilerziehungspflege",
-		"Fachgruppe": {
-			"10": "Fachrichtungsübergreifender Lernbereich",
-			"20": "Fachrichtungsbezogener Lernbereich",
-			"30": "Differenzierungsbereich"
-		},
 		"Lernbereich": "Heilerziehungspflegerische Schwerpunkte",
 		"Lernbereich": "Heilerziehungspflegerische Schwerpunkte",
 		"Zeugniskopf": "Fachschule des Sozialwesens in der Fachrichtung Heilerziehungspflege",
 		"Zeugniskopf": "Fachschule des Sozialwesens in der Fachrichtung Heilerziehungspflege",
 		"Fehlstunden": false,
 		"Fehlstunden": false,
@@ -189,11 +131,6 @@
 	"40-101-05": {
 	"40-101-05": {
 		"Schulform": "Fachschule des Sozialwesens",
 		"Schulform": "Fachschule des Sozialwesens",
 		"Bereich": "Fachrichtung Heilerziehungspflege – praxisintegrierte Form",
 		"Bereich": "Fachrichtung Heilerziehungspflege – praxisintegrierte Form",
-		"Fachgruppe": {
-			"10": "Fachrichtungsübergreifender Lernbereich",
-			"20": "Fachrichtungsbezogener Lernbereich",
-			"30": "Differenzierungsbereich"
-		},
 		"Lernbereich": "Heilerziehungspflegerische Schwerpunkte",
 		"Lernbereich": "Heilerziehungspflegerische Schwerpunkte",
 		"Zeugniskopf": "Fachschule des Sozialwesens in der Fachrichtung Heilerziehungspflege",
 		"Zeugniskopf": "Fachschule des Sozialwesens in der Fachrichtung Heilerziehungspflege",
 		"Fehlstunden": false,
 		"Fehlstunden": false,
@@ -207,11 +144,6 @@
 	"210-111-02": {
 	"210-111-02": {
 		"Schulform": "Fachschule des Sozialwesens",
 		"Schulform": "Fachschule des Sozialwesens",
 		"Bereich": "Fachrichtung Heilpädagogik",
 		"Bereich": "Fachrichtung Heilpädagogik",
-		"Fachgruppe": {
-			"10": "Fachrichtungsübergreifender Lernbereich",
-			"20": "Fachrichtungsbezogener Lernbereich",
-			"30": "Differenzierungsbereich"
-		},
 		"Lernbereich": "Methoden in der Heilpädagogik und den Bereichen",
 		"Lernbereich": "Methoden in der Heilpädagogik und den Bereichen",
 		"Lernfeld_Lernbereich": "Vertiefung in den Bildungsbereichen",
 		"Lernfeld_Lernbereich": "Vertiefung in den Bildungsbereichen",
 		"Lernfeld_Lernbereich_LF": "Lernfelder",
 		"Lernfeld_Lernbereich_LF": "Lernfelder",
@@ -225,11 +157,6 @@
 	"10-140-00": {
 	"10-140-00": {
 		"Schulform": "Fachschule des Sozialwesens",
 		"Schulform": "Fachschule des Sozialwesens",
 		"Bereich": "Fachrichtung Heilpädagogik",
 		"Bereich": "Fachrichtung Heilpädagogik",
-		"Fachgruppe": {
-			"10": "Fachrichtungsübergreifender Lernbereich",
-			"20": "Fachrichtungsbezogener Lernbereich",
-			"30": "Differenzierungsbereich"
-		},
 		"Lernbereich": "Methoden in der Heilpädagogik und den Bereichen",
 		"Lernbereich": "Methoden in der Heilpädagogik und den Bereichen",
 		"Lernfeld_Lernbereich": "Vertiefung in den Bildungsbereichen",
 		"Lernfeld_Lernbereich": "Vertiefung in den Bildungsbereichen",
 		"Lernfeld_Lernbereich_LF": "Lernfelder",
 		"Lernfeld_Lernbereich_LF": "Lernfelder",

+ 10 - 3
helfer.js

@@ -2,13 +2,15 @@ import fkl from './daten/fachklassen.json'
 
 
 export const datum = (t) => {
 export const datum = (t) => {
   // gibt ein Datum im deutschen Format zurück
   // gibt ein Datum im deutschen Format zurück
-  return new Date(t).toLocaleDateString('de', {day: '2-digit', month: '2-digit', year: 'numeric'})
+  try {
+    return Date.parse(t).toLocaleDateString('de', {day: '2-digit', month: '2-digit', year: 'numeric'})
+  } catch (e) {console.log(e); return}
 }
 }
 export const versetzungsvermerk = (s, hj, agz=null) => {
 export const versetzungsvermerk = (s, hj, agz=null) => {
   // gibt, wenn vorhanden den passenden Vermerk zurück
   // gibt, wenn vorhanden den passenden Vermerk zurück
   // wenn es ein agz ist und kein Konferenzdatum feststeht
   // wenn es ein agz ist und kein Konferenzdatum feststeht
   if (agz && !hj.Konferenzdatum) return
   if (agz && !hj.Konferenzdatum) return
-  let vermerk
+  let vermerk = ''
   if (hj.Abschnitt === 2 || s.Klasse.startsWith('H')) {
   if (hj.Abschnitt === 2 || s.Klasse.startsWith('H')) {
     switch (hj.VersetzungKrz) {
     switch (hj.VersetzungKrz) {
       case 'N': vermerk = `Nicht versetzt laut Konferenzbeschluss vom ${datum(hj.Konferenzdatum)}`
       case 'N': vermerk = `Nicht versetzt laut Konferenzbeschluss vom ${datum(hj.Konferenzdatum)}`
@@ -23,10 +25,12 @@ export const bemerkungen = (hj) => {
 }
 }
 export const volljaehrigBei = (s, datum) => {
 export const volljaehrigBei = (s, datum) => {
   // gibt an, ob der Schüler *s* zu einem Zeitpunkt *datum* volljährig war
   // gibt an, ob der Schüler *s* zu einem Zeitpunkt *datum* volljährig war
+  try {
   const g = new Date(s.Geburtsdatum)
   const g = new Date(s.Geburtsdatum)
   const d = new Date(datum)
   const d = new Date(datum)
   const volljaehrig = d.getFullYear() - g.getFullYear() - ((d.getMonth() > g.getMonth() || (d.getMonth() == g.getMonth() && d.getDay() >= g.getDay()) ? 0 : 1)) >= 18
   const volljaehrig = d.getFullYear() - g.getFullYear() - ((d.getMonth() > g.getMonth() || (d.getMonth() == g.getMonth() && d.getDay() >= g.getDay()) ? 0 : 1)) >= 18
   return volljaehrig
   return volljaehrig
+  } catch (e) {console.log(e); return}
 }
 }
 export const schulform = (s) => {
 export const schulform = (s) => {
   switch (s.ASDSchulform[0]) {
   switch (s.ASDSchulform[0]) {
@@ -34,5 +38,8 @@ export const schulform = (s) => {
   }
   }
 }
 }
 export const bg = (s,k) => {
 export const bg = (s,k) => {
-  return (fkl[s.fachklasse.Kennung] || fkl.default)[k]
+  if (s.fachklasse && s.fachklasse.Kennung && fkl[s.fachklasse.Kennung]) {
+    return fkl[s.fachklasse.Kennung][k]
+  } else
+  return ''
 }
 }

+ 16 - 0
partials/Fussnoten.html

@@ -1,3 +1,10 @@
+<!-- Allgemeine Fussnoten
+
+Folgende Attribute werden unterstützt:
+schule:     Hier stehen die SchulNr etc drin. Muss mitgegeben werden
+ger:        Wenn der GER für AGZ oder ASZ verwendet werden soll, mitangeben.
+            true|false Standardwert ist false -->
+
 <div class="klein eng">
 <div class="klein eng">
   <Voffset v="2"/>
   <Voffset v="2"/>
   <div class="schulnummer">
   <div class="schulnummer">
@@ -8,6 +15,15 @@
     Notenstufen gemäß § 48 SchulG: 1 = sehr gut, 2 = gut, 3 = befriedigend,
     Notenstufen gemäß § 48 SchulG: 1 = sehr gut, 2 = gut, 3 = befriedigend,
     4 = ausreichend, 5 = mangelhaft, 6 = ungenügend
     4 = ausreichend, 5 = mangelhaft, 6 = ungenügend
     <Voffset v=".5"/>
     <Voffset v=".5"/>
+    {#if ger}
+      <sup>1</sup>Der Unterricht in den modernen Fremdsprachen hat auf der nach dem Fach in
+      Klammern angegebenen Niveaustufe des „Europäischen Referenzrahmens für
+      Sprachen: Lernen, Lehren, Beurteilen“ stattgefunden. Sind zwei
+      Referenzniveaus ausgewiesen, ist das niedrigere in vollem Umfang, das höhere
+      in Anteilen erreicht. Bei mindestens ausreichenden Leistungen wird der
+      sprachliche Kompetenzerwerb auf diesem Niveau bescheinigt.
+      <Voffset v=".5"/>
+    {/if}
     Dem Zeugnis liegen zugrunde: Die Verordnung über die Ausbildung und Prüfung
     Dem Zeugnis liegen zugrunde: Die Verordnung über die Ausbildung und Prüfung
     in den Bildungsgängen des Berufskollegs (Ausbildungs- und Prüfungsordnung
     in den Bildungsgängen des Berufskollegs (Ausbildungs- und Prüfungsordnung
     Berufskolleg, APO-BK) vom 26. Mai 1999 (SGV. NRW. 223/BASS 13 – 33 Nr. 1.1).
     Berufskolleg, APO-BK) vom 26. Mai 1999 (SGV. NRW. 223/BASS 13 – 33 Nr. 1.1).

+ 32 - 14
partials/Noten.html

@@ -12,6 +12,10 @@ noten:    Hier können Abschnittsnoten oder Abschlussnoten gesetzt werden, z.B.
 fachGliederungen: sollten mitgegeben werden, wenn die für verschiedene Bildungsgänge
 fachGliederungen: sollten mitgegeben werden, wenn die für verschiedene Bildungsgänge
           geänderten Werte berücksichtigt werden sollen, z.B. andere Bezeichnungen
           geänderten Werte berücksichtigt werden sollen, z.B. andere Bezeichnungen
           in den verschiedenen Bildungsgängen
           in den verschiedenen Bildungsgängen
+ger:      Wenn ein Referenzniveau für die Fremdsprachen angegeben werden soll
+          true|false, Standardwert false,
+fachklasse: muss mitgegeben werden, wenn aus der Fachklassen.json Datei der Standard-
+          Wert gelesen werden soll. Ansonsten über Lernentw festlegen, was eigetragen wird
 -->
 -->
 
 
 <table class="table-noten">
 <table class="table-noten">
@@ -26,18 +30,26 @@ fachGliederungen: sollten mitgegeben werden, wenn die für verschiedene Bildungs
         <tr><td colspan="2" class="{lernfeld ? '' : 'fach-bezeichnung'}">{lernbereich}</td></tr>
         <tr><td colspan="2" class="{lernfeld ? '' : 'fach-bezeichnung'}">{lernbereich}</td></tr>
       {/if}
       {/if}
       {#each faecher as f (f.ID)}
       {#each faecher as f (f.ID)}
-        <tr>
-          <td class="{lernfeld ? '' : 'fach-bezeichnung'} {lernbereich != faecher[0].fach.Zeugnisbez ? 'lernfeld-lernbereich' : ''}">
-            {#if f.fach.Zeugnisbez.includes("Projekt")}
-              {f.Lernentw}
-            {:else}
-              <!-- Die Zeugnisbezeichnung hat bei gesetzten fachGliederungen einen anderen Namen... -->
-              {f.fach.ZeugnisBez || f.fach.Zeugnisbez}
-            {/if}
-          </td>
-          <!-- Entweder Abschlussnote, wenn gesetzt oder Abschnittsnote oder nix -->
-          <td class="td-fach-note"><span>{f.NoteAbschluss || f.NotenKrz || '–––––'}</span></td>
-        </tr>
+        {#if f.AufZeugnis === '+'}
+          <tr>
+            <td class="{lernfeld ? '' : 'fach-bezeichnung'} {lernbereich != faecher[0].fach.Zeugnisbez ? 'lernfeld-lernbereich' : ''}">
+              {#if f.fach.Zeugnisbez.includes("Projekt")}
+                {f.Lernentw}
+              {:else}
+                <!-- Die Zeugnisbezeichnung hat bei gesetzten fachGliederungen einen anderen Namen... -->
+                {f.fach.ZeugnisBez || f.fach.Zeugnisbez}
+                <!-- Ist ger gesetzt, unter Lernentw nach Eintrag schauen. Wenn dort nichts steht,
+                in der Fachklassen.json nach Einträgen für Fremdsprache und Fach_ID suchen
+                Mit der Fussnote 1 muss natürlich auch tatsächlich eine Fussnote zum GER existieren … -->
+                {#if ger && f.fach.IstSprache === '+'}
+                  {fremdsprache(f, fachklasse)}<sup>1</sup>
+                {/if}
+              {/if}
+            </td>
+            <!-- Entweder Abschlussnote, wenn gesetzt oder Abschnittsnote oder nix -->
+            <td class="td-fach-note"><span>{f.NoteAbschluss || f.NotenKrz || '–––––'}</span></td>
+          </tr>
+        {/if}
       {/each}
       {/each}
     {/each}
     {/each}
     <tr>
     <tr>
@@ -47,13 +59,19 @@ fachGliederungen: sollten mitgegeben werden, wenn die für verschiedene Bildungs
 
 
 <script>
 <script>
   import { gruppenIds } from './gruppenIDs'
   import { gruppenIds } from './gruppenIDs'
+  import fkl from '../daten/fachklassen.json'
   const _ = R.lodash
   const _ = R.lodash
 
 
   export default {
   export default {
     helpers: {
     helpers: {
-      _,
+      _, fkl,
       gruppenbezeichnung: gruppe => gruppenIds[gruppe],
       gruppenbezeichnung: gruppe => gruppenIds[gruppe],
-      lernbereicheUndFaecher: gruppenFaecher => Object.entries(_.groupBy(gruppenFaecher, f => f.fach.Bezeichnung))
+      lernbereicheUndFaecher: gruppenFaecher => Object.entries(_.groupBy(gruppenFaecher, f => f.fach.Bezeichnung)),
+      fremdsprache: (fach, fachklasse) => {
+        try {
+          return fach.Lernentw || fkl[fachklasse]['Fremdsprache'][fach.Fach_ID]
+        } catch (e) { return 'undefined - Sprachniveau fehlt'}
+      }
     },
     },
     computed: {
     computed: {
       faechergruppen: ({ noten, fachGliederungen }) => {
       faechergruppen: ({ noten, fachGliederungen }) => {

+ 5 - 1
partials/Pageheader.html

@@ -1,5 +1,9 @@
 <div class="header">
 <div class="header">
-  <img src="{logo}" style="width: -webkit-fill-available" alt="zeugnis_logo"/>
+  {#if logo}
+    <img src="{logo}" style="width: -webkit-fill-available" alt="zeugnis_logo"/>
+  {:else}
+    <h1><center>Zeugnis</center></h1>
+  {/if}
   <hr class="hr-rot"/>
   <hr class="hr-rot"/>
 </div>
 </div>
 
 

+ 5 - 1
partials/Seitenlogo.html

@@ -1,5 +1,9 @@
 <div class="seitenlogo">
 <div class="seitenlogo">
-  <img src="daten/traeger_logo.svg" height="160px" alt="traeger_logo"/>
+  {#if logo}
+    <img src="{logo}" height="160px" alt="traeger_logo"/>
+  {:else}
+    <h1><center>Logo</center></h1>
+  {/if}
 </div>
 </div>
 
 
 <style>
 <style>

+ 2 - 2
partials/gruppenIDs.js

@@ -1,7 +1,7 @@
 export const gruppenIds = {
 export const gruppenIds = {
-    10:'Berufsübergreifender Bereich',
+    10:'Berufsübergreifender Lernbereich',
     11:'Aufgabenbereich I',
     11:'Aufgabenbereich I',
-    20:'Berufsbezogener Bereich',
+    20:'Berufsbezogener Lernbereich',
     21:'Aufgabenbereich II',
     21:'Aufgabenbereich II',
     25:'Berufsbezogener Bereich (Schwerpunkt)',
     25:'Berufsbezogener Bereich (Schwerpunkt)',
     30:'Differenzierungsbereich',
     30:'Differenzierungsbereich',