Ver código fonte

Adaptación pull

Jose Brito 3 anos atrás
pai
commit
8cd941cdc1

+ 0 - 0
sistema-mantenimiento-front/src/app/components/samwf/workflow-admin-advance/workflow-admin-advance.component.css


+ 107 - 0
sistema-mantenimiento-front/src/app/components/samwf/workflow-admin-advance/workflow-admin-advance.component.html

@@ -0,0 +1,107 @@
+<mat-card class="card-normal mat-elevation-z8 animated fadeIn fast ">
+    <mat-grid-list cols="12" rowHeight="75px" class="card-grid-list">
+        <mat-grid-tile colspan="12">
+            <mat-card-title>Prueba de avance</mat-card-title>
+        </mat-grid-tile>
+        <app-translation (click)="updatePaginator()"></app-translation>
+        <mat-grid-tile colspan="8">
+            <mat-form-field appearance="legacy" class="searcher">
+                <mat-label>{{ 'buscador' | translate }}</mat-label>
+                <input matInput placeholder="{{ 'buscador.placeholder' | translate}}" (keyup)="applyFilter($event)" />
+                <mat-icon matSuffix>search</mat-icon>
+            </mat-form-field>
+        </mat-grid-tile>
+
+        <!--         <mat-grid-tile colspan="2">
+            <mat-form-field appearance="legacy">
+                <mat-label>Solicitudes por estado</mat-label>
+                <mat-select [(value)]="selectedOpcion" (selectionChange)="filterData($event.value)">
+                    <mat-option *ngFor="let state of statusData" [value]="state.state">
+                        {{ state.textState }}</mat-option>
+                </mat-select>
+            </mat-form-field>
+        </mat-grid-tile>
+    </mat-grid-list> -->
+
+        <!--     <p *ngIf="selectedOpcion == 1" class="centre display-text text-secondary">Filtros de búsqueda</p>
+    <div class="filters mb-5" *ngIf="selectedOpcion == 1">
+        <div class="flex-item">
+            <mat-form-field hintLabel="{{ 'workflow.historial.notificaciones.busqueda.fecha' | translate }}"
+                appearance="legacy">
+                <mat-label>Fecha de creación</mat-label>
+                <input [(ngModel)]='filterCreatedDate' matInput [min]="minDate" [max]="maxDate"
+                    [matDatepicker]="date_created">
+                <mat-datepicker-toggle matSuffix [for]="date_created"></mat-datepicker-toggle>
+                <mat-datepicker #date_created></mat-datepicker>
+            </mat-form-field>
+        </div>
+
+        <div class="flex-item">
+            <mat-form-field hintLabel="{{ 'workflow.historial.notificaciones.busqueda.fecha' | translate }}"
+                appearance="legacy">
+                <mat-label>Fecha de validación</mat-label>
+                <input [(ngModel)]='filterValidatedDate' matInput [min]="minDate" [max]="maxDate"
+                    [matDatepicker]="date_validated">
+                <mat-datepicker-toggle matSuffix [for]="date_validated"></mat-datepicker-toggle>
+                <mat-datepicker #date_validated></mat-datepicker>
+            </mat-form-field>
+        </div>
+
+        <div class="flex-item">
+            <mat-form-field hintLabel="{{ 'workflow.modulos.form' | translate }}" appearance="legacy">
+                <mat-label>{{ 'workflow.modulos.form.placeholder' | translate }}</mat-label>
+                <mat-select [(ngModel)]='filterModule'>
+                    <mat-option *ngFor="let item of modules; let i = index" [value]="item.name">
+                        {{ item.name }}
+                    </mat-option>
+                </mat-select>
+                <mat-icon matSuffix>view_module</mat-icon>
+            </mat-form-field>
+        </div>
+
+        <div class="flex-item">
+            <button class="mr-1" mat-mini-fab matTooltip="Aplicar filtros" (click)="filter()">
+                <mat-icon>filter_list</mat-icon>
+            </button>
+            <button mat-mini-fab matTooltip="Quitar filtros" (click)="clearFilter()">
+                <mat-icon>delete</mat-icon>
+            </button>
+        </div>
+    </div> -->
+    </mat-grid-list>
+
+    <div *ngIf="data_empty " class="data-empty">
+        {{ 'datos.vacios' | translate }}
+    </div>
+
+    <table mat-table [dataSource]="dataSource" class="animated fadeIn" *ngIf="dataSource.data.length != 0">
+        <ng-container matColumnDef="name">
+            <th mat-header-cell *matHeaderCellDef>
+                Workflow
+            </th>
+            <td mat-cell *matCellDef="let element">
+                {{ element.tarea }}
+            </td>
+        </ng-container>
+
+        <ng-container matColumnDef="module">
+            <th mat-header-cell *matHeaderCellDef>Modulo</th>
+            <td mat-cell *matCellDef="let element">
+                {{ element.status }}
+            </td>
+        </ng-container>
+
+        <ng-container matColumnDef="created_at">
+            <th mat-header-cell *matHeaderCellDef>Fecha de la solicitud</th>
+            <td mat-cell *matCellDef="let element">
+                {{ element.workflow }}
+            </td>
+        </ng-container>
+
+        <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
+        <tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
+    </table>
+
+    <mat-paginator [pageSizeOptions]="[10, 20, 50]" showFirstLastButtons aria-label="Seleccione">
+    </mat-paginator>
+</mat-card>

