mirror of
https://github.com/go-gitea/gitea
synced 2025-07-23 02:38:35 +00:00
Finish issue design
This commit is contained in:
@@ -7,6 +7,7 @@ package user
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/Unknwon/com"
|
||||
"github.com/go-martini/martini"
|
||||
|
||||
"github.com/gogits/gogs/models"
|
||||
@@ -105,85 +106,132 @@ func Feeds(ctx *middleware.Context, form auth.FeedsForm) {
|
||||
|
||||
func Issues(ctx *middleware.Context) {
|
||||
ctx.Data["Title"] = "Your Issues"
|
||||
ctx.Data["ViewType"] = "all"
|
||||
|
||||
page, _ := base.StrTo(ctx.Query("page")).Int()
|
||||
repoId, _ := base.StrTo(ctx.Query("repoid")).Int64()
|
||||
|
||||
ctx.Data["RepoId"] = repoId
|
||||
|
||||
var posterId int64 = 0
|
||||
if ctx.Query("type") == "created_by" {
|
||||
posterId = ctx.User.Id
|
||||
ctx.Data["ViewType"] = "created_by"
|
||||
viewType := ctx.Query("type")
|
||||
types := []string{"assigned", "created_by"}
|
||||
if !com.IsSliceContainsStr(types, viewType) {
|
||||
viewType = "all"
|
||||
}
|
||||
|
||||
isShowClosed := ctx.Query("state") == "closed"
|
||||
|
||||
var assigneeId, posterId int64
|
||||
var filterMode int
|
||||
switch viewType {
|
||||
case "assigned":
|
||||
assigneeId = ctx.User.Id
|
||||
filterMode = models.FM_ASSIGN
|
||||
case "created_by":
|
||||
posterId = ctx.User.Id
|
||||
filterMode = models.FM_CREATE
|
||||
}
|
||||
_, _ = assigneeId, posterId
|
||||
|
||||
// page, _ := base.StrTo(ctx.Query("page")).Int()
|
||||
// repoId, _ := base.StrTo(ctx.Query("repoid")).Int64()
|
||||
|
||||
// ctx.Data["RepoId"] = repoId
|
||||
|
||||
// var posterId int64 = 0
|
||||
// if ctx.Query("type") == "created_by" {
|
||||
// posterId = ctx.User.Id
|
||||
// ctx.Data["ViewType"] = "created_by"
|
||||
// }
|
||||
|
||||
rid, _ := base.StrTo(ctx.Query("repoid")).Int64()
|
||||
issueStats := models.GetUserIssueStats(ctx.User.Id, filterMode)
|
||||
|
||||
// Get all repositories.
|
||||
repos, err := models.GetRepositories(ctx.User, true)
|
||||
if err != nil {
|
||||
ctx.Handle(200, "user.Issues(get repositories)", err)
|
||||
ctx.Handle(500, "user.Issues(get repositories)", err)
|
||||
return
|
||||
}
|
||||
|
||||
showRepos := make([]models.Repository, 0, len(repos))
|
||||
|
||||
isShowClosed := ctx.Query("state") == "closed"
|
||||
var closedIssueCount, createdByCount, allIssueCount int
|
||||
showRepos := make([]*models.Repository, 0, len(repos))
|
||||
|
||||
// Get all issues.
|
||||
allIssues := make([]models.Issue, 0, 5*len(repos))
|
||||
for i, repo := range repos {
|
||||
issues, err := models.GetIssues(0, repo.Id, posterId, 0, page, isShowClosed, false, "", "")
|
||||
if err != nil {
|
||||
ctx.Handle(200, "user.Issues(get issues)", err)
|
||||
return
|
||||
}
|
||||
|
||||
allIssueCount += repo.NumIssues
|
||||
closedIssueCount += repo.NumClosedIssues
|
||||
|
||||
// Set repository information to issues.
|
||||
for j := range issues {
|
||||
issues[j].Repo = &repos[i]
|
||||
}
|
||||
allIssues = append(allIssues, issues...)
|
||||
|
||||
repos[i].NumOpenIssues = repo.NumIssues - repo.NumClosedIssues
|
||||
if repos[i].NumOpenIssues > 0 {
|
||||
showRepos = append(showRepos, repos[i])
|
||||
}
|
||||
}
|
||||
|
||||
showIssues := make([]models.Issue, 0, len(allIssues))
|
||||
ctx.Data["IsShowClosed"] = isShowClosed
|
||||
|
||||
// Get posters and filter issues.
|
||||
for i := range allIssues {
|
||||
u, err := models.GetUserById(allIssues[i].PosterId)
|
||||
if err != nil {
|
||||
ctx.Handle(200, "user.Issues(get poster): %v", err)
|
||||
return
|
||||
}
|
||||
allIssues[i].Poster = u
|
||||
if u.Id == ctx.User.Id {
|
||||
createdByCount++
|
||||
}
|
||||
|
||||
if repoId > 0 && repoId != allIssues[i].Repo.Id {
|
||||
// allIssues := make([]models.Issue, 0, 5*len(repos))
|
||||
for _, repo := range repos {
|
||||
if repo.NumIssues == 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
if isShowClosed == allIssues[i].IsClosed {
|
||||
showIssues = append(showIssues, allIssues[i])
|
||||
repo.NumOpenIssues = repo.NumIssues - repo.NumClosedIssues
|
||||
issueStats.AllCount += int64(repo.NumOpenIssues)
|
||||
|
||||
// switch filterMode{
|
||||
// case models.FM_ASSIGN:
|
||||
|
||||
// }
|
||||
|
||||
if isShowClosed {
|
||||
if repo.NumClosedIssues > 0 {
|
||||
showRepos = append(showRepos, repo)
|
||||
}
|
||||
} else {
|
||||
if repo.NumOpenIssues > 0 {
|
||||
showRepos = append(showRepos, repo)
|
||||
}
|
||||
}
|
||||
|
||||
// issues, err := models.GetIssues(0, repo.Id, posterId, 0, page, isShowClosed, "", "")
|
||||
// if err != nil {
|
||||
// ctx.Handle(200, "user.Issues(get issues)", err)
|
||||
// return
|
||||
// }
|
||||
}
|
||||
|
||||
// allIssueCount += repo.NumIssues
|
||||
// closedIssueCount += repo.NumClosedIssues
|
||||
|
||||
// // Set repository information to issues.
|
||||
// for j := range issues {
|
||||
// issues[j].Repo = &repos[i]
|
||||
// }
|
||||
// allIssues = append(allIssues, issues...)
|
||||
|
||||
// repos[i].NumOpenIssues = repo.NumIssues - repo.NumClosedIssues
|
||||
// if repos[i].NumOpenIssues > 0 {
|
||||
// showRepos = append(showRepos, repos[i])
|
||||
// }
|
||||
// }
|
||||
|
||||
// showIssues := make([]models.Issue, 0, len(allIssues))
|
||||
// ctx.Data["IsShowClosed"] = isShowClosed
|
||||
|
||||
// // Get posters and filter issues.
|
||||
// for i := range allIssues {
|
||||
// u, err := models.GetUserById(allIssues[i].PosterId)
|
||||
// if err != nil {
|
||||
// ctx.Handle(200, "user.Issues(get poster): %v", err)
|
||||
// return
|
||||
// }
|
||||
// allIssues[i].Poster = u
|
||||
// if u.Id == ctx.User.Id {
|
||||
// createdByCount++
|
||||
// }
|
||||
|
||||
// if repoId > 0 && repoId != allIssues[i].Repo.Id {
|
||||
// continue
|
||||
// }
|
||||
|
||||
// if isShowClosed == allIssues[i].IsClosed {
|
||||
// showIssues = append(showIssues, allIssues[i])
|
||||
// }
|
||||
// }
|
||||
|
||||
ctx.Data["RepoId"] = rid
|
||||
ctx.Data["Repos"] = showRepos
|
||||
ctx.Data["Issues"] = showIssues
|
||||
ctx.Data["AllIssueCount"] = allIssueCount
|
||||
ctx.Data["ClosedIssueCount"] = closedIssueCount
|
||||
ctx.Data["OpenIssueCount"] = allIssueCount - closedIssueCount
|
||||
ctx.Data["CreatedByCount"] = createdByCount
|
||||
ctx.Data["ViewType"] = viewType
|
||||
ctx.Data["IssueStats"] = issueStats
|
||||
ctx.Data["IsShowClosed"] = isShowClosed
|
||||
if isShowClosed {
|
||||
ctx.Data["State"] = "closed"
|
||||
ctx.Data["ShowCount"] = issueStats.ClosedCount
|
||||
} else {
|
||||
ctx.Data["ShowCount"] = issueStats.OpenCount
|
||||
}
|
||||
ctx.HTML(200, "issue/user")
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user