Browse Source

Zeige nichtbelegte Fächer

hmt 3 years ago
parent
commit
ccb0b9d98d
2 changed files with 138 additions and 73 deletions
  1. 69 36
      Allg Konferenzliste Punkte.svelte
  2. 69 37
      Allg Konferenzliste.svelte

+ 69 - 36
Allg Konferenzliste Punkte.svelte

@@ -1,12 +1,47 @@
+<script>
+  import { datum, chunk, note2punkte } from "./helfer";
+
+  import Voffset from "./partials/Voffset.svelte";
+
+  export let schueler, 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>
+
 {#each chunk(schueler, anzahl) as slice, i}
 {#each chunk(schueler, anzahl) as slice, i}
-  <div class="page grid" orientation="landscape" size="A3" style="font-size: 1.1rem">
+  <div
+    class="page grid"
+    orientation="landscape"
+    size="A3"
+    style="font-size: 1rem"
+  >
     <div class="header">
     <div class="header">
       <pre>
       <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)}
+        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>
       </pre>
     </div>
     </div>
     <div class="main">
     <div class="main">
-      <Voffset v=1/>
+      <Voffset v="1" />
       <table>
       <table>
         <tr>
         <tr>
           <th><b>Nr</b></th>
           <th><b>Nr</b></th>
@@ -18,61 +53,62 @@
           {/each}
           {/each}
           <th><b>Bemerkungen</b></th>
           <th><b>Bemerkungen</b></th>
         </tr>
         </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>
