UNPKG

abstruse

Version:
50 lines (39 loc) 1.46 kB
import { Injectable, Provider, EventEmitter } from '@angular/core'; import { SocketService } from './socket.service'; import { ApiService } from './api.service'; import { Subscription } from 'rxjs'; import { filter } from 'rxjs/operators'; @Injectable() export class StatsService { stats: EventEmitter<any>; sub: Subscription; constructor(private socketService: SocketService, private apiService: ApiService) { this.stats = new EventEmitter<any>(); } start(): void { if (!this.sub) { this.sub = this.socketService.outputEvents .pipe(filter(e => e.type === 'memory' || e.type === 'cpu' || e.type === 'containersStats')) .subscribe(e => this.stats.emit(e)); } this.socketService.emit({ type: 'subscribeToStats' }); } stop(): void { this.socketService.emit({ type: 'unsubscribeFromStats' }); } getJobRuns(): Promise<any[]> { return this.apiService.statsJobRuns().toPromise(); } getJobRunsBetween(dateFrom: Date, dateTo: Date): Promise<any[]> { return this.apiService.statsJobRunsBetween(dateFrom.toISOString(), dateTo.toISOString()).toPromise(); } humanizeBytes(bytes: number): string { if (bytes === 0) { return '0 Byte'; } const k = 1024; const sizes: string[] = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB']; const i: number = Math.floor(Math.log(bytes) / Math.log(k)); return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i]; } }