import {
NgModule,
Injectable
} from '@angular/core'
import {
Question,
Report,
Schedule,
} from '@rcc/core'
import {
Questionnaire,
QuestionnaireModule
} from '../questions'
import {
DataVisualizationModule,
Dataset,
ReportPreparator
} from '../data-visualization'
@Injectable()
export class QuestionReportPreparator extends ReportPreparator {
constructor(
public questionnaire: Questionnaire
){
super()
}
async prepare(report: Report): Promise<Dataset[]> {
const questions = await this.questionnaire.get(report.questionIds)
return questions.map( question => ({
question,
datapoints: report.entries
.filter( entry => entry.questionId == question.id)
.filter( entry => entry.targetDay )
.filter( entry => entry.answer !== null)
.filter( entry => entry.answer !== undefined)
.map( entry => ({
value: entry.answer,
note: entry.note,
date: entry.targetDay
})
)
}))
}
}
@NgModule({
imports: [
QuestionnaireModule,
DataVisualizationModule.forChild( [QuestionReportPreparator] )
],
providers: [
QuestionReportPreparator,
]
})
export class BasicReportPreparatorModule {}