Project

General

Profile

1
import { Component, OnInit } from '@angular/core';
2
import {ActivatedRoute, Router} from '@angular/router';
3
import {AggregationDetails, Aggregations, Repository} from '../../domain/typeScriptClasses';
4
import { RepositoryService } from '../../services/repository.service';
5
import {
6
  loadingAggregationHistory,
7
  loadingAggregationHistoryError,
8
  loadingRepoError,
9
  loadingRepoMessage,
10
  noAggregationHistory
11
} from '../../domain/shared-messages';
12
import {AuthenticationService} from "../../services/authentication.service";
13

    
14
@Component ({
15
  selector: 'app-compatibility-monitor-repo',
16
  templateUrl: 'compatibility-monitor-repo.component.html'
17
})
18

    
19
export class CompatibilityMonitorRepoComponent implements OnInit {
20
  loadingMessage: string;
21
  errorMessage: string;
22
  noAggregations: string;
23

    
24
  repoId: string = '';
25
  repoName: string = '';
26
  repo: Repository;
27

    
28
  latestAggregations: AggregationDetails[] = [];
29

    
30
  constructor(private route: ActivatedRoute,
31
              private router: Router,
32
              private repoService: RepositoryService,
33
              private authService: AuthenticationService) {}
34

    
35
  ngOnInit() {
36
    this.readRepoId();
37
    this.getRepo();
38
  }
39

    
40
  readRepoId() {
41
    this.repoId = this.route.snapshot.paramMap.get('id');
42
    this.repoName = `repository with id \'${this.repoId}\'`;
43
  }
44

    
45
  getRepo(){
46
    if (this.repoId) {
47
      this.loadingMessage = loadingRepoMessage;
48
      this.repoService.getRepositoryById(this.repoId).subscribe(
49
        repo => {
50
          this.repo = repo;
51
        },
52
        error => {
53
          console.log(error);
54
          this.loadingMessage = '';
55
          this.errorMessage = loadingRepoError;
56
        },
57
        () => {
58
          this.loadingMessage = '';
59
          if (this.repo) {
60
            this.repoName = this.repo.officialName;
61
            if ( this.authService.getUserEmail() !== this.repo.registeredBy ) {
62
              this.router.navigateByUrl('/403-forbidden', { skipLocationChange: true });
63
            } else {
64
              this.getLatestAggregationHistory();
65
            }
66
          } else {
67
            this.errorMessage = loadingRepoError;
68
          }
69
        }
70
      );
71
    }
72
  }
73

    
74
  getLatestAggregationHistory() {
75
    this.loadingMessage = loadingAggregationHistory;
76
    this.repoService.getRepositoryAggregations(this.repo.id).subscribe(
77
      aggr => this.latestAggregations = aggr,
78
      error => {
79
        this.loadingMessage = '';
80
        this.errorMessage = loadingAggregationHistoryError;
81
      },
82
      () => {
83
        this.loadingMessage = '';
84
        if ( !this.latestAggregations || (this.latestAggregations.length===0) ) {
85
          this.noAggregations = noAggregationHistory;
86
        }
87
      }
88
    );
89
  }
90

    
91
}
(4-4/17)