diff --git a/index.html b/index.html
index 0be4322..1dcf3aa 100644
--- a/index.html
+++ b/index.html
@@ -2,7 +2,6 @@
-
Ocena Zachowania
@@ -114,21 +113,20 @@
Wybierz klasę:
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/js/script.js b/js/script.js
index eb68634..e8c43ef 100644
--- a/js/script.js
+++ b/js/script.js
@@ -30,19 +30,24 @@ const categories = {
]
};
-// Zmienna przechowująca aktualną kategorię
+// Zmienne globalne
let currentCategory = 'frekwencja';
+let currentClass = '';
+let studentsData = [];
+let currentDay = 0;
+const baseDate = new Date();
// Funkcja do wczytywania pliku JSON
async function fetchJSONFile(filePath) {
try {
const response = await fetch(filePath);
if (!response.ok) {
- throw new Error(`HTTP error! Status: ${response.status}`);
+ throw new Error(`Błąd HTTP! Status: ${response.status}`);
}
return await response.json();
} catch (error) {
- console.error("Error fetching JSON file:", error);
+ console.error("Błąd podczas pobierania pliku JSON:", error);
+ return null;
}
}
@@ -52,73 +57,77 @@ async function loadClasses() {
const classes = await fetchJSONFile(classFilePath);
if (classes) {
- console.log('Classes loaded:', classes);
+ console.log('Załadowane klasy:', classes);
const selectClass = document.getElementById("select-class-select");
- selectClass.innerHTML = ""; // Clear existing options
+ selectClass.innerHTML = ""; // Wyczyść istniejące opcje
classes.forEach(classInfo => {
const option = document.createElement('option');
- option.value = classInfo.class;
+ option.value = classInfo.file_path;
option.textContent = `Klasa: ${classInfo.class}`;
selectClass.appendChild(option);
- console.log("DODANO KLASE ", classInfo.class, " DO SELECT");
+ console.log("Dodano klasę ", classInfo.class, " do SELECT");
});
- // Add event listener for class selection
+ // Dodaj nasłuchiwacz zdarzeń na zmianę wyboru klasy
selectClass.addEventListener('change', function() {
- const selectedClass = this.value;
- console.log(`Wybrano klasę: ${selectedClass}`);
- // Wczytaj dane uczniów dla wybranej klasy
- // To implement based on how you store student data per class
- // For example:
- // loadStudents(selectedClass);
- // But for now, assuming studentsData is global
+ const selectedClassFile = this.value;
+ console.log(`Wybrano klasę: ${selectedClassFile}`);
+ loadStudents(selectedClassFile);
});
- // Optionally, set a default selected class
+ // Opcjonalnie, ustaw domyślnie pierwszą klasę i załaduj jej uczniów
if (classes.length > 0) {
- selectClass.value = classes[0].class;
- // Load students for the first class
- // loadStudents(classes[0].class);
+ selectClass.selectedIndex = 0;
+ const defaultClassFile = classes[0].file_path;
+ loadStudents(defaultClassFile);
}
}
}
+// Funkcja do wczytania danych uczniów dla wybranej klasy
+async function loadStudents(classFilePath) {
+ if (!classFilePath) {
+ console.warn("Nie wybrano żadnej klasy.");
+ return;
+ }
+
+ const studentsFilePath = `/data/${classFilePath}`;
+ const data = await fetchJSONFile(studentsFilePath);
+
+ if (data && Array.isArray(data.students)) {
+ console.log(`Uczniowie załadowani z pliku ${classFilePath}:`, data);
+ studentsData = data.students; // Aktualizuj globalną tablicę uczniów
+
+ // Inicjalizacja 'behavior' dla każdego ucznia, jeśli jest niezdefiniowany
+ studentsData.forEach(student => {
+ if (!student.behavior) {
+ student.behavior = {};
+ }
+ });
+
+ currentClass = classFilePath; // Ustaw aktualną klasę
+ generateTable(currentCategory); // Regeneruj tabelę z aktualną kategorią
+ } else {
+ console.error("Błąd: Nie udało się załadować danych uczniów lub dane są niepoprawne.");
+ studentsData = []; // Jeśli nie udało się załadować danych, wyczyść tablicę uczniów
+ currentClass = '';
+ generateTable(currentCategory); // Regeneruj pustą tabelę
+ }
+}
+
+
+
// Funkcja do wczytania pliku criteria.json
async function loadCriteria() {
const criteriaFilePath = '/data/criteria.json';
const criteria = await fetchJSONFile(criteriaFilePath);
- console.log("Criteria loaded:", criteria);
+ console.log("Załadowane kryteria:", criteria);
// Implementacja dalszego przetwarzania kryteriów, jeśli jest potrzebna
}
-// Dane uczniów (przykładowe, powinny być ładowane z plików JSON)
-let studentsData = [
- { name: "Jan Kowalski", behavior: {} },
- { name: "Anna Nowak", behavior: {} },
- { name: "Piotr Wiśniewski", behavior: {} },
- { name: "Katarzyna Zielińska", behavior: {} }
-];
-
-// To store student data per class, you might need a data structure like:
-// let allStudentsData = {
-// "1A": [...],
-// "2B": [...],
-// ...
-// };
-
-// let allStudentsData = {};
-
-// function loadStudents(className) {
-// // Load students data for the class from allStudentsData[className]
-// // And set studentsData accordingly
-// }
-
-let currentDay = 0;
-const baseDate = new Date();
-
// Funkcja do przełączania głównych zakładek
function showTab(tabName) {
// Ukryj wszystkie główne taby
@@ -182,7 +191,7 @@ function loadDayData() {
const studentId = student.name.replace(/ /g, '-');
const behavior = student.behavior[`day${currentDay}`] || {};
- // Get criteria for the current category
+ // Pobierz kryteria dla aktualnej kategorii
const categoryColumns = categories[currentCategory];
categoryColumns.forEach(column => {
const checkbox = document.getElementById(`${column.id}-${studentId}`);
@@ -199,7 +208,7 @@ function loadDayData() {
function saveDayData() {
studentsData.forEach(student => {
const studentId = student.name.replace(/ /g, '-');
- const behavior = student.behavior[`day${currentDay}`] || {};
+ let behavior = student.behavior[`day${currentDay}`] || {};
const categoryColumns = categories[currentCategory];
@@ -278,35 +287,35 @@ function generateTable(category) {
const thead = table.querySelector('thead tr');
const tbody = table.querySelector('tbody');
- // Clear existing headers and body
+ // Wyczyść istniejące nagłówki i wiersze
thead.innerHTML = '';
tbody.innerHTML = '';
- // Add 'Imię i Nazwisko' header
+ // Dodaj nagłówek 'Imię i Nazwisko'
const thName = document.createElement('th');
thName.textContent = "Imię i Nazwisko";
thead.appendChild(thName);
- // Get columns for the category
+ // Pobierz kolumny dla wybranej kategorii
const categoryColumns = categories[category];
- // Add headers for category
+ // Dodaj nagłówki dla kryteriów w kategorii
categoryColumns.forEach(column => {
const th = document.createElement('th');
th.textContent = column.name;
thead.appendChild(th);
});
- // Generate rows
+ // Generuj wiersze dla uczniów
studentsData.forEach(student => {
const row = document.createElement('tr');
- // Name cell
+ // Komórka z imieniem i nazwiskiem
const tdName = document.createElement('td');
tdName.textContent = student.name;
row.appendChild(tdName);
- // Checkbox cells
+ // Komórki z checkboxami dla kryteriów
categoryColumns.forEach(column => {
const td = document.createElement('td');
const checkbox = document.createElement('input');