(function(){ 'use strict'; angular.module('shared') .component('phonicsDashboard', { templateUrl: '/shared/js/angular/teacher-dashboard/components/phonics.html', controller: 'Phonics' }) .controller('Phonics', ['$scope', '$http', 'messageHandler', 'memberInfo', 'DaysAgoDateService', 'DashboardUrlService', 'SITE_ID', 'SiteHelper', function($scope, $http, messageHandler, memberInfo, DaysAgoDateService, DashboardUrlService, SITE_ID, SiteHelper) { var ctrl = this; ctrl.isKAZ = parseInt(SITE_ID) === SiteHelper.KAZ_SITE_ID; ctrl.$onInit = function() { updateData(); }; ctrl.isLoading = function() { return ctrl.isPending; }; ctrl.hasCurrentClassEpisodesData = function () { return !!ctrl.currentClassEpisodesData; }; ctrl.hasAverageEpisodeScoresData = function () { return !!ctrl.averageEpisodeScoresData; }; ctrl.hasCompletedActivitiesData = function () { return !!ctrl.completedActivitiesData; }; ctrl.hasEpisodesCompletedPerWeekData = function () { return !!ctrl.episodesCompletedPerWeekData && ctrl.episodesCompletedPerWeekData.length > 0; }; ctrl.getAverageEpisodeScoresDatumScore = function(averageEpisodeScoresDatum) { return (averageEpisodeScoresDatum == null) ? "There are no scores to report for the selected date range." : Math.round(parseInt(averageEpisodeScoresDatum)).toString() + "%"; }; ctrl.getProductEpisodeString = function (isComprehension, isComprehension2, episode) { if (isComprehension) { return "Reading Comprehension Episode " + episode; } else if (isComprehension2) { return "Advanced Reading Comprehension Episode " + episode; } else { return "Early Reading Episode " + episode; } }; function setData(data) { ctrl.dashboardData = data.dashboardData; ctrl.currentClassEpisodesData = (ctrl.dashboardData == null) ? null : ctrl.dashboardData.currentEpisodes; ctrl.averageEpisodeScoresData = (ctrl.dashboardData == null) ? null : ctrl.dashboardData.averageEpisodeScores; ctrl.completedActivitiesData = (ctrl.dashboardData == null) ? null : ctrl.dashboardData.completedActivities; ctrl.episodesCompletedPerWeekData = (ctrl.dashboardData == null) ? null : ctrl.dashboardData.episodesPerStudent; ctrl.hasSharedStudents = data == null ? null : data.hasSharedStudents; ctrl.hasStudents = data == null ? null : data.hasStudents; ctrl.zeroStudentsWarning = data == null ? null : data.zeroStudentsWarning; ctrl.currentEpisodePic = data == null ? null : data.currentEpisodePic; ctrl.numberOfEpisodePlacementStudents = data == null ? null : data.numberOfEpisodePlacementStudents; ctrl.averageScoresPic = data == null ? null : data.averageScoresPic; ctrl.activityChartPic = data == null ? null : data.activityChartPic; ctrl.numberOfFilteredStudents = data == null ? null : data.numberOfFilteredStudents; ctrl.episodesPerWeekChartPic = data == null ? null : data.episodesPerWeekChartPic; ctrl.activityReportUrl = DashboardUrlService.getActivityReportUrl('phonics'); } function setInactiveStudentsText() { var inactiveText = " of your students have not been active in over 30 days. Active Students are represented below."; if (ctrl.numberOfFilteredStudents === "1") { inactiveText = " of your students has not been active in over 30 days. Active Students are represented below."; } ctrl.inactiveStudentsText = ctrl.numberOfFilteredStudents + inactiveText; } function updateData() { ctrl.isPending = true; var startDate = DaysAgoDateService.getStartDateString(); var endDate = DaysAgoDateService.getEndDateString(); var apiUrl = '/api/teacherUtility/getHeadsproutDashboard/member_id/' + memberInfo.member_id + '/start_date/' + startDate.replace(/-/g, '') + '/end_date/' + endDate.replace(/-/g, ''); $http.get(apiUrl) .then(function (result) { if (result == null || result.data == null || result.data.hasStudents == null) { console.log('No results returned from getHeadsproutDashboard'); messageHandler.publishError('Could not read dashboard data.'); } else { setData(result.data); setInactiveStudentsText(); } }) .catch(function (e) { console.log('getHeadsproutDashboard Error: ', e); messageHandler.publishError('Could not read dashboard data.'); }) .finally(function () { ctrl.isPending = false; }) } } ]); })();