connect-admin/app/pages/stats/stats.component.ts

94 lines
3.1 KiB
TypeScript

import {Component, OnInit} from "@angular/core";
import {HelpContentService} from "../../services/help-content.service";
import {CommunityStatistics} from "../../domain/statistics-classes";
import {ActivatedRoute} from "@angular/router";
import {EnvProperties} from "../../openaireLibrary/utils/properties/env-properties";
import { Community } from '../../domain/community';
@Component({
selector: 'stats',
templateUrl: 'stats.component.html'
})
export class StatsComponent implements OnInit {
errorMessage: string;
loadingMessage: string;
communities: Community[] = [];
selectedCommunityPid: string;
stats: CommunityStatistics = null;
tableNames: string[] = [];
public properties: EnvProperties = null;
constructor(private contentService: HelpContentService,
private route: ActivatedRoute) {}
ngOnInit() {
this.route.data
.subscribe((data: { envSpecific: EnvProperties }) => {
this.properties = data.envSpecific;
this.getCommunities();
},
error => console.log(`E R R O R!!`)
);
}
getCommunities() {
this.loadingMessage = 'Retrieving communities';
this.contentService.getCommunities(this.properties.adminToolsAPIURL).subscribe(
/* this.contentService.getCommunities('http://duffy.di.uoa.gr:8080/uoa-admin-tools/').subscribe(*/
comms => {
this.communities = comms;
},
error => {
this.loadingMessage = '';
this.errorMessage = 'Failed to retrieve information on your communities!';
console.log(error);
},
() => {
console.log(`I have communities`);
this.loadingMessage = '';
this.selectedCommunityPid = this.communities[0].pid;
this.getStatistics();
}
);
}
getStatistics() {
this.loadingMessage = 'Retrieving statistics tables';
this.errorMessage = '';
this.stats = null;
this.tableNames = [];
this.contentService.getStatistics(this.selectedCommunityPid,this.properties.adminToolsAPIURL).subscribe(
stats => this.stats = stats,
error => {
this.loadingMessage = '';
this.errorMessage = 'Failed to retrieve statistics tables for the chosen community!';
console.log(error);
},
() => {
console.log(`I have statistics!`);
this.loadingMessage = '';
for (let key in this.stats.statistics){
this.tableNames.push(key);
}
}
);
}
getStatsOfCommunity(pid: string) {
this.selectedCommunityPid = pid;
this.getStatistics();
}
toggleShow(name: string) {
this.stats.statistics[name].show = !this.stats.statistics[name].show;
}
toggleShowInDashboard(name: string) {
this.stats.statistics[name].showInDashboard = !this.stats.statistics[name].showInDashboard;
}
}