burningTyger 6 năm trước cách đây
mục cha
commit
1e7125dacd

+ 1 - 1
ASZ Fachschule.html

@@ -19,7 +19,7 @@
               <Noten noten={hj.noten}></Noten>
             </div>
             <hr />
-            <b>Bemerkungen</b><br />{bemerkungen(hj)}
+            <b>Bemerkungen</b><br />{@html bemerkungen(hj)}
           </div>
           <div class="main-right">
             {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}.
         <Voffset v="2"/>
         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 />
         {#if !s.ASDSchulform.startsWith('E')}
           Fehlstunden: {Number(hj.SumFehlStd) || 0}
@@ -33,9 +38,9 @@
           {/if}
         {/if}
         <Voffset v="1"/>
-        <b>{versetzungsvermerk(s,hj)}</b>
+        <b>{versetzungsvermerk(s,hj, true)}</b>
         <Voffset v="1"/>
-        <b>Bemerkungen</b><br />{bemerkungen(hj)}
+        <b>Bemerkungen</b><br />{@html bemerkungen(hj)}
       </div>
       <div class="footer">
         <div class="flex-grid">
@@ -73,7 +78,7 @@
             </div>
           {/if}
         </div>
-        <Fussnote schule={schule}></Fussnote>
+        <Fussnote schule={schule} ger></Fussnote>
       </div>
     </div>
   {/each}

+ 2 - 6
Halbjahreszeugnis LF.html

@@ -20,13 +20,9 @@
           <Noten lernfeld noten={hj.noten} fachGliederungen={s.fachklasse.fach_gliederungen}></Noten>
         </div>
         <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"/>
-        <b>Bemerkungen</b><br />{bemerkungen(hj)}
+        <b>Bemerkungen</b><br />{@html bemerkungen(hj)}
       </div>
       <div class="footer">
         <div class="flex-grid">

+ 2 - 6
Halbjahreszeugnis.html

@@ -22,13 +22,9 @@
         Leistungen laut Konferenzbeschluss vom {datum(hj.Konferenzdatum)}:
         <Noten noten={hj.noten} fachGliederungen={s.fachklasse.fach_gliederungen}></Noten>
         <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"/>
-        <b>Bemerkungen</b><br />{bemerkungen(hj)}
+        <b>Bemerkungen</b><br />{@html bemerkungen(hj)}
       </div>
       <div class="footer">
         <div class="flex-grid">

+ 1 - 1
Jahreszeugnis.html

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

+ 1 - 1
Schullaufbahnbescheinigung AHR.html

@@ -70,7 +70,7 @@
           Abiturprüfung und zur Berufsabschlussprüfung gefährdet wird.
         {/if}
         <Voffset v="0.5"/>
-        <b>Bemerkungen:</b> {bemerkungen(hj)}
+        <b>Bemerkungen:</b> {@html bemerkungen(hj)}
       </div>
       <div class="footer">
         <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: a4landscape; */
   width: 296.8mm;
-  height: 210mm;
+  height: 209mm;
 }
 /* @page a4landscape {
   margin: 0;

+ 2 - 75
daten/fachklassen.json

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

+ 10 - 3
helfer.js

@@ -2,13 +2,15 @@ import fkl from './daten/fachklassen.json'
 
 export const datum = (t) => {
   // 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) => {
   // gibt, wenn vorhanden den passenden Vermerk zurück
   // wenn es ein agz ist und kein Konferenzdatum feststeht
   if (agz && !hj.Konferenzdatum) return
-  let vermerk
+  let vermerk = ''
   if (hj.Abschnitt === 2 || s.Klasse.startsWith('H')) {
     switch (hj.VersetzungKrz) {
       case 'N': vermerk = `Nicht versetzt laut Konferenzbeschluss vom ${datum(hj.Konferenzdatum)}`
@@ -23,10 +25,12 @@ export const bemerkungen = (hj) => {
 }
 export const volljaehrigBei = (s, datum) => {
   // gibt an, ob der Schüler *s* zu einem Zeitpunkt *datum* volljährig war
+  try {
   const g = new Date(s.Geburtsdatum)
   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
   return volljaehrig
+  } catch (e) {console.log(e); return}
 }
 export const schulform = (s) => {
   switch (s.ASDSchulform[0]) {
@@ -34,5 +38,8 @@ export const schulform = (s) => {
   }
 }
 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">
   <Voffset v="2"/>
   <div class="schulnummer">
@@ -8,6 +15,15 @@
     Notenstufen gemäß § 48 SchulG: 1 = sehr gut, 2 = gut, 3 = befriedigend,
     4 = ausreichend, 5 = mangelhaft, 6 = ungenügend
     <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
     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).

+ 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
           geänderten Werte berücksichtigt werden sollen, z.B. andere Bezeichnungen
           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">
@@ -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>
       {/if}
       {#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}
     <tr>
@@ -47,13 +59,19 @@ fachGliederungen: sollten mitgegeben werden, wenn die für verschiedene Bildungs
 
 <script>
   import { gruppenIds } from './gruppenIDs'
+  import fkl from '../daten/fachklassen.json'
   const _ = R.lodash
 
   export default {
     helpers: {
-      _,
+      _, fkl,
       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: {
       faechergruppen: ({ noten, fachGliederungen }) => {

+ 5 - 1
partials/Pageheader.html

@@ -1,5 +1,9 @@
 <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"/>
 </div>
 

+ 5 - 1
partials/Seitenlogo.html

@@ -1,5 +1,9 @@
 <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>
 
 <style>

+ 2 - 2
partials/gruppenIDs.js

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