refs #1518. Add progress bar to task logs component and update styles for better UX
testing/ogGui-multibranch/pipeline/head This commit looks good Details

pull/16/head
Lucas Lara García 2025-02-14 12:47:06 +01:00
parent ee37287f9e
commit 7698be2bca
4 changed files with 44 additions and 24 deletions

View File

@ -41,6 +41,7 @@ import { EditOrganizationalUnitComponent } from './components/groups/shared/orga
import { EditClientComponent } from './components/groups/shared/clients/edit-client/edit-client.component'; import { EditClientComponent } from './components/groups/shared/clients/edit-client/edit-client.component';
import { ClassroomViewComponent } from './components/groups/shared/classroom-view/classroom-view.component'; import { ClassroomViewComponent } from './components/groups/shared/classroom-view/classroom-view.component';
import { MatProgressSpinner } from "@angular/material/progress-spinner"; import { MatProgressSpinner } from "@angular/material/progress-spinner";
import { MatProgressBarModule } from '@angular/material/progress-bar';
import { MatMenu, MatMenuItem, MatMenuTrigger } from "@angular/material/menu"; import { MatMenu, MatMenuItem, MatMenuTrigger } from "@angular/material/menu";
import {MatAutocomplete, MatAutocompleteTrigger} from "@angular/material/autocomplete"; import {MatAutocomplete, MatAutocompleteTrigger} from "@angular/material/autocomplete";
import { MatChip, MatChipListbox, MatChipOption, MatChipSet, MatChipsModule } from "@angular/material/chips"; import { MatChip, MatChipListbox, MatChipOption, MatChipSet, MatChipsModule } from "@angular/material/chips";
@ -236,6 +237,7 @@ export function HttpLoaderFactory(http: HttpClient) {
MatDialogModule, MatDialogModule,
MatSelectModule, MatSelectModule,
MatDividerModule, MatDividerModule,
MatProgressBarModule,
MatStepperModule, MatStepperModule,
DragDropModule, DragDropModule,
MatSlideToggleModule, MatMenu, MatMenuTrigger, MatMenuItem, MatAutocomplete, MatChipListbox, MatChipOption, MatChipSet, MatChipsModule, MatChip, MatProgressSpinner, MatTabGroup, MatTab, MatTooltip, MatSlideToggleModule, MatMenu, MatMenuTrigger, MatMenuItem, MatAutocomplete, MatChipListbox, MatChipOption, MatChipSet, MatChipsModule, MatChip, MatProgressSpinner, MatTabGroup, MatTab, MatTooltip,

View File

@ -61,6 +61,12 @@ table {
box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.2); box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.2);
} }
.progress-container {
display: flex;
align-items: center;
gap: 10px;
}
.paginator-container { .paginator-container {
display: flex; display: flex;
justify-content: end; justify-content: end;

View File

@ -4,7 +4,7 @@
</button> </button>
<div class="header-container-title"> <div class="header-container-title">
<h2 class="title" joyrideStep="titleStep" text="{{ 'titleStepText' | translate }}">{{ 'adminCommandsTitle' | <h2 joyrideStep="titleStep" text="{{ 'titleStepText' | translate }}">{{ 'adminCommandsTitle' |
translate }}</h2> translate }}</h2>
</div> </div>
@ -64,20 +64,28 @@
<ng-container [ngSwitch]="column.columnDef"> <ng-container [ngSwitch]="column.columnDef">
<!-- Caso para "status" --> <!-- Caso para "status" -->
<ng-container *ngSwitchCase="'status'"> <ng-container *ngSwitchCase="'status'">
<mat-chip [ngClass]="{ <ng-container *ngIf="trace.status === 'in-progress'; else statusChip">
'chip-failed': trace.status === 'failed', <div class="progress-container">
'chip-success': trace.status === 'success', <mat-progress-bar class="example-margin" [mode]="mode" [value]="progress" [bufferValue]="bufferValue">
'chip-pending': trace.status === 'pending', </mat-progress-bar>
'chip-in-progress': trace.status === 'in-progress' <span>{{progress}}%</span>
}"> </div>
{{ </ng-container>
<ng-template #statusChip>
<mat-chip [ngClass]="{
'chip-failed': trace.status === 'failed',
'chip-success': trace.status === 'success',
'chip-pending': trace.status === 'pending',
'chip-in-progress': trace.status === 'in-progress'
}">
{{
trace.status === 'failed' ? 'Fallido' : trace.status === 'failed' ? 'Fallido' :
trace.status === 'success' ? 'Finalizado con éxito' : trace.status === 'success' ? 'Finalizado con éxito' :
trace.status === 'pending' ? 'Pendiente de ejecutar' : trace.status === 'pending' ? 'Pendiente de ejecutar' :
trace.status === 'in-progress' ? 'Ejecutando' : trace.status
trace.status }}
}} </mat-chip>
</mat-chip> </ng-template>
</ng-container> </ng-container>
<!-- Caso para "input" con modal --> <!-- Caso para "input" con modal -->
@ -106,4 +114,4 @@
<mat-paginator [length]="length" [pageSize]="itemsPerPage" [pageIndex]="page" [pageSizeOptions]="pageSizeOptions" <mat-paginator [length]="length" [pageSize]="itemsPerPage" [pageIndex]="page" [pageSizeOptions]="pageSizeOptions"
(page)="onPageChange($event)"> (page)="onPageChange($event)">
</mat-paginator> </mat-paginator>
</div> </div>

