Mise à jour et ajout de 'components'

This commit is contained in:
Julien Gautier
2023-09-18 22:52:41 +02:00
parent 08dca58ea9
commit 78518e1653
35 changed files with 1347 additions and 868 deletions
+90 -17
View File
@@ -1,9 +1,17 @@
import { Component, OnInit, OnDestroy } from '@angular/core';
import { ActivatedRoute, Router, RouterLink } from '@angular/router';
import { CommonModule } from '@angular/common';
import { ActivatedRoute, Router, RouterLink, RouterModule } from '@angular/router';
import { MatButtonModule } from '@angular/material/button';
import { MatCardModule } from '@angular/material/card';
import { MatDialog, MatDialogModule } from '@angular/material/dialog';
import { MatIconModule } from '@angular/material/icon';
import { MatMenuModule } from '@angular/material/menu';
import { MatSnackBar, MatSnackBarHorizontalPosition, MatSnackBarModule, MatSnackBarVerticalPosition } from '@angular/material/snack-bar';
import { Observable, Subscription } from 'rxjs';
import { take } from 'rxjs/operators';
import { JumpTableComponent } from 'src/app/components/shared/helpers-jump';
import { MenuItems, JumpAddDialogComponent, JumpTableComponent } from 'src/app/components/shared';
//import { JumpTableComponent } from 'src/app/components/shared/helpers-jump';
import { Errors, Jump, JumpListConfig, User } from 'src/app/core/models';
import { JumpsService, UserService } from 'src/app/core/services';
import { environment } from 'src/environments/environment';
@@ -11,7 +19,12 @@ import data from 'src/jumps.json';
@Component({
standalone: true,
imports: [JumpTableComponent],
imports: [
CommonModule, RouterModule,
MatButtonModule, MatCardModule, MatIconModule,
MatMenuModule, MatDialogModule, MatSnackBarModule,
JumpTableComponent
],
selector: 'huapp-logbook',
templateUrl: './logbook.component.html',
styleUrls: ['./logbook.component.scss']
@@ -19,22 +32,27 @@ import data from 'src/jumps.json';
export class LogbookComponent implements OnInit, OnDestroy {
private _currentUser: Subscription = new Subscription();
private _data: Subscription = new Subscription();
errors!: Errors;
title = 'Carnet de saut';
listTitle = 'Liste des sauts';
listConfig: JumpListConfig = { type: 'all', filters: {} };
refreshInterval: number = environment.refresh_interval;
isAuthenticated = false;
isUser = true;
canModify = false;
jump: Jump = {} as Jump;
currentUser: User = {} as User;
private _lastjump: Subscription = new Subscription();
public errors!: Errors;
public title = 'Carnet de sauts';
public jump: Jump = {} as Jump;
public lastjump: Jump = {} as Jump;
public currentUser: User = {} as User;
public listConfig: JumpListConfig = { type: 'all', filters: {} };
public refreshInterval: number = environment.refresh_interval;
public isAuthenticated = false;
public isUser = true;
public canModify = false;
public isSubmitting = false;
constructor(
private route: ActivatedRoute,
private router: Router,
private dialog: MatDialog,
private snackBar: MatSnackBar,
private jumpsService: JumpsService,
private userService: UserService
private userService: UserService,
public menuItems: MenuItems
) { }
ngOnInit() {
@@ -51,8 +69,20 @@ export class LogbookComponent implements OnInit, OnDestroy {
this.currentUser = userData;
this.canModify = this.currentUser.role === 'Admin';
});
const lastjump$: Observable<Jump> = this.jumpsService.getLastJump();
this._lastjump = lastjump$.subscribe((jump) => {
this.lastjump = jump;
});
});
}
ngOnDestroy() {
this._data.unsubscribe();
this._currentUser.unsubscribe();
this._lastjump.unsubscribe();
}
importJumps() {
try {
data.forEach((entry) => {
@@ -75,9 +105,52 @@ export class LogbookComponent implements OnInit, OnDestroy {
}
}
ngOnDestroy() {
this._currentUser.unsubscribe();
this._data.unsubscribe();
openAddDialog(): void {
const dialogRef = this.dialog.open(JumpAddDialogComponent, {
width: '60vw',
data: this.jump
});
dialogRef.afterClosed().pipe(take(1))
.subscribe(result => {
if (result != undefined) {
this._onEntry(result);
}
});
}
private _onEntry(entry: NonNullable<unknown>): void {
try {
this.isSubmitting = true;
Object.assign(this.jump, entry);
this.jumpsService.save(this.jump)
.pipe(take(1))
.subscribe({
next: (jump) => {
this._openSnackBar(`Le saut n°${jump.numero} a été ajouté !`, 'OK');
this._resetErrors();
//this.runQuery();
},
error: (err) => {
this.errors = err;
this.isSubmitting = false;
}
});
} catch (error) {
console.error(error);
}
}
private _openSnackBar(content: string, title: string) {
this.snackBar.open(content, title, {
horizontalPosition: <MatSnackBarHorizontalPosition>'end',
verticalPosition: <MatSnackBarVerticalPosition>'bottom',
duration: 4000,
});
}
private _resetErrors(): void {
this.errors = { errors: {} };
}
}