Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • reactapp/src/Pages/UserDashboard.js

    raf801e3 r3b6962d  
    1 /* eslint-disable no-unused-vars */
    2 // noinspection JSUnresolvedVariable,ES6ConvertVarToLetConst,JSUnresolvedFunction,SpellCheckingInspection,JSUnusedLocalSymbols
    3 
    41import React, { useEffect, useState, useContext } from "react";
    52import {
     
    2623    ModalInput
    2724} from "../Components/Styled/Modal.style";
    28 import LoadingSpinner from "../Components/Styled/LoadingSpinner.style";
    2925
    3026function UserDashboard() {
     
    4440
    4541  const [newPostContent, setNewPostContent] = useState("");
    46   const [newOpinionTargetProfessorId, setNewOpinionTargetProfessorId] = useState("");
    47   const [newOpinionTargetProfessor, setNewOpinionTargetProfessor] = useState(null);
    48   const [loadedNewProfessor,setLoadedNewProfessor] = useState(false);
    49   const [newParentPostId, setNewParentPostId] = useState("-1");
    50 
    51   const [newThreadTitle, setNewThreadTitle] = useState("");
    52   const [newParentThreadId,setNewParentThreadId] = useState("-1");
    53   const [newTargetSubjectId, setNewTargetSubjectId] = useState("");
    54   const [newTargetSubject, setNewTargetSubject] = useState(null);
    55   const [loadedNewSubject, setLoadedNewSubject] = useState(null);
     42  const [newPostTitle, setNewPostTitle] = useState("");
    5643
    5744  const [markResolved, setMarkResolved] = useState(false);
    58 
    59   const [errMsg, setErrMsg] = useState("");
    6045
    6146  const handleModalCloseClick = () => {
     
    7459      if (reportForModal.post !== null) {
    7560        setNewPostContent(reportForModal.post.content);
    76         if(reportForModal.post.title !== null) setNewThreadTitle(reportForModal.post.title);
    77         if(reportForModal.post.targetProfessor !== undefined) setNewOpinionTargetProfessorId(reportForModal.post.targetProfessor.professorId); //prvicnoto
    78         if(reportForModal.post.targetProfessor === undefined) setNewTargetSubjectId(reportForModal.post.targetSubject.subjectId); //prvicnoto
     61        if(reportForModal.post.title !== null) setNewPostTitle(reportForModal.post.title);
    7962      }
    8063      setReportModalDisplay("block");
     
    8366  }, [reportForModal]);
    8467
    85   const[loadingProf, setLoadingProf] = useState(false);
    86 
    87   const handleNewTargetProfessorChange = async (e) => {
    88     setLoadingProf(true);
    89     e.preventDefault();
    90     if (newOpinionTargetProfessorId!=="") {
    91         try {
    92           const response = await axios.get(`http://192.168.0.29:8080/public/professor/${newOpinionTargetProfessorId}`, {withCredentials: true});
    93           let cyclicGraph = await response.data;
    94           var jsogStructure = JSOG.encode(cyclicGraph);
    95           cyclicGraph = JSOG.decode(jsogStructure);
    96           setNewOpinionTargetProfessor(cyclicGraph);
    97           setLoadedNewProfessor(true);
    98           setLoadingProf(false);
    99         } catch (error) {
    100           setFetchError(true);
    101         }
    102     }
    103   }
    104 
    105   const[loadingSubj, setLoadingSubj] = useState(false);
    106 
    107   const handleNewTargetSubjectChange = async (e) => {
    108     e.preventDefault();
    109     setLoadingSubj(true);
    110     if (newTargetSubjectId!=="") {
    111       try {
    112         const response = await axios.get(`http://192.168.0.29:8080/public/subject/${newTargetSubjectId}`, {withCredentials: true});
    113         let cyclicGraph = await response.data;
    114         var jsogStructure = JSOG.encode(cyclicGraph);
    115         cyclicGraph = JSOG.decode(jsogStructure);
    116         setNewTargetSubject(cyclicGraph);
    117         setLoadedNewSubject(true);
    118         setLoadingSubj(false);
    119       } catch (error) {
    120         setFetchError(true);
    121       }
    122     }
    123   }
    124 
    12568  useEffect(() => {
    126     const url1 = `http://192.168.0.29:8080/secure/currentUser`;
    127     const url2 = `http://192.168.0.29:8080/secure/getAllPostReports`;
     69    const url1 = `http://192.168.0.19:8080/secure/currentUser`;
     70    const url2 = `http://192.168.0.19:8080/secure/getAllPostReports`;
    12871
    12972    const fetchUser = async () => {
     
    162105  // useEffect(() => {
    163106  //   const timer = setTimeout(() => {
    164   //     if (user === null) window.location.reload(); <---- :-)
     107  //     if (user === null) window.location.reload(false); <---- :-)
    165108  //   }, 3000);
    166109  //   return () => clearTimeout(timer);
     
    176119    try {
    177120      if(reportForModal.post !== null && reportForModal.post.targetProfessor !== undefined) {
    178         await axios(`http://192.168.0.29:8080/secure/updateOpinion/${reportForModal.post.postId}`,
     121        await axios(`http://192.168.0.19:8080/secure/updateOpinion/${reportForModal.post.postId}`,
    179122            {
    180123              method: "put",
     
    182125                newContent: newPostContent,
    183126                newTargetProfessorId: reportForModal.post.targetProfessor.professorId,
    184                 newParentPostId: reportForModal.post.parent !== null ? reportForModal.post.parent.postId : "-1"
    185127              },
    186128              withCredentials: true,
    187129            })
     130        window.location.reload(false);
    188131      } else if(reportForModal.post !== null && reportForModal.post.targetProfessor === undefined) {
    189         await axios(`http://192.168.0.29:8080/secure/updateThread/${reportForModal.post.postId}`,
     132        await axios(`http://192.168.0.19:8080/secure/updateThread/${reportForModal.post.postId}`,
    190133            {
    191134              method: "put",
    192135              data: {
    193                 newTitle: newThreadTitle,
     136                newTitle: newPostTitle,
    194137                newContent: newPostContent,
    195                 newTargetSubjectId: reportForModal.post.targetSubject.subjectId,
    196                 newParentThreadId: reportForModal.post.parent !== null ? reportForModal.post.parent.postId : "-1"
     138                newTargetSubjectId: reportForModal.post.targetSubject.subjectId
    197139              },
    198140              withCredentials: true,
    199141            })
    200       }
    201         await axios(`http://192.168.0.29:8080/secure/markReportResolved/${reportForModal.postReportId}/${markResolved ? `resolve` : `open`}`,{
    202           method: "get",
    203           withCredentials: true
    204         })
    205     } catch (error) {
    206       setFetchError(true);
    207     }
    208     window.location.reload();
    209   }
    210 
    211   const handleRelocate = async (e) => {
    212     e.preventDefault();
    213     try {
    214       if(reportForModal.post !== null && reportForModal.post.targetProfessor !== undefined) {
    215         var response = await axios(`http://192.168.0.29:8080/secure/updateOpinion/${reportForModal.post.postId}`,
    216             {
    217               method: "put",
    218               data: {
    219                 newContent: reportForModal.post.content,
    220                 newTargetProfessorId: newOpinionTargetProfessorId,
    221                 newParentPostId: newParentPostId==="Постави како самостојно мислење" ? "-1" : newParentPostId //:)
    222               },
    223               withCredentials: true,
    224             })
    225       } else if(reportForModal.post !== null && reportForModal.post.targetProfessor === undefined) {
    226         var response = await axios(`http://192.168.0.29:8080/secure/updateThread/${reportForModal.post.postId}`,
    227             {
    228               method: "put",
    229               data: {
    230                 newTitle: newThreadTitle,
    231                 newContent: reportForModal.post.content,
    232                 newTargetSubjectId: newTargetSubjectId,
    233                 newParentThreadId: newParentThreadId==="Постави како самостојно мислење (нова тема)" ? "-1" : newParentThreadId //:)
    234               },
    235               withCredentials: true,
    236             })
    237       }
    238       await axios(`http://192.168.0.29:8080/secure/markReportResolved/${reportForModal.postReportId}/${markResolved ? `resolve` : `open`}`,{
    239         method: "get",
    240         withCredentials: true
    241       })
    242     } catch (error) {
    243       setFetchError(true);
    244     }
    245     setErrMsg(response.data);
    246     if (response.data==="") window.location.reload();
    247   }
    248 
    249   const handleDelete = async (e) => {
    250     e.preventDefault();
    251     try {
    252       if(reportForModal.post !== null && reportForModal.post.targetProfessor !== undefined) {
    253         await axios(`http://192.168.0.29:8080/secure/deleteOpinion/${reportForModal.post.postId}`,
    254             {
    255               method: "delete",
    256               withCredentials: true,
    257             })
    258         window.location.reload();
    259       } else if(reportForModal.post !== null && reportForModal.post.targetProfessor === undefined) {
    260         await axios(`http://192.168.0.29:8080/secure/deleteThread/${reportForModal.post.postId}`,
    261             {
    262               method: "delete",
    263               withCredentials: true,
    264             })
     142        window.location.reload(false);
    265143      }
    266144    } catch (error) {
    267145      setFetchError(true);
    268146    }
    269     window.location.reload();
     147  }
     148
     149  const handleDelete = (e) => {
     150    e.preventDefault();
    270151  }
    271152
     
    300181      ) : (
    301182          <h3>Нема пријавени мислења</h3>
    302       ) : loadedUser && user.userRole==='MODERATOR' ? <LoadingSpinner/> : ""}
     183      ) : loadedUser && user.userRole==='MODERATOR' ? "се вчитува..." : ""}
    303184      <EntityUl style={{marginTop:"25px"}}>
    304185      {loadedPostReports && postReports.map((postReport) => {
     
    344225                  {dateConverter(
    345226                    new Date(post.timePosted).toString().slice(4, -43)
    346                   )} <span style={{fontStyle:"normal",color:"blue"}}>#{post.postId}</span>
     227                  )}
    347228                </OpinionCardContentTime>
    348229              </OpinionCardContent>
     
    406287                          {dateConverter(
    407288                              new Date(reportForModal.post.timePosted).toString().slice(4, -43)
    408                           )} <span style={{fontStyle:"normal",color:"blue"}}>#{reportForModal.post.postId}</span>
     289                          )}
    409290                        </OpinionCardContentTime>
    410291                      </OpinionCardContent>
     
    472353                  actionType === 0 ?
    473354              (<form onSubmit={e => handleEdit(e)}>
    474                 {reportForModal.post.title !== null &&
    475                     <label>
     355                {reportForModal.post.title !== null && <label>
    476356                  <b>Нов наслов на тема:</b>
    477357                  <ModalInput
    478                       value={newThreadTitle}
    479                       onChange={e => setNewThreadTitle(e.target.value)}
     358                      value={newPostTitle}
     359                      onChange={e => setNewPostTitle(e.target.value)}
    480360                      id="title"
    481361                      spellCheck={false}
     
    499379                  <input
    500380                      type="checkbox"
     381                      checked={markResolved}
    501382                      onChange={handleMarkResolved}
    502383                  />
     
    522403                          </form>)
    523404                          :
    524                           (reportForModal.post.targetProfessor !== undefined ?
    525                               (<form onSubmit={e => handleRelocate(e)}>
    526                                 <p style={{color:"black"}}>Внеси <span style={{fontWeight:"bold"}}>ID</span> на секцијата за дискусија (за <span style={{fontWeight:"bold"}}>професор</span>)
    527                                     во која треба да биде преместено мислењето:</p>
    528                                     <div style={{marginTop:"15px"}}>
    529                                       <label>
    530                                         <ModalInput
    531                                             value={newOpinionTargetProfessorId}
    532                                             onChange={e => {e.preventDefault();setNewOpinionTargetProfessorId(e.target.value)}}
    533                                             id="newOpinionTargetProfessorId"
    534                                             spellCheck={false}
    535                                             style={{marginTop:"10px", marginBottom:"10px", width:"90px"}}
    536                                         />
    537                                         <button onClick={async (e) => {await handleNewTargetProfessorChange(e);}} style={{marginBottom:"10px", padding:"5px", fontFamily: "Roboto Mono, monospace"}}>Зачувај</button>
    538                                         {newOpinionTargetProfessor!==null && !loadingProf ? <p style={{color:"black", marginBottom:"20px", opacity:"50%"}}>Мислењето ќе се премести во секцијата за професорот со <span style={{fontWeight:"bold"}}>ID=
    539                                           {newOpinionTargetProfessor.professorId}</span> (<span style={{fontWeight:"bold"}}>{newOpinionTargetProfessor.professorName}</span>)</p> : loadingProf ? <LoadingSpinner style={{marginBottom:"15px", marginTop:"15px"}}/> : null}
    540                                         {newOpinionTargetProfessor && <p style={{color:"black", marginBottom:"10px"}}>Постави како дете на мислење со ID:</p>}
    541                                         {newOpinionTargetProfessor &&
    542                                         <select value={newParentPostId} onChange={e => setNewParentPostId(e.target.value)} style={{width:"280px", display:"block", padding:"5px",marginBottom:"5px", fontFamily: "Roboto Mono, monospace"}}>
    543                                           <option value="-1">Постави како самостојно мислење</option>
    544                                           {newOpinionTargetProfessor.relatedOpinions.filter((opinion)=>opinion.postId!==reportForModal.post.postId).map((opinion) => {
    545                                             return <option key={opinion.postId} value={opinion.postId}>{opinion.postId}</option>})
    546                                           }
    547                                         </select>}
    548                                         <br/>
    549                                         <input
    550                                             type="checkbox"
    551                                             defaultChecked={reportForModal.resolved}
    552                                             onChange={handleMarkResolved}
    553                                         />
    554                                         <span style={{marginLeft:"10px", fontWeight:"bold"}}>Означи како разрешено</span>
    555                                       </label>
    556                                     </div>
    557                                 {errMsg!=="" && <p style={{color:"red", display:"flex", justifyContent:"space-around"}}>{errMsg}</p>}
    558                                     <ModalFooter type="submit">ПОТВРДИ</ModalFooter>
    559                                   </form>) :
    560                               //THREAD CASE
    561                               (<form onSubmit={e => handleRelocate(e)}>
    562                                 <p style={{color:"black"}}>Внеси <span style={{fontWeight:"bold"}}>ID</span> на секцијата за дискусија (за <span style={{fontWeight:"bold"}}>предмет</span>)
    563                                   во која треба да биде преместено мислењето:</p>
    564                                 <div style={{marginTop:"15px"}}>
    565                                   <label>
    566                                     <ModalInput
    567                                         value={newTargetSubjectId}
    568                                         onChange={e => {e.preventDefault();setNewTargetSubjectId(e.target.value)}}
    569                                         id="newTargetSubjectId"
    570                                         spellCheck={false}
    571                                         style={{marginTop:"10px", marginBottom:"10px", width:"90px"}}
    572                                     />
    573                                     <button onClick={async (e) => {await handleNewTargetSubjectChange(e);}} style={{marginBottom:"10px", padding:"5px", fontFamily: "Roboto Mono, monospace"}}>Зачувај</button>
    574                                     {newTargetSubject!==null && !loadingSubj ? <p style={{color:"black", marginBottom:"20px", opacity:"50%"}}>Мислењето ќе се премести во секцијата за предметот со <span style={{fontWeight:"bold"}}>ID=
    575                                       {newTargetSubject.subjectId}</span> (<span style={{fontWeight:"bold"}}>{newTargetSubject.subjectName}</span>)</p> : loadingSubj ? <LoadingSpinner style={{marginBottom:"15px", marginTop:"15px"}}/> : null}
    576                                     {newTargetSubject && <p style={{color:"black", marginBottom:"10px"}}>Постави како дете на мислење со ID:</p>}
    577                                     {newTargetSubject &&
    578                                         <select value={newParentThreadId} onChange={e => setNewParentThreadId(e.target.value)} style={{width:"370px", display:"block", padding:"5px",marginBottom:"5px", fontFamily: "Roboto Mono, monospace"}}>
    579                                           <option value="-1">Постави како самостојно мислење (нова тема)</option>
    580                                           {newTargetSubject.threads.filter((thread)=>thread.postId!==reportForModal.post.postId).map((thread) => {
    581                                             return <option key={thread.postId} value={thread.postId}>{thread.postId}</option>})
    582                                           }
    583                                         </select>}
    584                                     {newParentThreadId==="-1" && loadedNewSubject &&
    585                                         <>
    586                                         <p style={{marginTop:"10px"}}>Наслов на нова тема:</p>
    587                                       <ModalInput
    588                                         value={newThreadTitle}
    589                                         onChange={e => setNewThreadTitle(e.target.value)}
    590                                         id="titleChangeRelocate"
    591                                         spellCheck={false}
    592                                         style={{marginTop:"10px"}}
    593                                     />
    594                                     </>}
    595                                     <br/>
    596                                     <input
    597                                         type="checkbox"
    598                                         defaultChecked={reportForModal.resolved}
    599                                         onChange={handleMarkResolved}
    600                                     />
    601                                     <span style={{marginLeft:"10px", fontWeight:"bold"}}>Означи како разрешено</span>
    602                                   </label>
    603                                 </div>
    604                                 {errMsg!=="" && <p style={{color:"red", display:"flex", justifyContent:"space-around"}}>{errMsg}</p>}
    605                                 <ModalFooter type="submit">ПОТВРДИ</ModalFooter>
    606                               </form>))
    607                   : null
     405                          ("123")
     406                          : null
    608407              }
    609408                </ModalBody>
     
    613412    </>
    614413  ) : (
    615       <LoadingSpinner/>
     414    <>се вчитува...</>
    616415  );
    617416}
Note: See TracChangeset for help on using the changeset viewer.