import {Component, EventEmitter, Input, Output} from '@angular/core'; import {CampaignPlayer} from '../../models/model-interfaces'; import {PlayerService} from '../../services/logs/player.service'; import {ChartUtils} from '../../utils/chart-utils'; @Component({ selector: 'campaign-player-detail', templateUrl: './campaign-player-detail.component.html', styleUrls: ['./campaign-player-detail.component.css', '../../style/list-entry.css', '../../style/hide-scrollbar.css', '../../style/overview.css'] }) export class CampaignPlayerDetailComponent { @Input() campaignId: string; @Input() playerName: string; @Output() switchTab = new EventEmitter(); campaignPlayer: CampaignPlayer = {campaign: {}, players: []}; sumData: any[] = []; killData: any[] = []; friendlyFireData: any[] = []; vehicleKillData: any[] = []; deathData: any[] = []; respawnData: any[] = []; reviveData: any[] = []; captureData: any[] = []; yAxisKill = 'Kills'; yAxisFriendlyFire = 'FriendlyFire'; yAxisVehicleKill = 'Farzeug-Kills'; yAxisDeath = 'Tode'; yAxisRespawn = 'Respawn'; yAxisRevive = 'Revive'; yAxisCapture = 'Eroberungen'; avgLabel = 'Durchschnitt'; colorScheme = { domain: ['#00ce12'] }; colorSchemeBar = { domain: [ '#2d5a00', '#455600', '#00561f', '#3f3b00', '#003c19', '#083c00' ] }; showRefLines = true; showRefLabels = true; killRefLines = []; vehicleKillRefLines = []; deathRefLines = []; captureRefLines = []; friendlyFireRefLines = []; reviveRefLines = []; respawnRefLines = []; gradient = false; xAxis = true; yAxis = true; legend = false; showXAxisLabel = true; showYAxisLabel = true; autoscale = false; timeline = false; roundDomains = true; totalKills; totalFriendlyFire; totalVehicleKills; totalDeath; totalRespawn; totalRevive; totalCapture; kdRatio = 0; maxKd = 1.7; respawnDeathRatio = 0; maxRespawnDeathRatio = 1; constructor(private playerService: PlayerService) { } ngOnInit() { this.playerService.getCampaignPlayer(this.campaignId, encodeURIComponent(this.playerName)) .subscribe(campaignPlayer => { this.campaignPlayer = campaignPlayer; this.killData = this.assignData(this.yAxisKill, 'kill'); this.vehicleKillData = this.assignData(this.yAxisVehicleKill, 'vehicle'); this.friendlyFireData = this.assignData(this.yAxisFriendlyFire, 'friendlyFire'); this.deathData = this.assignData(this.yAxisDeath, 'death'); this.respawnData = this.assignData(this.yAxisRespawn, 'respawn'); this.reviveData = this.assignData(this.yAxisRevive, 'revive'); this.captureData = this.assignData(this.yAxisCapture, 'flagTouch'); this.kdRatio = parseFloat((this.totalKills / (this.totalDeath === 0 ? 1 : this.totalDeath)).toFixed(2)); if (this.kdRatio > 1) { this.maxKd = this.kdRatio * 1.7; } this.respawnDeathRatio = parseFloat((this.totalRespawn / (this.totalDeath === 0 ? 1 : this.totalDeath)).toFixed(2)); this.sumData = [ { name: this.yAxisKill, value: this.totalKills }, { name: this.yAxisFriendlyFire, value: this.totalFriendlyFire }, { name: this.yAxisVehicleKill, value: this.totalVehicleKills }, { name: this.yAxisDeath, value: this.totalDeath }, { name: this.yAxisRespawn, value: this.totalRespawn }, { name: this.yAxisRevive, value: this.totalRevive }, { name: this.yAxisCapture, value: this.totalCapture } ]; Object.assign(this, [this.sumData, this.killData, this.friendlyFireData, this.vehicleKillData, this.deathData, this.respawnData, this.reviveData, this.captureData]); }); } private assignData(label, field) { const killObj = { name: label, series: [] }; const playerLength = this.campaignPlayer.players.length; let total = 0; for (let i = 0; i < playerLength; i++) { const warDateString = ChartUtils.getShortDateString(this.campaignPlayer.players[i].warId.date); const value = this.campaignPlayer.players[i][field]; killObj.series.push({ name: warDateString, value: value }); total += value; } switch (field) { case 'kill': this.killRefLines.push({value: total / playerLength, name: this.avgLabel}); this.totalKills = total; break; case 'friendlyFire': this.friendlyFireRefLines.push({value: total / playerLength, name: this.avgLabel}); this.totalFriendlyFire = total; break; case 'vehicle': this.vehicleKillRefLines.push({value: total / playerLength, name: this.avgLabel}); this.totalVehicleKills = total; break; case 'death': this.deathRefLines.push({value: total / playerLength, name: this.avgLabel}); this.totalDeath = total; break; case 'respawn': this.respawnRefLines.push({value: total / playerLength, name: this.avgLabel}); this.totalRespawn = total; break; case 'revive': this.reviveRefLines.push({value: total / playerLength, name: this.avgLabel}); this.totalRevive = total; break; case 'flagTouch': this.captureRefLines.push({value: total / playerLength, name: this.avgLabel}); this.totalCapture = total; break; } return [killObj]; } navigateBack() { this.switchTab.emit(0); } }