@@ -12,7 +12,7 @@ import {
1212 TableHead ,
1313 TableRow ,
1414 TablePagination ,
15- Link as MuiLink ,
15+ Link ,
1616 CircularProgress ,
1717 Alert ,
1818 Tabs ,
@@ -78,7 +78,7 @@ const Home: React.FC = () => {
7878
7979 const filterData = ( data : GitHubItem [ ] , filterType : string ) : GitHubItem [ ] => {
8080 let filtered = [ ...data ] ;
81- if ( filterType === "open" || filterType === "closed" || filterType === "merged" ) {
81+ if ( [ "open" , "closed" , "merged" ] . includes ( filterType ) ) {
8282 filtered = filtered . filter ( ( item ) =>
8383 filterType === "merged"
8484 ? ! ! item . pull_request ?. merged_at
@@ -112,12 +112,6 @@ const Home: React.FC = () => {
112112 tab === 0 ? filterData ( issues , issueFilter ) : filterData ( prs , prFilter ) ;
113113 const displayData = paginateData ( currentData ) ;
114114
115- // helper to extract "owner/repo" from repository_url
116- const getRepoName = ( url : string ) => {
117- const parts = url . split ( "/" ) ;
118- return parts . slice ( - 2 ) . join ( "/" ) ;
119- } ;
120-
121115 return (
122116 < Container
123117 maxWidth = "lg"
@@ -155,11 +149,7 @@ const Home: React.FC = () => {
155149 required
156150 sx = { { flex : 1 } }
157151 />
158- < Button
159- type = "submit"
160- variant = "contained"
161- sx = { { minWidth : "120px" } }
162- >
152+ < Button type = "submit" variant = "contained" sx = { { minWidth : "120px" } } >
163153 Fetch Data
164154 </ Button >
165155 </ Box >
@@ -207,11 +197,7 @@ const Home: React.FC = () => {
207197 mb : 3 ,
208198 } }
209199 >
210- < Tabs
211- value = { tab }
212- onChange = { ( e , newValue ) => setTab ( newValue ) }
213- sx = { { flex : 1 } }
214- >
200+ < Tabs value = { tab } onChange = { ( e , newValue ) => setTab ( newValue ) } sx = { { flex : 1 } } >
215201 < Tab label = { `Issues (${ filterData ( issues , issueFilter ) . length } )` } />
216202 < Tab label = { `Pull Requests (${ filterData ( prs , prFilter ) . length } )` } />
217203 </ Tabs >
@@ -254,55 +240,53 @@ const Home: React.FC = () => {
254240 < CircularProgress />
255241 </ Box >
256242 ) : (
257- < Box >
258- < Box sx = { { maxHeight : "400px" , overflowY : "auto" , display : "block" } } >
259- < TableContainer component = { Paper } >
260- < Table >
261- < TableHead >
262- < TableRow >
263- < TableCell sx = { { textAlign : "left" } } > Title</ TableCell >
264- < TableCell sx = { { textAlign : "center" } } > Repository</ TableCell >
265- < TableCell sx = { { textAlign : "center" } } > State</ TableCell >
266- < TableCell sx = { { textAlign : "left" } } > Created</ TableCell >
243+ < Box sx = { { maxHeight : "400px" , overflowY : "auto" , display : "block" } } >
244+ < TableContainer component = { Paper } >
245+ < Table >
246+ < TableHead >
247+ < TableRow >
248+ < TableCell sx = { { textAlign : "left" } } > Title</ TableCell >
249+ < TableCell sx = { { textAlign : "center" } } > Repository</ TableCell >
250+ < TableCell sx = { { textAlign : "center" } } > State</ TableCell >
251+ < TableCell sx = { { textAlign : "left" } } > Created</ TableCell >
252+ </ TableRow >
253+ </ TableHead >
254+ < TableBody >
255+ { displayData . map ( ( item : GitHubItem ) => (
256+ < TableRow key = { item . id } >
257+ < TableCell sx = { { textAlign : "left" } } >
258+ < Link
259+ href = { item . html_url }
260+ target = "_blank"
261+ rel = "noopener noreferrer"
262+ underline = "hover"
263+ sx = { { color : theme . palette . primary . main } }
264+ >
265+ { item . title }
266+ </ Link >
267+ </ TableCell >
268+ < TableCell sx = { { textAlign : "center" } } >
269+ { item . repository_url . split ( "/" ) . slice ( - 1 ) [ 0 ] }
270+ </ TableCell >
271+ < TableCell sx = { { textAlign : "center" } } >
272+ { item . pull_request ?. merged_at ? "merged" : item . state }
273+ </ TableCell >
274+ < TableCell sx = { { textAlign : "left" } } >
275+ { formatDate ( item . created_at ) }
276+ </ TableCell >
267277 </ TableRow >
268- </ TableHead >
269- < TableBody >
270- { displayData . map ( ( item : GitHubItem ) => (
271- < TableRow key = { item . id } >
272- < TableCell sx = { { textAlign : "left" } } >
273- < MuiLink
274- href = { item . html_url }
275- target = "_blank"
276- rel = "noopener noreferrer"
277- underline = "hover"
278- sx = { { color : theme . palette . primary . main } }
279- >
280- { item . title }
281- </ MuiLink >
282- </ TableCell >
283- < TableCell sx = { { textAlign : "center" } } >
284- { getRepoName ( item . repository_url ) }
285- </ TableCell >
286- < TableCell sx = { { textAlign : "center" } } >
287- { item . pull_request ?. merged_at ? "merged" : item . state }
288- </ TableCell >
289- < TableCell sx = { { textAlign : "left" } } >
290- { formatDate ( item . created_at ) }
291- </ TableCell >
292- </ TableRow >
293- ) ) }
294- </ TableBody >
295- </ Table >
296- < TablePagination
297- component = "div"
298- count = { currentData . length }
299- page = { page }
300- onPageChange = { handleChangePage }
301- rowsPerPage = { itemsPerPage }
302- rowsPerPageOptions = { [ 10 , 25 , 50 ] }
303- />
304- </ TableContainer >
305- </ Box >
278+ ) ) }
279+ </ TableBody >
280+ </ Table >
281+ < TablePagination
282+ component = "div"
283+ count = { currentData . length }
284+ page = { page }
285+ onPageChange = { handleChangePage }
286+ rowsPerPage = { itemsPerPage }
287+ rowsPerPageOptions = { [ 5 ] }
288+ />
289+ </ TableContainer >
306290 </ Box >
307291 ) }
308292 </ Container >
0 commit comments