comparison test_create.html @ 2877:5164a6f53a02

Add basic verification of required entires #76
author Nicholas Jillings <nicholas.jillings@mail.bcu.ac.uk>
date Wed, 31 May 2017 12:02:56 +0100
parents 88dff8b9247c
children 596e83ffc73a
comparison
equal deleted inserted replaced
2876:88dff8b9247c 2877:5164a6f53a02
23 <div id="setupNode" class="node" ng-controller="setup"> 23 <div id="setupNode" class="node" ng-controller="setup">
24 <h2>Setup</h2> 24 <h2>Setup</h2>
25 <div class="attributes"> 25 <div class="attributes">
26 <div class="attribute"> 26 <div class="attribute">
27 <span>Interface: </span> 27 <span>Interface: </span>
28 <input type="text" ng-model="specification.interface" /> 28 <input type="text" ng-model="specification.interface" required/>
29 </div> 29 </div>
30 <div class="attribute"> 30 <div class="attribute">
31 <span>Save URL: </span> 31 <span>Save URL: </span>
32 <input type="text" ng-model="specification.projectReturn" /> 32 <input type="text" ng-model="specification.projectReturn" placeholder="save.php" />
33 </div> 33 </div>
34 <div class="attribute"> 34 <div class="attribute">
35 <span>Exit URL: </span> 35 <span>Exit URL: </span>
36 <input type="text" ng-model="specification.returnURL" /> 36 <input type="text" ng-model="specification.returnURL" />
37 </div> 37 </div>
137 <option value="youtube">YouTube</option> 137 <option value="youtube">YouTube</option>
138 </select> 138 </select>
139 </div> 139 </div>
140 <div class="attribute"> 140 <div class="attribute">
141 <span>Unique Survey Entry ID:</span> 141 <span>Unique Survey Entry ID:</span>
142 <input type="text" ng-model="opt.id" /> 142 <input type="text" ng-model="opt.id" required/>
143 </div> 143 </div>
144 <div class="attribute"> 144 <div class="attribute">
145 <span>Entry Name:</span> 145 <span>Entry Name:</span>
146 <input type="text" ng-model="opt.name" /> 146 <input type="text" ng-model="opt.name" />
147 </div> 147 </div>
197 <div class="attribute"> 197 <div class="attribute">
198 <button type="button" class="btn btn-default" ng-click="removeOption(option);">Remove</button> 198 <button type="button" class="btn btn-default" ng-click="removeOption(option);">Remove</button>
199 </div> 199 </div>
200 <div class="attribute"> 200 <div class="attribute">
201 <span>Name: </span> 201 <span>Name: </span>
202 <input type="text" ng-model="option.name" /> 202 <input type="text" ng-model="option.name" required/>
203 </div> 203 </div>
204 <div class="attribute"> 204 <div class="attribute">
205 <span>Displayed Text: </span> 205 <span>Displayed Text: </span>
206 <input type="text" ng-model="option.text" /> 206 <input type="text" ng-model="option.text" required/>
207 </div> 207 </div>
208 </div> 208 </div>
209 </div> 209 </div>
210 </div> 210 </div>
211 <div class="node"> 211 <div class="node">
225 <option value="stringContains">String Contains</option> 225 <option value="stringContains">String Contains</option>
226 </select> 226 </select>
227 </div> 227 </div>
228 <div class="attribute"> 228 <div class="attribute">
229 <span>Value: </span> 229 <span>Value: </span>
230 <input type="text" ng-model="condition.value" /> 230 <input type="text" ng-model="condition.value" required/>
231 </div> 231 </div>
232 <div class="attribute"> 232 <div class="attribute">
233 <span>Jump To On Pass: </span> 233 <span>Jump To On Pass: </span>
234 <select ng-model="condition.jumpToOnPass"> 234 <select ng-model="condition.jumpToOnPass">
235 <option value="">None</option> 235 <option value="">None</option>
268 <option value="youtube">YouTube</option> 268 <option value="youtube">YouTube</option>
269 </select> 269 </select>
270 </div> 270 </div>
271 <div class="attribute"> 271 <div class="attribute">
272 <span>Unique Survey Entry ID:</span> 272 <span>Unique Survey Entry ID:</span>
273 <input type="text" ng-model="opt.id" /> 273 <input type="text" ng-model="opt.id" required/>
274 </div> 274 </div>
275 <div class="attribute"> 275 <div class="attribute">
276 <span>Entry Name:</span> 276 <span>Entry Name:</span>
277 <input type="text" ng-model="opt.name" /> 277 <input type="text" ng-model="opt.name" />
278 </div> 278 </div>
328 <div class="attribute"> 328 <div class="attribute">
329 <button type="button" class="btn btn-default" ng-click="removeOption(option);">Remove</button> 329 <button type="button" class="btn btn-default" ng-click="removeOption(option);">Remove</button>
330 </div> 330 </div>
331 <div class="attribute"> 331 <div class="attribute">
332 <span>Name: </span> 332 <span>Name: </span>
333 <input type="text" ng-model="option.name" /> 333 <input type="text" ng-model="option.name" required/>
334 </div> 334 </div>
335 <div class="attribute"> 335 <div class="attribute">
336 <span>Displayed Text: </span> 336 <span>Displayed Text: </span>
337 <input type="text" ng-model="option.text" /> 337 <input type="text" ng-model="option.text" required/>
338 </div> 338 </div>
339 </div> 339 </div>
340 </div> 340 </div>
341 </div> 341 </div>
342 <div class="node"> 342 <div class="node">
356 <option value="stringContains">String Contains</option> 356 <option value="stringContains">String Contains</option>
357 </select> 357 </select>
358 </div> 358 </div>
359 <div class="attribute"> 359 <div class="attribute">
360 <span>Value: </span> 360 <span>Value: </span>
361 <input type="text" ng-model="condition.value" /> 361 <input type="text" ng-model="condition.value" required/>
362 </div> 362 </div>
363 <div class="attribute"> 363 <div class="attribute">
364 <span>Jump To On Pass: </span> 364 <span>Jump To On Pass: </span>
365 <select ng-model="condition.jumpToOnPass"> 365 <select ng-model="condition.jumpToOnPass">
366 <option value="">None</option> 366 <option value="">None</option>
434 <h2>Page</h2> 434 <h2>Page</h2>
435 <button type="button" class="btn btn-danger" ng-click="removePage(page)">Remove Page</button> 435 <button type="button" class="btn btn-danger" ng-click="removePage(page)">Remove Page</button>
436 <div class="attributes"> 436 <div class="attributes">
437 <div class="attribute"> 437 <div class="attribute">
438 <span>Unique ID: </span> 438 <span>Unique ID: </span>
439 <input type="text" ng-model="page.id" /> 439 <input type="text" ng-model="page.id" required/>
440 </div> 440 </div>
441 <div class="attribute"> 441 <div class="attribute">
442 <span>Fragment common-root URL: </span> 442 <span>Fragment common-root URL: </span>
443 <input type="text" ng-model="page.hostURL" /> 443 <input type="text" ng-model="page.hostURL" />
444 </div> 444 </div>
446 <span>Randomise Fragment Order: </span> 446 <span>Randomise Fragment Order: </span>
447 <input type="checkbox" ng-model="page.randomiseOrder" /> 447 <input type="checkbox" ng-model="page.randomiseOrder" />
448 </div> 448 </div>
449 <div class="attribute"> 449 <div class="attribute">
450 <span>Repeat Page N-times: </span> 450 <span>Repeat Page N-times: </span>
451 <input type="number" ng-model="page.repeatCount" /> 451 <input type="number" ng-model="page.repeatCount" value="0" step="1" />
452 </div> 452 </div>
453 <div class="attribute"> 453 <div class="attribute">
454 <span>Loop audio: </span> 454 <span>Loop audio: </span>
455 <input type="checkbox" ng-model="page.loop" /> 455 <input type="checkbox" ng-model="page.loop" />
456 </div> 456 </div>
549 <option value="youtube">YouTube</option> 549 <option value="youtube">YouTube</option>
550 </select> 550 </select>
551 </div> 551 </div>
552 <div class="attribute"> 552 <div class="attribute">
553 <span>Unique Survey Entry ID:</span> 553 <span>Unique Survey Entry ID:</span>
554 <input type="text" ng-model="opt.id" /> 554 <input type="text" ng-model="opt.id" required/>
555 </div> 555 </div>
556 <div class="attribute"> 556 <div class="attribute">
557 <span>Entry Name:</span> 557 <span>Entry Name:</span>
558 <input type="text" ng-model="opt.name" /> 558 <input type="text" ng-model="opt.name" />
559 </div> 559 </div>
609 <div class="attribute"> 609 <div class="attribute">
610 <button type="button" class="btn btn-default" ng-click="removeOption(option);">Remove</button> 610 <button type="button" class="btn btn-default" ng-click="removeOption(option);">Remove</button>
611 </div> 611 </div>
612 <div class="attribute"> 612 <div class="attribute">
613 <span>Name: </span> 613 <span>Name: </span>
614 <input type="text" ng-model="option.name" /> 614 <input type="text" ng-model="option.name" required/>
615 </div> 615 </div>
616 <div class="attribute"> 616 <div class="attribute">
617 <span>Displayed Text: </span> 617 <span>Displayed Text: </span>
618 <input type="text" ng-model="option.text" /> 618 <input type="text" ng-model="option.text" required/>
619 </div> 619 </div>
620 </div> 620 </div>
621 </div> 621 </div>
622 </div> 622 </div>
623 <div class="node"> 623 <div class="node">
637 <option value="stringContains">String Contains</option> 637 <option value="stringContains">String Contains</option>
638 </select> 638 </select>
639 </div> 639 </div>
640 <div class="attribute"> 640 <div class="attribute">
641 <span>Value: </span> 641 <span>Value: </span>
642 <input type="text" ng-model="condition.value" /> 642 <input type="text" ng-model="condition.value" required/>
643 </div> 643 </div>
644 <div class="attribute"> 644 <div class="attribute">
645 <span>Jump To On Pass: </span> 645 <span>Jump To On Pass: </span>
646 <select ng-model="condition.jumpToOnPass"> 646 <select ng-model="condition.jumpToOnPass">
647 <option value="">None</option> 647 <option value="">None</option>
680 <option value="youtube">YouTube</option> 680 <option value="youtube">YouTube</option>
681 </select> 681 </select>
682 </div> 682 </div>
683 <div class="attribute"> 683 <div class="attribute">
684 <span>Unique Survey Entry ID:</span> 684 <span>Unique Survey Entry ID:</span>
685 <input type="text" ng-model="opt.id" /> 685 <input type="text" ng-model="opt.id" required />
686 </div> 686 </div>
687 <div class="attribute"> 687 <div class="attribute">
688 <span>Entry Name:</span> 688 <span>Entry Name:</span>
689 <input type="text" ng-model="opt.name" /> 689 <input type="text" ng-model="opt.name" />
690 </div> 690 </div>
740 <div class="attribute"> 740 <div class="attribute">
741 <button type="button" class="btn btn-default" ng-click="removeOption(option);">Remove</button> 741 <button type="button" class="btn btn-default" ng-click="removeOption(option);">Remove</button>
742 </div> 742 </div>
743 <div class="attribute"> 743 <div class="attribute">
744 <span>Name: </span> 744 <span>Name: </span>
745 <input type="text" ng-model="option.name" /> 745 <input type="text" ng-model="option.name" required/>
746 </div> 746 </div>
747 <div class="attribute"> 747 <div class="attribute">
748 <span>Displayed Text: </span> 748 <span>Displayed Text: </span>
749 <input type="text" ng-model="option.text" /> 749 <input type="text" ng-model="option.text" required/>
750 </div> 750 </div>
751 </div> 751 </div>
752 </div> 752 </div>
753 </div> 753 </div>
754 <div class="node"> 754 <div class="node">
768 <option value="stringContains">String Contains</option> 768 <option value="stringContains">String Contains</option>
769 </select> 769 </select>
770 </div> 770 </div>
771 <div class="attribute"> 771 <div class="attribute">
772 <span>Value: </span> 772 <span>Value: </span>
773 <input type="text" ng-model="condition.value" /> 773 <input type="text" ng-model="condition.value" required/>
774 </div> 774 </div>
775 <div class="attribute"> 775 <div class="attribute">
776 <span>Jump To On Pass: </span> 776 <span>Jump To On Pass: </span>
777 <select ng-model="condition.jumpToOnPass"> 777 <select ng-model="condition.jumpToOnPass">
778 <option value="">None</option> 778 <option value="">None</option>
871 <div class="attribute"> 871 <div class="attribute">
872 <button type="button" class="btn btn-danger" ng-click="removeScale(scale);">Remove</button> 872 <button type="button" class="btn btn-danger" ng-click="removeScale(scale);">Remove</button>
873 </div> 873 </div>
874 <div class="attribute"> 874 <div class="attribute">
875 <span>Position: </span> 875 <span>Position: </span>
876 <input type="number" min="0" max="100" ng-model="scale.position" /> 876 <input type="number" min="0" max="100" ng-model="scale.position" required/>
877 </div> 877 </div>
878 <div class="attribute"> 878 <div class="attribute">
879 <span>Text: </span> 879 <span>Text: </span>
880 <input type="text" ng-model="scale.text" /> 880 <input type="text" ng-model="scale.text" required/>
881 </div> 881 </div>
882 </div> 882 </div>
883 </div> 883 </div>
884 </div> 884 </div>
885 </div> 885 </div>
889 <div class="node" ng-repeat="cq in page.commentQuestions"> 889 <div class="node" ng-repeat="cq in page.commentQuestions">
890 <button type="button" class="btn btn-danger" ng-click="removeCommentQuestion(cq)">Remove Comment Question</button> 890 <button type="button" class="btn btn-danger" ng-click="removeCommentQuestion(cq)">Remove Comment Question</button>
891 <div class="attributes"> 891 <div class="attributes">
892 <div class="attribute"> 892 <div class="attribute">
893 <span>Unique ID:</span> 893 <span>Unique ID:</span>
894 <input type="text" ng-model="cq.id" /> 894 <input type="text" ng-model="cq.id" required/>
895 </div> 895 </div>
896 <div class="attribute"> 896 <div class="attribute">
897 <span>Common Name:</span> 897 <span>Common Name:</span>
898 <input type="text" ng-model="cq.name" /> 898 <input type="text" ng-model="cq.name" />
899 </div> 899 </div>
925 <div class="attribute"> 925 <div class="attribute">
926 <button type="button" class="btn btn-danger" ng-click="removeCommentQuestionOption(cq,option)">Remove</button> 926 <button type="button" class="btn btn-danger" ng-click="removeCommentQuestionOption(cq,option)">Remove</button>
927 </div> 927 </div>
928 <div class="attribute"> 928 <div class="attribute">
929 <span>Name: </span> 929 <span>Name: </span>
930 <input type="text" ng-model="option.name" /> 930 <input type="text" ng-model="option.name" required/>
931 </div> 931 </div>
932 <div class="attribute"> 932 <div class="attribute">
933 <span>Display Text: </span> 933 <span>Display Text: </span>
934 <input type="text" ng-model="option.text" /> 934 <input type="text" ng-model="option.text" required/>
935 </div> 935 </div>
936 </div> 936 </div>
937 </div> 937 </div>
938 </div> 938 </div>
939 </div> 939 </div>
943 <h3>Audio Fragment</h3> 943 <h3>Audio Fragment</h3>
944 <button type="button" class="btn btn-danger" ng-click="removeAudioElement(fragment)">Remove Fragment</button> 944 <button type="button" class="btn btn-danger" ng-click="removeAudioElement(fragment)">Remove Fragment</button>
945 <div class="attributes"> 945 <div class="attributes">
946 <div class="attribute"> 946 <div class="attribute">
947 <span>Unique ID: </span> 947 <span>Unique ID: </span>
948 <input type="text" ng-model="fragment.id" /> 948 <input type="text" ng-model="fragment.id" required/>
949 </div> 949 </div>
950 <div class="attribute"> 950 <div class="attribute">
951 <span>URL: </span> 951 <span>URL: </span>
952 <input type="text" ng-model="fragment.url" /> 952 <input type="text" ng-model="fragment.url" required/>
953 <span>Full URL: </span><span style="font-weight=600">{{page.hostURL}}{{fragment.url}}</span> 953 <span>Full URL: </span><span style="font-weight=600">{{page.hostURL}}{{fragment.url}}</span>
954 </div> 954 </div>
955 <div class="attribute"> 955 <div class="attribute">
956 <span>Fragment Gain (dB): </span> 956 <span>Fragment Gain (dB): </span>
957 <input type="number" ng-model="fragment.gain" /> 957 <input type="number" ng-model="fragment.gain" />