mirror of
https://github.com/TomasiDeveloping/PlayerManagement.git
synced 2026-04-16 09:12:20 +00:00
68 lines
2.1 KiB
TypeScript
68 lines
2.1 KiB
TypeScript
import {Component, inject, Input, OnInit} from '@angular/core';
|
|
import {NgbActiveModal} from "@ng-bootstrap/ng-bootstrap";
|
|
import {PlayerService} from "../../services/player.service";
|
|
import {PlayerModel} from "../../models/player.model";
|
|
|
|
@Component({
|
|
selector: 'app-zombie-siege-participants-modal',
|
|
templateUrl: './zombie-siege-participants-modal.component.html',
|
|
styleUrl: './zombie-siege-participants-modal.component.css',
|
|
standalone: false
|
|
})
|
|
export class ZombieSiegeParticipantsModalComponent implements OnInit {
|
|
|
|
private readonly _playerService: PlayerService = inject(PlayerService);
|
|
|
|
public activeModal: NgbActiveModal = inject(NgbActiveModal);
|
|
public playerParticipated: { playerId: string, playerName: string, survivedWaves: number; }[] = [];
|
|
public waves: number[] = [0,1,2,3,4,5,6,7,8,9,10, 11,12,13,14,15,16,17,18,19,20];
|
|
public isUpdate: boolean = false;
|
|
|
|
@Input() players: { playerId: string, playerName: string, survivedWaves: number; }[] | undefined;
|
|
@Input({required: true}) allianceId!: string;
|
|
playerSearch: string = '';
|
|
|
|
get filteredPlayers() {
|
|
const q = this.playerSearch.trim().toLowerCase();
|
|
if (!q) return this.playerParticipated;
|
|
|
|
return this.playerParticipated.filter(p =>
|
|
(p.playerName ?? '').toLowerCase().includes(q)
|
|
);
|
|
}
|
|
|
|
|
|
ngOnInit() {
|
|
if (this.players) {
|
|
this.playerParticipated = [...this.players];
|
|
this.isUpdate = true;
|
|
} else {
|
|
this.getPlayers();
|
|
this.isUpdate = false;
|
|
}
|
|
}
|
|
|
|
getPlayers() {
|
|
this._playerService.getAlliancePlayer(this.allianceId).subscribe({
|
|
next: ((response) => {
|
|
if (response) {
|
|
response.forEach((player: PlayerModel) => {
|
|
this.playerParticipated.push({playerId: player.id, playerName: player.playerName, survivedWaves: 0})
|
|
});
|
|
this.playerParticipated.sort((a, b) => a.playerName.localeCompare(b.playerName));
|
|
}
|
|
})
|
|
});
|
|
}
|
|
|
|
onPerfectToggle(event: Event, player: any) {
|
|
const checked = (event.target as HTMLInputElement).checked;
|
|
|
|
if (checked) {
|
|
player.survivedWaves = 20;
|
|
} else {
|
|
player.survivedWaves = 0;
|
|
}
|
|
}
|
|
}
|