// Copyright 2017 The Gitea Authors. All rights reserved. // Use of this source code is governed by a MIT-style // license that can be found in the LICENSE file. package repo import ( "time" "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" ) const ( tplActivity base.TplName = "repo/activity" ) // Activity render the page to show repository latest changes func Activity(ctx *context.Context) { ctx.Data["Title"] = ctx.Tr("repo.activity") ctx.Data["PageIsActivity"] = true ctx.Data["Period"] = ctx.Params("period") timeUntil := time.Now() var timeFrom time.Time switch ctx.Data["Period"] { case "daily": timeFrom = timeUntil.Add(-time.Hour * 24) case "halfweekly": timeFrom = timeUntil.Add(-time.Hour * 72) case "weekly": timeFrom = timeUntil.Add(-time.Hour * 168) case "monthly": timeFrom = timeUntil.AddDate(0, -1, 0) default: ctx.Data["Period"] = "weekly" timeFrom = timeUntil.Add(-time.Hour * 168) } ctx.Data["DateFrom"] = timeFrom.Format("January 2, 2006") ctx.Data["DateUntil"] = timeUntil.Format("January 2, 2006") ctx.Data["PeriodText"] = ctx.Tr("repo.activity.period." + ctx.Data["Period"].(string)) stats := &models.ActivityStats{} if ctx.Repo.Repository.UnitEnabled(models.UnitTypeReleases) { if err := models.FillReleasesForActivity(stats, ctx.Repo.Repository.ID, timeFrom); err != nil { ctx.Handle(500, "FillReleasesForActivity", err) return } } if ctx.Repo.Repository.UnitEnabled(models.UnitTypePullRequests) { if err := models.FillPullRequestsForActivity(stats, ctx.Repo.Repository.ID, timeFrom); err != nil { ctx.Handle(500, "FillPullRequestsForActivity", err) return } } if ctx.Repo.Repository.UnitEnabled(models.UnitTypeIssues) { if err := models.FillIssuesForActivity(stats, ctx.Repo.Repository.ID, timeFrom); err != nil { ctx.Handle(500, "FillIssuesForActivity", err) return } } if err := models.FillUnresolvedIssuesForActivity(stats, ctx.Repo.Repository.ID, timeFrom, ctx.Repo.Repository.UnitEnabled(models.UnitTypeIssues), ctx.Repo.Repository.UnitEnabled(models.UnitTypePullRequests)); err != nil { ctx.Handle(500, "FillUnresolvedIssuesForActivity", err) return } ctx.Data["Activity"] = stats ctx.HTML(200, tplActivity) }