Commit c1f4e987 by Piotr Mitros

Add submit button

parent c8fd0f85
...@@ -82,7 +82,7 @@ class RateXBlock(XBlock): ...@@ -82,7 +82,7 @@ class RateXBlock(XBlock):
help="A list of user votes" help="A list of user votes"
) )
user_feedback = String(default = "", scope=Scope.user_state, user_freeform = String(default = "", scope=Scope.user_state,
help = "Feedback") help = "Feedback")
def resource_string(self, path): def resource_string(self, path):
...@@ -165,8 +165,7 @@ class RateXBlock(XBlock): ...@@ -165,8 +165,7 @@ class RateXBlock(XBlock):
self.prompts[0]['likert'] = data.get('likert') self.prompts[0]['likert'] = data.get('likert')
return {'result': 'success'} return {'result': 'success'}
@XBlock.json_handler def vote(self, data):
def vote(self, data, suffix=''):
""" """
Handle voting Handle voting
""" """
...@@ -178,21 +177,23 @@ class RateXBlock(XBlock): ...@@ -178,21 +177,23 @@ class RateXBlock(XBlock):
if self.user_vote != -1: if self.user_vote != -1:
self.vote_aggregate[self.user_vote] -= 1 self.vote_aggregate[self.user_vote] -= 1
tracker.emit('edx.ratexblock.likert_rate',
{'old_vote' : self.user_vote,
'new_vote' : data['vote']})
self.user_vote = data['vote'] self.user_vote = data['vote']
self.vote_aggregate[self.user_vote] += 1 self.vote_aggregate[self.user_vote] += 1
return {"success": True}
@XBlock.json_handler @XBlock.json_handler
def feedback(self, data, suffix=''): def feedback(self, data, suffix=''):
if 'freeform' in data:
tracker.emit('edx.ratexblock.freeform_feedback', tracker.emit('edx.ratexblock.freeform_feedback',
{'old_feedback' : self.user_feedback, {'old_freeform' : self.user_freeform,
'new_feedback' : data['feedback']}) 'new_freeform' : data['freeform']})
self.user_feedback = data['feedback'] self.user_freeform = data['freeform']
if 'vote' in data:
tracker.emit('edx.ratexblock.likert_rate',
{'old_vote' : self.user_vote,
'new_vote' : data['vote']})
self.vote(data)
return {"success": True}
# TO-DO: change this to create the scenarios you'd like to see in the # TO-DO: change this to create the scenarios you'd like to see in the
# workbench while developing your XBlock. # workbench while developing your XBlock.
......
...@@ -66,3 +66,6 @@ ...@@ -66,3 +66,6 @@
font-weight:bold; font-weight:bold;
} }
.rate_block .rate_submit_feedback {
width:100%;
}
<div class="rate_block"> <div class="rate_block">
<div class="rate_header">{freeform_prompt}</div> <div class="rate_header">{freeform_prompt}</div>
<div class="rate_freeform_input"> <div class="rate_freeform_input">
<textarea class="rate_freeform_area" rows="4" cols="30">{self.user_feedback}</textarea> <textarea class="rate_freeform_area" rows="4" cols="30">{self.user_freeform}</textarea>
<div class="rate_thank_you">Thank you!</div> <div class="rate_thank_you">Thank you!</div>
</div> </div>
<div class="rate_likert_header">{likert_prompt}</div> <div class="rate_likert_header">{likert_prompt}</div>
<div class="rate_likert_scale"> <form action="">{scale}</form></div> <div class="rate_likert_scale"> <form action="">{scale}</form></div>
<button type="submit" class="rate_submit_feedback"> Submit Feedback </button>
</div> </div>
...@@ -13,30 +13,43 @@ if (typeof Logger === 'undefined') { ...@@ -13,30 +13,43 @@ if (typeof Logger === 'undefined') {
function RateXBlock(runtime, element) { function RateXBlock(runtime, element) {
var vote_handler = runtime.handlerUrl(element, 'vote');
var feedback_handler = runtime.handlerUrl(element, 'feedback'); var feedback_handler = runtime.handlerUrl(element, 'feedback');
$(".rate_submit_feedback", element).click(function(eventObject) {
freeform = $(".rate_freeform_area", element).val();
vote = parseInt($(".rate_radio:checked").attr("id").split("_")[1]);
feedback = {"freeform": freeform,
"vote": vote}
Logger.log("edx.ratexblock.submit", feedback)
$.ajax({
type: "POST",
url: feedback_handler,
data: JSON.stringify(feedback),
success: function() {$('.rate_thank_you', element).css('visibility','visible')}
});
});
$('.rate_radio', element).change(function(eventObject) { $('.rate_radio', element).change(function(eventObject) {
target_id = eventObject.target.id; target_id = eventObject.target.id;
vote = parseInt(target_id.split('_')[1]); vote = parseInt(target_id.split('_')[1]);
$.ajax({ /*$.ajax({
type: "POST", type: "POST",
url: vote_handler, url: feedback_handler,
data: JSON.stringify({"vote": vote}), data: JSON.stringify({"vote": vote}),
}); });*/
Logger.log("edx.ratexblock.likert_rate", {"vote":vote}) Logger.log("edx.ratexblock.likert_rate", {"vote":vote})
}); });
$('.rate_freeform_area', element).change(function(eventObject) { $('.rate_freeform_area', element).change(function(eventObject) {
$('.rate_thank_you', element).css('visibility','hidden'); $('.rate_thank_you', element).css('visibility','hidden');
var feedback_freeform = eventObject.currentTarget.value; var freeform = eventObject.currentTarget.value;
Logger.log("edx.ratexblock.freeform_feedback", {"feedback":feedback_freeform}) Logger.log("edx.ratexblock.freeform_feedback", {"freeform":freeform})
$.ajax({ /*$.ajax({
type: "POST", type: "POST",
url: feedback_handler, url: feedback_handler,
data: JSON.stringify({"feedback": feedback_freeform}), data: JSON.stringify({"freeform": freeform}),
success: function() {$('.rate_thank_you', element).css('visibility','visible')}, success: function() {$('.rate_thank_you', element).css('visibility','visible')},
}); });*/
}); });
} }
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