Commit 452074d2 by Xavier Antoviaque

Merge pull request #69 from open-craft/feedback-icon-only

Only send feedback content to client that should be displayed
parents 612274ab d5452676
...@@ -53,34 +53,23 @@ class MCQBlock(QuestionnaireAbstractBlock): ...@@ -53,34 +53,23 @@ class MCQBlock(QuestionnaireAbstractBlock):
log.debug(u'Received MCQ submission: "%s"', submission) log.debug(u'Received MCQ submission: "%s"', submission)
completed = True completed = True
tips = [] tips_fragments = []
for tip in self.get_tips():
choices = [choice.value for choice in self.custom_choices] completed = completed and self.is_tip_completed(tip, submission)
# ensure rating tips are included if submission in tip.display_with_defaults:
if self.type == 'rating': tips_fragments.append(tip.render())
choices += [str(n) for n in range(1,6)]
formatted_tips = render_template('templates/html/tip_choice_group.html', {
for choice in choices: 'self': self,
choice_tips_fragments = [] 'tips_fragments': tips_fragments,
for tip in self.get_tips(): 'completed': completed,
completed = completed and self.is_tip_completed(tip, submission) })
if choice in tip.display_with_defaults:
choice_tips_fragments.append(tip.render())
tips.append({
'choice': choice,
'tips': render_template('templates/html/tip_choice_group.html', {
'self': self,
'tips_fragments': choice_tips_fragments,
'completed': completed,
})
})
self.student_choice = submission self.student_choice = submission
result = { result = {
'submission': submission, 'submission': submission,
'completed': completed, 'completed': completed,
'tips': tips, 'tips': formatted_tips,
'weight': self.weight, 'weight': self.weight,
'score': 1 if completed else 0, 'score': 1 if completed else 0,
} }
......
...@@ -49,6 +49,7 @@ class MRQBlock(QuestionnaireAbstractBlock): ...@@ -49,6 +49,7 @@ class MRQBlock(QuestionnaireAbstractBlock):
log.debug(u'Received MRQ submissions: "%s"', submissions) log.debug(u'Received MRQ submissions: "%s"', submissions)
completed = True completed = True
score = 0
results = [] results = []
for choice in self.custom_choices: for choice in self.custom_choices:
...@@ -64,16 +65,23 @@ class MRQBlock(QuestionnaireAbstractBlock): ...@@ -64,16 +65,23 @@ class MRQBlock(QuestionnaireAbstractBlock):
choice_completed = False choice_completed = False
completed = completed and choice_completed completed = completed and choice_completed
results.append({ if choice_completed:
score += 1
choice_result = {
'value': choice.value, 'value': choice.value,
'selected': choice_selected, 'selected': choice_selected,
'completed': choice_completed, }
'tips': render_template('templates/html/tip_choice_group.html', { # Only include tips/results in returned response if we want to display them
if not self.hide_results:
choice_result['completed'] = choice_completed
choice_result['tips'] = render_template('templates/html/tip_choice_group.html', {
'self': self, 'self': self,
'tips_fragments': choice_tips_fragments, 'tips_fragments': choice_tips_fragments,
'completed': choice_completed, 'completed': choice_completed,
}), })
})
results.append(choice_result)
self.student_choices = submissions self.student_choices = submissions
...@@ -83,7 +91,7 @@ class MRQBlock(QuestionnaireAbstractBlock): ...@@ -83,7 +91,7 @@ class MRQBlock(QuestionnaireAbstractBlock):
'choices': results, 'choices': results,
'message': self.message, 'message': self.message,
'weight': self.weight, 'weight': self.weight,
'score': sum(1.0 for r in results if r['completed']) / len(results) 'score': float(score) / len(results),
} }
log.debug(u'MRQ submissions result: %s', result) log.debug(u'MRQ submissions result: %s', result)
......
...@@ -101,11 +101,8 @@ function MCQBlock(runtime, element, mentoring) { ...@@ -101,11 +101,8 @@ function MCQBlock(runtime, element, mentoring) {
choiceResultDOM.addClass('checkmark-incorrect icon-exclamation fa-exclamation'); choiceResultDOM.addClass('checkmark-incorrect icon-exclamation fa-exclamation');
} }
var tips = _.find(result.tips, function(obj) { if (result.tips) {
return obj.choice === choiceInputDOM.val(); mentoring.setContent(choiceTipsDOM, result.tips);
});
if (tips) {
mentoring.setContent(choiceTipsDOM, tips.tips);
} }
choiceTipsCloseDOM = $('.close', choiceTipsDOM); choiceTipsCloseDOM = $('.close', choiceTipsDOM);
...@@ -121,14 +118,7 @@ function MCQBlock(runtime, element, mentoring) { ...@@ -121,14 +118,7 @@ function MCQBlock(runtime, element, mentoring) {
'<div class="close icon-remove-sign fa-times-circle"></div>'); '<div class="close icon-remove-sign fa-times-circle"></div>');
} }
else if (result.tips) { else if (result.tips) {
var tips = _.find(result.tips, function(obj) { messageView.showMessage(result.tips);
return obj.choice === result.submission;
});
if (tips) {
messageView.showMessage(tips.tips);
} else {
messageView.clearPopupEvents();
}
} }
}, },
...@@ -194,15 +184,14 @@ function MRQBlock(runtime, element, mentoring) { ...@@ -194,15 +184,14 @@ function MRQBlock(runtime, element, mentoring) {
} else if (!choice.completed) { } else if (!choice.completed) {
choiceResultDOM.addClass('checkmark-incorrect icon-exclamation fa-exclamation'); choiceResultDOM.addClass('checkmark-incorrect icon-exclamation fa-exclamation');
} }
}
mentoring.setContent(choiceTipsDOM, choice.tips);
choiceTipsCloseDOM = $('.close', choiceTipsDOM); mentoring.setContent(choiceTipsDOM, choice.tips);
choiceResultDOM.off('click').on('click', function() {
messageView.showMessage(choiceTipsDOM);
});
choiceTipsCloseDOM = $('.close', choiceTipsDOM);
choiceResultDOM.off('click').on('click', function() {
messageView.showMessage(choiceTipsDOM);
});
}
}); });
}, },
......
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