burningTyger 6 سال پیش
والد
کامیت
355f803bc4
4فایلهای تغییر یافته به همراه289 افزوده شده و 12 حذف شده
  1. 264 0
      Abgangszeugnis BG.html
  2. 8 4
      css/main.css
  3. 15 0
      helfer.js
  4. 2 8
      partials/Noten.html

+ 264 - 0
Abgangszeugnis BG.html

@@ -0,0 +1,264 @@
+{#each schueler as s (s.ID)}
+  {#each s.abschnitte.filter(aktHalbjahr) as hj (hj.ID)}
+    <div class="page grid" orientation="landscape" size="A3">
+      <div class="header">
+        <Seitenlogo logo="daten/traeger_logo.svg"/>
+        <Pageheader logo="daten/agz_logo_ohne_linie_breiter_text_breit.svg"/>
+      </div>
+      <div class="main-grid">
+        <div class="main-left">
+          <div style="font-size: 12pt; line-height: 1.5em">Abgangszeugnis gemäß §13 APO-BK, Anlage D</div>
+          <div style="font-size: 11pt; line-height: 1.2em">Berufliches Gymnasium, {bg(s, 'Bereich')}</div>
+          <Voffset v="0.5"/>
+          {s.anrede} <b>{s.Vorname} {s.Zusatz || ''} {s.Name}</b>, geboren am {datum(s.Geburtsdatum)} in {s.Geburtsort},
+          <br />hat vom {datum(s.Aufnahmedatum)} bis zum {datum(s.Entlassdatum)} den <b>Bildungsgang {bg(s, 'Zeugniskopf')}</b> besucht.
+          <br>{s.Geschlecht === 3 ? 'Er':'Sie'} war zuletzt {s.schueler_in} im {hj.Abschnitt}. Halbjahr der Jahrgangstufe {hj.Jahrgang+10}.
+          <Voffset v="0.5"/>
+          In der Konferenz am {datum(hj.Konferenzdatum)} sind folgende Leistungen festgestellt worden:
+          <table class="table table-bordered table-eng">
+            <tr>
+              <td>Fach</td>
+              <td>Aufg.-<br>feld<sup>2</sup></td>
+              <td>Kurs-<br>Art<sup>3</sup></td>
+              <td colspan="2" class="text-center">12.1<sup>4</sup></td>
+              <td colspan="2" class="text-center">12.2<sup>4</sup></td>
+              <td colspan="2" class="text-center">13.1<sup>4</sup></td>
+              <td colspan="2" class="text-center">13.2<sup>4</sup></td>
+            </tr>
+            <tr>
+              <td colspan="3"></td>
+              <td class="text-center">Note</td>
+              <td class="text-center">Punkte</td>
+              <td class="text-center">Note</td>
+              <td class="text-center">Punkte</td>
+              <td class="text-center">Note</td>
+              <td class="text-center">Punkte</td>
+              <td class="text-center">Note</td>
+              <td class="text-center">Punkte</td>
+            </tr>
+            {#each _.sortBy(s.abi_abschluss_faecher, f => f.FSortierung) as f}
+              <tr>
+                <td>{f.fach.Bezeichnung}
+                  {#if f.fach.IstSprache === '+'}{fremdsprache(f, s.fachklasse.Kennung)}<sup>1</sup>{/if}
+                </td>
+                <td class="text-center">{'I'.repeat(f.fach.Aufgabenfeld)}</td>
+                <td class="text-center">{f.KursartAllg || 'GK'}</td>
+                <td class="text-center">{punkte2note(f.P12_1) || '–'}</td>
+                <td class="text-center">{fhrFach(s, f, '2_1') || '–'}</td>
+                <td class="text-center">{punkte2note(f.P12_2) || '–'}</td>
+                <td class="text-center">{fhrFach(s, f, '2_2') || '–'}</td>
+                <td class="text-center">{punkte2note(f.P13_1) || '–'}</td>
+                <td class="text-center">{fhrFach(s, f, '3_1') || '–'}</td>
+                <td class="text-center">{punkte2note(f.P13_2) || '–'}</td>
+                <td class="text-center">{fhrFach(s, f, '3_2') || '–'}</td>
+              </tr>
+            {/each}
+          </table>
+          <Voffset v="0.5"/>
+          <b>Bemerkungen:
+          <br></b> {@html bemerkungen(hj)}
+        </div>
+        <div class="main-right">
+          <Voffset v="4"/>
+          Die Kurse des letzten Halbjahres gelten als abgeschlossen.
+          <Voffset v="2"/>
+          Dieses Zeugnis gilt in Verbindung mit dem Nachweis über eine
+          abgeschlossene Berufsausbildung oder ein einjähriges gelenktes
+          Praktikum gemäß der Praktikum - Ausbildungsordnung vom 11.12.2006
+          (BASS 13 -31 Nr.1) als Nachweis der Fachhochschulreife. Es
+          berechtigt zum Studium an einer Fachhochschule des Landes
+          Nordrhein-Westfalen. Dieses Zeugnis gilt auch als Nachweis des
+          schulischen Teils der Fachhochschulreife in den Ländern
+          Baden-Württemberg, Berlin, Brandenburg, Bremen, Hamburg, Hessen,
+          Mecklenburg-Vorpommern, Niedersachsen, Rheinland-Pfalz, Saarland,
+          Sachsen-Anhalt, Schleswig-Holstein und Thüringen.
+          <Voffset v="2"/>
+          <table class="table-noten">
+            <tr>
+              <td>Durchschnittsnote:</td>
+              <td class="td-fach-note"><span>{s.fhr_abschluss && s.fhr_abschluss.Note}</span></td>
+              <td>in&nbsp;Worten:</td>
+              <td class="td-fach-note"><span>{s.fhr_abschluss && noteInWorten(s.fhr_abschluss.Note)}</span></td>
+            </tr>
+          </table>
+        </div>
+        <div class="footer-right">
+          <div class="flex-grid">
+            <div class="col-2">
+              {schule.Ort}, den {datum(hj.ZeugnisDatum)}
+            </div>
+            <div class="col text-center klein">
+              <Voffset v="3"/>
+              <hr />
+              {schule.SchulleiterVorname} {schule.SchulleiterName}
+              <br />{schule.schulleiter_in}
+            </div>
+            <div class="col text-center klein">
+              <Voffset v="3"/>
+              Siegel
+            </div>
+            <div class="col text-center klein">
+              <Voffset v="3"/>
+              <hr />
+              {hj.v_name_klassenlehrer}
+              <br />{hj.klassenlehrer_in}
+            </div>
+          </div>
+          <Voffset v="6"/>
+        </div>
+      </div>
+      <div class="footer-grid klein eng">
+        <div class="header">
+          Schulnummer: {schule.SchulNr}
+          <hr />
+        </div>
+        <div class="footer-left">
+          <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 (5 Punkte)
+          wird der sprachliche Kompetenzerwerb auf diesem Niveau bescheinigt.
+          <Voffset v=".5"/>
+          <table>
+            <tr>
+              <td rowspan="4" valign="top" width="5px" ><sup>2</sup> </td>
+              <td width="10px">I</td>
+              <td>= sprachlich literarisches Aufgabenfeld</td>
+              <td rowspan="4" valign="top" width="5px" ><sup>3</sup> </td>
+              <td width="10px">LK</td>
+              <td>= Leistungskurs</td>
+            </tr>
+            <tr>
+              <td>II</td>
+              <td>= gesellschaftswissenschaftliches Aufgabenfeld</td>
+              <td width="10px">GK</td>
+              <td>= Grundkurs</td>
+            </tr>
+            <tr>
+              <td>III</td>
+              <td>= mathematisch-naturwissenschaftlich-technisches Aufgabenfeld</td>
+            </tr>
+          </table>
+          <sup>4</sup> Für die Umsetzung von Noten in Punkte gilt:
+          <table class="table table-bordered table-eng" width="80%">
+            <tr>
+              <td width="5%"></td>
+              {#each ['sehr gut', 'gut', 'befriedigend', 'ausreichend', 'mangelhaft', 'ungenügend'] as n}
+                <td class="text-center" width="10%">{n}</td>
+              {/each}
+            </tr>
+            <tr>
+              <td>Noten</td>
+              {#each [1,2,3,4,5] as i}
+                <td class="text-center">
+                  <div class="flex-grid">
+                    <div class="col">+</div>
+                    <div class="col">{i}</div>
+                    <div class="col">-</div>
+                  </div>
+                </td>
+              {/each}
+              <td class="text-center">6</td>
+            </tr>
+            <tr>
+              <td>Punkte</td>
+              {#each [[15,14,13],[12,11,10],['09','08','07'],['06','05','04'],['03','02','01']] as ii}
+                <td class="text-center">
+                  <div class="flex-grid">
+                    {#each ii as i}
+                      <div class="col">{i}</div>
+                    {/each}
+                  </div>
+                </td>
+              {/each}
+              <td class="text-center">00</td>
+            </tr>
+          </table>
+          <Voffset v=".5"/>
+          <table>
+            <tr>
+              <td width="3%">E1</td>
+              <td width="40%">= Mit besonderem Erfolg teilgenommen</td>
+              <td width="3%">E2</td>
+              <td width="30%">= Mit Erfolg teilgenommen</td>
+              <td width="3%">E3</td>
+              <td width="15%">= Teilgenommen</td>
+            </tr>
+          </table>
+          Die Punkte in Klammern sind nicht in die Durchschnittsnote eingerechnet worden.
+        </div>
+        <div class="footer-right">
+          Dem Zeugnis liegen zugrunde:<br>
+          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).
+          <Voffset v=".5"/>
+          Rechtsbehelfsbelehrung:<br>
+          Gegen dieses Zeugnis kann innerhalb eines Monats
+          nach Bekanntgabe des Zeugnisses Widerspruch eingelegt werden. Der Widerspruch
+          ist beim {schule.Bezeichnung2}, {schule.Strasse}, {schule.PLZ} {schule.Ort},
+          schriftlich oder zur Niederschrift zu erheben. <br />Falls die Frist durch
+          das Verschulden einer/eines Bevollmächtigten versäumt wird, wird dies
+          Verschulden der Widerspruchsführerin/dem Widerspruchsführer zugerechnet.
+        </div>
+      </div>
+    </div>
+  {/each}
+{/each}
+
+<script>
+  import { datum, versetzungsvermerk, volljaehrigBei, bemerkungen, bg, punkte2note, noteInWorten, fremdsprache }  from './helfer'
+  const _ = R.lodash
+
+	export default {
+    components: {
+      Seitenlogo: './partials/Seitenlogo.html',
+      Pageheader: './partials/Pageheader.html',
+      Voffset: './partials/Voffset.html',
+    },
+    helpers: { bg, datum, versetzungsvermerk, volljaehrigBei, bemerkungen, _, punkte2note, noteInWorten, fremdsprache,
+      fhrFach (s, fach, id) {
+        const pid = 'P1' + id
+        if (!fach[pid]) return
+        const fach2 = s.fhr_abschluss_faecher.find(f => f.Fach_ID === fach.Fach_ID)
+        const rsid = 'RSII_' + id
+        return fach2[rsid] === '+' ? fach[pid] : `(${fach[pid]})`
+      }
+    },
+    computed: {
+      aktHalbjahr: ({jahr, abschnitt}) => { return a => a.Jahr === jahr && a.Abschnitt === abschnitt }
+    }
+  }
+</script>
+
+<style>
+  @import 'css/main.css';
+  @import 'css/a3-landscape.css';
+  .table-bordered {
+    border-collapse: collapse; }
+  .table-bordered tr td {
+    border: thin solid #ddd;
+    line-height: 1.3rem }
+  .table-eng {
+    margin-bottom: 0;
+  }
+  .table-noten {
+    width: 70%;
+    border: none;
+    border-collapse: collapse;
+    margin-bottom: 1rem;
+  }
+  .td-fach-note {
+    padding-bottom: .2rem;
+    padding-top: .2rem;
+    width: 12rem;
+  }
+  .td-fach-note span {
+    background-color: #dcdcdc !important;
+    text-align: center;
+    width: 10rem;
+    display: block;
+    margin: 0 auto;
+  }
+</style>

+ 8 - 4
css/main.css

@@ -200,8 +200,8 @@ p {
   display: grid;
   grid-column-gap: 25mm;
   grid-template-columns: 1fr 1fr;
-  grid-template-rows: auto 1fr auto;
-  grid-template-areas: "header-left header-right" "main-left main-right" "footer-left footer-right";
+  grid-template-rows: 1fr auto;
+  grid-template-areas: "main-left main-right" "footer-left footer-right";
 }
 
 .main-left {
@@ -217,8 +217,12 @@ p {
   display: grid;
   grid-column-gap: 25mm;
   grid-template-columns: 1fr 1fr;
-  grid-template-rows: auto;
-  grid-template-areas: "footer-left footer-right";
+  grid-template-rows: 1fr auto;
+  grid-template-areas: "header header" "footer-left footer-right";
+}
+
+.footer-header {
+  grid-area: footer-header;
 }
 
 .footer-left {

+ 15 - 0
helfer.js

@@ -1,6 +1,14 @@
 import fkl from './daten/fachklassen.json'
 const noten = [null, 'sehr gut', 'gut', 'befriedigend', 'ausreichend', 'mangelhaft', 'ungenügend']
 const enoten = {'E1': 'mit besonderem Erfolg teilgenommen', 'E2': 'mit Erfolg teilgenommen', 'E3': 'teilgenommen'}
+const punkte = {
+  15: '1+', 14: '1', 13: '1-',
+  12: '2+', 11: '2', 10: '2-',
+   9: '3+',  8: '3',  7: '3-',
+   6: '4+',  5: '4',  4: '4-',
+   3: '5+',  2: '5',  1: '5-',
+             0: '6'}
+  const zahlwort = {1: "eins",2: "zwei",3: "drei",4: "vier",5: "fünf",6: "sechs",7: "sieben",8: "acht",9: "neun",0: "null"}
 
 export const datum = (t) => {
   // gibt ein Datum im deutschen Format zurück
@@ -46,3 +54,10 @@ export const bg = (s,k) => {
   return ''
 }
 export const note = (note) => noten[parseInt(note)] || enoten[note]
+export const punkte2note = (p) => punkte[parseInt(p)]
+export const noteInWorten = (n) => n.split('').map(n => n === ',' ? '/' : zahlwort[parseInt(n)]).join(' ')
+export const fremdsprache = (fach, fachklasse) => {
+  try {
+    return fach.Lernentw || fkl[fachklasse]['Fremdsprache'][fach.Fach_ID]
+  } catch (e) { return 'undefined - Sprachniveau fehlt'}
+}

+ 2 - 8
partials/Noten.html

@@ -59,20 +59,14 @@ fachklasse: muss mitgegeben werden, wenn aus der Fachklassen.json Datei der Stan
 
 <script>
   import { gruppenIds } from './gruppenIDs'
-  import { note } from '../helfer'
-  import fkl from '../daten/fachklassen.json'
+  import { note, fremdsprache } from '../helfer'
   const _ = R.lodash
 
   export default {
     helpers: {
-      _, fkl, note,
+      _, note, fremdsprache,
       gruppenbezeichnung: gruppe => gruppenIds[gruppe],
       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 }) => {