48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								// #docregion
							 | 
						||
| 
								 | 
							
								import { Injectable }       from '@angular/core';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import { QuestionBase }     from './question-base';
							 | 
						||
| 
								 | 
							
								import { TextboxQuestion }  from './question-textbox';
							 | 
						||
| 
								 | 
							
								import { DropdownQuestion } from './question-dropdown';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@Injectable()
							 | 
						||
| 
								 | 
							
								export class QuestionService {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // Todo: get from a remote source of question metadata
							 | 
						||
| 
								 | 
							
								  // Todo: make asynchronous
							 | 
						||
| 
								 | 
							
								  getQuestions() {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    let questions: QuestionBase<any>[] = [
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      new DropdownQuestion({
							 | 
						||
| 
								 | 
							
								        key: 'brave',
							 | 
						||
| 
								 | 
							
								        label: 'Bravery Rating',
							 | 
						||
| 
								 | 
							
								        options: [
							 | 
						||
| 
								 | 
							
								          {key: 'solid',  value: 'Solid'},
							 | 
						||
| 
								 | 
							
								          {key: 'great',  value: 'Great'},
							 | 
						||
| 
								 | 
							
								          {key: 'good',   value: 'Good'},
							 | 
						||
| 
								 | 
							
								          {key: 'unproven', value: 'Unproven'}
							 | 
						||
| 
								 | 
							
								        ],
							 | 
						||
| 
								 | 
							
								        order: 3
							 | 
						||
| 
								 | 
							
								      }),
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      new TextboxQuestion({
							 | 
						||
| 
								 | 
							
								        key: 'firstName',
							 | 
						||
| 
								 | 
							
								        label: 'First name',
							 | 
						||
| 
								 | 
							
								        value: 'Bombasto',
							 | 
						||
| 
								 | 
							
								        required: true,
							 | 
						||
| 
								 | 
							
								        order: 1
							 | 
						||
| 
								 | 
							
								      }),
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      new TextboxQuestion({
							 | 
						||
| 
								 | 
							
								        key: 'emailAddress',
							 | 
						||
| 
								 | 
							
								        label: 'Email',
							 | 
						||
| 
								 | 
							
								        type: 'email',
							 | 
						||
| 
								 | 
							
								        order: 2
							 | 
						||
| 
								 | 
							
								      })
							 | 
						||
| 
								 | 
							
								    ];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return questions.sort((a, b) => a.order - b.order);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 |