Compare commits
2 Commits
e0ba11b0e9
...
9faf9bdb96
Author | SHA1 | Date |
---|---|---|
konradm | 9faf9bdb96 | |
konradm | 32449be531 |
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
/* Podstawowe style dla zakładek */
|
/* Podstawowe style dla zakładek */
|
||||||
.tab {
|
.tab {
|
||||||
display: none;
|
display: none;
|
||||||
|
@ -22,6 +21,7 @@
|
||||||
background-color: #f2f2f2;
|
background-color: #f2f2f2;
|
||||||
border: 1px solid #ccc;
|
border: 1px solid #ccc;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
|
transition: background-color 0.3s, color 0.3s, border 0.3s;
|
||||||
}
|
}
|
||||||
|
|
||||||
.category-buttons button.active {
|
.category-buttons button.active {
|
||||||
|
@ -60,6 +60,8 @@ tr:nth-child(even) {
|
||||||
.select-class select {
|
.select-class select {
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Stylizacja nagłówków */
|
/* Stylizacja nagłówków */
|
||||||
|
@ -71,11 +73,63 @@ h1, h2, h3 {
|
||||||
body {
|
body {
|
||||||
font-family: Arial, sans-serif;
|
font-family: Arial, sans-serif;
|
||||||
margin: 20px;
|
margin: 20px;
|
||||||
|
background-color: #fafafa;
|
||||||
}
|
}
|
||||||
|
|
||||||
footer {
|
/* Stylizacja stopki */
|
||||||
text-align: center;
|
footer.footer {
|
||||||
margin-top: 40px;
|
width: 100%;
|
||||||
font-size: 14px;
|
padding: 20px 0;
|
||||||
|
background-color: #fafafa;
|
||||||
color: #555;
|
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;
|
||||||
|
}
|
||||||
|
|
22
index.html
22
index.html
|
@ -26,18 +26,19 @@
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<!-- Dodaj wiersze dla wszystkich kryteriów -->
|
<!-- Wiersze dla wszystkich kryteriów -->
|
||||||
<tr>
|
<tr>
|
||||||
<td>Frekwencja 95-100%</td>
|
<td>Frekwencja 95-100%</td>
|
||||||
<td><input type="number" id="frekwencja-punkty" value="30" onchange="calculateStats()"></td>
|
<td><input type="number" id="frekwencja-punkty" value="30" onchange="calculateStats()"></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Brak godzin nieusprawiedliwionych</td>
|
<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>
|
</tr>
|
||||||
|
<!-- Dodaj pozostałe wiersze kryteriów tutaj -->
|
||||||
<tr>
|
<tr>
|
||||||
<td>Minimum 85% frekwencja</td>
|
<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>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Etap szkolny</td>
|
<td>Etap szkolny</td>
|
||||||
|
@ -146,11 +147,16 @@
|
||||||
<div id="stats-output"></div>
|
<div id="stats-output"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<footer style="margin: 20px">
|
<footer class="footer">
|
||||||
B. Hrynowiecki </br>
|
<div class="footer-left">
|
||||||
K. Michalak </br>
|
<p>B. Hrynowiecki</p>
|
||||||
F. Kowalski </br>
|
<p>K. Michalak</p>
|
||||||
Led and Authored by M. Pabiszczak
|
<p>F. Kowalski</p>
|
||||||
|
</div>
|
||||||
|
<hr class="footer-line">
|
||||||
|
<div class="footer-right">
|
||||||
|
<p>Led and Authored by M. Pabiszczak</p>
|
||||||
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<!-- Przeniesienie skryptu na koniec body -->
|
<!-- Przeniesienie skryptu na koniec body -->
|
||||||
|
|
32
js/script.js
32
js/script.js
|
@ -117,8 +117,6 @@ async function loadStudents(classFilePath) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Funkcja do wczytania pliku criteria.json
|
// Funkcja do wczytania pliku criteria.json
|
||||||
async function loadCriteria() {
|
async function loadCriteria() {
|
||||||
const criteriaFilePath = '/data/criteria.json';
|
const criteriaFilePath = '/data/criteria.json';
|
||||||
|
@ -188,7 +186,7 @@ function changeDay(direction) {
|
||||||
// Funkcja do ładowania danych dnia
|
// Funkcja do ładowania danych dnia
|
||||||
function loadDayData() {
|
function loadDayData() {
|
||||||
studentsData.forEach(student => {
|
studentsData.forEach(student => {
|
||||||
const studentId = student.name.replace(/ /g, '-');
|
const studentId = `${student.first_name}-${student.last_name}`.replace(/ /g, '-');
|
||||||
const behavior = student.behavior[`day${currentDay}`] || {};
|
const behavior = student.behavior[`day${currentDay}`] || {};
|
||||||
|
|
||||||
// Pobierz kryteria dla aktualnej kategorii
|
// Pobierz kryteria dla aktualnej kategorii
|
||||||
|
@ -207,7 +205,13 @@ function loadDayData() {
|
||||||
// Funkcja do zapisywania danych dnia
|
// Funkcja do zapisywania danych dnia
|
||||||
function saveDayData() {
|
function saveDayData() {
|
||||||
studentsData.forEach(student => {
|
studentsData.forEach(student => {
|
||||||
const studentId = student.name.replace(/ /g, '-');
|
const studentId = `${student.first_name}-${student.last_name}`.replace(/ /g, '-');
|
||||||
|
|
||||||
|
// Upewnij się, że 'behavior' jest zdefiniowany
|
||||||
|
if (!student.behavior) {
|
||||||
|
student.behavior = {};
|
||||||
|
}
|
||||||
|
|
||||||
let behavior = student.behavior[`day${currentDay}`] || {};
|
let behavior = student.behavior[`day${currentDay}`] || {};
|
||||||
|
|
||||||
const categoryColumns = categories[currentCategory];
|
const categoryColumns = categories[currentCategory];
|
||||||
|
@ -228,8 +232,8 @@ function calculateStats() {
|
||||||
// Pobieranie punktów z zakładki "Ustal punkty"
|
// Pobieranie punktów z zakładki "Ustal punkty"
|
||||||
const points = {
|
const points = {
|
||||||
frekwencja: parseInt(document.getElementById('frekwencja-punkty').value) || 0,
|
frekwencja: parseInt(document.getElementById('frekwencja-punkty').value) || 0,
|
||||||
brak_godzin: parseInt(document.getElementById('brak-godzin-punkty').value) || 0,
|
brak_godzin: parseInt(document.getElementById('brak_godzin-punkty').value) || 0,
|
||||||
min_85: parseInt(document.getElementById('min-85-punkty').value) || 0,
|
min_85: parseInt(document.getElementById('min_85-punkty').value) || 0,
|
||||||
etap_szkolny: parseInt(document.getElementById('etap_szkolny-punkty').value) || 5,
|
etap_szkolny: parseInt(document.getElementById('etap_szkolny-punkty').value) || 5,
|
||||||
etap_rejonowy: parseInt(document.getElementById('etap_rejonowy-punkty').value) || 10,
|
etap_rejonowy: parseInt(document.getElementById('etap_rejonowy-punkty').value) || 10,
|
||||||
etap_wojewodzki: parseInt(document.getElementById('etap_wojewodzki-punkty').value) || 15,
|
etap_wojewodzki: parseInt(document.getElementById('etap_wojewodzki-punkty').value) || 15,
|
||||||
|
@ -265,7 +269,7 @@ function calculateStats() {
|
||||||
totalPoints += dayPoints;
|
totalPoints += dayPoints;
|
||||||
});
|
});
|
||||||
|
|
||||||
stats += `${student.name}: ${totalPoints} punktów (${getGrade(totalPoints)})\n`;
|
stats += `${student.first_name} ${student.last_name}: ${totalPoints} punktów (${getGrade(totalPoints)})\n`;
|
||||||
});
|
});
|
||||||
|
|
||||||
document.getElementById('stats-output').innerText = stats;
|
document.getElementById('stats-output').innerText = stats;
|
||||||
|
@ -312,21 +316,25 @@ function generateTable(category) {
|
||||||
|
|
||||||
// Komórka z imieniem i nazwiskiem
|
// Komórka z imieniem i nazwiskiem
|
||||||
const tdName = document.createElement('td');
|
const tdName = document.createElement('td');
|
||||||
tdName.textContent = student.name;
|
tdName.textContent = `${student.first_name} ${student.last_name}`;
|
||||||
row.appendChild(tdName);
|
row.appendChild(tdName);
|
||||||
|
|
||||||
|
// Upewnij się, że 'behavior' jest zdefiniowany
|
||||||
|
if (!student.behavior) {
|
||||||
|
student.behavior = {};
|
||||||
|
}
|
||||||
|
|
||||||
// Komórki z checkboxami dla kryteriów
|
// Komórki z checkboxami dla kryteriów
|
||||||
categoryColumns.forEach(column => {
|
categoryColumns.forEach(column => {
|
||||||
const td = document.createElement('td');
|
const td = document.createElement('td');
|
||||||
const checkbox = document.createElement('input');
|
const checkbox = document.createElement('input');
|
||||||
checkbox.type = 'checkbox';
|
checkbox.type = 'checkbox';
|
||||||
checkbox.id = `${column.id}-${student.name.replace(/ /g, '-')}`;
|
const studentId = `${student.first_name}-${student.last_name}`.replace(/ /g, '-');
|
||||||
|
checkbox.id = `${column.id}-${studentId}`;
|
||||||
checkbox.onchange = calculateStats;
|
checkbox.onchange = calculateStats;
|
||||||
|
|
||||||
// Ustawienie stanu checkboxa na podstawie zapisanych danych
|
// Ustawienie stanu checkboxa na podstawie zapisanych danych
|
||||||
if (student.behavior[`day${currentDay}`] && student.behavior[`day${currentDay}`][column.id]) {
|
checkbox.checked = student.behavior[`day${currentDay}`]?.[column.id] || false;
|
||||||
checkbox.checked = student.behavior[`day${currentDay}`][column.id];
|
|
||||||
}
|
|
||||||
|
|
||||||
td.appendChild(checkbox);
|
td.appendChild(checkbox);
|
||||||
row.appendChild(td);
|
row.appendChild(td);
|
||||||
|
|
Loading…
Reference in New Issue