Change stakeholder page with the new theme. Some fixes in methodology and develop

This commit is contained in:
Konstantinos Triantafyllou 2022-03-02 23:58:53 +02:00
parent fa77e9871f
commit 9c67703a2d
14 changed files with 438 additions and 472 deletions

View File

@ -1,25 +1,15 @@
<div *ngIf="loading == true">
<div *ngIf="loading">
<loading [full]="true"></loading>
</div>
<div *ngIf="loading == false">
<div *ngIf="!loading">
<div class="sidebar_main_swipe" [class.sidebar_main_active]="open && hasSidebar"
[class.sidebar_mini]="!open && hasSidebar" [class.stakeholderPage]="isFrontPage">
<div *ngIf="hasHeader" style="right: 0; top: 0; position: fixed; width: 100%; z-index:981;">
<div *ngIf="hasHeader" class="uk-position-fixed uk-width-1-1" style="z-index: 981">
<navbar *ngIf="properties" [properties]="properties" portal="monitor_dashboard" [header]="menuHeader"
[userMenuItems]=userMenuItems [menuItems]="menuItems" [user]="user" [offCanvasFlip]="true"></navbar>
</div>
<dashboard-sidebar *ngIf="stakeholder && isFrontPage && hasSidebar" [items]="sideBarItems"
[activeItem]="activeTopic?activeTopic.alias:null" [showHeader]=true
[specialMenuItem]="specialSideBarMenuItem"
[searchParams]="{}"
[headerUrl]="'https://' + (properties.environment == 'beta' ? 'beta.' : '') +
'monitor.openaire.eu'" queryParamsHandling="merge"
></dashboard-sidebar>
<dashboard-sidebar *ngIf="hasAdminMenu" [items]="adminMenuItems" logoLabel="Admin"
[headerUrl]="'https://' + (properties.environment == 'beta' ? 'beta.' : '') +
'monitor.openaire.eu'" headerPosition="right"
[specialMenuItem]="specialSideBarMenuItem"
></dashboard-sidebar>
<dashboard-sidebar *ngIf="stakeholder && isFrontPage && hasSidebar" [items]="sideBarItems" [activeItem]="activeTopic?activeTopic.alias:null"></dashboard-sidebar>
<dashboard-sidebar *ngIf="hasAdminMenu" [items]="adminMenuItems" [specialMenuItem]="specialSideBarMenuItem"></dashboard-sidebar>
<router-outlet></router-outlet>
<bottom *ngIf="isFrontPage" [darkBackground]="false"
[centered]="true" [properties]="properties" [showMenuItems]="true"></bottom>

View File

