93 lines
2.3 KiB
TypeScript
93 lines
2.3 KiB
TypeScript
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<Reader> = new Array<Reader>();
|
|
|
|
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});
|
|
}
|
|
|
|
} |