import { Component, Input, OnInit } from '@angular/core'; import { AdminUsersService } from '@core/services/admin-users.service'; import { APIAdminClient } from '@core/typings/api/admin-client.typing'; import { ArrayHelpersService, AutoTableRepository, AutoTableRepositoryFactory, ValueComparisonService } from '@yourcause/common'; import { NotifierService } from '@yourcause/common/notifier'; @Component({ selector: 'gc-clients-drilldown', templateUrl: './clients-drilldown.component.html', styleUrls: ['./clients-drilldown.component.scss'] }) export class ClientsDrilldownComponent implements OnInit { @Input() client: APIAdminClient.Client; adminMap = this.adminUsersService.get('adminMap'); clientListRepository: AutoTableRepository; admins: string[]; constructor ( private adminUsersService: AdminUsersService, private autoTableFactory: AutoTableRepositoryFactory, private arrayHelper: ArrayHelpersService, private notifierService: NotifierService, private valueComparisonService: ValueComparisonService ) { } ngOnInit () { this.admins = this.client.adminUserIds .filter((adminId) => { // If the admin is not in the adminMap, then they are also filtered out. return this.adminMap[adminId] ? !this.adminMap[adminId].isDeactivated : false; }) .map((adminId) => ( this.adminMap[adminId] ? this.adminMap[adminId].fullName : null )); this.admins = this.arrayHelper.sort(this.admins); this.clientListRepository = this.autoTableFactory.create({ key: 'Client_' + this.client.clientId, columns: [], notifier: this.notifierService, rowsPerPage: 10, valueComparisonService: this.valueComparisonService, rows: this.admins }); } }