changeset 2607:342ef7948c47

#37. All interfaces use interfaceContext.getLabel to generate labels
author Nicholas Jillings <nicholas.jillings@mail.bcu.ac.uk>
date Mon, 14 Nov 2016 16:12:34 +0000
parents ac9b08b961c0
children 756d12f5c330
files interfaces/AB.js interfaces/ABX.js interfaces/discrete.js interfaces/horizontal-sliders.js interfaces/mushra.js interfaces/timeline.js js/core.js xml/test-schema.xsd
diffstat 8 files changed, 39 insertions(+), 130 deletions(-) [+]
line wrap: on
line diff
--- a/interfaces/AB.js	Mon Nov 14 15:48:26 2016 +0000
+++ b/interfaces/AB.js	Mon Nov 14 16:12:34 2016 +0000
@@ -351,47 +351,12 @@
     this.comparators = [];
     this.selected = null;
 
+    var labelType = audioHolderObject.label;
+    if (labelType == "default") {
+        labelType = "capital";
+    }
+
     // First generate the Audio Objects for the Audio Engine
-    var label = audioHolderObject.labelStart;
-    if (label == "") {
-        switch (audioHolderObject.label) {
-            case "number":
-                label = "1";
-                break;
-            case "letter":
-                label = "a";
-                break;
-            case "none":
-                label = "";
-                break;
-            case "capital":
-            default:
-                label = "A";
-                break;
-        }
-    } else {
-        switch (audioHolderObject.label) {
-            case "number":
-                if (!isFinite(Number(label))) {
-                    label = "1";
-                }
-                break;
-            case "letter":
-                if (label.charCodeAt(0) < 97 || label.charCodeAt(0) > 122) {
-                    label = "a";
-                }
-                break;
-            case "none":
-                label = "";
-                break;
-            case "capital":
-            default:
-                if (label.charCodeAt(0) < 65 || label.charCodeAt(0) > 90) {
-                    label = "A";
-                }
-                break;
-        }
-    }
     for (var index = 0; index < audioHolderObject.audioElements.length; index++) {
         var element = audioHolderObject.audioElements[index];
         var audioObject = audioEngineContext.newTrack(element);
@@ -399,22 +364,8 @@
             var orNode = new interfaceContext.outsideReferenceDOM(audioObject, index, document.getElementById("outside-reference-holder"));
             audioObject.bindInterface(orNode);
         } else {
+            var label = interfaceContext.getLabel(labelType, index, audioHolderObject.labelStart);
             var node = new this.comparatorBox(audioObject, index, label);
-            switch (audioHolderObject.label) {
-                case "none":
-                    label = "";
-                    break;
-                case "number":
-                    label = (Number(label) + 1).toString(10);
-                    break;
-                case "letter":
-                    label = String.fromCharCode((label.charCodeAt(0) - 96) % 26 + 97);
-                    break;
-                case "capital":
-                default:
-                    label = String.fromCharCode((label.charCodeAt(0) - 64) % 26 + 65);
-                    break;
-            }
             audioObject.bindInterface(node);
             this.comparators.push(node);
             this.boxHolders.appendChild(node.box);
--- a/interfaces/ABX.js	Mon Nov 14 15:48:26 2016 +0000
+++ b/interfaces/ABX.js	Mon Nov 14 16:12:34 2016 +0000
@@ -364,19 +364,10 @@
         }
         var audioObject = audioEngineContext.newTrack(element);
         var label;
-        switch (audioObject.specification.parent.label) {
-            case "none":
-                label = "";
-                break;
-            case "number":
-                label = "" + index;
-                break;
-            case "letter":
-                label = String.fromCharCode(97 + index);
-                break;
-            default:
-                label = String.fromCharCode(65 + index);
-                break;
+        if (index == 0) {
+            label = "A";
+        } else {
+            label = "B";
         }
         var node = new this.interfaceObject(audioObject, label);
         audioObject.bindInterface(node);
--- a/interfaces/discrete.js	Mon Nov 14 15:48:26 2016 +0000
+++ b/interfaces/discrete.js	Mon Nov 14 16:12:34 2016 +0000
@@ -150,7 +150,11 @@
     // Find all the audioElements from the audioHolder
     var index = 0;
     var interfaceScales = testState.currentStateMap.interfaces[0].scales;
-    $(page.audioElements).each(function (index, element) {
+    var labelType = page.label;
+    if (labelType == "default") {
+        labelType = "number";
+    }
+    $(page.audioElements).each(function (pageIndex, element) {
         // Find URL of track
         // In this jQuery loop, variable 'this' holds the current audioElement.
 
@@ -161,20 +165,7 @@
             audioObject.bindInterface(orNode);
         } else {
             // Create a slider per track
-            switch (audioObject.specification.parent.label) {
-                case "none":
-                    label = "";
-                    break;
-                case "letter":
-                    label = String.fromCharCode(97 + index);
-                    break;
-                case "capital":
-                    label = String.fromCharCode(65 + index);
-                    break;
-                default:
-                    label = "" + index;
-                    break;
-            }
+            var label = interfaceContext.getLabel(labelType, index, page.labelStart);
             var sliderObj = new discreteObject(audioObject, label, interfaceScales);
             sliderBox.appendChild(sliderObj.holder);
             audioObject.bindInterface(sliderObj);
--- a/interfaces/horizontal-sliders.js	Mon Nov 14 15:48:26 2016 +0000
+++ b/interfaces/horizontal-sliders.js	Mon Nov 14 16:12:34 2016 +0000
@@ -154,7 +154,11 @@
 
     // Find all the audioElements from the audioHolder
     var index = 0;
-    $(page.audioElements).each(function (index, element) {
+    var labelType = page.label;
+    if (labelType == "default") {
+        labelType = "number";
+    }
+    $(page.audioElements).each(function (pageIndex, element) {
         // Find URL of track
         // In this jQuery loop, variable 'this' holds the current audioElement.
 
@@ -165,20 +169,7 @@
             audioObject.bindInterface(orNode);
         } else {
             // Create a slider per track
-            switch (audioObject.specification.parent.label) {
-                case "none":
-                    label = "";
-                    break;
-                case "letter":
-                    label = String.fromCharCode(97 + index);
-                    break;
-                case "capital":
-                    label = String.fromCharCode(65 + index);
-                    break;
-                default:
-                    label = "" + index;
-                    break;
-            }
+            var label = interfaceContext.getLabel(labelType, index, page.labelStart);
             var sliderObj = new sliderObject(audioObject, label);
 
             if (typeof page.initialPosition === "number") {
--- a/interfaces/mushra.js	Mon Nov 14 15:48:26 2016 +0000
+++ b/interfaces/mushra.js	Mon Nov 14 16:12:34 2016 +0000
@@ -155,7 +155,12 @@
 
     // Find all the audioElements from the audioHolder
     var index = 0;
-    $(audioHolderObject.audioElements).each(function (index, element) {
+    var interfaceScales = testState.currentStateMap.interfaces[0].scales;
+    var labelType = page.label;
+    if (labelType == "default") {
+        labelType = "number";
+    }
+    $(audioHolderObject.audioElements).each(function (pageIndex, element) {
         // Find URL of track
         // In this jQuery loop, variable 'this' holds the current audioElement.
 
@@ -166,20 +171,7 @@
             audioObject.bindInterface(orNode);
         } else {
             // Create a slider per track
-            switch (audioObject.specification.parent.label) {
-                case "none":
-                    label = "";
-                    break;
-                case "letter":
-                    label = String.fromCharCode(97 + index);
-                    break;
-                case "capital":
-                    label = String.fromCharCode(65 + index);
-                    break;
-                default:
-                    label = "" + index;
-                    break;
-            }
+            var label = interfaceContext.getLabel(labelType, index, page.labelStart);
             var sliderObj = new sliderObject(audioObject, label);
 
             if (typeof audioHolderObject.initialPosition === "number") {
--- a/interfaces/timeline.js	Mon Nov 14 15:48:26 2016 +0000
+++ b/interfaces/timeline.js	Mon Nov 14 16:12:34 2016 +0000
@@ -106,27 +106,19 @@
     if (interfaceObj.commentBoxPrefix != undefined) {
         commentBoxPrefix = interfaceObj.commentBoxPrefix;
     }
-
-    $(page.audioElements).each(function (index, element) {
+    var index = 0;
+    var interfaceScales = testState.currentStateMap.interfaces[0].scales;
+    var labelType = page.label;
+    if (labelType == "default") {
+        labelType = "number";
+    }
+    $(page.audioElements).each(function (pageIndex, element) {
         var audioObject = audioEngineContext.newTrack(element);
         if (page.audioElements.type == 'outside-reference') {
             var refNode = interfaceContext.outsideReferenceDOM(audioObject, index, outsideReferenceHolder);
             audioObject.bindInterface(orNode);
         } else {
-            switch (audioObject.specification.parent.label) {
-                case "none":
-                    label = "";
-                    break;
-                case "letter":
-                    label = String.fromCharCode(97 + index);
-                    break;
-                case "capital":
-                    label = String.fromCharCode(65 + index);
-                    break;
-                default:
-                    label = "" + index;
-                    break;
-            }
+            var label = interfaceContext.getLabel(labelType, index, page.labelStart);
             var node = new interfaceObject(audioObject, label);
 
             content.appendChild(node.DOM);
--- a/js/core.js	Mon Nov 14 15:48:26 2016 +0000
+++ b/js/core.js	Mon Nov 14 16:12:34 2016 +0000
@@ -3268,7 +3268,7 @@
                 case "letter":
                     return String.fromCharCode((index + offset) % 26 + 97);
                 case "capital":
-                    return String.fromCharCode((index + offset) % 26 + 66);
+                    return String.fromCharCode((index + offset) % 26 + 65);
                 case "number":
                     return String(index + offset);
                 default:
--- a/xml/test-schema.xsd	Mon Nov 14 15:48:26 2016 +0000
+++ b/xml/test-schema.xsd	Mon Nov 14 16:12:34 2016 +0000
@@ -96,6 +96,7 @@
                         </xs:restriction>
                     </xs:simpleType>
                 </xs:attribute>
+                <xs:attribute name="labelStart" type="xs:string" use="optional" default="" />
                 <xs:attribute ref="poolSize" />
                 <xs:attribute ref="alwaysInclude" />
                 <xs:attribute ref="preSilence" />