()
| 58 | } |
| 59 | |
| 60 | loadData () { |
| 61 | this.supermodel.addRequestResource({ |
| 62 | url: '/db/analytics_perday/-/active_classes', |
| 63 | method: 'POST', |
| 64 | success: data => { |
| 65 | // Organize data by day, then group |
| 66 | let day, group |
| 67 | const groupMap = {} |
| 68 | const dayGroupMap = {} |
| 69 | for (const activeClass of Array.from(data)) { |
| 70 | if (dayGroupMap[activeClass.day] == null) { dayGroupMap[activeClass.day] = {} } |
| 71 | dayGroupMap[activeClass.day].Total = 0 |
| 72 | for (group in activeClass.classes) { |
| 73 | const val = activeClass.classes[group] |
| 74 | groupMap[group] = true |
| 75 | dayGroupMap[activeClass.day][group] = val |
| 76 | dayGroupMap[activeClass.day].Total += val |
| 77 | } |
| 78 | } |
| 79 | this.activeClassGroups = Object.keys(groupMap) |
| 80 | this.activeClassGroups.push('Total') |
| 81 | // Build list of active classes, where each entry is a day of individual group values |
| 82 | this.activeClasses = [] |
| 83 | for (day in dayGroupMap) { |
| 84 | const dashedDay = `${day.substring(0, 4)}-${day.substring(4, 6)}-${day.substring(6, 8)}` |
| 85 | data = { day: dashedDay, groups: [] } |
| 86 | for (group of Array.from(this.activeClassGroups)) { |
| 87 | data.groups.push(dayGroupMap[day][group] != null ? dayGroupMap[day][group] : 0) |
| 88 | } |
| 89 | this.activeClasses.push(data) |
| 90 | } |
| 91 | this.activeClasses.sort((a, b) => b.day.localeCompare(a.day)) |
| 92 | |
| 93 | this.updateAllKPIChartData() |
| 94 | this.updateActiveClassesChartData() |
| 95 | return (typeof this.render === 'function' ? this.render() : undefined) |
| 96 | } |
| 97 | }, 0).load() |
| 98 | |
| 99 | this.supermodel.addRequestResource({ |
| 100 | url: '/db/analytics_perday/-/active_users', |
| 101 | method: 'POST', |
| 102 | success: data => { |
| 103 | let day |
| 104 | this.activeUsers = data.map(function (a) { |
| 105 | a.day = `${a.day.substring(0, 4)}-${a.day.substring(4, 6)}-${a.day.substring(6, 8)}` |
| 106 | return a |
| 107 | }) |
| 108 | |
| 109 | // Add campaign/classroom DAU 30-day averages and daily totals |
| 110 | const campaignDauTotals = [] |
| 111 | const classroomDauTotals = [] |
| 112 | const eventMap = {} |
| 113 | for (const entry of Array.from(this.activeUsers)) { |
| 114 | ({ |
| 115 | day |
| 116 | } = entry) |
| 117 | let campaignDauTotal = 0 |
no test coverage detected