import {AsyncPipe} from '@angular/common'; import {Component, OnInit} from '@angular/core'; import {MatFabButton, MatMiniFabButton} from '@angular/material/button'; import {MatFormFieldModule} from '@angular/material/form-field'; import {MatIcon} from '@angular/material/icon'; import {MatInputModule} from '@angular/material/input'; import {MatSelectModule} from '@angular/material/select'; import { MatTableDataSource, 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-dashboard', imports: [ AsyncPipe, MatIcon, MatInputModule, MatTableModule, MatFormFieldModule, MatMiniFabButton, MatFabButton, MatSelectModule ], templateUrl: './dashboard.component.html', styleUrl: './dashboard.component.scss' }) export class DashboardComponent implements OnInit { displayedColumns: Array = ['username', 'actions', 'banned']; usersDataSource: MatTableDataSource = new MatTableDataSource([]); constructor(private adminService: AdminService, protected authService: AuthService) { } ngOnInit(): void { this.authService.$user.subscribe((user) => { if (user != undefined) { return this.fetchPlayers(''); } }); } fetchPlayers(querry: string): void { const filter: PlayerFilter = { page: 0, pageSize: 32, order: PlayerFilter.OrderEnum.Ascending, username: querry, sortBy: 'username' }; this.adminService.getAllPlayers(filter).subscribe( (players) => { this.usersDataSource = new MatTableDataSource(players); }, (error) => { console.error('Error fetching players:', error); } ); } banPlayer(user: UserData): void { console.log(`Banning user: ${user.username}`); this.adminService.banPlayer(user.id).subscribe(()=>{}); this.fetchPlayers(''); } onSearch(searchbar: HTMLInputElement): void { this.fetchPlayers(searchbar.value); } resetFilter(searchbar: HTMLInputElement): void { searchbar.value = ''; this.fetchPlayers(''); } }