+ 25 - 0
sistema-mantenimiento-front/src/app/components/samwf/workflow-admin-advance/workflow-admin-advance.component.spec.ts

@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { WorkflowAdminAdvanceComponent } from './workflow-admin-advance.component';
+
+describe('WorkflowAdminAdvanceComponent', () => {
+  let component: WorkflowAdminAdvanceComponent;
+  let fixture: ComponentFixture<WorkflowAdminAdvanceComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      declarations: [ WorkflowAdminAdvanceComponent ]
+    })
+    .compileComponents();
+  });
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(WorkflowAdminAdvanceComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});

+ 156 - 0
sistema-mantenimiento-front/src/app/components/samwf/workflow-admin-advance/workflow-admin-advance.component.ts

@@ -0,0 +1,156 @@
+import { ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';
+import { MatDialog } from '@angular/material/dialog';
+import { MatPaginator, MatPaginatorIntl } from '@angular/material/paginator';
+import { MatSnackBar } from '@angular/material/snack-bar';
+import { MatTableDataSource } from '@angular/material/table';
+import { ActivatedRoute, Router } from '@angular/router';
+import { TranslateService } from '@ngx-translate/core';
+import { lastValueFrom } from 'rxjs';
+import { WorkflowService } from 'src/app/services/samwf/workflow.service';
+
+@Component({
+  selector: 'app-workflow-admin-advance',
+  templateUrl: './workflow-admin-advance.component.html',
+  styleUrls: ['./workflow-admin-advance.component.css'],
+})
+export class WorkflowAdminAdvanceComponent implements OnInit {
+  data_empty = false;
+
+  displayedColumns: string[] = ['name', 'module', 'created_at'];
+  advance: any[] = [];
+
+  dataSource = new MatTableDataSource<any>(this.advance);
+  @ViewChild(MatPaginator) paginator: MatPaginator = new MatPaginator(
+    new MatPaginatorIntl(),
+    ChangeDetectorRef.prototype
+  );
+  constructor(
+    private routerNavigate: ActivatedRoute,
+    private router: Router,
+    public dialog: MatDialog,
+    private translate: TranslateService,
+    private _samwfService: WorkflowService,
+    private _snackBar: MatSnackBar
+  ) {
+    translate.setDefaultLang('es');
+  }
+
+  ngOnInit(): void {
+    this.getRequestUser();
+  }
+
+  applyFilter(filterValue: any) {
+    this.dataSource.filter = filterValue.target.value.trim().toLowerCase();
+  }
+
+  backToWorkflows() {
+    this.router.navigate(['workflow']);
+  }
+
+  updatePaginator() {
+    this.translate.get('paginador').subscribe((data: any) => {
+      this.dataSource.paginator = this.paginator;
+      this.paginator._intl.itemsPerPageLabel = data[0];
+      this.paginator._intl.firstPageLabel = data[1];
+      this.paginator._intl.lastPageLabel = data[2];
+      this.paginator._intl.nextPageLabel = data[3];
+      this.paginator._intl.previousPageLabel = data[4];
+    });
+  }
+
+  ngAfterViewInit(): void {
+    this.translate.get('paginador').subscribe((data: any) => {
+      this.dataSource.paginator = this.paginator;
+      this.paginator._intl.itemsPerPageLabel = data[0];
+      this.paginator._intl.firstPageLabel = data[1];
+      this.paginator._intl.lastPageLabel = data[2];
+      this.paginator._intl.nextPageLabel = data[3];
+      this.paginator._intl.previousPageLabel = data[4];
+    });
+
+    this.dataSource.filterPredicate = function (data, filter: string): boolean {
+      return (
+        data.name.toString().toLowerCase().includes(filter) ||
+        data.description.toString().toLowerCase().includes(filter) ||
+        data.created_at.toString().includes(filter)
+      );
+    };
+  }
+
+  private async getRequestUser() {
+    await lastValueFrom(this._samwfService.getRequestsAdvance(1)).then(
+      (data: any) => {
+        this.advance = data.response.workflow.tasks;
+        this.dataSource.data = data.response.workflow.tasks;
+        this.formatData(data.response.workflow.tasks);
+        /*         this.dataSource.data = data.filter((e: any) => {
+          e.created_at = e.created_at.slice(0, 10);
+          return e;
+        }); */
+
+        this.dataSource.data.length > 0
+          ? (this.data_empty = false)
+          : (this.data_empty = true);
+      },
+      (error: any) => {
+        this._snackBar.open(error.message, 'Cerrar', { duration: 3000 });
+      }
+    );
+  }
+
+  formatData(workflow_tasks: any[]) {
+    let arr: any[] = [];
+    for (let index = 0; index < workflow_tasks.length; index++) {
+      console.log('workflow de primer nivel');
+      arr.push({
+        tarea: workflow_tasks[index].name,
+        workflow: 'Tarea principal',
+        status: workflow_tasks[index].status,
+      });
+      if (workflow_tasks[index].workflow != null) {
+        for (
+          let indexAux = 0;
+          indexAux < workflow_tasks[index].workflow.tasks.length;
+          indexAux++
+        ) {
+          arr.push({
+            tarea: workflow_tasks[index].workflow.tasks[indexAux].name,
+            workflow: workflow_tasks[index].name,
+            status: workflow_tasks[index].workflow.tasks[indexAux].status,
+          });
+          if (workflow_tasks[index].workflow.tasks[indexAux].workflow != null) {
+            console.log('workflow de segundo nivel');
+            for (
+              let indexLevel3 = 0;
+              indexLevel3 <
+              workflow_tasks[index].workflow.tasks[indexAux].workflow.tasks
+                .length;
+              indexLevel3++
+            ) {
+              arr.push({
+                tarea:
+                  workflow_tasks[index].workflow.tasks[indexAux].workflow.tasks[
+                    indexLevel3
+                  ].name,
+                workflow: workflow_tasks[index].workflow.tasks[indexAux].name,
+                status:
+                  workflow_tasks[index].workflow.tasks[indexAux].workflow.tasks[
+                    indexLevel3
+                  ].status,
+              });
+              if (
+                workflow_tasks[index].workflow.tasks[indexAux].workflow.tasks[
+                  indexLevel3
+                ].workflow != null
+              ) {
+                console.log('workflow de tercel nivel');
+              }
+            }
+          }
+        }
+      }
+    }
+    console.log(arr);
+    this.dataSource.data = arr;
+  }
+}