[Monitor|Trunk]

Home page:
	add numbers 
	add browse of funders
	comment helptexts and add lorem ipsum texts
About, contact us:comment helptexts and add lorem ipsum texts
Funders Search: add mock funders, make changes to community search to work for funders

add  logo images




git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-monitor-portal/trunk/monitor@57793 d315682c-612b-4755-9ff5-7f18f6832af3
This commit is contained in:
Argiro Kokogiannaki 2019-12-03 11:10:05 +00:00
parent 3931a85628
commit c606e61728
28 changed files with 1344 additions and 181 deletions

View File

@ -13,6 +13,11 @@ const routes: Routes = [
loadChildren: './monitor/monitor.module#MonitorModule',
resolve: {envSpecific: EnvironmentSpecificResolver}
},
{
path: 'search/find/funders',
loadChildren: './funders/searchFunders.module#SearchFundersModule',
resolve: {envSpecific: EnvironmentSpecificResolver}
},
{path: 'about', redirectTo: 'about/learn-how', pathMatch: 'full'},
{
path: 'about/learn-how',

View File

@ -140,60 +140,7 @@ export class AppComponent {
}
if (communityId && communityId != "" && com.communityId == communityId) {
community = com;
let isCommunityManager: boolean = false;
if (Session.isCommunityCurator(this.user) || Session.isPortalAdministrator(this.user)) {
isCommunityManager = true;
} else if (this.user && com.managers.indexOf(this.user.email) != -1) {
isCommunityManager = true;
}
this.community = {
id: community.communityId,
name: (community.shortTitle) ? community.shortTitle : community.title,
logoUrl: community.logoUrl
};
this.menuItems = [];
this.menuItems.push(
{
rootItem: new MenuItem("search", "Search", "", "/search/find", false, [], ["/search/find", "/search/find/publications", "/search/find/datasets", "/search/find/software", "/search/find/other", "/search/find/projects", "/search/find/dataproviders"], this.properties.environment != "development" ? {} : {communityId: community.communityId}),
items: [new MenuItem("", "Publications", "", "/search/find/publications", false, ["publication"], ["/search/find/publications"], this.properties.environment != "development" ? {} : {communityId: community.communityId}),
new MenuItem("", "Research Data", "", "/search/find/datasets", false, ["dataset"], ["/search/find/datasets"], this.properties.environment != "development" ? {} : {communityId: community.communityId}),
new MenuItem("", "Software", "", "/search/find/software", false, ["software"], ["/search/find/software"], this.properties.environment != "development" ? {} : {communityId: community.communityId}),
new MenuItem("", "Other Research Products", "", "/search/find/other", false, ["orp"], ["/search/find/other"], this.properties.environment != "development" ? {} : {communityId: community.communityId}),
new MenuItem("", "Projects", "", "/search/find/projects/", false, ["project"], ["/search/find/projects"], this.properties.environment != "development" ? {} : {communityId: community.communityId}),
new MenuItem("", "Content Providers", "", "/search/find/dataproviders", false, ["datasource"], ["/search/find/dataproviders"], this.properties.environment != "development" ? {} : {communityId: community.communityId}),
]
});
this.menuItems.push({
rootItem: new MenuItem("deposit", "Deposit", "", "/participate/deposit/learn-how", false, [], ["/participate/deposit/learn-how"], this.properties.environment != "development" ? {} : {communityId: community.communityId}),
items: [
/*
new MenuItem("","Zenodo Communities","","/participate/share-zenodo",false,[],["/participate/share-zenodo"],this.properties.environment!="development"?{}:{communityId:community.communityId}),
new MenuItem("","Publications","","/participate/deposit-publications",false,["publication"],["/participate/deposit-publications"],this.properties.environment!="development"?{}:{communityId:community.communityId}),
new MenuItem("","Research Data","","/participate/deposit-datasets",false,["dataset"],["/participate/deposit-datasets"],this.properties.environment!="development"?{}:{communityId:community.communityId})
*/
]
});
this.menuItems.push(
{
rootItem: new MenuItem("link", "Link", "", "/participate/claim", false, [], ["/participate/claim"], this.properties.environment != "development" ? {} : {communityId: community.communityId}),
items: [
new MenuItem("", "Start linking", "", "/participate/claim", false, [], ["/participate/claim"], this.properties.environment != "development" ? {} : {communityId: community.communityId}),
new MenuItem("", "Learn more", this.properties.claimsInformationLink, "", false, [], [], {})
]
});
if (isCommunityManager) {
this.menuItems.push(
{
rootItem: new MenuItem("manage", "Manage", 'https://beta.admin.connect.openaire.eu/dashboard?communityId=' + community.communityId, "", false, [], [], {}),
items: []
});
}
}
}
if (community == null) {
@ -218,7 +165,7 @@ export class AppComponent {
});
}*/
this.menuItems.push({
rootItem: new MenuItem("communities", "Communities", "", "/search/find/communities", false, [], null, {}),
rootItem: new MenuItem("funders", "Funders", "", "/search/find/funders", false, [], null, {}),
items: []
});
this.menuItems.push({

View File

@ -1,17 +1,20 @@
<schema2jsonld *ngIf="url" [URL]="url" [name]="pageTitle" type="other"></schema2jsonld>
<ng-template #info>
<helper *ngIf="pageContents && pageContents['right'] && pageContents['right'].length > 0"
[texts]="pageContents['right']"></helper>
<!--<div class="uk-margin-auto-top uk-margin-remove-bottom uk-text-bold uk-h4">OpenAIRE gives you the virtual
environment and services designed for your community to:
<!-- <helper *ngIf="pageContents && pageContents['right'] && pageContents['right'].length > 0"-->
<!-- [texts]="pageContents['right']"></helper>-->
<div class="uk-margin-auto-top uk-margin-remove-bottom uk-text-bold uk-h4">
Lorem ipsum dolor sit amet, consectetur adipiscing elit
</div>
<ul class="uk-list uk-list-divider uk-padding uk-padding-remove-left uk-margin-auto-top">
<!-- <ul class="uk-list uk-list-divider uk-padding uk-padding-remove-left uk-margin-auto-top">
<li><h5><span class="uk-text-bold">Create and Manage</span> your
Community Gateway</h5></li>
<li><h5><span class="uk-text-bold">Access, share and link</span> together all your research</h5></li>
<li><h5><span class="uk-text-bold">Monitor and report</span> your community's progress</h5></li>
</ul>-->
<div class="uk-margin-top">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
</ng-template>
<div class="image-front-topbar"
uk-scrollspy="{&quot;target&quot;:&quot;[uk-scrollspy-class]&quot;,&quot;cls&quot;:&quot;uk-animation-fade&quot;,&quot;delay&quot;:false}"
@ -30,7 +33,7 @@
<ng-container *ngTemplateOutlet="info"></ng-container>
</div>
<div class="uk-width-1-2@m uk-width-1-1@s">
<div class="uk-margin-auto uk-text-bold uk-h4">Contact us to create your Community Gateway</div>
<div class="uk-margin-auto uk-text-bold uk-h4">Contact us to create your Monitor Dashboard</div>
<div *ngIf="errorMessage" class="uk-width-1-1 uk-alert uk-alert-danger uk-text-center"
role="alert">{{errorMessage}}</div>
<div class="uk-margin-top" uk-grid>
@ -44,7 +47,7 @@
<div *ngIf="name.invalid && isSubmitted" class=" uk-text-danger uk-text-small style=display:none">
Please add a name.
</div>
<input class="uk-input" type="text" placeholder="Your Name" [(ngModel)]="contactForm.name" required
<input class="uk-input" type="text" placeholder="Your name" [(ngModel)]="contactForm.name" required
#name="ngModel">
</div>
<div class="uk-width-1-2@s uk-margin-small-top">
@ -54,7 +57,7 @@
<div *ngIf="surname.invalid && isSubmitted" class=" uk-text-danger uk-text-small style=display:none">
Please add a surname.
</div>
<input class="uk-input" type="text" placeholder="Your Surname" [(ngModel)]="contactForm.surname"
<input class="uk-input" type="text" placeholder="Your surname" [(ngModel)]="contactForm.surname"
required #surname="ngModel">
</div>
<div class="uk-width-1-2@s uk-margin-small-top">
@ -68,7 +71,7 @@
*ngIf="!sender.invalid && isSubmitted && !contactForm.email.match('^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$')"
class=" uk-text-danger uk-text-small style=display:none">Please add a valid email.
</div>
<input class="uk-input" type="email" placeholder="Your Email" [(ngModel)]="contactForm.email" required
<input class="uk-input" type="email" placeholder="Your email" [(ngModel)]="contactForm.email" required
#sender="ngModel">
</div>
<div class="uk-width-1-2@s uk-margin-small-top">
@ -78,17 +81,17 @@
<div *ngIf="affiliation.invalid && isSubmitted"
class=" uk-text-danger uk-text-small style=display:none"> Please add an affiliation.
</div>
<input class="uk-input" type="text" placeholder="Your Affiliation"
<input class="uk-input" type="text" placeholder="Your affiliation"
[(ngModel)]="contactForm.affiliation" required #affiliation="ngModel">
</div>
<label class="uk-width-1-1 uk-h5 uk-text-bold">
Community Name <span class="uk-text-danger uk-text-bold">*</span>
Funder Name <span class="uk-text-danger uk-text-bold">*</span>
</label>
<div class="uk-width-1-2@s uk-margin-remove-top">
<div *ngIf="community.invalid && isSubmitted"
class=" uk-text-danger uk-text-small style=display:none"> Please add a community name.
class=" uk-text-danger uk-text-small style=display:none"> Please add a funder name.
</div>
<input class="uk-input" type="text" placeholder="Your Community Name"
<input class="uk-input" type="text" placeholder="Your funder name"
[(ngModel)]="contactForm.community" required #community="ngModel">
</div>
<label class="uk-width-1-1 uk-h5 uk-text-bold">
@ -110,7 +113,8 @@
</div>
<div class="uk-width-1-1 uk-text-right">
<button class="uk-button uk-button-default uk-margin-small-right" (click)="reset()">Reset</button>
<button class="uk-button portal-button" (click)="send()">Send</button>
<!-- (click)="send()" -->
<button class="uk-button portal-button" >Send</button>
</div>
</div>
</div>

View File

@ -0,0 +1,92 @@
<div class="uk-container line-height-normal uk-text-small" *ngIf="stakeholder">
<div *ngIf="stakeholder.status =='manager'"
class="uk-card-badge private-card-badge uk-width-1-3 uk-position-top-left uk-text-small uk-text-center">
Private
</div>
<div *ngIf="stakeholder.isSubscribed"
class="uk-position-top-right uk-card-badge portal-card-badge uk-width-1-2 uk-text-small uk-text-center">
<span>Subscribed</span>
</div>
<div class="uk-card-media-top uk-padding uk-padding-remove-vertical uk-flex uk-flex-center uk-flex-middle">
<a *ngIf="directLink" [href]="getCommunityPageUrl()" target="_blank">
<div class="stakeholder">
<img *ngIf="stakeholder.logoUrl != null && stakeholder.logoUrl != ''" src="{{stakeholder.logoUrl}}"
alt="{{(stakeholder.title)?stakeholder.title:stakeholder.shortTitle}} logo">
<span *ngIf="(stakeholder.logoUrl == null || stakeholder.logoUrl == '') && stakeholder.type != 'funder'" class="uk-icon">
<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" ratio="2.5"> <circle fill="none" stroke="#000"
stroke-width="1.1" cx="7.7"
cy="8.6" r="3.5"></circle> <path
fill="none" stroke="#000" stroke-width="1.1"
d="M1,18.1 C1.7,14.6 4.4,12.1 7.6,12.1 C10.9,12.1 13.7,14.8 14.3,18.3"></path> <path fill="none"
stroke="#000"
stroke-width="1.1"
d="M11.4,4 C12.8,2.4 15.4,2.8 16.3,4.7 C17.2,6.6 15.7,8.9 13.6,8.9 C16.5,8.9 18.8,11.3 19.2,14.1"></path></svg>
</span>
<div *ngIf=" (stakeholder.logoUrl == null || stakeholder.logoUrl == '') && stakeholder.type == 'funder' " [class]="'funderLogo ' + stakeholder['jurisdictionLogo'] "></div>
</div>
</a>
<a *ngIf="!directLink" (click)="confirmModalOpen()">
<div class="stakeholder">
<img *ngIf="stakeholder.logoUrl != null && stakeholder.logoUrl != ''" src="{{stakeholder.logoUrl}}"
alt="{{(stakeholder.title)?stakeholder.title:stakeholder.shortTitle}} logo">
<span *ngIf="(stakeholder.logoUrl == null || stakeholder.logoUrl == '') && stakeholder.type != 'funder'"
class="uk-icon">
<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" ratio="2.5"> <circle fill="none" stroke="#000"
stroke-width="1.1" cx="7.7"
cy="8.6" r="3.5"></circle> <path
fill="none" stroke="#000" stroke-width="1.1"
d="M1,18.1 C1.7,14.6 4.4,12.1 7.6,12.1 C10.9,12.1 13.7,14.8 14.3,18.3"></path> <path fill="none"
stroke="#000"
stroke-width="1.1"
d="M11.4,4 C12.8,2.4 15.4,2.8 16.3,4.7 C17.2,6.6 15.7,8.9 13.6,8.9 C16.5,8.9 18.8,11.3 19.2,14.1"></path></svg>
</span>
<div *ngIf=" (stakeholder.logoUrl == null || stakeholder.logoUrl == '') && stakeholder.type == 'funder' " [class]="'funderLogo ' + stakeholder['jurisdictionLogo'] "></div>
</div>
</a>
</div>
<div class="uk-card-body uk-padding-small uk-padding-remove-horizontal uk-padding-remove-top uk-margin-small-top uk-margin-bottom">
<div class="uk-text-center uk-text-bold " [ngClass]="(showDescription)?'uk-margin-bottom':''">
<a *ngIf="directLink" [href]="getCommunityPageUrl()" target="_blank">
<span *ngIf="stakeholder.title">
{{stakeholder.title.slice(0, thresholdTitle)}}
<span *ngIf="stakeholder.title.length > thresholdTitle">...</span>
</span>
<span *ngIf="!stakeholder.title && stakeholder.shortTitle">
{{stakeholder.shortTitle.slice(0, thresholdTitle)}}
<span *ngIf="stakeholder.shortTitle.length > thresholdTitle">...</span>
</span>
</a>
<a *ngIf="!directLink" (click)="confirmModalOpen()">
<span *ngIf="stakeholder.title">
{{stakeholder.title.slice(0, thresholdTitle)}}
<span *ngIf="stakeholder.title.length > thresholdTitle">...</span>
</span>
<span *ngIf="!stakeholder.title && stakeholder.shortTitle">
{{stakeholder.shortTitle.slice(0, thresholdTitle)}}
<span *ngIf="stakeholder.shortTitle.length > thresholdTitle">...</span>
</span>
</a>
</div>
<div class="uk-text-left" *ngIf="stakeholder.description != null && showDescription"
title="{{stakeholder.description}}">
<span>{{stakeholder.description.slice(0, thresholdDescription)}}<span
*ngIf="stakeholder.description.length > thresholdDescription">...</span></span>
</div>
</div>
<div>
<div class="uk-position-small uk-position-bottom-right">
<a *ngIf="directLink" [href]="getCommunityPageUrl()" target="_blank" class="portal-link uk-text-uppercase uk-text-bold">
View DEMO
</a>
<a *ngIf="!directLink" (click)="confirmModalOpen()" class="portal-link uk-text-uppercase uk-text-bold">
View DEMO
</a>
</div>
</div>
</div>
<modal-alert #AlertModal (alertOutput)="goToCommunityPage($event)">
<div class="uk-text-left">
You will be navigated to a new tab. Are you sure that you want to proceed?
</div>
</modal-alert>

View File

@ -0,0 +1,99 @@
import {Component, Input, ViewChild} from '@angular/core';
import {ActivatedRoute, Router} from '@angular/router';
import {Location} from '@angular/common';
import {EnvProperties} from '../../openaireLibrary/utils/properties/env-properties';
import {LocalStorageService} from "../../openaireLibrary/services/localStorage.service";
@Component({
selector: 'browse-stakeholder',
templateUrl: 'browse.component.html'
})
export class BrowseComponent {
@Input() public stakeholder = null;
@Input() public showDescription: boolean = true;
@ViewChild('AlertModal') modal;
public hiddenMessage: string = "Community is hidden to registered users. It is visible only to users that have privileges to manage community; delay: 100";
// cut title too
// check title length, if is manager, if is private and cut description accordingly
public thresholdTitle: number = 50;
public thresholdDescription: number = 120;
properties: EnvProperties;
public directLink: boolean = true;
constructor(private route: ActivatedRoute,
private router: Router,
private location: Location,
private localStorageService: LocalStorageService) {
}
public ngOnInit() {
this.route.data
.subscribe((data: { envSpecific: EnvProperties }) => {
this.properties = data.envSpecific;
this.localStorageService.get().subscribe(value => {
this.directLink = value;
});
});
}
public ngOnDestroy() {
}
isProduction(): boolean {
return this.properties.environment != "development";
}
getProductionPrefix(): string {
return (this.properties.environment == "beta") ? "beta." : ""
}
public confirmModalOpen() {
this.modal.cancelButton = true;
this.modal.okButton = true;
this.modal.alertTitle = 'You are going to visit ' +
((this.stakeholder.title) ? this.stakeholder.title : this.stakeholder.shortTitle) + ' Dashboard';
this.modal.alertMessage = false;
this.modal.okButtonLeft = false;
this.modal.okButtonText = 'Yes';
this.modal.cancelButtonText = 'No';
this.modal.choice = true;
this.modal.open();
}
public getCommunityPageUrl(): string {
let url = '';
if (this.isProduction()) {
url = 'https://' + this.getProductionPrefix() + this.stakeholder.communityId + '.openaire.eu';
} else {
url = this.router.createUrlTree(['/'], {
queryParams: {'communityId': this.stakeholder.communityId}
}).toString();
}
if(this.stakeholder.type == 'funder'){
url = "http://dl170.madgik.di.uoa.gr/monitor/dashboard/"+this.stakeholder['alias'];
}
return url;
}
public goToCommunityPage(data: any) {
if (data.value == true) {
this.localStorageService.setCommunityDirectLink(data.choice);
let url = '';
if (this.isProduction()) {
url = 'https://' + this.getProductionPrefix() + this.stakeholder.communityId + '.openaire.eu';
} else {
url = this.router.createUrlTree(['/'], {
queryParams: {'communityId': this.stakeholder.communityId}
}).toString();
}
if(this.stakeholder.type == 'funder'){
url = "http://dl170.madgik.di.uoa.gr/monitor/dashboard/"+this.stakeholder['alias'];
}
window.open(url, '_blank');
}
}
}

View File

@ -0,0 +1,29 @@
import {NgModule} from '@angular/core';
import {CommonModule} from '@angular/common';
import {FormsModule} from '@angular/forms';
import {RouterModule} from '@angular/router';
import {BrowseComponent} from './browse.component';
import {FreeGuard} from '../../openaireLibrary/login/freeGuard.guard';
import {SearchFormModule} from '../../openaireLibrary/searchPages/searchUtils/searchForm.module';
import {ManageModule} from '../../openaireLibrary/utils/manage/manage.module';
import {AlertModalModule} from "../../openaireLibrary/utils/modal/alertModal.module";
@NgModule({
imports: [
CommonModule, FormsModule, RouterModule,
SearchFormModule, ManageModule, AlertModalModule
],
declarations: [
BrowseComponent
],
providers:[
FreeGuard
],
exports: [
BrowseComponent
]
})
export class BrowseModule { }

View File

@ -0,0 +1,14 @@
import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';
import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {SearchFundersComponent} from "./searchFunders.component";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: SearchFundersComponent, canDeactivate: [PreviousRouteRecorder] }
])
]
})
export class SearchFundersRoutingModule { }

