Noten.html 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <!--
  2. Allgemeine Notentabelle für Berufskollegs, die z.B. die etwas langtextigen
  3. Lernfeldfächer unterstützt oder verschiedene Abschlussnoten.
  4. Folgende Attribute werden unterstützt:
  5. lernfeld: Sorgt dafür, dass die Klasse `fach-bezeichnung` nicht gesetzt wird und
  6. Fächer dementsprechend nicht eingerückt werden (nur Lernfeldfächer)
  7. true|false Standardwert false
  8. noten: Hier können Abschnittsnoten oder Abschlussnoten gesetzt werden, z.B.
  9. hj.noten oder s.bk_abschluss_faecher oder s.fhr_abschluss_faecher
  10. Muss gesetzt werden
  11. fachGliederungen: sollten mitgegeben werden, wenn die für verschiedene Bildungsgänge
  12. geänderten Werte berücksichtigt werden sollen, z.B. andere Bezeichnungen
  13. in den verschiedenen Bildungsgängen
  14. -->
  15. <table class="table-noten">
  16. {#each faechergruppen as [gruppen_id, gruppenFaecher]}
  17. <tr>
  18. <td class="fachgruppe-margin">
  19. <b>{gruppenbezeichnung(gruppen_id)}</b>
  20. </td>
  21. </tr>
  22. {#each lernbereicheUndFaecher(gruppenFaecher) as [lernbereich, faecher]}
  23. {#if lernbereich != faecher[0].fach.Zeugnisbez}
  24. <tr><td colspan="2" class="{lernfeld ? '' : 'fach-bezeichnung'}">{lernbereich}</td></tr>
  25. {/if}
  26. {#each faecher as f (f.ID)}
  27. <tr>
  28. <td class="{lernfeld ? '' : 'fach-bezeichnung'} {lernbereich != faecher[0].fach.Zeugnisbez ? 'lernfeld-lernbereich' : ''}">
  29. {#if f.fach.Zeugnisbez.includes("Projekt")}
  30. {f.Lernentw}
  31. {:else}
  32. <!-- Die Zeugnisbezeichnung hat bei gesetzten fachGliederungen einen anderen Namen... -->
  33. {f.fach.ZeugnisBez || f.fach.Zeugnisbez}
  34. {/if}
  35. </td>
  36. <!-- Entweder Abschlussnote, wenn gesetzt oder Abschnittsnote oder nix -->
  37. <td class="td-fach-note"><span>{f.NoteAbschluss || f.NotenKrz || '–––––'}</span></td>
  38. </tr>
  39. {/each}
  40. {/each}
  41. <tr>
  42. </tr>
  43. {/each}
  44. </table>
  45. <script>
  46. import { gruppenIds } from './gruppenIDs'
  47. const _ = R.lodash
  48. export default {
  49. helpers: {
  50. _,
  51. gruppenbezeichnung: gruppe => gruppenIds[gruppe],
  52. lernbereicheUndFaecher: gruppenFaecher => Object.entries(_.groupBy(gruppenFaecher, f => f.fach.Bezeichnung))
  53. },
  54. computed: {
  55. faechergruppen: ({ noten, fachGliederungen }) => {
  56. // noten werden im jeweiligen Dokument über das *noten*-Attribut mitgegeben.
  57. // z.B. die Abschnittsnote oder die Noten aus *s.bk_abschluss_faecher* und co.
  58. // Nutzer über Konsole auf Änderungen in den Fächern hinweisen
  59. if (fachGliederungen && fachGliederungen.length > 0) console.log('Es wurden Fachgliederungswerte gesetzt: ', fachGliederungen)
  60. // suche in den fachGliederungen, ob für die jeweilige Fachklasse was besonderes festgelegt wurde
  61. // vorausgesetzt, fachGliederungen wurde mitgegeben
  62. const faecher = fachGliederungen
  63. ? noten.map(f => {return {...f, fach: Object.assign(f.fach, fachGliederungen.find(fg => fg.Fach_ID === f.Fach_ID))}})
  64. : noten
  65. // erstmal alle Fächer sortieren in der passenden Reihenfolge,
  66. // dann nach Fachgruppe gruppieren
  67. return Object.entries(_.groupBy(_.sortBy(faecher, f => f.fach.SortierungS2), f => f.fach.Fachgruppe_ID))
  68. },
  69. // Berufsbezogen kommt neuerdings zuerst, dann berufsübergreifend
  70. // wenn aber nur eine Note vermerkt ist, dann normal zurück
  71. faechergruppenUmsortiert: ({ faechergruppen }) => faechergruppen.length > 1
  72. ? [faechergruppen[0], faechergruppen[1]] = [faechergruppen[1], faechergruppen[0]]
  73. : faechergruppen
  74. }
  75. }
  76. </script>
  77. <style>
  78. .table-noten {
  79. width: 100%;
  80. border: none;
  81. border-collapse: collapse;
  82. margin-bottom: 1rem;
  83. }
  84. .fach-bezeichnung {
  85. padding-left: 10mm;
  86. }
  87. .td-fach-note {
  88. padding-bottom: .2rem;
  89. padding-top: .2rem;
  90. width: 12rem;
  91. }
  92. .td-fach-note span {
  93. background-color: #dcdcdc !important;
  94. text-align: center;
  95. width: 10rem;
  96. display: block;
  97. margin: 0 auto;
  98. }
  99. /*.td-fach-note span.e-note {
  100. background-color: white !important;
  101. width: 17rem;
  102. margin: 0;
  103. }*/
  104. .fachgruppe-margin {
  105. padding-top: 0.3rem;
  106. }
  107. .lernfeld-lernbereich {
  108. padding-left: 2rem;
  109. padding-bottom: 0;
  110. }
  111. .lernbereich {
  112. padding-left: 20mm;
  113. }
  114. </style>