refs #1884 Add clientState input to execute-command component for dynamic state handling
testing/ogGui-multibranch/pipeline/head This commit looks good
Details
testing/ogGui-multibranch/pipeline/head This commit looks good
Details
parent
844d3dc0f0
commit
558a3205ab
|
@ -10,6 +10,7 @@ import { ConfigService } from '@services/config.service';
|
||||||
styleUrls: ['./execute-command.component.css']
|
styleUrls: ['./execute-command.component.css']
|
||||||
})
|
})
|
||||||
export class ExecuteCommandComponent implements OnInit {
|
export class ExecuteCommandComponent implements OnInit {
|
||||||
|
@Input() clientState: string = 'off';
|
||||||
@Input() clientData: any[] = [];
|
@Input() clientData: any[] = [];
|
||||||
@Input() buttonType: 'icon' | 'text' | 'menu-item' = 'icon';
|
@Input() buttonType: 'icon' | 'text' | 'menu-item' = 'icon';
|
||||||
@Input() buttonText: string = 'Ejecutar Comandos';
|
@Input() buttonText: string = 'Ejecutar Comandos';
|
||||||
|
@ -45,6 +46,39 @@ export class ExecuteCommandComponent implements OnInit {
|
||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
this.clientData = this.clientData || [];
|
this.clientData = this.clientData || [];
|
||||||
|
this.updateCommandStates();
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnChanges(): void {
|
||||||
|
this.updateCommandStates();
|
||||||
|
}
|
||||||
|
|
||||||
|
private updateCommandStates(): void {
|
||||||
|
let states: string[] = [];
|
||||||
|
|
||||||
|
if (this.clientData.length > 0) {
|
||||||
|
states = this.clientData.map(client => client.status);
|
||||||
|
} else if (this.clientState) {
|
||||||
|
states = [this.clientState];
|
||||||
|
}
|
||||||
|
|
||||||
|
const allOff = states.every(state => state === 'off');
|
||||||
|
const allSameState = states.every(state => state === states[0]);
|
||||||
|
|
||||||
|
this.arrayCommands = this.arrayCommands.map(command => {
|
||||||
|
if (allOff) {
|
||||||
|
command.disabled = command.slug !== 'power-on';
|
||||||
|
} else if (allSameState) {
|
||||||
|
if (states[0] === 'off') {
|
||||||
|
command.disabled = command.slug !== 'power-on';
|
||||||
|
} else {
|
||||||
|
command.disabled = command.slug === 'power-on';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
command.disabled = true;
|
||||||
|
}
|
||||||
|
return command;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
onCommandSelect(action: any): void {
|
onCommandSelect(action: any): void {
|
||||||
|
@ -137,7 +171,7 @@ export class ExecuteCommandComponent implements OnInit {
|
||||||
const clientDataToSend = this.clientData.map(client => ({
|
const clientDataToSend = this.clientData.map(client => ({
|
||||||
name: client.name,
|
name: client.name,
|
||||||
mac: client.mac,
|
mac: client.mac,
|
||||||
uuid: '/clients/'+client.uuid,
|
uuid: '/clients/' + client.uuid,
|
||||||
status: client.status,
|
status: client.status,
|
||||||
partitions: client.partitions,
|
partitions: client.partitions,
|
||||||
firmwareType: client.firmwareType,
|
firmwareType: client.firmwareType,
|
||||||
|
@ -161,7 +195,7 @@ export class ExecuteCommandComponent implements OnInit {
|
||||||
const clientDataToSend = this.clientData.map(client => ({
|
const clientDataToSend = this.clientData.map(client => ({
|
||||||
name: client.name,
|
name: client.name,
|
||||||
mac: client.mac,
|
mac: client.mac,
|
||||||
uuid: '/clients/'+client.uuid,
|
uuid: '/clients/' + client.uuid,
|
||||||
status: client.status,
|
status: client.status,
|
||||||
partitions: client.partitions,
|
partitions: client.partitions,
|
||||||
ip: client.ip
|
ip: client.ip
|
||||||
|
@ -178,7 +212,7 @@ export class ExecuteCommandComponent implements OnInit {
|
||||||
const clientDataToSend = this.clientData.map(client => ({
|
const clientDataToSend = this.clientData.map(client => ({
|
||||||
name: client.name,
|
name: client.name,
|
||||||
mac: client.mac,
|
mac: client.mac,
|
||||||
uuid: '/clients/'+client.uuid,
|
uuid: '/clients/' + client.uuid,
|
||||||
status: client.status,
|
status: client.status,
|
||||||
partitions: client.partitions,
|
partitions: client.partitions,
|
||||||
ip: client.ip
|
ip: client.ip
|
||||||
|
@ -190,6 +224,4 @@ export class ExecuteCommandComponent implements OnInit {
|
||||||
console.log('Navigated to run script with data:', clientDataToSend);
|
console.log('Navigated to run script with data:', clientDataToSend);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -260,7 +260,7 @@
|
||||||
<span class="client-ip">{{ client.mac }}</span>
|
<span class="client-ip">{{ client.mac }}</span>
|
||||||
<div class="action-icons">
|
<div class="action-icons">
|
||||||
|
|
||||||
<app-execute-command [clientData]="[client]" [buttonType]="'icon'" [icon]="'terminal'"
|
<app-execute-command [clientState]="client.status" [clientData]="[client]" [buttonType]="'icon'" [icon]="'terminal'"
|
||||||
[disabled]="selection.selected.length > 1 || (selection.selected.length === 1 && !selection.isSelected(client))"></app-execute-command>
|
[disabled]="selection.selected.length > 1 || (selection.selected.length === 1 && !selection.isSelected(client))"></app-execute-command>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
|
@ -395,7 +395,7 @@
|
||||||
mat-icon-button [matMenuTriggerFor]="clientMenu" color="primary">
|
mat-icon-button [matMenuTriggerFor]="clientMenu" color="primary">
|
||||||
<mat-icon>more_vert</mat-icon>
|
<mat-icon>more_vert</mat-icon>
|
||||||
</button>
|
</button>
|
||||||
<app-execute-command [clientData]="[client]" [buttonType]="'icon'" [icon]="'terminal'"
|
<app-execute-command [clientState]="client.status" [clientData]="[client]" [buttonType]="'icon'" [icon]="'terminal'"
|
||||||
[disabled]="selection.selected.length > 1 || (selection.selected.length === 1 && !selection.isSelected(client))">
|
[disabled]="selection.selected.length > 1 || (selection.selected.length === 1 && !selection.isSelected(client))">
|
||||||
</app-execute-command>
|
</app-execute-command>
|
||||||
<mat-menu #clientMenu="matMenu">
|
<mat-menu #clientMenu="matMenu">
|
||||||
|
|
Loading…
Reference in New Issue