]> source.dussan.org Git - redmine.git/commitdiff
Rewritten select_list_move.js functions with JQuery.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Tue, 18 Nov 2014 21:44:45 +0000 (21:44 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Tue, 18 Nov 2014 21:44:45 +0000 (21:44 +0000)
git-svn-id: http://svn.redmine.org/redmine/trunk@13615 e93f8b46-1217-0410-a6f0-8f06a7374b81

public/javascripts/select_list_move.js

index a5687981f3a5ac1ca73f360d04897bde2ad65f64..d542ac6245ee465ef7506e4b3bac9b1ced0a89ca 100644 (file)
-var NS4 = (navigator.appName == "Netscape" && parseInt(navigator.appVersion) < 5);
-
-function addOption(theSel, theText, theValue) {
-  var newOpt = new Option(theText, theValue);
-  var selLength = theSel.length;
-  theSel.options[selLength] = newOpt;
-}
-
-function swapOptions(theSel, index1, index2) {
-  var text, value, selected;
-  text = theSel.options[index1].text;
-  value = theSel.options[index1].value;
-  selected = theSel.options[index1].selected;
-  theSel.options[index1].text = theSel.options[index2].text;
-  theSel.options[index1].value = theSel.options[index2].value;
-  theSel.options[index1].selected = theSel.options[index2].selected;
-  theSel.options[index2].text = text;
-  theSel.options[index2].value = value;
-  theSel.options[index2].selected = selected;
-}
-
-function deleteOption(theSel, theIndex) {
-  var selLength = theSel.length;
-  if (selLength > 0) {
-    theSel.options[theIndex] = null;
-  }
-}
-
 function moveOptions(theSelFrom, theSelTo) {
-  var selLength = theSelFrom.length;
-  var selectedText = new Array();
-  var selectedValues = new Array();
-  var selectedCount = 0;
-  var i;
-  for (i = selLength - 1; i >= 0; i--) {
-    if (theSelFrom.options[i].selected) {
-      selectedText[selectedCount] = theSelFrom.options[i].text;
-      selectedValues[selectedCount] = theSelFrom.options[i].value;
-      deleteOption(theSelFrom, i);
-      selectedCount++;
-    }
-  }
-  for (i = selectedCount - 1; i >= 0; i--) {
-    addOption(theSelTo, selectedText[i], selectedValues[i]);
-  }
-  if (NS4) history.go(0);
+  $(theSelFrom).find('option:selected').detach().prop("selected", false).appendTo($(theSelTo));
 }
 
 function moveOptionUp(theSel) {
-  var indexTop = 0;
-  for(var s=0; s<theSel.length; s++) {
-    if (theSel.options[s].selected) {
-      if (s > indexTop) {
-        swapOptions(theSel, s-1, s);
-      }
-      indexTop++;
-    }
-  }
+  $(theSel).find('option:selected').each(function(){
+    $(this).prev(':not(:selected)').detach().insertAfter($(this));
+  });
 }
 
 function moveOptionTop(theSel) {
-  var indexTop = 0;
-  for(var s=0; s<theSel.length; s++) {
-    if (theSel.options[s].selected) {
-      if (s > indexTop) {
-        for (var i=s; i>indexTop; i--) {
-          swapOptions(theSel, i-1, i);
-        }
-      }
-      indexTop++;
-    }
-  }
+  $(theSel).find('option:selected').detach().prependTo($(theSel));
 }
 
 function moveOptionDown(theSel) {
-  var indexBottom = theSel.length - 1;
-  for(var s=indexBottom; s>=0; s--) {
-    if (theSel.options[s].selected) {
-      if (s < indexBottom) {
-        swapOptions(theSel, s+1, s);
-      }
-      indexBottom--;
-    }
-  }
+  $($(theSel).find('option:selected').get().reverse()).each(function(){
+    $(this).next(':not(:selected)').detach().insertBefore($(this));
+  });
 }
 
 function moveOptionBottom(theSel) {
-  var indexBottom = theSel.length - 1;
-  for(var s=indexBottom; s>=0; s--) {
-    if (theSel.options[s].selected) {
-      if (s < indexBottom) {
-        for (i=s; i<indexBottom; i++) {
-          swapOptions(theSel, i+1, i);
-        }
-      }
-      indexBottom--;
-    }
-  }
+  $(theSel).find('option:selected').detach().appendTo($(theSel));
 }
 
-// OK
 function selectAllOptions(id) {
-  var select = $('#'+id);
-  select.children('option').attr('selected', true);
+  $('#'+id).find('option').prop('selected', true);
 }