diff --git a/src/app/admin/dialog-template/dialog-template.component.html b/src/app/admin/dialog-template/dialog-template.component.html index 40965cb0..0b050c59 100644 --- a/src/app/admin/dialog-template/dialog-template.component.html +++ b/src/app/admin/dialog-template/dialog-template.component.html @@ -5,7 +5,7 @@

Informasjon:

Navn på iterasjon: {{ data.iterationName }}

-

Tidspunk iterasjonen ble lagd: {{ data.timeCreated }}

+

Tidspunktet iterasjonen ble lagd: {{ data.timeCreated }}

Antall (nye) bilder i treningssettet: {{ data.imageCount }}

diff --git a/src/app/admin/error-dialog/error-dialog.component.html b/src/app/admin/error-dialog/error-dialog.component.html new file mode 100644 index 00000000..d68aa4b3 --- /dev/null +++ b/src/app/admin/error-dialog/error-dialog.component.html @@ -0,0 +1,10 @@ +
+
@for (log of logs; track log.time) { +

{{log.date}} {{log.time}} {{ log.level }} {{log.message}}

+
+ }
+

+ +
+ + diff --git a/src/app/admin/error-dialog/error-dialog.component.scss b/src/app/admin/error-dialog/error-dialog.component.scss new file mode 100644 index 00000000..97e85d3e --- /dev/null +++ b/src/app/admin/error-dialog/error-dialog.component.scss @@ -0,0 +1,32 @@ + + .mat-dialog-container { + border-radius: 56px; + width: 698px; + height: 546px; + + display: flex; + align-items: center; + justify-content: center; + overflow-y: auto; + } + + #logMessage { + margin-bottom: 16px; // Add some space below the log messages + p { + font-size: 16px; + margin: 4px 0; + padding: 4px; + background-color: #ffffff; + border-left: 4px solid #2196F3; + } + } + + button { + margin-top: 16px; + background-color: #2196F3; + color: white; + &:hover { + background-color: #1976D2; + } + } + diff --git a/src/app/admin/error-dialog/error-dialog.component.ts b/src/app/admin/error-dialog/error-dialog.component.ts new file mode 100644 index 00000000..1fbcce63 --- /dev/null +++ b/src/app/admin/error-dialog/error-dialog.component.ts @@ -0,0 +1,14 @@ +import { LogData } from '@/app/shared/models/backend-interfaces'; +import { Component, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA } from '@angular/material/dialog'; +@Component({ + selector: 'app-error-dialog', + templateUrl: 'error-dialog.component.html', + styleUrls: ['./error-dialog.component.scss']} +) +export class ErrorLogDialogComponent { + constructor(@Inject(MAT_DIALOG_DATA) public data: LogData[]) {} + + logs = this.data + +} diff --git a/src/app/admin/info-dialog/info-dialog.component.ts b/src/app/admin/info-dialog/info-dialog.component.ts index b8c0d392..fd320b67 100644 --- a/src/app/admin/info-dialog/info-dialog.component.ts +++ b/src/app/admin/info-dialog/info-dialog.component.ts @@ -1,6 +1,8 @@ import { Component } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { DialogTemplateComponent } from './../dialog-template/dialog-template.component'; +import { ErrorLogDialogComponent } from '../error-dialog/error-dialog.component'; +import { LogData } from '@/app/shared/models/backend-interfaces'; @Component({ selector: 'app-info-dialog', @@ -20,4 +22,11 @@ export class InfoDialogComponent { }, }); } + + openErrorLog(logDataArray: LogData[]) { + + this.dialog.open(ErrorLogDialogComponent, { + data: logDataArray, + }); + } } diff --git a/src/app/admin/info/info.component.html b/src/app/admin/info/info.component.html index 65d491be..75f109cb 100644 --- a/src/app/admin/info/info.component.html +++ b/src/app/admin/info/info.component.html @@ -10,6 +10,8 @@

Advarsel!

+

+

diff --git a/src/app/admin/info/info.component.ts b/src/app/admin/info/info.component.ts index 9543f648..6de7973b 100644 --- a/src/app/admin/info/info.component.ts +++ b/src/app/admin/info/info.component.ts @@ -5,7 +5,7 @@ import { MatSnackBar } from '@angular/material/snack-bar'; import { InfoDialogComponent } from './../info-dialog/info-dialog.component'; import { PairingService } from '../../game/services/pairing.service'; import { MatButton } from '@angular/material/button'; -import { StatusData } from '@/app/shared/models/backend-interfaces'; +import { LogData, StatusData } from '@/app/shared/models/backend-interfaces'; @Component({ selector: 'app-info', @@ -39,7 +39,7 @@ export class InfoComponent { this.resetDatasetValues(); this.loginService.revertDataset().subscribe( () => { - this.openSnackBar('Suksess! treningssett tilbakestilles (dette kan ta noen minutter)'); + this.openSnackBar('Suksess! Treningssett tilbakestilles (dette kan ta noen minutter)'); }, () => { msg = this.errorMsg; @@ -160,6 +160,17 @@ export class InfoComponent { ); } + getLogger() { + this.loginService.getLogger().subscribe( + (res: LogData[]) => { + this._dialog.openErrorLog(res) + }, + (error) => { + this.openSnackBar(error); + } + ); + } + openSnackBar(msg = 'suksess!') { this._snackBar.open(msg, 'Lukk', { duration: 6000, diff --git a/src/app/admin/login.service.ts b/src/app/admin/login.service.ts index 4254ee53..005450f2 100644 --- a/src/app/admin/login.service.ts +++ b/src/app/admin/login.service.ts @@ -1,7 +1,7 @@ import { endpoints } from '../shared/models/endpoints'; import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; -import { AuthStatus, StatusData } from '../shared/models/backend-interfaces'; +import { AuthStatus, LogData, StatusData } from '../shared/models/backend-interfaces'; import { Observable } from 'rxjs'; @Injectable({ @@ -93,4 +93,13 @@ export class LoginService { } ); } -} + + getLogger() { + return this.http.get( + `${endpoints.TEKNISKBACKEND}/${endpoints.ADMIN}/${endpoints.LOGGER}`, + { + withCredentials: true, + } + ); + } +} \ No newline at end of file diff --git a/src/app/shared/models/backend-interfaces.ts b/src/app/shared/models/backend-interfaces.ts index f3052066..f1574484 100644 --- a/src/app/shared/models/backend-interfaces.ts +++ b/src/app/shared/models/backend-interfaces.ts @@ -68,3 +68,10 @@ export interface MultiplayerClassifyParams { time_left: number; lang: SupportedLanguages; } + +export interface LogData { + date: string, + time: string, + level: string, + message: string, +} diff --git a/src/app/shared/models/endpoints.ts b/src/app/shared/models/endpoints.ts index 1b03c6f4..3de0fcf2 100644 --- a/src/app/shared/models/endpoints.ts +++ b/src/app/shared/models/endpoints.ts @@ -16,4 +16,5 @@ export const endpoints = { GETSTATUS: 'status', LOGOUT: 'logout', GETEXAMPLEDRAWINGS: 'getExampleDrawings', + LOGGER: 'logging' }; diff --git a/src/main.ts b/src/main.ts index 32171b62..e1ef7d44 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,5 +1,4 @@ import { enableProdMode, importProvidersFrom } from '@angular/core'; - import { environment } from './environments/environment'; import { AppComponent } from './app/app.component'; import { provideAnimations } from '@angular/platform-browser/animations';