import { Component, OnInit } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { BudgetFundingSourceAudit } from '@core/typings/budget.typing'; import { DebounceFactory, PaginationOptions, TableDataFactory, TopLevelFilter } from '@yourcause/common'; import { I18nService } from '@yourcause/common/i18n'; import { BudgetResources } from '../budget.resources'; import { BudgetService } from '../budget.service'; @Component({ selector: 'gc-budget-audit-trail-tab', templateUrl: './budget-audit-trail-tab.component.html', styleUrls: ['./budget-audit-trail-tab.component.scss'] }) export class BudgetAuditTrailTabComponent implements OnInit { id = this.activatedRoute.snapshot.parent.params.id; tableKey: string; topLevelFilters: TopLevelFilter[] = [ new TopLevelFilter( 'text', 'createdByUserName', '', this.i18n.translate( 'GLOBAL:textSearchByUserOrFundingSource', {}, 'Search by user or funding source' ), undefined, undefined, [{ column: 'createdByUserName', filterType: 'cn' }, { column: 'fundingSourceName', filterType: 'cn' }] ) ]; tableDataFactory: TableDataFactory; constructor ( private budgetResources: BudgetResources, private activatedRoute: ActivatedRoute, private budgetService: BudgetService, private i18n: I18nService ) { } ngOnInit () { this.tableKey = 'BUDGET_AUDIT_TRAIL_' + this.id; this.tableDataFactory = DebounceFactory.createSimple( async (options: PaginationOptions) => { const result = await this.budgetResources.getBudgetAuditTrail( this.id, options ); const records = this.budgetService.getActionMessagesForAuditTrail( result.records, false, this.id ); return { success: true, data: { recordCount: result.recordCount, records } }; } ); } }