[Monitor | Trunk]: Add new pages and assets from new mocks

git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-monitor-portal/trunk/monitor@58832 d315682c-612b-4755-9ff5-7f18f6832af3
This commit is contained in:
Konstantinos Triantafyllou 2020-06-03 21:55:32 +00:00
parent d0fba5ce46
commit bdffbd07eb
87 changed files with 1220 additions and 1982 deletions

View File

@ -46,10 +46,10 @@
"cacheUrl" :"https://demo.openaire.eu/cache/get?url=",
"monitorServiceAPIURL" :"http://dl170.madgik.di.uoa.gr:8080/uoa-monitor-service",
"adminToolsAPIURL" :"https://beta.services.openaire.eu/uoa-admin-tools",
"adminToolsCommunity" :"connect",
"adminToolsCommunity" :"monitor",
"datasourcesAPI": "https://beta.services.openaire.eu/openaire/ds/search/",
"contextsAPI":"https://beta.services.openaire.eu/openaire/context",
"communityAPI": "https://beta.services.openaire.eu/openaire/community/",

View File

@ -48,9 +48,11 @@
"datasourcesAPI": "https://services.openaire.eu/openaire/ds/search/",
"monitorServiceAPIURL" :"http://dl170.madgik.di.uoa.gr:8080/uoa-monitor-service",
"adminToolsAPIURL" :"https://services.openaire.eu/uoa-admin-tools/",
"adminToolsCommunity" :"connect",
"adminToolsCommunity" :"monitor",
"contextsAPI":"https://services.openaire.eu/openaire/context",
"communityAPI": "https://services.openaire.eu/openaire/community/",

View File