View File

@ -5,8 +5,9 @@ import { FormControl } from '@angular/forms';
import { map, startWith } from 'rxjs/operators'; import { map, startWith } from 'rxjs/operators';
import { DatePipe } from '@angular/common'; import { DatePipe } from '@angular/common';
import { JoyrideService } from 'ngx-joyride'; import { JoyrideService } from 'ngx-joyride';
import {MatDialog} from "@angular/material/dialog"; import { MatDialog } from "@angular/material/dialog";
import {InputDialogComponent} from "./input-dialog/input-dialog.component"; import { InputDialogComponent } from "./input-dialog/input-dialog.component";
import { ProgressBarMode, MatProgressBarModule } from '@angular/material/progress-bar';
@Component({ @Component({
selector: 'app-task-logs', selector: 'app-task-logs',
@ -25,6 +26,9 @@ export class TaskLogsComponent implements OnInit {
loading: boolean = true; loading: boolean = true;
pageSizeOptions: number[] = [10, 20, 30, 50]; pageSizeOptions: number[] = [10, 20, 30, 50];
datePipe: DatePipe = new DatePipe('es-ES'); datePipe: DatePipe = new DatePipe('es-ES');
mode: ProgressBarMode = 'buffer';
progress = 65;
bufferValue = 0;
columns = [ columns = [
{ {
@ -84,7 +88,7 @@ export class TaskLogsComponent implements OnInit {
constructor(private http: HttpClient, constructor(private http: HttpClient,
private joyrideService: JoyrideService, private joyrideService: JoyrideService,
private dialog: MatDialog private dialog: MatDialog
) {} ) { }
ngOnInit(): void { ngOnInit(): void {
this.loadTraces(); this.loadTraces();
@ -215,12 +219,12 @@ export class TaskLogsComponent implements OnInit {
iniciarTour(): void { iniciarTour(): void {
this.joyrideService.startTour({ this.joyrideService.startTour({
steps: [ steps: [
'titleStep', 'titleStep',
'resetFiltersStep', 'resetFiltersStep',
'clientSelectStep', 'clientSelectStep',
'commandSelectStep', 'commandSelectStep',
'tableStep', 'tableStep',
'paginationStep' 'paginationStep'
], ],
showPrevButton: true, showPrevButton: true,
themeColor: '#3f51b5' themeColor: '#3f51b5'