Merge pull request #5582 from christianbeeznest/ofaj-21775

Exercise: Fix ordering question shuffle issue in draggable questions - refs BT#21775
pull/5584/head
christianbeeznest 1 year ago committed by GitHub
commit e8df95b26e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 40
      public/main/template/default/exercise/submit.js.html.twig

@ -231,24 +231,30 @@ $(function () {
// if shuffle answers // if shuffle answers
if ('{{ shuffle_answers }}' == '1') { if ('{{ shuffle_answers }}' == '1') {
$('.exercise-draggable-answer').each(function(){ $('.exercise-draggable-answer').each(function() {
// get current ul
var $ul = $(this); var $ul = $(this);
// get array of list items in current ul var $liArr = $ul.children('li').toArray();
var $liArr = $ul.children('li');
// sort array of list items in current ul randomly function shuffle(array) {
$liArr.sort(function(a,b){ for (let i = array.length - 1; i > 0; i--) {
// Get a random number between 0 and 10 const j = Math.floor(Math.random() * (i + 1));
var temp = parseInt( Math.random()*100 ); [array[i], array[j]] = [array[j], array[i]];
// Get 1 or 0, whether temp is odd or even }
var isOddOrEven = temp%2; return array;
// Get +1 or -1, whether temp greater or smaller than 5 }
var isPosOrNeg = temp>5 ? 1 : -1;
// Return -1, 0, or +1 var previousOrder = $liArr.map(item => item.id).join();
return( isOddOrEven*isPosOrNeg ); var newOrder;
})
// append list items to ul do {
.appendTo($ul); shuffle($liArr);
newOrder = $liArr.map(item => item.id).join();
} while (newOrder === previousOrder);
// Detach and append list items to preserve event handlers
$.each($liArr, function(index, item) {
$ul.append($(item).detach());
});
}); });
} }
}); });

Loading…
Cancel
Save