commit
This commit is contained in:
parent
a211321c84
commit
e0ba11b0e9
22
index.html
22
index.html
|
@ -2,7 +2,6 @@
|
|||
<html lang="pl">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Ocena Zachowania</title>
|
||||
<link rel="stylesheet" href="css/style.css">
|
||||
</head>
|
||||
|
@ -114,21 +113,20 @@
|
|||
|
||||
<div class="select-class" id="select-class-container">
|
||||
<p>Wybierz klasę:</p>
|
||||
<div class="category-buttons">
|
||||
<button data-category="frekwencja" onclick="showInnerTab('frekwencja')">Frekwencja</button>
|
||||
<button data-category="olimpiady" onclick="showInnerTab('olimpiady')">Olimpiady</button>
|
||||
<button data-category="konkursy" onclick="showInnerTab('konkursy')">Konkursy Szkolne</button>
|
||||
<button data-category="reprezentacja" onclick="showInnerTab('reprezentacja')">Reprezentacja Szkoły</button>
|
||||
<button data-category="aktywnosc" onclick="showInnerTab('aktywnosc')">Aktywność</button>
|
||||
</div>
|
||||
<select class="select-class" id="select-class-select">
|
||||
<option value="">Klasa 1</option>
|
||||
<option value="">Klasa 2</option>
|
||||
<option value="">Klasa 3</option>
|
||||
<!-- Opcje będą ładowane dynamicznie -->
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<!-- Przykładowa tabela uczniów -->
|
||||
<div class="category-buttons">
|
||||
<button data-category="frekwencja" onclick="showInnerTab('frekwencja')">Frekwencja</button>
|
||||
<button data-category="olimpiady" onclick="showInnerTab('olimpiady')">Olimpiady</button>
|
||||
<button data-category="konkursy" onclick="showInnerTab('konkursy')">Konkursy Szkolne</button>
|
||||
<button data-category="reprezentacja" onclick="showInnerTab('reprezentacja')">Reprezentacja Szkoły</button>
|
||||
<button data-category="aktywnosc" onclick="showInnerTab('aktywnosc')">Aktywność</button>
|
||||
</div>
|
||||
|
||||
<!-- Tabela uczniów -->
|
||||
<table id="student-table">
|
||||
<thead>
|
||||
<tr>
|
||||
|
|
117
js/script.js
117
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');
|
||||
|
|
Loading…
Reference in New Issue