hmt 5 years ago
parent
commit
f1cd01bb30
5 changed files with 109 additions and 3 deletions
  1. 1 1
      AHR Schullaufbahnbescheinigung.html
  2. 1 1
      Allg HJZ.html
  3. 105 0
      Allg Konferenzliste Punkte.html
  4. 1 0
      helfer.js
  5. 1 1
      partials/Noten.html

+ 1 - 1
AHR Schullaufbahnbescheinigung.html

@@ -227,7 +227,7 @@
   @import 'css/main.css';
   .table-bordered {
     border-collapse: collapse; }
-  .table-bordered tr td {
+  .table-bordered td {
     border: thin solid #ddd;
     line-height: 1.3rem }
   .table-eng {

+ 1 - 1
Allg HJZ.html

@@ -11,7 +11,7 @@
           {bg(s, 'Bereich')}
           {#if s.ASDSchulform.startsWith('B')}
             <br />
-            Abschluss {s.Geschlecht === 3 ? bg(s, 'Berufsbezeichnung_m') : bg(s, 'Berufsbezeichnung_w')}
+            Abschluss {@html s.Geschlecht === 3 ? bg(s, 'Berufsbezeichnung_m') : bg(s, 'Berufsbezeichnung_w')}
           {/if}
         </div>
         <Voffset v="1"/>

+ 105 - 0
Allg Konferenzliste Punkte.html

@@ -0,0 +1,105 @@
+{#each chunk(schueler, anzahl) as slice, i}
+  <div class="page grid" orientation="landscape" size="A3" style="font-size: 1.1rem">
+    <div class="header">
+      <pre>
+        Konferenzliste <b>{klasse.Klasse || schueler[0].Klasse}</b> &Tab; {aktAbschnitt().klassenlehrer_in}: <b>{`${aktAbschnitt().lehrer.Vorname} ${aktAbschnitt().lehrer.Nachname} (${aktAbschnitt().lehrer.Kuerzel})`}</b> &Tab; Stand: {heute()} &Tab; Konferenzdatum: {datum(aktAbschnitt().Konferenzdatum)} &Tab; Zeugnisdatum: {datum(aktAbschnitt().ZeugnisDatum)}
+      </pre>
+    </div>
+    <div class="main">
+      <Voffset v=1/>
+      <table>
+        <tr>
+          <th><b>Nr</b></th>
+          <th><b>Name</b></th>
+          <th class="rotate"><div><span><b>FStd</b></span></div></th>
+          <th class="rotate"><div><span><b>uFStd</b></span></div></th>
+          {#each Array.from(faecher) as f}
+            <th class="rotate"><div><span><b>{f}</b></span></div></th>
+          {/each}
+          <th><b>Bemerkungen</b></th>
+        </tr>
+        <tr><td colspan="2" style="height: 4rem">Bitte abzeichnen</td>{#each Array.from(faecher) as f}<td></td>{/each}<td></td><td></td><td></td></tr>
+        {#each slice as s, ii}
+          {#each s.abschnitte.filter(aktHalbjahr) as hj (hj.ID)}
+            <tr>
+              <td><b>{i*anzahl+ii+1}</b></td>
+              <td><b>{s.Name}, {s.Vorname}</b></td>
+              <td>{hj.SumFehlStd || 0}</td>
+              <td>{hj.SumFehlStdU || 0}</td>
+              {#each Array.from(faecher) as f}
+                {#each [hj.noten.find(n => n.fach.FachKrz === f)||{}] as n}
+                  <td class="text-center" style={note2punkte(n.NotenKrz) < 5 ? 'background:tomato;':''}>
+                    <span class:kreis={n.Warnung==='+'}>{note2punkte(n.NotenKrz) || '–'}</span>
+                  </td>
+                {/each}
+              {/each}
+              <td class="extraklein">{hj.ZeugnisBem || ''}</td>
+            </tr>
+          {/each}
+        {/each}
+      </table>
+    </div>
+    <div class="footer">Seite {i+1}/{Math.ceil(schueler.length/anzahl)}</div>
+  </div>
+{/each}
+
+<script>
+  import { datum, chunk, note2punkte }  from './helfer'
+
+  import Voffset from './partials/Voffset.html'
+
+  export let schueler, schule, privat, jahr, abschnitt, klasse
+  const aktHalbjahr = (a) => a.Jahr === jahr && a.Abschnitt === abschnitt
+  const heute = () => new Date().toLocaleDateString('de', {day: '2-digit', month: '2-digit', year: 'numeric'})
+  const anzahl = 25
+  const aktAbschnitt = () => schueler[0].abschnitte.slice(-1)[0]
+  const faecher = new Set
+  schueler.forEach(s => s.abschnitte.find(aktHalbjahr).noten.forEach(n => {faecher.add(n.fach.FachKrz)}))
+</script>
+
+<style>
+  @import 'css/main.css';
+  @import 'css/a3-landscape.css';
+  table {
+    border-collapse: collapse;
+    width:auto;
+  }
+  table td {
+    border: thin solid #ddd;
+    line-height: 1.3rem;
+    padding: 9px;
+    white-space:nowrap;
+  }
+  table td.extraklein {
+    font-size: .6rem;
+    white-space:pre-wrap;
+    word-wrap:break-word;
+    vertical-align: top;
+    padding: 1px;
+  }
+  table td:last-child {
+    width: 100%;
+  }
+  th.rotate {
+    height: 30px;
+    white-space: nowrap;
+  }
+  th.rotate > div {
+    transform:
+      translate(20px, -3px)
+      rotate(315deg);
+    box-sizing: border-box;
+  }
+  th.rotate > div > span {
+    border-bottom: 1px solid #ccc;
+    width: 30px;
+    transform-origin: left bottom;
+    display: inline-block
+  }
+  .kreis {
+    border: 0.2rem solid red;
+    border-radius: 20%;
+    padding: 0.2rem;
+  }
+
+</style>

+ 1 - 0
helfer.js

@@ -59,6 +59,7 @@ export const schulform = (s) => {
 export const bg = (s, k) => s.fachklasse && s.fachklasse.Kennung && fkl[s.fachklasse.Kennung] ? fkl[s.fachklasse.Kennung][k] : ''
 export const note = (note) => noten[parseInt(note)] || enoten[note]
 export const punkte2note = (p) => punkte[parseInt(p)]
+export const note2punkte = (n) => Object.keys(punkte).find(k=>punkte[k]===n);
 export const noteInWorten = (n) => n && n.split('').map(n => n === ',' ? '/' : zahlwort[parseInt(n)]).join(' ')
 export const fremdsprache = (fach, fachklasse) => {
   try {

+ 1 - 1
partials/Noten.html

@@ -118,7 +118,7 @@ berufsbezogenZuerst: Diese Einstellung legt fest, dass die gen. Fächer zuerst a
       gruppiert.delete(20)
       gruppenIds[0] = gruppenIds[20]
     }
-    return [...gruppiert.entries()].sort((a,b) => a[0] > b[0])
+    return [...gruppiert.entries()].sort((a,b) => a[0] - b[0])
   }
   const gruppenbezeichnung = gruppe => gruppenIds[gruppe]
   const lernbereicheUndFaecher = gruppenFaecher => [...groupBy(gruppenFaecher, 'fach.Bezeichnung').entries()].reverse()