import { Component, OnInit, OnDestroy } from '@angular/core'; import { CommonModule } from '@angular/common'; import { Subject, takeUntil } from 'rxjs'; import { TestProgressService } from '../../services/test-progress.service'; import { ArLoggerService } from '../../services/ar-logger.service'; import { RotationSpeedAssessmentComponent } from './assessments/rotation-speed-assessment/rotation-speed-assessment.component'; import { ErgonomicAssessmentComponent } from './assessments/ergonomic-assessment/ergonomic-assessment.component'; import { TextLegibilityAssessmentComponent } from './assessments/text-legibility-assessment/text-legibility-assessment.component'; import { ScaleReferenceAssessmentComponent } from './assessments/scale-reference-assessment/scale-reference-assessment.component'; import { SpatialPositionAssessmentComponent } from './assessments/spatial-position-assessment/spatial-position-assessment.component'; import { DemographicsAssessmentComponent } from './assessments/demographics-assessment/demographics-assessment.component'; import { FirstInputAssessmentComponent } from './assessments/first-input-assesment/first-input-assesment.component'; @Component({ selector: 'app-test-suite', standalone: true, imports: [ CommonModule, FirstInputAssessmentComponent, RotationSpeedAssessmentComponent, ErgonomicAssessmentComponent, TextLegibilityAssessmentComponent, ScaleReferenceAssessmentComponent, SpatialPositionAssessmentComponent, DemographicsAssessmentComponent ], templateUrl: './test-suite.component.html', styleUrls: ['./test-suite.component.css'] }) export class TestSuiteComponent implements OnInit, OnDestroy { currentTest = 1; totalTests = 7; progress = 14.3; status = 'Ready to begin assessments'; private destroy$ = new Subject(); constructor( private progressService: TestProgressService, private logger: ArLoggerService ) {} ngOnInit(): void { this.progressService.currentTest$ .pipe(takeUntil(this.destroy$)) .subscribe(test => { this.currentTest = test; this.logger.setCurrentTest(test); }); this.progressService.progress$ .pipe(takeUntil(this.destroy$)) .subscribe(progress => { this.progress = progress; }); this.logger.status$ .pipe(takeUntil(this.destroy$)) .subscribe(status => { this.status = status; }); this.totalTests = this.progressService.getTotalTests(); this.logger.updateStatus('Test suite initialized - Assessment 1 ready'); } ngOnDestroy(): void { this.destroy$.next(); this.destroy$.complete(); } onTestComplete(): void { this.progressService.nextTest(); } redoTest(testNumber: number): void { this.progressService.goToTest(testNumber); } }