@@ -11,8 +11,9 @@ define [
1111 ' compiled/AssignmentDetailsDialog'
1212 ' compiled/AssignmentMuter'
1313 ' compiled/grade_calculator'
14+ ' compiled/gradebook2/OutcomeGradebookGrid'
1415 ' ../../shared/components/ic_submission_download_dialog_component'
15- ], (ajax , round , userSettings , fetchAllPages , parseLinkHeader , I18n , Ember , _ , tz , AssignmentDetailsDialog , AssignmentMuter , GradeCalculator , ic_submission_download_dialog ) ->
16+ ], (ajax , round , userSettings , fetchAllPages , parseLinkHeader , I18n , Ember , _ , tz , AssignmentDetailsDialog , AssignmentMuter , GradeCalculator , outcomeGrid , ic_submission_download_dialog ) ->
1617
1718 {get , set , setProperties } = Ember
1819
@@ -51,6 +52,8 @@ define [
5152 args .push options
5253 Ember .arrayComputed .apply (null , args)
5354
55+ contextUrl = get (window , ' ENV.GRADEBOOK_OPTIONS.context_url' )
56+
5457 ScreenreaderGradebookController = Ember .ObjectController .extend
5558
5659 errors : (->
@@ -63,22 +66,20 @@ define [
6366 Ember .$ (node).appendTo (Ember .$ (' #flash_screenreader_holder' ))
6467 ).on (' init' )
6568
66- contextUrl : get ( window , ' ENV.GRADEBOOK_OPTIONS.context_url ' )
69+ contextUrl : contextUrl
6770
68- downloadCsvUrl : (->
69- " #{ @ get (' contextUrl' )} /gradebook.csv"
70- ).property ()
71+ downloadCsvUrl : " #{ contextUrl} /gradebook.csv"
7172
72- gradingHistoryUrl : ( ->
73- " #{ @ get ( ' contextUrl ' ) } /gradebook/history "
74- ). property ()
73+ downloadOutcomeCsvUrl : " #{ contextUrl } /outcome_rollups.csv "
74+
75+ gradingHistoryUrl : " #{ contextUrl } /gradebook/history "
7576
7677 speedGraderUrl : (->
77- " #{ @ get ( ' contextUrl' ) } /gradebook/speed_grader?assignment_id=#{ @ get (' selectedAssignment.id' )} "
78+ " #{ contextUrl} /gradebook/speed_grader?assignment_id=#{ @ get (' selectedAssignment.id' )} "
7879 ).property (' selectedAssignment' )
7980
8081 studentUrl : (->
81- " #{ @ get ( ' contextUrl' ) } /grades/#{ @ get (' selectedStudent.id' )} "
82+ " #{ contextUrl} /grades/#{ @ get (' selectedStudent.id' )} "
8283 ).property (' selectedStudent' )
8384
8485 showTotalAsPoints : (->
@@ -144,6 +145,8 @@ define [
144145 Ember .run .next =>
145146 if prop is ' selectedStudent' and @ get (' hideStudentNames' )
146147 text_to_announce = get item, ' hiddenName'
148+ else if prop is ' selectedOutcome'
149+ text_to_announce = get item, ' title'
147150 else
148151 text_to_announce = get item, ' name'
149152 @ set ' ariaAnnounced' , text_to_announce
@@ -227,6 +230,7 @@ define [
227230 sectionSelectDefaultLabel : I18n .t " all_sections" , " All Sections"
228231 studentSelectDefaultLabel : I18n .t " no_student" , " No Student Selected"
229232 assignmentSelectDefaultLabel : I18n .t " no_assignment" , " No Assignment Selected"
233+ outcomeSelectDefaultLabel : I18n .t " no_outcome" , " No Outcome Selected"
230234
231235 students : studentsUniqByEnrollments (' enrollments' )
232236
@@ -246,7 +250,7 @@ define [
246250
247251 return unless notYetLoaded .length
248252 student_ids = notYetLoaded .mapBy (' id' )
249- fetchAllPages (ENV .GRADEBOOK_OPTIONS .submissions_url , student_ids : student_ids, @ get (' submissions' ))
253+ fetchAllPages (ENV .GRADEBOOK_OPTIONS .submissions_url , records : @ get (' submissions' ), data : student_ids : student_ids )
250254 ).observes (' students.@each' ).on (' init' )
251255
252256 publishToSisEnabled : (->
@@ -560,6 +564,22 @@ define [
560564 }
561565 ).property (' selectedStudent' , ' selectedAssignment' )
562566
567+ selectedOutcomeResult : ( ->
568+ return null unless @ get (' selectedStudent' )? and @ get (' selectedOutcome' )?
569+ student = @ get ' selectedStudent'
570+ outcome = @ get ' selectedOutcome'
571+ result = @ get (' outcome_rollups' ).find (x) ->
572+ x .user_id == student .id && x .outcome_id == outcome .id
573+ result or {
574+ user_id : student .id
575+ outcome_id : outcome .id
576+ }
577+ ).property (' selectedStudent' , ' selectedOutcome' )
578+
579+ outcomeResultIsDefined : ( ->
580+ @ get (' selectedOutcomeResult' ).score ?
581+ ).property (' selectedOutcomeResult' )
582+
563583 showAssignmentPointsWarning : (->
564584 @ get (" selectedAssignment.noPointsPossibleWarning" ) and @ get (' groupsAreWeighted' )
565585 ).property (' selectedAssignment' , ' groupsAreWeighted' )
@@ -581,6 +601,17 @@ define [
581601 locals
582602 ).property (' selectedAssignment' , ' students.@each.total_grade' )
583603
604+ outcomeDetails : (->
605+ return null unless @ get (' selectedOutcome' )?
606+ rollups = @ get (' outcome_rollups' ).filterBy (' outcome_id' , @ get (' selectedOutcome' ).id )
607+ scores = _ .filter (_ .pluck (rollups, ' score' ), _ .isNumber )
608+ details =
609+ average : outcomeGrid .Math .mean (scores)
610+ max : outcomeGrid .Math .max (scores)
611+ min : outcomeGrid .Math .min (scores)
612+ cnt : outcomeGrid .Math .cnt (scores)
613+ ).property (' selectedOutcome' , ' outcome_rollups' )
614+
584615 assignmentSubmissionTypes : (->
585616 types = @ get (' selectedAssignment.submission_types' )
586617 submissionTypes = @ get (' submissionTypes' )
@@ -611,6 +642,7 @@ define [
611642 getList : (property ) ->
612643 return @ get (' studentsInSelectedSection' ) if property == ' selectedStudent'
613644 return @ get (' assignments' ) if property == ' selectedAssignment'
645+ return @ get (' outcomes' ) if property == ' selectedOutcome'
614646
615647 getButton : (property ) ->
616648 return ' student' if property == ' selectedStudent'
@@ -626,8 +658,14 @@ define [
626658 if selected then @ get (' studentsInSelectedSection' ).indexOf (selected) else - 1
627659 ).property (' selectedStudent' , ' selectedSection' )
628660
661+ outcomeIndex : (->
662+ selected = @ get (' selectedOutcome' )
663+ if selected then @ get (' outcomes' ).indexOf (selected) else - 1
664+ ).property (' selectedOutcome' )
665+
629666 disablePrevAssignmentButton : Ember .computed .lte (' assignmentIndex' , 0 )
630667 disablePrevStudentButton : Ember .computed .lte (' studentIndex' , 0 )
668+ disablePrevOutcomeButton : Ember .computed .lte (' outcomeIndex' , 0 )
631669
632670 disableNextAssignmentButton : (->
633671 next = @ get (' assignments' ).objectAt (@ get (' assignmentIndex' ) + 1 )
@@ -639,6 +677,11 @@ define [
639677 ! (@ get (' studentsInSelectedSection.length' ) and next)
640678 ).property (' selectedStudent' , ' studentsInSelectedSection' , ' selectedSection' )
641679
680+ disableNextOutcomeButton : (->
681+ next = @ get (' outcomes' ).objectAt (@ get (' outcomeIndex' ) + 1 )
682+ ! (@ get (' outcomes.length' ) and next)
683+ ).property (' selectedOutcome' , ' outcomes.@each' )
684+
642685 displayName : (->
643686 if @ get (' hideStudentNames' )
644687 " hiddenName"
@@ -654,5 +697,5 @@ define [
654697
655698 enrollments = @ get (' enrollments' )
656699 enrollments .clear ()
657- fetchAllPages (url, null , enrollments)
700+ fetchAllPages (url, records : enrollments)
658701 ).observes (' showConcludedEnrollments' )
0 commit comments