source: reactapp/src/Pages/Professor.js@ 6eba109

main
Last change on this file since 6eba109 was 6eba109, checked in by unknown <mlviktor23@…>, 23 months ago

implemented authentication in react

  • Property mode set to 100644
File size: 2.1 KB
RevLine 
[7cb8c3c]1import React, { useEffect, useState } from "react";
[3a44163]2import { Outlet, useParams } from "react-router-dom";
[2998dc4]3import JSOG from "jsog";
[3a44163]4import OpinionTree from "../Components/OpinionTree";
[e958037]5
6import {
7 ProfessorCard,
8 ProfessorCardDetails,
9 ProfessorCardName,
10 ProfessorCardSeparator,
[3e98cea]11} from "../Components/Styled/ProfessorCard.style";
[7cb8c3c]12
[3a44163]13function Professor(props) {
[7cb8c3c]14 let params = useParams();
15
[4a64cf0]16 let [professor, setProfessor] = useState(null);
17 let [loaded, setLoaded] = useState(null);
[7cb8c3c]18
19 useEffect(() => {
[6eba109]20 const url = `http://192.168.0.18:8080/public/professor/${params.professorId}`;
[7cb8c3c]21
22 const fetchData = async () => {
23 try {
24 const response = await fetch(url);
[2998dc4]25 var cyclicGraph = await response.json();
26 var jsogStructure = JSOG.encode(cyclicGraph); // has { '@ref': 'ID' } links instead of cycles
27 cyclicGraph = JSOG.decode(jsogStructure);
28 setProfessor(cyclicGraph);
[4a64cf0]29 setLoaded(true);
[7cb8c3c]30 } catch (error) {
[3a44163]31 console.log("Error", error);
[7cb8c3c]32 }
33 };
34
35 fetchData();
[3e98cea]36 }, [params.professorId]);
[7cb8c3c]37
[4a64cf0]38 if (loaded) {
39 return (
[7cb8c3c]40 <div>
[e958037]41 <ProfessorCard>
42 <ProfessorCardName>{professor.professorName}</ProfessorCardName>
43 <ProfessorCardSeparator />
[5347491]44 <div style={{ marginTop: "10px" }}>
[e958037]45 <ProfessorCardDetails fontSize="20px">
46 {professor.faculty.facultyName}
47 </ProfessorCardDetails>
48 <ProfessorCardDetails fontSize="15px">
49 {professor.faculty.university.universityName}
50 </ProfessorCardDetails>
51 </div>
52 </ProfessorCard>
[f5d4792]53 <h3 style={{ marginBottom: "10px" }}>
54 {professor.relatedOpinions.length}{" "}
55 {professor.relatedOpinions.length !== 1 ? "мислења" : "мислење"}
56 </h3>
[3a44163]57 <div className="opinionTree">
58 <OpinionTree professor={professor} />
59 </div>
[4a64cf0]60 <Outlet />
[7cb8c3c]61 </div>
[4a64cf0]62 );
63 } else {
64 return (
65 <div>
[0df6b9e]66 <p style={{ marginTop: "140px" }}>се вчитува...</p>
[4a64cf0]67 <Outlet />
68 </div>
69 );
70 }
[7cb8c3c]71}
72
73export default Professor;
Note: See TracBrowser for help on using the repository browser.