spokojnie jak obiad 2

This commit is contained in:
rzodkiew 2025-02-14 12:49:24 +01:00
parent 5a15a8d5ac
commit c5388b5690
5 changed files with 93 additions and 32 deletions

View File

@ -51,8 +51,9 @@
"bad_frekwencja": 2, "bad_frekwencja": 2,
"good_frekwencja": 11, "good_frekwencja": 11,
"dobra_frekwencja": 0, "dobra_frekwencja": 0,
"aktywnosc": 5, "aktywnosc": 1,
"sprawdzian": 3 "sprawdzian": 3,
"siema": 25
}, },
"Anna-Nowak": { "Anna-Nowak": {
"good_frekwencja": 4, "good_frekwencja": 4,

View File

@ -10,5 +10,9 @@
{ {
"nazwa": "aktywnosc", "nazwa": "aktywnosc",
"punkty": 5 "punkty": 5
},
{
"nazwa": "siema",
"punkty": 2
} }
] ]

View File

@ -1,6 +1,6 @@
{ {
"uczniowie": [ "uczniowie": [
{ "imie": "Jan", "nazwisko": "Kowalski", "klasa": "4i" }, { "imie": "Jan", "nazwisko": "Kowalski", "klasa": "2i" },
{ "imie": "Anna", "nazwisko": "Nowak", "klasa": "3a" }, { "imie": "Anna", "nazwisko": "Nowak", "klasa": "3a" },
{ "imie": "Piotr", "nazwisko": "Wiśniewski", "klasa": "2b" }, { "imie": "Piotr", "nazwisko": "Wiśniewski", "klasa": "2b" },
{ "imie": "Maria", "nazwisko": "Kowalczyk", "klasa": "1c" } { "imie": "Maria", "nazwisko": "Kowalczyk", "klasa": "1c" }

View File

@ -29,6 +29,10 @@ document.addEventListener("DOMContentLoaded", () => {
kryteria = kryteriaData; kryteria = kryteriaData;
dane = daneData; dane = daneData;
progiOcen = ocenyData.progi; // Zapisz progi ocen progiOcen = ocenyData.progi; // Zapisz progi ocen
console.log("Uczniowie:", uczniowie);
console.log("Kryteria:", kryteria);
console.log("Dane:", dane);
console.log("Progi ocen:", progiOcen);
renderStudents(); renderStudents();
renderStats(); renderStats();
renderCriteria(); renderCriteria();
@ -97,30 +101,78 @@ document.addEventListener("DOMContentLoaded", () => {
// Stwórz element statystyk // Stwórz element statystyk
const studentDiv = document.createElement("div"); const studentDiv = document.createElement("div");
studentDiv.className = "stat-item"; studentDiv.className = "stat-item";
const name = document.createElement("strong");
name.textContent = `${student.imie} ${student.nazwisko} (${student.klasa})`; // Imię i nazwisko
const name = document.createElement("span");
name.className = "name";
name.textContent = `${student.imie} ${student.nazwisko}`;
// Klasa
const className = document.createElement("span");
className.className = "class";
className.textContent = `(${student.klasa})`;
// Punkty
const points = document.createElement("span"); const points = document.createElement("span");
points.className = "points"; points.className = "points";
points.textContent = `${totalPoints} pkt`; points.textContent = `${totalPoints} pkt`;
// Dodaj ocenę // Ocena
const grade = document.createElement("span"); const grade = document.createElement("span");
grade.className = "grade"; grade.className = "grade";
grade.textContent = `Ocena: ${ocena}`; grade.textContent = `Ocena: ${ocena}`;
grade.style.marginLeft = "10px";
grade.style.fontWeight = "bold";
if (totalPoints > 0) {
points.classList.add("positive");
} else if (totalPoints < 0) {
points.classList.add("negative");
}
// Dodaj elementy do kontenera
studentDiv.appendChild(name); studentDiv.appendChild(name);
studentDiv.appendChild(className);
studentDiv.appendChild(points); studentDiv.appendChild(points);
studentDiv.appendChild(grade); // Dodaj ocenę do elementu studentDiv.appendChild(grade);
// Dodaj do zawartości statystyk
statsContent.appendChild(studentDiv); statsContent.appendChild(studentDiv);
}); });
// Dodaj sekcję z progami ocen
renderGradeThresholds();
}
// Renderuj progi ocen
function renderGradeThresholds() {
const thresholdsDiv = document.createElement("div");
thresholdsDiv.id = "grade-thresholds";
const title = document.createElement("h3");
title.textContent = "Progi punktowe na oceny";
thresholdsDiv.appendChild(title);
const table = document.createElement("table");
const headerRow = document.createElement("tr");
const headers = ["Ocena", "Minimalne punkty"];
headers.forEach(headerText => {
const th = document.createElement("th");
th.textContent = headerText;
headerRow.appendChild(th);
});
table.appendChild(headerRow);
progiOcen.forEach(prog => {
const row = document.createElement("tr");
const gradeCell = document.createElement("td");
gradeCell.textContent = prog.ocena;
row.appendChild(gradeCell);
const pointsCell = document.createElement("td");
pointsCell.textContent = `${prog.min} pkt`;
row.appendChild(pointsCell);
table.appendChild(row);
});
thresholdsDiv.appendChild(table);
statsContent.appendChild(thresholdsDiv);
} }
// Renderuj listę kryteriów // Renderuj listę kryteriów
@ -136,15 +188,16 @@ document.addEventListener("DOMContentLoaded", () => {
return; return;
} }
kryteria.forEach(criteria => { kryteria.forEach(criteria => {
// Wyświetl kryterium na liście
const criteriaDiv = document.createElement("div"); const criteriaDiv = document.createElement("div");
criteriaDiv.textContent = `${criteria.nazwa}: ${criteria.punkty} pkt`; criteriaDiv.textContent = `${criteria.nazwa}: ${criteria.punkty} pkt`;
criteriaListDiv.appendChild(criteriaDiv); criteriaListDiv.appendChild(criteriaDiv);
// Dodaj opcję do edycji
const editOption = document.createElement("option"); const editOption = document.createElement("option");
editOption.value = criteria.nazwa; editOption.value = criteria.nazwa;
editOption.textContent = criteria.nazwa; editOption.textContent = criteria.nazwa;
editCriteriaNameSelect.appendChild(editOption); editCriteriaNameSelect.appendChild(editOption);
// Dodaj opcję do usunięcia
const deleteOption = document.createElement("option"); const deleteOption = document.createElement("option");
deleteOption.value = criteria.nazwa; deleteOption.value = criteria.nazwa;
deleteOption.textContent = criteria.nazwa; deleteOption.textContent = criteria.nazwa;
@ -168,8 +221,8 @@ document.addEventListener("DOMContentLoaded", () => {
criteriaTab.addEventListener("click", () => { criteriaTab.addEventListener("click", () => {
studentsList.style.display = "none"; studentsList.style.display = "none";
statsContent.style.display = "none"; statsContent.style.display = "none";
criteriaContent.style.display = "block"; criteriaContent.style.display = "block"; // Pokaż zakładkę "Zarządzanie kryteriami"
renderCriteria(); renderCriteria(); // Odśwież listę kryteriów
}); });
// Dodawanie nowego kryterium // Dodawanie nowego kryterium

View File

@ -12,14 +12,6 @@ body {
border-radius: 8px; border-radius: 8px;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
} }
.grade {
color: #007bff; /* Niebieski kolor */
font-size: 1.1em;
margin-left: 10px;
font-weight: bold;
}
h1 { h1 {
text-align: center; text-align: center;
color: #333; color: #333;
@ -106,20 +98,31 @@ input[type="number"] {
#stats-content .stat-item { #stats-content .stat-item {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center;
padding: 10px; padding: 10px;
margin-bottom: 10px; margin-bottom: 10px;
border: 1px solid #ddd; border: 1px solid #ddd;
border-radius: 4px; border-radius: 4px;
background-color: #f9f9f9; background-color: #f9f9f9;
} }
#stats-content .name {
font-weight: bold;
flex: 2;
}
#stats-content .class {
flex: 1;
text-align: center;
}
#stats-content .points { #stats-content .points {
flex: 1;
text-align: right;
font-weight: bold; font-weight: bold;
} }
#stats-content .positive { #stats-content .grade {
color: green; flex: 1;
} text-align: right;
#stats-content .negative { color: #007bff;
color: red; font-size: 1.1em;
} }
/* Zarządzanie kryteriami */ /* Zarządzanie kryteriami */