source: frontend/web3-eDnevnik_Frontend/src/pages/PredmetenNastavnikPages/PredmetenNastavnik_NedelenPlan/PredmetenNastavnik_NedelenPlan.jsx

Last change on this file was 81cdf2d, checked in by Nikola Janev <nikolajanev57@…>, 10 days ago

initial commit

  • Property mode set to 100644
File size: 5.4 KB
Line 
1import React, { useState, useEffect } from "react";
2import axios from "axios";
3import { useParams, useNavigate, Link } from "react-router-dom";
4
5import NavbarKlasen from "../../../components/navbarKlasen/NavbarKlasen.jsx";
6
7const PredmetenNastavnik_NedelenPlan = () => {
8 const { classId } = useParams();
9
10 const navigate = useNavigate();
11 const [plan, setPlan] = useState(null);
12 const [classDetails, setClassDetails] = useState(null);
13 const [loading, setLoading] = useState(true);
14
15 const daysMapping = [
16 { label: "Понеделник", key: "Ponedelnik" },
17 { label: "Вторник", key: "Vtornik" },
18 { label: "Среда", key: "Sreda" },
19 { label: "Четврток", key: "Cetvrtok" },
20 { label: "Петок", key: "Petok" },
21 { label: "Сабота", key: "Sabota" },
22 ];
23
24 const nastavniCasovi = [1, 2, 3, 4, 5, 6, 7, 8];
25
26 const fetchAllData = async () => {
27 try {
28 setLoading(true);
29 const [resPlan, resClass] = await Promise.all([
30 axios.get(`http://localhost:8080/api/klas/${classId}/nedelenPlan`, {
31 withCredentials: true,
32 }),
33 axios.get(`http://localhost:8080/api/klas/${classId}`, {
34 withCredentials: true,
35 }),
36 ]);
37 setPlan(resPlan.data);
38 console.log(resPlan.data);
39 setClassDetails(resClass.data);
40 } catch (err) {
41 console.error("Грешка при вчитување:", err);
42 } finally {
43 setLoading(false);
44 }
45 };
46
47 useEffect(() => {
48 if (classId) fetchAllData();
49 }, [classId]);
50
51 if (loading)
52 return (
53 <div>
54 <NavbarKlasen />
55 <div>
56 <h2>Вчитување на неделниот план...</h2>
57 </div>
58 </div>
59 );
60
61 return (
62 <div>
63 <NavbarKlasen />
64 <div>
65 <div>
66 <div className="navbar navbar-expand-lg bg-secondary justify-content-start ">
67 <ul className="navbar-nav">
68 <li className="nav-item active">
69 <Link className="nav-link text-white fs-4">
70 {" "}
71 Соопштенија за класот{" "}
72 </Link>
73 </li>
74
75 <li className="nav-item">
76 <Link
77 className="nav-link text-white fs-4"
78 to={`/predmetenNastavnikDashboard/klas/${classId}/weeklyPlan`}
79 >
80 {" "}
81 Неделни активности
82 </Link>
83 </li>
84 <li className="nav-item">
85 <Link
86 className="nav-link text-white fs-4"
87 to={`/predmetenNastavnikDashboard/klas/${classId}/schedule`}
88 >
89 {" "}
90 Распоред
91 </Link>
92 </li>
93 <li className="nav-item">
94 <Link
95 className="nav-link text-white fs-4"
96 to={`/predmetenNastavnikDashboard/klas/${classId}/students`}
97 >
98 {" "}
99 Студенти
100 </Link>
101 </li>
102 <li className="nav-item">
103 <Link
104 className="nav-link text-white fs-4"
105 to={`/predmetenNastavnikDashboard/klas/${classId}/subjects`}
106 >
107 {" "}
108 Види слушани предмети
109 </Link>
110 </li>
111 </ul>
112 </div>
113 <h1 className="m-3">
114 Клас {classDetails?.oddelenie}-{classDetails?.paralelka} — Неделни
115 активности
116 </h1>
117 <Link
118 className="btn btn-primary m-2"
119 to={`/predmetenNastavnikDashboard/${classId}/addActivity`}
120 >
121 Креирај неделна активност
122 </Link>
123 </div>
124
125 <div className="m-3">
126 <span>
127 {console.log(plan)}
128 Период: <strong>{plan?.datumOd}</strong> до{" "}
129 <strong>{plan?.datumDo}</strong>
130 </span>
131 </div>
132
133 <div>
134 <table className="table">
135 <thead>
136 <tr>
137 <th>Час</th>
138 {daysMapping.map((day) => (
139 <th key={day.key}>{day.label}</th>
140 ))}
141 </tr>
142 </thead>
143 <tbody>
144 {nastavniCasovi.map((casBroj) => (
145 <tr key={casBroj}>
146 <td>{casBroj}</td>
147 {daysMapping.map((day) => {
148 const активностиЗаДенот = plan?.timetable?.[day.key] || [];
149 const активност = активностиЗаДенот.find(
150 (a) => a.reden_cas === casBroj
151 );
152
153 return (
154 <td key={day.key}>
155 {активност ? (
156 <div>
157 <div>{активност.naslov}</div>
158 <div>{активност.opis}</div>
159 </div>
160 ) : (
161 <div>—</div>
162 )}
163 </td>
164 );
165 })}
166 </tr>
167 ))}
168 </tbody>
169 </table>
170 </div>
171 </div>
172 </div>
173 );
174};
175
176export default PredmetenNastavnik_NedelenPlan;
Note: See TracBrowser for help on using the repository browser.