Commit 0684dd4e by Jonathan Piacenti

Address Analytics notes.

parent 7c14fb8f
...@@ -287,7 +287,7 @@ class DragAndDropBlock(XBlock, XBlockWithSettingsMixin, ThemableXBlockMixin): ...@@ -287,7 +287,7 @@ class DragAndDropBlock(XBlock, XBlockWithSettingsMixin, ThemableXBlockMixin):
# so we have to figure that we're running in Studio for now # so we have to figure that we're running in Studio for now
pass pass
self.runtime.publish(self, 'xblock.drag-and-drop-v2.item.dropped', { self.runtime.publish(self, 'edx.drag_and_drop_v2.item.dropped', {
'user_id': self.scope_ids.user_id, 'user_id': self.scope_ids.user_id,
'component_id': self._get_unique_id(), 'component_id': self._get_unique_id(),
'item_id': item['id'], 'item_id': item['id'],
......
...@@ -19,6 +19,9 @@ function DragAndDropBlock(runtime, element, configuration) { ...@@ -19,6 +19,9 @@ function DragAndDropBlock(runtime, element, configuration) {
var TAB = 9; var TAB = 9;
var M = 77; var M = 77;
// Event string size limit.
var MAX_LENGTH = 255;
var placementMode = false; var placementMode = false;
var $selectedItem; var $selectedItem;
var $focusedElement; var $focusedElement;
...@@ -57,7 +60,7 @@ function DragAndDropBlock(runtime, element, configuration) { ...@@ -57,7 +60,7 @@ function DragAndDropBlock(runtime, element, configuration) {
$element.on('click', '.submit-input', submitInput); $element.on('click', '.submit-input', submitInput);
// Indicate that exercise is done loading // Indicate that exercise is done loading
publishEvent({event_type: 'xblock.drag-and-drop-v2.loaded'}); publishEvent({event_type: 'edx.drag_and_drop_v2.loaded'});
}).fail(function() { }).fail(function() {
$root.text(gettext("An error occurred. Unable to load drag and drop exercise.")); $root.text(gettext("An error occurred. Unable to load drag and drop exercise."));
}); });
...@@ -84,6 +87,15 @@ function DragAndDropBlock(runtime, element, configuration) { ...@@ -84,6 +87,15 @@ function DragAndDropBlock(runtime, element, configuration) {
} }
}; };
var truncateField = function(data, fieldName){
if (data[fieldName].length > MAX_LENGTH) {
data[fieldName] = data[fieldName].substring(0, MAX_LENGTH);
data['truncated'] = true;
} else {
data['truncated'] = false;
}
};
var focusModalButton = function() { var focusModalButton = function() {
$root.find('.keyboard-help-dialog .modal-dismiss-button ').focus(); $root.find('.keyboard-help-dialog .modal-dismiss-button ').focus();
}; };
...@@ -162,19 +174,24 @@ function DragAndDropBlock(runtime, element, configuration) { ...@@ -162,19 +174,24 @@ function DragAndDropBlock(runtime, element, configuration) {
var applyState = function() { var applyState = function() {
// Has the feedback popup been closed? // Has the feedback popup been closed?
if (state.closing) { if (state.closing) {
publishEvent({ var data = {
event_type: 'xblock.drag-and-drop-v2.feedback.closed', event_type: 'edx.drag_and_drop_v2.feedback.closed',
content: previousFeedback || state.feedback, content: previousFeedback || state.feedback,
manually: state.manually_closed, manually: state.manually_closed,
}); };
truncateField(data, 'content');
publishEvent(data);
previousFeedback = undefined; previousFeedback = undefined;
delete state.closing;
} }
// Has feedback been set? // Has feedback been set?
if (state.feedback) { if (state.feedback) {
publishEvent({ var data = {
event_type: 'xblock.drag-and-drop-v2.feedback.opened', event_type: 'edx.drag_and_drop_v2.feedback.opened',
content: state.feedback, content: state.feedback,
}); };
truncateField(data, 'content');
publishEvent(data);
} }
updateDOM(); updateDOM();
...@@ -329,7 +346,7 @@ function DragAndDropBlock(runtime, element, configuration) { ...@@ -329,7 +346,7 @@ function DragAndDropBlock(runtime, element, configuration) {
var $item = $(this); var $item = $(this);
grabItem($item); grabItem($item);
publishEvent({ publishEvent({
event_type: 'xblock.drag-and-drop-v2.item.picked-up', event_type: 'edx.drag_and_drop_v2.item.picked_up',
item_id: $item.data('value'), item_id: $item.data('value'),
}); });
}, },
......
...@@ -381,7 +381,7 @@ class EventsFiredTest(DefaultDataTestMixin, InteractionTestBase, BaseIntegration ...@@ -381,7 +381,7 @@ class EventsFiredTest(DefaultDataTestMixin, InteractionTestBase, BaseIntegration
def test_loaded(self): def test_loaded(self):
dummy, name, data = self.publish.call_args[0] dummy, name, data = self.publish.call_args[0]
self.assertEqual(name, 'xblock.drag-and-drop-v2.loaded') self.assertEqual(name, 'edx.drag_and_drop_v2.loaded')
self.assertEqual( self.assertEqual(
data, { data, {
'component_id': u'drag-and-drop-v2.drag-and-drop-v2.d0.u0', 'component_id': u'drag-and-drop-v2.drag-and-drop-v2.d0.u0',
...@@ -392,7 +392,7 @@ class EventsFiredTest(DefaultDataTestMixin, InteractionTestBase, BaseIntegration ...@@ -392,7 +392,7 @@ class EventsFiredTest(DefaultDataTestMixin, InteractionTestBase, BaseIntegration
def test_picked_up(self): def test_picked_up(self):
self.parameterized_item_positive_feedback_on_good_move(self.items_map) self.parameterized_item_positive_feedback_on_good_move(self.items_map)
dummy, name, data = self.publish.call_args_list[1][0] dummy, name, data = self.publish.call_args_list[1][0]
self.assertEqual(name, 'xblock.drag-and-drop-v2.item.picked-up') self.assertEqual(name, 'edx.drag_and_drop_v2.item.picked_up')
self.assertEqual( self.assertEqual(
data, { data, {
'component_id': u'drag-and-drop-v2.drag-and-drop-v2.d0.u0', 'component_id': u'drag-and-drop-v2.drag-and-drop-v2.d0.u0',
...@@ -405,7 +405,7 @@ class EventsFiredTest(DefaultDataTestMixin, InteractionTestBase, BaseIntegration ...@@ -405,7 +405,7 @@ class EventsFiredTest(DefaultDataTestMixin, InteractionTestBase, BaseIntegration
self.parameterized_item_positive_feedback_on_good_move(self.items_map) self.parameterized_item_positive_feedback_on_good_move(self.items_map)
# Skipping to 3, since 2 is grade event. # Skipping to 3, since 2 is grade event.
dummy, name, data = self.publish.call_args_list[3][0] dummy, name, data = self.publish.call_args_list[3][0]
self.assertEqual(name, 'xblock.drag-and-drop-v2.item.dropped') self.assertEqual(name, 'edx.drag_and_drop_v2.item.dropped')
self.assertEqual( self.assertEqual(
data, { data, {
'component_id': u'drag-and-drop-v2.drag-and-drop-v2.d0.u0', 'component_id': u'drag-and-drop-v2.drag-and-drop-v2.d0.u0',
...@@ -421,25 +421,27 @@ class EventsFiredTest(DefaultDataTestMixin, InteractionTestBase, BaseIntegration ...@@ -421,25 +421,27 @@ class EventsFiredTest(DefaultDataTestMixin, InteractionTestBase, BaseIntegration
def test_feedback_opened(self): def test_feedback_opened(self):
self.parameterized_item_positive_feedback_on_good_move(self.items_map) self.parameterized_item_positive_feedback_on_good_move(self.items_map)
dummy, name, data = self.publish.call_args_list[4][0] dummy, name, data = self.publish.call_args_list[4][0]
self.assertEqual(name, 'xblock.drag-and-drop-v2.feedback.opened') self.assertEqual(name, 'edx.drag_and_drop_v2.feedback.opened')
self.assertEqual( self.assertEqual(
data, { data, {
'component_id': u'drag-and-drop-v2.drag-and-drop-v2.d0.u0', 'component_id': u'drag-and-drop-v2.drag-and-drop-v2.d0.u0',
'content': u'Correct! This one belongs to The Top Zone.', 'content': u'Correct! This one belongs to The Top Zone.',
'user_id': 'student_1', 'user_id': 'student_1',
'truncated': False,
} }
) )
def test_feedback_closed(self): def test_feedback_closed(self):
self.parameterized_item_positive_feedback_on_good_move(self.items_map) self.parameterized_item_positive_feedback_on_good_move(self.items_map)
dummy, name, data = self.publish.call_args_list[5][0] dummy, name, data = self.publish.call_args_list[5][0]
self.assertEqual(name, 'xblock.drag-and-drop-v2.feedback.closed') self.assertEqual(name, 'edx.drag_and_drop_v2.feedback.closed')
self.assertEqual( self.assertEqual(
data, { data, {
'component_id': u'drag-and-drop-v2.drag-and-drop-v2.d0.u0', 'component_id': u'drag-and-drop-v2.drag-and-drop-v2.d0.u0',
'user_id': 'student_1', 'user_id': 'student_1',
'manually': False, 'manually': False,
'content': u'Correct! This one belongs to The Top Zone.', 'content': u'Correct! This one belongs to The Top Zone.',
'truncated': False,
} }
) )
......
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