11import React , { useEffect , useState } from "react" ;
22import Layout from "@theme/Layout" ;
33import "./index.css" ;
4+ import { useHistory , useLocation } from "react-router-dom" ;
45import useParseMarkdown from "../../../hooks/useParseMarkdown" ;
56import ErrorComponent from "../../../components/ErrorComponent" ;
67import Sidebar from "../../../components/Sidebar" ;
78import C4GT2024Description from "../../../components/C4gt2024Description" ;
9+ import OrgDescription from "../../../components/OrgDescription" ;
10+ import IssueDescription from "../../../components/IssueDescription" ;
811
912function C4GT2024 ( ) {
13+ const location = useLocation ( ) ;
14+ const history = useHistory ( ) ;
1015 const { API_AUTH_KEY , API_BASE_URL } = useParseMarkdown ( ) ;
11- const [ issueData , setIssueData ] = useState ( null ) ;
12- const [ error , setError ] = useState ( null ) ;
1316 const [ currentOrg , setCurrentOrg ] = useState ( null ) ;
1417 const [ currentIssue , setCurrentIssue ] = useState ( null ) ;
18+ const [ issueData , setIssueData ] = useState ( null ) ;
19+ const [ currentOrgData , setCurrentOrgData ] = useState ( null ) ;
20+ const [ currentTab , setCurrentTab ] = useState ( null )
21+ const [ error , setError ] = useState ( null ) ;
1522
1623 useEffect ( ( ) => {
1724 setError ( ( ) => null ) ;
25+ const queryString = location . search ;
26+ const urlParams = new URLSearchParams ( queryString ) ;
27+ const ifOrg = urlParams . get ( "id" ) ? urlParams . get ( "id" ) : null ;
28+ const ifIssue = urlParams . get ( "issue" ) ? urlParams . get ( "issue" ) : null ;
29+ const newUrl = ifIssue
30+ ? `/docs/2024?id=${ ifOrg } &issue=${ ifIssue } `
31+ : ifOrg
32+ ? `/docs/2024?id=${ ifOrg } `
33+ : "/docs/2024/" ;
34+ history . push ( newUrl ) ;
35+ if ( ifIssue ) setCurrentIssue ( ( ) => ifIssue ) ;
36+ else setCurrentIssue ( null ) ;
37+ if ( ifOrg ) { setCurrentOrg ( ( ) => ifOrg ) ;
38+ setCurrentTab ( "org" )
39+ }
40+ else { setCurrentOrg ( null ) ;
41+ setCurrentTab ( "c4gt" )
42+ }
1843 fetch ( `${ API_BASE_URL } /issues` , {
1944 method : "GET" ,
2045 headers : {
@@ -29,13 +54,49 @@ function C4GT2024() {
2954 throw new Error ( `${ data ?. message } ` ) ;
3055 } else if ( data ?. error ) {
3156 throw new Error ( `${ data ?. error } ` ) ;
32- } else setIssueData ( ( ) => data ?. issues ) ;
57+ } else {
58+ let issues = data ?. issues ;
59+ setIssueData ( ( ) => issues ) ;
60+ if ( ifOrg ) {
61+ setCurrentOrgData ( ( ) => {
62+ let issue_data = issues ?. filter ( ( d , i ) => {
63+ if ( d . org_name == ifOrg ) return d . issues ;
64+ else return ;
65+ } ) ;
66+ return issue_data ;
67+ } ) ;
68+ } else setCurrentOrgData ( null ) ;
69+ }
3370 } )
3471 . catch ( ( error ) => {
3572 setError ( ( ) => error ) ;
3673 } ) ;
3774 } , [ ] ) ;
3875
76+ useEffect ( ( ) => {
77+ const queryString = location . search ;
78+ const urlParams = new URLSearchParams ( queryString ) ;
79+ const ifOrg = urlParams . get ( "id" ) ? urlParams . get ( "id" ) : null ;
80+ const ifIssue = urlParams . get ( "issue" ) ? urlParams . get ( "issue" ) : null ;
81+ if ( ifIssue ) setCurrentIssue ( ( ) => ifIssue ) ;
82+ else setCurrentIssue ( null ) ;
83+ if ( ifOrg ) {
84+ setCurrentOrg ( ( ) => ifOrg ) ;
85+ setCurrentOrgData ( ( ) => {
86+ let data = issueData ?. filter ( ( d , i ) => {
87+ if ( d . org_name == ifOrg ) return d . issues ;
88+ else return ;
89+ } ) ;
90+ return data ;
91+ } ) ;
92+ setCurrentTab ( "org" )
93+ } else {
94+ setCurrentOrg ( null ) ;
95+ setCurrentOrgData ( null ) ;
96+ setCurrentTab ( "c4gt" )
97+ }
98+ } , [ location ] ) ;
99+
39100 return (
40101 < >
41102 { error ? (
@@ -47,15 +108,34 @@ function C4GT2024() {
47108 < aside className = "theme-doc-sidebar-container sidebar-container-2024" >
48109 < Sidebar
49110 issueData = { issueData }
50- currentTab = { "c4gt" }
111+ currentTab = { currentTab }
51112 currentOrg = { currentOrg }
52113 currentIssue = { currentIssue }
53114 setCurrentIssue = { setCurrentIssue }
54115 setCurrentOrg = { setCurrentOrg }
116+ setCurrentTab = { setCurrentTab }
55117 />
56118 </ aside >
57119 < main className = "main-container" >
120+ { currentTab === "c4gt" ? (
58121 < C4GT2024Description />
122+ ) : currentIssue != null ? (
123+ < IssueDescription
124+ currentOrg = { currentOrg }
125+ currentIssue = { currentIssue }
126+ />
127+ ) : currentOrg != null ? (
128+ < OrgDescription
129+ currentIssue = { currentIssue }
130+ setCurrentIssue = { setCurrentIssue }
131+ currentOrg = { currentOrg }
132+ issueData = { issueData }
133+ currentOrgData = { currentOrgData }
134+ />
135+ ) : (
136+ < > </ >
137+ ) }
138+
59139 </ main >
60140 </ div >
61141 </ div >
0 commit comments