View File

@ -0,0 +1,399 @@
import {Component, ViewChild} from "@angular/core";
import {SearchUtilsClass} from "../openaireLibrary/searchPages/searchUtils/searchUtils.class";
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 {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 "../services/stakeholder.service";
@Component({
selector: 'search-funders',
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>
`
})
export class SearchFundersComponent {
public piwikSiteId = null;
private errorCodes: ErrorCodes;
private errorMessages: ErrorMessagesComponent;
public results= [];
public totalResults: CommunityInfo[] = [];
public sub: any; public subResults: any;
public filters = [];
public searchFields:SearchFields = new SearchFields();
public searchUtils:SearchUtilsClass = new SearchUtilsClass();
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 ;
private user: User;
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/funders";
});
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.searchPage.searchUtils = this.searchUtils;
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") {
this.searchUtils.sortBy = "";
}
this.searchPage.refineFields = this.refineFields;
let queryParams = this.searchPage.getQueryParamsFromUrl(params);
console.log(queryParams)
if(typeof document !== 'undefined') {
this.userManagementService.getUserInfo(this.properties.userInfoUrl).subscribe(user => {
this.user = user;
this.initFunders(queryParams);
});
} else {
this.initFunders(queryParams);
}
});
}
public ngOnDestroy() {
if(this.sub){
this.sub.unsubscribe();
}
if(this.subResults){
this.subResults.unsubscribe();
}
}
/**
* Initialize funders from Communities APIs
*
* @param params
*/
private initFunders(params: Map<string, string>) {
this.subResults = this._stakeholderService.mockgetFunders().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 funders', err);
this.searchUtils.status = this.errorMessages.getErrorCode(err.status);
this.disableForms = false;
HelperFunctions.scroll();
}
);
}
/**
* Get all funders from mock API and apply permission access validator,
* keyword searching, filter, paging and sorting.
*
* @param params, status
* @private
*/
private _getResults(params: Map<string, string>){
this.searchUtils.status = this.errorCodes.LOADING;
this.disableForms = true;
this.results = this.totalResults;
if(this.filters.length == 0){
this.filters = this.createFilters();
}
this.searchUtils.totalResults = 0;
this.applyParams(params);
}
/**
* Return the funders in which user has permission to view or manage.
*/
private showFunders() {
let ret = [];
for(let result of this.results) {
if (result.status == 'hidden') {
continue;
}
ret.push(result);
}
this.results = ret;
}
/**
* Apply permission access validator,
* keyword searching, filter, paging and sorting.
*
* @param params
* @param status
*/
public applyParams(params: Map<string, string>) {
this.showFunders();
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.searchUtils.status = this.errorCodes.DONE;
if(this.searchUtils.totalResults == 0 ){
this.searchUtils.status = this.errorCodes.NONE;
}
this.disableForms = false;
if(this.searchUtils.status == this.errorCodes.DONE) {
// Page out of limit!!!
let totalPages:any = this.searchUtils.totalResults/(this.searchUtils.size);
if(!(Number.isInteger(totalPages))) {
totalPages = (parseInt(totalPages, 10) + 1);
}
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;
}
}
}
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');
this.results = this.results.filter(value => {
return jurisdictionResults.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);
let results = [];
let values: string[] = [];
if(params.get(filterId) != undefined) {
values = (StringUtils.URIDecode(params.get(filterId))).split(/,(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,-1);
}
console.log(values);
if(filterId == 'jurisdiction') {
console.log('Here');
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, "")) {
results.push(this.results[i]);
break;
}
}
}
}
}
console.log(results);
return results;
}
/**
* 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) {
for (let j = 0; j < this.filters[i].values.length; j++) {
this.filters[i].values[j].number = 0;
}
break;
}
}
}
/**
* 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++) {
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;
}
}
}
}
}
}
}
/**
* Sorting results based on sortBy.
*/
private sort() {
if(this.searchUtils.sortBy == '') {
this.results.sort((left, right): number => {
if (left.title > right.title) {
return 1;
} else if (left.title < right.title) {
return -1;
} else {
return 0;
}
})
} else if(this.searchUtils.sortBy == 'creationdate,descending') {
this.results.sort((left, right): number => {
if (!right.date || left.date > right.date) {
return -1;
} else if (!left.date || left.date < right.date) {
return 1;
} else {
return 0;
}
})
} else if(this.searchUtils.sortBy == 'creationdate,ascending') {
this.results.sort((left, right): number => {
if (!right.date || left.date > right.date) {
return 1;
} else if (!left.date || left.date < right.date) {
return -1;
} else {
return 0;
}
})
}
}
/**
* Create Search Communities 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 filters: Filter[] = [];
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};
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 , valueIsUnique: false};
filters.push(filter);
}
return filters;
}
private handleError(message: string, error) {
console.error('Communities Search Page: ' + message, error);
}
}

View File

@ -0,0 +1,25 @@
import {NgModule} from "@angular/core";
import {CommonModule} from "@angular/common";
import {FormsModule} from "@angular/forms";
import {SearchFundersComponent} from "./searchFunders.component";
import {SearchPageModule} from "../openaireLibrary/searchPages/searchUtils/searchPage.module";
import {SearchFormModule} from "../openaireLibrary/searchPages/searchUtils/searchForm.module";
import {SearchFundersRoutingModule} from "./searchFunders-routing.module";
import {PreviousRouteRecorder} from "../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
import {StakeholderService} from "../services/stakeholder.service";
@NgModule({
imports: [
CommonModule, FormsModule,
SearchFormModule, SearchPageModule,
SearchFundersRoutingModule
],
declarations: [
SearchFundersComponent
],
providers:[ PreviousRouteRecorder, StakeholderService],
exports: [
SearchFundersComponent
]
})
export class SearchFundersModule { }

View File

@ -3,15 +3,185 @@
name="OpenAIRE Monitor">
</schema2jsonld>
<div
class="image-front-topbar uk-margin-large-top"
uk-scrollspy="{&quot;target&quot;:&quot;[uk-scrollspy-class]&quot;,&quot;cls&quot;:&quot;uk-animation-fade&quot;,&quot;delay&quot;:false}"
tm-header-transparent="light" tm-header-transparent-placeholder="">
<helper *ngIf="pageContents && pageContents['left'] && pageContents['left'].length > 0"
[texts]="pageContents['left']"></helper>
class="image-front-topbar"
uk-scrollspy="{&quot;target&quot;:&quot;[uk-scrollspy-class]&quot;,&quot;cls&quot;:&quot;uk-animation-fade&quot;,&quot;delay&quot;:false}"
tm-header-transparent="light" tm-header-transparent-placeholder="">
<div class="uk-section uk-background-norepeat uk-background-bottom-center uk-background-cover uk-section-overlap uk-position-relative uk-preserve-color" style="background: transparent linear-gradient(180deg, #F0F0F0 0%, #FFFFFF 100%) 0% 0% no-repeat padding-box;">
<div class="uk-padding-remove-bottom uk-section">
<div class="uk-position-cover">&nbsp;</div>
<div class="uk-position-relative uk-panel">
<div class="uk-container uk-container-large uk-margin-top">
<div class="uk-grid">
<div class="uk-width-1-1 uk-text-center">
<div class="uk-h1 uk-text-bold"><span>Tracking. Reporting. Monitoring.</span> </div>
<div class="uk-h1">made easy</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- <helper *ngIf="pageContents && pageContents['left'] && pageContents['left'].length > 0"-->
<!-- [texts]="pageContents['left']"></helper>-->
</div>
<div>
<div
class="uk-background-norepeat uk-background-cover uk-section-overlap uk-position-relative uk-preserve-color uk-margin-large-top" style="background-color: white;">
<div class="uk-container uk-section">
<div class="uk-flex uk-flex-middle uk-padding uk-grid" uk-grid="">
<div
class="uk-text-center uk-width-1-1@s uk-width-1-2@m uk-first-column"><img src="assets/images/dashboard.png"
></div>
<div class="uk-width-1-1@s uk-width-1-2@m ">
<div class="uk-text-bold uk-h4">
What are your benefits as a funder
</div>
<div class="uk-text-bold uk-h5 uk-margin-remove-bottom">
Get a complete view of your funds
</div>
<div class="">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
</div>
<div class="uk-text-bold uk-h5 uk-margin-remove-bottom">
View trends through topics
</div>
<div class="">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
</div>
<div class="uk-text-bold uk-h5 uk-margin-remove-bottom">
Make your data work for you
</div>
<div class="">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
</div>
<div class="uk-text-bold uk-h5 uk-margin-remove-bottom">
Custom research analytics
</div>
<div class="">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
</div>
<a class=" uk-margin-top uk-button portal-button uk-text-uppercase uk-button-large uk-text-bold"
href="/about/learn-how">view more</a>
</div>
</div>
</div>
</div>
<!-- <helper *ngIf="pageContents && pageContents['top'] && pageContents['top'].length > 0"-->
<!-- [texts]="pageContents['top']"></helper>-->
</div>
<!-- Numbers section-->
<div>
<div class="uk-section-default uk-section numbers-background uk-padding-remove-top">
<div class="uk-container uk-margin-medium-top">
<div class="uk-grid uk-child-width-1-5">
<div *ngIf="publicationsSize" class="uk-margin-medium-bottom uk-text-center">
<span class="uk-margin-small-right portal-color-icon" ><svg width="48" height="48" viewBox="0 0 20 20"
xmlns="http://www.w3.org/2000/svg" data-svg="copy"><rect
style="stroke: var(--portal-main-color);" fill="none" stroke="#000" x="3.5" y="2.5" width="12"
height="16"></rect><polyline style="stroke: var(--portal-main-color);" fill="none"
stroke="#000" points="5 0.5 17.5 0.5 17.5 17"></polyline></svg></span>
<div class="uk-h2 uk-margin uk-text-bold">{{publicationsSize.count|number}} </div>
<div class="uk-h5 uk-margin uk-text-capitalize">publications</div>
</div>
<div *ngIf="datasetsSize" class="uk-margin-medium-bottom uk-text-center">
<span class="uk-margin-small-right portal-color-icon" >
<svg width="48" height="48" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" data-svg="database"><ellipse fill="none" stroke="#000" cx="10" cy="4.64" rx="7.5" ry="3.14"></ellipse><path fill="none" stroke="#000" d="M17.5,8.11 C17.5,9.85 14.14,11.25 10,11.25 C5.86,11.25 2.5,9.84 2.5,8.11"></path><path fill="none" stroke="#000" d="M17.5,11.25 C17.5,12.99 14.14,14.39 10,14.39 C5.86,14.39 2.5,12.98 2.5,11.25"></path><path fill="none" stroke="#000" d="M17.49,4.64 L17.5,14.36 C17.5,16.1 14.14,17.5 10,17.5 C5.86,17.5 2.5,16.09 2.5,14.36 L2.5,4.64"></path></svg>
</span>
<div class="uk-h2 uk-margin uk-text-bold">{{datasetsSize.count|number}} </div>
<div class="uk-h5 uk-margin uk-text-capitalize">research data</div>
</div>
<div *ngIf="softwareSize" class="uk-margin-medium-bottom uk-text-center">
<span class="uk-margin-small-right portal-color-icon" >
<svg width="48" height="48" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" data-svg="cog"><circle fill="none" stroke="#000" cx="9.997" cy="10" r="3.31"></circle><path fill="none" stroke="#000" d="M18.488,12.285 L16.205,16.237 C15.322,15.496 14.185,15.281 13.303,15.791 C12.428,16.289 12.047,17.373 12.246,18.5 L7.735,18.5 C7.938,17.374 7.553,16.299 6.684,15.791 C5.801,15.27 4.655,15.492 3.773,16.237 L1.5,12.285 C2.573,11.871 3.317,10.999 3.317,9.991 C3.305,8.98 2.573,8.121 1.5,7.716 L3.765,3.784 C4.645,4.516 5.794,4.738 6.687,4.232 C7.555,3.722 7.939,2.637 7.735,1.5 L12.263,1.5 C12.072,2.637 12.441,3.71 13.314,4.22 C14.206,4.73 15.343,4.516 16.225,3.794 L18.487,7.714 C17.404,8.117 16.661,8.988 16.67,10.009 C16.672,11.018 17.415,11.88 18.488,12.285 L18.488,12.285 Z"></path></svg>
</span>
<div class="uk-h2 uk-margin uk-text-bold">{{softwareSize.count|number}} </div>
<div class="uk-h5 uk-margin uk-text-capitalize">software</div>
</div>
<div *ngIf="otherSize" class="uk-margin-medium-bottom uk-text-center">
<span class="uk-margin-small-right portal-color-icon" >
<svg width="48" height="48" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" data-svg="file"><rect fill="none" stroke="#000" x="3.5" y="1.5" width="13" height="17"></rect></svg>
</span>
<div class="uk-h2 uk-margin uk-text-bold">{{otherSize.count|number}} </div>
<div class="uk-h5 uk-margin uk-text-capitalize">other research products</div>
</div>
<div *ngIf="fundersSize" class="uk-margin-medium-bottom uk-text-center">
<span class="uk-margin-small-right portal-color-icon" >
<svg width="48" height="48" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" data-svg="world"><path fill="none" stroke="#000" d="M1,10.5 L19,10.5"></path><path fill="none" stroke="#000" d="M2.35,15.5 L17.65,15.5"></path><path fill="none" stroke="#000" d="M2.35,5.5 L17.523,5.5"></path><path fill="none" stroke="#000" d="M10,19.46 L9.98,19.46 C7.31,17.33 5.61,14.141 5.61,10.58 C5.61,7.02 7.33,3.83 10,1.7 C10.01,1.7 9.99,1.7 10,1.7 L10,1.7 C12.67,3.83 14.4,7.02 14.4,10.58 C14.4,14.141 12.67,17.33 10,19.46 L10,19.46 L10,19.46 L10,19.46 Z"></path><circle fill="none" stroke="#000" cx="10" cy="10.5" r="9"></circle></svg>
</span>
<div class="uk-h2 uk-margin uk-text-bold">{{fundersSize.count|number}} </div>
<div class="uk-h5 uk-margin uk-text-capitalize">Funders</div>
</div>
</div>
</div>
</div>
</div>
<div *ngIf="funders.length === 0" class="uk-container uk-container-large uk-margin-medium-top">
<errorMessages [status]="[status]" [type]="'communities'"></errorMessages>
</div>
<div *ngIf="!loading && funders.length > 0" class="uk-container uk-container-large uk-margin-medium-top">
<div class="uk-text-bold uk-h4">Funders already in monitor</div>
<div [class]="'uk-margin-medium-top' + (funders.length <= 5 ? ' uk-margin-medium-bottom' : '')">
<div
class="uk-grid-match uk-grid-medium uk-child-width-1-5@m uk-child-width-1-2 uk-text-center"
uk-grid uk-height-match=".community">
<div *ngFor="let funder of funders.slice(0, 5); let i = index">
<div class="uk-padding-small uk-card uk-card-default communityCard">
<browse-stakeholder [stakeholder]=funder></browse-stakeholder>
</div>
</div>
</div>
</div>
<div class="uk-text-right uk-margin-top">
<a *ngIf="funders.length > 5" class="portal-link uk-text-uppercase uk-text-bold uk-text-small"
routerLinkActive="router-link-active" routerLink="/search/find/funders">
Browse All >
</a>
</div>
</div>
<!--<helper *ngIf="pageContents && pageContents['bottom'] && pageContents['bottom'].length > 0"-->
<!-- [texts]="pageContents['bottom']"></helper>-->
<div
class="uk-background-norepeat uk-background-cover uk-section-overlap uk-position-relative uk-preserve-color uk-margin-large-top portal-background-color uk-light" style="">
<div class="uk-container uk-section">
<div class="uk-flex uk-flex-middle uk-padding uk-grid" uk-grid="">
<div class="uk-text-center uk-width-1-1@s uk-width-1-3@m uk-first-column uk-background-muted" style="width:400px;
height:250px">
<img src="" alt="Image">
</div>
<div class="uk-width-expand">
<div class="uk-text-bold uk-h4">
<div>Contact us to ...</div>
</div>
<div class="uk-margin-medium uk-h5">Get in touch with our team to find out how.</div>
<div
class="uk-inline"><a class="uk-button portal-button uk-button-large" href="/contact-us">CONTACT US</a></div>
</div>
</div>
</div>
</div>
<div class="uk-section-muted"
uk-scrollspy="{&quot;target&quot;:&quot;[uk-scrollspy-class]&quot;,&quot;cls&quot;:&quot;uk-animation-fade&quot;,&quot;delay&quot;:false}">
<div class="uk-container uk-container-large">
<other-portals [properties]="properties" portal="monitor"> </other-portals>
<other-portals [properties]="properties"></other-portals>
</div>
</div>

View File

@ -2,8 +2,7 @@ import {Component} from '@angular/core';
import {ActivatedRoute, Router} from '@angular/router';
import {Meta, Title} from '@angular/platform-browser';
import {EnvProperties} from '../openaireLibrary/utils/properties/env-properties';
import {CommunitiesService} from '../openaireLibrary/connect/communities/communities.service';
import {SubscribeService} from '../openaireLibrary/utils/subscribe/subscribe.service';
import {CommunityInfo} from '../openaireLibrary/connect/community/communityInfo';
import {PiwikService} from '../openaireLibrary/utils/piwik/piwik.service';
@ -13,6 +12,10 @@ import {ErrorCodes} from '../openaireLibrary/utils/properties/errorCodes';
import {ErrorMessagesComponent} from '../openaireLibrary/utils/errorMessages.component';
import {HelperService} from "../openaireLibrary/utils/helper/helper.service";
import {SEOService} from "../openaireLibrary/sharedComponents/SEO/SEO.service";
import {StakeholderService} from "../services/stakeholder.service";
import {RefineFieldResultsService} from "../openaireLibrary/services/refineFieldResults.service";
import {NumberUtils} from "../openaireLibrary/utils/number-utils.class";
import {SearchResearchResultsService} from "../openaireLibrary/services/searchResearchResults.service";
@Component({
selector: 'home',
@ -23,8 +26,11 @@ export class HomeComponent {
public piwiksub: any;
public pageTitle = "OpenAIRE | Monitor";
public funders = [];
public gifs: { "gif": string, "header": string, "text" }[] = [];
public pageContents = null;
public divContents = null;
// Message variables
public status: number;
public loading: boolean = true;
public subscriberErrorMessage: string = "";
@ -35,16 +41,26 @@ export class HomeComponent {
public keyword: string = "";
public type: string = "all";
public publicationsSize:any = null;
public datasetsSize:any = null;
public softwareSize: any = null;
public otherSize: any = null;
public fundersSize:any = null;
numberSubs=[];
constructor(
private route: ActivatedRoute,
private _router: Router,
private _meta: Meta,
private _title: Title,
private _piwikService: PiwikService,
private _stakeholderService: StakeholderService,
private helper: HelperService,
private seoService: SEOService) {
private seoService: SEOService,
private _refineFieldResultsService:RefineFieldResultsService, private _searchResearchResultsService: SearchResearchResultsService) {
var description = "OpenAIRE - Monitor, monitor dashboard, funder, statistics, ";
var description = "OpenAIRE - Monitor, Statistics, Search, Funder, EC, European Commision";
var title = "OpenAIRE - Monitor";
this._meta.updateTag({content: description}, "name='description'");
@ -67,23 +83,162 @@ export class HomeComponent {
if (this.properties.enablePiwikTrack && (typeof document !== 'undefined')) {
this.piwiksub = this._piwikService.trackView(this.properties, "OpenAIRE Monitor", this.properties.piwikSiteId).subscribe();
}
this.getNumbers();
this.getFunders();
// this.createGifs();
//this.getDivContents();
this.getPageContents();
});
}
private getPageContents() {
this.helper.getPageHelpContents(this._router.url, this.properties, 'monitor').subscribe(contents => {
this.helper.getPageHelpContents(this._router.url, this.properties, 'connect').subscribe(contents => {
this.pageContents = contents;
})
}
private getDivContents() {
this.helper.getDivHelpContents(this._router.url, this.properties, 'monitor').subscribe(contents => {
this.helper.getDivHelpContents(this._router.url, this.properties, 'connect').subscribe(contents => {
this.divContents = contents;
})
}
getNumbers(){
this.numberSubs.push(this._refineFieldResultsService.getRefineFieldsResultsByEntityName(["funder"],"project", this.properties).subscribe(
data => {
if(data[1].length > 0 && data[1][0].filterId == "funder" && data[1][0].values ){
this.fundersSize = NumberUtils.roundNumber(data[1][0].values.length);
}
},
err => {
//console.log(err);
this.handleError("Error getting 'funder' field results of projects", err);
}));
this.numberSubs.push(this._searchResearchResultsService.numOfSearchResults("publication", "", this.properties).subscribe(
data => {
if(data && data != null && data > 0 ){
this.publicationsSize = NumberUtils.roundNumber(data);
}
},
err => {
//console.log(err);
this.handleError("Error getting number of publications", err);
}
));
this.numberSubs.push(this._searchResearchResultsService.numOfSearchResults("dataset", "", this.properties).subscribe(
data => {
if(data && data != null && data > 0 ){
this.datasetsSize = NumberUtils.roundNumber(data);
}
},
err => {
//console.log(err);
this.handleError("Error getting number of research data", err);
}
));
this.numberSubs.push(this._searchResearchResultsService.numOfSearchResults("software", "", this.properties).subscribe(
data => {
if (data && data > 0) {
this.softwareSize = NumberUtils.roundNumber(data);
}
},
err => {
this.handleError("Error getting number of software data", err);
}
));
this.numberSubs.push(this._searchResearchResultsService.numOfSearchResults("other", "", this.properties).subscribe(
data => {
if (data && data > 0) {
this.otherSize = NumberUtils.roundNumber(data);
}
},
err => {
this.handleError("Error getting number of software data", err);
}
));
}
public getFunders() {
this.loading = true;
this.status = this.errorCodes.LOADING;
this.subscriberErrorMessage = "";
this.funders = [];
this._stakeholderService.mockgetFunders().subscribe(
funders => {
console.log(funders)
if(!funders){
return;
}
if(funders.length == 0) {
this.status = this.errorCodes.DONE;
return;
}
// this.sort(funders);
this.funders = funders;
this.loading = false;
},
error => {
this.status = this.handleError("Error getting funders", error);
this.loading = false;
}
);
}
private createGifs() {
this.gifs.push({
gif: "assets/connect-assets/home/gifs/deposit.gif",
header: "Find a repository to deposit your research outcome",
text: "This is OpenAIREs key service for research communities, both established and emerging ones. Our service helps you reach out and engage all your researchers to practice open science out-of-the-box."
});
this.gifs.push({
gif: "assets/connect-assets/home/gifs/link.gif",
header: "Link your research output with your community, funding, and other research products",
text: "This is OpenAIREs key service for research communities, both established and emerging ones. Our service helps you reach out and engage all your researchers to practice open science out-of-the-box."
});
this.gifs.push({
gif: "assets/connect-assets/home/gifs/overview.gif",
header: "View community's overview at a glance",
text: "This is OpenAIREs key service for research communities, both established and emerging ones. Our service helps you reach out and engage all your researchers to practice open science out-of-the-box."
});
this.gifs.push({
gif: "assets/connect-assets/home/gifs/results.gif",
header: "Search & browse your community's research products. ",
text: "This is OpenAIREs key service for research communities, both established and emerging ones. Our service helps you reach out and engage all your researchers to practice open science out-of-the-box."
});
this.gifs.push({
gif: "assets/connect-assets/home/gifs/graph-analysis.gif",
header: "View statistics for your community's research products.",
text: "This is OpenAIREs key service for research communities, both established and emerging ones. Our service helps you reach out and engage all your researchers to practice open science out-of-the-box."
});
}
private sort(results: CommunityInfo[]) {
results.sort((left, right): number => {
if (!right.date || left.date > right.date) {
return -1;
} else if (!left.date || left.date < right.date) {
return 1;
} else {
if (left.title > right.title) {
return 1;
} else if (left.title < right.title) {
return -1;
} else {
return 0;
}
}
})
}
public quote(param: string): string {
return StringUtils.quote(param);
}

View File

@ -15,18 +15,23 @@ import {OtherPortalsModule} from "../openaireLibrary/sharedComponents/other-port
import {Schema2jsonldModule} from "../openaireLibrary/sharedComponents/schema2jsonld/schema2jsonld.module";
import {SEOServiceModule} from "../openaireLibrary/sharedComponents/SEO/SEOService.module";
import {HomeRoutingModule} from "./home-routing.module";
import {BrowseModule} from "../funders/browse/browse.module";
import {StakeholderService} from "../services/stakeholder.service";
import {RefineFieldResultsServiceModule} from "../openaireLibrary/services/refineFieldResultsService.module";
import {SearchResearchResultsServiceModule} from "../openaireLibrary/services/searchResearchResultsService.module";
@NgModule({
imports: [
CommonModule, FormsModule, RouterModule, ErrorMessagesModule, OtherPortalsModule,
HelperModule, Schema2jsonldModule, SEOServiceModule, HomeRoutingModule,
HelperModule, Schema2jsonldModule, SEOServiceModule, HomeRoutingModule,BrowseModule, SearchResearchResultsServiceModule,
RefineFieldResultsServiceModule
],
declarations: [
HomeComponent
],
providers: [
FreeGuard, PreviousRouteRecorder,
PiwikService
PiwikService, StakeholderService
],
exports: [
HomeComponent

View File

@ -9,114 +9,140 @@ import {SEOService} from "../openaireLibrary/sharedComponents/SEO/SEO.service";
@Component({
selector: 'learn-how',
template: `
<schema2jsonld *ngIf="url" [URL]="url" [name]="pageTitle" type="other"></schema2jsonld>
<ng-template #one>
<h5 class="uk-text-bold uk-margin-small-bottom">1. Understanding your needs</h5>
<div>
First, we learn about your requirements and challenges. We help you understand Open Science practices within
EOSC and together well talk about how OpenAIRE RCD fits as a solution.
</div>
</ng-template>
<ng-template #two>
<h5 class=" uk-text-bold uk-margin-small-bottom">2. Develop a pilot</h5>
<div>
How do you work today, and how would you like to work tomorrow? We translate your needs into rules and processes
and we configure operational OpenAIRE services. By the end of this phase, well have defined the basic
configuration of your Community Gateway.
</div>
</ng-template>
<ng-template #three>
<h5 class="uk-text-bold uk-margin-small-bottom">3. Test and Validate</h5>
<div>
You validate and test your new Community Gateway (portal) with your experts and community to ensure all
workflows are in place and quality of data meets your standards. If needed, we work together in another
iteration to further refine and adapt to your needs.
</div>
</ng-template>
<ng-template #four>
<h5 class=" uk-text-bold uk-margin-small-bottom">4. Roll out the service</h5>
<div>
We jointly roll out your new Community Gateway. You take over the business operations and start engaging your
researchers, we take care of the smooth operation of the e-service.
</div>
</ng-template>
<!-- <schema2jsonld *ngIf="url" [URL]="url" [name]="pageTitle" type="other"></schema2jsonld>
<ng-template #one>
<h5 class="uk-text-bold uk-margin-small-bottom">1. Understanding your needs</h5>
<div>
First, we learn about your requirements and challenges. We help you understand Open Science practices within
EOSC and together well talk about how OpenAIRE RCD fits as a solution.
</div>
</ng-template>
<ng-template #two>
<h5 class=" uk-text-bold uk-margin-small-bottom">2. Develop a pilot</h5>
<div>
How do you work today, and how would you like to work tomorrow? We translate your needs into rules and processes
and we configure operational OpenAIRE services. By the end of this phase, well have defined the basic
configuration of your Community Gateway.
</div>
</ng-template>
<ng-template #three>
<h5 class="uk-text-bold uk-margin-small-bottom">3. Test and Validate</h5>
<div>
You validate and test your new Community Gateway (portal) with your experts and community to ensure all
workflows are in place and quality of data meets your standards. If needed, we work together in another
iteration to further refine and adapt to your needs.
</div>
</ng-template>
<ng-template #four>
<h5 class=" uk-text-bold uk-margin-small-bottom">4. Roll out the service</h5>
<div>
We jointly roll out your new Community Gateway. You take over the business operations and start engaging your
researchers, we take care of the smooth operation of the e-service.
</div>
</ng-template>-->
<div class="image-front-topbar"
uk-scrollspy="{&quot;target&quot;:&quot;[uk-scrollspy-class]&quot;,&quot;cls&quot;:&quot;uk-animation-fade&quot;,&quot;delay&quot;:false}"
tm-header-transparent="light" tm-header-transparent-placeholder="">
<helper *ngIf="pageContents && pageContents['top'] && pageContents['top'].length > 0"
[texts]="pageContents['top']"></helper>
<!--<div style=" min-height: calc(7.89999px + 60vh); background-image: url('assets/about/background.png') !important;"
class="uk-section uk-background-norepeat uk-background-cover uk-section-overlap uk-position-relative uk-preserve-color">
<div class="uk-container uk-container-large uk-section uk-margin-top uk-padding-remove-top">
<div class="uk-margin-large-top uk-grid">
<h1 class="uk-width-1-1 font-41 uk-text-bold">Learn the process</h1>
<div class="uk-width-1-2@l uk-width-1-1@s uk-h5 uk-margin-top">Build a <b>Gateway to your community's</b>
open and linked research outcomes. Customized to your needs.
<!-- <helper *ngIf="pageContents && pageContents['top'] && pageContents['top'].length > 0"-->
<!-- [texts]="pageContents['top']"></helper>-->
<!-- -->
<div class="uk-container uk-container-large uk-section uk-margin-top">
<div class="uk-margin-large-top uk-grid">
<h1 class="uk-width-1-2">Get to know your funding outcome</h1>
<div class="uk-grid uk-child-width-1-2 uk-margin-large-top uk-margin-left">
<div>
<div class="uk-h4 uk-text-bold">1. Provide us some metadata</div>
<div>All you need to do is to provide OpenAIRE with a very limited set of metadata fields from your database and we will take it up from there.</div>
</div>
<div class="uk-border-circle uk-margin-large-left uk-margin-large-right" style="border: solid 1px grey; width:200px; height:200px">
</div>
</div>
<div class="uk-margin-large-top uk-flex uk-child-width-1-3@m uk-child-width-1-1@s uk-flex-center" uk-grid>
<div class="uk-flex uk-child-width-1-1@m uk-child-width-1-2@s" uk-grid>
<div>
<ng-container *ngTemplateOutlet="one"></ng-container>
</div>
<div class="uk-visible@m">
<ng-container *ngTemplateOutlet="four"></ng-container>
</div>
<div class="uk-hidden@m">
<ng-container *ngTemplateOutlet="two"></ng-container>
</div>
<div class="uk-grid uk-child-width-1-2 uk-margin-large-top uk-margin-left">
<div class="uk-border-circle uk-margin-large-left uk-margin-large-right" style="border: solid 1px grey; width:200px; height:200px">
</div>
<div>
<img src="../../assets/about/cycle.png">
</div>
<div class="uk-flex uk-child-width-1-1@m uk-child-width-1-2@s" uk-grid>
<div class="uk-visible@m">
<ng-container *ngTemplateOutlet="two"></ng-container>
</div>
<div class="uk-hidden@m uk-visible@s">
<ng-container *ngTemplateOutlet="four"></ng-container>
</div>
<div>
<ng-container *ngTemplateOutlet="three"></ng-container>
</div>
<div class="uk-hidden@s uk-visible@xs">
<ng-container *ngTemplateOutlet="four"></ng-container>
</div>
<div class="uk-h4 uk-text-bold">2. Lorem ipsum dolor sit amet</div>
<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div>
</div>
</div>
<div class="uk-width-1-1 uk-text-center uk-text-large uk-margin-large-top">
<a class="uk-button portal-button uk-text-uppercase" routerLinkActive="router-link-active"
routerLink="/about/learn-in-depth"> Learn more details</a>
<div class="uk-grid uk-child-width-1-2 uk-margin-large-top uk-margin-left">
<div>
<div class="uk-h4 uk-text-bold">3. Lorem ipsum dolor sit amet</div>
<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div>
</div>
<div class="uk-border-circle uk-margin-large-left uk-margin-large-right" style="border: solid 1px grey; width:200px; height:200px">
</div>
</div>
</div>
<div clas="uk-margin-top">
<div class="uk-text-bold uk-h1 uk-margin-large-top">
What are your benefits as a funder
</div>
<div class=" uk-grid uk-child-width-1-1@s uk-child-width-1-2@m ">
<div class="uk-text-bold uk-h4 uk-margin-remove-bottom uk-margin-large-top">
Get a complete view of your funds
</div>
<div class="uk-margin-large-top">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
<hr class="uk-margin-large-top">
</div>
<div class="uk-text-bold uk-h4 uk-margin-remove-bottom uk-margin-large-top">
View trends through topics
</div>
<div class="uk-margin-large-top">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
<hr class="uk-margin-large-top">
</div>
<div class="uk-text-bold uk-h4 uk-margin-remove-bottom uk-margin-large-top">
Make your data work for you
</div>
<div class="uk-margin-large-top">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
<hr class="uk-margin-large-top">
</div>
<div class="uk-text-bold uk-h4 uk-margin-remove-bottom uk-margin-large-top">
Custom research analytics
</div>
<div class="uk-margin-large-top">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
<hr class="uk-margin-large-top">
</div>
</div>
</div>
<div
class="uk-background-norepeat uk-background-cover uk-section-overlap uk-position-relative uk-preserve-color uk-margin-large-top " style="">
<div class="uk-container uk-section">
<div class="uk-flex uk-flex-middle uk-padding uk-grid" uk-grid="">
<div class="uk-width-expand">
<div class="uk-text-bold uk-h4">
<div>Contact us to ...</div>
</div>
<div class="uk-margin-medium uk-h5">Get in touch with our team to find out how.</div>
<div
class="uk-inline"><a class="uk-button portal-button uk-button-large" href="/contact-us">CONTACT US</a></div>
</div>
<div class="uk-text-center uk-width-1-1@s uk-width-1-3@m uk-first-column portal-background-color " style="width:400px;
height:250px">
<img src="" alt="Image">
</div>
</div>
</div>
</div>
</div>
<div style="background-image: url('assets/cloud/abstract.png') !important;"
class="uk-background-norepeat uk-section uk-background-center uk-background-cover uk-section-secondary uk-section-overlap uk-position-relative uk-preserve-color">
<div class="uk-container uk-container-large">
<gif-slider [gifs]="gifs"></gif-slider>
</div>
</div>
<div style="background-color: #CFDEF1;"
class="uk-background-norepeat uk-background-cover uk-section-secondary uk-section-overlap uk-position-relative uk-preserve-color">
<div class="uk-container uk-container-large uk-section">
<div class="uk-flex uk-flex-middle uk-padding" uk-grid>
<div class="uk-width-expand">
<div class="uk-text-bold uk-h4">We look forward to working together and helping you unlock the full
potential of your research community through open science.
</div>
<div class="uk-margin-medium">Get in touch with our team to find out how.</div>
<div class="uk-inline">
<a class="uk-button portal-button" routerLinkActive="router-link-active" routerLink="/contact-us">
CONTACT US</a>
</div>
</div>
<div class="uk-text-center uk-width-1-1@s uk-width-1-3@m">
<img width="263" height="250" src="assets/connect-assets/contact/3.png">
</div>
</div>
</div>
</div>-->
</div>
`
})
@ -127,7 +153,7 @@ export class LearnHowComponent {
public divContents = null;
public url: string = null;
public pageTitle: string = "OpenAIRE - Connect | Learn How";
public pageTitle: string = "OpenAIRE - Monitor | Learn How";
properties: EnvProperties;
@ -138,7 +164,8 @@ export class LearnHowComponent {
private _title: Title,
private seoService: SEOService,
private _piwikService: PiwikService,
private helper: HelperService) {}
private helper: HelperService) {
}
public ngOnInit() {
this.route.data
@ -152,7 +179,7 @@ export class LearnHowComponent {
this.seoService.createLinkForCanonicalURL(this.url);
this.updateUrl(this.url);
this.updateTitle(this.pageTitle);
this.updateDescription("OpenAIRE - Connect, Community Gateway, research community");
this.updateDescription("OpenAIRE - Monitor, Funders, Statistics, EC");
//this.getDivContents();
this.getPageContents();

View File

@ -27,4 +27,9 @@ export class StakeholderService {
}));*/
return new BehaviorSubject<Stakeholder>(Stakeholder.createECStakeholder()).asObservable();
}
mockgetFunders(): any {
return this.http.get('./assets/funders.json') ;
}
}

43
src/assets/funders.json Normal file
View File

@ -0,0 +1,43 @@
[
{
"title": "European Commision",
"shortTitle":"EC",
"alias": "ec",
"queryId": "ec",
"type": "funder",
"logoUrl": "./assets/images/ec.png",
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"date":"2019-11-01",
"status":"public",
"jurisdiction": "European Union",
"jurisdictionLogo": "eu"
},
{
"title": "Austrian Science Fund",
"shortTitle":"FWF",
"alias": "fwf",
"queryId": "wfw",
"type": "funder",
"logoUrl": "./assets/images/fwf.png",
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"date":"2019-11-01",
"status":"public",
"jurisdiction": "Austria",
"jurisdictionLogo": "europe"
},
{
"title": "Australian Research Council",
"shortTitle":"ARC",
"alias": "arc",
"queryId": "arc",
"type": "funder",
"logoUrl": "./assets/images/arc1.gif",
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"date":"2019-11-01",
"status":"public",
"jurisdiction": "Australia",
"jurisdictionLogo": "international"
}
]

56
src/assets/funders2.json Normal file
View File

@ -0,0 +1,56 @@
[
{
"title": "European Commision",
"shortTitle":"EC",
"alias": "ec",
"queryId": "ec",
"type": "funder",
"logoUrl": "./assets/images/ec.png",
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"date":"2019-11-01",
"status":"public",
"jurisdiction": "European Union",
"jurisdictionLogo": "eu"
},
{
"title": "Austrian Science Fund",
"shortTitle":"FWF",
"alias": "fwf",
"queryId": "wfw",
"type": "funder",
"logoUrl": "./assets/images/fwf.png",
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"date":"2019-11-01",
"status":"public",
"jurisdiction": "Austria",
"jurisdictionLogo": "europe"
},
{
"title": "Australian Research Council",
"shortTitle":"ARC",
"alias": "arc",
"queryId": "arc",
"type": "funder",
"logoUrl": "./assets/images/arc1.gif",
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"date":"2019-11-01",
"status":"public",
"jurisdiction": "Australia",
"jurisdictionLogo": "international"
}
,
{
"title": "Wellcome Trust",
"shortTitle":"WT",
"alias": "wt",
"queryId": "wt",
"type": "funder",
"logoUrl": "",
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"date":"2019-11-01",
"status":"public",
"jurisdiction": "United Kingdom",
"jurisdictionLogo": "europe"
}
]

BIN
src/assets/images/arc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
src/assets/images/arc1.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

BIN
src/assets/images/ec.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

BIN
src/assets/images/fwf.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
src/assets/images/fwf1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
src/assets/images/globe.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@ -0,0 +1,42 @@
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 74.3 74.3" style="enable-background:new 0 0 74.3 74.3;" xml:space="preserve" class="el-image uk-text-emphasis uk-svg" width="74" height="74" data-svg="/images/Icons_Monitor/Funder%20Icon.svg">
<g transform="translate(-292.6 -954.2)">
<path style="fill:#FFFFFF;" d="M337.9,1009.7v-4h-16.3v4H314v-7.2l-0.5-0.4c-1.8-1.6-3.2-3.6-4-5.9l-0.4-1h-4.5v-7.6h4.5l0.4-1
c0.6-1.7,1.6-3.3,2.8-4.7l0.4-0.4V973c2.6,0.1,5,1.4,6.4,3.6l0.5,0.9l1-0.2c0.9-0.2,1.7-0.2,2.6-0.2h13.3c7.4,0,13.6,5.6,14.3,13
l0.1,1.3l0,0l-0.1,1.1c-0.3,3.7-2,7.2-4.7,9.7l-0.5,0.4v7.2L337.9,1009.7L337.9,1009.7z"></path>
<path style="fill:#9ABB55;" d="M314.1,974.6c1.5,0.4,2.8,1.3,3.6,2.6l1.1,1.7l2-0.4c0.8-0.1,1.5-0.2,2.3-0.2h13.3
c6.7,0,12.3,5.1,12.9,11.7l0.1,1l-0.1,1.2c-0.2,3.3-1.8,6.4-4.3,8.6l-1,0.9v6.3h-4.6v-4h-19.3v4h-4.6v-6.4l-1-0.9
c-1.6-1.5-2.8-3.3-3.6-5.3l-0.7-2h-4V989h4l0.7-2c0.6-1.5,1.4-3,2.5-4.2l0.7-0.8V974.6 M312.5,971.4L312.5,971.4
c-0.7,0-1.4,0.5-1.4,1.3c0,0,0,0,0,0v8.1c-1.3,1.5-2.4,3.3-3.1,5.2h-3.6c-0.7,0-1.3,0.6-1.3,1.3v8c0,0.7,0.6,1.3,1.3,1.3h3.6
c0.9,2.5,2.4,4.8,4.4,6.5v6.7c0,0.7,0.6,1.3,1.3,1.3h8c0.7,0,1.3-0.6,1.3-1.3v-2.7h13.3v2.7c0,0.7,0.6,1.3,1.3,1.3h8
c0.7,0,1.3-0.6,1.3-1.3v-6.7c3.1-2.7,4.9-6.6,5.2-10.7c3.1-0.6,5.4-3.3,5.4-6.5h-2.7c0,1.7-1.1,3.2-2.7,3.8
c-0.8-8.1-7.6-14.3-15.8-14.4H323c-0.9,0-1.9,0.1-2.8,0.3C318.5,973,315.6,971.4,312.5,971.4L312.5,971.4z"></path>
<path style="fill:#9ABB55;" d="M329.7,957.2c0.6,0,1,0.4,1,1s-0.4,1-1,1s-1-0.4-1-1S329.1,957.2,329.7,957.2 M329.7,954.2
c-2.2,0-4,1.8-4,4s1.8,4,4,4s4-1.8,4-4C333.7,956,331.9,954.2,329.7,954.2z"></path>
<path style="fill:#9ABB55;" d="M319.1,985.3c-1.2,0-2.1,0.9-2.1,2.1c0,1.2,0.9,2.1,2.1,2.1c1.2,0,2.1-0.9,2.1-2.1l0,0
C321.2,986.3,320.3,985.3,319.1,985.3C319.2,985.3,319.1,985.3,319.1,985.3z"></path>
<path style="fill:#9ABB55;" d="M335,980.7h-10.6v2.7H335V980.7z"></path>
<path style="fill:#9ABB55;" d="M362.9,970.4c0.6,0,1,0.4,1,1s-0.4,1-1,1s-1-0.4-1-1S362.3,970.4,362.9,970.4 M362.9,967.4
c-2.2,0-4,1.8-4,4s1.8,4,4,4s4-1.8,4-4C366.9,969.2,365.1,967.4,362.9,967.4z"></path>
<path style="fill:#9ABB55;" d="M296.6,970.4c0.6,0,1,0.4,1,1s-0.4,1-1,1s-1-0.4-1-1S296,970.4,296.6,970.4 M296.6,967.4
c-2.2,0-4,1.8-4,4s1.8,4,4,4s4-1.8,4-4C300.6,969.2,298.8,967.4,296.6,967.4z"></path>
<path style="fill:#9ABB55;" d="M329.7,1023.5c0.6,0,1,0.4,1,1c0,0.6-0.4,1-1,1c-0.5,0-1-0.4-1-0.9c0,0,0-0.1,0-0.1
C328.7,1024,329.2,1023.5,329.7,1023.5 M329.7,1020.5c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4s4-1.8,4-4
C333.7,1022.3,331.9,1020.5,329.7,1020.5z"></path>
<path style="fill:#9ABB55;" d="M296.6,1010.2c0.6,0,1,0.4,1,1s-0.4,1-1,1s-1-0.4-1-1S296,1010.2,296.6,1010.2 M296.6,1007.2
c-2.2,0-4,1.8-4,4s1.8,4,4,4s4-1.8,4-4C300.6,1009,298.8,1007.2,296.6,1007.2z"></path>
<path style="fill:#9ABB55;" d="M362.9,1010.2c0.6,0,1,0.4,1,1s-0.4,1-1,1s-1-0.4-1-1S362.3,1010.2,362.9,1010.2 M362.9,1007.2
c-2.2,0-4,1.8-4,4s1.8,4,4,4s4-1.8,4-4C366.9,1009,365.1,1007.2,362.9,1007.2z"></path>
<line style="fill:none;stroke:#9ABB55;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;" x1="329.7" y1="971.8" x2="329.7" y2="966.5"></line>
<line style="fill:none;stroke:#9ABB55;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;" x1="306.7" y1="981" x2="302.7" y2="977"></line>
<line style="fill:none;stroke:#9ABB55;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;" x1="356.7" y1="977" x2="352.7" y2="981"></line>
<line style="fill:none;stroke:#9ABB55;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;" x1="307.2" y1="1001.2" x2="303.2" y2="1005.1"></line>
<line style="fill:none;stroke:#9ABB55;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;" x1="329.7" y1="1015.2" x2="329.7" y2="1009.9"></line>
<line style="fill:none;stroke:#9ABB55;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;" x1="356" y1="1005.1" x2="352" y2="1001.2"></line>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -71,3 +71,48 @@ div:not(.connect_App) bottom .uk-totop{
.uk-light .topic-nav .uk-navbar-nav > li > a:focus {
color: white !important;
}
.funderLogo{
background-image: url("images/piggy-bank.svg");
background-repeat: no-repeat;
width: 74px;
height: 74px;
margin: 0;
padding: 0;
}
.funderLogo.eu{
background-image: url("images/eu-flag.png");
width:120px;
height: 100px;
}
.funderLogo.europe{
background-image: url("images/europe-map.png");
width:110px;
height: 115px;
}
.funderLogo.international{
background-image: url("images/globe.png");
width:105px;
height: 105px;
}
.portal-color-icon svg >*{
stroke: var(--portal-main-color);
}
.uk-light .portal-button {
background-color: var(--portal-main-contrast) ;
color: var(--portal-main-color);
border: 1px solid var(--portal-main-contrast) ;
background-image: none ;
}
.uk-light .portal-button:hover, .uk-light .portal-button:active, .uk-light .portal-button:focus {
background-color: #EEEEEE ;
color: var(--portal-main-color);
border: 1px solid #EEEEEE ;
background-image: none ;
}

View File

@ -5,6 +5,7 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- <base href="/monitor/" />-->
<base href="/" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="description" content="OpenAIRE Monitor, funder, funding, research, "/>