+
+
diff --git a/src/app/components/preferences/qemu/qemu-vm-template-details/qemu-vm-template-details.component.scss b/src/app/components/preferences/qemu/qemu-vm-template-details/qemu-vm-template-details.component.scss
index 309c2d15..89cba97a 100644
--- a/src/app/components/preferences/qemu/qemu-vm-template-details/qemu-vm-template-details.component.scss
+++ b/src/app/components/preferences/qemu/qemu-vm-template-details/qemu-vm-template-details.component.scss
@@ -36,6 +36,15 @@
transition: 0.25s;
}
+.top-button {
+ height: 36px;
+ margin-top: 22px
+}
+
+.symbolSelectionButton {
+ width: 100%;
+}
+
.nonshadowed {
opacity: 0;
transition: 0.25s;
diff --git a/src/app/components/preferences/qemu/qemu-vm-template-details/qemu-vm-template-details.component.ts b/src/app/components/preferences/qemu/qemu-vm-template-details/qemu-vm-template-details.component.ts
index eef1e917..878cfafa 100644
--- a/src/app/components/preferences/qemu/qemu-vm-template-details/qemu-vm-template-details.component.ts
+++ b/src/app/components/preferences/qemu/qemu-vm-template-details/qemu-vm-template-details.component.ts
@@ -18,6 +18,8 @@ export class QemuVmTemplateDetailsComponent implements OnInit {
server: Server;
qemuTemplate: QemuTemplate;
+ isSymbolSelectionOpened: boolean = false;
+
consoleTypes: string[] = ['telnet', 'vnc', 'spice', 'spice+agent', 'none'];
diskInterfaces: string[] = ['ide', 'sata', 'scsi', 'sd', 'mtd', 'floppy', 'pflash', 'virtio', 'none'];
networkTypes = [["e1000", "Intel Gigabit Ethernet"],
@@ -129,4 +131,12 @@ export class QemuVmTemplateDetailsComponent implements OnInit {
this.toasterService.success("Changes saved");
});
}
+
+ chooseSymbol() {
+ this.isSymbolSelectionOpened = !this.isSymbolSelectionOpened;
+ }
+
+ symbolChanged(chosenSymbol: string) {
+ this.qemuTemplate.symbol = chosenSymbol;
+ }
}
diff --git a/src/app/components/preferences/virtual-box/add-virtual-box-template/add-virtual-box-template.component.ts b/src/app/components/preferences/virtual-box/add-virtual-box-template/add-virtual-box-template.component.ts
index 55ffc604..2a7d65c2 100644
--- a/src/app/components/preferences/virtual-box/add-virtual-box-template/add-virtual-box-template.component.ts
+++ b/src/app/components/preferences/virtual-box/add-virtual-box-template/add-virtual-box-template.component.ts
@@ -4,7 +4,7 @@ import { ActivatedRoute, ParamMap, Router } from '@angular/router';
import { ServerService } from '../../../../services/server.service';
import { switchMap } from 'rxjs/operators';
import { VirtualBoxService } from '../../../../services/virtual-box.service';
-import { VirtualBoxVm } from '../../../../models/virtualbox/virtualboxVm';
+import { VirtualBoxVm } from '../../../../models/virtualBox/virtual-box-vm';
import { ToasterService } from '../../../../services/toaster.service';
import { TemplateMocksService } from '../../../../services/template-mocks.service';
import { VirtualBoxTemplate } from '../../../../models/templates/virtualbox-template';
diff --git a/src/app/components/preferences/virtual-box/virtual-box-template-details/virtual-box-template-details.component.html b/src/app/components/preferences/virtual-box/virtual-box-template-details/virtual-box-template-details.component.html
index 4a187a13..aa0039b3 100644
--- a/src/app/components/preferences/virtual-box/virtual-box-template-details/virtual-box-template-details.component.html
+++ b/src/app/components/preferences/virtual-box/virtual-box-template-details/virtual-box-template-details.component.html
@@ -1,4 +1,4 @@
-
+
+
diff --git a/src/app/components/preferences/virtual-box/virtual-box-template-details/virtual-box-template-details.component.scss b/src/app/components/preferences/virtual-box/virtual-box-template-details/virtual-box-template-details.component.scss
index 0dabbd11..88579891 100644
--- a/src/app/components/preferences/virtual-box/virtual-box-template-details/virtual-box-template-details.component.scss
+++ b/src/app/components/preferences/virtual-box/virtual-box-template-details/virtual-box-template-details.component.scss
@@ -23,6 +23,15 @@
transition: 0.25s;
}
+.top-button {
+ height: 36px;
+ margin-top: 22px
+}
+
+.symbolSelectionButton {
+ width: 100%;
+}
+
.nonshadowed {
opacity: 0;
transition: 0.25s;
diff --git a/src/app/components/preferences/virtual-box/virtual-box-template-details/virtual-box-template-details.component.ts b/src/app/components/preferences/virtual-box/virtual-box-template-details/virtual-box-template-details.component.ts
index 2b0945e8..389e1a95 100644
--- a/src/app/components/preferences/virtual-box/virtual-box-template-details/virtual-box-template-details.component.ts
+++ b/src/app/components/preferences/virtual-box/virtual-box-template-details/virtual-box-template-details.component.ts
@@ -18,6 +18,8 @@ export class VirtualBoxTemplateDetailsComponent implements OnInit {
server: Server;
virtualBoxTemplate: VirtualBoxTemplate;
+ isSymbolSelectionOpened: boolean = false;
+
consoleTypes: string[] = ['telnet', 'none'];
onCloseOptions = [["Power off the VM", "power_off"],
["Send the shutdown signal (ACPI)", "shutdown_signal"],
@@ -79,4 +81,12 @@ export class VirtualBoxTemplateDetailsComponent implements OnInit {
this.toasterService.success("Changes saved");
});
}
+
+ chooseSymbol() {
+ this.isSymbolSelectionOpened = !this.isSymbolSelectionOpened;
+ }
+
+ symbolChanged(chosenSymbol: string) {
+ this.virtualBoxTemplate.symbol = chosenSymbol;
+ }
}
diff --git a/src/app/components/preferences/vpcs/vpcs-template-details/vpcs-template-details.component.html b/src/app/components/preferences/vpcs/vpcs-template-details/vpcs-template-details.component.html
index 0e30852c..23a2ed6f 100644
--- a/src/app/components/preferences/vpcs/vpcs-template-details/vpcs-template-details.component.html
+++ b/src/app/components/preferences/vpcs/vpcs-template-details/vpcs-template-details.component.html
@@ -1,4 +1,4 @@
-
+
+
+
diff --git a/src/app/components/preferences/vpcs/vpcs-template-details/vpcs-template-details.component.scss b/src/app/components/preferences/vpcs/vpcs-template-details/vpcs-template-details.component.scss
index ceb5950c..c20e763d 100644
--- a/src/app/components/preferences/vpcs/vpcs-template-details/vpcs-template-details.component.scss
+++ b/src/app/components/preferences/vpcs/vpcs-template-details/vpcs-template-details.component.scss
@@ -6,3 +6,17 @@
.select {
width: 100%;
}
+
+.top-button {
+ height: 36px;
+ margin-top: 22px
+}
+
+.shadowed {
+ display: none;
+ transition: 0.25s;
+}
+
+.symbolSelectionButton {
+ width: 100%;
+}
diff --git a/src/app/components/preferences/vpcs/vpcs-template-details/vpcs-template-details.component.ts b/src/app/components/preferences/vpcs/vpcs-template-details/vpcs-template-details.component.ts
index 7564eab1..3367c8b7 100644
--- a/src/app/components/preferences/vpcs/vpcs-template-details/vpcs-template-details.component.ts
+++ b/src/app/components/preferences/vpcs/vpcs-template-details/vpcs-template-details.component.ts
@@ -18,6 +18,8 @@ export class VpcsTemplateDetailsComponent implements OnInit {
vpcsTemplate: VpcsTemplate;
inputForm: FormGroup;
+ isSymbolSelectionOpened: boolean = false;
+
consoleTypes: string[] = ['telnet', 'none'];
categories = [["Default", "guest"],
["Routers", "routers"],
@@ -61,4 +63,12 @@ export class VpcsTemplateDetailsComponent implements OnInit {
});
}
}
+
+ chooseSymbol() {
+ this.isSymbolSelectionOpened = !this.isSymbolSelectionOpened;
+ }
+
+ symbolChanged(chosenSymbol: string) {
+ this.vpcsTemplate.symbol = chosenSymbol;
+ }
}
diff --git a/src/app/material.imports.ts b/src/app/material.imports.ts
index fa54ce85..9dc2260b 100644
--- a/src/app/material.imports.ts
+++ b/src/app/material.imports.ts
@@ -18,7 +18,8 @@ import {
MatSelectModule,
MatTooltipModule,
MatStepperModule,
- MatRadioModule
+ MatRadioModule,
+ MatGridListModule
} from '@angular/material';
export const MATERIAL_IMPORTS = [
@@ -41,5 +42,6 @@ export const MATERIAL_IMPORTS = [
MatSelectModule,
MatTooltipModule,
MatStepperModule,
- MatRadioModule
+ MatRadioModule,
+ MatGridListModule
];
diff --git a/src/app/models/symbol.ts b/src/app/models/symbol.ts
index df17351e..a08d1693 100644
--- a/src/app/models/symbol.ts
+++ b/src/app/models/symbol.ts
@@ -1,6 +1,6 @@
export class Symbol {
- builtin: boolean;
- filename: string;
- symbol_id: string;
- raw: string;
+ builtin: boolean;
+ filename: string;
+ symbol_id: string;
+ raw: string;
}
diff --git a/src/app/models/templates/ios-template.ts b/src/app/models/templates/ios-template.ts
new file mode 100644
index 00000000..2c5d1e57
--- /dev/null
+++ b/src/app/models/templates/ios-template.ts
@@ -0,0 +1,35 @@
+export interface IosTemplate {
+ auto_delete_disks: boolean;
+ builtin: boolean;
+ category: string;
+ chassis: string;
+ compute_id: string;
+ console_auto_start: boolean;
+ console_type: string;
+ default_name_format: string;
+ disk0: number;
+ disk1: number;
+ exec_area: number;
+ idlemax: number;
+ idlepc: string;
+ idlesleep: number;
+ image: string;
+ iomem: number;
+ mac_addr: string;
+ mmap: boolean;
+ name: string;
+ nvram: number;
+ platform: string;
+ private_config: string;
+ ram: number;
+ slot0: string;
+ sparsemem: boolean;
+ startup_config: string;
+ symbol: string;
+ system_id: string;
+ template_id: string;
+ template_type: string;
+ usage: string;
+ wic0: string;
+ wic1: string;
+}
diff --git a/src/app/models/virtualBox/virtualBoxVm.ts b/src/app/models/virtualBox/virtual-box-vm.ts
similarity index 100%
rename from src/app/models/virtualBox/virtualBoxVm.ts
rename to src/app/models/virtualBox/virtual-box-vm.ts
diff --git a/src/app/services/ios.service.spec.ts b/src/app/services/ios.service.spec.ts
new file mode 100644
index 00000000..e69de29b
diff --git a/src/app/services/ios.service.ts b/src/app/services/ios.service.ts
new file mode 100644
index 00000000..f6ccf18a
--- /dev/null
+++ b/src/app/services/ios.service.ts
@@ -0,0 +1,26 @@
+import { Injectable } from "@angular/core";
+import { HttpServer } from './http-server.service';
+import { Server } from '../models/server';
+import { Observable } from 'rxjs';
+import { IosTemplate } from '../models/templates/ios-template';
+
+@Injectable()
+export class IosService {
+ constructor(private httpServer: HttpServer) {}
+
+ getTemplates(server: Server): Observable
{
+ return this.httpServer.get(server, '/templates') as Observable;
+ }
+
+ getTemplate(server: Server, template_id: string): Observable {
+ return this.httpServer.get(server, `/templates/${template_id}`) as Observable;
+ }
+
+ addTemplate(server: Server, iosTemplate: IosTemplate): Observable {
+ return this.httpServer.post(server, `/templates`, iosTemplate) as Observable;
+ }
+
+ saveTemplate(server: Server, iosTemplate: IosTemplate): Observable {
+ return this.httpServer.put(server, `/templates/${iosTemplate.template_id}`, iosTemplate) as Observable;
+ }
+}
diff --git a/src/app/services/template-mocks.service.ts b/src/app/services/template-mocks.service.ts
index 98f710f0..dae0ee7d 100644
--- a/src/app/services/template-mocks.service.ts
+++ b/src/app/services/template-mocks.service.ts
@@ -6,6 +6,7 @@ import { VirtualBoxTemplate } from '../models/templates/virtualbox-template';
import { EthernetHubTemplate } from '../models/templates/ethernet-hub-template';
import { CloudTemplate } from '../models/templates/cloud-template';
import { EthernetSwitchTemplate } from '../models/templates/ethernet-switch-template';
+import { IosTemplate } from '../models/templates/ios-template';
@Injectable()
export class TemplateMocksService {
@@ -155,4 +156,44 @@ export class TemplateMocksService {
return of(template);
}
+
+ getIosTemplate() : Observable {
+ let template: IosTemplate = {
+ auto_delete_disks: true,
+ builtin: false,
+ category: 'router',
+ chassis: '1720',
+ compute_id: 'local',
+ console_auto_start: false,
+ console_type: 'telnet',
+ default_name_format: 'R{0}',
+ disk0: 0,
+ disk1: 0,
+ exec_area: 64,
+ idlemax: 500,
+ idlepc: '',
+ idlesleep: 30,
+ image: '',
+ iomem: 0,
+ mac_addr: '',
+ mmap: true,
+ name: '',
+ nvram: 128,
+ platform: '',
+ private_config: '',
+ ram: 128,
+ slot0: '',
+ sparsemem: true,
+ startup_config: '',
+ symbol: ':/symbols/router.svg',
+ system_id: 'FTX0945W0MY',
+ template_id: '',
+ template_type: 'dynamips',
+ usage: '',
+ wic0: '',
+ wic1: ''
+ }
+
+ return of(template);
+ }
}
diff --git a/src/app/services/virtual-box.service.ts b/src/app/services/virtual-box.service.ts
index e4946421..cdcb0d7d 100644
--- a/src/app/services/virtual-box.service.ts
+++ b/src/app/services/virtual-box.service.ts
@@ -3,7 +3,7 @@ import { HttpServer } from './http-server.service';
import { Server } from '../models/server';
import { Observable } from 'rxjs';
import { VirtualBoxTemplate } from '../models/templates/virtualbox-template';
-import { VirtualBoxVm } from '../models/virtualbox/virtualboxVm';
+import { VirtualBoxVm } from '../models/virtualBox/virtual-box-vm';
@Injectable()
export class VirtualBoxService {