feat: add user activity search component (#716)

Fixes: #710
This commit is contained in:
Benura Abeywardena
2020-05-17 22:14:38 +05:30
committed by GitHub
parent c40c1b0434
commit 17e56714e1
4 changed files with 126 additions and 0 deletions
+37
View File
@@ -1,5 +1,11 @@
/** Angular Imports */
import { Component, OnInit } from '@angular/core';
import { FormControl } from '@angular/forms';
import { Observable } from 'rxjs';
import { startWith, map } from 'rxjs/operators';
/** Custom Imports. */
import { activities } from './activities';
/** Custom Services */
import { AuthenticationService } from '../core/authentication/authentication.service';
@@ -16,18 +22,49 @@ export class HomeComponent implements OnInit {
/** Username of authenticated user. */
username: string;
/** Activity Form. */
activityForm: any;
/** Search Text. */
searchText: FormControl = new FormControl();
/** Filtered Activities. */
filteredActivities: Observable<any[]>;
/** All User Activities. */
allActivities: any[] = activities;
/**
* @param {AuthenticationService} authenticationService Authentication Service.
* @param {FormBuilder} formBuilder Form Builder.
*/
constructor(private authenticationService: AuthenticationService) { }
/**
* Sets the username of the authenticated user.
* Set Form.
*/
ngOnInit() {
const credentials = this.authenticationService.getCredentials();
this.username = credentials.username;
this.setFilteredActivities();
}
/**
* Sets filtered activities for autocomplete.
*/
setFilteredActivities() {
this.filteredActivities = this.searchText.valueChanges
.pipe(
map((activity: any) => typeof activity === 'string' ? activity : activity.activity),
map((activityName: string) => activityName ? this.filterActivity(activityName) : this.allActivities));
}
/**
* Filters activities.
* @param activityName Activity name to filter activity by.
* @returns {any} Filtered activities.
*/
private filterActivity(activityName: string): any {
const filterValue = activityName.toLowerCase();
return this.allActivities.filter(activity => activity.activity.toLowerCase().indexOf(filterValue) === 0);
}
}