BachelorarbeitUmfrage/src/app/components/test-suite/test-suite.component.ts

80 lines
2.8 KiB
TypeScript

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<void>();
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);
}
}