@ -9,13 +9,8 @@ import {OpenaireErrorPageComponent} from './error/errorPage.component';
const routes: Routes = [
{path: '', loadChildren: './home/home.module#HomeModule', resolve: {envSpecific: EnvironmentSpecificResolver}},
{
path: 'monitor',
loadChildren: './monitor/monitor.module#MonitorModule',
resolve: {envSpecific: EnvironmentSpecificResolver}
},
{
path: 'search/find/funders',
loadChildren: './funders/searchFunders.module#SearchFundersModule',
path: 'search/find/stakeholders',
loadChildren: './search-stakeholders/search-stakeholders.module#SearchStakeholdersModule',
resolve: {envSpecific: EnvironmentSpecificResolver}
},
{path: 'about', redirectTo: 'about/learn-how', pathMatch: 'full'},
@ -24,11 +19,6 @@ const routes: Routes = [
loadChildren: './learn-how/learn-how.module#LearnHowModule',
resolve: {envSpecific: EnvironmentSpecificResolver}
},
{
path: 'about/learn-in-depth',
loadChildren: './learn-how/learnInDepth/learn-in-depth.module#LearnInDepthModule',
resolve: {envSpecific: EnvironmentSpecificResolver}
},
{
path: 'contact-us',
loadChildren: './contact/contact.module#ContactModule',

View File

@ -12,20 +12,15 @@ import {HelperFunctions} from "./openaireLibrary/utils/HelperFunctions.class";
import {UserManagementService} from "./openaireLibrary/services/user-management.service";
@Component({
//changeDetection: ChangeDetectionStrategy.Default,
//encapsulation: ViewEncapsulation.Emulated,
selector: 'app-root',
styles: [`
`],
template: `
<div [class]="(community)?(community.id +'App'):'connectApp'">
<div class="monitorApp">
<navbar *ngIf="properties && showMenu && !community" portal="monitor" [onlyTop]=false
[userMenuItems]=userMenuItems [menuItems]=menuItems [user]="user"
[showMenu]=showMenu [properties]="properties" [showHomeMenuItem]="true"></navbar>
[showMenu]=showMenu [properties]="properties"></navbar>
<navbar *ngIf="properties && showMenu && community" portal="monitor" [onlyTop]=false [communityId]="community.id"
[userMenuItems]=userMenuItems [menuItems]=menuItems [user]="user"
[community]=community [showMenu]=showMenu [properties]="properties" [enableSearch]="true"
[showHomeMenuItem]="true"></navbar>
[community]=community [showMenu]=showMenu [properties]="properties" [enableSearch]="true"></navbar>
<div class="custom-main-content">
<main>
<router-outlet></router-outlet>
@ -163,11 +158,11 @@ export class AppComponent {
});
}*/
this.menuItems.push({
rootItem: new MenuItem("funders", "Funders", "", "/search/find/funders", false, [], null, {}),
rootItem: new MenuItem("stakeholders", "Members in Action", "", "/search/find/stakeholders", false, [], null, {}),
items: []
});
this.menuItems.push({
rootItem: new MenuItem("join", "Join", "", "/contact-us", false, [], null, {}),
rootItem: new MenuItem("contact-us", "Contact us", "", "/contact-us", false, [], null, {}),
items: []
});
/*if(this.managerOfCommunities || this.subscriberOfCommunities){
@ -189,11 +184,12 @@ export class AppComponent {
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)) {
//((this.properties.environment == "beta") ? "https://beta.admin.connect.openaire.eu" : "https://admin.explore.openaire.eu") + "/dashboard?communityId=openaire"
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"}))
@ -209,10 +205,6 @@ export class AppComponent {
console.error("Error fetching your subscribed communities")
});
}*/
if (this.user) {
this.userMenuItems.push(new MenuItem("my-communities", "My Communities", "",
"/myCommunities", false, [], [], {}));
}
} else {
this.bottomMenuItems = [
// new MenuItem("","About","","/about",false,[],["/about"],this.properties.environment!="development"?{}:{communityId:community.communityId}),

View File

@ -3,7 +3,7 @@ import {FormsModule} from '@angular/forms';
import {CommonModule} from '@angular/common';
import {HttpClientModule} from "@angular/common/http";
import {BrowserModule} from '@angular/platform-browser';
import {NoopAnimationsModule} from '@angular/platform-browser/animations';
import {BrowserAnimationsModule, NoopAnimationsModule} from '@angular/platform-browser/animations';
import {AppComponent} from './app.component';
import {OpenaireErrorPageComponent} from './error/errorPage.component';
@ -24,7 +24,7 @@ import {SubscribeModule} from './utils/subscribe/subscribe.module';
imports: [
SharedModule,
NoopAnimationsModule,
BrowserAnimationsModule,
CommonModule,
HttpClientModule,
ErrorModule,

View File

@ -6,7 +6,7 @@ import {IsRouteEnabled} from "../openaireLibrary/error/isRouteEnabled.guard";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: ContactComponent, canActivate: [IsRouteEnabled]}
{ path: '', component: ContactComponent, canActivate: []}
])
]
})

View File

@ -1,47 +1,38 @@
<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">
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">
<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.
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}"
tm-header-transparent="light" tm-header-transparent-placeholder="">
<div
class="contact-background uk-section-large uk-background-top-center uk-background-norepeat uk-background-cover uk-section-overlap uk-position-relative uk-preserve-color">
<div style=" min-height: 350px;" class="uk-section uk-flex uk-flex-middle uk-margin-top uk-padding-remove-top">
<div class="uk-align-center">
<div *ngIf="showLoading" class="uk-margin-large">
<div class="uk-animation-fade uk-margin-top uk-width-1-1" role="alert"><span
<div class="uk-section">
<div class="uk-align-center">
<div *ngIf="showLoading" class="uk-margin-large">
<div class="uk-animation-fade uk-margin-top uk-width-1-1" role="alert"><span
class="loading-gif uk-align-center"></span></div>
</div>
<div *ngIf="!showLoading" class="uk-container uk-container-large">
<div class="uk-grid-divider" uk-grid>
<div class="uk-width-1-1 uk-hidden@m">
<ng-container *ngTemplateOutlet="info"></ng-container>
</div>
<contact-us formTitle="Contact us to create your Monitor Dashboard" class="uk-width-1-2@m"
[properties]="properties" [errorMessage]="errorMessage"
[contactForm]="contactForm" (sendEmitter)="send($event)" (resetEmitter)="reset()"></contact-us>
<div class="uk-width-1-2 uk-visible@m">
<ng-container *ngTemplateOutlet="info"></ng-container>
</div>
</div>
</div>
<div *ngIf="!showLoading" class="uk-container uk-container-large">
<div class="uk-grid-divider uk-grid uk-flex-center" uk-grid>
<!--<div class="uk-width-1-1 uk-hidden@m">
<ng-container *ngTemplateOutlet="info"></ng-container>
</div>-->
<contact-us formTitle="Contact us to create your Monitor Dashboard" class="uk-width-1-1 uk-hidden@m"
[properties]="properties" [errorMessage]="errorMessage"
[contactForm]="contactForm" (sendEmitter)="send($event)"></contact-us>
<contact-us formTitle="Contact us to create your Monitor Dashboard" class="uk-width-1-2 uk-visible@m uk-text-nowrap"
[properties]="properties" [errorMessage]="errorMessage"
[contactForm]="contactForm" (sendEmitter)="send($event)"></contact-us>
<!--<div class="uk-width-1-2 uk-visible@m">
<ng-container *ngTemplateOutlet="info"></ng-container>
</div>-->
</div>
</div>
</div>
</div>
</div>
<modal-alert #AlertModal (alertOutput)="goToHome()">
<div class="uk-text-center">

View File

@ -55,7 +55,7 @@ export class ContactComponent implements OnInit {
this.seoService.createLinkForCanonicalURL(this.url);
this.updateUrl(this.url);
this.updateTitle(this.pageTitle);
this.updateDescription("OpenAIRE - Monitor, Community Gateway, research community");
this.updateDescription("OpenAIRE - Monitor, Community Gateway, research community - Contact Us");
this.reset();
//this.getDivContents();
this.getPageContents();
@ -91,7 +91,7 @@ export class ContactComponent implements OnInit {
surname: this.fb.control('', Validators.required),
email: this.fb.control('', [Validators.required, Validators.email]),
affiliation: this.fb.control('', Validators.required),
funder: this.fb.control('', Validators.required),
stakeholder: this.fb.control('', Validators.required),
message: this.fb.control('', Validators.required),
recaptcha: this.fb.control('', Validators.required),
});

View File

@ -1,92 +0,0 @@
<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

@ -1,99 +0,0 @@
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

@ -1,29 +0,0 @@
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,197 @@
.home-background {
background-size: contain, cover;
background-repeat: no-repeat;
background-image: url("~assets/monitor-assets/home/lighthouse.png"), url("~assets/monitor-assets/home/background.svg");
background-blend-mode: darken;
}
@media (max-width:1366px) {
.home-background {
background-size: cover;
background-repeat: no-repeat;
background-image: url("~assets/monitor-assets/home/background.svg");
}
}
.dashboard-section{
background-image: url("~assets/monitor-assets/home/dashboard-background.svg");
background-size: cover;
background-repeat: no-repeat;
background-position: top center;
margin-top: 400px;
}
.dashboard-section .dashboard {
transform: translateY(-50%);
background-image: url("~assets/monitor-assets/home/dashboard.png");
background-size: contain;
background-repeat: no-repeat;
background-position: top center;
margin-left: auto;
margin-right: auto;
position: relative;
margin-bottom: -10%;
width: 50%;
height: 0;
padding-top: 25%;
}
.dashboard-section .dashboard .captain-left {
background-image: url("~assets/monitor-assets/home/captain-left.png");
background-size: contain;
background-repeat: no-repeat;
background-position: top center;
left: -10%;
bottom: -5%;
position: absolute;
height: 35%;
width: 17%;
}
.dashboard-section .dashboard .captain-right {
background-image: url("~assets/monitor-assets/home/captain-right.png");
background-size: contain;
background-repeat: no-repeat;
background-position: top center;
right: -8%;
bottom: -5%;
position: absolute;
height: 35%;
width: 16%;
}
.boat-section.uk-hidden\@l {
background-image: url("~assets/monitor-assets/home/boat.png");
background-size: contain;
background-repeat: no-repeat;
}
.boat-section.uk-visible\@l {
position: relative;
z-index: 0;
height: 300px;
}
.boat-section.uk-visible\@l .boat {
position: absolute;
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;
z-index: 1;
opacity: 0.9;
}
.boat-section > div:not(.boat) {
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;
background-repeat: no-repeat;
}
.stakeholder-section .tabs {
display: flex;
justify-content: center;
width: 100%;
}
.stakeholder-section ul {
list-style: none;
display: flex;
flex-wrap: wrap;
margin-bottom: 0;
font-size: 16px;
}
.stakeholder-section ul li {
display: inline-block;
color: #707070;
padding: 5px 15px;
cursor: pointer;
margin-left: 25px;
user-select: none;
}
.stakeholder-section ul li:hover {
color: #1a1a1a;
}
.stakeholder-section ul li.uk-active {
color: #1a1a1a;
border: #E3E3E3 solid 1px;
border-bottom: #F9F9F9 solid 1px;;
}
.stakeholder-section .stakeholders {
border-top: #E3E3E3 solid 1px;
margin-top: -1px;
padding-top: 20px;
}
.stakeholder-section .stakeholders .header {
background-color: #00a0de;
position: relative;
}
.stakeholder-section .stakeholders .header img{
max-width: 50%;
max-height: 50%;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
.stakeholder-section .stakeholders .header.small {
height: 150px;
}
.stakeholder-section .stakeholders .header.medium {
height: 200px;
}
.stakeholder-section .stakeholders .header.large {
height: 300px;
}

View File

@ -2,183 +2,186 @@
[logoURL]="properties.baseLink+'/assets/common-assets/logo-small-monitor.png'" type="home"
name="OpenAIRE Monitor">
</schema2jsonld>
<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="">
<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 class="uk-section home-background uk-background-top-center">
<div class="uk-container uk-container-large uk-text-center uk-section uk-margin-large-bottom"
uk-parallax="media: @l; y: -200; easing: 0.5">
<h1 class="uk-margin-top uk-text-bold">A new era of monitoring research.</h1>
<h2 class="uk-margin-remove-top uk-text-bold">Open data. Open methodologies.</h2>
<div class="uk-margin-medium-top uk-text-large">
Work together with us to view, understand and visualize<br>research statistics and indicators.
</div>
</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>
<div class="uk-container uk-container-large uk-margin-large-top uk-text-justify">
<div class="uk-margin-left uk-margin-right uk-margin-large-bottom">
<div class="uk-child-width-1-3@m uk-grid uk-grid-large" uk-grid>
<div [@1]="state.toString()" class="clickable" (click)="startCaptainsAnimation()">
<h5 class="uk-margin-remove-bottom uk-text-bold">
Get a complete picture
</h5>
<div class="uk-text-large">
Track and discover your organizations research output. Use the OpenAIRE Research Graph to get a 360o
view of your publications-data-code.
</div>
</div>
<div [@2]="state.toString()" class="clickable" (click)="startCaptainsAnimation(2)">
<h5 class="uk-margin-remove-bottom uk-text-bold">
Monitor open science compliance
</h5>
<div class="uk-text-large">
Work with us, the OS expert community, for open and transparent metrics. Discover open science trends
for your organization and see how you fare in EOSC.
</div>
</div>
<div [@3]="state.toString()" class="clickable" (click)="startCaptainsAnimation(3)">
<h5 class="uk-margin-remove-bottom uk-text-bold">
Turn research results to insights
</h5>
<div class="uk-text-large">
Understand your community. Measure impact, discover trends, connections and collaborations to improve
and optimize your future actions.
</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 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>
<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>
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 *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 class="second">
<h3>Transparent methodology</h3>
<div>
We base our service on open science principles. We rely on open data sources, and document our algorithms for
every metric and indicator we publish.
</div>
</div>
<div class="third">
<h3>Customised to your needs</h3>
<div>
Choose from a variety of pre-defined metrics. Select how to visualize them, and who to share with.
Use our advanced tools and expertise add add your own metrics.
</div>
</div>
<div class="fourth">
<h3>Minimum effort to join</h3>
<div>
You only share some information with us to include in out backend aggregating and data mining,
and we deliver a view of your world. As you see fit.
</div>
</div>
</div>
<!--<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 class="uk-section uk-section-large uk-container uk-container-large uk-margin-large-top boat-section uk-text-large uk-visible@l">
<div class="boat"></div>
<div class="first">
<h3>Global outlook</h3>
<div>
Monitor is built on the OpenAIRE Research Graph. An interconnected scholarly communication shared data resource
from open initiatives around the world, of global interest.
</div>
</div>
<div class="second">
<h3>Transparent methodology</h3>
<div>
We base our service on open science principles. We rely on open data sources, and document our algorithms for
every metric and indicator we publish.
</div>
</div>
<div class="third">
<h3>Customised to your needs</h3>
<div>
Choose from a variety of pre-defined metrics. Select how to visualize them, and who to share with.
Use our advanced tools and expertise add add your own metrics.
</div>
</div>
<div class="fourth">
<h3>Minimum effort to join</h3>
<div>
You only share some information with us to include in out backend aggregating and data mining,
and we deliver a view of your world. As you see fit.
</div>
</div>
</div>
<div class="uk-text-center">
<a class="uk-button portal-button" routerLink="/about">Learn More</a>
</div>
<div class="uk-section uk-section-large graph-section uk-margin-right uk-margin-left uk-margin-large-top">
<div class="uk-container uk-margin-medium-top">
<div class="uk-text-center uk-margin-medium-bottom">
<h2 class="uk-text-bold">Tap into the OpenAIRE Research Graph</h2>
</div>
<div class="uk-grid uk-child-width-1-5@m uk-child-width-1-2">
<div *ngIf="publicationsSize" class="uk-margin-medium-bottom uk-text-center">
<div class="uk-h2 uk-margin portal-color uk-text-bold">{{publicationsSize.count|number}} </div>
<div class="uk-h5 uk-margin uk-text-uppercase">publications</div>
</div>
<div class="uk-width-expand">
<div class="uk-text-bold uk-h4">
<div>Contact us to ...</div>
<div *ngIf="datasetsSize" class="uk-margin-medium-bottom uk-text-center">
<div class="uk-h2 uk-margin portal-color uk-text-bold">{{datasetsSize.count|number}} </div>
<div class="uk-h5 uk-margin uk-text-uppercase">research data</div>
</div>
<div *ngIf="softwareSize" class="uk-margin-medium-bottom uk-text-center">
<div class="uk-h2 uk-margin portal-color uk-text-bold">{{softwareSize.count|number}} </div>
<div class="uk-h5 uk-margin uk-text-uppercase">software</div>
</div>
<div *ngIf="otherSize" class="uk-margin-medium-bottom uk-text-center">
<div class="uk-h2 uk-margin portal-color uk-text-bold">{{otherSize.count|number}} </div>
<div class="uk-h5 uk-margin uk-text-uppercase">other research products</div>
</div>
<div *ngIf="fundersSize" class="uk-margin-medium-bottom uk-text-center uk-width-1-5@m uk-width-1-1">
<div class="uk-h2 uk-margin portal-color uk-text-bold">{{fundersSize.count|number}} </div>
<div class="uk-h5 uk-margin uk-text-uppercase">Funders</div>
</div>
</div>
</div>
</div>
<div *ngIf="stakeholders && stakeholders.length > 0" class="uk-section uk-section-large uk-margin-right uk-margin-left uk-margin-large-top stakeholder-section">
<div 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>
</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 *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'">
</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>
<h6 class="uk-margin-top uk-text-bold">{{stakeholder.name}}</h6>
</div>
</div>
</div>
</div>
<div class="uk-section uk-section-large uk-container uk-margin-large-top uk-margin-large-bottom">
<div class="uk-grid uk-grid-large uk-flex uk-flex-middle uk-margin-right uk-margin-left" uk-grid>
<div class="uk-width-expand">
<h2 class="uk-text-bold">Contact us to help you.</h2>
<div class="uk-margin-medium uk-text-large">Are you looking for more? Get in touch with our team and let us help
you.
</div>
<div class="uk-inline"><a class="uk-button portal-button" routerLink="/contact-us">Get in Touch</a></div>
</div>
<div class="uk-text-center uk-width-1-1@s uk-width-1-3@m uk-flex-first@m uk-padding-remove-left uk-text-center">
<img class="uk-visible@m" src="assets/monitor-assets/home/seagull.png" width="256">
<img class="uk-hidden@m" src="assets/monitor-assets/home/seagull.png" width="100">
</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">

View File

@ -1,10 +1,7 @@
import {Component} from '@angular/core';
import {Component, ElementRef, ViewChild} 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 {CommunityInfo} from '../openaireLibrary/connect/community/communityInfo';
import {PiwikService} from '../openaireLibrary/utils/piwik/piwik.service';
import {StringUtils} from '../openaireLibrary/utils/string-utils.class';
@ -12,22 +9,90 @@ 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";
import {animate, state, style, transition, trigger} from "@angular/animations";
import {StakeholderService} from "../openaireLibrary/monitor/services/stakeholder.service";
import {Stakeholder} from "../openaireLibrary/monitor/entities/stakeholder";
import {HelperFunctions} from "../openaireLibrary/utils/HelperFunctions.class";
@Component({
selector: 'home',
templateUrl: 'home.component.html',
styleUrls: ['home.component.css'],
animations: [
trigger('captain-left', [
state('before', style({
transform: 'translateX(-300px)'
})),
state('after', style({
transform: 'translateX(0)'
})),
transition('before => after', [
animate('0.7s')
])
]),
trigger('captain-right', [
state('before', style({
transform: 'translateX(300px)'
})),
state('after', style({
transform: 'translateX(0)'
})),
transition('before => after', [
animate('0.7s')
])
]),
trigger('1', [
state('1', style({
opacity: 1
})),
state('2', style({
opacity: 0.4
})),
state('3', style({
opacity: 0.4
})),
transition('* => *', [
animate('0.3s')
])
]),
trigger('2', [
state('1', style({
opacity: 0.4
})),
state('2', style({
opacity: 1
})),
state('3', style({
opacity: 0.4
})),
transition('* => *', [
animate('0.3s')
])
]),
trigger('3', [
state('1', style({
opacity: 0.4
})),
state('2', style({
opacity: 0.4
})),
state('3', style({
opacity: 1
})),
transition('* => *', [
animate('0.3s')
])
])
]
})
export class HomeComponent {
public piwiksub: any;
public pageTitle = "OpenAIRE | Monitor";
public funders = [];
public gifs: { "gif": string, "header": string, "text" }[] = [];
public stakeholders: any[] = [];
public pageContents = null;
public divContents = null;
// Message variables
@ -36,18 +101,23 @@ export class HomeComponent {
public subscriberErrorMessage: string = "";
public errorCodes: ErrorCodes;
private errorMessages: ErrorMessagesComponent;
properties: EnvProperties;
public keyword: string = "";
public type: string = "all";
public publicationsSize:any = null;
public datasetsSize:any = null;
public publicationsSize: any = null;
public datasetsSize: any = null;
public softwareSize: any = null;
public otherSize: any = null;
public fundersSize:any = null;
numberSubs=[];
public fundersSize: any = null;
numberSubs = [];
public state = 1;
private timeouts: any[] = [];
public observer: IntersectionObserver;
public captains: boolean = false;
@ViewChild('ref') ref: ElementRef;
constructor(
private route: ActivatedRoute,
private _router: Router,
@ -57,22 +127,22 @@ export class HomeComponent {
private _stakeholderService: StakeholderService,
private helper: HelperService,
private seoService: SEOService,
private _refineFieldResultsService:RefineFieldResultsService, private _searchResearchResultsService: SearchResearchResultsService) {
private _refineFieldResultsService: RefineFieldResultsService, private _searchResearchResultsService: SearchResearchResultsService) {
var description = "OpenAIRE - Monitor, Statistics, Search, Funder, EC, European Commision";
var title = "OpenAIRE - Monitor";
this._meta.updateTag({content: description}, "name='description'");
this._meta.updateTag({content: description}, "property='og:description'");
this._meta.updateTag({content: title}, "property='og:title'");
this._title.setTitle(title);
this.errorCodes = new ErrorCodes();
this.errorMessages = new ErrorMessagesComponent();
this.status = this.errorCodes.LOADING;
}
public ngOnInit() {
this.route.data
.subscribe((data: { envSpecific: EnvProperties }) => {
@ -88,26 +158,54 @@ export class HomeComponent {
// this.createGifs();
//this.getDivContents();
this.getPageContents();
});
this.initAnimations();
this.startCaptainsAnimation();
}
public initAnimations() {
this.observer = new IntersectionObserver(entries => {
if (entries[0].isIntersecting == true && this.captains == false) {
this.captains = true;
}
}, {threshold: [0]});
this.observer.observe(this.ref.nativeElement);
}
public startCaptainsAnimation(state = 1) {
this.clearTimeouts();
this.state = state;
this.timeouts.push(setTimeout(() => {
if(this.state < 3) {
this.startCaptainsAnimation(this.state + 1);
} else {
this.startCaptainsAnimation();
}
}, 6000));
}
private clearTimeouts() {
this.timeouts.forEach(timeout => {
clearTimeout(timeout);
});
}
private getPageContents() {
this.helper.getPageHelpContents(this.properties, 'monitor', this._router.url).subscribe(contents => {
this.pageContents = contents;
})
}
private getDivContents() {
this.helper.getDivHelpContents(this.properties, 'monitor', this._router.url).subscribe(contents => {
this.divContents = contents;
})
}
getNumbers(){
this.numberSubs.push(this._refineFieldResultsService.getRefineFieldsResultsByEntityName(["funder"],"project", this.properties).subscribe(
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 ){
if (data[1].length > 0 && data[1][0].filterId == "funder" && data[1][0].values) {
this.fundersSize = NumberUtils.roundNumber(data[1][0].values.length);
}
},
@ -115,75 +213,85 @@ export class HomeComponent {
//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);
data => {
if (data && data > 0) {
this.publicationsSize = NumberUtils.roundNumber(data);
}
));
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);
},
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 > 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);
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);
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;
this._stakeholderService.getStakeholders(this.properties.monitorServiceAPIURL).subscribe(
stakeholders => {
if (!stakeholders || stakeholders.length == 0) {
this.status = this.errorCodes.NONE;
} else {
this.stakeholders = [];
stakeholders.forEach(stakeholder => {
let index = (this.stakeholders.push(HelperFunctions.copy(stakeholder)) - 1);
this.setSizeOfStakeholder(index);
});
stakeholders.forEach(stakeholder => {
let index = (this.stakeholders.push(HelperFunctions.copy(stakeholder)) - 1);
this.setSizeOfStakeholder(index);
});
stakeholders.forEach(stakeholder => {
let index = (this.stakeholders.push(HelperFunctions.copy(stakeholder)) - 1);
this.setSizeOfStakeholder(index);
});
stakeholders.forEach(stakeholder => {
let index = (this.stakeholders.push(HelperFunctions.copy(stakeholder)) - 1);
this.setSizeOfStakeholder(index);
});
}
if(funders.length == 0) {
this.status = this.errorCodes.DONE;
return;
}
// this.sort(funders);
this.funders = funders;
this.loading = false;
},
error => {
@ -192,63 +300,31 @@ export class HomeComponent {
}
);
}
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 setSizeOfStakeholder(index) {
let mod = index % 9;
if(mod === 0 || mod === 4 || mod === 8) {
this.stakeholders[index].size = 'large';
console.log(this.stakeholders[index]);
} else if(mod === 1 || mod === 5 || mod === 6) {
this.stakeholders[index].size = 'small';
} else {
this.stakeholders[index].size = 'medium';
}
}
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);
}
public ngOnDestroy() {
if (this.piwiksub) {
this.piwiksub.unsubscribe();
}
this.clearTimeouts();
this.observer.disconnect();
}
private handleError(message: string, error): number {
var code = "";
if (!error.status) {
@ -257,9 +333,9 @@ export class HomeComponent {
} else {
code = error.status;
}
console.error("Communities (component): " + message, error);
return this.errorMessages.getErrorCode(code);
}
}

View File

@ -15,15 +15,13 @@ 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,BrowseModule, SearchResearchResultsServiceModule,
HelperModule, Schema2jsonldModule, SEOServiceModule, HomeRoutingModule, SearchResearchResultsServiceModule,
RefineFieldResultsServiceModule
],
declarations: [
@ -31,7 +29,7 @@ import {SearchResearchResultsServiceModule} from "../openaireLibrary/services/se
],
providers: [
FreeGuard, PreviousRouteRecorder,
PiwikService, StakeholderService
PiwikService
],
exports: [
HomeComponent

View File

@ -9,7 +9,7 @@ import {IsRouteEnabled} from "../openaireLibrary/error/isRouteEnabled.guard";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: LearnHowComponent, canActivate: [FreeGuard, IsRouteEnabled], canDeactivate: [PreviousRouteRecorder] }
{ path: '', component: LearnHowComponent, canActivate: [FreeGuard], canDeactivate: [PreviousRouteRecorder] }
])
]

View File

@ -0,0 +1,93 @@
.steps {
color: #666666;
}
.steps.uk-visible\@l {
position: relative;
height: 1600px;
width: 1100px;
margin: auto;
}
.steps.uk-visible\@l .first {
position: absolute;
top: 0;
left: 0;
width: 300px;
}
.steps.uk-visible\@l .first-arrow {
background-image: url("~assets/monitor-assets/about/arrow-1.svg");
background-size: contain;
background-repeat: no-repeat;
position: absolute;
top: 260px;
left: 270px;
width: 193px;
height: 177px;
}
.steps.uk-visible\@l .second {
position: absolute;
top: 225px;
left: 400px;
width: 300px;
}
.steps.uk-visible\@l .second-arrow {
background-image: url("~assets/monitor-assets/about/arrow-2.svg");
background-size: contain;
background-repeat: no-repeat;
position: absolute;
top: 510px;
left: 680px;
width: 125px;
height: 137px;
}
.steps.uk-visible\@l .third {
position: absolute;
top: 500px;
right: 0;
width: 300px;
}
.steps.uk-visible\@l .third-arrow {
background-image: url("~assets/monitor-assets/about/arrow-3.svg");
background-size: contain;
background-repeat: no-repeat;
position: absolute;
right: 200px;
bottom: 500px;
width: 161px;
height: 266px;
}
.steps.uk-visible\@l .forth {
position: absolute;
bottom: 320px;
left: 430px;
width: 300px;
}
.steps.uk-visible\@l .forth-arrow {
background-image: url("~assets/monitor-assets/about/arrow-4.svg");
background-size: contain;
background-repeat: no-repeat;
position: absolute;
left: 250px;
bottom: 150px;
width: 233px;
height: 178px;
}
.steps.uk-visible\@l .fifth {
position: absolute;
bottom: 0;
left: 0;
width: 300px;
}
.steps.uk-hidden\@l > div {
margin-bottom: 60px;
}

View File

@ -0,0 +1,137 @@
<schema2jsonld *ngIf="url" [URL]="url" [name]="pageTitle" type="other"></schema2jsonld>
<div class="uk-section">
<div class="uk-text-center">
<h1 class="uk-text-bold">See how it works</h1>
<div class="uk-text-large">Use the Monitor Dashboard to view your research results, open science…</div>
</div>
<div class="uk-margin-xlarge-top uk-container uk-container-large uk-text-justify">
<div class="steps uk-visible@l">
<div class="first">
<div class="uk-text-center uk-margin-small-bottom">
<img width="100" src="/assets/monitor-assets/about/1.png">
</div>
<div>
<h6 class="uk-text-bold">1. Provide us some information</h6>
<div>
You give us some simple (meta)data related to your organization function: e.g., funding database, repositories,
related projects, registry of people… All under confidential agreements.
</div>
</div>
</div>
<span class="first-arrow"></span>
<div class="second">
<div class="uk-text-center uk-margin-small-bottom">
<img width="165" src="/assets/monitor-assets/about/2.png">
</div>
<div>
<h6 class="uk-text-bold">2. We get the ball rolling</h6>
<div>
We ingest your data in our system and start the work: we clean and normalize your data, we identify and extract related information,
we infer links. We refine until we are happy of the results and present to you.
</div>
</div>
</div>
<span class="second-arrow"></span>
<div class="third">
<div class="uk-text-center uk-margin-small-bottom">
<img width="160" src="/assets/monitor-assets/about/3.png">
</div>
<div>
<h6 class="uk-text-bold">3. You validate</h6>
<div>
After the first iteration you examine our results to ensure you are satisfied with what you see. As numbers are important,
we advise you to take your time and tell us of any deviations. We correct, you check, you approve.
</div>
</div>
</div>
<span class="third-arrow"></span>
<div class="forth">
<div class="uk-text-center uk-margin-small-bottom">
<img width="400" src="/assets/monitor-assets/about/4.png">
</div>
<div>
<h6 class="uk-text-bold">4. You set up your portal</h6>
<div>
Using our admin panel you set up your portal. You decide what metrics are of interest to you (full documentation available).
You decide what you want to publish, what to keep private, what to share with colleagues.
</div>
</div>
</div>
<span class="forth-arrow"></span>
<div class="fifth">
<div class="uk-text-center uk-margin-small-bottom">
<img width="180" src="/assets/monitor-assets/about/5.png">
</div>
<div>
<h6 class="uk-text-bold">5. You track, monitor, report</h6>
<div>
Now your views are updated every two weeks, as new content and new providers join OpenAIRE. You are notified about new metrics and
indicators as we keep on enriching the OpenAIRE Research Graph and you may add them as they come along.
</div>
</div>
</div>
</div>
<div class="steps uk-margin-small-left uk-margin-small-right uk-hidden@l">
<div class="first">
<div class="uk-text-center uk-margin-small-bottom">
<img width="100" src="/assets/monitor-assets/about/1.png">
</div>
<div class="uk-width-expand">
<h6 class="uk-text-bold">1. Provide us some information</h6>
<div>
You give us some simple (meta)data related to your organization function: e.g., funding database, repositories,
related projects, registry of people… All under confidential agreements.
</div>
</div>
</div>
<div class="second">
<div class="uk-text-center uk-margin-small-bottom">
<img width="165" src="/assets/monitor-assets/about/2.png">
</div>
<div class="uk-width-expand">
<h6 class="uk-text-bold">2. We get the ball rolling</h6>
<div>
We ingest your data in our system and start the work: we clean and normalize your data, we identify and extract related information,
we infer links. We refine until we are happy of the results and present to you.
</div>
</div>
</div>
<div class="third">
<div class="uk-text-center uk-margin-small-bottom">
<img width="160" src="/assets/monitor-assets/about/3.png">
</div>
<div class="uk-width-expand">
<h6 class="uk-text-bold">3. You validate</h6>
<div>
After the first iteration you examine our results to ensure you are satisfied with what you see. As numbers are important,
we advise you to take your time and tell us of any deviations. We correct, you check, you approve.
</div>
</div>
</div>
<div class="forth">
<div class="uk-text-center uk-margin-small-bottom">
<img width="400" src="/assets/monitor-assets/about/4.png">
</div>
<div class="uk-width-expand">
<h6 class="uk-text-bold">4. You set up your portal</h6>
<div>
Using our admin panel you set up your portal. You decide what metrics are of interest to you (full documentation available).
You decide what you want to publish, what to keep private, what to share with colleagues.
</div>
</div>
</div>
<div class="fifth">
<div class="uk-text-center uk-margin-small-bottom">
<img width="180" src="/assets/monitor-assets/about/5.png">
</div>
<div class="uk-width-expand">
<h6 class="uk-text-bold">5. You track, monitor, report</h6>
<div>
Now your views are updated every two weeks, as new content and new providers join OpenAIRE. You are notified about new metrics and
indicators as we keep on enriching the OpenAIRE Research Graph and you may add them as they come along.
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -8,155 +8,20 @@ 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>-->
<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 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-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>
<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-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>
`
styleUrls: ['learn-how.component.css'],
templateUrl: 'learn-how.component.html',
})
export class LearnHowComponent {
public piwiksub: any;
public gifs: { "gif": string, "header": string, "text" }[] = [];
public pageContents = null;
public divContents = null;
public url: string = null;
public pageTitle: string = "OpenAIRE - Monitor | Learn How";
properties: EnvProperties;
constructor(
private route: ActivatedRoute,
private _router: Router,
@ -166,12 +31,11 @@ export class LearnHowComponent {
private _piwikService: PiwikService,
private helper: HelperService) {
}
public ngOnInit() {
this.route.data
.subscribe((data: { envSpecific: EnvProperties }) => {
this.properties = data.envSpecific;
if (this.properties.enablePiwikTrack && (typeof document !== 'undefined')) {
this.piwiksub = this._piwikService.trackView(this.properties, this.pageTitle, this.properties.piwikSiteId).subscribe();
}
@ -179,76 +43,42 @@ export class LearnHowComponent {
this.seoService.createLinkForCanonicalURL(this.url);
this.updateUrl(this.url);
this.updateTitle(this.pageTitle);
this.updateDescription("OpenAIRE - Monitor, Funders, Statistics, EC");
this.updateDescription("OpenAIRE - Monitor, Funders, Statistics, EC - Learn How");``
//this.getDivContents();
this.getPageContents();
//this.getPageContents();
});
this.createGifs();
}
private getPageContents() {
this.helper.getPageHelpContents(this.properties, 'monitor', this._router.url).subscribe(contents => {
this.pageContents = contents;
})
}
private getDivContents() {
this.helper.getDivHelpContents(this.properties, 'monitor', this._router.url).subscribe(contents => {
this.divContents = contents;
})
}
public ngOnDestroy() {
if (this.piwiksub) {
this.piwiksub.unsubscribe();
}
}
private createGifs() {
this.gifs.push({
gif: "assets/connect-assets/about/gifs/profile.gif",
header: "Profile",
text: "Edit community information, change logo url, add community managers or organizations related to community."
});
this.gifs.push({
gif: "assets/connect-assets/about/gifs/content.gif",
header: "Content",
text: "Manage projects, content providers, subjects and zenodo communities that are related to the research community."
});
this.gifs.push({
gif: "assets/connect-assets/about/gifs/statistics.gif",
header: "Statistics & Charts",
text: "Manage statistical numbers & charts that will be displayed in the community overview and graph analysis views."
});
this.gifs.push({
gif: "assets/connect-assets/about/gifs/links.gif",
header: "Links",
text: " Manage user claims related to the research community."
});
this.gifs.push({
gif: "assets/connect-assets/about/gifs/help.gif",
header: " Help texts",
text: "Add or edit help text in research community pages."
});
this.gifs.push({
gif: "assets/connect-assets/about/gifs/users.gif",
header: "Users",
text: "Invite more users to subscribe, manage community subscribers, your personal info and notification settings."
});
}
private updateDescription(description: string) {
this._meta.updateTag({content: description}, "name='description'");
this._meta.updateTag({content: description}, "property='og:description'");
}
private updateTitle(title: string) {
var _title = ((title.length > 50) ? title.substring(0, 50) : title);
this._title.setTitle(_title);
this._meta.updateTag({content: _title}, "property='og:title'");
}
private updateUrl(url: string) {
this._meta.updateTag({content: url}, "property='og:url'");
}

View File

@ -1,17 +0,0 @@
import {NgModule} from '@angular/core';
import {RouterModule} from '@angular/router';
import {FreeGuard} from '../../openaireLibrary/login/freeGuard.guard';
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {LearnInDepthComponent} from "./learn-in-depth.component";
import {IsRouteEnabled} from "../../openaireLibrary/error/isRouteEnabled.guard";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: LearnInDepthComponent, canActivate: [FreeGuard, IsRouteEnabled], canDeactivate: [PreviousRouteRecorder] }
])
]
})
export class LearnInDepthRoutingModule { }

