Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import { Injectable } from '@angular/core';
import { combineLatest, Observable } from 'rxjs';
import { first, map } from 'rxjs/operators';
import { MyDSpaceConfigurationValueType } from './my-dspace-configuration-value-type';
import { RoleService } from '../core/roles/role.service';
import { SearchConfigurationOption } from '../+search-page/search-switch-configuration/search-configuration-option.model';
/**
* Service that performs all actions that have to do with the current search configuration
*/
@Injectable()
export class MyDSpaceConfigurationService {
private isAdmin$: Observable<boolean>;
private isController$: Observable<boolean>;
private isSubmitter$: Observable<boolean>;
/**
* @constructor
*/
constructor(protected roleService: RoleService) {
this.isSubmitter$ = this.roleService.isSubmitter();
this.isController$ = this.roleService.isController();
this.isAdmin$ = this.roleService.isAdmin();
}
public getAvailableConfigurationTypes(): Observable<MyDSpaceConfigurationValueType[]> {
return combineLatest(this.isSubmitter$, this.isController$, this.isAdmin$).pipe(
first(),
map(([isSubmitter, isController, isAdmin]: [boolean, boolean, boolean]) => {
const availableConf: MyDSpaceConfigurationValueType[] = [];
if (isSubmitter) {
availableConf.push(MyDSpaceConfigurationValueType.Workspace);
}
if (isController || isAdmin) {
availableConf.push(MyDSpaceConfigurationValueType.Workflow);
}
return availableConf;
}));
}
public getAvailableConfigurationOptions(): Observable<SearchConfigurationOption[]> {
return this.getAvailableConfigurationTypes().pipe(
first(),
map((availableConfigurationTypes: MyDSpaceConfigurationValueType[]) => {
const configurationOptions: SearchConfigurationOption[] = [];
availableConfigurationTypes.forEach((type) => {
const value = type;
const label = `mydspace.show.${value}`;
configurationOptions.push({ value, label });
});
return configurationOptions;
})
)
}
}