Merge branch 'master' into dependabot/npm_and_yarn/jszip-3.10.1

This commit is contained in:
Jeremy Grossmann 2023-06-30 18:08:08 +10:00 committed by GitHub
commit d06a3efd2c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 91 additions and 17 deletions

View File

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

View File

@ -1,6 +1,6 @@
setuptools==65.5.1 setuptools==65.5.1
cx_Freeze==5.1.1 cx_Freeze==5.1.1
requests==2.25.1 requests==2.31.0
packaging==20.9 packaging==20.9
appdirs==1.4.4 appdirs==1.4.4
psutil==5.8.0 psutil==5.8.0

View File

@ -77,7 +77,7 @@
</ng-container> </ng-container>
<!-- <ng-container matColumnDef="expandedDetail"> <!-- <ng-container matColumnDef="expandedDetail">
<mat-cell *matCellDef="let detail"> <mat-cell *matCellDef="let detail">
The symbol for {{detail.element}} The symbol for {{detail.element}}
</mat-cell> </mat-cell>
</ng-container> --> </ng-container> -->
@ -85,14 +85,14 @@
<mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row> <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
<mat-row *matRowDef="let row; columns: displayedColumns"></mat-row> <mat-row *matRowDef="let row; columns: displayedColumns"></mat-row>
<!-- <mat-row <!-- <mat-row
*matRowDef="let row; columns: displayedColumns;" *matRowDef="let row; columns: displayedColumns;"
matRipple matRipple
class="element-row" class="element-row"
[class.expanded]="expandedElement == row" [class.expanded]="expandedElement == row"
(click)="expandedElement = row"> (click)="expandedElement = row">
</mat-row> </mat-row>
<mat-row <mat-row
*matRowDef="let row; columns: ['expandedDetail']; when: isExpansionDetailRow" *matRowDef="let row; columns: ['expandedDetail']; when: isExpansionDetailRow"
[@detailExpand]="row.element == expandedElement ? 'expanded' : 'collapsed'" [@detailExpand]="row.element == expandedElement ? 'expanded' : 'collapsed'"
style="overflow: hidden"> style="overflow: hidden">
@ -292,6 +292,70 @@
</div> </div>
</div> </div>
<div class="list-item-inside" *ngIf="version.images.hdc_disk_image">
<span>
{{ version.images.hdb_disk_image }}
</span>
<div>
<span *ngIf="checkImageFromVersion(version.images.hdc_disk_image)"
><mat-icon matTooltip="Ready to install" matTooltipClass="custom-tooltip">check</mat-icon></span
>
<span *ngIf="!checkImageFromVersion(version.images.hdc_disk_image)"
><mat-icon matTooltip="Missing" matTooltipClass="custom-tooltip">close</mat-icon></span
>
<input
type="file"
class="non-visible"
#file4
(change)="importImage($event, version.images.hdc_disk_image)"
ng2FileSelect
[uploader]="uploaderImage"
/>
<button class="button" mat-raised-button (click)="file4.click()">Import</button>
<button
class="button"
mat-raised-button
(click)="downloadImageFromVersion(version.images.hdc_disk_image)"
>
Download
</button>
</div>
</div>
<div class="list-item-inside" *ngIf="version.images.hdd_disk_image">
<span>
{{ version.images.hdd_disk_image }}
</span>
<div>
<span *ngIf="checkImageFromVersion(version.images.hdd_disk_image)"
><mat-icon matTooltip="Ready to install" matTooltipClass="custom-tooltip">check</mat-icon></span
>
<span *ngIf="!checkImageFromVersion(version.images.hdd_disk_image)"
><mat-icon matTooltip="Missing" matTooltipClass="custom-tooltip">close</mat-icon></span
>
<input
type="file"
class="non-visible"
#file5
(change)="importImage($event, version.images.hdd_disk_image)"
ng2FileSelect
[uploader]="uploaderImage"
/>
<button class="button" mat-raised-button (click)="file5.click()">Import</button>
<button
class="button"
mat-raised-button
(click)="downloadImageFromVersion(version.images.hdd_disk_image)"
>
Download
</button>
</div>
</div>
<div class="list-item-inside" *ngIf="version.images.cdrom_image"> <div class="list-item-inside" *ngIf="version.images.cdrom_image">
<span> <span>
{{ version.images.cdrom_image}} {{ version.images.cdrom_image}}
@ -308,12 +372,12 @@
<input <input
type="file" type="file"
class="non-visible" class="non-visible"
#file4 #file6
(change)="importImage($event, version.images.cdrom_image)" (change)="importImage($event, version.images.cdrom_image)"
ng2FileSelect ng2FileSelect
[uploader]="uploaderImage" [uploader]="uploaderImage"
/> />
<button class="button" mat-raised-button (click)="file4.click()">Import</button> <button class="button" mat-raised-button (click)="file6.click()">Import</button>
<button <button
class="button" class="button"
mat-raised-button mat-raised-button