View File

@ -1,279 +0,0 @@
import {Component} from '@angular/core';
import {ActivatedRoute, Router} from '@angular/router';
import {Meta, Title} from '@angular/platform-browser';
import {PiwikService} from '../../openaireLibrary/utils/piwik/piwik.service';
import {EnvProperties} from '../../openaireLibrary/utils/properties/env-properties';
import {HelperService} from "../../openaireLibrary/utils/helper/helper.service";
import {SEOService} from "../../openaireLibrary/sharedComponents/SEO/SEO.service";
@Component({
selector: 'learn-in-depth',
template: `
<schema2jsonld *ngIf="url" [URL]="url" [name]="pageTitle" type="other"></schema2jsonld>
<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
class="uk-background-norepeat uk-background-cover uk-section uk-padding-remove-bottom uk-section-overlap uk-position-relative uk-preserve-color"
style="min-height: calc(7.89999px + 60vh); background-image: url('assets/cloud/background.png') !important;">
<div class="uk-container uk-container-large uk-section uk-margin-top uk-padding-remove-top">
<div uk-grid>
<div class="uk-margin-large-top uk-width-3-4@m uk-width-1-1@s">
<h1 class="uk-width-3-4 uk-margin-medium-bottom">Lets set up a Gateway for your Community
<b>Together</b></h1>
<div class="uk-width-4-5@m uk-width-1-1@s uk-h5">
<div class="uk-margin-bottom">You dont have to go alone.</div>
<div>
We work with you in <b>4 collaborative steps</b> to identify your needs, putting in practice our
expertise on open science so you get the most out of OpenAIREs operational services.
</div>
</div>
</div>
<div class="uk-margin-large-top uk-width-expand">
<img width="308" height="285" src="assets/connect-assets/banner/together.png">
</div>
</div>
</div>
</div>
<div class="uk-container uk-container-large uk-section uk-padding-remove-top">
<ul class="uk-breadcrumb">
<li><a routerLinkActive="router-link-active" routerLink="/about">About</a></li>
<li><span class="active">Learn in-depth</span></li>
</ul>
<div uk-grid>
<div class="uk-width-1-6 uk-position-relative uk-flex uk-flex-column">
<img src="assets/connect-assets/about/1.png" class="uk-align-center" width="100px" height="100px">
<img src="assets/connect-assets/sketch_line_arrow.svg" class="uk-align-center">
</div>
<div class="uk-width-expand">
<div class="uk-margin-medium uk-text-bold uk-h4">1. Analyse your needs</div>
<i>Identify the scope and goals. Understand open science practices within EOSC and the OpenAIRE
services</i>
<p>
In this stage, you get to talk to the OpenAIRE team.
Share your expectations with us and let us give you all the details about the operational OpenAIRE
services, which will be integrated into the Gateway for your community.
</p>
<p>
Here are the most important questions that the OpenAIRE team will ask you, in order to understand your
scope and goals:
</p>
<ul class="uk-list uk-list-bullet">
<li>
Do you want a gateway, where researchers can have access to all research products of a discipline?
Do you want a gateway that gathers any research outcome, produced thanks to the funding and services
of a given research infrastructure?
</li>
<li>
Is your community (in)formally organized in sub-communities?
Would you like to browse research products and get statistics also for these sub-communities?
For example, the European Grid Infrastructure (EGI) features virtual organizations that represent
discipline-specific communities and/or specific research projects.
The research infrastructure DARIAH, on the other hand, is organised in national nodes (e.g.
DARIAH-IT, DARIAH-DE).
</li>
<li>
How can the OpenAIRE team identify the research products of your community, among all those
available in the OpenAIRE Graph?
Through a series of steps: set of keywords, acknowledgment statements, set of projects, set of
repositories, etc.
This can be partial and provisional information that will serve as a starting point to the OpenAIRE
team.
You will be able to refine and update this information, in the second phase Develop a pilot.
</li>
</ul>
</div>
</div>
<div uk-grid uk-height-match>
<div class="uk-width-1-6 uk-position-relative uk-flex uk-flex-column">
<img src="assets/connect-assets/about/2.png" class="uk-align-center" width="100px" height="100px">
<img src="assets/connect-assets/sketch_line_arrow.svg" class="uk-align-center">
</div>
<div class="uk-width-expand">
<div class="uk-margin-medium uk-text-bold uk-h4">2. Develop a pilot</div>
<i>We translate your needs into rules and processes and we configure operational OpenAIRE services.</i>
<p>
Based on the information gathered in phase 1 Analyse your needs, the OpenAIRE team will set up a
pilot Gateway.
We will configure the OpenAIRE mining algorithms to identify research products of the OpenAIRE Graph
that are relevant to your community.
Those, together with some basic statistics, will be available in the pilot version of the Community
Gateway that will be deployed on the OpenAIRE BETA infrastructure.
</p>
<p>
The OpenAIRE team will give you a demo of the Community Gateway, with details on how to refine and
update the configuration of the Community Gateway, both in terms of criteria for including research
products and in terms of logo and visible portal pages.
</p>
</div>
</div>
<div uk-grid uk-height-match>
<div class="uk-width-1-6 uk-position-relative uk-flex uk-flex-column">
<img src="assets/connect-assets/about/3.png" class="uk-align-center" width="100px" height="100px">
<img src="assets/connect-assets/sketch_line_arrow_large.svg" class="uk-align-center">
</div>
<div class="uk-width-expand">
<div class="uk-margin-medium uk-text-bold uk-h4">3. Test and Validate</div>
<i>You validate and test your new Community Gateway (portal). If needed, we further refine and adapt to
your needs</i>
<p>
Upon the completion of phase 2, take the time you need to test all its features, from search and
browse for research products, to addition/removal of statistics from the portal.
You can report any issue you might find and ask questions directly to the dedicated OpenAIRE team, via
a specially designed collaboration tool.
</p>
<p>
Typically, this phase takes some months, as you will have to go through certain procedures.
Change the configuration of the criteria to include research products, wait for the new configuration
to be applied on the OpenAIRE graph and validate the results, before you actually decide that the
coverage of research products for your community is adequate.
</p>
<p>
For some communities, the OpenAIRE team may also be able to implement dedicated mining algorithms
(e.g. to find acknowledgement statements to your community/infrastructure in the full-texts of
research articles) that may require several rounds of application, validation, and fine-tuning, before
it reaches a high precision and recall.
Your feedback is very important to minimize the effort and time needed for this process to complete.
</p>
<div class="uk-width-1-1 uk-text-center uk-margin-medium ">
<img src="assets/connect-assets/OpenAIRE-RCD_howtos.png" width="auto" height="auto">
</div>
</div>
</div>
<div uk-grid uk-height-match>
<div class="uk-width-1-6 uk-position-relative">
<img src="assets/connect-assets/about/4.png" class="uk-align-center" width="100px" height="100px">
</div>
<div class="uk-width-expand">
<div class="uk-margin-medium uk-text-bold uk-h4">4. Roll out the service</div>
<i>We jointly roll out your new portal. You take over the business operations and start engaging your
researchers</i>
<p>
Here we are: the coverage of research products is good, interesting statistics and charts have been
selected, and the portal pages available for end-users are ready.
We can roll out the Community Gateway and make it available to all the researchers of the community!
</p>
<p>
You, as a Community manager, become the main promoter of the Community Gateway.
Engage the researchers of your community and, when applicable, inform the managers of the research
infrastructure about the availability of tools for impact monitoring.
</p>
<p>
Remember that you will still be able to change the configuration of the Community Gateway in order to
address any issue that may arise and to follow the evolution of the community (e.g. a new project or a
new content provider that was not previously available in OpenAIRE).
</p>
<p>
Remember that you dont have to go alone: the dedicated issue tracker you used in the Test and
Validate phase is always available for you to contact the OpenAIRE team and ask for support.
</p>
</div>
</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-text-center uk-width-1-1@s uk-width-1-2@m">
<img width="329" height="250" src="assets/connect-assets/contact/2.png">
</div>
<div class="uk-width-expand">
<div class="uk-text-bold uk-h4">
<div>Let us help you develop a collaborative Open Science Gateway for your community. It is fast. It
is reliable.
</div>
</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" routerLink="/contact-us" routerLinkActive="router-link-active">
CONTACT
US</a>
</div>
</div>
</div>
</div>
</div>-->
</div>
`
})
export class LearnInDepthComponent {
public piwiksub: any;
public pageContents = null;
public divContents = null;
public url: string = null;
public pageTitle: string = "OpenAIRE - Connect | Learn In Depth";
properties: EnvProperties;
constructor(
private route: ActivatedRoute,
private _router: Router,
private _meta: Meta,
private _title: Title,
private seoService: SEOService,
private _piwikService: PiwikService,
private helper: HelperService) {
}
public ngOnInit() {
this.route.data
.subscribe((data: { envSpecific: EnvProperties }) => {
this.properties = data.envSpecific;
if (this.properties.enablePiwikTrack && (typeof document !== 'undefined')) {
this.piwiksub = this._piwikService.trackView(this.properties, this.pageTitle, this.properties.piwikSiteId).subscribe();
}
this.url = this.properties.baseLink + this._router.url;
this.seoService.createLinkForCanonicalURL(this.url);
this.updateUrl(this.url);
this.updateTitle(this.pageTitle);
this.updateDescription("OpenAIRE - Connect, Community Gateway, research community");
//this.getDivContents();
this.getPageContents();
});
}
private getPageContents() {
this.helper.getPageHelpContents(this.properties, 'monitor', this._router.url).subscribe(contents => {
this.pageContents = contents;
})
}
private getDivContents() {
this.helper.getDivHelpContents(this.properties, 'monitor', this._router.url).subscribe(contents => {
this.divContents = contents;
})
}
public ngOnDestroy() {
if (this.piwiksub) {
this.piwiksub.unsubscribe();
}
}
private updateDescription(description: string) {
this._meta.updateTag({content: description}, "name='description'");
this._meta.updateTag({content: description}, "property='og:description'");
}
private updateTitle(title: string) {
var _title = ((title.length > 50) ? title.substring(0, 50) : title);
this._title.setTitle(_title);
this._meta.updateTag({content: _title}, "property='og:title'");
}
private updateUrl(url: string) {
this._meta.updateTag({content: url}, "property='og:url'");
}
}

View File

@ -1,31 +0,0 @@
import { NgModule} from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterModule } from '@angular/router';
import {FreeGuard} from '../../openaireLibrary/login/freeGuard.guard';
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {PiwikService} from '../../openaireLibrary/utils/piwik/piwik.service';
import {LearnInDepthComponent} from "./learn-in-depth.component";
import {LearnInDepthRoutingModule} from "./learn-in-depth-routing.module";
import {HelperModule} from "../../openaireLibrary/utils/helper/helper.module";
import {IsRouteEnabled} from "../../openaireLibrary/error/isRouteEnabled.guard";
import {Schema2jsonldModule} from "../../openaireLibrary/sharedComponents/schema2jsonld/schema2jsonld.module";
import {SEOServiceModule} from "../../openaireLibrary/sharedComponents/SEO/SEOService.module";
@NgModule({
imports: [
CommonModule, RouterModule, LearnInDepthRoutingModule, HelperModule,
Schema2jsonldModule, SEOServiceModule
],
declarations: [
LearnInDepthComponent
],
exports: [
LearnInDepthComponent
],
providers:[
FreeGuard, PreviousRouteRecorder, PiwikService, IsRouteEnabled
]
})
export class LearnInDepthModule { }

View File

@ -1,17 +0,0 @@
import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';
import {FreeGuard} from '../openaireLibrary/login/freeGuard.guard';
import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {MonitorComponent} from "./monitor.component";
@NgModule({
imports: [
RouterModule.forChild([
{ path: ':stakeholder', component: MonitorComponent, canActivate: [FreeGuard], canDeactivate: [PreviousRouteRecorder] },
{ path: ':stakeholder/:topic', component: MonitorComponent, canActivate: [FreeGuard], canDeactivate: [PreviousRouteRecorder] },
{ path: ':stakeholder/:topic/:category', component: MonitorComponent, canActivate: [FreeGuard], canDeactivate: [PreviousRouteRecorder] },
{ path: ':stakeholder/:topic/:category/:subCategory', component: MonitorComponent, canActivate: [FreeGuard], canDeactivate: [PreviousRouteRecorder] }
])
]
})
export class MonitorRoutingModule { }

View File

@ -1,85 +0,0 @@
<schema2jsonld [URL]="properties.baseLink"
[logoURL]="properties.baseLink+'/assets/common-assets/logo-small-monitor.png'" type="home"
name="OpenAIRE Monitor">
</schema2jsonld>
<div
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 *ngIf="status === errorCodes.LOADING" class="uk-animation-fade uk-margin-top uk-width-1-1" role="alert">
<span class="loading-gif uk-align-center"></span>
</div>
<div *ngIf="stakeholder && status === errorCodes.DONE && activeTopic"
class="uk-background-primary uk-light uk-padding-small">
<div class="uk-flex uk-flex-middle topic-nav" uk-grid>
<div class="uk-width-1-5@m uk-margin-left">
<span class="uk-text-bold uk-h4">{{stakeholder.index_name}}</span><br>
<span class="uk-h5">Monitor Dashboard</span>
</div>
<nav class="uk-width-3-5@m uk-navbar" uk-navbar>
<div class="uk-navbar-center">
<ul class="uk-navbar-nav">
<ng-template ngFor [ngForOf]="stakeholder.topics" let-topic let-i="index">
<li *ngIf="topic.isPublic && topic.isActive"
[ngClass]="(topic.alias === activeTopic.alias)?'uk-active':''">
<a (click)="navigateTo(stakeholder.alias, topic.alias)">{{topic.name}}</a>
</li>
</ng-template>
</ul>
</div>
</nav>
</div>
</div>
<div uk-grid>
<sidebar [menuItems]="sideMenuItems" class="uk-width-1-5 sidebar"></sidebar>
<div *ngIf="activeSubCategory"
class="uk-width-expand uk-background-muted uk-padding uk-text-center@s uk-text-left@m">
<h5 class="uk-margin-bottom uk-text-bold">Indicators</h5>
<div class="uk-grid-medium uk-margin-bottom" uk-grid uk-height-match="target: div > h6">
<ng-template ngFor [ngForOf]="activeSubCategory.numbers" let-number let-i="index">
<div *ngIf="number.isActive && number.isPublic"
[class.uk-width-1-3@m]="number.width === 'small'"
[class.uk-width-1-2@m]="number.width === 'medium'"
[class.uk-width-1-1@m]="number.width === 'large'">
<div class="uk-card uk-card-default uk-box-shadow-large uk-padding-small" [attr.uk-tooltip]="number.description">
<h6>{{number.name}}</h6>
<div class="uk-h2" *ngIf="numberResults.get(i)">
{{numberResults.get(i)|number}}
</div>
<div *ngIf="!numberResults.get(i)" class="uk-animation-fade uk-width-1-1" role="alert">
<span class="loading-gif uk-align-center"></span>
</div>
</div>
</div>
</ng-template>
</div>
<div class="uk-grid-medium uk-margin-bottom" uk-grid uk-height-match="target: div > h5">
<ng-template ngFor [ngForOf]="activeSubCategory.charts" let-chart let-i="index">
<div *ngIf="chart.isActive && chart.isPublic"
[class.uk-width-1-3@m]="chart.width === 'small'"
[class.uk-width-1-2@m]="chart.width === 'medium'"
[class.uk-width-1-1@m]="chart.width === 'large'">
<div>
<h5 class="uk-margin-bottom uk-margin-top">{{chart.name}}</h5>
<div class="uk-card uk-card-default uk-box-shadow-large uk-padding-small" [attr.uk-tooltip]="chart.description">
<div *ngIf="chart.indicatorPaths.length > 1" class="uk-button-group">
<button *ngFor="let indicatorPath of chart.indicatorPaths;"
class="uk-button"
(click)="setActiveChart(i, indicatorPath.type)"
[class.uk-button-secondary]="chartsActiveType.get(i).url === indicatorPath.url">
{{indicatorPath.type}}
</button>
</div>
<iframe *ngIf="chartsActiveType.get(i).source !== 'fake'"
[src]="getUrlByStakeHolder(chartsActiveType.get(i))"
class="uk-width-1-1 uk-height-medium"></iframe>
<img *ngIf="chartsActiveType.get(i).source === 'fake'"
[src]="getUrlByStakeHolder(chartsActiveType.get(i))"
class="uk-width-1-1 uk-height-medium">
</div>
</div>
</div>
</ng-template>
</div>
</div>
</div>
</div>

View File

@ -1,228 +0,0 @@
import {Component} from '@angular/core';
import {ActivatedRoute, Params, Router} from '@angular/router';
import {DomSanitizer, Meta, Title} from '@angular/platform-browser';
import {EnvProperties} from '../openaireLibrary/utils/properties/env-properties';
import {PiwikService} from '../openaireLibrary/utils/piwik/piwik.service';
import {StringUtils} from '../openaireLibrary/utils/string-utils.class';
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 {Category, IndicatorPath, Stakeholder, SubCategory, Topic} from "../utils/entities/stakeholder";
import {MenuItem, RootMenuItem, SideMenuItem} from "../openaireLibrary/sharedComponents/menu";
import {StatisticsService} from "../utils/services/statistics.service";
@Component({
selector: 'monitor',
templateUrl: 'monitor.component.html',
})
export class MonitorComponent {
public piwiksub: any;
public pageContents = null;
public divContents = null;
public status: number;
public loading: boolean = true;
public activeTopic: Topic = null;
public activeCategory: Category = null;
public activeSubCategory: SubCategory = null;
public sideMenuItems: SideMenuItem[] = null;
public errorCodes: ErrorCodes;
public stakeholder: Stakeholder;
public numberResults: Map<number, number> = new Map<number, number>();
public chartsActiveType: Map<number, IndicatorPath> = new Map<number, IndicatorPath>();
private errorMessages: ErrorMessagesComponent;
properties: EnvProperties;
constructor(
private route: ActivatedRoute,
private _router: Router,
private _meta: Meta,
private _title: Title,
private _piwikService: PiwikService,
private helper: HelperService,
private stakeholderService: StakeholderService,
private statisticsService: StatisticsService,
private seoService: SEOService,
private sanitizer: DomSanitizer) {
this.errorCodes = new ErrorCodes();
this.errorMessages = new ErrorMessagesComponent();
this.status = this.errorCodes.LOADING;
}
public ngOnInit() {
this.route.data
.subscribe((data: { envSpecific: EnvProperties }) => {
this.route.params.subscribe(params => {
this.properties = data.envSpecific;
var url = data.envSpecific.baseLink + this._router.url;
if (!this.stakeholder || this.stakeholder.index_id !== params['stakeholder']) {
this.status = this.errorCodes.LOADING;
this.numberResults= new Map<number, number>();
this.chartsActiveType = new Map<number, IndicatorPath>();
this.stakeholderService.getStakeholder(params['stakeholder']).subscribe(stakeholder => {
this.stakeholder = stakeholder;
this.seoService.createLinkForCanonicalURL(url, false);
this._meta.updateTag({content: url}, "property='og:url'");
var description = "Monitor Dashboard | " + this.stakeholder.index_name;
var title = "Monitor Dashboard | " + this.stakeholder.index_shortName;
this._meta.updateTag({content: description}, "name='description'");
this._meta.updateTag({content: description}, "property='og:description'");
this._meta.updateTag({content: title}, "property='og:title'");
this._title.setTitle(title);
if (this.properties.enablePiwikTrack && (typeof document !== 'undefined')) {
this.piwiksub = this._piwikService.trackView(this.properties, title, this.properties.piwikSiteId).subscribe();
}
//this.getDivContents();
this.getPageContents();
this.status = this.errorCodes.DONE;
this.setView(params);
}, error => {
this.navigateToError();
})
} else {
this.setView(params);
}
});
});
}
private getPageContents() {
this.helper.getPageHelpContents(this.properties, 'monitor', this._router.url).subscribe(contents => {
this.pageContents = contents;
})
}
private getDivContents() {
this.helper.getDivHelpContents(this.properties, 'monitor', this._router.url).subscribe(contents => {
this.divContents = contents;
})
}
private setView(params: Params) {
if (params && params['topic']) {
this.activeTopic = this.stakeholder.topics.filter(topic => topic.alias === decodeURIComponent(params['topic']))[0];
if (this.activeTopic) {
if (params['category']) {
this.activeCategory = this.activeTopic.categories.filter(category =>
(category.alias === params['category']) && category.isPublic && category.isActive)[0];
} else {
let category: Category = this.activeTopic.categories[0];
this.navigateTo(this.stakeholder.alias, this.activeTopic.alias, category.alias);
return;
}
if (this.activeCategory) {
if (params['subCategory']) {
this.activeSubCategory = this.activeCategory.subCategories.filter(subCategory =>
(subCategory.alias === params['subCategory'] && subCategory.isPublic && subCategory.isActive))[0];
} else {
this.activeSubCategory = this.activeCategory.subCategories.filter(subCategory =>
!subCategory.alias && subCategory.isPublic && subCategory.isActive)[0];
}
if (this.activeSubCategory) {
this.setSideBar();
this.setIndicators();
return;
} else {
let subCategory: SubCategory = this.activeCategory.subCategories.filter( subCategory =>
subCategory.isPublic && subCategory.isActive)[0];
this.navigateTo(this.stakeholder.alias, this.activeTopic.alias, this.activeCategory.alias, subCategory.alias);
return;
}
}
}
this.navigateToError();
} else {
let topic: Topic = this.stakeholder.topics[0];
let category: Category = topic.categories.filter(category => category.isPublic && category.isActive)[0];
this.navigateTo(this.stakeholder.alias, topic.alias, category.alias);
}
}
private setSideBar() {
this.sideMenuItems = [];
this.activeTopic.categories.forEach(category => {
if (category.isPublic && category.isActive) {
let rootItem: MenuItem = new MenuItem(category.alias, category.name, null, (
'/monitor/' + this.stakeholder.alias + '/' + this.activeTopic.alias + '/' + category.alias),
false, null, null, null);
let items: RootMenuItem[] = [];
category.subCategories.forEach(subCategory => {
if (subCategory.alias != null && subCategory.isPublic && subCategory.isActive) {
items.push({
items: [],
rootItem: new MenuItem(subCategory.alias, subCategory.name, null, (
'/monitor/' + this.stakeholder.alias + '/' + this.activeTopic.alias + '/' + category.alias + '/' + subCategory.alias),
false, null, null, null)
});
}
});
this.sideMenuItems.push({
rootItem: rootItem,
items: items,
ukIcon: null
});
}
});
}
private setIndicators() {
let urls: Map<string, number[]> = new Map<string, number[]>();
this.activeSubCategory.numbers.forEach((number, index) => {
if(number.isActive && number.isPublic) {
const pair = JSON.stringify([number.indicatorPaths[0].source, number.indicatorPaths[0].url]);
const indexes = urls.get(pair) ? urls.get(pair) : [];
indexes.push(index);
urls.set(pair, indexes);
}
});
urls.forEach((indexes, pair) => {
pair = JSON.parse(pair);
this.statisticsService.getNumbers(pair[0], pair[1]).subscribe( response => {
indexes.forEach( index => {
let result = JSON.parse(JSON.stringify(response));
this.activeSubCategory.numbers[index].indicatorPaths[0].jsonPath.forEach(jsonPath => {
result = result[jsonPath];
});
this.numberResults.set(index, result);
});
})
});
this.activeSubCategory.charts.forEach((chart, index) => {
if (chart.indicatorPaths.length > 0) {
this.chartsActiveType.set(index, chart.indicatorPaths[0]);
}
});
}
public getUrlByStakeHolder(indicatorPath: IndicatorPath) {
return this.sanitizer.
bypassSecurityTrustResourceUrl(this.statisticsService.getChartUrl(indicatorPath.source, indicatorPath.url));
}
public setActiveChart(index, type: string) {
this.chartsActiveType.set(index, this.activeSubCategory.charts[index].indicatorPaths.filter(indicatorPath => indicatorPath.type === type)[0]);
}
private navigateToError() {
this._router.navigate(['/error'], {queryParams: {'page': this._router.url}});
}
public navigateTo(stakeholder: string, topic: string, category: string = null, subcategory: string = null) {
let url = 'monitor/' + stakeholder + '/' + topic + ((category) ? ('/'
+ category) : '') + ((subcategory) ? ('/' + subcategory) : '');
return this._router.navigate([url]);
}
public quote(param: string): string {
return StringUtils.quote(param);
}
public ngOnDestroy() {
if (this.piwiksub) {
this.piwiksub.unsubscribe();
}
}
}

View File

@ -1,38 +0,0 @@
import {NgModule} from '@angular/core';
import {CommonModule} from '@angular/common';
import {FormsModule} from '@angular/forms';
import {RouterModule} from '@angular/router';
import {FreeGuard} from '../openaireLibrary/login/freeGuard.guard';
import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {PiwikService} from '../openaireLibrary/utils/piwik/piwik.service';
import {ErrorMessagesModule} from '../openaireLibrary/utils/errorMessages.module';
import {HelperModule} from "../openaireLibrary/utils/helper/helper.module";
import {Schema2jsonldModule} from "../openaireLibrary/sharedComponents/schema2jsonld/schema2jsonld.module";
import {SEOServiceModule} from "../openaireLibrary/sharedComponents/SEO/SEOService.module";
import {MonitorRoutingModule} from "./monitor-routing.module";
import {MonitorComponent} from "./monitor.component";
import {StakeholderService} from "../services/stakeholder.service";
import {SideBarModule} from "../openaireLibrary/sharedComponents/sidebar/sideBar.module";
import {StatisticsService} from "../utils/services/statistics.service";
@NgModule({
imports: [
CommonModule, FormsModule, RouterModule, ErrorMessagesModule,
HelperModule, Schema2jsonldModule, SEOServiceModule, MonitorRoutingModule, SideBarModule
],
declarations: [
MonitorComponent
],
providers: [
FreeGuard, PreviousRouteRecorder,
PiwikService, StakeholderService,
StatisticsService
],
exports: [
MonitorComponent
]
})
export class MonitorModule {
}

View File

@ -1,14 +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";
import {SearchStakeholdersComponent} from "./search-stakeholders.component";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: SearchFundersComponent, canDeactivate: [PreviousRouteRecorder] }
{ path: '', component: SearchStakeholdersComponent, canDeactivate: [PreviousRouteRecorder] }
])
]
})
export class SearchFundersRoutingModule { }
export class SearchStakeholdersRoutingModule { }

View File

