gns3-web-ui/src/app/services/project.service.ts

71 lines
2.4 KiB
TypeScript
Raw Normal View History

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
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 {
2019-01-15 11:15:54 +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) {
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 });
}
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-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-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 {
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;
}
return !this.settingsService.isExperimentalEnabled();
}
2017-09-25 13:07:52 +02:00
}