60 lines
3.2 KiB
CoffeeScript
60 lines
3.2 KiB
CoffeeScript
I18n.scoped 'AssignmentDetailsDialog', (I18n) ->
|
|
class @SubmissionDetailsDialog
|
|
constructor: (@assignment, @student, @options) ->
|
|
@url = @options.change_grade_url.replace(":assignment", @assignment.id).replace(":submission", @student.id)
|
|
@submission = $.extend {}, @student["assignment_#{@assignment.id}"],
|
|
assignment: @assignment
|
|
speedGraderUrl: "#{@options.context_url}/gradebook/speed_grader?assignment_id=#{@assignment.id}#%7B%22student_id%22%3A#{@student.id}%7D"
|
|
loading: true
|
|
@dialog = $('<div class="use-css-transitions-for-show-hide" style="padding:0;"/>')
|
|
@dialog.html(Template('SubmissionDetailsDialog', @submission))
|
|
.dialog
|
|
title: @student.name
|
|
width: 600
|
|
resizable: false
|
|
open: @scrollCommentsToBottom
|
|
.delegate 'select', 'change', (event) =>
|
|
@dialog.find('.submission_detail').each (index) ->
|
|
$(this).showIf(index == event.currentTarget.selectedIndex)
|
|
.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: =>
|
|
@dialog.find('.submission_details_comments').scrollTop(999999)
|
|
|
|
update: (newData) =>
|
|
$.extend @submission, newData
|
|
@submission.submission_history[0] = @submission
|
|
@submission.moreThanOneSubmission = @submission.submission_history.length > 1
|
|
@submission.loading = false
|
|
for submission in @submission.submission_history
|
|
submission["submission_type_is#{submission.submission_type}"] = true
|
|
submission.submissionWasLate = @assignment.due_at && new Date(@assignment.due_at) > new Date(submission.submitted_at)
|
|
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}?fallback=#{encodeURIComponent(urlPrefix+'/images/messages/avatar-50.png')}"
|
|
for attachment in submission.attachments || []
|
|
if turnitinDataForThisAttachment = submission.turnitin_data?["attachment_#{attachment.id}"]
|
|
attachment.turnitinUrl = "#{@options.context_url}/assignments/#{@assignment.id}/submissions/#{@student.id}/turnitin/attachment_#{attachment.id}"
|
|
attachment.turnitin_data = turnitinDataForThisAttachment
|
|
@dialog.html(Template('SubmissionDetailsDialog', @submission))
|
|
@dialog.find('select').trigger('change')
|
|
@scrollCommentsToBottom()
|
|
|
|
@cachedDialogs: {}
|
|
|
|
@open: (assignment, student, options) ->
|
|
(SubmissionDetailsDialog.cachedDialogs["#{assignment.id}-#{student.id}"] ||= new SubmissionDetailsDialog(assignment, student, options)).open()
|