diff --git a/CHANGELOG.md b/CHANGELOG.md index 34c511e..e2a0778 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## [1.5.0] - 2026-04-21 +### Added +- Añadida gestión de múltiples ogBoot Servers +- Si es un ogBoot existente, permite sincronizar su información sobre oglives y plantillas pxe. +- En los Ajustes de red de equipos, aulas y grupos, ahora se debe seleccionar servidor ogBoot y luego oglive y plantilla dentro de dicho servidor. + ## [1.4.0] - 2026-04-16 ### Added - Añadida gestión de múltiples Dhcps diff --git a/ogWebconsole/src/app/app-routing.module.ts b/ogWebconsole/src/app/app-routing.module.ts index 75ce24e..0ef750c 100644 --- a/ogWebconsole/src/app/app-routing.module.ts +++ b/ogWebconsole/src/app/app-routing.module.ts @@ -36,6 +36,7 @@ import { EnvVarsComponent } from "./components/admin/env-vars/env-vars.component import { MenusComponent } from "./components/menus/menus.component"; import { OgDhcpSubnetsComponent } from "./components/ogdhcp/og-dhcp-subnets.component"; import { DhcpServersComponent } from './components/ogdhcp/dhcp-servers/dhcp-servers.component'; +import { BootServersComponent } from './components/ogboot/boot-servers/boot-servers.component'; import { RunScriptAssistantComponent @@ -45,6 +46,7 @@ import { LogoutGuard } from './guards/logout.guard'; import { HardwareComponent } from './components/hardware/hardware.component'; import { HardwareProfileComponent } from './components/hardware-profile/hardware-profile.component'; import { HardwareTypeComponent } from './components/hardware-type/hardware-type.component'; +import { BootServerDashboardComponent } from './components/ogboot/boot-server-dashboard/boot-server-dashboard.component'; const routes: Routes = [ { path: '', redirectTo: 'auth/login', pathMatch: 'full' }, { @@ -60,6 +62,8 @@ const routes: Routes = [ { path: 'ogboot-status', component: OgbootStatusComponent, canActivate: [roleGuard], data: { allowedRoles: ['super-admin', 'ou-admin'] } }, { path: 'subnets', component: OgDhcpSubnetsComponent, canActivate: [roleGuard], data: { allowedRoles: ['super-admin', 'ou-admin'] } }, { path: 'dhcp-servers', component: DhcpServersComponent, canActivate: [roleGuard], data: { allowedRoles: ['super-admin', 'ou-admin'] } }, + { path: 'boot-servers', component: BootServersComponent, canActivate: [roleGuard], data: { allowedRoles: ['super-admin', 'ou-admin'] } }, + { path: 'boot-servers/:uuid', component: BootServerDashboardComponent, canActivate: [roleGuard], data: { allowedRoles: ['super-admin', 'ou-admin'] } }, { path: 'commands', component: CommandsComponent, canActivate: [roleGuard], data: { allowedRoles: ['super-admin', 'ou-admin'] } }, { path: 'commands-groups', component: CommandsGroupsComponent, canActivate: [roleGuard], data: { allowedRoles: ['super-admin', 'ou-admin'] } }, { path: 'commands-task', component: CommandsTaskComponent, canActivate: [roleGuard], data: { allowedRoles: ['super-admin', 'ou-admin'] } }, diff --git a/ogWebconsole/src/app/app.module.ts b/ogWebconsole/src/app/app.module.ts index 922ca60..1a542d8 100644 --- a/ogWebconsole/src/app/app.module.ts +++ b/ogWebconsole/src/app/app.module.ts @@ -58,10 +58,10 @@ import { MatProgressSpinner } from "@angular/material/progress-spinner"; import { MatProgressBarModule } from '@angular/material/progress-bar'; import { MatMenu, MatMenuItem, MatMenuTrigger } from "@angular/material/menu"; import { MatAutocomplete, MatAutocompleteTrigger } from "@angular/material/autocomplete"; -import { MatChip, MatChipListbox, MatChipOption, MatChipSet, MatChipsModule } from "@angular/material/chips"; +import { MatChipsModule } from "@angular/material/chips"; import { ClientViewComponent } from './components/groups/shared/client-view/client-view.component'; -import { MatTab, MatTabGroup } from "@angular/material/tabs"; -import { MatTooltip } from "@angular/material/tooltip"; +import { MatTabsModule } from "@angular/material/tabs"; +import { MatTooltipModule } from "@angular/material/tooltip"; import { MatExpansionModule } from '@angular/material/expansion'; import { DragDropModule } from '@angular/cdk/drag-drop'; import { ToastrModule } from 'ngx-toastr'; @@ -193,6 +193,9 @@ import { HardwareCollectionModalComponent } from './components/hardware-profile/ import { HardwareTypeComponent } from './components/hardware-type/hardware-type.component'; import { ShowDetailsComponent } from './components/hardware-type/show-details/show-details.component'; import { DiskPartitionSelectorComponent } from './components/groups/shared/disk-partition-selector/disk-partition-selector.component'; +import { BootServersComponent } from './components/ogboot/boot-servers/boot-servers.component'; +import { ManageBootServerComponent } from './components/ogboot/manage-boot-server/manage-boot-server.component'; +import { BootServerDashboardComponent } from './components/ogboot/boot-server-dashboard/boot-server-dashboard.component'; export function HttpLoaderFactory(http: HttpClient) { return new TranslateHttpLoader(http, './locale/', '.json'); } @@ -324,7 +327,10 @@ registerLocaleData(localeEs, 'es-ES'); HardwareCollectionModalComponent, HardwareTypeComponent, ShowDetailsComponent, - AssetManagerModalComponent + AssetManagerModalComponent, + BootServersComponent, + ManageBootServerComponent, + BootServerDashboardComponent ], bootstrap: [AppComponent], imports: [BrowserModule, @@ -349,7 +355,7 @@ registerLocaleData(localeEs, 'es-ES'); MatProgressBarModule, MatStepperModule, DragDropModule, - MatSlideToggleModule, MatMenu, MatMenuTrigger, MatMenuItem, MatAutocomplete, MatChipListbox, MatChipOption, MatChipSet, MatChipsModule, MatChip, MatProgressSpinner, MatTabGroup, MatTab, MatTooltip, + MatSlideToggleModule, MatMenu, MatMenuTrigger, MatMenuItem, MatAutocomplete, MatChipsModule, MatProgressSpinner, MatTabsModule, MatTooltipModule, MatExpansionModule, NgxChartsModule, MatDatepickerModule, diff --git a/ogWebconsole/src/app/components/groups/shared/clients/manage-client/manage-client.component.css b/ogWebconsole/src/app/components/groups/shared/clients/manage-client/manage-client.component.css index 3ae50b9..30efd99 100644 --- a/ogWebconsole/src/app/components/groups/shared/clients/manage-client/manage-client.component.css +++ b/ogWebconsole/src/app/components/groups/shared/clients/manage-client/manage-client.component.css @@ -53,4 +53,28 @@ mat-option .unit-path { justify-content: flex-end; gap: 1em; padding: 1.5em; +} + +/* Boot grouping */ +.boot-group { + grid-column: 1 / -1; + border: 1px solid #c5c5c5; + border-radius: 6px; + padding: 12px 16px 4px 16px; + margin: 0; +} + +.boot-group-legend { + font-size: 0.78rem; + color: #3f51b5; + font-weight: 600; + letter-spacing: 0.04em; + padding: 0 6px; + text-transform: uppercase; +} + +.boot-group-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + column-gap: 20px; } \ No newline at end of file diff --git a/ogWebconsole/src/app/components/groups/shared/clients/manage-client/manage-client.component.html b/ogWebconsole/src/app/components/groups/shared/clients/manage-client/manage-client.component.html index 75febb5..2c1cc0e 100644 --- a/ogWebconsole/src/app/components/groups/shared/clients/manage-client/manage-client.component.html +++ b/ogWebconsole/src/app/components/groups/shared/clients/manage-client/manage-client.component.html @@ -3,16 +3,19 @@