add system status service and mock data

This commit is contained in:
Jesse Lucas
2020-03-29 16:51:12 -04:00
parent 9fe0c30299
commit b7f3425f36
6 changed files with 162 additions and 25 deletions
+36 -20
View File
@@ -5,6 +5,7 @@ import { SystemConfigService } from './system-config.service';
import { SystemConnectionsService } from './system-connections.service';
import { DbCompletionService } from './db-completion.service';
import { SystemConnections } from '../connections';
import { SystemStatusService } from './system-status.service';
@Injectable({
providedIn: 'root'
@@ -12,11 +13,13 @@ import { SystemConnections } from '../connections';
export class DeviceService {
private devices: Device[];
private sysConns: SystemConnections;
thisDevice: Device;
constructor(
private systemConfigService: SystemConfigService,
private systemConnectionsService: SystemConnectionsService,
private dbCompletionService: DbCompletionService
private dbCompletionService: DbCompletionService,
private systemStatusService: SystemStatusService
) { }
getDeviceStatusInOrder(observer: Subscriber<Device>, startIndex: number) {
@@ -56,29 +59,42 @@ export class DeviceService {
devices => {
this.devices = devices;
// Check folder devices to see if the device is used
this.systemConfigService.getFolders().subscribe(
folders => {
// Loop through all folder devices to see if the device is used
// First check to see which device is local 'thisDevice'
this.systemStatusService.getSystemStatus().subscribe(
status => {
this.devices.forEach(device => {
folders.forEach(folder => {
folder.devices.forEach(fdevice => {
if (device.deviceID === fdevice.deviceID) {
device.used = true;
}
});
});
if (device.deviceID === status.myID) {
console.log("found thisDevice!", device);
this.thisDevice = device;
}
});
// See if the connection is connected or undefined
this.systemConnectionsService.getSystemConnections().subscribe(
c => {
this.sysConns = c;
// TODO Determine if it should ignore thisDevice
// Synchronously get the status of each device
this.getDeviceStatusInOrder(observer, 0);
}
);
// Check folder devices to see if the device is used
this.systemConfigService.getFolders().subscribe(
folders => {
// Loop through all folder devices to see if the device is used
this.devices.forEach(device => {
folders.forEach(folder => {
folder.devices.forEach(fdevice => {
if (device.deviceID === fdevice.deviceID) {
device.used = true;
}
});
});
});
// See if the connection is connected or undefined
this.systemConnectionsService.getSystemConnections().subscribe(
c => {
this.sysConns = c;
// Synchronously get the status of each device
this.getDeviceStatusInOrder(observer, 0);
}
);
});
}
)
},
@@ -1,15 +1,16 @@
import { Injectable } from '@angular/core';
import { config } from '../mocks/mock-system-config'
import { dbStatus } from '../mocks/mock-db-status'
import { connections } from '../mocks/mock-system-connections'
import { dbCompletion } from '../mocks/mock-db-completion'
import { config } from '../mocks/mock-system-config';
import { dbStatus } from '../mocks/mock-db-status';
import { connections } from '../mocks/mock-system-connections';
import { dbCompletion } from '../mocks/mock-db-completion';
import { systemStatus } from '../mocks/mock-system-status';
@Injectable({
providedIn: 'root'
})
export class InMemoryConfigDataService {
createDb() {
return { config, dbStatus, connections, dbCompletion };
return { config, dbStatus, connections, dbCompletion, systemStatus };
}
constructor() { }
@@ -0,0 +1,16 @@
import { TestBed } from '@angular/core/testing';
import { SystemStatusService } from './system-status.service';
describe('SystemStatusService', () => {
let service: SystemStatusService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(SystemStatusService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});
+28
View File
@@ -0,0 +1,28 @@
import { Injectable } from '@angular/core';
import { environment } from 'src/environments/environment';
import { apiURL, apiRetry } from '../api-utils';
import { Observable } from 'rxjs';
import { HttpClient } from '@angular/common/http';
import { retry, map } from 'rxjs/operators';
import { SystemStatus } from '../system-status';
@Injectable({
providedIn: 'root'
})
export class SystemStatusService {
private systemStatusUrl = environment.production ? apiURL + 'rest/system/status' : 'api/systemStatus';
constructor(private http: HttpClient) { }
getSystemStatus(): Observable<SystemStatus> {
return this.http
.get<SystemStatus>(this.systemStatusUrl)
.pipe(
retry(apiRetry),
map(res => {
return res;
})
);
}
}