123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- import { Component, OnInit } from '@angular/core';
- import {StatusService} from '../../services/status.service';
- import {SiteViewModel} from '../../view-models/site.view-model';
- import {HostStatusViewModel} from '../../view-models/host-status.view-model';
- import {StatusEnumViewModel} from '../../view-models/status-enum.view-model';
-
- @Component({
- selector: 'app-status',
- templateUrl: './status.component.html',
- styleUrls: [ './status.component.css' ]
- })
- export class StatusComponent implements OnInit {
- hostsStatus: SiteViewModel[] = [];
- promise = null;
-
- constructor(private statusService: StatusService) { }
-
- ngOnInit() {
- this.getStatus();
- }
-
- getStatus(): void {
- this.promise = this.statusService.getHosts()
- .subscribe(hostsStatus => {
- const hostsStatusData = hostsStatus.data;
- this.hostsStatus = hostsStatusData.map(site => {
- const siteVm = new SiteViewModel();
- siteVm.name = site.name;
- siteVm.hosts = site.hosts.map(host => {
- const hostVM = new HostStatusViewModel();
- hostVM.ip = host.hostStatus.ip;
- hostVM.hostname = host.hostStatus.hostname;
- hostVM.times = host.hostStatus.times;
-
- let allNull = true;
- let oneNull = false;
- hostVM.timesMin = Number.MAX_SAFE_INTEGER;
- hostVM.timesAvg = 0;
- hostVM.timesMax = 0;
- hostVM.timesLost = 0;
- hostVM.times.forEach(p => {
- if (p == null) {
- ++hostVM.timesLost;
- oneNull = true;
- } else {
- allNull = false;
- if (p < hostVM.timesMin) {
- hostVM.timesMin = p;
- }
- if (p > hostVM.timesMax) {
- hostVM.timesMax = p;
- }
- hostVM.timesAvg += p;
- }
- });
- if (hostVM.times.length - hostVM.timesLost !== 0) {
- hostVM.timesAvg = hostVM.timesAvg / (hostVM.times.length - hostVM.timesLost);
- } else {
- hostVM.timesMin = null;
- hostVM.timesAvg = null;
- hostVM.timesMax = null;
- }
-
- if (allNull) {
- hostVM.status = StatusEnumViewModel.Error;
- } else if (oneNull) {
- hostVM.status = StatusEnumViewModel.Warning;
- } else {
- hostVM.status = StatusEnumViewModel.Ok;
- }
-
- return hostVM;
- });
-
- const status: {[id: number]: number} = {};
- status[StatusEnumViewModel.Ok] = 0;
- status[StatusEnumViewModel.Warning] = 0;
- status[StatusEnumViewModel.Error] = 0;
-
- siteVm.hosts.forEach(host => {
- ++status[host.status];
- });
- if (status[StatusEnumViewModel.Error] === siteVm.hosts.length) {
- siteVm.status = StatusEnumViewModel.Error;
- } else if (status[StatusEnumViewModel.Error] !== 0 || status[StatusEnumViewModel.Warning] !== 0) {
- siteVm.status = StatusEnumViewModel.Warning;
- } else {
- siteVm.status = StatusEnumViewModel.Ok;
- }
-
- return siteVm;
- });
- });
- }
-
- onclick(): void {
- this.getStatus();
- }
- }
|