Add member concept maps to private clans

This commit is contained in:
Matt Lott 2015-07-02 13:23:26 -07:00
parent a62e0a8fe6
commit a316924576
2 changed files with 22 additions and 2 deletions
app
templates/clans
views/clans

View file

@ -107,7 +107,15 @@ block content
if isOwner && member.id !== clan.get('ownerID')
button.btn.btn-xs.btn-warning.remove-member-btn(data-id="#{member.id}", data-i18n="clans.rem_hero") Remove Hero
td.progress-cell
p
div.level-progression-campaign(style='color:#317EAC;') Concepts
each concept in conceptsProgression
if userConceptsMap[member.id] && userConceptsMap[member.id][concept] === 'complete'
span.spr.progress-level-cell.progress-level-cell-complete(data-i18n="concepts." + concept)
else if userConceptsMap[member.id] && userConceptsMap[member.id][concept] === 'started'
span.spr.progress-level-cell.progress-level-cell-started(data-i18n="concepts." + concept)
else
span.spr.progress-level-cell.progress-level-cell-not-started(data-i18n="concepts." + concept)
each campaign in campaignLevelProgressions
if lastUserCampaignLevelMap[member.id] && lastUserCampaignLevelMap[member.id][campaign.ID]
div.level-progression-campaign= campaign.name
@ -164,7 +172,7 @@ block content
.level-popup-container
h3 #{i}. #{level.name}
div
span(data-i18n="choose_hero.status") Status
span(data-i18n="clans.status") Status
span.spr :
span(data-i18n="clans.not_started_2") Not Started
if lastUserCampaignLevelMap[member.id][campaign.ID].levelSlug === level.slug

View file

@ -67,6 +67,7 @@ module.exports = class ClanDetailsView extends RootView
context = super()
context.campaignLevelProgressions = @campaignLevelProgressions ? []
context.clan = @clan
context.conceptsProgression = @conceptsProgression ? []
if application.isProduction()
context.joinClanLink = "https://codecombat.com/clans/#{@clanID}"
else
@ -84,6 +85,7 @@ module.exports = class ClanDetailsView extends RootView
# Find last campaign level for each user
lastUserCampaignLevelMap = {}
maxLastUserCampaignLevel = 0
userConceptsMap = {}
if @campaigns.loaded
for campaign in @campaigns.models
campaignID = campaign.id
@ -98,10 +100,16 @@ module.exports = class ClanDetailsView extends RootView
levelSlug: levelSlug
index: lastLevelIndex
maxLastUserCampaignLevel = lastLevelIndex if lastLevelIndex > maxLastUserCampaignLevel
if level.concepts?
userConceptsMap[member.id] ?= {}
for concept in level.concepts
continue if userConceptsMap[member.id][concept] is 'complete'
userConceptsMap[member.id][concept] = context.memberLevelStateMap[member.id][levelSlug].state
lastLevelIndex++
context.lastUserCampaignLevelMap = lastUserCampaignLevelMap
context.showExpandedProgress = maxLastUserCampaignLevel <= 30 or @showExpandedProgress
context.userConceptsMap = userConceptsMap
context
afterRender: ->
@ -124,6 +132,7 @@ module.exports = class ClanDetailsView extends RootView
onCampaignSync: ->
return unless @campaigns.loaded
@campaignLevelProgressions = []
@conceptsProgression = []
for campaign in @campaigns.models
continue if campaign.get('slug') is 'auditions'
campaignLevelProgression =
@ -136,6 +145,9 @@ module.exports = class ClanDetailsView extends RootView
ID: levelID
slug: level.slug
name: level.name
if level.concepts?
for concept in level.concepts
@conceptsProgression.push concept unless concept in @conceptsProgression
@campaignLevelProgressions.push campaignLevelProgression
@render?()