-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrenderer.js
More file actions
125 lines (110 loc) · 7.35 KB
/
Copy pathrenderer.js
File metadata and controls
125 lines (110 loc) · 7.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
document.addEventListener("DOMContentLoaded", () => {
const formular = document.getElementById("notenFormular");
const ergebnisDiv = document.getElementById("ergebnis");
formular.addEventListener("submit", (e) => {
e.preventDefault();
// Verbesserte Eingabefeld-Verarbeitung
const unterrichtInput = document.getElementById("unterrichtsnote").value.trim();
const schriftlichInput = document.getElementById("schriftlich").value.trim();
const muendlichInput = document.getElementById("muendlich").value.trim();
const unterrichtsnote = unterrichtInput !== "" ? parseFloat(unterrichtInput) : NaN;
const schriftlich = schriftlichInput !== "" ? parseFloat(schriftlichInput) : NaN;
const muendlich = muendlichInput !== "" ? parseFloat(muendlichInput) : NaN;
if (isNaN(unterrichtsnote)) {
ergebnisDiv.innerHTML = "<div class='alert alert-danger'>Bitte die Unterrichtsnote eingeben.</div>";
return;
}
let ausgabeHTML = "";
if (!isNaN(schriftlich) && !isNaN(muendlich)) {
const fachnote = ((3 * unterrichtsnote) + (2 * schriftlich) + muendlich) / 6;
ausgabeHTML += "<div class='alert alert-info'><strong>Fachnote:</strong> " + fachnote.toFixed(2) +
" Punkte (gerundet: " + Math.round(fachnote) + ")" +
"<br><small>Berechnung: (3×Unterricht + 2×schriftlich + 1×mündlich) / 6</small>" +
"<br><small class='text-secondary'>Gemäß § 26 VOFOS: \"In Fächern, in denen sowohl schriftlich als auch mündlich geprüft wurde, ist die Unterrichtsleistung dreifach, die schriftliche Prüfungsleistung zweifach und die mündliche Prüfungsleistung einfach zu gewichten.\"</small></div>";
} else if (!isNaN(schriftlich) && isNaN(muendlich)) {
const fachnote = (unterrichtsnote + schriftlich) / 2;
const aktuelleNote = Math.round(fachnote);
ausgabeHTML += "<div class='alert alert-info'><strong>Fachnote ohne mündliche Prüfung:</strong> " + fachnote.toFixed(2) +
" Punkte (gerundet: " + aktuelleNote + ")" +
"<br><small>Berechnung: (Unterricht + schriftlich) / 2</small>" +
"<br><small class='text-secondary'>Gemäß § 26 VOFOS: \"In Fächern, in denen nur schriftlich geprüft wurde, sind Unterrichtsleistung und schriftliche Prüfungsleistung gleichgewichtet. In Zweifelsfällen überwiegt die Unterrichtsleistung.\"</small></div>";
// Simulation mit mündlichen Noten
ausgabeHTML += "<h5 class='mt-4'>Simulation: Mögliche Fachnoten bei mündlicher Prüfung</h5>";
// Hinzugefügter Hinweis zur Simulation
ausgabeHTML += "<div class='alert alert-info'><small>Hinweis: Eine zusätzliche mündliche Prüfung würde nach folgender Formel berechnet:</small>" +
"<br><small class='text-secondary'>Gemäß § 26 VOFOS: \"In Fächern, in denen sowohl schriftlich als auch mündlich geprüft wurde, ist die Unterrichtsleistung dreifach, die schriftliche Prüfungsleistung zweifach und die mündliche Prüfungsleistung einfach zu gewichten.\"</small></div>";
ausgabeHTML += "<table class='table table-sm table-bordered mt-2'><thead><tr><th>Mdl. Punkte</th><th>Durchschnitt</th><th>Gerundet</th></tr></thead><tbody>";
for (let i = 0; i <= 15; i++) {
const simNote = ((3 * unterrichtsnote) + (2 * schriftlich) + i) / 6;
const gerundet = Math.round(simNote);
const rowClass = gerundet >= 5 ? "table-success" : "table-danger";
ausgabeHTML += `<tr class="${rowClass}"><td>${i}</td><td>${simNote.toFixed(2)}</td><td>${gerundet}</td></tr>`;
}
ausgabeHTML += "</tbody></table>";
} else if (isNaN(schriftlich) && !isNaN(muendlich)) {
const fachnote = ((4 * unterrichtsnote) + muendlich) / 5;
ausgabeHTML += "<div class='alert alert-info'><strong>Fachnote:</strong> " + fachnote.toFixed(2) +
" Punkte (gerundet: " + Math.round(fachnote) + ")" +
"<br><small>Berechnung: (4×Unterricht + 1×mündlich) / 5</small>" +
"<br><small class='text-secondary'>Gemäß § 26 VOFOS: \"In Fächern, in denen nur mündlich geprüft wurde, ist die Unterrichtsleistung vierfach und die mündliche Prüfungsleistung einfach zu gewichten.\"</small></div>";
} else {
// Nur Unterrichtsleistung - direkte Übernahme der Note
ausgabeHTML += "<div class='alert alert-info'><strong>Fachnote (nur Unterrichtsleistung):</strong> " +
unterrichtsnote + " Punkte" +
"<br><small>Hinweis: In Fächern ohne Prüfungspflicht wird die Unterrichtsleistung direkt übernommen.</small>" +
"<br><small class='text-secondary'>Gemäß § 26 VOFOS: Bei Fächern ohne Prüfungspflicht wird die Unterrichtsleistung direkt als Fachnote übertragen.</small></div>";
// Simulation mit mündlichen Noten
ausgabeHTML += "<h5 class='mt-4'>Simulation: Mögliche Fachnoten bei mündlicher Prüfung</h5>";
ausgabeHTML += "<div class='alert alert-info'><small>Hinweis: Eine freiwillige mündliche Prüfung würde nach folgender Formel berechnet:</small>" +
"<br><small class='text-secondary'>Gemäß § 26 VOFOS: \"In Fächern, in denen nur mündlich geprüft wurde, ist die Unterrichtsleistung vierfach und die mündliche Prüfungsleistung einfach zu gewichten.\"</small></div>";
ausgabeHTML += "<table class='table table-sm table-bordered mt-2'><thead><tr><th>Mdl. Punkte</th><th>Durchschnitt</th><th>Gerundet</th></tr></thead><tbody>";
for (let i = 0; i <= 15; i++) {
const simNote = ((4 * unterrichtsnote) + i) / 5;
const gerundet = Math.round(simNote);
const rowClass = gerundet >= 5 ? "table-success" : "table-danger";
ausgabeHTML += `<tr class="${rowClass}"><td>${i}</td><td>${simNote.toFixed(2)}</td><td>${gerundet}</td></tr>`;
}
ausgabeHTML += "</tbody></table>";
}
ergebnisDiv.innerHTML = ausgabeHTML;
});
formular.addEventListener("reset", () => {
ergebnisDiv.innerHTML = "";
});
});
// Am Ende der Datei
document.getElementById("versionInfoButton").addEventListener("click", function() {
// Electron-spezifischer Code für einen "Über"-Dialog
const { shell } = require('electron');
shell.openPath('./CHANGELOG.md');
// Alternative: Öffne einen Dialog mit Versionsinfos
/*
const { dialog } = require('electron').remote;
dialog.showMessageBox({
type: 'info',
title: 'Änderungen in Version 1.1.1',
message: 'Was ist neu in fosAVG 1.1.1',
detail: '• Unterstützung für Fächer ohne Prüfungspflicht\n• Verbesserte Simulationstabellen\n• Detaillierte Verordnungszitate\n• Farbkodierung für Bestehensgrenze (5 Punkte)',
buttons: ['OK']
});
*/
});
// Version-Information
// Auskommentiert, da Versionsinfos bereits im Footer und Modal vorhanden sind
// Alternativ könnte dies beim Start oder Update angezeigt werden
/*
document.addEventListener('DOMContentLoaded', () => {
const { dialog } = require('@electron/remote');
dialog.showMessageBox({
type: 'info',
title: 'Version 1.1.1',
message: 'Änderungen in dieser Version:',
detail: '• Unterstützung für Fächer ohne Prüfungspflicht\n' +
'• Simulationstabelle für mündliche Prüfungen bei Fächern ohne Prüfungspflicht\n' +
'• Zitierung der relevanten Paragraphen der VOFOS bei jeder Berechnungsmethode\n' +
'• Verbesserte Farbkodierung in Simulationstabellen\n' +
'• Konsistentes Hinweisformat für alle Berechnungsmethoden',
buttons: ['OK']
});
});
*/