Compare commits

..

No commits in common. "master" and "production-release-january-2023" have entirely different histories.

49 changed files with 1273 additions and 1875 deletions

View File

@ -1,6 +1,6 @@
# Monitor # Monitor
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.3.10 and has been updated to 16.2.4. This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.3.10 and has been updated to 11.2.14.
## Install packages ## Install packages

View File

@ -210,16 +210,13 @@
"main": "server.ts", "main": "server.ts",
"tsConfig": "src/tsconfig.server.json", "tsConfig": "src/tsconfig.server.json",
"sourceMap": true, "sourceMap": true,
"optimization": false, "optimization": false
"buildOptimizer": false
}, },
"configurations": { "configurations": {
"development": { "development": {
"outputHashing": "media", "outputHashing": "media",
"sourceMap": false, "sourceMap": false,
"optimization": true, "optimization": true
"vendorChunk": true,
"buildOptimizer": true
}, },
"beta": { "beta": {
"outputHashing": "media", "outputHashing": "media",
@ -230,8 +227,7 @@
} }
], ],
"sourceMap": false, "sourceMap": false,
"optimization": true, "optimization": true
"buildOptimizer": true
}, },
"production": { "production": {
"outputHashing": "media", "outputHashing": "media",
@ -242,8 +238,7 @@
} }
], ],
"sourceMap": false, "sourceMap": false,
"optimization": true, "optimization": true
"buildOptimizer": true
} }
}, },
"defaultConfiguration": "" "defaultConfiguration": ""

View File

@ -1,6 +1,6 @@
{ {
"name": "monitor", "name": "monitor",
"version": "1.0.2", "version": "0.0.0",
"scripts": { "scripts": {
"ng": "ng", "ng": "ng",
"start": " ng serve --port 4500 --disable-host-check --host 0.0.0.0", "start": " ng serve --port 4500 --disable-host-check --host 0.0.0.0",
@ -21,41 +21,41 @@
}, },
"private": true, "private": true,
"dependencies": { "dependencies": {
"@angular/animations": "^16.1.8", "@angular/animations": "^14.2.3",
"@angular/cdk": "^16.1.7", "@angular/cdk": "^14.2.2",
"@angular/common": "^16.1.8", "@angular/common": "^14.2.3",
"@angular/compiler": "^16.1.8", "@angular/compiler": "^14.2.3",
"@angular/core": "^16.1.8", "@angular/core": "^14.2.3",
"@angular/forms": "^16.1.8", "@angular/forms": "^14.2.3",
"@angular/localize": "^16.1.8", "@angular/localize": "^14.2.3",
"@angular/material": "^16.1.7", "@angular/material": "^14.2.2",
"@angular/platform-browser": "^16.1.8", "@angular/platform-browser": "^14.2.3",
"@angular/platform-browser-dynamic": "^16.1.8", "@angular/platform-browser-dynamic": "^14.2.3",
"@angular/platform-server": "^16.1.8", "@angular/platform-server": "^14.2.3",
"@angular/router": "^16.1.8", "@angular/router": "^14.2.3",
"@nguniversal/express-engine": "^16.1.1", "@nguniversal/express-engine": "^14.2.0",
"clipboard": "^1.5.16", "clipboard": "^1.5.16",
"core-js": "^2.5.4", "core-js": "^2.5.4",
"express": "^4.15.2", "express": "^4.15.2",
"jquery": "^3.4.1", "jquery": "^3.4.1",
"ng-recaptcha": "^12.0.2", "ng-recaptcha": "^10.0.0",
"rxjs": "^6.5.1", "rxjs": "^6.5.1",
"ts-md5": "^1.2.0", "ts-md5": "^1.2.0",
"tslib": "^2.0.0", "tslib": "^2.0.0",
"uikit": "3.16.24", "uikit": "3.12.0",
"zone.js": "~0.13.1" "zone.js": "~0.11.4"
}, },
"devDependencies": { "devDependencies": {
"@angular-devkit/build-angular": "^16.1.7", "@angular-devkit/build-angular": "^14.2.3",
"@angular/cli": "^16.1.7", "@angular/cli": "^14.2.3",
"@angular/compiler-cli": "^16.1.8", "@angular/compiler-cli": "^14.2.3",
"@angular/language-service": "^16.1.8", "@angular/language-service": "^14.2.3",
"@nguniversal/builders": "^16.1.1", "@nguniversal/builders": "^14.2.0",
"@types/compression": "^1.7.0", "@types/compression": "^1.7.0",
"@types/express": "^4.17.0", "@types/express": "^4.17.0",
"@types/jasmine": "~3.6.0", "@types/jasmine": "~3.6.0",
"@types/jasminewd2": "~2.0.3", "@types/jasminewd2": "~2.0.3",
"@types/node": "^16.18.50", "@types/node": "^12.11.1",
"codelyzer": "^6.0.0", "codelyzer": "^6.0.0",
"jasmine-core": "~3.8.0", "jasmine-core": "~3.8.0",
"jasmine-spec-reporter": "~5.0.0", "jasmine-spec-reporter": "~5.0.0",
@ -66,6 +66,6 @@
"karma-jasmine-html-reporter": "^1.6.0", "karma-jasmine-html-reporter": "^1.6.0",
"protractor": "~7.0.0", "protractor": "~7.0.0",
"ts-node": "~7.0.0", "ts-node": "~7.0.0",
"typescript": "~4.9.5" "typescript": "~4.6.4"
} }
} }

View File