@ -12,7 +12,7 @@ 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";
import {StakeholderService} from "../openaireLibrary/monitor/services/stakeholder.service";
@Component({
selector: 'search-funders',
@ -30,7 +30,7 @@ import {StakeholderService} from "../services/stakeholder.service";
</search-page>
`
})
export class SearchFundersComponent {
export class SearchStakeholdersComponent {
public piwikSiteId = null;
private errorCodes: ErrorCodes;
private errorMessages: ErrorMessagesComponent;
@ -61,7 +61,7 @@ export class SearchFundersComponent {
.subscribe((data: { envSpecific: EnvProperties }) => {
this.properties = data.envSpecific;
this.piwikSiteId = this.properties.piwikSiteId;
this.baseUrl = "/search/find/funders";
this.baseUrl = "/search/find/stakeholders";
});
this.sub = this.route.queryParams.subscribe(params => {
this.searchPage.resultsPerPage = 10;
@ -100,12 +100,12 @@ export class SearchFundersComponent {
}
/**
* Initialize funders from Communities APIs
* Initialize stakeholders from Communities APIs
*
* @param params
*/
private initFunders(params: Map<string, string>) {
this.subResults = this._stakeholderService.mockgetFunders().subscribe(
this.subResults = this._stakeholderService.getStakeholders(this.properties.monitorServiceAPIURL).subscribe(
data => {
if(!data){
return;
@ -122,13 +122,13 @@ export class SearchFundersComponent {
}else{
data[i]["jurisdictionLogo"] = "";
}
this.totalResults[i] = data[i];
// this.totalResults[i] = data[i];
}
this._getResults(params);
},
err => {
this.handleError('Error getting funders', err);
this.handleError('Error getting stakeholders', err);
this.searchUtils.status = this.errorMessages.getErrorCode(err.status);
this.disableForms = false;
HelperFunctions.scroll();
@ -138,7 +138,7 @@ export class SearchFundersComponent {
/**
* Get all funders from mock API and apply permission access validator,
* Get all stakeholders from mock API and apply permission access validator,
* keyword searching, filter, paging and sorting.
*
* @param params, status
@ -156,7 +156,7 @@ export class SearchFundersComponent {
}
/**
* Return the funders in which user has permission to view or manage.
* Return the stakeholders in which user has permission to view or manage.
*/
private showFunders() {
let ret = [];

View File

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

View File

@ -1,35 +0,0 @@
import {Injectable} from "@angular/core";
import {HttpClient} from "@angular/common/http";
import {BehaviorSubject, Observable} from "rxjs";
import {Indicator, Stakeholder} from "../utils/entities/stakeholder";
import {map} from "rxjs/operators";
@Injectable()
export class StakeholderService {
constructor(private http: HttpClient) {
}
getStakeholder(alias: string): Observable<Stakeholder> {
/*return this.http.get<any>('./assets/stakeholders.json').pipe(map(json => {
let stakeholder = json.stakeholders.filter(stakeholder => stakeholder.alias === alias)[0];
if (stakeholder) {
stakeholder.topics = stakeholder.topics.filter(topic => topic.isActive && topic.isPublic);
return stakeholder;
} else {
throw new HttpErrorResponse({
error: {
message: 'No Stakeholder has been found',
status: 404
}
})
}
}));*/
return new BehaviorSubject<Stakeholder>(Stakeholder.createECStakeholder()).asObservable();
}
mockgetFunders(): any {
return this.http.get('./assets/funders.json') ;
}
}

View File

@ -1,346 +0,0 @@
export class Stakeholder {
id: string;
type: string;
index_id;
index_name: string;
index_shortName:string;
alias: string;
isDefaultProfile: boolean;
isActive: boolean;
isPublic: boolean;
creationDate: string;
updateDate: string;
managers: string[];
topics:Topic[];
constructor( id: string, type: string, index_id, index_name: string, index_shortName:string , isDefaultProfile: boolean, alias:string , isActive: boolean, isPublic: boolean){
this.id = id;
this.type = type;
this.index_id = index_id;
this.index_name = index_name;
this.index_shortName = index_shortName;
this.isDefaultProfile = isDefaultProfile;
this.alias = alias;
this.isActive = isActive;
this.isPublic = isPublic;
this.topics =[];
this.managers =[];
}
static createECStakeholder():Stakeholder{
let ec:Stakeholder = new Stakeholder("ec","funder","ec__________::EC","European Commission","EC",false,"ec",true,true);
// new Stakeholder('wt','funder','wt__________::WT','Wellcome Trust','WT',false, 'wt',true,true);
ec.topics.push(ec.createOSTopic(ec));
ec.topics.push(ec.createImpactTopic());
ec.topics.push(ec.createCollaborationTopic());
return ec;
}
createOSTopic(stakeholder:Stakeholder):Topic{
let topic = new Topic("OpenScience","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do...","open-science",true,true);
/* let overview:Category = new Category("Overview","","overview",true,true);
topic.categories.push(overview);
let overviewDefSub = new SubCategory(null, null,null,true, true);
overview.subCategories.push(overviewDefSub);*/
let pubCategory:Category = new Category("Publications","","publications",true,true);
topic.categories.push(pubCategory);
let pubDefSub = new SubCategory(null, null,null,true, true);
pubCategory.subCategories.push(pubDefSub);
/* let pubOpenSub = new SubCategory("Openess","","openness",true,true);
pubCategory.subCategories.push(pubOpenSub);
let pubFundingSub = new SubCategory("Funding","","funding",true,true);
pubCategory.subCategories.push(pubFundingSub);
let pubDatasourceSub = new SubCategory("Content Providers","","content-providers",true,true);
pubCategory.subCategories.push(pubDatasourceSub);
let pubDocTypeSub = new SubCategory("Document Type","","doc-type",true,true);
pubCategory.subCategories.push(pubDocTypeSub);
let pubFindSub = new SubCategory("Findability","","dindability",true,true);
pubCategory.subCategories.push(pubFindSub);*/
let dataCategory:Category = new Category("Research data","","data",true,true);
topic.categories.push(dataCategory);
let dataDefSub = new SubCategory(null, null,null,true, true);
dataCategory.subCategories.push(dataDefSub);
let softwareCategory:Category = new Category("Software","","software",true,true);
topic.categories.push(softwareCategory);
let softDefSub = new SubCategory(null, null,null,true, true);
softwareCategory.subCategories.push(softDefSub);
let otherCategory:Category = new Category("Other research products","","other",true,true);
topic.categories.push(otherCategory);
let otherDefSub = new SubCategory(null, null,null,true, true);
otherCategory.subCategories.push(otherDefSub);
/* let datasourceCategory:Category = new Category("Content Providers","","content-providers",true,true);
topic.categories.push(datasourceCategory);
let datasourceDefSub = new SubCategory(null, null,null,true, true);
datasourceCategory.subCategories.push(datasourceDefSub);*/
let projectCategory:Category = new Category("Projects","","projects",true,true);
topic.categories.push(projectCategory);
let projectDefSub = new SubCategory(null, null,null,true, true);
projectCategory.subCategories.push(projectDefSub);
//Numbers
let n_total_pubs = new Indicator("Publications",null, "number","small",true, true, [new IndicatorPath(null, "statistics","/funders/"+stakeholder.id, ["statistics","publications"])]);
let n_open_pubs = new Indicator("OA Publications",null, "number","small",true, true, [new IndicatorPath(null, "statistics","/funders/"+stakeholder.id, ["statistics","open_access"])]);
let n_total_projects = new Indicator("Projects",null, "number","small",true, true, [new IndicatorPath(null, "statistics","/funders/"+stakeholder.id, ["statistics","total_projects"])]);
let n_total_data = new Indicator("Reserach data",null, "number","small",true, true, [new IndicatorPath(null, "search",
"/datasets/count?fq="+(encodeURIComponent("relfunderid exact "+stakeholder.index_id))+"&format=json", ["total"])]);
let n_total_soft = new Indicator("Software",null, "number","small",true, true, [new IndicatorPath(null, "search",
"/software/count?fq="+(encodeURIComponent("relfunderid exact "+stakeholder.index_id))+"&format=json", ["total"])]);
let n_total_other = new Indicator("Other research products",null, "number","small",true, true, [new IndicatorPath(null, "search",
"/other/count?fq="+(encodeURIComponent("relfunderid exact "+stakeholder.index_id))+"&format=json", ["total"])]);
/*overviewDefSub.numbers.push(n_total_pubs);
overviewDefSub.numbers.push(n_open_pubs);
overviewDefSub.numbers.push(n_total_projects);
overviewDefSub.numbers.push(n_total_data);
overviewDefSub.numbers.push(n_total_soft);
overviewDefSub.numbers.push(n_total_other);*/
pubDefSub.numbers.push(n_total_pubs);
pubDefSub.numbers.push(n_open_pubs);
softDefSub.numbers.push(n_total_soft);
dataDefSub.numbers.push(n_total_data);
otherDefSub.numbers.push(n_total_other);
projectDefSub.numbers.push(n_total_projects);
//Charts
let c_pubs_per_project = new Indicator("Which are the top "+stakeholder.index_shortName+" projects?",null, "chart","large",true, true, [
new IndicatorPath("bar", "old","chart.php?com=query&data="+encodeURIComponent('{"table":"result","fields":[{"fld":"number","agg":"count","type":"bar","yaxis":1,"c":false}],"xaxis":{"name":"result_projects-project-acronym","agg":"avg"},"group":"","color":"","type":"chart","size":30,"sort":"count-number","yaxisheaders":[""],"fieldsheaders":["publications"],"in":[],"filters":[{"name":"result_projects-project-funder","values":["'+stakeholder.index_name+'"],"to":"-1"},{"name":"type","values":["publication"],"to":"-1"}],"having":[],"xStyle":{"r":"-","s":"-","l":"-","ft":"-","wt":"-"},"title":"Publications per project (top 30)","subtitle":"","xaxistitle":"project","order":"d"}'), null)]);
pubDefSub.charts.push(c_pubs_per_project);
//TO check
let c_pubs_per_datasource = new Indicator("Which are the top repositories containing "+stakeholder.index_shortName+" research outputs?",null, "chart","small",false,
true, [new IndicatorPath("column", "old", "chart.php?com=query&data="+encodeURIComponent('{"table":"result","fields":[{"fld":"number","agg":"count","type":"column","yaxis":1,"c":false}],"xaxis":{"name":"result_datasources-datasource-name","agg":"avg"},"group":"","color":"","type":"chart","size":"20","sort":"count-number","yaxisheaders":[""],"fieldsheaders":["publications"],"in":[],"filters":[{"name":"type","values":["publication"],"to":"-1"},{"name":"result_projects-project-funder","values":["'+stakeholder.index_name+'"],"to":"-1"},{"name":"result_datasources-datasource-type","exvalues":["Publication Catalogue"]}],"having":[],"xStyle":{"r":-90,"s":"-","l":"-","ft":10,"wt":"-"},"title":"Publications by content provider (top 20)","subtitle":"","xaxistitle":"content providers","order":"d"}'), null)]);
pubDefSub.charts.push(c_pubs_per_datasource);
let c_pubs_per_doc_type = new Indicator("In what type of documents do your researchers used to publish?",null, "chart","small",true, true,
[new IndicatorPath("bar", "stats-tool", "chart?json="+encodeURIComponent('{"library":"HighCharts","chartDescription":{"colors":["#42a5f5","#26a69a","#90ed7d","#607d8b","#00838f","#689f38","#e4d354","#2b908f","#546e7a","#01579"],"queries":[{"name":"Data","type":"bar","query":{"select":[{"field":"result","aggregate":"count"},{"field":"result.classification","aggregate":null}],"filters":[{"groupFilters":[{"field":"result.project.funder","type":"=","values":["'+stakeholder.index_name+'"]},{"field":"result.type","type":"=","values":["publication"]}],"op":"AND"}],"entity":"result","profile":"OpenAIRE original","limit":"0"}}],"chart":{"backgroundColor":"#FFFFFFFF","borderColor":"#335cadff","borderRadius":0,"borderWidth":0,"plotBorderColor":"#ccccccff","plotBorderWidth":0},"title":{"text":"publications"},"subtitle":{"text":"per document type"},"yAxis":{"title":{"text":"Publications"}},"xAxis":{"title":{"text":"Document Type"}},"lang":{"noData":"No Data available for the Query"},"exporting":{"enabled":true},"plotOptions":{"series":{"dataLabels":{"enabled":false}}},"legend":{"enabled":false,"align":"center","verticalAlign":"bottom","layout":"horizontal"},"credits":{"href":null,"enabled":true,"text":"Created by OpenAIRE via HighCharts"}}}'), null)]);
pubDefSub.charts.push(c_pubs_per_doc_type);
let c_pubs_funding_scheme = new Indicator("What is the percentage publications by funding scheme / programme?",null, "chart","small",true,
true, [new IndicatorPath("bar", "stats-tool", "chart?json="+encodeURIComponent('{"library":"HighCharts","chartDescription":{"colors":["#42a5f5","#26a69a","#90ed7d","#607d8b","#00838f","#689f38","#e4d354","#2b908f","#546e7a","#01579"],"queries":[{"name":"Open Access","type":"bar","query":{"select":[{"field":"result","aggregate":"count"},{"field":"result.project.funding level 1","aggregate":null}],"filters":[{"groupFilters":[{"field":"result.project.funder","type":"=","values":["'+stakeholder.index_name+'"]},{"field":"result.project.funding level 0","type":"=","values":["H2020"]},{"field":"result.type","type":"=","values":["publication"]},{"field":"result.access mode","type":"=","values":["Open Access"]}],"op":"AND"}],"entity":"result","profile":"OpenAIRE original","limit":"0"}},{"name":"Total","type":"bar","query":{"select":[{"field":"result","aggregate":"count"},{"field":"result.project.funding level 1","aggregate":null}],"filters":[{"groupFilters":[{"field":"result.project.funder","type":"=","values":["'+stakeholder.index_name+'"]},{"field":"result.type","type":"=","values":["publication"]}],"op":"AND"}],"entity":"result","profile":"OpenAIRE original","limit":"0"}}],"chart":{"backgroundColor":"#FFFFFFFF","borderColor":"#335cadff","borderRadius":0,"borderWidth":0,"plotBorderColor":"#ccccccff","plotBorderWidth":0},"title":{"text":"Publications"},"subtitle":{"text":"by funding scheme"},"yAxis":{"title":{"text":"Publications"}},"xAxis":{"title":{"text":"Funding scheme"}},"lang":{"noData":"No Data available for the Query"},"exporting":{"enabled":true},"plotOptions":{"series":{"dataLabels":{"enabled":false}}},"legend":{"enabled":true,"align":"center","verticalAlign":"bottom","layout":"horizontal"},"credits":{"href":null,"enabled":true,"text":"Created by OpenAIRE via HighCharts"}}}'), null)]);
pubDefSub.charts.push(c_pubs_funding_scheme);
/* //TODO check why doesn't load
let c_pubs_gg_funding_scheme = new Indicator("What is the percentage of green and gold publications by funding scheme / programme?",null, "chart","medium",true,
true, [new IndicatorPath("bar", "stats-tool", "chart?json="+encodeURIComponent('{"library":"HighCharts","chartDescription":{"colors":["#42a5f5","#26a69a","#90ed7d","#607d8b","#00838f","#689f38","#e4d354","#2b908f","#546e7a","#01579"],"queries":[{"name":"Gold","color":"#f8b500","type":"bar","query":{"select":[{"field":"result","aggregate":"count"},{"field":"result.project.funding level 1","aggregate":null}],"filters":[{"groupFilters":[{"field":"result.project.funder","type":"=","values":["'+stakeholder.index_name+'"]},,{"field":"result.type","type":"=","values":["publication"]},{"field":"result.access mode","type":"=","values":["Open Access"]}],"op":"AND"},{"groupFilters":[{"field":"result.datasource.type","type":"=","values":["Journal"]},{"field":"result.datasource.type","type":"=","values":["Journal Aggregator/Publisher"]}],"op":"OR"}],"entity":"result","profile":"OpenAIRE original","limit":"0"}},{"name":"Green","color":"#239d60","type":"bar","query":{"select":[{"field":"result","aggregate":"count"},{"field":"result.project.funding level 1","aggregate":null}],"filters":[{"groupFilters":[{"field":"result.project.funder","type":"=","values":["'+stakeholder.index_name+'"]},{"field":"result.project.funding level 0","type":"=","values":["H2020"]},{"field":"result.type","type":"=","values":["publication"]},{"field":"result.access mode","type":"=","values":["Open Access"]}],"op":"AND"},{"groupFilters":[{"field":"result.datasource.type","type":"=","values":["Institutional Repository"]},{"field":"result.datasource.type","type":"=","values":["Thematic Repository"]}],"op":"OR"}],"entity":"result","profile":"OpenAIRE original","limit":"0"}}],"chart":{"backgroundColor":"#FFFFFFFF","borderColor":"#335cadff","borderRadius":0,"borderWidth":0,"plotBorderColor":"#ccccccff","plotBorderWidth":0},"title":{"text":"H2020 green and gold publications"},"subtitle":{"text":"by funding scheme"},"yAxis":{"title":{"text":"Publications"}},"xAxis":{"title":{"text":"Funding scheme"}},"lang":{"noData":"No Data available for the Query"},"exporting":{"enabled":true},"plotOptions":{"series":{"dataLabels":{"enabled":false}}},"legend":{"enabled":true,"align":"center","verticalAlign":"bottom","layout":"horizontal"},"credits":{"href":null,"enabled":true,"text":"Created by OpenAIRE via HighCharts"}}}'), null)]);
//pubDefSub.charts.push(c_pubs_gg_funding_scheme);
*/
let c_pubs_open = new Indicator("Open Access publications timeline",null, "chart","small",true, true,
[new IndicatorPath("column", "stats-tool", "chart?json="+encodeURIComponent('{"library":"HighCharts","chartDescription":{"queries":[{"name":"OA publications","type":"column","query":{"select":[{"field":"publication","aggregate":"count"},{"field":"publication.year","aggregate":null}],"filters":[{"groupFilters":[{"field":"publication.access mode","type":"=","values":["Open Access"]}],"op":"AND"},{"groupFilters":[{"field":"publication.year","type":">=","values":["2000"]},{"field":"publication.year","type":"<=","values":["2019"]}],"op":"AND"},{"groupFilters":[{"field":"publication.project.funder","type":"=","values":["'+stakeholder.index_name+'"]}],"op":"AND"}],"entity":"publication","profile":"OpenAIRE All-inclusive","limit":"30"}}],"chart":{"backgroundColor":"#FFFFFFFF","borderColor":"#335cadff","borderRadius":0,"borderWidth":0,"plotBorderColor":"#ccccccff","plotBorderWidth":0},"title":{"text":"Open Access Publications"},"subtitle":{},"yAxis":{"title":{"text":"publications"}},"xAxis":{"title":{"text":"year"}},"lang":{"noData":"No Data available for the Query"},"exporting":{"enabled":false},"plotOptions":{"series":{"dataLabels":{"enabled":false}}},"legend":{"enabled":true,"align":"center","verticalAlign":"bottom","layout":"horizontal"},"credits":{"href":null,"enabled":true,"text":"Created by OpenAIRE via HighCharts"}}}'), null)]);
pubDefSub.charts.push(c_pubs_open);
let c_pubs_access_modes = new Indicator("How your Open Access publications are shaped over the years?",null, "chart","medium",true, true,
[new IndicatorPath("column", "stats-tool", "chart?json="+encodeURIComponent('{"library":"HighCharts","chartDescription":{"queries":[{"name":"OA publications","type":"column","query":{"select":[{"field":"publication","aggregate":"count"},{"field":"publication.year","aggregate":null},{"field":"publication.access mode","aggregate":null}],"filters":[{"groupFilters":[{"field":"publication.year","type":">=","values":["2000"]},{"field":"publication.year","type":"<=","values":["2019"]}],"op":"AND"},{"groupFilters":[{"field":"publication.project.funder","type":"=","values":["'+stakeholder.index_name+'"]}],"op":"AND"}],"entity":"publication","profile":"OpenAIRE All-inclusive","limit":"2000"}}],"chart":{"backgroundColor":"#FFFFFFFF","borderColor":"#335cadff","borderRadius":0,"borderWidth":0,"plotBorderColor":"#ccccccff","plotBorderWidth":0},"title":{"text":"Publications by Access Mode"},"subtitle":{},"yAxis":{"title":{"text":"publications"}},"xAxis":{"title":{"text":"year"}},"lang":{"noData":"No Data available for the Query"},"exporting":{"enabled":false},"plotOptions":{"series":{"dataLabels":{"enabled":false}}},"legend":{"enabled":true,"align":"center","verticalAlign":"bottom","layout":"horizontal"},"credits":{"href":null,"enabled":true,"text":"Created by OpenAIRE via HighCharts"}}}'), null)]);
pubDefSub.charts.push(c_pubs_access_modes);
// let c_pubs_av_embargo = new Indicator("Average period of embargoed publications",null, "chart","medium",true, true, [new IndicatorPath("?", "fake","https://visme.co/blog/wp-content/uploads/2017/03/Dogs-vs-Cats-How-much-they-miss-you-relative-to-the-time-you-are-gone.png", null)]);
// pubDefSub.charts.push(c_pubs_av_embargo);
let c_pubs_OA_journals = new Indicator("Publications in OA Journals over time",null, "chart","medium",true, true,
[new IndicatorPath("column", "stats-tool", "chart?json="+encodeURIComponent('{"library":"HighCharts","chartDescription":{"queries":[{"name":"OA publications","type":"column","query":{"select":[{"field":"publication","aggregate":"count"},{"field":"publication.year","aggregate":null}],"filters":[{"groupFilters":[{"field":"publication.year","type":">=","values":["2000"]},{"field":"publication.year","type":"<=","values":["2019"]}],"op":"AND"},{"groupFilters":[{"field":"publication.project.funder","type":"=","values":["'+stakeholder.index_name+'"]}],"op":"AND"},{"groupFilters":[{"field":"publication.datasource.id","type":"starts_with","values":["doaj"]}],"op":"AND"}],"entity":"publication","profile":"OpenAIRE All-inclusive","limit":"2000"}}],"chart":{"backgroundColor":"#FFFFFFFF","borderColor":"#335cadff","borderRadius":0,"borderWidth":0,"plotBorderColor":"#ccccccff","plotBorderWidth":0},"title":{"text":"Publications by OA Journals"},"subtitle":{},"yAxis":{"title":{"text":"publications"}},"xAxis":{"title":{"text":"year"}},"lang":{"noData":"No Data available for the Query"},"exporting":{"enabled":false},"plotOptions":{"series":{"dataLabels":{"enabled":false}}},"legend":{"enabled":true,"align":"center","verticalAlign":"bottom","layout":"horizontal"},"credits":{"href":null,"enabled":true,"text":"Created by OpenAIRE via HighCharts"}}}'), null)]);
pubDefSub.charts.push(c_pubs_OA_journals);
//from monitor
let c_pubs_repo = new Indicator("OA publications in repositories by year",null, "chart","medium",true, true,
[new IndicatorPath("column", "stats-tool", "chart?json="+encodeURIComponent('{"library":"HighCharts","chartDescription":{"queries":[{"name":"OA publications","type":"column","query":{"select":[{"field":"publication","aggregate":"count"},{"field":"publication.year","aggregate":null}],"filters":[{"groupFilters":[{"field":"publication.project.funder","type":"=","values":["'+stakeholder.index_name+'"]}],"op":"AND"},{"groupFilters":[{"field":"publication.datasource.type","type":"contains","values":["repo"]}],"op":"AND"}],"entity":"publication","profile":"OpenAIRE All-inclusive","limit":"2000"}}],"chart":{"backgroundColor":"#FFFFFFFF","borderColor":"#335cadff","borderRadius":0,"borderWidth":0,"plotBorderColor":"#ccccccff","plotBorderWidth":0},"title":{"text":"Publications by OA Journals"},"subtitle":{},"yAxis":{"title":{"text":"publications"}},"xAxis":{"title":{"text":"year"}},"lang":{"noData":"No Data available for the Query"},"exporting":{"enabled":false},"plotOptions":{"series":{"dataLabels":{"enabled":false}}},"legend":{"enabled":true,"align":"center","verticalAlign":"bottom","layout":"horizontal"},"credits":{"href":null,"enabled":true,"text":"Created by OpenAIRE via HighCharts"}}}'), null)]);
pubDefSub.charts.push(c_pubs_repo);
//
// let c_pubs_repo = new Indicator("OA publications in repositories by year",null, "chart","medium",true, true,
// [new IndicatorPath("column", "stats-tool", "chart?json="+encodeURIComponent('), null)]);
// pubDefSub.charts.push(c_pubs_repo);
// let c_pubs_green_year = new Indicator("How many OA publications have been submitted to repos per year?",null, "chart","medium",true, true,[new IndicatorPath("?", "fake","https://visme.co/blog/wp-content/uploads/2017/03/Dogs-vs-Cats-How-much-they-miss-you-relative-to-the-time-you-are-gone.png", null)]);
// pubDefSub.charts.push(c_pubs_green_year);
let c_pubs_datasource_country = new Indicator("What is the percentage of OA pubs by repositories over the years?",null, "chart","medium",true, true,
[new IndicatorPath("column", "stats-tool", "chart?json="+encodeURIComponent('{"library":"HighCharts","chartDescription":{"queries":[{"name":"Gold OA","type":"column","color":"#b8c91fff","query":{"select":[{"field":"publication","aggregate":"count"},{"field":"publication.year","aggregate":null}],"filters":[{"groupFilters":[{"field":"publication.datasource.id","type":"starts_with","values":["doaj"]}],"op":"AND"},{"groupFilters":[{"field":"publication.year","type":">","values":["2010"]},{"field":"publication.year","type":"<","values":["2020"]}],"op":"AND"},{"groupFilters":[{"field":"publication.access mode","type":"=","values":["Open Access"]}],"op":"AND"},{"groupFilters":[{"field":"publication.project.funder","type":"=","values":["'+stakeholder.index_name+'"]}],"op":"AND"}],"entity":"publication","profile":"OpenAIRE All-inclusive","limit":"30"}},{"name":"Green OA","type":"column","color":"#0d9637ff","query":{"select":[{"field":"publication","aggregate":"count"},{"field":"publication.year","aggregate":null}],"filters":[{"groupFilters":[{"field":"publication.year","type":">","values":["2010"]},{"field":"publication.year","type":"<","values":["2020"]}],"op":"AND"},{"groupFilters":[{"field":"publication.access mode","type":"=","values":["Open Access"]}],"op":"AND"},{"groupFilters":[{"field":"publication.datasource.type","type":"starts_with","values":["Institu"]}],"op":"AND"},{"groupFilters":[{"field":"publication.project.funder","type":"=","values":["'+stakeholder.index_name+'"]}],"op":"AND"}],"entity":"publication","profile":"OpenAIRE All-inclusive","limit":"30"}}],"chart":{"backgroundColor":"#FFFFFFFF","borderColor":"#335cadff","borderRadius":0,"borderWidth":0,"plotBorderColor":"#ccccccff","plotBorderWidth":0},"title":{},"subtitle":{},"yAxis":{"title":{}},"xAxis":{"title":{}},"lang":{"noData":"No Data available for the Query"},"exporting":{"enabled":false},"plotOptions":{"series":{"dataLabels":{"enabled":false},"stacking":"percent"}},"legend":{"enabled":true,"align":"center","verticalAlign":"bottom","layout":"horizontal"},"credits":{"href":null,"enabled":true,"text":"Created by OpenAIRE via HighCharts"}}}'), null)]);
pubDefSub.charts.push(c_pubs_datasource_country);
let c_pubs_funding_country = new Indicator("What is the percentage of OA pubs by projects over the years?",null, "chart","medium",true, true,
[new IndicatorPath("column", "stats-tool", "chart?json="+encodeURIComponent('{"library":"HighCharts","chartDescription":{"queries":[{"name":"Gold OA","type":"column","color":"#b8c91fff","query":{"select":[{"field":"publication","aggregate":"count"},{"field":"publication.year","aggregate":null}],"filters":[{"groupFilters":[{"field":"publication.datasource.id","type":"starts_with","values":["doaj"]}],"op":"AND"},{"groupFilters":[{"field":"publication.year","type":">","values":["2010"]},{"field":"publication.year","type":"<","values":["2020"]}],"op":"AND"},{"groupFilters":[{"field":"publication.access mode","type":"=","values":["Open Access"]}],"op":"AND"},{"groupFilters":[{"field":"publication.project.funder","type":"=","values":["'+stakeholder.index_name+'"]}],"op":"AND"}],"entity":"publication","profile":"OpenAIRE All-inclusive","limit":"30"}},{"name":"Green OA","type":"column","color":"#0d9637ff","query":{"select":[{"field":"publication","aggregate":"count"},{"field":"publication.year","aggregate":null}],"filters":[{"groupFilters":[{"field":"publication.year","type":">","values":["2010"]},{"field":"publication.year","type":"<","values":["2020"]}],"op":"AND"},{"groupFilters":[{"field":"publication.access mode","type":"=","values":["Open Access"]}],"op":"AND"},{"groupFilters":[{"field":"publication.datasource.type","type":"starts_with","values":["Institu"]}],"op":"AND"},{"groupFilters":[{"field":"publication.project.funder","type":"=","values":["'+stakeholder.index_name+'"]}],"op":"AND"}],"entity":"publication","profile":"OpenAIRE All-inclusive","limit":"30"}}],"chart":{"backgroundColor":"#FFFFFFFF","borderColor":"#335cadff","borderRadius":0,"borderWidth":0,"plotBorderColor":"#ccccccff","plotBorderWidth":0},"title":{},"subtitle":{},"yAxis":{"title":{}},"xAxis":{"title":{}},"lang":{"noData":"No Data available for the Query"},"exporting":{"enabled":false},"plotOptions":{"series":{"dataLabels":{"enabled":false},"stacking":"percent"}},"legend":{"enabled":true,"align":"center","verticalAlign":"bottom","layout":"horizontal"},"credits":{"href":null,"enabled":true,"text":"Created by OpenAIRE via HighCharts"}}}'), null)]);
pubDefSub.charts.push(c_pubs_funding_country);
let c_data_year = new Indicator("How your Open research data are shaped over the years?",null, "chart","medium",true, true,
[new IndicatorPath("column", "stats-tool",'/chart?json='+
encodeURIComponent('{"library":"HighCharts","chartDescription":{"colors":["#42a5f5","#26a69a","#90ed7d","#607d8b","#00838f","#689f38","#e4d354","#2b908f","#546e7a","#01579"],"queries":[{"name":"Data","type":"column","query":{"select":[{"field":"result","aggregate":"count"},{"field":"result.year","aggregate":null}],"filters":[{"groupFilters":[{"field":"result.project.funder","type":"=","values":["'+stakeholder.index_name+'"]},{"field":"result.type","type":"=","values":["dataset"]},{"field":"result.year","type":">=","values":["2014"]},{"field":"result.year","type":"<=","values":["2019"]}],"op":"AND"}],"entity":"result","profile":"OpenAIRE original","limit":"0"}}],"chart":{"backgroundColor":"#FFFFFFFF","borderColor":"#335cadff","borderRadius":0,"borderWidth":0,"plotBorderColor":"#ccccccff","plotBorderWidth":0},"title":{"text":"'+stakeholder.index_shortName+' research data over time"},"subtitle":{},"yAxis":{"title":{"text":"Research data"}},"xAxis":{"title":{"text":"Year"}},"lang":{"noData":"No Data available for the Query"},"exporting":{"enabled":true},"plotOptions":{"series":{"dataLabels":{"enabled":false}}},"legend":{"enabled":false,"align":"center","verticalAlign":"bottom","layout":"horizontal"},"credits":{"href":null,"enabled":true,"text":"Created by OpenAIRE via HighCharts"}}}'), null)]);
dataDefSub.charts.push(c_data_year);
// let c_other_year = new Indicator("How your Open research data are shaped over the years?",null, "chart","medium",true, true, [new IndicatorPath("?", "fake","https://visme.co/blog/wp-content/uploads/2017/03/Dogs-vs-Cats-How-much-they-miss-you-relative-to-the-time-you-are-gone.png", null)]);
// otherDefSub.charts.push(c_other_year);
//
// let c_datasources_access_modes = new Indicator("What is the number of research data repositories by access mode?",null, "chart","medium",true, true, [new IndicatorPath("?", "fake","https://visme.co/blog/wp-content/uploads/2017/03/Dogs-vs-Cats-How-much-they-miss-you-relative-to-the-time-you-are-gone.png", null)]);
// pubDefSub.charts.push(c_datasources_access_modes);
//
// let c_pub_nometa_year = new Indicator("How many publications lack of abstract per year?",null, "chart","medium",true, true, [new IndicatorPath("?", "fake","https://visme.co/blog/wp-content/uploads/2017/03/Dogs-vs-Cats-How-much-they-miss-you-relative-to-the-time-you-are-gone.png", null)]);
// pubDefSub.charts.push(c_pub_nometa_year);
//
// let c_pub_meta_linked_year = new Indicator("??",null, "chart","medium",true, true, [new IndicatorPath("?", "fake","https://visme.co/blog/wp-content/uploads/2017/03/Dogs-vs-Cats-How-much-they-miss-you-relative-to-the-time-you-are-gone.png", null)]);
// pubDefSub.charts.push(c_pub_meta_linked_year);
//
// let c_pub_colocated_year = new Indicator("How many publications are submitted to more than one repos per year?",null, "chart","medium",true, true, [new IndicatorPath("?", "fake","https://visme.co/blog/wp-content/uploads/2017/03/Dogs-vs-Cats-How-much-they-miss-you-relative-to-the-time-you-are-gone.png", null)]);
// pubDefSub.charts.push(c_pub_colocated_year);
// let c_pub_pids = new Indicator("What is the most common PIDs by year?",null, "chart","medium",true, true, [new IndicatorPath("?", "fake","https://visme.co/blog/wp-content/uploads/2017/03/Dogs-vs-Cats-How-much-they-miss-you-relative-to-the-time-you-are-gone.png", null)]);
// pubDefSub.charts.push(c_pub_pids);
//
// let c_oai_pmh_datasources = new Indicator("What is the most common PIDs by year?",null, "chart","medium",true, true, [new IndicatorPath("?", "fake","https://visme.co/blog/wp-content/uploads/2017/03/Dogs-vs-Cats-How-much-they-miss-you-relative-to-the-time-you-are-gone.png", null)]);
// pubDefSub.charts.push(c_oai_pmh_datasources);
return topic;
}
createImpactTopic():Topic{
let topic = new Topic("Impact/Correlation","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do...","impact",true,true);
let pubCategory:Category = new Category("Publications","","publications",true,true);
topic.categories.push(pubCategory);
let pubDefSub = new SubCategory(null, null,null,true, true);
pubCategory.subCategories.push(pubDefSub);
let dataCategory:Category = new Category("Research data","","data",true,true);
topic.categories.push(dataCategory);
let dataDefSub = new SubCategory(null, null,null,true, true);
dataCategory.subCategories.push(dataDefSub);
let softwareCategory:Category = new Category("Software","","software",true,true);
topic.categories.push(softwareCategory);
let softDefSub = new SubCategory(null, null,null,true, true);
softwareCategory.subCategories.push(softDefSub);
/* let otherCategory:Category = new Category("Other research products","","other",true,true);
topic.categories.push(otherCategory);
let otherDefSub = new SubCategory(null, null,null,true, true);
otherCategory.subCategories.push(otherDefSub);*/
return topic;
}
createCollaborationTopic():Topic{
let topic = new Topic("Demo Topic","This is a demo topic","demo-topic",true,true);
let category1:Category = new Category("Category 1","This is ","cat",true,true);
topic.categories.push(category1);
let subCat1 = new SubCategory("Sub-category 1","","sub-cat-1",true,true);
category1.subCategories.push(subCat1);
let subCat2 = new SubCategory("Sub-category 2","","sub-cat-2",true,true);
category1.subCategories.push(subCat2);
let category2:Category = new Category("Category 2 - no subcategories","","cat-2",true,true);
topic.categories.push(category2);
let defSub = new SubCategory(null, null,null,true, true);
category2.subCategories.push(defSub);
let chart1 = new Indicator("Chart title goes here","Chart description goes here", "chart","medium",true, true, [new IndicatorPath("?", "fake","https://visme.co/blog/wp-content/uploads/2017/03/Dogs-vs-Cats-How-much-they-miss-you-relative-to-the-time-you-are-gone.png", null)]);
let chart2 = new Indicator("Chart title goes here","Chart description goes here", "chart","medium",true, true, [new IndicatorPath("?", "fake","https://static.boredpanda.com/blog/wp-content/uuuploads/funny-graphs-2/funny-graphs-legs.jpg", null)]);
subCat1.charts.push(chart1);
subCat2.charts.push(chart2);
defSub.charts.push(chart1);
defSub.charts.push(chart2);
return topic;
}
}
export class Topic {
name: string;
alias: string;
description: string;
isActive: boolean;
isPublic: boolean;
categories: Category[];
constructor(name: string, description: string, alias:string , isActive: boolean, isPublic: boolean){
this.name = name;
this.description = description;
this.alias = alias;
this.isActive = isActive;
this.isPublic = isPublic;
this.categories = [];
}
}
export class Category {
name: string;
alias: string;
description: string;
isActive: boolean;
isPublic: boolean;
isOverview: boolean;
subCategories: SubCategory[];
constructor(name: string, description: string, alias:string , isActive: boolean, isPublic: boolean){
this.name = name;
this.description = description;
this.alias = alias;
this.isActive = isActive;
this.isPublic = isPublic;
this.subCategories = [];
}
}
export class SubCategory {
name: string;
alias: string;
description: string;
isActive: boolean;
isPublic: boolean;
charts: Indicator[];
numbers: Indicator[];
constructor(name: string, description: string, alias:string , isActive: boolean, isPublic: boolean){
this.name = name;
this.description = description;
this.alias = alias;
this.isActive = isActive;
this.isPublic = isPublic;
this.charts = [];
this.numbers = [];
}
}
export class Indicator {
id:string;
name: string;
description: string;
type:string; //number,chart
width:string; //small,medium,large
tags:string[];
isActive: boolean;
isPublic: boolean;
indicatorPaths:IndicatorPath[];
constructor(name: string, description: string, type:string , width:string, isActive: boolean, isPublic: boolean, indicatorPaths:IndicatorPath[]){
this.name = name;
this.description = description;
this.type = type;
this.width = width;
this.isActive = isActive;
this.isPublic = isPublic;
this.indicatorPaths = indicatorPaths;
}
}
export class IndicatorPath {
type: string; // for charts is type of chart {table, bar, column, etc}
source:string;// for numbers is the service {statistics, search, metrics} for charts is the tool {stats-tool,old,metrics, fake}
url: string;
jsonPath:string[];
constructor(type: string, source:string, url: string, jsonPath:string[]){
this.type = type;
this.url = url;
this.source = source;
this.jsonPath = jsonPath;
}
}

View File

@ -1,32 +0,0 @@
import {Injectable} from '@angular/core';
import {HttpClient} from "@angular/common/http";
import {EnvironmentSpecificService} from "../../openaireLibrary/utils/properties/environment-specific.service";
import {Observable} from "rxjs";
@Injectable()
export class StatisticsService {
numberSources: Map<string, string> = new Map<string, string>();
chartSources: Map<string, string> = new Map<string, string>();
constructor(private http:HttpClient, private environmentSpecificService: EnvironmentSpecificService) {
this.environmentSpecificService.subscribeEnvironment().subscribe(properties => {
this.numberSources.set('statistics', properties.statisticsAPIURL);
this.numberSources.set('search', properties.searchAPIURLLAst);
this.numberSources.set('metrics', properties.metricsAPIURL);
this.chartSources.set('stats-tool', properties.statisticsFrameNewAPIURL);
this.chartSources.set('old', properties.statisticsFrameAPIURL);
this.chartSources.set('metrics', properties.metricsAPIURL);
this.chartSources.set('fake', '');
})
}
getNumbers(source: string, url: string): Observable<any> {
return this.http.get<any>(this.numberSources.get(source) + url);
}
getChartUrl(source: string, url: string): string {
return this.chartSources.get(source) + url;
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 440 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 432 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 KiB

View File

@ -1,8 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="33.534" height="182.701" viewBox="0 0 33.534 182.701">
<g id="Group_755" data-name="Group 755" transform="translate(-4.701 -13.326)">
<g id="Group_342" data-name="Group 342" transform="translate(686.122 -100.639) rotate(90)">
<path id="Path_235" data-name="Path 235" d="M1783.518,676.418s45.7-15.767,85.456-2.516c20.573,6.859,63.031,6.3,95.334,0" transform="translate(-1669.227 -11.527)" fill="none" stroke="#94b2e2" stroke-width="2"/>
</g>
<path id="Path_309" data-name="Path 309" d="M6823.193,2688.6c14.274,8.08,17.506,17.843,17.506,17.843s12.12-8.416,14.544-26.394" transform="translate(-6818 -2512)" fill="none" stroke="#94b2e2" stroke-width="2"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 741 B

View File

@ -1,8 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="33.534" height="519.494" viewBox="0 0 33.534 519.494">
<g id="Group_755" data-name="Group 755" transform="translate(-4.701 -13.532)">
<g id="Group_342" data-name="Group 342" transform="translate(686.122 -100.639) rotate(90)">
<path id="Path_235" data-name="Path 235" d="M1783.519,676.418s130.88-15.767,244.75-2.516c58.923,6.859,180.524,6.3,273.04,0" transform="translate(-1669.228 -11.527)" fill="none" stroke="#94b2e2" stroke-width="2"/>
</g>
<path id="Path_309" data-name="Path 309" d="M6823.193,2688.6c14.274,8.08,17.506,17.843,17.506,17.843s12.12-8.416,14.544-26.394" transform="translate(-6818 -2175)" fill="none" stroke="#94b2e2" stroke-width="2"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 744 B

View File

@ -49,9 +49,11 @@
"cacheUrl" :"http://scoobydoo.di.uoa.gr:3000/get?url=",
"monitorServiceAPIURL" :"http://duffy.di.uoa.gr:8080/uoa-monitor-service",
"adminToolsAPIURL" :"http://mpagasas.di.uoa.gr:8080/uoa-admin-tools",
"adminToolsCommunity" :"connect",
"adminToolsCommunity" :"monitor",
"datasourcesAPI": "https://beta.services.openaire.eu/openaire/ds/search/",
"contextsAPI":"https://dev-openaire.d4science.org/openaire/context",
"communityAPI": "https://dev-openaire.d4science.org/openaire/community/",

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

View File

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="193.101" height="176.785" viewBox="0 0 193.101 176.785">
<g id="Group_905" data-name="Group 905" transform="translate(138.777 176.273) rotate(-143)">
<path id="Path_2339" data-name="Path 2339" d="M173.211,80.1C48.972,126.628,48.766-14.955,78.633,1.309,105.383,15.875,88.185,70.242,0,47.773" transform="translate(-0.02 0)" fill="none" stroke="#212121" stroke-width="1" stroke-dasharray="7"/>
<line id="Line_345" data-name="Line 345" x1="2.924" y1="3.338" transform="translate(-1.093 47.658) rotate(8)" fill="none" stroke="#212121" stroke-width="1"/>
<path id="Path_2366" data-name="Path 2366" d="M0,0,.919,2.394,1.47,3.83" transform="translate(-0.996 47.927) rotate(-100)" fill="none" stroke="#212121" stroke-width="1"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 795 B

View File

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" width="125.359" height="136.763" viewBox="0 0 125.359 136.763">
<g id="Group_906" data-name="Group 906" transform="matrix(-0.643, -0.766, 0.766, -0.643, 76.52, 116.446)">
<path id="Path_2339" data-name="Path 2339" d="M114.974,39.472C32.507,62.4,70.858-31.144,79.949,6.466,87.569,36.012,13.595-17.59-23.762,40.138" transform="translate(0.253 0)" fill="none" stroke="#212121" stroke-width="1" stroke-dasharray="7"/>
<g id="Group_907" data-name="Group 907" transform="translate(-47.13 -0.264) rotate(-60)">
<line id="Line_345" data-name="Line 345" x1="1.912" y1="4.707" transform="translate(-23.388 39.347)" fill="none" stroke="#212121" stroke-width="1"/>
<line id="Line_346" data-name="Line 346" x2="2.353" y2="3.823" transform="translate(-23.484 40.053) rotate(-90)" fill="none" stroke="#212121" stroke-width="1"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 899 B

View File

@ -0,0 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg" width="164.445" height="266.375" viewBox="0 0 164.445 266.375">
<g id="Group_2401" data-name="Group 2401" transform="translate(-942.518 -1219.505)">
<g id="Group_1141" data-name="Group 1141" transform="matrix(-0.174, 0.985, -0.985, -0.174, 1106.396, 1240.535)">
<path id="Path_2339" data-name="Path 2339" d="M248.636,118.407C112.931-69.468,11.483,17.914,0,36.357" transform="translate(0 0)" fill="none" stroke="#212121" stroke-width="1" stroke-dasharray="7"/>
</g>
<g id="Group_1142" data-name="Group 1142" transform="translate(943 1464.318) rotate(-43)">
<line id="Line_345" data-name="Line 345" x1="1.934" y1="4.762" transform="translate(0.097 1.666)" fill="none" stroke="#212121" stroke-width="1"/>
<line id="Line_346" data-name="Line 346" x2="2.381" y2="3.868" transform="translate(0 2.381) rotate(-90)" fill="none" stroke="#212121" stroke-width="1"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 951 B

View File

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" width="233.342" height="177.675" viewBox="0 0 233.342 177.675">
<g id="Group_1143" data-name="Group 1143" transform="translate(93.595 54.105) rotate(-30)">
<path id="Path_2339" data-name="Path 2339" d="M125.759,17.282c-22.5,50.2-134.694.558-107.228-18.617C65.7-23.41-16.868,98.835-100.069,62.54" transform="translate(-10.356 8.947)" fill="none" stroke="#212121" stroke-width="1" stroke-dasharray="7"/>
<g id="Group_1144" data-name="Group 1144" transform="translate(-110.714 68.811)">
<line id="Line_345" data-name="Line 345" x1="2.651" y1="5.302" transform="translate(0.132 1.855)" fill="none" stroke="#212121" stroke-width="1"/>
<line id="Line_346" data-name="Line 346" x2="2.651" y2="5.302" transform="translate(0 2.651) rotate(-90)" fill="none" stroke="#212121" stroke-width="1"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 869 B

View File

@ -0,0 +1,69 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1366" height="1331.223" viewBox="0 0 1366 1331.223">
<g id="Group_2401" data-name="Group 2401" transform="translate(0 -147.777)">
<rect id="Rectangle_1578" data-name="Rectangle 1578" width="1366" height="1331" transform="translate(0 148)" fill="#f9f9f9"/>
<g id="Group_1290" data-name="Group 1290" transform="translate(-503 -120.655)" opacity="1">
<line id="Line_362" data-name="Line 362" y2="19.655" transform="translate(923.5 341.5)" fill="none" stroke="#707070" stroke-width="2"/>
<line id="Line_363" data-name="Line 363" y2="14" transform="translate(927.484 347.155)" fill="none" stroke="#707070" stroke-width="2"/>
<line id="Line_365" data-name="Line 365" y2="14" transform="translate(935.453 347.155)" fill="none" stroke="#707070" stroke-width="2"/>
<line id="Line_364" data-name="Line 364" y2="7" transform="translate(931.469 354.155)" fill="none" stroke="#707070" stroke-width="2"/>
</g>
<g id="Group_1291" data-name="Group 1291" transform="translate(111.984 -500.359) rotate(56)" opacity="1">
<line id="Line_362-2" data-name="Line 362" y2="19.655" transform="translate(923.5 341.5)" fill="none" stroke="#707070" stroke-width="2"/>
<line id="Line_363-2" data-name="Line 363" y2="14" transform="translate(927.484 347.155)" fill="none" stroke="#707070" stroke-width="2"/>
<line id="Line_365-2" data-name="Line 365" y2="14" transform="translate(935.453 347.155)" fill="none" stroke="#707070" stroke-width="2"/>
<line id="Line_364-2" data-name="Line 364" y2="7" transform="translate(931.469 354.155)" fill="none" stroke="#707070" stroke-width="2"/>
</g>
<g id="Group_1310" data-name="Group 1310" transform="translate(875.475 -405.615) rotate(120)" opacity="1">
<line id="Line_362-3" data-name="Line 362" y2="19.655" transform="translate(923.5 341.5)" fill="none" stroke="#707070" stroke-width="2"/>
<line id="Line_363-3" data-name="Line 363" y2="14" transform="translate(927.484 347.155)" fill="none" stroke="#707070" stroke-width="2"/>
<line id="Line_365-3" data-name="Line 365" y2="14" transform="translate(935.453 347.155)" fill="none" stroke="#707070" stroke-width="2"/>
<line id="Line_364-3" data-name="Line 364" y2="7" transform="translate(931.469 354.155)" fill="none" stroke="#707070" stroke-width="2"/>
</g>
<g id="Group_1292" data-name="Group 1292" transform="matrix(0.53, -0.848, 0.848, 0.53, -660.012, 1156.738)" opacity="1">
<line id="Line_362-4" data-name="Line 362" y2="19.655" transform="translate(923.5 341.5)" fill="none" stroke="#707070" stroke-width="2"/>
<line id="Line_363-4" data-name="Line 363" y2="14" transform="translate(927.484 347.155)" fill="none" stroke="#707070" stroke-width="2"/>
<line id="Line_365-4" data-name="Line 365" y2="14" transform="translate(935.453 347.155)" fill="none" stroke="#707070" stroke-width="2"/>
<line id="Line_364-4" data-name="Line 364" y2="7" transform="translate(931.469 354.155)" fill="none" stroke="#707070" stroke-width="2"/>
</g>
<path id="Path_2384" data-name="Path 2384" d="M-19414.377,10289.441s3.584,12.648,23.613,15.389,15.6-16.654,31.2-10.752,8.434,15.18,22.77,10.752,8.223-13.7,24.877-10.752,23.191,1.9,31.625-6.746" transform="translate(14241.005 -16179.371) rotate(-22)" fill="none" stroke="#f3cadf" stroke-width="1"/>
<path id="Path_2383" data-name="Path 2383" d="M-19414.377,10289.441s3.584,12.648,23.613,15.389,15.6-16.654,31.2-10.752,8.434,15.18,22.77,10.752,8.223-13.7,24.877-10.752,23.191,1.9,31.625-6.746" transform="translate(-20743.016 -4728.817) rotate(-138)" fill="none" stroke="#f3cadf" stroke-width="1"/>
<path id="Path_2409" data-name="Path 2409" d="M-19414.377,10289.441s3.584,12.648,23.613,15.389,15.6-16.654,31.2-10.752,8.434,15.18,22.77,10.752,8.223-13.7,24.877-10.752,23.191,1.9,31.625-6.746" transform="translate(-465.832 22225.777) rotate(120)" fill="none" stroke="#f3cadf" stroke-width="1"/>
<path id="Path_2385" data-name="Path 2385" d="M-19414.377,10289.441s3.584,12.648,23.613,15.389,15.6-16.654,31.2-10.752,8.434,15.18,22.77,10.752,8.223-13.7,24.877-10.752,23.191,1.9,31.625-6.746" transform="translate(-20972.016 -4485.817) rotate(-138)" fill="none" stroke="#f3cadf" stroke-width="1"/>
<g id="Ellipse_333" data-name="Ellipse 333" transform="translate(435 397)" fill="none" stroke="#c4deba" stroke-width="3" opacity="1">
<circle cx="17" cy="17" r="17" stroke="none"/>
<circle cx="17" cy="17" r="15.5" fill="none"/>
</g>
<g id="Ellipse_341" data-name="Ellipse 341" transform="translate(241.223 164.777) rotate(120)" fill="none" stroke="#c4deba" stroke-width="3" opacity="1">
<circle cx="17" cy="17" r="17" stroke="none"/>
<circle cx="17" cy="17" r="15.5" fill="none"/>
</g>
<g id="Ellipse_336" data-name="Ellipse 336" transform="translate(628 505)" fill="none" stroke="#c4deba" stroke-width="3" opacity="1">
<circle cx="17" cy="17" r="17" stroke="none"/>
<circle cx="17" cy="17" r="15.5" fill="none"/>
</g>
<g id="Ellipse_337" data-name="Ellipse 337" transform="translate(210 652)" fill="none" stroke="#c4deba" stroke-width="3">
<circle cx="17" cy="17" r="17" stroke="none"/>
<circle cx="17" cy="17" r="15.5" fill="none"/>
</g>
<g id="Ellipse_334" data-name="Ellipse 334" transform="translate(736 438)" fill="none" stroke="#dfd364" stroke-width="3" opacity="1">
<circle cx="12" cy="12" r="12" stroke="none"/>
<circle cx="12" cy="12" r="10.5" fill="none"/>
</g>
<g id="Ellipse_339" data-name="Ellipse 339" transform="translate(94 756)" fill="none" stroke="#dfd364" stroke-width="3">
<circle cx="12" cy="12" r="12" stroke="none"/>
<circle cx="12" cy="12" r="10.5" fill="none"/>
</g>
<g id="Ellipse_335" data-name="Ellipse 335" transform="translate(426 579)" fill="none" stroke="#dfd364" stroke-width="3">
<circle cx="12" cy="12" r="12" stroke="none"/>
<circle cx="12" cy="12" r="10.5" fill="none"/>
</g>
<g id="Ellipse_340" data-name="Ellipse 340" transform="translate(220.393 343.608) rotate(120)" fill="none" stroke="#dfd364" stroke-width="3">
<circle cx="12" cy="12" r="12" stroke="none"/>
<circle cx="12" cy="12" r="10.5" fill="none"/>
</g>
<g id="Ellipse_338" data-name="Ellipse 338" transform="translate(95 422)" fill="none" stroke="#dfd364" stroke-width="3">
<circle cx="12" cy="12" r="12" stroke="none"/>
<circle cx="12" cy="12" r="10.5" fill="none"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 638 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1371 639.26"><defs><style>.cls-1{fill:#f2f5ef;}</style></defs><title>Asset 1</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M1371,18.29V586.17S822.32,711.35,0,577.29V46.4C57.54,60.75,321,116,747.72,48.2,1233.15-28.87,1357.73,6.79,1371,18.29Z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 368 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1366.867" height="393.812" viewBox="0 0 1366.867 393.812">
<path id="Path_2356" data-name="Path 2356" d="M-.867,176.956s295.33,63.063,757.1,73.918c254.4,5.98,609.771-73.918,609.771-73.918V-81.46s-538.452-102.97-836.881-41.69c-286.66,60.522-529.986,0-529.986,0Z" transform="translate(0.867 142.619)" fill="#f2f5ef" opacity="1"/>
</svg>

After

Width:  |  Height:  |  Size: 384 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 828 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 678 KiB

View File

@ -18,101 +18,264 @@
--develop-portal-lower-tone: #9f4e7e;
}
.tm-toolbar .uk-subnav-line .custom-monitor-li {
background:var(--portal-main-color) !important;
.tm-toolbar .uk-subnav-line .custom-connect-li {
background: var(--portal-main-color) !important;
}
.home-banner {
background-image: url("connect-assets/home/banner.jpg") !important;
background-color: rgb(255, 255, 255);
.connectInfoCard {
box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.24);
}
.contact-banner {
background-color: #CFDEF1;
.connectCheckIcon {
background: rgba(0, 0, 0, 0.60);
color: white;
}
.contact-background {
background-image: url("connect-assets/contact/background.png") !important;
background-color: rgb(255, 255, 255);
.communityCard {
box-shadow: 0 1px 3px #00000029;
border-radius: 2px;
padding: 20px;
position: relative;
background-color: white;
}
.banner-background {
background: linear-gradient(145deg, rgba(255,255,255,1) 0%, rgba(160,193,242,1) 100%);
.rc-label {
color: black !important;
background-color: #FFC700 !important;
}
.home-background {
background-image: url("connect-assets/home/background.png") !important;
background-color: rgb(255, 255, 255);
.private-view-label {
color: black !important;
}
.iframeContainer iframe{
.searchForm, .communitiesSearchForm {
background: transparent linear-gradient(0deg, #FAFAFA 0%, #E2EEFA 100%);
}
.generalSearchForm,
.publicationsSearchForm,
.projectsSearchForm, .projectsTableSearchForm,
.organizationsSearchForm,
.datasetsSearchForm,
.softwareSearchForm,
.orpsSearchForm,
.datasourcesSearchForm, .compatibleDatasourcesSearchForm, .compatibleDatasourcesTableSearchForm, .datasourcesTableSearchForm,
.journalsSearchForm, .journalsTableSearchForm,
.entityRegistriesSearchForm, .entityRegistriesTableSearchForm {
background: url('search-background.svg') #F7FCFF no-repeat center bottom ;
background-size: cover !important;
height: inherit;
}
.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;
width: 100%;
height: 100%;
border: 0;
}
div:not(.connect_App) bottom .uk-totop{
background-color: transparent !important;
div:not(.connect_App) bottom .uk-totop {
background-color: transparent !important;
}
.uk-breadcrumb .active{
font-weight: bold;
.communityPanelBackground .curator-photo {
border: rgba(255, 255, 255, 0.5) 8px solid;
}
.uk-light .topic-nav .uk-navbar-nav > li > a {
font-size: 20px;
text-transform: unset;
.communityRecentResults .search-results > li:nth-child(2) {
border-top: none !important;
}
.uk-light .topic-nav .uk-navbar-nav > li.uk-active > a, .uk-light .topic-nav .uk-navbar-nav > li > a:hover,
.uk-light .topic-nav .uk-navbar-nav > li > a:focus {
.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;
}
.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;
.subscribed-button:hover {
background-color: #71b04a !important;
}
.portal-color-icon svg >*{
stroke: var(--portal-main-color);
.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;
}
.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 ;
.monitorApp {
background-color: #F9F9F9!important;
}
.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 ;
.monitorApp .login text {
stroke: white;
fill: white;
}
.monitorApp .uk-text-large {
font-size: 18px;
}
.monitorApp h1, .monitorApp h2, .monitorApp h3,
.monitorApp h4, .monitorApp h5, .monitorApp h6 {
color: #212121;
}
.monitorApp , .monitorApp .uk-card, .monitorApp .color {
color: #707070;
}
.monitorApp .portal-button {
color: white !important;
font-weight: 700;
}
.monitorApp .uk-grid-divider>:not(.uk-first-column)::before {
border-left: 1px solid #DEDEDE;
}