diff --git a/models/list_options.go b/models/list_options.go index 29144ba22..d6d1dcf0d 100644 --- a/models/list_options.go +++ b/models/list_options.go @@ -10,15 +10,15 @@ import ( "xorm.io/xorm" ) -type SelectedPageSize int +type AvailablePageSize int const ( - PageSize15 SelectedPageSize = 15 - PageSize30 SelectedPageSize = 30 - PageSize50 SelectedPageSize = 50 + PageSize15 AvailablePageSize = 15 + PageSize30 AvailablePageSize = 30 + PageSize50 AvailablePageSize = 50 ) -func (s SelectedPageSize) IsLegal() bool { +func (s AvailablePageSize) IsLegal() bool { switch s { case PageSize30, PageSize50, PageSize15: return true @@ -26,7 +26,7 @@ func (s SelectedPageSize) IsLegal() bool { return false } -func (s SelectedPageSize) Int() int { +func (s AvailablePageSize) Int() int { return int(s) } diff --git a/routers/home.go b/routers/home.go index a1043655e..d54a0160f 100755 --- a/routers/home.go +++ b/routers/home.go @@ -43,6 +43,8 @@ const ( tplHomeTerm base.TplName = "terms" tplHomePrivacy base.TplName = "privacy" tplResoruceDesc base.TplName = "resource_desc" + tplRepoSquare base.TplName = "explore/repos/square" + tplRepoSearch base.TplName = "explore/repos/search" ) // Home render home page @@ -296,6 +298,13 @@ func ExploreRepos(ctx *context.Context) { }) } +func GetRepoSquarePage(ctx *context.Context) { + ctx.HTML(200, tplRepoSquare) +} +func GetRepoSearchPage(ctx *context.Context) { + ctx.HTML(200, tplRepoSearch) +} + func RepoSquare(ctx *context.Context) { var result []*models.Repository4Card var err error @@ -351,7 +360,10 @@ func RepoFind(ctx *context.Context) { topic := strings.Trim(ctx.Query("topic"), " ") sort := strings.Trim(ctx.Query("sort"), " ") page := ctx.QueryInt("page") - pageSize := models.SelectedPageSize(ctx.QueryInt("pageSize")) + pageSize := models.AvailablePageSize(ctx.QueryInt("pageSize")) + if pageSize == 0 { + pageSize = models.PageSize15 + } if !pageSize.IsLegal() { ctx.JSON(http.StatusOK, response.ServerError("pageSize illegal")) return diff --git a/routers/routes/routes.go b/routers/routes/routes.go index 8f60153db..8ecca32e2 100755 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -371,8 +371,10 @@ func RegisterRoutes(m *macaron.Macaron) { m.Get("/images/star", repo.GetStarImages) m.Group("/repos", func() { - m.Get("", routers.ExploreRepos) + //m.Get("", routers.ExploreRepos) + m.Get("", routers.GetRepoSearchPage) m.Group("/square", func() { + m.Get("", routers.GetRepoSquarePage) m.Get("/tab", routers.RepoSquare) m.Get("/active-user", routers.ActiveUser) m.Get("/active-org", routers.ActiveOrg) diff --git a/services/repository/square.go b/services/repository/square.go index 55858db81..7ff36c5af 100644 --- a/services/repository/square.go +++ b/services/repository/square.go @@ -85,31 +85,31 @@ func FindRepos(opts FindReposOptions) (*models.FindReposResponse, error) { switch opts.Sort { //1.近期热门:按最近1个月浏览量倒序排序,最近1个月浏览量>最近更新>项目名称升序 - case "most_popular": + case "mostpopular": orderBy = models.SearchOrderByLastMonthVisitsReverse + "," + models.SearchOrderByRecentUpdated + "," + models.SearchOrderByAlphabetically //2.近期活跃:按提交增长量(最近4个月commit数)倒序排序,提交增长量>最近更新>项目名称升序。 - case "most_active": + case "mostactive": orderBy = models.SearchOrderByLastFourMonthCommitsReverse + "," + models.SearchOrderByRecentUpdated + "," + models.SearchOrderByAlphabetically //3.最近更新:按最近更新>项目名称升序排序。 - case "recent_update": + case "recentupdate": orderBy = models.SearchOrderByRecentUpdated + "," + models.SearchOrderByAlphabetically //4.最近创建:按项目创建时间排序,最近的排前面。最近创建>项目名称升序。 case "newest": orderBy = models.SearchOrderByNewest + "," + models.SearchOrderByAlphabetically //5.点赞最多:按点赞数倒序排序。点赞数>最近更新>项目名称升序。 - case "most_stars": + case "moststars": orderBy = models.SearchOrderByStarsReverse + "," + models.SearchOrderByRecentUpdated + "," + models.SearchOrderByAlphabetically //6.派生最多:按派生数倒序排序。派生数>最近更新>项目名称升序。 - case "most_forks": + case "mostforks": orderBy = models.SearchOrderByForksReverse + "," + models.SearchOrderByRecentUpdated + "," + models.SearchOrderByAlphabetically //7.数据集最多:按项目包含的数据集文件数量倒序排序,数据集文件数>最近更新>项目名称升序。 - case "most_datasets": + case "mostdatasets": orderBy = models.SearchOrderByDatasetCntReverse + "," + models.SearchOrderByRecentUpdated + "," + models.SearchOrderByAlphabetically //8.AI任务最多:按项目包含的AI任务数量倒序排序,AI任务数>最近更新>项目名称升序。 - case "most_ai_tasks": + case "mostaitasks": orderBy = models.SearchOrderByAiTaskCntReverse + "," + models.SearchOrderByRecentUpdated + "," + models.SearchOrderByAlphabetically //9.模型最多:按项目包含的模型数量倒序排序,模型大小为0则不统计。模型数>最近更新>项目名称升序。 - case "most_models": + case "mostmodels": orderBy = models.SearchOrderByModelCntReverse + "," + models.SearchOrderByRecentUpdated + "," + models.SearchOrderByAlphabetically default: