Merge pull request 'BETA & PROD Explore release October 2023 - Update to Angular-16' (#4) from angular-16 into develop

Reviewed-on: #4
This commit is contained in:
Konstantina Galouni 2023-10-30 20:55:49 +01:00
commit 3903c940a7
26 changed files with 359 additions and 374 deletions

View File

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

View File

@ -274,13 +274,16 @@
"main": "server.ts",
"tsConfig": "src/tsconfig.server.json",
"sourceMap": true,
"optimization": false
"optimization": false,
"buildOptimizer": false
},
"configurations": {
"development": {
"outputHashing": "media",
"sourceMap": false,
"optimization": true
"optimization": true,
"vendorChunk": true,
"buildOptimizer": true
},
"test": {
"outputHashing": "media",
@ -291,7 +294,8 @@
}
],
"sourceMap": false,
"optimization": true
"optimization": true,
"buildOptimizer": true
},
"beta": {
"outputHashing": "media",
@ -302,7 +306,8 @@
}
],
"sourceMap": false,
"optimization": true
"optimization": true,
"buildOptimizer": true
},
"production": {
"outputHashing": "media",
@ -313,7 +318,8 @@
}
],
"sourceMap": false,
"optimization": true
"optimization": true,
"buildOptimizer": true
}
},
"defaultConfiguration": ""

View File

@ -23,42 +23,42 @@
},
"private": true,
"dependencies": {
"@angular/animations": "^14.2.3",
"@angular/cdk": "^14.2.2",
"@angular/common": "^14.2.3",
"@angular/compiler": "^14.2.3",
"@angular/core": "^14.2.3",
"@angular/forms": "^14.2.3",
"@angular/localize": "^14.2.3",
"@angular/material": "^14.2.2",
"@angular/platform-browser": "^14.2.3",
"@angular/platform-browser-dynamic": "^14.2.3",
"@angular/platform-server": "^14.2.3",
"@angular/router": "^14.2.3",
"@nguniversal/express-engine": "^14.2.0",
"@angular/animations": "^16.1.7",
"@angular/cdk": "^16.1.6",
"@angular/common": "^16.1.7",
"@angular/compiler": "^16.1.7",
"@angular/core": "^16.1.7",
"@angular/forms": "^16.1.7",
"@angular/localize": "^16.1.7",
"@angular/material": "^16.1.6",
"@angular/platform-browser": "^16.1.7",
"@angular/platform-browser-dynamic": "^16.1.7",
"@angular/platform-server": "^16.1.7",
"@angular/router": "^16.1.7",
"@nguniversal/express-engine": "^16.1.1",
"clipboard": "^1.5.16",
"core-js": "^2.5.4",
"express": "^4.15.2",
"jquery": "^3.4.1",
"ng-recaptcha": "^10.0.0",
"ng-recaptcha": "^12.0.2",
"prom-client": "^11.3.0",
"rxjs": "^6.5.1",
"ts-md5": "^1.2.0",
"tslib": "^2.0.0",
"uikit": "3.13.10",
"zone.js": "~0.11.4"
"uikit": "3.16.14",
"zone.js": "~0.13.1"
},
"devDependencies": {
"@angular-devkit/build-angular": "^14.2.3",
"@angular/cli": "^14.2.3",
"@angular/compiler-cli": "^14.2.3",
"@angular/language-service": "^14.2.3",
"@nguniversal/builders": "^14.2.0",
"@angular-devkit/build-angular": "^16.1.6",
"@angular/cli": "^16.1.6",
"@angular/compiler-cli": "^16.1.7",
"@angular/language-service": "^16.1.7",
"@nguniversal/builders": "^16.1.1",
"@types/compression": "^1.7.0",
"@types/express": "^4.17.0",
"@types/jasmine": "~3.6.0",
"@types/jasminewd2": "~2.0.3",
"@types/node": "^12.11.1",
"@types/node": "^16.18.50",
"codelyzer": "^6.0.0",
"jasmine-core": "~3.8.0",
"jasmine-spec-reporter": "~5.0.0",
@ -69,6 +69,6 @@
"karma-jasmine-html-reporter": "^1.6.0",
"protractor": "~7.0.0",
"ts-node": "~7.0.0",
"typescript": "~4.6.4"
"typescript": "~4.9.5"
}
}

View File

@ -5,7 +5,7 @@ import {PageURLResolverComponent} from "./openaireLibrary/utils/pageURLResolver.
const routes: Routes = [
// Other Pages
{path: '', loadChildren: () => import('./home/home.module').then(m => m.HomeModule)},
{path: '', loadChildren: () => import('./home/home.module').then(m => m.HomeModule), data: {hasStickyHeaderOnMobile: true}},
{path: 'home', redirectTo: '', pathMatch: 'full'},
{path: 'mail-preferences', loadChildren: () => import('./userEmailPreferences/mailPrefs.module').then(m => m.LibMailPrefsModule)},
{path: 'sdgs', loadChildren: () => import('./sdg/sdg.module').then(m => m.LibSdgModule)},

View File

@ -1,6 +1,6 @@
import {NgModule} from '@angular/core';
import {APP_ID, NgModule} from '@angular/core';
import {SharedModule} from './openaireLibrary/shared/shared.module';
import {BrowserModule, BrowserTransferStateModule} from '@angular/platform-browser';
import {BrowserModule} from '@angular/platform-browser';
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
import {CommonModule} from '@angular/common';
import {HTTP_INTERCEPTORS, HttpClientModule} from '@angular/common/http';
@ -28,9 +28,8 @@ import {AlertModalModule} from './openaireLibrary/utils/modal/alertModal.module'
ErrorModule,
NavigationBarModule, BottomModule,
CookieLawModule,
BrowserModule.withServerTransition({ appId: 'explore' }),
BrowserModule,
AppRoutingModule,
BrowserTransferStateModule,
BrowserAnimationsModule, PageURLResolverModule,
Schema2jsonldModule,
QuickContactModule,
@ -39,6 +38,7 @@ import {AlertModalModule} from './openaireLibrary/utils/modal/alertModal.module'
declarations: [AppComponent, OpenaireErrorPageComponent],
exports: [AppComponent],
providers: [
{provide: APP_ID, useValue: 'explore'},
{
provide: HTTP_INTERCEPTORS,
useClass: CacheInterceptorService,

View File

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

View File

@ -188,7 +188,12 @@ export class FundersComponent implements OnInit {
let queriedFunders4 = data[3];
queriedFunders4.forEach(queriedFunder => {
let id = queriedFunder.index_id + '||' + queriedFunder.index_name + '||' + queriedFunder.index_shortName;
if(this.fundersMap.has(id)) {
if(this.fundersMap.has(id) && (
!this.fundersMap.get(id).monitorDashboardStatus
||
(this.fundersMap.get(id).monitorDashboardStatus == "RESTRICTED" && queriedFunder.visibility == "PUBLIC")
||
(this.fundersMap.get(id).monitorDashboardStatus == "PRIVATE" && (queriedFunder.visibility == "RESTRICTED" || queriedFunder.visibility == "PUBLIC")))) {
this.fundersMap.get(id).alias = queriedFunder.alias;
this.fundersMap.get(id).monitorDashboard = queriedFunder.alias;
this.fundersMap.get(id).monitorDashboardStatus = queriedFunder.visibility;

View File

@ -1,337 +1,315 @@
<ng-template #_logos let-logo="logo" let-class="class">
<div *ngIf="logo" [class]="'uk-flex uk-flex-middle uk-flex-center uk-padding-remove-horizontal '+class">
<div class="">
<img src="assets/ExploreLogos/{{logo}}" alt="{{logo}} logo" loading="lazy" width="112px" height="44px">
<div *ngIf="logo" [class]="'uk-flex uk-flex-middle uk-flex-center uk-padding-remove-horizontal '+class">
<div class="">
<img src="assets/ExploreLogos/{{logo}}" alt="{{logo}} logo" loading="lazy" width="112px" height="44px">
</div>
</div>
</div>
</ng-template>
<div>
<div class="uk-section uk-padding-remove-bottom uk-overflow-hidden">
<div class="uk-container uk-container-large" uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-slide-bottom-medium; delay: 200">
<div class="uk-grid uk-flex-middle" uk-grid>
<div class="uk-width-3-5@m uk-margin-large-bottom">
<h1 class="uk-h2 uk-width-1-2@m" uk-scrollspy-class>
Discover open linked research<span class="uk-text-primary">.</span>
</h1>
<numbers #numbersComponent [defaultInit]="false" (results)="numbers = $event"></numbers>
<!-- [class.uk-invisible]="disableSelect" -->
<div class="uk-margin-medium-top" style="max-width: 600px;" uk-scrollspy-class>
<div class="uk-flex uk-flex-right uk-text-small">
<a [routerLink]="properties.searchLinkToAdvancedResults" class="uk-margin-small-bottom">
Advanced search
</a>
</div>
<!-- <advanced-search-input #advanced (searchEmitter)="goTo()">-->
<!-- <entities-selection [simpleView]="true" currentEntity="all" [selectedEntity]="selectedEntity"
(selectionChange)="entityChanged($event);advanced.focusNext(input, $event)" (disableSelectEmitter)="disableSelectChange($event)"
[onChangeNavigate]="false" class="uk-width-2-5"></entities-selection> -->
<!-- <div class="uk-width-expand" input #input placeholder="Search in Explore" [searchable]="true" [hint]="'What are you looking for?'" [(value)]="keyword"></div>-->
<!-- </advanced-search-input>-->
<div search-input [(value)]="keyword" [placeholder]="'Search'+(portalName ? (' in '+portalName) : '')" (searchEmitter)="goTo()"
[searchInputClass]="'inner background'"></div>
<div class="uk-section uk-padding-remove-bottom uk-overflow-hidden">
<div class="uk-container uk-container-large"
uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-slide-bottom-medium; delay: 200">
<div class="uk-grid uk-flex-middle" uk-grid>
<div class="uk-width-3-5@m uk-margin-large-bottom">
<h1 class="uk-h2 uk-width-1-2@m" uk-scrollspy-class>
Discover open linked research<span class="uk-text-primary">.</span>
</h1>
<numbers #numbersComponent [defaultInit]="false" (results)="numbers = $event"></numbers>
<!-- [class.uk-invisible]="disableSelect" -->
<div class="uk-margin-medium-top" style="max-width: 600px;" uk-scrollspy-class>
<div class="uk-flex uk-flex-right uk-text-small">
<a [routerLink]="properties.searchLinkToAdvancedResults" class="uk-margin-small-bottom">
Advanced search
</a>
</div>
<!-- <advanced-search-input #advanced (searchEmitter)="goTo()">-->
<!-- <entities-selection [simpleView]="true" currentEntity="all" [selectedEntity]="selectedEntity"
(selectionChange)="entityChanged($event);advanced.focusNext(input, $event)" (disableSelectEmitter)="disableSelectChange($event)"
[onChangeNavigate]="false" class="uk-width-2-5"></entities-selection> -->
<!-- <div class="uk-width-expand" input #input placeholder="Search in Explore" [searchable]="true" [hint]="'What are you looking for?'" [(value)]="keyword"></div>-->
<!-- </advanced-search-input>-->
<div search-input [(value)]="keyword"
[placeholder]="'Search'+(portalName ? (' in '+portalName) : '')" (searchEmitter)="goTo()"
[searchInputClass]="'inner background'"></div>
<!-- <div *ngIf="selectedEntity === 'result' && input.focused" (click)="$event.stopPropagation();advanced.focusNext(input, $event)" class="uk-dropdown uk-display-block uk-margin-small-top uk-width-auto">
<div class="uk-padding-small">
<quick-selections [resultTypes]="resultTypes" [quickFilter]="resultsQuickFilter"></quick-selections>
</div>
</div> -->
</div>
<div class="uk-padding-small uk-margin-small-top">
<div class="uk-text-meta">
Try browsing by:
</div>
<div class="link-actions uk-flex uk-flex-column uk-flex-top uk-margin-small-top">
<a class="uk-display-inline-block uk-text-uppercase uk-button uk-button-text uk-margin-small-bottom"
routerLinkActive="router-link-active" routerLink="/sdgs">
<!-- <div *ngIf="selectedEntity === 'result' && input.focused" (click)="$event.stopPropagation();advanced.focusNext(input, $event)" class="uk-dropdown uk-display-block uk-margin-small-top uk-width-auto">
<div class="uk-padding-small">
<quick-selections [resultTypes]="resultTypes" [quickFilter]="resultsQuickFilter"></quick-selections>
</div>
</div> -->
</div>
<div class="uk-padding-small uk-margin-small-top">
<div class="uk-text-meta">
Try browsing by:
</div>
<div class="link-actions uk-flex uk-flex-column uk-flex-top uk-margin-small-top">
<a class="uk-display-inline-block uk-text-uppercase uk-button uk-button-text uk-margin-small-bottom"
routerLinkActive="router-link-active" routerLink="/sdgs">
<span class="uk-flex uk-flex-middle">
<img src="assets/common-assets/sdg/sdg-dot-img.svg" alt="SDGs logo" loading="lazy">
<span class="uk-margin-small-left">Sustainable Development Goals (SDG<span class="uk-text-lowercase">s</span>)</span>
<span class="uk-margin-small-left">Sustainable Development Goals (SDG<span
class="uk-text-lowercase">s</span>)</span>
</span>
</a>
<a class="uk-display-inline-block uk-text-uppercase uk-button uk-button-text"
routerLinkActive="router-link-active" routerLink="/fields-of-science">
</a>
<a class="uk-display-inline-block uk-text-uppercase uk-button uk-button-text"
routerLinkActive="router-link-active" routerLink="/fields-of-science">
<span class="uk-flex uk-flex-middle">
<img src="assets/common-assets/fos/fos-icon.svg" alt="FOS logo" loading="lazy">
<span class="uk-margin-small-left">Fields of Science (FoS)</span>
</span>
</a>
</div>
</div>
</a>
</div>
</div>
</div>
<div class="uk-visible@m uk-width-expand" uk-scrollspy-class>
<div class="uk-position-relative">
<img src="assets/explore-assets/home/explore.jpg" uk-parallax="y: 500">
<img class="uk-position-bottom-left" src="assets/explore-assets/home/mask.svg">
</div>
</div>
</div>
</div>
<div class="uk-visible@m uk-width-expand" uk-scrollspy-class>
<div class="uk-position-relative">
<img src="assets/explore-assets/home/explore.jpg" uk-parallax="y: 500">
<img class="uk-position-bottom-left" src="assets/explore-assets/home/mask.svg">
</div>
</div>
</div>
</div>
</div>
<div class="uk-section uk-section-large uk-padding-remove-top">
<div class="uk-container uk-container-large uk-width-2-3">
<div uk-slider="autoplay: false; autoplay-interval: 2500" class="">
<div class="uk-position-relative">
<div class="uk-slider-container">
<ul class="uk-slider-items" uk-height-match="target: > li > div > div > .logo1; row: false;">
<ng-container *ngFor="let type of getKeys(logos)">
<li *ngFor="let range of createRange(logos[type].length) let j=index"
class="uk-width-1-1 home-logo">
<h1 class="uk-text-center uk-margin-large-bottom uk-text-primary uk-h4">
<div class="uk-section uk-section-large uk-padding-remove-top">
<div class="uk-container uk-container-large uk-width-2-3">
<div uk-slider="autoplay: false; autoplay-interval: 2500" class="">
<div class="uk-position-relative">
<div class="uk-slider-container">
<ul class="uk-slider-items" uk-height-match="target: > li > div > div > .logo1; row: false;">
<ng-container *ngFor="let type of getKeys(logos)">
<li *ngFor="let range of createRange(logos[type].length) let j=index"
class="uk-width-1-1 home-logo">
<h1 class="uk-text-center uk-margin-large-bottom uk-text-primary uk-h4">
<span *ngIf="type=='publication' && numbersComponent.showPublications && numbers?.publicationsSize">
<span
class="uk-text-bold">{{numbers.publicationsSize.number|number}}{{numbers.publicationsSize.size}}
{{openaireEntities.PUBLICATIONS}}</span><span> deduplicated</span>
class="uk-text-bold">{{numbers.publicationsSize.number|number}}{{numbers.publicationsSize.size}}
{{openaireEntities.PUBLICATIONS}}</span><span> deduplicated</span>
</span>
<span
*ngIf="type=='dataset' && numbersComponent.showDatasets && (numbers?.datasetsLinkedSize || numbers?.datasetsSize)">
<span
*ngIf="type=='dataset' && numbersComponent.showDatasets && (numbers?.datasetsLinkedSize || numbers?.datasetsSize)">
<span *ngIf="numbers?.datasetsLinkedSize">
<span
class="uk-text-bold">{{numbers.datasetsLinkedSize.number|number}}{{numbers.datasetsLinkedSize.size}}
datasets</span> interlinked with publications</span>
class="uk-text-bold">{{numbers.datasetsLinkedSize.number|number}}{{numbers.datasetsLinkedSize.size}}
datasets</span> interlinked with publications</span>
<span *ngIf="numbers?.datasetsSize && !numbers?.datasetsLinkedSize"
class="uk-text-bold">{{numbers.datasetsSize.number|number}}{{numbers.datasetsSize.size}}
{{openaireEntities.DATASETS}}</span>
class="uk-text-bold">{{numbers.datasetsSize.number|number}}{{numbers.datasetsSize.size}}
{{openaireEntities.DATASETS}}</span>
</span>
<span
*ngIf="type=='software' && numbersComponent.showSoftware && (numbers?.softwareSize || numbers?.softwareLinkedSize)">
<span
*ngIf="type=='software' && numbersComponent.showSoftware && (numbers?.softwareSize || numbers?.softwareLinkedSize)">
<span *ngIf="numbers?.softwareLinkedSize">
<span
class="uk-text-bol ">{{numbers.softwareLinkedSize.number|number}}{{numbers.softwareLinkedSize.size}}
{{openaireEntities.SOFTWARE}}</span> interlinked with publications</span>
class="uk-text-bol ">{{numbers.softwareLinkedSize.number|number}}{{numbers.softwareLinkedSize.size}}
{{openaireEntities.SOFTWARE}}</span> interlinked with publications</span>
<span *ngIf="numbers?.softwareSize && !numbers?.softwareLinkedSize"
class="uk-text-bold">{{numbers.softwareSize.number|number}}{{numbers.softwareSize.size}}
{{openaireEntities.SOFTWARE}}</span>
class="uk-text-bold">{{numbers.softwareSize.number|number}}{{numbers.softwareSize.size}}
{{openaireEntities.SOFTWARE}}</span>
</span>
<span *ngIf="type=='persistent'">
<span *ngIf="type=='persistent'">
<span>Persistent identifiers and registries</span>
</span>
<span *ngIf="type=='funder' && numbersComponent.showProjects && numbers?.fundersSize && numbers?.projectsSize">
<span *ngIf="type=='funder' && numbersComponent.showProjects && numbers?.fundersSize && numbers?.projectsSize">
<span
class="uk-text-bold">{{numbers.fundersSize.number|number}}{{numbers.fundersSize.size}}
funders</span><span> and</span>
class="uk-text-bold">{{numbers.fundersSize.number|number}}{{numbers.fundersSize.size}}
funders</span><span> and</span>
<span
class="uk-text-bold"> {{numbers.projectsSize.number|number}}{{numbers.projectsSize.size}}
funded grants</span>
class="uk-text-bold"> {{numbers.projectsSize.number|number}}{{numbers.projectsSize.size}}
funded grants</span>
</span>
</h1>
<div
class="uk-grid-small uk-child-width-1-6 uk-text-center grid uk-flex uk-flex-center"
uk-grid uk-height-match="target: > div > .logo2; row: false;">
<div
*ngFor="let logo of logos[type][j].slice(0,ceil(logos[type][j].length/2)); let i=index">
<ng-container
*ngTemplateOutlet="_logos; context: { logo: logo, class: 'logo1 '}"></ng-container>
<ng-container
*ngTemplateOutlet="_logos; context: { logo: logos[type][j][ceil(logos[type][j].length/2)+i], class: 'uk-margin-top logo2 '}"></ng-container>
</div>
</div>
</li>
</ng-container>
</ul>
</div>
</h1>
<div
class="uk-grid-small uk-child-width-1-6 uk-text-center grid uk-flex uk-flex-center"
uk-grid uk-height-match="target: > div > .logo2; row: false;">
<div
*ngFor="let logo of logos[type][j].slice(0,ceil(logos[type][j].length/2)); let i=index">
<ng-container
*ngTemplateOutlet="_logos; context: { logo: logo, class: 'logo1 '}"></ng-container>
<ng-container
*ngTemplateOutlet="_logos; context: { logo: logos[type][j][ceil(logos[type][j].length/2)+i], class: 'uk-margin-top logo2 '}"></ng-container>
</div>
</div>
</li>
</ng-container>
</ul>
</div>
<a class="uk-position-center-left-out" uk-slider-item="previous"><span uk-icon="icon: chevron-left; ratio: 2"></span></a>
<a class="uk-position-center-right-out" uk-slider-item="next"><span uk-icon="icon: chevron-right; ratio: 2"></span></a>
<a class="uk-position-center-left-out" uk-slider-item="previous"><span
uk-icon="icon: chevron-left; ratio: 2"></span></a>
<a class="uk-position-center-right-out" uk-slider-item="next"><span
uk-icon="icon: chevron-right; ratio: 2"></span></a>
</div>
</div>
</div>
</div>
<ng-template #scrolling_text let-position_class="position_class">
<div #scrolling_element [class]="position_class" uk-parallax="target: #js-sticky-parallax-images-all; start: 15%; end: 100% + 100vh - 200vh; opacity: 0,1 20%,1 99%,0">
<h3 class="uk-h2">
<span class="uk-text-primary">Deposit</span> your research<span class="uk-text-primary">.</span>
</h3>
<p class="uk-text-large uk-width-3-4@m">
Whether its publications, data or software,
select an <a href="" target="_blank">OpenAIRE compatible repository</a> and
share using community standards. Alternatively
use Zenodo, a catch-all repository hosted by CERN.
All results will be indexed, discoverable and accessible
via EXPLORE.
</p>
<div class="uk-margin-medium-top">
<a class="uk-button uk-button-primary uk-text-uppercase" routerLink="/participate/deposit/learn-how">Start Deposit</a>
</div>
</div>
<div #scrolling_element [class]="position_class" uk-parallax="target: #js-sticky-parallax-images-all; start: 200vh; end: 100% + 100vh - 300vh; opacity: 0,1 20%" style="padding-top: 4vh;">
<h3 class="uk-h2">
<span class="uk-text-primary">Link</span> your work<span class="uk-text-primary">.</span>
</h3>
<p class="uk-text-large uk-width-3-4@m">
Connect all your research. If you can't find your research
results in OpenAIRE, don't worry! Use our Link service,
that reaches out to many external sources via APIs, and
claim them to your Grant or ORCID. Use the service to provide
meaningful links between publications-datasets-software.
</p>
<div class="uk-margin-medium-top">
<a class="uk-button uk-button-primary uk-text-uppercase" routerLink="/participate/claim">Start Linking</a>
</div>
</div>
</ng-template>
<div class="uk-section uk-section-secondary">
<div class="uk-container uk-container-large">
<div class="uk-width-1-1">
<h2 class="uk-h1 uk-margin-large-top">Share your research<span class="uk-text-primary">.</span></h2>
</div>
<div id="js-sticky-parallax-images-all" style="min-height: 400vh">
<div class="uk-visible@m uk-height-viewport explore-dark-logo-background uk-sticky" uk-sticky="bottom: #js-sticky-parallax-images-all; target-offset: true">
<div class="uk-grid" uk-grid style="height: 100vh;">
<div class="uk-width-expand uk-first-column uk-position-relative uk-height-1-1">
<div class="explore-dark-logo-background">
<div uk-parallax="target: #js-sticky-parallax-images-all;">
<img class="uk-position-center uk-position-z-index" src="assets/explore-assets/home/tablet.png" alt="ipad" loading="lazy"
style="width: 100%;">
<img class="uk-position-center" src="assets/explore-assets/home/1.png" alt="ipad" loading="lazy"
uk-parallax="target: #js-sticky-parallax-images-all; start: 100vh; end: 100% + 100vh - 160vh; opacity: 1,1 99%,0; easing:0"
style="width: 100%;">
<img class="uk-position-center" src="assets/explore-assets/home/2.png" alt="ipad" loading="lazy"
uk-parallax="target: #js-sticky-parallax-images-all; start: 150vh; end: 100% + 100vh - 210vh; opacity: 0,1 20%,1 99%,0; easing:0"
style="width: 100%;">
<img class="uk-position-center" src="assets/explore-assets/home/3.png" alt="ipad" loading="lazy"
uk-parallax="target: #js-sticky-parallax-images-all; start: 200vh; end: 100% + 100vh - 260vh; opacity: 0,1 20%,1 99%,0; easing:0"
style="width: 100%;">
<img class="uk-position-center" src="assets/explore-assets/home/4.png" alt="ipad" loading="lazy"
uk-parallax="target: #js-sticky-parallax-images-all; start: 250vh; end: 100% + 100vh - 310vh; opacity: 0,1 20%,1; easing:0"
style="width: 100%;">
</div>
</div>
</div>
<div class="uk-inline uk-width-expand uk-height-1-1 uk-margin-large-left">
<div>
<div uk-parallax="target: #js-sticky-parallax-images-all; y: 55vh, 40vh;">
<ng-container *ngTemplateOutlet="scrolling_text; context: {position_class: 'uk-position-center-left'}"></ng-container>
</div>
</div>
</div>
</div>
</div>
<div class="uk-hidden@m uk-height-viewport explore-dark-logo-background" uk-sticky="bottom: #js-sticky-parallax-images-all">
<div class="uk-flex uk-flex-column">
<div class="explore-dark-logo-background uk-inline uk-width-1-1" style="height: 40vh;">
<img class="uk-position-center uk-position-z-index" src="assets/explore-assets/home/tablet.png" alt="ipad" loading="lazy"
uk-parallax="target: #js-sticky-parallax-images-all;" style="width: 70%;">
<img class="uk-position-center" src="assets/explore-assets/home/1.png" alt="ipad" loading="lazy"
uk-parallax="target: #js-sticky-parallax-images-all; start: 100vh; end: 100% + 100vh - 160vh; opacity: 1,1 99%,0; easing:0"
style="width: 70%;">
<img class="uk-position-center" src="assets/explore-assets/home/2.png" alt="ipad" loading="lazy"
uk-parallax="target: #js-sticky-parallax-images-all; start: 150vh; end: 100% + 100vh - 210vh; opacity: 0,1 20%,1 99%,0; easing:0"
style="width: 70%;">
<img class="uk-position-center" src="assets/explore-assets/home/3.png" alt="ipad" loading="lazy"
uk-parallax="target: #js-sticky-parallax-images-all; start: 200vh; end: 100% + 100vh - 260vh; opacity: 0,1 20%,1 99%,0; easing:0"
style="width: 70%;">
<img class="uk-position-center" src="assets/explore-assets/home/4.png" alt="ipad" loading="lazy"
uk-parallax="target: #js-sticky-parallax-images-all; start: 250vh; end: 100% + 100vh - 310vh; opacity: 0,1 20%,1; easing:0"
style="width: 70%;">
</div>
<div class="uk-inline uk-width-expand">
<ng-container *ngTemplateOutlet="scrolling_text; context: {position_class: 'uk-position-top-center'}"></ng-container>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="uk-section uk-section-secondary explore-dark-logo-background">
<div class="uk-container uk-container-large uk-margin-large-bottom">
<div class="uk-width-1-1 uk-margin-medium-bottom">
<h2 class="uk-h1 uk-margin-large-top">Share your research<span class="uk-text-primary">.</span></h2>
</div>
<slider-container [total]="2" [period]="8000" [infinite]="true" [navigation]="'progress'">
<slider-column type="slider">
<slider-item type="static">
<img class="uk-position-center uk-position-z-index" src="assets/explore-assets/home/tablet.png"
alt="ipad" loading="lazy">
</slider-item>
<slider-item type="slide" [start]="0">
<img src="assets/explore-assets/home/1.png" alt="ipad" loading="lazy">
</slider-item>
<slider-item type="slide" [start]="0.5">
<img src="assets/explore-assets/home/2.png" alt="ipad" loading="lazy">
</slider-item>
<slider-item type="slide" [start]="1">
<img src="assets/explore-assets/home/3.png" alt="ipad" loading="lazy">
</slider-item>
<slider-item type="slide" [start]="1.5">
<img src="assets/explore-assets/home/4.png" alt="ipad" loading="lazy">
</slider-item>
</slider-column>
<slider-column type="nav" class="slider-nav">
<slider-nav-item [start]="0">
<h6>
<i class="uk-text-primary">Deposit</i> your research<span class="uk-text-primary">.</span>
</h6>
<div class="uk-margin-bottom">
Whether its publications, data or software,
select an OpenAIRE compatible repository and
share using community standards. Alternatively
use Zenodo, a catch-all repository hosted by CERN.
All results will be indexed, discoverable and accessible
via EXPLORE.
</div>
<div class="uk-margin-top">
<a class="uk-button uk-button-text uk-text-primary" routerLink="/participate/deposit/learn-how">Start
Deposit</a>
</div>
</slider-nav-item>
<slider-nav-item [start]="1">
<h6>
<i class="uk-text-primary">Link</i> your work<span class="uk-text-primary">.</span>
</h6>
<div class="uk-margin-bottom">
Connect all your research. If you can't find your research
results in OpenAIRE, don't worry! Use our Link service,
that reaches out to many external sources via APIs, and
claim them to your Grant or ORCID. Use the service to provide
meaningful links between publications-datasets-software.
</div>
<div class="uk-margin-top">
<a class="uk-button uk-button-text uk-text-primary" routerLink="/participate/claim">Start Linking</a>
</div>
</slider-nav-item>
</slider-column>
</slider-container>
</div>
</div>
<!-- Not yet! -->
<!-- <div class="uk-section">
<div class="uk-container uk-container-large">
<h2 class="uk-h1 uk-text-center">
New sources in OpenAIRE<span class="uk-text-primary">.</span>
</h2>
<div class="cards-on-slider">
TODO: Repositories content
</div>
</div>
</div> -->
<!-- Not yet! -->
<!-- <div class="uk-section">
<div class="uk-container uk-container-large">
<h2 class="uk-h1 uk-text-center">
New sources in OpenAIRE<span class="uk-text-primary">.</span>
</h2>
<div class="cards-on-slider">
TODO: Repositories content
</div>
</div>
</div> -->
<div class="uk-background-muted">
<div class="uk-position-relative">
<div class="uk-section uk-section-large">
<div class="uk-container">
<div class="uk-grid uk-child-width-1-2@m" uk-grid>
<div>
<div style="max-width: 550px;">
<h2>Linked Open Research.</h2>
<div class="">
EXPLORE is built on the <a href="https://graph.openaire.eu/" target="_blank" class="graph">OpenAIRE Graph</a>, one of the largest
open scholarly record collections worldwide. Conceived as a public and
transparent good, populated out of data sources trusted by scientists, the
OpenAIRE Graph brings discovery, monitoring, and assessment of science
back in the hands of the scientific community.
</div>
</div>
</div>
<div></div>
<img class="uk-visible@m uk-height-1-1 uk-position-top-right" src="assets/common-assets/common/graph-nodes.svg" alt="ipad" loading="lazy">
</div>
</div>
</div>
</div>
<div class="uk-section uk-padding-remove-top">
<div class="uk-container">
<div class="uk-width-1-2@m uk-margin-auto uk-margin-small-top uk-text-center" style="max-width: 600px;">
<div>
Within a constantly emerging scholarly communication environment, the OpenAIRE Graph is a moving target, continuously integrating new sources, new types or research objects, and embedding access measures. We therefore welcome the community to work with us to improve all its aspects: its <span class="uk-text-bold">coverage</span> (geographic and thematic), <span class="uk-text-bold">quality</span> (disambiguation and semantics) and <span class="uk-text-bold">access</span> (APIs).
</div>
<div class="uk-margin-top">
Find information about the OpenAIRE Graph, how to test it and contribute to improving it.
</div>
<div class="uk-margin-top">
<a href="https://www.openaire.eu/blogs/the-openaire-research-graph" target="_blank" class="uk-display-inline-block uk-text-uppercase uk-button uk-button-text">
Learn more. Contribute
</a>
</div>
</div>
</div>
</div>
</div>
<div class="uk-background-muted">
<div class="uk-position-relative">
<div class="uk-section uk-section-large">
<div class="uk-container">
<div class="uk-grid uk-child-width-1-2@m" uk-grid>
<div>
<div style="max-width: 550px;">
<h2>Linked Open Research.</h2>
<div class="">
EXPLORE is built on the <a href="https://graph.openaire.eu/" target="_blank"
class="graph">OpenAIRE Graph</a>, one of the largest
open scholarly record collections worldwide. Conceived as a public and
transparent good, populated out of data sources trusted by scientists, the
OpenAIRE Graph brings discovery, monitoring, and assessment of science
back in the hands of the scientific community.
</div>
</div>
</div>
<div></div>
<img class="uk-visible@m uk-height-1-1 uk-position-top-right"
src="assets/common-assets/common/graph-nodes.svg" alt="ipad" loading="lazy">
</div>
</div>
</div>
</div>
<div class="uk-section uk-padding-remove-top">
<div class="uk-container">
<div class="uk-width-1-2@m uk-margin-auto uk-margin-small-top uk-text-center" style="max-width: 600px;">
<div>
Within a constantly emerging scholarly communication environment, the OpenAIRE Graph is a moving
target, continuously integrating new sources, new types or research objects, and embedding
access measures. We therefore welcome the community to work with us to improve all its aspects:
its <span class="uk-text-bold">coverage</span> (geographic and thematic), <span
class="uk-text-bold">quality</span> (disambiguation and semantics) and <span
class="uk-text-bold">access</span> (APIs).
</div>
<div class="uk-margin-top">
Find information about the OpenAIRE Graph, how to test it and contribute to improving it.
</div>
<div class="uk-margin-top">
<a href="https://www.openaire.eu/blogs/the-openaire-research-graph" target="_blank"
class="uk-display-inline-block uk-text-uppercase uk-button uk-button-text">
Learn more. Contribute
</a>
</div>
</div>
</div>
</div>
</div>
<div class="uk-section uk-section-large">
<div class="uk-container uk-container-large">
<h2 class="uk-h5 uk-margin-remove uk-text-primary">
Did you know that
</h2>
<h2 class="uk-heading-large uk-margin-large-bottom uk-margin-remove-top">
you may
</h2>
<div class="uk-container">
<div class="uk-grid uk-child-width-1-2@l uk-child-width-1-1 uk-grid-large" uk-grid uk-height-match=".link-title">
<div>
<div class="uk-padding-small uk-padding-remove-horizontal custom-link">
<a href="https://provide.openaire.eu/home" target="_blank" class="uk-button uk-button-text uk-text-left uk-text-large">
<span class="link-title">have your repository, Journal or CRIS system indexed in EXPLORE and take advantage of services for enriching metadata and counting usage?</span>
</a>
</div>
</div>
<div>
<div class="uk-padding-small uk-padding-remove-horizontal custom-link">
<a href="https://canada.explore.openaire.eu/" target="_blank" class="uk-button uk-button-text uk-text-left uk-text-large">
<span class="link-title">use EXPLORE as an application platform as a service (aPaaS) and set up a national portal for Open Science, such as Canada.EXPLORE?</span>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="uk-section uk-section-large">
<div class="uk-container uk-container-large">
<h2 class="uk-h5 uk-margin-remove uk-text-primary">
Did you know that
</h2>
<h2 class="uk-heading-large uk-margin-large-bottom uk-margin-remove-top">
you may
</h2>
<div class="uk-container">
<div class="uk-grid uk-child-width-1-2@l uk-child-width-1-1 uk-grid-large" uk-grid
uk-height-match=".link-title">
<div>
<div class="uk-padding-small uk-padding-remove-horizontal custom-link">
<a href="https://provide.openaire.eu/home" target="_blank"
class="uk-button uk-button-text uk-text-left uk-text-large">
<span class="link-title">have your repository, Journal or CRIS system indexed in EXPLORE and take advantage of services for enriching metadata and counting usage?</span>
</a>
</div>
</div>
<div>
<div class="uk-padding-small uk-padding-remove-horizontal custom-link">
<a href="https://canada.explore.openaire.eu/" target="_blank"
class="uk-button uk-button-text uk-text-left uk-text-large">
<span class="link-title">use EXPLORE as an application platform as a service (aPaaS) and set up a national portal for Open Science, such as Canada.EXPLORE?</span>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div #contact class="uk-section">
<div class="uk-container uk-container-large uk-margin-large-bottom uk-text-center">
<h3 class="uk-h2 uk-margin-remove">
Need more information?
</h3>
<h4 class="uk-h4 uk-margin-small-top uk-margin-medium-bottom">
Get in touch and let us help you<span class="uk-text-primary">.</span>
</h4>
<a class="uk-button uk-button-primary uk-text-uppercase uk-margin-top uk-margin-medium-bottom"
routerLink="/contact-us">Contact us</a>
</div>
</div>
<div #contact class="uk-section">
<div class="uk-container uk-container-large uk-margin-large-bottom uk-text-center">
<h3 class="uk-h2 uk-margin-remove">
Need more information?
</h3>
<h4 class="uk-h4 uk-margin-small-top uk-margin-medium-bottom">
Get in touch and let us help you<span class="uk-text-primary">.</span>
</h4>
<a class="uk-button uk-button-primary uk-text-uppercase uk-margin-top uk-margin-medium-bottom"
routerLink="/contact-us">Contact us</a>
</div>
</div>
</div>

View File

@ -38,14 +38,21 @@
color: @global-secondary-background;
}
}
}
@media only screen and (min-width: @breakpoint-medium) {
.slider-image {
min-width: 550px;
}
@media only screen and (min-width: @breakpoint-large) {
.explore-dark-logo-background {
background-image: url("~src/assets/explore-assets/home/explore-dark-logo.svg");
background-repeat: no-repeat;
background-position: left 95%;
background-size: 65%;
background-position: -5% 102%;
background-size: 35%;
}
.slider-nav {
max-width: 650px;
}
}

View File

@ -28,6 +28,7 @@ import {NumbersModule} from "../openaireLibrary/sharedComponents/numbers/numbers
import {AdvancedSearchInputModule} from "../openaireLibrary/sharedComponents/advanced-search-input/advanced-search-input.module";
import {InputModule} from "../openaireLibrary/sharedComponents/input/input.module";
import {SearchInputModule} from "../openaireLibrary/sharedComponents/search-input/search-input.module";
import {SliderUtilsModule} from "../openaireLibrary/sharedComponents/slider-utils/slider-utils.module";
@NgModule({
imports: [
@ -38,7 +39,7 @@ import {SearchInputModule} from "../openaireLibrary/sharedComponents/search-inpu
PiwikServiceModule,
HomeRoutingModule,
HelperModule,
SEOServiceModule, OtherPortalsModule, EntitiesSelectionModule, QuickSelectionsModule, IconsModule, NumbersModule, AdvancedSearchInputModule, InputModule, SearchInputModule
SEOServiceModule, OtherPortalsModule, EntitiesSelectionModule, QuickSelectionsModule, IconsModule, NumbersModule, AdvancedSearchInputModule, InputModule, SearchInputModule, SliderUtilsModule
],
declarations: [
HomeComponent

@ -1 +1 @@
Subproject commit fce848008aa7edf91be10a3a241d940abec0076a
Subproject commit 5184ffad194e23864411f989f9403cd984afb4a3

@ -1 +1 @@
Subproject commit d18e0a7e43e5ab74649481ecbf352ba49893c66f
Subproject commit d1b2d5e585722751792d12645d17f820cd6a7860

View File

@ -2,7 +2,6 @@
/* Button */
@button-primary-background: @explore-color;
@inverse-button-primary-background: @explore-color;
@button-secondary-border: @explore-color;
@button-secondary-color: @explore-color;
@button-secondary-hover-background: @global-secondary-background;

@ -1 +1 @@
Subproject commit 2df4b377a3e89b7dd26a011a2e1e1f07fdcedf2a
Subproject commit 2dadcf85926bc0f11fff22ed94dc197ddd8587c6

View File

@ -1,6 +1,5 @@
import {EnvProperties} from "../app/openaireLibrary/utils/properties/env-properties";
import {common} from "../app/openaireLibrary/utils/properties/environments/environment.all";
import {commonBeta} from "../app/openaireLibrary/utils/properties/environments/environment.beta";
import {common, commonBeta} from "../app/openaireLibrary/utils/properties/environments/environment";
let props: EnvProperties = {
environment: "beta",
@ -16,7 +15,7 @@ let props: EnvProperties = {
statisticsFrameNewAPIURL: "https://beta.services.openaire.eu/stats-tool/",
bipFrameAPIURL: "https://bip.imsi.athenarc.gr/api/impact-chart?id=",
useNewStatistisTool: true,
claimsAPIURL: "https://beta.services.openaire.eu/claims/rest/claimsService/",
claimsAPIURL: "https://beta.services.openaire.eu/claims-new/rest/claimsService/",
searchAPIURLLAst: "https://beta.services.openaire.eu/search/v2/api/",
searchResourcesAPIURL: "https://beta.services.openaire.eu/search/v2/api/resources",
openCitationsAPIURL: "https://services.openaire.eu/opencitations/getCitations?id=",

View File

@ -1,6 +1,5 @@
import {EnvProperties} from "../app/openaireLibrary/utils/properties/env-properties";
import {common} from "../app/openaireLibrary/utils/properties/environments/environment.all";
import {commonProd} from "../app/openaireLibrary/utils/properties/environments/environment.prod";
import {common, commonProd} from "../app/openaireLibrary/utils/properties/environments/environment";
let props: EnvProperties = {
environment: "production",
@ -16,7 +15,7 @@ import {commonProd} from "../app/openaireLibrary/utils/properties/environments/e
statisticsFrameNewAPIURL: "https://services.openaire.eu/stats-tool/",
bipFrameAPIURL: "https://bip.imsi.athenarc.gr/api/impact-chart?id=",
useNewStatistisTool: true,
claimsAPIURL: "https://services.openaire.eu/claims/rest/claimsService/",
claimsAPIURL: "https://beta.services.openaire.eu/claims-new/rest/claimsService/",
searchAPIURLLAst: "https://services.openaire.eu/search/v2/api/",
searchResourcesAPIURL: "https://services.openaire.eu/search/v2/api/resources",
openCitationsAPIURL: "https://services.openaire.eu/opencitations/getCitations?id=",

View File

@ -1,6 +1,5 @@
import {EnvProperties} from "../app/openaireLibrary/utils/properties/env-properties";
import {common} from "../app/openaireLibrary/utils/properties/environments/environment.all";
import {commonTest} from "../app/openaireLibrary/utils/properties/environments/environment.test";
import {common, commonTest} from "../app/openaireLibrary/utils/properties/environments/environment";
let props: EnvProperties = {
// export let properties: EnvProperties = {

View File

@ -4,8 +4,7 @@
// The list of which env maps to which file can be found in `.angular-cli.json`.
import {EnvProperties} from "../app/openaireLibrary/utils/properties/env-properties";
import {common} from "../app/openaireLibrary/utils/properties/environments/environment.all";
import {commonDev} from "../app/openaireLibrary/utils/properties/environments/environment";
import {common, commonDev} from "../app/openaireLibrary/utils/properties/environments/environment";
let props: EnvProperties = {
environment: "development",

View File

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

View File

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

View File

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

View File

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

View File

@ -11,14 +11,14 @@
},
"dependencies": {
"cors": "^2.8.5",
"express": "^4.15.2",
"express": "^4.18.2",
"memory-cache": "^0.2.0",
"prom-client": "^11.3.0",
"properties-reader": "^2.2.0",
"superagent": "^5.0.5"
},
"engines": {
"node": ">=16.3.0"
"node": ">=16.14.0"
},
"author": "Argiro Kokogiannaki <argirok@di.uoa.gr>",
"license": "NKUA"

View File

@ -260,7 +260,7 @@ function parseAllUrls(response: any, allUrls: any, resultsType: string, subject:
} else {
let resultLandingComponent = new ResultLandingComponent(null, null, null,
null, null, null, null, null, null,
null, null, null, null, null);
null, null, null, null, null, null, null, null);
if(!resultLandingComponent.checkIfAllowed(resultLandingInfo)) {
noIndexedUrls++;

View File

@ -10,12 +10,12 @@
"superagent": "^5.0.5"
},
"devDependencies": {
"@types/node": "^8.0.30",
"ts-node": "^10.4.0",
"typescript": "^3.2.4"
"@types/node": "^16.18.39",
"ts-node": "^10.9.1",
"typescript": "^4.9.5"
},
"engines": {
"node": "16.3.0"
"node": ">=16.14.0"
},
"author": "Konstantina Galouni <kgalouni@di.uoa.gr>",
"license": "NKUA"

View File

@ -13,14 +13,14 @@
"author": "",
"license": "ISC",
"dependencies": {
"body-parser": "^1.15.2",
"cookie-parser": "^1.4.4",
"cors": "^2.8.4",
"express": "^4.15.2",
"multer": "1.4.5-lts.1",
"body-parser": "^1.20.2",
"cookie-parser": "^1.4.6",
"cors": "^2.8.5",
"express": "^4.18.2",
"multer": "^1.4.5-lts.1",
"properties-reader": "^2.2.0"
},
"engines": {
"node": ">=16.3.0"
"node": ">=16.14.0"
}
}