diff --git a/ogWebconsole/src/app/app.module.ts b/ogWebconsole/src/app/app.module.ts
index 7f5df2f..e2712a2 100644
--- a/ogWebconsole/src/app/app.module.ts
+++ b/ogWebconsole/src/app/app.module.ts
@@ -1,4 +1,20 @@
-import { NgModule, CUSTOM_ELEMENTS_SCHEMA, LOCALE_ID, APP_INITIALIZER } from '@angular/core';
+import { NgModule, CUSTOM_ELEMENTS_SCHEMA, LOCALE_ID, APP_INITIALIZER, Injectable } from '@angular/core';
+import { MatPaginatorIntl } from '@angular/material/paginator';
+
+@Injectable()
+class SpanishPaginatorIntl extends MatPaginatorIntl {
+ override itemsPerPageLabel = 'Elementos por página:';
+ override nextPageLabel = 'Siguiente';
+ override previousPageLabel = 'Anterior';
+ override firstPageLabel = 'Primera página';
+ override lastPageLabel = 'Última página';
+ override getRangeLabel = (page: number, pageSize: number, length: number) => {
+ if (length === 0 || pageSize === 0) return `0 de ${length}`;
+ const startIndex = page * pageSize;
+ const endIndex = Math.min(startIndex + pageSize, length);
+ return `${startIndex + 1} – ${endIndex} de ${length}`;
+ };
+}
import { ConfigService } from './services/config.service';
import { BrowserModule } from '@angular/platform-browser';
import { AppRoutingModule } from './app-routing.module';
@@ -106,6 +122,7 @@ import { RepositoriesComponent } from './components/repositories/repositories.co
import { ManageRepositoryComponent } from './components/repositories/manage-repository/manage-repository.component';
import { ExecuteCommandComponent } from './components/commands/main-commands/execute-command/execute-command.component';
import { DeployImageComponent } from './components/groups/components/client-main-view/deploy-image/deploy-image.component';
+import { DeployMethodConfigDialogComponent } from './components/groups/components/client-main-view/deploy-image/deploy-method-config-dialog/deploy-method-config-dialog.component';
import { MainRepositoryViewComponent } from './components/repositories/main-repository-view/main-repository-view.component';
import { ExecuteCommandOuComponent } from './components/groups/shared/execute-command-ou/execute-command-ou.component';
import { JoyrideModule } from 'ngx-joyride';
@@ -249,6 +266,7 @@ registerLocaleData(localeEs, 'es-ES');
ExecuteCommandComponent,
ExecuteCommandOuComponent,
DeployImageComponent,
+ DeployMethodConfigDialogComponent,
MainRepositoryViewComponent,
EnvVarsComponent,
MenusComponent,
@@ -360,6 +378,7 @@ registerLocaleData(localeEs, 'es-ES');
multi: true
},
{ provide: LOCALE_ID, useValue: 'es-ES' },
+ { provide: MatPaginatorIntl, useClass: SpanishPaginatorIntl },
provideAnimationsAsync(),
provideHttpClient(withInterceptorsFromDi()),
ConfigService,
diff --git a/ogWebconsole/src/app/components/commands/commands-task/commands-task.component.css b/ogWebconsole/src/app/components/commands/commands-task/commands-task.component.css
index b215f90..25e66c5 100644
--- a/ogWebconsole/src/app/components/commands/commands-task/commands-task.component.css
+++ b/ogWebconsole/src/app/components/commands/commands-task/commands-task.component.css
@@ -78,7 +78,7 @@ table {
}
/* Estilos para los botones de gestión */
-.schedule-btn, .script-btn {
+.schedule-btn, .script-btn, .traces-btn {
display: inline-flex;
align-items: center;
justify-content: center;
@@ -114,7 +114,17 @@ table {
box-shadow: 0 4px 12px rgba(76, 175, 80, 0.3);
}
-.schedule-btn mat-icon, .script-btn mat-icon {
+.traces-btn {
+ background: linear-gradient(135deg, #ff9800 0%, #f57c00 100%);
+ color: white;
+}
+
+.traces-btn:hover {
+ transform: translateY(-1px);
+ box-shadow: 0 4px 12px rgba(255, 152, 0, 0.3);
+}
+
+.schedule-btn mat-icon, .script-btn mat-icon, .traces-btn mat-icon {
font-size: 18px;
width: 18px;
height: 18px;
@@ -123,15 +133,58 @@ table {
justify-content: center;
}
-.schedule-btn span, .script-btn span {
+.schedule-btn span, .script-btn span, .traces-btn span {
display: inline-block;
vertical-align: middle;
line-height: 1.2;
}
+/* Indicadores de estado de trazas */
+.trace-stats {
+ display: flex;
+ gap: 4px;
+ align-items: center;
+}
+
+.trace-badge {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ min-width: 24px;
+ height: 24px;
+ border-radius: 12px;
+ font-size: 12px;
+ font-weight: 600;
+ color: white;
+ padding: 0 6px;
+ cursor: default;
+}
+
+.trace-success {
+ background-color: #4caf50;
+}
+
+.trace-in-progress {
+ background-color: #2196f3;
+}
+
+.trace-pending {
+ background-color: #ff9800;
+}
+
+.trace-failed {
+ background-color: #f44336;
+}
+
+.trace-no-data {
+ color: #999;
+ font-style: italic;
+ font-size: 13px;
+}
+
/* Responsive para los botones */
@media (max-width: 768px) {
- .schedule-btn, .script-btn {
+ .schedule-btn, .script-btn, .traces-btn {
width: 100%;
justify-content: center;
margin: 4px 0;
diff --git a/ogWebconsole/src/app/components/commands/commands-task/commands-task.component.html b/ogWebconsole/src/app/components/commands/commands-task/commands-task.component.html
index 993c225..54f469d 100644
--- a/ogWebconsole/src/app/components/commands/commands-task/commands-task.component.html
+++ b/ogWebconsole/src/app/components/commands/commands-task/commands-task.component.html
@@ -46,11 +46,11 @@