@ -17,6 +17,7 @@ import {Option} from "./openaireLibrary/sharedComponents/input/input.component";
import {StakeholderUtils} from "./utils/indicator-utils";
import {SmoothScroll} from "./openaireLibrary/utils/smooth-scroll";
import {ConnectHelper} from "./openaireLibrary/connect/connectHelper";
import {StringUtils} from "./openaireLibrary/utils/string-utils.class";
@Component({
@ -47,7 +48,7 @@ export class AppComponent implements OnInit, OnDestroy {
logoUrl: null,
logoSmallUrl: null,
position: 'center',
badge: false,
badge: true,
stickyAnimation: false,
menuPosition: "center"
};
@ -67,7 +68,7 @@ export class AppComponent implements OnInit, OnDestroy {
private layoutService: LayoutService,
private smoothScroll: SmoothScroll,
private stakeholderService: StakeholderService,
private cdr: ChangeDetectorRef, private configurationService: ConfigurationService) {
private cdr: ChangeDetectorRef, private configurationService: ConfigurationService) {
this.subscriptions.push(this.router.events.subscribe(event => {
if (event instanceof NavigationEnd) {
let r = this.route;
@ -172,7 +173,7 @@ export class AppComponent implements OnInit, OnDestroy {
}
}));
this.subscriptions.push(this.data.subscribe(data => {
if(data && data.portal) {
if (data && data.portal) {
this.setProperties(data.portal);
this.configurationService.initCommunityInformation(this.properties, this.properties.adminToolsCommunity);
}
@ -181,7 +182,7 @@ export class AppComponent implements OnInit, OnDestroy {
this.user = user;
if (user) {
this.buildMenu();
if(!this.notificationGroupsInitialized) {
if (!this.notificationGroupsInitialized) {
this.setNotificationGroups();
}
}
@ -190,18 +191,24 @@ export class AppComponent implements OnInit, OnDestroy {
public setNotificationGroups() {
this.notificationGroups = [];
if(Session.isPortalAdministrator(this.user)) {
if (Session.isPortalAdministrator(this.user)) {
this.notificationGroups.push({value: Role.PORTAL_ADMIN, label: 'Portal Administrators'});
}
for(let type of this.stakeholderUtils.types) {
if(Session.isCurator(type.value, this.user) || Session.isPortalAdministrator(this.user)) {
for (let type of this.stakeholderUtils.types) {
if (Session.isCurator(type.value, this.user) || Session.isPortalAdministrator(this.user)) {
this.notificationGroups.push({value: Role.curator(type.value), label: type.label + ' Curators'});
}
}
this.subscriptions.push(this.stakeholderService.getMyStakeholders(this.properties.monitorServiceAPIURL).subscribe(stakeholders => {
stakeholders.forEach(stakeholder => {
this.notificationGroups.push({value: Role.manager(stakeholder.type, stakeholder.alias), label: stakeholder.name + ' Managers'});
this.notificationGroups.push({value: Role.member(stakeholder.type, stakeholder.alias), label: stakeholder.name + ' Members'});
this.notificationGroups.push({
value: Role.manager(stakeholder.type, stakeholder.alias),
label: stakeholder.name + ' Managers'
});
this.notificationGroups.push({
value: Role.member(stakeholder.type, stakeholder.alias),
label: stakeholder.name + ' Members'
});
});
this.notificationGroupsInitialized = true;
}));
@ -234,7 +241,7 @@ export class AppComponent implements OnInit, OnDestroy {
this.stakeholder.topics.forEach((topic) => {
if (this.isPublicOrIsMember(topic.visibility)) {
let topicItem: MenuItem = new MenuItem(topic.alias, topic.name, "", (
'/' + this.stakeholder.alias + '/' + topic.alias),
'/' + this.stakeholder.alias + '/' + topic.alias),
null, [], [], {});
topicItem.icon = topic.icon;
items.push(topicItem);
@ -259,22 +266,22 @@ export class AppComponent implements OnInit, OnDestroy {
this.userMenuItems.push(new MenuItem("", "Manage profiles",
"", "/admin", false, [], [], {}));
}
if(Session.isPortalAdministrator(this.user) ) {
this.userMenuItems.push( new MenuItem("adminOptions", "Super Admin options","", "/admin/admin-tools/portals", false, [], [], {}));
this.userMenuItems.push(new MenuItem("monitorOptions", "Monitor portal options","", "/admin/monitor/admin-tools/pages", false, [], [], {}));
if (Session.isPortalAdministrator(this.user)) {
this.userMenuItems.push(new MenuItem("adminOptions", "Super Admin options", "", "/admin/admin-tools/portals", false, [], [], {}));
this.userMenuItems.push(new MenuItem("monitorOptions", "Monitor portal options", "", "/admin/monitor/admin-tools/pages", false, [], [], {}));
}
this.userMenuItems.push(new MenuItem("", "User information", "", "/user-info", false, [], [], {}));
}
if (this.stakeholder) {
if (!this.isDashboard) {
if (!this.hasAdminMenu) {
this.menuHeader = {
route: null,
url: "https://" + (this.properties.environment == 'beta' ? 'beta.' : '') + 'monitor.openaire.eu',
title: "Monitor",
logoUrl: 'assets/common-assets/logo-large-monitor.png',
logoSmallUrl: "assets/common-assets/logo-small-monitor.png",
position: 'left',
route: "/" + this.stakeholder.alias,
url: null,
title: this.stakeholder.name,
logoUrl: StringUtils.getLogoUrl(this.stakeholder),
logoSmallUrl: StringUtils.getLogoUrl(this.stakeholder),
position: 'center',
badge: true,
stickyAnimation: false,
menuPosition: "center"
@ -283,66 +290,33 @@ export class AppComponent implements OnInit, OnDestroy {
rootItem: new MenuItem("dashboard", "Dashboard",
"", "/" + this.stakeholder.alias, false, [], null, {}), items: []
});
this.menuItems.push({
rootItem: new MenuItem("methodology", "Methodology",
"", "/" + this.stakeholder.alias + "/methodology", false, [], null, {}), items: [
new MenuItem("methodology", "Terminology and construction",
"", "/" + this.stakeholder.alias + "/methodology", false, [], null, {}),
new MenuItem("methodology", "See how it works",
"", "/" + this.stakeholder.alias + "/methodology", false, [], null, {}, null, "how"),
]
});
if(this.stakeholder.type === "funder") {
this.menuItems.push({
rootItem: new MenuItem("develop", "Develop",
"", "/" + this.stakeholder.alias + "/develop", false, [], null, {}), items: []
});
}
if (this.isCurator()) {
this.menuItems.push({
rootItem: new MenuItem("manage", "Manage",
"", "/admin", false, [], null, {}), items: []
});
}
}
else if (this.isFrontPage) {
this.menuHeader = {
route: "/" + this.stakeholder.alias,
url: null,
title: this.stakeholder.name,
logoUrl: null,
logoSmallUrl: null,
position: 'center',
badge: false,
stickyAnimation: false,
menuPosition: "center"
};
this.menuItems.push({
rootItem: new MenuItem("methodology", "Methodology",
"", "/" + this.stakeholder.alias + "/methodology", false, [], null, {}), items: [
new MenuItem("methodology", "Terminology and construction",
"", "/" + this.stakeholder.alias + "/methodology", false, [], null, {}),
new MenuItem("methodology", "See how it works",
"", "/" + this.stakeholder.alias + "/methodology", false, [], null, {}, null, "how"),
]
});
if(this.stakeholder.type === "funder") {
this.menuItems.push({
rootItem: new MenuItem("develop", "Develop",
"", "/" + this.stakeholder.alias + "/develop", false, [], null, {}), items: []
});
}
if (this.isCurator()) {
this.menuItems.push({
rootItem: new MenuItem("manage", "Manage",
"", "/admin", false, [], null, {}), items: []
});
}
if (this.isPublicOrIsMember(this.stakeholder.visibility)) {
this.specialSideBarMenuItem = new MenuItem("search", "Search research outcomes", "", this.properties.searchLinkToResults, false, [], null, {resultbestaccessright: '"' + encodeURIComponent("Open Access") + '"'});
this.specialSideBarMenuItem.icon = '<span uk-icon="search"></span>';
} else {
this.specialSideBarMenuItem = null;
this.menuItems.push({
rootItem: new MenuItem("search", "Search", "", this.properties.searchLinkToResults,
false, [], null, {resultbestaccessright: '"' + encodeURIComponent("Open Access") + '"'}),
items: []
});
}
this.menuItems.push({
rootItem: new MenuItem("methodology", "Methodology",
"", "/" + this.stakeholder.alias + "/methodology", false, [], null, {}), items: [
new MenuItem("methodology", "Terminology and construction",
"", "/" + this.stakeholder.alias + "/methodology", false, [], null, {}),
new MenuItem("methodology", "See how it works",
"", "/" + this.stakeholder.alias + "/methodology", false, [], null, {}, null, "how"),
]
});
if (this.stakeholder.type === "funder") {
this.menuItems.push({
rootItem: new MenuItem("develop", "Develop",
"", "/" + this.stakeholder.alias + "/develop", false, [], null, {}), items: []
});
}
if (this.isManager(this.stakeholder)) {
this.menuItems.push({
rootItem: new MenuItem("manage", "Manage",
"", "/admin/" + this.stakeholder.alias, false, [], null, {}), items: []
});
}
} else {
this.menuHeader = {
@ -362,7 +336,7 @@ export class AppComponent implements OnInit, OnDestroy {
});
this.adminMenuItems.push(new MenuItem("general", "General", "", "/admin/" + this.stakeholder.alias, false, [], [], {}, "<i uk-icon=\"image\"></i>"));
this.adminMenuItems.push(new MenuItem("indicators", "Indicators", "", "/admin/" + this.stakeholder.alias + '/indicators', false, [], [], {}, "<i uk-icon=\"image\"></i>"));
if(this.stakeholder.defaultId) {
if (this.stakeholder.defaultId) {
this.adminMenuItems.push(new MenuItem("users", "Users", "", "/admin/" + this.stakeholder.alias + "/users", false, [], [], {}, "<i uk-icon=\"users\"></i>"));
if (Session.isPortalAdministrator(this.user)) {
this.adminMenuItems.push(new MenuItem("admin-tools", "Pages & Entities", "", "/admin/" + this.stakeholder.alias + "/admin-tools/pages", false, [], [], {}, null, null, null, "/admin/" + this.stakeholder.alias + "/admin-tools"));
@ -432,9 +406,9 @@ export class AppComponent implements OnInit, OnDestroy {
return !(visibility == "PRIVATE" || (this.isViewPublic && visibility != "PUBLIC"));
}
setProperties(id, type = null){
setProperties(id, type = null) {
this.properties.adminToolsCommunity = id;
if(type) {
if (type) {
this.properties.adminToolsPortalType = type;
} else {
ConnectHelper.setPortalTypeFromPid(id);

View File

@ -13,13 +13,11 @@ import {StakeholderUtils} from "../utils/indicator-utils";
template: `
<div page-content>
<div inner>
<div class="uk-section uk-container uk-container-large uk-margin-large-top">
<div class="uk-padding-small">
<div class="uk-container uk-container-large">
<h1>Help developers <br> with OpenAIRE APIs<span class="uk-text-primary">.</span></h1>
</div>
</div>
<div class="uk-section uk-container uk-container-large uk-padding-remove-top">
<div class="uk-padding-small uk-grid uk-grid-large uk-child-width-1-3@m uk-child-width-1-1" uk-grid>
<div class="uk-section uk-container uk-container-large">
<div class="uk-grid uk-grid-large uk-child-width-1-3@m uk-child-width-1-1" uk-grid>
<div class="uk-text-center uk-margin-large-top">
<div class="uk-icon-bg-shadow uk-margin-auto">
<icon name="description" [flex]="true" ratio="2" visuallyHidden="For research outcomes"></icon>
@ -64,7 +62,7 @@ import {StakeholderUtils} from "../utils/indicator-utils";
</div>
</div>
<div class="uk-section uk-container uk-container-large">
<div class="uk-padding-small uk-grid uk-grid-large uk-child-width-1-2@m uk-child-width-1-1" uk-grid>
<div class="uk-grid uk-grid-large uk-child-width-1-2@m uk-child-width-1-1" uk-grid>
<div>
<div>Request examples for research outcomes:</div>
<ul class="uk-list uk-list-disc">

View File

@ -12,211 +12,207 @@ import {ActivatedRoute, Router} from "@angular/router";
template: `
<div page-content>
<div inner>
<div class="uk-section uk-container uk-container-large uk-margin-large-top">
<div class="uk-padding-small">
<h1>Terminology and <br> construction<span class="uk-text-primary">.</span></h1>
</div>
<div class="uk-container uk-container-large">
<h1>Terminology and <br> construction<span class="uk-text-primary">.</span></h1>
</div>
<div class="uk-section uk-container uk-container-large uk-padding-remove-top">
<div class="uk-padding-small">
<my-tabs>
<my-tab [tabTitle]="'Entities'" [tabId]="'entities'" class="uk-active">
<ng-container>
<dl class="uk-description-list uk-description-list-divider">
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Research Outcomes</dt>
<dd class="uk-width-expand">
<div>There are currently four different types of research outcomes in the OpenAIRE Research <br> Graph:</div>
<ul class="">
<li>Publication</li>
<li>Dataset</li>
<li>Software</li>
<li>Other Research Product</li>
</ul>
<div class="uk-margin-small-top">
OpenAIRE deduplicates (merges) different records of research outcomes and keeps the <br> metadata of all instances.
</div>
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Publication</dt>
<dd class="uk-width-expand">
Research outcomes intended for human reading (published articles, pre-prints, conference <br> papers, presentations, technical reports, etc.)
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Dataset</dt>
<dd class="uk-width-expand">
<div>Research data</div>
<div>Granularity is not defined by OpenAIRE, it reflects the granularity supported by
the sources <br> from which the description of the dataset has been collected.</div>
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Software</dt>
<dd class="uk-width-expand">
Source code or software package developed and/or used in a research context
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Other Research Product</dt>
<dd class="uk-width-expand">
Anything that does not fall in the previous categories (e.g. workflow, methods, protocols)
</dd>
</div>
</dl>
</ng-container>
</my-tab>
<my-tab [tabTitle]="'Attributes of Entities'" [tabId]="'attributes'">
<ng-container>
<dl class="uk-description-list uk-description-list-divider">
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Organization & Country</dt>
<dd class="uk-width-expand">
<p><span class="uk-text-bold">For research outcomes:</span> the affiliated organizations of its
authors (and their country)</p>
<p><span class="uk-text-bold">For projects:</span> the organizations participating in the project
(i.e. beneficiaries of the grant) and
their countries
</p>
<p>
<span class="uk-text-bold">Country code mapping: </span>
<a href="https://api.openaire.eu/vocabularies/dnet:countries" target="_blank">
https://api.openaire.eu/vocabularies/dnet:countries</a>
</p>
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Type</dt>
<dd class="uk-width-expand">
<p>The sub-type of a research outcome (e.g., a publication can be a pre-print, conference proceeding,
article,
etc.)</p>
<p><span class="uk-text-bold">Resource type mapping: </span>
<a href="https://api.openaire.eu/vocabularies/dnet:result_typologies" target="_blank">https://api.openaire.eu/vocabularies/dnet:result_typologies</a>
(click on the code to see the specific types for each result type)
</p>
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Access mode</dt>
<dd class="uk-width-expand">
<p>The best available (across all instances) access rights of a research outcome</p>
<p>Types: open, restricted, closed, embargo (= closed for a specific period of time, then open)</p>
<p><span class="uk-text-bold">Note:</span> definition of <span class="uk-text-bold">restricted</span>
may vary by data source.</p>
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">PID (persistent identifier)</dt>
<dd class="uk-width-expand">
<p>A long-lasting reference to a resource</p>
<p><span class="uk-text-bold">Types: </span> <a
href="http://api.openaire.eu/vocabularies/dnet:pid_types" target="_blank">http://api.openaire.eu/vocabularies/dnet:pid_types</a>
</p>
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Context</dt>
<dd class="uk-width-expand">
Related research community, initiative or infrastructure.
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Journal</dt>
<dd class="uk-width-expand">
The scientific journal an article is published in.
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Publisher</dt>
<dd class="uk-width-expand">
The publisher of the venue (journal, book, etc.) of a research outcome.
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Content Providers (Datasources)</dt>
<dd class="uk-width-expand">
<p>The different data sources ingested in the OpenAIRE Research Graph.</p>
<div class="uk-text-bold">Content Provider Types:</div>
<ul class="portal-circle">
<li>Repositories</li>
<li>Open Access Publishers & Journals</li>
<li>Aggregators</li>
<li>Entity Registries</li>
<li>Journal Aggregators</li>
<li>CRIS (Current Research Information System)</li>
</ul>
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Repositories</dt>
<dd class="uk-width-expand">
Information systems where scientists upload the bibliographic metadata and payloads of their
research outcomes (e.g. PDFs of their scientific articles, CSVs of their data, archive with their
software), due to obligations from their organizations, their funders, or due to community practices
(e.g. ArXiv, Europe PMC, Zenodo).
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Open Access Publishers & Journals</dt>
<dd class="uk-width-expand">
Information systems of open access publishers or relative journals, which offer bibliographic
metadata and PDFs of their published articles.
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Aggregators</dt>
<dd class="uk-width-expand">
Information systems that collect descriptive metadata about research products from multiple sources
in order to enable cross-data source discovery of given research products (e,g, DataCite,
BASE, DOAJ).
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Entity Registries</dt>
<dd class="uk-width-expand">
Information systems created with the intent of maintaining authoritative registries of given
entities in the scholarly communication, such as OpenDOAR for the institutional repositories, re3data
for the data repositories, CORDA and other funder databases for projects and funding information.
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">CRIS (Current Research Information System)</dt>
<dd class="uk-width-expand">
Information systems adopted by research and academic organizations to keep track of their research
administration records and relative results; examples of CRIS content are articles or datasets funded
by projects, their principal investigators, facilities acquired thanks to funding, etc.
</dd>
</div>
</dl>
</ng-container>
</my-tab>
</my-tabs>
<div class="uk-margin-large-top">
<img src="assets/common-assets/graph.svg">
<span class="uk-margin-small-left uk-text-baseline uk-text-muted">More information for <a
href="https://graph.openaire.eu" class="graph-color">OpenAIRE Research Graph</a>.</span>
</div>
</div>
<div class="uk-section uk-container uk-container-large">
<my-tabs>
<my-tab [tabTitle]="'Entities'" [tabId]="'entities'" class="uk-active">
<ng-container>
<dl class="uk-description-list uk-description-list-divider">
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1 uk-text-primary">Research Outcomes</dt>
<dd class="uk-width-expand">
<div>There are currently four different types of research outcomes in the OpenAIRE Research <br> Graph:</div>
<ul class="uk-list uk-list-disc">
<li>Publication</li>
<li>Dataset</li>
<li>Software</li>
<li>Other Research Product</li>
</ul>
<div class="uk-margin-small-top">
OpenAIRE deduplicates (merges) different records of research outcomes and keeps the <br> metadata of all instances.
</div>
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Publication</dt>
<dd class="uk-width-expand">
Research outcomes intended for human reading (published articles, pre-prints, conference <br> papers, presentations, technical reports, etc.)
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Dataset</dt>
<dd class="uk-width-expand">
<div>Research data</div>
<div>Granularity is not defined by OpenAIRE, it reflects the granularity supported by
the sources <br> from which the description of the dataset has been collected.</div>
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Software</dt>
<dd class="uk-width-expand">
Source code or software package developed and/or used in a research context
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Other Research Product</dt>
<dd class="uk-width-expand">
Anything that does not fall in the previous categories (e.g. workflow, methods, protocols)
</dd>
</div>
</dl>
</ng-container>
</my-tab>
<my-tab [tabTitle]="'Attributes of Entities'" [tabId]="'attributes'">
<ng-container>
<dl class="uk-description-list uk-description-list-divider">
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Organization & Country</dt>
<dd class="uk-width-expand">
<p><span class="uk-text-bold">For research outcomes:</span> the affiliated organizations of its
authors (and their country)</p>
<p><span class="uk-text-bold">For projects:</span> the organizations participating in the project
(i.e. beneficiaries of the grant) and
their countries
</p>
<p>
<span class="uk-text-bold">Country code mapping: </span>
<a href="https://api.openaire.eu/vocabularies/dnet:countries" target="_blank">
https://api.openaire.eu/vocabularies/dnet:countries</a>
</p>
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Type</dt>
<dd class="uk-width-expand">
<p>The sub-type of a research outcome (e.g., a publication can be a pre-print, conference proceeding,
article,
etc.)</p>
<p><span class="uk-text-bold">Resource type mapping: </span>
<a href="https://api.openaire.eu/vocabularies/dnet:result_typologies" target="_blank">https://api.openaire.eu/vocabularies/dnet:result_typologies</a>
(click on the code to see the specific types for each result type)
</p>
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Access mode</dt>
<dd class="uk-width-expand">
<p>The best available (across all instances) access rights of a research outcome</p>
<p>Types: open, restricted, closed, embargo (= closed for a specific period of time, then open)</p>
<p><span class="uk-text-bold">Note:</span> definition of <span class="uk-text-bold">restricted</span>
may vary by data source.</p>
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">PID (persistent identifier)</dt>
<dd class="uk-width-expand">
<p>A long-lasting reference to a resource</p>
<p><span class="uk-text-bold">Types: </span> <a
href="http://api.openaire.eu/vocabularies/dnet:pid_types" target="_blank">http://api.openaire.eu/vocabularies/dnet:pid_types</a>
</p>
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Context</dt>
<dd class="uk-width-expand">
Related research community, initiative or infrastructure.
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Journal</dt>
<dd class="uk-width-expand">
The scientific journal an article is published in.
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Publisher</dt>
<dd class="uk-width-expand">
The publisher of the venue (journal, book, etc.) of a research outcome.
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Content Providers (Datasources)</dt>
<dd class="uk-width-expand">
<p>The different data sources ingested in the OpenAIRE Research Graph.</p>
<div class="uk-text-bold">Content Provider Types:</div>
<ul class="uk-list uk-list-disc">
<li>Repositories</li>
<li>Open Access Publishers & Journals</li>
<li>Aggregators</li>
<li>Entity Registries</li>
<li>Journal Aggregators</li>
<li>CRIS (Current Research Information System)</li>
</ul>
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Repositories</dt>
<dd class="uk-width-expand">
Information systems where scientists upload the bibliographic metadata and payloads of their
research outcomes (e.g. PDFs of their scientific articles, CSVs of their data, archive with their
software), due to obligations from their organizations, their funders, or due to community practices
(e.g. ArXiv, Europe PMC, Zenodo).
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Open Access Publishers & Journals</dt>
<dd class="uk-width-expand">
Information systems of open access publishers or relative journals, which offer bibliographic
metadata and PDFs of their published articles.
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Aggregators</dt>
<dd class="uk-width-expand">
Information systems that collect descriptive metadata about research products from multiple sources
in order to enable cross-data source discovery of given research products (e,g, DataCite,
BASE, DOAJ).
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">Entity Registries</dt>
<dd class="uk-width-expand">
Information systems created with the intent of maintaining authoritative registries of given
entities in the scholarly communication, such as OpenDOAR for the institutional repositories, re3data
for the data repositories, CORDA and other funder databases for projects and funding information.
</dd>
</div>
<hr>
<div class="uk-grid uk-padding-small" uk-grid>
<dt class="uk-width-1-5@m uk-width-1-1">CRIS (Current Research Information System)</dt>
<dd class="uk-width-expand">
Information systems adopted by research and academic organizations to keep track of their research
administration records and relative results; examples of CRIS content are articles or datasets funded
by projects, their principal investigators, facilities acquired thanks to funding, etc.
</dd>
</div>
</dl>
</ng-container>
</my-tab>
</my-tabs>
<div class="uk-margin-medium-top">
<img src="assets/common-assets/graph.svg">
<span class="uk-margin-small-left uk-text-baseline uk-text-muted">More information for <a
href="https://graph.openaire.eu" class="graph-color">OpenAIRE Research Graph</a>.</span>
</div>
</div>
<div id="how" class="uk-container uk-container-large uk-section-small">
<div id="how" class="uk-container uk-container-large uk-section uk-section-small uk-margin-large-top">
<h2 class="uk-h1">
Inclusion, transparency, <br> quality, state of the art <br> technology<span class="uk-text-primary">.</span>
</h2>

View File

@ -18,7 +18,7 @@ import {MonitorComponent} from "./monitor.component";
canDeactivate: [PreviousRouteRecorder],
data: {
hasSidebar: false,
isDashboard: false
isDashboard: true
}
},
{
@ -27,13 +27,17 @@ import {MonitorComponent} from "./monitor.component";
canDeactivate: [PreviousRouteRecorder],
data: {
hasSidebar: false,
isDashboard: false
isDashboard: true
}
},
{
path: ':stakeholder/search',
loadChildren: () => import('../search/search.module').then(m => m.SearchModule),
canDeactivate: [PreviousRouteRecorder]
canDeactivate: [PreviousRouteRecorder],
data: {
hasSidebar: false,
isDashboard: true
}
},
{
path: ':stakeholder/:topic',

View File

@ -1,3 +1,7 @@
.uk-card {
min-height: 270px;
}
.uk-card.semiFiltered, .uk-card.semiFiltered > * > .highcharts-series-group {
opacity: 0.5;
}

View File

@ -2,7 +2,7 @@
<!-- <div class="uk-grid uk-grid-small uk-text-small" uk-grid>-->
<span *ngIf="periodFilter.selectedFromAndToValues.length > 0" class="uk-grid-margin">
<a (click)="clearPeriodFilter()" [class]="((loading)?' uk-disabled':' ')+' uk-link-text '"> <span
class="selectedFilterLabel" [class.uk-margin-small-left]="margin"
class="filter-tag" [class.uk-margin-small-left]="margin"
title="Remove {{periodFilter.selectedFromAndToValues}}">
<i uk-icon="close"></i>
<span class="uk-margin-small-left">{{periodFilter.selectedFromAndToValues}}</span>
@ -14,11 +14,11 @@
<ng-container *ngIf="value.selected">
<span class="uk-grid-margin">
<!-- if no grid on the div above, remove it and move class 'selectedFilterLabel' on top span -->
<span class="selectedFilterLabel " [class.uk-margin-small-left]="margin" [title]="'Remove '+value.name"
<span class="filter-tag" [class.uk-margin-small-left]="margin" [title]="'Remove '+value.name"
(click)="value.selected = false; filter.radioValue=''; filter.countSelectedValues=
filter.countSelectedValues -1;
filterChanged({value:filter}) ">
<a [class]="((loading)?' uk-disabled':' ')+' uk-link-text '">
<a [class.uk-disabled]="loading">
<span class=" clickable" aria-hidden="true">
<span class="uk-icon">
<svg width="16" height="16" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"
@ -40,25 +40,20 @@
</ng-container>
<!-- </div>-->
</ng-template>
<div page-content [class.greyOut]="filterToggle" (click)=" (filterToggle)?filterToggle = false:filterToggle">
<div page-content>
<div *ngIf="activeTopic && activeTopic.categories.length > 0" header>
<nav class=" ">
<div *ngIf="stakeholder && status === errorCodes.DONE && activeTopic"
class="uk-grid uk-flex uk-flex-middle" uk-grid>
<div class="uk-width-expand">
<ul class="customTabs uk-tab">
<ng-template ngFor [ngForOf]="activeTopic.categories" let-category let-i="index">
<li *ngIf="isPublicOrIsMember(category.visibility)"
[class.uk-active]="category.alias ===
activeCategory.alias">
<div *ngIf="stakeholder && status === errorCodes.DONE && activeTopic" class="uk-margin-medium">
<ul class="uk-tab">
<ng-template ngFor [ngForOf]="activeTopic.categories" let-category>
<li *ngIf="isPublicOrIsMember(category.visibility)" [class.uk-active]="category.alias === activeCategory.alias">
<a (click)="navigateTo(stakeholder.alias,activeTopic.alias, category.alias)">
<span class="title">{{category.name}}</span>
</a>
</li>
</ng-template>
</ul>
</div>
<div class="uk-width-auto@m uk-width-1-1 uk-flex uk-flex-center">
<!-- TODO add Print on the right side -->
<!--<div class="uk-width-auto@m uk-width-1-1 uk-flex uk-flex-center">
<a class="uk-text-uppercase uk-flex uk-flex-middle uk-flex-center">
<button class="uk-icon-button large uk-button-secondary" (click)="printReport()">
<icon name="print"></icon>
@ -67,20 +62,20 @@
Print Report
</button>
</a>
</div>
</div>
</nav>
<ul *ngIf="activeCategory && countSubCategoriesToShow(activeCategory) > 1"
class="uk-subnav uk-subnav-pill subCategoriesTabs ">
<ng-template ngFor [ngForOf]="activeCategory.subCategories" let-subCategory let-i="index">
<li *ngIf="isPublicOrIsMember(subCategory.visibility)"
[ngClass]="(subCategory.alias === activeSubCategory.alias)?'uk-active':''">
<a (click)="navigateTo(stakeholder.alias,activeTopic.alias,activeCategory.alias, subCategory.alias)"
class="uk-margin-remove-bottom"
><span>{{subCategory.name}}</span></a>
</li>
</ng-template>
</ul>
</div>-->
</div>
<div *ngIf="activeCategory && countSubCategoriesToShow(activeCategory) > 1" class="uk-flex uk-flex-right">
<ul class="uk-subnav uk-subnav-pill">
<ng-template ngFor [ngForOf]="activeCategory.subCategories" let-subCategory let-i="index">
<li *ngIf="isPublicOrIsMember(subCategory.visibility)"
[ngClass]="(subCategory.alias === activeSubCategory.alias)?'uk-active':''">
<a (click)="navigateTo(stakeholder.alias,activeTopic.alias,activeCategory.alias, subCategory.alias)"
class="uk-margin-remove-bottom"
><span>{{subCategory.name}}</span></a>
</li>
</ng-template>
</ul>
</div>
<div *ngIf="countSelectedFilters() > 0" class="uk-grid uk-grid-small uk-margin-bottom uk-text-small">
<span class="uk-grid-margin">Filters: </span>
<ng-container *ngTemplateOutlet="selected_filters_pills; context: {margin:true}"></ng-container>
@ -90,24 +85,17 @@
<div [class.uk-padding]="!isSmallScreen" class="uk-padding-remove-vertical">
<div *ngIf="privateStakeholder" class="message">
<div class="uk-text-center">
<h3><i>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="black" width="24px" height="24px">
<path d="M0 0h24v24H0z" fill="none"/>
<path
d="M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2z"/>
</svg>
</i>
Private data
<h3 class="uk-flex uk-flex-middle">
<icon name="incognito" ratio="2"></icon>
<span class="uk-margin-left">Private data</span>
</h3>
<div class="uk-text-large "></div>
</div>
</div>
<div *ngIf="!privateStakeholder && stakeholder">
<div *ngIf="(activeSubCategory && (activeSubCategory.charts.length == 0 || countSectionsWithIndicatorsToShow(activeSubCategory.charts) == 0))
&& ((activeSubCategory && activeSubCategory.description && activeSubCategory.description.length > 0) ||
(activeCategory && activeCategory.description && activeCategory.description.length > 0) ||
(activeTopic && activeTopic.description && activeTopic.description.length > 0))"
class="uk-text-center">
(activeTopic && activeTopic.description && activeTopic.description.length > 0))" class="uk-text-center">
<div class="uk-height-small uk-margin-large-top uk-margin-xlarge-right uk-margin-xlarge-left">
{{activeSubCategory && activeSubCategory.description && activeSubCategory.description.length > 0 ? activeSubCategory.description
: (activeCategory && activeCategory.description && activeCategory.description.length > 0 ? activeCategory.description :
@ -126,103 +114,95 @@
</div>
</ng-template>
<ng-template #content>
<div *ngFor="let number of activeSubCategory.numbers; let i = index;"
class="uk-grid uk-grid-small uk-margin-bottom uk-margin-top"
uk-height-match="target: .uk-card">
<h5 *ngIf="countIndicatorsToShow(number.indicators)> 0 "
class="uk-width-1-1 uk-margin-bottom">{{number.title}}</h5>
<ng-template ngFor [ngForOf]="number.indicators" let-indicator let-j="index">
<div *ngIf="isPublicOrIsMember(indicator.visibility)" [ngClass]="getNumberClassBySize(indicator.width)" class="uk-margin-bottom">
<div class="uk-card uk-card-default uk-flex uk-flex-column uk-flex-center"
[class.uk-disabled]="indicator.indicatorPaths[0].filtersApplied < countSelectedFilters()"
[class.semiFiltered]="indicator.indicatorPaths[0].filtersApplied < countSelectedFilters()">
<div class="uk-card-body uk-text-center">
<div *ngIf="properties.environment === 'development'">Filtered:
{{indicator.indicatorPaths[0].filtersApplied}}
out of
{{countSelectedFilters()}}</div>
<div class="uk-text-bold ">{{indicator.name}}</div>
<h3 class="uk-margin-medium-top uk-text-bold">
<span *ngIf="numberResults.get(i + '-' + j)">{{numberResults.get(i + '-' + j) | number}}</span>
<span *ngIf="!numberResults.get(i + '-' + j)">--</span>
</h3>
<!--<ng-container *ngTemplateOutlet="description; context: {indicator:indicator}"></ng-container>-->
</div>
<div *ngIf="indicator.description || indicator.additionalDescription" class="uk-overlay uk-position-bottom">
<div class="uk-padding-small">
<div *ngIf="indicator.description">
{{indicator.description}}
</div>
<div *ngIf="indicator.additionalDescription">
{{indicator.additionalDescription}}
<ng-container *ngFor="let number of activeSubCategory.numbers; let i = index;">
<div *ngIf="countIndicatorsToShow(number.indicators) > 0" class="uk-grid uk-margin-large-bottom" uk-grid uk-height-match="target: .uk-card">
<h5 *ngIf="number.title" class="uk-width-1-1 uk-margin-bottom">{{number.title}}</h5>
<ng-template ngFor [ngForOf]="number.indicators" let-indicator let-j="index">
<div *ngIf="isPublicOrIsMember(indicator.visibility)" [ngClass]="getNumberClassBySize(indicator.width)" class="uk-margin-bottom">
<div class="uk-card uk-card-default uk-flex uk-flex-column uk-flex-center"
[class.semiFiltered]="indicator.indicatorPaths[0].filtersApplied < countSelectedFilters()">
<div class="uk-text-center">
<!--<div *ngIf="properties.environment === 'development'">
Filtered:{{indicator.indicatorPaths[0].filtersApplied}}out of{{countSelectedFilters()}}
</div>-->
<div class="number uk-text-bold uk-text-primary-gradient">
<span *ngIf="numberResults.get(i + '-' + j)">{{numberResults.get(i + '-' + j) | number}}</span>
<span *ngIf="!numberResults.get(i + '-' + j)">--</span>
</div>
<div class="uk-text-uppercase uk-text-small uk-margin-top">{{indicator.name}}</div>
</div>
</div>
</div>
</div>
</ng-template>
</div>
<div [class.uk-margin-large-top]="activeSubCategory.numbers.length > 0">
<div *ngFor="let chart of activeSubCategory.charts; let i = index;"
class="uk-grid uk-grid-small uk-margin-bottom uk-flex uk-flex-middle "
uk-height-match="target: .uk-card">
<h5 *ngIf="chart.title && chart.title.length > 0 && countIndicatorsToShow(chart.indicators) > 0 "
class="uk-width-1-1 uk-margin-bottom">{{chart.title}}</h5>
<ng-template ngFor [ngForOf]="chart.indicators" let-indicator let-j="index">
<div
*ngIf="isPublicOrIsMember(indicator.visibility) && chartsActiveType.get(i + '-' + j)"
[ngClass]="getChartClassBySize(indicator.width)" class="uk-margin-bottom">
<div class="uk-card uk-card-default"
[class.uk-disabled]="chartsActiveType.get(i + '-' + j).filtersApplied < countSelectedFilters()"
[class.semiFiltered]="chartsActiveType.get(i + '-' + j).filtersApplied < countSelectedFilters()">
<div class="uk-card-body uk-text-center">
<h4 class="uk-margin-bottom chartTitle uk-flex uk-flex-bottom ">
<div>{{indicator.name + " "}}</div>
</h4>
<div *ngIf="indicator.indicatorPaths.length > 1" class="uk-button-group">
<button *ngFor="let indicatorPath of indicator.indicatorPaths;"
class="uk-button"
(click)="setActiveChart(i, j, indicatorPath.type)"
[class.uk-button-secondary]="chartsActiveType.get(i + '-' + j).url === indicatorPath.url">
{{indicatorPath.type}}
</button>
</div>
<div *ngIf="properties.environment === 'development'">
Filtered: {{chartsActiveType.get(i + '-' + j).filtersApplied}} out of
{{countSelectedFilters()}}</div>
<iframe *ngIf=" !properties.disableFrameLoad && chartsActiveType.get(i + '-' + j).source !==
'image'"
[src]="chartsActiveType.get(i + '-' + j).safeResourceUrl"
[class]="' uk-width-1-1 uk-height-' +
(indicator.height?indicator.height.toLowerCase():'medium')"></iframe>
<div *ngIf="properties.disableFrameLoad && chartsActiveType.get(i + '-' + j).source !==
'image'" class="uk-alert uk-alert-danger uk-text-center">I frames preview is disabled</div>
<!-- {{chartsActiveType.get(i).safeResourceUrl}}-->
<!-- <a [href]="chartsActiveType.get(i).safeResourceUrl" target="_blank" > ChartuURL</a>-->
<img *ngIf="chartsActiveType.get(i + '-' + j).source === 'image'"
[src]="chartsActiveType.get(i + '-' + j).safeResourceUrl"
[class]="' uk-width-1-1 uk-height-' +
(indicator.height?indicator.height.toLowerCase():'medium')">
<!--<ng-container *ngTemplateOutlet="description; context: {indicator:indicator}"></ng-container>-->
</div>
<div *ngIf="indicator.description || indicator.additionalDescription"
class="uk-overlay uk-position-bottom">
<div class="uk-padding multi-line-ellipsis lines-3">
<p class="uk-margin-remove">
<span *ngIf="indicator.description">
{{indicator.description}}
</span>
<br>
<span *ngIf="indicator.additionalDescription">
{{indicator.additionalDescription}}
</span>
</p>
<div *ngIf="indicator.description || indicator.additionalDescription" class="uk-overlay uk-position-bottom">
<div class="uk-padding-small">
<div *ngIf="indicator.description">
{{indicator.description}}
</div>
<div *ngIf="indicator.additionalDescription">
{{indicator.additionalDescription}}
</div>
</div>
</div>
</div>
</div>
</ng-template>
</div>
</ng-container>
<div [class.uk-margin-large-top]="activeSubCategory.numbers.length > 0">
<ng-container *ngFor="let chart of activeSubCategory.charts; let i = index;">
<div *ngIf="countIndicatorsToShow(chart.indicators) > 0" class="uk-grid uk-margin-medium-bottom uk-flex uk-flex-middle" uk-height-match="target: .uk-card">
<h5 *ngIf="chart.title" class="uk-width-1-1 uk-margin-bottom">{{chart.title}}</h5>
<ng-template ngFor [ngForOf]="chart.indicators" let-indicator let-j="index">
<div *ngIf="isPublicOrIsMember(indicator.visibility) && chartsActiveType.get(i + '-' + j)"
[ngClass]="getChartClassBySize(indicator.width)" class="uk-margin-bottom">
<div class="uk-card uk-card-default" [class.semiFiltered]="chartsActiveType.get(i + '-' + j).filtersApplied < countSelectedFilters()">
<div class="uk-card-body uk-text-center">
<h4 class="uk-margin-bottom chartTitle uk-flex uk-flex-bottom ">
<div>{{indicator.name + " "}}</div>
</h4>
<div *ngIf="indicator.indicatorPaths.length > 1" class="uk-button-group">
<button *ngFor="let indicatorPath of indicator.indicatorPaths;"
class="uk-button"
(click)="setActiveChart(i, j, indicatorPath.type)"
[class.uk-button-secondary]="chartsActiveType.get(i + '-' + j).url === indicatorPath.url">
{{indicatorPath.type}}
</button>
</div>
<div *ngIf="properties.environment === 'development'">
Filtered: {{chartsActiveType.get(i + '-' + j).filtersApplied}} out of
{{countSelectedFilters()}}</div>
<iframe *ngIf=" !properties.disableFrameLoad && chartsActiveType.get(i + '-' + j).source !==
'image'"
[src]="chartsActiveType.get(i + '-' + j).safeResourceUrl"
[class]="' uk-width-1-1 uk-height-' +
(indicator.height?indicator.height.toLowerCase():'medium')"></iframe>
<div *ngIf="properties.disableFrameLoad && chartsActiveType.get(i + '-' + j).source !==
'image'" class="uk-alert uk-alert-danger uk-text-center">I frames preview is disabled</div>
<!-- {{chartsActiveType.get(i).safeResourceUrl}}-->
<!-- <a [href]="chartsActiveType.get(i).safeResourceUrl" target="_blank" > ChartuURL</a>-->
<img *ngIf="chartsActiveType.get(i + '-' + j).source === 'image'"
[src]="chartsActiveType.get(i + '-' + j).safeResourceUrl"
[class]="' uk-width-1-1 uk-height-' +
(indicator.height?indicator.height.toLowerCase():'medium')">
<!--<ng-container *ngTemplateOutlet="description; context: {indicator:indicator}"></ng-container>-->
</div>
<div *ngIf="indicator.description || indicator.additionalDescription"
class="uk-overlay uk-position-bottom">
<div class="uk-padding multi-line-ellipsis lines-3">
<p class="uk-margin-remove">
<span *ngIf="indicator.description">
{{indicator.description}}
</span>
<br>
<span *ngIf="indicator.additionalDescription">
{{indicator.additionalDescription}}
</span>
</p>
</div>
</div>
</div>
</div>
</ng-template>
</div>
</ng-container>
</div>
<div class="uk-margin-medium-top uk-flex hideInfo">
<!-- Last Stats Date-->

View File

@ -60,7 +60,6 @@ export class MonitorComponent implements OnInit, OnDestroy {
public chartsActiveType: Map<string, IndicatorPath> = new Map<string, IndicatorPath>();
private errorMessages: ErrorMessagesComponent;
properties: EnvProperties = properties;
filterToggle = false;
public routerHelper: RouterHelper = new RouterHelper();
filters: Filter[] = [];
queryParams = {};
@ -121,7 +120,6 @@ export class MonitorComponent implements OnInit, OnDestroy {
this.activeTopic = null;
this.activeCategory = null;
this.activeSubCategory = null;
this.filterToggle = false;
if (subscription) {
subscription.unsubscribe();
}

View File

@ -23,7 +23,7 @@ import {SearchFilterModule} from "../openaireLibrary/searchPages/searchUtils/sea
import {PageContentModule} from "../openaireLibrary/dashboard/sharedComponents/page-content/page-content.module";
import {IconsService} from '../openaireLibrary/utils/icons/icons.service';
import {IconsModule} from '../openaireLibrary/utils/icons/icons.module';
import {print} from "../openaireLibrary/utils/icons/icons";
import {incognito, print} from "../openaireLibrary/utils/icons/icons";
@NgModule({
imports: [
@ -45,6 +45,6 @@ import {print} from "../openaireLibrary/utils/icons/icons";
})
export class MonitorModule {
constructor(private iconsService: IconsService) {
this.iconsService.registerIcons([print]);
this.iconsService.registerIcons([incognito, print]);
}
}

@ -1 +1 @@
Subproject commit c2b6547b4c36415ff2e9b1050dcdabc80bb34973
Subproject commit 4698a5fafd51fa7d8a0969b0d4e2691cce53ccf4

@ -1 +1 @@
Subproject commit a9e0079b207d8e2894f71fff5b683afe44d3eb57
Subproject commit c66881b1d021db2ec99fb3e62fd179dcba6c0a10

View File

@ -4,12 +4,39 @@
/* --portal-dark-color: #7c9144;*/
/*}*/
/*.stakeholderPage {*/
/* --primary-color: var(--theme-secondary-color);*/
/* --secondary-color: var(--theme-secondary-color);*/
/* --primary-color-rgb: var(--theme-secondary-color-rgb);*/
/* --secondary-color-rgb: var(--theme-secondary-color-rgb);*/
/*}*/
.stakeholderPage {
/* Structure */
--structure-background-color: #F1F1F1;
/* Dashboard */
--dashboard-primary-color: var(--monitor-color);
--dashboard-primary-color-rgb: var(--monitor-color-rgb);
--dashboard-primary-image: linear-gradient(133deg, var(--monitor-light-color) 0%, var(--monitor-dark-color) 100%);
--dashboard-primary-inverse-color: var(--light-color);
/* Buttons */
--button-primary-background: var(--monitor-color);
--button-primary-background-image: linear-gradient(110deg, var(--monitor-light-color) 50%, var(--monitor-dark-color) 100%);
--button-secondary-background: var(--light-color);
--button-secondary-color: var(--monitor-color);
--button-secondary-border-color: var(--monitor-color);
--button-secondary-background-hover: var(--secondary-color);
--button-secondary-color-hover: var(--light-color);
--button-secondary-border-color-hover: transparent;
/* Backgrounds */
--primary-background: #2C2C2C;
--primary-background-image:none;
--secondary-background: var(--monitor-color);
--secondary-background-image:none;
/* Fonts */
--font-primary-color: var(--monitor-color);
--font-gradient-color: linear-gradient(110deg, var(--monitor-light-color) 0%, var(--monitor-dark-color) 100%);
/* List */
--list-disc-color: var(--monitor-color);
}
/*!*Stakeholder Specific*!*/
/*.publicationsSearchForm {*/
/* background-image: none;*/
@ -48,19 +75,19 @@
/* !*z-index: 981;*!*/
/*}*/
/*#filters_switcher_toggle {*/
/* top: 320px !important;*/
/* position: fixed;*/
/* height: 36px;*/
/* background-color: var(--secondary-color);*/
/* border-radius: 4px 0 0 4px;*/
/* cursor: pointer;*/
/* padding: 0 2px;*/
/* box-shadow: -2px 2px 5px rgba(0, 0, 0, .26);*/
/* box-sizing: border-box;*/
/* !*z-index: 981;*!*/
/* right: 0;*/
/*}*/
#filters_switcher_toggle {
top: 320px !important;
position: fixed;
height: 36px;
background-color: var(--secondary-color);
border-radius: 4px 0 0 4px;
cursor: pointer;
padding: 0 2px;
box-shadow: -2px 2px 5px rgba(0, 0, 0, .26);
box-sizing: border-box;
/*z-index: 981;*/
right: 0;
}
/*!*Sidebar*!*/
/*!*Style*!*/
@ -233,12 +260,7 @@
/*.uk-modal-container .uk-modal-dialog {*/
/* width: 900px;*/
/*}*/
/*.stakeholderPage .uk-card.uk-disabled, .stakeholderPage .uk-card.semiFiltered{*/
/* opacity: 0.5;*/
/*}*/
/*.stakeholderPage .uk-card.semiFiltered > * > .highcharts-series-group{*/
/* opacity: 0.5;*/
/*}*/
/*.stakeholderPage .selectedFilterLabel {*/
/* background-color: #E6EEF2;*/
/* border-color: #E6EEF2;*/

@ -1 +1 @@
Subproject commit fb13bcae2ffe56445eda67e2e48740dc5a1e12df
Subproject commit 60be89ef464a3eb6a485b1f68bd9f3dcde0393a0

View File

@ -3,5 +3,5 @@
@import "assets/common-assets/library.css";
@import "assets/common-assets/common/custom.css";
@import "assets/dashboard-theme/main.css";
@import "assets/new.css";
@import "assets/monitor-dashboard-custom.css";
@import "assets/print.css";