import { Component, OnDestroy, OnInit } from '@angular/core'; import { SpinnerService } from '@core/services/spinner.service'; import { AppManagerTypes } from '@core/typings/application.typing'; import { FormsService } from '@features/configure-forms/services/forms/forms.service'; import { EmployeeSSOFieldsService } from '@features/employee-sso-fields/employee-sso-fields.service'; import { MyFilterService } from '@features/my-filters/my-filters.service'; import { Columns, MyFilter, TableFiltersModalResponse } from '@yourcause/common'; import { Subscription } from 'rxjs'; @Component({ selector: 'gc-application-manager-page', templateUrl: './application-manager-page.component.html', styleUrls: ['./application-manager-page.component.scss'] }) export class ApplicationManagerPageComponent implements OnInit, OnDestroy { AppManagerTypes = AppManagerTypes; sub = new Subscription(); myFilters: MyFilter[] = []; constructor ( private myFilterService: MyFilterService, private spinnerService: SpinnerService, private formService: FormsService, private employeeSSOFieldsService: EmployeeSSOFieldsService ) { this.sub.add(this.myFilterService.changesTo$('myFilters').subscribe((filters) => { this.myFilters = (filters || []).map((filter) => { return { name: filter.name, id: filter.id, getFilterDetail: async (columns: Columns) => { this.spinnerService.startSpinner(); await Promise.all([ this.formService.setMyDependentFormFilterOptions(), this.employeeSSOFieldsService.setEmployeeSSOFields(), this.myFilterService.ensureDependentOptionsAreSet(columns) ]); const detail = await this.myFilterService.setFilterDetail(filter.id); this.spinnerService.stopSpinner(); return this.myFilterService.adaptFitlersToActiveFilters( detail.filters, columns ); } }; }); })); } get isNomination () { return location.pathname.includes('nomination'); } async ngOnInit () { this.spinnerService.startSpinner(); await this.myFilterService.setMyFilters(); this.spinnerService.stopSpinner(); } async saveFilter (modalResponse: TableFiltersModalResponse) { this.spinnerService.startSpinner(); await this.myFilterService.saveNewFilterWithDetail( modalResponse ); this.spinnerService.stopSpinner(); } ngOnDestroy () { this.sub.unsubscribe(); } }