mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-17 23:13:04 +00:00
45621: filters facet route service
This commit is contained in:
47
src/app/shared/route.service.ts
Normal file
47
src/app/shared/route.service.ts
Normal file
@@ -0,0 +1,47 @@
|
||||
import { Injectable, OnDestroy } from '@angular/core';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
import { ActivatedRoute, convertToParamMap, Params, } from '@angular/router';
|
||||
import { isNotEmpty } from './empty.util';
|
||||
|
||||
@Injectable()
|
||||
export class RouteService {
|
||||
|
||||
constructor(private route: ActivatedRoute) {
|
||||
}
|
||||
|
||||
hasQueryParam(paramName: string): Observable<boolean> {
|
||||
return this.route.queryParamMap.map((map) => map.has(paramName));
|
||||
}
|
||||
|
||||
hasQueryParamWithValue(paramName: string, paramValue: string): Observable<boolean> {
|
||||
return this.route.queryParamMap.map((map) => map.getAll(paramName).indexOf(paramValue) > -1);
|
||||
}
|
||||
|
||||
addQueryParameterValue(paramName: string, paramValue: string): Observable<Params> {
|
||||
return this.route.queryParams.map((currentParams) => {
|
||||
const newParam = {};
|
||||
newParam[paramName] = [...convertToParamMap(currentParams).getAll(paramName), paramValue];
|
||||
return Object.assign({}, currentParams, newParam);
|
||||
});
|
||||
}
|
||||
|
||||
removeQueryParameterValue(paramName: string, paramValue: string): Observable<Params> {
|
||||
return this.route.queryParams.map((currentParams) => {
|
||||
const newParam = {};
|
||||
const currentFilterParams = convertToParamMap(currentParams).getAll(paramName);
|
||||
if (isNotEmpty(currentFilterParams)) {
|
||||
newParam[paramName] = currentFilterParams.filter((param) => (param !== paramValue));
|
||||
}
|
||||
return Object.assign({}, currentParams, newParam);
|
||||
});
|
||||
}
|
||||
|
||||
removeQueryParameter(paramName: string): Observable<Params> {
|
||||
return this.route.queryParams.map((currentParams) => {
|
||||
const newParam = {};
|
||||
newParam[paramName] = {};
|
||||
return Object.assign({}, currentParams, newParam);
|
||||
});
|
||||
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user