View File

@ -320,17 +320,17 @@ export class NewTemplateDialogComponent implements OnInit {
setTimeout(() => { setTimeout(() => {
if (this.qemuBinaries.length) { if (this.qemuBinaries.length) {
if (this.applianceToInstall.qemu.arch === 'x86_64') { if (this.applianceToInstall.qemu.arch === 'x86_64') {
let filtered_binaries = this.qemuBinaries.filter((n) => n.path.includes('qemu-system-x86_64')); let filtered_binaries = this.qemuBinaries.filter((n) => n.path.endsWith('qemu-system-x86_64'));
if (filtered_binaries.length) { if (filtered_binaries.length) {
this.selectedBinary = filtered_binaries[0]; this.selectedBinary = filtered_binaries[0];
} }
} else if (this.applianceToInstall.qemu.arch === 'i386') { } else if (this.applianceToInstall.qemu.arch === 'i386') {
let filtered_binaries = this.qemuBinaries.filter((n) => n.path.includes('qemu-system-i386')); let filtered_binaries = this.qemuBinaries.filter((n) => n.path.endsWith('qemu-system-i386'));
if (filtered_binaries.length) { if (filtered_binaries.length) {
this.selectedBinary = filtered_binaries[0]; this.selectedBinary = filtered_binaries[0];
} }
} else if (this.applianceToInstall.qemu.arch === 'x86_64') { } else if (this.applianceToInstall.qemu.arch === 'arm') {
let filtered_binaries = this.qemuBinaries.filter((n) => n.path.includes('qemu-system-arm')); let filtered_binaries = this.qemuBinaries.filter((n) => n.path.endsWith('qemu-system-arm'));
if (filtered_binaries.length) { if (filtered_binaries.length) {
this.selectedBinary = filtered_binaries[0]; this.selectedBinary = filtered_binaries[0];
} }
@ -364,7 +364,7 @@ export class NewTemplateDialogComponent implements OnInit {
autoFocus: false, autoFocus: false,
disableClose: true, disableClose: true,
}); });
dialogRef.componentInstance.confirmationMessage = `This is not the correct file. dialogRef.componentInstance.confirmationMessage = `This is not the correct file.
The MD5 sum is ${output} and should be ${imageToInstall.md5sum}. Do you want to accept it at your own risks?`; The MD5 sum is ${output} and should be ${imageToInstall.md5sum}. Do you want to accept it at your own risks?`;
dialogRef.afterClosed().subscribe((answer: boolean) => { dialogRef.afterClosed().subscribe((answer: boolean) => {
if (answer) { if (answer) {
@ -485,7 +485,7 @@ export class NewTemplateDialogComponent implements OnInit {
iouTemplate.startup_config = this.applianceToInstall.iou.startup_config; iouTemplate.startup_config = this.applianceToInstall.iou.startup_config;
iouTemplate.builtin = this.applianceToInstall.builtin; iouTemplate.builtin = this.applianceToInstall.builtin;
iouTemplate.category = this.getCategory(); iouTemplate.category = this.getCategory();
iouTemplate.default_name_format = this.applianceToInstall.port_name_format; iouTemplate.default_name_format = this.applianceToInstall.default_name_format;
iouTemplate.symbol = this.applianceToInstall.symbol; iouTemplate.symbol = this.applianceToInstall.symbol;
iouTemplate.compute_id = this.isGns3VmChosen ? 'vm' : 'local'; iouTemplate.compute_id = this.isGns3VmChosen ? 'vm' : 'local';
iouTemplate.template_id = uuid(); iouTemplate.template_id = uuid();
@ -534,7 +534,7 @@ export class NewTemplateDialogComponent implements OnInit {
iosTemplate.slot7 = this.applianceToInstall.dynamips.slot7; iosTemplate.slot7 = this.applianceToInstall.dynamips.slot7;
iosTemplate.builtin = this.applianceToInstall.builtin; iosTemplate.builtin = this.applianceToInstall.builtin;
iosTemplate.category = this.getCategory(); iosTemplate.category = this.getCategory();
iosTemplate.default_name_format = this.applianceToInstall.port_name_format; iosTemplate.default_name_format = this.applianceToInstall.default_name_format;
iosTemplate.symbol = this.applianceToInstall.symbol; iosTemplate.symbol = this.applianceToInstall.symbol;
iosTemplate.compute_id = this.isGns3VmChosen ? 'vm' : 'local'; iosTemplate.compute_id = this.isGns3VmChosen ? 'vm' : 'local';
iosTemplate.template_id = uuid(); iosTemplate.template_id = uuid();
@ -572,7 +572,7 @@ export class NewTemplateDialogComponent implements OnInit {
dockerTemplate.console_type = this.applianceToInstall.docker.console_type; dockerTemplate.console_type = this.applianceToInstall.docker.console_type;
dockerTemplate.builtin = this.applianceToInstall.builtin; dockerTemplate.builtin = this.applianceToInstall.builtin;
dockerTemplate.category = this.getCategory(); dockerTemplate.category = this.getCategory();
dockerTemplate.default_name_format = this.applianceToInstall.port_name_format; dockerTemplate.default_name_format = this.applianceToInstall.default_name_format;
dockerTemplate.symbol = this.applianceToInstall.symbol; dockerTemplate.symbol = this.applianceToInstall.symbol;
dockerTemplate.compute_id = this.isGns3VmChosen ? 'vm' : 'local'; dockerTemplate.compute_id = this.isGns3VmChosen ? 'vm' : 'local';
dockerTemplate.template_id = uuid(); dockerTemplate.template_id = uuid();
@ -629,12 +629,17 @@ export class NewTemplateDialogComponent implements OnInit {
qemuTemplate.category = this.getCategory(); qemuTemplate.category = this.getCategory();
qemuTemplate.first_port_name = this.applianceToInstall.first_port_name; qemuTemplate.first_port_name = this.applianceToInstall.first_port_name;
qemuTemplate.port_name_format = this.applianceToInstall.port_name_format; qemuTemplate.port_name_format = this.applianceToInstall.port_name_format;
qemuTemplate.port_segment_size = this.applianceToInstall.port_segment_size;
qemuTemplate.default_name_format = this.applianceToInstall.default_name_format
qemuTemplate.symbol = this.applianceToInstall.symbol; qemuTemplate.symbol = this.applianceToInstall.symbol;
qemuTemplate.qemu_path = this.selectedBinary.path; qemuTemplate.qemu_path = this.selectedBinary.path;
qemuTemplate.compute_id = this.isGns3VmChosen ? 'vm' : 'local'; qemuTemplate.compute_id = this.isGns3VmChosen ? 'vm' : 'local';
qemuTemplate.template_id = uuid(); qemuTemplate.template_id = uuid();
qemuTemplate.hda_disk_image = version.images.hda_disk_image; qemuTemplate.hda_disk_image = version.images.hda_disk_image;
qemuTemplate.hdb_disk_image = version.images.hdb_disk_image; qemuTemplate.hdb_disk_image = version.images.hdb_disk_image;
qemuTemplate.hdc_disk_image = version.images.hdc_disk_image;
qemuTemplate.hdd_disk_image = version.images.hdd_disk_image;
qemuTemplate.cdrom_image = version.images.cdrom_image;
qemuTemplate.template_type = 'qemu'; qemuTemplate.template_type = 'qemu';
qemuTemplate.usage = this.applianceToInstall.usage; qemuTemplate.usage = this.applianceToInstall.usage;

View File

@ -55,6 +55,9 @@ export interface Iou {
export interface Images { export interface Images {
hda_disk_image: string; hda_disk_image: string;
hdb_disk_image: string; hdb_disk_image: string;
hdc_disk_image: string;
hdd_disk_image: string;
cdrom_image: string;
} }
export interface Version { export interface Version {
@ -74,11 +77,13 @@ export interface Appliance {
maintainer_email: string; maintainer_email: string;
name: string; name: string;
port_name_format: string; port_name_format: string;
port_segment_size: number;
product_name: string; product_name: string;
product_url: string; product_url: string;
registry_version: number; registry_version: number;
status: string; status: string;
symbol: string; symbol: string;
default_name_format: string;
usage: string; usage: string;
vendor_name: string; vendor_name: string;
vendor_url: string; vendor_url: string;