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';
|
2020-02-28 14:02:00 +01:00
|
|
|
import { Observable, Subject } from 'rxjs';
|
2019-01-15 11:15:54 +01:00
|
|
|
import { Link } from '../models/link';
|
|
|
|
import { Server } from '../models/server';
|
|
|
|
import { HttpServer } from './http-server.service';
|
|
|
|
import { Drawing } from '../cartography/models/drawing';
|
|
|
|
import { SettingsService } from './settings.service';
|
2017-09-25 13:07:52 +02:00
|
|
|
|
|
|
|
@Injectable()
|
|
|
|
export class ProjectService {
|
2020-02-28 14:02:00 +01:00
|
|
|
public projectListSubject = new Subject<boolean>();
|
|
|
|
|
2019-01-15 11:15:54 +01:00
|
|
|
constructor(private httpServer: HttpServer, private settingsService: SettingsService) {}
|
2017-09-25 13:07:52 +02:00
|
|
|
|
2020-02-28 14:02:00 +01:00
|
|
|
projectListUpdated() {
|
|
|
|
this.projectListSubject.next(true);
|
|
|
|
}
|
|
|
|
|
2018-03-20 16:02:41 +01:00
|
|
|
get(server: Server, project_id: string) {
|
2019-01-15 11:15:54 +01:00
|
|
|
return this.httpServer.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) {
|
2019-01-15 11:15:54 +01:00
|
|
|
return this.httpServer.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) {
|
2019-01-15 11:15:54 +01:00
|
|
|
return this.httpServer.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) {
|
2019-01-15 11:15:54 +01:00
|
|
|
return this.httpServer.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) {
|
2019-01-15 11:15:54 +01:00
|
|
|
return this.httpServer.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) {
|
2019-01-15 11:15:54 +01:00
|
|
|
return this.httpServer.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) {
|
2019-01-15 11:15:54 +01:00
|
|
|
return this.httpServer.get<Drawing[]>(server, `/projects/${project_id}/drawings`);
|
2017-11-28 15:06:01 +01:00
|
|
|
}
|
|
|
|
|
2019-01-15 11:15:54 +01:00
|
|
|
add(server: Server, project_name: string, project_id: string): Observable<any> {
|
|
|
|
return this.httpServer.post<Project>(server, `/projects`, { name: project_name, project_id: project_id });
|
2018-11-09 02:13:54 -08:00
|
|
|
}
|
|
|
|
|
2019-09-05 02:27:56 -07:00
|
|
|
update(server: Server, project: Project) : Observable<Project> {
|
|
|
|
return this.httpServer.put<Project>(server, `/projects/${project.project_id}`, {
|
|
|
|
auto_close: project.auto_close,
|
|
|
|
auto_open: project.auto_open,
|
|
|
|
auto_start: project.auto_start,
|
|
|
|
drawing_grid_size: project.drawing_grid_size,
|
|
|
|
grid_size: project.grid_size,
|
|
|
|
name: project.name,
|
|
|
|
scene_width: project.scene_width,
|
2019-10-04 01:15:46 -07:00
|
|
|
scene_height: project.scene_height,
|
|
|
|
show_interface_labels: project.show_interface_labels
|
2019-09-05 02:27:56 -07:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2017-09-28 12:13:35 +02:00
|
|
|
delete(server: Server, project_id: string): Observable<any> {
|
2019-01-15 11:15:54 +01:00
|
|
|
return this.httpServer.delete(server, `/projects/${project_id}`);
|
2017-09-28 12:13:35 +02:00
|
|
|
}
|
|
|
|
|
2019-08-22 00:32:28 -07:00
|
|
|
getUploadPath(server: Server, uuid: string, project_name: string) {
|
|
|
|
return `http://${server.host}:${server.port}/v2/projects/${uuid}/import?name=${project_name}`;
|
|
|
|
}
|
|
|
|
|
|
|
|
getExportPath(server: Server, project: Project) {
|
|
|
|
return `http://${server.host}:${server.port}/v2/projects/${project.project_id}/export`;
|
|
|
|
}
|
|
|
|
|
2019-08-09 04:14:55 -07:00
|
|
|
export(server: Server, project_id: string): Observable<any> {
|
|
|
|
return this.httpServer.get(server, `/projects/${project_id}/export`)
|
|
|
|
}
|
2019-08-21 23:48:18 -07:00
|
|
|
|
2019-08-14 06:10:41 -07:00
|
|
|
getStatistics(server: Server, project_id: string): Observable<any> {
|
2019-08-12 08:46:15 -07:00
|
|
|
return this.httpServer.get(server, `/projects/${project_id}/stats`);
|
|
|
|
}
|
2019-08-09 07:27:27 -07:00
|
|
|
|
2019-08-09 06:32:58 -07:00
|
|
|
duplicate(server: Server, project_id: string, project_name): Observable<any> {
|
|
|
|
return this.httpServer.post(server, `/projects/${project_id}/duplicate`, { name: project_name });
|
|
|
|
}
|
2019-08-09 04:14:55 -07:00
|
|
|
|
2017-09-25 13:07:52 +02:00
|
|
|
notificationsPath(server: Server, project_id: string): string {
|
2019-02-11 11:24:26 +01:00
|
|
|
return `ws://${server.host}:${server.port}/v2/projects/${project_id}/notifications/ws`;
|
2017-09-25 13:07:52 +02:00
|
|
|
}
|
2018-06-22 12:01:46 +02:00
|
|
|
|
|
|
|
isReadOnly(project: Project) {
|
|
|
|
if (project.readonly) {
|
|
|
|
return project.readonly;
|
|
|
|
}
|
2019-10-10 06:55:19 -07:00
|
|
|
return false;
|
2018-06-22 12:01:46 +02:00
|
|
|
}
|
2017-09-25 13:07:52 +02:00
|
|
|
}
|