Merge pull request #1538 from GNS3/release/v2.2.53
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / build (push) Has been cancelled

Release v2.2.53
This commit is contained in:
Jeremy Grossmann 2025-01-21 12:31:35 +07:00 committed by GitHub
commit fecebdd0a7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 35 additions and 11 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "gns3-web-ui", "name": "gns3-web-ui",
"version": "2.2.52", "version": "2.2.53",
"author": { "author": {
"name": "GNS3 Technology Inc.", "name": "GNS3 Technology Inc.",
"email": "developers@gns3.com" "email": "developers@gns3.com"

View File

@ -30,6 +30,7 @@ export class PortsComponent implements OnInit {
} }
onAdd() { onAdd() {
this.newPort.name = "Ethernet" + this.newPort.port_number;
this.ethernetPorts.push(this.newPort); this.ethernetPorts.push(this.newPort);
this.newPort = { this.newPort = {

View File

@ -170,7 +170,7 @@
</mat-select> </mat-select>
</div> </div>
<div> <div>
Install required files Install the required files
<button <button
mat-icon-button mat-icon-button
matTooltip="Refresh list of images" matTooltip="Refresh list of images"
@ -441,7 +441,7 @@
</mat-radio-group> </mat-radio-group>
</div> </div>
<div> <div>
Install required files Install the required images
<button <button
mat-icon-button mat-icon-button
matTooltip="Refresh list of images" matTooltip="Refresh list of images"
@ -453,10 +453,16 @@
<mat-list> <mat-list>
<mat-list-item *ngFor="let image of applianceToInstall.images"> <mat-list-item *ngFor="let image of applianceToInstall.images">
<div class="list-item"> <div class="list-item">
<div> <span>
{{ image.filename }} {{ image.filename }}
</div> </span>
<div> <div>
<span *ngIf="checkImageFromVersion(image.filename)">
<mat-icon matTooltip="Ready to install" matTooltipClass="custom-tooltip">check</mat-icon>
</span>
<span *ngIf="!checkImageFromVersion(image.filename)">
<mat-icon matTooltip="Missing" matTooltipClass="custom-tooltip">close</mat-icon>
</span>
<input <input
type="file" type="file"
class="non-visible" class="non-visible"
@ -499,7 +505,7 @@
</mat-radio-group> </mat-radio-group>
</div> </div>
<div> <div>
Install required files Install the required images
<button <button
mat-icon-button mat-icon-button
matTooltip="Refresh list of images" matTooltip="Refresh list of images"
@ -511,9 +517,15 @@
<mat-list> <mat-list>
<mat-list-item *ngFor="let image of applianceToInstall.images"> <mat-list-item *ngFor="let image of applianceToInstall.images">
<div class="list-item"> <div class="list-item">
<div> <span>
{{ image.filename }} {{ image.filename }}
</div> </span>
<span *ngIf="checkImageFromVersion(image.filename)">
<mat-icon matTooltip="Ready to install" matTooltipClass="custom-tooltip">check</mat-icon>
</span>
<span *ngIf="!checkImageFromVersion(image.filename)">
<mat-icon matTooltip="Missing" matTooltipClass="custom-tooltip">close</mat-icon>
</span>
<div> <div>
<input <input
type="file" type="file"

View File

@ -143,7 +143,7 @@ export class NewTemplateDialogComponent implements OnInit {
this.qemuBinaries = binaries; this.qemuBinaries = binaries;
}); });
this.uploader = new FileUploader({}); this.uploader = new FileUploader({url: ''});
this.uploader.onAfterAddingFile = (file) => { this.uploader.onAfterAddingFile = (file) => {
file.withCredentials = false; file.withCredentials = false;
}; };
@ -162,7 +162,7 @@ export class NewTemplateDialogComponent implements OnInit {
this.getAppliance(item.url); this.getAppliance(item.url);
}; };
this.uploaderImage = new FileUploader({}); this.uploaderImage = new FileUploader({url: ''});
this.uploaderImage.onAfterAddingFile = (file) => { this.uploaderImage.onAfterAddingFile = (file) => {
file.withCredentials = false; file.withCredentials = false;
}; };

View File

@ -3,7 +3,7 @@ import { Injectable } from '@angular/core';
@Injectable() @Injectable()
export class ProjectNameValidator { export class ProjectNameValidator {
get(projectName) { get(projectName) {
var pattern = new RegExp(/[~`!#$%\^&*+=\[\]\\';,/{}|\\":<>\?]/); var pattern = new RegExp(/[~`!#$%\^&*+=\[\]\\';,/{}|\\"<>\?]/);
if (!pattern.test(projectName.value)) { if (!pattern.test(projectName.value)) {
return null; return null;

View File

@ -31,6 +31,11 @@ export class MapSettingsService {
} else { } else {
localStorage.setItem('symbolScaling', 'true'); localStorage.setItem('symbolScaling', 'true');
} }
if (localStorage.getItem('showInterfaceLabels')) {
this.showInterfaceLabels = localStorage.getItem('showInterfaceLabels') === 'true' ? true : false;
} else {
localStorage.setItem('showInterfaceLabels', 'true');
}
} }
public getSymbolScaling(): boolean { public getSymbolScaling(): boolean {
@ -72,6 +77,12 @@ export class MapSettingsService {
toggleShowInterfaceLabels(value: boolean) { toggleShowInterfaceLabels(value: boolean) {
this.showInterfaceLabels = value; this.showInterfaceLabels = value;
localStorage.removeItem('showInterfaceLabels');
if (value) {
localStorage.setItem('showInterfaceLabels', 'true');
} else {
localStorage.setItem('showInterfaceLabels', 'false');
}
} }
toggleIntegrateInterfaceLabels(value: boolean) { toggleIntegrateInterfaceLabels(value: boolean) {