diff --git a/src/app/home/home.component.html b/src/app/home/home.component.html
index 5f86333..dfce345 100644
--- a/src/app/home/home.component.html
+++ b/src/app/home/home.component.html
@@ -195,7 +195,7 @@
-
+
{{stakeholder.visibility.toLowerCase()}}
![]()
diff --git a/src/app/search-stakeholders/search-stakeholders.component.ts b/src/app/search-stakeholders/search-stakeholders.component.ts
index b91df3b..7906d4a 100644
--- a/src/app/search-stakeholders/search-stakeholders.component.ts
+++ b/src/app/search-stakeholders/search-stakeholders.component.ts
@@ -12,7 +12,7 @@ import {HelperFunctions} from "../openaireLibrary/utils/HelperFunctions.class";
import {UserManagementService} from "../openaireLibrary/services/user-management.service";
import {StakeholderService} from "../openaireLibrary/monitor/services/stakeholder.service";
import {NewSearchPageComponent} from "../openaireLibrary/searchPages/searchUtils/newSearchPage.component";
-import {StakeholderInfo} from "../openaireLibrary/monitor/entities/stakeholder";
+import {Stakeholder, StakeholderInfo} from "../openaireLibrary/monitor/entities/stakeholder";
import {properties} from "../../environments/environment";
@Component({
@@ -130,7 +130,8 @@ export class SearchStakeholdersComponent {
}
for (let i = 0; i < data.length; i++) {
this.totalResults[i] = data[i];
- this.totalResults[i].isManager = this.isStakeholderManager();
+ this.totalResults[i].isManager = this.isStakeholderManager(data);
+ this.totalResults[i].isMember = this.isStakeholderMember(data);
}
this._getResults(params);
},
@@ -168,10 +169,12 @@ export class SearchStakeholdersComponent {
private showFunders() {
let ret = [];
for (let result of this.results) {
- if (!result.isActive || (!result.isPublic && !this.isStakeholderManager())) {
- continue;
+ if(result.visibility === 'PUBLIC' ||
+ (result.visibility === 'RESTRICTED' && this.isStakeholderMember(result)) ||
+ (result.visibility === 'PRIVATE' && this.isStakeholderManager(result))
+ ) {
+ ret.push(result);
}
- ret.push(result);
}
this.results = ret;
}
@@ -298,12 +301,17 @@ export class SearchStakeholdersComponent {
} else {
for (let value of values) {
if (value.replace(/["']/g, "") == 'public') {
- if (this.results[i].isPublic) {
+ if (this.results[i].visibility === 'PUBLIC') {
+ results.push(this.results[i]);
+ break;
+ }
+ } else if (value.replace(/["']/g, "") == 'restricted') {
+ if (this.results[i].visibility === 'RESTRICTED') {
results.push(this.results[i]);
break;
}
} else if (value.replace(/["']/g, "") == 'private') {
- if (!this.results[i].isPublic) {
+ if (this.results[i].visibility === 'PRIVATE') {
results.push(this.results[i]);
break;
}
@@ -323,6 +331,12 @@ export class SearchStakeholdersComponent {
break;
}
}
+ if (value.replace(/["']/g, "") == 'member') {
+ if (this.results[i].isMember) {
+ results.push(this.results[i]);
+ break;
+ }
+ }
}
}
}
@@ -364,15 +378,20 @@ export class SearchStakeholdersComponent {
}
}
} else if (this.filters[i].filterId == 'access') {
- if (results[k].isPublic) {
+ if (results[k].visibility === 'PUBLIC') {
this.filters[i].values[0].number++;
- } else {
+ } else if (results[k].visibility === 'RESTRICTED') {
this.filters[i].values[1].number++;
+ } else {
+ this.filters[i].values[2].number++;
}
} else if (this.filters[i].filterId == 'role') {
if (results[k].isManager) {
this.filters[i].values[0].number++;
}
+ if (results[k].isMember) {
+ this.filters[i].values[1].number++;
+ }
}
break;
}
@@ -417,8 +436,13 @@ export class SearchStakeholdersComponent {
}
}
- private isStakeholderManager() {
- return Session.isPortalAdministrator(this.user) || Session.isMonitorCurator(this.user) || Session.isCommunityCurator(this.user);
+ private isStakeholderManager(stakeholder) {
+ return Session.isPortalAdministrator(this.user) || Session.isMonitorCurator(this.user)
+ || Session.isCommunityCurator(this.user) || Session.isManager(stakeholder.type, stakeholder.alias, this.user);
+ }
+
+ private isStakeholderMember(stakeholder) {
+ return this.isStakeholderManager(stakeholder) || Session.isSubscribedTo(stakeholder.type, stakeholder.alias, this.user);
}
/**
@@ -437,12 +461,12 @@ export class SearchStakeholdersComponent {
if (this.user) {
filter_names.push("Accessibility");
filter_ids.push("access");
- value_names.push(["Public", "Private"]);
- value_original_ids.push(["public", "private"]);
+ value_names.push(["Public", "Restricted", "Private"]);
+ value_original_ids.push(["public", "restricted", "private"]);
filter_names.push("Role");
filter_ids.push("role");
- value_names.push(["Manager"]);
- value_original_ids.push(["manager"]);
+ value_names.push(["Manager", "Member"]);
+ value_original_ids.push(["manager", "member"]);
this.userFilterLoaded = true;
}
let filters: Filter[] = [];