diff --git a/common/lib/xmodule/xmodule/js/src/combinedopenended/display.coffee b/common/lib/xmodule/xmodule/js/src/combinedopenended/display.coffee
index 4ae1f9156a..68c1f17ef6 100644
--- a/common/lib/xmodule/xmodule/js/src/combinedopenended/display.coffee
+++ b/common/lib/xmodule/xmodule/js/src/combinedopenended/display.coffee
@@ -114,6 +114,8 @@ class @CombinedOpenEnded
grader_status_sel: '.grader-status'
info_rubric_elements_sel: '.rubric-elements-info'
rubric_collapse_sel: '.rubric-collapse'
+ next_rubric_sel: '.rubric-next-button'
+ previous_rubric_sel: '.rubric-previous-button'
constructor: (el) ->
@el=el
@@ -240,6 +242,9 @@ class @CombinedOpenEnded
@toggle_rubric("")
@rubric_collapse = @$(@rubric_collapse_sel)
@rubric_collapse.click @toggle_rubric
+ @hide_rubrics()
+ @$(@previous_rubric_sel).click @previous_rubric
+ @$(@next_rubric_sel).click @next_rubric
show_status_current: () =>
data = {}
@@ -569,6 +574,38 @@ class @CombinedOpenEnded
@question_header.text(new_text)
return false
+ hide_rubrics: () =>
+ rubrics = @$(@combined_rubric_sel)
+ for rub in rubrics
+ if @$(rub).data('status')=="shown"
+ @$(rub).show()
+ else
+ @$(rub).hide()
+
+ next_rubric: =>
+ @shift_rubric(1)
+ return false
+
+ previous_rubric: =>
+ @shift_rubric(-1)
+ return false
+
+ shift_rubric: (i) =>
+ rubrics = @$(@combined_rubric_sel)
+ number = 0
+ for rub in rubrics
+ if @$(rub).data('status')=="shown"
+ number = @$(rub).data('number')
+ @$(rub).data('status','hidden')
+ if i==1 and number < rubrics.length - 1
+ number = number + i
+
+ if i==-1 and number>0
+ number = number + i
+
+ @$(rubrics[number]).data('status', 'shown')
+ @hide_rubrics()
+
prompt_show: () =>
if @prompt_container.is(":hidden")==true
@prompt_container.slideToggle()
diff --git a/common/lib/xmodule/xmodule/js/src/peergrading/peer_grading_problem.coffee b/common/lib/xmodule/xmodule/js/src/peergrading/peer_grading_problem.coffee
index 050d525a13..c02fa3f390 100644
--- a/common/lib/xmodule/xmodule/js/src/peergrading/peer_grading_problem.coffee
+++ b/common/lib/xmodule/xmodule/js/src/peergrading/peer_grading_problem.coffee
@@ -344,7 +344,11 @@ class @PeerGradingProblem
if response.success
@is_calibrated_check()
@grading_message.fadeIn()
- @grading_message.html("
Successfully saved your feedback. Fetched the next essay.
")
+ message = "Successfully saved your feedback. Fetched the next essay."
+ if response.required_done
+ message = message + " You have completed the required number of gradings."
+ message = message + "
"
+ @grading_message.html(message)
else
if response.error
@render_error(response.error)
@@ -482,7 +486,7 @@ class @PeerGradingProblem
if response.actual_rubric != undefined
calibration_wrapper.append("Instructor Scored Rubric: #{response.actual_rubric}
")
- if response.actual_feedback!=undefined
+ if response.actual_feedback.feedback!=undefined
calibration_wrapper.append("Instructor Feedback: #{response.actual_feedback}
")
# disable score selection and submission from the grading interface
diff --git a/common/lib/xmodule/xmodule/open_ended_grading_classes/combined_open_ended_modulev1.py b/common/lib/xmodule/xmodule/open_ended_grading_classes/combined_open_ended_modulev1.py
index ae3d01c686..ad9d7a287f 100644
--- a/common/lib/xmodule/xmodule/open_ended_grading_classes/combined_open_ended_modulev1.py
+++ b/common/lib/xmodule/xmodule/open_ended_grading_classes/combined_open_ended_modulev1.py
@@ -506,22 +506,20 @@ class CombinedOpenEndedV1Module():
for i in xrange(0, loop_up_to_task):
response = self.get_last_response(i)
rubric_scores = None
- if len(response['rubric_scores']) > 0 and response['grader_types'][0] in HUMAN_GRADER_TYPE.keys():
- rubric_scores = [response['rubric_scores']]
- grader_types = None
- if len(response['grader_types']) > 0 and response['grader_types'][0] in HUMAN_GRADER_TYPE.keys():
- grader_types = [response['grader_types']]
- feedback_items = None
- if len(response['feedback_items']) > 0 and response['grader_types'][0] in HUMAN_GRADER_TYPE.keys():
- feedback_items = [response['feedback_items']]
- if feedback_items is not None and grader_types is not None and rubric_scores is not None:
- rubric_html = self.rubric_renderer.render_combined_rubric(stringify_children(self.static_data['rubric']),
- rubric_scores,
- grader_types, feedback_items)
- contexts.append({
- 'result': rubric_html,
- 'task_name': 'Scored rubric'
- })
+ score_length = len(response['grader_types'])
+ log.info(response)
+ for z in xrange(0,score_length):
+ if response['grader_types'][z] in HUMAN_GRADER_TYPE.keys():
+ rubric_scores = [[response['rubric_scores'][z]]]
+ grader_types = [[response['grader_types'][z]]]
+ feedback_items = [[response['feedback_items'][z]]]
+ rubric_html = self.rubric_renderer.render_combined_rubric(stringify_children(self.static_data['rubric']),
+ rubric_scores,
+ grader_types, feedback_items)
+ contexts.append({
+ 'result': rubric_html,
+ 'task_name': 'Scored rubric'
+ })
context = {
'results': contexts,
diff --git a/common/lib/xmodule/xmodule/peer_grading_module.py b/common/lib/xmodule/xmodule/peer_grading_module.py
index 44114136aa..b21e4865ec 100644
--- a/common/lib/xmodule/xmodule/peer_grading_module.py
+++ b/common/lib/xmodule/xmodule/peer_grading_module.py
@@ -327,6 +327,11 @@ class PeerGradingModule(PeerGradingFields, XModule):
try:
response = self.peer_gs.save_grade(location, grader_id, submission_id,
score, feedback, submission_key, rubric_scores, submission_flagged, answer_unknown)
+
+ success, location_data = self.query_data_for_location()
+ response.update({'required_done' : False})
+ if 'count_graded' in location_data and 'count_required' in location_data:
+ response['required_done'] = True
return response
except GradingServiceError:
# This is a dev_facing_error
diff --git a/lms/templates/combinedopenended/combined_open_ended_results.html b/lms/templates/combinedopenended/combined_open_ended_results.html
index 125bab2444..688354ff4c 100644
--- a/lms/templates/combinedopenended/combined_open_ended_results.html
+++ b/lms/templates/combinedopenended/combined_open_ended_results.html
@@ -2,9 +2,9 @@
% if 'task_name' in result and 'result' in result:
0:
- status="shown">
+ data-status="hidden" data-number="${i}">
% else:
- status="hidden">
+ data-status="shown" data-number="${i}">
% endif