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

Method onLoaded

app/views/admin/AdminLevelHintsView.js:43–113  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

41 }
42
43 onLoaded () {
44 let campaign
45 const orderedCampaignSlugs = ['junior', 'dungeon', 'campaign-game-dev-1', 'campaign-web-dev-1', 'forest', 'campaign-game-dev-2', 'campaign-web-dev-2', 'desert', 'mountain', 'glacier']
46 const courseCampaignIds = []
47 for (var course of Array.from(utils.sortCourses(this.courses.models).reverse())) {
48 if (course.get('releasePhase') === 'released') {
49 campaign = _.find(this.campaigns.models, c => c.id === course.get('campaignID'))
50 if (campaign) {
51 orderedCampaignSlugs.splice(0, 0, campaign.get('slug'))
52 }
53 }
54 }
55
56 const batchSize = 1000
57 var fetchLevelSessions = (skip, results) => {
58 const levelPromises = []
59 for (let i = 0; i <= 4; i++) {
60 const levelPromise = Promise.resolve($.get(`/db/level?skip=${skip}&project=slug,documentation,original`))
61 levelPromises.push(levelPromise)
62 skip += batchSize
63 }
64 return new Promise(resolve => setTimeout(resolve.bind(null, Promise.all(levelPromises)), 100))
65 .then(resultsMatrix => {
66 for (const newResults of Array.from(resultsMatrix)) {
67 results = results.concat(newResults)
68 }
69 if ((results % batchSize) === 0) {
70 return fetchLevelSessions(skip, results)
71 } else {
72 return Promise.resolve(results)
73 }
74 })
75 }
76 return fetchLevelSessions(0, [])
77 .then(levels => {
78 let hints, level
79 let doc
80 const levelHintsMap = {}
81 for (level of Array.from(levels)) {
82 var docs = level.documentation != null ? level.documentation : {}
83 const general = _.filter(((() => {
84 const result = []
85 for (doc of Array.from(docs.generalArticles || [])) {
86 result.push(__guard__(_.find(this.articles.models, article => article.get('original') === doc.original), x => x.attributes))
87 }
88 return result
89 })()))
90 const specific = _.filter(docs.specificArticles || [], a => (a != null))
91 hints = (docs.hintsB || docs.hints || []).concat(specific).concat(general)
92 hints = _.sortBy(hints, function (doc) {
93 if ((doc != null ? doc.name : undefined) === 'Intro') { return -1 }
94 return 0
95 })
96 levelHintsMap[level.slug] = hints
97 }
98 this.campaignHints = []
99 for (campaign of Array.from(this.campaigns.models)) {
100 var needle

Callers

nothing calls this directly

Calls 4

filterMethod · 0.80
__guard__Function · 0.70
getMethod · 0.45
renderMethod · 0.45

Tested by

no test coverage detected