mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-02-17 08:50:58 -05:00
Collapse sets of achievements in achievements list
This commit is contained in:
parent
a6f980dab1
commit
46e738a737
2 changed files with 16 additions and 1 deletions
|
@ -19,7 +19,7 @@ MongoFindQuerySchema =
|
|||
title: 'Query'
|
||||
type: 'object'
|
||||
patternProperties:
|
||||
'^[-a-zA-Z0-9.]*$':
|
||||
'^[-a-zA-Z0-9._]*$':
|
||||
anyOf: [
|
||||
{$ref: '#/definitions/mongoQueryOperator'},
|
||||
{type: 'string'}
|
||||
|
|
|
@ -74,6 +74,7 @@ module.exports = class PlayAchievementsModal extends ModalView
|
|||
|
||||
onEverythingLoaded: =>
|
||||
@achievements.set(@achievements.filter((m) -> m.get('collection') isnt 'level.sessions' or m.get('query')?.team))
|
||||
achievementsByDescription = earned: {}, unearned: {}
|
||||
for achievement in @achievements.models
|
||||
if earned = @earnedMap[achievement.id]
|
||||
achievement.earned = earned
|
||||
|
@ -82,6 +83,20 @@ module.exports = class PlayAchievementsModal extends ModalView
|
|||
achievement.earnedGems = Math.round (achievement.get('rewards')?.gems or 0) * expFunction earned.get('achievedAmount')
|
||||
achievement.earnedPoints = Math.round (achievement.get('worth', true) or 0) * expFunction earned.get('achievedAmount')
|
||||
achievement.earnedDate ?= ''
|
||||
for achievement in @achievements.models
|
||||
if achievement.earned
|
||||
holder = achievementsByDescription.earned
|
||||
else
|
||||
holder = achievementsByDescription.unearned
|
||||
nextInSet = holder[achievement.get('description')]
|
||||
[a, b] = [achievement.get('worth', true), nextInSet?.get('worth', true) ? 0]
|
||||
if achievement.earned
|
||||
shouldKeep = not nextInSet or a > b
|
||||
else
|
||||
shouldKeep = not nextInSet or a < b
|
||||
if shouldKeep
|
||||
holder[achievement.get('description')] = achievement
|
||||
@achievements.set _.values(achievementsByDescription.earned).concat(_.values(achievementsByDescription.unearned))
|
||||
@achievements.comparator = (m) -> m.earnedDate
|
||||
@achievements.sort()
|
||||
@achievements.set(@achievements.models.reverse())
|
||||
|
|
Loading…
Reference in a new issue