import React, { useState } from "react"; import { AccordionTitle, SubjectsAccordionDiv, OpenAccordionSymbol, } from "./Styled/SubjectsAccordion.style."; import { EntityLi, EntityUl, EntityParam } from "./Styled/EntityList.style"; import JSOG from "jsog"; const SubjectsAccordion = (props) => { const [height, setHeight] = useState("0"); const [opacity, setOpacity] = useState(0); const [subjects, setSubjects] = useState(null); const [loadedSubjects, setLoadedSubjects] = useState(false); const [counts, setCounts] = useState(null); const [loadedCounts, setLoadedCounts] = useState(false); const [fetchError, setFetchError] = useState(false); const handleClick = () => { if (height === "0") { setHeight("auto"); setOpacity(1); try { Promise.all([fetch(`http://192.168.1.108:8080/public/subjects?studyProgrammeId=${props.title.studyProgrammeId}`), fetch(`http://192.168.1.108:8080/public/study_programme/${props.title.studyProgrammeId}/threadCountForEachSubject`)]) .then(([resSubjects, counts]) => Promise.all([resSubjects.json(), counts.json()])) .then(([dataSubjects, dataCounts]) => { let cyclicGraph1 = dataSubjects; let jsogStructure1 = JSOG.encode(cyclicGraph1); cyclicGraph1 = JSOG.decode(jsogStructure1); setSubjects(cyclicGraph1); setLoadedSubjects(true); let cyclicGraph2 = dataCounts; let jsogStructure2 = JSOG.encode(cyclicGraph2); cyclicGraph2 = JSOG.decode(jsogStructure2); setCounts(cyclicGraph2); setLoadedCounts(true); }) } catch (error) { setFetchError(true); } } else { setHeight("0"); setOpacity(0); } }; return (
handleClick()}> {props.title.studyProgrammeName} ({props.title.cycle}. циклус) {loadedSubjects && subjects.map((item, idx) => { let totalPosts = parseInt(counts[idx].split(",")[1]); return ( {item.subjectName} {totalPosts !== 1 ? ( totalPosts !== 0 ? ( {totalPosts} {" "} мислења ) : ( {totalPosts} {" "} мислења ) ) : ( {totalPosts}{" "} мислење )} ); })}
); }; export default SubjectsAccordion;