75 lines
2.0 KiB
TypeScript
75 lines
2.0 KiB
TypeScript
|
import {Host, Injectable} from '@angular/core';
|
||
|
import {Observable} from 'rxjs';
|
||
|
import PageRecord from '../structures/PageRecord';
|
||
|
import {ApiService} from './api.service';
|
||
|
import HostRecord from '../structures/HostRecord';
|
||
|
|
||
|
@Injectable({
|
||
|
providedIn: 'root'
|
||
|
})
|
||
|
export class PageService {
|
||
|
|
||
|
constructor(
|
||
|
protected api: ApiService,
|
||
|
) { }
|
||
|
|
||
|
load(id: string): Observable<PageRecord> {
|
||
|
return new Observable<PageRecord>(sub => {
|
||
|
this.api.get(`/page/${id}`).subscribe(response => {
|
||
|
if ( response.status === 200 ) {
|
||
|
sub.next(new PageRecord(response.data));
|
||
|
sub.complete();
|
||
|
} else {
|
||
|
throw new Error(response.message);
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
save(page: PageRecord): Observable<PageRecord> {
|
||
|
return new Observable<PageRecord>(sub => {
|
||
|
this.api.post(`/page/${page.UUID}/save`, page.toSave()).subscribe(res => {
|
||
|
sub.next(new PageRecord(res.data));
|
||
|
sub.complete();
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
get_nodes(page: PageRecord): Observable<Array<HostRecord>> {
|
||
|
return new Observable<Array<HostRecord>>(sub => {
|
||
|
this.api.get(`/page/${page.UUID}/nodes`).subscribe(res => {
|
||
|
const returns = [];
|
||
|
res.data.forEach(rec => {
|
||
|
const host = new HostRecord(rec.Value.Value);
|
||
|
host.load(rec);
|
||
|
returns.push(host);
|
||
|
});
|
||
|
|
||
|
sub.next(returns);
|
||
|
sub.complete();
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
save_nodes(page: PageRecord, nodes: Array<HostRecord>): Observable<Array<HostRecord>> {
|
||
|
return new Observable<Array<HostRecord>>(sub => {
|
||
|
nodes = nodes.map(x => {
|
||
|
x.PageId = page.UUID;
|
||
|
return x.toSave();
|
||
|
});
|
||
|
|
||
|
this.api.post(`/page/${page.UUID}/nodes/save`, nodes).subscribe(res => {
|
||
|
const returns = [];
|
||
|
res.data.forEach(rec => {
|
||
|
const host = new HostRecord(rec.Value.Value);
|
||
|
host.load(rec);
|
||
|
returns.push(host);
|
||
|
});
|
||
|
|
||
|
sub.next(returns);
|
||
|
sub.complete();
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
}
|