forked from instructure/canvas-lms
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSubmissionDetailsDialog.coffee
More file actions
110 lines (101 loc) · 5.21 KB
/
Copy pathSubmissionDetailsDialog.coffee
File metadata and controls
110 lines (101 loc) · 5.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
define [
'jquery'
'jst/SubmissionDetailsDialog'
'i18n!submission_details_dialog'
'jsx/shared/helpers/numberHelper'
'jsx/gradebook/shared/helpers/GradeFormatHelper'
'compiled/gradebook/GradebookHelpers'
'compiled/gradebook/Turnitin'
'jsx/grading/helpers/OutlierScoreHelper'
'jst/_submission_detail' # a partial needed by the SubmissionDetailsDialog template
'jst/_turnitinScore' # a partial needed by the submission_detail partial
'jquery.ajaxJSON'
'jquery.disableWhileLoading'
'jquery.instructure_forms'
'jqueryui/dialog'
'jquery.instructure_misc_plugins'
'vendor/jquery.scrollTo'
'vendor/jquery.ba-tinypubsub'
], ($, submissionDetailsDialog, I18n, numberHelper, GradeFormatHelper, GradebookHelpers, {extractDataForTurnitin}, OutlierScoreHelper) ->
class SubmissionDetailsDialog
constructor: (@assignment, @student, @options) ->
speedGraderUrl = if @options.speed_grader_enabled
"#{@options.context_url}/gradebook/speed_grader?assignment_id=#{@assignment.id}#%7B%22student_id%22%3A#{@student.id}%7D"
else
null
@url = @options.change_grade_url.replace(":assignment", @assignment.id).replace(":submission", @student.id)
submission = @student["assignment_#{@assignment.id}"]
@submission = $.extend {}, submission,
label: "student_grading_#{@assignment.id}"
inputName: 'submission[posted_grade]'
assignment: @assignment
speedGraderUrl: speedGraderUrl
loading: true
showPointsPossible: (@assignment.points_possible || @assignment.points_possible == '0') && @assignment.grading_type != "gpa_scale"
formattedPointsPossible: I18n.n(@assignment.points_possible)
shouldShowExcusedOption: true
isInPastGradingPeriodAndNotAdmin: submission.gradeLocked
@submission["assignment_grading_type_is_#{@assignment.grading_type}"] = true
@submission.grade = "EX" if @submission.excused
@$el = $('<div class="use-css-transitions-for-show-hide" style="padding:0;"/>')
@$el.html(submissionDetailsDialog(@submission))
@dialog = @$el.dialog
title: @student.name
width: 600
resizable: false
@dialog.delegate 'select', 'change', (event) =>
@dialog.find('.submission_detail').each (index) ->
$(this).showIf(index == event.currentTarget.selectedIndex)
.delegate '.submission_details_grade_form', 'submit', (event) =>
event.preventDefault()
formData = $(event.currentTarget).getFormData()
rawGrade = formData["submission[posted_grade]"]
if rawGrade.toUpperCase() == "EX"
formData = {"submission[excuse]": true}
else
formData['submission[posted_grade]'] = GradeFormatHelper.delocalizeGrade(rawGrade)
$(event.currentTarget.form).disableWhileLoading $.ajaxJSON @url, 'PUT', formData, (data) =>
@update(data)
unless data.excused
outlierScoreHelper = new OutlierScoreHelper(@submission.score, @submission.assignment.points_possible)
$.flashWarning(outlierScoreHelper.warningMessage()) if outlierScoreHelper.hasWarning()
$.publish 'submissions_updated', [@submission.all_submissions]
setTimeout =>
@dialog.dialog('close')
, 500
.delegate '.submission_details_add_comment_form', 'submit', (event) =>
event.preventDefault()
$(event.currentTarget).disableWhileLoading $.ajaxJSON @url, 'PUT', $(event.currentTarget).getFormData(), (data) =>
@update(data)
setTimeout =>
@dialog.dialog('close')
, 500
deferred = $.ajaxJSON @url+'&include[]=submission_history&include[]=submission_comments&include[]=rubric_assessment', 'GET', {}, @update
@dialog.find('.submission_details_comments').disableWhileLoading deferred
open: =>
@dialog.dialog('open')
@scrollCommentsToBottom()
$('.ui-dialog-titlebar-close').focus()
scrollCommentsToBottom: =>
@dialog.find('.submission_details_comments').scrollTop(999999)
update: (newData) =>
$.extend @submission, newData
@submission.moreThanOneSubmission = @submission.submission_history.length > 1
@submission.loading = false
for submission in @submission.submission_history
for comment in submission.submission_comments || []
comment.url = "#{@options.context_url}/users/#{comment.author_id}"
urlPrefix = "#{location.protocol}//#{location.host}"
comment.image_url = "#{urlPrefix}/images/users/#{comment.author_id}"
submission.turnitin = extractDataForTurnitin(submission, "submission_#{submission.id}", @options.context_url)
for attachment in submission.attachments || []
attachment.turnitin = extractDataForTurnitin(submission, "attachment_#{attachment.id}", @options.context_url)
if @submission.excused
@submission.grade = "EX"
else if @assignment.grading_type in ['points', 'percent']
@submission.grade = GradeFormatHelper.formatGrade(@submission.grade)
@dialog.html(submissionDetailsDialog(@submission))
@dialog.find('select').trigger('change')
@scrollCommentsToBottom()
@open: (assignment, student, options) ->
new SubmissionDetailsDialog(assignment, student, options, ENV).open()