From 4e79bd604848cb186c750d9f320ff2d718a472db Mon Sep 17 00:00:00 2001 From: baiobelfer Date: Wed, 16 Oct 2024 11:17:49 +0200 Subject: [PATCH] fetch class update --- js/app.js | 117 ++++++++++++++++++------------------------------------ 1 file changed, 38 insertions(+), 79 deletions(-) diff --git a/js/app.js b/js/app.js index abe18ec..ca16548 100644 --- a/js/app.js +++ b/js/app.js @@ -1,86 +1,45 @@ -let criteriaData = 1 -let studentsData = []; // Baza danych uczniów -let currentCategory = "behavior"; // Domyślna kategoria - -console.log("data") -// Wczytanie kryteriów z pliku JSON -fetch('../data/criteria.json') - .then(response => response.json()) - .then(data => { - console.log(data); - criteriaData = data; - populateCategorySelect(); - loadStudents(); // Wczytanie pierwszej listy uczniów - }) - .catch(error => { - console.error("Błąd podczas wczytywania pliku criteria.json: ", error); - }); - -// Załaduj kategorie do selektora -function populateCategorySelect() { - const categorySelect = document.getElementById('category-select'); - criteriaData.categories.forEach(category => { - const option = document.createElement('option'); - option.value = category.id; - option.text = category.name; - categorySelect.appendChild(option); - }); +// Funkcja do wczytania pliku JSON +async function fetchJSONFile(filePath) { + try { + const response = await fetch(filePath); + if (!response.ok) { + throw new Error(`HTTP error! Status: ${response.status}`); + } + return await response.json(); + } catch (error) { + console.error("Error fetching JSON file:", error); + } } -// Załaduj kryteria na podstawie wybranej kategorii -function loadCriteriaByCategory() { - currentCategory = document.getElementById('category-select').value; - generateStudentTable(); +// Funkcja do wczytania pliku class.json +async function loadClasses() { + const classFilePath = 'data/class.json'; + const classes = await fetchJSONFile(classFilePath); + + if (classes) { + console.log('Classes loaded:', classes); + + // Iterowanie po wszystkich klasach i wczytywanie plików z danymi uczniów + for (const classInfo of classes) { + const studentsFilePath = classInfo.file_path; + const studentsData = await fetchJSONFile(studentsFilePath); + + if (studentsData) { + console.log(`Students loaded for class ${classInfo.class}:`, studentsData); + // Tutaj możesz przechowywać dane lub je przetwarzać według potrzeb + processClassData(classInfo, studentsData); + } + } + } } -// Wczytanie listy uczniów z pliku -function loadStudents() { - fetch('data/students/zsl_class_2a_fizyka_2024_2025.json') // Załaduj pierwszy plik jako przykład - .then(response => response.json()) - .then(data => { - studentsData = data.students; - generateStudentTable(); - }) - .catch(error => { - console.error("Błąd podczas wczytywania pliku studentów: ", error); - }); -} - -// Generowanie tabeli uczniów i kryteriów -function generateStudentTable() { - const table = document.getElementById('student-table'); - const thead = document.querySelector('thead tr'); +// Funkcja do przetwarzania danych o klasach i uczniach +function processClassData(classInfo, studentsData) { + console.log(`Class: ${classInfo.class}, Group: ${classInfo.group}, Students Count: ${classInfo.student_count}`); + console.log('Student Data:', studentsData); - table.innerHTML = ''; // Wyczyść tabelę uczniów - thead.innerHTML = 'Uczeń'; // Wyczyść i ustaw pierwszy nagłówek - - const categoryCriteria = criteriaData.categories.find(category => category.id === currentCategory).criteria_ids; - const filteredCriteria = criteriaData.criteria.filter(criterion => categoryCriteria.includes(criterion.id)); - - // Dodanie kolumn dla kryteriów - filteredCriteria.forEach(criterion => { - const th = document.createElement('th'); - th.textContent = criterion.name; - thead.appendChild(th); - }); - - // Generowanie wierszy dla każdego ucznia - studentsData.forEach(student => { - const row = document.createElement('tr'); - row.innerHTML = `${student.first_name} ${student.last_name}`; - - // Dodanie pól do zaznaczania dla każdego kryterium - filteredCriteria.forEach(criterion => { - const td = document.createElement('td'); - td.innerHTML = ``; - row.appendChild(td); - }); - - table.appendChild(row); - }); + // Możesz tutaj np. wyświetlić dane w interfejsie lub przeprowadzić dodatkowe operacje } -// Obliczanie statystyk na podstawie wybranych kryteriów -function calculateStats() { - // Logika do przeliczania punktacji na podstawie zaznaczonych kryteriów -} +// Uruchomienie wczytywania klas +loadClasses();