[Monitor Dashboard | Trunk]: Create terminology page. Add notifications on beta
git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-monitor-portal/trunk/monitor_dashboard@60754 d315682c-612b-4755-9ff5-7f18f6832af3
This commit is contained in:
parent
3dc53e06d9
commit
13cf0e0054
|
@ -25,7 +25,7 @@
|
|||
[centered]="true" [properties]="properties" [showMenuItems]="true"></bottom>
|
||||
<role-verification *ngIf="stakeholder"
|
||||
[id]="stakeholder.alias" [name]="stakeholder.name" [type]="stakeholder.type"></role-verification>
|
||||
<notification-sidebar *ngIf="properties.environment === 'development' && user && notificationGroupsInitialized"
|
||||
<notification-sidebar *ngIf="properties.environment !== 'production' && user && notificationGroupsInitialized"
|
||||
[user]="user" [availableGroups]="notificationGroups" service="monitor"></notification-sidebar>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -174,7 +174,7 @@ export class AppComponent implements OnInit, OnDestroy {
|
|||
this.user = user;
|
||||
if (user) {
|
||||
this.buildMenu();
|
||||
if(!this.notificationGroupsInitialized && this.properties.environment === 'development') {
|
||||
if(!this.notificationGroupsInitialized && this.properties.environment !== 'production') {
|
||||
this.setNotificationGroups();
|
||||
}
|
||||
}
|
||||
|
@ -274,6 +274,10 @@ export class AppComponent implements OnInit, OnDestroy {
|
|||
rootItem: new MenuItem("dashboard", "Dashboard",
|
||||
"", "/" + this.stakeholder.alias, false, [], null, {}), items: []
|
||||
});
|
||||
this.menuItems.push({
|
||||
rootItem: new MenuItem("terminology", "Terminology",
|
||||
"", "/" + this.stakeholder.alias + "/terminology", false, [], null, {}), items: []
|
||||
});
|
||||
if(this.stakeholder.type === "funder") {
|
||||
this.menuItems.push({
|
||||
rootItem: new MenuItem("develop", "Develop",
|
||||
|
@ -298,6 +302,10 @@ export class AppComponent implements OnInit, OnDestroy {
|
|||
badge: false,
|
||||
stickyAnimation: false
|
||||
};
|
||||
this.menuItems.push({
|
||||
rootItem: new MenuItem("terminology", "Terminology",
|
||||
"", "/" + this.stakeholder.alias + "/terminology", false, [], null, {}), items: []
|
||||
});
|
||||
if(this.stakeholder.type === "funder") {
|
||||
this.menuItems.push({
|
||||
rootItem: new MenuItem("develop", "Develop",
|
||||
|
@ -310,7 +318,6 @@ export class AppComponent implements OnInit, OnDestroy {
|
|||
"", "/admin", false, [], null, {}), items: []
|
||||
});
|
||||
}
|
||||
|
||||
if (this.isPublicOrIsMember(this.stakeholder.visibility)) {
|
||||
this.specialSideBarMenuItem = new MenuItem("search", "Search research outcomes", "", this.properties.searchLinkToResults, false, [], null, {});
|
||||
this.specialSideBarMenuItem.icon = '<span uk-icon="search"></span>';
|
||||
|
@ -385,21 +392,6 @@ export class AppComponent implements OnInit, OnDestroy {
|
|||
this.adminMenuItems = [];
|
||||
this.specialSideBarMenuItem = null;
|
||||
this.adminMenuItems.push(new MenuItem("stakeholders", "Manage profiles", "", "/admin", false, [], [], {}, "<i uk-icon=\"cog\"></i>"));
|
||||
// if(Session.isPortalAdministrator(this.user) ) {
|
||||
// let adminOptions = new MenuItem("adminOptions", "Admin Options","", "/admin-tools/admin-pages", false, [], [], {});
|
||||
// /* adminOptions.items.push(new MenuItem("pages", "Pages", "", "/admin-tools/pages", false, [], [], {}));
|
||||
// adminOptions.items.push(new MenuItem("portals", "Portals", "", "/admin-tools/portals", false, [], [], {}));
|
||||
// adminOptions.items.push(new MenuItem("entities", "Entities", "", "/admin-tools/entities", false, [], [], {}));
|
||||
// // adminOptions.items.push(new MenuItem("classes", "Class help texts", "", "/admin-tools/classes", false, [], [], {}));*/
|
||||
// this.adminMenuItems.push(adminOptions);
|
||||
// let monitorOptions = new MenuItem("monitorOptions", "Monitor Options","", "/admin-tools/admin-pages", false, [], [], {communityId: 'monitor'});
|
||||
// /* monitorOptions.items.push(new MenuItem("pages", "Pages", "", "/admin-tools/pages", false, [], [], {communityId: 'monitor'}));
|
||||
// monitorOptions.items.push(new MenuItem("entities", "Entities", "", "/admin-tools/entities", false, [], [], {communityId: 'monitor'}));
|
||||
// // monitorOptions.items.push(new MenuItem("classes", "Class help texts", "", "/admin-tools/classContents", false, [], [], {communityId: 'monitor'}));
|
||||
// monitorOptions.items.push(new MenuItem("helptexts", "Help texts", "", "/admin-tools/helptexts", false, [], [], {communityId: 'monitor'}));*/
|
||||
// this.adminMenuItems.push(monitorOptions);
|
||||
// }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -14,9 +14,9 @@ import {StakeholderUtils} from "../utils/indicator-utils";
|
|||
<div page-content>
|
||||
<div inner>
|
||||
<div *ngIf="stakeholder" class="uk-container uk-container-large uk-section-small">
|
||||
<h2 class="uk-text-center">
|
||||
<h1 class="uk-text-center uk-h2">
|
||||
Develop
|
||||
</h2>
|
||||
</h1>
|
||||
<div class="uk-margin-medium-top uk-card uk-card-body uk-card-default">
|
||||
<h3 class="uk-text-center">Help developers with <span
|
||||
class="portal-color uk-text-bold">OpenAIRE APIs</span>
|
||||
|
|
|
@ -99,7 +99,7 @@ declare var UIkit;
|
|||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<div #notify notify-form [class.uk-hidden]="properties.environment !== 'development'" class="uk-width-1-1 uk-margin-medium-top uk-margin-medium-bottom"></div>
|
||||
<div #notify notify-form [class.uk-hidden]="properties.environment === 'production'" class="uk-width-1-1 uk-margin-medium-top uk-margin-medium-bottom"></div>
|
||||
</div>`,
|
||||
styleUrls: ['edit-stakeholder.component.css']
|
||||
})
|
||||
|
|
|
@ -16,7 +16,16 @@ import {EnvironmentSpecificResolver} from "../openaireLibrary/utils/properties/e
|
|||
{
|
||||
path: ':stakeholder/develop',
|
||||
loadChildren: '../develop/develop.module#DevelopModule',
|
||||
resolve: {envSpecific: EnvironmentSpecificResolver},
|
||||
canDeactivate: [PreviousRouteRecorder],
|
||||
data: {
|
||||
hasSidebar: false,
|
||||
isDashboard: false
|
||||
}
|
||||
},
|
||||
{
|
||||
path: ':stakeholder/terminology',
|
||||
loadChildren: '../terminology/terminology.module#TerminologyModule',
|
||||
canDeactivate: [PreviousRouteRecorder],
|
||||
data: {
|
||||
hasSidebar: false,
|
||||
isDashboard: false
|
||||
|
@ -25,7 +34,7 @@ import {EnvironmentSpecificResolver} from "../openaireLibrary/utils/properties/e
|
|||
{
|
||||
path: ':stakeholder/search',
|
||||
loadChildren: '../search/search.module#SearchModule',
|
||||
resolve: {envSpecific: EnvironmentSpecificResolver}
|
||||
canDeactivate: [PreviousRouteRecorder]
|
||||
},
|
||||
{
|
||||
path: ':stakeholder/:topic',
|
||||
|
|
|
@ -132,7 +132,7 @@
|
|||
[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:
|
||||
<div *ngIf="properties.environment === 'development'">Filtered:
|
||||
{{indicator.indicatorPaths[0].filtersApplied}}
|
||||
out of
|
||||
{{countSelectedFilters()}}</div>
|
||||
|
@ -172,7 +172,7 @@
|
|||
{{indicatorPath.type}}
|
||||
</button>
|
||||
</div>
|
||||
<div *ngIf="properties.environment == 'development'">
|
||||
<div *ngIf="properties.environment === 'development'">
|
||||
Filtered: {{chartsActiveType.get(i + '-' + j).filtersApplied}} out of
|
||||
{{countSelectedFilters()}}</div>
|
||||
<iframe *ngIf=" !properties.disableFrameLoad && chartsActiveType.get(i + '-' + j).source !==
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
table {
|
||||
font-size: 14px;
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
table th, table td {
|
||||
border: 1px solid #DEDEDE;
|
||||
padding: 25px 40px;
|
||||
vertical-align: top;
|
||||
text-align: start;
|
||||
}
|
||||
|
||||
ul.portal-circle {
|
||||
list-style: none;
|
||||
padding-left: 40px;
|
||||
font-family: "Open Sans", sans-serif;
|
||||
}
|
||||
|
||||
ul.portal-circle li {
|
||||
margin: 0 0 2px 0;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
ul.portal-circle li:before {
|
||||
content: "";
|
||||
border: 5px var(--portal-main-color) solid !important;
|
||||
border-radius: 50px;
|
||||
line-height: 21px;
|
||||
margin-left: -20px;
|
||||
position: absolute;
|
||||
top: 7px;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 959px) {
|
||||
ul.portal-circle {
|
||||
padding-left: 20px;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,224 @@
|
|||
import {Component, OnDestroy, OnInit} from "@angular/core";
|
||||
import {StakeholderService} from "../openaireLibrary/monitor/services/stakeholder.service";
|
||||
import {Stakeholder} from "../openaireLibrary/monitor/entities/stakeholder";
|
||||
import {Subscription} from "rxjs";
|
||||
import {Meta, Title} from "@angular/platform-browser";
|
||||
import {SEOService} from "../openaireLibrary/sharedComponents/SEO/SEO.service";
|
||||
import {properties} from "../../environments/environment";
|
||||
import {ActivatedRoute, Router} from "@angular/router";
|
||||
|
||||
@Component({
|
||||
selector: 'terminology',
|
||||
template: `
|
||||
<div page-content>
|
||||
<div inner>
|
||||
<div *ngIf="stakeholder" class="uk-container uk-container-large uk-section-small">
|
||||
<h1 class="uk-text-center uk-h2">
|
||||
Terminology and construction
|
||||
</h1>
|
||||
<div class="uk-margin-large-top">
|
||||
<ul class="uk-tab admin customTabs uk-margin-medium-bottom" uk-tab>
|
||||
<li [class.uk-active]="tab === 'entities'"><a (click)="tab = 'entities'"><span
|
||||
class="title">Entities</span></a></li>
|
||||
<li [class.uk-active]="tab === 'attributes'"><a (click)="tab = 'attributes'"><span class="title">Attributes of Research Results</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
<table *ngIf="tab === 'entities'">
|
||||
<tr>
|
||||
<th>Research Outputs</th>
|
||||
<td>
|
||||
<div>There are currently four different types of research outputs types in the OpenAIRE Research
|
||||
Graph:
|
||||
</div>
|
||||
<ul class="portal-circle">
|
||||
<li>Publication</li>
|
||||
<li>Dataset</li>
|
||||
<li>Software</li>
|
||||
<li>Other Research Products</li>
|
||||
</ul>
|
||||
<div class="uk-margin-small-top">
|
||||
OpenAIRE deduplicates (merges) different records or research outputs and keeps the metadata of all
|
||||
instances.
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Publication</th>
|
||||
<td>Research outputs intended for human reading (published articles, pre-prints, conference papers,
|
||||
presentations, technical reports, etc.)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Dataset</th>
|
||||
<td>Research data (granularity is not defined by OpenAIRE, which reflects the granularity supported by
|
||||
the sources from which the description of the dataset has been collected)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Software</th>
|
||||
<td>Source code or software package developed and/or used in a research context.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Other Research Product</th>
|
||||
<td>Anything that does not fall in the previous categories (e.g. workflow, methods, protocols).</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table *ngIf="tab === 'attributes'">
|
||||
<tr>
|
||||
<th>Organization & Country</th>
|
||||
<td>
|
||||
<p>For research output: The affiliated organizations of its authors (and their country).</p>
|
||||
<p>For projects: The organizations participating in the project (i.e. beneficiaries of the grant), and
|
||||
their countries (when available).
|
||||
</p>
|
||||
<p>
|
||||
Country code mapping:
|
||||
<a href="https://api.openaire.eu/vocabularies/dnet:countries" target="_blank">
|
||||
https://api.openaire.eu/vocabularies/dnet:countries</a>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Type</th>
|
||||
<td>
|
||||
<p>The type of research output (e.g. a publication can be a pre-print, conference proceeding, article,
|
||||
etc.)</p>
|
||||
<p>Resource type mapping:
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Access mode</th>
|
||||
<td>
|
||||
<p>The best available (across all instances) access rights of a research output.</p>
|
||||
<p>Types: open, restricted, closed, embargo (= closed for a specific period of time, then open)</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>PID (persistent identifier)</th>
|
||||
<td>
|
||||
<p>A long-lasting reference to a resource</p>
|
||||
<p>Types: <a href="http://api.openaire.eu/vocabularies/dnet:pid_types" target="_blank">http://api.openaire.eu/vocabularies/dnet:pid_types</a>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Context</th>
|
||||
<td>Related research community/initiative/infrastructure</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Journal</th>
|
||||
<td>The scientific journal an article is published in.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Publisher</th>
|
||||
<td>The publisher of the venue (journal, book, etc.) of a research output</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Content Provider (Datasources)</th>
|
||||
<td>
|
||||
<p>The different data sources ingested in the OpenAIRE Research Graph.</p>
|
||||
<div>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>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Repository</th>
|
||||
<td>Information systems where scientists upload the bibliographic metadata and payloads of their
|
||||
research outputs (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).
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Open Access Publishers & Journals</th>
|
||||
<td>Information systems of open access publishers or relative journals, which offer bibliographic
|
||||
metadata and PDFs of their published articles.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Aggregators</th>
|
||||
<td>Information systems that collect descriptive metadata about research products from multiple sources
|
||||
in order to enable cross-data source discovery of given research products. Examples are DataCite,
|
||||
BASE, DOAJ.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Entity Registries</th>
|
||||
<td>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.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>CRIS (Current Research Information System)</th>
|
||||
<td>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.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="uk-text-small uk-margin-small-top">More information at <a href="https://graph.openaire.eu">https://graph.openaire.eu</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`,
|
||||
styleUrls: ['terminology.component.css']
|
||||
})
|
||||
export class TerminologyComponent implements OnInit, OnDestroy {
|
||||
|
||||
public stakeholder: Stakeholder;
|
||||
public tab: 'entities' | 'attributes' = 'entities';
|
||||
private subscriptions: any[] = [];
|
||||
|
||||
constructor(private stakeholderService: StakeholderService,
|
||||
private seoService: SEOService,
|
||||
private _meta: Meta,
|
||||
private _router: Router,
|
||||
private route: ActivatedRoute,
|
||||
private _title: Title) {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.subscriptions.push(this.route.fragment.subscribe(tab => {
|
||||
if (tab === 'attributes') {
|
||||
this.tab = tab;
|
||||
} else {
|
||||
this.tab = 'entities';
|
||||
}
|
||||
}));
|
||||
this.subscriptions.push(this.stakeholderService.getStakeholderAsObservable().subscribe(stakeholder => {
|
||||
this.stakeholder = stakeholder;
|
||||
if (this.stakeholder) {
|
||||
/* Metadata */
|
||||
const url = properties.domain + properties.baseLink + this._router.url;
|
||||
this.seoService.createLinkForCanonicalURL(url, false);
|
||||
this._meta.updateTag({content: url}, "property='og:url'");
|
||||
const description = "Terminology | " + this.stakeholder.name;
|
||||
const title = "Terminology | " + this.stakeholder.name;
|
||||
this._meta.updateTag({content: description}, "name='description'");
|
||||
this._meta.updateTag({content: description}, "property='og:description'");
|
||||
this._meta.updateTag({content: title}, "property='og:title'");
|
||||
this._title.setTitle(title);
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
ngOnDestroy() {
|
||||
this.subscriptions.forEach(subscription => {
|
||||
if (subscription instanceof Subscription) {
|
||||
subscription.unsubscribe();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
import {NgModule} from "@angular/core";
|
||||
import {CommonModule} from "@angular/common";
|
||||
import {TerminologyComponent} from "./terminology.component";
|
||||
import {RouterModule} from "@angular/router";
|
||||
import {PreviousRouteRecorder} from "../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
|
||||
import {PageContentModule} from "../openaireLibrary/dashboard/sharedComponents/page-content/page-content.module";
|
||||
|
||||
@NgModule({
|
||||
declarations: [TerminologyComponent],
|
||||
imports: [CommonModule, RouterModule.forChild([
|
||||
{
|
||||
path: '',
|
||||
component: TerminologyComponent,
|
||||
canDeactivate: [PreviousRouteRecorder]
|
||||
},
|
||||
]), PageContentModule],
|
||||
exports: [TerminologyComponent]
|
||||
})
|
||||
export class TerminologyModule {
|
||||
|
||||
}
|
|
@ -353,7 +353,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div #editNumberNotify notify-form class="uk-width-1-1 uk-margin-medium-top"
|
||||
[class.uk-hidden]="properties.environment !== 'development'"></div>
|
||||
[class.uk-hidden]="properties.environment === 'production'"></div>
|
||||
</div>
|
||||
</modal-alert>
|
||||
<modal-alert #editChartModal
|
||||
|
@ -484,7 +484,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div #editChartNotify notify-form class="uk-width-1-1 uk-margin-medium-top"
|
||||
[class.uk-hidden]="properties.environment !== 'development'"></div>
|
||||
[class.uk-hidden]="properties.environment === 'production'"></div>
|
||||
</div>
|
||||
</modal-alert>
|
||||
<modal-alert #deleteModal (alertOutput)="deleteIndicator()">
|
||||
|
@ -498,7 +498,7 @@
|
|||
<!-- </span>-->
|
||||
Are you sure you want to proceed?
|
||||
<div #deleteNotify notify-form class="uk-width-1-1 uk-margin-medium-top"
|
||||
[class.uk-hidden]="properties.environment !== 'development'"></div>
|
||||
[class.uk-hidden]="properties.environment === 'production'"></div>
|
||||
</modal-alert>
|
||||
<!--<modal-alert #deleteAllModal (alertOutput)="deleteIndicator('delete')">
|
||||
You are about to delete <span class="uk-text-bold" *ngIf="indicator && index !== -1">
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
</ul>
|
||||
</ng-template>
|
||||
<role-users *ngIf="!loading && alias" [id]="alias" [type]="type" [name]="name" [link]="link" [role]="tab" [message]="messages.get(tab)"
|
||||
[emailComposer]="emailComposer" [notificationFn]="(properties.environment === 'development')?notificationFn:null">
|
||||
[emailComposer]="emailComposer" [notificationFn]="(properties.environment !== 'production')?notificationFn:null">
|
||||
<ng-container [ngTemplateOutlet]="tabs"></ng-container>
|
||||
</role-users>
|
||||
|
||||
|
|
|
@ -63,7 +63,7 @@ export let properties: EnvProperties = {
|
|||
// monitorServiceAPIURL: "https://services.openaire.eu/uoa-monitor-service",
|
||||
monitorServiceAPIURL: "http://duffy.di.uoa.gr:8080/uoa-monitor-service",
|
||||
adminToolsAPIURL: "http://duffy.di.uoa.gr:8080/uoa-monitor-service/",
|
||||
notificationsAPIURL: "http://mpagasas.di.uoa.gr:8080/uoa-admin-tools/notification/",
|
||||
notificationsAPIURL: "http://duffy.di.uoa.gr:8080/uoa-monitor-service/notification/",
|
||||
adminToolsCommunity: "monitor",
|
||||
useHelpTexts: false,
|
||||
datasourcesAPI: "https://beta.services.openaire.eu/openaire/ds/search/",
|
||||
|
|
Loading…
Reference in New Issue