103 lines
3.1 KiB
TypeScript
103 lines
3.1 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';
|
|
import {WarService} from '../services/logs/war.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 warService: WarService,
|
|
private router: Router,
|
|
private route: ActivatedRoute,
|
|
private translate: TranslateService,
|
|
private settingsService: SettingsService) {
|
|
this.settingsService.getLanguage().subscribe((language) => this.translate.setDefaultLang(language));
|
|
}
|
|
|
|
ngOnInit() {
|
|
this.campaignService.getAllCampaigns()
|
|
.filter(campaigns => campaigns.length !== 0)
|
|
.subscribe((campaigns) => {
|
|
this.campaigns = campaigns;
|
|
this.resolveCampaignFromUrl();
|
|
});
|
|
}
|
|
|
|
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') {
|
|
this.switchCampaign({_id: id});
|
|
} else {
|
|
const filteredCampaigns = this.campaigns.filter(c => c._id === id);
|
|
if (filteredCampaigns.length === 1) {
|
|
this.switchCampaign(filteredCampaigns[0]);
|
|
}
|
|
}
|
|
} else if (url.includes('right:war')) {
|
|
const id = idFetchPattern.exec(url)[1];
|
|
this.campaignService.getCampaignByWarId(id).subscribe((campaign) => {
|
|
this.switchCampaign(campaign);
|
|
});
|
|
} else {
|
|
this.switchCampaign(this.campaigns[0]);
|
|
}
|
|
}
|
|
|
|
switchCampaign(campaign) {
|
|
if (campaign._id !== 'all') {
|
|
campaign.wars$ = this.warService.wars$;
|
|
this.warService.getAllWars(campaign._id).subscribe((wars) => {
|
|
this.selectedCampaign = campaign;
|
|
});
|
|
} else {
|
|
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)
|
|
.subscribe((res) => {
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
editCampaign(selectCampaign) {
|
|
this.router.navigate([{outlets: {'right': ['campaign', selectCampaign._id]}}], {relativeTo: this.route});
|
|
}
|
|
}
|