Compare commits
No commits in common. "a8dedaee9a16d29d27439803aeec9479268ba3df" and "f4bcf024fe2d3b9f00b27efbbb0f6a7912142ca8" have entirely different histories.
a8dedaee9a
...
f4bcf024fe
119
js/app.js
119
js/app.js
|
@ -1,45 +1,86 @@
|
||||||
// Funkcja do wczytania pliku JSON
|
let criteriaData = 1
|
||||||
async function fetchJSONFile(filePath) {
|
let studentsData = []; // Baza danych uczniów
|
||||||
try {
|
let currentCategory = "behavior"; // Domyślna kategoria
|
||||||
const response = await fetch(filePath);
|
|
||||||
if (!response.ok) {
|
console.log("data")
|
||||||
throw new Error(`HTTP error! Status: ${response.status}`);
|
// Wczytanie kryteriów z pliku JSON
|
||||||
}
|
fetch('../data/criteria.json')
|
||||||
return await response.json();
|
.then(response => response.json())
|
||||||
} catch (error) {
|
.then(data => {
|
||||||
console.error("Error fetching JSON file:", error);
|
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 class.json
|
// Załaduj kryteria na podstawie wybranej kategorii
|
||||||
async function loadClasses() {
|
function loadCriteriaByCategory() {
|
||||||
const classFilePath = 'data/class.json';
|
currentCategory = document.getElementById('category-select').value;
|
||||||
const classes = await fetchJSONFile(classFilePath);
|
generateStudentTable();
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Funkcja do przetwarzania danych o klasach i uczniach
|
// Wczytanie listy uczniów z pliku
|
||||||
function processClassData(classInfo, studentsData) {
|
function loadStudents() {
|
||||||
console.log(`Class: ${classInfo.class}, Group: ${classInfo.group}, Students Count: ${classInfo.student_count}`);
|
fetch('data/students/zsl_class_2a_fizyka_2024_2025.json') // Załaduj pierwszy plik jako przykład
|
||||||
console.log('Student Data:', studentsData);
|
.then(response => response.json())
|
||||||
|
.then(data => {
|
||||||
// Możesz tutaj np. wyświetlić dane w interfejsie lub przeprowadzić dodatkowe operacje
|
studentsData = data.students;
|
||||||
|
generateStudentTable();
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.error("Błąd podczas wczytywania pliku studentów: ", error);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Uruchomienie wczytywania klas
|
// Generowanie tabeli uczniów i kryteriów
|
||||||
loadClasses();
|
function generateStudentTable() {
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue