[Monitor | Trunk]: Finish search of stakeholders. Add mobile view for boat section on home page

git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-monitor-portal/trunk/monitor@58861 d315682c-612b-4755-9ff5-7f18f6832af3
This commit is contained in:
Konstantinos Triantafyllou 2020-06-05 12:59:28 +00:00
parent bdffbd07eb
commit b73abe4541
9 changed files with 444 additions and 688 deletions

View File

@ -59,8 +59,7 @@
"pagingLimit": 20, "pagingLimit": 20,
"resultsPerPage": 10, "resultsPerPage": 10,
"baseLink" : "https://beta.connect.openaire.eu", "baseLink" : "https://beta.monitor.openaire.eu",
"afterLoginRedirectLink": "/myCommunities",
"searchLinkToPublication" : "/search/publication?articleId=", "searchLinkToPublication" : "/search/publication?articleId=",
"searchLinkToProject" : "/search/project?projectId=", "searchLinkToProject" : "/search/project?projectId=",
"searchLinkToDataProvider" : "/search/dataprovider?datasourceId=", "searchLinkToDataProvider" : "/search/dataprovider?datasourceId=",

View File

@ -62,9 +62,7 @@
"pagingLimit": 20, "pagingLimit": 20,
"resultsPerPage": 10, "resultsPerPage": 10,
"baseLink" : "https://connect.openaire.eu", "baseLink" : "https://monitor.openaire.eu",
"afterLoginRedirectLink": "/myCommunities",
"searchLinkToPublication" : "/search/publication?articleId=", "searchLinkToPublication" : "/search/publication?articleId=",
"searchLinkToProject" : "/search/project?projectId=", "searchLinkToProject" : "/search/project?projectId=",

View File

