changeset 3008:166c5aef020c

Add sort to horizontal #119
author Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk>
date Thu, 03 Aug 2017 15:08:30 +0200
parents 37923d45f298
children 1ced6e0cb9ac
files interfaces/horizontal-sliders.js
diffstat 1 files changed, 31 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/interfaces/horizontal-sliders.js	Thu Aug 03 15:06:29 2017 +0200
+++ b/interfaces/horizontal-sliders.js	Thu Aug 03 15:08:30 2017 +0200
@@ -62,9 +62,20 @@
     submit.onclick = buttonSubmitClick;
     submit.id = 'submit-button';
     submit.style.float = 'left';
+
+    // Create the sort button
+    var sort = document.createElement("button");
+    sort.id = "sort-fragments";
+    sort.textContent = "Sort";
+    sort.style.display = "inline-block";
+    sort.style.visibility = "hidden";
+    sort.onclick = buttonSortFragmentClick;
+
     // Append the interface buttons into the interfaceButtons object.
     interfaceButtons.appendChild(playback);
     interfaceButtons.appendChild(submit);
+    interfaceButtons.appendChild(sort);
+
 
     // Create outside reference holder
     var outsideRef = document.createElement("div");
@@ -226,6 +237,10 @@
                 case "comments":
                     interfaceContext.commentBoxes.showCommentBoxes(feedbackHolder, true);
                     break;
+                case "fragmentSort":
+                    var button = document.getElementById('sort-fragments');
+                    button.style.visibility = "visible";
+                    break;
             }
         }
     });
@@ -419,6 +434,22 @@
     });
 }
 
+function buttonSortFragmentClick() {
+    var sortIndex = interfaceContext.sortFragmentsByScore();
+    var sliderBox = document.getElementById("slider-holder");
+    var nodes = audioEngineContext.audioObjects.filter(function (ao) {
+        return ao.specification.type !== "outside-reference";
+    });
+    var i;
+    nodes.forEach(function (ao) {
+        sliderBox.removeChild(ao.interfaceDOM.holder);
+    });
+    for (i = 0; i < nodes.length; i++) {
+        var j = sortIndex[i];
+        sliderBox.appendChild(nodes[j].interfaceDOM.holder);
+    }
+}
+
 function buttonSubmitClick() // TODO: Only when all songs have been played!
 {
     var checks = testState.currentStateMap.interfaces[0].options,