(function () { "use strict"; angular.module('shared') .component('classroomsList', { templateUrl: '/shared/js/angular/classroom-list/classrooms-list.html', controller: 'ClassroomsList' }) .controller('ClassroomsList', ['studentList', 'ChunkStudents', '$scope', '$parse', 'classroomInfo', 'StudentsUtil', 'memberInfo', function ClassroomsList(studentList, ChunkStudents, $scope, $parse, classroomInfo, StudentsUtil, memberInfo) { var ctrl = this; var SELECTED_CLASSROOM_SESSION_KEY = 'ClassroomList::selectedClassroom'; var SELECTED_SHARED_SESSION_KEY = 'ClassroomList::selectedShared'; var getStudents = $parse('$ctrl.students.get() | sortByStudentName: $ctrl.memberInfo.sort_by_last_name'); ctrl.sharedClassroom = { classroom_alias: 'Shared Students' }; ctrl.classrooms = classroomInfo.activeClassrooms; ctrl.students = studentList; ctrl.memberInfo = memberInfo; ctrl.hasSharedStudents = memberInfo.hasSharedStudents; ctrl.$postLink = function() { $scope.$watchCollection(getStudents, updateChunkedStudents); }; ctrl.getButtonClass = function(isFirstItem, isLastItem) { if (isFirstItem) { return 'js-first-item'; } if (isLastItem && !ctrl.hasSharedStudents) { return 'js-last-item'; } return ''; }; ctrl.filterByClassroom = function(classroom) { localStorage.setItem(SELECTED_CLASSROOM_SESSION_KEY, ctrl.selectedClassroomId = classroom.classroom_id); localStorage.setItem(SELECTED_SHARED_SESSION_KEY, ctrl.selectedShared = false); updateChunkedStudents(getStudents($scope)); }; ctrl.filterByShared = function() { localStorage.setItem(SELECTED_CLASSROOM_SESSION_KEY, ctrl.selectedClassroomId = 0); localStorage.setItem(SELECTED_SHARED_SESSION_KEY, ctrl.selectedShared = true); updateChunkedStudents(getStudents($scope)); }; function updateChunkedStudents (students) { ctrl.chunkedStudents = ChunkStudents.chunk( students.filter( function (student) { if (ctrl.selectedClassroomId !== 0) { return student.classroom_id == ctrl.selectedClassroomId; } else if (ctrl.selectedShared) { return student.is_shared; } return true; } ) ); ctrl.numCols = ctrl.chunkedStudents.length; if (!studentList.pending) { ctrl.hasSharedStudents = StudentsUtil.getShared(studentList.get()).length > 0; } } } ]) })();