File

lib/features/src/questions/questionnaire/questionnaire.pipes.ts

Metadata

Methods

Async transform
transform(answer, question: Question)
Parameters :
Name Type Optional
answer No
question Question No
Async transform
transform(answer, id: string)
Parameters :
Name Type Optional
answer No
id string No
Async transform
transform(answer, q: Question | string)
Parameters :
Name Type Optional
answer No
q Question | string No
import 	{ 
			Pipe, 
			PipeTransform,
		}								from '@angular/core'

import	{	
			Question,				
			QuestionOptionConfig
		}								from '@rcc/core'

import	{	
			Questionnaire 
		}								from './questionnaire.service'


@Pipe({
	name: 'id2Question'
})
export class Id2QuestionPipe implements PipeTransform {

	constructor(private questionnaire: Questionnaire){}

	transform(id: string): Promise<Question> {		
		return this.questionnaire.get(id)
	}
}

@Pipe({
	name: 'labeledOptions'
})
export class LabeledOptionsPipe implements PipeTransform {

	transform(question: Question): QuestionOptionConfig[] {
		if(!question.options) return []
		const options_with_labels = question.options.filter( option => option.meaning || option.translations)
		if(options_with_labels.length == 0) return question.options

		return 	options_with_labels
	}
}


@Pipe({
	name: 'asAnswerTo'
})
export class AsAnswerToPipe implements PipeTransform {


	constructor(private questionnaire: Questionnaire){}


	async transform(answer: unknown, question: Question)	: Promise<QuestionOptionConfig| (typeof answer)>
	async transform(answer: unknown, id: string)			: Promise<QuestionOptionConfig| (typeof answer)>
	async transform(answer: unknown, q: Question|string)	: Promise<QuestionOptionConfig| (typeof answer)> {

		const question = 	q instanceof Question
							?	q
							:	await this.questionnaire.get(q)


		if(question.options) return question.options.find( option => option.value == answer)

		return answer
	}
}

results matching ""

    No results matching ""