diff options
author | Unknown <joe2010xtmf@163.com> | 2014-05-07 12:09:30 -0400 |
---|---|---|
committer | Unknown <joe2010xtmf@163.com> | 2014-05-07 12:09:30 -0400 |
commit | 7407f9caf3e0baf3f9b7894fab021356662eed17 (patch) | |
tree | f8a06f17b900657e4088973e31b24ba93125190e /routers/user/home.go | |
parent | 8ca14e210959b9316a4eed6e127de1eb775fda74 (diff) | |
download | gitea-7407f9caf3e0baf3f9b7894fab021356662eed17.tar.gz gitea-7407f9caf3e0baf3f9b7894fab021356662eed17.zip |
Finish issue design
Diffstat (limited to 'routers/user/home.go')
-rw-r--r-- | routers/user/home.go | 158 |
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") } |