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); | ||
|  |   } | ||
|  | } |