AHR Vornoten BA.svelte 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. {#each chunk(schueler, anzahl) as slice, i}
  2. <div class="page grid" orientation="landscape" size="A3">
  3. <div class="header">
  4. <pre>
  5. Konferenzliste APA BK Berufsabschluss <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()}
  6. </pre>
  7. </div>
  8. <div class="main">
  9. {#each slice as s, ii}
  10. <b>{(i*anzahl)+ii+1}. {s.Name}, {s.Vorname}</b>
  11. <div class="flex-grid">
  12. <div class="tabelle">
  13. <table>
  14. {#each zeilen(faecher(s)) as row}
  15. <tr>
  16. {#each row as cell}
  17. <td>{cell}</td>
  18. {/each}
  19. </tr>
  20. {/each}
  21. </table>
  22. </div>
  23. <div class="bemerkungen">
  24. Bermerkungen:
  25. {#each '12345' as i}
  26. <hr>
  27. <Voffset v=2 />
  28. {/each}
  29. </div>
  30. </div>
  31. <Voffset v=1 />
  32. {/each}
  33. </div>
  34. <div class="footer">Seite {i+1}/{Math.ceil(schueler.length/anzahl)}</div>
  35. </div>
  36. {/each}
  37. <script>
  38. import { chunk, punkte2note } from './helfer'
  39. import Voffset from './partials/Voffset.svelte'
  40. export let schueler, klasse
  41. const anzahl = 5
  42. const heute = () => new Date().toLocaleDateString('de', {day: '2-digit', month: '2-digit', year: 'numeric'})
  43. const aktAbschnitt = () => schueler[0].abschnitte.slice(-1)[0]
  44. function faecher (s) {
  45. return s.abi_abschluss_faecher.filter(f => f.fach.Fachgruppe_ID !== 30).sort((a,b) => a.FSortierung - b.FSortierung)
  46. }
  47. function zeilen (faecher) {
  48. const arr = [[''], ['13.1'], ['13.2'], ['VN'], ['SP'], ['BA']]
  49. faecher.forEach(f => {
  50. const anzahlNoten = [f.P13_1, f.P13_2].filter(n => parseInt(n) > 0).length
  51. const vornote = Math.round((parseFloat(f.P13_1 || 0.0) + parseFloat(f.P13_2 || 0.0)) / anzahlNoten)
  52. arr[0].push(f.FachKrz)
  53. arr[1].push(punkte2note(f.P13_1) || '')
  54. arr[2].push(punkte2note(f.P13_2) || '')
  55. arr[3].push(parseInt(punkte2note(vornote)) || '–')
  56. arr[4].push('123'.includes(f.AbiFach) ? (punkte2note(parseInt(f.AbiPruefErgebnis)) || '') : '')
  57. if ('123'.includes(f.AbiFach) && !f.AbiPruefErgebnis) arr[5].push('…')
  58. else arr[5].push(parseInt(punkte2note('123'.includes(f.AbiFach) ? (Math.round((vornote + parseInt(f.AbiPruefErgebnis))/2)) : vornote)))
  59. })
  60. return arr
  61. }
  62. </script>
  63. <style>
  64. @import 'css/main.css';
  65. table {
  66. width: 98%;
  67. border-collapse: collapse;
  68. }
  69. table td {
  70. border: thin solid #ddd;
  71. white-space:nowrap;
  72. text-align: center;
  73. }
  74. .flex-grid {
  75. display: flex;
  76. }
  77. .tabelle {
  78. flex: 65%;
  79. }
  80. .bemerkungen {
  81. flex: 35%;
  82. }
  83. </style>