import { Component, OnInit, OnDestroy } from '@angular/core'; import { DataService } from './../../services/data.service'; import { Router } from '@angular/router'; import { IntervalObservable } from 'rxjs/observable/IntervalObservable'; import { Subscription } from 'rxjs/Subscription'; import { Reader } from "./../../classes/reader.class"; @Component({ selector: 'app-readers', templateUrl: './readers.component.html', styleUrls: ['./readers.component.css'] }) export class ReadersComponent implements OnInit, OnDestroy { loading:boolean = true; error:boolean = false; readers:Array = new Array(); public subscription:Subscription; constructor(private router: Router, private data:DataService){} getReadersData(): void { this.data.load().then(()=> { this.data .readers() .subscribe(response => { var status = response.status_code; if(status != 200) { this.loading = false; this.error = true; } else{ for(let i = 0; i < response.data.length; i++) { var temp:Reader = Reader.toReader(response.data[i]); var reader:Reader = this.getReaderByID(temp.id); if(reader) { if(!temp.equals(reader)) { // push new one, delete old var index = this.readers.indexOf(reader); this.readers.splice(index, 1); this.readers.push(temp); } } else { this.readers.push(temp); } } this.readers.sort((a, b) => { return a.reader_id > b.reader_id ? 1 : -1; }); this.loading = false; } }); }); } ngOnInit(): void { this.getReadersData(); this.subscription = IntervalObservable.create(5000).subscribe(() => { console.log("Reloading data..."); this.getReadersData(); }); } ngOnDestroy(): void { this.subscription.unsubscribe(); } onClick(reader: Reader): void { this.router.navigate(['/reader', reader.id]); } getReaderByID(id:number): Reader { return this.readers.find((f) => {return f.id === id}); } }