diff interfaces/ordinal.js @ 2845:be138735977b

#141 Publishing ordinal with example XML
author Nicholas Jillings <nicholas.jillings@mail.bcu.ac.uk>
date Tue, 25 Apr 2017 15:40:31 +0100
parents f7ea4470bdd6
children 64a83c964fae
line wrap: on
line diff
--- a/interfaces/ordinal.js	Tue Apr 25 15:27:52 2017 +0100
+++ b/interfaces/ordinal.js	Tue Apr 25 15:40:31 2017 +0100
@@ -77,6 +77,7 @@
     // Create a slider box
     var slider = document.createElement("div");
     slider.id = "slider";
+    slider.style.height = "300px";
 
     // Global parent for the comment boxes on the page
     var feedbackHolder = document.createElement('div');
@@ -163,6 +164,40 @@
             index += 1;
         }
     });
+    interfaceObj.options.forEach(function (option) {
+        if (option.type == "show") {
+            switch (option.name) {
+                case "playhead":
+                    var playbackHolder = document.getElementById('playback-holder');
+                    if (playbackHolder === null) {
+                        playbackHolder = document.createElement('div');
+                        playbackHolder.style.width = "100%";
+                        playbackHolder.align = 'center';
+                        playbackHolder.appendChild(interfaceContext.playhead.object);
+                        feedbackHolder.appendChild(playbackHolder);
+                    }
+                    break;
+                case "page-count":
+                    var pagecountHolder = document.getElementById('page-count');
+                    if (pagecountHolder === null) {
+                        pagecountHolder = document.createElement('div');
+                        pagecountHolder.id = 'page-count';
+                    }
+                    pagecountHolder.innerHTML = '<span>Page ' + (testState.stateIndex + 1) + ' of ' + testState.stateMap.length + '</span>';
+                    var inject = document.getElementById('interface-buttons');
+                    inject.appendChild(pagecountHolder);
+                    break;
+                case "volume":
+                    if (document.getElementById('master-volume-holder') === null) {
+                        feedbackHolder.appendChild(interfaceContext.volume.object);
+                    }
+                    break;
+                case "comments":
+                    interfaceContext.commentBoxes.showCommentBoxes(feedbackHolder, true);
+                    break;
+            }
+        }
+    });
     resizeWindow();
 }
 
@@ -294,7 +329,7 @@
             elem = elem.nextElementSibling;
         }
         return position;
-    }
+    };
 
     this.processMovement = function () {
         var time = audioEngineContext.timer.getTestTime();
@@ -302,7 +337,7 @@
         var rank = pos / (audioEngineContext.audioObjects.length - 1);
         audioObject.metric.moved(time, rank);
         console.log('slider ' + audioObject.id + ' moved to ' + rank + ' (' + time + ')');
-    }
+    };
 
     this.enable = function () {
         // This is used to tell the interface object that playback of this node is ready
@@ -316,10 +351,17 @@
     this.startPlayback = function () {
         // Called when playback has begun
         root.classList.add("playing");
+        if (audioObject.commentDOM) {
+            audioObject.commentDOM.trackComment.classList.add("comment-box-playing");
+        }
     };
     this.stopPlayback = function () {
         // Called when playback has stopped. This gets called even if playback never started!
         root.classList.remove("playing");
+        playing = false;
+        if (audioObject.commentDOM) {
+            audioObject.commentDOM.trackComment.classList.remove("comment-box-playing");
+        }
     };
     this.getValue = function () {
         // Return the current value of the object. If there is no value, return 0
@@ -366,6 +408,7 @@
     var N = audioEngineContext.audioObjects.length;
     w /= N;
     w -= 14;
+    w = Math.floor(w);
     $(".ordinal-element").width(w);
 }