refs #917 Dont send unmod partitions

develop-jenkins
Alvaro Puente Mella 2024-10-17 13:25:28 +02:00
parent 822984baca
commit 0d0ab87c35
1 changed files with 35 additions and 19 deletions

View File

@ -2,6 +2,7 @@ import { Component, Input, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';
interface Partition {
partitionNumber: number;
size: number;
type: string;
sizeBytes: number;
@ -17,11 +18,11 @@ interface Partition {
})
export class PartitionAssistantComponent implements OnInit {
@Input() data: any;
@Input() clientUuid: string | undefined;
@Input() clientUuid: string | undefined;
errorMessage = '';
originalPartitions: any[] = [];
disks: { diskNumber: number, totalDiskSize: number, partitions: Partition[] }[] = [];
disks: { diskNumber: number; totalDiskSize: number; partitions: Partition[] }[] = [];
private apiUrl = 'http://127.0.0.1:8001/partitions';
@ -35,7 +36,7 @@ export class PartitionAssistantComponent implements OnInit {
const partitionsFromData = this.data.partitions;
this.originalPartitions = JSON.parse(JSON.stringify(partitionsFromData));
const disksMap = new Map<number, { totalDiskSize: number, partitions: Partition[] }>();
const disksMap = new Map<number, { totalDiskSize: number; partitions: Partition[] }>();
partitionsFromData.forEach((partition: any) => {
if (!disksMap.has(partition.diskNumber)) {
@ -47,8 +48,9 @@ export class PartitionAssistantComponent implements OnInit {
disk!.totalDiskSize = this.convertBytesToGB(partition.size);
} else {
disk!.partitions.push({
partitionNumber: partition.partitionNumber,
size: this.convertBytesToGB(partition.size),
type: 'NTFS',
type: partition.type,
sizeBytes: partition.size,
format: false,
color: '#' + Math.floor(Math.random() * 16777215).toString(16),
@ -72,23 +74,28 @@ export class PartitionAssistantComponent implements OnInit {
}
updatePartitionPercentages(partitions: Partition[], totalDiskSize: number) {
partitions.forEach(partition => {
partitions.forEach((partition) => {
partition.percentage = (partition.size / totalDiskSize) * 100;
});
}
addPartition(diskNumber: number) {
const disk = this.disks.find(d => d.diskNumber === diskNumber);
const disk = this.disks.find((d) => d.diskNumber === diskNumber);
if (disk) {
const remainingGB = this.getRemainingGB(disk.partitions, disk.totalDiskSize);
if (remainingGB > 0) {
const maxPartitionNumber =
disk.partitions.length > 0 ? Math.max(...disk.partitions.map((p) => p.partitionNumber)) : 0;
const newPartitionNumber = maxPartitionNumber + 1;
disk.partitions.push({
partitionNumber: newPartitionNumber,
size: 0,
type: 'NTFS',
type: 'NTFS',
sizeBytes: 0,
format: false,
color: '#' + Math.floor(Math.random() * 16777215).toString(16),
color: '#' + Math.floor(Math.random() * 16777215).toString(16),
percentage: 0
});
this.updatePartitionPercentages(disk.partitions, disk.totalDiskSize);
@ -99,13 +106,15 @@ export class PartitionAssistantComponent implements OnInit {
}
updatePartitionSize(diskNumber: number, index: number, size: number) {
const disk = this.disks.find(d => d.diskNumber === diskNumber);
const disk = this.disks.find((d) => d.diskNumber === diskNumber);
if (disk) {
const partition = disk.partitions[index];
const remainingGB = this.getRemainingGB(disk.partitions, disk.totalDiskSize) + partition.size;
if (size > remainingGB) {
this.errorMessage = `El tamaño de la partición no puede superar el espacio libre (${remainingGB.toFixed(2)} GB).`;
this.errorMessage = `El tamaño de la partición no puede superar el espacio libre (${remainingGB.toFixed(
2
)} GB).`;
} else {
this.errorMessage = '';
partition.size = size;
@ -130,17 +139,24 @@ export class PartitionAssistantComponent implements OnInit {
getModifiedOrNewPartitions() {
const modifiedPartitions: any[] = [];
this.disks.forEach(disk => {
disk.partitions.forEach((partition, index) => {
this.disks.forEach((disk) => {
disk.partitions.forEach((partition) => {
const originalPartition = this.originalPartitions.find(
p => p.diskNumber === disk.diskNumber && p.partitionNumber === index + 1
(p) => p.diskNumber === disk.diskNumber && p.partitionNumber === partition.partitionNumber
);
if (!originalPartition) {
modifiedPartitions.push({ partition, diskNumber: disk.diskNumber, partitionNumber: index + 1 });
modifiedPartitions.push({
partition,
diskNumber: disk.diskNumber,
partitionNumber: partition.partitionNumber
});
} else if (this.isPartitionModified(originalPartition, partition)) {
modifiedPartitions.push({ partition, diskNumber: disk.diskNumber, partitionNumber: index + 1 });
modifiedPartitions.push({
partition,
diskNumber: disk.diskNumber,
partitionNumber: partition.partitionNumber
});
}
});
});
@ -166,10 +182,10 @@ export class PartitionAssistantComponent implements OnInit {
};
this.http.post(this.apiUrl, payload).subscribe(
response => {
(response) => {
console.log('Partición guardada exitosamente:', response);
},
error => {
(error) => {
console.error('Error al guardar la partición:', error);
}
);
@ -177,7 +193,7 @@ export class PartitionAssistantComponent implements OnInit {
}
removePartition(diskNumber: number, index: number) {
const disk = this.disks.find(d => d.diskNumber === diskNumber);
const disk = this.disks.find((d) => d.diskNumber === diskNumber);
if (disk) {
disk.partitions.splice(index, 1);