[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,
"resultsPerPage": 10,
"baseLink" : "https://beta.connect.openaire.eu",
"afterLoginRedirectLink": "/myCommunities",
"baseLink" : "https://beta.monitor.openaire.eu",
"searchLinkToPublication" : "/search/publication?articleId=",
"searchLinkToProject" : "/search/project?projectId=",
"searchLinkToDataProvider" : "/search/dataprovider?datasourceId=",

View File

@ -62,9 +62,7 @@
"pagingLimit": 20,
"resultsPerPage": 10,
"baseLink" : "https://connect.openaire.eu",
"afterLoginRedirectLink": "/myCommunities",
"baseLink" : "https://monitor.openaire.eu",
"searchLinkToPublication" : "/search/publication?articleId=",
"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 {MenuItem, RootMenuItem} from './openaireLibrary/sharedComponents/menu';
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 {ConnectHelper} from './openaireLibrary/connect/connectHelper';
import {SubscribeService} from './openaireLibrary/utils/subscribe/subscribe.service';
import {HelperFunctions} from "./openaireLibrary/utils/HelperFunctions.class";
import {UserManagementService} from "./openaireLibrary/services/user-management.service";
@ -15,57 +12,41 @@ import {UserManagementService} from "./openaireLibrary/services/user-management.
selector: 'app-root',
template: `
<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"
[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">
<main>
<router-outlet></router-outlet>
</main>
</div>
<!--feedback *ngIf= "isClient && properties" portalName="Connect" [feedbackQuestionaire]=properties.feedbackQuestionaire></feedback-->
<cookie-law *ngIf="isClient" position="bottom">
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
experience possible.
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"
ratio="1"><polyline fill="none" stroke="#000" stroke-width="1.03"
points="7 4 13 10 7 16"></polyline></svg>
</span></a>
</cookie-law>
<bottom *ngIf="properties && isClient && showMenu && !community" [grantAdvance]="false"
<bottom *ngIf="properties && isClient && showMenu" [grantAdvance]="false"
[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>
`
})
export class AppComponent {
isClient: boolean = false;
userMenuItems: MenuItem[] = [];
menuItems: RootMenuItem [] = [];
bottomMenuItems: MenuItem[] = [];
public community = null;
properties: EnvProperties;
showMenu: boolean = false;
communities = null;
subscriberOfCommunities = false;
managerOfCommunities = false;
user: User;
// community: {id:string, name:string, logoUrl:string};
constructor(private route: ActivatedRoute, private propertiesService: EnvironmentSpecificService,
private _communitiesService: CommunitiesService, private _subscribeService: SubscribeService,
private router: Router, private userManagementService: UserManagementService) {
router.events.forEach((event) => {
if (event instanceof NavigationStart) {
@ -73,26 +54,14 @@ export class AppComponent {
}
});
}
ngOnInit() {
this.propertiesService.loadEnvironment()
.then(es => {
this.properties = this.propertiesService.envSpecific;
var communityId: string = "";
this._communitiesService.updateCommunities(this.properties, this.properties.communitiesAPI);
this.userManagementService.getUserInfo().subscribe( user => {
this.userManagementService.getUserInfo().subscribe(user => {
this.user = user;
if (this.properties.environment == "development") {
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);
}
this.buildMenu()
if (typeof document !== 'undefined') {
try {
this.isClient = true;
@ -102,126 +71,38 @@ export class AppComponent {
}, error => {
console.log("App couldn't fetch properties");
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;
}
@media (max-width:1366px) {
@media (max-width:1199px) {
.home-background {
background-size: cover;
background-repeat: no-repeat;
@ -14,11 +14,17 @@
}
.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-repeat: no-repeat;
background-position: top center;
margin-top: 400px;
background-position: left center;
margin-top: 18vw;
}
@media (max-width:1599px) {
.dashboard-section {
margin-top: 12vw;
}
}
.dashboard-section .dashboard {
@ -34,6 +40,8 @@
width: 50%;
height: 0;
padding-top: 25%;
border: 1px solid #E6E6E6;
border-radius: 5px;
}
.dashboard-section .dashboard .captain-left {
@ -44,7 +52,7 @@
left: -10%;
bottom: -5%;
position: absolute;
height: 35%;
height: 36%;
width: 17%;
}
@ -62,69 +70,87 @@
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-size: contain;
background-repeat: no-repeat;
margin: 0 0 -30px 50%;
width: 50%;
height: 30vw;
}
.boat-section.uk-visible\@l {
position: relative;
z-index: 0;
height: 300px;
}
.boat-section.uk-visible\@l .boat {
.boat-section .boat:not(.uk-hidden\@m) {
position: absolute;
transform: translate(-50%, -50%);
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
background-image: url("~assets/monitor-assets/home/boat.png");
background-size: contain;
background-repeat: no-repeat;
width: 426px;
height: 245px;
width: 30%;
height: 42%;
z-index: 1;
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);
box-shadow: 0 3px 6px #00000029;
padding: 35px;
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 {
background-image: url("~assets/monitor-assets/home/graph-background.svg");
background-size: cover;
@ -168,6 +194,7 @@
border-top: #E3E3E3 solid 1px;
margin-top: -1px;
padding-top: 20px;
min-height: 300px;
}
.stakeholder-section .stakeholders .header {

View File

@ -13,10 +13,10 @@
</div>
<div class="uk-section dashboard-section">
<div class="dashboard">
<div class="captain-left uk-hidden@l"></div>
<div class="captain-right uk-hidden@l"></div>
<div #ref [@captain-left]="(captains)?'after':'before'" class="captain-left uk-visible@l"></div>
<div [@captain-right]="(captains)?'after':'before'" class="captain-right uk-visible@l"></div>
<div class="captain-left uk-hidden@m"></div>
<div class="captain-right uk-hidden@m"></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@m"></div>
</div>
<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">
@ -53,64 +53,46 @@
</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="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 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="uk-grid uk-grid-match uk-margin-left uk-margin-right uk-child-width-1-2@m" uk-grid>
<div class="boat uk-hidden@m"></div>
<div class="boat uk-visible@l"></div>
<div class="first">
<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 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 class="second">
<div>
<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>
</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 class="third">
<div>
<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>
</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 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 class="fourth">
<div>
<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>
@ -146,18 +128,20 @@
</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="tabs">
<ul>
<li class="uk-active" uk-filter-control>All</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='project']">Projects</li>
<li uk-filter-control="[data-type='organization']">Organizations</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='project']">Projects</li>-->
<li uk-filter-control="[data-type='organization']">Organizations</li>
</ul>
</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 class="header" [ngClass]="stakeholder.size">
<img class="uk-margin-auto" [src]="'http://dl170.madgik.di.uoa.gr/monitor/dashboard/assets/ec.png'">

View File

@ -3,140 +3,150 @@ import {SearchUtilsClass} from "../openaireLibrary/searchPages/searchUtils/searc
import {ErrorMessagesComponent} from "../openaireLibrary/utils/errorMessages.component";
import {ErrorCodes} from "../openaireLibrary/utils/properties/errorCodes";
import {EnvProperties} from "../openaireLibrary/utils/properties/env-properties";
import {SearchPageComponent} from "../openaireLibrary/searchPages/searchUtils/searchPage.component";
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 {Session, User} from "../openaireLibrary/login/utils/helper.class";
import {CommunityInfo} from "../openaireLibrary/connect/community/communityInfo";
import {StringUtils} from "../openaireLibrary/utils/string-utils.class";
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";
@Component({
selector: 'search-funders',
selector: 'search-stakeholders',
template: `
<search-page pageTitle="OpenAIRE-Monitor | Search Funders"
[hasPrefix]=false [piwikSiteId]="piwikSiteId"
searchFormClass="communitiesSearchForm"
formPlaceholderText="Search for funders"
type="funders" entityType="funder" [filters]="filters"
[results]="results" [searchUtils]="searchUtils"
[showResultCount]=true [baseUrl]="baseUrl"
[disableForms]="disableForms"
[lastIndex]=false [sort]=true
[showType]="showType" >
</search-page>
<new-search-page pageTitle="OpenAIRE-Monitor | Search Stakeholders"
[hasPrefix]=false [piwikSiteId]="piwikSiteId"
[formPlaceholderText]="'Search for Stakeholders…'"
type="stakeholders" entityType="stakeholder"
[results]="results" [searchUtils]="searchUtils"
[showResultCount]=true
[disableForms]="disableForms"
[lastIndex]=false
[simpleView]="true"
[fieldIds]="fieldIds" [fieldIdsMap]="fieldIdsMap" [selectedFields]="selectedFields"
[simpleSearchLink]="searchLink" [entitiesSelection]="false">
</new-search-page>
`
})
export class SearchStakeholdersComponent {
public piwikSiteId = null;
private errorCodes: ErrorCodes;
private errorMessages: ErrorMessagesComponent;
public results= [];
public totalResults: CommunityInfo[] = [];
public sub: any; public subResults: any;
public results: StakeholderInfo[] = [];
public totalResults: StakeholderInfo[] = [];
public sub: any;
public subResults: any;
public filters = [];
public searchFields:SearchFields = new SearchFields();
public searchUtils:SearchUtilsClass = new SearchUtilsClass();
public searchFields: SearchFields = new SearchFields();
public searchUtils: SearchUtilsClass = new SearchUtilsClass();
public selectedFields: AdvancedField[] = [];
public disableForms: boolean = false;
public baseUrl: string = null;
public refineFields: string[] = ["jurisdiction"];//this.searchFields.COMMUNITIES_SEARCH_FIELDS;
public showType = false;
properties:EnvProperties;
@ViewChild (SearchPageComponent) searchPage : SearchPageComponent ;
public fieldIds: string[] = ["q"];
public refineFields: string[] = this.searchFields.STAKEHOLDER_SEARCH_FIELDS;
public fieldIdsMap = {
["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;
constructor (private route: ActivatedRoute,
private _stakeholderService: StakeholderService,
private userManagementService: UserManagementService) {
private userFilterLoaded: boolean = false;
constructor(private route: ActivatedRoute,
private _stakeholderService: StakeholderService,
private userManagementService: UserManagementService) {
this.errorCodes = new ErrorCodes();
this.errorMessages = new ErrorMessagesComponent();
this.searchUtils.status = this.errorCodes.LOADING;
}
public ngOnInit() {
this.route.data
.subscribe((data: { envSpecific: EnvProperties }) => {
this.properties = data.envSpecific;
this.piwikSiteId = this.properties.piwikSiteId;
this.baseUrl = "/search/find/stakeholders";
});
this.sub = this.route.queryParams.subscribe(params => {
.subscribe((data: { envSpecific: EnvProperties }) => {
this.properties = data.envSpecific;
this.piwikSiteId = this.properties.piwikSiteId;
this.baseUrl = "/search/find/stakeholders";
});
this.sub = this.route.queryParams.subscribe(params => {
this.searchPage.resultsPerPage = 10;
this.searchUtils.keyword = (params['keyword']?params['keyword']:'');
this.searchUtils.page = (params['page'] === undefined) ? 1: + params['page'];
this.searchUtils.sortBy = (params['sortBy'] === undefined)? '' : params['sortBy'];
this.searchUtils.size = (params['size'] === undefined) ? this.searchPage.resultsPerPage: +params['size'];
this.keyword = (params['fv0'] ? params['fv0'] : '');
this.keyword = StringUtils.URIDecode(this.keyword);
this.searchUtils.page = (params['page'] === undefined) ? 1 : +params['page'];
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;
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;
}
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.searchPage.refineFields = this.refineFields;
let queryParams = this.searchPage.getQueryParamsFromUrl(params);
console.log(queryParams)
if(typeof document !== 'undefined') {
this.searchLink = this.properties.searchLinkToCommunities;
this.selectedFields = [];
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.user = user;
this.initFunders(queryParams);
});
} else {
} else {
this.initFunders(queryParams);
}
});
}
public ngOnDestroy() {
if(this.sub){
if (this.sub) {
this.sub.unsubscribe();
}
if(this.subResults){
if (this.subResults) {
this.subResults.unsubscribe();
}
}
/**
* Initialize stakeholders from Communities APIs
*
* @param params
*/
private initFunders(params: Map<string, string>) {
private initFunders(params) {
this.subResults = this._stakeholderService.getStakeholders(this.properties.monitorServiceAPIURL).subscribe(
data => {
if(!data){
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();
data => {
if (!data) {
return;
}
);
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();
}
);
}
/**
* Get all stakeholders from mock API and apply permission access validator,
* keyword searching, filter, paging and sorting.
@ -144,31 +154,31 @@ export class SearchStakeholdersComponent {
* @param params, status
* @private
*/
private _getResults(params: Map<string, string>){
private _getResults(params) {
this.searchUtils.status = this.errorCodes.LOADING;
this.disableForms = true;
this.results = this.totalResults;
if(this.filters.length == 0){
if (this.filters.length == 0 || (this.user && !this.userFilterLoaded)) {
this.filters = this.createFilters();
}
this.searchUtils.totalResults = 0;
this.applyParams(params);
}
/**
* Return the stakeholders in which user has permission to view or manage.
*/
private showFunders() {
let ret = [];
for(let result of this.results) {
if (result.status == 'hidden') {
for (let result of this.results) {
if (!result.isPublic && !this.isStakeholderManager()) {
continue;
}
ret.push(result);
}
this.results = ret;
}
/**
* Apply permission access validator,
* keyword searching, filter, paging and sorting.
@ -176,114 +186,161 @@ export class SearchStakeholdersComponent {
* @param params
* @param status
*/
public applyParams(params: Map<string, string>) {
public applyParams(params) {
this.showFunders();
if(this.searchUtils.keyword && this.searchUtils.keyword != '') {
if (this.searchUtils.keyword && this.searchUtils.keyword != '') {
this.searchForKeywords();
}
this.checkFilters(params);
this.sort();
this.searchUtils.totalResults = this.results.length;
this.searchPage.checkSelectedFilters(this.filters);
this.searchPage.updateBaseUrlWithParameters(this.filters);
this.results = this.results.slice((this.searchUtils.page-1)*this.searchUtils.size, (this.searchUtils.page*this.searchUtils.size));
this.searchPage.prepareFiltersToShow(this.filters, this.searchUtils.totalResults);
this.results = this.results.slice((this.searchUtils.page - 1) * this.searchUtils.size, (this.searchUtils.page * this.searchUtils.size));
this.searchUtils.status = this.errorCodes.DONE;
if(this.searchUtils.totalResults == 0 ){
if (this.searchUtils.totalResults == 0) {
this.searchUtils.status = this.errorCodes.NONE;
}
this.disableForms = false;
if(this.searchUtils.status == this.errorCodes.DONE) {
if (this.searchUtils.status == this.errorCodes.DONE) {
// Page out of limit!!!
let totalPages:any = this.searchUtils.totalResults/(this.searchUtils.size);
if(!(Number.isInteger(totalPages))) {
let totalPages: any = this.searchUtils.totalResults / (this.searchUtils.size);
if (!(Number.isInteger(totalPages))) {
totalPages = (parseInt(totalPages, 10) + 1);
}
if(totalPages < this.searchUtils.page) {
if (totalPages < this.searchUtils.page) {
this.searchUtils.totalResults = 0;
this.searchUtils.status = this.errorCodes.OUT_OF_BOUND;
}
}
HelperFunctions.scroll();
}
/**
* Parse the given keywords into array and check if any of the requirements field of a funder includes
* one of the given words.
*/
private searchForKeywords() {
let ret= [];
let keywords: string[] = this.searchUtils.keyword.split(/,(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,-1);
for(let i = 0; i < this.results.length; i++) {
for(let keyword of keywords) {
keyword = keyword.toLowerCase();
if (keyword != '' && (this.results[i].title.toLowerCase().includes(keyword) || this.results[i].shortTitle.toLowerCase().includes(keyword) ||
this.results[i].alias.toLowerCase().includes(keyword) || this.results[i].description.toLowerCase().includes(keyword))) {
ret.push(this.results[i]);
break;
}
}
let ret = [];
let keywords: string[] = this.searchUtils.keyword.split(/,(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/, -1);
for (let i = 0; i < this.results.length; i++) {
for (let keyword of keywords) {
keyword = keyword.toLowerCase();
if (keyword != '' && (StringUtils.containsWord(this.results[i].name, keyword) || StringUtils.containsWord(this.results[i].index_shortName, keyword) ||
StringUtils.containsWord(this.results[i].alias, keyword) || StringUtils.containsWord(this.results[i].description, keyword))) {
ret.push(this.results[i]);
break;
}
}
this.results = ret;
}
this.results = ret;
}
/**
* Check the current results if they satisfy the values of each filter category and
* update the number of possible results in each value.
*
* @param params
*/
private checkFilters(params: Map<string, string>) {
let jurisdictionResults = this.applyFilter('jurisdiction', params);
this.resetFilterNumbers('jurisdiction');
private checkFilters(params) {
let typeResults: StakeholderInfo[] = this.applyFilter('type', params);
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 => {
return jurisdictionResults.includes(value);
return roleResults.includes(value);
});
this.updateFilterNumbers(this.results, 'jurisdiction');
}
/**
* Apply filter with filterId and return the results
*
* @param filterId
* @param params
*/
private applyFilter(filterId: string, params: Map<string, string>):any {
console.log("Apply filter "+ filterId);
private applyFilter(filterId: string, params): StakeholderInfo[] {
let results = [];
let values: string[] = [];
if(params.get(filterId) != undefined) {
values = (StringUtils.URIDecode(params.get(filterId))).split(/,(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,-1);
if (params[filterId]) {
values = (StringUtils.URIDecode(params[filterId])).split(/,(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/, -1);
}
console.log(values);
if(filterId == 'jurisdiction') {
console.log('Here');
if (filterId == 'type') {
for (let i = 0; i < this.results.length; i++) {
if (values.length == 0) {
results.push(this.results[i]);
} else {
for (let value of values) {
console.log(value);
if (this.results[i]['jurisdiction'] == value.replace(/["']/g, "")) {
if (this.results[i].type == value.replace(/["']/g, "")) {
results.push(this.results[i]);
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;
}
/**
* Reset the values of filter with id filterId with zero.
*
* @param filterId
*/
/**
* Reset the values of filter with id filterId with zero.
*
* @param filterId
*/
private resetFilterNumbers(filterId: string) {
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++) {
this.filters[i].values[j].number = 0;
}
@ -291,61 +348,70 @@ export class SearchStakeholdersComponent {
}
}
}
/**
* Update the values of filter with id filterId based on
* results.
*
* @param results
* @param filterId
*/
private updateFilterNumbers(results, filterId: string) {
for(let k = 0; k < results.length; k++) {
/**
* Update the values of filter with id filterId based on
* results.
*
* @param results
* @param filterId
*/
private updateFilterNumbers(results: StakeholderInfo[], filterId: string) {
for (let k = 0; k < results.length; k++) {
for (let i = 0; i < this.filters.length; i++) {
if(this.filters[i].filterId == filterId) {
if (this.filters[i].filterId == 'jurisdiction') {
for (let j = 0; j < this.filters[i].values.length; j++) {
if (results[k]['jurisdiction'] == this.filters[i].values[j].id) {
this.filters[i].values[j].number++;
break;
}
}
if (this.filters[i].filterId == filterId) {
if (this.filters[i].filterId == 'type') {
for (let j = 0; j < this.filters[i].values.length; j++) {
if (results[k].type == this.filters[i].values[j].id) {
this.filters[i].values[j].number++;
}
}
} 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() {
if(this.searchUtils.sortBy == '') {
if (this.searchUtils.sortBy == '') {
this.results.sort((left, right): number => {
if (left.title > right.title) {
if (left.name > right.name) {
return 1;
} else if (left.title < right.title) {
} else if (left.name < right.name) {
return -1;
} else {
return 0;
}
})
} else if(this.searchUtils.sortBy == 'creationdate,descending') {
} else if (this.searchUtils.sortBy == 'creationdate,descending') {
this.results.sort((left, right): number => {
if (!right.date || left.date > right.date) {
if (!right.creationDate || left.creationDate > right.creationDate) {
return -1;
} else if (!left.date || left.date < right.date) {
} else if (!left.creationDate || left.creationDate < right.creationDate) {
return 1;
} else {
return 0;
}
})
} else if(this.searchUtils.sortBy == 'creationdate,ascending') {
} else if (this.searchUtils.sortBy == 'creationdate,ascending') {
this.results.sort((left, right): number => {
if (!right.date || left.date > right.date) {
if (!right.creationDate || left.creationDate > right.creationDate) {
return 1;
} else if (!left.date || left.date < right.date) {
} else if (!left.creationDate || left.creationDate < right.creationDate) {
return -1;
} else {
return 0;
@ -353,47 +419,59 @@ export class SearchStakeholdersComponent {
})
}
}
/**
* Create Search Communities filters.
*
*/
private isStakeholderManager() {
return Session.isPortalAdministrator(this.user) || Session.isMonitorCurator(this.user) || Session.isCommunityCurator(this.user);
}
/**
* Create Search Stakeholder filters.
*
*/
private createFilters(): Filter[] {
let filter_names = [];
let filter_ids = [];
let filter_original_ids = ["jurisdiction"];
console.log("init refine")
let value_names = [];
let value_original_ids=[];
value_names[0]=[];
value_original_ids[0]=[];
filter_names.push("Jurisdiction");
filter_ids.push("jurisdiction");
this.results.forEach(result => {
if(result['jurisdiction'] && result['jurisdiction'].length > 0) {
value_names[0].push(result['jurisdiction']);
value_original_ids[0].push(result['jurisdiction']);
}
});
let value_original_ids = [];
filter_names.push("Type");
filter_ids.push("type");
value_names.push(["Funders", "Research Initiatives", "Organizations"]);
value_original_ids.push(["funder", "ri", "organization"]);
if (this.user) {
filter_names.push("Accessibility");
filter_ids.push("access");
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[] = [];
for(let i =0 ; i < filter_names.length; i++){
for (let i = 0; i < filter_names.length; i++) {
let values: Value[] = [];
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};
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};
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);
}
return filters;
}
private handleError(message: string, error) {
console.error('Communities Search Page: ' + message, error);
}
}

View File

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

View File

@ -63,9 +63,7 @@
"pagingLimit": 20,
"resultsPerPage": 10,
"baseLink" : "https://beta.explore.openaire.eu",
"afterLoginRedirectLink": "/myCommunities",
"baseLink" : "http://dl170.madgik.di.uoa.gr/monitor",
"searchLinkToPublication" : "/search/publication?articleId=",
"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,
.publicationsSearchForm,
.projectsSearchForm, .projectsTableSearchForm,
@ -70,183 +35,8 @@
}
.communityToolBar {
background-color: #dedede;
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, .searchForm {
background: #F9F9F9!important;
}
.monitorApp .login text {