95 lines
2.9 KiB
TypeScript
95 lines
2.9 KiB
TypeScript
import {Component, OnInit} from '@angular/core';
|
|
import {Campaign} from '../models/model-interfaces';
|
|
import {CampaignService} from '../services/logs/campaign.service';
|
|
import {ActivatedRoute, Router} from '@angular/router';
|
|
import {TranslateService} from '@ngx-translate/core';
|
|
import {SettingsService} from '../services/settings.service';
|
|
|
|
@Component({
|
|
selector: 'cc-stats',
|
|
templateUrl: './stats.component.html',
|
|
styleUrls: ['./stats.component.css']
|
|
})
|
|
export class StatisticComponent implements OnInit {
|
|
|
|
selectedCampaign: Campaign = {};
|
|
|
|
campaigns: Campaign[] = [];
|
|
|
|
collapsed = false;
|
|
|
|
constructor(private campaignService: CampaignService,
|
|
private router: Router,
|
|
private route: ActivatedRoute,
|
|
private translate: TranslateService,
|
|
private settingsService: SettingsService) {
|
|
this.settingsService.getLanguage().subscribe((language) => this.translate.setDefaultLang(language));
|
|
}
|
|
|
|
ngOnInit() {
|
|
this.campaignService.getAllCampaignsWithWars().subscribe((campaigns) => {
|
|
this.campaigns = campaigns;
|
|
// TODO: next line has to die!
|
|
this.campaignService.campaigns = campaigns;
|
|
this.selectedCampaign = this.resolveCampaignFromUrl();
|
|
this.switchCampaign(this.selectedCampaign);
|
|
});
|
|
}
|
|
|
|
resolveCampaignFromUrl() {
|
|
const url = this.router.url;
|
|
|
|
const idFetchPattern = /right:.*\/(.*)\)$/;
|
|
|
|
if (url.includes('right:overview') || url.includes('right:highscore')) {
|
|
const id = idFetchPattern.exec(url)[1];
|
|
if (id === 'all') {
|
|
return {_id: id}
|
|
}
|
|
const filteredCampaigns = this.campaigns.filter(c => c._id === id);
|
|
if (filteredCampaigns.length === 1) {
|
|
return filteredCampaigns[0];
|
|
}
|
|
}
|
|
if (url.includes('right:war')) {
|
|
const id = idFetchPattern.exec(url)[1];
|
|
const filteredCampaigns = this.campaigns.filter(c => c.wars.filter(war => war._id === id).length > 0);
|
|
if (filteredCampaigns.length === 1) {
|
|
return filteredCampaigns[0];
|
|
}
|
|
}
|
|
return this.campaigns[0]
|
|
}
|
|
|
|
switchCampaign(campaign) {
|
|
this.selectedCampaign = campaign;
|
|
if (campaign._id === 'all' || this.router.url.includes('/overview/all')) {
|
|
setTimeout(_ => {
|
|
window.dispatchEvent(new Event('resize'));
|
|
});
|
|
}
|
|
}
|
|
|
|
toggleCollapse() {
|
|
this.collapsed = !this.collapsed;
|
|
setTimeout(_ => {
|
|
window.dispatchEvent(new Event('resize'));
|
|
});
|
|
}
|
|
|
|
deleteCampaign(campaign) {
|
|
this.translate.get('stats.campaign.manage.delete.confirm', {title: campaign.title}).subscribe((confirmQuestion: string) => {
|
|
if (confirm(confirmQuestion)) {
|
|
this.campaignService.deleteCampaign(campaign._id)
|
|
.subscribe((res) => {
|
|
this.campaigns.splice(this.campaigns.indexOf(campaign), 1);
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
editCampaign(selectCampaign) {
|
|
this.router.navigate([{outlets: {'right': ['campaign', selectCampaign._id]}}], {relativeTo: this.route});
|
|
}
|
|
}
|