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 75 76 77 78 79 80 81 82 83 84 85 86 | 101x 101x 101x 101x 101x 101x 355x 355x 355x 355x 356x 356x 356x 356x 2533x 2533x 2903x 2903x 2903x 36x 101x 5x 101x 446x 101x 51x 51x 2x 49x 48x 70x 48x 47x 1x 49x 101x | import { HttpClient } from '@angular/common/http'; import { Injectable, NgZone } from '@angular/core'; import { Router } from '@angular/router'; import * as _ from 'lodash'; import { BehaviorSubject, Subscription } from 'rxjs'; import { ExecutingTask } from '../models/executing-task'; @Injectable({ providedIn: 'root' }) export class SummaryService { // Observable sources private summaryDataSource = new BehaviorSubject(null); // Observable streams summaryData$ = this.summaryDataSource.asObservable(); polling: number; constructor(private http: HttpClient, private router: Router, private ngZone: NgZone) { this.enablePolling(); } enablePolling() { this.refresh(); this.ngZone.runOutsideAngular(() => { this.polling = window.setInterval(() => { this.ngZone.run(() => { this.refresh(); }); }, 5000); }); } refresh() { Eif (this.router.url !== '/login') { this.http.get('api/summary').subscribe((data) => { this.summaryDataSource.next(data); }); } } /** * Returns the current value of summaryData */ getCurrentSummary(): { [key: string]: any; executing_tasks: object[] } { return this.summaryDataSource.getValue(); } /** * Subscribes to the summaryData, * which is updated once every 5 seconds or when a new task is created. */ subscribe(next: (summary: any) => void, error?: (error: any) => void): Subscription { return this.summaryData$.subscribe(next, error); } /** * Inserts a newly created task to the local list of executing tasks. * After that, it will automatically push that new information * to all subscribers. */ addRunningTask(task: ExecutingTask) { const current = this.summaryDataSource.getValue(); if (!current) { return; } if (_.isArray(current.executing_tasks)) { const exists = current.executing_tasks.find((element) => { return element.name === task.name && _.isEqual(element.metadata, task.metadata); }); if (!exists) { current.executing_tasks.push(task); } } else { current.executing_tasks = [task]; } this.summaryDataSource.next(current); } } |