diff --git a/src/app/app.routes.ts b/src/app/app.routes.ts index df958e6..16729e5 100644 --- a/src/app/app.routes.ts +++ b/src/app/app.routes.ts @@ -1,4 +1,8 @@ import { Routes } from '@angular/router'; import { DashboardComponent } from '@app/views/dashboard/dashboard.component'; -export const routes: Routes = [{ path: '', component: DashboardComponent, title: 'Home' }]; +export const routes: Routes = [ + { path: '', component: DashboardComponent, title: 'Player Overview'} +]; + + diff --git a/src/app/views/admin-overview/admin-overview.component.html b/src/app/views/admin-overview/admin-overview.component.html index 2b9fc3e..3c2f1b1 100644 --- a/src/app/views/admin-overview/admin-overview.component.html +++ b/src/app/views/admin-overview/admin-overview.component.html @@ -1,23 +1,41 @@ -
- +@if (authService.$user|async; as user) { - - - - +
+ + Search + + - -
- - + - - - - - - -
Username {{ user.username }} Ban - -
-
\ No newline at end of file + + + +
+ + + + + + + + + + + + + + + + + + +
Username {{ user.username }} Ban + +
+
+} @else { +

Welcome to the Admin Page!

+} diff --git a/src/app/views/admin-overview/admin-overview.component.scss b/src/app/views/admin-overview/admin-overview.component.scss index e69de29..f6cfbcf 100644 --- a/src/app/views/admin-overview/admin-overview.component.scss +++ b/src/app/views/admin-overview/admin-overview.component.scss @@ -0,0 +1,3 @@ +.banColumn{ + padding-right: 0.8rem; +} \ No newline at end of file diff --git a/src/app/views/admin-overview/admin-overview.component.ts b/src/app/views/admin-overview/admin-overview.component.ts index 7be731c..adde5cd 100644 --- a/src/app/views/admin-overview/admin-overview.component.ts +++ b/src/app/views/admin-overview/admin-overview.component.ts @@ -1,24 +1,36 @@ -import { Component, OnInit } from '@angular/core'; -import { MatButtonModule } from '@angular/material/button'; -import { MatTableModule } from '@angular/material/table'; +import {Component, OnInit} from '@angular/core'; +import {FormsModule} from '@angular/forms'; +import {MatButtonModule} from '@angular/material/button'; +import {MatFormField, MatLabel} from '@angular/material/form-field'; +import {MatInput} from '@angular/material/input'; +import {MatTableModule} from '@angular/material/table'; import UserData from '@core/auth/UserData'; import {AdministratablePlayer, AdminService, PlayerFilter} from '@core/server'; +import {AsyncPipe} from '@angular/common'; +import {AuthService} from '@core/auth/auth.service'; +import {MatIcon} from '@angular/material/icon'; @Component({ selector: 'app-admin-overview', templateUrl: './admin-overview.component.html', styleUrls: ['./admin-overview.component.scss'], standalone: true, - imports: [MatTableModule, MatButtonModule] + imports: [MatTableModule, MatButtonModule, MatLabel, MatInput, FormsModule, MatFormField, AsyncPipe, MatIcon] }) export class AdminOverviewComponent implements OnInit { displayedColumns: Array = ['username', 'ban']; userList: Array = []; + searchQuery: string = ''; - constructor(private adminService: AdminService) {} + constructor(private adminService: AdminService, protected authService: AuthService) { + } ngOnInit(): void { - this.fetchPlayers(); + this.authService.$user.subscribe((user) => { + if (user != undefined) { + return this.fetchPlayers(); + } + }); } fetchPlayers(): void { @@ -26,9 +38,10 @@ export class AdminOverviewComponent implements OnInit { page: 0, pageSize: 32, order: PlayerFilter.OrderEnum.Ascending, - username: '', + username: this.searchQuery, sortBy: 'username' }; + this.adminService.getAllPlayers(filter).subscribe( (players) => { this.userList = players; @@ -41,5 +54,15 @@ export class AdminOverviewComponent implements OnInit { banPlayer(user: UserData): void { console.log(`Banning user: ${user.username}`); + //implement banning logic + } + + onSearch(): void { + this.fetchPlayers(); + } + + resetFilter(): void { + this.searchQuery = ''; + this.fetchPlayers(); } }