+        <tr
+          ><td colspan="2" style="height: 4rem">Bitte abzeichnen</td
+          >{#each Array.from(faecher) as f}<td />{/each}<td /><td /><td /></tr
+        >
         {#each slice as s, ii}
         {#each slice as s, ii}
           {#each s.abschnitte.filter(aktHalbjahr) as hj (hj.ID)}
           {#each s.abschnitte.filter(aktHalbjahr) as hj (hj.ID)}
             <tr>
             <tr>
-              <td><b>{i*anzahl+ii+1}</b></td>
+              <td><b>{i * anzahl + ii + 1}</b></td>
               <td><b>{s.Name}, {s.Vorname}</b></td>
               <td><b>{s.Name}, {s.Vorname}</b></td>
               <td>{hj.SumFehlStd || 0}</td>
               <td>{hj.SumFehlStd || 0}</td>
               <td>{hj.SumFehlStdU || 0}</td>
               <td>{hj.SumFehlStdU || 0}</td>
               {#each Array.from(faecher) as f}
               {#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 [hj.noten.find((n) => n.fach.FachKrz === f)] as n}
+                  {#if n}
+                    <td
+                      class="text-center"
+                      style={note2punkte(n.NotenKrz) < 5
+                        ? "background:tomato;"
+                        : ""}
+                    >
+                      <span class:kreis={n.Warnung === "+"}
+                        >{note2punkte(n.NotenKrz) || "–"}</span
+                      >
+                    </td>
+                  {:else}<td style="background: lightgrey" />
+                  {/if}
                 {/each}
                 {/each}
               {/each}
               {/each}
-              <td class="extraklein">{hj.ZeugnisBem || ''}</td>
+              <td class="extraklein">{hj.ZeugnisBem || ""}</td>
             </tr>
             </tr>
           {/each}
           {/each}
         {/each}
         {/each}
       </table>
       </table>
     </div>
     </div>
-    <div class="footer">Seite {i+1}/{Math.ceil(schueler.length/anzahl)}</div>
+    <div class="footer">
+      Seite {i + 1}/{Math.ceil(schueler.length / anzahl)}
+    </div>
   </div>
   </div>
 {/each}
 {/each}
 
 
-<script>
-  import { datum, chunk, note2punkte }  from './helfer'
-
-  import Voffset from './partials/Voffset.svelte'
-
-  export let schueler, 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>
 <style>
-  @import 'css/main.css';
+  @import "css/main.css";
   table {
   table {
     border-collapse: collapse;
     border-collapse: collapse;
-    width:auto;
+    width: auto;
   }
   }
   table td {
   table td {
     border: thin solid #ddd;
     border: thin solid #ddd;
     line-height: 1.3rem;
     line-height: 1.3rem;
     padding: 9px;
     padding: 9px;
-    white-space:nowrap;
+    white-space: nowrap;
   }
   }
   table td.extraklein {
   table td.extraklein {
-    font-size: .6rem;
-    white-space:pre-wrap;
-    word-wrap:break-word;
+    font-size: 0.6rem;
+    white-space: pre-wrap;
+    word-wrap: break-word;
     vertical-align: top;
     vertical-align: top;
     padding: 1px;
     padding: 1px;
   }
   }
@@ -84,21 +120,18 @@
     white-space: nowrap;
     white-space: nowrap;
   }
   }
   th.rotate > div {
   th.rotate > div {
-    transform:
-      translate(20px, -3px)
-      rotate(315deg);
+    transform: translate(20px, -3px) rotate(315deg);
     box-sizing: border-box;
     box-sizing: border-box;
   }
   }
   th.rotate > div > span {
   th.rotate > div > span {
     border-bottom: 1px solid #ccc;
     border-bottom: 1px solid #ccc;
     width: 30px;
     width: 30px;
     transform-origin: left bottom;
     transform-origin: left bottom;
-    display: inline-block
+    display: inline-block;
   }
   }
   .kreis {
   .kreis {
     border: 0.2rem solid red;
     border: 0.2rem solid red;
     border-radius: 20%;
     border-radius: 20%;
     padding: 0.2rem;
     padding: 0.2rem;
   }
   }
-
 </style>
 </style>

+ 69 - 37
Allg Konferenzliste.svelte

@@ -1,12 +1,47 @@
+<script>
+  import { datum, chunk } from "./helfer";
+
+  import Voffset from "./partials/Voffset.svelte";
+
+  export let schueler, 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>
+
 {#each chunk(schueler, anzahl) as slice, i}
 {#each chunk(schueler, anzahl) as slice, i}
-  <div class="page grid" orientation="landscape" size="A3" style="font-size: 1.1rem">
+  <div
+    class="page grid"
+    orientation="landscape"
+    size="A3"
+    style="font-size: 1.0rem"
+  >
     <div class="header">
     <div class="header">
       <pre>
       <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)}
+        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>
       </pre>
     </div>
     </div>
     <div class="main">
     <div class="main">
-      <Voffset v=1/>
+      <Voffset v="1" />
       <table>
       <table>
         <tr>
         <tr>
           <th><b>Nr</b></th>
           <th><b>Nr</b></th>
@@ -18,61 +53,62 @@
           {/each}
           {/each}
           <th><b>Bemerkungen</b></th>
           <th><b>Bemerkungen</b></th>
         </tr>
         </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>
+        <tr
+          ><td colspan="2" style="height: 4rem">Bitte abzeichnen</td
+          >{#each Array.from(faecher) as f}<td />{/each}<td /><td /><td /></tr
+        >
         {#each slice as s, ii}
         {#each slice as s, ii}
           {#each s.abschnitte.filter(aktHalbjahr) as hj (hj.ID)}
           {#each s.abschnitte.filter(aktHalbjahr) as hj (hj.ID)}
             <tr>
             <tr>
-              <td><b>{i*anzahl+ii+1}</b></td>
+              <td><b>{i * anzahl + ii + 1}</b></td>
               <td><b>{s.Name}, {s.Vorname}</b></td>
               <td><b>{s.Name}, {s.Vorname}</b></td>
               <td>{hj.SumFehlStd || 0}</td>
               <td>{hj.SumFehlStd || 0}</td>
               <td>{hj.SumFehlStdU || 0}</td>
               <td>{hj.SumFehlStdU || 0}</td>
               {#each Array.from(faecher) as f}
               {#each Array.from(faecher) as f}
-                {#each [hj.noten.find(n => n.fach.FachKrz === f)||{}] as n}
-                  <td class="text-center" style={parseInt(n.NotenKrz) > 4 ? 'background:tomato;':''}>
-                    <span class:kreis={n.Warnung==='+'}>{n.NotenKrz || '–'}</span>
-                  </td>
+                {#each [hj.noten.find((n) => n.fach.FachKrz === f)] as n}
+                  {#if n}
+                    <td
+                      class="text-center"
+                      style={parseInt(n.NotenKrz) > 4
+                        ? "background:tomato;"
+                        : ""}
+                    >
+                      <span class:kreis={n.Warnung === "+"}
+                        >{n.NotenKrz || "–"}</span
+                      >
+                    </td>
+                  {:else}<td style="background: lightgrey" />
+                  {/if}
                 {/each}
                 {/each}
               {/each}
               {/each}
-              <td class="extraklein">{hj.ZeugnisBem || ''}</td>
+              <td class="extraklein">{hj.ZeugnisBem || ""}</td>
             </tr>
             </tr>
           {/each}
           {/each}
         {/each}
         {/each}
       </table>
       </table>
     </div>
     </div>
-    <div class="footer">Seite {i+1}/{Math.ceil(schueler.length/anzahl)}</div>
+    <div class="footer">
+      Seite {i + 1}/{Math.ceil(schueler.length / anzahl)}
+    </div>
   </div>
   </div>
 {/each}
 {/each}
 
 
-<script>
-  import { datum, chunk }  from './helfer'
-
-  import Voffset from './partials/Voffset.svelte'
-
-  export let schueler, 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>
 <style>
-  @import 'css/main.css';
+  @import "css/main.css";
   table {
   table {
     border-collapse: collapse;
     border-collapse: collapse;
-    width:auto;
+    width: auto;
   }
   }
   table td {
   table td {
     border: thin solid #ddd;
     border: thin solid #ddd;
     line-height: 1.3rem;
     line-height: 1.3rem;
     padding: 9px;
     padding: 9px;
-    white-space:nowrap;
+    white-space: nowrap;
   }
   }
   table td.extraklein {
   table td.extraklein {
-    font-size: .6rem;
-    white-space:pre-wrap;
-    word-wrap:break-word;
+    font-size: 0.6rem;
+    white-space: pre-wrap;
+    word-wrap: break-word;
     vertical-align: top;
     vertical-align: top;
     padding: 1px;
     padding: 1px;
   }
   }
@@ -84,22 +120,18 @@
     white-space: nowrap;
     white-space: nowrap;
   }
   }
   th.rotate > div {
   th.rotate > div {
-    transform:
-      translate(20px, -3px)
-      rotate(315deg);
+    transform: translate(20px, -3px) rotate(315deg);
     box-sizing: border-box;
     box-sizing: border-box;
   }
   }
   th.rotate > div > span {
   th.rotate > div > span {
     border-bottom: 1px solid #ccc;
     border-bottom: 1px solid #ccc;
     width: 30px;
     width: 30px;
     transform-origin: left bottom;
     transform-origin: left bottom;
-    display: inline-block
+    display: inline-block;
   }
   }
   .kreis {
   .kreis {
     border: 0.2rem solid red;
     border: 0.2rem solid red;
     border-radius: 20%;
     border-radius: 20%;
     padding: 0.2rem;
     padding: 0.2rem;
   }
   }
-
 </style>
 </style>
-