Commit b8d49511 by Vik Paruchuri

Fixing javascript display bugs

parent 36c55d34
...@@ -112,9 +112,8 @@ class CombinedOpenEndedModule(XModule): ...@@ -112,9 +112,8 @@ class CombinedOpenEndedModule(XModule):
self.state=self.ASSESSING self.state=self.ASSESSING
elif current_task_state is None and self.current_task_number>0: elif current_task_state is None and self.current_task_number>0:
last_response=self.get_last_response(self.current_task_number-1) last_response=self.get_last_response(self.current_task_number-1)
current_task_state = ('{"state": "assessing", "version": 1, "max_score": {max_score}, ' current_task_state = ("{'state': 'assessing', 'version': 1, 'max_score': {" + str(self._max_score) + "}, " +
'"attempts": 0, "history": [{"answer": "{answer}"}]}' "'attempts': 0, 'history': [{'answer': '{" + str(last_response) + "}'}]}")
.format(max_score=self._max_score, answer=last_response))
self.current_task=self_assessment_module.SelfAssessmentModule(self.system, self.location, self.current_task_parsed_xml, self.current_task_descriptor, instance_state=current_task_state) self.current_task=self_assessment_module.SelfAssessmentModule(self.system, self.location, self.current_task_parsed_xml, self.current_task_descriptor, instance_state=current_task_state)
self.task_states.append(self.current_task.get_instance_state()) self.task_states.append(self.current_task.get_instance_state())
self.state=self.ASSESSING self.state=self.ASSESSING
......
class @CombinedOpenEnded class @CombinedOpenEnded
constructor: (element) -> constructor: (element) ->
@el = $(element).find('section.self-assessment') @el = $(element).find('section.combined-open-ended')
@id = @el.data('id') @id = @el.data('id')
@ajax_url = @el.data('ajax-url') @ajax_url = @el.data('ajax-url')
@state = @el.data('state') @state = @el.data('state')
@allow_reset = @el.data('allow_reset') @allow_reset = @el.data('allow_reset')
@reset_button = @$('.reset-button')
@reset_button.click @reset
# valid states: 'initial', 'assessing', 'request_hint', 'done' # valid states: 'initial', 'assessing', 'request_hint', 'done'
# Where to put the rubric once we load it # Where to put the rubric once we load it
@el = $(element).find('section.open-ended-child')
@errors_area = @$('.error') @errors_area = @$('.error')
@answer_area = @$('textarea.answer') @answer_area = @$('textarea.answer')
...@@ -15,9 +18,7 @@ class @CombinedOpenEnded ...@@ -15,9 +18,7 @@ class @CombinedOpenEnded
@hint_wrapper = @$('.hint-wrapper') @hint_wrapper = @$('.hint-wrapper')
@message_wrapper = @$('.message-wrapper') @message_wrapper = @$('.message-wrapper')
@submit_button = @$('.submit-button') @submit_button = @$('.submit-button')
@child_state = @el.data('state')
@reset_button = @$('.reset-button')
@reset_button.click @reset
@find_assessment_elements() @find_assessment_elements()
@find_hint_elements() @find_hint_elements()
...@@ -32,23 +33,28 @@ class @CombinedOpenEnded ...@@ -32,23 +33,28 @@ class @CombinedOpenEnded
# 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()
@reset_button.hide()
@hint_area.attr('disabled', false) @hint_area.attr('disabled', false)
if @state == 'initial' if @child_state == 'initial'
@answer_area.attr("disabled", false) @answer_area.attr("disabled", false)
@submit_button.prop('value', 'Submit') @submit_button.prop('value', 'Submit')
@submit_button.click @save_answer @submit_button.click @save_answer
else if @state == 'assessing' else if @child_state == 'assessing'
@answer_area.attr("disabled", true) @answer_area.attr("disabled", true)
@submit_button.prop('value', 'Submit assessment') @submit_button.prop('value', 'Submit assessment')
@submit_button.click @save_assessment @submit_button.click @save_assessment
else if @state == 'request_hint' else if @child_state == 'request_hint'
@answer_area.attr("disabled", true) @answer_area.attr("disabled", true)
@submit_button.prop('value', 'Submit hint') @submit_button.prop('value', 'Submit hint')
@submit_button.click @save_hint @submit_button.click @save_hint
else if @state == 'done' else if @child_state == 'done'
@answer_area.attr("disabled", true) @answer_area.attr("disabled", true)
@hint_area.attr('disabled', true) @hint_area.attr('disabled', true)
@submit_button.hide() @submit_button.hide()
if @allow_reset
@reset_button.show()
else
@reset_button.hide()
find_assessment_elements: -> find_assessment_elements: ->
@assessment = @$('select.assessment') @assessment = @$('select.assessment')
...@@ -58,12 +64,12 @@ class @CombinedOpenEnded ...@@ -58,12 +64,12 @@ class @CombinedOpenEnded
save_answer: (event) => save_answer: (event) =>
event.preventDefault() event.preventDefault()
if @state == 'initial' if @child_state == 'initial'
data = {'student_answer' : @answer_area.val()} data = {'student_answer' : @answer_area.val()}
$.postWithPrefix "#{@ajax_url}/save_answer", data, (response) => $.postWithPrefix "#{@ajax_url}/save_answer", data, (response) =>
if response.success if response.success
@rubric_wrapper.html(response.rubric_html) @rubric_wrapper.html(response.rubric_html)
@state = 'assessing' @child_state = 'assessing'
@find_assessment_elements() @find_assessment_elements()
@rebind() @rebind()
else else
...@@ -73,16 +79,16 @@ class @CombinedOpenEnded ...@@ -73,16 +79,16 @@ class @CombinedOpenEnded
save_assessment: (event) => save_assessment: (event) =>
event.preventDefault() event.preventDefault()
if @state == 'assessing' if @child_state == 'assessing'
data = {'assessment' : @assessment.find(':selected').text()} data = {'assessment' : @assessment.find(':selected').text()}
$.postWithPrefix "#{@ajax_url}/save_assessment", data, (response) => $.postWithPrefix "#{@ajax_url}/save_assessment", data, (response) =>
if response.success if response.success
@state = response.state @child_state = response.state
if @state == 'request_hint' if @child_state == 'request_hint'
@hint_wrapper.html(response.hint_html) @hint_wrapper.html(response.hint_html)
@find_hint_elements() @find_hint_elements()
else if @state == 'done' else if @child_state == 'done'
@message_wrapper.html(response.message_html) @message_wrapper.html(response.message_html)
@allow_reset = response.allow_reset @allow_reset = response.allow_reset
...@@ -95,13 +101,13 @@ class @CombinedOpenEnded ...@@ -95,13 +101,13 @@ class @CombinedOpenEnded
save_hint: (event) => save_hint: (event) =>
event.preventDefault() event.preventDefault()
if @state == 'request_hint' if @child_state == 'request_hint'
data = {'hint' : @hint_area.val()} data = {'hint' : @hint_area.val()}
$.postWithPrefix "#{@ajax_url}/save_hint", data, (response) => $.postWithPrefix "#{@ajax_url}/save_hint", data, (response) =>
if response.success if response.success
@message_wrapper.html(response.message_html) @message_wrapper.html(response.message_html)
@state = 'done' @child_state = 'done'
@allow_reset = response.allow_reset @allow_reset = response.allow_reset
@rebind() @rebind()
else else
...@@ -112,6 +118,7 @@ class @CombinedOpenEnded ...@@ -112,6 +118,7 @@ class @CombinedOpenEnded
reset: (event) => reset: (event) =>
event.preventDefault() event.preventDefault()
@errors_area.html('Problem state got out of sync. Try reloading the page.')
if @state == 'done' if @state == 'done'
$.postWithPrefix "#{@ajax_url}/reset", {}, (response) => $.postWithPrefix "#{@ajax_url}/reset", {}, (response) =>
if response.success if response.success
......
...@@ -61,9 +61,6 @@ class SelfAssessmentModule(): ...@@ -61,9 +61,6 @@ class SelfAssessmentModule():
REQUEST_HINT = 'request_hint' REQUEST_HINT = 'request_hint'
DONE = 'done' DONE = 'done'
js = {'coffee': [resource_string(__name__, 'js/src/selfassessment/display.coffee')]}
js_module_name = "SelfAssessment"
def __init__(self, system, location, definition, descriptor, def __init__(self, system, location, definition, descriptor,
instance_state=None, shared_state=None, **kwargs): instance_state=None, shared_state=None, **kwargs):
""" """
......
<div id="combined-open-ended" class="combined-open-ended" data-ajax-url="${ajax_url}" data-allow_reset="${allow_reset}"> <section id="combined-open-ended" class="combined-open-ended" data-ajax-url="${ajax_url}" data-allow_reset="${allow_reset}">
% for item in items: % for item in items:
<div class="item">${item['content'] | n}</div> <div class="item">${item['content'] | n}</div>
% endfor % endfor
<input type="button" value="Reset" class="reset-button" name="reset"/> <input type="button" value="Reset" class="reset-button" name="reset"/>
</div> </section>
<section id="self_assessment_${id}" class="self-assessment" data-ajax-url="${ajax_url}" <section id="self_assessment_${id}" class="open-ended-child" data-ajax-url="${ajax_url}"
data-id="${id}" data-state="${state}" data-allow_reset="${allow_reset}"> data-id="${id}" data-state="${state}" data-allow_reset="${allow_reset}">
<div class="error"></div> <div class="error"></div>
<div class="prompt"> <div class="prompt">
......
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