1. When linking is from connect, add community in the basket if there is not
	2. My links add separate section with the recent claims (24h)
	3. In recent claims add tooltip with information about the link visiblility in the index
	4. Add section on the right with the link to create more and a link to claims information article
	5. Add link to claims information article to the properties



git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-services-library/trunk/ng-openaire-library/src/app@53553 d315682c-612b-4755-9ff5-7f18f6832af3
This commit is contained in:
argiro.kokogiannaki 2018-10-25 09:33:56 +00:00
parent d29a8f85af
commit b0b1af6a04
12 changed files with 137 additions and 203 deletions

View File

@ -232,28 +232,32 @@ isSelected(id):boolean{
} }
return false; return false;
} }
addNewContext(community,category,concept){ addNewContext(community,category,concept, notify=true){
var context: ClaimContext= { community: community, category: category, concept: concept }; var context: ClaimContext= { community: community, category: category, concept: concept };
var found:boolean = false; var found:boolean = false;
this.warningMessage = ""; this.warningMessage = "";
if (!this.isSelected(context.concept.id)) { if (!this.isSelected(context.concept.id)) {
this.selectedList.push(context); this.selectedList.push(context);
if(notify){
UIkit.notification({ UIkit.notification({
message : 'A new concept is selected.', message : 'A new concept added in the basket.',
status : 'primary', status : 'primary',
timeout : 1000, timeout : 1000,
pos : 'top-center' pos : 'top-center'
}); });
}
localStorage.setItem(this.localStoragePrefix + "contexts", JSON.stringify(this.selectedList)); localStorage.setItem(this.localStoragePrefix + "contexts", JSON.stringify(this.selectedList));
}else{ }else{
if(notify){
UIkit.notification({ UIkit.notification({
message : 'The concept is already on your list.', message : 'The concept is already on your basket.',
status : 'warning', status : 'warning',
timeout : 1000, timeout : 1000,
pos : 'top-center' pos : 'top-center'
}); });
} }
}
} }
getCommunities () { getCommunities () {
@ -273,6 +277,8 @@ getCommunities () {
//preselect community //preselect community
this.selectedCommunityId = this.communityId; this.selectedCommunityId = this.communityId;
this.communityChanged() this.communityChanged()
this.addNewContext(this.selectedCommunityLabel,null,{'id':this.selectedCommunityId, 'label':this.selectedCommunityLabel}, false)
} }
}, },
err => { err => {

View File

@ -12,10 +12,6 @@ import{EnvProperties} from '../../utils/properties/env-properties';
selector: 'claim-projects-search-form', selector: 'claim-projects-search-form',
template: ` template: `
<!--div class="uk-notification uk-notification-top-center"><div class="uk-notification-message uk-notification-message-primary" style="opacity: 1; margin-top: 0px; margin-bottom: 10px;">
<a href="#" class="uk-notification-close uk-close uk-icon" data-uk-close=""></a>
<div>A new project is selected.</div>
</div></div-->
<form [class]="((inlineClaim)?'':' uk-card uk-card-default uk-padding uk-padding-medium ')+ 'uk-animation' " > <form [class]="((inlineClaim)?'':' uk-card uk-card-default uk-padding uk-padding-medium ')+ 'uk-animation' " >
<div class="uk-text-lead">Search for projects <helper div="link-project-form" tooltip=true></helper></div> <div class="uk-text-lead">Search for projects <helper div="link-project-form" tooltip=true></helper></div>
<div class="uk-grid"> <div class="uk-grid">
@ -143,14 +139,14 @@ select(item){
value: true value: true
}); });
UIkit.notification({ UIkit.notification({
message : 'A new project is selected.', message : 'A new project added in the basket.',
status : 'primary', status : 'primary',
timeout : 1000, timeout : 1000,
pos : 'top-center' pos : 'top-center'
}); });
}else{ }else{
UIkit.notification({ UIkit.notification({
message : 'The project is already on your list.', message : 'The project is already on your basket.',
status : 'warning', status : 'warning',
timeout : 1000, timeout : 1000,
pos : 'top-center' pos : 'top-center'

View File

@ -54,7 +54,7 @@ export class ClaimResultsComponent {
this.selectedResults.push(item); this.selectedResults.push(item);
UIkit.notification({ UIkit.notification({
message : 'A new research result is selected.', message : 'A new research result added in the basket.',
status : 'primary', status : 'primary',
timeout : 1000, timeout : 1000,
pos : 'top-center' pos : 'top-center'
@ -64,7 +64,7 @@ export class ClaimResultsComponent {
} }
}else{ }else{
UIkit.notification({ UIkit.notification({
message : 'The research result is already on your list.', message : 'The research result is already on your basket.',
status : 'warning', status : 'warning',
timeout : 1000, timeout : 1000,
pos : 'top-center' pos : 'top-center'

View File

@ -5,13 +5,46 @@
<div class="uk-grid helper-grid"> <div class="uk-grid helper-grid">
<helper position="left" styleName=" uk-width-1-5 uk-padding-left"></helper> <helper position="left" styleName=" uk-width-1-5 uk-padding-left"></helper>
<div class="uk-width-expand"> <div class="uk-width-expand">
<div *ngIf="claims && claims.length > 0" class="uk-alert uk-alert-primary"> <!-- <div *ngIf="claims && claims.length > 0" class="uk-alert uk-alert-primary">
<span class="uk-margin-small-right uk-icon" uk-icon="warning"></span> <span class="uk-margin-small-right uk-icon" uk-icon="warning"></span>
Newly added links for OpenAIRE research results will be available on the next run of our algorithms. Newly added links for OpenAIRE research results will be available on the next run of our algorithms.
<div class="uk-margin-left">Links to external results (Crossref, Datacite, Orcid) are automatically added in OpenAIRE information space.</div> <div class="uk-margin-left">Links to external results (Crossref, Datacite, Orcid) are automatically added in OpenAIRE information space.</div>
</div> -->
<div *ngIf="showLatestClaims && recentClaims.length > 0" class="uk-section uk-section-muted uk-padding-small uk-padding-right uk-padding-left">
<div *ngIf="showLatestClaims && recentClaims.length > 0" class="uk-h5">
<span uk-tooltip="title:<div class='uk-margin-small'> Claims created during the last 24 hours</div>">
Recent links
</span>
</div> </div>
<form class=""> <table *ngIf="showLatestClaims && recentClaims.length > 0" class="uk-table uk-table-small uk-table-striped">
<thead>
<tr>
<th><a (click)="changeOrderby('target')" >Research Result</a> </th>
<th><a (click)="changeOrderby('source')" >Link to</a> </th>
<th *ngIf="showUserEmail"><a (click)="changeOrderby('user')" >Claimed by</a> </th>
<th><a (click)="changeOrderby('date')"> Claimed Date</a></th>
<th *ngIf="showLatestClaims">Status</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let claim of recentClaims " >
<td><claim-entity [entity]="claim.target" [type]="claim.targetType" [(properties)]=properties> </claim-entity></td>
<td><claim-entity [entity]="claim.source" [type]="claim.sourceType" [(properties)]=properties> </claim-entity></td>
<td *ngIf="showUserEmail">{{claim.userMail}}</td>
<td>{{claim.date}}</td>
<td *ngIf="showLatestClaims">
<span class="uk-icon" [attr.uk-tooltip]="'title:<div class=\'uk-margin-small\'>'+getclaimStatus(claim)+'</div>'">
<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" icon="question" ratio="1">
<circle fill="none" stroke="#000" stroke-width="1.1" cx="10" cy="10" r="9"></circle><circle cx="10.44" cy="14.42" r="1.05"></circle><path fill="none" stroke="#000" stroke-width="1.2" d="M8.17,7.79 C8.17,4.75 12.72,4.73 12.72,7.72 C12.72,8.67 11.81,9.15 11.23,9.75 C10.75,10.24 10.51,10.73 10.45,11.4 C10.44,11.53 10.43,11.64 10.43,11.75"></path></svg>
</span>
</td>
</tr>
</tbody>
</table>
</div>
<form class="">
<div class="-row"> <div class="-row">
<span class="uk-text-bold">Filter By:</span> <span class="uk-text-bold">Filter By:</span>
@ -52,7 +85,7 @@
<div *ngIf="resultsNum>0" class="uk-width-1-2"> <div *ngIf="resultsNum>0" class="uk-width-1-2">
<span > Show <span > Show
<select *ngIf="resultsNum>10" class="uk-width-1-2 uk-select" [(ngModel)]="size" name="select_size" (ngModelChange)="changeSize(size)" > <select *ngIf="resultsNum>10" class="uk-width-small uk-select" [(ngModel)]="size" name="select_size" (ngModelChange)="changeSize(size)" >
<option *ngFor="let size of sizes" [value]="size">{{size}}</option> <option *ngFor="let size of sizes" [value]="size">{{size}}</option>
</select> </select>
</span> </span>
@ -128,9 +161,27 @@
</tbody> </tbody>
</table> </table>
</div> </div>
<helper position="bottom"></helper>
</div>
<div class="uk-width-1-5">
<div class="uk-card portal-card uk-padding" *ngIf="moreClaimsURL || claimsInfoURL">
<h6 *ngIf="moreClaimsURL.indexOf('http')==-1" class="uk-h6">
<a class="el-content uk-link-text" [routerLink]="moreClaimsURL">Claim more links?</a>
</h6>
<h6 *ngIf="moreClaimsURL.indexOf('http')!=-1" class="uk-h6">
<a class="el-content uk-link-text" [href]="moreClaimsURL" target="_blank">Claim more links?</a>
</h6>
<h6 *ngIf="claimsInfoURL" class="uk-h6 uk-margin-small-top">
<a class="el-content uk-link-text" [href]="claimsInfoURL" target="_blank">Learn more</a>
</h6>
<!-- <div *ngIf="moreClaimsURL.indexOf('http')==-1"><a [routerLink]="moreClaimsURL">Claim more links?</a></div>
<div *ngIf="moreClaimsURL.indexOf('http')!=-1" ><a [href]="moreClaimsURL" target="_blank">Claim more links?</a></div>
<div><a [href]="claimsInfoURL" target="_blank">Learn more</a></div> -->
</div>
<helper position="right" styleName=" uk-width-1-5"></helper> <helper position="right" styleName=" uk-width-1-5"></helper>
</div> </div>
<helper position="bottom"></helper> </div>
<modal-alert (alertOutput)="confirmClose($event)"> <modal-alert (alertOutput)="confirmClose($event)">
</modal-alert> </modal-alert>
<modal-loading [message]= "'Please wait...'"></modal-loading> <modal-loading [message]= "'Please wait...'"></modal-loading>

View File

@ -19,6 +19,7 @@ import{EnvProperties} from '../../../utils/properties/env-properties';
export class DisplayClaimsComponent { export class DisplayClaimsComponent {
properties:EnvProperties; properties:EnvProperties;
public searchTermStream = new Subject<string>(); public searchTermStream = new Subject<string>();
constructor (private _claimService: ClaimsService, private route: ActivatedRoute, private _router:Router, private location: Location) { constructor (private _claimService: ClaimsService, private route: ActivatedRoute, private _router:Router, private location: Location) {
} }
@ -74,6 +75,8 @@ export class DisplayClaimsComponent {
@Input() showUserEmail: boolean = true; @Input() showUserEmail: boolean = true;
@Input() myClaims: boolean= false ; @Input() myClaims: boolean= false ;
@Input() isAdmin:boolean = false; @Input() isAdmin:boolean = false;
@Input() showLatestClaims:boolean = false;
recentClaims = [];
page : number; page : number;
size:number; size:number;
sizes = [10,20,30,50]; sizes = [10,20,30,50];
@ -87,6 +90,8 @@ export class DisplayClaimsComponent {
navigateTo: string = "Claims"; navigateTo: string = "Claims";
resultsNum: number ; resultsNum: number ;
claims: string[]; claims: string[];
@Input() moreClaimsURL:string;// ="/participate/claim";
@Input() claimsInfoURL:string;// ="https://www.openaire.eu/linking";
@ViewChild (ModalLoading) loading : ModalLoading ; @ViewChild (ModalLoading) loading : ModalLoading ;
@ -129,8 +134,7 @@ export class DisplayClaimsComponent {
if(this.fetchBy =="Project" ){ if(this.fetchBy =="Project" ){
this._claimService.getClaimsByProject(this.size,this.page,this.fetchId,this.keyword,this.sortby,this.descending, types, this.properties.claimsAPIURL).subscribe( this._claimService.getClaimsByProject(this.size,this.page,this.fetchId,this.keyword,this.sortby,this.descending, types, this.properties.claimsAPIURL).subscribe(
data => { data => {
this.claims = data.data; this.manageAPIData(data);
this.resultsNum= data.total;
}, },
err => { err => {
this.handleErrors(err); this.handleErrors(err);
@ -139,8 +143,7 @@ export class DisplayClaimsComponent {
}else if(this.fetchBy =="User"){ }else if(this.fetchBy =="User"){
this._claimService.getClaimsByUser(this.size,this.page,this.fetchId,this.keyword,this.sortby,this.descending, types,this.properties.claimsAPIURL).subscribe( this._claimService.getClaimsByUser(this.size,this.page,this.fetchId,this.keyword,this.sortby,this.descending, types,this.properties.claimsAPIURL).subscribe(
data => { data => {
this.claims = data.data; this.manageAPIData(data);
this.resultsNum= data.total;
}, },
err => { err => {
this.handleErrors(err); this.handleErrors(err);
@ -149,8 +152,7 @@ export class DisplayClaimsComponent {
}else if(this.fetchBy =="Result"){ }else if(this.fetchBy =="Result"){
this._claimService.getClaimsByResult(this.size,this.page,this.fetchId,this.keyword,this.sortby,this.descending, types, this.properties.claimsAPIURL).subscribe( this._claimService.getClaimsByResult(this.size,this.page,this.fetchId,this.keyword,this.sortby,this.descending, types, this.properties.claimsAPIURL).subscribe(
data => { data => {
this.claims = data.data; this.manageAPIData(data);
this.resultsNum= data.total;
}, },
err => { err => {
this.handleErrors(err); this.handleErrors(err);
@ -159,9 +161,7 @@ export class DisplayClaimsComponent {
}else if(this.fetchBy =="Context"){ }else if(this.fetchBy =="Context"){
this._claimService.getClaimsBycontext(this.size,this.page,this.fetchId,this.keyword,this.sortby,this.descending, types, this.properties.claimsAPIURL).subscribe( this._claimService.getClaimsBycontext(this.size,this.page,this.fetchId,this.keyword,this.sortby,this.descending, types, this.properties.claimsAPIURL).subscribe(
data => { data => {
this.claims = data.data; this.manageAPIData(data);
this.resultsNum= null;
this.resultsNum= data.total;//data.length; //TODO get the total results num
}, },
err => { err => {
this.handleErrors(err); this.handleErrors(err);
@ -170,9 +170,7 @@ export class DisplayClaimsComponent {
}else{ }else{
this._claimService.getClaims(this.size,this.page,this.keyword,this.sortby,this.descending, types, this.properties.claimsAPIURL).subscribe( this._claimService.getClaims(this.size,this.page,this.keyword,this.sortby,this.descending, types, this.properties.claimsAPIURL).subscribe(
data => { data => {
this.claims = data.data; this.manageAPIData(data);
this.resultsNum = null;
this.resultsNum= data.total;//data.length; //TODO get the total results num
}, },
err => { err => {
this.handleErrors(err); this.handleErrors(err);
@ -180,6 +178,28 @@ export class DisplayClaimsComponent {
); );
} }
} }
}
manageAPIData(data){
var d = new Date();
var dateTomillis = d.getTime();
var millis24h:number = 24*3600000;
console.log("Date is:"+dateTomillis);
if(this.showLatestClaims && this.recentClaims.length == 0){
this.recentClaims = [];
for(var i=0;i<data.data.length;i++){
var claimDate = new Date(data.data[i].date);
var claimDateToMillis = claimDate.getTime()
// console.log("Claim Date is:"+claimDateToMillis + " "+(dateTomillis - claimDateToMillis));
if((dateTomillis - claimDateToMillis)<millis24h){
// console.log("Claim in:"+ " "+(dateTomillis - claimDateToMillis)+" < " +(millis24h));
this.recentClaims.push(data.data[i]);
}
}
}
this.claims = data.data;
this.resultsNum= data.total;
} }
handleErrors(err){ handleErrors(err){
@ -520,4 +540,13 @@ handleErrors(err){
var page:number = +$event.value var page:number = +$event.value
this.goTo(page); this.goTo(page);
} }
getclaimStatus(claim):string{
if(claim.target.collectedFrom == "infrastruct_::openaire"){
return "The link information will be visible in the portal and the APIs after the next content provision workflow.";
}else{
return "The link information is visible in the portal and the APIs.";
}
}
} }

View File

@ -1,6 +1,7 @@
import { NgModule} from '@angular/core'; 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 {ClaimServiceModule} from '../service/claimsService.module'; import {ClaimServiceModule} from '../service/claimsService.module';
import {DisplayClaimsComponent} from './displayClaims.component'; import {DisplayClaimsComponent} from './displayClaims.component';
import {LoadingModalModule} from '../../../utils/modal/loadingModal.module'; import {LoadingModalModule} from '../../../utils/modal/loadingModal.module';
@ -11,7 +12,7 @@ import {HelperModule} from '../../../utils/helper/helper.module';
@NgModule({ @NgModule({
imports: [ imports: [
CommonModule, FormsModule, ClaimServiceModule, LoadingModalModule, AlertModalModule, CommonModule, FormsModule, RouterModule, ClaimServiceModule, LoadingModalModule, AlertModalModule,
ClaimEntityFormatterModule, PagingModule, HelperModule ClaimEntityFormatterModule, PagingModule, HelperModule
], ],

View File

@ -17,12 +17,12 @@ import {Observable} from 'rxjs/Observable';
Manage links Manage links
</div> </div>
<div> <div>
<div class="uk-text-right"> <!--div class="uk-text-right">
<a *ngIf="!fetchBy || fetchBy != 'Context'" routerLink="/participate/claim">Claim more links?</a> <a *ngIf="!fetchBy || fetchBy != 'Context'" routerLink="/participate/claim">Claim more links?</a>
<a *ngIf="isConnect && fetchBy && fetchBy == 'Context' && fetchId" [href]="'https://beta.'+fetchId+'.openaire.eu/participate/claim'" target="_blank">Claim more links?</a> <a *ngIf="isConnect && fetchBy && fetchBy == 'Context' && fetchId" [href]="'https://beta.'+fetchId+'.openaire.eu/participate/claim'" target="_blank">Claim more links?</a>
</div> </div-->
<displayClaims [enableDelete]=true [myClaims]=false [isAdmin]=true [fetchBy]= fetchBy [fetchId]=fetchId <displayClaims [enableDelete]=true [myClaims]=false [isAdmin]=true [fetchBy]= fetchBy [fetchId]=fetchId
[communityId]="(fetchBy && fetchBy == 'Context')?fetchId:null"></displayClaims> [communityId]="(fetchBy && fetchBy == 'Context')?fetchId:null" [moreClaimsURL]=moreClaimsURL [claimsInfoURL]=claimsInfoURL></displayClaims>
</div> </div>
</div> </div>
</div> </div>
@ -36,10 +36,11 @@ export class ClaimsAdminComponent {
@Input() fetchBy:string; @Input() fetchBy:string;
@Input() fetchId:string; @Input() fetchId:string;
@Input() isConnect:boolean = false; @Input() isConnect:boolean = false;
@Input() moreClaimsURL:string;
@Input() claimsInfoURL:string;
constructor ( private _meta: Meta, private _title: Title) { constructor ( private _meta: Meta, private _title: Title) {
var titleConnect = "OpenAIRE Connect | Claims Administrator"; var titleConnect = "OpenAIRE Connect | Manage links ";
var title = "OpenAIRE | Claims Administrator"; var title = "OpenAIRE | Manage links ";
if(this.isConnect) { if(this.isConnect) {
this._title.setTitle(titleConnect); this._title.setTitle(titleConnect);

View File

@ -53,7 +53,6 @@
</div> </div>
<div class="uk-grid helper-grid"> <div class="uk-grid helper-grid">
<helper position="left" styleName=" uk-width-1-5 uk-padding-left"></helper> <helper position="left" styleName=" uk-width-1-5 uk-padding-left"></helper>
<div class="uk-width-expand"> <div class="uk-width-expand">
<ul uk-accordion class="uk-padding-small uk-margin-remove-bottom basket-accordion"> <ul uk-accordion class="uk-padding-small uk-margin-remove-bottom basket-accordion">

View File

@ -14,8 +14,8 @@ import {Title, Meta} from '@angular/platform-browser';
My links My links
</div> </div>
<div> <div>
<div class="uk-text-right"><a routerLink="/participate/claim">Claim more links?</a></div> <!--div class="uk-text-right"><a routerLink="/participate/claim">Claim more links?</a></div-->
<displayClaims [enableDelete]=true [myClaims]=true [isAdmin]=false [showUserEmail]=false ></displayClaims> <displayClaims [enableDelete]=true [myClaims]=true [isAdmin]=false [showUserEmail]=false showLatestClaims=true moreClaimsURL="/participate/claim" [claimsInfoURL]=claimsInfoURL [showLatestClaims]=showLatestClaims></displayClaims>
</div> </div>
</div> </div>
</div> </div>
@ -25,8 +25,11 @@ import {Title, Meta} from '@angular/platform-browser';
}) })
export class MyClaimsComponent { export class MyClaimsComponent {
@Input() claimsInfoURL:string;
@Input() showLatestClaims:boolean;
constructor (private _meta: Meta, private _title: Title) { constructor (private _meta: Meta, private _title: Title) {
var title = "OpenAIRE | My Claims"; var title = "OpenAIRE | My links";
this._meta.updateTag({content:title},"property='og:title'"); this._meta.updateTag({content:title},"property='og:title'");
this._title.setTitle(title); this._title.setTitle(title);

View File

@ -33,7 +33,7 @@
<div *ngIf="errorCode == '1'" class="uk-alert uk-alert-warning"> <div *ngIf="errorCode == '1'" class="uk-alert uk-alert-warning">
The requested page requires authentication. The requested page requires authentication.
<span *ngIf="!loggedIn"> <span *ngIf="!loggedIn">
<a class="loginLink" (click)="logIn()" >Please Sign in</a> <a class="" (click)="logIn()" >Please Sign in</a>
</span> </span>
</div> </div>
<div *ngIf="errorCode == '2'" class="uk-alert uk-alert-warning"> <div *ngIf="errorCode == '2'" class="uk-alert uk-alert-warning">

View File

@ -1,156 +1,3 @@
<!-- <div class="uk-section-primary uk-preserve-color uk-section uk-section-small uk-padding-remove-bottom">
<div class="uk-container uk-container-expand">
<div class="uk-grid-large uk-grid-margin-large uk-grid" uk-grid="">
<div *ngIf="showSocialButton" class="uk-width-auto@m uk-light uk-first-column">
<div id="footer#4" class="newsletter uk-margin uk-margin-remove-bottom uk-text-left uk-panel">
<h6 class="el-title uk-margin uk-h2">
Newsletter
</h6>
<a target="_blank" href="https://www.openaire.eu/newsletter/view" class="el-link">
<span class="el-image uk-icon">
<svg width="30" height="30" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<circle cx="3.12" cy="16.8" r="1.85"></circle>
<path fill="none" stroke="#000" stroke-width="1.1" d="M1.5,8.2 C1.78,8.18 2.06,8.16 2.35,8.16 C7.57,8.16 11.81,12.37 11.81,17.57 C11.81,17.89 11.79,18.19 11.76,18.5"></path>
<path fill="none" stroke="#000" stroke-width="1.1" d="M1.5,2.52 C1.78,2.51 2.06,2.5 2.35,2.5 C10.72,2.5 17.5,9.24 17.5,17.57 C17.5,17.89 17.49,18.19 17.47,18.5"></path>
</svg>
</span>
</a>
</div>
</div>
<div *ngIf="showMenu" class="uk-width-expand@m uk-light">
<div id="footer#7" class="uk-text-right@m uk-text-center">
<ul class="uk-subnav uk-margin-remove-bottom uk-subnav-divider uk-flex-right@m uk-flex-center" uk-margin="">
<ng-container *ngFor="let submenu of menuItems">
<li class="el-item" *ngIf="isEnabled(submenu.routeRequired, showPage)">
<a *ngIf="submenu.route.length > 0" routerLink="{{submenu.route}}" [queryParams]=submenu.params >{{submenu.title}}</a>
<a *ngIf="submenu.route.length == 0 && submenu.url.length > 0" href="{{submenu.url}}" target="_blank" >{{submenu.title}}</a>
</li>
</ng-container>
</ul>
</div>
</div>
<div class="uk-width-auto@m uk-grid-item-match">
<div class="uk-tile-primary uk-preserve-color uk-tile uk-padding-remove">
<div id="footer#9" class="uk-margin uk-text-right@m uk-text-center">
<a class="el-content uk-button uk-button-default uk-button-small" target="_blank" href="https://www.openaire.eu/contact-us" target="_blank" style="border: 1px solid white; background: 0; color: white;">
Contact us
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="uk-section-primary uk-section uk-section-xsmall uk-padding-remove-bottom">
<div class="uk-container uk-container-expand">
<div *ngIf="showOpenaire" class="uk-margin-small uk-grid uk-grid-stack" uk-grid="">
<div class="uk-width-1-1@m uk-first-column">
<div class="uk-margin-large uk-margin-remove-top uk-text-center@m uk-text-center">
<img [src]="assetsPath + 'common/Logo_Horizontal_white_small.png'" sizes="(min-width: 126px) 126px" data-width="126" data-height="30" class="el-image" alt="OpenAIRE">
</div>
</div>
</div>
<div class="uk-flex-middle uk-margin-remove-vertical uk-grid" uk-grid="">
<div class="uk-width-small@m uk-first-column">
<div id="footer#16" class="uk-margin-medium uk-text-left@m uk-text-center uk-margin-small-bottom">
<img [src]="assetsPath + 'commission.jpg'" sizes="(min-width: 50px) 50px" data-width="427" data-height="285" class="el-image" alt="European Commission">
</div>
</div>
<div *ngIf="showDnet" class="uk-width-expand@m">
<div id="footer#18" class=" uk-text-small uk-margin uk-margin-remove-bottom uk-text-center uk-text-lead">
<a href="http://creativecommons.org/licenses/by/4.0/" rel="license">
<img src="/images/Icons/cc.svg" uk-svg="" hidden="true">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24" class=" uk-svg">
<title></title>
<g data-name="Creative Commons" id="Creative_Commons">
<circle cx="12" cy="12" r="11.5" style="fill:none;stroke:#ffffff;stroke-linecap:round;stroke-linejoin:round"></circle>
<path d="M10.87,10a3.5,3.5,0,1,0,0,4" style="fill:none;stroke:#ffffff;stroke-linecap:round;stroke-linejoin:round"></path>
<path d="M18.87,10a3.5,3.5,0,1,0,0,4" style="fill:none;stroke:#ffffff;stroke-linecap:round;stroke-linejoin:round"></path>
</g>
</svg>
&nbsp;<img src="/images/Icons/cc-by.svg" uk-svg="" hidden="true">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24" class=" uk-svg">
<title></title>
<g id="Attribution">
<g data-name="<Group>" id="_Group_">
<circle cx="12" cy="5" data-name="<Path>" id="_Path_" r="1.5" style="fill:none;stroke:#ffffff;stroke-linecap:round;stroke-linejoin:round"></circle>
<path d="M12,8a5,5,0,0,0-3.07.71,1,1,0,0,0-.43.83V15H10v5.5h4V15h1.5V9.54a1,1,0,0,0-.43-.83A5,5,0,0,0,12,8Z" data-name="<Path>" id="_Path_2" style="fill:none;stroke:#ffffff;stroke-linecap:round;stroke-linejoin:round"></path>
</g>
<circle cx="12" cy="12" r="11.5" style="fill:none;stroke:#ffffff;stroke-linecap:round;stroke-linejoin:round"></circle>
</g>
</svg>
</a>
&nbsp;Unless otherwise indicated, all materials created by OpenAIRE are licenced under&nbsp;<a href="http://creativecommons.org/licenses/by/4.0/" rel="license">CC ATTRIBUTION 4.0 INTERNATIONAL LICENSE</a>.
</div>
</div>
<div class="uk-width-small@m">
<div class="uk-margin uk-margin-remove-top uk-margin-remove-bottom uk-text-right@m uk-text-center">
<a href="#" uk-totop="" uk-scroll="" class="uk-totop uk-icon">
</a>
</div>
</div>
</div>
</div>
</div>
<div *ngIf="showSocialButton" id="footer#21" class="uk-section-primary uk-section uk-section-xsmall" style="background: #14134D;">
<div class="uk-container">
<div class="uk-grid-margin uk-grid uk-grid-stack" uk-grid="">
<div class="uk-width-expand@m uk-first-column">
<div id="footer#24" class="uk-margin uk-text-center">
<div class="uk-child-width-auto uk-grid-large uk-flex-center uk-grid" uk-grid="">
<div class="uk-first-column">
<a href="http://www.facebook.com/groups/openaire/" target="_blank" class="el-link uk-icon-button uk-icon">
<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path d="M11,10h2.6l0.4-3H11V5.3c0-0.9,0.2-1.5,1.5-1.5H14V1.1c-0.3,0-1-0.1-2.1-0.1C9.6,1,8,2.4,8,5v2H5.5v3H8v8h3V10z"></path>
</svg>
</a>
</div>
<div>
<a href="http://www.twitter.com/OpenAIRE_eu" target="_blank" class="el-link uk-icon-button uk-icon">
<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path d="M19,4.74 C18.339,5.029 17.626,5.229 16.881,5.32 C17.644,4.86 18.227,4.139 18.503,3.28 C17.79,3.7 17.001,4.009 16.159,4.17 C15.485,3.45 14.526,3 13.464,3 C11.423,3 9.771,4.66 9.771,6.7 C9.771,6.99 9.804,7.269 9.868,7.539 C6.795,7.38 4.076,5.919 2.254,3.679 C1.936,4.219 1.754,4.86 1.754,5.539 C1.754,6.82 2.405,7.95 3.397,8.61 C2.79,8.589 2.22,8.429 1.723,8.149 L1.723,8.189 C1.723,9.978 2.997,11.478 4.686,11.82 C4.376,11.899 4.049,11.939 3.713,11.939 C3.475,11.939 3.245,11.919 3.018,11.88 C3.49,13.349 4.852,14.419 6.469,14.449 C5.205,15.429 3.612,16.019 1.882,16.019 C1.583,16.019 1.29,16.009 1,15.969 C2.635,17.019 4.576,17.629 6.662,17.629 C13.454,17.629 17.17,12 17.17,7.129 C17.17,6.969 17.166,6.809 17.157,6.649 C17.879,6.129 18.504,5.478 19,4.74"></path>
</svg>
</a>
</div>
<div>
<a href="http://www.linkedin.com/groups/OpenAIRE-3893548" target="_blank" class="el-link uk-icon-button uk-icon">
<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path d="M5.77,17.89 L5.77,7.17 L2.21,7.17 L2.21,17.89 L5.77,17.89 L5.77,17.89 Z M3.99,5.71 C5.23,5.71 6.01,4.89 6.01,3.86 C5.99,2.8 5.24,2 4.02,2 C2.8,2 2,2.8 2,3.85 C2,4.88 2.77,5.7 3.97,5.7 L3.99,5.7 L3.99,5.71 L3.99,5.71 Z"></path>
<path d="M7.75,17.89 L11.31,17.89 L11.31,11.9 C11.31,11.58 11.33,11.26 11.43,11.03 C11.69,10.39 12.27,9.73 13.26,9.73 C14.55,9.73 15.06,10.71 15.06,12.15 L15.06,17.89 L18.62,17.89 L18.62,11.74 C18.62,8.45 16.86,6.92 14.52,6.92 C12.6,6.92 11.75,7.99 11.28,8.73 L11.3,8.73 L11.3,7.17 L7.75,7.17 C7.79,8.17 7.75,17.89 7.75,17.89 L7.75,17.89 L7.75,17.89 Z"></path>
</svg>
</a>
</div>
<div>
<a href="http://www.slideshare.net/OpenAIRE_eu" target="_blank" class="el-link uk-icon-button uk-icon">
<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<line fill="none" stroke="#000" stroke-width="1.1" x1="13.4" y1="14" x2="6.3" y2="10.7"></line>
<line fill="none" stroke="#000" stroke-width="1.1" x1="13.5" y1="5.5" x2="6.5" y2="8.8"></line>
<circle fill="none" stroke="#000" stroke-width="1.1" cx="15.5" cy="4.6" r="2.3"></circle>
<circle fill="none" stroke="#000" stroke-width="1.1" cx="15.5" cy="14.8" r="2.3"></circle>
<circle fill="none" stroke="#000" stroke-width="1.1" cx="4.5" cy="9.8" r="2.3"></circle>
</svg>
</a>
</div>
<div>
<a href="https://www.youtube.com/channel/UChFYqizc-S6asNjQSoWuwjw" target="_blank" class="el-link uk-icon-button uk-icon">
<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path d="M15,4.1c1,0.1,2.3,0,3,0.8c0.8,0.8,0.9,2.1,0.9,3.1C19,9.2,19,10.9,19,12c-0.1,1.1,0,2.4-0.5,3.4c-0.5,1.1-1.4,1.5-2.5,1.6 c-1.2,0.1-8.6,0.1-11,0c-1.1-0.1-2.4-0.1-3.2-1c-0.7-0.8-0.7-2-0.8-3C1,11.8,1,10.1,1,8.9c0-1.1,0-2.4,0.5-3.4C2,4.5,3,4.3,4.1,4.2 C5.3,4.1,12.6,4,15,4.1z M8,7.5v6l5.5-3L8,7.5z"></path>
</svg>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div> -->
<!-- NEW -->
<div class="uk-section-primary uk-section uk-section-small uk-padding-remove-bottom"> <div class="uk-section-primary uk-section uk-section-small uk-padding-remove-bottom">
<div class="uk-container uk-container-expand"> <div class="uk-container uk-container-expand">
<div class="uk-container uk-container-expand uk-margin-small"> <div class="uk-container uk-container-expand uk-margin-small">

View File

@ -135,4 +135,5 @@ export class EnvProperties {
showLastIndexInformationLink; showLastIndexInformationLink;
widgetLink; widgetLink;
claimsInformationLink;
} }