2025-04-06 11:03:59 +00:00
|
|
|
import {Component} from '@angular/core';
|
2025-04-06 15:27:22 +00:00
|
|
|
import {ScrollService} from '../scroll/scroll.service';
|
2025-04-11 12:48:13 +00:00
|
|
|
import {BASE_PATH, Player, TeamService} from '../../api';
|
2025-04-08 19:45:44 +00:00
|
|
|
import {CommonModule, NgOptimizedImage} from '@angular/common';
|
|
|
|
|
import {HeaderComponent} from '../header/header.component';
|
2025-04-08 20:23:37 +00:00
|
|
|
import {CookieService} from 'ngx-cookie-service';
|
2025-04-10 00:08:27 +00:00
|
|
|
import {map, Observable, shareReplay} from 'rxjs';
|
2025-04-06 11:03:59 +00:00
|
|
|
|
|
|
|
|
@Component({
|
|
|
|
|
selector: 'app-team',
|
2025-04-08 19:45:44 +00:00
|
|
|
standalone: true,
|
|
|
|
|
imports: [
|
|
|
|
|
CommonModule,
|
|
|
|
|
HeaderComponent,
|
|
|
|
|
NgOptimizedImage
|
|
|
|
|
],
|
2025-04-08 20:23:37 +00:00
|
|
|
providers: [
|
|
|
|
|
CookieService,
|
|
|
|
|
{provide: BASE_PATH, useValue: 'http://localhost:8080/'}
|
|
|
|
|
],
|
|
|
|
|
|
2025-04-06 11:03:59 +00:00
|
|
|
templateUrl: './team.component.html',
|
|
|
|
|
styleUrl: './team.component.scss'
|
|
|
|
|
})
|
|
|
|
|
export class TeamComponent {
|
2025-04-10 00:08:27 +00:00
|
|
|
|
|
|
|
|
private teamMembersCache: { [key: string]: Observable<Player[]> } = {};
|
2025-04-08 20:23:37 +00:00
|
|
|
|
2025-04-08 19:45:44 +00:00
|
|
|
constructor(public scrollService: ScrollService, public teamApi: TeamService) {
|
2025-04-10 00:08:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public getTeamMembers(team: string): Observable<Player[]> {
|
|
|
|
|
if (!this.teamMembersCache[team]) {
|
|
|
|
|
this.teamMembersCache[team] = this.teamApi.getTeamMembers(team).pipe(
|
|
|
|
|
map(res => this.removeDuplicates(res)),
|
|
|
|
|
shareReplay(1)
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
return this.teamMembersCache[team];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private removeDuplicates(array: Player[]): Player[] {
|
|
|
|
|
return array.filter((player, index, self) =>
|
|
|
|
|
index === self.findIndex((p) => p.uuid === player.uuid)
|
|
|
|
|
);
|
2025-04-06 15:27:22 +00:00
|
|
|
}
|
2025-04-06 11:03:59 +00:00
|
|
|
}
|