diff --git a/package.json b/package.json index c19abd4..476a6d0 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "stylelint-scss": "^6.11.0", "typescript": "~5.6.2" }, - "api_version": "v0.0.0-rc.2", + "api_version": "v0.0.0-rc6", "volta": { "node": "22.13.1" } diff --git a/src/app/app.routes.ts b/src/app/app.routes.ts index df958e6..10343ca 100644 --- a/src/app/app.routes.ts +++ b/src/app/app.routes.ts @@ -1,4 +1,6 @@ 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 new file mode 100644 index 0000000..2f427c7 --- /dev/null +++ b/src/app/views/admin-overview/admin-overview.component.html @@ -0,0 +1,41 @@ +@if (authService.$user|async; as user) { + +
+ + Search + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + +
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 new file mode 100644 index 0000000..1e967d1 --- /dev/null +++ b/src/app/views/admin-overview/admin-overview.component.scss @@ -0,0 +1,3 @@ +.ban-column{ + 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 new file mode 100644 index 0000000..0598ac3 --- /dev/null +++ b/src/app/views/admin-overview/admin-overview.component.ts @@ -0,0 +1,68 @@ +import {AsyncPipe} from '@angular/common'; +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 {MatIcon} from '@angular/material/icon'; +import {MatInput} from '@angular/material/input'; +import {MatTableModule} from '@angular/material/table'; +import {AuthService} from '@core/auth/auth.service'; +import UserData from '@core/auth/UserData'; +import {AdministratablePlayer, AdminService, PlayerFilter} from '@core/server'; + +@Component({ + selector: 'app-admin-overview', + templateUrl: './admin-overview.component.html', + styleUrls: ['./admin-overview.component.scss'], + standalone: true, + 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, protected authService: AuthService) { + } + + ngOnInit(): void { + this.authService.$user.subscribe((user) => { + if (user != undefined) { + return this.fetchPlayers(); + } + }); + } + + fetchPlayers(): void { + const filter: PlayerFilter = { + page: 0, + pageSize: 32, + order: PlayerFilter.OrderEnum.Ascending, + username: this.searchQuery, + sortBy: 'username' + }; + + this.adminService.getAllPlayers(filter).subscribe( + (players) => { + this.userList = players; + }, + (error) => { + console.error('Error fetching players:', error); + } + ); + } + + banPlayer(user: UserData): void { + console.log(`Banning user: ${user.username}`); + //implement banning logic + } + + onSearch(): void { + this.fetchPlayers(); + } + + resetFilter(): void { + this.searchQuery = ''; + this.fetchPlayers(); + } +} diff --git a/src/app/views/dashboard/dashboard.component.html b/src/app/views/dashboard/dashboard.component.html index e0c966a..126ec50 100644 --- a/src/app/views/dashboard/dashboard.component.html +++ b/src/app/views/dashboard/dashboard.component.html @@ -1,3 +1,3 @@
-

Lorem ipsum dolor sit amet consectetur, adipisicing elit. Facere illo animi quidem repellat perspiciatis, excepturi amet corrupti ipsa sit consequuntur placeat ratione saepe velit asperiores suscipit esse quod minima exercitationem minus, alias laudantium inventore! Beatae cum nobis error suscipit cupiditate, praesentium itaque ut ipsa iusto in doloribus unde quisquam consequuntur.

+
diff --git a/src/app/views/dashboard/dashboard.component.ts b/src/app/views/dashboard/dashboard.component.ts index 4653ae7..1638432 100644 --- a/src/app/views/dashboard/dashboard.component.ts +++ b/src/app/views/dashboard/dashboard.component.ts @@ -1,8 +1,9 @@ import { Component } from '@angular/core'; +import {AdminOverviewComponent} from '@app/views/admin-overview/admin-overview.component'; @Component({ selector: 'app-dashboard', - imports: [], + imports: [AdminOverviewComponent], templateUrl: './dashboard.component.html', styleUrl: './dashboard.component.scss' })