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
app
|
@ -19,7 +19,7 @@ MongoFindQuerySchema =
|
||||||
title: 'Query'
|
title: 'Query'
|
||||||
type: 'object'
|
type: 'object'
|
||||||
patternProperties:
|
patternProperties:
|
||||||
'^[-a-zA-Z0-9.]*$':
|
'^[-a-zA-Z0-9._]*$':
|
||||||
anyOf: [
|
anyOf: [
|
||||||
{$ref: '#/definitions/mongoQueryOperator'},
|
{$ref: '#/definitions/mongoQueryOperator'},
|
||||||
{type: 'string'}
|
{type: 'string'}
|
||||||
|
|
|
@ -74,6 +74,7 @@ module.exports = class PlayAchievementsModal extends ModalView
|
||||||
|
|
||||||
onEverythingLoaded: =>
|
onEverythingLoaded: =>
|
||||||
@achievements.set(@achievements.filter((m) -> m.get('collection') isnt 'level.sessions' or m.get('query')?.team))
|
@achievements.set(@achievements.filter((m) -> m.get('collection') isnt 'level.sessions' or m.get('query')?.team))
|
||||||
|
achievementsByDescription = earned: {}, unearned: {}
|
||||||
for achievement in @achievements.models
|
for achievement in @achievements.models
|
||||||
if earned = @earnedMap[achievement.id]
|
if earned = @earnedMap[achievement.id]
|
||||||
achievement.earned = earned
|
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.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.earnedPoints = Math.round (achievement.get('worth', true) or 0) * expFunction earned.get('achievedAmount')
|
||||||
achievement.earnedDate ?= ''
|
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.comparator = (m) -> m.earnedDate
|
||||||
@achievements.sort()
|
@achievements.sort()
|
||||||
@achievements.set(@achievements.models.reverse())
|
@achievements.set(@achievements.models.reverse())
|
||||||
|
|
Reference in a new issue