2017-10-15 02:17:39 +03:00
// 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 )
2019-11-05 08:45:48 +03:00
case "quarterly" :
timeFrom = timeUntil . AddDate ( 0 , - 3 , 0 )
case "semiyearly" :
timeFrom = timeUntil . AddDate ( 0 , - 6 , 0 )
case "yearly" :
timeFrom = timeUntil . AddDate ( - 1 , 0 , 0 )
2017-10-15 02:17:39 +03:00
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 ) )
2017-10-16 00:54:53 +03:00
var err error
2019-05-04 15:39:03 +03:00
if ctx . Data [ "Activity" ] , err = models . GetActivityStats ( ctx . Repo . Repository , timeFrom ,
2018-11-28 14:26:14 +03:00
ctx . Repo . CanRead ( models . UnitTypeReleases ) ,
ctx . Repo . CanRead ( models . UnitTypeIssues ) ,
2019-05-04 15:39:03 +03:00
ctx . Repo . CanRead ( models . UnitTypePullRequests ) ,
ctx . Repo . CanRead ( models . UnitTypeCode ) ) ; err != nil {
2018-01-11 00:34:17 +03:00
ctx . ServerError ( "GetActivityStats" , err )
2017-10-15 02:17:39 +03:00
return
}
ctx . HTML ( 200 , tplActivity )
}
2019-05-04 15:39:03 +03:00
// ActivityAuthors renders JSON with top commit authors for given time period over all branches
func ActivityAuthors ( ctx * context . Context ) {
timeUntil := time . Now ( )
var timeFrom time . Time
switch ctx . Params ( "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 )
2019-11-05 08:45:48 +03:00
case "quarterly" :
timeFrom = timeUntil . AddDate ( 0 , - 3 , 0 )
case "semiyearly" :
timeFrom = timeUntil . AddDate ( 0 , - 6 , 0 )
case "yearly" :
timeFrom = timeUntil . AddDate ( - 1 , 0 , 0 )
2019-05-04 15:39:03 +03:00
default :
timeFrom = timeUntil . Add ( - time . Hour * 168 )
}
var err error
authors , err := models . GetActivityStatsTopAuthors ( ctx . Repo . Repository , timeFrom , 10 )
if err != nil {
ctx . ServerError ( "GetActivityStatsTopAuthors" , err )
return
}
ctx . JSON ( 200 , authors )
}