Compare commits
487 Commits
production
...
master
@ -0,0 +1,168 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
||||
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
||||
|
||||
*For each release, use the following sub-sections:*
|
||||
|
||||
- *Added (for new features)*
|
||||
- *Changed (for changes in existing functionality)*
|
||||
- *Deprecated (for soon-to-be removed features)*
|
||||
- *Removed (for now removed features)*
|
||||
- *Fixed (for any bug fixes)*
|
||||
- *Security (in case of vulnerabilities)*
|
||||
|
||||
## [production-release-march-2024] - 2024/03/04
|
||||
### Changed
|
||||
* Performance improvements
|
||||
* Search pages: Access Routes, impact-based indicators, usage counts: Open drops on click, instead of hover
|
||||
* Linking: change Datacite api from /works to /dois
|
||||
* Updated funding text in footer
|
||||
* Removed tooltips from search results
|
||||
* UI updates on search pages
|
||||
* Paging only at the bottom under the search results
|
||||
* Removed number of results
|
||||
* Removed results per page option
|
||||
|
||||
### Fixed
|
||||
* z-index issue in dropdowns inside modals
|
||||
* Change search tab from menu
|
||||
* Requests in bulk DOIs upload in linkinh
|
||||
* View all for search filters
|
||||
* Research products detailed page: Provenance label in funded by
|
||||
|
||||
### Added
|
||||
* Full-Text link in Research products
|
||||
|
||||
## [production-release-february-2024] - 2024/02/12
|
||||
### Changed
|
||||
* Remove "open access" as preselected filter
|
||||
* Rounded numbers in search tabs
|
||||
* Home page: Performance improvements on images loading
|
||||
* Home page, Search page, Funders page: Performance improvements on services requests
|
||||
|
||||
### Fixed
|
||||
* Filtering out in funding levels according to selected funder when querying 100 values
|
||||
* Filters in claims & in organization landing > projects tab were always loading
|
||||
* Research products landing page: Added providers in versions
|
||||
* SEO fixes in landing pages
|
||||
|
||||
## [production-release-january-2024] - 2024/02/01
|
||||
### Changed
|
||||
* Updated FoS search filter - do not display code
|
||||
* Removed "BETA" indication from FoS
|
||||
* Access search filter: Display always all the predefined values
|
||||
* Filters: remove number of values
|
||||
* Filters: Get 7 value (display 6) and 100 on "view more" click
|
||||
* My claims: remove urls for pending claims
|
||||
* Improve queries for search organizations & data sources
|
||||
|
||||
### Fixed
|
||||
* Search query with input full ORCID url or just ORCID id
|
||||
* In search, added also in count query for data sources the datasource pid check
|
||||
* Landing: min-height needed in metrics box
|
||||
|
||||
### Added
|
||||
* Linking: responsive in mobile
|
||||
|
||||
## [production-release-november-2023-v2] - 2023/11/28
|
||||
### Added
|
||||
* Add sorting options with impact factors in search results page
|
||||
|
||||
### Changed
|
||||
* Data source landing: get collected full texts from new stats API
|
||||
* Updated parsing of measures - in results: views/downloads per data source
|
||||
|
||||
### Fixed
|
||||
* Updated query for funders number in Funders page
|
||||
* Updated query for funders number is first page
|
||||
* Advanced Search Results: funder field to return all funders
|
||||
* Advanced Search Projects: funder field to return all funders
|
||||
|
||||
## [production-release-november-2023] - 2023/11/09
|
||||
### Added
|
||||
* Missing funders' logos locally in Explore assets
|
||||
|
||||
### Changed
|
||||
* Deposit search page: UI improvement in “Go to repository” button
|
||||
|
||||
### Fixed
|
||||
* Reverted version of UIkit back to version 3.16.24 - previous version caused bug with dropdowns
|
||||
|
||||
## [production-release-october-2023] - 2023/10/18
|
||||
### Added
|
||||
* Search page: Add view more option on overflow (e.g authors, partners, subjects, projects)
|
||||
|
||||
### Changed
|
||||
* Upgrade to Angular 16
|
||||
* New Claims API
|
||||
* New Funders Page
|
||||
|
||||
### Fixed
|
||||
* Reverted version of UIkit to version 3.16.14 because of parallax
|
||||
* A persistent identifier can resolve in more than one pid types
|
||||
|
||||
## [production-release-september-2023] - 2023/09/25
|
||||
### FIXED
|
||||
* Error on grant access in ORCID Search & Link Wizard
|
||||
* Added missing id in linking from the project landing
|
||||
* Added check in search data sources parsing
|
||||
|
||||
## [production-release-august-2023] - 2023/08/25
|
||||
### Added
|
||||
* Search mobile: Added actions
|
||||
* Detailed pages - mobile: Added search-bar
|
||||
* Mobile: new drops and dropdowns
|
||||
|
||||
### Changed
|
||||
* Linking: Redesign of results view
|
||||
* Advanced search form: Add autocomplete input for eosc subject field
|
||||
* Detailed pages - mobile: UI updates & improvements
|
||||
|
||||
### Fixed
|
||||
* Advanced search and detailed page
|
||||
* Added a necessary check in html of detailed pages
|
||||
|
||||
## [production-release-may-2023] - 2023/05/19
|
||||
### Added
|
||||
* Detailed research products page: Added suggest modals for Sustainable Development Goals and Fields of Science
|
||||
* Get research products, projects & data sources usage counts from index
|
||||
|
||||
### Changed
|
||||
* Redesign of detailed pages and mobile version
|
||||
|
||||
### Fixed
|
||||
* Fix path for fos/sdg vocabularies in advanced search
|
||||
* Search page improvements
|
||||
* UI updates & improvements in search results and detailed pages (minor)
|
||||
|
||||
## [production-release-january-2023] - 2023/01/18
|
||||
### FIXED
|
||||
* Contact us form: Email body was either empty or incomplete
|
||||
* Contact us page: After sending an email, clear recaptcha
|
||||
|
||||
|
||||
## [production-release-december-2022] - 2022/12/21
|
||||
### Added
|
||||
* Link to blog in Sustainable Development Goals page
|
||||
|
||||
### Changed
|
||||
* SEO updates and mobile menu
|
||||
|
||||
### Fixed
|
||||
* Linking: Changed Crossref requests for bulk uploaded DOIs
|
||||
* Medium screens: not sticky navbar causing error
|
||||
|
||||
## [production-release-november-2022] - 2022/11/30
|
||||
### Added
|
||||
* EOSC subjects from eoscifguidelines field & Advanced field "EOSC Subject"
|
||||
* New Contact us page
|
||||
|
||||
### Changed
|
||||
* Upgrade to Angular 14
|
||||
* Refinement of filters
|
||||
* Advanced search form: UI updates and smooth scrolling
|
||||
* FoS and deposit pages updates
|
||||
* Bip Finder: Updated parsing and labels for Bip Finder scores & updated link to BiP Finder
|
@ -0,0 +1,14 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import {RouterModule} from '@angular/router';
|
||||
import {ContactComponent} from './contact.component';
|
||||
import {IsRouteEnabled} from "../openaireLibrary/error/isRouteEnabled.guard";
|
||||
import {PreviousRouteRecorder} from "../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
RouterModule.forChild([
|
||||
{ path: '', component: ContactComponent, canActivate: [IsRouteEnabled], canDeactivate: [PreviousRouteRecorder]}
|
||||
])
|
||||
]
|
||||
})
|
||||
export class ContactRoutingModule { }
|
@ -0,0 +1,22 @@
|
||||
<div>
|
||||
<div class="uk-container uk-container-large uk-section uk-section-small uk-padding-remove-bottom">
|
||||
<div class="uk-padding-small uk-padding-remove-horizontal">
|
||||
<breadcrumbs [breadcrumbs]="breadcrumbs"></breadcrumbs>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-section uk-padding-remove-top uk-container uk-container-large uk-flex uk-flex-center"
|
||||
uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-slide-bottom-medium; delay: 200">
|
||||
<div class="uk-padding-small uk-width-1-2@l uk-width-2-3@m uk-width-1-1">
|
||||
<contact-us #contactUs [sending]="sending" [scrollspy]="true"
|
||||
[contactForm]="contactForm" (sendEmitter)="send($event)">
|
||||
<h1 page-title class="uk-margin-auto uk-text-center" uk-scrollspy-class>
|
||||
Contact us to <br> learn more<span class="uk-text-primary">.</span>
|
||||
</h1>
|
||||
</contact-us>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<modal-alert #modal (alertOutput)="goToHome()">
|
||||
Our team will respond to your submission soon.<br>
|
||||
Press OK to redirect to OpenAIRE Explore home page.
|
||||
</modal-alert>
|
@ -0,0 +1,158 @@
|
||||
import {Component, OnInit, ViewChild} from '@angular/core';
|
||||
import {ActivatedRoute, Router} from '@angular/router';
|
||||
import {EmailService} from "../openaireLibrary/utils/email/email.service";
|
||||
import {Email} from "../openaireLibrary/utils/email/email";
|
||||
import {EnvProperties} from "../openaireLibrary/utils/properties/env-properties";
|
||||
import {Composer} from "../openaireLibrary/utils/email/composer";
|
||||
import {Meta, Title} from "@angular/platform-browser";
|
||||
import {PiwikService} from "../openaireLibrary/utils/piwik/piwik.service";
|
||||
import {HelperFunctions} from "../openaireLibrary/utils/HelperFunctions.class";
|
||||
import {HelperService} from "../openaireLibrary/utils/helper/helper.service";
|
||||
import {SEOService} from "../openaireLibrary/sharedComponents/SEO/SEO.service";
|
||||
import {FormBuilder, FormGroup, Validators} from "@angular/forms";
|
||||
import {Breadcrumb} from "../openaireLibrary/utils/breadcrumbs/breadcrumbs.component";
|
||||
import {Subscriber} from "rxjs";
|
||||
import {properties} from "../../environments/environment";
|
||||
import {NotificationHandler} from "../openaireLibrary/utils/notification-handler";
|
||||
import {ContactUsComponent} from "../openaireLibrary/contact-us/contact-us.component";
|
||||
|
||||
@Component({
|
||||
selector: 'contact',
|
||||
templateUrl: './contact.component.html',
|
||||
})
|
||||
|
||||
export class ContactComponent implements OnInit {
|
||||
public url: string = null;
|
||||
public pageTitle: string = "OpenAIRE - Explore | Contact Us";
|
||||
public description: string = "Contact us to learn more about OpenAIRE Explore";
|
||||
public sending = true;
|
||||
public email: Email;
|
||||
public properties: EnvProperties = properties;
|
||||
public pageContents = null;
|
||||
public divContents = null;
|
||||
public breadcrumbs: Breadcrumb[] = [{name: 'home', route: '/'}, {name: 'Contact us'}];
|
||||
public contactForm: FormGroup;
|
||||
@ViewChild('modal') modal;
|
||||
private subscriptions = [];
|
||||
@ViewChild('contactUs') contactUsComponent : ContactUsComponent;
|
||||
|
||||
ngOnDestroy() {
|
||||
this.subscriptions.forEach(subscription => {
|
||||
if (subscription instanceof Subscriber) {
|
||||
subscription.unsubscribe();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
constructor(private route: ActivatedRoute,
|
||||
private _router: Router,
|
||||
private _emailService: EmailService,
|
||||
private _meta: Meta,
|
||||
private _title: Title,
|
||||
private seoService: SEOService,
|
||||
private _piwikService: PiwikService,
|
||||
private fb: FormBuilder,
|
||||
private helper: HelperService) {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this._title.setTitle('OpenAIRE - Explore | Contact Us');
|
||||
|
||||
this.properties = properties;
|
||||
this.email = {body: '', subject: '', recipients: []};
|
||||
this.subscriptions.push( this._piwikService.trackView(this.properties, this.pageTitle).subscribe());
|
||||
this.url = this.properties.domain + this._router.url;
|
||||
this.seoService.createLinkForCanonicalURL(this.url);
|
||||
this.updateUrl(this.url);
|
||||
this.updateTitle(this.pageTitle);
|
||||
this.updateDescription(this.description);
|
||||
this.reset();
|
||||
// this.getPageContents();
|
||||
this.sending = false;
|
||||
}
|
||||
|
||||
private getPageContents() {
|
||||
this.subscriptions.push(this.helper.getPageHelpContents(this.properties, 'explore', this._router.url).subscribe(contents => {
|
||||
this.pageContents = contents;
|
||||
}));
|
||||
}
|
||||
|
||||
public send(event) {
|
||||
HelperFunctions.scroll();
|
||||
if(event.valid === true) {
|
||||
this.sendMail(this.properties.admins);
|
||||
}
|
||||
}
|
||||
|
||||
public reset() {
|
||||
this.contactForm = this.fb.group( {
|
||||
name: this.fb.control('', Validators.required),
|
||||
surname: this.fb.control('', Validators.required),
|
||||
email: this.fb.control('', [Validators.required, Validators.email]),
|
||||
affiliation: this.fb.control(''),
|
||||
message: this.fb.control('', Validators.required),
|
||||
recaptcha: this.fb.control('', Validators.required),
|
||||
});
|
||||
if(this.contactUsComponent) {
|
||||
this.contactUsComponent.resetRecaptcha();
|
||||
}
|
||||
}
|
||||
|
||||
private sendMail(admins: any) {
|
||||
this.sending = true;
|
||||
this.subscriptions.push(this._emailService.contact(this.properties,
|
||||
Composer.composeEmailForExplore(this.contactForm.value, admins),
|
||||
this.contactForm.value.recaptcha).subscribe(
|
||||
res => {
|
||||
if (res) {
|
||||
this.sending = false;
|
||||
this.reset();
|
||||
this.modalOpen();
|
||||
} else {
|
||||
this.handleError('Email <b>sent failed!</b> Please try again.');
|
||||
}
|
||||
},
|
||||
error => {
|
||||
this.handleError('Email sent failed! Please try again.', error);
|
||||
}
|
||||
));
|
||||
}
|
||||
|
||||
public modalOpen() {
|
||||
this.modal.okButton = true;
|
||||
this.modal.alertTitle = 'Your request has been successfully submitted';
|
||||
this.modal.alertMessage = false;
|
||||
this.modal.cancelButton = false;
|
||||
this.modal.okButtonLeft = false;
|
||||
this.modal.okButtonText = 'OK';
|
||||
this.modal.open();
|
||||
}
|
||||
|
||||
handleError(message: string, error = null) {
|
||||
if(error) {
|
||||
console.error(error);
|
||||
}
|
||||
NotificationHandler.rise(message, 'danger');
|
||||
this.sending = false;
|
||||
this.contactForm.get('recaptcha').setValue('');
|
||||
}
|
||||
|
||||
public goToHome() {
|
||||
this._router.navigate(['/']);
|
||||
}
|
||||
|
||||
private updateDescription(description: string) {
|
||||
this._meta.updateTag({content: description}, "name='description'");
|
||||
this._meta.updateTag({content: description}, "property='og:description'");
|
||||
}
|
||||
|
||||
private updateTitle(title: string) {
|
||||
var _title = ((title.length > 50) ? title.substring(0, 50) : title);
|
||||
this._title.setTitle(_title);
|
||||
this._meta.updateTag({content: _title}, "property='og:title'");
|
||||
}
|
||||
|
||||
private updateUrl(url: string) {
|
||||
this._meta.updateTag({content: url}, "property='og:url'");
|
||||
}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
import {NgModule} from '@angular/core';
|
||||
import {CommonModule} from '@angular/common';
|
||||
import {RouterModule} from '@angular/router';
|
||||
|
||||
import {ContactComponent} from './contact.component';
|
||||
import {ContactRoutingModule} from "./contact-routing.module";
|
||||
import {AlertModalModule} from "../openaireLibrary/utils/modal/alertModal.module";
|
||||
import {HelperModule} from "../openaireLibrary/utils/helper/helper.module";
|
||||
import {Schema2jsonldModule} from "../openaireLibrary/sharedComponents/schema2jsonld/schema2jsonld.module";
|
||||
import {SEOServiceModule} from "../openaireLibrary/sharedComponents/SEO/SEOService.module";
|
||||
import {ContactUsModule} from "../openaireLibrary/contact-us/contact-us.module";
|
||||
import {BreadcrumbsModule} from "../openaireLibrary/utils/breadcrumbs/breadcrumbs.module";
|
||||
import {LoadingModule} from "../openaireLibrary/utils/loading/loading.module";
|
||||
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
ContactRoutingModule, CommonModule, RouterModule,
|
||||
AlertModalModule, HelperModule,
|
||||
Schema2jsonldModule, SEOServiceModule, ContactUsModule, BreadcrumbsModule, LoadingModule
|
||||
],
|
||||
declarations: [
|
||||
ContactComponent
|
||||
],
|
||||
providers: [],
|
||||
exports: [
|
||||
ContactComponent
|
||||
]
|
||||
})
|
||||
|
||||
export class ContactModule { }
|
@ -1,12 +0,0 @@
|
||||
import { Component } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'openaire-error',
|
||||
template: `
|
||||
<error></error>
|
||||
`
|
||||
})
|
||||
|
||||
export class OpenaireErrorPageComponent {
|
||||
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
import {NgModule} from '@angular/core';
|
||||
import {RouterModule} from '@angular/router';
|
||||
|
||||
import {FundersComponent} from './funders.component';
|
||||
import {IsRouteEnabled} from "../openaireLibrary/error/isRouteEnabled.guard";
|
||||
import {PreviousRouteRecorder} from "../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
RouterModule.forChild([
|
||||
{
|
||||
path: '', component: FundersComponent,
|
||||
canActivate: [IsRouteEnabled],
|
||||
canDeactivate: [PreviousRouteRecorder]
|
||||
}
|
||||
])
|
||||
]
|
||||
})
|
||||
export class FundersRoutingModule { }
|
@ -0,0 +1,48 @@
|
||||
@import (reference) "~src/assets/openaire-theme/less/color.less";
|
||||
|
||||
|
||||
.custom-coins-dot:after {
|
||||
content: "";
|
||||
background-image: url("~src/assets/explore-assets/funders/coins.svg");
|
||||
display: inline-block;
|
||||
background-size: 100% 100%;
|
||||
height: 35px;
|
||||
width: 35px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.custom-handshake-dot:after {
|
||||
content: "";
|
||||
background-image: url("~src/assets/explore-assets/funders/handshake.svg");
|
||||
display: inline-block;
|
||||
background-size: 100% 100%;
|
||||
height: 30px;
|
||||
width: 30px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.custom-view-button {
|
||||
padding: 4px;
|
||||
background: @light-color;
|
||||
border: 1px solid @disable-color;
|
||||
border-radius: 4px;
|
||||
icon {
|
||||
color: @disable-color;
|
||||
}
|
||||
|
||||
&.active {
|
||||
background: transparent linear-gradient(315deg, @primary-light-color 0%, @primary-dark-color 100%) 0% 0% no-repeat padding-box;
|
||||
icon {
|
||||
color: @light-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.uk-card {
|
||||
&.funder-grid {
|
||||
border-bottom: 4px solid fade(@funder-color, 30%);
|
||||
}
|
||||
&.funder-list {
|
||||
border-left: 4px solid fade(@funder-color, 30%);
|
||||
}
|
||||
}
|
@ -0,0 +1,375 @@
|
||||
import {ChangeDetectorRef, Component, OnInit} from '@angular/core';
|
||||
import {Router} from '@angular/router';
|
||||
import {Subscriber, Subscription, zip} from "rxjs";
|
||||
import {Meta, Title} from "@angular/platform-browser";
|
||||
|
||||
import {EnvProperties} from "../openaireLibrary/utils/properties/env-properties";
|
||||
import {PiwikService} from "../openaireLibrary/utils/piwik/piwik.service";
|
||||
import {SEOService} from "../openaireLibrary/sharedComponents/SEO/SEO.service";
|
||||
import {Breadcrumb} from "../openaireLibrary/utils/breadcrumbs/breadcrumbs.component";
|
||||
import {properties} from "../../environments/environment";
|
||||
import {RefineFieldResultsService} from '../openaireLibrary/services/refineFieldResults.service';
|
||||
import {StakeholderService} from '../openaireLibrary/monitor/services/stakeholder.service';
|
||||
import {Option} from '../openaireLibrary/sharedComponents/input/input.component';
|
||||
import {StringUtils} from '../openaireLibrary/utils/string-utils.class';
|
||||
import {HelperFunctions} from '../openaireLibrary/utils/HelperFunctions.class';
|
||||
import {NumberUtils} from '../openaireLibrary/utils/number-utils.class';
|
||||
import {LayoutService} from '../openaireLibrary/dashboard/sharedComponents/sidebar/layout.service';
|
||||
import {FormBuilder, FormControl} from '@angular/forms';
|
||||
import {debounceTime, distinctUntilChanged} from 'rxjs/operators';
|
||||
import {GroupedRequestsService} from "../openaireLibrary/services/groupedRequests.service";
|
||||
|
||||
@Component({
|
||||
selector: 'funders',
|
||||
templateUrl: './funders.component.html',
|
||||
styleUrls: ['funders.component.less']
|
||||
})
|
||||
|
||||
export class FundersComponent implements OnInit {
|
||||
private subscriptions: Subscription[] = [];
|
||||
url: string = null;
|
||||
pageTitle: string = "OpenAIRE - Explore | Funders";
|
||||
pageDescription: string = "Funders | Be an integral part of the open R&I ecosystem";
|
||||
properties: EnvProperties = properties;
|
||||
breadcrumbs: Breadcrumb[] = [{name: 'home', route: '/'}, {name: 'funders'}];
|
||||
showLoading: boolean = true;
|
||||
isMobile: boolean = false;
|
||||
funders: any[] = [];
|
||||
displayedFunders: any[] = [];
|
||||
showOptions: Option[];
|
||||
sortOptions: Option[];
|
||||
pageOptions: number[] = [10, 20, 30, 40];
|
||||
show: string = 'all';
|
||||
sortBy: string = 'alphAsc';
|
||||
gridView: boolean = true;
|
||||
currentPage: number = 1;
|
||||
pageSize: number = 10;
|
||||
keywordControl: FormControl;
|
||||
keyword: string;
|
||||
fundersNumber: number = 0;
|
||||
researchProductsNumber: number = 0;
|
||||
projectsNumber: number = 0;
|
||||
fundersMap = new Map<string, {
|
||||
"id": string,
|
||||
"name": string,
|
||||
"alias": string,
|
||||
"researchProducts": number,
|
||||
"openAccessResearchProducts": number,
|
||||
"openAccessPercentage": number,
|
||||
"projects": number,
|
||||
"monitorDashboard": string,
|
||||
"monitorDashboardStatus": string,
|
||||
"logoUrl": string
|
||||
}>();
|
||||
staticLogos: Set<string> = new Set<string>([
|
||||
"arc_________::ARC||Australian Research Council (ARC)||ARC",
|
||||
"asap________::ASAP||Aligning Science Across Parkinson's||ASAP",
|
||||
"cihr________::CIHR||Canadian Institutes of Health Research||CIHR",
|
||||
"euenvagency_::EEA||European Environment Agency||EEA",
|
||||
"inca________::INCA||Institut National du Cancer||INCa",
|
||||
"nhmrc_______::NHMRC||National Health and Medical Research Council (NHMRC)||NHMRC",
|
||||
"nih_________::NIH||National Institutes of Health||NIH",
|
||||
"nserc_______::NSERC||Natural Sciences and Engineering Research Council of Canada||NSERC",
|
||||
"nsf_________::NSF||National Science Foundation||NSF",
|
||||
"sshrc_______::SSHRC||Social Sciences and Humanities Research Council||SSHRC",
|
||||
"taraexp_____::tara||Tara Expeditions Foundation||TARA",
|
||||
"ukri________::UKRI||UK Research and Innovation||UKRI",
|
||||
"wt__________::WT||Wellcome Trust||WT"
|
||||
]);
|
||||
|
||||
constructor(private router: Router,
|
||||
private meta: Meta,
|
||||
private title: Title,
|
||||
private seoService: SEOService,
|
||||
private piwikService: PiwikService,
|
||||
private refineFieldResultsService: RefineFieldResultsService,
|
||||
private stakeholderService: StakeholderService,
|
||||
private layoutService: LayoutService,
|
||||
private cdr: ChangeDetectorRef,
|
||||
private fb: FormBuilder,
|
||||
private groupedRequestsService: GroupedRequestsService) {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.layoutService.setRootClass('funders');
|
||||
this.title.setTitle('OpenAIRE - Explore | Funders');
|
||||
this.properties = properties;
|
||||
this.subscriptions.push( this.piwikService.trackView(this.properties, this.pageTitle).subscribe());
|
||||
this.url = this.properties.domain + this.router.url;
|
||||
this.seoService.createLinkForCanonicalURL(this.url);
|
||||
this.updateUrl(this.url);
|
||||
this.updateTitle(this.pageTitle);
|
||||
this.updateDescription(this.pageDescription);
|
||||
this.subscriptions.push(this.layoutService.isMobile.subscribe(isMobile => {
|
||||
this.isMobile = isMobile;
|
||||
this.cdr.detectChanges();
|
||||
}));
|
||||
this.showOptions = [
|
||||
{value: 'all', label: 'All funders'},
|
||||
{value: 'dashboard', label: 'Funders with dashboard'}
|
||||
];
|
||||
this.sortOptions = [
|
||||
{value: 'alphAsc', label: 'Alphabetically Asc. (A-Z)'},
|
||||
{value: 'alphDsc', label: 'Alphabetically Dsc. (Z-A)'},
|
||||
{value: 'oaDsc', label: '"Open Access %" Dsc.'}
|
||||
];
|
||||
this.getFunders();
|
||||
this.keywordControl = this.fb.control('');
|
||||
this.subscriptions.push(this.keywordControl.valueChanges.pipe(debounceTime(500), distinctUntilChanged()).subscribe(value => {
|
||||
this.keyword = value;
|
||||
this.filtering();
|
||||
}));
|
||||
}
|
||||
|
||||
ngOnDestroy() {
|
||||
this.subscriptions.forEach(subscription => {
|
||||
if (subscription instanceof Subscriber) {
|
||||
subscription.unsubscribe();
|
||||
}
|
||||
});
|
||||
this.layoutService.setRootClass(null);
|
||||
}
|
||||
|
||||
private updateDescription(description: string) {
|
||||
this.meta.updateTag({content: description}, "name='description'");
|
||||
this.meta.updateTag({content: description}, "property='og:description'");
|
||||
}
|
||||
|
||||
private updateTitle(title: string) {
|
||||
var title = ((title.length > 50) ? title.substring(0, 50) : title);
|
||||
this.title.setTitle(title);
|
||||
this.meta.updateTag({content: title}, "property='og:title'");
|
||||
}
|
||||
|
||||
private updateUrl(url: string) {
|
||||
this.meta.updateTag({content: url}, "property='og:url'");
|
||||
}
|
||||
|
||||
private getFunders() {
|
||||
this.subscriptions.push(this.groupedRequestsService.funders().subscribe(data => {
|
||||
let funders = data["funders"];
|
||||
funders.forEach(queriedFunder => {
|
||||
let id = queriedFunder.id;
|
||||
let funder = {
|
||||
"id": id,
|
||||
"name": this.removePartAfterCharacters(queriedFunder.name, "||"),
|
||||
"alias": '',
|
||||
"researchProducts": +queriedFunder.results,
|
||||
"openAccessResearchProducts": +queriedFunder.openResults,
|
||||
"openAccessPercentage": 0,
|
||||
"projects": +queriedFunder.projects,
|
||||
"monitorDashboard": '',
|
||||
"monitorDashboardStatus": '',
|
||||
"logoUrl": ''
|
||||
};
|
||||
|
||||
if((!funder.researchProducts || funder.researchProducts == 0) && (!funder.projects || funder.projects == 0)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(queriedFunder.stakeholder) {
|
||||
let stakeholder = queriedFunder.stakeholder;
|
||||
funder.alias = stakeholder.alias;
|
||||
funder.monitorDashboard = stakeholder.alias;
|
||||
funder.monitorDashboardStatus = stakeholder.visibility;
|
||||
funder.logoUrl = (stakeholder.isUpload ? properties.utilsService + "/download/" : "")+ (stakeholder.logoUrl);
|
||||
}
|
||||
|
||||
if(funder.openAccessResearchProducts && funder.researchProducts) {
|
||||
funder.openAccessPercentage = Math.round((funder.openAccessResearchProducts / funder.researchProducts) * 100);
|
||||
}
|
||||
|
||||
if(!funder.logoUrl && this.staticLogos.has(funder.id)) {
|
||||
let split = funder.id.split("||");
|
||||
let shortname = (split && split.length==3) ? funder.id.split("||")[2] : funder.id;
|
||||
funder.logoUrl = "assets/explore-assets/funders/logos/"+shortname+".png";
|
||||
}
|
||||
|
||||
this.fundersMap.set(queriedFunder.id, funder);
|
||||
});
|
||||
// convert funders map into an array
|
||||
this.funders = Array.from(this.fundersMap.values());
|
||||
// calculate total numbers for intro content
|
||||
this.fundersNumber = data.count;
|
||||
this.researchProductsNumber = data.results;
|
||||
this.projectsNumber = data.projects;
|
||||
// sort funders
|
||||
this.funders.sort((a, b) => a['name'].localeCompare(b['name']));
|
||||
// initialize displayedFunders
|
||||
this.displayedFunders = this.funders;
|
||||
this.showLoading = false;
|
||||
}))
|
||||
|
||||
// let refineParams = '&fq=resultbestaccessright%20exact%20%22Open%20Access%22';
|
||||
// this.subscriptions.push(
|
||||
// zip(
|
||||
// this.refineFieldResultsService.getAllRefineFieldResultsByFieldName('relfunder', 'result', this.properties),
|
||||
// this.refineFieldResultsService.getAllRefineFieldResultsByFieldName('relfunder', 'result', this.properties, refineParams),
|
||||
// this.refineFieldResultsService.getAllRefineFieldResultsByFieldName('funder', 'project', this.properties),
|
||||
// this.stakeholderService.getStakeholders(this.properties.monitorServiceAPIURL, 'funder')
|
||||
// ).subscribe((data: any[]) => {
|
||||
// // storing all needed data to a map
|
||||
// // 1st call
|
||||
// let queriedFunders1 = data[0][1][0].values;
|
||||
// queriedFunders1.forEach(queriedFunder => {
|
||||
// this.fundersMap.set(queriedFunder.id, {
|
||||
// "id": queriedFunder.id,
|
||||
// "name": queriedFunder.name,
|
||||
// "alias": '',
|
||||
// "researchProducts": +queriedFunder.number,
|
||||
// "openAccessResearchProducts": 0,
|
||||
// "openAccessPercentage": 0,
|
||||
// "projects": 0,
|
||||
// "monitorDashboard": '',
|
||||
// "monitorDashboardStatus": '',
|
||||
// "logoUrl": ''
|
||||
// });
|
||||
// });
|
||||
//
|
||||
// // 2nd call
|
||||
// let queriedFunders2 = data[1][1][0].values;
|
||||
// queriedFunders2.forEach(queriedFunder => {
|
||||
// if(this.fundersMap.has(queriedFunder.id)) {
|
||||
// this.fundersMap.get(queriedFunder.id).openAccessResearchProducts = +queriedFunder.number;
|
||||
// }
|
||||
// });
|
||||
//
|
||||
// // 3rd call
|
||||
// let queriedFunders3 = data[2][1][0].values;
|
||||
// queriedFunders3.forEach(queriedFunder => {
|
||||
// if(+queriedFunder.number > 1) {
|
||||
// if (this.fundersMap.has(queriedFunder.id)) {
|
||||
// this.fundersMap.get(queriedFunder.id).projects = +queriedFunder.number;
|
||||
// } else {
|
||||
// this.fundersMap.set(queriedFunder.id, {
|
||||
// "id": queriedFunder.id,
|
||||
// "name": queriedFunder.name,
|
||||
// "alias": '',
|
||||
// "researchProducts": 0,
|
||||
// "openAccessResearchProducts": 0,
|
||||
// "openAccessPercentage": 0,
|
||||
// "projects": +queriedFunder.number,
|
||||
// "monitorDashboard": '',
|
||||
// "monitorDashboardStatus": '',
|
||||
// "logoUrl": ''
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
//
|
||||
// // 4th call
|
||||
// let queriedFunders4 = data[3];
|
||||
// queriedFunders4.forEach(queriedFunder => {
|
||||
// let id = queriedFunder.index_id + '||' + queriedFunder.index_name + '||' + queriedFunder.index_shortName;
|
||||
// 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;
|
||||
// this.fundersMap.get(id).logoUrl = (queriedFunder.isUpload ? properties.utilsService + "/download/" : "")+ (queriedFunder.logoUrl);
|
||||
// }
|
||||
// });
|
||||
// this.fundersMap.forEach((value) => {
|
||||
// if(value.openAccessResearchProducts > 0) {
|
||||
// value.openAccessPercentage = Math.round((value.openAccessResearchProducts / value.researchProducts) * 100);
|
||||
// }
|
||||
// if(!value.logoUrl && this.staticLogos.has(value.id)) {
|
||||
// let split = value.id.split("||");
|
||||
// let shortname = (split && split.length==3) ? value.id.split("||")[2] : value.id;
|
||||
// value.logoUrl = "assets/explore-assets/funders/logos/"+shortname+".png";
|
||||
// }
|
||||
// });
|
||||
// // convert funders map into an array
|
||||
// this.funders = Array.from(this.fundersMap.values());
|
||||
// // calculate total numbers for intro content
|
||||
// this.calculateNumbers();
|
||||
// // sort funders
|
||||
// this.funders.sort((a, b) => a['name'].localeCompare(b['name']));
|
||||
// // initialize displayedFunders
|
||||
// this.displayedFunders = this.funders;
|
||||
// console.log(this.funders);
|
||||
// this.showLoading = false;
|
||||
// })
|
||||
// );
|
||||
}
|
||||
|
||||
private calculateSum(array, property) {
|
||||
let sum = 0;
|
||||
array.forEach(element => {
|
||||
sum += element[property];
|
||||
});
|
||||
return sum;
|
||||
}
|
||||
|
||||
private calculateNumbers() {
|
||||
this.fundersNumber = this.funders.length;
|
||||
this.researchProductsNumber = this.calculateSum(this.funders, 'researchProducts');
|
||||
this.projectsNumber = this.calculateSum(this.funders, 'projects');
|
||||
}
|
||||
|
||||
get showContentWithNumbers() {
|
||||
return this.fundersNumber && this.researchProductsNumber && this.projectsNumber;
|
||||
}
|
||||
|
||||
formatNumber(num: number | string) {
|
||||
let formatted = NumberUtils.roundNumber(+num);
|
||||
return formatted.number + formatted.size;
|
||||
}
|
||||
|
||||
urlEncodeAndQuote(str: string): string {
|
||||
return StringUtils.quote(StringUtils.URIEncode(str));
|
||||
}
|
||||
|
||||
sortByChanged() {
|
||||
switch(this.sortBy) {
|
||||
case 'alphAsc':
|
||||
this.funders = this.funders.sort((a, b) => a['name'].localeCompare(b['name']));
|
||||
break;
|
||||
case 'alphDsc':
|
||||
this.funders = this.funders.sort((a, b) => b['name'].localeCompare(a['name']));
|
||||
break;
|
||||
case 'oaDsc':
|
||||
this.funders = this.funders.sort((a, b) => b['openAccessPercentage'] - a['openAccessPercentage']);
|
||||
break;
|
||||
}
|
||||
this.filtering();
|
||||
}
|
||||
|
||||
sizeChanged($event) {
|
||||
this.pageSize = $event;
|
||||
this.currentPage = 1;
|
||||
}
|
||||
|
||||
filtering() {
|
||||
let displayedFunders = this.funders;
|
||||
if(!this.keyword){
|
||||
this.keyword = '';
|
||||
}
|
||||
if(this.funders.length) {
|
||||
displayedFunders = displayedFunders.filter(item => (item['name'] && item['name'].toLowerCase().includes(this.keyword.toLowerCase())) || (item['alias'] && item['alias'].toLowerCase().includes(this.keyword.toLowerCase())));
|
||||
}
|
||||
if(this.show == 'dashboard') {
|
||||
displayedFunders = displayedFunders.filter(funder => funder.monitorDashboard && funder.monitorDashboard?.length > 0 && funder.monitorDashboardStatus != 'PRIVATE');
|
||||
}
|
||||
|
||||
this.displayedFunders = displayedFunders;
|
||||
this.currentPage = 1;
|
||||
}
|
||||
|
||||
public updateCurrentPage($event) {
|
||||
this.currentPage = $event.value;
|
||||
HelperFunctions.scrollToId('target');
|
||||
}
|
||||
|
||||
private removePartAfterCharacters(field, characters):string {
|
||||
if(field && field.indexOf(characters) !=-1){
|
||||
return field.split(characters)[0];
|
||||
|
||||
}
|
||||
return field;
|
||||
}
|
||||
}
|
@ -0,0 +1,44 @@
|
||||
import {NgModule} from '@angular/core';
|
||||
import {CommonModule} from '@angular/common';
|
||||
import {RouterModule} from '@angular/router';
|
||||
|
||||
import {FundersComponent} from './funders.component';
|
||||
import {FundersRoutingModule} from "./funders-routing.module";
|
||||
import {AlertModalModule} from "../openaireLibrary/utils/modal/alertModal.module";
|
||||
import {Schema2jsonldModule} from "../openaireLibrary/sharedComponents/schema2jsonld/schema2jsonld.module";
|
||||
import {SEOServiceModule} from "../openaireLibrary/sharedComponents/SEO/SEOService.module";
|
||||
import {BreadcrumbsModule} from "../openaireLibrary/utils/breadcrumbs/breadcrumbs.module";
|
||||
import {LoadingModule} from "../openaireLibrary/utils/loading/loading.module";
|
||||
import {RefineFieldResultsServiceModule} from '../openaireLibrary/services/refineFieldResultsService.module';
|
||||
import {LogoUrlPipeModule} from '../openaireLibrary/utils/pipes/logoUrlPipe.module';
|
||||
import {IconsModule} from '../openaireLibrary/utils/icons/icons.module';
|
||||
import {IconsService} from '../openaireLibrary/utils/icons/icons.service';
|
||||
import {open_access} from '../openaireLibrary/utils/icons/icons';
|
||||
import {closed_access} from '../openaireLibrary/utils/icons/icons';
|
||||
import {InputModule} from '../openaireLibrary/sharedComponents/input/input.module';
|
||||
import {PagingModule} from '../openaireLibrary/utils/paging.module';
|
||||
import {SearchInputModule} from '../openaireLibrary/sharedComponents/search-input/search-input.module';
|
||||
import {GroupedRequestsServiceModule} from "../openaireLibrary/services/groupedRequestsService.module";
|
||||
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
FundersRoutingModule, CommonModule, RouterModule, AlertModalModule,
|
||||
Schema2jsonldModule, SEOServiceModule, BreadcrumbsModule, LoadingModule,
|
||||
RefineFieldResultsServiceModule, LogoUrlPipeModule, IconsModule, InputModule,
|
||||
PagingModule, SearchInputModule, GroupedRequestsServiceModule
|
||||
],
|
||||
declarations: [
|
||||
FundersComponent
|
||||
],
|
||||
providers: [],
|
||||
exports: [
|
||||
FundersComponent
|
||||
]
|
||||
})
|
||||
|
||||
export class FundersModule {
|
||||
constructor(private iconsService: IconsService) {
|
||||
this.iconsService.registerIcons([open_access, closed_access]);
|
||||
}
|
||||
}
|
@ -0,0 +1,58 @@
|
||||
@import (reference) "~src/assets/openaire-theme/less/_import-variables";
|
||||
|
||||
@trello-color: #0076BA;
|
||||
|
||||
.home-background {
|
||||
background-color: @global-inverse-color;
|
||||
}
|
||||
|
||||
.link-actions img {
|
||||
width: 17px;
|
||||
}
|
||||
|
||||
.home-logo {
|
||||
img {
|
||||
-webkit-filter: grayscale(1);
|
||||
filter: grayscale(1);
|
||||
transition-duration: 0.3s;
|
||||
}
|
||||
|
||||
&:hover img {
|
||||
-webkit-filter: grayscale(0);
|
||||
filter: grayscale(0);
|
||||
transition-duration: 0.3s;
|
||||
}
|
||||
}
|
||||
|
||||
.custom-link {
|
||||
border-bottom: @global-border-width solid @global-border;
|
||||
|
||||
a {
|
||||
text-transform: none;
|
||||
|
||||
.link-title {
|
||||
color: @global-emphasis-color;
|
||||
}
|
||||
|
||||
&:hover .link-title {
|
||||
color: @global-secondary-background;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.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: -5% 102%;
|
||||
background-size: 35%;
|
||||
}
|
||||
|
||||
.slider-nav {
|
||||
max-width: 650px;
|
||||
}
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { RouterModule } from '@angular/router';
|
||||
|
||||
import { OpenaireDataProviderComponent } from './dataProvider.component';
|
||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
RouterModule.forChild([
|
||||
{ path: '', component: OpenaireDataProviderComponent, data: {
|
||||
redirect: '/error', community : 'openaire'
|
||||
},canDeactivate: [PreviousRouteRecorder] }
|
||||
])
|
||||
]
|
||||
})
|
||||
export class DataProviderRoutingModule { }
|
@ -1,17 +0,0 @@
|
||||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'openaire-dataprovider',
|
||||
template: `<dataprovider></dataprovider>`,
|
||||
})
|
||||
export class OpenaireDataProviderComponent{
|
||||
constructor ( ) {
|
||||
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
import { NgModule} from '@angular/core';
|
||||
import { DataProviderModule } from '../../openaireLibrary/landingPages/dataProvider/dataProvider.module';
|
||||
import { OpenaireDataProviderComponent } from './dataProvider.component';
|
||||
import {DataProviderRoutingModule} from './dataProvider-routing.module';
|
||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||
|
||||
@NgModule({
|
||||
imports: [DataProviderModule, DataProviderRoutingModule],
|
||||
declarations:[OpenaireDataProviderComponent],
|
||||
providers:[ PreviousRouteRecorder],
|
||||
exports:[OpenaireDataProviderComponent]
|
||||
})
|
||||
export class LibDataProviderModule { }
|
@ -1,16 +0,0 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { RouterModule } from '@angular/router';
|
||||
import { OpenaireDatasetComponent } from './dataset.component';
|
||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
RouterModule.forChild([
|
||||
{ path: '', component: OpenaireDatasetComponent, data: {
|
||||
redirect: '/error', community : 'openaire'
|
||||
},canDeactivate: [PreviousRouteRecorder] }
|
||||
])
|
||||
]
|
||||
})
|
||||
export class DatasetRoutingModule { }
|
@ -1,7 +0,0 @@
|
||||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'openaire-dataset',
|
||||
template: `<result-landing type="dataset"></result-landing>`,
|
||||
})
|
||||
export class OpenaireDatasetComponent{}
|
@ -1,12 +0,0 @@
|
||||
import { NgModule} from '@angular/core';
|
||||
import { OpenaireDatasetComponent } from './dataset.component';
|
||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||
import {DatasetRoutingModule} from './dataset-routing.module';
|
||||
import {ResultLandingModule} from "../../openaireLibrary/landingPages/result/resultLanding.module";
|
||||
@NgModule({
|
||||
imports: [DatasetRoutingModule, ResultLandingModule],
|
||||
declarations:[OpenaireDatasetComponent],
|
||||
providers:[PreviousRouteRecorder],
|
||||
exports:[OpenaireDatasetComponent]
|
||||
})
|
||||
export class LibDatasetModule { }
|
@ -1,12 +0,0 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { RouterModule } from '@angular/router';
|
||||
import { OpenaireHtmlProjectReportComponent } from './htmlProjectReport.component';
|
||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||
@NgModule({
|
||||
imports: [
|
||||
RouterModule.forChild([
|
||||
{ path: '', component: OpenaireHtmlProjectReportComponent ,canDeactivate: [PreviousRouteRecorder]}
|
||||
])
|
||||
]
|
||||
})
|
||||
export class HtmlProjectReportRoutingModule { }
|
@ -1,17 +0,0 @@
|
||||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'openaire-htmlProjectReport',
|
||||
template: `<htmlProjectReport></htmlProjectReport>`,
|
||||
})
|
||||
export class OpenaireHtmlProjectReportComponent{
|
||||
constructor ( ) {
|
||||
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
import { NgModule} from '@angular/core';
|
||||
import { HtmlProjectReportModule } from '../../openaireLibrary/landingPages/htmlProjectReport/htmlProjectReport.module';
|
||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||
import { OpenaireHtmlProjectReportComponent } from './htmlProjectReport.component';
|
||||
import {HtmlProjectReportRoutingModule} from './htmlProjectReport-routing.module';
|
||||
|
||||
@NgModule({
|
||||
imports: [HtmlProjectReportModule, HtmlProjectReportRoutingModule],
|
||||
declarations:[OpenaireHtmlProjectReportComponent],
|
||||
providers:[ PreviousRouteRecorder],
|
||||
exports:[OpenaireHtmlProjectReportComponent]
|
||||
})
|
||||
export class LibHtmlProjectReportModule { }
|
@ -1,13 +0,0 @@
|
||||
import { NgModule} from '@angular/core';
|
||||
import { OrganizationModule } from '../../openaireLibrary/landingPages/organization/organization.module';
|
||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||
import { OpenaireOrganizationComponent } from './organization.component';
|
||||
import {OrganizationRoutingModule} from './organization-routing.module';
|
||||
|
||||
@NgModule({
|
||||
imports: [OrganizationModule, OrganizationRoutingModule],
|
||||
declarations:[OpenaireOrganizationComponent],
|
||||
providers:[ PreviousRouteRecorder],
|
||||
exports:[OpenaireOrganizationComponent]
|
||||
})
|
||||
export class LibOrganizationModule { }
|
@ -1,18 +0,0 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { RouterModule } from '@angular/router';
|
||||
|
||||
import { OpenaireOrganizationComponent } from './organization.component';
|
||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||
|
||||
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
RouterModule.forChild([
|
||||
{ path: '', component: OpenaireOrganizationComponent, data: {
|
||||
redirect: '/error', community : 'openaire'
|
||||
},canDeactivate: [PreviousRouteRecorder] }
|
||||
])
|
||||
]
|
||||
})
|
||||
export class OrganizationRoutingModule { }
|
@ -1,17 +0,0 @@
|
||||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'openaire-organization',
|
||||
template: `<organization></organization>`,
|
||||
})
|
||||
export class OpenaireOrganizationComponent{
|
||||
constructor ( ) {
|
||||
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
import { NgModule} from '@angular/core';
|
||||
import { OpenaireOrpComponent } from './orp.component';
|
||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||
import {OrpRoutingModule} from './orp-routing.module';
|
||||
import {ResultLandingModule} from "../../openaireLibrary/landingPages/result/resultLanding.module";
|
||||
@NgModule({
|
||||
imports: [OrpRoutingModule, ResultLandingModule],
|
||||
declarations:[OpenaireOrpComponent],
|
||||
providers:[ PreviousRouteRecorder],
|
||||
exports:[OpenaireOrpComponent]
|
||||
})
|
||||
export class LibOrpModule { }
|
@ -1,17 +0,0 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { RouterModule } from '@angular/router';
|
||||
|
||||
import { OpenaireOrpComponent } from './orp.component';
|
||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
RouterModule.forChild([
|
||||
{ path: '', component: OpenaireOrpComponent, data: {
|
||||
redirect: '/error', community : 'openaire'
|
||||
},canDeactivate: [PreviousRouteRecorder] }
|
||||
])
|
||||
]
|
||||
})
|
||||
export class OrpRoutingModule { }
|
@ -1,7 +0,0 @@
|
||||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'openaire-orp',
|
||||
template: `<result-landing type="orp"></result-landing>`,
|
||||
})
|
||||
export class OpenaireOrpComponent{}
|
@ -1,13 +0,0 @@
|
||||
import { NgModule} from '@angular/core';
|
||||
import { ProjectModule } from '../../openaireLibrary/landingPages/project/project.module';
|
||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||
import { OpenaireProjectComponent } from './project.component';
|
||||
import {ProjectRoutingModule} from './project-routing.module';
|
||||
|
||||
@NgModule({
|
||||
imports: [ProjectModule, ProjectRoutingModule],
|
||||
declarations:[OpenaireProjectComponent],
|
||||
providers:[ PreviousRouteRecorder],
|
||||
exports:[OpenaireProjectComponent]
|
||||
})
|
||||
export class LibProjectModule { }
|
@ -1,16 +0,0 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { RouterModule } from '@angular/router';
|
||||
|
||||
import { OpenaireProjectComponent } from './project.component';
|
||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
RouterModule.forChild([
|
||||
{ path: '', component: OpenaireProjectComponent, data: {
|
||||
redirect: '/error', community : 'openaire'
|
||||
},canDeactivate: [PreviousRouteRecorder] }
|
||||
])
|
||||
]
|
||||
})
|
||||
export class ProjectRoutingModule { }
|
@ -1,17 +0,0 @@
|
||||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'openaire-project',
|
||||
template: `<project></project>`,
|
||||
})
|
||||
export class OpenaireProjectComponent{
|
||||
constructor ( ) {
|
||||
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
import { NgModule} from '@angular/core';
|
||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||
import { OpenairePublicationComponent } from './publication.component';
|
||||
import {PublicationRoutingModule} from './publication-routing.module';
|
||||
import {ResultLandingModule} from "../../openaireLibrary/landingPages/result/resultLanding.module";
|
||||
|
||||
@NgModule({
|
||||
imports: [PublicationRoutingModule, ResultLandingModule],
|
||||
declarations:[OpenairePublicationComponent],
|
||||
providers:[ PreviousRouteRecorder],
|
||||
exports:[OpenairePublicationComponent]
|
||||
})
|
||||
export class LibPublicationModule { }
|
@ -1,16 +0,0 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { RouterModule } from '@angular/router';
|
||||
|
||||
import {OpenairePublicationComponent } from './publication.component';
|
||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
RouterModule.forChild([
|
||||
{ path: '', component: OpenairePublicationComponent, data: {
|
||||
redirect: '/error', community : 'openaire'
|
||||
},canDeactivate: [PreviousRouteRecorder] }
|
||||
])
|
||||
]
|
||||
})
|
||||
export class PublicationRoutingModule { }
|
@ -1,8 +0,0 @@
|
||||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'openaire-publication',
|
||||
template: `
|
||||
<result-landing type="publication"></result-landing>`,
|
||||
})
|
||||
export class OpenairePublicationComponent {}
|
@ -1,13 +0,0 @@
|
||||
import {NgModule} from '@angular/core';
|
||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||
import {OpenaireResultComponent} from './result.component';
|
||||
import {ResultRoutingModule} from './result-routing.module';
|
||||
import {ResultLandingModule} from "../../openaireLibrary/landingPages/result/resultLanding.module";
|
||||
|
||||
@NgModule({
|
||||
imports: [ResultRoutingModule, ResultLandingModule],
|
||||
declarations:[OpenaireResultComponent],
|
||||
providers:[PreviousRouteRecorder],
|
||||
exports:[OpenaireResultComponent]
|
||||
})
|
||||
export class LibResultModule { }
|
@ -1,17 +0,0 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { RouterModule } from '@angular/router';
|
||||
|
||||
import {OpenaireResultComponent } from './result.component';
|
||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
RouterModule.forChild([
|
||||
{ path: '', component: OpenaireResultComponent, data: {
|
||||
redirect: '/error', community : 'openaire'
|
||||
},canDeactivate: [PreviousRouteRecorder] }
|
||||
])
|
||||
]
|
||||
})
|
||||
export class ResultRoutingModule { }
|
@ -1,7 +0,0 @@
|
||||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'openaire-publication',
|
||||
template: `<result-landing type="result"></result-landing>`,
|
||||
})
|
||||
export class OpenaireResultComponent{}
|
@ -1,13 +0,0 @@
|
||||
import { NgModule} from '@angular/core';
|
||||
|
||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||
import { OpenaireSoftwareComponent } from './software.component';
|
||||
import {SoftwareRoutingModule} from './software-routing.module';
|
||||
import {ResultLandingModule} from "../../openaireLibrary/landingPages/result/resultLanding.module";
|
||||
@NgModule({
|
||||
imports: [SoftwareRoutingModule, ResultLandingModule],
|
||||
declarations:[OpenaireSoftwareComponent],
|
||||
providers:[PreviousRouteRecorder],
|
||||
exports:[OpenaireSoftwareComponent]
|
||||
})
|
||||
export class LibSoftwareModule { }
|
@ -1,14 +0,0 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { RouterModule } from '@angular/router';
|
||||
|
||||
import {OpenaireSoftwareComponent } from './software.component';
|
||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
RouterModule.forChild([
|
||||
{ path: '', component: OpenaireSoftwareComponent, canDeactivate: [PreviousRouteRecorder] }
|
||||
])
|
||||
]
|
||||
})
|
||||
export class SoftwareRoutingModule { }
|
@ -1,7 +0,0 @@
|
||||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'openaire-software',
|
||||
template: `<result-landing type="software"></result-landing>`,
|
||||
})
|
||||
export class OpenaireSoftwareComponent{}
|
@ -1,23 +0,0 @@
|
||||
import { NgModule} from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { FormsModule } from '@angular/forms';
|
||||
|
||||
import {OpenaireUserComponent } from './user.component';
|
||||
import { UserRoutingModule } from './user-routing.module';
|
||||
import { UserModule} from '../openaireLibrary/login/user.module';
|
||||
|
||||
import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule, FormsModule,
|
||||
UserRoutingModule, UserModule
|
||||
|
||||
],
|
||||
providers:[PreviousRouteRecorder],
|
||||
declarations: [
|
||||
OpenaireUserComponent
|
||||
|
||||
]
|
||||
})
|
||||
export class LibUserModule { }
|
@ -1,15 +0,0 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { RouterModule } from '@angular/router';
|
||||
|
||||
import {OpenaireUserComponent } from './user.component';
|
||||
import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
RouterModule.forChild([
|
||||
{ path: '', component: OpenaireUserComponent, canDeactivate: [PreviousRouteRecorder]},
|
||||
|
||||
])
|
||||
]
|
||||
})
|
||||
export class UserRoutingModule { }
|
@ -1,10 +0,0 @@
|
||||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'openaire-user',
|
||||
template: `<user></user>`
|
||||
})
|
||||
|
||||
export class OpenaireUserComponent {
|
||||
|
||||
}
|
@ -1 +1 @@
|
||||
Subproject commit 014dc9e5562890b61fbafa7705d2f31d0cbcdb74
|
||||
Subproject commit 6ab50b04cc8abbd617e6636cc86414241589d444
|
@ -1,20 +0,0 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { RouterModule } from '@angular/router';
|
||||
import {PreviousRouteRecorder} from "../../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
|
||||
import {OpenaireMyOrcidLinksComponent} from "./myOrcidLinks.component";
|
||||
import {LoginGuard} from "../../openaireLibrary/login/loginGuard.guard";
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
RouterModule.forChild([
|
||||
{ path: '', component: OpenaireMyOrcidLinksComponent,
|
||||
canActivate: [LoginGuard], data: {
|
||||
redirect: '/error', community : 'openaire'
|
||||
},
|
||||
canDeactivate: [PreviousRouteRecorder]
|
||||
}
|
||||
|
||||
])
|
||||
]
|
||||
})
|
||||
export class MyOrcidLinksRoutingModule { }
|
@ -1,16 +0,0 @@
|
||||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'openaire-my-orcid-links',
|
||||
template: `
|
||||
<my-orcid-links></my-orcid-links>
|
||||
`
|
||||
})
|
||||
|
||||
export class OpenaireMyOrcidLinksComponent {
|
||||
|
||||
constructor() {}
|
||||
|
||||
public ngOnInit() {}
|
||||
}
|
||||
|
@ -1,24 +0,0 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { FormsModule } from '@angular/forms';
|
||||
import {PreviousRouteRecorder} from "../../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
|
||||
import {OpenaireMyOrcidLinksComponent} from './myOrcidLinks.component';
|
||||
import {MyOrcidLinksModule} from "../../openaireLibrary/orcid/my-orcid-links/myOrcidLinks.module";
|
||||
import {MyOrcidLinksRoutingModule} from "./myOrcidLinks-routing.module";
|
||||
import {LoginGuard} from "../../openaireLibrary/login/loginGuard.guard";
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule, FormsModule,
|
||||
MyOrcidLinksModule,
|
||||
MyOrcidLinksRoutingModule
|
||||
],
|
||||
declarations: [
|
||||
OpenaireMyOrcidLinksComponent
|
||||
],
|
||||
exports: [
|
||||
OpenaireMyOrcidLinksComponent
|
||||
],
|
||||
providers: [PreviousRouteRecorder, LoginGuard]
|
||||
})
|
||||
export class LibMyOrcidLinksModule { }
|
@ -1,20 +0,0 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { RouterModule } from '@angular/router';
|
||||
|
||||
import {OpenaireOrcidComponent} from './orcid.component';
|
||||
import {PreviousRouteRecorder} from "../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
|
||||
import {LoginGuard} from "../openaireLibrary/login/loginGuard.guard";
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
RouterModule.forChild([
|
||||
{ path: '', component: OpenaireOrcidComponent,
|
||||
canActivate: [LoginGuard], data: {
|
||||
redirect: '/error', community : 'openaire'
|
||||
},
|
||||
canDeactivate: [PreviousRouteRecorder] }
|
||||
|
||||
])
|
||||
]
|
||||
})
|
||||
export class OrcidRoutingModule { }
|
@ -1,10 +0,0 @@
|
||||
import { Component } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'openaire-orcid',
|
||||
template: `
|
||||
<orcid></orcid>
|
||||
`
|
||||
})
|
||||
|
||||
export class OpenaireOrcidComponent {}
|
@ -1,24 +0,0 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
|
||||
import {OpenaireOrcidComponent} from './orcid.component';
|
||||
import {OrcidRoutingModule} from './orcid-routing.module';
|
||||
import {PreviousRouteRecorder} from "../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
|
||||
import {FormsModule} from "@angular/forms";
|
||||
import {OrcidModule} from "../openaireLibrary/orcid/orcid.module";
|
||||
import {LoginGuard} from "../openaireLibrary/login/loginGuard.guard";
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule, FormsModule,
|
||||
OrcidModule, OrcidRoutingModule
|
||||
],
|
||||
declarations: [
|
||||
OpenaireOrcidComponent
|
||||
],
|
||||
providers: [PreviousRouteRecorder, LoginGuard],
|
||||
exports: [
|
||||
OpenaireOrcidComponent
|
||||
]
|
||||
})
|
||||
export class LibOrcidModule { }
|
@ -1,23 +0,0 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { RouterModule } from '@angular/router';
|
||||
import {IsRouteEnabled} from "../../openaireLibrary/error/isRouteEnabled.guard";
|
||||
import {PreviousRouteRecorder} from "../../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
|
||||
import {OpenaireSearchRecommendedResultsForOrcidComponent} from "./searchRecommendedResultsForOrcid.component";
|
||||
import {FreeGuard} from "../../openaireLibrary/login/freeGuard.guard";
|
||||
import {LoginGuard} from "../../openaireLibrary/login/loginGuard.guard";
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
RouterModule.forChild([
|
||||
// { path: '', component: OpenaireSearchMyResultsInOrcidComponent, canActivate: [IsRouteEnabled], data: {
|
||||
{ path: '', component: OpenaireSearchRecommendedResultsForOrcidComponent,
|
||||
canActivate: [LoginGuard], data: {
|
||||
redirect: '/error', community : 'openaire'
|
||||
},
|
||||
canDeactivate: [PreviousRouteRecorder]
|
||||
}
|
||||
|
||||
])
|
||||
]
|
||||
})
|
||||
export class SearchRecommendedResultsForOrcidRoutingModule { }
|
@ -1,16 +0,0 @@
|
||||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'openaire-search-recommended-results-for-orcid',
|
||||
template: `
|
||||
<search-recommended-results-for-orcid></search-recommended-results-for-orcid>
|
||||
`
|
||||
})
|
||||
|
||||
export class OpenaireSearchRecommendedResultsForOrcidComponent {
|
||||
|
||||
constructor() {}
|
||||
|
||||
public ngOnInit() {}
|
||||
}
|
||||
|
@ -1,27 +0,0 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { FormsModule } from '@angular/forms';
|
||||
import {OpenaireSearchRecommendedResultsForOrcidComponent} from "./searchRecommendedResultsForOrcid.component";
|
||||
import {PreviousRouteRecorder} from "../../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
|
||||
import {IsRouteEnabled} from "../../openaireLibrary/error/isRouteEnabled.guard";
|
||||
import {SearchRecommendedResultsForOrcidModule} from "../../openaireLibrary/orcid/recommend-orcid-links/searchRecommendedResultsForOrcid.module";
|
||||
import {SearchRecommendedResultsForOrcidRoutingModule} from "./searchRecommendedResultsForOrcid-routing.module";
|
||||
import {FreeGuard} from "../../openaireLibrary/login/freeGuard.guard";
|
||||
import {LoginGuard} from "../../openaireLibrary/login/loginGuard.guard";
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule, FormsModule,
|
||||
SearchRecommendedResultsForOrcidModule,
|
||||
SearchRecommendedResultsForOrcidRoutingModule
|
||||
],
|
||||
declarations: [
|
||||
OpenaireSearchRecommendedResultsForOrcidComponent
|
||||
],
|
||||
exports: [
|
||||
OpenaireSearchRecommendedResultsForOrcidComponent
|
||||
],
|
||||
// providers: [PreviousRouteRecorder, IsRouteEnabled]
|
||||
providers: [PreviousRouteRecorder, LoginGuard]
|
||||
})
|
||||
export class LibSearchRecommendedResultsForOrcidModule { }
|
@ -1,18 +0,0 @@
|
||||
import {NgModule} from '@angular/core';
|
||||
import {CommonModule} from '@angular/common';
|
||||
import {FormsModule} from '@angular/forms';
|
||||
import {RouterModule} from '@angular/router';
|
||||
|
||||
import {ReloadModule} from '../openaireLibrary/reload/reload.module';
|
||||
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule, FormsModule, RouterModule, ReloadModule
|
||||
],
|
||||
declarations: [],
|
||||
providers: [],
|
||||
exports: []
|
||||
})
|
||||
export class LibReloadModule {
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue