changeset 3006:50f5e11a38b7

Generalised #119 in mushra.js
author Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk>
date Thu, 03 Aug 2017 15:01:52 +0200
parents cf4bf84c3e7b
children 37923d45f298
files interfaces/mushra.js
diffstat 1 files changed, 31 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- a/interfaces/mushra.js	Thu Aug 03 14:51:18 2017 +0200
+++ b/interfaces/mushra.js	Thu Aug 03 15:01:52 2017 +0200
@@ -67,9 +67,20 @@
     submit.onclick = buttonSubmitClick;
     submit.id = 'submit-button';
     submit.style.display = 'inline-block';
+
+    // 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");
@@ -206,6 +217,8 @@
 
 
     var interfaceOptions = interfaceObj.options;
+    var sortButton = document.getElementById("sort-fragments");
+    sortButton.style.visibility = "hidden";
     interfaceOptions.forEach(function (option) {
         if (option.type == "show") {
             switch (option.name) {
@@ -239,31 +252,8 @@
                     interfaceContext.commentBoxes.showCommentBoxes(feedbackHolder, true);
                     break;
                 case "fragmentSort":
-                    var button = document.getElementById('sort');
-                    if (button === null) {
-                        button = document.createElement("button");
-                        button.id = 'sort';
-                        button.textContent = "Sort";
-                        button.style.display = 'inline-block';
-                        var container = document.getElementById("interface-buttons");
-                        var neighbour = container.lastElementChild;
-                        container.appendChild(button);
-                        button.onclick = function () {
-                            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);
-                            }
-                        };
-                    }
+                    var button = document.getElementById('sort-fragments');
+                    button.style.visibility = "visible";
                     break;
             }
         }
@@ -513,6 +503,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,