diff --git a/backend/dane.json b/backend/dane.json index d017372..bcfe233 100644 --- a/backend/dane.json +++ b/backend/dane.json @@ -7,7 +7,7 @@ "Zadanie domowe": 10, "Aktywność": 3, "Sprawdzian": 4, - "good_frekwencja": 4, + "good_frekwencja": 9, "aktywnosc": 2, "bad_frekwencja": 0, "sprawdzian": 1 @@ -46,5 +46,18 @@ "bad_frekwencja": 27 } } - ] + ], + "Jan-Kowalski": { + "bad_frekwencja": 2, + "good_frekwencja": 11, + "dobra_frekwencja": 10, + "aktywnosc": 1, + "sprawdzian": 3 + }, + "Anna-Nowak": { + "good_frekwencja": 4 + }, + "Piotr-Wiśniewski": { + "dobra_frekwencja": 3 + } } \ No newline at end of file diff --git a/backend/kryteria.json b/backend/kryteria.json index efc01ba..f67af9a 100644 --- a/backend/kryteria.json +++ b/backend/kryteria.json @@ -1,6 +1,19 @@ [ - { "nazwa": "good_frekwencja", "punkty": 10 }, - { "nazwa": "bad_frekwencja", "punkty": -10 }, - { "nazwa": "aktywnosc", "punkty": 5 }, - { "nazwa": "sprawdzian", "punkty": -200 } + { + "nazwa": "dobra_frekwencja", + "punkty": 111 + }, + { + "nazwa": "zla_frekwencja", + + "punkty": -10 + }, + { + "nazwa": "aktywnosc", + "punkty": 5 + }, + { + "nazwa": "sprawdzian", + "punkty": -20 + } ] \ No newline at end of file diff --git a/backend/server.js b/backend/server.js index c6a88bd..c994477 100644 --- a/backend/server.js +++ b/backend/server.js @@ -2,7 +2,6 @@ const express = require("express"); const fs = require("fs"); const path = require("path"); const cors = require("cors"); - const app = express(); const PORT = 4000; @@ -22,7 +21,8 @@ app.get("/uczniowie", (req, res) => { console.error("Błąd odczytu uczniów:", err); return res.status(500).send("Błąd odczytu uczniów."); } - res.json(JSON.parse(data)); + const uczniowieData = JSON.parse(data); + res.json({ uczniowie: uczniowieData.uczniowie }); }); }); @@ -42,16 +42,24 @@ app.get("/dane", (req, res) => { fs.readFile(DANE_FILE, "utf8", (err, data) => { if (err) { console.error("Błąd odczytu danych:", err); - return res.status(500).send("Błąd odczytu danych."); + // Jeśli plik nie istnieje, utwórz go z domyślnymi danymi + const defaultData = {}; + fs.writeFile(DANE_FILE, JSON.stringify(defaultData, null, 2), err => { + if (err) { + console.error("Błąd tworzenia pliku danych:", err); + return res.status(500).send("Błąd tworzenia pliku danych."); + } + res.json(defaultData); // Zwróć puste dane + }); + } else { + res.json(JSON.parse(data)); } - res.json(JSON.parse(data)); }); }); // Endpoint do zapisywania danych uczniów app.post("/dane", (req, res) => { const newData = req.body; - fs.writeFile(DANE_FILE, JSON.stringify(newData, null, 2), err => { if (err) { console.error("Błąd zapisywania danych:", err); @@ -61,6 +69,85 @@ app.post("/dane", (req, res) => { }); }); +// Endpoint do dodawania nowego kryterium +app.post("/kryteria", (req, res) => { + const { nazwa, punkty } = req.body; + if (!nazwa || !punkty) { + return res.status(400).send("Brak wymaganych danych."); + } + fs.readFile(KRYTERIA_FILE, "utf8", (err, data) => { + if (err) { + console.error("Błąd odczytu kryteriów:", err); + return res.status(500).send("Błąd odczytu kryteriów."); + } + const kryteria = JSON.parse(data); + // Sprawdź, czy kryterium już istnieje + if (kryteria.some(k => k.nazwa === nazwa)) { + return res.status(400).send("Kryterium już istnieje."); + } + kryteria.push({ nazwa, punkty }); + fs.writeFile(KRYTERIA_FILE, JSON.stringify(kryteria, null, 2), err => { + if (err) { + console.error("Błąd zapisywania kryteriów:", err); + return res.status(500).send("Błąd zapisywania kryteriów."); + } + res.send("Kryterium dodane pomyślnie."); + }); + }); +}); + +// Endpoint do edycji istniejącego kryterium +app.put("/kryteria/:nazwa", (req, res) => { + const { nazwa } = req.params; + const { nowaNazwa, punkty } = req.body; + if (!nowaNazwa || !punkty) { + return res.status(400).send("Brak wymaganych danych."); + } + fs.readFile(KRYTERIA_FILE, "utf8", (err, data) => { + if (err) { + console.error("Błąd odczytu kryteriów:", err); + return res.status(500).send("Błąd odczytu kryteriów."); + } + const kryteria = JSON.parse(data); + const index = kryteria.findIndex(k => k.nazwa === nazwa); + if (index === -1) { + return res.status(404).send("Kryterium nie istnieje."); + } + kryteria[index] = { nazwa: nowaNazwa, punkty }; + fs.writeFile(KRYTERIA_FILE, JSON.stringify(kryteria, null, 2), err => { + if (err) { + console.error("Błąd zapisywania kryteriów:", err); + return res.status(500).send("Błąd zapisywania kryteriów."); + } + res.send("Kryterium zaktualizowane pomyślnie."); + }); + }); +}); + +// Endpoint do usuwania kryterium +app.delete("/kryteria/:nazwa", (req, res) => { + const { nazwa } = req.params; + fs.readFile(KRYTERIA_FILE, "utf8", (err, data) => { + if (err) { + console.error("Błąd odczytu kryteriów:", err); + return res.status(500).send("Błąd odczytu kryteriów."); + } + const kryteria = JSON.parse(data); + const index = kryteria.findIndex(k => k.nazwa === nazwa); + if (index === -1) { + return res.status(404).send("Kryterium nie istnieje."); + } + kryteria.splice(index, 1); + fs.writeFile(KRYTERIA_FILE, JSON.stringify(kryteria, null, 2), err => { + if (err) { + console.error("Błąd zapisywania kryteriów:", err); + return res.status(500).send("Błąd zapisywania kryteriów."); + } + res.send("Kryterium usunięte pomyślnie."); + }); + }); +}); + // Uruchomienie serwera app.listen(PORT, () => { console.log(`Serwer API działa na http://localhost:${PORT}`); diff --git a/backend/uczniowie.json b/backend/uczniowie.json index 96740bd..07dca56 100644 --- a/backend/uczniowie.json +++ b/backend/uczniowie.json @@ -1,12 +1,8 @@ { - "klasy": { - "1A": [ - { "imie": "Jan", "nazwisko": "Kowalski" }, - { "imie": "Anna", "nazwisko": "Nowak" } - ], - "2B": [ - { "imie": "Piotr", "nazwisko": "Wiśniewski" }, - { "imie": "Maria", "nazwisko": "Kowalczyk" } - ] - } + "uczniowie": [ + { "imie": "Jan", "nazwisko": "Kowalski", "klasa": "4i" }, + { "imie": "Anna", "nazwisko": "Nowak", "klasa": "3a" }, + { "imie": "Piotr", "nazwisko": "Wiśniewski", "klasa": "2b" }, + { "imie": "Maria", "nazwisko": "Kowalczyk", "klasa": "1c" } + ] } \ No newline at end of file diff --git a/index.html b/index.html index 00dbc99..105263c 100644 --- a/index.html +++ b/index.html @@ -9,27 +9,48 @@