From de8fec31148aa002a1f99d98ee46d0d42ae36eb8 Mon Sep 17 00:00:00 2001 From: Eduard Urbach Date: Tue, 6 Nov 2018 20:20:19 +0900 Subject: [PATCH] Added user lists by country --- pages/index/userlistroutes/userlistroutes.go | 1 + pages/profile/profile.pixy | 2 +- pages/users/users.go | 31 +++++++++----------- pages/users/users.pixy | 10 +++++++ utils/routetests/All.go | 4 +++ 5 files changed, 30 insertions(+), 18 deletions(-) diff --git a/pages/index/userlistroutes/userlistroutes.go b/pages/index/userlistroutes/userlistroutes.go index e63277f1..175f68a4 100644 --- a/pages/index/userlistroutes/userlistroutes.go +++ b/pages/index/userlistroutes/userlistroutes.go @@ -17,4 +17,5 @@ func Register(l *layout.Layout) { l.Page("/users/staff", users.Staff) l.Page("/users/pro", users.Pro) l.Page("/users/editors", users.Editors) + l.Page("/users/country/:country", users.ByCountry) } diff --git a/pages/profile/profile.pixy b/pages/profile/profile.pixy index 40cec3c5..52cb33db 100644 --- a/pages/profile/profile.pixy +++ b/pages/profile/profile.pixy @@ -70,7 +70,7 @@ component ProfileHead(viewUser *arn.User, user *arn.User, uri string) span= viewUser.AgeInYears() if user != nil && viewUser.Settings().Privacy.ShowLocation && viewUser.Location.CountryName != "" - .profile-tag.mountable.never-unmount(data-mountable-type="header") + a.profile-tag.mountable.never-unmount(href="/users/country/" + strings.ToLower(viewUser.Location.CountryName), data-mountable-type="header") Icon("map-marker") span= viewUser.Location.CountryName diff --git a/pages/users/users.go b/pages/users/users.go index f0cb197b..de4385e1 100644 --- a/pages/users/users.go +++ b/pages/users/users.go @@ -2,6 +2,7 @@ package users import ( "sort" + "strings" "github.com/aerogo/aero" "github.com/animenotifier/arn" @@ -15,23 +16,7 @@ func Active(ctx *aero.Context) string { return user.HasAvatar() && user.HasNick() && user.IsActive() }) - followCount := arn.UserFollowerCountMap() - - sort.Slice(users, func(i, j int) bool { - if users[i].HasAvatar() != users[j].HasAvatar() { - return users[i].HasAvatar() - } - - followersA := followCount[users[i].ID] - followersB := followCount[users[j].ID] - - if followersA == followersB { - return users[i].Nick < users[j].Nick - } - - return followersA > followersB - }) - + arn.SortUsersFollowers(users) return ctx.HTML(components.Users(users, ctx.URI())) } @@ -171,6 +156,18 @@ func FFXIV(ctx *aero.Context) string { return ctx.HTML(components.FinalFantasyXIVRankingList(users, ctx.URI())) } +// ByCountry ... +func ByCountry(ctx *aero.Context) string { + countryName := ctx.Get("country") + + users := arn.FilterUsers(func(user *arn.User) bool { + return strings.ToLower(user.Location.CountryName) == countryName && user.Settings().Privacy.ShowLocation && user.HasAvatar() && user.HasNick() && user.IsActive() + }) + + arn.SortUsersFollowers(users) + return ctx.HTML(components.UsersByCountry(users, countryName)) +} + // Staff ... func Staff(ctx *aero.Context) string { users := arn.FilterUsers(func(user *arn.User) bool { diff --git a/pages/users/users.pixy b/pages/users/users.pixy index ed0310d4..4bcb45ca 100644 --- a/pages/users/users.pixy +++ b/pages/users/users.pixy @@ -6,6 +6,16 @@ component Users(users []*arn.User, url string) each user in users Avatar(user) +component UsersByCountry(users []*arn.User, countryName string) + if len(users) == 0 + p.no-data.mountable= "Seems like there are no users in " + stringutils.Capitalize(countryName) + else + h1= "Users in " + users[0].Location.CountryName + + .user-avatars.mountable + each user in users + Avatar(user) + component ProUsers(users []*arn.User, url string) h1.page-title Supporters UsersTabs(url) diff --git a/utils/routetests/All.go b/utils/routetests/All.go index 040a596d..bb3ff6ff 100644 --- a/utils/routetests/All.go +++ b/utils/routetests/All.go @@ -106,6 +106,10 @@ var routeTests = map[string][]string{ "/+Akyoto/recommended/anime", }, + "/users/country/:country": []string{ + "/users/country/japan", + }, + // Pages "/anime/:id": []string{ "/anime/74y2cFiiR",