mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-04-27 14:33:59 -04:00
Sort clan members list alphabetically
This commit is contained in:
parent
1c85759df8
commit
f41b0bd4dd
2 changed files with 22 additions and 21 deletions
|
@ -39,7 +39,7 @@ module.exports = class ClanDetailsView extends RootView
|
|||
@stats = {}
|
||||
|
||||
@clan = new Clan _id: @clanID
|
||||
@members = new CocoCollection([], { url: "/db/clan/#{@clanID}/members", model: User, comparator:'slug' })
|
||||
@members = new CocoCollection([], { url: "/db/clan/#{@clanID}/members", model: User, comparator: 'nameLower' })
|
||||
@memberAchievements = new CocoCollection([], { url: "/db/clan/#{@clanID}/member_achievements", model: EarnedAchievement, comparator:'_id' })
|
||||
# MemberSessions: only loads creatorName, levelName, codeLanguage, submittedCodeLanguage for each session
|
||||
@memberSessions = new CocoCollection([], { url: "/db/clan/#{@clanID}/member_sessions", model: LevelSession, comparator:'_id' })
|
||||
|
@ -68,15 +68,6 @@ module.exports = class ClanDetailsView extends RootView
|
|||
context.memberLevelProgression = @memberLevelProgression
|
||||
context.memberMaxLevelCount = @memberMaxLevelCount
|
||||
context.members = @members?.models
|
||||
# Give preference to members with more data
|
||||
if @memberLevelProgression? and @memberLanguageMap?
|
||||
context.members.sort (a, b) =>
|
||||
if a.id of @memberLevelProgression and a.id of @memberLanguageMap
|
||||
-1
|
||||
else if b.id of @memberLevelProgression and b.id of @memberLanguageMap
|
||||
1
|
||||
else
|
||||
0
|
||||
context.isOwner = @clan.get('ownerID') is me.id
|
||||
context.isMember = @clanID in (me.get('clans') ? [])
|
||||
context.stats = @stats
|
||||
|
|
|
@ -100,11 +100,16 @@ ClanHandler = class ClanHandler extends Handler
|
|||
return @sendDatabaseError(res, err) if err
|
||||
return @sendNotFoundError(res) unless clan
|
||||
memberIDs = _.map clan.get('members') ? [], (memberID) -> memberID.toHexString?() or memberID
|
||||
memberIDs = memberIDs.slice 0, memberLimit
|
||||
EarnedAchievement.find {user: {$in: memberIDs}}, 'achievementName user', (err, documents) =>
|
||||
return @sendDatabaseError(res, err) if err?
|
||||
cleandocs = (EarnedAchievementHandler.formatEntity(req, doc) for doc in documents)
|
||||
@sendSuccess(res, cleandocs)
|
||||
User.find {_id: {$in: memberIDs}}, 'nameLower', {sort: {nameLower: 1}}, (err, users) =>
|
||||
return @sendDatabaseError(res, err) if err
|
||||
memberIDs = []
|
||||
for user in users
|
||||
memberIDs.push user.id
|
||||
break unless memberIDs.length < memberLimit
|
||||
EarnedAchievement.find {user: {$in: memberIDs}}, 'achievementName user', (err, documents) =>
|
||||
return @sendDatabaseError(res, err) if err?
|
||||
cleandocs = (EarnedAchievementHandler.formatEntity(req, doc) for doc in documents)
|
||||
@sendSuccess(res, cleandocs)
|
||||
|
||||
getMembers: (req, res, clanID) ->
|
||||
# TODO: add tests
|
||||
|
@ -112,7 +117,7 @@ ClanHandler = class ClanHandler extends Handler
|
|||
return @sendDatabaseError(res, err) if err
|
||||
return @sendNotFoundError(res) unless clan
|
||||
memberIDs = clan.get('members') ? []
|
||||
User.find {_id: {$in: memberIDs}}, 'name points', (err, users) =>
|
||||
User.find {_id: {$in: memberIDs}}, 'name nameLower points', {sort: {nameLower: 1}}, (err, users) =>
|
||||
return @sendDatabaseError(res, err) if err
|
||||
cleandocs = (UserHandler.formatEntity(req, doc) for doc in users)
|
||||
@sendSuccess(res, cleandocs)
|
||||
|
@ -125,11 +130,16 @@ ClanHandler = class ClanHandler extends Handler
|
|||
return @sendDatabaseError(res, err) if err
|
||||
return @sendNotFoundError(res) unless clan
|
||||
memberIDs = _.map clan.get('members') ? [], (memberID) -> memberID.toHexString?() or memberID
|
||||
memberIDs = memberIDs.slice 0, memberLimit
|
||||
LevelSession.find {creator: {$in: memberIDs}}, 'changed codeLanguage creator creatorName levelID levelName playtime state submittedCodeLanguage', (err, documents) =>
|
||||
return @sendDatabaseError(res, err) if err?
|
||||
cleandocs = (LevelSessionHandler.formatEntity(req, doc) for doc in documents)
|
||||
@sendSuccess(res, cleandocs)
|
||||
User.find {_id: {$in: memberIDs}}, 'name', {sort: {name: 1}}, (err, users) =>
|
||||
return @sendDatabaseError(res, err) if err
|
||||
memberIDs = []
|
||||
for user in users
|
||||
memberIDs.push user.id
|
||||
break unless memberIDs.length < memberLimit
|
||||
LevelSession.find {creator: {$in: memberIDs}}, 'changed codeLanguage creator creatorName levelID levelName playtime state submittedCodeLanguage', (err, documents) =>
|
||||
return @sendDatabaseError(res, err) if err?
|
||||
cleandocs = (LevelSessionHandler.formatEntity(req, doc) for doc in documents)
|
||||
@sendSuccess(res, cleandocs)
|
||||
|
||||
getPublicClans: (req, res) ->
|
||||
# Return 100 public clans, sorted by member count, created date
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue