changeset 3136:3dcdada1058f

Fix issue with test scale range not being set.
author Nicholas Jillings <nicholas.jillings@mail.bcu.ac.uk>
date Fri, 29 Mar 2019 16:03:06 +0000
parents afc32cd44b22
children 669f50f1941d
files js/specification.js test_create.html test_create/test_core.js
diffstat 3 files changed, 29 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/js/specification.js	Mon Mar 11 11:41:14 2019 +0000
+++ b/js/specification.js	Fri Mar 29 16:03:06 2019 +0000
@@ -585,8 +585,9 @@
             }
             this.options.forEach(function (option) {
                 var child = doc.createElement("interfaceoption");
-                child.setAttribute("type", option.type);
-                child.setAttribute("name", option.name);
+                Object.keys(option).forEach(function(key) {
+                    child.setAttribute(key, option[key]);
+                });
                 if (option.type == "check" && option.errorMessage !== undefined) {
                     var errorMessage = doc.createElement("errormessage");
                     errorMessage.textContent = option.errorMessage;
--- a/test_create.html	Mon Mar 11 11:41:14 2019 +0000
+++ b/test_create.html	Fri Mar 29 16:03:06 2019 +0000
@@ -450,10 +450,12 @@
                         <div class="attribute" name="scalerange" type="check" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="A page can only be submitted if there are fragments above and below the maximum and minimum ranges.">
                             <span>Enforce a scale usage: </span>
                             <input type="checkbox" ng-click="enableInterfaceOption($event)" />
-                            <span>Minimum:</span>
-                            <input type="number" min="0" max="100" name="min" />
-                            <span>Maximum:</span>
-                            <input type="number" min="0" max="100" name="max" />
+                            <div ng-show="interface.options.find((x)=>{return x.name == 'scalerange';})">
+                                <span>Minimum:</span>
+                                <input type="number" min="0" max="100" name="min" ng-keyup="updateScaleRange();"/>
+                                <span>Maximum:</span>
+                                <input type="number" min="0" max="100" name="max" ng-keyup="updateScaleRange();"/>
+                            </div>
                         </div>
                         <div class="attribute" name="volume" type="show" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Show the master volume control on each page.">
                             <span>Show master volume control: </span>
--- a/test_create/test_core.js	Mon Mar 11 11:41:14 2019 +0000
+++ b/test_create/test_core.js	Fri Mar 29 16:03:06 2019 +0000
@@ -443,13 +443,25 @@
             var index = $s.interface.options.findIndex(function (io) {
                 return io.name == name;
             });
+            if (name == "scalerange") {
+                $e[0].querySelector("[name=min]").value = option.getAttribute("min");
+                $e[0].querySelector("[name=max]").value = option.getAttribute("max");
+            }
             option.querySelector("input").checked = (index >= 0);
-            if (name == "scalerange" && index >= 0) {
-                option.querySelector("[name=min]").value = $s.interface.options[index].min;
-                option.querySelector("[name=max]").value = $s.interface.options[index].max;
-            }
         });
     });
+    $s.updateScaleRange = function() {
+        var obj = $s.interface.options.find(function(i) {
+            return i.name == "scalerange";
+        });
+        if (obj === undefined) {
+            return;
+        }
+        var min = $e[0].querySelector("[name=min]").value;
+        var max = $e[0].querySelector("[name=max]").value;
+        obj.min = min;
+        obj.max = max;
+    };
     $s.enableInterfaceOption = function ($event) {
         var name = $event.currentTarget.parentElement.getAttribute("name");
         var type = $event.currentTarget.parentElement.getAttribute("type");
@@ -457,14 +469,14 @@
             return io.name == name;
         });
         if (index == -1 && $event.currentTarget.checked) {
-            var obj = $s.interface.options.push({
+            var obj = {
                 name: name,
                 type: type
-            });
+            };
             if (name == "scalerange") {
-                obj.min = $event.currentTarget.parentElement.querySelector("[name=min]").value;
-                obj.max = $event.currentTarget.parentElement.querySelector("[name=max]").value;
+                $s.updateScaleRange();
             }
+            $s.interface.options.push(obj);
         } else if (index >= 0 && !$event.currentTarget.checked) {
             $s.interface.options.splice(index, 1);
         }