Commit 30488537 by Valera Rozuvan Committed by Alexander Kryklia

Added ability to communicate with server via input element. Work in progress. Part 8.

parent c34fbbe1
...@@ -90,6 +90,12 @@ define(['logme'], function (logme) { ...@@ -90,6 +90,12 @@ define(['logme'], function (logme) {
returnStatus = false; returnStatus = false;
} }
if (state.config.targets.length === 0) {
state.individualTargets = false;
} else {
state.individualTargets = true;
}
return true; return true;
function processDraggable(obj) { function processDraggable(obj) {
......
...@@ -4,13 +4,14 @@ ...@@ -4,13 +4,14 @@
// See https://edx-wiki.atlassian.net/wiki/display/LMS/Integration+of+Require+JS+into+the+system // See https://edx-wiki.atlassian.net/wiki/display/LMS/Integration+of+Require+JS+into+the+system
(function (requirejs, require, define) { (function (requirejs, require, define) {
define(['logme'], function (logme) { define(['logme', 'update_input'], function (logme, updateInput) {
return Draggables; return Draggables;
function Draggables(state) { function Draggables(state) {
var _draggables; var _draggables;
_draggables = []; _draggables = [];
state.draggables = [];
(function (i) { (function (i) {
while (i < state.config.draggable.length) { while (i < state.config.draggable.length) {
...@@ -23,7 +24,7 @@ define(['logme'], function (logme) { ...@@ -23,7 +24,7 @@ define(['logme'], function (logme) {
function processDraggable(obj, index) { function processDraggable(obj, index) {
var draggableContainerEl, imgEl, inContainer, ousePressed, var draggableContainerEl, imgEl, inContainer, ousePressed,
onTarget; onTarget, draggableObj;
draggableContainerEl = $( draggableContainerEl = $(
'<div ' + '<div ' +
...@@ -63,11 +64,22 @@ define(['logme'], function (logme) { ...@@ -63,11 +64,22 @@ define(['logme'], function (logme) {
onTarget = null; onTarget = null;
draggableObj = {
'id': obj.id,
'x': -1,
'y': -1
};
state.draggables.push(draggableObj);
draggableContainerEl.mousedown(mouseDown); draggableContainerEl.mousedown(mouseDown);
draggableContainerEl.mouseup(mouseUp); draggableContainerEl.mouseup(mouseUp);
draggableContainerEl.mousemove(mouseMove); draggableContainerEl.mousemove(mouseMove);
draggableContainerEl.mouseleave(mouseLeave); draggableContainerEl.mouseleave(mouseLeave);
if (state.individualTargets === false) {
updateInput(state);
}
return; return;
function mouseDown(event) { function mouseDown(event) {
...@@ -126,8 +138,14 @@ define(['logme'], function (logme) { ...@@ -126,8 +138,14 @@ define(['logme'], function (logme) {
(offsetDE.top + 100 > offsetTE.top + state.targetEl.height()) (offsetDE.top + 100 > offsetTE.top + state.targetEl.height())
) { ) {
moveBackToSlider(); moveBackToSlider();
draggableObj.x = -1;
draggableObj.y = -1;
} else { } else {
correctZIndexes(); correctZIndexes();
draggableObj.x = offsetDE.left + 50 - offsetTE.left;
draggableObj.y = offsetDE.top + 50 - offsetTE.top;
} }
} else if (state.individualTargets === true) { } else if (state.individualTargets === true) {
targetFound = false; targetFound = false;
...@@ -142,6 +160,8 @@ define(['logme'], function (logme) { ...@@ -142,6 +160,8 @@ define(['logme'], function (logme) {
} }
} }
updateInput(state);
return; return;
function removeObjIdFromTarget() { function removeObjIdFromTarget() {
......
...@@ -4,17 +4,10 @@ ...@@ -4,17 +4,10 @@
// See https://edx-wiki.atlassian.net/wiki/display/LMS/Integration+of+Require+JS+into+the+system // See https://edx-wiki.atlassian.net/wiki/display/LMS/Integration+of+Require+JS+into+the+system
(function (requirejs, require, define) { (function (requirejs, require, define) {
define(['logme'], function (logme) { define(['logme', 'update_input'], function (logme, updateInput) {
return Targets; return Targets;
function Targets(state) { function Targets(state) {
if (state.config.targets.length === 0) {
state.individualTargets = false;
return;
}
state.individualTargets = true;
state.targets = []; state.targets = [];
(function (c1) { (function (c1) {
...@@ -68,6 +61,10 @@ define(['logme'], function (logme) { ...@@ -68,6 +61,10 @@ define(['logme'], function (logme) {
'el': tEl, 'el': tEl,
'draggable': [] 'draggable': []
}); });
if (state.individualTargets === true) {
updateInput(state);
}
} }
} }
}); });
......
// Wrapper for RequireJS. It will make the standard requirejs(), require(), and
// define() functions from Require JS available inside the anonymous function.
//
// See https://edx-wiki.atlassian.net/wiki/display/LMS/Integration+of+Require+JS+into+the+system
(function (requirejs, require, define) {
define(['logme'], function (logme) {
return updateInput;
function updateInput(state) {
var inputEl, stateStr, targets;
if (state.individualTargets === false) {
stateStr = JSON.stringify({
'individualTargets': false,
'draggables': state.draggables
});
} else {
targets = [];
(function (c1) {
while (c1 < state.targets.length) {
targets.push({
'id': state.targets[c1].id,
'draggables': state.targets[c1].draggable
});
c1 += 1;
}
}(0));
stateStr = JSON.stringify({
'individualTargets': true,
'targets': targets
});
}
inputEl = $('#input_' + state.problemId);
inputEl.val(stateStr);
}
});
// End of wrapper for RequireJS. As you can see, we are passing
// namespaced Require JS variables to an anonymous function. Within
// it, you can use the standard requirejs(), require(), and define()
// functions as if they were in the global namespace.
}(RequireJS.requirejs, RequireJS.require, RequireJS.define)); // End-of: (function (requirejs, require, define)
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