# All files / src/app/core/navigation/about about.component.ts

93.02% Statements 40/43
62.96% Branches 17/27
83.33% Functions 5/6
92.5% Lines 37/40

Press n or j to go to the next uncovered block, b, p or k for the previous block.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    756x

    6x
    6x

    6x
    6x
    6x

    6x
    6x

    6x

    3x
    3x
    3x
    3x

    3x

    6x
    3x
    3x
    3x
    3x
    3x

    3x
    3x
    3x
    3x
    3x

    6x
    2x

    6x
    3x
    3x
    3x

    3x
    3x
    3x
    3x
    3x

    6x
     import { Component, OnDestroy, OnInit } from '@angular/core';

    import { detect } from 'detect-browser';
    import { BsModalRef } from 'ngx-bootstrap/modal';
    import { Subscription } from 'rxjs';
    import { environment } from '../../../../environments/environment';
    import { UserService } from '../../../shared/api/user.service';
    import { AppConstants } from '../../../shared/constants/app.constants';
    import { Permission } from '../../../shared/models/permissions';
    import { AuthStorageService } from '../../../shared/services/auth-storage.service';
    import { SummaryService } from '../../../shared/services/summary.service';

    @Component({
      selector: 'cd-about',
      template: require('./about.component.html'),
      styles: []
    })
    export class AboutComponent implements OnInit, OnDestroy {
      modalVariables: any;
      versionNumber: string;
      versionHash: string;
      versionName: string;
      subs: Subscription;
      userPermission: Permission;
      projectConstants: typeof AppConstants;
      hostAddr: string;
      copyright: string;

      constructor(
        public modalRef: BsModalRef,
        private summaryService: SummaryService,
        private userService: UserService,
        private authStorageService: AuthStorageService
      ) {
        this.userPermission = this.authStorageService.getPermissions().user;
      }

      ngOnInit() {
        this.copyright = 'Copyright(c) ' + environment.year + ' Ceph contributors.';
        this.projectConstants = AppConstants;
        this.hostAddr = window.location.hostname;
        this.modalVariables = this.setVariables();
        this.subs = this.summaryService.subscribe((summary: any) => {
          if (!summary) {
            return;
          }
          const version = summary.version.replace('ceph version ', '').split(' ');
          this.hostAddr = summary.mgr_host.replace(/(^\w+:|^)\/\//, '').replace(/\/$/, '');
          this.versionNumber = version[0];
          this.versionHash = version[1];
          this.versionName = version.slice(2, version.length).join(' ');
        });
      }

      ngOnDestroy(): void {
        this.subs.unsubscribe();
      }

      setVariables() {
        const project = {} as any;
        project.user = localStorage.getItem('dashboard_username');
        project.role = 'user';
        if (this.userPermission.read) {
          this.userService.get(project.user).subscribe((data: any) => {
            project.role = data.roles;
          });
        }
        const browser = detect();
        project.browserName = browser && browser.name ? browser.name : 'Not detected';
        project.browserVersion = browser && browser.version ? browser.version : 'Not detected';
        project.browserOS = browser && browser.os ? browser.os : 'Not detected';
        return project;
      }
    }