feat(remotepc): add UI toggle for reboot on unreserve and fix CSS syntax error
oggui-debian-package/pipeline/head This commit looks good Details
testing/ogGui-multibranch/pipeline/head There was a failure building this commit Details
oggui-debian-package/pipeline/tag This commit looks good Details

main 1.13.0
Juan Manuel Bardallo 2026-10-02 13:57:56 +02:00
parent 25d9f138b4
commit bdfe4ac0df
8 changed files with 1501 additions and 1482 deletions

View File

@ -1,5 +1,13 @@
# Changelog # Changelog
## [1.13.0] - 2026-10-02
### Added
- **RemotePC**: Añadido un botón deslizable (toggle) en el panel de configuración de Unidades Organizativas (aulas) para habilitar el reinicio de equipos en lugar de apagado cuando son liberados por UDS.
### Fixed
- **UI/UX**: Solucionado un error de compilación y renderizado en `partition-assistant.component.css` causado por la inserción involuntaria de caracteres nulos (UTF-16) ocultos en el código fuente.
## [1.12.0] - 2026-09-30 ## [1.12.0] - 2026-09-30
### Added ### Added

View File

@ -72,6 +72,7 @@ export interface TreeNode {
type: string; type: string;
'@id'?: string; '@id'?: string;
remotePc?: boolean; remotePc?: boolean;
remotePcRebootOnUnreserve?: boolean;
children?: TreeNode[]; children?: TreeNode[];
hasClients?: boolean; hasClients?: boolean;
clients?: Client[]; clients?: Client[];
@ -88,6 +89,7 @@ export interface FlatNode {
expandable: boolean; expandable: boolean;
hasClients?: boolean; hasClients?: boolean;
remotePc?: boolean; remotePc?: boolean;
remotePcRebootOnUnreserve?: boolean;
networkSettings?: Object; networkSettings?: Object;
ip?: string; ip?: string;
'@id'?: string; '@id'?: string;

View File

@ -68,6 +68,9 @@
<mat-slide-toggle formControlName="projector">{{ 'projectorAlt' | translate }}</mat-slide-toggle> <mat-slide-toggle formControlName="projector">{{ 'projectorAlt' | translate }}</mat-slide-toggle>
<mat-slide-toggle formControlName="board">{{ 'boardToggle' | translate }}</mat-slide-toggle> <mat-slide-toggle formControlName="board">{{ 'boardToggle' | translate }}</mat-slide-toggle>
<mat-slide-toggle formControlName="remotePc">{{ 'remotePcLabel' | translate }}</mat-slide-toggle> <mat-slide-toggle formControlName="remotePc">{{ 'remotePcLabel' | translate }}</mat-slide-toggle>
@if (classroomInfoFormGroup.get('remotePc')?.value) {
<mat-slide-toggle formControlName="remotePcRebootOnUnreserve">{{ 'remotePcRebootOnUnreserveLabel' | translate }}</mat-slide-toggle>
}
</div> </div>
</form> </form>
} }

View File

@ -110,6 +110,7 @@ export class ManageOrganizationalUnitComponent implements OnInit {
projector: [false], projector: [false],
board: [false], board: [false],
remotePc: [false], remotePc: [false],
remotePcRebootOnUnreserve: [false],
capacity: [null, [Validators.required, Validators.min(0)]], capacity: [null, [Validators.required, Validators.min(0)]],
remoteCalendar: [null] remoteCalendar: [null]
}); });
@ -285,6 +286,7 @@ export class ManageOrganizationalUnitComponent implements OnInit {
projector: data.projector, projector: data.projector,
board: data.board, board: data.board,
remotePc: data.remotePc ?? false, remotePc: data.remotePc ?? false,
remotePcRebootOnUnreserve: data.remotePcRebootOnUnreserve ?? false,
capacity: data.capacity, capacity: data.capacity,
remoteCalendar: data.remoteCalendar ? data.remoteCalendar['@id'] : null remoteCalendar: data.remoteCalendar ? data.remoteCalendar['@id'] : null
}); });
@ -360,6 +362,7 @@ export class ManageOrganizationalUnitComponent implements OnInit {
projector: this.classroomInfoFormGroup.value.projector, projector: this.classroomInfoFormGroup.value.projector,
board: this.classroomInfoFormGroup.value.board, board: this.classroomInfoFormGroup.value.board,
remotePc: this.classroomInfoFormGroup.value.remotePc, remotePc: this.classroomInfoFormGroup.value.remotePc,
remotePcRebootOnUnreserve: this.classroomInfoFormGroup.value.remotePcRebootOnUnreserve,
capacity: this.classroomInfoFormGroup.value.capacity, capacity: this.classroomInfoFormGroup.value.capacity,
}; };

View File

@ -1186,6 +1186,7 @@
"remotePc": "Remote Pc", "remotePc": "Remote Pc",
"remotePcCalendarRuleInfo": "(Els dies i hores seleccionats es marcaran com a aula no disponible per a remote pc.)", "remotePcCalendarRuleInfo": "(Els dies i hores seleccionats es marcaran com a aula no disponible per a remote pc.)",
"remotePcLabel": "PC remot", "remotePcLabel": "PC remot",
"remotePcRebootOnUnreserveLabel": "Reiniciar l'equip en alliberar la reserva",
"remotePcStatusAvailable": "Disponible per a Remote PC", "remotePcStatusAvailable": "Disponible per a Remote PC",
"remotePcStatusUnavailable": "No disponible per a Remote PC", "remotePcStatusUnavailable": "No disponible per a Remote PC",
"removedSuccessfully": "Eliminat correctament", "removedSuccessfully": "Eliminat correctament",

View File

@ -1186,6 +1186,7 @@
"remotePc": "Remote Pc", "remotePc": "Remote Pc",
"remotePcCalendarRuleInfo": "(The selected days and hours will be marked as unavailable for remote pc.)", "remotePcCalendarRuleInfo": "(The selected days and hours will be marked as unavailable for remote pc.)",
"remotePcLabel": "Remote PC", "remotePcLabel": "Remote PC",
"remotePcRebootOnUnreserveLabel": "Reboot computer upon releasing reservation",
"remotePcStatusAvailable": "Remote PC status available", "remotePcStatusAvailable": "Remote PC status available",
"remotePcStatusUnavailable": "Remote PC status unavailable", "remotePcStatusUnavailable": "Remote PC status unavailable",
"removedSuccessfully": "Deleted successfully", "removedSuccessfully": "Deleted successfully",

View File

@ -1186,6 +1186,7 @@
"remotePc": "Remote Pc", "remotePc": "Remote Pc",
"remotePcCalendarRuleInfo": "(Los dias y horas seleccionados se marcarán como aula no disponible para remote pc.)", "remotePcCalendarRuleInfo": "(Los dias y horas seleccionados se marcarán como aula no disponible para remote pc.)",
"remotePcLabel": "PC remoto", "remotePcLabel": "PC remoto",
"remotePcRebootOnUnreserveLabel": "Reiniciar equipo al liberar reserva",
"remotePcStatusAvailable": "Disponible para Remote PC", "remotePcStatusAvailable": "Disponible para Remote PC",
"remotePcStatusUnavailable": "No disponible para Remote PC", "remotePcStatusUnavailable": "No disponible para Remote PC",
"removedSuccessfully": "Eliminado con éxito", "removedSuccessfully": "Eliminado con éxito",