lib/features/src/questions/questionnaire/questionnaire.pipes.ts
Name | asAnswerTo |
Async transform | |||||||||
transform(answer, question: Question)
|
|||||||||
Parameters :
Returns :
Promise<QuestionOptionConfig | >
|
Async transform | |||||||||
transform(answer, id: string)
|
|||||||||
Parameters :
Returns :
Promise<QuestionOptionConfig | >
|
Async transform | |||||||||
transform(answer, q: Question | string)
|
|||||||||
Parameters :
Returns :
Promise<QuestionOptionConfig | >
|
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
}
}