Commit 5ef3f3ee by Don Mitchell

Update jquery ui. Overrode draggable w/ an in place fix for scroll

racing condition.
parent 4bdabb38
...@@ -292,16 +292,15 @@ function onSectionReordered(event, ui) { ...@@ -292,16 +292,15 @@ function onSectionReordered(event, ui) {
} }
function _handleReorder(event, ui, parentIdField, childrenSelector) { function _handleReorder(event, ui, parentIdField, childrenSelector) {
// figure out where it came from and where it slots in. // figure out where it came from and where it slots in.
var subsection_id = $(event.target).data(parentIdField); var subsection_id = $(event.target).data(parentIdField);
var _els = $(event.target).children(childrenSelector); var _els = $(event.target).children(childrenSelector);
var children = _els.map(function(idx, el) { return $(el).data('id'); }).get(); var children = _els.map(function(idx, el) { return $(el).data('id'); }).get();
// if new to this parent, figure out which parent to remove it from and do so // if new to this parent, figure out which parent to remove it from and do so
if (!_.contains(children, ui.draggable.data('id'))) { if (!_.contains(children, ui.draggable.data('id'))) {
var old_parent = ui.draggable.parent(); var old_parent = ui.draggable.parent();
var old_children = old_parent.children(childrenSelector).map(function(idx, el) { return $(el).data('id'); }).get(); var old_children = old_parent.children(childrenSelector).map(function(idx, el) { return $(el).data('id'); }).get();
old_children = _.without(old_children, ui.draggable.data('id')); old_children = _.without(old_children, ui.draggable.data('id'));
// call into server to commit the new order
$.ajax({ $.ajax({
url: "/save_item", url: "/save_item",
type: "POST", type: "POST",
...@@ -309,30 +308,29 @@ function _handleReorder(event, ui, parentIdField, childrenSelector) { ...@@ -309,30 +308,29 @@ function _handleReorder(event, ui, parentIdField, childrenSelector) {
contentType: "application/json", contentType: "application/json",
data:JSON.stringify({ 'id' : old_parent.data(parentIdField), 'children' : old_children}) data:JSON.stringify({ 'id' : old_parent.data(parentIdField), 'children' : old_children})
}); });
// }
} else {
else { // staying in same parent
// staying in same parent // remove so that the replacement in the right place doesn't double it
// remove so that the replacement in the right place doesn't double it children = _.without(children, ui.draggable.data('id'));
children = _.without(children, ui.draggable.data('id')); }
} // add to this parent (figure out where)
// add to this parent (figure out where) for (var i = 0; i < _els.length; i++) {
for (var i = 0; i < _els.length; i++) { if (!ui.draggable.is(_els[i]) && ui.offset.top < $(_els[i]).offset().top) {
if (!ui.draggable.is(_els[i]) && ui.offset.top < $(_els[i]).offset().top) { // insert at i in children and _els
// insert at i in children and _els ui.draggable.insertBefore($(_els[i]));
ui.draggable.insertBefore($(_els[i])); // TODO figure out correct way to have it remove the style: top:n; setting (and similar line below)
// TODO figure out correct way to have it format (and similar line below) ui.draggable.attr("style", "position:relative;");
ui.draggable.attr("style", "position:relative;"); children.splice(i, 0, ui.draggable.data('id'));
children.splice(i, 0, ui.draggable.data('id')); break;
break; }
} }
} // see if it goes at end (the above loop didn't insert it)
// see if it goes at end (the above loop didn't insert it) if (!_.contains(children, ui.draggable.data('id'))) {
if (!_.contains(children, ui.draggable.data('id'))) { $(event.target).append(ui.draggable);
$(event.target).append(ui.draggable); ui.draggable.attr("style", "position:relative;"); // STYLE hack too
ui.draggable.attr("style", "position:relative;"); // STYLE hack too children.push(ui.draggable.data('id'));
children.push(ui.draggable.data('id')); }
}
$.ajax({ $.ajax({
url: "/save_item", url: "/save_item",
type: "POST", type: "POST",
...@@ -340,7 +338,7 @@ function _handleReorder(event, ui, parentIdField, childrenSelector) { ...@@ -340,7 +338,7 @@ function _handleReorder(event, ui, parentIdField, childrenSelector) {
contentType: "application/json", contentType: "application/json",
data:JSON.stringify({ 'id' : subsection_id, 'children' : children}) data:JSON.stringify({ 'id' : subsection_id, 'children' : children})
}); });
} }
function getEdxTimeFromDateTimeVals(date_val, time_val, format) { function getEdxTimeFromDateTimeVals(date_val, time_val, format) {
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
<script type="text/javascript" src="${static.url('js/vendor/RequireJS.js')}"></script> <script type="text/javascript" src="${static.url('js/vendor/RequireJS.js')}"></script>
<script type="text/javascript" src="${static.url('js/vendor/jquery.min.js')}"></script> <script type="text/javascript" src="${static.url('js/vendor/jquery.min.js')}"></script>
<script type="text/javascript" src="${static.url('js/vendor/jquery-ui.min.js')}"></script> <script type="text/javascript" src="${static.url('js/vendor/jquery-ui.min.js')}"></script>
<script type="text/javascript" src="${static.url('js/vendor/jquery.ui.draggable.js')}"></script>
<script type="text/javascript" src="${static.url('js/vendor/swfobject/swfobject.js')}"></script> <script type="text/javascript" src="${static.url('js/vendor/swfobject/swfobject.js')}"></script>
<script type="text/javascript" src="${static.url('js/vendor/jquery.cookie.js')}"></script> <script type="text/javascript" src="${static.url('js/vendor/jquery.cookie.js')}"></script>
<script type="text/javascript" src="${static.url('js/vendor/jquery.qtip.min.js')}"></script> <script type="text/javascript" src="${static.url('js/vendor/jquery.qtip.min.js')}"></script>
......
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