Files
cbsnexora/src/app/home/dashboard/dashboard.component.ts
T
2022-11-27 12:55:04 +05:30

80 lines
2.2 KiB
TypeScript

/** Angular Imports */
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
/**
* Dashboard component.
*/
@Component({
selector: 'mifosx-dashboard',
templateUrl: './dashboard.component.html',
styleUrls: ['./dashboard.component.scss']
})
export class DashboardComponent implements OnInit {
/** Array of all user activities */
userActivity: string[];
/** Array of most recent user activities */
recentActivities: string[];
/** Array of most frequent user activities */
frequentActivities: string[];
/**
* Gets user activities from local storage.
*/
constructor(private router: Router) {
this.userActivity = JSON.parse(localStorage.getItem('mifosXLocation'));
}
ngOnInit() {
this.recentActivities = this.getRecentActivities();
this.frequentActivities = this.getFrequentActivities();
}
/**
* Returns top eight recent activities.
*/
getRecentActivities() {
const reverseActivities = this.userActivity.reverse();
const uniqueActivities: string[] = [];
reverseActivities.forEach((activity: string) => {
if (!uniqueActivities.includes(activity)) {
uniqueActivities.push(activity);
}
});
const topEightRecentActivities =
uniqueActivities
.filter((activity: string) => !['/', '/login', '/home', '/dashboard'].includes(activity))
.slice(0, 8);
return topEightRecentActivities;
}
/**
* Returns top eight frequent activities.
*/
getFrequentActivities() {
const frequencyCounts: any = {};
let index = this.userActivity.length;
while (index) {
frequencyCounts[this.userActivity[--index]] = (frequencyCounts[this.userActivity[index]] || 0) + 1;
}
const frequencyCountsArray = Object.entries(frequencyCounts);
const topEigthFrequentActivities =
frequencyCountsArray
.sort((a: any, b: any) => b[1] - a[1])
.map((entry: any[]) => entry[0])
.filter((activity: string) => !['/', '/login', '/home', '/dashboard'].includes(activity))
.slice(0, 8);
return topEigthFrequentActivities;
}
/**
* Navigates to the activity
*/
navigatetoActivity(activity:string){
this.router.navigateByUrl(activity);
}
}