diff --git a/app/templates/clans/clan-details.jade b/app/templates/clans/clan-details.jade index a19a0e5f2..5cb9e97f8 100644 --- a/app/templates/clans/clan-details.jade +++ b/app/templates/clans/clan-details.jade @@ -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 diff --git a/app/views/clans/ClanDetailsView.coffee b/app/views/clans/ClanDetailsView.coffee index 6946ae4cd..99c8eb2e6 100644 --- a/app/views/clans/ClanDetailsView.coffee +++ b/app/views/clans/ClanDetailsView.coffee @@ -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?()