mirror of
https://github.com/GNS3/gns3-web-ui.git
synced 2025-06-16 22:08:08 +00:00
Improvements for template name dialog
This commit is contained in:
@ -451,36 +451,29 @@ export class NewTemplateDialogComponent implements OnInit {
|
|||||||
iouTemplate.path = image.filename;
|
iouTemplate.path = image.filename;
|
||||||
iouTemplate.template_type = 'iou';
|
iouTemplate.template_type = 'iou';
|
||||||
|
|
||||||
if (this.templates.filter(t => t.name === this.applianceToInstall.name).length === 0) {
|
const dialogRef = this.dialog.open(TemplateNameDialogComponent, {
|
||||||
iouTemplate.name = this.applianceToInstall.name;
|
width: '400px',
|
||||||
|
height: '250px',
|
||||||
this.iouService.addTemplate(this.server, iouTemplate).subscribe((template) => {
|
autoFocus: false,
|
||||||
this.templateService.newTemplateCreated.next(template);
|
disableClose: true,
|
||||||
this.toasterService.success('Template added');
|
data: {
|
||||||
this.dialogRef.close();
|
name: this.applianceToInstall.name
|
||||||
});
|
}
|
||||||
} else {
|
});
|
||||||
const dialogRef = this.dialog.open(TemplateNameDialogComponent, {
|
dialogRef.componentInstance.server = this.server;
|
||||||
width: '400px',
|
dialogRef.afterClosed().subscribe((answer: string) => {
|
||||||
height: '250px',
|
if (answer) {
|
||||||
autoFocus: false,
|
iouTemplate.name = answer;
|
||||||
disableClose: true
|
|
||||||
});
|
this.iouService.addTemplate(this.server, iouTemplate).subscribe((template) => {
|
||||||
dialogRef.componentInstance.server = this.server;
|
this.templateService.newTemplateCreated.next(template);
|
||||||
dialogRef.afterClosed().subscribe((answer: string) => {
|
this.toasterService.success('Template added');
|
||||||
if (answer) {
|
this.dialogRef.close();
|
||||||
iouTemplate.name = answer;
|
});
|
||||||
|
} else{
|
||||||
this.iouService.addTemplate(this.server, iouTemplate).subscribe((template) => {
|
return false;
|
||||||
this.templateService.newTemplateCreated.next(template);
|
}
|
||||||
this.toasterService.success('Template added');
|
});
|
||||||
this.dialogRef.close();
|
|
||||||
});
|
|
||||||
} else{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
createIosTemplate(image: Image) {
|
createIosTemplate(image: Image) {
|
||||||
@ -507,36 +500,29 @@ export class NewTemplateDialogComponent implements OnInit {
|
|||||||
iosTemplate.image = image.filename;
|
iosTemplate.image = image.filename;
|
||||||
iosTemplate.template_type = 'dynamips';
|
iosTemplate.template_type = 'dynamips';
|
||||||
|
|
||||||
if (this.templates.filter(t => t.name === this.applianceToInstall.name).length === 0) {
|
const dialogRef = this.dialog.open(TemplateNameDialogComponent, {
|
||||||
iosTemplate.name = this.applianceToInstall.name;
|
width: '400px',
|
||||||
|
height: '250px',
|
||||||
this.iosService.addTemplate(this.server, iosTemplate).subscribe((template) => {
|
autoFocus: false,
|
||||||
this.templateService.newTemplateCreated.next(template as any as Template);
|
disableClose: true,
|
||||||
this.toasterService.success('Template added');
|
data: {
|
||||||
this.dialogRef.close();
|
name: this.applianceToInstall.name
|
||||||
});
|
}
|
||||||
} else {
|
});
|
||||||
const dialogRef = this.dialog.open(TemplateNameDialogComponent, {
|
dialogRef.componentInstance.server = this.server;
|
||||||
width: '400px',
|
dialogRef.afterClosed().subscribe((answer: string) => {
|
||||||
height: '250px',
|
if (answer) {
|
||||||
autoFocus: false,
|
iosTemplate.name = answer;
|
||||||
disableClose: true
|
|
||||||
});
|
this.iosService.addTemplate(this.server, iosTemplate).subscribe((template) => {
|
||||||
dialogRef.componentInstance.server = this.server;
|
this.templateService.newTemplateCreated.next(template as any as Template);
|
||||||
dialogRef.afterClosed().subscribe((answer: string) => {
|
this.toasterService.success('Template added');
|
||||||
if (answer) {
|
this.dialogRef.close();
|
||||||
iosTemplate.name = answer;
|
});
|
||||||
|
} else{
|
||||||
this.iosService.addTemplate(this.server, iosTemplate).subscribe((template) => {
|
return false;
|
||||||
this.templateService.newTemplateCreated.next(template as any as Template);
|
}
|
||||||
this.toasterService.success('Template added');
|
});
|
||||||
this.dialogRef.close();
|
|
||||||
});
|
|
||||||
} else{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
createDockerTemplate() {
|
createDockerTemplate() {
|
||||||
@ -552,36 +538,29 @@ export class NewTemplateDialogComponent implements OnInit {
|
|||||||
dockerTemplate.image = this.applianceToInstall.docker.image;
|
dockerTemplate.image = this.applianceToInstall.docker.image;
|
||||||
dockerTemplate.template_type = 'docker';
|
dockerTemplate.template_type = 'docker';
|
||||||
|
|
||||||
if (this.templates.filter(t => t.name === this.applianceToInstall.name).length === 0) {
|
const dialogRef = this.dialog.open(TemplateNameDialogComponent, {
|
||||||
dockerTemplate.name = this.applianceToInstall.name;
|
width: '400px',
|
||||||
|
height: '250px',
|
||||||
this.dockerService.addTemplate(this.server, dockerTemplate).subscribe((template) => {
|
autoFocus: false,
|
||||||
this.templateService.newTemplateCreated.next(template as any as Template);
|
disableClose: true,
|
||||||
this.toasterService.success('Template added');
|
data: {
|
||||||
this.dialogRef.close();
|
name: this.applianceToInstall.name
|
||||||
});
|
}
|
||||||
} else {
|
});
|
||||||
const dialogRef = this.dialog.open(TemplateNameDialogComponent, {
|
dialogRef.componentInstance.server = this.server;
|
||||||
width: '400px',
|
dialogRef.afterClosed().subscribe((answer: string) => {
|
||||||
height: '250px',
|
if (answer) {
|
||||||
autoFocus: false,
|
dockerTemplate.name = answer;
|
||||||
disableClose: true
|
|
||||||
});
|
this.dockerService.addTemplate(this.server, dockerTemplate).subscribe((template) => {
|
||||||
dialogRef.componentInstance.server = this.server;
|
this.templateService.newTemplateCreated.next(template as any as Template);
|
||||||
dialogRef.afterClosed().subscribe((answer: string) => {
|
this.toasterService.success('Template added');
|
||||||
if (answer) {
|
this.dialogRef.close();
|
||||||
dockerTemplate.name = answer;
|
});
|
||||||
|
} else{
|
||||||
this.dockerService.addTemplate(this.server, dockerTemplate).subscribe((template) => {
|
return false;
|
||||||
this.templateService.newTemplateCreated.next(template as any as Template);
|
}
|
||||||
this.toasterService.success('Template added');
|
});
|
||||||
this.dialogRef.close();
|
|
||||||
});
|
|
||||||
} else{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
createQemuTemplateFromVersion(version: Version) {
|
createQemuTemplateFromVersion(version: Version) {
|
||||||
@ -618,36 +597,30 @@ export class NewTemplateDialogComponent implements OnInit {
|
|||||||
qemuTemplate.template_type = 'qemu';
|
qemuTemplate.template_type = 'qemu';
|
||||||
qemuTemplate.usage = this.applianceToInstall.usage;
|
qemuTemplate.usage = this.applianceToInstall.usage;
|
||||||
|
|
||||||
if (this.templates.filter(t => t.name === this.applianceToInstall.name).length === 0) {
|
|
||||||
qemuTemplate.name = this.applianceToInstall.name;
|
const dialogRef = this.dialog.open(TemplateNameDialogComponent, {
|
||||||
|
width: '400px',
|
||||||
this.qemuService.addTemplate(this.server, qemuTemplate).subscribe((template) => {
|
height: '250px',
|
||||||
this.templateService.newTemplateCreated.next(template as any as Template);
|
autoFocus: false,
|
||||||
this.toasterService.success('Template added');
|
disableClose: true,
|
||||||
this.dialogRef.close();
|
data: {
|
||||||
});
|
name: this.applianceToInstall.name
|
||||||
} else {
|
}
|
||||||
const dialogRef = this.dialog.open(TemplateNameDialogComponent, {
|
});
|
||||||
width: '400px',
|
dialogRef.componentInstance.server = this.server;
|
||||||
height: '250px',
|
dialogRef.afterClosed().subscribe((answer: string) => {
|
||||||
autoFocus: false,
|
if (answer) {
|
||||||
disableClose: true
|
qemuTemplate.name = answer;
|
||||||
});
|
|
||||||
dialogRef.componentInstance.server = this.server;
|
this.qemuService.addTemplate(this.server, qemuTemplate).subscribe((template) => {
|
||||||
dialogRef.afterClosed().subscribe((answer: string) => {
|
this.templateService.newTemplateCreated.next(template as any as Template);
|
||||||
if (answer) {
|
this.toasterService.success('Template added');
|
||||||
qemuTemplate.name = answer;
|
this.dialogRef.close();
|
||||||
|
});
|
||||||
this.qemuService.addTemplate(this.server, qemuTemplate).subscribe((template) => {
|
} else{
|
||||||
this.templateService.newTemplateCreated.next(template as any as Template);
|
return false;
|
||||||
this.toasterService.success('Template added');
|
}
|
||||||
this.dialogRef.close();
|
});
|
||||||
});
|
|
||||||
} else{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { Component, OnInit, EventEmitter } from '@angular/core';
|
import { Component, OnInit, EventEmitter, Inject } from '@angular/core';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { MatDialog, MatDialogRef } from '@angular/material/dialog';
|
import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
|
||||||
import { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';
|
import { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';
|
||||||
import { Server } from '../../../../models/server';
|
import { Server } from '../../../../models/server';
|
||||||
import { v4 as uuid } from 'uuid';
|
import { v4 as uuid } from 'uuid';
|
||||||
@ -28,13 +28,19 @@ export class TemplateNameDialogComponent implements OnInit {
|
|||||||
private toasterService: ToasterService,
|
private toasterService: ToasterService,
|
||||||
private formBuilder: FormBuilder,
|
private formBuilder: FormBuilder,
|
||||||
private templateNameValidator: ProjectNameValidator,
|
private templateNameValidator: ProjectNameValidator,
|
||||||
private templateService: TemplateService
|
private templateService: TemplateService,
|
||||||
|
@Inject(MAT_DIALOG_DATA) public data: any
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
let name = this.data['name'];
|
||||||
this.templateNameForm = this.formBuilder.group({
|
this.templateNameForm = this.formBuilder.group({
|
||||||
templateName: new FormControl(null, [Validators.required, this.templateNameValidator.get], [templateNameAsyncValidator(this.server, this.templateService)])
|
templateName: new FormControl(name, [Validators.required, this.templateNameValidator.get], [templateNameAsyncValidator(this.server, this.templateService)])
|
||||||
});
|
});
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
this.templateNameForm.controls['templateName'].markAsTouched();
|
||||||
|
}, 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
get form() {
|
get form() {
|
||||||
|
Reference in New Issue
Block a user