---|qcm| Ajout du component 'QCM'

This commit is contained in:
Julien Gautier
2023-10-06 00:51:45 +02:00
parent a4f7b3e913
commit 5c4d52d62f
7 changed files with 134 additions and 0 deletions
@@ -0,0 +1,24 @@
import { Injectable, } from '@angular/core';
import { ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot } from '@angular/router';
import { Observable } from 'rxjs';
import { Question } from 'src/app/core/models';
import { JumpsService } from 'src/app/core/services';
import { catchError } from 'rxjs/operators';
@Injectable()
export class QCMResolver implements Resolve<Question> {
constructor(
private _jumpsService: JumpsService,
private router: Router
) { }
resolve(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
): Observable<any> {
return this._jumpsService.get(route.params['type'])
.pipe(catchError(() => this.router.navigateByUrl('/')));
}
}
@@ -0,0 +1,22 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { QCMComponent } from './qcm.component';
import { QCMResolver } from './qcm-resolver.service';
import { AuthGuard } from 'src/app/core/services';
const routes: Routes = [
{
path: ':type',
component: QCMComponent,
canActivate: [AuthGuard],
resolve: {
qcm: QCMResolver
}
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class QCMRoutingModule { }
@@ -0,0 +1 @@
<p>qcm works!</p>
@@ -0,0 +1,21 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { QcmComponent } from './qcm.component';
describe('QcmComponent', () => {
let component: QcmComponent;
let fixture: ComponentFixture<QcmComponent>;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [QcmComponent]
});
fixture = TestBed.createComponent(QcmComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
+47
View File
@@ -0,0 +1,47 @@
import { Component, OnInit, OnDestroy } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { CommonModule } from '@angular/common';
import { Observable, Subscription } from 'rxjs';
import { Errors, QCM, User } from 'src/app/core/models';
import { QCMService, UserService } from 'src/app/core/services';
@Component({
selector: 'huapp-qcm',
standalone: true,
imports: [CommonModule],
templateUrl: './qcm.component.html',
styleUrls: ['./qcm.component.scss']
})
export class QCMComponent implements OnInit, OnDestroy {
private _currentUser: Subscription = new Subscription();
private _data: Subscription = new Subscription();
public qcm: QCM = {} as QCM;
public currentUser: User = {} as User;
public canModify = false;
constructor(
private route: ActivatedRoute,
private _qcmService: QCMService,
private _userService: UserService
) { }
ngOnInit() {
// Retreive the prefetched jump
const data$: Observable<any> = this.route.data;
this._data = data$.subscribe((data: { qcm: QCM }) => {
this.qcm = data.qcm;
});
// Load the current user's data
const currentUser$: Observable<User> = this._userService.currentUser;
this._currentUser = currentUser$.subscribe((userData: User) => {
this.currentUser = userData;
this.canModify = userData.role === 'Admin';
});
}
ngOnDestroy() {
this._data.unsubscribe();
this._currentUser.unsubscribe();
}
}
+19
View File
@@ -0,0 +1,19 @@
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { QCMComponent } from './qcm.component';
import { QCMResolver } from './qcm-resolver.service';
import { QCMRoutingModule } from './qcm-routing.module';
@NgModule({
imports: [
QCMRoutingModule,
QCMComponent
],
providers: [
QCMResolver
],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
export class QCMModule { }