|
@@ -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> 	 {aktAbschnitt().klassenlehrer_in}: <b>{`${aktAbschnitt().lehrer?.Vorname} ${aktAbschnitt().lehrer?.Nachname} (${aktAbschnitt().lehrer?.Kuerzel})`}</b> 	 Stand: {heute()} 	 Konferenzdatum: {datum(aktAbschnitt().Konferenzdatum)} 	 Zeugnisdatum: {datum(aktAbschnitt().ZeugnisDatum)}
|
|
|
|
|
|
+ Konferenzliste <b>{klasse.Klasse || schueler[0].Klasse}</b
|
|
|
|
+ > 	 {aktAbschnitt().klassenlehrer_in}: <b
|
|
|
|
+ >{`${aktAbschnitt().lehrer?.Vorname} ${
|
|
|
|
+ aktAbschnitt().lehrer?.Nachname
|
|
|
|
+ } (${aktAbschnitt().lehrer?.Kuerzel})`}</b
|
|
|
|
+ > 	 Stand: {heute()} 	 Konferenzdatum: {datum(
|
|
|
|
+ aktAbschnitt().Konferenzdatum
|
|
|
|
+ )} 	 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>
|