refs #2605. Added new status 'sent'
testing/ogGui-multibranch/pipeline/head There was a failure building this commit
Details
testing/ogGui-multibranch/pipeline/head There was a failure building this commit
Details
parent
e5524b233e
commit
1ad29b27e3
|
@ -1,4 +1,9 @@
|
|||
# Changelog
|
||||
## [0.19.0] - 2025-08-06
|
||||
### Added
|
||||
- Se ha añadido un nuevo estado "enviado" para cuando se ejecuten acciones a equipos en estado Windows o Linux
|
||||
|
||||
---
|
||||
## [0.18.0] - 2025-08-04
|
||||
### Added
|
||||
- Se ha añadido la posibilidad de visualizar logs en tiempo real de Grafana. Tanto en los componentes como en los clientes.
|
||||
|
|
|
@ -117,6 +117,11 @@
|
|||
color: white;
|
||||
}
|
||||
|
||||
.chip-sent {
|
||||
background-color: #b19cd9 !important;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.status-progress-flex {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
|
|
@ -72,9 +72,11 @@
|
|||
text="{{ 'tracesProgressStepText' | translate }}">
|
||||
<mat-chip [ngClass]="{
|
||||
'chip-pending': trace.status === 'pending',
|
||||
'chip-sent': trace.status === 'sent'
|
||||
}">
|
||||
{{
|
||||
trace.status === 'pending' ? 'Pendiente' :
|
||||
trace.status === 'sent' ? 'Enviado' :
|
||||
trace.status
|
||||
}}
|
||||
</mat-chip>
|
||||
|
|
|
@ -335,6 +335,12 @@ table {
|
|||
font-weight: 500;
|
||||
}
|
||||
|
||||
.chip-sent {
|
||||
background-color: #b19cd9 !important;
|
||||
color: white !important;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.status-progress-flex {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
@ -359,6 +365,7 @@ table {
|
|||
.status-indicator.pending { background-color: #17a2b8; }
|
||||
.status-indicator.in-progress { background-color: #ffc107; }
|
||||
.status-indicator.cancelled { background-color: #6c757d; }
|
||||
.status-indicator.sent { background-color: #b19cd9; }
|
||||
|
||||
/* Opciones de cliente */
|
||||
.client-option {
|
||||
|
|
|
@ -96,7 +96,8 @@
|
|||
'chip-success': trace.status === 'success',
|
||||
'chip-pending': trace.status === 'pending',
|
||||
'chip-in-progress': trace.status === 'in-progress',
|
||||
'chip-cancelled': trace.status === 'cancelled'
|
||||
'chip-cancelled': trace.status === 'cancelled',
|
||||
'chip-sent': trace.status === 'sent'
|
||||
}">
|
||||
{{
|
||||
trace.status === 'failed' ? 'Error' :
|
||||
|
@ -104,6 +105,7 @@
|
|||
trace.status === 'success' ? 'Completado' :
|
||||
trace.status === 'pending' ? 'Pendiente' :
|
||||
trace.status === 'cancelled' ? 'Cancelado' :
|
||||
trace.status === 'sent' ? 'Enviado' :
|
||||
trace.status
|
||||
}}
|
||||
</mat-chip>
|
||||
|
|
|
@ -238,6 +238,17 @@
|
|||
color: #212529;
|
||||
}
|
||||
|
||||
.stat-sent {
|
||||
border-left-color: #b19cd9;
|
||||
background: #b19cd9;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.stat-sent .stat-number,
|
||||
.stat-sent .stat-label {
|
||||
color: white;
|
||||
}
|
||||
|
||||
.stat-number {
|
||||
font-size: 2rem;
|
||||
font-weight: bold;
|
||||
|
@ -523,6 +534,12 @@ table {
|
|||
font-weight: 500;
|
||||
}
|
||||
|
||||
.chip-sent {
|
||||
background-color: #b19cd9 !important;
|
||||
color: white !important;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.status-progress-flex {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
@ -546,6 +563,7 @@ table {
|
|||
.status-indicator.pending { background-color: #17a2b8; }
|
||||
.status-indicator.in-progress { background-color: #ffc107; }
|
||||
.status-indicator.cancelled { background-color: #6c757d; }
|
||||
.status-indicator.sent { background-color: #b19cd9; }
|
||||
|
||||
.client-option {
|
||||
display: flex;
|
||||
|
|
|
@ -57,6 +57,13 @@
|
|||
<div class="stat-number">{{ getStatusCount('in-progress') }}</div>
|
||||
<div class="stat-label">{{ 'inProgress' | translate }}</div>
|
||||
</div>
|
||||
<div class="stat-card stat-sent clickable"
|
||||
[class.active-filter]="isFilterActive('sent')"
|
||||
(click)="filterBySent()"
|
||||
matTooltip="Ver trazas enviadas">
|
||||
<div class="stat-number">{{ getStatusCount('sent') }}</div>
|
||||
<div class="stat-label">{{ 'sent' | translate }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="filters-section" joyrideStep="filtersStep" text="{{ 'filtersStepText' | translate }}">
|
||||
|
@ -146,6 +153,12 @@
|
|||
{{ 'cancelled' | translate }}
|
||||
</div>
|
||||
</mat-option>
|
||||
<mat-option [value]="'sent'">
|
||||
<div class="status-option">
|
||||
<div class="status-indicator sent"></div>
|
||||
{{ 'sent' | translate }}
|
||||
</div>
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<button *ngIf="commandStatusInput.value" mat-icon-button matSuffix aria-label="Clear input search"
|
||||
(click)="clearStatusFilter($event, commandStatusInput)">
|
||||
|
@ -232,7 +245,8 @@
|
|||
'chip-success': trace.status === 'success',
|
||||
'chip-pending': trace.status === 'pending',
|
||||
'chip-in-progress': trace.status === 'in-progress',
|
||||
'chip-cancelled': trace.status === 'cancelled'
|
||||
'chip-cancelled': trace.status === 'cancelled',
|
||||
'chip-sent': trace.status === 'sent'
|
||||
}">
|
||||
{{
|
||||
trace.status === 'failed' ? ('failed' | translate) :
|
||||
|
@ -240,6 +254,7 @@
|
|||
trace.status === 'success' ? ('successful' | translate) :
|
||||
trace.status === 'pending' ? ('pending' | translate) :
|
||||
trace.status === 'cancelled' ? ('cancelled' | translate) :
|
||||
trace.status === 'sent' ? ('sent' | translate) :
|
||||
trace.status
|
||||
}}
|
||||
</mat-chip>
|
||||
|
|
|
@ -51,6 +51,7 @@ export class TaskLogsComponent implements OnInit, OnDestroy {
|
|||
pending: number;
|
||||
inProgress: number;
|
||||
cancelled: number;
|
||||
sent: number;
|
||||
today: number;
|
||||
} = {
|
||||
total: 0,
|
||||
|
@ -59,6 +60,7 @@ export class TaskLogsComponent implements OnInit, OnDestroy {
|
|||
pending: 0,
|
||||
inProgress: 0,
|
||||
cancelled: 0,
|
||||
sent: 0,
|
||||
today: 0
|
||||
};
|
||||
|
||||
|
@ -204,6 +206,8 @@ export class TaskLogsComponent implements OnInit, OnDestroy {
|
|||
return this.totalStats.inProgress;
|
||||
case 'cancelled':
|
||||
return this.totalStats.cancelled;
|
||||
case 'sent':
|
||||
return this.totalStats.sent;
|
||||
case 'today':
|
||||
return this.totalStats.today;
|
||||
default:
|
||||
|
@ -470,7 +474,7 @@ export class TaskLogsComponent implements OnInit, OnDestroy {
|
|||
}
|
||||
|
||||
private calculateLocalStats(): void {
|
||||
const statuses = ['success', 'failed', 'pending', 'in-progress', 'cancelled'];
|
||||
const statuses = ['success', 'failed', 'pending', 'in-progress', 'cancelled', 'sent'];
|
||||
const requests = statuses.map(status =>
|
||||
this.http.get<any>(`${this.baseUrl}/traces?status=${status}&page=1&itemsPerPage=1`)
|
||||
);
|
||||
|
@ -485,8 +489,8 @@ export class TaskLogsComponent implements OnInit, OnDestroy {
|
|||
forkJoin([totalRequest, ...requests, todayRequest]).subscribe(
|
||||
(responses) => {
|
||||
const totalData = responses[0];
|
||||
const statusData = responses.slice(1, 6);
|
||||
const todayData = responses[6];
|
||||
const statusData = responses.slice(1, 7);
|
||||
const todayData = responses[7];
|
||||
|
||||
this.totalStats = {
|
||||
total: totalData['hydra:totalItems'],
|
||||
|
@ -495,6 +499,7 @@ export class TaskLogsComponent implements OnInit, OnDestroy {
|
|||
pending: statusData[2]['hydra:totalItems'],
|
||||
inProgress: statusData[3]['hydra:totalItems'],
|
||||
cancelled: statusData[4]['hydra:totalItems'],
|
||||
sent: statusData[5]['hydra:totalItems'],
|
||||
today: todayData['hydra:totalItems']
|
||||
};
|
||||
},
|
||||
|
@ -508,6 +513,7 @@ export class TaskLogsComponent implements OnInit, OnDestroy {
|
|||
pending: this.traces.filter(trace => trace.status === 'pending').length,
|
||||
inProgress: this.traces.filter(trace => trace.status === 'in-progress').length,
|
||||
cancelled: this.traces.filter(trace => trace.status === 'cancelled').length,
|
||||
sent: this.traces.filter(trace => trace.status === 'sent').length,
|
||||
today: this.traces.filter(trace => trace.executedAt && todayString && trace.executedAt.startsWith(todayString)).length
|
||||
};
|
||||
}
|
||||
|
@ -652,6 +658,13 @@ export class TaskLogsComponent implements OnInit, OnDestroy {
|
|||
this.loadTraces();
|
||||
}
|
||||
|
||||
filterBySent(): void {
|
||||
this.resetAllFilters();
|
||||
this.filters['status'] = 'sent';
|
||||
this.activeFilter = 'sent';
|
||||
this.loadTraces();
|
||||
}
|
||||
|
||||
isFilterActive(filterType: string): boolean {
|
||||
return this.activeFilter === filterType;
|
||||
}
|
||||
|
@ -668,6 +681,8 @@ export class TaskLogsComponent implements OnInit, OnDestroy {
|
|||
return 'Trazas fallidas';
|
||||
case 'in-progress':
|
||||
return 'Trazas en progreso';
|
||||
case 'sent':
|
||||
return 'Trazas enviadas';
|
||||
default:
|
||||
return '';
|
||||
}
|
||||
|
|
|
@ -573,6 +573,7 @@
|
|||
"busyEquipments": "Busy Equipment",
|
||||
"pending": "Pending",
|
||||
"cancelled": "Cancelled",
|
||||
"sent": "Sent",
|
||||
"cancelImageTransmission": "Cancel image transmission",
|
||||
"success": "Success",
|
||||
"limpiarAcciones": "Clear actions",
|
||||
|
|
|
@ -578,6 +578,7 @@
|
|||
"organizationalStructure": "Estructura Organizacional",
|
||||
"pending": "Pendiente",
|
||||
"cancelled": "Cancelado",
|
||||
"sent": "Enviado",
|
||||
"cancelImageTransmission": "Cancelar transmisión de imagen",
|
||||
"success": "Exitoso",
|
||||
"limpiarAcciones": "Limpiar acciones",
|
||||
|
|
Loading…
Reference in New Issue