MCPcopy Create free account
hub / github.com/codecombat/codecombat / calculateHocStats

Method calculateHocStats

app/views/courses/CoursesView.js:541–562  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

539 }
540
541 calculateHocStats () {
542 const hocCampaignSessions = ((store.getters != null ? store.getters['levelSessions/getSessionsForCampaign'](this.hourOfCodeOptions.campaignId) : undefined) || {}).sessions || []
543 const campaignSessions = _.sortBy(hocCampaignSessions, s => s.changed)
544 const levelSessionMap = {}
545 campaignSessions.forEach(s => { levelSessionMap[s.level.original] = s })
546 const userLevelStatusMap = {}
547 const levelsInCampaign = new Set()
548 this.campaignLevels.models.forEach(l => {
549 if (__guard__(levelSessionMap[l.get('original')], x => x.state.complete)) {
550 userLevelStatusMap[l.get('original')] = true
551 } else {
552 userLevelStatusMap[l.get('original')] = false
553 }
554 return levelsInCampaign.add(l.get('original'))
555 })
556 const [started, completed, levelsDone] = Array.from(coursesHelper.hasUserCompletedCourse(userLevelStatusMap, levelsInCampaign)) // eslint-disable-line no-unused-vars
557 this.hocStats = {
558 complete: completed,
559 pctDone: ((levelsDone / this.campaignLevels.models.length) * 100).toFixed(1) + '%',
560 }
561 return this.hocStats
562 }
563
564 courseInstanceHasProject (courseInstance) {
565 const classroom = this.classrooms.get(courseInstance.get('classroomID'))

Callers 1

onLoadedMethod · 0.95

Calls 2

__guard__Function · 0.70
getMethod · 0.45

Tested by

no test coverage detected