2017-09-25 13:07:52 +02:00
|
|
|
import { Injectable } from '@angular/core';
|
|
|
|
import { Project } from '../models/project';
|
2018-06-27 10:29:12 +02:00
|
|
|
import { Node } from '../cartography/models/node';
|
2018-07-06 11:31:44 +02:00
|
|
|
import { Observable } from 'rxjs';
|
2017-09-25 13:07:52 +02:00
|
|
|
|
2018-07-19 10:00:09 +02:00
|
|
|
import { Link } from "../models/link";
|
2017-09-25 13:07:52 +02:00
|
|
|
import { Server } from "../models/server";
|
|
|
|
import { HttpServer } from "./http-server.service";
|
2018-07-06 11:31:44 +02:00
|
|
|
import { Drawing } from "../cartography/models/drawing";
|
2018-06-22 12:01:46 +02:00
|
|
|
import { SettingsService } from "./settings.service";
|
2017-09-25 13:07:52 +02:00
|
|
|
|
|
|
|
@Injectable()
|
|
|
|
export class ProjectService {
|
|
|
|
|
2018-11-09 14:46:56 +01:00
|
|
|
constructor(
|
|
|
|
private httpServer: HttpServer,
|
|
|
|
private settingsService: SettingsService) {}
|
2017-09-25 13:07:52 +02:00
|
|
|
|
2018-03-20 16:02:41 +01:00
|
|
|
get(server: Server, project_id: string) {
|
2017-09-25 13:07:52 +02:00
|
|
|
return this.httpServer
|
2018-11-09 14:46:56 +01:00
|
|
|
.get<Project>(server, `/projects/${project_id}`);
|
2017-09-25 13:07:52 +02:00
|
|
|
}
|
|
|
|
|
2018-03-20 16:02:41 +01:00
|
|
|
open(server: Server, project_id: string) {
|
2017-09-25 13:07:52 +02:00
|
|
|
return this.httpServer
|
2018-11-09 14:46:56 +01:00
|
|
|
.post<Project>(server, `/projects/${project_id}/open`, {});
|
2017-09-25 13:07:52 +02:00
|
|
|
}
|
|
|
|
|
2018-06-26 16:47:40 +02:00
|
|
|
close(server: Server, project_id: string) {
|
|
|
|
return this.httpServer
|
2018-11-09 14:46:56 +01:00
|
|
|
.post<Project>(server, `/projects/${project_id}/close`, {});
|
2018-06-26 16:47:40 +02:00
|
|
|
}
|
|
|
|
|
2018-03-20 16:02:41 +01:00
|
|
|
list(server: Server) {
|
2017-09-25 13:07:52 +02:00
|
|
|
return this.httpServer
|
2018-11-09 14:46:56 +01:00
|
|
|
.get<Project[]>(server, '/projects');
|
2017-09-25 13:07:52 +02:00
|
|
|
}
|
|
|
|
|
2018-03-20 16:02:41 +01:00
|
|
|
nodes(server: Server, project_id: string) {
|
2017-09-25 13:07:52 +02:00
|
|
|
return this.httpServer
|
2018-11-09 14:46:56 +01:00
|
|
|
.get<Node[]>(server, `/projects/${project_id}/nodes`);
|
2017-09-25 13:07:52 +02:00
|
|
|
}
|
|
|
|
|
2018-03-20 16:02:41 +01:00
|
|
|
links(server: Server, project_id: string) {
|
2017-09-25 13:07:52 +02:00
|
|
|
return this.httpServer
|
2018-11-09 14:46:56 +01:00
|
|
|
.get<Link[]>(server, `/projects/${project_id}/links`);
|
2017-09-25 13:07:52 +02:00
|
|
|
}
|
|
|
|
|
2018-03-20 16:02:41 +01:00
|
|
|
drawings(server: Server, project_id: string) {
|
2017-11-28 15:06:01 +01:00
|
|
|
return this.httpServer
|
2018-11-09 14:46:56 +01:00
|
|
|
.get<Drawing[]>(server, `/projects/${project_id}/drawings`);
|
2017-11-28 15:06:01 +01:00
|
|
|
}
|
|
|
|
|
2017-09-28 12:13:35 +02:00
|
|
|
delete(server: Server, project_id: string): Observable<any> {
|
|
|
|
return this.httpServer
|
2018-11-09 14:46:56 +01:00
|
|
|
.delete(server, `/projects/${project_id}`);
|
2017-09-28 12:13:35 +02:00
|
|
|
}
|
|
|
|
|
2017-09-25 13:07:52 +02:00
|
|
|
notificationsPath(server: Server, project_id: string): string {
|
|
|
|
return `ws://${server.ip}:${server.port}/v2/projects/${project_id}/notifications/ws`;
|
|
|
|
}
|
2018-06-22 12:01:46 +02:00
|
|
|
|
|
|
|
isReadOnly(project: Project) {
|
|
|
|
if (project.readonly) {
|
|
|
|
return project.readonly;
|
|
|
|
}
|
|
|
|
return !this.settingsService.isExperimentalEnabled();
|
|
|
|
}
|
2017-09-25 13:07:52 +02:00
|
|
|
}
|