@ -1,655 +0,0 @@
import {ChangeDetectorRef, Component} from "@angular/core";
import {Router} from '@angular/router';
import {Meta, Title} from '@angular/platform-browser';
import {PiwikService} from '../openaireLibrary/utils/piwik/piwik.service';
import {HelperService} from "../openaireLibrary/utils/helper/helper.service";
import {SEOService} from "../openaireLibrary/sharedComponents/SEO/SEO.service";
import {Subscriber} from "rxjs";
import {Breadcrumb} from "../openaireLibrary/utils/breadcrumbs/breadcrumbs.component";
import {EnvProperties} from "../openaireLibrary/utils/properties/env-properties";
import {properties} from "../../environments/environment";
import {StakeholderEntities} from "../openaireLibrary/monitor/entities/stakeholder";
import {LayoutService} from "../openaireLibrary/dashboard/sharedComponents/sidebar/layout.service";
@Component({
selector: 'about',
template: `
<div class="uk-visible@m">
<div class="uk-position-relative">
<div class="uk-background-muted">
<div class="uk-container uk-container-large uk-section uk-section-small">
<div class="uk-padding-small uk-padding-remove-horizontal">
<breadcrumbs [breadcrumbs]="breadcrumbs"></breadcrumbs>
</div>
<div class="uk-flex uk-flex-column uk-flex-center uk-margin-bottom" uk-scrollspy-class>
<h1 class="uk-margin-medium-top" uk-scrollspy-class>How it works<span class="uk-text-primary">.</span></h1>
<div class="uk-text-large uk-width-1-2@l uk-width-2-3" uk-scrollspy-class>
Join the OpenAIRE Monitor service and we will create for you a dashboard to track, understand and
position your organization's research activities and their impact, discover and evaluate Open Science
trends for your organization and make data-driven decisions. Here's how it works.
</div>
<div class="uk-margin-medium-top uk-margin-small-bottom" uk-scrollspy-class>
<a class="uk-button uk-button-primary uk-text-uppercase" routerLink="/get-started">Get Started</a>
</div>
</div>
</div>
</div>
<div class="uk-padding"></div>
<img class="uk-position-bottom-right uk-width-1-3@xl uk-width-1-2@l"
src="assets/monitor-assets/about/hero.svg" loading="lazy">
</div>
<div class="uk-section uk-section-small">
<div class="uk-sticky uk-blur-background uk-visible@l" [attr.uk-sticky]="shouldSticky?'':null" [attr.offset]="offset">
<div class="uk-container">
<div class="uk-padding uk-padding-remove-right uk-padding-remove-bottom">
<slider-tabs flexPosition="center" customClass="uk-text-large" connect="#tabs-content">
<slider-tab *ngFor="let section of sections; let i = index" [tabTitle]="section"
[tabId]="section"></slider-tab>
</slider-tabs>
</div>
</div>
</div>
<ul id="tabs-content" class="uk-switcher uk-margin-large-bottom">
<li>
<you-we [type]="stakeholderEntities.FUNDER" id="funder">
<ng-container you>
<div class="uk-card uk-card-default uk-position-relative uk-overflow-hidden uk-margin-large-bottom">
<div class="uk-card-body uk-margin-large-bottom">
<span class="uk-text-primary">Step 1a</span>
<p class="uk-text-large uk-margin-xsmall-top">You provide Information about your funded projects and
<a href="https://www.openaire.eu/funders-how-to-join-guide" target="_blank">join OpenAIRE</a>.</p>
<p>All information is exchanged under confidential agreements and we only make public what you agree
on.</p>
</div>
<img class="uk-width-xsmall uk-position-bottom-left custom-translate-bottom-left"
src="assets/monitor-assets/about/icon1.svg">
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 2a</span>
<p class="uk-text-large uk-margin-xsmall-top">You validate the results and approve for them to be shown
on the <a href="https://explore.openaire.eu" target="_blank">Explore</a> portal.</p>
<p>Examine your dashboard and the showcased information to ensure you are satisfied with what you
see.</p>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 3a</span>
<p class="uk-text-large uk-margin-xsmall-top">Through 1-on-1 expert consultations you interact with
us</p>
<ul class="uk-list uk-list-disc">
<li>to understand any gaps and deviations within the dashboard</li>
<li>to verify the data integrity</li>
<li>to discuss the addition of any new metrics and indicators that might interest you</li>
</ul>
</div>
<div class="uk-card uk-card-default uk-position-relative uk-overflow-hidden uk-margin-large-bottom">
<div class="uk-card-body uk-margin-medium-bottom">
<span class="uk-text-primary">Step 4a</span>
<p class="uk-text-large uk-margin-xsmall-top">Customise your dashboard and make your own profile.</p>
<p>Select the <a href="https://monitor.openaire.eu/indicators/funder" target="_blank">metrics</a> of
interest to you and the ones you want to publish, to keep private, or to share just with colleagues.
</p>
</div>
<img class="uk-width-xsmall uk-position-bottom-left" src="assets/monitor-assets/about/icon3.svg">
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative">
<span class="uk-text-primary">Step 5a</span>
<p class="uk-text-large uk-margin-xsmall-top">Select your team</p>
<p>And make them collaborators of the service.</p>
</div>
</ng-container>
<ng-container we>
<div class="uk-card uk-card-default uk-overflow-hidden uk-position-relative uk-margin-large-bottom">
<div class="uk-card-body uk-margin-large-bottom">
<span class="uk-text-primary">Step 1b</span>
<p class="uk-text-large uk-margin-xsmall-top">We ingest your project metadata and mine the <a
href="https://graph.openaire.eu" target="_blank" class="text-graph">OpenAIRE Graph</a>.
</p>
<p>We infer links to research results: publications, datasets, software, etc.</p>
</div>
<img class="uk-width-xsmall uk-position-bottom-right" src="assets/monitor-assets/about/icon2.svg">
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 2b</span>
<p class="uk-text-large uk-margin-xsmall-top">We present the results to you on our Beta portal.</p>
<p>We refine until you are happy with the results. We allocate the hardware resources needed to create
your dashboard.</p>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 3b</span>
<p class="uk-text-large uk-margin-xsmall-top">We produce well-documented visualisations of simple & more
advanced composite indicators.</p>
<p>Aligned with the Open Science principles and following an evidence-based approach, and based on the
funded research activities.</p>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 4b</span>
<p class="uk-text-large uk-margin-xsmall-top">We refine until we are happy with the results.</p>
<p>We present your dashboard to you.</p>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative">
<span class="uk-text-primary">Step 5b</span>
<p class="uk-text-large uk-margin-xsmall-top">Notify you about new metrics and indicators</p>
<p>as we keep enriching the Graph, which you may find useful and add to your profile</p>
</div>
</ng-container>
</you-we>
</li>
<li>
<you-we [type]="stakeholderEntities.RI" id="ri">
<ng-container you>
<div class="uk-card uk-card-default uk-position-relative uk-overflow-hidden uk-margin-large-bottom">
<div class="uk-card-body uk-margin-large-bottom">
<span class="uk-text-primary">Step 1a</span>
<p class="uk-text-large uk-margin-xsmall-top">You state your interest in having a research initiative
dashboard.</p>
<p>All information is exchanged under confidential agreements and we only make public what you agree
on.</p>
</div>
<img class="uk-width-xsmall uk-position-bottom-left custom-translate-bottom-left"
src="assets/monitor-assets/about/icon1.svg">
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 2a</span>
<p class="uk-text-large uk-margin-xsmall-top">You configure the criteria to identify the research
products that you want to be accounted for.</p>
<p>You use the administration dashboard we created for you. If this is not enough, you give us input for
the implementation of a customised full-text mining algorithm.</p>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 3a</span>
<p class="uk-text-large uk-margin-xsmall-top">Through 1-on-1 expert consultations you interact with
us</p>
<ul class="uk-list uk-list-disc">
<li>to understand any gaps and deviations within the dashboard</li>
<li>to verify the data integrity</li>
<li>to discuss the addition of any new metrics and indicators that might interest you</li>
</ul>
</div>
<div class="uk-card uk-card-default uk-position-relative uk-overflow-hidden uk-margin-large-bottom">
<div class="uk-card-body uk-margin-medium-bottom">
<span class="uk-text-primary">Step 4a</span>
<p class="uk-text-large uk-margin-xsmall-top">Customise your dashboard and make your own profile.</p>
<p>Select the <a href="https://monitor.openaire.eu/indicators/ri" target="_blank">metrics</a> of
interest to you and the ones you want to publish, to keep private, or to share just with colleagues.
</p>
</div>
<img class="uk-width-xsmall uk-position-bottom-left" src="assets/monitor-assets/about/icon3.svg">
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative">
<span class="uk-text-primary">Step 5a</span>
<p class="uk-text-large uk-margin-xsmall-top">Select your team</p>
<p>And make them collaborators of the service.</p>
</div>
</ng-container>
<ng-container we>
<div class="uk-card uk-card-default uk-position-relative uk-overflow-hidden uk-margin-large-bottom">
<div class="uk-card-body uk-margin-large-bottom">
<span class="uk-text-primary">Step 1b</span>
<p class="uk-text-large uk-margin-xsmall-top">We set up an administration dashboard that you can use
to specify which research products of the <a href="https://graph.openaire.eu" target="_blank"
class="text-graph">OpenAIRE Graph</a> are
relevant for you.</p>
<p>If needed, we develop a customized full-text mining algorithm to identify your publications.</p>
</div>
<img class="uk-width-xsmall uk-position-bottom-right" src="assets/monitor-assets/about/icon2.svg">
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 2b</span>
<p class="uk-text-large uk-margin-xsmall-top">We present the results to you on our Beta portal.</p>
<p>We refine until you are happy with the results. We allocate the hardware resources needed to create
your dashboard.</p>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 3b</span>
<p class="uk-text-large uk-margin-xsmall-top">We produce well-documented visualisations of simple & more
advanced composite indicators.</p>
<p>Aligned with the Open Science principles and following an evidence-based approach.</p>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 4b</span>
<p class="uk-text-large uk-margin-xsmall-top">We refine until we are happy with the results.</p>
<p>We present your dashboard to you.</p>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative">
<span class="uk-text-primary">Step 5b</span>
<p class="uk-text-large uk-margin-xsmall-top">Notify you about new metrics and indicators</p>
<p>as we keep enriching the Graph, which you may find useful and add to your profile</p>
</div>
</ng-container>
</you-we>
</li>
<li>
<!-- RESEARCH INSTITUTION -->
<you-we [type]="stakeholderEntities.ORGANIZATION" id="organizations">
<ng-container you>
<div class="uk-card uk-card-default uk-position-relative uk-overflow-hidden uk-margin-large-bottom">
<div class="uk-card-body uk-margin-large-bottom">
<span class="uk-text-primary">Step 1a</span>
<p class="uk-text-large uk-margin-xsmall-top">You state your interest in having an institutional
dashboard for your institution.</p>
<p>All information is exchanged under confidential agreements and we only make public what you agree
on.</p>
</div>
<img class="uk-width-xsmall uk-position-bottom-left custom-translate-bottom-left"
src="assets/monitor-assets/about/icon1.svg">
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 2a</span>
<p class="uk-text-large uk-margin-xsmall-top">You validate and approve the results.</p>
<p>You examine your dashboard and the showcased information to ensure you are satisfied with what you
see.</p>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 3a</span>
<p class="uk-text-large uk-margin-xsmall-top">Through 1-on-1 expert consultations you interact with
us</p>
<ul class="uk-list uk-list-disc">
<li>to understand any gaps and deviations within the dashboard</li>
<li>to verify the data integrity</li>
<li>to discuss the addition of any new metrics and indicators that might interest you</li>
</ul>
</div>
<div class="uk-card uk-card-default uk-position-relative uk-overflow-hidden uk-margin-large-bottom">
<div class="uk-card-body uk-margin-medium-bottom">
<span class="uk-text-primary">Step 4a</span>
<p class="uk-text-large uk-margin-xsmall-top">Customise your dashboard and make your own profile.</p>
<p>Select the <a href="https://monitor.openaire.eu/indicators/organization" target="_blank">metrics</a> of
interest to you and the ones you want to publish, to keep private, or to share just with colleagues.
</p>
</div>
<img class="uk-width-xsmall uk-position-bottom-left" src="assets/monitor-assets/about/icon3.svg">
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative">
<span class="uk-text-primary">Step 5a</span>
<p class="uk-text-large uk-margin-xsmall-top">Select your team</p>
<p>And make them collaborators of the service.</p>
</div>
</ng-container>
<ng-container we>
<div class="uk-card uk-card-default uk-position-relative uk-overflow-hidden uk-margin-large-bottom">
<div class="uk-card-body uk-margin-large-bottom">
<span class="uk-text-primary">Step 1b</span>
<p class="uk-text-large uk-margin-xsmall-top">Starting from the
<a href="https://graph.openaire.eu" target="_blank" class="text-graph">OpenAIRE Graph</a> we check for existing data for your institution.</p>
<p>We infer links to research results: publications, datasets, software, etc.</p>
</div>
<img class="uk-width-xsmall uk-position-bottom-right" src="assets/monitor-assets/about/icon2.svg">
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 2b</span>
<p class="uk-text-large uk-margin-xsmall-top">We present the results to you on our Beta portal.</p>
<p>We refine until you are happy with the results. We allocate the hardware resources needed to create
your dashboard.</p>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 3b</span>
<p class="uk-text-large uk-margin-xsmall-top">We produce well-documented visualisations of simple & more
advanced composite indicators.</p>
<p>Aligned with the Open Science principles and following an evidence-based approach, and based on the
institutions research activities.</p>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 4b</span>
<p class="uk-text-large uk-margin-xsmall-top">We refine until we are happy with the results.</p>
<p>We present your dashboard to you.</p>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative">
<span class="uk-text-primary">Step 5b</span>
<p class="uk-text-large uk-margin-xsmall-top">Notify you about new metrics and indicators</p>
<p>as we keep enriching the Graph, which you may find useful and add to your profile</p>
</div>
</ng-container>
</you-we>
</li>
</ul>
</div>
</div>
<div class="uk-hidden@m">
<div class="uk-background-muted">
<div class="uk-container uk-container-large">
<div class="uk-text-center" uk-scrollspy-class>
<h1 class="uk-margin-medium-top uk-margin-medium-bottom" uk-scrollspy-class>How it works<span class="uk-text-primary">.</span></h1>
<div class="uk-text-large" uk-scrollspy-class>
Join the OpenAIRE Monitor service and we will create for you a dashboard to track, understand and
position your organization's research activities and their impact, discover and evaluate Open Science
trends for your organization and make data-driven decisions. Here's how it works.
</div>
<div class="uk-margin-medium-top" uk-scrollspy-class>
<a class="uk-button uk-button-primary uk-text-uppercase" routerLink="/get-started">Get Started</a>
</div>
</div>
</div>
<div class="uk-position-relative uk-height-medium" style="overflow-x: hidden; overflow-x: clip;">
<img class="uk-width-large uk-position-absolute" src="assets/monitor-assets/about/hero.svg" loading="lazy"
style="bottom: -70px; right: -80px;">
</div>
<!-- style="transform: translate(60px, 40px);" -->
</div>
<div class="uk-section uk-section-large uk-margin-medium-top">
<div class="uk-sticky uk-blur-background" [attr.uk-sticky]="shouldSticky?'':null">
<div class="uk-padding-small uk-padding-remove-right uk-padding-remove-bottom">
<slider-tabs flexPosition="center" customClass="uk-text-large" connect="#tabs-content-mobile">
<slider-tab *ngFor="let section of sections; let i = index" [tabTitle]="section"
[tabId]="section"></slider-tab>
</slider-tabs>
</div>
</div>
<div class="uk-container uk-container-large">
<ul id="tabs-content-mobile" class="uk-switcher uk-margin-large-bottom">
<li id="funder">
<div class="uk-h1 uk-text-center uk-margin-xlarge-top uk-margin-xlarge-bottom">
Are you a <span class="uk-text-primary">Funder?</span>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<div>
<span class="uk-text-primary">Step 1a</span>
<h5 class="uk-margin-xsmall-top">You provide Information about your funded projects and
<a href="https://www.openaire.eu/funders-how-to-join-guide" target="_blank">join OpenAIRE</a>.</h5>
<p>All information is exchanged under confidential agreements and we only make public what you agree
on.</p>
</div>
<div class="uk-margin-large-top">
<span class="uk-text-primary">Step 1b</span>
<h5 class="uk-margin-xsmall-top">We ingest your project metadata and mine the <a
href="https://graph.openaire.eu" target="_blank" class="text-graph">OpenAIRE Graph</a>.
</h5>
<p>We infer links to research results: publications, datasets, software, etc.</p>
</div>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<div>
<span class="uk-text-primary">Step 2a</span>
<h5 class="uk-margin-xsmall-top">You validate the results and approve for them to be shown
on the <a href="https://explore.openaire.eu" target="_blank">Explore</a> portal.</h5>
<p>Examine your dashboard and the showcased information to ensure you are satisfied with what you
see.</p>
</div>
<div class="uk-margin-large-top">
<span class="uk-text-primary">Step 2b</span>
<h5 class="uk-margin-xsmall-top">We present the results to you on our Beta portal.</h5>
<p>We refine until you are happy with the results. We allocate the hardware resources needed to create
your dashboard.</p>
</div>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<div>
<span class="uk-text-primary">Step 3a</span>
<h5 class="uk-margin-xsmall-top">Through 1-on-1 expert consultations you interact with
us</h5>
<ul class="uk-list uk-list-disc">
<li>to understand any gaps and deviations within the dashboard</li>
<li>to verify the data integrity</li>
<li>to discuss the addition of any new metrics and indicators that might interest you</li>
</ul>
</div>
<div class="uk-margin-large-top">
<span class="uk-text-primary">Step 3b</span>
<h5 class="uk-margin-xsmall-top">We produce well-documented visualisations of simple & more
advanced composite indicators.</h5>
<p>Aligned with the Open Science principles and following an evidence-based approach, and based on the
funded research activities.</p>
</div>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<div>
<span class="uk-text-primary">Step 4a</span>
<h5 class="uk-margin-xsmall-top">Customise your dashboard and make your own profile.</h5>
<p>Select the <a href="https://monitor.openaire.eu/indicators/funder" target="_blank">metrics</a> of
interest to you and the ones you want to publish, to keep private, or to share just with colleagues.
</p>
</div>
<div class="uk-margin-large-top">
<span class="uk-text-primary">Step 4b</span>
<h5 class="uk-margin-xsmall-top">We refine until we are happy with the results.</h5>
<p>We present your dashboard to you.</p>
</div>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<div>
<span class="uk-text-primary">Step 5a</span>
<h5 class="uk-margin-xsmall-top">Select your team</h5>
<p>And make them collaborators of the service.</p>
</div>
<div class="uk-margin-large-top">
<span class="uk-text-primary">Step 5b</span>
<h5 class="uk-margin-xsmall-top">Notify you about new metrics and indicators</h5>
<p>as we keep enriching the Graph, which you may find useful and add to your profile</p>
</div>
</div>
</li>
<li id="ri">
<div class="uk-h1 uk-text-center uk-margin-xlarge-top uk-margin-xlarge-bottom">
Are you a <span class="uk-text-primary">Research Initiative?</span>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<div>
<span class="uk-text-primary">Step 1a</span>
<h5 class="uk-margin-xsmall-top">You state your interest in having a research initiative
dashboard.</h5>
<p>All information is exchanged under confidential agreements and we only make public what you agree
on.</p>
</div>
<div class="uk-margin-large-top">
<span class="uk-text-primary">Step 1b</span>
<h5 class="uk-margin-xsmall-top">We set up an administration dashboard that you can use
to specify which research products of the <a href="https://graph.openaire.eu" target="_blank"
class="text-graph">OpenAIRE Graph</a> are
relevant for you.</h5>
<p>If needed, we develop a customized full-text mining algorithm to identify your publications.</p>
</div>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<div>
<span class="uk-text-primary">Step 2a</span>
<h5 class="uk-margin-xsmall-top">You configure the criteria to identify the research
products that you want to be accounted for.</h5>
<p>You use the administration dashboard we created for you. If this is not enough, you give us input for
the implementation of a customised full-text mining algorithm.</p>
</div>
<div class="uk-margin-large-top">
<span class="uk-text-primary">Step 2b</span>
<h5 class="uk-margin-xsmall-top">We present the results to you on our Beta portal.</h5>
<p>We refine until you are happy with the results. We allocate the hardware resources needed to create
your dashboard.</p>
</div>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<div>
<span class="uk-text-primary">Step 3a</span>
<h5 class="uk-margin-xsmall-top">Through 1-on-1 expert consultations you interact with
us</h5>
<ul class="uk-list uk-list-disc">
<li>to understand any gaps and deviations within the dashboard</li>
<li>to verify the data integrity</li>
<li>to discuss the addition of any new metrics and indicators that might interest you</li>
</ul>
</div>
<div class="uk-margin-large-top">
<span class="uk-text-primary">Step 3b</span>
<h5 class="uk-margin-xsmall-top">We produce well-documented visualisations of simple & more
advanced composite indicators.</h5>
<p>Aligned with the Open Science principles and following an evidence-based approach, and based on the
institutions research activities.</p>
</div>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<div>
<span class="uk-text-primary">Step 4a</span>
<h5 class="uk-margin-xsmall-top">Customise your dashboard and make your own profile.</h5>
<p>Select the <a href="https://monitor.openaire.eu/indicators/ri" target="_blank">metrics</a> of
interest to you and the ones you want to publish, to keep private, or to share just with colleagues.
</p>
</div>
<div class="uk-margin-large-top">
<span class="uk-text-primary">Step 4b</span>
<h5 class="uk-margin-xsmall-top">We refine until we are happy with the results.</h5>
<p>We present your dashboard to you.</p>
</div>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<div>
<span class="uk-text-primary">Step 5a</span>
<h5 class="uk-margin-xsmall-top">Select your team</h5>
<p>And make them collaborators of the service.</p>
</div>
<div class="uk-margin-large-top">
<span class="uk-text-primary">Step 5b</span>
<h5 class="uk-margin-xsmall-top">Notify you about new metrics and indicators</h5>
<p>as we keep enriching the Graph, which you may find useful and add to your profile</p>
</div>
</div>
</li>
<li id="organizations">
<div class="uk-h1 uk-text-center uk-margin-xlarge-top uk-margin-xlarge-bottom">
Are you a <span class="uk-text-primary">Research Institution?</span>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<div>
<span class="uk-text-primary">Step 1a</span>
<h5 class="uk-margin-xsmall-top">You state your interest in having an institutional
dashboard for your institution.</h5>
<p>All information is exchanged under confidential agreements and we only make public what you agree
on.</p>
</div>
<div class="uk-margin-large-top">
<span class="uk-text-primary">Step 1b</span>
<h5 class="uk-margin-xsmall-top">Starting from the <a href="https://graph.openaire.eu"
target="_blank" class="text-graph">OpenAIRE
Research Graph</a> we check for existing data for your institution.</h5>
<p>We infer links to research results: publications, datasets, software, etc.</p>
</div>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<div>
<span class="uk-text-primary">Step 2a</span>
<h5 class="uk-margin-xsmall-top">You validate and approve the results.</h5>
<p>You examine your dashboard and the showcased information to ensure you are satisfied with what you
see.</p>
</div>
<div class="uk-margin-large-top">
<span class="uk-text-primary">Step 2b</span>
<h5 class="uk-margin-xsmall-top">We present the results to you on our Beta portal.</h5>
<p>We refine until you are happy with the results. We allocate the hardware resources needed to create
your dashboard.</p>
</div>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<div>
<span class="uk-text-primary">Step 3a</span>
<h5 class="uk-margin-xsmall-top">Through 1-on-1 expert consultations you interact with
us</h5>
<ul class="uk-list uk-list-disc">
<li>to understand any gaps and deviations within the dashboard</li>
<li>to verify the data integrity</li>
<li>to discuss the addition of any new metrics and indicators that might interest you</li>
</ul>
</div>
<div class="uk-margin-large-top">
<span class="uk-text-primary">Step 3b</span>
<h5 class="uk-margin-xsmall-top">We produce well-documented visualisations of simple & more
advanced composite indicators.</h5>
<p>Aligned with the Open Science principles and following an evidence-based approach, and based on the
institutions research activities.</p>
</div>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<div>
<span class="uk-text-primary">Step 4a</span>
<h5 class="uk-margin-xsmall-top">Customise your dashboard and make your own profile.</h5>
<p>Select the <a href="https://monitor.openaire.eu/indicators/organization" target="_blank">metrics</a> of
interest to you and the ones you want to publish, to keep private, or to share just with colleagues.
</p>
</div>
<div class="uk-margin-large-top">
<span class="uk-text-primary">Step 4b</span>
<h5 class="uk-margin-xsmall-top">We refine until we are happy with the results.</h5>
<p>We present your dashboard to you.</p>
</div>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<div>
<span class="uk-text-primary">Step 5a</span>
<h5 class="uk-margin-xsmall-top">Select your team</h5>
<p>And make them collaborators of the service.</p>
</div>
<div class="uk-margin-large-top">
<span class="uk-text-primary">Step 5b</span>
<h5 class="uk-margin-xsmall-top">Notify you about new metrics and indicators</h5>
<p>as we keep enriching the Graph, which you may find useful and add to your profile</p>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
`,
styleUrls: ['about.component.less']
})
export class AboutComponent {
public url: string = null;
public pageTitle: string = "OpenAIRE - Monitor | About";
public description: string = "OpenAIRE - Monitor | About - How it works";
public breadcrumbs: Breadcrumb[] = [{name: 'home', route: '/'}, {name: 'About'}];
public properties: EnvProperties = properties;
public sections: string[] = [StakeholderEntities.FUNDERS, StakeholderEntities.RIS, StakeholderEntities.ORGANIZATIONS];
public offset: number;
public stakeholderEntities = StakeholderEntities;
public shouldSticky: boolean = true;
subscriptions = [];
constructor(
private _router: Router,
private _meta: Meta,
private _title: Title,
private seoService: SEOService,
private _piwikService: PiwikService,
private layoutService: LayoutService,
private helper: HelperService,
private cdr: ChangeDetectorRef) {
}
ngOnInit() {
this.subscriptions.push(this._piwikService.trackView(this.properties, this.pageTitle).subscribe());
this.url = this.properties.domain + this.properties.baseLink + this._router.url;
this.seoService.createLinkForCanonicalURL(this.url);
this.updateUrl(this.url);
this.updateTitle(this.pageTitle);
this.updateDescription(this.description);
}
ngAfterViewInit() {
this.subscriptions.push(this.layoutService.isBottomIntersecting.subscribe(isBottomIntersecting => {
this.shouldSticky = !isBottomIntersecting;
this.cdr.detectChanges();
}));
if (typeof document !== 'undefined') {
this.offset = Number.parseInt(getComputedStyle(document.documentElement).getPropertyValue('--header-height'));
this.cdr.detectChanges();
}
}
ngOnDestroy() {
this.subscriptions.forEach(subscription => {
if (subscription instanceof Subscriber) {
subscription.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

@ -2,7 +2,8 @@ import {CommonModule} from "@angular/common";
import {NgModule} from "@angular/core"; import {NgModule} from "@angular/core";
import {RouterModule} from "@angular/router"; import {RouterModule} from "@angular/router";
import {PreviousRouteRecorder} from "../openaireLibrary/utils/piwik/previousRouteRecorder.guard"; import {PreviousRouteRecorder} from "../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
import {AboutComponent} from "./about.component"; import {HowItWorksComponent} from "./how-it-works.component";
import {FaqsComponent} from "./faqs.component";
import {BreadcrumbsModule} from "../openaireLibrary/utils/breadcrumbs/breadcrumbs.module"; import {BreadcrumbsModule} from "../openaireLibrary/utils/breadcrumbs/breadcrumbs.module";
import {PiwikService} from "../openaireLibrary/utils/piwik/piwik.service"; import {PiwikService} from "../openaireLibrary/utils/piwik/piwik.service";
import {SliderTabsModule} from "../openaireLibrary/sharedComponents/tabs/slider-tabs.module"; import {SliderTabsModule} from "../openaireLibrary/sharedComponents/tabs/slider-tabs.module";
@ -10,23 +11,25 @@ import {HelperModule} from "../openaireLibrary/utils/helper/helper.module";
import {YouWeComponent} from "./you-we.component"; import {YouWeComponent} from "./you-we.component";
@NgModule({ @NgModule({
declarations: [AboutComponent, YouWeComponent], declarations: [HowItWorksComponent, FaqsComponent, YouWeComponent],
imports: [CommonModule, RouterModule.forChild([ imports: [CommonModule, RouterModule.forChild([
{ {
path: '', path: '',
component: AboutComponent, redirectTo: 'how-it-works',
data: {extraOffset: 50} canDeactivate: [PreviousRouteRecorder],
pathMatch: 'full'
}, },
{ {
path: 'how-it-works', path: 'how-it-works',
redirectTo: '/about' component: HowItWorksComponent,
data: {extraOffset: 50}
}, },
{ {
path: 'faqs', path: 'faqs',
redirectTo: '/support' component: FaqsComponent
} },
]), BreadcrumbsModule, SliderTabsModule, HelperModule], ]), BreadcrumbsModule, SliderTabsModule, HelperModule],
exports: [AboutComponent], exports: [HowItWorksComponent, FaqsComponent],
providers: [PreviousRouteRecorder, PiwikService] providers: [PreviousRouteRecorder, PiwikService]
}) })
export class AboutModule {} export class AboutModule {}

View File

@ -0,0 +1,12 @@
<div class="uk-background-muted">
<div class="uk-container uk-container-large uk-section uk-section-small">
<div class="uk-padding-small uk-padding-remove-horizontal">
<breadcrumbs [breadcrumbs]="breadcrumbs"></breadcrumbs>
</div>
<div class="uk-text-center" uk-scrollspy-class>
<h1 class="uk-margin-medium-top uk-margin-medium-bottom">Frequently Asked <br> Questions<span
class="uk-text-primary">.</span></h1>
</div>
</div>
</div>
<helper *ngIf="pageContents" [texts]="pageContents.top"></helper>

View File

@ -10,18 +10,17 @@ import {Subscriber} from "rxjs";
import {Breadcrumb} from '../openaireLibrary/utils/breadcrumbs/breadcrumbs.component'; import {Breadcrumb} from '../openaireLibrary/utils/breadcrumbs/breadcrumbs.component';
@Component({ @Component({
selector: 'support', selector: 'faqs',
templateUrl: 'support.component.html', templateUrl: 'faqs.component.html'
styleUrls: ['support.component.less']
}) })
export class SupportComponent { export class FaqsComponent {
public pageContents = null; public pageContents = null;
public divContents = null; public divContents = null;
public url: string = null; public url: string = null;
public pageTitle: string = "OpenAIRE - Monitor | Support"; public pageTitle: string = "OpenAIRE - Monitor | FAQs";
public description: string = "OpenAIRE - Monitor | Support"; public description: string = "OpenAIRE - Monitor | FAQs";
public breadcrumbs: Breadcrumb[] = [{name: 'home', route: '/'}, {name: 'Support'}]; public breadcrumbs: Breadcrumb[] = [{name: 'home', route: '/'}, {name: 'FAQs'}];
public properties: EnvProperties = properties; public properties: EnvProperties = properties;
subscriptions = []; subscriptions = [];
@ -36,7 +35,9 @@ export class SupportComponent {
} }
public ngOnInit() { public ngOnInit() {
this.subscriptions.push(this._piwikService.trackView(this.properties, this.pageTitle).subscribe()); if (this.properties.enablePiwikTrack && (typeof document !== 'undefined')) {
this.subscriptions.push(this._piwikService.trackView(this.properties, this.pageTitle, this.properties.piwikSiteId).subscribe());
}
this.url = this.properties.domain + this.properties.baseLink + this._router.url; this.url = this.properties.domain + this.properties.baseLink + this._router.url;
this.seoService.createLinkForCanonicalURL(this.url); this.seoService.createLinkForCanonicalURL(this.url);
this.updateUrl(this.url); this.updateUrl(this.url);

View File

@ -0,0 +1,400 @@
import {ChangeDetectorRef, Component} from "@angular/core";
import {Router} from '@angular/router';
import {Meta, Title} from '@angular/platform-browser';
import {PiwikService} from '../openaireLibrary/utils/piwik/piwik.service';
import {HelperService} from "../openaireLibrary/utils/helper/helper.service";
import {SEOService} from "../openaireLibrary/sharedComponents/SEO/SEO.service";
import {Subscriber} from "rxjs";
import {Breadcrumb} from "../openaireLibrary/utils/breadcrumbs/breadcrumbs.component";
import {EnvProperties} from "../openaireLibrary/utils/properties/env-properties";
import {properties} from "../../environments/environment";
import {StakeholderEntities} from "../openaireLibrary/monitor/entities/stakeholder";
@Component({
selector: 'how-it-works',
template: `
<div class="uk-position-relative">
<div class="uk-background-muted">
<div class="uk-container uk-container-large uk-section uk-section-small">
<div class="uk-padding-small uk-padding-remove-horizontal">
<breadcrumbs [breadcrumbs]="breadcrumbs"></breadcrumbs>
</div>
<div class="uk-flex uk-flex-column uk-flex-center uk-margin-bottom" uk-scrollspy-class>
<h1 class="uk-margin-medium-top" uk-scrollspy-class>How it works<span class="uk-text-primary">.</span></h1>
<div class="uk-text-large uk-width-1-2@l uk-width-2-3" uk-scrollspy-class>
Join the OpenAIRE Monitor service and we will create for you a dashboard to track, understand and
position your organization's research activities and their impact, discover and evaluate Open Science
trends for your organization and make data-driven decisions. Here's how it works.
</div>
<div class="uk-margin-medium-top uk-margin-small-bottom" uk-scrollspy-class>
<a class="uk-button uk-button-primary uk-text-uppercase" routerLink="/get-started">Get Started</a>
</div>
</div>
</div>
</div>
<div class="uk-padding"></div>
<img class="uk-visible@l uk-position-bottom-right uk-width-1-3@xl uk-width-1-2@l"
src="assets/monitor-assets/about/hero.svg" loading="lazy">
</div>
<div class="uk-section uk-section-small">
<div class="uk-sticky uk-blur-background uk-visible@l" [attr.uk-sticky]="shouldSticky?'':null"
[attr.offset]="offset">
<div class="uk-container">
<div class="uk-padding uk-padding-remove-horizontal uk-padding-remove-bottom">
<slider-tabs flexPosition="center" customClass="uk-text-large" connect="#tabs-content">
<slider-tab *ngFor="let section of sections; let i = index" [tabTitle]="section"
[tabId]="section"></slider-tab>
</slider-tabs>
</div>
</div>
</div>
<div class="uk-sticky uk-blur-background uk-hidden@l" [attr.uk-sticky]="shouldSticky?'':null">
<div class="uk-container">
<slider-tabs flexPosition="center">
<slider-tab *ngFor="let section of sections; let i = index" [tabTitle]="section"
[tabId]="section"></slider-tab>
</slider-tabs>
</div>
</div>
<ul id="tabs-content" class="uk-switcher uk-margin-large-bottom">
<li>
<you-we [type]="stakeholderEntities.FUNDER" id="funder">
<ng-container you>
<div class="uk-card uk-card-default uk-position-relative uk-overflow-hidden uk-margin-large-bottom">
<div class="uk-card-body uk-margin-large-bottom">
<span class="uk-text-primary">Step 1a</span>
<p class="uk-text-large uk-margin-xsmall-top">You provide Information about your funded projects and
<a href="https://www.openaire.eu/funders-how-to-join-guide" target="_blank">join OpenAIRE</a>.</p>
<p>All information is exchanged under confidential agreements and we only make public what you agree
on.</p>
</div>
<img class="uk-width-xsmall uk-position-bottom-left custom-translate-bottom-left"
src="assets/monitor-assets/about/icon1.svg">
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 2a</span>
<p class="uk-text-large uk-margin-xsmall-top">You validate the results and approve for them to be shown
on the <a href="https://explore.openaire.eu" target="_blank">Explore</a> portal.</p>
<p>Examine your dashboard and the showcased information to ensure you are satisfied with what you
see.</p>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 3a</span>
<p class="uk-text-large uk-margin-xsmall-top">Through 1-on-1 expert consultations you interact with
us</p>
<ul class="uk-list uk-list-disc">
<li>to understand any gaps and deviations within the dashboard</li>
<li>to verify the data integrity</li>
<li>to discuss the addition of any new metrics and indicators that might interest you</li>
</ul>
</div>
<div class="uk-card uk-card-default uk-position-relative uk-overflow-hidden uk-margin-large-bottom">
<div class="uk-card-body uk-margin-medium-bottom">
<span class="uk-text-primary">Step 4a</span>
<p class="uk-text-large uk-margin-xsmall-top">Customise your dashboard and make your own profile.</p>
<p>Select the <a href="https://monitor.openaire.eu/indicators/funder" target="_blank">metrics</a> of
interest to you and the ones you want to publish, to keep private, or to share just with colleagues.
</p>
</div>
<img class="uk-width-xsmall uk-position-bottom-left" src="assets/monitor-assets/about/icon3.svg">
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative">
<span class="uk-text-primary">Step 5a</span>
<p class="uk-text-large uk-margin-xsmall-top">Select your team</p>
<p>And make them collaborators of the service.</p>
</div>
</ng-container>
<ng-container we>
<div class="uk-card uk-card-default uk-overflow-hidden uk-position-relative uk-margin-large-bottom">
<div class="uk-card-body uk-margin-large-bottom">
<span class="uk-text-primary">Step 1b</span>
<p class="uk-text-large uk-margin-xsmall-top">We ingest your project metadata and mine the <a
href="https://graph.openaire.eu" target="_blank" class="text-graph">OpenAIRE Research Graph</a>.
</p>
<p>We infer links to research results: publications, datasets, software, etc.</p>
</div>
<img class="uk-width-xsmall uk-position-bottom-right" src="assets/monitor-assets/about/icon2.svg">
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 2b</span>
<p class="uk-text-large uk-margin-xsmall-top">We present the results to you on our Beta portal.</p>
<p>We refine until you are happy with the results. We allocate the hardware resources needed to create
your dashboard.</p>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 3b</span>
<p class="uk-text-large uk-margin-xsmall-top">We produce well-documented visualisations of simple & more
advanced composite indicators.</p>
<p>Aligned with the Open Science principles and following an evidence-based approach, and based on the
funded research activities.</p>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 4b</span>
<p class="uk-text-large uk-margin-xsmall-top">We refine until we are happy with the results.</p>
<p>We present your dashboard to you.</p>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative">
<span class="uk-text-primary">Step 5b</span>
<p class="uk-text-large uk-margin-xsmall-top">Notify you about new metrics and indicators</p>
<p>as we keep enriching the Graph, which you may find useful and add to your profile</p>
</div>
</ng-container>
</you-we>
</li>
<li>
<you-we [type]="stakeholderEntities.RI" id="ri">
<ng-container you>
<div class="uk-card uk-card-default uk-position-relative uk-overflow-hidden uk-margin-large-bottom">
<div class="uk-card-body uk-margin-large-bottom">
<span class="uk-text-primary">Step 1a</span>
<p class="uk-text-large uk-margin-xsmall-top">You state your interest on having a research initiative
dashboard.</p>
<p>All information is exchanged under confidential agreements and we only make public what you agree
on.</p>
</div>
<img class="uk-width-xsmall uk-position-bottom-left custom-translate-bottom-left"
src="assets/monitor-assets/about/icon1.svg">
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 2a</span>
<p class="uk-text-large uk-margin-xsmall-top">You configure the criteria to identify the research
products that you want to be accounted for.</p>
<p>You use the administration dashboard we created for you. If this is not enough, you give us input for
the implementation of a customised full-text mining algorithm.</p>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 3a</span>
<p class="uk-text-large uk-margin-xsmall-top">Through 1-on-1 expert consultations you interact with
us</p>
<ul class="uk-list uk-list-disc">
<li>to understand any gaps and deviations within the dashboard</li>
<li>to verify the data integrity</li>
<li>to discuss the addition of any new metrics and indicators that might interest you</li>
</ul>
</div>
<div class="uk-card uk-card-default uk-position-relative uk-overflow-hidden uk-margin-large-bottom">
<div class="uk-card-body uk-margin-medium-bottom">
<span class="uk-text-primary">Step 4a</span>
<p class="uk-text-large uk-margin-xsmall-top">Customise your dashboard and make your own profile.</p>
<p>Select the <a href="https://monitor.openaire.eu/indicators/ri" target="_blank">metrics</a> of
interest to you and the ones you want to publish, to keep private, or to share just with colleagues.
</p>
</div>
<img class="uk-width-xsmall uk-position-bottom-left" src="assets/monitor-assets/about/icon3.svg">
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative">
<span class="uk-text-primary">Step 5a</span>
<p class="uk-text-large uk-margin-xsmall-top">Select your team</p>
<p>And make them collaborators of the service.</p>
</div>
</ng-container>
<ng-container we>
<div class="uk-card uk-card-default uk-position-relative uk-overflow-hidden uk-margin-large-bottom">
<div class="uk-card-body uk-margin-large-bottom">
<span class="uk-text-primary">Step 1b</span>
<p class="uk-text-large uk-margin-xsmall-top">We set up an administration dashboard that you can use
to specify which research products of the <a href="https://graph.openaire.eu" target="_blank"
class="text-graph">OpenAIRE Research Graph</a> are
relevant for you.</p>
<p>If needed, we develop a customized full-text mining algorithm to identify your publications.</p>
</div>
<img class="uk-width-xsmall uk-position-bottom-right" src="assets/monitor-assets/about/icon2.svg">
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 2b</span>
<p class="uk-text-large uk-margin-xsmall-top">We present the results to you on our Beta portal.</p>
<p>We refine until you are happy with the results. We allocate the hardware resources needed to create
your dashboard.</p>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 3b</span>
<p class="uk-text-large uk-margin-xsmall-top">We produce well-documented visualisations of simple & more
advanced composite indicators.</p>
<p>Aligned with the Open Science principles and following an evidence-based approach.</p>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 4b</span>
<p class="uk-text-large uk-margin-xsmall-top">We refine until we are happy with the results.</p>
<p>We present your dashboard to you.</p>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative">
<span class="uk-text-primary">Step 5b</span>
<p class="uk-text-large uk-margin-xsmall-top">Notify you about new metrics and indicators</p>
<p>as we keep enriching the Graph, which you may find useful and add to your profile</p>
</div>
</ng-container>
</you-we>
</li>
<li>
<!-- RESEARCH INSTITUTION -->
<you-we [type]="stakeholderEntities.ORGANIZATION" id="organizations">
<ng-container you>
<div class="uk-card uk-card-default uk-position-relative uk-overflow-hidden uk-margin-large-bottom">
<div class="uk-card-body uk-margin-large-bottom">
<span class="uk-text-primary">Step 1a</span>
<p class="uk-text-large uk-margin-xsmall-top">You state your interest on having an institutional
dashboard for your institution.</p>
<p>All information is exchanged under confidential agreements and we only make public what you agree
on.</p>
</div>
<img class="uk-width-xsmall uk-position-bottom-left custom-translate-bottom-left"
src="assets/monitor-assets/about/icon1.svg">
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 2a</span>
<p class="uk-text-large uk-margin-xsmall-top">You validate and approve the results.</p>
<p>You examine your dashboard and the showcased information to ensure you are satisfied with what you
see.</p>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 3a</span>
<p class="uk-text-large uk-margin-xsmall-top">Through 1-on-1 expert consultations you interact with
us</p>
<ul class="uk-list uk-list-disc">
<li>to understand any gaps and deviations within the dashboard</li>
<li>to verify the data integrity</li>
<li>to discuss the addition of any new metrics and indicators that might interest you</li>
</ul>
</div>
<div class="uk-card uk-card-default uk-position-relative uk-overflow-hidden uk-margin-large-bottom">
<div class="uk-card-body uk-margin-medium-bottom">
<span class="uk-text-primary">Step 4a</span>
<p class="uk-text-large uk-margin-xsmall-top">Customise your dashboard and make your own profile.</p>
<p>Select the <a href="https://monitor.openaire.eu/indicators/organization" target="_blank">metrics</a> of
interest to you and the ones you want to publish, to keep private, or to share just with colleagues.
</p>
</div>
<img class="uk-width-xsmall uk-position-bottom-left" src="assets/monitor-assets/about/icon3.svg">
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative">
<span class="uk-text-primary">Step 5a</span>
<p class="uk-text-large uk-margin-xsmall-top">Select your team</p>
<p>And make them collaborators of the service.</p>
</div>
</ng-container>
<ng-container we>
<div class="uk-card uk-card-default uk-position-relative uk-overflow-hidden uk-margin-large-bottom">
<div class="uk-card-body uk-margin-large-bottom">
<span class="uk-text-primary">Step 1b</span>
<p class="uk-text-large uk-margin-xsmall-top">Starting from the <a href="https://graph.openaire.eu"
target="_blank" class="text-graph">OpenAIRE
Research Graph</a> we check for existing data for your institution.</p>
<p>We infer links to research results: publications, datasets, software, etc.</p>
</div>
<img class="uk-width-xsmall uk-position-bottom-right" src="assets/monitor-assets/about/icon2.svg">
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 2b</span>
<p class="uk-text-large uk-margin-xsmall-top">We present the results to you on our Beta portal.</p>
<p>We refine until you are happy with the results. We allocate the hardware resources needed to create
your dashboard.</p>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 3b</span>
<p class="uk-text-large uk-margin-xsmall-top">We produce well-documented visualisations of simple & more
advanced composite indicators.</p>
<p>Aligned with the Open Science principles and following an evidence-based approach, and based on the
institutions research activities.</p>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
<span class="uk-text-primary">Step 4b</span>
<p class="uk-text-large uk-margin-xsmall-top">We refine until we are happy with the results.</p>
<p>We present your dashboard to you.</p>
</div>
<div class="uk-card uk-card-default uk-card-body uk-position-relative">
<span class="uk-text-primary">Step 5b</span>
<p class="uk-text-large uk-margin-xsmall-top">Notify you about new metrics and indicators</p>
<p>as we keep enriching the Graph, which you may find useful and add to your profile</p>
</div>
</ng-container>
</you-we>
</li>
</ul>
</div>
`,
styles: [`
.custom-translate-bottom-left {
transform: translate(-20%, 20%);
}
`]
})
export class HowItWorksComponent {
public url: string = null;
public pageTitle: string = "OpenAIRE - Monitor | How it works";
public description: string = "OpenAIRE - Monitor | How it works";
public breadcrumbs: Breadcrumb[] = [{name: 'home', route: '/'}, {name: 'About - How it works'}];
public properties: EnvProperties = properties;
public sections: string[] = [StakeholderEntities.FUNDERS, StakeholderEntities.RIS, StakeholderEntities.ORGANIZATIONS];
public activeSection: string = StakeholderEntities.FUNDERS;
public offset: number;
public stakeholderEntities = StakeholderEntities;
public shouldSticky: boolean = true;
subscriptions = [];
constructor(
private _router: Router,
private _meta: Meta,
private _title: Title,
private seoService: SEOService,
private _piwikService: PiwikService,
private helper: HelperService,
private cdr: ChangeDetectorRef) {
}
ngOnInit() {
if (this.properties.enablePiwikTrack && (typeof document !== 'undefined')) {
this.subscriptions.push(this._piwikService.trackView(this.properties, this.pageTitle, this.properties.piwikSiteId).subscribe());
}
this.url = this.properties.domain + this.properties.baseLink + this._router.url;
this.seoService.createLinkForCanonicalURL(this.url);
this.updateUrl(this.url);
this.updateTitle(this.pageTitle);
this.updateDescription(this.description);
}
ngAfterViewInit() {
if (typeof document !== 'undefined') {
this.offset = Number.parseInt(getComputedStyle(document.documentElement).getPropertyValue('--header-height'));
this.cdr.detectChanges();
this.observeBottom();
}
}
ngOnDestroy() {
this.subscriptions.forEach(subscription => {
if (subscription instanceof Subscriber) {
subscription.unsubscribe();
}
});
}
private observeBottom() {
let bottom = document.getElementById('bottom');
if (bottom) {
let bottomObs = new IntersectionObserver(entries => {
entries.forEach(entry => {
this.shouldSticky = !entry.isIntersecting;
this.cdr.detectChanges();
})
});
this.subscriptions.push(bottomObs);
bottomObs.observe(bottom);
}
}
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

@ -17,11 +17,11 @@ declare var UIkit;
<div> <div>
<div class="uk-container"> <div class="uk-container">
<h2 class="uk-text-center uk-margin-large-top uk-margin-large-bottom">Are you a <span <h2 class="uk-text-center uk-margin-large-top uk-margin-large-bottom">Are you a <span
[ngClass]="titleClass">{{type}}?</span></h2> class="uk-text-primary">{{type}}?</span></h2>
</div> </div>
<div [id]="'sticky-' + id" #sticky class="uk-sticky uk-visible@l" [ngClass]="isSticky?backgroundClass:null" <div [id]="'sticky-' + id" #sticky class="uk-background-default uk-blur-background uk-sticky uk-visible@l"
uk-sticky="animation: uk-animation-slide-bottom" [attr.end]="'#' + id" uk-sticky="animation: uk-animation-slide-bottom" [attr.bottom]="'#' + id"
[attr.start]="'100vh -' + height + 'px'" [attr.offset]="offset"> [attr.top]="'100vh -' + height + 'px'" [attr.offset]="offset">
<div class="uk-container"> <div class="uk-container">
<div class="uk-grid uk-grid-large uk-child-width-1-2@l" [class.uk-grid-divider]="!isSticky"> <div class="uk-grid uk-grid-large uk-child-width-1-2@l" [class.uk-grid-divider]="!isSticky">
<div class="uk-text-center uk-first-column"> <div class="uk-text-center uk-first-column">
@ -60,10 +60,6 @@ export class YouWeComponent implements AfterViewInit, AfterContentChecked, OnDes
public type: StakeholderEntities.FUNDER | StakeholderEntities.RI | StakeholderEntities.ORGANIZATION = StakeholderEntities.FUNDER; public type: StakeholderEntities.FUNDER | StakeholderEntities.RI | StakeholderEntities.ORGANIZATION = StakeholderEntities.FUNDER;
@Input() @Input()
public id; public id;
@Input()
titleClass: string = "uk-text-primary";
@Input()
backgroundClass: string = "uk-background-default uk-blur-background";
@ViewChild('sticky') sticky: ElementRef; @ViewChild('sticky') sticky: ElementRef;
public isSticky: boolean = false; public isSticky: boolean = false;
public offset: number public offset: number

View File

@ -1,19 +1,15 @@
import {NgModule} from '@angular/core'; import {NgModule} from '@angular/core';
import {RouterModule, Routes} from '@angular/router'; import {RouterModule, Routes} from '@angular/router';
import {OpenaireErrorPageComponent} from './error/errorPage.component'; import {OpenaireErrorPageComponent} from './error/errorPage.component';
import {isDevelopmentGuard} from './openaireLibrary/error/isDevelopmentGuard.guard';
const routes: Routes = [ const routes: Routes = [
{path: '', loadChildren: () => import('./home/home.module').then(m => m.HomeModule), data: {hasStickyHeaderOnMobile: true}}, {path: '', loadChildren: () => import('./home/home.module').then(m => m.HomeModule)},
{path: 'about/learn-how', redirectTo: 'about', pathMatch: 'full'}, {path: 'about/learn-how', redirectTo: 'about', pathMatch: 'full'},
{ {
path: 'about', path: 'about',
loadChildren: () => import('./about/about.module').then(m => m.AboutModule) loadChildren: () => import('./about/about.module').then(m => m.AboutModule)
}, },
{
path: 'support',
loadChildren: () => import('./support/support.module').then(m => m.SupportModule),
data: {hasStickyHeaderOnMobile: true}
},
{ {
path: 'methodology', path: 'methodology',
loadChildren: () => import('./openaireLibrary/monitor/methodology/methodology.module').then(m => m.MethodologyModule) loadChildren: () => import('./openaireLibrary/monitor/methodology/methodology.module').then(m => m.MethodologyModule)
@ -28,8 +24,7 @@ const routes: Routes = [
}, },
{ {
path: 'contact-us', path: 'contact-us',
loadChildren: () => import('./contact/contact.module').then(m => m.ContactModule), loadChildren: () => import('./contact/contact.module').then(m => m.ContactModule)
data: {hasQuickContact: false}
}, },
{ {
path: 'get-started', path: 'get-started',

View File

@ -1,4 +1,4 @@
import {ChangeDetectorRef, Component, ElementRef, ViewChild} from '@angular/core'; import {Component, ElementRef, ViewChild} from '@angular/core';
import {ActivatedRoute, NavigationEnd, Router} from '@angular/router'; import {ActivatedRoute, NavigationEnd, Router} from '@angular/router';
import {EnvProperties} from './openaireLibrary/utils/properties/env-properties'; import {EnvProperties} from './openaireLibrary/utils/properties/env-properties';
@ -21,20 +21,20 @@ import {QuickContactComponent} from "./openaireLibrary/sharedComponents/quick-co
import {AlertModal} from "./openaireLibrary/utils/modal/alert"; import {AlertModal} from "./openaireLibrary/utils/modal/alert";
import {StakeholderEntities} from './openaireLibrary/monitor/entities/stakeholder'; import {StakeholderEntities} from './openaireLibrary/monitor/entities/stakeholder';
import {ResourcesService} from "./openaireLibrary/monitor/services/resources.service"; import {ResourcesService} from "./openaireLibrary/monitor/services/resources.service";
import {LayoutService} from "./openaireLibrary/dashboard/sharedComponents/sidebar/layout.service";
import {ConfigurationService} from "./openaireLibrary/utils/configuration/configuration.service";
@Component({ @Component({
selector: 'app-root', selector: 'app-root',
template: ` template: `
<div> <div>
<div id="modal-container"></div> <div id="modal-container"></div>
<navbar *ngIf="properties && showMenu && header" #navbar portal="monitor" [header]="header" [onlyTop]="false" <navbar *ngIf="properties && showMenu && header" portal="monitor" [header]="header" [onlyTop]="false"
[userMenuItems]=userMenuItems [menuItems]=menuItems [user]="user" [userMenuItems]=userMenuItems [menuItems]=menuItems [user]="user"
[showMenu]=showMenu [properties]="properties"> [showMenu]=showMenu [properties]="properties">
<div *ngIf="showGetStarted" extra-s class="uk-margin-large-top uk-margin-left"> <ul extra-s class="uk-nav uk-nav-default uk-margin-small-top">
<a class="uk-button uk-button-primary uk-text-uppercase" routerLink="/get-started" (click)="navbar.closeCanvas()">Get Started</a> <li routerLinkActive="uk-active">
</div> <a routerLink="/get-started">Get Started</a>
</li>
</ul>
<a *ngIf="showGetStarted" extra-m class="uk-button uk-button-small uk-button-primary uk-text-uppercase uk-margin-left" routerLink="/get-started">Get Started</a> <a *ngIf="showGetStarted" extra-m class="uk-button uk-button-small uk-button-primary uk-text-uppercase uk-margin-left" routerLink="/get-started">Get Started</a>
</navbar> </navbar>
<schema2jsonld *ngIf="properties " [URL]="properties.domain + properties.baseLink" <schema2jsonld *ngIf="properties " [URL]="properties.domain + properties.baseLink"
@ -62,11 +62,9 @@ import {ConfigurationService} from "./openaireLibrary/utils/configuration/config
</cookie-law> </cookie-law>
<bottom #bottom *ngIf="properties && showMenu" id="bottom" [grantAdvance]="false" <bottom #bottom *ngIf="properties && showMenu" id="bottom" [grantAdvance]="false"
[properties]="properties"></bottom> [properties]="properties"></bottom>
<quick-contact #quickContact *ngIf="bottomNotIntersecting && displayQuickContact && showQuickContact && contactForm" <quick-contact #quickContact *ngIf="showQuickContact && contactForm" (sendEmitter)="send($event)"
(sendEmitter)="send($event)"
[contactForm]="contactForm" [sending]="sending" [images]="images" [contact]="'Help'" [contactForm]="contactForm" [sending]="sending" [images]="images" [contact]="'Help'"
[organizationTypes]="organizationTypes" [organizationTypes]="organizationTypes"></quick-contact>
class="uk-visible@m"></quick-contact>
<modal-alert #modal [overflowBody]="false"></modal-alert> <modal-alert #modal [overflowBody]="false"></modal-alert>
</div> </div>
` `
@ -83,8 +81,6 @@ export class AppComponent {
logoPath: string = 'assets/common-assets/logo-services/monitor/'; logoPath: string = 'assets/common-assets/logo-services/monitor/';
/* Contact */ /* Contact */
public showQuickContact: boolean; public showQuickContact: boolean;
public bottomNotIntersecting: boolean;
public displayQuickContact: boolean; // intersecting with specific section in home page
public showGetStarted: boolean = true; public showGetStarted: boolean = true;
public contactForm: UntypedFormGroup; public contactForm: UntypedFormGroup;
public organizationTypes: string[] = [ public organizationTypes: string[] = [
@ -92,8 +88,7 @@ export class AppComponent {
'Research Infrastructure', 'Government', 'Research Infrastructure', 'Government',
'Non-profit', 'Industry', 'Other' 'Non-profit', 'Industry', 'Other'
]; ];
public images: string[] = ['assets/monitor-assets/curators/1.jpg', 'assets/monitor-assets/curators/2.jpg', public images: string[] = ['assets/monitor-assets/avatar1.jpg', 'assets/monitor-assets/avatar2.jpg']
'assets/monitor-assets/curators/3.jpg', 'assets/monitor-assets/curators/4.jpg']
public sending = false; public sending = false;
@ViewChild('modal') modal: AlertModal; @ViewChild('modal') modal: AlertModal;
@ViewChild('quickContact') quickContact: QuickContactComponent; @ViewChild('quickContact') quickContact: QuickContactComponent;
@ -102,17 +97,19 @@ export class AppComponent {
public stakeholderEntities = StakeholderEntities; public stakeholderEntities = StakeholderEntities;
constructor(private route: ActivatedRoute, private propertiesService: EnvironmentSpecificService, constructor(private route: ActivatedRoute, private propertiesService: EnvironmentSpecificService,
private configurationService: ConfigurationService,
private router: Router, private stakeholderService: StakeholderService, private smoothScroll: SmoothScroll, private router: Router, private stakeholderService: StakeholderService, private smoothScroll: SmoothScroll,
private userManagementService: UserManagementService, private userManagementService: UserManagementService,
private quickContactService: QuickContactService, private quickContactService: QuickContactService,
private layoutService: LayoutService,
private fb: UntypedFormBuilder, private fb: UntypedFormBuilder,
private emailService: EmailService, private emailService: EmailService,
private resourcesService: ResourcesService, private resourcesService: ResourcesService) {
private cdr: ChangeDetectorRef) {
this.subscriptions.push(router.events.forEach((event) => { this.subscriptions.push(router.events.forEach((event) => {
if (event instanceof NavigationEnd) { if (event instanceof NavigationEnd) {
if (event.url === '/contact-us') {
this.quickContactService.setDisplay(false);
} else if (event.url !== '/contact-us' && !this.showQuickContact) {
this.quickContactService.setDisplay(true);
}
this.showGetStarted = event.url !== '/get-started'; this.showGetStarted = event.url !== '/get-started';
} }
@ -120,7 +117,6 @@ export class AppComponent {
} }
ngOnInit() { ngOnInit() {
this.configurationService.initPortal(this.properties, "monitor");
this.userManagementService.fixRedirectURL = properties.afterLoginRedirectLink; this.userManagementService.fixRedirectURL = properties.afterLoginRedirectLink;
this.subscriptions.push(this.userManagementService.getUserInfo().subscribe(user => { this.subscriptions.push(this.userManagementService.getUserInfo().subscribe(user => {
this.user = user; this.user = user;
@ -138,17 +134,8 @@ export class AppComponent {
this.buildMenu(); this.buildMenu();
this.reset(); this.reset();
})); }));
this.subscriptions.push(this.layoutService.hasQuickContact.subscribe(hasQuickContact => {
if(this.showQuickContact !== hasQuickContact) {
this.showQuickContact = hasQuickContact;
this.cdr.detectChanges();
}
}));
this.subscriptions.push(this.quickContactService.isDisplayed.subscribe(display => { this.subscriptions.push(this.quickContactService.isDisplayed.subscribe(display => {
if(this.displayQuickContact !== display) { this.showQuickContact = display;
this.displayQuickContact = display;
this.cdr.detectChanges();
}
})); }));
} }
@ -158,26 +145,25 @@ export class AppComponent {
rootMargin: '0px', rootMargin: '0px',
threshold: 0.1 threshold: 0.1
}; };
let intersectionObserver = new IntersectionObserver(entries => {
let intersectionObserver = new IntersectionObserver(entries => { entries.forEach(entry => {
entries.forEach(entry => { if (entry.isIntersecting && this.showQuickContact) {
// if (entry.isIntersecting && this.showQuickContact) { this.showQuickContact = false;
if(this.bottomNotIntersecting !== (!entry.isIntersecting)) { this.quickContactService.setDisplay(this.showQuickContact);
this.bottomNotIntersecting = !entry.isIntersecting; } else if (!entry.isIntersecting && !this.showQuickContact) {
this.cdr.detectChanges(); this.showQuickContact = true;
this.quickContactService.setDisplay(this.showQuickContact);
} }
}); });
}, options); }, options);
intersectionObserver.observe(this.bottom.nativeElement); intersectionObserver.observe(this.bottom.nativeElement);
this.subscriptions.push(intersectionObserver); this.subscriptions.push(intersectionObserver);
} }
public ngOnDestroy() { public ngOnDestroy() {
this.subscriptions.forEach(value => { this.subscriptions.forEach(value => {
if (value instanceof Subscriber) { if (value instanceof Subscriber) {
value.unsubscribe(); value.unsubscribe();
} else if (typeof IntersectionObserver !== "undefined" && value instanceof IntersectionObserver) {
value.disconnect();
} }
}); });
this.userManagementService.clearSubscriptions(); this.userManagementService.clearSubscriptions();
@ -187,24 +173,22 @@ export class AppComponent {
public buildMenu() { public buildMenu() {
this.menuItems = []; this.menuItems = [];
this.menuItems.push(
new MenuItem("home", "Home", "", "/", false, [], null, {}, null, null, "uk-hidden@m")
);
this.menuItems.push( this.menuItems.push(
new MenuItem("stakeholders", "Browse " + this.stakeholderEntities.STAKEHOLDERS, "", "/browse", false, [], null, {}) new MenuItem("stakeholders", "Browse " + this.stakeholderEntities.STAKEHOLDERS, "", "/browse", false, [], null, {})
); );
this.resourcesService.setResources(this.menuItems); this.resourcesService.setResources(this.menuItems);
this.menuItems.push(new MenuItem("support", "Support", "", "/support", false, [], null, {})); let about = new MenuItem("about", "About", "", "", false, [], null, {});
this.menuItems.push(new MenuItem("about", "About", "", "/about", false, [], null, {})); about.items = [
new MenuItem("how-it-works", "How it works", "", "/about/how-it-works", false, [], null, {}),
new MenuItem("faqs", "FAQs", "", "/about/faqs", false, [], null, {})
]
this.menuItems.push(about);
this.bottomMenuItems = [ this.bottomMenuItems = [
new MenuItem("", "About", "https://beta.openaire.eu/project-factsheets", "", false, [], [], {}), new MenuItem("", "About", "https://beta.openaire.eu/project-factsheets", "", false, [], [], {}),
new MenuItem("", "News - Events", "https://beta.openaire.eu/news-events", "", false, [], [], {}), new MenuItem("", "News - Events", "https://beta.openaire.eu/news-events", "", false, [], [], {}),
new MenuItem("", "Blog", "https://blogs.openaire.eu/", "", false, [], [], {}), new MenuItem("", "Blog", "https://blogs.openaire.eu/", "", false, [], [], {}),
new MenuItem("", "Contact us", "https://beta.openaire.eu/contact-us", "", false, [], [], {}) new MenuItem("", "Contact us", "https://beta.openaire.eu/contact-us", "", false, [], [], {})
]; ];
this.menuItems.push(
new MenuItem("contact-us", "Contact us", "", "/contact-us", false, [], null, {}, null, null, "uk-hidden@m")
);
this.showMenu = true; this.showMenu = true;
if(typeof document !== 'undefined') { if(typeof document !== 'undefined') {
setTimeout(() => { setTimeout(() => {

View File

@ -1,8 +1,8 @@
import {APP_ID, NgModule} from '@angular/core'; import {NgModule} from '@angular/core';
import {FormsModule} from '@angular/forms'; import {FormsModule} from '@angular/forms';
import {CommonModule} from '@angular/common'; import {CommonModule} from '@angular/common';
import {HTTP_INTERCEPTORS, HttpClientModule} from "@angular/common/http"; import {HTTP_INTERCEPTORS, HttpClientModule} from "@angular/common/http";
import {BrowserModule} from '@angular/platform-browser'; import {BrowserModule, BrowserTransferStateModule} from '@angular/platform-browser';
import {BrowserAnimationsModule} from '@angular/platform-browser/animations'; import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
import {AppComponent} from './app.component'; import {AppComponent} from './app.component';
import {OpenaireErrorPageComponent} from './error/errorPage.component'; import {OpenaireErrorPageComponent} from './error/errorPage.component';
@ -34,7 +34,8 @@ import {isDevelopmentGuard} from './openaireLibrary/error/isDevelopmentGuard.gua
QuickContactModule, QuickContactModule,
BottomModule, BottomModule,
CookieLawModule, CookieLawModule,
BrowserModule, BrowserTransferStateModule,
BrowserModule.withServerTransition({appId: 'monitor'}),
AppRoutingModule, AppRoutingModule,
Schema2jsonldModule, Schema2jsonldModule,
AlertModalModule AlertModalModule
@ -43,7 +44,6 @@ import {isDevelopmentGuard} from './openaireLibrary/error/isDevelopmentGuard.gua
exports: [AppComponent], exports: [AppComponent],
providers: [ providers: [
isDevelopmentGuard, isDevelopmentGuard,
{provide: APP_ID, useValue: 'monitor'},
{ {
provide: HTTP_INTERCEPTORS, provide: HTTP_INTERCEPTORS,
useClass: HttpInterceptorService, useClass: HttpInterceptorService,

View File

@ -1,5 +1,5 @@
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import {ServerModule} from '@angular/platform-server'; import {ServerModule, ServerTransferStateModule} from '@angular/platform-server';
import { AppModule } from './app.module'; import { AppModule } from './app.module';
import { AppComponent } from './app.component'; import { AppComponent } from './app.component';
@ -7,7 +7,8 @@ import { AppComponent } from './app.component';
@NgModule({ @NgModule({
imports: [ imports: [
AppModule, AppModule,
ServerModule ServerModule,
ServerTransferStateModule
], ],
bootstrap: [AppComponent], bootstrap: [AppComponent],
}) })

View File

@ -9,11 +9,11 @@
<ng-template #card> <ng-template #card>
<div class="uk-card uk-card-default uk-card-hover uk-card-body" [ngClass]="stakeholder.type" [class.uk-disabled]="!hasPermission()"> <div class="uk-card uk-card-default uk-card-hover uk-card-body" [ngClass]="stakeholder.type" [class.uk-disabled]="!hasPermission()">
<div *ngIf="stakeholder.visibility && stakeholder.visibility !== 'PUBLIC'" <div *ngIf="stakeholder.visibility && stakeholder.visibility !== 'PUBLIC'"
class="uk-position-top-right uk-margin-small-top uk-margin-small-right uk-flex uk-flex-column uk-flex-middle uk-position-z-index"> class="uk-position-top-right uk-margin-small-top uk-margin-small-right uk-flex uk-flex-column uk-flex-middle">
<icon [name]="visibilityIcon.get(stakeholder.visibility)" ratio="1.2" [flex]="true"></icon> <icon [name]="visibilityIcon.get(stakeholder.visibility)" ratio="1.2" [flex]="true"></icon>
<span class="uk-text-small uk-text-capitalize">{{stakeholder.visibility.toLowerCase()}}</span> <span class="uk-text-small uk-text-capitalize">{{stakeholder.visibility.toLowerCase()}}</span>
</div> </div>
<div class="uk-card-media-top uk-padding-large uk-padding-remove-vertical uk-flex uk-flex-center uk-flex-middle uk-height-xsmall"> <div class="uk-card-media-top uk-padding-small uk-padding-remove-vertical uk-flex uk-flex-center uk-flex-middle uk-height-xsmall">
<img *ngIf="stakeholder.logoUrl; else elseBlock" [src]="stakeholder | logoUrl" [alt]="stakeholder.name + ' logo'" class="uk-height-max-xsmall uk-blend-multiply"> <img *ngIf="stakeholder.logoUrl; else elseBlock" [src]="stakeholder | logoUrl" [alt]="stakeholder.name + ' logo'" class="uk-height-max-xsmall uk-blend-multiply">
<ng-template #elseBlock> <ng-template #elseBlock>
<img src="assets/common-assets/placeholder.png" alt="OpenAIRE placeholder logo" class="uk-height-max-xsmall uk-blend-multiply"> <img src="assets/common-assets/placeholder.png" alt="OpenAIRE placeholder logo" class="uk-height-max-xsmall uk-blend-multiply">

View File

@ -7,7 +7,6 @@ import {properties} from "../../environments/environment"
import {LocalStorageService} from "../openaireLibrary/services/localStorage.service"; import {LocalStorageService} from "../openaireLibrary/services/localStorage.service";
import {Subscriber} from "rxjs"; import {Subscriber} from "rxjs";
import {StringUtils} from "../openaireLibrary/utils/string-utils.class"; import {StringUtils} from "../openaireLibrary/utils/string-utils.class";
import {LayoutService} from "../openaireLibrary/dashboard/sharedComponents/sidebar/layout.service";
@Component({ @Component({
selector: 'browse-stakeholder', selector: 'browse-stakeholder',
@ -28,23 +27,15 @@ export class BrowseStakeholderComponent {
constructor(private route: ActivatedRoute, constructor(private route: ActivatedRoute,
private router: Router, private router: Router,
private location: Location, private location: Location,
private localStorageService: LocalStorageService, private localStorageService: LocalStorageService) {
private layoutService: LayoutService) {
} }
public ngOnInit() { public ngOnInit() {
this.properties = properties; this.properties = properties;
this.subscriptions.push(this.layoutService.isMobile.subscribe(value => { this.subscriptions.push(this.localStorageService.get().subscribe(value => {
if(value) { this.directLink = value;
this.directLink = true;
} else {
this.subscriptions.push(this.localStorageService.get().subscribe(value => {
this.directLink = value;
}));
}
})); }));
} }
ngOnDestroy() { ngOnDestroy() {

View File

@ -1,6 +1,6 @@
<schema2jsonld *ngIf="url" [URL]="url" [name]="pageTitle" type="other" [description]="description"></schema2jsonld> <schema2jsonld *ngIf="url" [URL]="url" [name]="pageTitle" type="other" [description]="description"></schema2jsonld>
<div> <div>
<div class="uk-visible@m uk-container uk-container-large uk-section uk-section-small uk-padding-remove-bottom"> <div class="uk-container uk-container-large uk-section uk-section-small uk-padding-remove-bottom">
<div class="uk-padding-small uk-padding-remove-horizontal"> <div class="uk-padding-small uk-padding-remove-horizontal">
<breadcrumbs [breadcrumbs]="breadcrumbs"></breadcrumbs> <breadcrumbs [breadcrumbs]="breadcrumbs"></breadcrumbs>
</div> </div>
@ -10,10 +10,7 @@
<div class="uk-padding-small uk-width-1-2@l uk-width-2-3@m uk-width-1-1"> <div class="uk-padding-small uk-width-1-2@l uk-width-2-3@m uk-width-1-1">
<contact-us [organizationTypes]="organizationTypes" [sending]="sending" [scrollspy]="true" <contact-us [organizationTypes]="organizationTypes" [sending]="sending" [scrollspy]="true"
[contactForm]="contactForm" (sendEmitter)="send($event)"> [contactForm]="contactForm" (sendEmitter)="send($event)">
<h1 page-title class="uk-visible@m uk-margin-auto uk-text-center" uk-scrollspy-class> <h1 page-title class="uk-margin-auto uk-text-center" uk-scrollspy-class>
Contact us<span class="uk-text-primary">.</span>
</h1>
<h1 page-title class="uk-hidden@m uk-heading-large uk-margin-auto uk-text-center" uk-scrollspy-class>
Contact us<span class="uk-text-primary">.</span> Contact us<span class="uk-text-primary">.</span>
</h1> </h1>
<div page-description class="uk-text-large uk-text-center" uk-scrollspy-class> <div page-description class="uk-text-large uk-text-center" uk-scrollspy-class>

View File

@ -57,7 +57,9 @@ export class ContactComponent implements OnInit {
} }
ngOnInit() { ngOnInit() {
this.subscriptions.push(this._piwikService.trackView(this.properties, this.pageTitle).subscribe()); if (this.properties.enablePiwikTrack && (typeof document !== 'undefined')) {
this.subscriptions.push(this._piwikService.trackView(this.properties, this.pageTitle, this.properties.piwikSiteId).subscribe());
}
this.url = this.properties.domain + this.properties.baseLink + this._router.url; this.url = this.properties.domain + this.properties.baseLink + this._router.url;
this.seoService.createLinkForCanonicalURL(this.url); this.seoService.createLinkForCanonicalURL(this.url);
this.updateUrl(this.url); this.updateUrl(this.url);

View File

@ -1,120 +1,67 @@
<schema2jsonld *ngIf="url" [URL]="url" [name]="pageTitle" type="other" [description]="description"></schema2jsonld> <schema2jsonld *ngIf="url" [URL]="url" [name]="pageTitle" type="other" [description]="description"></schema2jsonld>
<div class="uk-visible@m"> <div class="uk-container uk-container-large uk-section uk-section-small uk-padding-remove-bottom">
<div class="uk-container uk-container-large uk-section uk-section-small uk-padding-remove-bottom"> <div class="uk-padding-small uk-padding-remove-horizontal">
<div class="uk-padding-small uk-padding-remove-horizontal"> <breadcrumbs [breadcrumbs]="breadcrumbs"></breadcrumbs>
<breadcrumbs [breadcrumbs]="breadcrumbs"></breadcrumbs> </div>
</div>
<div class="uk-container uk-container-large uk-section" uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-slide-bottom-medium; delay: 200">
<div class="uk-margin-small-top uk-text-center uk-flex uk-flex-middle uk-child-width-1-1 uk-flex-column">
<h1 class="uk-width-3-4@m" uk-scrollspy-class>Get started with <br> OpenAIRE Monitor Dashboard <span class="uk-text-primary">.</span></h1>
<div class="uk-text-large uk-width-2-3@m" uk-scrollspy-class>
The OpenAIRE Monitor Dashboard is an <span class="uk-text-bold">open tracking platform</span> with all the tools you need
to understand and make insightful decisions — whether you are a <span class="uk-text-bold">funder</span>, a <span class="uk-text-bold">research initiative</span>
or a <span class="uk-text-bold">community</span>, and want to measure or increase uptake
of Open Science, understand your costs, gaps and strengths, or build a community around it.
</div> </div>
</div> </div>
<div class="uk-container uk-container-large uk-section" uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-slide-bottom-medium; delay: 200"> <div class="uk-section uk-section-large uk-padding-remove-bottom" uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-slide-bottom-medium; delay: 200">
<div class="uk-margin-small-top uk-text-center uk-flex uk-flex-middle uk-child-width-1-1 uk-flex-column"> <div class="uk-margin-auto uk-width-1-1 uk-width-3-4@l uk-grid uk-grid-large uk-child-width-1-2" uk-grid>
<h1 class="uk-width-3-4@m" uk-scrollspy-class>Get started with <br> OpenAIRE Monitor Dashboard <span class="uk-text-primary">.</span></h1> <div class="uk-flex uk-flex-center uk-flex-top" uk-scrollspy-class>
<div class="uk-text-large uk-width-2-3@m" uk-scrollspy-class> <img class="uk-visible@m" src="assets/monitor-assets/get-started/1.svg" alt="Step 1" loading="lazy">
The OpenAIRE Monitor Dashboard is an <span class="uk-text-bold">open tracking platform</span> with all the tools you need <div class="uk-flex uk-flex-column uk-padding-small uk-margin-small-left">
to understand and make insightful decisions — whether you are a <span class="uk-text-bold">funder</span>, a <span class="uk-text-bold">research initiative</span> <icon name="description" type="outlined" ratio="2" visuallyHidden="Provide some information"
or a <span class="uk-text-bold">community</span>, and want to measure or increase uptake customClass="uk-text-background"></icon>
of Open Science, understand your costs, gaps and strengths, or build a community around it. <span class="uk-h5 uk-margin-remove uk-text-uppercase">Provide some <br> information</span>
</div>
</div>
<div class="uk-section uk-section-large uk-padding-remove-bottom" uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-slide-bottom-medium; delay: 200">
<div class="uk-margin-auto uk-width-1-1 uk-width-3-4@l uk-grid uk-grid-large uk-child-width-1-2" uk-grid>
<div class="uk-flex uk-flex-center uk-flex-top" uk-scrollspy-class>
<img class="uk-visible@m" src="assets/monitor-assets/get-started/1.svg" alt="Step 1" loading="lazy">
<div class="uk-flex uk-flex-column uk-padding-small uk-margin-small-left">
<icon name="description" type="outlined" ratio="2" visuallyHidden="Provide some information"
customClass="uk-text-background"></icon>
<span class="uk-h5 uk-margin-remove uk-text-uppercase">Provide some <br> information</span>
</div>
</div>
<div class="uk-flex uk-flex-center uk-flex-top" uk-scrollspy-class>
<img class="uk-visible@m" src="assets/monitor-assets/get-started/2.svg" alt="Step 2" loading="lazy">
<div class="uk-flex uk-flex-column uk-padding-small uk-margin-small-left">
<icon name="email" type="outlined" ratio="2" visuallyHidden="Provide some information"
customClass="uk-text-background"></icon>
<span class="uk-h5 uk-margin-remove uk-margin-small-top uk-text-uppercase">We contact <br> you</span>
</div>
</div> </div>
</div> </div>
</div> <div class="uk-flex uk-flex-center uk-flex-top" uk-scrollspy-class>
</div> <img class="uk-visible@m" src="assets/monitor-assets/get-started/2.svg" alt="Step 2" loading="lazy">
<div class="uk-container uk-container-large uk-section uk-section-large"> <div class="uk-flex uk-flex-column uk-padding-small uk-margin-small-left">
<div class="uk-padding-small"> <icon name="email" type="outlined" ratio="2" visuallyHidden="Provide some information"
<h2 class="uk-h1 uk-text-center">Provide some information<span class="uk-text-primary">.</span></h2> customClass="uk-text-background"></icon>
<div class="uk-flex uk-flex-center uk-width-1-1"> <span class="uk-h5 uk-margin-remove uk-margin-small-top uk-text-uppercase">We contact <br> you</span>
<div class="uk-width-1-2@m uk-width-1-1 uk-margin-large-top">
<contact-us [organizationTypes]="organizationTypes" [sending]="sending"
[contactForm]="contactForm" alignButton="center" (sendEmitter)="send($event)">
</contact-us>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="uk-container uk-container-large uk-section">
<div class="uk-grid uk-grid-large uk-flex-middle" uk-grid>
<div class="uk-width-1-2@m uk-width-1-1">
<div class="uk-padding-small">
<h2>Need more information?<br>View details on the process<span class="uk-text-primary">.</span></h2>
<a class="uk-display-inline-block uk-text-uppercase uk-button uk-button-text"
routerLinkActive="router-link-active" routerLink="/about/learn-how">
<span class="uk-flex uk-flex-middle">
<span>Learn More</span>
</span>
</a>
</div>
</div>
<div class="uk-width-expand uk-flex uk-flex-center">
<img src="assets/monitor-assets/get-started/steps.svg" loading="lazy">
</div>
</div>
</div>
</div> </div>
<div class="uk-hidden@m"> <div class="uk-container uk-container-large uk-section uk-section-large">
<div class="uk-container uk-container-large uk-section" uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-slide-bottom-medium; delay: 200"> <div class="uk-padding-small">
<div class="uk-text-center"> <h2 class="uk-h1 uk-text-center">Provide some information<span class="uk-text-primary">.</span></h2>
<h1 class="uk-heading-small uk-padding-small uk-padding-remove-vertical" uk-scrollspy-class>Get started with <br>OpenAIRE Monitor Dashboard<span class="uk-text-primary">.</span></h1> <div class="uk-flex uk-flex-center uk-width-1-1">
<div class="uk-text-large uk-margin-large-top" uk-scrollspy-class> <div class="uk-width-1-2@m uk-width-1-1 uk-margin-large-top">
The OpenAIRE Monitor Dashboard is an <span class="uk-text-bold">open tracking platform</span> with all the tools you need <contact-us [organizationTypes]="organizationTypes" [sending]="sending"
to understand and make insightful decisions — whether you are a <span class="uk-text-bold">funder</span>, a <span class="uk-text-bold">research initiative</span> [contactForm]="contactForm" alignButton="center" (sendEmitter)="send($event)">
or a <span class="uk-text-bold">community</span>, and want to measure or increase uptake </contact-us>
of Open Science, understand your costs, gaps and strengths, or build a community around it.
</div>
</div>
<div class="uk-section uk-section-large uk-padding-remove-bottom" uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-slide-bottom-medium; delay: 200">
<div class="uk-flex uk-flex-column uk-flex-middle uk-text-center uk-padding-small uk-position-relative">
<img class="uk-position-absolute number-step number-step-1" src="assets/monitor-assets/get-started/1.svg" alt="Step 1" loading="lazy">
<icon name="description" type="outlined" ratio="2" visuallyHidden="Provide some information"
customClass="uk-text-background"></icon>
<span class="uk-h5 uk-margin-remove uk-text-uppercase">Provide some <br> information</span>
</div>
<div class="uk-flex uk-flex-column uk-flex-middle uk-text-center uk-padding-small uk-position-relative">
<img class="uk-position-absolute number-step number-step-2" src="assets/monitor-assets/get-started/2.svg" alt="Step 2" loading="lazy">
<icon name="email" type="outlined" ratio="2" visuallyHidden="Provide some information"
customClass="uk-text-background"></icon>
<span class="uk-h5 uk-margin-remove uk-margin-small-top uk-text-uppercase">We contact you</span>
</div> </div>
</div> </div>
</div> </div>
<div class="uk-container uk-container-large uk-section uk-section-large"> </div>
<div class="uk-padding-small"> <div class="uk-container uk-container-large uk-section">
<h2 class="uk-heading-small uk-text-center">Provide some information<span class="uk-text-primary">.</span></h2> <div class="uk-grid uk-grid-large uk-flex-middle" uk-grid>
<div class="uk-flex uk-flex-center uk-width-1-1"> <div class="uk-width-1-2@m uk-width-1-1">
<div class="uk-width-1-2@m uk-width-1-1 uk-margin-large-top"> <div class="uk-padding-small">
<contact-us [organizationTypes]="organizationTypes" [sending]="sending" <h2>Need more information?<br>View details on the process<span class="uk-text-primary">.</span></h2>
[contactForm]="contactForm" alignButton="center" (sendEmitter)="send($event)"> <a class="uk-display-inline-block uk-text-uppercase uk-button uk-button-text"
</contact-us> routerLinkActive="router-link-active" routerLink="/about/learn-how">
</div>
</div>
</div>
</div>
<div class="uk-container uk-container-large uk-section">
<div class="uk-flex uk-flex-column uk-flex-middle uk-text-center uk-padding uk-padding-remove-vertical">
<h2>Need more information?<br>View details on the process<span class="uk-text-primary">.</span></h2>
<a class="uk-display-inline-block uk-text-uppercase uk-button uk-button-text uk-margin-large-top uk-margin-large-bottom"
routerLinkActive="router-link-active" routerLink="/about/learn-how">
<span class="uk-flex uk-flex-middle"> <span class="uk-flex uk-flex-middle">
<span>Learn More</span> <span>Learn More</span>
</span> </span>
</a> </a>
<img src="assets/monitor-assets/get-started/steps.svg" loading="lazy"> </div>
</div>
<div class="uk-width-expand uk-flex uk-flex-center">
<img src="assets/common-assets/monitor-assets/how/steps.svg" loading="lazy">
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,14 +0,0 @@
.number-step {
height: 70px;
opacity: 0.1;
top: 50%;
transform: translateY(-50%) rotate(20deg);
}
.number-step-1 {
right: 10%;
}
.number-step-2 {
left: 10%;
}

View File

@ -17,8 +17,7 @@ import {StakeholderEntities} from '../openaireLibrary/monitor/entities/stakehold
@Component({ @Component({
selector: 'get-started', selector: 'get-started',
templateUrl: './get-started.component.html', templateUrl: './get-started.component.html'
styleUrls: ['./get-started.component.less']
}) })
export class GetStartedComponent implements OnInit { export class GetStartedComponent implements OnInit {
public url: string = null; public url: string = null;
@ -60,7 +59,9 @@ export class GetStartedComponent implements OnInit {
} }
ngOnInit() { ngOnInit() {
this.subscriptions.push(this._piwikService.trackView(this.properties, this.pageTitle).subscribe()); if (this.properties.enablePiwikTrack && (typeof document !== 'undefined')) {
this.subscriptions.push(this._piwikService.trackView(this.properties, this.pageTitle, this.properties.piwikSiteId).subscribe());
}
this.url = this.properties.domain + this.properties.baseLink + this._router.url; this.url = this.properties.domain + this.properties.baseLink + this._router.url;
this.seoService.createLinkForCanonicalURL(this.url); this.seoService.createLinkForCanonicalURL(this.url);
this.updateUrl(this.url); this.updateUrl(this.url);

View File

@ -1,553 +1,304 @@
<ng-template #tablet_text> <div>
<div> <div class="uk-section uk-padding-remove-bottom uk-overflow-hidden home-background">
<h6 class="uk-margin-xsmall-bottom"> <div class="uk-container uk-container-large" uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-slide-bottom-medium; delay: 200">
Monitor, discover and understand. <div class="uk-grid uk-flex-middle" uk-grid>
</h6> <div class="uk-width-3-5@l uk-margin-large-bottom">
<div>Track your organizations research output in a comprehensive manner. Identify research pathways across key <h1 class="uk-heading-large" uk-scrollspy-class>
dimensions with granular and timely indicators.</div> A new era of <span class="uk-text-primary">monitoring</span> research<span class="uk-text-primary">.</span>
</div> </h1>
<div> <div class="uk-text-large uk-margin-medium-top" uk-scrollspy-class>
<h6 class="uk-margin-xsmall-bottom"> <div>Discover, track and understand trends and impact</div>
<span class="uk-text-primary">Enhance</span> open science uptake<span class="uk-text-primary">.</span> <div>pathways for your organization.</div>
</h6> <div>Make informed decisions.</div>
<div>Work with the Open Science expert community for open and transparent metrics. Discover Open Science costs and </div>
trends for your organization. See how you fare in the European Open Science Cloud.</div> <div class="uk-margin-medium-top" uk-scrollspy-class>
</div> <a class="uk-button uk-button-primary uk-text-uppercase" routerLink="/get-started">Get Started</a>
<div> </div>
<h6 class="uk-margin-xsmall-bottom">
Turn data into <span class="uk-text-primary">actionable insights.</span>
</h6>
<div>See what works and what not, reveal hidden potential. Measure research impact, discover trends, connections
and collaborations to improve and optimize your future actions.</div>
</div>
</ng-template>
<div *ngIf="!isMobile" class="uk-visible@m">
<div class="uk-section uk-padding-remove-bottom uk-overflow-hidden home-background">
<div class="uk-container uk-container-large"
uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-slide-bottom-medium; delay: 200">
<div class="uk-grid uk-flex-middle" uk-grid>
<div class="uk-width-3-5@l uk-margin-large-bottom">
<h1 class="uk-heading-large" uk-scrollspy-class>
A new era of <span class="uk-text-primary">monitoring</span> research<span
class="uk-text-primary">.</span>
</h1>
<div class="uk-text-large uk-margin-medium-top" uk-scrollspy-class>
<div>Discover, track and understand trends and impact</div>
<div>pathways for your organization.</div>
<div>Make informed decisions.</div>
</div>
<div class="uk-margin-medium-top" uk-scrollspy-class>
<a class="uk-button uk-button-primary uk-text-uppercase" routerLink="/get-started">Get
Started</a>
</div>
</div>
<div class="uk-width-expand" uk-scrollspy-class>
<div class="uk-position-relative">
<img style="padding: 1px" src="assets/monitor-assets/home/monitor.jpg" uk-parallax="y: 300">
<img class="uk-position-top-left" src="assets/monitor-assets/home/mask.svg">
</div>
</div>
</div>
</div> </div>
</div> <div class="uk-visible@m uk-width-expand" uk-scrollspy-class>
<div class="uk-section tablet-section"> <div class="uk-position-relative">
<div class="uk-container"> <img style="padding: 1px" src="assets/monitor-assets/home/monitor.jpg" uk-parallax="y: 300">
<div class="uk-text-center"> <img class="uk-position-top-left" src="assets/monitor-assets/home/mask.svg">
<span class="uk-h6 uk-text-primary">Funders. Research Institutions. Research Initiatives.</span> </div>
<h2 class="uk-h1 uk-margin-remove-top">Simplify research<br> monitoring & evaluation<span
class="uk-text-primary">.</span></h2>
</div>
<div class="uk-grid uk-child-width-1-2 uk-flex uk-flex-middle uk-margin-medium-top" uk-grid>
<div>
<img src="assets/monitor-assets/home/ipad.png" alt="ipad" loading="lazy">
</div>
<div class="uk-margin-medium-bottom">
<div class="uk-grid uk-child-width-1-1" uk-grid>
<ng-container *ngTemplateOutlet="tablet_text"></ng-container>
</div>
</div>
</div>
</div> </div>
</div>
</div> </div>
<div class="uk-background-norepeat graph-background"> </div>
<div class="uk-section uk-section-large uk-container uk-container-large uk-margin-large-top uk-margin-large-bottom uk-overflow-hidden">
<div class="uk-flex uk-flex-column uk-flex-middle"> <ng-template #scrolling_text let-position_class="position_class">
<h2 class="uk-h1 uk-width-1-2@m uk-text-center"> <div #scrolling_element [class]="position_class" uk-parallax="target: #js-sticky-parallax-images-all; start: 0vh; end: 100% + 100vh - 150vh; opacity: 0,1 20%,1 99%,0">
Tap into the OpenAIRE Graph<span class="uk-text-primary">.</span> <h3 class="uk-h2 uk-text-primary">
</h2> Monitor, discover and understand.
<div class="uk-width-1-2@m uk-text-center uk-margin-top"> </h3>
The OpenAIRE Graph is one of the largest open scholarly record collections <p class="uk-text-large">Track your organizations research output in a comprehensive manner. Identify research pathways across key dimensions with granular and timely indicators.</p>
worldwide, key in fostering Open Science and establishing its practices in the daily </div>
research activities. Conceived as a public and transparent good, populated out of data <div #scrolling_element [class]="position_class" uk-parallax="target: #js-sticky-parallax-images-all; start: 150vh; end: 100% + 100vh - 200vh; opacity: 0,1 20%,1 99%,0">
sources trusted by scientists, the Graph aims at bringing discovery, monitoring, and <h3 class="uk-h2">
assessment of science back in the hands of the scientific community. <span class="uk-text-primary">Enhance</span> open science uptake<span class="uk-text-primary">.</span>
</h3>
<p class="uk-text-large">Work with the Open Science expert community for open and transparent metrics. Discover Open Science costs and trends for your organization. See how you fare in the European Open Science Cloud.</p>
</div>
<div #scrolling_element [class]="position_class" uk-parallax="target: #js-sticky-parallax-images-all; start: 200vh; end: 100% + 100vh - 250vh; opacity: 0,1 20%,1">
<h3 class="uk-h2">
Turn data into <span class="uk-text-primary">actionable insights.</span>
</h3>
<p class="uk-text-large">See what works and what not, reveal hidden potential. Measure research impact, discover trends, connections and collaborations to improve and optimize your future actions.</p>
</div>
</ng-template>
<div class="uk-section uk-section-secondary">
<div class="uk-container uk-container-large">
<div class="uk-width-1-1">
<span class="uk-h6 uk-text-primary">Funders. Research Institutions. Research Initiatives.</span>
<h2 class="uk-h1 uk-margin-remove-top uk-width-3-5@l">Simplify research monitoring & evaluation<span class="uk-text-primary">.</span></h2>
</div>
<div id="js-sticky-parallax-images-all" style="min-height: 300vh">
<div class="uk-visible@m uk-height-viewport monitor-dark-logo-background uk-sticky" uk-sticky="bottom: #js-sticky-parallax-images-all; target-offset: true">
<div class="uk-grid" uk-grid style="height: 100vh;">
<div class="uk-width-expand uk-first-column uk-position-relative uk-height-1-1">
<div class="monitor-dark-logo-background"><!-- uk-sticky="bottom: #js-sticky-parallax-images-all; target-offset: true"-->
<div uk-parallax="target: #js-sticky-parallax-images-all;"> <!-- y: 55vh, 45vh; -->
<img class="uk-position-center" src="assets/monitor-assets/home/ipad.png" alt="ipad" loading="lazy"
uk-parallax="target: #js-sticky-parallax-images-all; start: 100vh; opacity: 1; easing:0"
style="height: 75vh;">
<!-- <img class="uk-position-center-left" src="assets/monitor-assets/home/ipad.png" width="1800" height="1200" alt=""-->
<!-- uk-parallax="target: #js-sticky-parallax-images-all; start: 100vh; end: 100% + 100vh - 160vh; opacity: 1,1 99%,0; easing:0">-->
<!-- <img class="uk-position-center-left" src="assets/monitor-assets/home/monitor.jpg" width="1800" height="1200" alt=""-->
<!-- uk-parallax="target: #js-sticky-parallax-images-all; start: 150vh; end: 100% + 100vh - 210vh; opacity: 0,1 16.666%,1 99%,0; easing:0">-->
<!-- <img class="uk-position-center-left" src="assets/monitor-assets/home/ipad.png" width="1800" height="1200" alt=""-->
<!-- uk-parallax="target: #js-sticky-parallax-images-all; start: 200vh; end: 100% + 100vh - 250vh; opacity: 0,1 20%,1; easing:0">-->
</div> </div>
</div>
</div> </div>
<div class="uk-flex uk-flex-center uk-margin-top uk-margin-medium-bottom"> <div class="uk-inline uk-width-expand uk-height-1-1">
<div class="uk-width-1-1 uk-flex-center uk-grid" uk-grid uk-height-match="target: .targetName;" <div><!-- uk-sticky="bottom: #js-sticky-parallax-images-all"-->
uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-fade; repeat: true"> <div uk-parallax="target: #js-sticky-parallax-images-all; y: 55vh, 45vh;">
<ng-template #numberCard let-numberSize="numberSize" let-name="name" let-url="url"> <ng-container *ngTemplateOutlet="scrolling_text; context: {position_class: 'uk-position-center-left'}"></ng-container>
<a class="uk-card uk-card-default uk-card-hover uk-position-relative uk-padding-small uk-display-block uk-link-reset" </div>
[href]="url" target="_blank" uk-scrollspy-class> </div>
<div class="uk-height-small uk-width-small uk-flex uk-flex-center uk-flex-column"> </div>
<div class="uk-text-center"> </div>
<div class="uk-text-background uk-text-bold number">{{(numberSize.number|number) + numberSize.size}}</div> </div>
<div class="uk-margin-small-top uk-text-large targetName">{{name}}</div>
</div> <div class="uk-hidden@m uk-height-viewport monitor-dark-logo-background" uk-sticky="bottom: #js-sticky-parallax-images-all">
</div> <div class="uk-flex uk-flex-column uk-flex-middle">
</a> <div class="monitor-dark-logo-background uk-inline uk-width-1-1" style="height: 50vh;">
</ng-template> <div class="uk-position-center uk-height-1-1" uk-parallax="target: #js-sticky-parallax-images-all; start: 100vh; opacity: 1; easing:0">
<div *ngIf="publicationsSize"> <img class="uk-height-1-1" src="assets/monitor-assets/home/ipad.png" alt="ipad" loading="lazy">
<ng-container *ngTemplateOutlet="numberCard; context: {numberSize: publicationsSize, name: openaireEntities.PUBLICATIONS, </div>
</div>
<div class="uk-inline uk-width-2-3">
<ng-container *ngTemplateOutlet="scrolling_text; context: {position_class: 'uk-position-top-center'}"></ng-container>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="uk-background-norepeat graph-background">
<div class="uk-section uk-section-large uk-container uk-container-large uk-margin-large-top uk-margin-large-bottom uk-overflow-hidden">
<div class="uk-flex uk-flex-column uk-flex-middle">
<h2 class="uk-h1 uk-width-1-2@m uk-text-center" uk-parallax="scale: 1.7, 1.3, 1,1">
Tap into the OpenAIRE Research Graph<span class="uk-text-primary">.</span>
</h2>
<div class="uk-width-1-2@m uk-text-center uk-margin-top" uk-parallax="y: 80, 40, 0, 0">
The OpenAIRE Research Graph is one of the largest open scholarly record collections
worldwide, key in fostering Open Science and establishing its practices in the daily
research activities. Conceived as a public and transparent good, populated out of data
sources trusted by scientists, the Graph aims at bringing discovery, monitoring, and
assessment of science back in the hands of the scientific community.
</div>
</div>
<div class="uk-flex uk-flex-center uk-margin-top uk-margin-medium-bottom" uk-parallax="y: 80, 40, 0, 0">
<div class="uk-width-1-1 uk-flex-center uk-grid" uk-grid uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-fade; repeat: true">
<ng-template #numberCard let-numberSize="numberSize" let-name="name" let-url="url">
<a class="uk-card uk-card-default uk-card-hover uk-position-relative uk-padding-small uk-display-block uk-link-reset"
[href]="url" target="_blank" uk-scrollspy-class>
<div class="uk-height-small uk-width-small uk-flex uk-flex-center uk-flex-column">
<div class="uk-text-center">
<div
class="uk-text-background uk-text-bold number">{{(numberSize.number|number) + numberSize.size}}</div>
<div class="uk-margin-small-top uk-text-large">{{name}}</div>
</div>
</div>
</a>
</ng-template>
<div *ngIf="publicationsSize">
<ng-container *ngTemplateOutlet="numberCard; context: {numberSize: publicationsSize, name: openaireEntities.PUBLICATIONS,
url: 'https://explore.openaire.eu/search/find/research-outcomes?type=publications'}"> url: 'https://explore.openaire.eu/search/find/research-outcomes?type=publications'}">
</ng-container> </ng-container>
</div> </div>
<div *ngIf="datasetsSize"> <div *ngIf="datasetsSize">
<ng-container *ngTemplateOutlet="numberCard; context: {numberSize: datasetsSize, name: openaireEntities.DATASETS, <ng-container *ngTemplateOutlet="numberCard; context: {numberSize: datasetsSize, name: openaireEntities.DATASETS,
url: 'https://explore.openaire.eu/search/find/research-outcomes?type=datasets'}"> url: 'https://explore.openaire.eu/search/find/research-outcomes?type=datasets'}">
</ng-container> </ng-container>
</div> </div>
<div *ngIf="softwareSize"> <div *ngIf="softwareSize">
<ng-container *ngTemplateOutlet="numberCard; context: {numberSize: softwareSize, name: openaireEntities.SOFTWARE, <ng-container *ngTemplateOutlet="numberCard; context: {numberSize: softwareSize, name: openaireEntities.SOFTWARE,
url: 'https://explore.openaire.eu/search/find/research-outcomes?type=software'}"> url: 'https://explore.openaire.eu/search/find/research-outcomes?type=software'}">
</ng-container> </ng-container>
</div> </div>
<div *ngIf="otherSize"> <div *ngIf="otherSize">
<ng-container *ngTemplateOutlet="numberCard; context: {numberSize: otherSize, name: openaireEntities.OTHER, <ng-container *ngTemplateOutlet="numberCard; context: {numberSize: otherSize, name: openaireEntities.OTHER,
url: 'https://explore.openaire.eu/search/find/research-outcomes?type=other'}"> url: 'https://explore.openaire.eu/search/find/research-outcomes?type=other'}">
</ng-container> </ng-container>
</div> </div>
<div *ngIf="fundersSize"> <div *ngIf="fundersSize">
<ng-container *ngTemplateOutlet="numberCard; context: {numberSize: fundersSize, name: stakeholderUtils.entities.funders, <ng-container *ngTemplateOutlet="numberCard; context: {numberSize: fundersSize, name: stakeholderEntities.FUNDERS,
url: 'https://explore.openaire.eu/search/find/projects'}"> url: 'https://explore.openaire.eu/search/find/projects'}">
</ng-container> </ng-container>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="uk-section uk-container uk-container-large uk-margin-large-bottom"> <div class="uk-section uk-container uk-container-large uk-margin-large-bottom">
<div class="uk-grid uk-grid-xlarge" uk-grid> <div class="uk-grid uk-grid-xlarge" uk-grid>
<div class="uk-width-1-3@m uk-width-1-1 uk-text-left@m uk-text-center"> <div class="uk-width-1-3@m uk-width-1-1 uk-text-left@m uk-text-center">
<h3 class="uk-margin-small-top">Openness. Usability. Replicability. <span <h3 class="uk-margin-small-top">Openness. Usability. Replicability. <span class="uk-text-primary">Trust</span><span class="uk-margin-right">.</span></h3>
class="uk-text-primary">Trust</span><span class="uk-margin-right">.</span></h3> <div class="uk-text-large uk-margin-bottom">Learn and work with a thriving community behind you.</div>
<div class="uk-text-large uk-margin-bottom">Learn and work with a thriving community behind you.</div> <a class="uk-display-inline-block uk-text-uppercase uk-button uk-button-text"
<a class="uk-display-inline-block uk-text-uppercase uk-button uk-button-text" routerLinkActive="router-link-active" routerLink="/about/learn-how">
routerLinkActive="router-link-active" routerLink="/about/learn-how">
<span class="uk-flex uk-flex-middle"> <span class="uk-flex uk-flex-middle">
<span>Learn More</span> <span>Learn More</span>
</span> </span>
</a> </a>
</div>
<div class="uk-width-expand uk-margin-large-left" uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-fade; delay: 250">
<div class="uk-grid uk-child-width-1-2@s uk-child-width-1-1 uk-grid-large" uk-grid>
<div uk-scrollspy-class>
<div class="uk-icon-bg-shadow uk-margin-bottom">
<icon name="done" [flex]="true" ratio="1.5" visuallyHidden="Global outlook"
customClass="uk-text-background"></icon>
</div> </div>
<div class="uk-width-expand uk-margin-large-left" <h5 class="uk-margin-remove-top">Comprehensive outlook</h5>
uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-fade; delay: 250"> <div>
<div class="uk-grid uk-child-width-1-2@s uk-child-width-1-1 uk-grid-large" uk-grid> Monitor is built on the <a href="https://graph.openaire.eu/" class="text-graph" target="_blank">OpenAIRE Research
<div uk-scrollspy-class> Graph</a>. A global linked research graph, a shared data resource from open initiatives around the world. Our indicators cover a wide range of themes from input to impact.
<div class="uk-icon-bg-shadow uk-margin-bottom">
<icon name="done" [flex]="true" ratio="1.5" visuallyHidden="Global outlook"
customClass="uk-text-background"></icon>
</div>
<h5 class="uk-margin-remove-top">Comprehensive outlook</h5>
<div>
Monitor is built on the <a href="https://graph.openaire.eu/" class="text-graph"
target="_blank">OpenAIRE Graph</a>. A global linked research
graph, a shared data resource from open initiatives around the world. Our indicators cover a
wide range of themes from input to impact.
</div>
</div>
<div uk-scrollspy-class>
<div class="uk-icon-bg-shadow uk-margin-bottom">
<icon name="done" [flex]="true" ratio="1.5" visuallyHidden="Customised to your needs"
customClass="uk-text-background"></icon>
</div>
<h5 class="uk-margin-remove-top">Showcasing, monitoring, analysis</h5>
<div>
Customize your dashboard by choosing from a variety of pre-defined metrics and select which
ones to show publicly, which to invited team members, and which are still work in progress
(private).
</div>
</div>
<div uk-scrollspy-class>
<div class="uk-icon-bg-shadow uk-margin-bottom">
<icon name="done" [flex]="true" ratio="1.5" visuallyHidden="Transparent methodology"
customClass="uk-text-background"></icon>
</div>
<h5 class="uk-margin-remove-top">Transparent methodology</h5>
<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 uk-scrollspy-class>
<div class="uk-icon-bg-shadow uk-margin-bottom">
<icon name="done" [flex]="true" ratio="1.5" visuallyHidden="Minimum effort to join"
customClass="uk-text-background"></icon>
</div>
<h5 class="uk-margin-remove-top">Minimum effort to join</h5>
<div>
You only share some information with us to include in our backend aggregating and data
mining, and we deliver a view of your world.
</div>
</div>
<div uk-scrollspy-class>
<div class="uk-icon-bg-shadow uk-margin-bottom">
<icon name="done" [flex]="true" ratio="1.5" visuallyHidden="Customised to your needs"
customClass="uk-text-background"></icon>
</div>
<h5 class="uk-margin-remove-top">Tailor-made monitoring, responsive to your needs</h5>
<div>
Our experts work with you on demand in one-on-one sessions to provide additional indicators
and curate your data.
</div>
</div>
</div>
</div> </div>
</div>
<div uk-scrollspy-class>
<div class="uk-icon-bg-shadow uk-margin-bottom">
<icon name="done" [flex]="true" ratio="1.5" visuallyHidden="Customised to your needs"
customClass="uk-text-background"></icon>
</div>
<h5 class="uk-margin-remove-top">Showcasing, monitoring, analysis</h5>
<div>
Customize your dashboard by choosing from a variety of pre-defined metrics and select which ones to show publicly, which to invited team members, and which are still work in progress (private).</div>
</div>
<div uk-scrollspy-class>
<div class="uk-icon-bg-shadow uk-margin-bottom">
<icon name="done" [flex]="true" ratio="1.5" visuallyHidden="Transparent methodology"
customClass="uk-text-background"></icon>
</div>
<h5 class="uk-margin-remove-top">Transparent methodology</h5>
<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 uk-scrollspy-class>
<div class="uk-icon-bg-shadow uk-margin-bottom">
<icon name="done" [flex]="true" ratio="1.5" visuallyHidden="Minimum effort to join"
customClass="uk-text-background"></icon>
</div>
<h5 class="uk-margin-remove-top">Minimum effort to join</h5>
<div>
You only share some information with us to include in our backend aggregating and data mining, and we deliver a view of your world.
</div>
</div>
<div uk-scrollspy-class>
<div class="uk-icon-bg-shadow uk-margin-bottom">
<icon name="done" [flex]="true" ratio="1.5" visuallyHidden="Customised to your needs"
customClass="uk-text-background"></icon>
</div>
<h5 class="uk-margin-remove-top">Tailor-made monitoring, responsive to your needs</h5>
<div>
Our experts work with you on demand in one-on-one sessions to provide additional indicators and curate your data.</div>
</div>
</div> </div>
</div>
</div> </div>
<div class="uk-section uk-container uk-container-large uk-margin-large-bottom"> </div>
<div class="uk-width-1-2@m uk-margin-bottom"> <div class="uk-section uk-container uk-container-large uk-margin-large-bottom">
<h2 class="uk-heading-xlarge">{{stakeholderUtils.entities.stakeholders}} in action<span class="uk-text-primary">.</span></h2> <div class="uk-width-1-2@m uk-margin-bottom">
<div class="uk-text-large"> <h2 class="uk-heading-xlarge">{{stakeholderEntities.STAKEHOLDERS}} in action<span class="uk-text-primary">.</span></h2>
View existing {{stakeholderUtils.entities.stakeholders | lowercase}} from collaborating organizations. Get a <div class="uk-text-large">
preview on how they work and how our service can be customized to serve you. View existing {{stakeholderEntities.STAKEHOLDERS | lowercase}} from collaborating organizations. Get a preview on how they work and how our service can be customized to serve you.
</div> </div>
</div> </div>
<a class="uk-display-inline-block uk-text-uppercase uk-button uk-button-text" <a class="uk-display-inline-block uk-text-uppercase uk-button uk-button-text"
routerLinkActive="router-link-active" routerLink="/browse"> routerLinkActive="router-link-active" routerLink="/browse">
<span class="uk-flex uk-flex-middle"> <span class="uk-flex uk-flex-middle">
<span>Browse</span> <span>Browse</span>
</span> </span>
</a> </a>
<div class="uk-margin-large-top"> <div class="uk-margin-large-top">
<div *ngIf="loading" class="uk-height-large uk-flex uk-flex-column uk-flex-center"> <div *ngIf="loading" class="uk-height-large uk-flex uk-flex-column uk-flex-center">
<loading></loading> <loading></loading>
</div> </div>
<ng-container *ngIf="!loading"> <ng-container *ngIf="!loading">
<div> <ul class="uk-tab" uk-tab>
<slider-tabs position="horizontal"> <li><a>All</a></li>
<slider-tab [tabId]="'all'" tabTitle="All"></slider-tab> <li><a>{{stakeholderEntities.FUNDERS | titlecase}}</a></li>
<slider-tab *ngFor="let type of types" [tabId]="type" tabTitle="{{getTitle(type) | titlecase}}"></slider-tab> <li><a>{{stakeholderEntities.RIS | titlecase}}</a></li>
</slider-tabs> <li><a>{{stakeholderEntities.ORGANIZATIONS | titlecase}}</a></li>
</ul>
<ul class="uk-switcher">
<li>
<ng-container *ngTemplateOutlet="sliderTemplate; context: {slides: stakeholdersSlider.stakeholders}"></ng-container>
</li>
<li>
<ng-container *ngTemplateOutlet="sliderTemplate; context: {slides: stakeholdersSlider.funders}"></ng-container>
</li>
<li>
<ng-container *ngTemplateOutlet="sliderTemplate; context: {slides:stakeholdersSlider.ris}"></ng-container>
</li>
<li>
<ng-container *ngTemplateOutlet="sliderTemplate; context: {slides: stakeholdersSlider.organizations}"></ng-container>
</li>
</ul>
</ng-container>
<!-- Slider Template for Tab Content -->
<ng-template #sliderTemplate let-slides="slides">
<div uk-slider class="uk-slider uk-margin-medium-top">
<ul class="uk-slider-items" uk-height-match="target: .uk-card; row: false">
<!-- Margin right -->
<li *ngFor="let slide of slides; let i=index" class="uk-width-1-1">
<div class="uk-padding-small">
<div uk-grid class="uk-grid uk-child-width-1-3@l uk-child-width-1-2@m" uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-fade; repeat: true">
<ng-container *ngIf="i === 0">
<div *ngFor="let stakeholder of slide" uk-scrollspy-class>
<browse-stakeholder [stakeholder]="stakeholder"></browse-stakeholder>
</div>
</ng-container>
<ng-container *ngIf="i !== 0">
<div *ngFor="let stakeholder of slide">
<browse-stakeholder [stakeholder]="stakeholder"></browse-stakeholder>
</div>
</ng-container>
</div> </div>
<ul *ngIf="stakeholdersSlider" class="uk-switcher"> </div>
<li> </li>
<ng-container </ul>
*ngTemplateOutlet="sliderTemplate; context: {slides: stakeholdersSlider['all']}"></ng-container> <ul class="uk-slider-nav uk-dotnav uk-flex-center uk-margin-medium-top"></ul>
</li>
<li *ngFor="let type of types">
<ng-container
*ngTemplateOutlet="sliderTemplate; context: {slides: stakeholdersSlider[type]}"></ng-container>
</li>
</ul>
</ng-container>
<!-- Slider Template for Tab Content -->
<ng-template #sliderTemplate let-slides="slides">
<div uk-slider class="uk-slider uk-margin-medium-top">
<ul class="uk-slider-items" uk-height-match="target: .uk-card; row: false">
<!-- Margin right -->
<li *ngFor="let slide of slides; let i=index" class="uk-width-1-1">
<div class="uk-padding-small">
<div uk-grid class="uk-grid uk-child-width-1-3@l uk-child-width-1-2@m"
uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-fade; repeat: true">
<ng-container *ngIf="i === 0">
<div *ngFor="let stakeholder of slide" uk-scrollspy-class>
<browse-stakeholder [stakeholder]="stakeholder"></browse-stakeholder>
</div>
</ng-container>
<ng-container *ngIf="i !== 0">
<div *ngFor="let stakeholder of slide">
<browse-stakeholder [stakeholder]="stakeholder"></browse-stakeholder>
</div>
</ng-container>
</div>
</div>
</li>
</ul>
<ul class="uk-slider-nav uk-dotnav uk-flex-center uk-margin-medium-top"></ul>
</div>
</ng-template>
</div> </div>
</ng-template>
</div> </div>
<div #contact </div>
class="uk-section uk-container uk-container-large uk-margin-large-bottom uk-flex uk-flex-center uk-position-relative contact-us"> <div #contact class="uk-section uk-container uk-container-large uk-margin-large-bottom contact-us">
<img class="uk-box-shadow-large one" src="assets/monitor-assets/curators/1.jpg"> <div class="uk-grid" uk-grid>
<img class="uk-box-shadow-large two" src="assets/monitor-assets/curators/2.jpg"> <div class="left uk-position-relative uk-width-1-1 uk-width-1-5@m">
<img class="uk-box-shadow-large three" src="assets/monitor-assets/curators/3.jpg"> <img class="uk-box-shadow-large" src="assets/monitor-assets/avatar1.jpg">
<img class="uk-box-shadow-large four" src="assets/monitor-assets/curators/4.jpg"> </div>
<div class="uk-text-center uk-width-2-3@l uk-width-1-2"> <div class="uk-text-center uk-width-expand">
<h3> <h3>
Need more information or a demo? Get in touch and let us show you in practice how you can apply OpenAIRE Need more information or a demo? Get in touch and let us show you in practice how you can apply OpenAIRE Monitor to your needs<span class="uk-text-primary">.</span>
Monitor to your needs<span class="uk-text-primary">.</span> </h3>
</h3> <a class="uk-button uk-button-primary uk-text-uppercase uk-margin-medium-top uk-margin-medium-bottom"
<a class="uk-button uk-button-primary uk-text-uppercase uk-margin-medium-top uk-margin-medium-bottom" routerLink="/contact-us">Contact us</a></div>
routerLink="/contact-us">Contact us</a> <div class="right uk-position-relative uk-width-1-1 uk-width-1-5@m">
</div> <img class="uk-box-shadow-large" src="assets/monitor-assets/avatar2.jpg">
</div> </div>
</div>
<div *ngIf="isMobile || isServer" class="uk-hidden@m">
<div class="uk-section uk-padding-remove-bottom uk-overflow-hidden home-background">
<div class="uk-container uk-container-large"
uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-slide-bottom-medium; delay: 200">
<div class="uk-margin-large-bottom" style="max-width: 500px;">
<h1 class="uk-heading-small" uk-scrollspy-class>
A new era of <span class="uk-text-primary">monitoring</span> research<span
class="uk-text-primary">.</span>
</h1>
<div class="uk-text-large uk-margin-medium-top" uk-scrollspy-class>
<div>Discover, track and understand trends and impact pathways for your organization.</div>
<div>Make informed decisions.</div>
</div>
</div>
</div>
<div class="uk-container uk-padding-remove-right uk-height-medium uk-position-relative">
<img class="uk-position-absolute" style="width: 250px; right: -10%; bottom:-35%; padding: 1px;"
src="assets/monitor-assets/home/monitor.jpg">
<img class="uk-position-absolute" style="width: 250px; right: -10%; bottom:-35%;"
src="assets/monitor-assets/home/mask.svg">
<div>
<a class="uk-button uk-button-primary uk-text-uppercase uk-position-relative" routerLink="/get-started">Get
Started</a>
</div>
</div>
</div>
<div class="uk-section uk-section-small tablet-section">
<div class="uk-container">
<div>
<span class="uk-text-large uk-text-primary">Funders. Research Institutions. Research Initiatives.</span>
<h2 class="uk-h1 uk-margin-remove-top">Simplify research<br> monitoring & evaluation<span
class="uk-text-primary">.</span></h2>
</div>
<div class="uk-grid uk-child-width-1-1 uk-child-width-1-2@s uk-flex uk-flex-middle uk-margin-medium-top" uk-grid>
<div class="uk-visible@s">
<img src="assets/monitor-assets/home/ipad.png" alt="ipad" loading="lazy">
</div>
<div class="uk-hidden@s uk-margin-medium-left">
<img src="assets/monitor-assets/home/ipad.png" alt="ipad" loading="lazy">
</div>
<div class="uk-margin-medium-bottom">
<div class="uk-grid uk-child-width-1-1" uk-grid>
<ng-container *ngTemplateOutlet="tablet_text"></ng-container>
</div>
</div>
</div>
</div>
</div>
<div class="uk-section uk-section-large uk-position-relative uk-overflow-hidden">
<img class="uk-position-absolute" src="assets/monitor-assets/home/graph.svg" alt="OpenAIRE Graph" loading="lazy"
style="width: 200px; top: -80px; left: -80px;">
<img class="uk-position-absolute" src="assets/monitor-assets/home/graph.svg" alt="OpenAIRE Graph" loading="lazy"
style="width: 200px; top: 60px; right: -145px; transform: rotate(-25deg)">
<div class="uk-container uk-container-large uk-section uk-section-large uk-padding-remove-bottom">
<div class="uk-flex uk-flex-column uk-flex-middle">
<h2 class="uk-h1 uk-text-center uk-padding uk-padding-remove-vertical uk-margin-top">
Tap into the OpenAIRE Research Graph<span class="uk-text-primary">.</span>
</h2>
<div class="uk-text-center">
The OpenAIRE Graph is one of the largest open scholarly record collections
worldwide, key in fostering Open Science and establishing its practices in the daily
research activities. Conceived as a public and transparent good, populated out of data
sources trusted by scientists, the Graph aims at bringing discovery, monitoring, and
assessment of science back in the hands of the scientific community.
</div>
</div>
</div>
<div class="uk-container uk-container-large uk-position-relative uk-overflow-hidden">
<img class="uk-position-absolute" src="assets/monitor-assets/home/graph.svg" alt="OpenAIRE Graph"
loading="lazy"
style="width: 200px; top: 35%; right: -170px; transform: rotate(-100deg);">
<div class="uk-flex uk-flex-center uk-margin-medium-top uk-margin-medium-bottom">
<div class="uk-width-1-1 uk-flex-center uk-grid uk-child-width-1-2" uk-grid
uk-height-match="target: .targetName;"
uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-fade; repeat: true">
<ng-template #numberCardMobile let-numberSize="numberSize" let-name="name" let-url="url">
<a class="uk-position-relative uk-display-block uk-link-reset"
[href]="url" target="_blank" uk-scrollspy-class>
<div class="uk-flex uk-flex-center uk-flex-column uk-margin-auto uk-margin-top">
<div class="uk-text-center">
<div class="uk-text-background uk-text-bold number">{{(numberSize.number|number) + numberSize.size}}</div>
<div class="uk-margin-small-top uk-text-bolder targetName">{{name}}</div>
</div>
</div>
</a>
</ng-template>
<div *ngIf="publicationsSize">
<ng-container *ngTemplateOutlet="numberCardMobile; context: {numberSize: publicationsSize, name: openaireEntities.PUBLICATIONS,
url: 'https://explore.openaire.eu/search/find/research-outcomes?type=publications'}">
</ng-container>
</div>
<div *ngIf="datasetsSize">
<ng-container *ngTemplateOutlet="numberCardMobile; context: {numberSize: datasetsSize, name: openaireEntities.DATASETS,
url: 'https://explore.openaire.eu/search/find/research-outcomes?type=datasets'}">
</ng-container>
</div>
<div *ngIf="softwareSize">
<ng-container *ngTemplateOutlet="numberCardMobile; context: {numberSize: softwareSize, name: openaireEntities.SOFTWARE,
url: 'https://explore.openaire.eu/search/find/research-outcomes?type=software'}">
</ng-container>
</div>
<div *ngIf="otherSize">
<ng-container *ngTemplateOutlet="numberCardMobile; context: {numberSize: otherSize, name: openaireEntities.OTHER,
url: 'https://explore.openaire.eu/search/find/research-outcomes?type=other'}">
</ng-container>
</div>
<div *ngIf="fundersSize">
<ng-container *ngTemplateOutlet="numberCardMobile; context: {numberSize: fundersSize, name: stakeholderUtils.entities.funders,
url: 'https://explore.openaire.eu/search/find/projects'}">
</ng-container>
</div>
</div>
</div>
</div>
</div>
<div class="uk-section uk-section-large uk-container uk-container-large uk-background-muted">
<div class="uk-text-center">
<div class="">
<h3 class="uk-heading-small uk-margin-remove">Openness.</h3>
<h3 class="uk-heading-small uk-margin-remove">Usability.</h3>
<h3 class="uk-heading-small uk-margin-remove">Replicability.</h3>
<h3 class="uk-heading-small uk-text-primary uk-margin-remove">Trust.</h3>
<div class="uk-text-large uk-margin-medium-top uk-margin-medium-bottom">Learn and work with a thriving
community behind you.
</div>
<a class="uk-display-inline-block uk-text-uppercase uk-button uk-button-text"
routerLinkActive="router-link-active" routerLink="/about/learn-how">
<span class="uk-flex uk-flex-middle">
<span>Learn More</span>
</span>
</a>
</div>
<div class="uk-margin-xlarge-top"
uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-fade; delay: 250">
<div class="">
<div uk-scrollspy-class>
<div class="uk-icon-bg-shadow uk-margin-auto">
<icon name="done" [flex]="true" ratio="1.5" visuallyHidden="Global outlook"
customClass="uk-text-background"></icon>
</div>
<h5 class="uk-margin-top">Comprehensive outlook</h5>
<div>
Monitor is built on the <a href="https://graph.openaire.eu/" class="text-graph"
target="_blank">OpenAIRE Graph</a>. A global linked research
graph, a shared data resource from open initiatives around the world. Our indicators cover a
wide range of themes from input to impact.
</div>
</div>
<div class="uk-margin-large-top" uk-scrollspy-class>
<div class="uk-icon-bg-shadow uk-margin-auto">
<icon name="done" [flex]="true" ratio="1.5" visuallyHidden="Customised to your needs"
customClass="uk-text-background"></icon>
</div>
<h5 class="uk-margin-top">Showcasing, monitoring, analysis</h5>
<div>
Customize your dashboard by choosing from a variety of pre-defined metrics and select which
ones to show publicly, which to invited team members, and which are still work in progress
(private).
</div>
</div>
<div class="uk-margin-large-top" uk-scrollspy-class>
<div class="uk-icon-bg-shadow uk-margin-auto">
<icon name="done" [flex]="true" ratio="1.5" visuallyHidden="Transparent methodology"
customClass="uk-text-background"></icon>
</div>
<h5 class="uk-margin-top">Transparent methodology</h5>
<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="uk-margin-large-top" uk-scrollspy-class>
<div class="uk-icon-bg-shadow uk-margin-auto">
<icon name="done" [flex]="true" ratio="1.5" visuallyHidden="Minimum effort to join"
customClass="uk-text-background"></icon>
</div>
<h5 class="uk-margin-top">Minimum effort to join</h5>
<div>
You only share some information with us to include in our backend aggregating and data
mining, and we deliver a view of your world.
</div>
</div>
<div class="uk-margin-large-top" uk-scrollspy-class>
<div class="uk-icon-bg-shadow uk-margin-auto">
<icon name="done" [flex]="true" ratio="1.5" visuallyHidden="Customised to your needs"
customClass="uk-text-background"></icon>
</div>
<h5 class="uk-margin-top">Tailor-made monitoring, responsive to your needs</h5>
<div>
Our experts work with you on demand in one-on-one sessions to provide additional indicators
and curate your data.
</div>
</div>
</div>
</div>
</div>
</div>
<div class="uk-section uk-section-large uk-padding-remove-bottom uk-container uk-container-large">
<div class="uk-margin-bottom">
<h2 class="uk-heading-xlarge">{{stakeholderUtils.entities.stakeholders}} in action<span
class="uk-text-primary">.</span></h2>
<div class="uk-text-large">
View existing {{stakeholderUtils.entities.stakeholders | lowercase}} from collaborating organizations. Get a
preview on how they work and how our service can be customized to serve you.
</div>
</div>
<a class="uk-display-inline-block uk-text-uppercase uk-button uk-button-text"
routerLinkActive="router-link-active" routerLink="/browse">
<span class="uk-flex uk-flex-middle">
<span>Browse</span>
</span>
</a>
</div>
<div class="uk-margin-xlarge-top uk-margin-xlarge-bottom">
<div *ngIf="loading" class="uk-height-large uk-flex uk-flex-column uk-flex-center">
<loading></loading>
</div>
<ng-container *ngIf="!loading">
<div class="uk-padding-small uk-padding-remove-right">
<slider-tabs position="horizontal">
<slider-tab [tabId]="'all'" tabTitle="All"></slider-tab>
<slider-tab *ngFor="let type of types" [tabId]="type"
tabTitle="{{getTitle(type) | titlecase}}"></slider-tab>
</slider-tabs>
</div>
<ul class="uk-switcher uk-margin-top uk-overflow-hidden">
<li [id]="'all'" class="uk-overflow-auto">
<div class="uk-padding-small uk-padding-remove-right"
uk-height-match="target: .uk-card; row: false">
<div class="uk-grid uk-grid-small uk-flex-nowrap"
uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-fade; repeat: true">
<div *ngFor="let stakeholder of stakeholders"
class="uk-width-4-5 uk-width-2-5@s uk-flex-none" uk-scrollspy-class>
<browse-stakeholder [stakeholder]="stakeholder"></browse-stakeholder>
</div>
</div>
</div>
</li>
<li *ngFor="let type of types" [id]="type" class="uk-overflow-auto">
<div class="uk-padding-small uk-padding-remove-right"
uk-height-match="target: .uk-card; row: false">
<div class="uk-grid uk-grid-small uk-flex-nowrap"
uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-fade; repeat: true">
<div *ngFor="let stakeholder of getStakeholdersByType(type)"
class="uk-width-4-5 uk-width-2-5@s uk-flex-none" uk-scrollspy-class>
<browse-stakeholder [stakeholder]="stakeholder"></browse-stakeholder>
</div>
</div>
</div>
</li>
</ul>
</ng-container>
</div>
<div class="uk-section uk-container uk-container-large uk-margin-large-bottom contact-us">
<div class="uk-position-relative">
<h2 class="uk-margin-medium-bottom">
Need more information or a demo?
</h2>
<div class="uk-text-large">
Get in touch and let us show you in practice how you can apply OpenAIRE Monitor to your needs<span
class="uk-text-primary">.</span>
</div>
<a class="uk-button uk-button-primary uk-text-uppercase uk-margin-medium-top uk-margin-medium-bottom"
routerLink="/contact-us">Contact us</a>
</div>
</div> </div>
</div>
</div> </div>

View File

@ -1,24 +1,15 @@
@import (reference) "~src/assets/openaire-theme/less/_import-variables"; @import (reference) "~src/assets/openaire-theme/less/_import-variables";
@home-curator-image-size: 136px;
.home-background { .home-background {
background-color: @global-inverse-color; background-color: @global-inverse-color;
} }
.tablet-section {
background-image:linear-gradient(180deg, @global-inverse-color 0%, @global-muted-background 100%);
background-repeat: no-repeat;
background-position: top;
background-size: cover;
}
@media only screen and (min-width: @breakpoint-medium) { @media only screen and (min-width: @breakpoint-medium) {
.tablet-section { .monitor-dark-logo-background {
background-image:url("~src/assets/monitor-assets/home/monitor-dark-logo.svg"), linear-gradient(180deg, @global-inverse-color 0%, @global-muted-background 100%); background-image: url("~src/assets/monitor-assets/home/monitor-dark-logo.svg");
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: -5% 95%, top; background-position: left 95%;
background-size: 60%, cover; background-size: 65%;
} }
} }
@ -37,39 +28,26 @@
.contact-us { .contact-us {
img { .left img {
position: absolute; position: absolute;
width: @home-curator-image-size; top: 0;
height: @home-curator-image-size; left: 0;
width: 160px;
height: 190px;
object-fit: cover; object-fit: cover;
border-radius: 18px; border-radius: 18px;
transform: matrix(1, -0.07, 0.07, 1, 0, 0);
&.one {
top: 0;
left: @global-medium-gutter + (@home-curator-image-size/2);
transform: rotate(10deg);
}
&.two {
bottom: 0;
left: @global-medium-gutter;
transform: rotate(-10deg);
object-position: top;
}
&.three {
top: 0;
right: @global-medium-gutter;
transform: rotate(-10deg);
object-position: -60px;
}
&.four {
bottom: 0;
right: @global-medium-gutter + (@home-curator-image-size/2);
transform: rotate(-10deg);
object-position: 0;
}
} }
.right img {
position: absolute;
bottom: 0;
right: 0;
width: 160px;
height: 190px;
object-fit: cover;
border-radius: 18px;
transform: matrix(1, 0.07, -0.07, 1, 0, 0);
}
} }

View File

@ -1,12 +1,9 @@
import { import {
AfterViewInit, AfterViewInit,
ChangeDetectorRef,
Component, Component,
ElementRef, ElementRef,
Inject,
OnDestroy, OnDestroy,
OnInit, OnInit,
PLATFORM_ID,
QueryList, QueryList,
ViewChild, ViewChild,
ViewChildren ViewChildren
@ -15,6 +12,7 @@ import {ActivatedRoute, Router} from '@angular/router';
import {Meta, Title} from '@angular/platform-browser'; import {Meta, Title} from '@angular/platform-browser';
import {EnvProperties} from '../openaireLibrary/utils/properties/env-properties'; import {EnvProperties} from '../openaireLibrary/utils/properties/env-properties';
import {PiwikService} from '../openaireLibrary/utils/piwik/piwik.service'; import {PiwikService} from '../openaireLibrary/utils/piwik/piwik.service';
import {ErrorCodes} from '../openaireLibrary/utils/properties/errorCodes'; import {ErrorCodes} from '../openaireLibrary/utils/properties/errorCodes';
import {ErrorMessagesComponent} from '../openaireLibrary/utils/errorMessages.component'; import {ErrorMessagesComponent} from '../openaireLibrary/utils/errorMessages.component';
import {HelperService} from "../openaireLibrary/utils/helper/helper.service"; import {HelperService} from "../openaireLibrary/utils/helper/helper.service";
@ -24,12 +22,7 @@ import {NumberUtils} from "../openaireLibrary/utils/number-utils.class";
import {SearchResearchResultsService} from "../openaireLibrary/services/searchResearchResults.service"; import {SearchResearchResultsService} from "../openaireLibrary/services/searchResearchResults.service";
import {StakeholderService} from "../openaireLibrary/monitor/services/stakeholder.service"; import {StakeholderService} from "../openaireLibrary/monitor/services/stakeholder.service";
import {LocalStorageService} from "../openaireLibrary/services/localStorage.service"; import {LocalStorageService} from "../openaireLibrary/services/localStorage.service";
import { import {Stakeholder, StakeholderEntities, StakeholderInfo} from "../openaireLibrary/monitor/entities/stakeholder";
Stakeholder,
StakeholderEntities,
StakeholderInfo,
StakeholderType
} from "../openaireLibrary/monitor/entities/stakeholder";
import {User} from "../openaireLibrary/login/utils/helper.class"; import {User} from "../openaireLibrary/login/utils/helper.class";
import {UserManagementService} from "../openaireLibrary/services/user-management.service"; import {UserManagementService} from "../openaireLibrary/services/user-management.service";
import {properties} from "../../environments/environment"; import {properties} from "../../environments/environment";
@ -37,9 +30,6 @@ import {Subscriber} from "rxjs";
import {QuickContactService} from '../openaireLibrary/sharedComponents/quick-contact/quick-contact.service'; import {QuickContactService} from '../openaireLibrary/sharedComponents/quick-contact/quick-contact.service';
import {IDeactivateComponent} from "../openaireLibrary/utils/can-exit.guard"; import {IDeactivateComponent} from "../openaireLibrary/utils/can-exit.guard";
import {OpenaireEntities} from "../openaireLibrary/utils/properties/searchFields"; import {OpenaireEntities} from "../openaireLibrary/utils/properties/searchFields";
import {isPlatformServer} from '@angular/common';
import {LayoutService} from '../openaireLibrary/dashboard/sharedComponents/sidebar/layout.service';
import {StakeholderUtils} from "../openaireLibrary/monitor-admin/utils/indicator-utils";
@Component({ @Component({
selector: 'home', selector: 'home',
@ -50,7 +40,12 @@ export class HomeComponent implements OnInit, OnDestroy, AfterViewInit, IDeactiv
public pageTitle = "OpenAIRE | Monitor"; public pageTitle = "OpenAIRE | Monitor";
public description = "OpenAIRE - Monitor, A new era of monitoring research. Open data. Open methodologies. Work together with us to view, understand and visualize research statistics and indicators."; public description = "OpenAIRE - Monitor, A new era of monitoring research. Open data. Open methodologies. Work together with us to view, understand and visualize research statistics and indicators.";
public stakeholders: StakeholderInfo[] = []; public stakeholders: StakeholderInfo[] = [];
public stakeholdersSlider: any; public stakeholdersSlider: {
stakeholders: StakeholderInfo[][];
funders: StakeholderInfo[][];
ris: StakeholderInfo[][];
organizations: StakeholderInfo[][];
};
public selected: Stakeholder = null; public selected: Stakeholder = null;
public pageContents = null; public pageContents = null;
public divContents = null; public divContents = null;
@ -60,22 +55,23 @@ export class HomeComponent implements OnInit, OnDestroy, AfterViewInit, IDeactiv
public errorCodes: ErrorCodes; public errorCodes: ErrorCodes;
public properties: EnvProperties = properties; public properties: EnvProperties = properties;
public openaireEntities = OpenaireEntities; public openaireEntities = OpenaireEntities;
public stakeholderUtils: StakeholderUtils = new StakeholderUtils(); public stakeholderEntities = StakeholderEntities;
public directLink: boolean = true; public directLink: boolean = true;
public publicationsSize: any = null; public publicationsSize: any = null;
public datasetsSize: any = null; public datasetsSize: any = null;
public softwareSize: any = null; public softwareSize: any = null;
public otherSize: any = null; public otherSize: any = null;
public fundersSize: any = null; public fundersSize: any = null;
public showQuickContact: boolean = true;
@ViewChild('AlertModal') modal;
private errorMessages: ErrorMessagesComponent; private errorMessages: ErrorMessagesComponent;
private subscriptions = []; private subscriptions = [];
private mutationObserver: MutationObserver;
private user: User; private user: User;
@ViewChildren('scrolling_element') elements: QueryList<ElementRef>;
@ViewChild('contact') contact: ElementRef; @ViewChild('contact') contact: ElementRef;
isMobile: boolean = false;
isServer: boolean;
constructor( constructor(
private route: ActivatedRoute,
private _router: Router, private _router: Router,
private _meta: Meta, private _meta: Meta,
private _title: Title, private _title: Title,
@ -87,10 +83,7 @@ export class HomeComponent implements OnInit, OnDestroy, AfterViewInit, IDeactiv
private seoService: SEOService, private seoService: SEOService,
private _refineFieldResultsService: RefineFieldResultsService, private _refineFieldResultsService: RefineFieldResultsService,
private _searchResearchResultsService: SearchResearchResultsService, private _searchResearchResultsService: SearchResearchResultsService,
private quickContactService: QuickContactService, private quickContactService: QuickContactService) {
private layoutService: LayoutService,
private cdr: ChangeDetectorRef,
@Inject(PLATFORM_ID) private platform: any) {
this._meta.updateTag({content: this.description}, "name='description'"); this._meta.updateTag({content: this.description}, "name='description'");
this._meta.updateTag({content: this.description}, "property='og:description'"); this._meta.updateTag({content: this.description}, "property='og:description'");
this._meta.updateTag({content: this.pageTitle}, "property='og:title'"); this._meta.updateTag({content: this.pageTitle}, "property='og:title'");
@ -98,15 +91,15 @@ export class HomeComponent implements OnInit, OnDestroy, AfterViewInit, IDeactiv
this.errorCodes = new ErrorCodes(); this.errorCodes = new ErrorCodes();
this.errorMessages = new ErrorMessagesComponent(); this.errorMessages = new ErrorMessagesComponent();
this.status = this.errorCodes.LOADING; this.status = this.errorCodes.LOADING;
this.isServer = isPlatformServer(this.platform);
this.quickContactService.setDisplay(false);
} }
public ngOnInit() { public ngOnInit() {
let url = this.properties.domain + this.properties.baseLink + this._router.url; let url = this.properties.domain + this.properties.baseLink + this._router.url;
this.seoService.createLinkForCanonicalURL(url, false); this.seoService.createLinkForCanonicalURL(url, false);
this._meta.updateTag({content: url}, "property='og:url'"); this._meta.updateTag({content: url}, "property='og:url'");
this.subscriptions.push(this._piwikService.trackView(this.properties, "OpenAIRE Monitor").subscribe()); if (this.properties.enablePiwikTrack && (typeof document !== 'undefined')) {
this.subscriptions.push(this._piwikService.trackView(this.properties, "OpenAIRE Monitor", this.properties.piwikSiteId).subscribe());
}
this.getNumbers(); this.getNumbers();
this.subscriptions.push(this.localStorageService.get().subscribe(value => { this.subscriptions.push(this.localStorageService.get().subscribe(value => {
this.directLink = value; this.directLink = value;
@ -115,10 +108,6 @@ export class HomeComponent implements OnInit, OnDestroy, AfterViewInit, IDeactiv
this.user = user; this.user = user;
this.getStakeholders(); this.getStakeholders();
})); }));
this.layoutService.isMobile.subscribe(isMobile => {
this.isMobile = isMobile;
this.cdr.detectChanges();
});
} }
canExit(): boolean { canExit(): boolean {
@ -127,7 +116,6 @@ export class HomeComponent implements OnInit, OnDestroy, AfterViewInit, IDeactiv
} }
ngOnDestroy() { ngOnDestroy() {
this.quickContactService.setDisplay(true);
this.clear(); this.clear();
} }
@ -139,9 +127,6 @@ export class HomeComponent implements OnInit, OnDestroy, AfterViewInit, IDeactiv
value.disconnect(); value.disconnect();
} }
}); });
if(this.mutationObserver) {
this.mutationObserver.disconnect();
}
} }
ngAfterViewInit() { ngAfterViewInit() {
@ -158,13 +143,36 @@ export class HomeComponent implements OnInit, OnDestroy, AfterViewInit, IDeactiv
}; };
let intersectionObserver = new IntersectionObserver(entries => { let intersectionObserver = new IntersectionObserver(entries => {
entries.forEach(entry => { entries.forEach(entry => {
this.quickContactService.setDisplay(!entry.isIntersecting); if (entry.isIntersecting && this.showQuickContact) {
this.showQuickContact = false;
this.quickContactService.setDisplay(this.showQuickContact);
} else if (!entry.isIntersecting && !this.showQuickContact) {
this.showQuickContact = true;
this.quickContactService.setDisplay(this.showQuickContact);
}
}); });
}, options); }, options);
if(this.contact) { intersectionObserver.observe(this.contact.nativeElement);
intersectionObserver.observe(this.contact.nativeElement); let mutationObserver = new MutationObserver(entries => {
} entries.forEach(entry => {
if (entry.attributeName === 'style') {
let opacities: number[] = this.elements.map(element => +element.nativeElement.style.opacity);
let active: number = opacities.indexOf(Math.max(...opacities));
this.elements.forEach((element, index) => {
if (index === active) {
element.nativeElement.classList.remove('uk-disabled');
} else {
element.nativeElement.classList.add('uk-disabled');
}
})
}
})
});
this.elements.forEach(element => {
mutationObserver.observe(element.nativeElement, {attributes: true});
});
this.subscriptions.push(intersectionObserver); this.subscriptions.push(intersectionObserver);
this.subscriptions.push(mutationObserver);
} }
private getPageContents() { private getPageContents() {
@ -180,7 +188,7 @@ export class HomeComponent implements OnInit, OnDestroy, AfterViewInit, IDeactiv
} }
getNumbers() { getNumbers() {
this.subscriptions.push(this._refineFieldResultsService.getAllRefineFieldResultsByFieldName("funder", "project", this.properties).subscribe( this.subscriptions.push(this._refineFieldResultsService.getRefineFieldsResultsByEntityName(["funder"], "project", this.properties).subscribe(
data => { 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); this.fundersSize = NumberUtils.roundNumber(data[1][0].values.length);
@ -236,16 +244,10 @@ export class HomeComponent implements OnInit, OnDestroy, AfterViewInit, IDeactiv
this.handleError("Error getting number of software data", err); this.handleError("Error getting number of software data", err);
} }
)); ));
} }
get types(): StakeholderType[] {
return this.stakeholderUtils.types.map(option => option.value).filter(type => this.stakeholders.findIndex(stakeholder => stakeholder.type === type) > -1);
}
getTitle(type: string) {
return this.stakeholderUtils.entities[type + 's'] ? this.stakeholderUtils.entities[type + 's'] : type;
}
public getStakeholders() { public getStakeholders() {
this.loading = true; this.loading = true;
this.status = this.errorCodes.LOADING; this.status = this.errorCodes.LOADING;
@ -258,11 +260,11 @@ export class HomeComponent implements OnInit, OnDestroy, AfterViewInit, IDeactiv
this.sort(this.stakeholders); this.sort(this.stakeholders);
this.stakeholders = this.publicStakeholders.concat(this.privateStakeholders); this.stakeholders = this.publicStakeholders.concat(this.privateStakeholders);
this.stakeholdersSlider = { this.stakeholdersSlider = {
all: this.stakeholderSlider(this.stakeholders) stakeholders: this.stakeholderSlider(this.stakeholders),
} funders: this.stakeholderSlider(this.funders),
this.types.forEach(type => { ris: this.stakeholderSlider(this.ris),
this.stakeholdersSlider[type] = this.stakeholderSlider(this.getStakeholdersByType(type)); organizations: this.stakeholderSlider(this.organizations)
}); };
} }
this.loading = false; this.loading = false;
}, },
@ -300,11 +302,31 @@ export class HomeComponent implements OnInit, OnDestroy, AfterViewInit, IDeactiv
get privateStakeholders(): StakeholderInfo[] { get privateStakeholders(): StakeholderInfo[] {
return this.stakeholders.filter(stakeholder => stakeholder.visibility !== "PUBLIC"); return this.stakeholders.filter(stakeholder => stakeholder.visibility !== "PUBLIC");
} }
getStakeholdersByType(type: StakeholderType = null) { get funders(): StakeholderInfo[] {
return this.stakeholders.filter(stakeholder => !type || stakeholder.type === type) if (this.stakeholders) {
return this.stakeholders.filter(stakeholder => stakeholder.type === "funder");
} else {
return [];
}
} }
get ris(): StakeholderInfo[] {
if (this.stakeholders) {
return this.stakeholders.filter(stakeholder => stakeholder.type === "ri");
} else {
return [];
}
}
get organizations(): StakeholderInfo[] {
if (this.stakeholders) {
return this.stakeholders.filter(stakeholder => stakeholder.type === "organization");
} else {
return [];
}
}
private handleError(message: string, error): number { private handleError(message: string, error): number {
let code = ""; let code = "";
if (!error.status) { if (!error.status) {

View File

@ -2,8 +2,11 @@ import {NgModule} from '@angular/core';
import {CommonModule} from '@angular/common'; import {CommonModule} from '@angular/common';
import {FormsModule} from '@angular/forms'; import {FormsModule} from '@angular/forms';
import {RouterModule} from '@angular/router'; import {RouterModule} from '@angular/router';
import {HomeComponent} from './home.component'; import {HomeComponent} from './home.component';
import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard'; import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {PiwikService} from '../openaireLibrary/utils/piwik/piwik.service'; import {PiwikService} from '../openaireLibrary/utils/piwik/piwik.service';
import {ErrorMessagesModule} from '../openaireLibrary/utils/errorMessages.module'; import {ErrorMessagesModule} from '../openaireLibrary/utils/errorMessages.module';
import {HelperModule} from "../openaireLibrary/utils/helper/helper.module"; import {HelperModule} from "../openaireLibrary/utils/helper/helper.module";
@ -20,14 +23,12 @@ import {LogoUrlPipeModule} from "../openaireLibrary/utils/pipes/logoUrlPipe.modu
import {SectionScrollModule} from '../openaireLibrary/utils/section-scroll/section-scroll.module'; import {SectionScrollModule} from '../openaireLibrary/utils/section-scroll/section-scroll.module';
import {LoadingModule} from "../openaireLibrary/utils/loading/loading.module"; import {LoadingModule} from "../openaireLibrary/utils/loading/loading.module";
import {BrowseStakeholderModule} from "../browse-stakeholder/browse-stakeholder.module"; import {BrowseStakeholderModule} from "../browse-stakeholder/browse-stakeholder.module";
import {SliderTabsModule} from '../openaireLibrary/sharedComponents/tabs/slider-tabs.module';
@NgModule({ @NgModule({
imports: [ imports: [
CommonModule, FormsModule, RouterModule, ErrorMessagesModule, OtherPortalsModule, CommonModule, FormsModule, RouterModule, ErrorMessagesModule, OtherPortalsModule,
HelperModule, Schema2jsonldModule, SEOServiceModule, HomeRoutingModule, SearchResearchResultsServiceModule, HelperModule, Schema2jsonldModule, SEOServiceModule, HomeRoutingModule, SearchResearchResultsServiceModule,
RefineFieldResultsServiceModule, AlertModalModule, IconsModule, UrlPrefixModule, LogoUrlPipeModule, RefineFieldResultsServiceModule, AlertModalModule, IconsModule, UrlPrefixModule, LogoUrlPipeModule, SectionScrollModule, LoadingModule, BrowseStakeholderModule
SectionScrollModule, LoadingModule, BrowseStakeholderModule, SliderTabsModule
], ],
declarations: [ declarations: [
HomeComponent HomeComponent

View File

@ -64,7 +64,9 @@ export class MyStakeholdersComponent {
var url = this.properties.domain + this.properties.baseLink + this._router.url; var url = this.properties.domain + this.properties.baseLink + this._router.url;
this.seoService.createLinkForCanonicalURL(url, false); this.seoService.createLinkForCanonicalURL(url, false);
this._meta.updateTag({content: url}, "property='og:url'"); this._meta.updateTag({content: url}, "property='og:url'");
this.subscriptions.push(this._piwikService.trackView(this.properties, "OpenAIRE Connect").subscribe()); if (this.properties.enablePiwikTrack && (typeof document !== 'undefined')) {
this.subscriptions.push(this._piwikService.trackView(this.properties, "OpenAIRE Connect", this.properties.piwikSiteId).subscribe());
}
this.subscriptions.push(this.userManagementService.getUserInfo().subscribe(user => { this.subscriptions.push(this.userManagementService.getUserInfo().subscribe(user => {
this.user = user; this.user = user;
if (this.user) { if (this.user) {
@ -103,7 +105,7 @@ export class MyStakeholdersComponent {
this.stakeholders = []; this.stakeholders = [];
this.subscriptions.push(this.stakeholderService.getMyStakeholders(properties.monitorServiceAPIURL).subscribe( this.subscriptions.push(this.stakeholderService.getMyStakeholders(properties.monitorServiceAPIURL).subscribe(
stakeholders => { stakeholders => {
this.stakeholders = StakeholderInfo.toStakeholderInfo(stakeholders.standalone.concat(stakeholders.umbrella), this.user); this.stakeholders = StakeholderInfo.toStakeholderInfo(stakeholders, this.user);
this.sort(this.stakeholders); this.sort(this.stakeholders);
this.loading = false; this.loading = false;
}, },

@ -1 +1 @@
Subproject commit 4396999ce03bb96543f258f64e64459546b86e19 Subproject commit 10b386179c34b3e33e4466b17a9622c7c81e67fc

View File

@ -1,4 +1,4 @@
import {ChangeDetectorRef, Component, ViewChild} from "@angular/core"; import {Component, ViewChild} from "@angular/core";
import {SearchUtilsClass} from "../openaireLibrary/searchPages/searchUtils/searchUtils.class"; import {SearchUtilsClass} from "../openaireLibrary/searchPages/searchUtils/searchUtils.class";
import {ErrorMessagesComponent} from "../openaireLibrary/utils/errorMessages.component"; import {ErrorMessagesComponent} from "../openaireLibrary/utils/errorMessages.component";
import {ErrorCodes} from "../openaireLibrary/utils/properties/errorCodes"; import {ErrorCodes} from "../openaireLibrary/utils/properties/errorCodes";
@ -11,21 +11,19 @@ import {StringUtils} from "../openaireLibrary/utils/string-utils.class";
import {UserManagementService} from "../openaireLibrary/services/user-management.service"; import {UserManagementService} from "../openaireLibrary/services/user-management.service";
import {StakeholderService} from "../openaireLibrary/monitor/services/stakeholder.service"; import {StakeholderService} from "../openaireLibrary/monitor/services/stakeholder.service";
import {NewSearchPageComponent, SearchForm} from "../openaireLibrary/searchPages/searchUtils/newSearchPage.component"; import {NewSearchPageComponent, SearchForm} from "../openaireLibrary/searchPages/searchUtils/newSearchPage.component";
import {StakeholderInfo, StakeholderType} from "../openaireLibrary/monitor/entities/stakeholder"; import {StakeholderEntities, StakeholderInfo} from "../openaireLibrary/monitor/entities/stakeholder";
import {properties} from "../../environments/environment"; import {properties} from "../../environments/environment";
import {Subscriber} from "rxjs"; import {Subscriber} from "rxjs";
import {Breadcrumb} from "../openaireLibrary/utils/breadcrumbs/breadcrumbs.component"; import {Breadcrumb} from "../openaireLibrary/utils/breadcrumbs/breadcrumbs.component";
import {TitleCasePipe} from "@angular/common"; import {TitleCasePipe} from "@angular/common";
import {LayoutService} from "../openaireLibrary/dashboard/sharedComponents/sidebar/layout.service";
import {StakeholderUtils} from "../openaireLibrary/monitor-admin/utils/indicator-utils";
@Component({ @Component({
selector: 'search-stakeholders', selector: 'search-stakeholders',
template: ` template: `
<new-search-page pageTitle="OpenAIRE-Monitor | Browse {{stakeholderUtils.entities.stakeholders}}" <new-search-page pageTitle="OpenAIRE-Monitor | Browse {{this.stakeholderEntities.STAKEHOLDERS}}"
[hasPrefix]=false [hasPrefix]=false [piwikSiteId]="piwikSiteId"
[formPlaceholderText]="'Search ' + (!isMobile?'OpenAIRE Monitor ':'') +stakeholderUtils.entities.stakeholders" [formPlaceholderText]="'Search OpenAIRE Monitor ' + this.stakeholderEntities.STAKEHOLDERS"
[type]="(results.length > 1) ? stakeholderUtils.entities.stakeholders:stakeholderUtils.entities.stakeholders" [type]="(results.length > 1) ? this.stakeholderEntities.STAKEHOLDERS:this.stakeholderEntities.STAKEHOLDER"
entityType="stakeholder" entityType="stakeholder"
[results]="results" [searchUtils]="searchUtils" [results]="results" [searchUtils]="searchUtils"
[showResultCount]=true [showResultCount]=true
@ -40,11 +38,11 @@ import {StakeholderUtils} from "../openaireLibrary/monitor-admin/utils/indicator
` `
}) })
export class SearchStakeholdersComponent { export class SearchStakeholdersComponent {
public piwikSiteId = null;
private errorCodes: ErrorCodes; private errorCodes: ErrorCodes;
private errorMessages: ErrorMessagesComponent; private errorMessages: ErrorMessagesComponent;
public results: StakeholderInfo[] = []; public results: StakeholderInfo[] = [];
public totalResults: StakeholderInfo[]; public totalResults: StakeholderInfo[];
public stakeholderUtils: StakeholderUtils = new StakeholderUtils();
public subscriptions = []; public subscriptions = [];
public filters = []; public filters = [];
public searchFields: SearchFields = new SearchFields(); public searchFields: SearchFields = new SearchFields();
@ -66,9 +64,9 @@ export class SearchStakeholdersComponent {
}; };
public keyword = ""; public keyword = "";
public searchLink; public searchLink;
public breadcrumbs: Breadcrumb[] = [{name: 'home', route: '/'}, {name: 'Browse ' + this.stakeholderUtils.entities.stakeholders}]; public stakeholderEntities = StakeholderEntities;
public breadcrumbs: Breadcrumb[] = [{name: 'home', route: '/'}, {name: 'Browse ' + this.stakeholderEntities.STAKEHOLDERS}];
public searchForm: SearchForm = {class: 'uk-background-muted', dark: false}; public searchForm: SearchForm = {class: 'uk-background-muted', dark: false};
public isMobile: boolean = false;
properties: EnvProperties = properties; properties: EnvProperties = properties;
@ViewChild(NewSearchPageComponent, {static: true}) searchPage: NewSearchPageComponent; @ViewChild(NewSearchPageComponent, {static: true}) searchPage: NewSearchPageComponent;
private user: User; private user: User;
@ -76,15 +74,14 @@ export class SearchStakeholdersComponent {
constructor(private route: ActivatedRoute, constructor(private route: ActivatedRoute,
private _stakeholderService: StakeholderService, private _stakeholderService: StakeholderService,
private userManagementService: UserManagementService, private userManagementService: UserManagementService,
public titleCasePipe: TitleCasePipe, public titleCasePipe: TitleCasePipe) {
private layoutService: LayoutService,
private cdr: ChangeDetectorRef) {
this.errorCodes = new ErrorCodes(); this.errorCodes = new ErrorCodes();
this.errorMessages = new ErrorMessagesComponent(); this.errorMessages = new ErrorMessagesComponent();
this.searchUtils.status = this.errorCodes.LOADING; this.searchUtils.status = this.errorCodes.LOADING;
} }
public ngOnInit() { public ngOnInit() {
this.piwikSiteId = this.properties.piwikSiteId;
this.baseUrl = this.properties.searchLinkToStakeholders; this.baseUrl = this.properties.searchLinkToStakeholders;
this.subscriptions.push(this.route.queryParams.subscribe(params => { this.subscriptions.push(this.route.queryParams.subscribe(params => {
this.searchPage.resultsPerPage = 10; this.searchPage.resultsPerPage = 10;
@ -101,21 +98,17 @@ export class SearchStakeholdersComponent {
this.searchPage.refineFields = this.refineFields; this.searchPage.refineFields = this.refineFields;
this.searchLink = this.properties.searchLinkToStakeholders; this.searchLink = this.properties.searchLinkToStakeholders;
this.selectedFields = []; this.selectedFields = [];
this.searchPage.prepareSearchPage(this.fieldIds, this.selectedFields, this.refineFields, [], [], this.fieldIdsMap, null, params, "stakeholder", null); this.searchPage.prepareSearchPage(this.fieldIds, this.selectedFields, this.refineFields, [], this.fieldIdsMap, null, params, "stakeholder", null);
let queryParams = params; let queryParams = params;
if (typeof document !== 'undefined') { if (typeof document !== 'undefined') {
this.subscriptions.push(this.userManagementService.getUserInfo().subscribe(user => { this.subscriptions.push(this.userManagementService.getUserInfo().subscribe(user => {
this.user = user; this.user = user;
this.initResults(queryParams); this.initFunders(queryParams);
})); }));
} else { } else {
this.initResults(queryParams); this.initFunders(queryParams);
} }
})); }));
this.layoutService.isMobile.subscribe(isMobile => {
this.isMobile = isMobile;
this.cdr.detectChanges();
})
} }
ngOnDestroy() { ngOnDestroy() {
@ -126,19 +119,28 @@ export class SearchStakeholdersComponent {
}); });
} }
private parseResults(data: any) {
for (let i = 0; i < data.length; i++) {
this.totalResults[i] = data[i];
this.totalResults[i].isManager = this.isManager(data[i]);
this.totalResults[i].isMember = this.isMember(data[i]);
}
}
/** /**
* Initialize stakeholders from Communities APIs * Initialize stakeholders from Communities APIs
* *
* @param params * @param params
*/ */
private initResults(params) { private initFunders(params) {
if (this.totalResults) { if (this.totalResults) {
this.totalResults = StakeholderInfo.toStakeholderInfo(this.totalResults, this.user); this.parseResults(this.totalResults);
this._getResults(params); this._getResults(params);
} else { } else {
this.subscriptions.push(this._stakeholderService.getStakeholders(this.properties.monitorServiceAPIURL).subscribe( this.subscriptions.push(this._stakeholderService.getStakeholders(this.properties.monitorServiceAPIURL).subscribe(
data => { data => {
this.totalResults = StakeholderInfo.toStakeholderInfo(data, this.user); this.totalResults = [];
this.parseResults(data);
this._getResults(params); this._getResults(params);
}, },
err => { err => {
@ -421,9 +423,14 @@ export class SearchStakeholdersComponent {
}) })
} }
} }
get types(): StakeholderType[] { private isManager(stakeholder) {
return this.stakeholderUtils.types.map(option => option.value).filter(type => this.totalResults.findIndex(stakeholder => stakeholder.type === type) > -1); return Session.isPortalAdministrator(this.user) || Session.isMonitorCurator(this.user)
|| Session.isCommunityCurator(this.user) || Session.isManager(stakeholder.type, stakeholder.alias, this.user);
}
private isMember(stakeholder) {
return this.isManager(stakeholder) || Session.isSubscribedTo(stakeholder.type, stakeholder.alias, this.user);
} }
/** /**
@ -437,8 +444,8 @@ export class SearchStakeholdersComponent {
let value_original_ids = []; let value_original_ids = [];
filter_names.push("Type"); filter_names.push("Type");
filter_ids.push("type"); filter_ids.push("type");
value_names.push(this.types.map(type => this.stakeholderUtils.entities[type + 's'])); value_names.push([this.stakeholderEntities.FUNDERS, this.titleCasePipe.transform(this.stakeholderEntities.RIS), this.titleCasePipe.transform(this.stakeholderEntities.ORGANIZATIONS)]);
value_original_ids.push(this.types); value_original_ids.push(["funder", "ri", "organization"]);
filter_names.push("Accessibility"); filter_names.push("Accessibility");
filter_ids.push("access"); filter_ids.push("access");
if (!this.user) { if (!this.user) {

View File

@ -1,41 +0,0 @@
<div class="uk-visible@m">
<div class="uk-background-muted">
<div class="uk-container uk-container-large uk-section uk-section-small">
<div class="uk-padding-small uk-padding-remove-horizontal">
<breadcrumbs [breadcrumbs]="breadcrumbs"></breadcrumbs>
</div>
<div class="uk-flex uk-flex-middle" uk-scrollspy-class>
<div class="uk-width-1-2 uk-margin-medium-bottom">
<h1 class="uk-margin-medium-top">How can we help you?</h1>
<div class="uk-margin-medium-bottom">Monitor expert support team is ready and excited to help.</div>
<a routerLink="/contact-us" class="uk-button uk-button-primary">Contact Us</a>
</div>
<div class="uk-position-relative uk-width-1-2 uk-visible@l contact-us">
<img class="uk-box-shadow-large one" src="../../assets/monitor-assets/curators/1.jpg">
<img class="uk-box-shadow-large two" src="../../assets/monitor-assets/curators/2.jpg">
<img class="uk-box-shadow-large three" src="../../assets/monitor-assets/curators/3.jpg">
<img class="uk-box-shadow-large four" src="../../assets/monitor-assets/curators/4.jpg">
</div>
</div>
</div>
</div>
<div class="uk-margin-large-top">
<h3 class="uk-text-center">Frequently Asked Questions</h3>
</div>
<helper *ngIf="pageContents" [texts]="pageContents.top"></helper>
</div>
<div class="uk-hidden@m">
<div class="uk-background-muted">
<div class="uk-section-small uk-container uk-container-large">
<div class="uk-text-center" uk-scrollspy-class>
<h1 class="uk-margin-top">How can we help you?</h1>
<div class="uk-margin-medium-bottom">Monitor expert support team is ready and excited to help.</div>
<a routerLink="/contact-us" class="uk-button uk-button-small uk-button-primary">Contact Us</a>
</div>
</div>
</div>
<div class="uk-margin-medium-top">
<h3 class="uk-text-center">Frequently Asked Questions</h3>
</div>
<helper *ngIf="pageContents" [texts]="pageContents.top"></helper>
</div>

View File

@ -1,44 +0,0 @@
@import (reference) "~../../assets/openaire-theme/less/_import-variables";
@faqs-curator-image-size: 136px;
@faqs-contact-us-height: 450px;
.contact-us {
height: @faqs-contact-us-height;
img {
position: absolute;
width: @faqs-curator-image-size;
height: @faqs-curator-image-size;
object-fit: cover;
border-radius: 18px;
&.one {
top: @global-medium-gutter;
right: @global-medium-gutter + (@faqs-curator-image-size/2);
transform: rotate(10deg);
}
&.two {
bottom: @global-medium-gutter;
right: @global-medium-gutter + (@faqs-curator-image-size);
transform: rotate(-10deg);
object-position: top;
}
&.three {
top: 0;
left: @global-medium-gutter + (@faqs-curator-image-size);
transform: rotate(-10deg);
object-position: -60px;
}
&.four {
bottom: 2*@global-medium-gutter;
left: 2*@global-medium-gutter;
transform: rotate(-10deg);
object-position: 0;
}
}
}

View File

@ -1,22 +0,0 @@
import {CommonModule} from "@angular/common";
import {NgModule} from "@angular/core";
import {RouterModule} from "@angular/router";
import {PreviousRouteRecorder} from "../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
import {SupportComponent} from "./support.component";
import {BreadcrumbsModule} from "../openaireLibrary/utils/breadcrumbs/breadcrumbs.module";
import {PiwikService} from "../openaireLibrary/utils/piwik/piwik.service";
import {HelperModule} from "../openaireLibrary/utils/helper/helper.module";
@NgModule({
declarations: [SupportComponent],
imports: [CommonModule, RouterModule.forChild([
{
path: '',
component: SupportComponent,
data: {extraOffset: 50}
}
]), BreadcrumbsModule, HelperModule],
exports: [SupportComponent],
providers: [PreviousRouteRecorder, PiwikService]
})
export class SupportModule {}

@ -1 +1 @@
Subproject commit 5026b8b38fcae493ec7bcdc272bf167798c18fa3 Subproject commit 24779729b6f6bd4f099ed5645786b6452120d3d6

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

View File

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 303 KiB

View File

@ -1,159 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="418.875" height="364.357" viewBox="0 0 418.875 364.357">
<defs>
<filter id="dark" x="228.772" y="231.79" width="132.567" height="132.567" filterUnits="userSpaceOnUse">
<feOffset dx="15" dy="15" input="SourceAlpha"/>
<feGaussianBlur stdDeviation="12.5" result="blur"/>
<feFlood flood-opacity="0.102"/>
<feComposite operator="in" in2="blur"/>
<feComposite in="SourceGraphic"/>
</filter>
<filter id="light" x="198.772" y="201.79" width="132.567" height="132.567" filterUnits="userSpaceOnUse">
<feOffset dx="-15" dy="-15" input="SourceAlpha"/>
<feGaussianBlur stdDeviation="12.5" result="blur-2"/>
<feFlood flood-color="#fff"/>
<feComposite operator="in" in2="blur-2"/>
<feComposite in="SourceGraphic"/>
</filter>
<filter id="dark-2" x="65.992" y="30" width="132.567" height="132.567" filterUnits="userSpaceOnUse">
<feOffset dx="15" dy="15" input="SourceAlpha"/>
<feGaussianBlur stdDeviation="12.5" result="blur-3"/>
<feFlood flood-opacity="0.102"/>
<feComposite operator="in" in2="blur-3"/>
<feComposite in="SourceGraphic"/>
</filter>
<filter id="light-2" x="35.992" y="0" width="132.567" height="132.567" filterUnits="userSpaceOnUse">
<feOffset dx="-15" dy="-15" input="SourceAlpha"/>
<feGaussianBlur stdDeviation="12.5" result="blur-4"/>
<feFlood flood-color="#fff"/>
<feComposite operator="in" in2="blur-4"/>
<feComposite in="SourceGraphic"/>
</filter>
<filter id="dark-3" x="30" y="185.9" width="132.567" height="132.567" filterUnits="userSpaceOnUse">
<feOffset dx="15" dy="15" input="SourceAlpha"/>
<feGaussianBlur stdDeviation="12.5" result="blur-5"/>
<feFlood flood-opacity="0.102"/>
<feComposite operator="in" in2="blur-5"/>
<feComposite in="SourceGraphic"/>
</filter>
<filter id="light-3" x="0" y="155.9" width="132.567" height="132.567" filterUnits="userSpaceOnUse">
<feOffset dx="-15" dy="-15" input="SourceAlpha"/>
<feGaussianBlur stdDeviation="12.5" result="blur-6"/>
<feFlood flood-color="#fff"/>
<feComposite operator="in" in2="blur-6"/>
<feComposite in="SourceGraphic"/>
</filter>
<filter id="dark-4" x="165.979" y="45.9" width="132.567" height="132.567" filterUnits="userSpaceOnUse">
<feOffset dx="15" dy="15" input="SourceAlpha"/>
<feGaussianBlur stdDeviation="12.5" result="blur-7"/>
<feFlood flood-opacity="0.102"/>
<feComposite operator="in" in2="blur-7"/>
<feComposite in="SourceGraphic"/>
</filter>
<filter id="light-4" x="135.979" y="15.9" width="132.567" height="132.567" filterUnits="userSpaceOnUse">
<feOffset dx="-15" dy="-15" input="SourceAlpha"/>
<feGaussianBlur stdDeviation="12.5" result="blur-8"/>
<feFlood flood-color="#fff"/>
<feComposite operator="in" in2="blur-8"/>
<feComposite in="SourceGraphic"/>
</filter>
<filter id="dark-5" x="264.764" y="75.891" width="132.567" height="132.567" filterUnits="userSpaceOnUse">
<feOffset dx="15" dy="15" input="SourceAlpha"/>
<feGaussianBlur stdDeviation="12.5" result="blur-9"/>
<feFlood flood-opacity="0.102"/>
<feComposite operator="in" in2="blur-9"/>
<feComposite in="SourceGraphic"/>
</filter>
<filter id="light-5" x="234.764" y="45.891" width="132.567" height="132.567" filterUnits="userSpaceOnUse">
<feOffset dx="-15" dy="-15" input="SourceAlpha"/>
<feGaussianBlur stdDeviation="12.5" result="blur-10"/>
<feFlood flood-color="#fff"/>
<feComposite operator="in" in2="blur-10"/>
<feComposite in="SourceGraphic"/>
</filter>
<filter id="dark-6" x="128.412" y="208.621" width="132.567" height="132.567" filterUnits="userSpaceOnUse">
<feOffset dx="15" dy="15" input="SourceAlpha"/>
<feGaussianBlur stdDeviation="12.5" result="blur-11"/>
<feFlood flood-opacity="0.102"/>
<feComposite operator="in" in2="blur-11"/>
<feComposite in="SourceGraphic"/>
</filter>
<filter id="light-6" x="98.412" y="178.621" width="132.567" height="132.567" filterUnits="userSpaceOnUse">
<feOffset dx="-15" dy="-15" input="SourceAlpha"/>
<feGaussianBlur stdDeviation="12.5" result="blur-12"/>
<feFlood flood-color="#fff"/>
<feComposite operator="in" in2="blur-12"/>
<feComposite in="SourceGraphic"/>
</filter>
</defs>
<g id="Group_13415" data-name="Group 13415" transform="translate(-799.043 -94.379)">
<g id="Group_12983" data-name="Group 12983" transform="translate(86.549 -222.191) rotate(13)">
<path id="Path_104359" data-name="Path 104359" d="M-18163.937-17731.363s95.709-17.684,176.221-17.684,199.334,3.746,180.857,26.24-236.955,67.047-236.955,67.047-182.137,44.2-120.123,64.879,357.078,0,357.078,0" transform="translate(19010.223 17943)" fill="none" stroke="#dedede" stroke-width="1"/>
<g id="Group_12980" data-name="Group 12980" transform="translate(931.002 -818)">
<g id="Group_12847" data-name="Group 12847" transform="translate(147 1155)">
<g transform="matrix(0.97, -0.22, 0.22, 0.97, -312.56, -188.82)" filter="url(#dark)">
<rect id="dark-7" data-name="dark" width="48" height="48" rx="24" transform="translate(262.07 254.29) rotate(13)" fill="#f9f9f9"/>
</g>
<g transform="matrix(0.97, -0.22, 0.22, 0.97, -312.56, -188.82)" filter="url(#light)">
<rect id="light-7" data-name="light" width="48" height="48" rx="24" transform="translate(262.07 254.29) rotate(13)" fill="#f9f9f9"/>
</g>
<rect id="neutral" width="48" height="48" rx="24" transform="translate(-0.001 -0.001)" fill="#f9f9f9"/>
</g>
</g>
</g>
<g id="Group_12979" data-name="Group 12979" transform="translate(1014.92 -1011.586) rotate(13)">
<g id="Group_12847-2" data-name="Group 12847" transform="translate(147 1155)">
<g transform="matrix(0.97, -0.22, 0.22, 0.97, -108.56, -28.82)" filter="url(#dark-2)">
<rect id="dark-8" data-name="dark" width="48" height="48" rx="24" transform="translate(99.29 52.5) rotate(13)" fill="#f9f9f9"/>
</g>
<g transform="matrix(0.97, -0.22, 0.22, 0.97, -108.56, -28.82)" filter="url(#light-2)">
<rect id="light-8" data-name="light" width="48" height="48" rx="24" transform="translate(99.29 52.5) rotate(13)" fill="#f9f9f9"/>
</g>
<rect id="neutral-2" data-name="neutral" width="48" height="48" rx="24" transform="translate(-0.001 -0.001)" fill="#f9f9f9"/>
</g>
</g>
<g id="Group_12982" data-name="Group 12982" transform="translate(978.928 -855.686) rotate(13)">
<g id="Group_12847-3" data-name="Group 12847" transform="translate(147 1155)">
<g transform="matrix(0.97, -0.22, 0.22, 0.97, -108.56, -188.82)" filter="url(#dark-3)">
<rect id="dark-9" data-name="dark" width="48" height="48" rx="24" transform="translate(63.3 208.4) rotate(13)" fill="#f9f9f9"/>
</g>
<g transform="matrix(0.97, -0.22, 0.22, 0.97, -108.56, -188.82)" filter="url(#light-3)">
<rect id="light-9" data-name="light" width="48" height="48" rx="24" transform="translate(63.3 208.4) rotate(13)" fill="#f9f9f9"/>
</g>
<rect id="neutral-3" data-name="neutral" width="48" height="48" rx="24" transform="translate(-0.001 -0.001)" fill="#f9f9f9"/>
</g>
</g>
<g id="Group_12977" data-name="Group 12977" transform="translate(1114.906 -995.686) rotate(13)">
<g id="Group_12847-4" data-name="Group 12847" transform="translate(147 1155)">
<g transform="matrix(0.97, -0.22, 0.22, 0.97, -209.56, -21.82)" filter="url(#dark-4)">
<rect id="dark-10" data-name="dark" width="48" height="48" rx="24" transform="translate(199.28 68.4) rotate(13)" fill="#f9f9f9"/>
</g>
<g transform="matrix(0.97, -0.22, 0.22, 0.97, -209.56, -21.82)" filter="url(#light-4)">
<rect id="light-10" data-name="light" width="48" height="48" rx="24" transform="translate(199.28 68.4) rotate(13)" fill="#f9f9f9"/>
</g>
<rect id="neutral-4" data-name="neutral" width="48" height="48" rx="24" transform="translate(-0.001 -0.001)" fill="#f9f9f9"/>
</g>
</g>
<g id="Group_12978" data-name="Group 12978" transform="translate(1213.691 -965.695) rotate(13)">
<g id="Group_12847-5" data-name="Group 12847" transform="translate(147 1155)">
<g transform="matrix(0.97, -0.22, 0.22, 0.97, -312.56, -28.82)" filter="url(#dark-5)">
<rect id="dark-11" data-name="dark" width="48" height="48" rx="24" transform="translate(298.06 98.39) rotate(13)" fill="#f9f9f9"/>
</g>
<g transform="matrix(0.97, -0.22, 0.22, 0.97, -312.56, -28.82)" filter="url(#light-5)">
<rect id="light-11" data-name="light" width="48" height="48" rx="24" transform="translate(298.06 98.39) rotate(13)" fill="#f9f9f9"/>
</g>
<rect id="neutral-5" data-name="neutral" width="48" height="48" rx="24" transform="translate(-0.001 -0.001)" fill="#f9f9f9"/>
</g>
</g>
<g id="Group_12981" data-name="Group 12981" transform="translate(1077.34 -832.965) rotate(13)">
<g id="Group_12847-6" data-name="Group 12847" transform="translate(147 1155)">
<g transform="matrix(0.97, -0.22, 0.22, 0.97, -209.56, -188.82)" filter="url(#dark-6)">
<rect id="dark-12" data-name="dark" width="48" height="48" rx="24" transform="translate(161.71 231.12) rotate(13)" fill="#f9f9f9"/>
</g>
<g transform="matrix(0.97, -0.22, 0.22, 0.97, -209.56, -188.82)" filter="url(#light-6)">
<rect id="light-12" data-name="light" width="48" height="48" rx="24" transform="translate(161.71 231.12) rotate(13)" fill="#f9f9f9"/>
</g>
<rect id="neutral-6" data-name="neutral" width="48" height="48" rx="24" transform="translate(-0.001 -0.001)" fill="#f9f9f9"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 566 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 MiB

@ -1 +1 @@
Subproject commit 6524ee362c8fc8fa6e482144920e305198e54fc8 Subproject commit a9acdff7b3249794e002bffff52c07babc3d9d06

View File

@ -1,16 +1,97 @@
import {EnvProperties} from "../app/openaireLibrary/utils/properties/env-properties"; import {EnvProperties} from "../app/openaireLibrary/utils/properties/env-properties";
import {common, commonBeta} from "../app/openaireLibrary/utils/properties/environments/environment";
let props: EnvProperties = {
environment: "beta",
enablePiwikTrack: true,
adminToolsAPIURL: "https://beta.services.openaire.eu/uoa-monitor-service/",
adminToolsPortalType: "monitor",
adminToolsCommunity: "monitor",
domain : "https://beta.monitor.openaire.eu",
afterLoginRedirectLink: '/my-dashboards',
};
export let properties: EnvProperties = { export let properties: EnvProperties = {
...common, ...commonBeta, ...props environment: "beta",
} enablePiwikTrack: true,
useCache: true,
showContent: true,
framesAPIURL: "https://beta.openaire.eu/stats3/",
statisticsAPIURL: "https://beta.services.openaire.eu/stats-api/",
statisticsFrameAPIURL: "https://beta.openaire.eu/stats/",
statisticsFrameNewAPIURL: "https://stats.madgik.di.uoa.gr/stats-api/",
useNewStatistisTool: true,
claimsAPIURL: "https://beta.services.openaire.eu/claims/rest/claimsService/",
searchAPIURLLAst: "https://beta.services.openaire.eu/search/v2/api/",
searchResourcesAPIURL: "https://beta.services.openaire.eu/search/v2/api/resources",
openCitationsAPIURL: "https://services.openaire.eu/opencitations/getCitations?id=",
csvAPIURL: "https://beta.services.openaire.eu/search/v2/api/reports",
searchCrossrefAPIURL: "https://api.crossref.org/works",
searchDataciteAPIURL: "https://api.datacite.org/works",
searchOrcidURL: "https://pub.orcid.org/v2.1/",
orcidURL: "https://orcid.org/",
doiURL: "https://dx.doi.org/",
pmcURL: "http://europepmc.org/articles/",
pmidURL: "https://www.ncbi.nlm.nih.gov/pubmed/",
handleURL: "http://hdl.handle.net/",
cordisURL: "http://cordis.europa.eu/projects/",
openDoarURL: "http://v2.sherpa.ac.uk/id/repository/",
r3DataURL: "http://service.re3data.org/repository/",
zenodo: "https://zenodo.org/",
zenodoCommunities: "https://zenodo.org/api/communities/",
openAccess: "https://www.openaire.eu/support/faq#article-id-234",
openAccessRepo: "https://www.openaire.eu/support/faq#article-id-310",
fp7Guidlines: "https://www.openaire.eu/open-access-in-fp7-seventh-research-framework-programme",
h2020Guidlines: "https://www.openaire.eu/oa-publications/h2020/open-access-in-horizon-2020",
ercGuidlines: "http://erc.europa.eu/sites/default/files/document/file/ERC_Open_Access_Guidelines-revised_2014.pdf",
helpdesk: "https://www.openaire.eu/support/helpdesk",
utilsService: "https://demo.openaire.eu/utils-service",
vocabulariesAPI: "https://beta.services.openaire.eu/provision/mvc/vocabularies/",
piwikBaseUrl: "https://analytics.openaire.eu/piwik.php?idsite=",
piwikSiteId: "298",
registryUrl: 'https://beta.services.openaire.eu/uoa-user-management/api/registry/',
loginUrl: "https://beta.services.openaire.eu/login-service/openid_connect_login",
userInfoUrl: "https://beta.services.openaire.eu/login-service/userInfo",
logoutUrl: "https://beta.services.openaire.eu/login-service/openid_logout",
cookieDomain: ".openaire.eu",
feedbackmail: "feedback@openaire.eu",
cacheUrl: "https://demo.openaire.eu/cache/get?url=",
monitorServiceAPIURL: "https://beta.services.openaire.eu/uoa-monitor-service/",
adminToolsAPIURL: "https://beta.services.openaire.eu/uoa-monitor-service/",
adminToolsCommunity: "monitor",
adminToolsPortalType: "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/",
communitiesAPI: "https://beta.services.openaire.eu/openaire/community/communities",
csvLimit: 2000,
pagingLimit: 20,
resultsPerPage: 10,
baseLink : "",
domain : "https://beta.monitor.openaire.eu",
afterLoginRedirectLink: '/my-dashboards',
searchLinkToResult: "/search/result?id=",
searchLinkToPublication: "/search/publication?articleId=",
searchLinkToProject: "/search/project?projectId=",
searchLinkToDataProvider: "/search/dataprovider?datasourceId=",
searchLinkToDataset: "/search/dataset?datasetId=",
searchLinkToSoftwareLanding: "/search/software?softwareId=",
searchLinkToOrganization: "/search/organization?organizationId=",
searchLinkToOrp: "/search/other?orpId=",
searchLinkToStakeholders: "/browse",
searchLinkToResults: "/search/find/research-outcomes",
searchLinkToDataProviders: "/search/find/dataproviders",
searchLinkToProjects: "/search/find/projects",
searchLinkToOrganizations: "/search/find/organizations",
searchLinkToCompatibleDataProviders: "/search/content-providers",
searchLinkToEntityRegistriesDataProviders: "/search/entity-registries",
searchLinkToJournals: "/search/journals",
searchLinkToAdvancedResults: "/search/advanced/research-outcomes",
searchLinkToAdvancedProjects: "/search/advanced/projects",
searchLinkToAdvancedDataProviders: "/search/advanced/dataproviders",
searchLinkToAdvancedOrganizations: "/search/advanced/organizations",
errorLink: '/error',
lastIndexInformationLink: "https://beta.openaire.eu/aggregation-and-content-provision-workflows",
showLastIndexInformationLink: true,
widgetLink: "https://beta.openaire.eu/index.php?option=com_openaire&view=widget&format=raw&projectId=",
claimsInformationLink: "https://beta.openaire.eu/linking",
depositLearnHowPage: "/participate/deposit/learn-how",
depositSearchPage: "/participate/deposit/search",
shareInZenodoPage: "/participate/deposit/zenodo",
reCaptchaSiteKey: "6LezhVIUAAAAAOb4nHDd87sckLhMXFDcHuKyS76P",
admins: ["feedback@openaire.eu"],
lastIndexUpdate: "2019-08-07",
indexInfoAPI: "https://beta.services.openaire.eu/openaire/info/",
altMetricsAPIURL: "https://api.altmetric.com/v1/doi/",
b2noteAPIURL: "http://b2note-dev.bsc.es/",
footerGrantText: "OpenAIRE has received funding from the European Union's Horizon 2020 research and innovation programme under grant agreements No. 777541 and 101017452"
};

View File

@ -1,16 +1,97 @@
import {EnvProperties} from "../app/openaireLibrary/utils/properties/env-properties"; import {EnvProperties} from "../app/openaireLibrary/utils/properties/env-properties";
import {common, commonProd} from "../app/openaireLibrary/utils/properties/environments/environment";
let props: EnvProperties = { export let properties: EnvProperties = {
environment: "production", environment: "production",
enablePiwikTrack: true, enablePiwikTrack: true,
useCache: true,
showContent: true,
framesAPIURL: "https://www.openaire.eu/stats3/",
statisticsAPIURL: "https://services.openaire.eu/stats-api/",
statisticsFrameAPIURL: "https://www.openaire.eu/stats/",
statisticsFrameNewAPIURL: "",
useNewStatistisTool: false,
claimsAPIURL: "https://services.openaire.eu/claims/rest/claimsService/",
searchAPIURLLAst: "https://services.openaire.eu/search/v2/api/",
searchResourcesAPIURL: "https://services.openaire.eu/search/v2/api/resources",
openCitationsAPIURL: "https://services.openaire.eu/opencitations/getCitations?id=",
csvAPIURL: "https://services.openaire.eu/search/v2/api/reports",
searchCrossrefAPIURL: "https://api.crossref.org/works",
searchDataciteAPIURL: "https://api.datacite.org/works",
searchOrcidURL: "https://pub.orcid.org/v2.1/",
orcidURL: "https://orcid.org/",
doiURL: "https://dx.doi.org/",
pmcURL: "http://europepmc.org/articles/",
pmidURL: "https://www.ncbi.nlm.nih.gov/pubmed/",
handleURL: "http://hdl.handle.net/",
cordisURL: "http://cordis.europa.eu/projects/",
openDoarURL: "http://v2.sherpa.ac.uk/id/repository/",
r3DataURL: "http://service.re3data.org/repository/",
zenodo: "https://zenodo.org/",
zenodoCommunities: "https://zenodo.org/api/communities/",
openAccess: "https://www.openaire.eu/support/faq#article-id-234",
openAccessRepo: "https://www.openaire.eu/support/faq#article-id-310",
fp7Guidlines: "https://www.openaire.eu/open-access-in-fp7-seventh-research-framework-programme",
h2020Guidlines: "https://www.openaire.eu/oa-publications/h2020/open-access-in-horizon-2020",
ercGuidlines: "http://erc.europa.eu/sites/default/files/document/file/ERC_Open_Access_Guidelines-revised_2014.pdf",
helpdesk: "https://www.openaire.eu/support/helpdesk",
utilsService: "https://explore.openaire.eu/utils-service",
vocabulariesAPI: "https://services.openaire.eu/provision/mvc/vocabularies/",
piwikBaseUrl: "https://analytics.openaire.eu/piwik.php?idsite=",
piwikSiteId: "104",
registryUrl: 'https://services.openaire.eu/uoa-user-management/api/registry/',
loginUrl: "https://services.openaire.eu/login-service/openid_connect_login",
userInfoUrl: "https://services.openaire.eu/login-service/userInfo",
logoutUrl: "https://services.openaire.eu/login-service/openid_logout",
cookieDomain: ".openaire.eu",
feedbackmail: "feedback@openaire.eu",
cacheUrl: "https://explore.openaire.eu/cache/get?url=",
datasourcesAPI: "https://services.openaire.eu/openaire/ds/search/",
monitorServiceAPIURL: "https://services.openaire.eu/uoa-monitor-service",
adminToolsAPIURL: "https://services.openaire.eu/uoa-monitor-service/", adminToolsAPIURL: "https://services.openaire.eu/uoa-monitor-service/",
adminToolsPortalType: "monitor", adminToolsPortalType: "monitor",
adminToolsCommunity: "monitor", adminToolsCommunity: "monitor",
contextsAPI: "https://services.openaire.eu/openaire/context",
communityAPI: "https://services.openaire.eu/openaire/community/",
communitiesAPI: "https://services.openaire.eu/openaire/community/communities",
csvLimit: 2000,
pagingLimit: 20,
resultsPerPage: 10,
baseLink : "",
domain : "https://monitor.openaire.eu", domain : "https://monitor.openaire.eu",
afterLoginRedirectLink: '/my-dashboards', afterLoginRedirectLink: '/my-dashboards',
searchLinkToResult: "/search/result?id=",
searchLinkToPublication: "/search/publication?articleId=",
searchLinkToProject: "/search/project?projectId=",
searchLinkToDataProvider: "/search/dataprovider?datasourceId=",
searchLinkToDataset: "/search/dataset?datasetId=",
searchLinkToSoftwareLanding: "/search/software?softwareId=",
searchLinkToOrp: "/search/other?orpId=",
searchLinkToOrganization: "/search/organization?organizationId=",
searchLinkToStakeholders: "/browse",
searchLinkToResults: "/search/find/research-outcomes",
searchLinkToDataProviders: "/search/find/dataproviders",
searchLinkToProjects: "/search/find/projects",
searchLinkToOrganizations: "/search/find/organizations",
searchLinkToCompatibleDataProviders: "/search/content-providers",
searchLinkToEntityRegistriesDataProviders: "/search/entity-registries",
searchLinkToJournals: "/search/journals",
searchLinkToAdvancedResults: "/search/advanced/research-outcomes",
searchLinkToAdvancedProjects: "/search/advanced/projects",
searchLinkToAdvancedDataProviders: "/search/advanced/dataproviders",
searchLinkToAdvancedOrganizations: "/search/advanced/organizations",
errorLink: '/error',
lastIndexInformationLink: "https://www.openaire.eu/aggregation-and-content-provision-workflows",
showLastIndexInformationLink: true,
widgetLink: "https://www.openaire.eu/index.php?option=com_openaire&view=widget&format=raw&projectId=",
claimsInformationLink: "https://www.openaire.eu/linking",
depositLearnHowPage: "/participate/deposit/learn-how",
depositSearchPage: "/participate/deposit/search",
shareInZenodoPage: "/participate/deposit/zenodo",
reCaptchaSiteKey: "6LezhVIUAAAAAOb4nHDd87sckLhMXFDcHuKyS76P",
admins: ["feedback@openaire.eu"],
lastIndexUpdate: "2019-07-24",
indexInfoAPI: "https://services.openaire.eu/openaire/info/",
altMetricsAPIURL: "https://api.altmetric.com/v1/doi/",
b2noteAPIURL: "http://b2note-dev.bsc.es/",
footerGrantText: "OpenAIRE has received funding from the European Union's Horizon 2020 research and innovation programme under grant agreements No. 777541 and 101017452"
}; };
export let properties: EnvProperties = {
...common, ...commonProd, ...props
}

View File

@ -1,18 +1,97 @@
import {EnvProperties} from "../app/openaireLibrary/utils/properties/env-properties"; import {EnvProperties} from "../app/openaireLibrary/utils/properties/env-properties";
import {common, commonDev} from "../app/openaireLibrary/utils/properties/environments/environment";
let props: EnvProperties = { export let properties: EnvProperties = {
environment: "development", environment: "development",
enablePiwikTrack: false, enablePiwikTrack: false,
useCache: false, useCache: false,
showContent: true, showContent: true,
framesAPIURL: "https://beta.openaire.eu/stats3/",
statisticsAPIURL: "https://beta.services.openaire.eu/stats-api/",
statisticsFrameAPIURL: "https://beta.openaire.eu/stats/",
statisticsFrameNewAPIURL: "http://88.197.53.71:8080/stats-api/",
useNewStatistisTool: false,
claimsAPIURL: "http://scoobydoo.di.uoa.gr:8080/dnet-claims-service-2.0.0-SNAPSHOT/rest/claimsService/",
searchAPIURLLAst: "https://beta.services.openaire.eu/search/v2/api/",
searchResourcesAPIURL: "https://beta.services.openaire.eu/search/v2/api/resources",
openCitationsAPIURL: "https://services.openaire.eu/opencitations/getCitations?id=",
csvAPIURL: "http://rudie.di.uoa.gr:8080/dnet-functionality-services-2.0.0-SNAPSHOT/rest/v2/reports",
searchCrossrefAPIURL: "https://api.crossref.org/works",
searchDataciteAPIURL: "https://api.datacite.org/works",
searchOrcidURL: "https://pub.orcid.org/v2.1/",
orcidURL: "https://orcid.org/",
doiURL: "https://dx.doi.org/",
pmcURL: "http://europepmc.org/articles/",
pmidURL: "https://www.ncbi.nlm.nih.gov/pubmed/",
handleURL: "http://hdl.handle.net/",
cordisURL: "http://cordis.europa.eu/projects/",
openDoarURL: "http://v2.sherpa.ac.uk/id/repository/",
r3DataURL: "http://service.re3data.org/repository/",
zenodo: "https://zenodo.org/",
zenodoCommunities: "https://zenodo.org/api/communities/",
openAccess: "https://www.openaire.eu/support/faq#article-id-234",
openAccessRepo: "https://www.openaire.eu/support/faq#article-id-310",
fp7Guidlines: "https://www.openaire.eu/open-access-in-fp7-seventh-research-framework-programme",
h2020Guidlines: "https://www.openaire.eu/oa-publications/h2020/open-access-in-horizon-2020",
ercGuidlines: "http://erc.europa.eu/sites/default/files/document/file/ERC_Open_Access_Guidelines-revised_2014.pdf",
helpdesk: "https://www.openaire.eu/support/helpdesk",
utilsService: "http://mpagasas.di.uoa.gr:8000",
vocabulariesAPI: "https://beta.services.openaire.eu/provision/mvc/vocabularies/",
piwikBaseUrl: "https://analytics.openaire.eu/piwik.php?idsite=",
piwikSiteId: "298",
registryUrl: 'http://mpagasas.di.uoa.gr:8080/dnet-openaire-users-1.0.0-SNAPSHOT/api/registry/',
loginUrl: "http://mpagasas.di.uoa.gr:19080/login-service/openid_connect_login",
userInfoUrl: "http://mpagasas.di.uoa.gr:19080/login-service/userInfo",
logoutUrl: "http://mpagasas.di.uoa.gr:19080/login-service/openid_logout",
cookieDomain: ".di.uoa.gr",
feedbackmail: "openaire.test@gmail.com",
cacheUrl: "http://scoobydoo.di.uoa.gr:3000/get?url=",
monitorServiceAPIURL: "http://duffy.di.uoa.gr:19380/uoa-monitor-service",
adminToolsAPIURL: "http://duffy.di.uoa.gr:19380/uoa-monitor-service/", adminToolsAPIURL: "http://duffy.di.uoa.gr:19380/uoa-monitor-service/",
adminToolsPortalType: "monitor", adminToolsPortalType: "monitor",
adminToolsCommunity: "monitor", adminToolsCommunity: "monitor",
domain : "http://mpagasas.di.uoa.gr:4000", 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/",
communitiesAPI: "https://dev-openaire.d4science.org/openaire/community/communities",
csvLimit: 2000,
pagingLimit: 20,
resultsPerPage: 10,
baseLink : "",
domain : "http://dl170.madgik.di.uoa.gr/monitor",
afterLoginRedirectLink: '/my-dashboards', afterLoginRedirectLink: '/my-dashboards',
searchLinkToResult: "/search/result?id=",
searchLinkToPublication: "/search/publication?articleId=",
searchLinkToProject: "/search/project?projectId=",
searchLinkToDataProvider: "/search/dataprovider?datasourceId=",
searchLinkToDataset: "/search/dataset?datasetId=",
searchLinkToSoftwareLanding: "/search/software?softwareId=",
searchLinkToOrganization: "/search/organization?organizationId=",
searchLinkToOrp: "/search/other?orpId=",
searchLinkToStakeholders: "/browse",
searchLinkToResults: "/search/find/research-outcomes",
searchLinkToDataProviders: "/search/find/dataproviders",
searchLinkToProjects: "/search/find/projects",
searchLinkToOrganizations: "/search/find/organizations",
searchLinkToCompatibleDataProviders: "/search/content-providers",
searchLinkToEntityRegistriesDataProviders: "/search/entity-registries",
searchLinkToJournals: "/search/journals",
searchLinkToAdvancedResults: "/search/advanced/research-outcomes",
searchLinkToAdvancedProjects: "/search/advanced/projects",
searchLinkToAdvancedDataProviders: "/search/advanced/dataproviders",
searchLinkToAdvancedOrganizations: "/search/advanced/organizations",
errorLink: '/error',
lastIndexInformationLink: "https://beta.openaire.eu/aggregation-and-content-provision-workflows",
showLastIndexInformationLink: true,
widgetLink: "https://beta.openaire.eu/index.php?option=com_openaire&view=widget&format=raw&projectId=",
claimsInformationLink: "https://beta.openaire.eu/linking",
depositLearnHowPage: "/participate/deposit/learn-how",
depositSearchPage: "/participate/deposit/search",
shareInZenodoPage: "/participate/deposit/zenodo",
reCaptchaSiteKey: "6LcVtFIUAAAAAB2ac6xYivHxYXKoUvYRPi-6_rLu",
admins: ["kostis30fylloy@gmail.com"],
lastIndexUpdate: "2019-05-16",
indexInfoAPI: "https://beta.services.openaire.eu/openaire/info/",
altMetricsAPIURL: "https://api.altmetric.com/v1/doi/",
b2noteAPIURL: "http://b2note-dev.bsc.es/",
footerGrantText: "OpenAIRE has received funding from the European Union's Horizon 2020 research and innovation programme under grant agreements No. 777541 and 101017452"
}; };
export let properties: EnvProperties = {
...common, ...commonDev, ...props
}

View File

@ -12,4 +12,4 @@ if (properties.environment !== "development") {
} }
export {AppServerModule} from './app/app.server.module'; export {AppServerModule} from './app/app.server.module';
export {renderModule} from '@angular/platform-server';

View File

@ -7,6 +7,8 @@ import {
platformBrowserDynamicTesting platformBrowserDynamicTesting
} from '@angular/platform-browser-dynamic/testing'; } from '@angular/platform-browser-dynamic/testing';
declare const require: any;
// First, initialize the Angular testing environment. // First, initialize the Angular testing environment.
getTestBed().initTestEnvironment( getTestBed().initTestEnvironment(
BrowserDynamicTestingModule, BrowserDynamicTestingModule,
@ -14,3 +16,7 @@ getTestBed().initTestEnvironment(
teardown: { destroyAfterEach: false } teardown: { destroyAfterEach: false }
} }
); );
// Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);
// And load the modules.
context.keys().map(context);

View File

@ -2,6 +2,7 @@
"extends": "./tsconfig.app.json", "extends": "./tsconfig.app.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../out-tsc/app-server", "outDir": "../out-tsc/app-server",
"target": "es2016",
"types": [ "types": [
"node" "node"
] ]

View File

@ -10,14 +10,13 @@
"moduleResolution": "node", "moduleResolution": "node",
"experimentalDecorators": true, "experimentalDecorators": true,
"importHelpers": true, "importHelpers": true,
"target": "ES2022", "target": "es2020",
"typeRoots": [ "typeRoots": [
"node_modules/@types" "node_modules/@types"
], ],
"lib": [ "lib": [
"es2018", "es2018",
"dom" "dom"
], ]
"useDefineForClassFields": false
} }
} }