Compare commits

...

2 Commits

Author SHA1 Message Date
baiobelfer a8dedaee9a Merge remote-tracking branch 'r/dev' into dev 2024-10-16 11:18:26 +02:00
baiobelfer 4e79bd6048 fetch class update 2024-10-16 11:17:49 +02:00
1 changed files with 38 additions and 79 deletions

119
js/app.js
View File

@ -1,86 +1,45 @@
let criteriaData = 1 // Funkcja do wczytania pliku JSON
let studentsData = []; // Baza danych uczniów async function fetchJSONFile(filePath) {
let currentCategory = "behavior"; // Domyślna kategoria try {
const response = await fetch(filePath);
console.log("data") if (!response.ok) {
// Wczytanie kryteriów z pliku JSON throw new Error(`HTTP error! Status: ${response.status}`);
fetch('../data/criteria.json') }
.then(response => response.json()) return await response.json();
.then(data => { } catch (error) {
console.log(data); console.error("Error fetching JSON file:", error);
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);
});
} }
// Załaduj kryteria na podstawie wybranej kategorii // Funkcja do wczytania pliku class.json
function loadCriteriaByCategory() { async function loadClasses() {
currentCategory = document.getElementById('category-select').value; const classFilePath = 'data/class.json';
generateStudentTable(); 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 // Funkcja do przetwarzania danych o klasach i uczniach
function loadStudents() { function processClassData(classInfo, studentsData) {
fetch('data/students/zsl_class_2a_fizyka_2024_2025.json') // Załaduj pierwszy plik jako przykład console.log(`Class: ${classInfo.class}, Group: ${classInfo.group}, Students Count: ${classInfo.student_count}`);
.then(response => response.json()) console.log('Student Data:', studentsData);
.then(data => {
studentsData = data.students; // Możesz tutaj np. wyświetlić dane w interfejsie lub przeprowadzić dodatkowe operacje
generateStudentTable();
})
.catch(error => {
console.error("Błąd podczas wczytywania pliku studentów: ", error);
});
} }
// Generowanie tabeli uczniów i kryteriów // Uruchomienie wczytywania klas
function generateStudentTable() { loadClasses();
const table = document.getElementById('student-table');
const thead = document.querySelector('thead tr');
table.innerHTML = ''; // Wyczyść tabelę uczniów
thead.innerHTML = '<th>Uczeń</th>'; // 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 = `<td>${student.first_name} ${student.last_name}</td>`;
// Dodanie pól do zaznaczania dla każdego kryterium
filteredCriteria.forEach(criterion => {
const td = document.createElement('td');
td.innerHTML = `<input type="checkbox" id="student-${student.id}-criterion-${criterion.id}" onchange="calculateStats()">`;
row.appendChild(td);
});
table.appendChild(row);
});
}
// Obliczanie statystyk na podstawie wybranych kryteriów
function calculateStats() {
// Logika do przeliczania punktacji na podstawie zaznaczonych kryteriów
}