Compare commits

..

No commits in common. "9faf9bdb96f275f87ea3ea119d4c1be4570793d7" and "e0ba11b0e9620841c10b33842568fade0432424a" have entirely different histories.

3 changed files with 25 additions and 93 deletions

View File

@ -1,3 +1,4 @@
/* Podstawowe style dla zakładek */
.tab {
display: none;
@ -21,7 +22,6 @@
background-color: #f2f2f2;
border: 1px solid #ccc;
border-radius: 4px;
transition: background-color 0.3s, color 0.3s, border 0.3s;
}
.category-buttons button.active {
@ -60,8 +60,6 @@ tr:nth-child(even) {
.select-class select {
padding: 5px;
font-size: 16px;
border: 1px solid #ccc;
border-radius: 4px;
}
/* Stylizacja nagłówków */
@ -73,63 +71,11 @@ h1, h2, h3 {
body {
font-family: Arial, sans-serif;
margin: 20px;
background-color: #fafafa;
}
/* Stylizacja stopki */
footer.footer {
width: 100%;
padding: 20px 0;
background-color: #fafafa;
footer {
text-align: center;
margin-top: 40px;
font-size: 14px;
color: #555;
}
.footer-container {
max-width: 1200px;
margin: 0 auto;
display: flex;
flex-direction: column;
align-items: stretch;
}
.footer-left, .footer-right {
width: 100%;
}
.footer-left {
text-align: left;
}
.footer-right {
text-align: right;
}
.footer-line {
border: none;
border-top: 2px solid #ddd;
margin: 20px 0;
width: 100%;
}
/* Dodatkowe style dla estetyki */
.footer-left p,
.footer-right p {
margin: 5px 0;
font-size: 14px;
color: #333;
}
/* Stylizacja przycisków ogólna */
button {
outline: none;
}
button:hover {
opacity: 0.8;
}
/* Stylizacja checkboxów */
input[type="checkbox"] {
transform: scale(1.2);
cursor: pointer;
}

View File

@ -26,19 +26,18 @@
</tr>
</thead>
<tbody>
<!-- Wiersze dla wszystkich kryteriów -->
<!-- Dodaj wiersze dla wszystkich kryteriów -->
<tr>
<td>Frekwencja 95-100%</td>
<td><input type="number" id="frekwencja-punkty" value="30" onchange="calculateStats()"></td>
</tr>
<tr>
<td>Brak godzin nieusprawiedliwionych</td>
<td><input type="number" id="brak_godzin-punkty" value="20" onchange="calculateStats()"></td>
<td><input type="number" id="brak-godzin-punkty" value="20" onchange="calculateStats()"></td>
</tr>
<!-- Dodaj pozostałe wiersze kryteriów tutaj -->
<tr>
<td>Minimum 85% frekwencja</td>
<td><input type="number" id="min_85-punkty" value="20" onchange="calculateStats()"></td>
<td><input type="number" id="min-85-punkty" value="20" onchange="calculateStats()"></td>
</tr>
<tr>
<td>Etap szkolny</td>
@ -147,16 +146,11 @@
<div id="stats-output"></div>
</div>
<footer class="footer">
<div class="footer-left">
<p>B. Hrynowiecki</p>
<p>K. Michalak</p>
<p>F. Kowalski</p>
</div>
<hr class="footer-line">
<div class="footer-right">
<p>Led and Authored by M. Pabiszczak</p>
</div>
<footer style="margin: 20px">
B. Hrynowiecki </br>
K. Michalak </br>
F. Kowalski </br>
Led and Authored by M. Pabiszczak
</footer>
<!-- Przeniesienie skryptu na koniec body -->

View File

@ -117,6 +117,8 @@ async function loadStudents(classFilePath) {
}
}
// Funkcja do wczytania pliku criteria.json
async function loadCriteria() {
const criteriaFilePath = '/data/criteria.json';
@ -186,7 +188,7 @@ function changeDay(direction) {
// Funkcja do ładowania danych dnia
function loadDayData() {
studentsData.forEach(student => {
const studentId = `${student.first_name}-${student.last_name}`.replace(/ /g, '-');
const studentId = student.name.replace(/ /g, '-');
const behavior = student.behavior[`day${currentDay}`] || {};
// Pobierz kryteria dla aktualnej kategorii
@ -205,13 +207,7 @@ function loadDayData() {
// Funkcja do zapisywania danych dnia
function saveDayData() {
studentsData.forEach(student => {
const studentId = `${student.first_name}-${student.last_name}`.replace(/ /g, '-');
// Upewnij się, że 'behavior' jest zdefiniowany
if (!student.behavior) {
student.behavior = {};
}
const studentId = student.name.replace(/ /g, '-');
let behavior = student.behavior[`day${currentDay}`] || {};
const categoryColumns = categories[currentCategory];
@ -232,8 +228,8 @@ function calculateStats() {
// Pobieranie punktów z zakładki "Ustal punkty"
const points = {
frekwencja: parseInt(document.getElementById('frekwencja-punkty').value) || 0,
brak_godzin: parseInt(document.getElementById('brak_godzin-punkty').value) || 0,
min_85: parseInt(document.getElementById('min_85-punkty').value) || 0,
brak_godzin: parseInt(document.getElementById('brak-godzin-punkty').value) || 0,
min_85: parseInt(document.getElementById('min-85-punkty').value) || 0,
etap_szkolny: parseInt(document.getElementById('etap_szkolny-punkty').value) || 5,
etap_rejonowy: parseInt(document.getElementById('etap_rejonowy-punkty').value) || 10,
etap_wojewodzki: parseInt(document.getElementById('etap_wojewodzki-punkty').value) || 15,
@ -269,7 +265,7 @@ function calculateStats() {
totalPoints += dayPoints;
});
stats += `${student.first_name} ${student.last_name}: ${totalPoints} punktów (${getGrade(totalPoints)})\n`;
stats += `${student.name}: ${totalPoints} punktów (${getGrade(totalPoints)})\n`;
});
document.getElementById('stats-output').innerText = stats;
@ -316,25 +312,21 @@ function generateTable(category) {
// Komórka z imieniem i nazwiskiem
const tdName = document.createElement('td');
tdName.textContent = `${student.first_name} ${student.last_name}`;
tdName.textContent = student.name;
row.appendChild(tdName);
// Upewnij się, że 'behavior' jest zdefiniowany
if (!student.behavior) {
student.behavior = {};
}
// Komórki z checkboxami dla kryteriów
categoryColumns.forEach(column => {
const td = document.createElement('td');
const checkbox = document.createElement('input');
checkbox.type = 'checkbox';
const studentId = `${student.first_name}-${student.last_name}`.replace(/ /g, '-');
checkbox.id = `${column.id}-${studentId}`;
checkbox.id = `${column.id}-${student.name.replace(/ /g, '-')}`;
checkbox.onchange = calculateStats;
// Ustawienie stanu checkboxa na podstawie zapisanych danych
checkbox.checked = student.behavior[`day${currentDay}`]?.[column.id] || false;
if (student.behavior[`day${currentDay}`] && student.behavior[`day${currentDay}`][column.id]) {
checkbox.checked = student.behavior[`day${currentDay}`][column.id];
}
td.appendChild(checkbox);
row.appendChild(td);