diff --git a/models/dataset.go b/models/dataset.go index 2b54e539e..dca5ad41a 100644 --- a/models/dataset.go +++ b/models/dataset.go @@ -26,6 +26,7 @@ type Dataset struct { Task string ReleaseID int64 `xorm:"INDEX"` UserID int64 `xorm:"INDEX"` + RepoID int64 `xorm:"INDEX"` CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"` UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"` @@ -78,6 +79,7 @@ func (datasets DatasetList) loadAttributes(e Engine) error { type SearchDatasetOptions struct { Keyword string OwnerID int64 + RepoID int64 IncludePublic bool ListOptions SearchOrderBy diff --git a/models/migrations/v140.go b/models/migrations/v140.go index 758a7ef19..9accefac0 100644 --- a/models/migrations/v140.go +++ b/models/migrations/v140.go @@ -23,6 +23,7 @@ func addDatasetTable(x *xorm.Engine) error { Task string ReleaseID int64 `xorm:"INDEX"` UserID int64 `xorm:"INDEX"` + RepoID int64 `xorm:"INDEX"` CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"` UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"` } diff --git a/routers/repo/dataset.go b/routers/repo/dataset.go index 11ee247bc..fc8b24336 100644 --- a/routers/repo/dataset.go +++ b/routers/repo/dataset.go @@ -6,6 +6,7 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/log" + "code.gitea.io/gitea/modules/setting" ) const ( @@ -13,10 +14,44 @@ const ( ) func DatasetIndex(ctx *context.Context) { + var orderBy models.SearchOrderBy + repo := ctx.Repo.Repository + user := ctx.User + page := ctx.QueryInt("page") + if page <= 0 { + page = 1 + } + ctx.Data["SortType"] = ctx.Query("sort") + switch ctx.Query("sort") { + case "newest": + orderBy = models.SearchOrderByNewest + case "oldest": + orderBy = models.SearchOrderByOldest + case "recentupdate": + orderBy = models.SearchOrderByRecentUpdated + case "leastupdate": + orderBy = models.SearchOrderByLeastUpdated + case "reversealphabetically": + orderBy = models.SearchOrderByAlphabeticallyReverse + case "alphabetically": + orderBy = models.SearchOrderByAlphabetically + case "reversesize": + orderBy = models.SearchOrderBySizeReverse + default: + ctx.Data["SortType"] = "recentupdate" + orderBy = models.SearchOrderByRecentUpdated + } ctx.Data["PageIsDataset"] = true ctx.Data["Title"] = ctx.Tr("dataset.show_dataset") ctx.Data["Link"] = ctx.Repo.RepoLink + "/datasets" - user := ctx.User + models.SearchDataset(&models.SearchDatasetOptions{ + ListOptions: models.ListOptions{ + Page: page, + PageSize: setting.UI.ExplorePagingNum, + }, + SearchOrderBy: orderBy, + RepoID: repo.ID, + }) dataset, err := models.GetDatasetByID(5) if err != nil { ctx.NotFound("GetDataset", err)