79 lines
2.5 KiB
TypeScript
79 lines
2.5 KiB
TypeScript
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<string> = ['username', 'actions', 'banned'];
|
|
usersDataSource: MatTableDataSource<AdministratablePlayer> = new MatTableDataSource<AdministratablePlayer>([]);
|
|
|
|
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<AdministratablePlayer>(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('');
|
|
}
|
|
|
|
}
|