@@ -34,6 +34,7 @@ type ActivityStats struct {
3434	OpenedPRAuthorCount          int64 
3535	MergedPRs                    issues_model.PullRequestList 
3636	MergedPRAuthorCount          int64 
37+ 	ActiveIssues                 issues_model.IssueList 
3738	OpenedIssues                 issues_model.IssueList 
3839	OpenedIssueAuthorCount       int64 
3940	ClosedIssues                 issues_model.IssueList 
@@ -172,7 +173,7 @@ func (stats *ActivityStats) MergedPRPerc() int {
172173
173174// ActiveIssueCount returns total active issue count 
174175func  (stats  * ActivityStats ) ActiveIssueCount () int  {
175- 	return  stats . OpenedIssueCount ()  +   stats .ClosedIssueCount ( )
176+ 	return  len ( stats .ActiveIssues )
176177}
177178
178179// OpenedIssueCount returns open issue count 
@@ -285,13 +286,21 @@ func (stats *ActivityStats) FillIssues(ctx context.Context, repoID int64, fromTi
285286	stats .ClosedIssueAuthorCount  =  count 
286287
287288	// New issues 
288- 	sess  =  issuesForActivityStatement (ctx , repoID , fromTime ,  false ,  false )
289+ 	sess  =  newlyCreatedIssues (ctx , repoID , fromTime )
289290	sess .OrderBy ("issue.created_unix ASC" )
290291	stats .OpenedIssues  =  make (issues_model.IssueList , 0 )
291292	if  err  =  sess .Find (& stats .OpenedIssues ); err  !=  nil  {
292293		return  err 
293294	}
294295
296+ 	// Active issues 
297+ 	sess  =  activeIssues (ctx , repoID , fromTime )
298+ 	sess .OrderBy ("issue.created_unix ASC" )
299+ 	stats .ActiveIssues  =  make (issues_model.IssueList , 0 )
300+ 	if  err  =  sess .Find (& stats .ActiveIssues ); err  !=  nil  {
301+ 		return  err 
302+ 	}
303+ 
295304	// Opened issue authors 
296305	sess  =  issuesForActivityStatement (ctx , repoID , fromTime , false , false )
297306	if  _ , err  =  sess .Select ("count(distinct issue.poster_id) as `count`" ).Table ("issue" ).Get (& count ); err  !=  nil  {
@@ -317,6 +326,23 @@ func (stats *ActivityStats) FillUnresolvedIssues(ctx context.Context, repoID int
317326	return  sess .Find (& stats .UnresolvedIssues )
318327}
319328
329+ func  newlyCreatedIssues (ctx  context.Context , repoID  int64 , fromTime  time.Time ) * xorm.Session  {
330+ 	sess  :=  db .GetEngine (ctx ).Where ("issue.repo_id = ?" , repoID ).
331+ 		And ("issue.is_pull = ?" , false ).                // Retain the is_pull check to exclude pull requests 
332+ 		And ("issue.created_unix >= ?" , fromTime .Unix ()) // Include all issues created after fromTime 
333+ 
334+ 	return  sess 
335+ }
336+ 
337+ func  activeIssues (ctx  context.Context , repoID  int64 , fromTime  time.Time ) * xorm.Session  {
338+ 	sess  :=  db .GetEngine (ctx ).Where ("issue.repo_id = ?" , repoID ).
339+ 		And ("issue.is_pull = ?" , false ).
340+ 		And ("issue.created_unix >= ?" , fromTime .Unix ()).
341+ 		Or ("issue.closed_unix >= ?" , fromTime .Unix ())
342+ 
343+ 	return  sess 
344+ }
345+ 
320346func  issuesForActivityStatement (ctx  context.Context , repoID  int64 , fromTime  time.Time , closed , unresolved  bool ) * xorm.Session  {
321347	sess  :=  db .GetEngine (ctx ).Where ("issue.repo_id = ?" , repoID ).
322348		And ("issue.is_closed = ?" , closed )
0 commit comments