feat(oggui): ask to queue reboot/poweroff if client is busy
testing/ogGui-multibranch/pipeline/head There was a failure building this commit Details
testing/ogGui-multibranch/pipeline/pr-main Build started... Details

Show a confirmation modal before sending reboot and poweroff requests,
allowing the user to choose whether to queue the command when the client
is busy (HTTP 409). Passes the 'queue' flag to the API accordingly.
encolar_poweroff_reboot
Nicolas Arenas 2026-05-08 07:14:06 +02:00
parent dcfb7c7d07
commit df3ff55fb8
1 changed files with 27 additions and 20 deletions

View File

@ -10,6 +10,7 @@ import { MatDialog } from "@angular/material/dialog";
import { RemoveCacheImageComponent } from "./remove-cache-image/remove-cache-image.component";
import { AuthService } from '@services/auth.service';
import {SoftwareProfilePartitionComponent} from "./software-profile-partition/software-profile-partition.component";
import { QueueConfirmationModalComponent } from '../../../../shared/queue-confirmation-modal/queue-confirmation-modal.component';
@Component({
selector: 'app-execute-command',
@ -196,16 +197,19 @@ export class ExecuteCommandComponent implements OnInit {
}
rebootClient(): void {
this.http.post(`${this.baseUrl}/clients/server/reboot`, {
clients: this.clientData.map((client: any) => client['@id'])
}).subscribe(
response => {
this.toastService.success(this.translate.instant('clientUpdatedSuccessfully'));
},
error => {
this.toastService.error(error.error['hydra:description'] || 'Error de conexión con el cliente');
}
);
const dialogRef = this.dialog.open(QueueConfirmationModalComponent, { width: '400px' });
dialogRef.afterClosed().subscribe((queue: boolean | undefined) => {
if (queue === undefined) return;
this.http.post(`${this.baseUrl}/clients/server/reboot`, {
clients: this.clientData.map((client: any) => client['@id']),
queue
}).subscribe(
() => { this.toastService.success(this.translate.instant('clientUpdatedSuccessfully')); },
(error: any) => { this.toastService.error(error.error['hydra:description'] || 'Error de conexión con el cliente'); }
);
});
}
refreshClient(): void {
@ -332,16 +336,19 @@ export class ExecuteCommandComponent implements OnInit {
}
powerOffClient(): void {
this.http.post(`${this.baseUrl}/clients/server/power-off`, {
clients: this.clientData.map((client: any) => client['@id'])
}).subscribe(
response => {
this.toastService.success(this.translate.instant('shutdownRequestSentCorrectly'));
},
error => {
this.toastService.error(error.error['hydra:description'] || 'Error de conexión con el cliente');
}
);
const dialogRef = this.dialog.open(QueueConfirmationModalComponent, { width: '400px' });
dialogRef.afterClosed().subscribe((queue: boolean | undefined) => {
if (queue === undefined) return;
this.http.post(`${this.baseUrl}/clients/server/power-off`, {
clients: this.clientData.map((client: any) => client['@id']),
queue
}).subscribe(
() => { this.toastService.success(this.translate.instant('shutdownRequestSentCorrectly')); },
(error: any) => { this.toastService.error(error.error['hydra:description'] || 'Error de conexión con el cliente'); }
);
});
}
openPartitionAssistant(): void {