Skip to content

Commit 7a0a133

Browse files
authored
Fix dashboard issues labels filter bug (#14210) (#14214)
1 parent 17022f8 commit 7a0a133

File tree

2 files changed

+26
-12
lines changed

2 files changed

+26
-12
lines changed

models/issue.go

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1491,6 +1491,7 @@ type UserIssueStatsOptions struct {
14911491
IsPull bool
14921492
IsClosed bool
14931493
IssueIDs []int64
1494+
LabelIDs []int64
14941495
}
14951496

14961497
// GetUserIssueStats returns issue statistic information for dashboard by given conditions.
@@ -1507,57 +1508,66 @@ func GetUserIssueStats(opts UserIssueStatsOptions) (*IssueStats, error) {
15071508
cond = cond.And(builder.In("issue.id", opts.IssueIDs))
15081509
}
15091510

1511+
sess := func(cond builder.Cond) *xorm.Session {
1512+
s := x.Where(cond)
1513+
if len(opts.LabelIDs) > 0 {
1514+
s.Join("INNER", "issue_label", "issue_label.issue_id = issue.id").
1515+
In("issue_label.label_id", opts.LabelIDs)
1516+
}
1517+
return s
1518+
}
1519+
15101520
switch opts.FilterMode {
15111521
case FilterModeAll:
1512-
stats.OpenCount, err = x.Where(cond).And("issue.is_closed = ?", false).
1522+
stats.OpenCount, err = sess(cond).And("issue.is_closed = ?", false).
15131523
And(builder.In("issue.repo_id", opts.UserRepoIDs)).
15141524
Count(new(Issue))
15151525
if err != nil {
15161526
return nil, err
15171527
}
1518-
stats.ClosedCount, err = x.Where(cond).And("issue.is_closed = ?", true).
1528+
stats.ClosedCount, err = sess(cond).And("issue.is_closed = ?", true).
15191529
And(builder.In("issue.repo_id", opts.UserRepoIDs)).
15201530
Count(new(Issue))
15211531
if err != nil {
15221532
return nil, err
15231533
}
15241534
case FilterModeAssign:
1525-
stats.OpenCount, err = x.Where(cond).And("issue.is_closed = ?", false).
1535+
stats.OpenCount, err = sess(cond).And("issue.is_closed = ?", false).
15261536
Join("INNER", "issue_assignees", "issue.id = issue_assignees.issue_id").
15271537
And("issue_assignees.assignee_id = ?", opts.UserID).
15281538
Count(new(Issue))
15291539
if err != nil {
15301540
return nil, err
15311541
}
1532-
stats.ClosedCount, err = x.Where(cond).And("issue.is_closed = ?", true).
1542+
stats.ClosedCount, err = sess(cond).And("issue.is_closed = ?", true).
15331543
Join("INNER", "issue_assignees", "issue.id = issue_assignees.issue_id").
15341544
And("issue_assignees.assignee_id = ?", opts.UserID).
15351545
Count(new(Issue))
15361546
if err != nil {
15371547
return nil, err
15381548
}
15391549
case FilterModeCreate:
1540-
stats.OpenCount, err = x.Where(cond).And("issue.is_closed = ?", false).
1550+
stats.OpenCount, err = sess(cond).And("issue.is_closed = ?", false).
15411551
And("issue.poster_id = ?", opts.UserID).
15421552
Count(new(Issue))
15431553
if err != nil {
15441554
return nil, err
15451555
}
1546-
stats.ClosedCount, err = x.Where(cond).And("issue.is_closed = ?", true).
1556+
stats.ClosedCount, err = sess(cond).And("issue.is_closed = ?", true).
15471557
And("issue.poster_id = ?", opts.UserID).
15481558
Count(new(Issue))
15491559
if err != nil {
15501560
return nil, err
15511561
}
15521562
case FilterModeMention:
1553-
stats.OpenCount, err = x.Where(cond).And("issue.is_closed = ?", false).
1563+
stats.OpenCount, err = sess(cond).And("issue.is_closed = ?", false).
15541564
Join("INNER", "issue_user", "issue.id = issue_user.issue_id and issue_user.is_mentioned = ?", true).
15551565
And("issue_user.uid = ?", opts.UserID).
15561566
Count(new(Issue))
15571567
if err != nil {
15581568
return nil, err
15591569
}
1560-
stats.ClosedCount, err = x.Where(cond).And("issue.is_closed = ?", true).
1570+
stats.ClosedCount, err = sess(cond).And("issue.is_closed = ?", true).
15611571
Join("INNER", "issue_user", "issue.id = issue_user.issue_id and issue_user.is_mentioned = ?", true).
15621572
And("issue_user.uid = ?", opts.UserID).
15631573
Count(new(Issue))
@@ -1567,30 +1577,30 @@ func GetUserIssueStats(opts UserIssueStatsOptions) (*IssueStats, error) {
15671577
}
15681578

15691579
cond = cond.And(builder.Eq{"issue.is_closed": opts.IsClosed})
1570-
stats.AssignCount, err = x.Where(cond).
1580+
stats.AssignCount, err = sess(cond).
15711581
Join("INNER", "issue_assignees", "issue.id = issue_assignees.issue_id").
15721582
And("issue_assignees.assignee_id = ?", opts.UserID).
15731583
Count(new(Issue))
15741584
if err != nil {
15751585
return nil, err
15761586
}
15771587

1578-
stats.CreateCount, err = x.Where(cond).
1588+
stats.CreateCount, err = sess(cond).
15791589
And("poster_id = ?", opts.UserID).
15801590
Count(new(Issue))
15811591
if err != nil {
15821592
return nil, err
15831593
}
15841594

1585-
stats.MentionCount, err = x.Where(cond).
1595+
stats.MentionCount, err = sess(cond).
15861596
Join("INNER", "issue_user", "issue.id = issue_user.issue_id and issue_user.is_mentioned = ?", true).
15871597
And("issue_user.uid = ?", opts.UserID).
15881598
Count(new(Issue))
15891599
if err != nil {
15901600
return nil, err
15911601
}
15921602

1593-
stats.YourRepositoriesCount, err = x.Where(cond).
1603+
stats.YourRepositoriesCount, err = sess(cond).
15941604
And(builder.In("issue.repo_id", opts.UserRepoIDs)).
15951605
Count(new(Issue))
15961606
if err != nil {

routers/user/home.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -567,6 +567,7 @@ func Issues(ctx *context.Context) {
567567
FilterMode: filterMode,
568568
IsPull: isPullList,
569569
IsClosed: isShowClosed,
570+
LabelIDs: opts.LabelIDs,
570571
}
571572
if len(repoIDs) > 0 {
572573
userIssueStatsOpts.UserRepoIDs = repoIDs
@@ -586,6 +587,7 @@ func Issues(ctx *context.Context) {
586587
IsPull: isPullList,
587588
IsClosed: isShowClosed,
588589
IssueIDs: issueIDsFromSearch,
590+
LabelIDs: opts.LabelIDs,
589591
}
590592
if len(repoIDs) > 0 {
591593
statsOpts.RepoIDs = repoIDs
@@ -608,6 +610,7 @@ func Issues(ctx *context.Context) {
608610
IsPull: isPullList,
609611
IsClosed: isShowClosed,
610612
IssueIDs: issueIDsFromSearch,
613+
LabelIDs: opts.LabelIDs,
611614
})
612615
if err != nil {
613616
ctx.ServerError("GetUserIssueStats All", err)
@@ -659,6 +662,7 @@ func Issues(ctx *context.Context) {
659662
ctx.Data["RepoIDs"] = repoIDs
660663
ctx.Data["IsShowClosed"] = isShowClosed
661664
ctx.Data["TotalIssueCount"] = totalIssues
665+
ctx.Data["SelectLabels"] = selectLabels
662666

663667
if isShowClosed {
664668
ctx.Data["State"] = "closed"

0 commit comments

Comments
 (0)