load categories from json

This commit is contained in:
Twoje Imię Nazwisko 2024-10-18 06:01:25 -04:00
parent e2eac05ab5
commit 2619e8e917
2 changed files with 40 additions and 34 deletions

View File

@ -126,7 +126,7 @@
</select>
</div>
<div class="category-buttons">
<div class="category-buttons" id="category-buttons-box">
<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>

View File

@ -1,35 +1,3 @@
// Definicja kategorii i ich kryteriów
const categories = {
frekwencja: [
{ name: "Frekwencja 95-100%", id: "frekwencja" },
{ name: "Brak godzin nieusprawiedliwionych", id: "brak_godzin" },
{ name: "Minimum 85% frekwencja", id: "min_85" }
],
olimpiady: [
{ name: "Etap szkolny", id: "etap_szkolny" },
{ name: "Etap rejonowy", id: "etap_rejonowy" },
{ name: "Etap wojewódzki", id: "etap_wojewodzki" },
{ name: "Etap ogólnopolski", id: "etap_ogolnopolski" }
],
konkursy: [
{ name: "Udział w konkursach", id: "udzial_konkurs" },
{ name: "Wyróżnienie w konkursie", id: "wyroznienie_konkurs" }
],
reprezentacja: [
{ name: "Reprezentacja indywidualna", id: "reprezentacja_indywidualna" },
{ name: "Reprezentacja zespołowa", id: "reprezentacja_zespolowa" },
{ name: "Udział w zawodach", id: "udzial_zawody" }
],
aktywnosc: [
{ name: "Organizacja imprez", id: "organizacja_imprez" },
{ name: "Funkcje w klasie", id: "funkcja_klasa" },
{ name: "Uroczystości okolicznościowe", id: "uroczystosci" },
{ name: "Udział w poczcie sztandarowej", id: "poczta_sztandar" },
{ name: "Pomoc nauczycielowi", id: "pomoc_nauczyciel" },
{ name: "Wolontariat", id: "wolontariat" }
]
};
// Zmienne globalne
let currentCategory = 'frekwencja';
let currentClass = '';
@ -120,6 +88,27 @@ async function loadStudents(classFilePath) {
}
}
async function getCategoriesWithCriteria() {
const criteriaFilePath = '/data/criteria.json';
const criteria = await fetchJSONFile(criteriaFilePath);
let categoriesWithCriteria = {}
criteria.categories.forEach(category => {
let criteriaForCategory = []
criteria.criteria.forEach(criteria => {
if(category.criteria_ids.includes(criteria.id)) {
console.log(`!!! ${category.name} posiada ${criteria.name}`)
criteriaForCategory.push({name: criteria.name, id: criteria.id})
}
})
categoriesWithCriteria[category.id] = criteriaForCategory
})
return categoriesWithCriteria
}
// Funkcja do wczytania pliku criteria.json
async function loadCriteria() {
const criteriaFilePath = '/data/criteria.json';
@ -127,7 +116,11 @@ async function loadCriteria() {
console.log("Załadowane kryteria:", criteria);
//
// LADOWANIE ROL
//
const roles = criteria.roles;
const selectroleByid = document.getElementById("select-role");
let selectroleHTML = ""; // Zainicjalizuj pusty string na HTML
@ -138,6 +131,17 @@ async function loadCriteria() {
// Wstawienie HTML do elementu select
selectroleByid.innerHTML = selectroleHTML;
// category-buttons-box
const categoriesCriteria = criteria.categories;
const categoryButtonsBox = document.getElementById("category-buttons-box");
let categoryButtonHTML = ""
categoriesCriteria.forEach(category => {
// categoryButtonHTML += `<option value="${key}">${value.name}</option>`;
categoryButtonHTML += `<button data-category="${category.id}" onclick="showInnerTab('${category.id}')">${category.name}</button>`
})
categoryButtonsBox.innerHTML = categoryButtonHTML;
}
@ -301,7 +305,7 @@ function getGrade(points) {
}
// Funkcja do generowania tabeli uczniów na podstawie wybranej kategorii
function generateTable(category) {
async function generateTable(category) {
const table = document.getElementById('student-table');
const thead = table.querySelector('thead tr');
const tbody = table.querySelector('tbody');
@ -316,6 +320,8 @@ function generateTable(category) {
thead.appendChild(thName);
// Pobierz kolumny dla wybranej kategorii
const categories = await getCategoriesWithCriteria()
console.log("łot:", categories)
const categoryColumns = categories[category];
// Dodaj nagłówki dla kryteriów w kategorii