import {Component, ElementRef, HostListener, OnInit, ViewChild} from '@angular/core'; import {DataSourceService} from '../services/data-source.service'; import {ChronicDiseasesSection, DataCard, OverallAssessmentSectionPrenatalCareAssessmentNS} from 'facade-api'; @Component({ selector: 'app-general-information-bar', templateUrl: './general-information-bar.component.html', styleUrls: ['./general-information-bar.component.scss'] }) export class GeneralInformationBarComponent implements OnInit { @ViewChild('headerContainer') public headerContainer: ElementRef | undefined; public headerInScrollMode = false; public dataCard: DataCard | undefined; public chronicDiseases = 'Nej'; public careLevel = '?'; constructor(private dataSourceService: DataSourceService) { } ngOnInit(): void { this.dataSourceService.dummyDataCards$ .subscribe((dataCards) => { this.dataCard = dataCards[0]; this.chronicDiseases = this.computeSpecialConditions(this.dataCard.chronicDiseasesSection || {}); this.careLevel = this.computeCareLevel(this.dataCard.overallAssessmentSection?.prenatalCareAssessment?.careLevel); }); } private computeCareLevel(carelevel?: OverallAssessmentSectionPrenatalCareAssessmentNS.CareLevelEnum): string { switch (carelevel) { case 'basic': return '1'; case 'extended': return '2'; case 'specialistMultidisciplinaryTeam': return '3'; case 'highRiskPregnancyCare': return '4'; default: return '?'; } } private computeSpecialConditions(conditions: ChronicDiseasesSection): string { return Object.keys(conditions) // tslint:disable-next-line:no-non-null-assertion - it was literally checked in line above! .filter(key => (this.dataCard!.chronicDiseasesSection as any)[key] === 'yes') .map(key => { switch (key) { case 'circulatorySystem': return 'Kredsløbssygdomme'; case 'respitorySystem': return 'Åndedrætssystem'; case 'thyroid': return 'Skjoldbruskkirtel'; case 'diabetes': return 'Diabetes'; default: return ''; } }) .join(', ') || 'Nej'; } @HostListener('window:scroll', ['$event']) // for window scroll events public onScroll($event: Event): void { if (this.headerContainer) { const elemTop = this.headerContainer.nativeElement.getBoundingClientRect().top; this.headerInScrollMode = elemTop <= 0; } } }