import { Component, Input, OnInit } from '@angular/core'; import { PolicyService } from '@core/services/policy.service'; import { AdHocReportingAPI } from '@core/typings/api/ad-hoc-reporting.typing'; import { AudienceService } from '@features/audience/audience.service'; import { AudienceMember, ManageAudienceMember } from '@features/audience/audience.typing'; import { AdHocReportingService } from '@features/reporting/services/ad-hoc-reporting.service'; import { UserService } from '@features/users/user.service'; import { SimpleStringMap } from '@yourcause/common'; import { AnalyticsService, EventType } from '@yourcause/common/analytics'; import { YCModalComponent } from '@yourcause/common/modals'; @Component({ selector: 'gc-share-report-modal', templateUrl: './share-report-modal.component.html', styleUrls: ['./share-report-modal.component.scss'] }) export class ShareReportModalComponent extends YCModalComponent< ManageAudienceMember[] | AudienceMember[] > implements OnInit { @Input() report: AdHocReportingAPI.UserSavedReport; selectedUsers: (AudienceMember|ManageAudienceMember)[] = []; topLevelFilters = this.audienceService.getTopLevelFiltersForUserAudienceTable(false); userManageMap: SimpleStringMap = {}; constructor ( private adHocReportingService: AdHocReportingService, private audienceService: AudienceService, private userService: UserService, private policyService: PolicyService, private analyticsService: AnalyticsService ) { super(); } ngOnInit () { const details = this.adHocReportingService.reportDetails[ this.report.id ]; this.selectedUsers = details.users; this.setUserManageMap(); } setUserManageMap () { this.userService.allUsers.forEach((user) => { const canManageAdHoc = this.policyService.dataExport.canManageAdHoc( user ); this.userManageMap[user.userId] = canManageAdHoc; }); } onSubmit () { this.closeModal.emit(this.selectedUsers); this.analyticsService.emitEvent({ eventName: 'Share report submit', eventType: EventType.Click, extras: null }); } }