diff --git a/data/criteria.json b/data/criteria.json index e9aac84..5254de0 100644 --- a/data/criteria.json +++ b/data/criteria.json @@ -2,99 +2,238 @@ "criteria": [ { "id": 1, - "name": "Tardiness" + "name": "95-100% raz w semestrze" }, { "id": 2, - "name": "Disruption" + "name": "brak godzin nieusprawiedliwionych w semestrze" }, { "id": 3, - "name": "Disrespect towards teachers" + "name": "minimum 85% frekwencje w semestrze" }, { "id": 4, - "name": "Participation in class" + "name": "uczestnictwo w etapie szkolnym" }, { "id": 5, - "name": "Preparedness for class" + "name": "uczestnictwo w etapie rejonowym" }, { "id": 6, - "name": "Attendance" + "name": "uczestnictwo w etapie wojewódzkim" }, { "id": 7, - "name": "Involvement in projects" + "name": "uczestnictwo w etapie ogólnopolskim" }, { "id": 8, - "name": "Warning from homeroom teacher" + "name": "wyróżnienie w etapie szkolnym" }, { "id": 9, - "name": "Warning from principal" + "name": "wyróżnienie w etapie rejonowym" }, { "id": 10, - "name": "Achievements in competitions" + "name": "wyróżnienie w etapie wojewódzkim" }, { "id": 11, - "name": "Representing the school" + "name": "wyróżnienie w etapie ogólnopolskim" }, { "id": 12, - "name": "Independence" + "name": "laureat, finalista ogólnopolski" }, { "id": 13, - "name": "Engagement in lessons" + "name": "każdy udział w konkursach" + }, + { + "id": 14, + "name": "wyróżnienie w konkursie" + }, + { + "id": 15, + "name": "każdy udział w reprezentowaniu" + }, + { + "id": 16, + "name": "uzyskanie wyniku w rozgrywkach na szczeblu rejonowym w przedziale I-III miejsce" + }, + { + "id": 17, + "name": "uzyskanie wyniku w rozgrywkach na szczeblu wojewódzkim w przedziale I-III miejsce" + }, + { + "id": 18, + "name": "uzyskanie wyniku w rozgrywkach na szczeblu ogólnopolskim w przedziale I-III miejsce" + }, + { + "id": 19, + "name": "aktywny udział w organizowaniu imprez klasowych, szkolnych, uroczystości okolicznościowych ( każdorazowo)" + }, + { + "id": 20, + "name": "pełnienie funkcji w klasie i wywiązywanie się z obowiązków ( na koniec każdego semestru)" + }, + { + "id": 21, + "name": "reprezentowanie szkoły na zewnątrz ( udział w uroczystościach okolicznościowych, prezentacja szkoły) każdorazowo" + }, + { + "id": 22, + "name": "uczestnictwo w poczcie sztandarowym ( raz w semestrze)" + }, + { + "id": 23, + "name": "pomoc nauczycielowi/ pracownikowi szkoły (raz w semestrze)" + }, + { + "id": 24, + "name": "wolontariat ( raz w semestrze)" + }, + { + "id": 25, + "name": "udział w akcjach charytatywnych ( każdorazowo)" + }, + { + "id": 26, + "name": "rozwijanie własnych zainteresowań poza szkołą ( zajęcia sportowe, muzyczne, artystyczne, koła naukowe) na koniec roku szkolnego" + }, + { + "id": 27, + "name": "każdą godzinę lekcyjną nieusprawiedliwioną ( raz w miesiącu)" + }, + { + "id": 28, + "name": "każde nieusprawiedliwione spóźnienie na zajęcia szkolne ( raz w miesiącu)" + }, + { + "id": 29, + "name": "każde nieusprawiedliwione spóźnienie na zajęcia szkolne ( raz w miesiącu)" + },{ + "id": 30, + "name": "przeszkadzanie w prowadzeniu zajęć dydaktyczno-wychowawczych (każdorazowo)" + }, + { + "id": 31, + "name": "niewłaściwe stosunek do nauczycieli i pracowników szkoły (każdorazowo)" + }, + { + "id": 32, + "name": "udział w bójce (każdorazowo)" + }, + { + "id": 33, + "name": "używanie wulgarnego słownictwa (każdorazowo)" + },{ + "id": 34, + "name": "palenie papierosów, e-papierosów na terenie szkoły (każdorazowo)" + }, + { + "id": 35, + "name": "agresję słowną (każdorazowo)" + }, + { + "id": 36, + "name": "korzystanie na lekcji z telefonu komórkowego, smartfona, innych urządzeń informatycznych na lekcji (każdorazowo)" + }, + { + "id": 37, + "name": "brak odpowiedniego stroju na uroczystościach okolicznościowych, egzaminach(każdorazowo)" + }, + { + "id": 38, + "name": "kradzież; spożywanie, posiadanie lub bycie pod wpływem alkoholu na terenie szkoły; zażywanie, posiadanie lub rozprowadzanie narkotyków lub środków odurzających na terenie szkoły; psychiczne lub fizyczne znęcanie się nad rówieśnikami; (każdorazowo)" + }, + { + "id": 39, + "name": "W sytuacjach nieujętych w powyższych tabelach o przydziale punktów decyduje nauczyciel. (wpis w dzienniku wraz uzasadnieniem)" + }, + { + "id": 40, + "name": "Ocenę roczną stanowi średnia punktów z całego roku szkolnego" } + ], "categories": [ { - "id": "behavior", - "name": "Behavior", + "id": "frekwencja", + "name": "Frekwencja", "criteria_ids": [ - 1, - 2, - 3, - 4 + 1,2,3 ] }, { - "id": "responsibility", - "name": "Responsibility", + "id": "konkursy-olimpiady", + "name": "udział w konkursach, olimpiadach przedmiotowych ( każdorazowo)", "criteria_ids": [ + 4, 5, 6, - 7 - ] - }, - { - "id": "discipline", - "name": "Discipline", - "criteria_ids": [ + 7, 8, - 9 - ] - }, - { - "id": "achievement", - "name": "Achievements", - "criteria_ids": [ + 9, 10, - 11 + 11, + 12 ] }, { - "id": "self_assessment", - "name": "Self-Assessment", + "id": "konkursy-szkolne", + "name": "udział w konkursach szkolnych (każdorazowo)", "criteria_ids": [ - 12, - 13 + 13, + 14 + ] + }, + { + "id": "reprezentowanie-szkoły", + "name": "reprezentowanie szkoły w zawodach sportowych indywidualnie i w zespole:", + "criteria_ids": [ + 15, + 16, + 17, + 18 + ] + }, + { + "id": "inne-dodatnie", + "name": "Inne dodatnie", + "criteria_ids": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26 + ] + }, + { + "id": "inne-ujemne", + "name": "Inne ujemne", + "criteria_ids": [ + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40 + ] } ], @@ -108,7 +247,22 @@ 4, 5, 6, - 7 + 7, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40 + ] }, "homeroom_teacher": { @@ -139,6 +293,13 @@ 12, 13 ] + }, + "patryk": { + "name": "patryk", + "criteria_ids": [ + 15, + 16 + ] } }, "people": [ diff --git a/index.html b/index.html index 4c7913a..939b8bf 100644 --- a/index.html +++ b/index.html @@ -114,7 +114,7 @@

Wybierz role:

-
@@ -127,11 +127,7 @@
- - - - - +
diff --git a/js/script.js b/js/script.js index c080565..02c8cf9 100644 --- a/js/script.js +++ b/js/script.js @@ -3,6 +3,8 @@ let currentCategory = 'frekwencja'; let currentClass = ''; let studentsData = []; let currentDay = 0; +let currentRole = "teacher" +let currentRoleCriterias = [] const baseDate = new Date(); // Funkcja do wczytywania pliku JSON @@ -97,7 +99,7 @@ async function getCategoriesWithCriteria() { let criteriaForCategory = [] criteria.criteria.forEach(criteria => { if(category.criteria_ids.includes(criteria.id)) { - console.log(`!!! ${category.name} posiada ${criteria.name}`) + //console.log(`!!! ${category.name} posiada ${criteria.name}`) criteriaForCategory.push({name: criteria.name, id: criteria.id}) } }) @@ -123,9 +125,12 @@ async function loadCriteria() { const selectroleByid = document.getElementById("select-role"); let selectroleHTML = ""; // Zainicjalizuj pusty string na HTML - + currentRole = "teacher" // Iteracja przez klucze obiektu roles for (const [key, value] of Object.entries(roles)) { + if(key == "teacher") { + currentRoleCriterias = value.criteria_ids + } selectroleHTML += ``; } @@ -137,13 +142,47 @@ async function loadCriteria() { const categoryButtonsBox = document.getElementById("category-buttons-box"); let categoryButtonHTML = "" categoriesCriteria.forEach(category => { - // categoryButtonHTML += ``; - categoryButtonHTML += `` - }) + const hasCriteria = category.criteria_ids.some(criteriaId => currentRoleCriterias.includes(criteriaId)); + + // Jeśli kategoria ma kryteria, dodajemy przycisk + if (hasCriteria) { + categoryButtonHTML += ``; + } + }); categoryButtonsBox.innerHTML = categoryButtonHTML; } +async function changeRole(role) { + const select = document.getElementById('select-role'); + const selectedValue = select.value; + + const criteriaFilePath = '/data/criteria.json'; + const criteria = await fetchJSONFile(criteriaFilePath); + + currentRole = selectedValue + currentRoleCriterias = criteria.roles[currentRole].criteria_ids + console.log("currentRole:", currentRole) + console.log("currentRoleCriterias:", currentRoleCriterias) + + // category-buttons-box + const categoriesCriteria = criteria.categories; + const categoryButtonsBox = document.getElementById("category-buttons-box"); + let categoryButtonHTML = "" + categoriesCriteria.forEach(category => { + const hasCriteria = category.criteria_ids.some(criteriaId => currentRoleCriterias.includes(criteriaId)); + + + // Jeśli kategoria ma kryteria, dodajemy przycisk + if (hasCriteria) { + categoryButtonHTML += ``; + } + }); + + categoryButtonsBox.innerHTML = categoryButtonHTML; + + generateTable(currentCategory) +} // Funkcja do przełączania głównych zakładek function showTab(tabName) { @@ -182,7 +221,7 @@ function showInnerTab(category) { // Funkcja, aby ustawić domyślną kategorię i zakładkę document.addEventListener("DOMContentLoaded", function() { // Domyślnie pokazujemy kategorię 'frekwencja' - showInnerTab('frekwencja'); + // Ustawienie daty na dziś document.getElementById('current-date').innerText = baseDate.toLocaleDateString(); @@ -190,6 +229,8 @@ document.addEventListener("DOMContentLoaded", function() { // Uruchomienie wczytywania klas i kryteriów loadClasses(); loadCriteria(); + + showInnerTab('frekwencja'); }); // Funkcja do zmiany dnia @@ -319,6 +360,9 @@ async function generateTable(category) { thName.textContent = "Imię i Nazwisko"; thead.appendChild(thName); + // get role + console.log("currentRole", currentRole) + // Pobierz kolumny dla wybranej kategorii const categories = await getCategoriesWithCriteria() console.log("łot:", categories) @@ -327,8 +371,12 @@ async function generateTable(category) { // Dodaj nagłówki dla kryteriów w kategorii categoryColumns.forEach(column => { const th = document.createElement('th'); - th.textContent = column.name; - thead.appendChild(th); + if(currentRoleCriterias.includes(column.id)) { + th.textContent = column.name; + thead.appendChild(th); + } + + }); // Generuj wiersze dla uczniów @@ -347,18 +395,20 @@ async function generateTable(category) { // 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.onchange = calculateStats; + if(currentRoleCriterias.includes(column.id)) { + 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.onchange = calculateStats; - // Ustawienie stanu checkboxa na podstawie zapisanych danych - checkbox.checked = student.behavior[`day${currentDay}`]?.[column.id] || false; + // Ustawienie stanu checkboxa na podstawie zapisanych danych + checkbox.checked = student.behavior[`day${currentDay}`]?.[column.id] || false; - td.appendChild(checkbox); - row.appendChild(td); + td.appendChild(checkbox); + row.appendChild(td); + } }); tbody.appendChild(row);