Skip to content

Commit 21adeaa

Browse files
lunnyzeripath
andauthored
Fix dashboard issues labels filter bug (#14210)
Co-authored-by: zeripath <[email protected]>
1 parent a07e67d commit 21adeaa

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
@@ -1500,6 +1500,7 @@ type UserIssueStatsOptions struct {
15001500
IsPull bool
15011501
IsClosed bool
15021502
IssueIDs []int64
1503+
LabelIDs []int64
15031504
}
15041505

15051506
// GetUserIssueStats returns issue statistic information for dashboard by given conditions.
@@ -1516,57 +1517,66 @@ func GetUserIssueStats(opts UserIssueStatsOptions) (*IssueStats, error) {
15161517
cond = cond.And(builder.In("issue.id", opts.IssueIDs))
15171518
}
15181519

1520+
sess := func(cond builder.Cond) *xorm.Session {
1521+
s := x.Where(cond)
1522+
if len(opts.LabelIDs) > 0 {
1523+
s.Join("INNER", "issue_label", "issue_label.issue_id = issue.id").
1524+
In("issue_label.label_id", opts.LabelIDs)
1525+
}
1526+
return s
1527+
}
1528+
15191529
switch opts.FilterMode {
15201530
case FilterModeAll:
1521-
stats.OpenCount, err = x.Where(cond).And("issue.is_closed = ?", false).
1531+
stats.OpenCount, err = sess(cond).And("issue.is_closed = ?", false).
15221532
And(builder.In("issue.repo_id", opts.UserRepoIDs)).
15231533
Count(new(Issue))
15241534
if err != nil {
15251535
return nil, err
15261536
}
1527-
stats.ClosedCount, err = x.Where(cond).And("issue.is_closed = ?", true).
1537+
stats.ClosedCount, err = sess(cond).And("issue.is_closed = ?", true).
15281538
And(builder.In("issue.repo_id", opts.UserRepoIDs)).
15291539
Count(new(Issue))
15301540
if err != nil {
15311541
return nil, err
15321542
}
15331543
case FilterModeAssign:
1534-
stats.OpenCount, err = x.Where(cond).And("issue.is_closed = ?", false).
1544+
stats.OpenCount, err = sess(cond).And("issue.is_closed = ?", false).
15351545
Join("INNER", "issue_assignees", "issue.id = issue_assignees.issue_id").
15361546
And("issue_assignees.assignee_id = ?", opts.UserID).
15371547
Count(new(Issue))
15381548
if err != nil {
15391549
return nil, err
15401550
}
1541-
stats.ClosedCount, err = x.Where(cond).And("issue.is_closed = ?", true).
1551+
stats.ClosedCount, err = sess(cond).And("issue.is_closed = ?", true).
15421552
Join("INNER", "issue_assignees", "issue.id = issue_assignees.issue_id").
15431553
And("issue_assignees.assignee_id = ?", opts.UserID).
15441554
Count(new(Issue))
15451555
if err != nil {
15461556
return nil, err
15471557
}
15481558
case FilterModeCreate:
1549-
stats.OpenCount, err = x.Where(cond).And("issue.is_closed = ?", false).
1559+
stats.OpenCount, err = sess(cond).And("issue.is_closed = ?", false).
15501560
And("issue.poster_id = ?", opts.UserID).
15511561
Count(new(Issue))
15521562
if err != nil {
15531563
return nil, err
15541564
}
1555-
stats.ClosedCount, err = x.Where(cond).And("issue.is_closed = ?", true).
1565+
stats.ClosedCount, err = sess(cond).And("issue.is_closed = ?", true).
15561566
And("issue.poster_id = ?", opts.UserID).
15571567
Count(new(Issue))
15581568
if err != nil {
15591569
return nil, err
15601570
}
15611571
case FilterModeMention:
1562-
stats.OpenCount, err = x.Where(cond).And("issue.is_closed = ?", false).
1572+
stats.OpenCount, err = sess(cond).And("issue.is_closed = ?", false).
15631573
Join("INNER", "issue_user", "issue.id = issue_user.issue_id and issue_user.is_mentioned = ?", true).
15641574
And("issue_user.uid = ?", opts.UserID).
15651575
Count(new(Issue))
15661576
if err != nil {
15671577
return nil, err
15681578
}
1569-
stats.ClosedCount, err = x.Where(cond).And("issue.is_closed = ?", true).
1579+
stats.ClosedCount, err = sess(cond).And("issue.is_closed = ?", true).
15701580
Join("INNER", "issue_user", "issue.id = issue_user.issue_id and issue_user.is_mentioned = ?", true).
15711581
And("issue_user.uid = ?", opts.UserID).
15721582
Count(new(Issue))
@@ -1576,30 +1586,30 @@ func GetUserIssueStats(opts UserIssueStatsOptions) (*IssueStats, error) {
15761586
}
15771587

15781588
cond = cond.And(builder.Eq{"issue.is_closed": opts.IsClosed})
1579-
stats.AssignCount, err = x.Where(cond).
1589+
stats.AssignCount, err = sess(cond).
15801590
Join("INNER", "issue_assignees", "issue.id = issue_assignees.issue_id").
15811591
And("issue_assignees.assignee_id = ?", opts.UserID).
15821592
Count(new(Issue))
15831593
if err != nil {
15841594
return nil, err
15851595
}
15861596

1587-
stats.CreateCount, err = x.Where(cond).
1597+
stats.CreateCount, err = sess(cond).
15881598
And("poster_id = ?", opts.UserID).
15891599
Count(new(Issue))
15901600
if err != nil {
15911601
return nil, err
15921602
}
15931603

1594-
stats.MentionCount, err = x.Where(cond).
1604+
stats.MentionCount, err = sess(cond).
15951605
Join("INNER", "issue_user", "issue.id = issue_user.issue_id and issue_user.is_mentioned = ?", true).
15961606
And("issue_user.uid = ?", opts.UserID).
15971607
Count(new(Issue))
15981608
if err != nil {
15991609
return nil, err
16001610
}
16011611

1602-
stats.YourRepositoriesCount, err = x.Where(cond).
1612+
stats.YourRepositoriesCount, err = sess(cond).
16031613
And(builder.In("issue.repo_id", opts.UserRepoIDs)).
16041614
Count(new(Issue))
16051615
if err != nil {

routers/user/home.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -580,6 +580,7 @@ func Issues(ctx *context.Context) {
580580
FilterMode: filterMode,
581581
IsPull: isPullList,
582582
IsClosed: isShowClosed,
583+
LabelIDs: opts.LabelIDs,
583584
}
584585
if len(repoIDs) > 0 {
585586
userIssueStatsOpts.UserRepoIDs = repoIDs
@@ -599,6 +600,7 @@ func Issues(ctx *context.Context) {
599600
IsPull: isPullList,
600601
IsClosed: isShowClosed,
601602
IssueIDs: issueIDsFromSearch,
603+
LabelIDs: opts.LabelIDs,
602604
}
603605
if len(repoIDs) > 0 {
604606
statsOpts.RepoIDs = repoIDs
@@ -621,6 +623,7 @@ func Issues(ctx *context.Context) {
621623
IsPull: isPullList,
622624
IsClosed: isShowClosed,
623625
IssueIDs: issueIDsFromSearch,
626+
LabelIDs: opts.LabelIDs,
624627
})
625628
if err != nil {
626629
ctx.ServerError("GetUserIssueStats All", err)
@@ -672,6 +675,7 @@ func Issues(ctx *context.Context) {
672675
ctx.Data["RepoIDs"] = repoIDs
673676
ctx.Data["IsShowClosed"] = isShowClosed
674677
ctx.Data["TotalIssueCount"] = totalIssues
678+
ctx.Data["SelectLabels"] = selectLabels
675679

676680
if isShowClosed {
677681
ctx.Data["State"] = "closed"

0 commit comments

Comments
 (0)