Administration/src/app/views/dashboard/dashboard.component.ts

80 lines
2.4 KiB
TypeScript
Raw Normal View History

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';
2025-02-02 19:59:34 +01:00
@Component({
selector: 'app-dashboard',
imports: [
AsyncPipe,
MatIcon,
MatInputModule,
MatTableModule,
MatFormFieldModule,
MatMiniFabButton,
MatFabButton,
MatSelectModule
],
2025-02-02 19:59:34 +01:00
templateUrl: './dashboard.component.html',
styleUrl: './dashboard.component.scss'
})
export class DashboardComponent implements OnInit {
2025-03-12 12:48:28 +01:00
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}`);
2025-03-12 12:48:28 +01:00
this.adminService.banPlayer(user.id);
this.fetchPlayers('');
}
onSearch(searchbar: HTMLInputElement): void {
this.fetchPlayers(searchbar.value);
}
resetFilter(searchbar: HTMLInputElement): void {
searchbar.value = '';
this.fetchPlayers('');
}
2025-02-02 19:59:34 +01:00
}