annotate test_create.html @ 2857:80a3b693b3f6

More test_create work
author Nicholas Jillings <nicholas.jillings@mail.bcu.ac.uk>
date Thu, 27 Apr 2017 11:24:16 +0100
parents 5591d01adf1c
children cffde1e75b2d
rev   line source
nicholas@2224 1 <html>
nicholas@2538 2
nicholas@2224 3 <head>
nicholas@2494 4 <meta http-equiv="content-type" content="text/html; charset=utf-8">
nicholas@2224 5 <!-- This defines the test creator tool for the Web Audio Evaluation Toolbox -->
nicholas@2851 6 <link rel="stylesheet" type="text/css" href="test_create/style.css" />
nicholas@2851 7 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
nicholas@2851 8 <script src="js/jquery-2.1.4.js"></script>
nicholas@2851 9 <script src="js/angular.min.js"></script>
nicholas@2851 10 <script type="text/javascript" src="js/specification.js"></script>
nicholas@2851 11 <script type="text/javascript" src="test_create/test_core.js"></script>
nicholas@2851 12 <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
nicholas@2538 13
nicholas@2851 14 <title>WAET 1.2.1 Test Creator</title>
nicholas@2224 15 </head>
nicholas@2538 16
nicholas@2224 17 <body>
nicholas@2851 18 <div ng-app="creator" ng-controller="view">
nicholas@2851 19 <div id="pageRoot">
nicholas@2851 20 <h1>Web Audio Evaluation Tool - Test Creator</h1>
nicholas@2851 21 </div>
nicholas@2851 22 <div id="setupNode" class="node" ng-controller="setup">
nicholas@2851 23 <h2>Setup</h2>
nicholas@2851 24 <div class="attributes">
nicholas@2851 25 <div class="attribute">
nicholas@2851 26 <span>Interface: </span>
nicholas@2851 27 <input type="text" ng-model="specification.interface" />
nicholas@2851 28 </div>
nicholas@2851 29 <div class="attribute">
nicholas@2851 30 <span>Save URL: </span>
nicholas@2851 31 <input type="text" ng-model="specification.projectReturn" />
nicholas@2851 32 </div>
nicholas@2851 33 <div class="attribute">
nicholas@2851 34 <span>Exit URL: </span>
nicholas@2851 35 <input type="text" ng-model="specification.returnURL" />
nicholas@2851 36 </div>
nicholas@2851 37 <div class="attribute">
nicholas@2851 38 <span>Randomise Page Order: </span>
nicholas@2851 39 <input type="checkbox" ng-model="specification.randomiseOrder" />
nicholas@2851 40 </div>
nicholas@2851 41 <div class="attribute">
nicholas@2851 42 <span>Page Pool Size: </span>
nicholas@2851 43 <input type="number" ng-model="specification.poolSize" min="0" />
nicholas@2851 44 </div>
nicholas@2851 45 <div class="attribute">
nicholas@2851 46 <span>Loudness Normalisation (LUFS): </span>
nicholas@2851 47 <input type="number" ng-model="specification.loudness" max="0" />
nicholas@2851 48 </div>
nicholas@2851 49 <div class="attribute">
nicholas@2851 50 <span>Fixed Sampling Rate: </span>
nicholas@2851 51 <input type="number" ng-model="specification.sampleRate" min="0" />
nicholas@2851 52 </div>
nicholas@2851 53 <div class="attribute">
nicholas@2851 54 <span>Pre-Test audio calibration: </span>
nicholas@2851 55 <input type="checkbox" ng-model="specification.calibration" />
nicholas@2851 56 </div>
nicholas@2851 57 <div class="attribute">
nicholas@2851 58 <span>Global Cross-fade time: </span>
nicholas@2851 59 <input type="number" ng-model="specification.crossFade" min="0" step="0.1" />
nicholas@2851 60 </div>
nicholas@2851 61 <div class="attribute">
nicholas@2851 62 <span>Global Fragment Pre-Silence: </span>
nicholas@2851 63 <input type="number" ng-model="specification.preSilence" min="0" step="0.1" />
nicholas@2851 64 </div>
nicholas@2851 65 <div class="attribute">
nicholas@2851 66 <span>Global Fragment Post-Silence: </span>
nicholas@2851 67 <input type="number" ng-model="specification.preSilence" min="0" step="0.1" />
nicholas@2851 68 </div>
nicholas@2851 69 <div class="attribute">
nicholas@2851 70 <span>Play audio one-at-a-time: </span>
nicholas@2851 71 <input type="checkbox" ng-model="specification.playOne" />
nicholas@2851 72 </div>
nicholas@2851 73 </div>
nicholas@2853 74 <div class="node">
nicholas@2853 75 <h2>Test Completed Message</h2>
nicholas@2853 76 <textarea ng-model="specification.exitText"></textarea>
nicholas@2853 77 </div>
nicholas@2853 78 <div id="metricsNode" class="node">
nicholas@2853 79 <h3>Session Metrics</h3>
nicholas@2853 80 <div class="attributes">
nicholas@2853 81 <div class="attribute">
nicholas@2853 82 <span>Collect Total Test Time: </span>
nicholas@2853 83 <input type="checkbox" value="testTimer" ng-click="enableMetric($event)" />
nicholas@2853 84 </div>
nicholas@2853 85 <div class="attribute">
nicholas@2853 86 <span>Collect Fragment Listen Time: </span>
nicholas@2853 87 <input type="checkbox" value="elementTimer" ng-click="enableMetric($event)" />
nicholas@2853 88 </div>
nicholas@2853 89 <div class="attribute">
nicholas@2853 90 <span>Collect Fragment Initial Position: </span>
nicholas@2853 91 <input type="checkbox" value="elementInitialPosition" ng-click="enableMetric($event)" />
nicholas@2853 92 </div>
nicholas@2853 93 <div class="attribute">
nicholas@2853 94 <span>Collect Fragment Position over Time: </span>
nicholas@2853 95 <input type="checkbox" value="elementTracker" ng-click="enableMetric($event)" />
nicholas@2853 96 </div>
nicholas@2853 97 <div class="attribute">
nicholas@2853 98 <span>Collect Fragment Listened To Flag: </span>
nicholas@2853 99 <input type="checkbox" value="elementFlagListenedTo" ng-click="enableMetric($event)" />
nicholas@2853 100 </div>
nicholas@2853 101 <div class="attribute">
nicholas@2853 102 <span>Collect Fragment Moved Flag: </span>
nicholas@2853 103 <input type="checkbox" value="elementFlagMoved" ng-click="enableMetric($event)" />
nicholas@2853 104 </div>
nicholas@2853 105 <div class="attribute">
nicholas@2853 106 <span>Collect Fragment Listened Flag: </span>
nicholas@2853 107 <input type="checkbox" value="elementListenTracker" ng-click="enableMetric($event)" />
nicholas@2853 108 </div>
nicholas@2853 109 </div>
nicholas@2853 110 </div>
nicholas@2853 111 <div id="globalpresurvey" class="node">
nicholas@2853 112 <h2>Pre Test Survey</h2>
nicholas@2857 113 <button type="button" class="btn btn-success" ng-click="specification.preTest.addOption()">Add Entry</button>
nicholas@2853 114 <div class="node" ng-repeat="opt in specification.preTest.options" ng-controller="surveyOption">
nicholas@2853 115 <h3>Survey Entry</h3>
nicholas@2853 116 <div class="attributes">
nicholas@2853 117 <div class="attribute">
nicholas@2853 118 <span>Survey Type: </span>
nicholas@2853 119 <select ng-model="opt.type">
nicholas@2853 120 <option value="question">Question</option>
nicholas@2853 121 <option value="radio">Radio</option>
nicholas@2853 122 <option value="checkbox">Checkbox</option>
nicholas@2853 123 <option value="statement">Statement</option>
nicholas@2853 124 <option value="number">Number</option>
nicholas@2853 125 <option value="slider">Slider</option>
nicholas@2853 126 <option value="video">Video</option>
nicholas@2853 127 <option value="youtube">YouTube</option>
nicholas@2853 128 </select>
nicholas@2853 129 </div>
nicholas@2853 130 <div class="attribute">
nicholas@2853 131 <span>Unique Survey Entry ID:</span>
nicholas@2853 132 <input type="text" ng-model="opt.id" />
nicholas@2853 133 </div>
nicholas@2853 134 <div class="attribute">
nicholas@2853 135 <span>Entry Name:</span>
nicholas@2853 136 <input type="text" ng-model="opt.name" />
nicholas@2853 137 </div>
nicholas@2853 138 <div class="attribute" ng-show="['question', 'checkbox', 'radio', 'number'].indexOf(opt.type) >= 0">
nicholas@2853 139 <span>Mandatory:</span>
nicholas@2853 140 <input type="checkbox" ng-model="opt.mandatory" />
nicholas@2853 141 </div>
nicholas@2853 142 <div class="attribute">
nicholas@2853 143 <span>Minimum Wait Time (s):</span>
nicholas@2853 144 <input type="number" ng-model="opt.minWait" min="0" />
nicholas@2853 145 </div>
nicholas@2853 146 <div class="attribute" ng-show="opt.type == 'question'">
nicholas@2853 147 <span>Box Size:</span>
nicholas@2853 148 <select ng-model="opt.boxsize">
nicholas@2853 149 <option value="small">Small</option>
nicholas@2853 150 <option value="normal">Normal</option>
nicholas@2853 151 <option value="large">Large</option>
nicholas@2853 152 <option value="huge">Huge</option>
nicholas@2853 153 </select>
nicholas@2853 154 </div>
nicholas@2853 155 <div class="attribute" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0">
nicholas@2853 156 <span>Minimum Selected:</span>
nicholas@2853 157 <input type="number" ng-model="opt.min" min="0" />
nicholas@2853 158 </div>
nicholas@2853 159 <div class="attribute" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0">
nicholas@2853 160 <span>Maximum Selected:</span>
nicholas@2853 161 <input type="number" ng-model="opt.max" max="{{opt.options.length}}" />
nicholas@2853 162 </div>
nicholas@2853 163 <div class="attribute" ng-show="['slider', 'number'].indexOf(opt.type) >= 0">
nicholas@2853 164 <span>Minimum Value:</span>
nicholas@2853 165 <input type="number" ng-model="opt.min" />
nicholas@2853 166 </div>
nicholas@2853 167 <div class="attribute" ng-show="['slider', 'number'].indexOf(opt.type) >= 0">
nicholas@2853 168 <span>Maximum Value:</span>
nicholas@2853 169 <input type="number" ng-model="opt.max" />
nicholas@2853 170 </div>
nicholas@2853 171 <div class="attribute" ng-show="['video', 'youtube'].indexOf(opt.type) >= 0">
nicholas@2853 172 <span>Video URL:</span>
nicholas@2853 173 <input type="text" ng-model="opt.url" />
nicholas@2853 174 </div>
nicholas@2853 175 </div>
nicholas@2853 176 <div class="node">
nicholas@2853 177 <h4>Statement</h4>
nicholas@2853 178 <textarea ng-model="opt.statement"></textarea>
nicholas@2853 179 </div>
nicholas@2853 180 <div class="node" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0">
nicholas@2853 181 <h4>Options</h4>
nicholas@2853 182 <div>
nicholas@2853 183 <button type="button" class="btn btn-default" ng-click="addOption();">Add Option</button>
nicholas@2853 184 </div>
nicholas@2853 185 <div class="node" ng-repeat="option in opt.options">
nicholas@2853 186 <div class="attributes">
nicholas@2853 187 <div class="attribute">
nicholas@2853 188 <button type="button" class="btn btn-default" ng-click="removeOption(option);">Remove</button>
nicholas@2853 189 </div>
nicholas@2853 190 <div class="attribute">
nicholas@2853 191 <span>Name: </span>
nicholas@2853 192 <input type="text" ng-model="option.name" />
nicholas@2853 193 </div>
nicholas@2853 194 <div class="attribute">
nicholas@2853 195 <span>Displayed Text: </span>
nicholas@2853 196 <input type="text" ng-model="option.text" />
nicholas@2853 197 </div>
nicholas@2853 198 </div>
nicholas@2853 199 </div>
nicholas@2853 200 </div>
nicholas@2857 201 <div class="node">
nicholas@2857 202 <h4>Conditionals</h4>
nicholas@2857 203 <button type="button" class="btn btn-default" ng-click="addCondition()">Add Condition</button>
nicholas@2857 204 <div class="node" ng-repeat="condition in opt.conditions">
nicholas@2857 205 <div class="attributes">
nicholas@2857 206 <div class="attribute">
nicholas@2857 207 <button type="button" class="btn btn-danger" ng-click="removeCondition(condition)">Remove</button>
nicholas@2857 208 </div>
nicholas@2857 209 <div class="attribute">
nicholas@2857 210 <span>Check Type:</span>
nicholas@2857 211 <select ng-model="condition.check">
nicholas@2857 212 <option value="equals">Equal To</option>
nicholas@2857 213 <option value="lessThan">Less Than</option>
nicholas@2857 214 <option value="greaterThan">Greater Than</option>
nicholas@2857 215 <option value="stringContains">String Contains</option>
nicholas@2857 216 </select>
nicholas@2857 217 </div>
nicholas@2857 218 <div class="attribute">
nicholas@2857 219 <span>Value: </span>
nicholas@2857 220 <input type="text" ng-model="condition.value" />
nicholas@2857 221 </div>
nicholas@2857 222 <div class="attribute">
nicholas@2857 223 <span>Jump To On Pass: </span>
nicholas@2857 224 <select ng-model="condition.jumpToOnPass">
nicholas@2857 225 <option value="">None</option>
nicholas@2857 226 <option ng-repeat="entry in specification.preTest.options" value="{{entry.id}}">{{entry.id}}</option>
nicholas@2857 227 </select>
nicholas@2857 228 </div>
nicholas@2857 229 <div class="attribute">
nicholas@2857 230 <span>Jump To On Fail: </span>
nicholas@2857 231 <select ng-model="condition.jumpToOnFail">
nicholas@2857 232 <option value="">None</option>
nicholas@2857 233 <option ng-repeat="entry in specification.preTest.options" value="{{entry.id}}">{{entry.id}}</option>
nicholas@2857 234 </select>
nicholas@2857 235 </div>
nicholas@2857 236 </div>
nicholas@2857 237 </div>
nicholas@2857 238 </div>
nicholas@2853 239 </div>
nicholas@2853 240 </div>
nicholas@2853 241 <div id="globalpostsurvey" class="node">
nicholas@2853 242 <h2>Post Test Survey</h2>
nicholas@2857 243 <button type="button" class="btn btn-success" ng-click="specification.postTest.addOption()">Add Entry</button>
nicholas@2853 244 <div class="node" ng-repeat="opt in specification.postTest.options" ng-controller="surveyOption">
nicholas@2853 245 <h3>Survey Entry</h3>
nicholas@2853 246 <div class="attributes">
nicholas@2853 247 <div class="attribute">
nicholas@2853 248 <span>Survey Type: </span>
nicholas@2853 249 <select ng-model="opt.type">
nicholas@2853 250 <option value="question">Question</option>
nicholas@2853 251 <option value="radio">Radio</option>
nicholas@2853 252 <option value="checkbox">Checkbox</option>
nicholas@2853 253 <option value="statement">Statement</option>
nicholas@2853 254 <option value="number">Number</option>
nicholas@2853 255 <option value="slider">Slider</option>
nicholas@2853 256 <option value="video">Video</option>
nicholas@2853 257 <option value="youtube">YouTube</option>
nicholas@2853 258 </select>
nicholas@2853 259 </div>
nicholas@2853 260 <div class="attribute">
nicholas@2853 261 <span>Unique Survey Entry ID:</span>
nicholas@2853 262 <input type="text" ng-model="opt.id" />
nicholas@2853 263 </div>
nicholas@2853 264 <div class="attribute">
nicholas@2853 265 <span>Entry Name:</span>
nicholas@2853 266 <input type="text" ng-model="opt.name" />
nicholas@2853 267 </div>
nicholas@2853 268 <div class="attribute" ng-show="['question', 'checkbox', 'radio', 'number'].indexOf(opt.type) >= 0">
nicholas@2853 269 <span>Mandatory:</span>
nicholas@2853 270 <input type="checkbox" ng-model="opt.mandatory" />
nicholas@2853 271 </div>
nicholas@2853 272 <div class="attribute">
nicholas@2853 273 <span>Minimum Wait Time (s):</span>
nicholas@2853 274 <input type="number" ng-model="opt.minWait" min="0" />
nicholas@2853 275 </div>
nicholas@2853 276 <div class="attribute" ng-show="opt.type == 'question'">
nicholas@2853 277 <span>Box Size:</span>
nicholas@2853 278 <select ng-model="opt.boxsize">
nicholas@2853 279 <option value="small">Small</option>
nicholas@2853 280 <option value="normal">Normal</option>
nicholas@2853 281 <option value="large">Large</option>
nicholas@2853 282 <option value="huge">Huge</option>
nicholas@2853 283 </select>
nicholas@2853 284 </div>
nicholas@2853 285 <div class="attribute" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0">
nicholas@2853 286 <span>Minimum Selected:</span>
nicholas@2853 287 <input type="number" ng-model="opt.min" min="0" />
nicholas@2853 288 </div>
nicholas@2853 289 <div class="attribute" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0">
nicholas@2853 290 <span>Maximum Selected:</span>
nicholas@2853 291 <input type="number" ng-model="opt.max" max="{{opt.options.length}}" />
nicholas@2853 292 </div>
nicholas@2853 293 <div class="attribute" ng-show="['slider', 'number'].indexOf(opt.type) >= 0">
nicholas@2853 294 <span>Minimum Value:</span>
nicholas@2853 295 <input type="number" ng-model="opt.min" />
nicholas@2853 296 </div>
nicholas@2853 297 <div class="attribute" ng-show="['slider', 'number'].indexOf(opt.type) >= 0">
nicholas@2853 298 <span>Maximum Value:</span>
nicholas@2853 299 <input type="number" ng-model="opt.max" />
nicholas@2853 300 </div>
nicholas@2853 301 <div class="attribute" ng-show="['video', 'youtube'].indexOf(opt.type) >= 0">
nicholas@2853 302 <span>Video URL:</span>
nicholas@2853 303 <input type="text" ng-model="opt.url" />
nicholas@2853 304 </div>
nicholas@2853 305 </div>
nicholas@2853 306 <div class="node">
nicholas@2853 307 <h4>Statement</h4>
nicholas@2853 308 <textarea ng-model="opt.statement"></textarea>
nicholas@2853 309 </div>
nicholas@2853 310 <div class="node" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0">
nicholas@2853 311 <h4>Options</h4>
nicholas@2853 312 <div>
nicholas@2853 313 <button type="button" class="btn btn-default" ng-click="addOption();">Add Option</button>
nicholas@2853 314 </div>
nicholas@2853 315 <div class="node" ng-repeat="option in opt.options">
nicholas@2853 316 <div class="attributes">
nicholas@2853 317 <div class="attribute">
nicholas@2853 318 <button type="button" class="btn btn-default" ng-click="removeOption(option);">Remove</button>
nicholas@2853 319 </div>
nicholas@2853 320 <div class="attribute">
nicholas@2853 321 <span>Name: </span>
nicholas@2853 322 <input type="text" ng-model="option.name" />
nicholas@2853 323 </div>
nicholas@2853 324 <div class="attribute">
nicholas@2853 325 <span>Displayed Text: </span>
nicholas@2853 326 <input type="text" ng-model="option.text" />
nicholas@2853 327 </div>
nicholas@2853 328 </div>
nicholas@2853 329 </div>
nicholas@2853 330 </div>
nicholas@2857 331 <div class="node">
nicholas@2857 332 <h4>Conditionals</h4>
nicholas@2857 333 <button type="button" class="btn btn-default" ng-click="addCondition()">Add Condition</button>
nicholas@2857 334 <div class="node" ng-repeat="condition in opt.conditions">
nicholas@2857 335 <div class="attributes">
nicholas@2857 336 <div class="attribute">
nicholas@2857 337 <button type="button" class="btn btn-danger" ng-click="removeCondition(condition)">Remove</button>
nicholas@2857 338 </div>
nicholas@2857 339 <div class="attribute">
nicholas@2857 340 <span>Check Type:</span>
nicholas@2857 341 <select ng-model="condition.check">
nicholas@2857 342 <option value="equals">Equal To</option>
nicholas@2857 343 <option value="lessThan">Less Than</option>
nicholas@2857 344 <option value="greaterThan">Greater Than</option>
nicholas@2857 345 <option value="stringContains">String Contains</option>
nicholas@2857 346 </select>
nicholas@2857 347 </div>
nicholas@2857 348 <div class="attribute">
nicholas@2857 349 <span>Value: </span>
nicholas@2857 350 <input type="text" ng-model="condition.value" />
nicholas@2857 351 </div>
nicholas@2857 352 <div class="attribute">
nicholas@2857 353 <span>Jump To On Pass: </span>
nicholas@2857 354 <select ng-model="condition.jumpToOnPass">
nicholas@2857 355 <option value="">None</option>
nicholas@2857 356 <option ng-repeat="entry in specification.postTest.options" value="{{entry.id}}">{{entry.id}}</option>
nicholas@2857 357 </select>
nicholas@2857 358 </div>
nicholas@2857 359 <div class="attribute">
nicholas@2857 360 <span>Jump To On Fail: </span>
nicholas@2857 361 <select ng-model="condition.jumpToOnFail">
nicholas@2857 362 <option value="">None</option>
nicholas@2857 363 <option ng-repeat="entry in specification.postTest.options" value="{{entry.id}}">{{entry.id}}</option>
nicholas@2857 364 </select>
nicholas@2857 365 </div>
nicholas@2857 366 </div>
nicholas@2857 367 </div>
nicholas@2857 368 </div>
nicholas@2853 369 </div>
nicholas@2853 370 </div>
nicholas@2855 371 <div id="globalinterface" class="node" ng-controller="interfaceNode" ng-init="interface = specification.interfaces">
nicholas@2855 372 <h2>Interface (Globals)</h2>
nicholas@2855 373 <div class="node interfaceOptions">
nicholas@2855 374 <div class="attributes">
nicholas@2855 375 <div class="attribute" name="fragmentPlayed" type="check">
nicholas@2855 376 <span>Check all fragments played: </span>
nicholas@2855 377 <input type="checkbox" ng-click="enableInterfaceOption($event)" />
nicholas@2855 378 </div>
nicholas@2855 379 <div class="attribute" name="fragmentFullPlayback" type="check">
nicholas@2855 380 <span>Check all fragments fully played: </span>
nicholas@2855 381 <input type="checkbox" ng-click="enableInterfaceOption($event)" />
nicholas@2855 382 </div>
nicholas@2855 383 <div class="attribute" name="fragmentMoved" type="check">
nicholas@2855 384 <span>Check all fragments have been moved: </span>
nicholas@2855 385 <input type="checkbox" ng-click="enableInterfaceOption($event)" />
nicholas@2855 386 </div>
nicholas@2855 387 <div class="attribute" name="fragmentComments" type="check">
nicholas@2855 388 <span>Check all fragments have comments: </span>
nicholas@2855 389 <input type="checkbox" ng-click="enableInterfaceOption($event)" />
nicholas@2855 390 </div>
nicholas@2855 391 <div class="attribute" name="scalerange" type="check">
nicholas@2855 392 <span>Enforce a scale usage: </span>
nicholas@2855 393 <input type="checkbox" ng-click="enableInterfaceOption($event)" />
nicholas@2855 394 <span>Minimum:</span>
nicholas@2855 395 <input type="number" min="0" max="100" name="min" />
nicholas@2855 396 <span>Maximum:</span>
nicholas@2855 397 <input type="number" min="0" max="100" name="max" />
nicholas@2855 398 </div>
nicholas@2855 399 <div class="attribute" name="volume" type="show">
nicholas@2855 400 <span>Show master volume control: </span>
nicholas@2855 401 <input type="checkbox" ng-click="enableInterfaceOption($event)" />
nicholas@2855 402 </div>
nicholas@2855 403 <div class="attribute" name="playhead" type="show">
nicholas@2855 404 <span>Show playhead: </span>
nicholas@2855 405 <input type="checkbox" ng-click="enableInterfaceOption($event)" />
nicholas@2855 406 </div>
nicholas@2855 407 <div class="attribute" name="page-count" type="show">
nicholas@2855 408 <span>Show Page Count: </span>
nicholas@2855 409 <input type="checkbox" ng-click="enableInterfaceOption($event)" />
nicholas@2855 410 </div>
nicholas@2855 411 <div class="attribute" name="comments" type="show">
nicholas@2855 412 <span>Show Fragment Comments: </span>
nicholas@2855 413 <input type="checkbox" ng-click="enableInterfaceOption($event)" />
nicholas@2855 414 </div>
nicholas@2855 415 </div>
nicholas@2855 416 </div>
nicholas@2855 417 </div>
nicholas@2851 418 </div>
nicholas@2857 419 <div style="text-align: center;">
nicholas@2857 420 <button type="button" class="btn btn-success" ng-click="addPage()">Add Page</button>
nicholas@2857 421 </div>
nicholas@2856 422 <div class="node pageNode" ng-controller="page" ng-repeat="page in specification.pages">
nicholas@2856 423 <h2>Page</h2>
nicholas@2857 424 <div class="attributes">
nicholas@2857 425 <div class="attribute">
nicholas@2857 426 <span>Unique ID: </span>
nicholas@2857 427 <input type="text" ng-model="page.id" />
nicholas@2857 428 </div>
nicholas@2857 429 <div class="attribute">
nicholas@2857 430 <span>Fragment common-root URL: </span>
nicholas@2857 431 <input type="text" ng-model="page.hostURL" />
nicholas@2857 432 </div>
nicholas@2857 433 <div class="attribute">
nicholas@2857 434 <span>Randomise Fragment Order: </span>
nicholas@2857 435 <input type="checkbox" ng-model="page.randomiseOrder" />
nicholas@2857 436 </div>
nicholas@2857 437 <div class="attribute">
nicholas@2857 438 <span>Repeat Page N-times: </span>
nicholas@2857 439 <input type="number" ng-model="page.repeatCount" />
nicholas@2857 440 </div>
nicholas@2857 441 <div class="attribute">
nicholas@2857 442 <span>Loop audio: </span>
nicholas@2857 443 <input type="checkbox" ng-model="page.loop" />
nicholas@2857 444 </div>
nicholas@2857 445 <div class="attribute">
nicholas@2857 446 <span>Synchronous audio playback: </span>
nicholas@2857 447 <input type="checkbox" ng-model="page.synchronous" />
nicholas@2857 448 </div>
nicholas@2857 449 <div class="attribute">
nicholas@2857 450 <span>Loudness (page): </span>
nicholas@2857 451 <input type="number" ng-model="page.loudness" max="0" />
nicholas@2857 452 </div>
nicholas@2857 453 <div class="attribute">
nicholas@2857 454 <span>Label type: </span>
nicholas@2857 455 <select ng-model="page.label">
nicholas@2857 456 <option value="default">Default</option>
nicholas@2857 457 <option value="none">None</option>
nicholas@2857 458 <option value="number">[1, 2, 3...]</option>
nicholas@2857 459 <option value="letter">[a, b, c...]</option>
nicholas@2857 460 <option value="capital">[A, B, C...]</option>
nicholas@2857 461 <option value="samediff" ng-show="specification.interface == 'AB'">[Same, Different]</option>
nicholas@2857 462 </select>
nicholas@2857 463 </div>
nicholas@2857 464 <div class="attribute" ng-show="page.label != 'default' && page.label != 'none'">
nicholas@2857 465 <span>Label Start: </span>
nicholas@2857 466 <input type="text" ng-model="page.labelStart" />
nicholas@2857 467 </div>
nicholas@2857 468 <div class="attribute">
nicholas@2857 469 <span>Fragment pool size: </span>
nicholas@2857 470 <input type="number" ng-model="page.poolSize" min="0" max="page.audioElements.length" />
nicholas@2857 471 </div>
nicholas@2857 472 <div class="attribute" ng-show="specification.poolSize > 0">
nicholas@2857 473 <span>Always include page: </span>
nicholas@2857 474 <input type="checkbox" ng-model="page.alwaysInclude" />
nicholas@2857 475 </div>
nicholas@2857 476 <div class="attribute">
nicholas@2857 477 <span>Fixed Page Position: </span>
nicholas@2857 478 <input type="number" ng-model="page.position" max="{{specification.pages.length}}" />
nicholas@2857 479 </div>
nicholas@2857 480 <div class="attribute">
nicholas@2857 481 <span>Fixed Page Position: </span>
nicholas@2857 482 <input type="number" ng-model="page.position" min="0" max="{{specification.pages.length}}" />
nicholas@2857 483 </div>
nicholas@2857 484 <div class="attribute">
nicholas@2857 485 <span>Fragment pre-silence: </span>
nicholas@2857 486 <input type="number" ng-model="page.preSilence" min="0" step="0.1" />
nicholas@2857 487 </div>
nicholas@2857 488 <div class="attribute">
nicholas@2857 489 <span>Fragment post-silence: </span>
nicholas@2857 490 <input type="number" ng-model="page.postSilence" min="0" step="0.1" />
nicholas@2857 491 </div>
nicholas@2857 492 <div class="attribute">
nicholas@2857 493 <span>Cannot interupt audio: </span>
nicholas@2857 494 <input type="checkbox" ng-model="page.playOne" />
nicholas@2857 495 </div>
nicholas@2857 496 <div class="attribute">
nicholas@2857 497 <span>Only move playing audio: </span>
nicholas@2857 498 <input type="checkbox" ng-model="page.restrictMovement" />
nicholas@2857 499 </div>
nicholas@2857 500 </div>
nicholas@2857 501 <div class="node">
nicholas@2857 502 <h3>Page Title</h3>
nicholas@2857 503 <textarea ng-model="page.title"></textarea>
nicholas@2857 504 </div>
nicholas@2857 505 <div class="node">
nicholas@2857 506 <h3>Comment box text prefix</h3>
nicholas@2857 507 <textarea ng-model="page.commentboxprefix"></textarea>
nicholas@2857 508 <p>Example:
nicholas@2857 509 <span style="font-weight:600">{{page.commentboxprefix}} A</span>
nicholas@2857 510 </p>
nicholas@2857 511 </div>
nicholas@2857 512 <div class="node">
nicholas@2857 513 <h2>Pre Page Survey</h2>
nicholas@2857 514 <button type="button" class="btn btn-success" ng-click="page.preTest.addOption()">Add Entry</button>
nicholas@2857 515 <div class="node" ng-repeat="opt in page.preTest.options" ng-controller="surveyOption">
nicholas@2857 516 <h3>Survey Entry</h3>
nicholas@2857 517 <div class="attributes">
nicholas@2857 518 <div class="attribute">
nicholas@2857 519 <span>Survey Type: </span>
nicholas@2857 520 <select ng-model="opt.type">
nicholas@2857 521 <option value="question">Question</option>
nicholas@2857 522 <option value="radio">Radio</option>
nicholas@2857 523 <option value="checkbox">Checkbox</option>
nicholas@2857 524 <option value="statement">Statement</option>
nicholas@2857 525 <option value="number">Number</option>
nicholas@2857 526 <option value="slider">Slider</option>
nicholas@2857 527 <option value="video">Video</option>
nicholas@2857 528 <option value="youtube">YouTube</option>
nicholas@2857 529 </select>
nicholas@2857 530 </div>
nicholas@2857 531 <div class="attribute">
nicholas@2857 532 <span>Unique Survey Entry ID:</span>
nicholas@2857 533 <input type="text" ng-model="opt.id" />
nicholas@2857 534 </div>
nicholas@2857 535 <div class="attribute">
nicholas@2857 536 <span>Entry Name:</span>
nicholas@2857 537 <input type="text" ng-model="opt.name" />
nicholas@2857 538 </div>
nicholas@2857 539 <div class="attribute" ng-show="['question', 'checkbox', 'radio', 'number'].indexOf(opt.type) >= 0">
nicholas@2857 540 <span>Mandatory:</span>
nicholas@2857 541 <input type="checkbox" ng-model="opt.mandatory" />
nicholas@2857 542 </div>
nicholas@2857 543 <div class="attribute">
nicholas@2857 544 <span>Minimum Wait Time (s):</span>
nicholas@2857 545 <input type="number" ng-model="opt.minWait" min="0" />
nicholas@2857 546 </div>
nicholas@2857 547 <div class="attribute" ng-show="opt.type == 'question'">
nicholas@2857 548 <span>Box Size:</span>
nicholas@2857 549 <select ng-model="opt.boxsize">
nicholas@2857 550 <option value="small">Small</option>
nicholas@2857 551 <option value="normal">Normal</option>
nicholas@2857 552 <option value="large">Large</option>
nicholas@2857 553 <option value="huge">Huge</option>
nicholas@2857 554 </select>
nicholas@2857 555 </div>
nicholas@2857 556 <div class="attribute" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0">
nicholas@2857 557 <span>Minimum Selected:</span>
nicholas@2857 558 <input type="number" ng-model="opt.min" min="0" />
nicholas@2857 559 </div>
nicholas@2857 560 <div class="attribute" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0">
nicholas@2857 561 <span>Maximum Selected:</span>
nicholas@2857 562 <input type="number" ng-model="opt.max" max="{{opt.options.length}}" />
nicholas@2857 563 </div>
nicholas@2857 564 <div class="attribute" ng-show="['slider', 'number'].indexOf(opt.type) >= 0">
nicholas@2857 565 <span>Minimum Value:</span>
nicholas@2857 566 <input type="number" ng-model="opt.min" />
nicholas@2857 567 </div>
nicholas@2857 568 <div class="attribute" ng-show="['slider', 'number'].indexOf(opt.type) >= 0">
nicholas@2857 569 <span>Maximum Value:</span>
nicholas@2857 570 <input type="number" ng-model="opt.max" />
nicholas@2857 571 </div>
nicholas@2857 572 <div class="attribute" ng-show="['video', 'youtube'].indexOf(opt.type) >= 0">
nicholas@2857 573 <span>Video URL:</span>
nicholas@2857 574 <input type="text" ng-model="opt.url" />
nicholas@2857 575 </div>
nicholas@2857 576 </div>
nicholas@2857 577 <div class="node">
nicholas@2857 578 <h4>Statement</h4>
nicholas@2857 579 <textarea ng-model="opt.statement"></textarea>
nicholas@2857 580 </div>
nicholas@2857 581 <div class="node" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0">
nicholas@2857 582 <h4>Options</h4>
nicholas@2857 583 <div>
nicholas@2857 584 <button type="button" class="btn btn-default" ng-click="addOption();">Add Option</button>
nicholas@2857 585 </div>
nicholas@2857 586 <div class="node" ng-repeat="option in opt.options">
nicholas@2857 587 <div class="attributes">
nicholas@2857 588 <div class="attribute">
nicholas@2857 589 <button type="button" class="btn btn-default" ng-click="removeOption(option);">Remove</button>
nicholas@2857 590 </div>
nicholas@2857 591 <div class="attribute">
nicholas@2857 592 <span>Name: </span>
nicholas@2857 593 <input type="text" ng-model="option.name" />
nicholas@2857 594 </div>
nicholas@2857 595 <div class="attribute">
nicholas@2857 596 <span>Displayed Text: </span>
nicholas@2857 597 <input type="text" ng-model="option.text" />
nicholas@2857 598 </div>
nicholas@2857 599 </div>
nicholas@2857 600 </div>
nicholas@2857 601 </div>
nicholas@2857 602 <div class="node">
nicholas@2857 603 <h4>Conditionals</h4>
nicholas@2857 604 <button type="button" class="btn btn-default" ng-click="addCondition()">Add Condition</button>
nicholas@2857 605 <div class="node" ng-repeat="condition in opt.conditions">
nicholas@2857 606 <div class="attributes">
nicholas@2857 607 <div class="attribute">
nicholas@2857 608 <button type="button" class="btn btn-danger" ng-click="removeCondition(condition)">Remove</button>
nicholas@2857 609 </div>
nicholas@2857 610 <div class="attribute">
nicholas@2857 611 <span>Check Type:</span>
nicholas@2857 612 <select ng-model="condition.check">
nicholas@2857 613 <option value="equals">Equal To</option>
nicholas@2857 614 <option value="lessThan">Less Than</option>
nicholas@2857 615 <option value="greaterThan">Greater Than</option>
nicholas@2857 616 <option value="stringContains">String Contains</option>
nicholas@2857 617 </select>
nicholas@2857 618 </div>
nicholas@2857 619 <div class="attribute">
nicholas@2857 620 <span>Value: </span>
nicholas@2857 621 <input type="text" ng-model="condition.value" />
nicholas@2857 622 </div>
nicholas@2857 623 <div class="attribute">
nicholas@2857 624 <span>Jump To On Pass: </span>
nicholas@2857 625 <select ng-model="condition.jumpToOnPass">
nicholas@2857 626 <option value="">None</option>
nicholas@2857 627 <option ng-repeat="entry in page.postTest.options" value="{{entry.id}}">{{entry.id}}</option>
nicholas@2857 628 </select>
nicholas@2857 629 </div>
nicholas@2857 630 <div class="attribute">
nicholas@2857 631 <span>Jump To On Fail: </span>
nicholas@2857 632 <select ng-model="condition.jumpToOnFail">
nicholas@2857 633 <option value="">None</option>
nicholas@2857 634 <option ng-repeat="entry in page.postTest.options" value="{{entry.id}}">{{entry.id}}</option>
nicholas@2857 635 </select>
nicholas@2857 636 </div>
nicholas@2857 637 </div>
nicholas@2857 638 </div>
nicholas@2857 639 </div>
nicholas@2857 640 </div>
nicholas@2857 641 </div>
nicholas@2857 642 <div class="node">
nicholas@2857 643 <h2>Post Page Survey</h2>
nicholas@2857 644 <button type="button" class="btn btn-success" ng-click="page.postTest.addOption()">Add Entry</button>
nicholas@2857 645 <div class="node" ng-repeat="opt in page.postTest.options" ng-controller="surveyOption">
nicholas@2857 646 <h3>Survey Entry</h3>
nicholas@2857 647 <div class="attributes">
nicholas@2857 648 <div class="attribute">
nicholas@2857 649 <span>Survey Type: </span>
nicholas@2857 650 <select ng-model="opt.type">
nicholas@2857 651 <option value="question">Question</option>
nicholas@2857 652 <option value="radio">Radio</option>
nicholas@2857 653 <option value="checkbox">Checkbox</option>
nicholas@2857 654 <option value="statement">Statement</option>
nicholas@2857 655 <option value="number">Number</option>
nicholas@2857 656 <option value="slider">Slider</option>
nicholas@2857 657 <option value="video">Video</option>
nicholas@2857 658 <option value="youtube">YouTube</option>
nicholas@2857 659 </select>
nicholas@2857 660 </div>
nicholas@2857 661 <div class="attribute">
nicholas@2857 662 <span>Unique Survey Entry ID:</span>
nicholas@2857 663 <input type="text" ng-model="opt.id" />
nicholas@2857 664 </div>
nicholas@2857 665 <div class="attribute">
nicholas@2857 666 <span>Entry Name:</span>
nicholas@2857 667 <input type="text" ng-model="opt.name" />
nicholas@2857 668 </div>
nicholas@2857 669 <div class="attribute" ng-show="['question', 'checkbox', 'radio', 'number'].indexOf(opt.type) >= 0">
nicholas@2857 670 <span>Mandatory:</span>
nicholas@2857 671 <input type="checkbox" ng-model="opt.mandatory" />
nicholas@2857 672 </div>
nicholas@2857 673 <div class="attribute">
nicholas@2857 674 <span>Minimum Wait Time (s):</span>
nicholas@2857 675 <input type="number" ng-model="opt.minWait" min="0" />
nicholas@2857 676 </div>
nicholas@2857 677 <div class="attribute" ng-show="opt.type == 'question'">
nicholas@2857 678 <span>Box Size:</span>
nicholas@2857 679 <select ng-model="opt.boxsize">
nicholas@2857 680 <option value="small">Small</option>
nicholas@2857 681 <option value="normal">Normal</option>
nicholas@2857 682 <option value="large">Large</option>
nicholas@2857 683 <option value="huge">Huge</option>
nicholas@2857 684 </select>
nicholas@2857 685 </div>
nicholas@2857 686 <div class="attribute" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0">
nicholas@2857 687 <span>Minimum Selected:</span>
nicholas@2857 688 <input type="number" ng-model="opt.min" min="0" />
nicholas@2857 689 </div>
nicholas@2857 690 <div class="attribute" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0">
nicholas@2857 691 <span>Maximum Selected:</span>
nicholas@2857 692 <input type="number" ng-model="opt.max" max="{{opt.options.length}}" />
nicholas@2857 693 </div>
nicholas@2857 694 <div class="attribute" ng-show="['slider', 'number'].indexOf(opt.type) >= 0">
nicholas@2857 695 <span>Minimum Value:</span>
nicholas@2857 696 <input type="number" ng-model="opt.min" />
nicholas@2857 697 </div>
nicholas@2857 698 <div class="attribute" ng-show="['slider', 'number'].indexOf(opt.type) >= 0">
nicholas@2857 699 <span>Maximum Value:</span>
nicholas@2857 700 <input type="number" ng-model="opt.max" />
nicholas@2857 701 </div>
nicholas@2857 702 <div class="attribute" ng-show="['video', 'youtube'].indexOf(opt.type) >= 0">
nicholas@2857 703 <span>Video URL:</span>
nicholas@2857 704 <input type="text" ng-model="opt.url" />
nicholas@2857 705 </div>
nicholas@2857 706 </div>
nicholas@2857 707 <div class="node">
nicholas@2857 708 <h4>Statement</h4>
nicholas@2857 709 <textarea ng-model="opt.statement"></textarea>
nicholas@2857 710 </div>
nicholas@2857 711 <div class="node" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0">
nicholas@2857 712 <h4>Options</h4>
nicholas@2857 713 <div>
nicholas@2857 714 <button type="button" class="btn btn-default" ng-click="addOption();">Add Option</button>
nicholas@2857 715 </div>
nicholas@2857 716 <div class="node" ng-repeat="option in opt.options">
nicholas@2857 717 <div class="attributes">
nicholas@2857 718 <div class="attribute">
nicholas@2857 719 <button type="button" class="btn btn-default" ng-click="removeOption(option);">Remove</button>
nicholas@2857 720 </div>
nicholas@2857 721 <div class="attribute">
nicholas@2857 722 <span>Name: </span>
nicholas@2857 723 <input type="text" ng-model="option.name" />
nicholas@2857 724 </div>
nicholas@2857 725 <div class="attribute">
nicholas@2857 726 <span>Displayed Text: </span>
nicholas@2857 727 <input type="text" ng-model="option.text" />
nicholas@2857 728 </div>
nicholas@2857 729 </div>
nicholas@2857 730 </div>
nicholas@2857 731 </div>
nicholas@2857 732 <div class="node">
nicholas@2857 733 <h4>Conditionals</h4>
nicholas@2857 734 <button type="button" class="btn btn-default" ng-click="addCondition()">Add Condition</button>
nicholas@2857 735 <div class="node" ng-repeat="condition in opt.conditions">
nicholas@2857 736 <div class="attributes">
nicholas@2857 737 <div class="attribute">
nicholas@2857 738 <button type="button" class="btn btn-danger" ng-click="removeCondition(condition)">Remove</button>
nicholas@2857 739 </div>
nicholas@2857 740 <div class="attribute">
nicholas@2857 741 <span>Check Type:</span>
nicholas@2857 742 <select ng-model="condition.check">
nicholas@2857 743 <option value="equals">Equal To</option>
nicholas@2857 744 <option value="lessThan">Less Than</option>
nicholas@2857 745 <option value="greaterThan">Greater Than</option>
nicholas@2857 746 <option value="stringContains">String Contains</option>
nicholas@2857 747 </select>
nicholas@2857 748 </div>
nicholas@2857 749 <div class="attribute">
nicholas@2857 750 <span>Value: </span>
nicholas@2857 751 <input type="text" ng-model="condition.value" />
nicholas@2857 752 </div>
nicholas@2857 753 <div class="attribute">
nicholas@2857 754 <span>Jump To On Pass: </span>
nicholas@2857 755 <select ng-model="condition.jumpToOnPass">
nicholas@2857 756 <option value="">None</option>
nicholas@2857 757 <option ng-repeat="entry in page.postTest.options" value="{{entry.id}}">{{entry.id}}</option>
nicholas@2857 758 </select>
nicholas@2857 759 </div>
nicholas@2857 760 <div class="attribute">
nicholas@2857 761 <span>Jump To On Fail: </span>
nicholas@2857 762 <select ng-model="condition.jumpToOnFail">
nicholas@2857 763 <option value="">None</option>
nicholas@2857 764 <option ng-repeat="entry in page.postTest.options" value="{{entry.id}}">{{entry.id}}</option>
nicholas@2857 765 </select>
nicholas@2857 766 </div>
nicholas@2857 767 </div>
nicholas@2857 768 </div>
nicholas@2857 769 </div>
nicholas@2857 770 </div>
nicholas@2857 771 </div>
nicholas@2857 772 <div class="node" ng-repeat="interface in page.interfaces" ng-controller="interfaceNode">
nicholas@2857 773 <h2>Interface</h2>
nicholas@2857 774 <div class="node interfaceOptions">
nicholas@2857 775 <div class="attributes">
nicholas@2857 776 <div class="attribute" name="fragmentPlayed" type="check">
nicholas@2857 777 <span>Check all fragments played: </span>
nicholas@2857 778 <input type="checkbox" ng-click="enableInterfaceOption($event)" />
nicholas@2857 779 </div>
nicholas@2857 780 <div class="attribute" name="fragmentFullPlayback" type="check">
nicholas@2857 781 <span>Check all fragments fully played: </span>
nicholas@2857 782 <input type="checkbox" ng-click="enableInterfaceOption($event)" />
nicholas@2857 783 </div>
nicholas@2857 784 <div class="attribute" name="fragmentMoved" type="check">
nicholas@2857 785 <span>Check all fragments have been moved: </span>
nicholas@2857 786 <input type="checkbox" ng-click="enableInterfaceOption($event)" />
nicholas@2857 787 </div>
nicholas@2857 788 <div class="attribute" name="fragmentComments" type="check">
nicholas@2857 789 <span>Check all fragments have comments: </span>
nicholas@2857 790 <input type="checkbox" ng-click="enableInterfaceOption($event)" />
nicholas@2857 791 </div>
nicholas@2857 792 <div class="attribute" name="scalerange" type="check">
nicholas@2857 793 <span>Enforce a scale usage: </span>
nicholas@2857 794 <input type="checkbox" ng-click="enableInterfaceOption($event)" />
nicholas@2857 795 <span>Minimum:</span>
nicholas@2857 796 <input type="number" min="0" max="100" name="min" />
nicholas@2857 797 <span>Maximum:</span>
nicholas@2857 798 <input type="number" min="0" max="100" name="max" />
nicholas@2857 799 </div>
nicholas@2857 800 <div class="attribute" name="volume" type="show">
nicholas@2857 801 <span>Show master volume control: </span>
nicholas@2857 802 <input type="checkbox" ng-click="enableInterfaceOption($event)" />
nicholas@2857 803 </div>
nicholas@2857 804 <div class="attribute" name="playhead" type="show">
nicholas@2857 805 <span>Show playhead: </span>
nicholas@2857 806 <input type="checkbox" ng-click="enableInterfaceOption($event)" />
nicholas@2857 807 </div>
nicholas@2857 808 <div class="attribute" name="page-count" type="show">
nicholas@2857 809 <span>Show Page Count: </span>
nicholas@2857 810 <input type="checkbox" ng-click="enableInterfaceOption($event)" />
nicholas@2857 811 </div>
nicholas@2857 812 <div class="attribute" name="comments" type="show">
nicholas@2857 813 <span>Show Fragment Comments: </span>
nicholas@2857 814 <input type="checkbox" ng-click="enableInterfaceOption($event)" />
nicholas@2857 815 </div>
nicholas@2857 816 </div>
nicholas@2857 817 </div>
nicholas@2857 818 <div class="node">
nicholas@2857 819 <h3>Axis Title</h3>
nicholas@2857 820 <textarea ng-model="interface.title"></textarea>
nicholas@2857 821 <div class="attributes">
nicholas@2857 822 <div class="attribute">
nicholas@2857 823 <span>Axis name (in saves): </span>
nicholas@2857 824 <input type="text" ng-model="interface.name" />
nicholas@2857 825 </div>
nicholas@2857 826 </div>
nicholas@2857 827 </div>
nicholas@2857 828 <div class="node">
nicholas@2857 829 <h3>Axis Image</h3>
nicholas@2857 830 <textarea ng-model="interface.image"></textarea>
nicholas@2857 831 </div>
nicholas@2857 832 <div class="node">
nicholas@2857 833 <h3>Axis Scales</h3>
nicholas@2857 834 <button type="button" class="btn btn-default" ng-click="addScale();">Add</button>
nicholas@2857 835 <div class="node" ng-repeat="scale in interface.scales">
nicholas@2857 836 <div class="attributes">
nicholas@2857 837 <div class="attribute">
nicholas@2857 838 <button type="button" class="btn btn-danger" ng-click="removeScale(scale);">Remove</button>
nicholas@2857 839 </div>
nicholas@2857 840 <div class="attribute">
nicholas@2857 841 <span>Position: </span>
nicholas@2857 842 <input type="number" min="0" max="100" ng-model="scale.position" />
nicholas@2857 843 </div>
nicholas@2857 844 <div class="attribute">
nicholas@2857 845 <span>Text: </span>
nicholas@2857 846 <input type="text" ng-model="scale.text" />
nicholas@2857 847 </div>
nicholas@2857 848 </div>
nicholas@2857 849 </div>
nicholas@2857 850 </div>
nicholas@2857 851 </div>
nicholas@2857 852 <div class="node">
nicholas@2857 853 <h3>Comment Questions</h3>
nicholas@2857 854 <div class="node" ng-repeat="cq in page.commentQuestions">
nicholas@2857 855 <div class="attributes">
nicholas@2857 856 <div class="attribute">
nicholas@2857 857 <span>Unique ID:</span>
nicholas@2857 858 <input type="text" ng-model="cq.id" />
nicholas@2857 859 </div>
nicholas@2857 860 <div class="attribute">
nicholas@2857 861 <span>Common Name:</span>
nicholas@2857 862 <input type="text" ng-model="cq.name" />
nicholas@2857 863 </div>
nicholas@2857 864 <div class="attribute" ng-show="cq.type == 'slider'">
nicholas@2857 865 <span>Minimum:</span>
nicholas@2857 866 <input type="number" ng-model="cq.min" />
nicholas@2857 867 </div>
nicholas@2857 868 <div class="attribute" ng-show="cq.type == 'slider'">
nicholas@2857 869 <span>Maximum:</span>
nicholas@2857 870 <input type="number" ng-model="cq.max" />
nicholas@2857 871 </div>
nicholas@2857 872 <div class="attribute" ng-show="cq.type == 'slider'">
nicholas@2857 873 <span>Step size:</span>
nicholas@2857 874 <input type="number" ng-model="cq.step" />
nicholas@2857 875 </div>
nicholas@2857 876 <div class="attribute" ng-show="cq.type == 'slider'">
nicholas@2857 877 <span>Initial Value:</span>
nicholas@2857 878 <input type="number" ng-model="cq.value" />
nicholas@2857 879 </div>
nicholas@2857 880 </div>
nicholas@2857 881 <div class="node">
nicholas@2857 882 <h4>Question:</h4>
nicholas@2857 883 <textarea ng-model="cq.statement"></textarea>
nicholas@2857 884 </div>
nicholas@2857 885 <div class="node" ng-show="['radio', 'checkbox'].indexOf(cq.type) >= 0">
nicholas@2857 886 <h4>Options</h4>
nicholas@2857 887 <div class="node" ng-repeat="option in cq.options">
nicholas@2857 888 <div class="attributes">
nicholas@2857 889 <div class="attribute">
nicholas@2857 890 <button type="button" class="btn btn-danger" ng-click="removeCommentQuestionOption(cq,option)">Remove</button>
nicholas@2857 891 </div>
nicholas@2857 892 <div class="attribute">
nicholas@2857 893 <span>Name: </span>
nicholas@2857 894 <input type="text" ng-model="option.name" />
nicholas@2857 895 </div>
nicholas@2857 896 <div class="attribute">
nicholas@2857 897 <span>Display Text: </span>
nicholas@2857 898 <input type="text" ng-model="option.text" />
nicholas@2857 899 </div>
nicholas@2857 900 </div>
nicholas@2857 901 </div>
nicholas@2857 902 </div>
nicholas@2857 903 </div>
nicholas@2857 904 </div>
nicholas@2857 905 <div class="node" ng-repeat="fragment in page.audioElements">
nicholas@2857 906 <h3>Audio Fragment</h3>
nicholas@2857 907 <div class="attributes">
nicholas@2857 908 <div class="attribute">
nicholas@2857 909 <span>Unique ID: </span>
nicholas@2857 910 <input type="text" ng-model="fragment.id" />
nicholas@2857 911 </div>
nicholas@2857 912 <div class="attribute">
nicholas@2857 913 <span>URL: </span>
nicholas@2857 914 <input type="text" ng-model="fragment.url" />
nicholas@2857 915 <span>Full URL: </span><span style="font-weight=600">{{page.hostURL}}{{fragment.url}}</span>
nicholas@2857 916 </div>
nicholas@2857 917 <div class="attribute">
nicholas@2857 918 <span>Fragment Gain (dB): </span>
nicholas@2857 919 <input type="number" ng-model="fragment.gain" />
nicholas@2857 920 </div>
nicholas@2857 921 <div class="attribute">
nicholas@2857 922 <span>Fragment Label: </span>
nicholas@2857 923 <input type="text" ng-model="fragment.label" />
nicholas@2857 924 </div>
nicholas@2857 925 <div class="attribute">
nicholas@2857 926 <span>Fragment Common name: </span>
nicholas@2857 927 <input type="text" ng-model="fragment.name" />
nicholas@2857 928 </div>
nicholas@2857 929 <div class="attribute">
nicholas@2857 930 <span>Fragment Type: </span>
nicholas@2857 931 <select ng-model="fragment.type">
nicholas@2857 932 <option value="normal">Normal</option>
nicholas@2857 933 <option value="anchor">Hidden Anchor</option>
nicholas@2857 934 <option value="reference">Hidden Reference</option>
nicholas@2857 935 <option value="outside-reference">Outside Reference</option>
nicholas@2857 936 </select>
nicholas@2857 937 </div>
nicholas@2857 938 <div class="attribute" ng-show="fragment.type == 'anchor'">
nicholas@2857 939 <span>Anchor must be below: </span>
nicholas@2857 940 <input type="number" ng-model="fragment.marker" min="0" max="100" />
nicholas@2857 941 </div>
nicholas@2857 942 <div class="attribute" ng-show="fragment.type == 'reference'">
nicholas@2857 943 <span>Reference must be above: </span>
nicholas@2857 944 <input type="number" ng-model="fragment.marker" min="0" max="100" />
nicholas@2857 945 </div>
nicholas@2857 946 <div class="attribute">
nicholas@2857 947 <span>Loudness: </span>
nicholas@2857 948 <input type="number" ng-model="fragment.loudness" max="0" />
nicholas@2857 949 </div>
nicholas@2857 950 <div class="attribute" ng-show="page.poolSize > 0">
nicholas@2857 951 <span>Always include fragment: </span>
nicholas@2857 952 <input type="checkbox" ng-model="fragment.alwaysInclude" max="0" />
nicholas@2857 953 </div>
nicholas@2857 954 <div class="attribute">
nicholas@2857 955 <span>Fragment Pre-Silence: </span>
nicholas@2857 956 <input type="number" ng-model="fragment.preSilence" max="0" step="0.1" />
nicholas@2857 957 </div>
nicholas@2857 958 <div class="attribute">
nicholas@2857 959 <span>Fragment Post-Silence: </span>
nicholas@2857 960 <input type="number" ng-model="fragment.postSilence" max="0" step="0.1" />
nicholas@2857 961 </div>
nicholas@2857 962 <div class="attribute">
nicholas@2857 963 <span>Fragment playback start position (s): </span>
nicholas@2857 964 <input type="number" ng-model="fragment.startTime" min="0" max="{{fragment.stopTime}}" />
nicholas@2857 965 </div>
nicholas@2857 966 <div class="attribute">
nicholas@2857 967 <span>Fragment playback stop position (s): </span>
nicholas@2857 968 <input type="number" ng-model="fragment.stopTime" min="{{fragment.startTime}}" />
nicholas@2857 969 </div>
nicholas@2857 970 <div class="attribute">
nicholas@2857 971 <span>Fragment sampling rate: </span>
nicholas@2857 972 <input type="number" ng-model="fragment.sampleRate" min="1" />
nicholas@2857 973 </div>
nicholas@2857 974 <div class="attribute">
nicholas@2857 975 <span>Fragment Image (URL): </span>
nicholas@2857 976 <input type="text" ng-model="fragment.image" />
nicholas@2857 977 </div>
nicholas@2857 978 </div>
nicholas@2857 979 </div>
nicholas@2856 980 </div>
nicholas@2851 981 <div id="popupHolder" ng-show="popupVisible">
nicholas@2851 982 <div ng-controller="introduction" class="popup" ng-show="popupVisible">
nicholas@2851 983 <div class="popupTitle" ng-switch="state">
nicholas@2851 984 <span ng-switch-when="0">Test Creator</span>
nicholas@2851 985 <span ng-switch-when="1">Create New Test</span>
nicholas@2851 986 </div>
nicholas@2851 987 <div class="popupContent container-fluid" ng-switch="state">
nicholas@2851 988 <div ng-switch-when="0">
nicholas@2851 989 <div>
nicholas@2851 990 <span>Welcome to the WAET test creator tool. This will allow you to create a new test from scratch to suit your testing needs. If you wish to update a test file, please drag and drop the XML document into the area below for processing, otherwise press 'Next' to start a new test. This tool generates files for the WAET 1.2.1 version.</span>
nicholas@2851 991 </div>
nicholas@2851 992 <div class="drag-drop" id="introdragdrop"><span>Upload XML here</span></div>
nicholas@2851 993 </div>
nicholas@2851 994 <div ng-switch-when="1">
nicholas@2851 995 <div>
nicholas@2851 996 <span>Please select the interface you would like to use below. Selecting an interface will give a brief description of the interface type.</span>
nicholas@2851 997 </div>
nicholas@2851 998 <div class="row">
nicholas@2851 999 <div class="col-md-6" style="overflow-y: scroll;height: 333px;">
nicholas@2851 1000 <div class="new-test" ng-repeat="i in interfaces" ng-mouseover="mouseover(i.name)" ng-click="initialise(i.name)">
nicholas@2851 1001 <label style="cursor:pointer">
nicholas@2851 1002 <input type="radio" name="new-test" value="{{i.name}}" id="i.name" style="cursor:pointer" /> {{i.name}}
nicholas@2851 1003 </label>
nicholas@2851 1004 </div>
nicholas@2851 1005 </div>
nicholas@2851 1006 <div class="col-md-6">
nicholas@2851 1007 <span>{{description}}</span>
nicholas@2851 1008 </div>
nicholas@2851 1009 </div>
nicholas@2851 1010 </div>
nicholas@2851 1011 </div>
nicholas@2851 1012 <div class="popupButtons">
nicholas@2851 1013 <button id="popupBack" type="button" class="btn btn-default" ng-show="state>0" ng-click="back()">Back</button>
nicholas@2851 1014 <button id="popupNext" type="button" class="btn btn-default" ng-click="next()">Next</button>
nicholas@2851 1015 </div>
nicholas@2851 1016 </div>
nicholas@2851 1017 </div>
nicholas@2851 1018 <div id="screenblank" ng-show="popupVisible"></div>
nicholas@2851 1019 </div>
nicholas@2224 1020 </body>
nicholas@2538 1021
nicholas@2224 1022 </html>