swer2
This commit is contained in:
parent
85b9141087
commit
9399b55714
@ -50,11 +50,11 @@
|
||||
"Jan-Kowalski": {
|
||||
"bad_frekwencja": 2,
|
||||
"good_frekwencja": 11,
|
||||
"dobra_frekwencja": 0,
|
||||
"dobra_frekwencja": 3,
|
||||
"aktywnosc": 0,
|
||||
"sprawdzian": 3,
|
||||
"siema": 15,
|
||||
"zla_frekwencja": 10,
|
||||
"zla_frekwencja": 5,
|
||||
"konkursy": 0
|
||||
},
|
||||
"Anna-Nowak": {
|
||||
|
@ -18,5 +18,9 @@
|
||||
{
|
||||
"nazwa": "konkursy",
|
||||
"punkty": 15
|
||||
},
|
||||
{
|
||||
"nazwa": "obiad",
|
||||
"punkty": 25
|
||||
}
|
||||
]
|
@ -9,6 +9,8 @@
|
||||
<body>
|
||||
<div class="container">
|
||||
<h1>Zarządzanie Uczniami</h1>
|
||||
<!-- Przycisk "Zapisz dane" -->
|
||||
<button id="save-button">Zapisz dane</button>
|
||||
<!-- Zakładki -->
|
||||
<div class="tabs">
|
||||
<button id="students-tab">Uczniowie</button>
|
||||
@ -45,8 +47,6 @@
|
||||
<button type="submit">Usuń</button>
|
||||
</form>
|
||||
</div>
|
||||
<!-- Przycisk do zapisywania danych -->
|
||||
<button id="save-button">Zapisz dane</button>
|
||||
</div>
|
||||
<script src="script.js"></script>
|
||||
</body>
|
||||
|
83
script.js
83
script.js
@ -42,6 +42,7 @@ document.addEventListener("DOMContentLoaded", () => {
|
||||
uczniowie.forEach(student => {
|
||||
const studentKey = `${student.imie}-${student.nazwisko}`;
|
||||
const details = document.createElement("details");
|
||||
details.style.position = "relative"; // Pozycjonowanie względne dla stats-section
|
||||
const summary = document.createElement("summary");
|
||||
summary.textContent = `${student.imie} ${student.nazwisko} (${student.klasa})`;
|
||||
details.appendChild(summary);
|
||||
@ -59,13 +60,14 @@ document.addEventListener("DOMContentLoaded", () => {
|
||||
const pointsInfo = document.createElement("span");
|
||||
pointsInfo.className = "points-info";
|
||||
pointsInfo.textContent = `(${criteria.punkty} pkt)`;
|
||||
const inputWrapper = document.createElement("div");
|
||||
inputWrapper.className = "input-wrapper"; // Nowy wrapper dla inputu
|
||||
const input = document.createElement("input");
|
||||
input.type = "number";
|
||||
input.min = "0";
|
||||
const savedStudent = dane[studentKey];
|
||||
input.value = savedStudent?.[criteria.nazwa] || 0;
|
||||
input.value = dane[studentKey]?.[criteria.nazwa] || 0;
|
||||
|
||||
// Zapisz zmiany lokalnie w pamięci
|
||||
// Zapisz zmiany lokalnie w pamięci (bez natychmiastowego zapisu)
|
||||
input.addEventListener("input", () => {
|
||||
if (!dane[studentKey]) {
|
||||
dane[studentKey] = {};
|
||||
@ -73,58 +75,15 @@ document.addEventListener("DOMContentLoaded", () => {
|
||||
dane[studentKey][criteria.nazwa] = parseInt(input.value) || 0;
|
||||
});
|
||||
|
||||
inputWrapper.appendChild(input); // Dodaj input do wrappera
|
||||
criteriaItem.appendChild(label);
|
||||
criteriaItem.appendChild(pointsInfo);
|
||||
criteriaItem.appendChild(input);
|
||||
|
||||
// Dodaj podkategorie, jeśli istnieją
|
||||
if (criteria.podkategorie && criteria.podkategorie.length > 0) {
|
||||
const subCriteriaList = document.createElement("div");
|
||||
subCriteriaList.className = "sub-criteria-list";
|
||||
|
||||
criteria.podkategorie.forEach(subCriteria => {
|
||||
const subCriteriaItem = document.createElement("div");
|
||||
subCriteriaItem.className = "sub-criteria-item";
|
||||
const subLabel = document.createElement("span");
|
||||
subLabel.textContent = subCriteria.nazwa;
|
||||
const subPointsInfo = document.createElement("span");
|
||||
subPointsInfo.className = "points-info";
|
||||
subPointsInfo.textContent = `(${subCriteria.punkty} pkt)`;
|
||||
const subInput = document.createElement("input");
|
||||
subInput.type = "number";
|
||||
subInput.min = "0";
|
||||
subInput.value = savedStudent?.[subCriteria.nazwa] || 0;
|
||||
|
||||
// Zapisz zmiany lokalnie w pamięci
|
||||
subInput.addEventListener("input", () => {
|
||||
if (!dane[studentKey]) {
|
||||
dane[studentKey] = {};
|
||||
}
|
||||
dane[studentKey][subCriteria.nazwa] = parseInt(subInput.value) || 0;
|
||||
});
|
||||
|
||||
subCriteriaItem.appendChild(subLabel);
|
||||
subCriteriaItem.appendChild(subPointsInfo);
|
||||
subCriteriaItem.appendChild(subInput);
|
||||
subCriteriaList.appendChild(subCriteriaItem);
|
||||
});
|
||||
|
||||
criteriaItem.appendChild(subCriteriaList);
|
||||
}
|
||||
|
||||
criteriaItem.appendChild(inputWrapper); // Dodaj wrapper z inputem
|
||||
criteriaList.appendChild(criteriaItem);
|
||||
|
||||
// Oblicz sumę punktów
|
||||
const count = savedStudent?.[criteria.nazwa] || 0;
|
||||
const count = dane[studentKey]?.[criteria.nazwa] || 0;
|
||||
totalPoints += count * criteria.punkty;
|
||||
|
||||
// Jeśli są podkategorie, dodaj ich punkty
|
||||
if (criteria.podkategorie) {
|
||||
criteria.podkategorie.forEach(subCriteria => {
|
||||
const subCount = savedStudent?.[subCriteria.nazwa] || 0;
|
||||
totalPoints += subCount * subCriteria.punkty;
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Wybierz ocenę na podstawie punktów
|
||||
@ -133,13 +92,22 @@ document.addEventListener("DOMContentLoaded", () => {
|
||||
// Dodaj sekcję z punktami i oceną w prawym górnym rogu
|
||||
const statsSection = document.createElement("div");
|
||||
statsSection.className = "stats-section";
|
||||
statsSection.innerHTML = `
|
||||
<div class="stats-box">
|
||||
<span class="total-points">Punkty: ${totalPoints}</span>
|
||||
<span class="grade">Ocena: ${ocena}</span>
|
||||
</div>
|
||||
`;
|
||||
details.appendChild(statsSection);
|
||||
|
||||
const statsBox = document.createElement("div");
|
||||
statsBox.className = "stats-box";
|
||||
|
||||
const totalPointsElement = document.createElement("div");
|
||||
totalPointsElement.className = "total-points";
|
||||
totalPointsElement.textContent = `Punkty: ${totalPoints}`;
|
||||
statsBox.appendChild(totalPointsElement);
|
||||
|
||||
const gradeElement = document.createElement("div");
|
||||
gradeElement.className = "grade";
|
||||
gradeElement.textContent = `Ocena: ${ocena}`;
|
||||
statsBox.appendChild(gradeElement);
|
||||
|
||||
statsSection.appendChild(statsBox);
|
||||
details.appendChild(statsSection); // Dodaj stats-section do details
|
||||
|
||||
details.appendChild(criteriaList);
|
||||
studentsList.appendChild(details);
|
||||
@ -163,11 +131,13 @@ document.addEventListener("DOMContentLoaded", () => {
|
||||
const criteriaDiv = document.createElement("div");
|
||||
criteriaDiv.textContent = `${criteria.nazwa}: ${criteria.punkty} pkt`;
|
||||
criteriaListDiv.appendChild(criteriaDiv);
|
||||
|
||||
// Dodaj opcję do edycji
|
||||
const editOption = document.createElement("option");
|
||||
editOption.value = criteria.nazwa;
|
||||
editOption.textContent = criteria.nazwa;
|
||||
editCriteriaNameSelect.appendChild(editOption);
|
||||
|
||||
// Dodaj opcję do usunięcia
|
||||
const deleteOption = document.createElement("option");
|
||||
deleteOption.value = criteria.nazwa;
|
||||
@ -279,6 +249,7 @@ document.addEventListener("DOMContentLoaded", () => {
|
||||
.then(response => {
|
||||
if (response.ok) {
|
||||
alert("Dane zostały zapisane!");
|
||||
renderStudents(); // Odśwież listę uczniów
|
||||
} else {
|
||||
alert("Wystąpił błąd podczas zapisywania danych.");
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user