CLOUDSTACK-3153: Fix numbering of ACL items

Re-number dragged items in increments of ten, and use an average of
the previous and next number, so that multiple reorders can occur
before conflicts happen.
This commit is contained in:
Brian Federle 2013-07-24 11:04:22 -07:00
parent cd51303f20
commit bcfe4c2e99
2 changed files with 16 additions and 2 deletions

View File

@ -854,6 +854,8 @@
$loading.prependTo($multi);
reorder.moveDrag.action({
targetIndex: ui.item.index(),
nextItem: ui.item.next().size() ? ui.item.next().data('json-obj') : null,
prevItem: ui.item.prev().size() ? ui.item.prev().data('json-obj') : null,
context: $.extend(true, {}, context, {
// Passes all rules, so that each index can be updated
multiRule: [ui.item.data('json-obj')]

View File

@ -31,13 +31,25 @@
moveDrag: {
action: function(args) {
var rule = args.context.multiRule[0];
var index = args.targetIndex;
var number = 0;
var prevItem = args.prevItem ? args.prevItem.number : null;
var nextItem = args.nextItem ? args.nextItem.number : null;
if (!nextItem) { // Last item
number = prevItem + 100;
} else {
if (nextItem - prevItem <= 10) {
number = nextItem - parseInt(((nextItem - prevItem) / 2));
} else {
number = nextItem > 1 ? nextItem - 10 : 1;
}
}
$.ajax({
url: createURL('updateNetworkACLItem'),
data: {
id: rule.id,
number: index + 1
number: number
},
success: function(json) {
var pollTimer = setInterval(function() {