Notenliste.html 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. {#each _.chunk(schueler, anzahl) as slice, i}
  2. <div class="page grid" orientation="landscape" size="A4">
  3. <div class="header">
  4. <b>Notenliste der {schueler[0].Klasse} – Stand {heute}</b>
  5. </div>
  6. <div class="main">
  7. <Voffset v=1/>
  8. <table class="table-bordered">
  9. <tr>
  10. <td><b>Nr</b></td><td><b>Name</b></td>
  11. {#each Array.from(faecher) as f}
  12. <td class="text-center"><b>{f}</b></td>
  13. {/each}
  14. </tr>
  15. {#each slice as s, ii}
  16. <tr>
  17. <td><b>{i*10+ii+1}</b></td>
  18. <td><b>{s.Name}, {s.Vorname}</b></td>
  19. {#each Object.entries(noten) as [fach, noten]}
  20. <td class="text-center" style={parseInt(noten[i*anzahl+ii]) > 4 ? 'background:tomato;':''}>{noten[i*anzahl+ii]}</td>
  21. {/each}
  22. </tr>
  23. {/each}
  24. </table>
  25. </div>
  26. <div class="footer">Seite {i+1}/{Math.ceil(schueler.length/anzahl)}</div>
  27. </div>
  28. {/each}
  29. <script>
  30. const _ = R.lodash
  31. export default {
  32. data () {
  33. return {
  34. anzahl: 20,
  35. heute: new Date().toLocaleDateString('de', {day: '2-digit', month: '2-digit', year: 'numeric'})
  36. }
  37. },
  38. computed: {
  39. aktHalbjahr: ({jahr, abschnitt}) => { return a => a.Jahr === jahr && a.Abschnitt === abschnitt },
  40. faecher: ({schueler, aktHalbjahr}) => {
  41. let faecher = new Set
  42. schueler.forEach(s => s.abschnitte.find(aktHalbjahr).noten.forEach(n => {faecher.add(n.fach.FachKrz)}))
  43. return faecher
  44. },
  45. noten: ({schueler, faecher, aktHalbjahr}) => {
  46. let noten = {}
  47. faecher.forEach(f => {noten[f] = []})
  48. schueler.forEach(s => s.abschnitte.find(aktHalbjahr).noten.forEach(n => noten[n.fach.FachKrz].push(n.NotenKrz || "–")))
  49. return noten
  50. }
  51. },
  52. helpers: { _ },
  53. components: {
  54. Voffset: './partials/Voffset.html'
  55. }
  56. }
  57. </script>
  58. <style>
  59. @import 'css/main.css';
  60. @import 'css/a4-landscape.css';
  61. .table-bordered {
  62. border-collapse: collapse; }
  63. .table-bordered tr td {
  64. border: thin solid #ddd;
  65. line-height: 1.3rem }
  66. </style>