Commit cb9bd01c by Filippo Valsorda

Correctly detect a finished state also when there is not feedback

parent c2ad71f8
...@@ -161,7 +161,10 @@ class DragAndDropBlock(XBlock): ...@@ -161,7 +161,10 @@ class DragAndDropBlock(XBlock):
if len(self.item_state) != tot_items: if len(self.item_state) != tot_items:
del data['feedback']['finish'] del data['feedback']['finish']
data['state'] = self.item_state data['state'] = {
'items': self.item_state,
'finished': len(self.item_state) == tot_items
}
return webob.response.Response(body=json.dumps(data)) return webob.response.Response(body=json.dumps(data))
...@@ -174,8 +177,10 @@ class DragAndDropBlock(XBlock): ...@@ -174,8 +177,10 @@ class DragAndDropBlock(XBlock):
self.item_state[item['id']] = (attempt['top'], attempt['left']) self.item_state[item['id']] = (attempt['top'], attempt['left'])
if len(self.item_state) == tot_items: if len(self.item_state) == tot_items:
finished = True
final_feedback = self.data['feedback']['finish'] final_feedback = self.data['feedback']['finish']
else: else:
finished = False
final_feedback = None final_feedback = None
try: try:
...@@ -190,12 +195,14 @@ class DragAndDropBlock(XBlock): ...@@ -190,12 +195,14 @@ class DragAndDropBlock(XBlock):
return { return {
'correct': True, 'correct': True,
'finished': finished,
'final_feedback': final_feedback, 'final_feedback': final_feedback,
'feedback': item['feedback']['correct'] 'feedback': item['feedback']['correct']
} }
else: else:
return { return {
'correct': False, 'correct': False,
'finished': finished,
'final_feedback': None, 'final_feedback': None,
'feedback': item['feedback']['incorrect'] 'feedback': item['feedback']['incorrect']
} }
...@@ -55,7 +55,7 @@ function DragAndDropBlock(runtime, element) { ...@@ -55,7 +55,7 @@ function DragAndDropBlock(runtime, element) {
_fn.items.init(); _fn.items.init();
// Load welcome or final feedback // Load welcome or final feedback
if (_fn.data.feedback.finish) if (_fn.data.state.finished)
_fn.finish(_fn.data.feedback.finish); _fn.finish(_fn.data.feedback.finish);
else else
_fn.feedback.set(_fn.data.feedback.start); _fn.feedback.set(_fn.data.feedback.start);
...@@ -70,7 +70,7 @@ function DragAndDropBlock(runtime, element) { ...@@ -70,7 +70,7 @@ function DragAndDropBlock(runtime, element) {
_fn.$items.draggable('disable'); _fn.$items.draggable('disable');
// Show final feedback // Show final feedback
_fn.feedback.set(final_feedback); if (final_feedback) _fn.feedback.set(final_feedback);
}, },
clickHandlers: { clickHandlers: {
...@@ -109,7 +109,7 @@ function DragAndDropBlock(runtime, element) { ...@@ -109,7 +109,7 @@ function DragAndDropBlock(runtime, element) {
if (data.correct) { if (data.correct) {
$el.draggable('disable'); $el.draggable('disable');
if (data.final_feedback) { if (data.finished) {
_fn.finish(data.final_feedback); _fn.finish(data.final_feedback);
} }
} else { } else {
...@@ -155,7 +155,7 @@ function DragAndDropBlock(runtime, element) { ...@@ -155,7 +155,7 @@ function DragAndDropBlock(runtime, element) {
init: function() { init: function() {
_fn.$items.each(function (){ _fn.$items.each(function (){
var $el = $(this), var $el = $(this),
saved_entry = _fn.data.state[$el.data('value')]; saved_entry = _fn.data.state.items[$el.data('value')];
if (saved_entry) { if (saved_entry) {
_fn.clickHandlers.drag.set($el, _fn.clickHandlers.drag.set($el,
saved_entry[0], saved_entry[1]); saved_entry[0], saved_entry[1]);
......
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