aboutsummaryrefslogtreecommitdiffstats
path: root/routers/user/home.go
diff options
context:
space:
mode:
authorUnknown <joe2010xtmf@163.com>2014-05-07 12:09:30 -0400
committerUnknown <joe2010xtmf@163.com>2014-05-07 12:09:30 -0400
commit7407f9caf3e0baf3f9b7894fab021356662eed17 (patch)
treef8a06f17b900657e4088973e31b24ba93125190e /routers/user/home.go
parent8ca14e210959b9316a4eed6e127de1eb775fda74 (diff)
downloadgitea-7407f9caf3e0baf3f9b7894fab021356662eed17.tar.gz
gitea-7407f9caf3e0baf3f9b7894fab021356662eed17.zip
Finish issue design
Diffstat (limited to 'routers/user/home.go')
-rw-r--r--routers/user/home.go158
1 files changed, 103 insertions, 55 deletions
diff --git a/routers/user/home.go b/routers/user/home.go
index 12099a5195..588cb8e3b0 100644
--- a/routers/user/home.go
+++ b/routers/user/home.go
@@ -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()
+ viewType := ctx.Query("type")
+ types := []string{"assigned", "created_by"}
+ if !com.IsSliceContainsStr(types, viewType) {
+ viewType = "all"
+ }
- ctx.Data["RepoId"] = repoId
+ isShowClosed := ctx.Query("state") == "closed"
- var posterId int64 = 0
- if ctx.Query("type") == "created_by" {
+ 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
- ctx.Data["ViewType"] = "created_by"
+ 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 := make([]models.Issue, 0, 5*len(repos))
+ for _, repo := range repos {
+ if repo.NumIssues == 0 {
+ continue
}
- allIssues = append(allIssues, issues...)
- repos[i].NumOpenIssues = repo.NumIssues - repo.NumClosedIssues
- if repos[i].NumOpenIssues > 0 {
- showRepos = append(showRepos, repos[i])
- }
- }
+ repo.NumOpenIssues = repo.NumIssues - repo.NumClosedIssues
+ issueStats.AllCount += int64(repo.NumOpenIssues)
- showIssues := make([]models.Issue, 0, len(allIssues))
- ctx.Data["IsShowClosed"] = isShowClosed
+ // switch filterMode{
+ // case models.FM_ASSIGN:
- // 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 {
+ if repo.NumClosedIssues > 0 {
+ showRepos = append(showRepos, repo)
+ }
+ } else {
+ if repo.NumOpenIssues > 0 {
+ showRepos = append(showRepos, repo)
+ }
}
- if isShowClosed == allIssues[i].IsClosed {
- showIssues = append(showIssues, allIssues[i])
- }
+ // 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")
}