annotate test_create.html @ 2858:cffde1e75b2d

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