80 lines
2.8 KiB
TypeScript
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);
|
|
}
|
|
} |