@ -4,10 +4,7 @@ import {ActivatedRoute, NavigationStart, Router} from '@angular/router';
import {EnvProperties} from './openaireLibrary/utils/properties/env-properties'; import {EnvProperties} from './openaireLibrary/utils/properties/env-properties';
import {MenuItem, RootMenuItem} from './openaireLibrary/sharedComponents/menu'; import {MenuItem, RootMenuItem} from './openaireLibrary/sharedComponents/menu';
import {EnvironmentSpecificService} from './openaireLibrary/utils/properties/environment-specific.service'; import {EnvironmentSpecificService} from './openaireLibrary/utils/properties/environment-specific.service';
import {CommunitiesService} from "./openaireLibrary/connect/communities/communities.service";
import {Session, User} from './openaireLibrary/login/utils/helper.class'; import {Session, User} from './openaireLibrary/login/utils/helper.class';
import {ConnectHelper} from './openaireLibrary/connect/connectHelper';
import {SubscribeService} from './openaireLibrary/utils/subscribe/subscribe.service';
import {HelperFunctions} from "./openaireLibrary/utils/HelperFunctions.class"; import {HelperFunctions} from "./openaireLibrary/utils/HelperFunctions.class";
import {UserManagementService} from "./openaireLibrary/services/user-management.service"; import {UserManagementService} from "./openaireLibrary/services/user-management.service";
@ -15,57 +12,41 @@ import {UserManagementService} from "./openaireLibrary/services/user-management.
selector: 'app-root', selector: 'app-root',
template: ` template: `
<div class="monitorApp"> <div class="monitorApp">
<navbar *ngIf="properties && showMenu && !community" portal="monitor" [onlyTop]=false <navbar *ngIf="properties && showMenu" portal="monitor" [onlyTop]=false
[userMenuItems]=userMenuItems [menuItems]=menuItems [user]="user" [userMenuItems]=userMenuItems [menuItems]=menuItems [user]="user"
[showMenu]=showMenu [properties]="properties"></navbar> [showMenu]=showMenu [properties]="properties"></navbar>
<navbar *ngIf="properties && showMenu && community" portal="monitor" [onlyTop]=false [communityId]="community.id"
[userMenuItems]=userMenuItems [menuItems]=menuItems [user]="user"
[community]=community [showMenu]=showMenu [properties]="properties" [enableSearch]="true"></navbar>
<div class="custom-main-content"> <div class="custom-main-content">
<main> <main>
<router-outlet></router-outlet> <router-outlet></router-outlet>
</main> </main>
</div> </div>
<!--feedback *ngIf= "isClient && properties" portalName="Connect" [feedbackQuestionaire]=properties.feedbackQuestionaire></feedback-->
<cookie-law *ngIf="isClient" position="bottom"> <cookie-law *ngIf="isClient" position="bottom">
OpenAIRE uses cookies in order to function properly.<br> OpenAIRE uses cookies in order to function properly.<br>
Cookies are small pieces of data that websites store in your browser to allow us to give you the best browsing Cookies are small pieces of data that websites store in your browser to allow us to give you the best browsing
experience possible. experience possible.
By using the OpenAIRE portal you accept our use of cookies. <a By using the OpenAIRE portal you accept our use of cookies. <a
href="//ec.europa.eu/ipg/basics/legal/cookies/index_en.htm" target="_blank"> Read more <span class="uk-icon"> href="//ec.europa.eu/ipg/basics/legal/cookies/index_en.htm" target="_blank"> Read more <span class="uk-icon">
<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" icon="chevron-right" <svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" icon="chevron-right"
ratio="1"><polyline fill="none" stroke="#000" stroke-width="1.03" ratio="1"><polyline fill="none" stroke="#000" stroke-width="1.03"
points="7 4 13 10 7 16"></polyline></svg> points="7 4 13 10 7 16"></polyline></svg>
</span></a> </span></a>
</cookie-law> </cookie-law>
<bottom *ngIf="properties && isClient && showMenu && !community" [grantAdvance]="false" <bottom *ngIf="properties && isClient && showMenu" [grantAdvance]="false"
[properties]="properties"></bottom> [properties]="properties"></bottom>
<bottom *ngIf="properties && isClient && showMenu && community" class="communityPanelBackground"
[showSocialButtons]="true" [showMenuItems]="true" [grantAdvance]="false" [showOpenaire]="true"
[communityId]="community.id" [menuItems]=bottomMenuItems [properties]="properties"></bottom>
</div> </div>
` `
}) })
export class AppComponent { export class AppComponent {
isClient: boolean = false; isClient: boolean = false;
userMenuItems: MenuItem[] = []; userMenuItems: MenuItem[] = [];
menuItems: RootMenuItem [] = []; menuItems: RootMenuItem [] = [];
bottomMenuItems: MenuItem[] = []; bottomMenuItems: MenuItem[] = [];
public community = null;
properties: EnvProperties; properties: EnvProperties;
showMenu: boolean = false; showMenu: boolean = false;
communities = null;
subscriberOfCommunities = false;
managerOfCommunities = false;
user: User; user: User;
// community: {id:string, name:string, logoUrl:string};
constructor(private route: ActivatedRoute, private propertiesService: EnvironmentSpecificService, constructor(private route: ActivatedRoute, private propertiesService: EnvironmentSpecificService,
private _communitiesService: CommunitiesService, private _subscribeService: SubscribeService,
private router: Router, private userManagementService: UserManagementService) { private router: Router, private userManagementService: UserManagementService) {
router.events.forEach((event) => { router.events.forEach((event) => {
if (event instanceof NavigationStart) { if (event instanceof NavigationStart) {
@ -78,21 +59,9 @@ export class AppComponent {
this.propertiesService.loadEnvironment() this.propertiesService.loadEnvironment()
.then(es => { .then(es => {
this.properties = this.propertiesService.envSpecific; this.properties = this.propertiesService.envSpecific;
var communityId: string = ""; this.userManagementService.getUserInfo().subscribe(user => {
this._communitiesService.updateCommunities(this.properties, this.properties.communitiesAPI);
this.userManagementService.getUserInfo().subscribe( user => {
this.user = user; this.user = user;
if (this.properties.environment == "development") { this.buildMenu()
this.showMenu = false;
this.route.queryParams.subscribe(params => {
communityId = (params['communityId']) ? params['communityId'] : '';
this.buildMenu(communityId);
})
} else {
this.showMenu = false;
communityId = ConnectHelper.getCommunityFromDomain(this.properties.domain);
this.buildMenu(communityId);
}
if (typeof document !== 'undefined') { if (typeof document !== 'undefined') {
try { try {
this.isClient = true; this.isClient = true;
@ -102,126 +71,38 @@ export class AppComponent {
}, error => { }, error => {
console.log("App couldn't fetch properties"); console.log("App couldn't fetch properties");
console.log(error); console.log(error);
}); });
});
}
public buildMenu(communityId: string) {
let community = null;
this.community = null;
this._communitiesService.getCommunitiesState().subscribe(
communities => {
if (!communities || communities.length == 0 && communityId !== null && communityId !== '') {
return;
}
for (var com of communities) {
if ((communityId && communityId != "" && com.communityId == communityId
&& community != null) ||
(
!(communityId && communityId != "" && com.communityId == communityId)
&&
this.managerOfCommunities && this.subscriberOfCommunities)) {
break;
}
if (this.user && com['status'] != "hidden") {
if (Session.isCommunityCurator(this.user) || Session.isPortalAdministrator(this.user)) {
this.managerOfCommunities = true;
} else if (com.managers.indexOf(this.user.email) != -1) {
this.managerOfCommunities = true;
}
}
}
if (community == null) {
this.menuItems = [];
this.menuItems.push({
rootItem: new MenuItem("about", "About", "", "/about/learn-how", false, [], null, {}),
items: []
});
var myCommunities = [];
/*if(this.managerOfCommunities){
myCommunities.push( new MenuItem("","Managing communities","","/search/find/communities",false,[],[],{role:"%22manager%22"}))
}
if(Session.isLoggedIn()){
this._subscribeService.getCommunitiesSubscribedTo(this.properties, Session.getUserEmail()).subscribe (
pids => {
if(pids.length > 0 ) {
myCommunities.push( new MenuItem("","Subscribed to communities","","/search/find/communities",false,[],[],{status:"%22subscribed%22"}))
}
},
error => {
console.error("Error fetching your subscribed communities")
});
}*/
this.menuItems.push({
rootItem: new MenuItem("stakeholders", "Members in Action", "", "/search/find/stakeholders", false, [], null, {}),
items: []
});
this.menuItems.push({
rootItem: new MenuItem("contact-us", "Contact us", "", "/contact-us", false, [], null, {}),
items: []
});
/*if(this.managerOfCommunities || this.subscriberOfCommunities){
let myCommunitiesMenu = new MenuItem("myCommunities","My Communities","","",false,[],[],{});
myCommunitiesMenu.setMarkAsActive(false);
this.menuItems.push({rootItem: myCommunitiesMenu, items: myCommunities});
}*/
this.bottomMenuItems = [
new MenuItem("", "About", "https://beta.openaire.eu/project-factsheets", "", false, [], [], {}),
new MenuItem("", "News - Events", "https://beta.openaire.eu/news-events", "", false, [], [], {}),
new MenuItem("", "Blog", "https://blogs.openaire.eu/", "", false, [], [], {}),
new MenuItem("", "Contact us", "https://beta.openaire.eu/contact-us", "", false, [], [], {})
];
// if(this.properties.showContent){
// this.bottomMenuItems.push(new MenuItem("","Content Policy","","/content",false,[],[],{}));
// }
this.userMenuItems = [
// new MenuItem("","My links","","/myclaims",false,[],["/myclaims"],(data['communityId'] && typeof document !== 'undefined' && ConnectHelper.isProduction(document.location.hostname))?{}:{communityId:data['communityId']}),
];
if (Session.isPortalAdministrator(this.user) || Session.isMonitorCurator(this.user) || Session.isCommunityCurator(this.user)) {
this.userMenuItems.push(new MenuItem("", "Manage Helptexts",
((this.properties.environment == "production") ? "https://admin.explore.openaire.eu" : "https://beta.admin.connect.openaire.eu") + "/dashboard?communityId=connect",
"", false, [], [], {}))
this.userMenuItems.push(new MenuItem("", "Manage Stakeholders",
"/admin", "", true, [], [], {}))
}
/*if(this.managerOfCommunities){
this.userMenuItems.push( new MenuItem("","Managing communities","","/search/find/communities",false,[],[],{role:"%22manager%22"}))
}
if(Session.isLoggedIn()){
this._subscribeService.getCommunitiesSubscribedTo(this.properties, Session.getUserEmail()).subscribe (
pids => {
if(pids.length > 0 ) {
this.userMenuItems.push( new MenuItem("","Subscribed to communities","","/search/find/communities",false,[],[],{status:"%22subscribed%22"}))
}
},
error => {
console.error("Error fetching your subscribed communities")
});
}*/
} else {
this.bottomMenuItems = [
// new MenuItem("","About","","/about",false,[],["/about"],this.properties.environment!="development"?{}:{communityId:community.communityId}),
new MenuItem("", "Organizations", "", "/organizations", false, [], ["/organizations"], this.properties.environment != "development" ? {} : {communityId: community.communityId})
];
if (this.properties.showContent) {
this.bottomMenuItems.push(new MenuItem("", "Content Policy", "", "/content", false, [], [], {}));
}
this.userMenuItems = [ /*new MenuItem("","My profile","","",false,[],[],{}),*/
new MenuItem("", "My links", "", "/myclaims", false, [], ["/myclaims"], this.properties.environment != "development" ? {} : {communityId: community.communityId}),
new MenuItem("", "Invite users", "", "/invite", false, [], [], this.properties.environment != "development" ? {} : {communityId: community.communityId}),
];
if (this.managerOfCommunities) {
this.userMenuItems.push(new MenuItem("", "Support", "https://openaire-connect.d4science.org/group/openaire-connect-gateway/explore?siteId=172366611", "", false, [], [], {}))
}
}
this.showMenu = true;
}); });
} }
public buildMenu() {
this.menuItems = [];
this.menuItems.push({
rootItem: new MenuItem("about", "About", "", "/about/learn-how", false, [], null, {}),
items: []
});
this.menuItems.push({
rootItem: new MenuItem("stakeholders", "Members in Action", "", "/search/find/stakeholders", false, [], null, {}),
items: []
});
this.menuItems.push({
rootItem: new MenuItem("contact-us", "Contact us", "", "/contact-us", false, [], null, {}),
items: []
});
this.bottomMenuItems = [
new MenuItem("", "About", "https://beta.openaire.eu/project-factsheets", "", false, [], [], {}),
new MenuItem("", "News - Events", "https://beta.openaire.eu/news-events", "", false, [], [], {}),
new MenuItem("", "Blog", "https://blogs.openaire.eu/", "", false, [], [], {}),
new MenuItem("", "Contact us", "https://beta.openaire.eu/contact-us", "", false, [], [], {})
];
this.userMenuItems = [];
if (Session.isPortalAdministrator(this.user) || Session.isMonitorCurator(this.user) || Session.isCommunityCurator(this.user)) {
this.userMenuItems.push(new MenuItem("", "Manage Helptexts",
((this.properties.environment == "production") ? "https://admin.explore.openaire.eu" : "https://beta.admin.connect.openaire.eu") + "/dashboard?communityId=connect",
"", false, [], [], {}))
this.userMenuItems.push(new MenuItem("", "Manage Stakeholders",
"/admin", "", true, [], [], {}))
}
this.showMenu = true;
}
} }

View File

@ -5,7 +5,7 @@
background-blend-mode: darken; background-blend-mode: darken;
} }
@media (max-width:1366px) { @media (max-width:1199px) {
.home-background { .home-background {
background-size: cover; background-size: cover;
background-repeat: no-repeat; background-repeat: no-repeat;
@ -14,11 +14,17 @@
} }
.dashboard-section{ .dashboard-section{
background-image: url("~assets/monitor-assets/home/dashboard-background.svg"); background-image: url("~assets/monitor-assets/home/graph-background.svg");
background-size: cover; background-size: cover;
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: top center; background-position: left center;
margin-top: 400px; margin-top: 18vw;
}
@media (max-width:1599px) {
.dashboard-section {
margin-top: 12vw;
}
} }
.dashboard-section .dashboard { .dashboard-section .dashboard {
@ -34,6 +40,8 @@
width: 50%; width: 50%;
height: 0; height: 0;
padding-top: 25%; padding-top: 25%;
border: 1px solid #E6E6E6;
border-radius: 5px;
} }
.dashboard-section .dashboard .captain-left { .dashboard-section .dashboard .captain-left {
@ -44,7 +52,7 @@
left: -10%; left: -10%;
bottom: -5%; bottom: -5%;
position: absolute; position: absolute;
height: 35%; height: 36%;
width: 17%; width: 17%;
} }
@ -62,69 +70,87 @@
width: 16%; width: 16%;
} }
.boat-section.uk-hidden\@l { @media (min-width: 1200px) {
.boat-section {
position: relative;
z-index: 0;
height: 300px;
}
.boat-section .first {
position: absolute;
top: 0;
left: 8%;
width: 32%;
z-index: 2;
}
.boat-section .second {
position: absolute;
top: 3%;
right: 8%;
width: 34%;
z-index: 2;
}
.boat-section .third {
position: absolute;
bottom: 6%;
left: 7%;
width: 34%;
}
.boat-section .fourth {
position: absolute;
bottom: 4%;
right: 7%;
width: 34%;
}
}
@media (min-width: 960px) and (max-width: 1199px){
.boat-section {
background-image: url("~assets/monitor-assets/home/boat.png");
background-repeat: no-repeat;
background-position: center center;
background-size: 30% ;
}
}
@media (max-width: 959px), (min-width: 1200px) {
.boat-section > div.uk-grid > * {
padding: 0;
}
}
.boat-section .boat {
background-image: url("~assets/monitor-assets/home/boat.png"); background-image: url("~assets/monitor-assets/home/boat.png");
background-size: contain; background-size: contain;
background-repeat: no-repeat; background-repeat: no-repeat;
margin: 0 0 -30px 50%;
width: 50%;
height: 30vw;
} }
.boat-section.uk-visible\@l { .boat-section .boat:not(.uk-hidden\@m) {
position: relative;
z-index: 0;
height: 300px;
}
.boat-section.uk-visible\@l .boat {
position: absolute; position: absolute;
transform: translate(-50%, -50%);
left: 50%; left: 50%;
top: 50%; top: 50%;
transform: translate(-50%, -50%); width: 30%;
background-image: url("~assets/monitor-assets/home/boat.png"); height: 42%;
background-size: contain;
background-repeat: no-repeat;
width: 426px;
height: 245px;
z-index: 1; z-index: 1;
opacity: 0.9; opacity: 0.9;
margin: 0;
} }
.boat-section > div:not(.boat) { .boat-section > div:not(.boat):not(.uk-grid), .boat-section > div.uk-grid > div > div {
background: rgba(255, 255, 255, 0.8); background: rgba(255, 255, 255, 0.8);
box-shadow: 0 3px 6px #00000029; box-shadow: 0 3px 6px #00000029;
padding: 35px; padding: 35px;
margin-bottom: 10px; margin-bottom: 10px;
} }
.boat-section.uk-visible\@l .first {
position: absolute;
top: 0;
left: 150px;
width: 350px;
z-index: 2;
}
.boat-section.uk-visible\@l .second {
position: absolute;
top: 25px;
right: 100px;
width: 400px;
z-index: 2;
}
.boat-section.uk-visible\@l .third {
position: absolute;
bottom: 30px;
left: 100px;
width: 400px;
}
.boat-section.uk-visible\@l .fourth {
position: absolute;
bottom: 0;
right: 70px;
width: 400px;
}
.graph-section { .graph-section {
background-image: url("~assets/monitor-assets/home/graph-background.svg"); background-image: url("~assets/monitor-assets/home/graph-background.svg");
background-size: cover; background-size: cover;
@ -168,6 +194,7 @@
border-top: #E3E3E3 solid 1px; border-top: #E3E3E3 solid 1px;
margin-top: -1px; margin-top: -1px;
padding-top: 20px; padding-top: 20px;
min-height: 300px;
} }
.stakeholder-section .stakeholders .header { .stakeholder-section .stakeholders .header {

View File

@ -13,10 +13,10 @@
</div> </div>
<div class="uk-section dashboard-section"> <div class="uk-section dashboard-section">
<div class="dashboard"> <div class="dashboard">
<div class="captain-left uk-hidden@l"></div> <div class="captain-left uk-hidden@m"></div>
<div class="captain-right uk-hidden@l"></div> <div class="captain-right uk-hidden@m"></div>
<div #ref [@captain-left]="(captains)?'after':'before'" class="captain-left uk-visible@l"></div> <div #ref [@captain-left]="(captains)?'after':'before'" class="captain-left uk-visible@m"></div>
<div [@captain-right]="(captains)?'after':'before'" class="captain-right uk-visible@l"></div> <div [@captain-right]="(captains)?'after':'before'" class="captain-right uk-visible@m"></div>
</div> </div>
<div class="uk-container uk-container-large uk-margin-large-top uk-text-justify"> <div class="uk-container uk-container-large uk-margin-large-top uk-text-justify">
<div class="uk-margin-left uk-margin-right uk-margin-large-bottom"> <div class="uk-margin-left uk-margin-right uk-margin-large-bottom">
@ -53,64 +53,46 @@
</div> </div>
</div> </div>
</div> </div>
<div class="uk-section uk-section-large uk-container uk-margin-large-top uk-margin-left uk-margin-right boat-section uk-position-relative uk-hidden@l"> <div class="uk-section uk-section-large uk-container uk-container-large uk-margin-large-top boat-section uk-text-large uk-text-justify uk-position-relative">
<div class="first"> <div class="uk-grid uk-grid-match uk-margin-left uk-margin-right uk-child-width-1-2@m" uk-grid>
<h3>Global outlook</h3> <div class="boat uk-hidden@m"></div>
<div> <div class="boat uk-visible@l"></div>
Monitor is built on the OpenAIRE Research Graph. An interconnected scholarly communication shared data resource <div class="first">
from open initiatives around the world, of global interest. <div>
<h3>Global outlook</h3>
<div>
Monitor is built on the OpenAIRE Research Graph. An interconnected scholarly communication shared data
resource
from open initiatives around the world, of global interest.
</div>
</div>
</div> </div>
</div> <div class="second">
<div class="second"> <div>
<h3>Transparent methodology</h3> <h3>Transparent methodology</h3>
<div> <div>
We base our service on open science principles. We rely on open data sources, and document our algorithms for We base our service on open science principles. We rely on open data sources, and document our algorithms for
every metric and indicator we publish. every metric and indicator we publish.
</div>
</div>
</div> </div>
</div> <div class="third">
<div class="third"> <div>
<h3>Customised to your needs</h3> <h3>Customised to your needs</h3>
<div> <div>
Choose from a variety of pre-defined metrics. Select how to visualize them, and who to share with. Choose from a variety of pre-defined metrics. Select how to visualize them, and who to share with.
Use our advanced tools and expertise add add your own metrics. Use our advanced tools and expertise add add your own metrics.
</div>
</div>
</div> </div>
</div> <div class="fourth">
<div class="fourth"> <div>
<h3>Minimum effort to join</h3> <h3>Minimum effort to join</h3>
<div> <div>
You only share some information with us to include in out backend aggregating and data mining, You only share some information with us to include in out backend aggregating and data mining,
and we deliver a view of your world. As you see fit. and we deliver a view of your world. As you see fit.
</div> </div>
</div> </div>
</div>
<div class="uk-section uk-section-large uk-container uk-container-large uk-margin-large-top boat-section uk-text-large uk-visible@l">
<div class="boat"></div>
<div class="first">
<h3>Global outlook</h3>
<div>
Monitor is built on the OpenAIRE Research Graph. An interconnected scholarly communication shared data resource
from open initiatives around the world, of global interest.
</div>
</div>
<div class="second">
<h3>Transparent methodology</h3>
<div>
We base our service on open science principles. We rely on open data sources, and document our algorithms for
every metric and indicator we publish.
</div>
</div>
<div class="third">
<h3>Customised to your needs</h3>
<div>
Choose from a variety of pre-defined metrics. Select how to visualize them, and who to share with.
Use our advanced tools and expertise add add your own metrics.
</div>
</div>
<div class="fourth">
<h3>Minimum effort to join</h3>
<div>
You only share some information with us to include in out backend aggregating and data mining,
and we deliver a view of your world. As you see fit.
</div> </div>
</div> </div>
</div> </div>
@ -146,18 +128,20 @@
</div> </div>
</div> </div>
</div> </div>
<div *ngIf="stakeholders && stakeholders.length > 0" class="uk-section uk-section-large uk-margin-right uk-margin-left uk-margin-large-top stakeholder-section"> <div *ngIf="stakeholders && stakeholders.length > 0"
class="uk-section uk-section-large uk-margin-right uk-margin-left uk-margin-large-top stakeholder-section">
<div class="uk-container uk-visible@m" uk-filter="target: .stakeholders"> <div class="uk-container uk-visible@m" uk-filter="target: .stakeholders">
<div class="tabs"> <div class="tabs">
<ul> <ul>
<li class="uk-active" uk-filter-control>All</li> <li class="uk-active" uk-filter-control>All</li>
<li uk-filter-control="[data-type='funder']">Funders</li> <li uk-filter-control="[data-type='funder']">Funders</li>
<li uk-filter-control="[data-type='ri']">Research Initiatives</li> <li uk-filter-control="[data-type='ri']">Research Initiatives</li>
<li uk-filter-control="[data-type='project']">Projects</li> <!--<li uk-filter-control="[data-type='project']">Projects</li>-->
<li uk-filter-control="[data-type='organization']">Organizations</li> <li uk-filter-control="[data-type='organization']">Organizations</li>
</ul> </ul>
</div> </div>
<div class="stakeholders uk-child-width-1-2 uk-child-width-1-3@m uk-grid uk-flex-top uk-flex-wrap-top" uk-grid="masonry: true"> <div class="stakeholders uk-child-width-1-2 uk-child-width-1-3@m uk-grid uk-flex-top uk-flex-wrap-top"
uk-grid="masonry: true">
<div *ngFor="let stakeholder of stakeholders" [attr.data-type]="stakeholder.type" class="uk-margin-medium-bottom"> <div *ngFor="let stakeholder of stakeholders" [attr.data-type]="stakeholder.type" class="uk-margin-medium-bottom">
<div class="header" [ngClass]="stakeholder.size"> <div class="header" [ngClass]="stakeholder.size">
<img class="uk-margin-auto" [src]="'http://dl170.madgik.di.uoa.gr/monitor/dashboard/assets/ec.png'"> <img class="uk-margin-auto" [src]="'http://dl170.madgik.di.uoa.gr/monitor/dashboard/assets/ec.png'">

View File

@ -3,54 +3,70 @@ import {SearchUtilsClass} from "../openaireLibrary/searchPages/searchUtils/searc
import {ErrorMessagesComponent} from "../openaireLibrary/utils/errorMessages.component"; import {ErrorMessagesComponent} from "../openaireLibrary/utils/errorMessages.component";
import {ErrorCodes} from "../openaireLibrary/utils/properties/errorCodes"; import {ErrorCodes} from "../openaireLibrary/utils/properties/errorCodes";
import {EnvProperties} from "../openaireLibrary/utils/properties/env-properties"; import {EnvProperties} from "../openaireLibrary/utils/properties/env-properties";
import {SearchPageComponent} from "../openaireLibrary/searchPages/searchUtils/searchPage.component";
import {ActivatedRoute} from "@angular/router"; import {ActivatedRoute} from "@angular/router";
import {Filter, Value} from "../openaireLibrary/searchPages/searchUtils/searchHelperClasses.class"; import {AdvancedField, Filter, Value} from "../openaireLibrary/searchPages/searchUtils/searchHelperClasses.class";
import {SearchFields} from "../openaireLibrary/utils/properties/searchFields"; import {SearchFields} from "../openaireLibrary/utils/properties/searchFields";
import {Session, User} from "../openaireLibrary/login/utils/helper.class"; import {Session, User} from "../openaireLibrary/login/utils/helper.class";
import {CommunityInfo} from "../openaireLibrary/connect/community/communityInfo";
import {StringUtils} from "../openaireLibrary/utils/string-utils.class"; import {StringUtils} from "../openaireLibrary/utils/string-utils.class";
import {HelperFunctions} from "../openaireLibrary/utils/HelperFunctions.class"; import {HelperFunctions} from "../openaireLibrary/utils/HelperFunctions.class";
import {UserManagementService} from "../openaireLibrary/services/user-management.service"; import {UserManagementService} from "../openaireLibrary/services/user-management.service";
import {StakeholderService} from "../openaireLibrary/monitor/services/stakeholder.service"; import {StakeholderService} from "../openaireLibrary/monitor/services/stakeholder.service";
import {NewSearchPageComponent} from "../openaireLibrary/searchPages/searchUtils/newSearchPage.component";
import {StakeholderInfo} from "../openaireLibrary/monitor/entities/stakeholder";
@Component({ @Component({
selector: 'search-funders', selector: 'search-stakeholders',
template: ` template: `
<search-page pageTitle="OpenAIRE-Monitor | Search Funders" <new-search-page pageTitle="OpenAIRE-Monitor | Search Stakeholders"
[hasPrefix]=false [piwikSiteId]="piwikSiteId" [hasPrefix]=false [piwikSiteId]="piwikSiteId"
searchFormClass="communitiesSearchForm" [formPlaceholderText]="'Search for Stakeholders…'"
formPlaceholderText="Search for funders" type="stakeholders" entityType="stakeholder"
type="funders" entityType="funder" [filters]="filters" [results]="results" [searchUtils]="searchUtils"
[results]="results" [searchUtils]="searchUtils" [showResultCount]=true
[showResultCount]=true [baseUrl]="baseUrl" [disableForms]="disableForms"
[disableForms]="disableForms" [lastIndex]=false
[lastIndex]=false [sort]=true [simpleView]="true"
[showType]="showType" > [fieldIds]="fieldIds" [fieldIdsMap]="fieldIdsMap" [selectedFields]="selectedFields"
</search-page> [simpleSearchLink]="searchLink" [entitiesSelection]="false">
</new-search-page>
` `
}) })
export class SearchStakeholdersComponent { export class SearchStakeholdersComponent {
public piwikSiteId = null; public piwikSiteId = null;
private errorCodes: ErrorCodes; private errorCodes: ErrorCodes;
private errorMessages: ErrorMessagesComponent; private errorMessages: ErrorMessagesComponent;
public results= []; public results: StakeholderInfo[] = [];
public totalResults: CommunityInfo[] = []; public totalResults: StakeholderInfo[] = [];
public sub: any; public subResults: any; public sub: any;
public subResults: any;
public filters = []; public filters = [];
public searchFields:SearchFields = new SearchFields(); public searchFields: SearchFields = new SearchFields();
public searchUtils:SearchUtilsClass = new SearchUtilsClass(); public searchUtils: SearchUtilsClass = new SearchUtilsClass();
public selectedFields: AdvancedField[] = [];
public disableForms: boolean = false; public disableForms: boolean = false;
public baseUrl: string = null; public baseUrl: string = null;
public refineFields: string[] = ["jurisdiction"];//this.searchFields.COMMUNITIES_SEARCH_FIELDS; public fieldIds: string[] = ["q"];
public showType = false; public refineFields: string[] = this.searchFields.STAKEHOLDER_SEARCH_FIELDS;
properties:EnvProperties; public fieldIdsMap = {
@ViewChild (SearchPageComponent) searchPage : SearchPageComponent ; ["q"]: {
name: "All fields",
type: "keyword",
param: "q",
operator: "op",
equalityOperator: "=",
filterType: null
}
};
public keyword = "";
public searchLink;
properties: EnvProperties;
@ViewChild(NewSearchPageComponent) searchPage: NewSearchPageComponent;
private user: User; private user: User;
private userFilterLoaded: boolean = false;
constructor (private route: ActivatedRoute, constructor(private route: ActivatedRoute,
private _stakeholderService: StakeholderService, private _stakeholderService: StakeholderService,
private userManagementService: UserManagementService) { private userManagementService: UserManagementService) {
this.errorCodes = new ErrorCodes(); this.errorCodes = new ErrorCodes();
this.errorMessages = new ErrorMessagesComponent(); this.errorMessages = new ErrorMessagesComponent();
this.searchUtils.status = this.errorCodes.LOADING; this.searchUtils.status = this.errorCodes.LOADING;
@ -58,43 +74,48 @@ export class SearchStakeholdersComponent {
public ngOnInit() { public ngOnInit() {
this.route.data this.route.data
.subscribe((data: { envSpecific: EnvProperties }) => { .subscribe((data: { envSpecific: EnvProperties }) => {
this.properties = data.envSpecific; this.properties = data.envSpecific;
this.piwikSiteId = this.properties.piwikSiteId; this.piwikSiteId = this.properties.piwikSiteId;
this.baseUrl = "/search/find/stakeholders"; this.baseUrl = "/search/find/stakeholders";
}); });
this.sub = this.route.queryParams.subscribe(params => { this.sub = this.route.queryParams.subscribe(params => {
this.searchPage.resultsPerPage = 10; this.searchPage.resultsPerPage = 10;
this.searchUtils.keyword = (params['keyword']?params['keyword']:''); this.keyword = (params['fv0'] ? params['fv0'] : '');
this.searchUtils.page = (params['page'] === undefined) ? 1: + params['page']; this.keyword = StringUtils.URIDecode(this.keyword);
this.searchUtils.sortBy = (params['sortBy'] === undefined)? '' : params['sortBy']; this.searchUtils.page = (params['page'] === undefined) ? 1 : +params['page'];
this.searchUtils.size = (params['size'] === undefined) ? this.searchPage.resultsPerPage: +params['size']; this.searchUtils.sortBy = (params['sortBy'] === undefined) ? '' : params['sortBy'];
this.searchUtils.size = (params['size'] === undefined) ? this.searchPage.resultsPerPage : +params['size'];
this.searchUtils.baseUrl = this.baseUrl;
this.searchPage.searchUtils = this.searchUtils; this.searchPage.searchUtils = this.searchUtils;
if(this.searchUtils.size != 5 && this.searchUtils.size != 10 && this.searchUtils.size != 20 && this.searchUtils.size != 50) { if (this.searchUtils.size != 5 && this.searchUtils.size != 10 && this.searchUtils.size != 20 && this.searchUtils.size != 50) {
this.searchUtils.size = this.searchPage.resultsPerPage; this.searchUtils.size = this.searchPage.resultsPerPage;
} }
if(this.searchUtils.sortBy && this.searchUtils.sortBy != "creationdate,descending" && this.searchUtils.sortBy != "creationdate,ascending") { if (this.searchUtils.sortBy && this.searchUtils.sortBy != "creationdate,descending" && this.searchUtils.sortBy != "creationdate,ascending") {
this.searchUtils.sortBy = ""; this.searchUtils.sortBy = "";
} }
this.searchPage.refineFields = this.refineFields; this.searchPage.refineFields = this.refineFields;
let queryParams = this.searchPage.getQueryParamsFromUrl(params); this.searchLink = this.properties.searchLinkToCommunities;
console.log(queryParams) this.selectedFields = [];
if(typeof document !== 'undefined') { this.searchPage.prepareSearchPage(this.fieldIds, this.selectedFields, this.refineFields, [], this.fieldIdsMap, null, params, "stakeholder", null);
let queryParams = params;//this.searchPage.getQueryParamsFromUrl(params);
if (typeof document !== 'undefined') {
this.userManagementService.getUserInfo().subscribe(user => { this.userManagementService.getUserInfo().subscribe(user => {
this.user = user; this.user = user;
this.initFunders(queryParams); this.initFunders(queryParams);
}); });
} else { } else {
this.initFunders(queryParams); this.initFunders(queryParams);
} }
}); });
} }
public ngOnDestroy() { public ngOnDestroy() {
if(this.sub){ if (this.sub) {
this.sub.unsubscribe(); this.sub.unsubscribe();
} }
if(this.subResults){ if (this.subResults) {
this.subResults.unsubscribe(); this.subResults.unsubscribe();
} }
} }
@ -104,36 +125,25 @@ export class SearchStakeholdersComponent {
* *
* @param params * @param params
*/ */
private initFunders(params: Map<string, string>) { private initFunders(params) {
this.subResults = this._stakeholderService.getStakeholders(this.properties.monitorServiceAPIURL).subscribe( this.subResults = this._stakeholderService.getStakeholders(this.properties.monitorServiceAPIURL).subscribe(
data => { data => {
if(!data){ if (!data) {
return; return;
}
for(let i = 0; i < data.length; i++) {
if(data[i]["jurisdiction"]){
if(data[i]["jurisdiction"]=='European Union'){
data[i]["jurisdictionLogo"] = "eu";
}else if (StringUtils.isEuropeanCountry(data[i]["jurisdiction"])){
data[i]["jurisdictionLogo"] = "europe";
}else{
data[i]["jurisdictionLogo"] = "international";
}
}else{
data[i]["jurisdictionLogo"] = "";
}
// this.totalResults[i] = data[i];
}
this._getResults(params);
},
err => {
this.handleError('Error getting stakeholders', err);
this.searchUtils.status = this.errorMessages.getErrorCode(err.status);
this.disableForms = false;
HelperFunctions.scroll();
} }
); for (let i = 0; i < data.length; i++) {
this.totalResults[i] = data[i];
this.totalResults[i].isManager = this.isStakeholderManager();
}
this._getResults(params);
},
err => {
this.handleError('Error getting stakeholders', err);
this.searchUtils.status = this.errorMessages.getErrorCode(err.status);
this.disableForms = false;
HelperFunctions.scroll();
}
);
} }
@ -144,11 +154,11 @@ export class SearchStakeholdersComponent {
* @param params, status * @param params, status
* @private * @private
*/ */
private _getResults(params: Map<string, string>){ private _getResults(params) {
this.searchUtils.status = this.errorCodes.LOADING; this.searchUtils.status = this.errorCodes.LOADING;
this.disableForms = true; this.disableForms = true;
this.results = this.totalResults; this.results = this.totalResults;
if(this.filters.length == 0){ if (this.filters.length == 0 || (this.user && !this.userFilterLoaded)) {
this.filters = this.createFilters(); this.filters = this.createFilters();
} }
this.searchUtils.totalResults = 0; this.searchUtils.totalResults = 0;
@ -160,8 +170,8 @@ export class SearchStakeholdersComponent {
*/ */
private showFunders() { private showFunders() {
let ret = []; let ret = [];
for(let result of this.results) { for (let result of this.results) {
if (result.status == 'hidden') { if (!result.isPublic && !this.isStakeholderManager()) {
continue; continue;
} }
ret.push(result); ret.push(result);
@ -176,34 +186,32 @@ export class SearchStakeholdersComponent {
* @param params * @param params
* @param status * @param status
*/ */
public applyParams(params: Map<string, string>) { public applyParams(params) {
this.showFunders(); this.showFunders();
if(this.searchUtils.keyword && this.searchUtils.keyword != '') { if (this.searchUtils.keyword && this.searchUtils.keyword != '') {
this.searchForKeywords(); this.searchForKeywords();
} }
this.checkFilters(params); this.checkFilters(params);
this.sort(); this.sort();
this.searchUtils.totalResults = this.results.length; this.searchUtils.totalResults = this.results.length;
this.searchPage.checkSelectedFilters(this.filters); this.searchPage.prepareFiltersToShow(this.filters, this.searchUtils.totalResults);
this.searchPage.updateBaseUrlWithParameters(this.filters); this.results = this.results.slice((this.searchUtils.page - 1) * this.searchUtils.size, (this.searchUtils.page * this.searchUtils.size));
this.results = this.results.slice((this.searchUtils.page-1)*this.searchUtils.size, (this.searchUtils.page*this.searchUtils.size));
this.searchUtils.status = this.errorCodes.DONE; this.searchUtils.status = this.errorCodes.DONE;
if(this.searchUtils.totalResults == 0 ){ if (this.searchUtils.totalResults == 0) {
this.searchUtils.status = this.errorCodes.NONE; this.searchUtils.status = this.errorCodes.NONE;
} }
this.disableForms = false; this.disableForms = false;
if(this.searchUtils.status == this.errorCodes.DONE) { if (this.searchUtils.status == this.errorCodes.DONE) {
// Page out of limit!!! // Page out of limit!!!
let totalPages:any = this.searchUtils.totalResults/(this.searchUtils.size); let totalPages: any = this.searchUtils.totalResults / (this.searchUtils.size);
if(!(Number.isInteger(totalPages))) { if (!(Number.isInteger(totalPages))) {
totalPages = (parseInt(totalPages, 10) + 1); totalPages = (parseInt(totalPages, 10) + 1);
} }
if(totalPages < this.searchUtils.page) { if (totalPages < this.searchUtils.page) {
this.searchUtils.totalResults = 0; this.searchUtils.totalResults = 0;
this.searchUtils.status = this.errorCodes.OUT_OF_BOUND; this.searchUtils.status = this.errorCodes.OUT_OF_BOUND;
} }
} }
HelperFunctions.scroll();
} }
@ -212,19 +220,19 @@ export class SearchStakeholdersComponent {
* one of the given words. * one of the given words.
*/ */
private searchForKeywords() { private searchForKeywords() {
let ret= []; let ret = [];
let keywords: string[] = this.searchUtils.keyword.split(/,(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,-1); let keywords: string[] = this.searchUtils.keyword.split(/,(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/, -1);
for(let i = 0; i < this.results.length; i++) { for (let i = 0; i < this.results.length; i++) {
for(let keyword of keywords) { for (let keyword of keywords) {
keyword = keyword.toLowerCase(); keyword = keyword.toLowerCase();
if (keyword != '' && (this.results[i].title.toLowerCase().includes(keyword) || this.results[i].shortTitle.toLowerCase().includes(keyword) || if (keyword != '' && (StringUtils.containsWord(this.results[i].name, keyword) || StringUtils.containsWord(this.results[i].index_shortName, keyword) ||
this.results[i].alias.toLowerCase().includes(keyword) || this.results[i].description.toLowerCase().includes(keyword))) { StringUtils.containsWord(this.results[i].alias, keyword) || StringUtils.containsWord(this.results[i].description, keyword))) {
ret.push(this.results[i]); ret.push(this.results[i]);
break; break;
} }
}
} }
this.results = ret; }
this.results = ret;
} }
/** /**
@ -233,13 +241,32 @@ export class SearchStakeholdersComponent {
* *
* @param params * @param params
*/ */
private checkFilters(params: Map<string, string>) { private checkFilters(params) {
let jurisdictionResults = this.applyFilter('jurisdiction', params); let typeResults: StakeholderInfo[] = this.applyFilter('type', params);
this.resetFilterNumbers('jurisdiction'); let accessResults: StakeholderInfo[] = this.results;
let roleResults: StakeholderInfo[] = this.results;
if (this.user) {
accessResults = this.applyFilter('access', params);
roleResults = this.applyFilter('role', params);
this.resetFilterNumbers('access');
this.updateFilterNumbers(typeResults.filter(value => {
return roleResults.includes(value);
}), 'access');
this.resetFilterNumbers('role');
this.updateFilterNumbers(accessResults.filter(value => {
return typeResults.includes(value);
}), 'role');
}
this.resetFilterNumbers('type');
this.updateFilterNumbers(accessResults.filter(value => {
return roleResults.includes(value);
}), 'type');
this.results = accessResults.filter(value => {
return typeResults.includes(value);
})
this.results = this.results.filter(value => { this.results = this.results.filter(value => {
return jurisdictionResults.includes(value); return roleResults.includes(value);
}); });
this.updateFilterNumbers(this.results, 'jurisdiction');
} }
/** /**
@ -248,42 +275,72 @@ export class SearchStakeholdersComponent {
* @param filterId * @param filterId
* @param params * @param params
*/ */
private applyFilter(filterId: string, params: Map<string, string>):any { private applyFilter(filterId: string, params): StakeholderInfo[] {
console.log("Apply filter "+ filterId);
let results = []; let results = [];
let values: string[] = []; let values: string[] = [];
if(params.get(filterId) != undefined) { if (params[filterId]) {
values = (StringUtils.URIDecode(params.get(filterId))).split(/,(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,-1); values = (StringUtils.URIDecode(params[filterId])).split(/,(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/, -1);
} }
console.log(values); if (filterId == 'type') {
if(filterId == 'jurisdiction') {
console.log('Here');
for (let i = 0; i < this.results.length; i++) { for (let i = 0; i < this.results.length; i++) {
if (values.length == 0) { if (values.length == 0) {
results.push(this.results[i]); results.push(this.results[i]);
} else { } else {
for (let value of values) { for (let value of values) {
console.log(value); if (this.results[i].type == value.replace(/["']/g, "")) {
if (this.results[i]['jurisdiction'] == value.replace(/["']/g, "")) {
results.push(this.results[i]); results.push(this.results[i]);
break; break;
} }
} }
} }
} }
} else if (filterId == 'access') {
for (let i = 0; i < this.results.length; i++) {
if (values.length == 0) {
results.push(this.results[i]);
} else {
for (let value of values) {
if (value.replace(/["']/g, "") == 'public') {
if (this.results[i].isPublic) {
results.push(this.results[i]);
break;
}
} else if (value.replace(/["']/g, "") == 'private') {
if (!this.results[i].isPublic) {
results.push(this.results[i]);
break;
}
}
}
}
}
} else if (filterId == 'role') {
for (let i = 0; i < this.results.length; i++) {
if (values.length == 0) {
results.push(this.results[i]);
} else {
for (let value of values) {
if (value.replace(/["']/g, "") == 'manager') {
if (this.results[i].isManager) {
results.push(this.results[i]);
break;
}
}
}
}
}
} }
console.log(results);
return results; return results;
} }
/** /**
* Reset the values of filter with id filterId with zero. * Reset the values of filter with id filterId with zero.
* *
* @param filterId * @param filterId
*/ */
private resetFilterNumbers(filterId: string) { private resetFilterNumbers(filterId: string) {
for (let i = 0; i < this.filters.length; i++) { for (let i = 0; i < this.filters.length; i++) {
if(this.filters[i].filterId == filterId) { if (this.filters[i].filterId == filterId) {
for (let j = 0; j < this.filters[i].values.length; j++) { for (let j = 0; j < this.filters[i].values.length; j++) {
this.filters[i].values[j].number = 0; this.filters[i].values[j].number = 0;
} }
@ -292,60 +349,69 @@ export class SearchStakeholdersComponent {
} }
} }
/** /**
* Update the values of filter with id filterId based on * Update the values of filter with id filterId based on
* results. * results.
* *
* @param results * @param results
* @param filterId * @param filterId
*/ */
private updateFilterNumbers(results, filterId: string) { private updateFilterNumbers(results: StakeholderInfo[], filterId: string) {
for(let k = 0; k < results.length; k++) { for (let k = 0; k < results.length; k++) {
for (let i = 0; i < this.filters.length; i++) { for (let i = 0; i < this.filters.length; i++) {
if(this.filters[i].filterId == filterId) { if (this.filters[i].filterId == filterId) {
if (this.filters[i].filterId == 'jurisdiction') { if (this.filters[i].filterId == 'type') {
for (let j = 0; j < this.filters[i].values.length; j++) { for (let j = 0; j < this.filters[i].values.length; j++) {
if (results[k]['jurisdiction'] == this.filters[i].values[j].id) { if (results[k].type == this.filters[i].values[j].id) {
this.filters[i].values[j].number++; this.filters[i].values[j].number++;
break; }
}
}
} }
} else if (this.filters[i].filterId == 'access') {
if (results[k].isPublic) {
this.filters[i].values[0].number++;
} else {
this.filters[i].values[1].number++;
}
} else if (this.filters[i].filterId == 'role') {
if (results[k].isManager) {
this.filters[i].values[0].number++;
}
}
break;
} }
} }
} }
} }
/** /**
* Sorting results based on sortBy. * Sorting results based on sortBy.
*/ */
private sort() { private sort() {
if(this.searchUtils.sortBy == '') { if (this.searchUtils.sortBy == '') {
this.results.sort((left, right): number => { this.results.sort((left, right): number => {
if (left.title > right.title) { if (left.name > right.name) {
return 1; return 1;
} else if (left.title < right.title) { } else if (left.name < right.name) {
return -1; return -1;
} else { } else {
return 0; return 0;
} }
}) })
} else if(this.searchUtils.sortBy == 'creationdate,descending') { } else if (this.searchUtils.sortBy == 'creationdate,descending') {
this.results.sort((left, right): number => { this.results.sort((left, right): number => {
if (!right.date || left.date > right.date) { if (!right.creationDate || left.creationDate > right.creationDate) {
return -1; return -1;
} else if (!left.date || left.date < right.date) { } else if (!left.creationDate || left.creationDate < right.creationDate) {
return 1; return 1;
} else { } else {
return 0; return 0;
} }
}) })
} else if(this.searchUtils.sortBy == 'creationdate,ascending') { } else if (this.searchUtils.sortBy == 'creationdate,ascending') {
this.results.sort((left, right): number => { this.results.sort((left, right): number => {
if (!right.date || left.date > right.date) { if (!right.creationDate || left.creationDate > right.creationDate) {
return 1; return 1;
} else if (!left.date || left.date < right.date) { } else if (!left.creationDate || left.creationDate < right.creationDate) {
return -1; return -1;
} else { } else {
return 0; return 0;
@ -354,39 +420,51 @@ export class SearchStakeholdersComponent {
} }
} }
private isStakeholderManager() {
return Session.isPortalAdministrator(this.user) || Session.isMonitorCurator(this.user) || Session.isCommunityCurator(this.user);
}
/**
* Create Search Stakeholder filters.
/** *
* Create Search Communities filters. */
*
*/
private createFilters(): Filter[] { private createFilters(): Filter[] {
let filter_names = []; let filter_names = [];
let filter_ids = []; let filter_ids = [];
let filter_original_ids = ["jurisdiction"];
console.log("init refine")
let value_names = []; let value_names = [];
let value_original_ids=[]; let value_original_ids = [];
value_names[0]=[]; filter_names.push("Type");
value_original_ids[0]=[]; filter_ids.push("type");
filter_names.push("Jurisdiction"); value_names.push(["Funders", "Research Initiatives", "Organizations"]);
filter_ids.push("jurisdiction"); value_original_ids.push(["funder", "ri", "organization"]);
this.results.forEach(result => { if (this.user) {
if(result['jurisdiction'] && result['jurisdiction'].length > 0) { filter_names.push("Accessibility");
value_names[0].push(result['jurisdiction']); filter_ids.push("access");
value_original_ids[0].push(result['jurisdiction']); value_names.push(["Public", "Private"]);
} value_original_ids.push(["public", "private"]);
}); filter_names.push("Role");
filter_ids.push("role");
value_names.push(["Manager"]);
value_original_ids.push(["manager"]);
this.userFilterLoaded = true;
}
let filters: Filter[] = []; let filters: Filter[] = [];
for(let i =0 ; i < filter_names.length; i++){ for (let i = 0; i < filter_names.length; i++) {
let values: Value[] = []; let values: Value[] = [];
for(let j =0 ; j < value_names[i].length; j++){ for (let j = 0; j < value_names[i].length; j++) {
let value: Value = {name: value_names[i][j], id: value_original_ids[i][j], number:0, selected:false}; let value: Value = {name: value_names[i][j], id: value_original_ids[i][j], number: 0, selected: false};
values.push(value); values.push(value);
} }
let filter: Filter = {title: filter_names[i], filterId: filter_ids[i], originalFilterId: filter_original_ids[i], values : values, countSelectedValues:0, "filterOperator": 'or', valueIsExact: true , filterType: "checkbox"}; let filter: Filter = {
title: filter_names[i],
filterId: filter_ids[i],
originalFilterId: this.refineFields[i],
values: values,
countSelectedValues: 0,
"filterOperator": 'or',
valueIsExact: true,
filterType: "checkbox"
};
filters.push(filter); filters.push(filter);
} }
return filters; return filters;

View File

@ -6,12 +6,13 @@ import {SearchPageModule} from "../openaireLibrary/searchPages/searchUtils/searc
import {SearchFormModule} from "../openaireLibrary/searchPages/searchUtils/searchForm.module"; import {SearchFormModule} from "../openaireLibrary/searchPages/searchUtils/searchForm.module";
import {SearchStakeholdersRoutingModule} from "./search-stakeholders-routing.module"; import {SearchStakeholdersRoutingModule} from "./search-stakeholders-routing.module";
import {PreviousRouteRecorder} from "../openaireLibrary/utils/piwik/previousRouteRecorder.guard"; import {PreviousRouteRecorder} from "../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
import {NewSearchPageModule} from "../openaireLibrary/searchPages/searchUtils/newSearchPage.module";
@NgModule({ @NgModule({
imports: [ imports: [
CommonModule, FormsModule, CommonModule, FormsModule,
SearchFormModule, SearchPageModule, SearchFormModule, SearchPageModule,
SearchStakeholdersRoutingModule SearchStakeholdersRoutingModule, NewSearchPageModule
], ],
declarations: [ declarations: [
SearchStakeholdersComponent SearchStakeholdersComponent

View File

@ -63,9 +63,7 @@
"pagingLimit": 20, "pagingLimit": 20,
"resultsPerPage": 10, "resultsPerPage": 10,
"baseLink" : "https://beta.explore.openaire.eu", "baseLink" : "http://dl170.madgik.di.uoa.gr/monitor",
"afterLoginRedirectLink": "/myCommunities",
"searchLinkToPublication" : "/search/publication?articleId=", "searchLinkToPublication" : "/search/publication?articleId=",
"searchLinkToProject" : "/search/project?projectId=", "searchLinkToProject" : "/search/project?projectId=",

View File

@ -19,41 +19,6 @@
} }
.tm-toolbar .uk-subnav-line .custom-connect-li {
background: var(--portal-main-color) !important;
}
.connectInfoCard {
box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.24);
}
.connectCheckIcon {
background: rgba(0, 0, 0, 0.60);
color: white;
}
.communityCard {
box-shadow: 0 1px 3px #00000029;
border-radius: 2px;
padding: 20px;
position: relative;
background-color: white;
}
.rc-label {
color: black !important;
background-color: #FFC700 !important;
}
.private-view-label {
color: black !important;
}
.searchForm, .communitiesSearchForm {
background: transparent linear-gradient(0deg, #FAFAFA 0%, #E2EEFA 100%);
}
.generalSearchForm, .generalSearchForm,
.publicationsSearchForm, .publicationsSearchForm,
.projectsSearchForm, .projectsTableSearchForm, .projectsSearchForm, .projectsTableSearchForm,
@ -70,183 +35,8 @@
} }
.communityToolBar { .monitorApp, .searchForm {
background-color: #dedede; background: #F9F9F9!important;
z-index: 10;
}
/*.my-tooltip {
opacity: 0;
}*/
.communityToolBarSection {
z-index: 10;
}
.iframeContainer {
/*position:relative;*/
overflow: hidden;
/*padding-top:56.25%;*/
/*padding-bottom:35%;*/
}
.iframeContainer iframe {
/*position: absolute;*/
/*top:0;*/
/*left:0;*/
width: 100%;
height: 100%;
border: 0;
}
div:not(.connect_App) bottom .uk-totop {
background-color: transparent !important;
}
.communityPanelBackground .curator-photo {
border: rgba(255, 255, 255, 0.5) 8px solid;
}
.communityRecentResults .search-results > li:nth-child(2) {
border-top: none !important;
}
.communityRecentResults .search-results > li:last-child {
border-bottom: none !important;
}
.communityPanelBackground .uk-breadcrumb .active {
color: white;
}
.uk-breadcrumb .active {
font-weight: bold;
}
.communityPanelBackground .uk-label:not(.ignoreCommunityPanelBackground) {
border-radius: 20px;
padding: 10px 20px;
}
.communityPanelBackground .uk-grid-divider > :not(.uk-first-column)::before {
border-left: 1px solid rgba(255, 255, 255, .2);
}
/*CONNECT REDESIGN*/
#subscribeAndInviteBtn {
/*#subscribeBtn, #inviteBtn {*/
float: left;
position: fixed;
right: 0;
z-index: 100;
display: block;
top: calc(30% - 47px);
}
#subscribeAndInviteBtn button {
width: 125px;
height: 35px;
border-right: none;
/*border-top-right-radius: 0;*/
/*border-bottom-right-radius: 0;*/
border-radius: 4px 0px 0px 4px;
box-shadow: 0px 2px 6px #00000038;
}
.subscribed-button {
background-color: #8AD15E !important;
color: white !important;
}
.subscribed-button:hover {
background-color: #71b04a !important;
}
.uk-tooltip.community-page-tooltip {
background-color: white;
display: block;
border-radius: 4px;
padding: 15px 15px 0;
border: 1px solid #DEDEDE;
color: #6c6c6c;
z-index: 10000;
}
.user-circle-background {
background-color: var(--portal-main-color);
border-radius: 50%;
height: 10px;
width: 10px;
display: inline-flex;
padding: 2px;
fill: white;
}
a:hover .user-circle-background {
background-color: var(--portal-dark-color);
}
.communityApp .custom-main-content {
background-color: #F7FCFF;
/*background-color: lightpink;*/
color: #000000 !important;
font-size: 14px !important;
min-height: 60vh;
}
.generalSearchForm .subtitle{
color: #000000 !important;
opacity: 0.6;
}
.generalSearchForm .title{
color: #000000 !important;
font-size: 28px;
font-weight: 400;
font-family: 'Open Sans', sans-serif !important;
}
.publicationAnalytics.uk-icon-button:hover, .publicationAnalytics.uk-icon-button.active {
background: #FFE6E6;
}
.publicationAnalytics.uk-icon-button {
border-color: #F17AA9 !important;
}
.datasetAnalytics.uk-icon-button:hover, .datasetAnalytics.uk-icon-button.active {
background: #E2DAF0;
}
.datasetAnalytics.uk-icon-button {
border-color: #A98BD4 !important;
}
.softwareAnalytics.uk-icon-button:hover, .softwareAnalytics.uk-icon-button.active {
background: #D4ECD6;
}
.softwareAnalytics.uk-icon-button {
border-color: #639C66 !important;
}
.otherAnalytics.uk-icon-button:hover, .otherAnalytics.uk-icon-button.active {
background: #C5E0E9;
}
.otherAnalytics.uk-icon-button {
border-color: #708AA5 !important;
}
/*END OF CONNECT REDESIGN*/
.communityApp .uk-logo{
padding-left: 20px;
}
.monitorApp {
background-color: #F9F9F9!important;
} }
.monitorApp .login text { .monitorApp .login text {