mirror of
https://github.com/GNS3/gns3-web-ui.git
synced 2025-05-07 19:18:40 +00:00
73 lines
2.5 KiB
TypeScript
73 lines
2.5 KiB
TypeScript
import { Component, OnInit } from '@angular/core';
|
|
import { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';
|
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
import { Server } from '../../../../models/server';
|
|
import { TracengTemplate } from '../../../../models/templates/traceng-template';
|
|
import { ServerService } from '../../../../services/server.service';
|
|
import { ToasterService } from '../../../../services/toaster.service';
|
|
import { TracengService } from '../../../../services/traceng.service';
|
|
|
|
@Component({
|
|
selector: 'app-traceng-template-details',
|
|
templateUrl: './traceng-template-details.component.html',
|
|
styleUrls: ['./traceng-template-details.component.scss', '../../preferences.component.scss'],
|
|
})
|
|
export class TracengTemplateDetailsComponent implements OnInit {
|
|
server: Server;
|
|
tracengTemplate: TracengTemplate;
|
|
inputForm: FormGroup;
|
|
isSymbolSelectionOpened: boolean = false;
|
|
|
|
constructor(
|
|
private route: ActivatedRoute,
|
|
private serverService: ServerService,
|
|
private tracengService: TracengService,
|
|
private toasterService: ToasterService,
|
|
private formBuilder: FormBuilder,
|
|
private router: Router
|
|
) {
|
|
this.inputForm = this.formBuilder.group({
|
|
templateName: new FormControl('', Validators.required),
|
|
defaultName: new FormControl('', Validators.required),
|
|
symbol: new FormControl('', Validators.required),
|
|
});
|
|
}
|
|
|
|
ngOnInit() {
|
|
const server_id = this.route.snapshot.paramMap.get('server_id');
|
|
const template_id = this.route.snapshot.paramMap.get('template_id');
|
|
this.serverService.get(parseInt(server_id, 10)).then((server: Server) => {
|
|
this.server = server;
|
|
|
|
this.tracengService.getTemplate(this.server, template_id).subscribe((tracengTemplate: TracengTemplate) => {
|
|
this.tracengTemplate = tracengTemplate;
|
|
});
|
|
});
|
|
}
|
|
|
|
goBack() {
|
|
this.router.navigate(['/server', this.server.id, 'preferences', 'traceng', 'templates']);
|
|
}
|
|
|
|
onSave() {
|
|
if (this.inputForm.invalid) {
|
|
this.toasterService.error(`Fill all required fields`);
|
|
} else {
|
|
this.tracengService
|
|
.saveTemplate(this.server, this.tracengTemplate)
|
|
.subscribe((tracengTemplate: TracengTemplate) => {
|
|
this.toasterService.success('Changes saved');
|
|
});
|
|
}
|
|
}
|
|
|
|
chooseSymbol() {
|
|
this.isSymbolSelectionOpened = !this.isSymbolSelectionOpened;
|
|
}
|
|
|
|
symbolChanged(chosenSymbol: string) {
|
|
this.isSymbolSelectionOpened = !this.isSymbolSelectionOpened;
|
|
this.tracengTemplate.symbol = chosenSymbol;
|
|
}
|
|
}
|