import { CommonModule } from '@angular/common'; import { HttpClientModule } from '@angular/common/http'; import { Component, EventEmitter, Input, Output } from '@angular/core'; // components import { CaRightSidePanelMenuComponent } from './components/ca-right-side-panel-menu/ca-right-side-panel-menu.component'; import { CaActivityLogListComponent } from '../ca-activity-log-list/ca-activity-log-list.component'; import { CaRightSidePanelTopBarComponent } from './components/ca-right-side-panel-top-bar/ca-right-side-panel-top-bar.component'; import { CaRightSidePanelCompanyComponent } from './components/ca-right-side-panel-company/ca-right-side-panel-company.component'; // models import { ActivityLogItem } from '../ca-activity-log-list/models'; import { ActionFilterInputData, ActivityLogFilterParams, Company, CompanyNavigationData, ModuleFilterInputData, UserFilterInputData, } from './models'; // enums import { ActivityLogSortType, RightSidePanelCurrentTab, SelectedModule, } from './enums'; @Component({ selector: 'app-ca-right-side-panel', templateUrl: './ca-right-side-panel.component.html', styleUrls: ['./ca-right-side-panel.component.scss'], imports: [ CommonModule, HttpClientModule, // Components CaRightSidePanelMenuComponent, CaActivityLogListComponent, CaRightSidePanelTopBarComponent, CaRightSidePanelCompanyComponent, ] }) export class CaRightSidePanelComponent { public _activityLogFilterParams: ActivityLogFilterParams = { companyUserIds: [], actionLogIds: [], entityTypeActivityIds: [], sort: ActivityLogSortType.DESCENDING, userFilterType: RightSidePanelCurrentTab.PERSONAL, dateFrom: null, dateTo: null, search: null, }; public selectedNav?: SelectedModule; public selectedTab: RightSidePanelCurrentTab = RightSidePanelCurrentTab.PERSONAL; public SelectedModule = SelectedModule; public resetFilters: boolean = false; public selectedCompanyId: number = 0; public selectedCompanyIsDivision: boolean = false; @Input() companiesData!: CompanyNavigationData[]; @Input() activityLogData!: ActivityLogItem[]; @Input() mainCompanyData!: Company | null; @Input() usersFilter!: UserFilterInputData[]; @Input() modulesFilter!: ModuleFilterInputData[]; @Input() actionsFilter!: ActionFilterInputData[]; @Output() activityLogFilterParams: EventEmitter = new EventEmitter(); @Output() selectedNavModule: EventEmitter = new EventEmitter(); @Output() isSidePanelPinned: EventEmitter = new EventEmitter(); @Output() isNavOpen: EventEmitter = new EventEmitter(); @Output() selectedDivisionId: EventEmitter = new EventEmitter(); public selectedNavEvent(selectedNav: SelectedModule): void { if (!selectedNav) { this.selectedTab = RightSidePanelCurrentTab.PERSONAL; this.clearData(); } if (this.selectedNav !== selectedNav) { this.selectedTab = RightSidePanelCurrentTab.PERSONAL; this.selectedNav = selectedNav; this.selectedNavModule.emit(selectedNav); } } public selectedTabEvent(selectedTab: RightSidePanelCurrentTab): void { this.selectedTab = selectedTab; } public selectedCompanyIdEvent(companyId: number): void { if (this.selectedNav === SelectedModule.DIVISION_INFO) { this.selectedCompanyIsDivision = true; this.selectedDivisionId.emit(companyId); } else this.selectedCompanyIsDivision = false; this.selectedCompanyId = companyId; } public selectedDivisionIdEvent(companyId: number): void { this.selectedCompanyIsDivision = true; this.selectedDivisionId.emit(companyId); this.selectedCompanyId = companyId; } public selectedMainCompanyIdEvent(companyId: number): void { if (companyId) { this.selectedCompanyIsDivision = false; this.selectedNavModule.emit(SelectedModule.COMPANY_INFO); this.selectedCompanyId = companyId; } } public pinSidebarEvent(isPinned: boolean): void { this.isSidePanelPinned.emit(isPinned); } public setActivityLogFilterParams( activityLogFilterParams: ActivityLogFilterParams ): void { this._activityLogFilterParams.companyUserIds = activityLogFilterParams.companyUserIds; this._activityLogFilterParams.actionLogIds = activityLogFilterParams.actionLogIds; this._activityLogFilterParams.entityTypeActivityIds = activityLogFilterParams.entityTypeActivityIds; this._activityLogFilterParams.sort = activityLogFilterParams.sort; this._activityLogFilterParams.userFilterType = activityLogFilterParams.userFilterType; this._activityLogFilterParams.dateFrom = activityLogFilterParams.dateFrom; this._activityLogFilterParams.dateTo = activityLogFilterParams.dateTo; this._activityLogFilterParams.reloadFilters = activityLogFilterParams.reloadFilters; this.activityLogFilterParams.emit(this._activityLogFilterParams); } public searchEvent(searchText: string): void { this._activityLogFilterParams.search = searchText; this.activityLogFilterParams.emit(this._activityLogFilterParams); } public resetFiltersEvent(resetFilters: boolean) { this.resetFilters = resetFilters; setTimeout(() => { this.resetFilters = false; }); } public openNavEvent(isNavOpen: boolean): void { this.isNavOpen.emit(isNavOpen); } private clearData(): void { this.activityLogData = []; this.mainCompanyData = null; this.usersFilter = []; this.modulesFilter = []; this.actionsFilter = []; } }