(function(){ 'use strict'; angular.module('shared') .component('readingDashboard', { templateUrl: '/shared/js/angular/teacher-dashboard/components/reading.html', controller: 'Reading' }) .controller('Reading', ['$scope', '$http', 'messageHandler', 'memberInfo', 'DaysAgoDateService', 'DashboardUrlService', "ChartsDataFormatterService", 'SITE_ID', 'SiteHelper', function($scope, $http, messageHandler, memberInfo, DaysAgoDateService, DashboardUrlService, ChartsDataFormatterService, SITE_ID, SiteHelper) { var ctrl = this; ctrl.isKAZ = parseInt(SITE_ID) === SiteHelper.KAZ_SITE_ID; ctrl.$onInit = function() { updateData(); ctrl.rosterUrl = DashboardUrlService.getRosterUrl('reading'); }; ctrl.isLoading = function() { return ctrl.isPending; }; ctrl.hasCurrentClassReadingLevelsData = function () { return !!ctrl.currentClassReadingLevelsData && ctrl.currentClassReadingLevelsData.length > 0; }; ctrl.hasTopOrBottomComprehensionSkillsData = function () { return ctrl.hasTopComprehensionSkills() || ctrl.hasBottomComprehensionSkills(); }; ctrl.hasTopComprehensionSkills = function () { return !!ctrl.topAndBottomComprehensionSkills && !!ctrl.topAndBottomComprehensionSkills.topComprehensionSkills && ctrl.topAndBottomComprehensionSkills.topComprehensionSkills.length > 0; }; ctrl.hasBottomComprehensionSkills = function () { return !!ctrl.topAndBottomComprehensionSkills && !!ctrl.topAndBottomComprehensionSkills.bottomComprehensionSkills && ctrl.topAndBottomComprehensionSkills.bottomComprehensionSkills.length > 0; }; ctrl.hasActivitiesCompletedData = function () { return !!ctrl.activitiesCompletedData; }; ctrl.hasInteractivityCountData = function () { return "interactivity_count" in ctrl.activitiesCompletedData; }; ctrl.hasAverageQuizScoresData = function () { return !!ctrl.averageQuizScoresData && ctrl.averageQuizScoresData.length > 0; }; ctrl.getPropertyValue = function (property) { return property === null ? 0 : property; }; function setData(data) { ctrl.dashboardData = data.dashboardData; ctrl.currentClassReadingLevelsData = ctrl.dashboardData == null ? null : ctrl.dashboardData.readingData; ctrl.topAndBottomComprehensionSkills = ctrl.dashboardData == null ? null : ChartsDataFormatterService.getTopAndBottomComprehensionSkills(ctrl.dashboardData.skills); ctrl.activitiesCompletedData = ctrl.dashboardData == null ? null : ctrl.dashboardData.readingActivities; ctrl.averageQuizScoresData = ctrl.dashboardData == null ? null : ChartsDataFormatterService.getFormattedAverageQuizScoresData(ctrl.dashboardData.questions); ctrl.hasNoStudents = data == null ? null : data.hasNoStudents; ctrl.hasSharedStudents = data == null ? null : data.hasSharedStudents; ctrl.zeroStudentsWarning = data == null ? null : data.zeroStudentsWarning; ctrl.hasNoSkillsData = data == null ? null : data.hasNoSkillsData; ctrl.skillChartPic = data == null ? null : data.skillChartPic; ctrl.activityChartPic = data == null ? null : data.activityChartPic; ctrl.quizChartPic = data == null ? null : data.quizChartPic; ctrl.hasNoQuizData = data == null ? null : data.hasNoQuizData; ctrl.readingSubjectName = data == null ? null : data.readingSubjectName; ctrl.readingLevelPic = data == null ? null : data.readingLevelPic; ctrl.hazRazPlus = data == null ? null : data.hazRazPlus; ctrl.skillReportUrl = DashboardUrlService.getSkillReportUrl('reading'); ctrl.activityReportUrl = DashboardUrlService.getActivityReportUrl('reading'); } function updateData() { ctrl.isPending = true; var startDate = DaysAgoDateService.getStartDateString(); var endDate = DaysAgoDateService.getEndDateString(); var apiUrl = '/api/teacherUtility/getReadingDashboard/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.hasNoStudents == null) { console.log('No results returned from getReadingDashboard'); messageHandler.publishError('Could not read dashboard data.'); } else { setData(result.data); } }) .catch(function (e) { console.log('getReadingDashboard Error: ', e); messageHandler.publishError('Could not read dashboard data.'); }) .finally(function () { ctrl.isPending = false; }) } } ]); })();