11import React , { useState , useEffect } from 'react' ;
22import { Table , Button } from 'antd' ;
33import TestBreadcrumb from './TestBreadcrumb' ;
4- import { getParams } from '../utils/query' ;
54import { fetchData } from '../utils/Utils' ;
65import { SmileOutlined , FrownOutlined } from '@ant-design/icons' ;
7- import { useLocation } from 'react-router-dom' ;
86import { notification } from 'antd' ;
97
108import './table.css' ;
@@ -87,60 +85,85 @@ const PossibleIssues = ({
8785 const testOutput = result . output ;
8886
8987 // fetch related issues with Github API
90- let additionalRepo = '' ;
88+ let openj9Repo = '' ;
89+ let additionalResponse = [ ] ;
9190 if ( buildName . includes ( 'j9' ) || buildName . includes ( 'ibm' ) ) {
92- additionalRepo = '+repo:eclipse-openj9/openj9' ;
93- } else if ( buildName . includes ( 'hs' ) ) {
91+ openj9Repo = '+repo:eclipse-openj9/openj9' ;
92+
93+ additionalResponse = await fetchData (
94+ `/api/getInternalGitIssues?url=&text=${ generalTestName } `
95+ ) ;
96+ } else {
9497 additionalRepo =
9598 '+repo:adoptium/infrastructure+repo:adoptium/aqa-build' ;
9699 }
97100 const response = await fetch (
98101 `https://api.github.com/search/issues?q=${ generalTestName } +repo:adoptium/aqa-tests` +
99- `+repo:adoptium/aqa-systemtest+repo:adoptium/TKG${ additionalRepo } ` ,
102+ `+repo:adoptium/aqa-systemtest+repo:adoptium/TKG${ openj9Repo } ` ,
100103 {
101104 method : 'get' ,
102105 }
103106 ) ;
104- var oldDate = new Date ( ) ;
105- oldDate . setMonth ( oldDate . getMonth ( ) - 6 ) ;
107+
108+ let relatedIssues = [ ] ;
106109 if ( response . ok ) {
107- const relatedIssues = await response . json ( ) ;
110+ relatedIssues = await response . json ( ) ;
111+ relatedIssues = relatedIssues . items ;
112+ }
113+ if ( additionalResponse ) {
114+ relatedIssues = [ ...relatedIssues , ...additionalResponse ] ;
115+ }
116+ if ( relatedIssues && relatedIssues . length > 0 ) {
117+ console . log ( 'relatedIssues' , relatedIssues ) ;
108118 let dataSource = { } ;
109- const repoUrlAPIPrefix = 'https://api.github.com/repos/' ;
110- for ( let index = 0 ; index < relatedIssues . items . length ; index ++ ) {
111- const createdAt = new Date (
112- relatedIssues . items [ index ] . created_at
113- ) ;
114- const is_opne = relatedIssues . items [ index ] . state ;
115- if ( createdAt < oldDate && is_opne === 'closed' ) {
116- continue ;
119+ const today = new Date ( ) ;
120+ const closedIssueMinDate = new Date ( ) . setMonth (
121+ today . getMonth ( ) - 6
122+ ) ;
123+
124+ const openIssueMinDate = new Date ( ) . setMonth ( today . getMonth ( ) - 24 ) ;
125+ //for (let index = 0; index < relatedIssues.length; index++) {
126+ relatedIssues . forEach ( ( issue ) => {
127+ const createdAt = new Date ( issue . created_at ) ;
128+ const closedAt = issue . closed_at
129+ ? new Date ( issue . closed_at )
130+ : '' ;
131+ // For matched closed issue, only display if the issue was closed in the last 6 months
132+ // For matched open issue, only display if the issue has been opened within 24 months
133+ if ( issue . state === 'closed' ) {
134+ if ( closedAt && createdAt < closedIssueMinDate ) {
135+ return ;
136+ }
137+ } else {
138+ if ( createdAt < openIssueMinDate ) {
139+ return ;
140+ }
117141 }
118142 const createdAtStr = createdAt . toLocaleString ( ) ;
119- const repoName = relatedIssues . items [
120- index
121- ] . repository_url . replace ( repoUrlAPIPrefix , '' ) ;
122- const issue = (
143+ const closedAtStr = closedAt . toLocaleString ( ) ;
144+ const repoName = issue . repository_url ;
145+ const issueTitle = (
123146 < a
124- href = { relatedIssues . items [ index ] . html_url }
147+ href = { issue . html_url }
125148 target = "_blank"
126149 rel = "noopener noreferrer"
127150 >
128- { relatedIssues . items [ index ] . title }
151+ { issue . number } : { issue . title }
129152 </ a >
130153 ) ;
131154 const issueCreator = (
132155 < a
133- href = { relatedIssues . items [ index ] . user . html_url }
156+ href = { issue . user . html_url }
134157 target = "_blank"
135158 rel = "noopener noreferrer"
136159 >
137- { relatedIssues . items [ index ] . user . login }
160+ { issue . user . login }
138161 </ a >
139162 ) ;
140- const issueState = relatedIssues . items [ index ] . state ;
141- const issueFullName = relatedIssues . items [ index ] . title ;
142- const issueNumber = relatedIssues . items [ index ] . number ;
143- const creatorName = relatedIssues . items [ index ] . user . login ;
163+ const issueState = issue . state ;
164+ const issueFullName = issue . title ;
165+ const issueNumber = issue . number ;
166+ const creatorName = issue . user . login ;
144167 const userFeedback = (
145168 < >
146169 < Button
@@ -186,14 +209,17 @@ const PossibleIssues = ({
186209 dataSource [ repoName ] = dataSource [ repoName ] || [ ] ;
187210 dataSource [ repoName ] . push ( {
188211 key : dataSource [ repoName ] . length ,
189- issue ,
212+ issueTitle ,
190213 issueCreator,
191214 createdAt,
192215 createdAtStr,
216+ closedAt,
217+ closedAtStr,
193218 issueState,
194219 userFeedback,
195220 } ) ;
196- }
221+ } ) ;
222+
197223 setLoading ( false ) ;
198224 setDataSource ( dataSource ) ;
199225 } else {
@@ -207,8 +233,8 @@ const PossibleIssues = ({
207233 const columns = [
208234 {
209235 title : 'Possible Issues' ,
210- dataIndex : 'issue ' ,
211- key : 'issue ' ,
236+ dataIndex : 'issueTitle ' ,
237+ key : 'issueTitle ' ,
212238 } ,
213239 {
214240 title : 'Issue Creator' ,
@@ -223,6 +249,11 @@ const PossibleIssues = ({
223249 return a . createdAt - b . createdAt ;
224250 } ,
225251 } ,
252+ {
253+ title : 'Closed At' ,
254+ dataIndex : 'closedAtStr' ,
255+ key : 'closedAtStr' ,
256+ } ,
226257 {
227258 title : 'State' ,
228259 dataIndex : 'issueState' ,
0 commit comments