import { Component, Input, OnInit } from '@angular/core'; import { NavigationStart, Router } from '@angular/router'; import { DailyWorkTask } from '../../../models/dailyworktask.model'; import { CustomTaskPipe } from 'src/app/pipes/custom-task.pipe'; import { DeplomasStore } from 'src/app/store/deplomas.service'; import { ThemeService } from 'src/app/services/theme.service' import { PermissionService } from 'src/app/services/permission.service'; import { TaskService } from 'src/app/services/task.service' @Component({ selector: 'app-diplomas', templateUrl: './diplomas.page.html', styleUrls: ['./diplomas.page.scss'], }) export class DiplomasPage implements OnInit { diplomasList:DailyWorkTask[] = []; diplomasAssinadoList:DailyWorkTask[] = []; showLoader: boolean; serialNumber:string; skeletonLoader = false @Input() segment:string; filterName: 'Para hoje' | 'Novos'| 'Lidos'| 'Não lidos'| 'OverdueTasks' | 'Todos' = 'Todos' deplomasStore = DeplomasStore customTaskPipe = new CustomTaskPipe() showSearch = false searchSubject = '' listDiplomasPorValidar = [] listDiplomasAssinadosPR = [] hideSearchBtn: boolean = false; ordinance: string = 'old' listSubscription : { delete(): void; } routerSubscription; constructor( private router: Router, public ThemeService: ThemeService, public p: PermissionService, public TaskService: TaskService ) {} ngOnInit() { this.LoadList() this.listSubscription = this.deplomasStore.registerCallback({ id: import.meta.url, funx:() => { this.dynamicSearch() } }) this.routerSubscription = this.router.events.subscribe((event) => { if (event instanceof NavigationStart && ( '/home/gabinete-digital?diplomas=validar'.startsWith(event.url) || '/home/gabinete-digital?diplomas=validar'.startsWith(event.url)) ) { if(window.location.pathname.split('/').length >= 4 && window.location.pathname.startsWith('/home/gabinete-digital')) { this.LoadList() } else { this.LoadList() } } }); window['gabinete-aside-refresh'] = () => { this.LoadList() } this.dynamicSearch(); } ngOnDestroy() { this.listSubscription.delete() this.routerSubscription?.unsubscribe(); } reorderList(orderBy: string) { this.ordinance = orderBy; this.dynamicSearch(); } async dynamicSearch() { if(this.showSearch && this.searchSubject) { const listDiplomasAssinadosPR = this.deplomasStore.diplomasAssinadoList.filter((task) => { let subject = task.Folio || task.Subject || task.workflowInstanceDataFields.Subject subject = subject.toLowerCase(); return subject.includes(this.searchSubject.toLowerCase()) }) this.listDiplomasAssinadosPR = this.TaskService.reorderList(this.ordinance, listDiplomasAssinadosPR) const listDiplomasPorValidar = this.deplomasStore.diplomasReviewList.filter((task) => { let subject = task.Folio || task.Subject || task.workflowInstanceDataFields.Subject subject = subject.toLowerCase(); return subject.includes(this.searchSubject.toLowerCase()) }) this.listDiplomasPorValidar = this.TaskService.reorderList(this.ordinance, listDiplomasPorValidar) } else { const listDiplomasAssinadosPR = this.deplomasStore.diplomasAssinadoList const listDiplomasPorValidar = this.deplomasStore.diplomasReviewList this.listDiplomasPorValidar = this.TaskService.reorderList(this.ordinance, listDiplomasPorValidar) this.listDiplomasAssinadosPR = this.TaskService.reorderList(this.ordinance, listDiplomasAssinadosPR) } } openSearch() { this.dynamicSearch() } async closeSearch() { this.searchSubject = '' this.dynamicSearch() } async basicSearch() { this.dynamicSearch() } segmentChanged(ev: any) { this.LoadList(); } goToDiploma(serialNumber:any){ this.router.navigate(['/home/gabinete-digital/diplomas', serialNumber, 'gabinete-digital']); } async LoadList() { this.skeletonLoader = true; await this.TaskService.loadDiplomas() this.dynamicSearch() this.showLoader = false; this.skeletonLoader = false } async refreshing() { setTimeout(() => { this.LoadList(); }, 1000); } doRefresh(event) { if (event) { setTimeout(() => { try { event?.target?.complete(); } catch(error) {} }, 2000); } this.LoadList(); } }