From e55c273f3c8b970f3a0e1aa025c2a0c8eaba6d5c Mon Sep 17 00:00:00 2001 From: Piotr Pekala Date: Mon, 28 Jan 2019 10:23:32 -0800 Subject: [PATCH] Components for Vpcs templates --- src/app/app-routing.module.ts | 9 +++- src/app/app.module.ts | 6 ++- .../preferences/preferences.component.html | 15 +++---- .../vpcs-preferences.component.html | 12 ++++++ .../vpcs-preferences.component.scss | 3 ++ .../vpcs-preferences.component.spec.ts | 0 .../vpcs-preferences.component.ts | 42 +++++++++++++++++++ .../vpcs-templates.component.html | 17 ++++++++ .../vpcs-templates.component.scss | 4 ++ .../vpcs-templates.component.spec.ts | 0 .../vpcs-templates.component.ts | 36 ++++++++++++++++ .../models/templates/virtualbox-template.ts | 25 +++++++++++ src/app/models/templates/vpcs-template.ts | 13 ++++++ src/app/services/vpcs.service.spec.ts | 0 src/app/services/vpcs.service.ts | 14 +++++++ 15 files changed, 183 insertions(+), 13 deletions(-) create mode 100644 src/app/components/preferences/vpcs/vpcs-preferences/vpcs-preferences.component.html create mode 100644 src/app/components/preferences/vpcs/vpcs-preferences/vpcs-preferences.component.scss create mode 100644 src/app/components/preferences/vpcs/vpcs-preferences/vpcs-preferences.component.spec.ts create mode 100644 src/app/components/preferences/vpcs/vpcs-preferences/vpcs-preferences.component.ts create mode 100644 src/app/components/preferences/vpcs/vpcs-templates/vpcs-templates.component.html create mode 100644 src/app/components/preferences/vpcs/vpcs-templates/vpcs-templates.component.scss create mode 100644 src/app/components/preferences/vpcs/vpcs-templates/vpcs-templates.component.spec.ts create mode 100644 src/app/components/preferences/vpcs/vpcs-templates/vpcs-templates.component.ts create mode 100644 src/app/models/templates/virtualbox-template.ts create mode 100644 src/app/models/templates/vpcs-template.ts create mode 100644 src/app/services/vpcs.service.spec.ts create mode 100644 src/app/services/vpcs.service.ts diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 41323441..5a29a1b5 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -13,6 +13,8 @@ import { QemuVmTemplatesComponent } from './components/preferences/qemu/qemu-vm- import { QemuVmTemplateDetailsComponent } from './components/preferences/qemu/qemu-vm-template-details/qemu-vm-template-details.component'; import { AddQemuVmTemplateComponent } from './components/preferences/qemu/add-qemu-vm-template/add-qemu-vm-template.component'; import { GeneralPreferencesComponent } from './components/preferences/general/general-preferences.component'; +import { VpcsPreferencesComponent } from './components/preferences/vpcs/vpcs-preferences/vpcs-preferences.component'; +import { VpcsTemplatesComponent } from './components/preferences/vpcs/vpcs-templates/vpcs-templates.component'; const routes: Routes = [ { @@ -25,12 +27,15 @@ const routes: Routes = [ { path: 'server/:server_id/projects', component: ProjectsComponent }, { path: 'settings', component: SettingsComponent }, { path: 'server/:server_id/preferences', component: PreferencesComponent }, + { path: 'server/:server_id/preferences/general', component: GeneralPreferencesComponent }, // temporary disabled // { path: 'server/:server_id/preferences/qemu', component: QemuPreferencesComponent }, - { path: 'server/:server_id/preferences/general', component: GeneralPreferencesComponent }, { path: 'server/:server_id/preferences/qemu/templates', component: QemuVmTemplatesComponent }, { path: 'server/:server_id/preferences/qemu/templates/:template_id', component: QemuVmTemplateDetailsComponent }, - { path: 'server/:server_id/preferences/qemu/addtemplate', component: AddQemuVmTemplateComponent } + { path: 'server/:server_id/preferences/qemu/addtemplate', component: AddQemuVmTemplateComponent }, + // temporary disabled + //{ path: 'server/:server_id/preferences/vpcs', component: VpcsPreferencesComponent } + { path: 'server/:server_id/preferences/vpcs/templates', component: VpcsTemplatesComponent } ] }, { path: 'server/:server_id/project/:project_id', component: ProjectMapComponent } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 59424cf1..69ee6784 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -97,6 +97,8 @@ import { AddQemuVmTemplateComponent } from './components/preferences/qemu/add-qe import { QemuVmTemplateDetailsComponent } from './components/preferences/qemu/qemu-vm-template-details/qemu-vm-template-details.component'; import { QemuService } from './services/qemu.service'; import { GeneralPreferencesComponent } from './components/preferences/general/general-preferences.component'; +import { VpcsPreferencesComponent } from './components/preferences/vpcs/vpcs-preferences/vpcs-preferences.component'; +import { VpcsTemplatesComponent } from './components/preferences/vpcs/vpcs-templates/vpcs-templates.component'; if (environment.production) { Raven.config('https://b2b1cfd9b043491eb6b566fd8acee358@sentry.io/842726', { @@ -154,7 +156,9 @@ if (environment.production) { QemuVmTemplatesComponent, AddQemuVmTemplateComponent, QemuVmTemplateDetailsComponent, - GeneralPreferencesComponent + GeneralPreferencesComponent, + VpcsPreferencesComponent, + VpcsTemplatesComponent ], imports: [ BrowserModule, diff --git a/src/app/components/preferences/preferences.component.html b/src/app/components/preferences/preferences.component.html index 0816c694..e3d1ad0a 100644 --- a/src/app/components/preferences/preferences.component.html +++ b/src/app/components/preferences/preferences.component.html @@ -12,21 +12,16 @@ General + + + - - - - - - diff --git a/src/app/components/preferences/vpcs/vpcs-preferences/vpcs-preferences.component.html b/src/app/components/preferences/vpcs/vpcs-preferences/vpcs-preferences.component.html new file mode 100644 index 00000000..33c19621 --- /dev/null +++ b/src/app/components/preferences/vpcs/vpcs-preferences/vpcs-preferences.component.html @@ -0,0 +1,12 @@ +
+
+
+

VPCS preferences

+
+
+
+ + + +
+
diff --git a/src/app/components/preferences/vpcs/vpcs-preferences/vpcs-preferences.component.scss b/src/app/components/preferences/vpcs/vpcs-preferences/vpcs-preferences.component.scss new file mode 100644 index 00000000..9c2173c2 --- /dev/null +++ b/src/app/components/preferences/vpcs/vpcs-preferences/vpcs-preferences.component.scss @@ -0,0 +1,3 @@ +.form-field { + width: 100%; +} diff --git a/src/app/components/preferences/vpcs/vpcs-preferences/vpcs-preferences.component.spec.ts b/src/app/components/preferences/vpcs/vpcs-preferences/vpcs-preferences.component.spec.ts new file mode 100644 index 00000000..e69de29b diff --git a/src/app/components/preferences/vpcs/vpcs-preferences/vpcs-preferences.component.ts b/src/app/components/preferences/vpcs/vpcs-preferences/vpcs-preferences.component.ts new file mode 100644 index 00000000..7da8e3b0 --- /dev/null +++ b/src/app/components/preferences/vpcs/vpcs-preferences/vpcs-preferences.component.ts @@ -0,0 +1,42 @@ +import { Component, OnInit } from "@angular/core"; +import { ServerSettingsService } from '../../../../services/server-settings.service'; +import { ActivatedRoute, ParamMap } from '@angular/router'; +import { Server } from '../../../../models/server'; +import { switchMap } from 'rxjs/operators'; +import { ServerService } from '../../../../services/server.service'; +import { ToasterService } from '../../../../services/toaster.service'; + + +@Component({ + selector: 'app-vpcs-preferences', + templateUrl: './vpcs-preferences.component.html', + styleUrls: ['./vpcs-preferences.component.scss'] +}) +export class VpcsPreferencesComponent implements OnInit { + server: Server; + vpcsExecutable: string; + + constructor( + private route: ActivatedRoute, + private serverService: ServerService, + private serverSettingsService: ServerSettingsService, + private toasterService: ToasterService + ) {} + + ngOnInit() { + this.route.paramMap + .pipe( + switchMap((params: ParamMap) => { + const server_id = params.get('server_id'); + return this.serverService.get(parseInt(server_id, 10)); + }) + ) + .subscribe((server: Server) => { + this.server = server; + }); + } + + restoreDefaults(){ + this.vpcsExecutable = ''; + } +} diff --git a/src/app/components/preferences/vpcs/vpcs-templates/vpcs-templates.component.html b/src/app/components/preferences/vpcs/vpcs-templates/vpcs-templates.component.html new file mode 100644 index 00000000..dbb72ada --- /dev/null +++ b/src/app/components/preferences/vpcs/vpcs-templates/vpcs-templates.component.html @@ -0,0 +1,17 @@ +
+
+
+

VPCS node templates

+ +
+
+
+
+ + + {{template.name}} + + +
+
+
diff --git a/src/app/components/preferences/vpcs/vpcs-templates/vpcs-templates.component.scss b/src/app/components/preferences/vpcs/vpcs-templates/vpcs-templates.component.scss new file mode 100644 index 00000000..98f47574 --- /dev/null +++ b/src/app/components/preferences/vpcs/vpcs-templates/vpcs-templates.component.scss @@ -0,0 +1,4 @@ +.top-button { + height: 36px; + margin-top: 22px +} diff --git a/src/app/components/preferences/vpcs/vpcs-templates/vpcs-templates.component.spec.ts b/src/app/components/preferences/vpcs/vpcs-templates/vpcs-templates.component.spec.ts new file mode 100644 index 00000000..e69de29b diff --git a/src/app/components/preferences/vpcs/vpcs-templates/vpcs-templates.component.ts b/src/app/components/preferences/vpcs/vpcs-templates/vpcs-templates.component.ts new file mode 100644 index 00000000..46389ce8 --- /dev/null +++ b/src/app/components/preferences/vpcs/vpcs-templates/vpcs-templates.component.ts @@ -0,0 +1,36 @@ +import { Component, OnInit } from "@angular/core"; +import { Server } from '../../../../models/server'; +import { ActivatedRoute, ParamMap } from '@angular/router'; +import { ServerService } from '../../../../services/server.service'; +import { switchMap } from 'rxjs/operators'; +import { QemuTemplate } from '../../../../models/templates/qemu-template'; +import { QemuService } from '../../../../services/qemu.service'; + + +@Component({ + selector: 'app-vpcs-templates', + templateUrl: './vpcs-templates.component.html', + styleUrls: ['./vpcs-templates.component.scss'] +}) +export class VpcsTemplatesComponent implements OnInit { + server: Server; + vpcsTemplates: QemuTemplate[] = []; + + constructor( + private route: ActivatedRoute, + private serverService: ServerService + ) {} + + ngOnInit() { + this.route.paramMap + .pipe( + switchMap((params: ParamMap) => { + const server_id = params.get('server_id'); + return this.serverService.get(parseInt(server_id, 10)); + }) + ) + .subscribe((server: Server) => { + this.server = server; + }); + } +} diff --git a/src/app/models/templates/virtualbox-template.ts b/src/app/models/templates/virtualbox-template.ts new file mode 100644 index 00000000..8efa189a --- /dev/null +++ b/src/app/models/templates/virtualbox-template.ts @@ -0,0 +1,25 @@ +export interface VirtualBoxTemplate { + adapter_type: string; + adapters: number; + builtin: boolean; + category: string; + compute_id: string; + console_auto_start: boolean; + console_type: string; + custom_adapters?: (null)[] | null; + default_name_format: string; + first_port_name: string; + headless: boolean; + linked_clone: boolean; + name: string; + on_close: string; + port_name_format: string; + port_segment_size: number; + ram: number; + symbol: string; + template_id: string; + template_type: string; + usage: string; + use_any_adapter: boolean; + vmname: string; +} diff --git a/src/app/models/templates/vpcs-template.ts b/src/app/models/templates/vpcs-template.ts new file mode 100644 index 00000000..b33fbabd --- /dev/null +++ b/src/app/models/templates/vpcs-template.ts @@ -0,0 +1,13 @@ +export interface VpcsTemplate { + base_script_file: string; + builtin: boolean; + category: string; + compute_id: string; + console_auto_start: boolean; + console_type: string; + default_name_format: string; + name: string; + symbol: string; + template_id: string; + template_type: string; +} diff --git a/src/app/services/vpcs.service.spec.ts b/src/app/services/vpcs.service.spec.ts new file mode 100644 index 00000000..e69de29b diff --git a/src/app/services/vpcs.service.ts b/src/app/services/vpcs.service.ts new file mode 100644 index 00000000..63ef4aea --- /dev/null +++ b/src/app/services/vpcs.service.ts @@ -0,0 +1,14 @@ +import { Injectable } from "@angular/core"; +import { HttpServer } from './http-server.service'; +import { Server } from '../models/server'; +import { VpcsTemplate } from '../models/templates/vpcs-template'; +import { Observable } from 'rxjs'; + +@Injectable() +export class VpcsService { + constructor(private httpServer: HttpServer) {} + + getTemplates(server: Server): Observable { + return this.httpServer.get(server, '/templates') as Observable; + } +}