Commit a49da5d5 by Vik Paruchuri

Fix rubrics, strip out get results

parent b6a58085
...@@ -15,7 +15,6 @@ class @Rubric ...@@ -15,7 +15,6 @@ class @Rubric
# display the 'current' carat # display the 'current' carat
@categories = @$(@rubric_category_sel) @categories = @$(@rubric_category_sel)
@category = @$(@categories.first()) @category = @$(@categories.first())
@category.prepend('> ')
@category_index = 0 @category_index = 0
# locally scoped jquery. # locally scoped jquery.
...@@ -46,12 +45,8 @@ class @Rubric ...@@ -46,12 +45,8 @@ class @Rubric
return return
inputs.filter("input[value=#{selected}]").click() inputs.filter("input[value=#{selected}]").click()
# move to the next category
old_category_text = @category.html().substring(5)
@category.html(old_category_text)
@category_index++ @category_index++
@category = @$(@categories[@category_index]) @category = @$(@categories[@category_index])
@category.prepend('> ')
tracking_callback: (event) => tracking_callback: (event) =>
target_selection = $(event.target).val() target_selection = $(event.target).val()
...@@ -98,7 +93,6 @@ class @CombinedOpenEnded ...@@ -98,7 +93,6 @@ class @CombinedOpenEnded
coe_sel: 'section.combined-open-ended' coe_sel: 'section.combined-open-ended'
reset_button_sel: '.reset-button' reset_button_sel: '.reset-button'
next_step_sel: '.next-step-button' next_step_sel: '.next-step-button'
status_container_sel: '.status-elements'
show_results_sel: '.show-results-button' show_results_sel: '.show-results-button'
question_header_sel: '.question-header' question_header_sel: '.question-header'
submit_evaluation_sel: '.submit-evaluation-button' submit_evaluation_sel: '.submit-evaluation-button'
...@@ -137,15 +131,18 @@ class @CombinedOpenEnded ...@@ -137,15 +131,18 @@ class @CombinedOpenEnded
$: (selector) -> $: (selector) ->
$(selector, @el) $(selector, @el)
reinitialize: (element) -> reinitialize: () ->
@has_been_reset = false @has_been_reset = false
@wrapper=@$(@wrapper_sel) @wrapper=@$(@wrapper_sel)
@coe = @$(@coe_sel) @coe = @$(@coe_sel)
@ajax_url = @coe.data('ajax-url')
@get_html()
@coe = @$(@coe_sel)
#Get data from combinedopenended #Get data from combinedopenended
@allow_reset = @coe.data('allow_reset') @allow_reset = @coe.data('allow_reset')
@id = @coe.data('id') @id = @coe.data('id')
@ajax_url = @coe.data('ajax-url')
@state = @coe.data('state') @state = @coe.data('state')
@task_count = @coe.data('task-count') @task_count = @coe.data('task-count')
@task_number = @coe.data('task-number') @task_number = @coe.data('task-number')
...@@ -163,8 +160,6 @@ class @CombinedOpenEnded ...@@ -163,8 +160,6 @@ class @CombinedOpenEnded
@next_problem_button = @$(@next_step_sel) @next_problem_button = @$(@next_step_sel)
@next_problem_button.click @next_problem @next_problem_button.click @next_problem
@status_container = @$(@status_container_sel)
#setup show results #setup show results
@show_results_button=@$(@show_results_sel) @show_results_button=@$(@show_results_sel)
@show_results_button.click @show_results @show_results_button.click @show_results
...@@ -183,6 +178,7 @@ class @CombinedOpenEnded ...@@ -183,6 +178,7 @@ class @CombinedOpenEnded
# Where to put the rubric once we load it # Where to put the rubric once we load it
@oe = @$(@open_ended_child_sel) @oe = @$(@open_ended_child_sel)
@errors_area = @$(@oe).find(@error_sel) @errors_area = @$(@oe).find(@error_sel)
@answer_area = @$(@oe).find(@answer_area_sel) @answer_area = @$(@oe).find(@answer_area_sel)
@prompt_container = @$(@oe).find(@prompt_sel) @prompt_container = @$(@oe).find(@prompt_sel)
...@@ -212,33 +208,18 @@ class @CombinedOpenEnded ...@@ -212,33 +208,18 @@ class @CombinedOpenEnded
@rebind() @rebind()
show_results_current: () => get_html_callback: (response) =>
data = {'task_number' : @task_number-1} @coe.replaceWith(response.html)
$.postWithPrefix "#{@ajax_url}/get_results", data, (response) =>
if response.success get_html: () =>
if (results_container?) url = "#{@ajax_url}/get_html"
@results_container.after(response.html).remove() $.ajaxWithPrefix({
@results_container = @$(@result_container_sel) type: 'POST',
@submit_evaluation_button = @$(@submit_evaluation_sel) url: url,
@submit_evaluation_button.click @message_post data: {},
Collapsible.setCollapsibles(@results_container) success: @get_html_callback,
# make sure we still have click tracking async:false
$('.evaluation-response a').click @log_feedback_click });
$('input[name="evaluation-score"]').change @log_feedback_selection
show_results: (event) =>
status_item = $(event.target).parent()
status_number = status_item.data('status-number')
data = {'task_number' : status_number}
$.postWithPrefix "#{@ajax_url}/get_results", data, (response) =>
if response.success
@results_container.after(response.html).remove()
@results_container = @$(@result_container_sel)
@submit_evaluation_button = @$(@submit_evaluation_sel)
@submit_evaluation_button.click @message_post
Collapsible.setCollapsibles(@results_container)
else
@gentle_alert response.error
show_combined_rubric_current: () => show_combined_rubric_current: () =>
data = {} data = {}
...@@ -255,36 +236,6 @@ class @CombinedOpenEnded ...@@ -255,36 +236,6 @@ class @CombinedOpenEnded
if response.hide_reset if response.hide_reset
@reset_button.hide() @reset_button.hide()
get_last_response: () =>
@submit_button.hide()
@answer_area.attr("disabled", true)
data = {}
$.postWithPrefix "#{@ajax_url}/get_last_response", data, (response) =>
if response.success && response.response != ""
@answer_area.html(response.response)
if response.state!='initial'
@submit_button.hide()
@answer_area.attr("disabled", true)
if @has_been_reset
@submit_button.show()
@answer_area.attr("disabled", false)
@gentle_alert "Here is your previous answer to this qu
estion."
else if @allow_reset=="True"
@reset_button.show()
@gentle_alert "You may reset and answer this question again."
else
@submit_button.show()
@answer_area.attr("disabled", false)
@$(@oe_alert_sel).animate(opacity: 0, 700)
show_status_current: () =>
data = {}
$.postWithPrefix "#{@ajax_url}/get_status", data, (response) =>
if response.success
@status_container.after(response.html).remove()
@status_container= $(@status_container_sel)
message_post: (event)=> message_post: (event)=>
external_grader_message=$(event.target).parent().parent().parent() external_grader_message=$(event.target).parent().parent().parent()
evaluation_scoring = $(event.target).parent() evaluation_scoring = $(event.target).parent()
...@@ -319,7 +270,6 @@ class @CombinedOpenEnded ...@@ -319,7 +270,6 @@ class @CombinedOpenEnded
rebind: () => rebind: () =>
@get_last_response()
# rebind to the appropriate function for the current state # rebind to the appropriate function for the current state
@submit_button.unbind('click') @submit_button.unbind('click')
@submit_button.show() @submit_button.show()
...@@ -328,9 +278,6 @@ class @CombinedOpenEnded ...@@ -328,9 +278,6 @@ class @CombinedOpenEnded
@next_problem_button.hide() @next_problem_button.hide()
@hint_area.attr('disabled', false) @hint_area.attr('disabled', false)
if @task_number>1 or @child_state!='initial'
@show_status_current()
if @task_number==1 and @child_state=='assessing' if @task_number==1 and @child_state=='assessing'
@prompt_hide() @prompt_hide()
if @child_state == 'done' if @child_state == 'done'
...@@ -338,7 +285,7 @@ class @CombinedOpenEnded ...@@ -338,7 +285,7 @@ class @CombinedOpenEnded
if @child_type=="openended" if @child_type=="openended"
@skip_button.hide() @skip_button.hide()
if @allow_reset=="True" if @allow_reset=="True"
@show_results_current @show_combined_rubric_current()
@reset_button.show() @reset_button.show()
@submit_button.hide() @submit_button.hide()
@answer_area.attr("disabled", true) @answer_area.attr("disabled", true)
...@@ -375,7 +322,6 @@ class @CombinedOpenEnded ...@@ -375,7 +322,6 @@ class @CombinedOpenEnded
@submit_button.click @message_post @submit_button.click @message_post
else if @child_state == 'done' else if @child_state == 'done'
@show_combined_rubric_current() @show_combined_rubric_current()
@show_results_current()
@rubric_wrapper.hide() @rubric_wrapper.hide()
@answer_area.attr("disabled", true) @answer_area.attr("disabled", true)
@replace_text_inputs() @replace_text_inputs()
...@@ -539,7 +485,7 @@ class @CombinedOpenEnded ...@@ -539,7 +485,7 @@ class @CombinedOpenEnded
@gentle_alert "Moved to next step." @gentle_alert "Moved to next step."
else else
@gentle_alert "Your score did not meet the criteria to move to the next step." @gentle_alert "Your score did not meet the criteria to move to the next step."
@show_results_current() @show_combined_rubric_current()
else else
@errors_area.html(response.error) @errors_area.html(response.error)
else else
...@@ -591,7 +537,7 @@ class @CombinedOpenEnded ...@@ -591,7 +537,7 @@ class @CombinedOpenEnded
# wrap this so that it can be mocked # wrap this so that it can be mocked
reload: -> reload: ->
location.reload() @reinitialize()
collapse_question: (event) => collapse_question: (event) =>
@prompt_container.slideToggle() @prompt_container.slideToggle()
......
...@@ -67,7 +67,6 @@ class CombinedOpenEndedV1Module(): ...@@ -67,7 +67,6 @@ class CombinedOpenEndedV1Module():
ajax actions implemented by combined open ended module are: ajax actions implemented by combined open ended module are:
'reset' -- resets the whole combined open ended module and returns to the first child moduleresource_string 'reset' -- resets the whole combined open ended module and returns to the first child moduleresource_string
'next_problem' -- moves to the next child module 'next_problem' -- moves to the next child module
'get_results' -- gets results from a given child module
Types of children. Task is synonymous with child module, so each combined open ended module Types of children. Task is synonymous with child module, so each combined open ended module
incorporates multiple children (tasks): incorporates multiple children (tasks):
...@@ -351,6 +350,9 @@ class CombinedOpenEndedV1Module(): ...@@ -351,6 +350,9 @@ class CombinedOpenEndedV1Module():
self.update_task_states() self.update_task_states()
return self.current_task.get_html(self.system) return self.current_task.get_html(self.system)
def get_html_ajax(self, data):
return {'html' : self.get_html()}
def get_current_attributes(self, task_number): def get_current_attributes(self, task_number):
""" """
Gets the min and max score to attempt attributes of the specified task. Gets the min and max score to attempt attributes of the specified task.
...@@ -592,53 +594,6 @@ class CombinedOpenEndedV1Module(): ...@@ -592,53 +594,6 @@ class CombinedOpenEndedV1Module():
html = self.system.render_template('{0}/combined_open_ended_legend.html'.format(self.TEMPLATE_DIR), context) html = self.system.render_template('{0}/combined_open_ended_legend.html'.format(self.TEMPLATE_DIR), context)
return {'html': html, 'success': True} return {'html': html, 'success': True}
def get_results(self, _data):
"""
Gets the results of a given grader via ajax.
Input: AJAX data dictionary
Output: Dictionary to be rendered via ajax that contains the result html.
"""
self.update_task_states()
success, can_see_rubric, error = self.check_if_student_has_done_needed_grading()
if not can_see_rubric:
return {'html' : error, 'success' : False}
loop_up_to_task = self.current_task_number + 1
all_responses = []
for i in xrange(0, loop_up_to_task):
all_responses.append(self.get_last_response(i))
context_list = []
for ri in all_responses:
for i in xrange(0, len(ri['rubric_scores'])):
feedback = ri['feedback_dicts'][i].get('feedback', '')
rubric_data = self.rubric_renderer.render_rubric(stringify_children(self.static_data['rubric']),
ri['rubric_scores'][i])
if rubric_data['success']:
rubric_html = rubric_data['html']
else:
rubric_html = ''
context = {
'rubric_html': rubric_html,
'grader_type': ri['grader_type'],
'feedback': feedback,
'grader_id': ri['grader_ids'][i],
'submission_id': ri['submission_ids'][i],
}
context_list.append(context)
feedback_table = self.system.render_template('{0}/open_ended_result_table.html'.format(self.TEMPLATE_DIR), {
'context_list': context_list,
'grader_type_image_dict': GRADER_TYPE_IMAGE_DICT,
'human_grader_types': HUMAN_GRADER_TYPE,
'rows': 50,
'cols': 50,
})
context = {
'results': feedback_table,
'task_name': "Feedback",
'class_name': "result-container",
}
html = self.system.render_template('{0}/combined_open_ended_results.html'.format(self.TEMPLATE_DIR), context)
return {'html': html, 'success': True}
def get_status_ajax(self, _data): def get_status_ajax(self, _data):
""" """
Gets the results of a given grader via ajax. Gets the results of a given grader via ajax.
...@@ -662,11 +617,12 @@ class CombinedOpenEndedV1Module(): ...@@ -662,11 +617,12 @@ class CombinedOpenEndedV1Module():
handlers = { handlers = {
'next_problem': self.next_problem, 'next_problem': self.next_problem,
'reset': self.reset, 'reset': self.reset,
'get_results': self.get_results,
'get_combined_rubric': self.get_rubric, 'get_combined_rubric': self.get_rubric,
'get_status': self.get_status_ajax, 'get_status': self.get_status_ajax,
'get_legend': self.get_legend, 'get_legend': self.get_legend,
'get_last_response': self.get_last_response_ajax, 'get_last_response': self.get_last_response_ajax,
'get_current_state': self.get_current_state,
'get_html': self.get_html_ajax,
} }
if dispatch not in handlers: if dispatch not in handlers:
...@@ -676,6 +632,9 @@ class CombinedOpenEndedV1Module(): ...@@ -676,6 +632,9 @@ class CombinedOpenEndedV1Module():
d = handlers[dispatch](data) d = handlers[dispatch](data)
return json.dumps(d, cls=ComplexEncoder) return json.dumps(d, cls=ComplexEncoder)
def get_current_state(self, data):
return self.get_context()
def get_last_response_ajax(self,data): def get_last_response_ajax(self,data):
return self.get_last_response(self.current_task_number) return self.get_last_response(self.current_task_number)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment