Mercurial > hg > webaudioevaluationtool
comparison test_create.html @ 2911:bcb741f60298
#222 More dropdown labels and help
author | Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk> |
---|---|
date | Tue, 01 Aug 2017 11:57:16 +0100 |
parents | 9c26e579e64d |
children | 7b6cdd27f3ee |
comparison
equal
deleted
inserted
replaced
2910:becd7e8e0a3a | 2911:bcb741f60298 |
---|---|
139 </div> | 139 </div> |
140 </div> | 140 </div> |
141 <div id="globalpresurvey" class="node" ng-controller="survey" ng-init="survey = specification.preTest"> | 141 <div id="globalpresurvey" class="node" ng-controller="survey" ng-init="survey = specification.preTest"> |
142 <h2>Pre Test Survey</h2> | 142 <h2>Pre Test Survey</h2> |
143 <button type="button" class="btn btn-success" ng-click="addSurveyEntry()">Add Entry</button> | 143 <button type="button" class="btn btn-success" ng-click="addSurveyEntry()">Add Entry</button> |
144 <div class="node" ng-repeat="opt in survey.options" ng-controller="surveyOption"> | 144 <div class="node surveyentry" ng-repeat="opt in survey.options" ng-controller="surveyOption"> |
145 <h3>Survey Entry</h3> | 145 <h3>Survey Entry</h3> |
146 <button type="button" class="btn btn-danger" ng-click="removeSurveyEntry(opt);">Delete Entry</button> | 146 <button type="button" class="btn btn-danger" ng-click="removeSurveyEntry(opt);">Delete Entry</button> |
147 <div class="attributes"> | 147 <div class="attributes"> |
148 <div class="attribute"> | 148 <div class="attribute" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Type of survey entry."> |
149 <span>Survey Type: </span> | 149 <span>Survey Type: </span> |
150 <select ng-model="opt.type"> | 150 <select ng-model="opt.type"> |
151 <option value="question">Question</option> | 151 <option value="question">Question</option> |
152 <option value="radio">Radio</option> | 152 <option value="radio">Radio</option> |
153 <option value="checkbox">Checkbox</option> | 153 <option value="checkbox">Checkbox</option> |
156 <option value="slider">Slider</option> | 156 <option value="slider">Slider</option> |
157 <option value="video">Video</option> | 157 <option value="video">Video</option> |
158 <option value="youtube">YouTube</option> | 158 <option value="youtube">YouTube</option> |
159 </select> | 159 </select> |
160 </div> | 160 </div> |
161 <div class="attribute"> | 161 <div class="attribute" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Unique across the entire session of all ID entries. "> |
162 <span>Unique Survey Entry ID:</span> | 162 <span>Unique Survey Entry ID:</span> |
163 <input type="text" ng-model="opt.id" required/> | 163 <input type="text" ng-model="opt.id" required/> |
164 </div> | 164 </div> |
165 <div class="attribute"> | 165 <div class="attribute" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Friendly name. Will be used in test results parsers instead of the ID, if defined."> |
166 <span>Entry Name:</span> | 166 <span>Entry Name:</span> |
167 <input type="text" ng-model="opt.name" /> | 167 <input type="text" ng-model="opt.name" /> |
168 </div> | 168 </div> |
169 <div class="attribute" ng-show="['question', 'checkbox', 'radio', 'number'].indexOf(opt.type) >= 0"> | 169 <div class="attribute" ng-show="['question', 'checkbox', 'radio', 'number'].indexOf(opt.type) >= 0" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="An answer must be given to continue with the test."> |
170 <span>Mandatory:</span> | 170 <span>Mandatory:</span> |
171 <input type="checkbox" ng-model="opt.mandatory" /> | 171 <input type="checkbox" ng-model="opt.mandatory" /> |
172 </div> | 172 </div> |
173 <div class="attribute"> | 173 <div class="attribute" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Minimum time in seconds before continuing."> |
174 <span>Minimum Wait Time (s):</span> | 174 <span>Minimum Wait Time (s):</span> |
175 <input type="number" ng-model="opt.minWait" min="0" /> | 175 <input type="number" ng-model="opt.minWait" min="0" /> |
176 </div> | 176 </div> |
177 <div class="attribute" ng-show="opt.type == 'question'"> | 177 <div class="attribute" ng-show="opt.type == 'question'" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Size of the displayed text box. Does not limit entry but may discourage (or encourage) longer ansewrs if bigger."> |
178 <span>Box Size:</span> | 178 <span>Box Size:</span> |
179 <select ng-model="opt.boxsize"> | 179 <select ng-model="opt.boxsize"> |
180 <option value="small">Small</option> | 180 <option value="small">Small</option> |
181 <option value="normal">Normal</option> | 181 <option value="normal">Normal</option> |
182 <option value="large">Large</option> | 182 <option value="large">Large</option> |
183 <option value="huge">Huge</option> | 183 <option value="huge">Huge</option> |
184 </select> | 184 </select> |
185 </div> | 185 </div> |
186 <div class="attribute" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0"> | 186 <div class="attribute" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="The minimum number of options that must be selected before continuing"> |
187 <span>Minimum Selected:</span> | 187 <span>Minimum Selected:</span> |
188 <input type="number" ng-model="opt.min" min="0" /> | 188 <input type="number" ng-model="opt.min" min="0" /> |
189 </div> | 189 </div> |
190 <div class="attribute" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0"> | 190 <div class="attribute" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Maximum number of options that can be selected to continue."> |
191 <span>Maximum Selected:</span> | 191 <span>Maximum Selected:</span> |
192 <input type="number" ng-model="opt.max" max="{{opt.options.length}}" /> | 192 <input type="number" ng-model="opt.max" max="{{opt.options.length}}" /> |
193 </div> | 193 </div> |
194 <div class="attribute" ng-show="['slider', 'number'].indexOf(opt.type) >= 0"> | 194 <div class="attribute" ng-show="['slider', 'number'].indexOf(opt.type) >= 0" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Minimum numerical value"> |
195 <span>Minimum Value:</span> | 195 <span>Minimum Value:</span> |
196 <input type="number" ng-model="opt.min" /> | 196 <input type="number" ng-model="opt.min" /> |
197 </div> | 197 </div> |
198 <div class="attribute" ng-show="['slider', 'number'].indexOf(opt.type) >= 0"> | 198 <div class="attribute" ng-show="['slider', 'number'].indexOf(opt.type) >= 0" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Maximum numerical value"> |
199 <span>Maximum Value:</span> | 199 <span>Maximum Value:</span> |
200 <input type="number" ng-model="opt.max" /> | 200 <input type="number" ng-model="opt.max" /> |
201 </div> | 201 </div> |
202 <div class="attribute" ng-show="['video', 'youtube'].indexOf(opt.type) >= 0"> | 202 <div class="attribute" ng-show="['video', 'youtube'].indexOf(opt.type) >= 0" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="URL of the video to embed."> |
203 <span>Video URL:</span> | 203 <span>Video URL:</span> |
204 <input type="text" ng-model="opt.url" /> | 204 <input type="text" ng-model="opt.url" /> |
205 </div> | 205 </div> |
206 </div> | 206 </div> |
207 <div class="node"> | 207 <div class="node" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Statement / Question to pose to the subject."> |
208 <h4>Statement</h4> | 208 <h4>Statement</h4> |
209 <textarea ng-model="opt.statement"></textarea> | 209 <textarea ng-model="opt.statement"></textarea> |
210 </div> | 210 </div> |
211 <div class="node" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0"> | 211 <div class="node" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0"> |
212 <h4>Options</h4> | 212 <h4>Options</h4> |
270 </div> | 270 </div> |
271 </div> | 271 </div> |
272 <div id="globalpostsurvey" class="node" ng-controller="survey" ng-init="survey = specification.postTest"> | 272 <div id="globalpostsurvey" class="node" ng-controller="survey" ng-init="survey = specification.postTest"> |
273 <h2>Post Test Survey</h2> | 273 <h2>Post Test Survey</h2> |
274 <button type="button" class="btn btn-success" ng-click="addSurveyEntry()">Add Entry</button> | 274 <button type="button" class="btn btn-success" ng-click="addSurveyEntry()">Add Entry</button> |
275 <div class="node" ng-repeat="opt in survey.options" ng-controller="surveyOption"> | 275 <div class="node surveyentry" ng-repeat="opt in survey.options" ng-controller="surveyOption"> |
276 <h3>Survey Entry</h3> | 276 <h3>Survey Entry</h3> |
277 <button type="button" class="btn btn-danger" ng-click="removeSurveyEntry(opt);">Delete Entry</button> | 277 <button type="button" class="btn btn-danger" ng-click="removeSurveyEntry(opt);">Delete Entry</button> |
278 <div class="attributes"> | 278 <div class="attributes"> |
279 <div class="attribute"> | 279 <div class="attribute" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Type of survey entry."> |
280 <span>Survey Type: </span> | 280 <span>Survey Type: </span> |
281 <select ng-model="opt.type"> | 281 <select ng-model="opt.type"> |
282 <option value="question">Question</option> | 282 <option value="question">Question</option> |
283 <option value="radio">Radio</option> | 283 <option value="radio">Radio</option> |
284 <option value="checkbox">Checkbox</option> | 284 <option value="checkbox">Checkbox</option> |
287 <option value="slider">Slider</option> | 287 <option value="slider">Slider</option> |
288 <option value="video">Video</option> | 288 <option value="video">Video</option> |
289 <option value="youtube">YouTube</option> | 289 <option value="youtube">YouTube</option> |
290 </select> | 290 </select> |
291 </div> | 291 </div> |
292 <div class="attribute"> | 292 <div class="attribute" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Unique across the entire session of all ID entries. "> |
293 <span>Unique Survey Entry ID:</span> | 293 <span>Unique Survey Entry ID:</span> |
294 <input type="text" ng-model="opt.id" required/> | 294 <input type="text" ng-model="opt.id" required/> |
295 </div> | 295 </div> |
296 <div class="attribute"> | 296 <div class="attribute" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Friendly name. Will be used in test results parsers instead of the ID, if defined."> |
297 <span>Entry Name:</span> | 297 <span>Entry Name:</span> |
298 <input type="text" ng-model="opt.name" /> | 298 <input type="text" ng-model="opt.name" /> |
299 </div> | 299 </div> |
300 <div class="attribute" ng-show="['question', 'checkbox', 'radio', 'number'].indexOf(opt.type) >= 0"> | 300 <div class="attribute" ng-show="['question', 'checkbox', 'radio', 'number'].indexOf(opt.type) >= 0" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="An answer must be given to continue with the test."> |
301 <span>Mandatory:</span> | 301 <span>Mandatory:</span> |
302 <input type="checkbox" ng-model="opt.mandatory" /> | 302 <input type="checkbox" ng-model="opt.mandatory" /> |
303 </div> | 303 </div> |
304 <div class="attribute"> | 304 <div class="attribute" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Minimum time in seconds before continuing."> |
305 <span>Minimum Wait Time (s):</span> | 305 <span>Minimum Wait Time (s):</span> |
306 <input type="number" ng-model="opt.minWait" min="0" /> | 306 <input type="number" ng-model="opt.minWait" min="0" /> |
307 </div> | 307 </div> |
308 <div class="attribute" ng-show="opt.type == 'question'"> | 308 <div class="attribute" ng-show="opt.type == 'question'" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Size of the displayed text box. Does not limit entry but may discourage (or encourage) longer ansewrs if bigger."> |
309 <span>Box Size:</span> | 309 <span>Box Size:</span> |
310 <select ng-model="opt.boxsize"> | 310 <select ng-model="opt.boxsize"> |
311 <option value="small">Small</option> | 311 <option value="small">Small</option> |
312 <option value="normal">Normal</option> | 312 <option value="normal">Normal</option> |
313 <option value="large">Large</option> | 313 <option value="large">Large</option> |
314 <option value="huge">Huge</option> | 314 <option value="huge">Huge</option> |
315 </select> | 315 </select> |
316 </div> | 316 </div> |
317 <div class="attribute" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0"> | 317 <div class="attribute" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="The minimum number of options that must be selected before continuing"> |
318 <span>Minimum Selected:</span> | 318 <span>Minimum Selected:</span> |
319 <input type="number" ng-model="opt.min" min="0" /> | 319 <input type="number" ng-model="opt.min" min="0" /> |
320 </div> | 320 </div> |
321 <div class="attribute" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0"> | 321 <div class="attribute" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Maximum number of options that can be selected to continue."> |
322 <span>Maximum Selected:</span> | 322 <span>Maximum Selected:</span> |
323 <input type="number" ng-model="opt.max" max="{{opt.options.length}}" /> | 323 <input type="number" ng-model="opt.max" max="{{opt.options.length}}" /> |
324 </div> | 324 </div> |
325 <div class="attribute" ng-show="['slider', 'number'].indexOf(opt.type) >= 0"> | 325 <div class="attribute" ng-show="['slider', 'number'].indexOf(opt.type) >= 0" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Minimum numerical value"> |
326 <span>Minimum Value:</span> | 326 <span>Minimum Value:</span> |
327 <input type="number" ng-model="opt.min" /> | 327 <input type="number" ng-model="opt.min" /> |
328 </div> | 328 </div> |
329 <div class="attribute" ng-show="['slider', 'number'].indexOf(opt.type) >= 0"> | 329 <div class="attribute" ng-show="['slider', 'number'].indexOf(opt.type) >= 0" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Maximum numerical value"> |
330 <span>Maximum Value:</span> | 330 <span>Maximum Value:</span> |
331 <input type="number" ng-model="opt.max" /> | 331 <input type="number" ng-model="opt.max" /> |
332 </div> | 332 </div> |
333 <div class="attribute" ng-show="['video', 'youtube'].indexOf(opt.type) >= 0"> | 333 <div class="attribute" ng-show="['video', 'youtube'].indexOf(opt.type) >= 0" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="URL of the video to embed."> |
334 <span>Video URL:</span> | 334 <span>Video URL:</span> |
335 <input type="text" ng-model="opt.url" /> | 335 <input type="text" ng-model="opt.url" /> |
336 </div> | 336 </div> |
337 </div> | 337 </div> |
338 <div class="node"> | 338 <div class="node" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Statement / Question to pose to the subject."> |
339 <h4>Statement</h4> | 339 <h4>Statement</h4> |
340 <textarea ng-model="opt.statement"></textarea> | 340 <textarea ng-model="opt.statement"></textarea> |
341 </div> | 341 </div> |
342 <div class="node" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0"> | 342 <div class="node" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0"> |
343 <h4>Options</h4> | 343 <h4>Options</h4> |
402 </div> | 402 </div> |
403 <div id="globalinterface" class="node" ng-controller="interfaceNode" ng-init="interface = specification.interfaces"> | 403 <div id="globalinterface" class="node" ng-controller="interfaceNode" ng-init="interface = specification.interfaces"> |
404 <h2>Interface (Globals)</h2> | 404 <h2>Interface (Globals)</h2> |
405 <div class="node interfaceOptions"> | 405 <div class="node interfaceOptions"> |
406 <div class="attributes"> | 406 <div class="attributes"> |
407 <div class="attribute" name="fragmentPlayed" type="check"> | 407 <div class="attribute" name="fragmentPlayed" type="check" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="A page can only be submitted if all fragments have been played"> |
408 <span>Check all fragments played: </span> | 408 <span>Check all fragments played: </span> |
409 <input type="checkbox" ng-click="enableInterfaceOption($event)" /> | 409 <input type="checkbox" ng-click="enableInterfaceOption($event)" /> |
410 </div> | 410 </div> |
411 <div class="attribute" name="fragmentFullPlayback" type="check"> | 411 <div class="attribute" name="fragmentFullPlayback" type="check" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="A page can only be submitted if all fragments have been played completely."> |
412 <span>Check all fragments fully played: </span> | 412 <span>Check all fragments fully played: </span> |
413 <input type="checkbox" ng-click="enableInterfaceOption($event)" /> | 413 <input type="checkbox" ng-click="enableInterfaceOption($event)" /> |
414 </div> | 414 </div> |
415 <div class="attribute" name="fragmentMoved" type="check"> | 415 <div class="attribute" name="fragmentMoved" type="check" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="A page can only be submitted if all fragments have been moved"> |
416 <span>Check all fragments have been moved: </span> | 416 <span>Check all fragments have been moved: </span> |
417 <input type="checkbox" ng-click="enableInterfaceOption($event)" /> | 417 <input type="checkbox" ng-click="enableInterfaceOption($event)" /> |
418 </div> | 418 </div> |
419 <div class="attribute" name="fragmentComments" type="check"> | 419 <div class="attribute" name="fragmentComments" type="check" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="A page can only be submitted if all fragments have their comment boxes completed."> |
420 <span>Check all fragments have comments: </span> | 420 <span>Check all fragments have comments: </span> |
421 <input type="checkbox" ng-click="enableInterfaceOption($event)" /> | 421 <input type="checkbox" ng-click="enableInterfaceOption($event)" /> |
422 </div> | 422 </div> |
423 <div class="attribute" name="scalerange" type="check"> | 423 <div class="attribute" name="scalerange" type="check" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="A page can only be submitted if there are fragments above and below the maximum and minimum ranges."> |
424 <span>Enforce a scale usage: </span> | 424 <span>Enforce a scale usage: </span> |
425 <input type="checkbox" ng-click="enableInterfaceOption($event)" /> | 425 <input type="checkbox" ng-click="enableInterfaceOption($event)" /> |
426 <span>Minimum:</span> | 426 <span>Minimum:</span> |
427 <input type="number" min="0" max="100" name="min" /> | 427 <input type="number" min="0" max="100" name="min" /> |
428 <span>Maximum:</span> | 428 <span>Maximum:</span> |
429 <input type="number" min="0" max="100" name="max" /> | 429 <input type="number" min="0" max="100" name="max" /> |
430 </div> | 430 </div> |
431 <div class="attribute" name="volume" type="show"> | 431 <div class="attribute" name="volume" type="show" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Show the master volume control on each page."> |
432 <span>Show master volume control: </span> | 432 <span>Show master volume control: </span> |
433 <input type="checkbox" ng-click="enableInterfaceOption($event)" /> | 433 <input type="checkbox" ng-click="enableInterfaceOption($event)" /> |
434 </div> | 434 </div> |
435 <div class="attribute" name="playhead" type="show"> | 435 <div class="attribute" name="playhead" type="show" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Show the playhead for the fragments."> |
436 <span>Show playhead: </span> | 436 <span>Show playhead: </span> |
437 <input type="checkbox" ng-click="enableInterfaceOption($event)" /> | 437 <input type="checkbox" ng-click="enableInterfaceOption($event)" /> |
438 </div> | 438 </div> |
439 <div class="attribute" name="page-count" type="show"> | 439 <div class="attribute" name="page-count" type="show" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Show number of completed and remaining pages."> |
440 <span>Show Page Count: </span> | 440 <span>Show Page Count: </span> |
441 <input type="checkbox" ng-click="enableInterfaceOption($event)" /> | 441 <input type="checkbox" ng-click="enableInterfaceOption($event)" /> |
442 </div> | 442 </div> |
443 <div class="attribute" name="comments" type="show"> | 443 <div class="attribute" name="comments" type="show" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Show comment boxes for each fragment."> |
444 <span>Show Fragment Comments: </span> | 444 <span>Show Fragment Comments: </span> |
445 <input type="checkbox" ng-click="enableInterfaceOption($event)" /> | 445 <input type="checkbox" ng-click="enableInterfaceOption($event)" /> |
446 </div> | 446 </div> |
447 </div> | 447 </div> |
448 </div> | 448 </div> |
466 <div class="attribute"> | 466 <div class="attribute"> |
467 <span>Randomise Fragment Order: </span> | 467 <span>Randomise Fragment Order: </span> |
468 <input type="checkbox" ng-model="page.randomiseOrder" /> | 468 <input type="checkbox" ng-model="page.randomiseOrder" /> |
469 </div> | 469 </div> |
470 <div class="attribute" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Specify if this page should be repeated and how many times. Please note, that if page-pooling is also selected then it 'may' not repeat as many times."> | 470 <div class="attribute" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Specify if this page should be repeated and how many times. Please note, that if page-pooling is also selected then it 'may' not repeat as many times."> |
471 <span>Repeat Page N-times: </span> | 471 <span>Numer of repetitions: </span> |
472 <input type="number" ng-model="page.repeatCount" value="0" step="1" placeholder="{{placeholder('repeatCount')}}" /> | 472 <input type="number" ng-model="page.repeatCount" value="0" step="1" placeholder="{{placeholder('repeatCount')}}" /> |
473 </div> | 473 </div> |
474 <div class="attribute" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Loop audio playback until manually stopped or the page submit button is pressed"> | 474 <div class="attribute" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Loop audio playback until manually stopped or the page submit button is pressed"> |
475 <span>Loop audio: </span> | 475 <span>Loop audio: </span> |
476 <input type="checkbox" ng-model="page.loop" /> | 476 <input type="checkbox" ng-model="page.loop" /> |
547 </p> | 547 </p> |
548 </div> | 548 </div> |
549 <div class="node" ng-controller="survey" ng-init="survey = page.preTest"> | 549 <div class="node" ng-controller="survey" ng-init="survey = page.preTest"> |
550 <h2>Pre Page Survey</h2> | 550 <h2>Pre Page Survey</h2> |
551 <button type="button" class="btn btn-success" ng-click="addSurveyEntry()">Add Entry</button> | 551 <button type="button" class="btn btn-success" ng-click="addSurveyEntry()">Add Entry</button> |
552 <div class="node" ng-repeat="opt in survey.options" ng-controller="surveyOption"> | 552 <div class="node surveyentry" ng-repeat="opt in survey.options" ng-controller="surveyOption"> |
553 <h3>Survey Entry</h3> | 553 <h3>Survey Entry</h3> |
554 <button type="button" class="btn btn-danger" ng-click="removeSurveyEntry(opt);">Delete Entry</button> | 554 <button type="button" class="btn btn-danger" ng-click="removeSurveyEntry(opt);">Delete Entry</button> |
555 <div class="attributes"> | 555 <div class="attributes"> |
556 <div class="attribute"> | 556 <div class="attribute" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Type of survey entry."> |
557 <span>Survey Type: </span> | 557 <span>Survey Type: </span> |
558 <select ng-model="opt.type"> | 558 <select ng-model="opt.type"> |
559 <option value="question">Question</option> | 559 <option value="question">Question</option> |
560 <option value="radio">Radio</option> | 560 <option value="radio">Radio</option> |
561 <option value="checkbox">Checkbox</option> | 561 <option value="checkbox">Checkbox</option> |
564 <option value="slider">Slider</option> | 564 <option value="slider">Slider</option> |
565 <option value="video">Video</option> | 565 <option value="video">Video</option> |
566 <option value="youtube">YouTube</option> | 566 <option value="youtube">YouTube</option> |
567 </select> | 567 </select> |
568 </div> | 568 </div> |
569 <div class="attribute"> | 569 <div class="attribute" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Unique across the entire session of all ID entries. "> |
570 <span>Unique Survey Entry ID:</span> | 570 <span>Unique Survey Entry ID:</span> |
571 <input type="text" ng-model="opt.id" required/> | 571 <input type="text" ng-model="opt.id" required/> |
572 </div> | 572 </div> |
573 <div class="attribute"> | 573 <div class="attribute" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Friendly name. Will be used in test results parsers instead of the ID, if defined."> |
574 <span>Entry Name:</span> | 574 <span>Entry Name:</span> |
575 <input type="text" ng-model="opt.name" /> | 575 <input type="text" ng-model="opt.name" /> |
576 </div> | 576 </div> |
577 <div class="attribute" ng-show="['question', 'checkbox', 'radio', 'number'].indexOf(opt.type) >= 0"> | 577 <div class="attribute" ng-show="['question', 'checkbox', 'radio', 'number'].indexOf(opt.type) >= 0" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="An answer must be given to continue with the test."> |
578 <span>Mandatory:</span> | 578 <span>Mandatory:</span> |
579 <input type="checkbox" ng-model="opt.mandatory" /> | 579 <input type="checkbox" ng-model="opt.mandatory" /> |
580 </div> | 580 </div> |
581 <div class="attribute"> | 581 <div class="attribute" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Minimum time in seconds before continuing."> |
582 <span>Minimum Wait Time (s):</span> | 582 <span>Minimum Wait Time (s):</span> |
583 <input type="number" ng-model="opt.minWait" min="0" /> | 583 <input type="number" ng-model="opt.minWait" min="0" /> |
584 </div> | 584 </div> |
585 <div class="attribute" ng-show="opt.type == 'question'"> | 585 <div class="attribute" ng-show="opt.type == 'question'" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Size of the displayed text box. Does not limit entry but may discourage (or encourage) longer ansewrs if bigger."> |
586 <span>Box Size:</span> | 586 <span>Box Size:</span> |
587 <select ng-model="opt.boxsize"> | 587 <select ng-model="opt.boxsize"> |
588 <option value="small">Small</option> | 588 <option value="small">Small</option> |
589 <option value="normal">Normal</option> | 589 <option value="normal">Normal</option> |
590 <option value="large">Large</option> | 590 <option value="large">Large</option> |
591 <option value="huge">Huge</option> | 591 <option value="huge">Huge</option> |
592 </select> | 592 </select> |
593 </div> | 593 </div> |
594 <div class="attribute" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0"> | 594 <div class="attribute" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="The minimum number of options that must be selected before continuing"> |
595 <span>Minimum Selected:</span> | 595 <span>Minimum Selected:</span> |
596 <input type="number" ng-model="opt.min" min="0" /> | 596 <input type="number" ng-model="opt.min" min="0" /> |
597 </div> | 597 </div> |
598 <div class="attribute" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0"> | 598 <div class="attribute" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Maximum number of options that can be selected to continue."> |
599 <span>Maximum Selected:</span> | 599 <span>Maximum Selected:</span> |
600 <input type="number" ng-model="opt.max" max="{{opt.options.length}}" /> | 600 <input type="number" ng-model="opt.max" max="{{opt.options.length}}" /> |
601 </div> | 601 </div> |
602 <div class="attribute" ng-show="['slider', 'number'].indexOf(opt.type) >= 0"> | 602 <div class="attribute" ng-show="['slider', 'number'].indexOf(opt.type) >= 0" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Minimum numerical value"> |
603 <span>Minimum Value:</span> | 603 <span>Minimum Value:</span> |
604 <input type="number" ng-model="opt.min" /> | 604 <input type="number" ng-model="opt.min" /> |
605 </div> | 605 </div> |
606 <div class="attribute" ng-show="['slider', 'number'].indexOf(opt.type) >= 0"> | 606 <div class="attribute" ng-show="['slider', 'number'].indexOf(opt.type) >= 0" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Maximum numerical value"> |
607 <span>Maximum Value:</span> | 607 <span>Maximum Value:</span> |
608 <input type="number" ng-model="opt.max" /> | 608 <input type="number" ng-model="opt.max" /> |
609 </div> | 609 </div> |
610 <div class="attribute" ng-show="['video', 'youtube'].indexOf(opt.type) >= 0"> | 610 <div class="attribute" ng-show="['video', 'youtube'].indexOf(opt.type) >= 0" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="URL of the video to embed."> |
611 <span>Video URL:</span> | 611 <span>Video URL:</span> |
612 <input type="text" ng-model="opt.url" /> | 612 <input type="text" ng-model="opt.url" /> |
613 </div> | 613 </div> |
614 </div> | 614 </div> |
615 <div class="node"> | 615 <div class="node" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Statement / Question to pose to the subject."> |
616 <h4>Statement</h4> | 616 <h4>Statement</h4> |
617 <textarea ng-model="opt.statement"></textarea> | 617 <textarea ng-model="opt.statement"></textarea> |
618 </div> | 618 </div> |
619 <div class="node" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0"> | 619 <div class="node" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0"> |
620 <h4>Options</h4> | 620 <h4>Options</h4> |
678 </div> | 678 </div> |
679 </div> | 679 </div> |
680 <div class="node" ng-controller="survey" ng-init="survey = page.postTest"> | 680 <div class="node" ng-controller="survey" ng-init="survey = page.postTest"> |
681 <h2>Post Page Survey</h2> | 681 <h2>Post Page Survey</h2> |
682 <button type="button" class="btn btn-success" ng-click="addSurveyEntry()">Add Entry</button> | 682 <button type="button" class="btn btn-success" ng-click="addSurveyEntry()">Add Entry</button> |
683 <div class="node" ng-repeat="opt in survey.options" ng-controller="surveyOption"> | 683 <div class="node surveyentry" ng-repeat="opt in survey.options" ng-controller="surveyOption"> |
684 <h3>Survey Entry</h3> | 684 <h3>Survey Entry</h3> |
685 <button type="button" class="btn btn-danger" ng-click="removeSurveyEntry(opt);">Delete Entry</button> | 685 <button type="button" class="btn btn-danger" ng-click="removeSurveyEntry(opt);">Delete Entry</button> |
686 <div class="attributes"> | 686 <div class="attributes"> |
687 <div class="attribute"> | 687 <div class="attribute" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Type of survey entry."> |
688 <span>Survey Type: </span> | 688 <span>Survey Type: </span> |
689 <select ng-model="opt.type"> | 689 <select ng-model="opt.type"> |
690 <option value="question">Question</option> | 690 <option value="question">Question</option> |
691 <option value="radio">Radio</option> | 691 <option value="radio">Radio</option> |
692 <option value="checkbox">Checkbox</option> | 692 <option value="checkbox">Checkbox</option> |
695 <option value="slider">Slider</option> | 695 <option value="slider">Slider</option> |
696 <option value="video">Video</option> | 696 <option value="video">Video</option> |
697 <option value="youtube">YouTube</option> | 697 <option value="youtube">YouTube</option> |
698 </select> | 698 </select> |
699 </div> | 699 </div> |
700 <div class="attribute"> | 700 <div class="attribute" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Unique across the entire session of all ID entries. "> |
701 <span>Unique Survey Entry ID:</span> | 701 <span>Unique Survey Entry ID:</span> |
702 <input type="text" ng-model="opt.id" required /> | 702 <input type="text" ng-model="opt.id" required/> |
703 </div> | 703 </div> |
704 <div class="attribute"> | 704 <div class="attribute" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Friendly name. Will be used in test results parsers instead of the ID, if defined."> |
705 <span>Entry Name:</span> | 705 <span>Entry Name:</span> |
706 <input type="text" ng-model="opt.name" /> | 706 <input type="text" ng-model="opt.name" /> |
707 </div> | 707 </div> |
708 <div class="attribute" ng-show="['question', 'checkbox', 'radio', 'number'].indexOf(opt.type) >= 0"> | 708 <div class="attribute" ng-show="['question', 'checkbox', 'radio', 'number'].indexOf(opt.type) >= 0" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="An answer must be given to continue with the test."> |
709 <span>Mandatory:</span> | 709 <span>Mandatory:</span> |
710 <input type="checkbox" ng-model="opt.mandatory" /> | 710 <input type="checkbox" ng-model="opt.mandatory" /> |
711 </div> | 711 </div> |
712 <div class="attribute"> | 712 <div class="attribute" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Minimum time in seconds before continuing."> |
713 <span>Minimum Wait Time (s):</span> | 713 <span>Minimum Wait Time (s):</span> |
714 <input type="number" ng-model="opt.minWait" min="0" /> | 714 <input type="number" ng-model="opt.minWait" min="0" /> |
715 </div> | 715 </div> |
716 <div class="attribute" ng-show="opt.type == 'question'"> | 716 <div class="attribute" ng-show="opt.type == 'question'" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Size of the displayed text box. Does not limit entry but may discourage (or encourage) longer ansewrs if bigger."> |
717 <span>Box Size:</span> | 717 <span>Box Size:</span> |
718 <select ng-model="opt.boxsize"> | 718 <select ng-model="opt.boxsize"> |
719 <option value="small">Small</option> | 719 <option value="small">Small</option> |
720 <option value="normal">Normal</option> | 720 <option value="normal">Normal</option> |
721 <option value="large">Large</option> | 721 <option value="large">Large</option> |
722 <option value="huge">Huge</option> | 722 <option value="huge">Huge</option> |
723 </select> | 723 </select> |
724 </div> | 724 </div> |
725 <div class="attribute" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0"> | 725 <div class="attribute" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="The minimum number of options that must be selected before continuing"> |
726 <span>Minimum Selected:</span> | 726 <span>Minimum Selected:</span> |
727 <input type="number" ng-model="opt.min" min="0" /> | 727 <input type="number" ng-model="opt.min" min="0" /> |
728 </div> | 728 </div> |
729 <div class="attribute" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0"> | 729 <div class="attribute" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Maximum number of options that can be selected to continue."> |
730 <span>Maximum Selected:</span> | 730 <span>Maximum Selected:</span> |
731 <input type="number" ng-model="opt.max" max="{{opt.options.length}}" /> | 731 <input type="number" ng-model="opt.max" max="{{opt.options.length}}" /> |
732 </div> | 732 </div> |
733 <div class="attribute" ng-show="['slider', 'number'].indexOf(opt.type) >= 0"> | 733 <div class="attribute" ng-show="['slider', 'number'].indexOf(opt.type) >= 0" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Minimum numerical value"> |
734 <span>Minimum Value:</span> | 734 <span>Minimum Value:</span> |
735 <input type="number" ng-model="opt.min" /> | 735 <input type="number" ng-model="opt.min" /> |
736 </div> | 736 </div> |
737 <div class="attribute" ng-show="['slider', 'number'].indexOf(opt.type) >= 0"> | 737 <div class="attribute" ng-show="['slider', 'number'].indexOf(opt.type) >= 0" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Maximum numerical value"> |
738 <span>Maximum Value:</span> | 738 <span>Maximum Value:</span> |
739 <input type="number" ng-model="opt.max" /> | 739 <input type="number" ng-model="opt.max" /> |
740 </div> | 740 </div> |
741 <div class="attribute" ng-show="['video', 'youtube'].indexOf(opt.type) >= 0"> | 741 <div class="attribute" ng-show="['video', 'youtube'].indexOf(opt.type) >= 0" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="URL of the video to embed."> |
742 <span>Video URL:</span> | 742 <span>Video URL:</span> |
743 <input type="text" ng-model="opt.url" /> | 743 <input type="text" ng-model="opt.url" /> |
744 </div> | 744 </div> |
745 </div> | 745 </div> |
746 <div class="node"> | 746 <div class="node" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Statement / Question to pose to the subject."> |
747 <h4>Statement</h4> | 747 <h4>Statement</h4> |
748 <textarea ng-model="opt.statement"></textarea> | 748 <textarea ng-model="opt.statement"></textarea> |
749 </div> | 749 </div> |
750 <div class="node" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0"> | 750 <div class="node" ng-show="['checkbox', 'radio'].indexOf(opt.type) >= 0"> |
751 <h4>Options</h4> | 751 <h4>Options</h4> |
807 </div> | 807 </div> |
808 </div> | 808 </div> |
809 </div> | 809 </div> |
810 </div> | 810 </div> |
811 <button type="button" class="btn btn-success" ng-show="specification.interface == 'APE' || page.interfaces.length == 0" ng-click="addInterface()">Add Interface/Axis</button> | 811 <button type="button" class="btn btn-success" ng-show="specification.interface == 'APE' || page.interfaces.length == 0" ng-click="addInterface()">Add Interface/Axis</button> |
812 <div class="node" ng-repeat="interface in page.interfaces" ng-controller="interfaceNode"> | 812 <div class="node interface" ng-repeat="interface in page.interfaces" ng-controller="interfaceNode"> |
813 <h2>Interface</h2> | 813 <h2>Interface</h2> |
814 <button type="button" class="btn btn-danger" ng-click="removeInterface(interface)">Remove Interface/Axis</button> | 814 <button type="button" class="btn btn-danger" ng-click="removeInterface(interface)">Remove Interface/Axis</button> |
815 <div class="node interfaceOptions"> | 815 <div class="node interfaceOptions"> |
816 <div class="attributes"> | 816 <div class="attributes"> |
817 <div class="attribute" name="fragmentPlayed" type="check"> | 817 <div class="attribute" name="fragmentPlayed" type="check"> |
954 </div> | 954 </div> |
955 </div> | 955 </div> |
956 </div> | 956 </div> |
957 </div> | 957 </div> |
958 <button type="button" class="btn btn-success" ng-click="addAudioElement()">Add Fragment</button> | 958 <button type="button" class="btn btn-success" ng-click="addAudioElement()">Add Fragment</button> |
959 <div class="node" ng-repeat="fragment in page.audioElements"> | 959 <div class="node audioelement" ng-repeat="fragment in page.audioElements"> |
960 <h3>Audio Fragment</h3> | 960 <h3>Audio Fragment</h3> |
961 <button type="button" class="btn btn-danger" ng-click="removeAudioElement(fragment)">Remove Fragment</button> | 961 <button type="button" class="btn btn-danger" ng-click="removeAudioElement(fragment)">Remove Fragment</button> |
962 <div class="attributes"> | 962 <div class="attributes"> |
963 <div class="attribute"> | 963 <div class="attribute" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="The unique ID of this fragment. Must be unique across the entire session"> |
964 <span>Unique ID: </span> | 964 <span>Unique ID: </span> |
965 <input type="text" ng-model="fragment.id" required/> | 965 <input type="text" ng-model="fragment.id" required/> |
966 </div> | 966 </div> |
967 <div class="attribute"> | 967 <div class="attribute" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="URL of the fragment."> |
968 <span>URL: </span> | 968 <span>URL: </span> |
969 <input type="text" ng-model="fragment.url" required/> | 969 <input type="text" ng-model="fragment.url" required/> |
970 <span>Full URL: </span><span style="font-weight=600">{{page.hostURL}}{{fragment.url}}</span> | 970 <span>Full URL: </span><span style="font-weight=600">{{page.hostURL}}{{fragment.url}}</span> |
971 </div> | 971 </div> |
972 <div class="attribute" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Set the gain of this fragment. This is applied after any normalisation"> | 972 <div class="attribute" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Set the gain of this fragment. This is applied after any normalisation"> |
990 <option value="outside-reference">Outside Reference</option> | 990 <option value="outside-reference">Outside Reference</option> |
991 </select> | 991 </select> |
992 </div> | 992 </div> |
993 <div class="attribute" ng-show="fragment.type == 'anchor'"> | 993 <div class="attribute" ng-show="fragment.type == 'anchor'"> |
994 <span>Anchor must be below: </span> | 994 <span>Anchor must be below: </span> |
995 <input type="number" ng-model="fragment.marker" min="0" max="100" /> | 995 <input type="number" ng-model="fragment.marker" min="0" max="100" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="If this is set, the page cannot be submitted if this fragment is above this point." /> |
996 </div> | 996 </div> |
997 <div class="attribute" ng-show="fragment.type == 'reference'"> | 997 <div class="attribute" ng-show="fragment.type == 'reference'"> |
998 <span>Reference must be above: </span> | 998 <span>Reference must be above: </span> |
999 <input type="number" ng-model="fragment.marker" min="0" max="100" /> | 999 <input type="number" ng-model="fragment.marker" min="0" max="100" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="If this is set, the page cannot be submitted if this fragment is below this point." /> |
1000 </div> | 1000 </div> |
1001 <div class="attribute" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Over-ride global and page loudness"> | 1001 <div class="attribute" data-container="body" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-content="Over-ride global and page loudness"> |
1002 <span>Loudness: </span> | 1002 <span>Loudness: </span> |
1003 <input type="number" ng-model="fragment.loudness" max="0" placeholder="{{page.loudness || specification.loudness || ''}}" /> | 1003 <input type="number" ng-model="fragment.loudness" max="0" placeholder="{{page.loudness || specification.loudness || ''}}" /> |
1004 </div> | 1004 </div> |