()
| 126 | } |
| 127 | |
| 128 | getRenderData () { |
| 129 | let left, needle |
| 130 | const context = super.getRenderData() |
| 131 | context.campaignLevelProgressions = this.campaignLevelProgressions != null ? this.campaignLevelProgressions : [] |
| 132 | context.clan = this.clan |
| 133 | context.conceptsProgression = this.conceptsProgression != null ? this.conceptsProgression : [] |
| 134 | if (application.isProduction()) { |
| 135 | context.joinClanLink = `https://codecombat.com/clans/${this.clanID}` |
| 136 | } else { |
| 137 | context.joinClanLink = `http://localhost:3000/clans/${this.clanID}` |
| 138 | } |
| 139 | context.owner = this.owner |
| 140 | context.memberAchievementsMap = this.memberAchievementsMap |
| 141 | context.memberLanguageMap = this.memberLanguageMap |
| 142 | context.memberLevelStateMap = this.memberLevelMap != null ? this.memberLevelMap : {} |
| 143 | context.memberMaxLevelCount = this.memberMaxLevelCount |
| 144 | context.memberSort = this.memberSort |
| 145 | context.isOwner = this.clan.get('ownerID') === me.id |
| 146 | context.isMember = (needle = this.clanID, Array.from(((left = me.get('clans')) != null ? left : [])).includes(needle)) |
| 147 | context.stats = this.stats |
| 148 | |
| 149 | // Find last campaign level for each user |
| 150 | // TODO: why do we do this for every render? |
| 151 | const highestUserLevelCountMap = {} |
| 152 | const lastUserCampaignLevelMap = {} |
| 153 | let maxLastUserCampaignLevel = 0 |
| 154 | const userConceptsMap = {} |
| 155 | if (this.campaigns != null ? this.campaigns.loaded : undefined) { |
| 156 | let levelCount = 0 |
| 157 | for (const campaign of Array.from(this.campaigns.models)) { |
| 158 | if (campaign.get('type') === 'hero') { |
| 159 | const campaignID = campaign.id |
| 160 | let lastLevelIndex = 0 |
| 161 | const object = campaign.get('levels') |
| 162 | for (const levelID in object) { |
| 163 | const level = object[levelID] |
| 164 | const levelSlug = level.slug |
| 165 | for (const member of Array.from((this.members != null ? this.members.models : undefined) != null ? (this.members != null ? this.members.models : undefined) : [])) { |
| 166 | if (context.memberLevelStateMap[member.id] != null ? context.memberLevelStateMap[member.id][levelSlug] : undefined) { |
| 167 | if (lastUserCampaignLevelMap[member.id] == null) { lastUserCampaignLevelMap[member.id] = {} } |
| 168 | if (lastUserCampaignLevelMap[member.id][campaignID] == null) { lastUserCampaignLevelMap[member.id][campaignID] = {} } |
| 169 | lastUserCampaignLevelMap[member.id][campaignID] = { |
| 170 | levelSlug, |
| 171 | index: lastLevelIndex |
| 172 | } |
| 173 | if (lastLevelIndex > maxLastUserCampaignLevel) { maxLastUserCampaignLevel = lastLevelIndex } |
| 174 | if (level.concepts != null) { |
| 175 | if (userConceptsMap[member.id] == null) { userConceptsMap[member.id] = {} } |
| 176 | for (const concept of Array.from(level.concepts)) { |
| 177 | if (userConceptsMap[member.id][concept] === 'complete') { continue } |
| 178 | userConceptsMap[member.id][concept] = context.memberLevelStateMap[member.id][levelSlug].state |
| 179 | } |
| 180 | } |
| 181 | highestUserLevelCountMap[member.id] = levelCount |
| 182 | } |
| 183 | } |
| 184 | lastLevelIndex++ |
| 185 | levelCount++ |
nothing calls this directly
no test coverage detected