diff --git a/explore/package.json b/explore/package.json index 8ca99eba..cd0a248b 100644 --- a/explore/package.json +++ b/explore/package.json @@ -45,7 +45,7 @@ "rxjs": "^6.5.1", "ts-md5": "^1.2.0", "tslib": "^2.0.0", - "uikit": "3.12.0", + "uikit": "3.13.10", "zone.js": "~0.11.4" }, "devDependencies": { @@ -71,4 +71,4 @@ "ts-node": "~7.0.0", "typescript": "~4.6.4" } -} \ No newline at end of file +} diff --git a/explore/server.ts b/explore/server.ts index 574d87f5..e031ceef 100644 --- a/explore/server.ts +++ b/explore/server.ts @@ -56,7 +56,30 @@ export function app() { res.set('Content-Type', register.contentType); res.end(register.metrics()); }); - + + server.get('/health-check', async (_req, res, _next) => { + var uptime = process.uptime(); + const date = new Date(uptime*1000); + const days = date.getUTCDate() - 1, + hours = date.getUTCHours(), + minutes = date.getUTCMinutes(), + seconds = date.getUTCSeconds(), + milliseconds = date.getUTCMilliseconds(); + + + const healthcheck = { + uptime: days + " days, " + hours + " hours, " + minutes + " minutes, " + seconds + " seconds, " + milliseconds + " milliseconds", + message: 'OK', + timestamp: new Date() + }; + try { + res.send(healthcheck); + } catch (error) { + healthcheck.message = error; + res.status(503).send(); + } + }); + // All regular routes use the Universal engine server.get('*', (req, res) => { if (routes.indexOf(req.path) !== -1) { diff --git a/explore/src/app/app-routing.module.ts b/explore/src/app/app-routing.module.ts index d3c30a25..97a827a5 100644 --- a/explore/src/app/app-routing.module.ts +++ b/explore/src/app/app-routing.module.ts @@ -10,50 +10,45 @@ const routes: Routes = [ {path: 'mail-preferences', loadChildren: () => import('./userEmailPreferences/mailPrefs.module').then(m => m.LibMailPrefsModule)}, {path: 'sdgs', loadChildren: () => import('./sdg/sdg.module').then(m => m.LibSdgModule)}, {path: 'fields-of-science', loadChildren: () => import('./fos/fos.module').then(m => m.LibFosModule), data: {extraOffset: 100}}, + {path: 'funders', loadChildren: () => import('./funders/funders.module').then(m => m.FundersModule)}, {path: 'contact-us', loadChildren: () => import('./contact/contact.module').then(m => m.ContactModule), data: {hasQuickContact: false}}, // ORCID Pages {path: 'orcid', loadChildren: () => import('./orcid/orcid.module').then(m => m.LibOrcidModule)}, {path: 'my-orcid-links', loadChildren: () => import('./orcid/my-orcid-links/myOrcidLinks.module').then(m => m.LibMyOrcidLinksModule)}, // Landing Pages - {path: 'search/result', loadChildren: () => import('./landingPages/result/libResult.module').then(m => m.LibResultModule), data: {hasQuickContact: false}}, - {path: 'search/publication', loadChildren: () => import('./landingPages/publication/libPublication.module').then(m => m.LibPublicationModule), data: {hasQuickContact: false}}, - {path: 'search/dataset', loadChildren: () => import('./landingPages/dataset/libDataset.module').then(m => m.LibDatasetModule), data: {hasQuickContact: false}}, - {path: 'search/software', loadChildren: () => import('./landingPages/software/libSoftware.module').then(m => m.LibSoftwareModule), data: {hasQuickContact: false}}, - {path: 'search/other', loadChildren: () => import('./landingPages/orp/libOrp.module').then(m => m.LibOrpModule), data: {hasQuickContact: false}}, - {path: 'search/project', loadChildren: () => import('./landingPages/project/libProject.module').then(m => m.LibProjectModule), data: {hasQuickContact: false}}, + {path: 'search/result', loadChildren: () => import('./landingPages/result/libResult.module').then(m => m.LibResultModule), data: {hasQuickContact: false, hasMenuSearchBar: true}}, + {path: 'search/publication', loadChildren: () => import('./landingPages/publication/libPublication.module').then(m => m.LibPublicationModule), data: {hasQuickContact: false, hasMenuSearchBar: true}}, + {path: 'search/dataset', loadChildren: () => import('./landingPages/dataset/libDataset.module').then(m => m.LibDatasetModule), data: {hasQuickContact: false, hasMenuSearchBar: true}}, + {path: 'search/software', loadChildren: () => import('./landingPages/software/libSoftware.module').then(m => m.LibSoftwareModule), data: {hasQuickContact: false, hasMenuSearchBar: true}}, + {path: 'search/other', loadChildren: () => import('./landingPages/orp/libOrp.module').then(m => m.LibOrpModule), data: {hasQuickContact: false, hasMenuSearchBar: true}}, + {path: 'search/project', loadChildren: () => import('./landingPages/project/libProject.module').then(m => m.LibProjectModule), data: {hasQuickContact: false, hasMenuSearchBar: true}}, { path: 'search/dataprovider', loadChildren: () => import('././landingPages/dataProvider/libDataProvider.module').then(m => m.LibDataProviderModule), - data: {hasQuickContact: false} + data: {hasQuickContact: false, hasMenuSearchBar: true} }, { path: 'search/organization', loadChildren: () => import('./landingPages/organization/libOrganization.module').then(m => m.LibOrganizationModule), - data: {hasQuickContact: false} + data: {hasQuickContact: false, hasMenuSearchBar: true} }, { path: 'project-report', loadChildren: () => import('./landingPages/htmlProjectReport/libHtmlProjectReport.module').then(m => m.LibHtmlProjectReportModule) }, + // Search Pages - {path: 'search/find', loadChildren: () => import('./searchPages/find/libSearch.module').then(m => m.LibMainSearchModule)}, { - path: 'search/find/research-outcomes', - loadChildren: () => import('./searchPages/simple/searchResearchResults.module').then(m => m.OpenaireSearchResearchResultsModule) + path: 'search/find', loadChildren: () => import('./searchPages/find/libSearch.module').then(m => m.LibMainSearchModule) }, {path: 'search/find/publications', component: PageURLResolverComponent}, {path: 'search/find/datasets', component: PageURLResolverComponent}, {path: 'search/find/software', component: PageURLResolverComponent}, {path: 'search/find/other', component: PageURLResolverComponent}, - {path: 'search/find/projects', loadChildren: () => import('./searchPages/simple/searchProjects.module').then(m => m.LibSearchProjectsModule)}, { - path: 'search/find/dataproviders', - loadChildren: () => import('./searchPages/simple/searchDataProviders.module').then(m => m.LibSearchDataProvidersModule) - }, - { - path: 'search/find/organizations', - loadChildren: () => import('./searchPages/simple/searchOrganizations.module').then(m => m.LibSearchOrganizationsModule) + path: 'search/find/:entity', loadChildren: () => import('./searchPages/find/libSearch.module').then(m => m.LibMainSearchModule) }, + // Advanced Search Pages { path: 'search/advanced/research-outcomes', diff --git a/explore/src/app/app.component.ts b/explore/src/app/app.component.ts index d8b467ae..7de1b674 100644 --- a/explore/src/app/app.component.ts +++ b/explore/src/app/app.component.ts @@ -52,8 +52,8 @@ import {LayoutService} from './openaireLibrary/dashboard/sharedComponents/sideba - + ` }) @@ -65,7 +65,10 @@ export class AppComponent { properties: EnvProperties = properties; user: User; header: Header; - public showQuickContact: boolean; + /* Contact */ + public showQuickContact: boolean; + public bottomNotIntersecting: boolean; + public displayQuickContact: boolean; // intersecting with specific section in home page public contactForm: FormGroup; public sending: boolean = false; @ViewChild('quickContact') quickContact: QuickContactComponent; @@ -85,11 +88,7 @@ export class AppComponent { if (typeof document !== 'undefined') { this.isClient = true; } - this.subscriptions.push(this.layoutService.hasQuickContact.subscribe(hasQuickContact => { - this.showQuickContact = hasQuickContact; - this.cdr.detectChanges(); - })); - this.configurationService.initCommunityInformation(this.properties, this.properties.adminToolsCommunity); + this.configurationService.initPortal(this.properties, this.properties.adminToolsCommunity); this.feedbackmail = this.properties.feedbackmail; if (this.properties.environment == "production" || this.properties.environment == "development") { this.subscriptions.push(this.route.queryParams.subscribe(data => { @@ -111,9 +110,18 @@ export class AppComponent { badge: true }; this.reset(); + })); + this.subscriptions.push(this.layoutService.hasQuickContact.subscribe(hasQuickContact => { + if(this.showQuickContact !== hasQuickContact) { + this.showQuickContact = hasQuickContact; + this.cdr.detectChanges(); + } })); this.subscriptions.push(this.quickContactService.isDisplayed.subscribe(display => { - this.showQuickContact = display; + if(this.displayQuickContact !== display) { + this.displayQuickContact = display; + this.cdr.detectChanges(); + } })); } @@ -121,6 +129,8 @@ export class AppComponent { this.subscriptions.forEach(subscription => { if (subscription instanceof Subscriber) { subscription.unsubscribe(); + } else if (typeof IntersectionObserver !== "undefined" && subscription instanceof IntersectionObserver) { + subscription.disconnect(); } }); this.configurationService.clearSubscriptions(); @@ -142,12 +152,9 @@ export class AppComponent { }; let intersectionObserver = new IntersectionObserver(entries => { entries.forEach(entry => { - if (entry.isIntersecting && this.showQuickContact) { - this.showQuickContact = false; - this.quickContactService.setDisplay(this.showQuickContact); - } else if (!entry.isIntersecting && !this.showQuickContact) { - this.showQuickContact = true; - this.quickContactService.setDisplay(this.showQuickContact); + if(this.bottomNotIntersecting !== (!entry.isIntersecting)) { + this.bottomNotIntersecting = !entry.isIntersecting; + this.cdr.detectChanges(); } }); }, options); @@ -162,13 +169,13 @@ export class AppComponent { this.userMenuItems.push(new MenuItem("", "My links", "", "/myclaims", false, [], ["/myclaims"], {})); let researchOutcomesMenu = new MenuItem("", OpenaireEntities.RESULTS, "", "/search/find/research-outcomes", false, [], ["/search/find/research-outcomes"], {resultbestaccessright: '"' + encodeURIComponent("Open Access") + '"'}); researchOutcomesMenu.items = [ - new MenuItem("", OpenaireEntities.PUBLICATIONS, "", "/search/find/research-outcomes", false, [], ["/search/find/research-outcomes"], {type: '"' + encodeURIComponent("publications") + '"'}), - new MenuItem("", OpenaireEntities.DATASETS, "", "/search/find/research-outcomes", false, [], ["/search/find/research-outcomes"], {type: '"' + encodeURIComponent("datasets") + '"'}), - new MenuItem("", OpenaireEntities.SOFTWARE, "", "/search/find/research-outcomes", false, [], ["/search/find/research-outcomes"], {type: '"' + encodeURIComponent("software") + '"'}), - new MenuItem("", OpenaireEntities.OTHER, "", "/search/find/research-outcomes", false, [], ["/search/find/research-outcomes"], {type: '"' + encodeURIComponent("other") + '"'})]; + new MenuItem("", OpenaireEntities.PUBLICATIONS, "", "/search/find/research-outcomes", false, [], ["/search/find/research-outcomes"], {type: '"' + encodeURIComponent("publications") + '"', resultbestaccessright: '"' + encodeURIComponent("Open Access") + '"'}), + new MenuItem("", OpenaireEntities.DATASETS, "", "/search/find/research-outcomes", false, [], ["/search/find/research-outcomes"], {type: '"' + encodeURIComponent("datasets") + '"', resultbestaccessright: '"' + encodeURIComponent("Open Access") + '"'}), + new MenuItem("", OpenaireEntities.SOFTWARE, "", "/search/find/research-outcomes", false, [], ["/search/find/research-outcomes"], {type: '"' + encodeURIComponent("software") + '"', resultbestaccessright: '"' + encodeURIComponent("Open Access") + '"'}), + new MenuItem("", OpenaireEntities.OTHER, "", "/search/find/research-outcomes", false, [], ["/search/find/research-outcomes"], {type: '"' + encodeURIComponent("other") + '"', resultbestaccessright: '"' + encodeURIComponent("Open Access") + '"'})]; //TODO add check for research results route this.menuItems = [ - new MenuItem("search", "Search", "", "/search/find", false, [], ["/search/find"], {qf: true}, + new MenuItem("search", "Search", "", "/search/find/research-outcomes", false, [], ["/search/find/research-outcomes"], {resultbestaccessright: '"' + encodeURIComponent("Open Access") + '"'}, null, null, null, null, "_blank", "internal", false, [ researchOutcomesMenu, @@ -191,6 +198,7 @@ export class AppComponent { new MenuItem("", "Registries", "", "/search/entity-registries", false, ["datasource"], ["/search/entity-registries"], {}), new MenuItem("", "Browse all", "", "/search/find/dataproviders", false, ["datasource"], ["/search/find/dataproviders"], {})] ), + new MenuItem("funders", "Funders", "", "/funders", false, [], ["/funders"], {}), ]; if (Session.isPortalAdministrator(this.user)) { this.userMenuItems.push(new MenuItem("", "Manage all links", "", "/claims", false, [], ["/claims"], {})); diff --git a/explore/src/app/contact/contact.component.ts b/explore/src/app/contact/contact.component.ts index 0549f948..410d9a18 100644 --- a/explore/src/app/contact/contact.component.ts +++ b/explore/src/app/contact/contact.component.ts @@ -60,10 +60,7 @@ export class ContactComponent implements OnInit { this.properties = properties; this.email = {body: '', subject: '', recipients: []}; - - if (this.properties.enablePiwikTrack && (typeof document !== 'undefined')) { - this.subscriptions.push( this._piwikService.trackView(this.properties, this.pageTitle, this.properties.piwikSiteId).subscribe()); - } + 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); diff --git a/explore/src/app/deposit/deposit.module.ts b/explore/src/app/deposit/deposit.module.ts index e32cbaa0..79e96a68 100644 --- a/explore/src/app/deposit/deposit.module.ts +++ b/explore/src/app/deposit/deposit.module.ts @@ -12,7 +12,6 @@ import {DepositFirstPageModule} from "../openaireLibrary/deposit/depositFirstPag import {ZenodoCommunitiesService} from "../openaireLibrary/connect/zenodoCommunities/zenodo-communities.service"; import {CommunityService} from "../openaireLibrary/connect/community/community.service"; -import {SearchZenodoCommunitiesService} from "../openaireLibrary/connect/zenodoCommunities/searchZenodoCommunities.service"; @NgModule({ imports: [ @@ -26,6 +25,6 @@ import {SearchZenodoCommunitiesService} from "../openaireLibrary/connect/zenodoC OpenaireDepositComponent, ], providers: [PreviousRouteRecorder, IsRouteEnabled, - ZenodoCommunitiesService, CommunityService, SearchZenodoCommunitiesService] + ZenodoCommunitiesService, CommunityService] }) export class LibDepositModule { } diff --git a/explore/src/app/deposit/searchDataprovidersToDeposit.module.ts b/explore/src/app/deposit/searchDataprovidersToDeposit.module.ts index 2e76ce7f..b1647561 100644 --- a/explore/src/app/deposit/searchDataprovidersToDeposit.module.ts +++ b/explore/src/app/deposit/searchDataprovidersToDeposit.module.ts @@ -9,8 +9,6 @@ import {SearchDataprovidersToDepositModule} from '../openaireLibrary/deposit/sea import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard'; import {IsRouteEnabled} from '../openaireLibrary/error/isRouteEnabled.guard'; import {ZenodoCommunitiesServiceModule} from '../openaireLibrary/connect/zenodoCommunities/zenodo-communitiesService.module'; -import {SearchZenodoCommunitiesServiceModule} from '../openaireLibrary/connect/zenodoCommunities/searchZenodoCommunitiesService.module'; - import {CommunityService} from '../openaireLibrary/connect/community/community.service'; @NgModule({ @@ -18,7 +16,7 @@ import {CommunityService} from '../openaireLibrary/connect/community/community.s CommonModule, FormsModule, SearchDataprovidersToDepositModule, SearchDataprovidersToDepositRoutingModule, - ZenodoCommunitiesServiceModule, SearchZenodoCommunitiesServiceModule + ZenodoCommunitiesServiceModule ], declarations: [ OpenaireSearchDataprovidersToDepositComponent diff --git a/explore/src/app/fos/fos.component.ts b/explore/src/app/fos/fos.component.ts index f6a6081c..4c85da4f 100644 --- a/explore/src/app/fos/fos.component.ts +++ b/explore/src/app/fos/fos.component.ts @@ -4,12 +4,8 @@ import {properties} from "../../environments/environment"; @Component({ selector: 'explore-fos', template: ` - + ` }) -export class ExploreFosComponent { - piwikSiteId = properties.piwikSiteId; - - constructor() {} -} \ No newline at end of file +export class ExploreFosComponent {} diff --git a/explore/src/app/funders/funders-routing.module.ts b/explore/src/app/funders/funders-routing.module.ts new file mode 100644 index 00000000..5359a285 --- /dev/null +++ b/explore/src/app/funders/funders-routing.module.ts @@ -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 { } diff --git a/explore/src/app/funders/funders.component.html b/explore/src/app/funders/funders.component.html new file mode 100644 index 00000000..0fac80e9 --- /dev/null +++ b/explore/src/app/funders/funders.component.html @@ -0,0 +1,295 @@ + +
+
+
+
+ +
+
+
+
+
+ + + Funders + +
+

+ Be an integral part of the open R&I ecosystem +

+
+ Welcome to the Funders’ page on OpenAIRE Explore. Discover key details about each funder, their commitment to open access, and the impactful research they enable. Our aim? To foster transparency, inspire collaboration. + +
+ +
+
+
+ + {{formatNumber(projectsNumber)}}+ + + + grants + +
+
+ + {{formatNumber(fundersNumber)}} + + + funders + +
+
+ + {{formatNumber(researchProductsNumber)}}+ + + + funded research outputs + +
+
+
+
+
+
+ +
+
+
+
+ + +
+ +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ +
+
+ No funders available +
+
+
+ + +
+ + +
+
+
+ + + +
{{funder.openAccessPercentage}}%
+
+ Open Access +
+
+
+ +
+ + + OpenAIRE placeholder logo + +
+ +
+ + {{funder.alias}} + +
+ +
+ + {{funder.name}} + +
+ +
+
+
+ + +
+
+
+
+ + + OpenAIRE placeholder logo + +
+
+
+ + {{funder.name}} + + + + ({{funder.alias}}) + + +
+ +
+
+
+
+
+ + + +
{{funder.openAccessPercentage}}%
+
+ Open Access +
+
+
+
+
+
+
+
+ + +
+
+
+
\ No newline at end of file diff --git a/explore/src/app/funders/funders.component.less b/explore/src/app/funders/funders.component.less new file mode 100644 index 00000000..fd7e0b46 --- /dev/null +++ b/explore/src/app/funders/funders.component.less @@ -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%); + } +} \ No newline at end of file diff --git a/explore/src/app/funders/funders.component.ts b/explore/src/app/funders/funders.component.ts new file mode 100644 index 00000000..b08f1622 --- /dev/null +++ b/explore/src/app/funders/funders.component.ts @@ -0,0 +1,283 @@ +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'; + +@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(); + + 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,) { + } + + ngOnInit() { + 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(); + } + }); + } + + 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() { + let refineParams = '&fq=resultbestaccessright%20exact%20%22Open%20Access%22'; + this.subscriptions.push( + zip( + this.refineFieldResultsService.getRefineFieldsResultsByEntityName(['relfunder'], 'result', this.properties), + this.refineFieldResultsService.getRefineFieldsResultsByEntityName(['relfunder'], 'result', this.properties, refineParams), + this.refineFieldResultsService.getRefineFieldsResultsByEntityName(['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).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); + } + }); + // 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; + 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'); + } +} diff --git a/explore/src/app/funders/funders.module.ts b/explore/src/app/funders/funders.module.ts new file mode 100644 index 00000000..c89e2d64 --- /dev/null +++ b/explore/src/app/funders/funders.module.ts @@ -0,0 +1,47 @@ +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 {PiwikService} from "../openaireLibrary/utils/piwik/piwik.service"; +import {IsRouteEnabled} from "../openaireLibrary/error/isRouteEnabled.guard"; +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'; + + +@NgModule({ + imports: [ + FundersRoutingModule, CommonModule, RouterModule, AlertModalModule, + Schema2jsonldModule, SEOServiceModule, BreadcrumbsModule, LoadingModule, + RefineFieldResultsServiceModule, LogoUrlPipeModule, IconsModule, InputModule, + PagingModule, SearchInputModule + ], + declarations: [ + FundersComponent + ], + providers: [ + PiwikService, IsRouteEnabled + ], + exports: [ + FundersComponent + ] +}) + +export class FundersModule { + constructor(private iconsService: IconsService) { + this.iconsService.registerIcons([open_access, closed_access]); + } +} diff --git a/explore/src/app/home/home.component.html b/explore/src/app/home/home.component.html index 32267eec..b2903a90 100644 --- a/explore/src/app/home/home.component.html +++ b/explore/src/app/home/home.component.html @@ -15,18 +15,27 @@ Discover open linked research. -
- - +
+ + + + + +
+ +
@@ -251,16 +260,16 @@

Linked Open Research.

- EXPLORE is built on the OpenAIRE Research Graph, one of the largest + EXPLORE is built on the OpenAIRE Graph, 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 Research Graph brings discovery, monitoring, and assessment of science + OpenAIRE Graph brings discovery, monitoring, and assessment of science back in the hands of the scientific community.
- ipad + ipad
@@ -269,10 +278,10 @@
- Within a constantly emerging scholarly communication environment, the OpenAIRE Research 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 coverage (geographic and thematic), quality (disambiguation and semantics) and access (APIs). + 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 coverage (geographic and thematic), quality (disambiguation and semantics) and access (APIs).
- Find information about the OpenAIRE Research Graph, how to test it and contribute to improving it. + Find information about the OpenAIRE Graph, how to test it and contribute to improving it.
diff --git a/explore/src/app/home/home.component.ts b/explore/src/app/home/home.component.ts index 5881989e..5bbbbfb7 100644 --- a/explore/src/app/home/home.component.ts +++ b/explore/src/app/home/home.component.ts @@ -112,6 +112,7 @@ export class HomeComponent implements OnInit, OnDestroy, AfterViewInit { ] ] }; + public portalName: string = ""; public pageTitle = "OpenAIRE"; public keyword: string = ""; public searchFields: SearchFields = new SearchFields(); @@ -121,7 +122,6 @@ export class HomeComponent implements OnInit, OnDestroy, AfterViewInit { public properties: EnvProperties = properties; public openaireEntities = OpenaireEntities; public readMore: boolean = false; - public showQuickContact: boolean; @ViewChild('contact') contact: ElementRef; subscriptions: any[] = []; @ViewChildren('scrolling_element') elements: QueryList; @@ -157,7 +157,7 @@ export class HomeComponent implements OnInit, OnDestroy, AfterViewInit { {value: "lcsh:Technology", label: "Technology"}, ]; stringUtils = new StringUtils(); - disableSelect: boolean = true; + // disableSelect: boolean = true; constructor( private _router: Router, @@ -173,6 +173,7 @@ export class HomeComponent implements OnInit, OnDestroy, AfterViewInit { this._meta.updateTag({content: description}, "name='description'"); this._meta.updateTag({content: description}, "property='og:description'"); this._meta.updateTag({content: title}, "property='og:title'"); + this.quickContactService.setDisplay(false); } private getPageContents() { @@ -213,9 +214,7 @@ export class HomeComponent implements OnInit, OnDestroy, AfterViewInit { if (this.properties != null) { var url = this.properties.domain + this.properties.baseLink + this._router.url; this._meta.updateTag({content: url}, "property='og:url'"); - if (this.properties.enablePiwikTrack && (typeof document !== 'undefined')) { - this.subscriptions.push(this._piwikService.trackView(this.properties, "OpenAIRE").subscribe()); - } + this.subscriptions.push(this._piwikService.trackView(this.properties, "OpenAIRE").subscribe()); if(this.numbersComponent) { this.numbersComponent.showPublications = false; this.numbersComponent.showDatasets = false; @@ -225,8 +224,11 @@ export class HomeComponent implements OnInit, OnDestroy, AfterViewInit { this.numbersComponent.showDataProviders = false; this.numbersComponent.showOrganizations = false; } - this.subscriptions.push(this.config.communityInformationState.subscribe(data => { + this.subscriptions.push(this.config.portalAsObservable.subscribe(data => { if(data) { + if(data.name) { + this.portalName = data.name; + } var showEntity = {}; for (var i = 0; i < data['entities'].length; i++) { showEntity["" + data['entities'][i]["pid"] + ""] = data['entities'][i]["isEnabled"]; @@ -281,6 +283,7 @@ export class HomeComponent implements OnInit, OnDestroy, AfterViewInit { public ngOnDestroy() { + this.quickContactService.setDisplay(true); this.clear(); } @@ -298,13 +301,7 @@ export class HomeComponent implements OnInit, OnDestroy, AfterViewInit { }; let intersectionObserver = new IntersectionObserver(entries => { entries.forEach(entry => { - if (entry.isIntersecting && this.showQuickContact) { - this.showQuickContact = false; - this.quickContactService.setDisplay(this.showQuickContact); - } else if (!entry.isIntersecting && !this.showQuickContact) { - this.showQuickContact = true; - this.quickContactService.setDisplay(this.showQuickContact); - } + this.quickContactService.setDisplay(!entry.isIntersecting); }); }, options); intersectionObserver.observe(this.contact.nativeElement); @@ -340,48 +337,47 @@ export class HomeComponent implements OnInit, OnDestroy, AfterViewInit { this.selectedEntityAdvancedUrl = $event.advancedUrl; } - goTo(simple: boolean) { - let url = (simple) ? this.selectedEntitySimpleUrl : this.selectedEntityAdvancedUrl; + goTo() { let parameterNames = []; let parameterValues = []; - if (this.selectedEntity == "result") { - if (this.resultTypes) { - let values = []; - for (let value of this.resultTypes.values) { - if (value.selected) { - values.push(value.id); - } - } - if (values.length > 0 && values.length != 4) { - parameterNames.push("type"); - parameterValues.push(values.join(",")); - } - if (this.resultsQuickFilter && this.resultsQuickFilter.selected) { - parameterNames.push(this.resultsQuickFilter.filterId); - parameterValues.push('"' + encodeURIComponent(this.resultsQuickFilter.value) + '"'); - } - } - } else if (this.selectedEntity == "all") { - if (this.resultsQuickFilter && this.resultsQuickFilter.selected) { - parameterNames.push(this.resultsQuickFilter.filterId); - parameterValues.push('"' + encodeURIComponent(this.resultsQuickFilter.value) + '"'); - } + // if (this.selectedEntity == "result") { + // if (this.resultTypes) { + // let values = []; + // for (let value of this.resultTypes.values) { + // if (value.selected) { + // values.push(value.id); + // } + // } + // if (values.length > 0 && values.length != 4) { + // parameterNames.push("type"); + // parameterValues.push(values.join(",")); + // } + // if (this.resultsQuickFilter && this.resultsQuickFilter.selected) { + // parameterNames.push(this.resultsQuickFilter.filterId); + // parameterValues.push('"' + encodeURIComponent(this.resultsQuickFilter.value) + '"'); + // } + // } + // } else if (this.selectedEntity == "all") { + if (this.resultsQuickFilter && this.resultsQuickFilter.selected) { + parameterNames.push(this.resultsQuickFilter.filterId); + parameterValues.push('"' + encodeURIComponent(this.resultsQuickFilter.value) + '"'); } + // } if (this.keyword.length > 0) { parameterNames.push("fv0"); parameterValues.push(this.keyword); parameterNames.push("f0"); parameterValues.push("q"); } - this._router.navigate([url], {queryParams: this.routerHelper.createQueryParams(parameterNames, parameterValues)}); + this._router.navigate([this.properties.searchLinkToAll], {queryParams: this.routerHelper.createQueryParams(parameterNames, parameterValues)}); } getSubjectParameter(param) { return {'f0': 'resultsubject', 'fv0': '"' + (param) + '"', size: 50}; } - disableSelectChange(event: boolean) { - this.disableSelect = event; - this.cdr.detectChanges(); - } + // disableSelectChange(event: boolean) { + // this.disableSelect = event; + // this.cdr.detectChanges(); + // } } diff --git a/explore/src/app/home/home.module.ts b/explore/src/app/home/home.module.ts index 6749b66b..a51ac75b 100644 --- a/explore/src/app/home/home.module.ts +++ b/explore/src/app/home/home.module.ts @@ -27,6 +27,7 @@ import {book, cog, database, earth} from "../openaireLibrary/utils/icons/icons"; import {NumbersModule} from "../openaireLibrary/sharedComponents/numbers/numbers.module"; 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"; @NgModule({ imports: [ @@ -37,7 +38,7 @@ import {InputModule} from "../openaireLibrary/sharedComponents/input/input.modul PiwikServiceModule, HomeRoutingModule, HelperModule, - SEOServiceModule, OtherPortalsModule, EntitiesSelectionModule, QuickSelectionsModule, IconsModule, NumbersModule, AdvancedSearchInputModule, InputModule + SEOServiceModule, OtherPortalsModule, EntitiesSelectionModule, QuickSelectionsModule, IconsModule, NumbersModule, AdvancedSearchInputModule, InputModule, SearchInputModule ], declarations: [ HomeComponent diff --git a/explore/src/app/sdg/sdg.component.ts b/explore/src/app/sdg/sdg.component.ts index 7c90088a..2f78b9e7 100644 --- a/explore/src/app/sdg/sdg.component.ts +++ b/explore/src/app/sdg/sdg.component.ts @@ -4,12 +4,7 @@ import {properties} from "../../environments/environment"; @Component({ selector: 'explore-sdg', template: ` - + ` }) -export class ExploreSdgComponent { - piwikSiteId = properties.piwikSiteId; - - constructor() { - } -} \ No newline at end of file +export class ExploreSdgComponent {} diff --git a/explore/src/assets/explore-assets/funders/coins.svg b/explore/src/assets/explore-assets/funders/coins.svg new file mode 100644 index 00000000..6b3d73fb --- /dev/null +++ b/explore/src/assets/explore-assets/funders/coins.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/explore/src/assets/explore-assets/funders/funders.png b/explore/src/assets/explore-assets/funders/funders.png new file mode 100644 index 00000000..0ff764f5 Binary files /dev/null and b/explore/src/assets/explore-assets/funders/funders.png differ diff --git a/explore/src/assets/explore-assets/funders/handshake.svg b/explore/src/assets/explore-assets/funders/handshake.svg new file mode 100644 index 00000000..03470325 --- /dev/null +++ b/explore/src/assets/explore-assets/funders/handshake.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/explore/src/assets/explore-assets/home/graph.svg b/explore/src/assets/explore-assets/home/graph.svg deleted file mode 100644 index a86312f3..00000000 --- a/explore/src/assets/explore-assets/home/graph.svg +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/explore/src/assets/explore-custom.less b/explore/src/assets/explore-custom.less index e5899a09..92af8ab6 100644 --- a/explore/src/assets/explore-custom.less +++ b/explore/src/assets/explore-custom.less @@ -23,12 +23,33 @@ /* Label */ @label-secondary-color: @explore-color; +/* Subnav */ +@subnav-pill-alt-item-active-background: @explore-color; +@subnav-pill-alt-item-active-background-gradient: none; + /* General */ @general-tab-featured-tab: @explore-color; /* Landing */ @landing-portal-color: @explore-color; -.deposit { +.deposit, .funders { @import (multiple) "~src/assets/openaire-theme/less/_import"; } + +.monitor-dashboard-link { + color: @monitor-color; +} + +.funders-title { + color: @primary-color; +} + +.custom-extra-entities { + padding: 2px 5px; + border-radius: 4px; + &:hover { + text-decoration: none; + color: @secondary-color; + } +} \ No newline at end of file diff --git a/explore/src/environments/environment.beta.ts b/explore/src/environments/environment.beta.ts index 1754c11e..78c529f4 100644 --- a/explore/src/environments/environment.beta.ts +++ b/explore/src/environments/environment.beta.ts @@ -1,6 +1,8 @@ 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"; -export let properties: EnvProperties = { +let props: EnvProperties = { environment: "beta", adminToolsPortalType: "explore", dashboard: "explore", @@ -12,6 +14,7 @@ export let properties: EnvProperties = { statisticsAPIURL: "https://beta.services.openaire.eu/stats-api/", statisticsFrameAPIURL: "https://beta.openaire.eu/stats/", 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/", searchAPIURLLAst: "https://beta.services.openaire.eu/search/v2/api/", @@ -32,6 +35,7 @@ export let properties: EnvProperties = { cordisURL: "http://cordis.europa.eu/projects/", openDoarURL: "http://v2.sherpa.ac.uk/id/repository/", r3DataURL: "http://service.re3data.org/repository/", + // swhURL: "https://archive.softwareheritage.org/", fairSharingURL: "https://fairsharing.org/", eoscMarketplaceURL: "https://marketplace.eosc-portal.eu/services/", sherpaURL: "http://sherpa.ac.uk/romeo/issn/", @@ -60,6 +64,7 @@ export let properties: EnvProperties = { datasourcesAPI: "https://beta.services.openaire.eu/openaire/ds/api/", + monitorServiceAPIURL: "https://beta.services.openaire.eu/uoa-monitor-service", adminToolsAPIURL: "https://beta.services.openaire.eu/uoa-admin-tools/", adminToolsCommunity: "openaire", @@ -82,6 +87,7 @@ export let properties: EnvProperties = { searchLinkToOrp: "/search/other?orpId=", searchLinkToOrganization: "/search/organization?organizationId=", + searchLinkToAll: "/search/find/", searchLinkToPublications: "/search/find/publications", searchLinkToDataProviders: "/search/find/dataproviders", searchLinkToProjects: "/search/find/projects", @@ -124,3 +130,7 @@ export let properties: EnvProperties = { egiNotebookLink: "https://marketplace.eosc-portal.eu/services/egi-notebooks?q=EGI+Notebook" }; + +export let properties: EnvProperties = { + ...props, ...common, ...commonBeta +} diff --git a/explore/src/environments/environment.prod.ts b/explore/src/environments/environment.prod.ts index ae4ab27e..2560b132 100644 --- a/explore/src/environments/environment.prod.ts +++ b/explore/src/environments/environment.prod.ts @@ -1,6 +1,8 @@ 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"; -export let properties: EnvProperties = { + let props: EnvProperties = { environment: "production", adminToolsPortalType: "explore", dashboard: "explore", @@ -12,6 +14,7 @@ export let properties: EnvProperties = { statisticsAPIURL: "https://beta.services.openaire.eu/stats-api/", statisticsFrameAPIURL: "https://www.openaire.eu/stats/", 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/", searchAPIURLLAst: "https://services.openaire.eu/search/v2/api/", @@ -32,6 +35,7 @@ export let properties: EnvProperties = { cordisURL: "http://cordis.europa.eu/projects/", openDoarURL: "http://v2.sherpa.ac.uk/id/repository/", r3DataURL: "http://service.re3data.org/repository/", + // swhURL: "https://archive.softwareheritage.org/", fairSharingURL: "https://fairsharing.org/", eoscMarketplaceURL: "https://marketplace.eosc-portal.eu/services/", sherpaURL: "http://sherpa.ac.uk/romeo/issn/", @@ -64,6 +68,7 @@ export let properties: EnvProperties = { datasourcesAPI: "https://services.openaire.eu/openaire/ds/api/", + monitorServiceAPIURL: "https://services.openaire.eu/uoa-monitor-service", adminToolsAPIURL: "https://services.openaire.eu/uoa-admin-tools/", adminToolsCommunity: "openaire", @@ -87,6 +92,7 @@ export let properties: EnvProperties = { searchLinkToOrp: "/search/other?orpId=", searchLinkToOrganization: "/search/organization?organizationId=", + searchLinkToAll: "/search/find/", searchLinkToPublications: "/search/find/publications", searchLinkToDataProviders: "/search/find/dataproviders", searchLinkToProjects: "/search/find/projects", @@ -127,3 +133,7 @@ export let properties: EnvProperties = { myOrcidLinksPage: "/my-orcid-links", footerGrantText: "OpenAIRE has received funding from the European Union's Horizon 2020 research and innovation programme under grant agreements No. 777541 and 101017452" }; + +export let properties: EnvProperties = { + ...props, ...common, ...commonProd +} \ No newline at end of file diff --git a/explore/src/environments/environment.test.ts b/explore/src/environments/environment.test.ts index 0af87fef..6866186d 100644 --- a/explore/src/environments/environment.test.ts +++ b/explore/src/environments/environment.test.ts @@ -1,6 +1,9 @@ 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"; -export let properties: EnvProperties = { +let props: EnvProperties = { +// export let properties: EnvProperties = { environment: "test", dashboard: "explore", adminToolsPortalType: "explore", @@ -32,6 +35,7 @@ export let properties: EnvProperties = { cordisURL: "http://cordis.europa.eu/projects/", openDoarURL: "http://v2.sherpa.ac.uk/id/repository/", r3DataURL: "http://service.re3data.org/repository/", + // swhURL: "https://archive.softwareheritage.org/", fairSharingURL: "https://fairsharing.org/", eoscMarketplaceURL: "https://marketplace.eosc-portal.eu/services/", sherpaURL: "http://sherpa.ac.uk/romeo/issn/", @@ -86,6 +90,7 @@ export let properties: EnvProperties = { searchLinkToOrp: "/search/other?orpId=", searchLinkToOrganization: "/search/organization?organizationId=", + searchLinkToAll: "/search/find/", searchLinkToPublications: "/search/find/publications", searchLinkToDataProviders: "/search/find/dataproviders", searchLinkToProjects: "/search/find/projects", @@ -126,3 +131,7 @@ export let properties: EnvProperties = { myOrcidLinksPage: "/my-orcid-links", footerGrantText: "OpenAIRE has received funding from the European Union's Horizon 2020 research and innovation programme under grant agreements No. 777541 and 101017452" }; + +export let properties: EnvProperties = { + ...props, ...common, ...commonTest +} \ No newline at end of file diff --git a/explore/src/environments/environment.ts b/explore/src/environments/environment.ts index b8789608..95a82a05 100644 --- a/explore/src/environments/environment.ts +++ b/explore/src/environments/environment.ts @@ -4,8 +4,10 @@ // 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"; -export let properties: EnvProperties = { +let props: EnvProperties = { environment: "development", adminToolsPortalType: "explore", dashboard: "explore", @@ -17,20 +19,26 @@ export let properties: EnvProperties = { statisticsAPIURL: "http://vatopedi.di.uoa.gr:8080/stats/", statisticsFrameAPIURL: "https://beta.openaire.eu/stats/", statisticsFrameNewAPIURL: "https://stats.madgik.di.uoa.gr/stats-api/", + bipFrameAPIURL: "https://bip.imsi.athenarc.gr/api/impact-chart?id=", useNewStatistisTool: true, claimsAPIURL: "http://rudie.di.uoa.gr:8980/dnet-claims-service-2.0.0-SNAPSHOT/rest/claimsService/", // claimsAPIURL: "http://dl170.madgik.di.uoa.gr:8180/dnet-claims-service-2.0.0-SNAPSHOT/rest/claimsService/", + // From here searchAPIURLLAst: "http://beta.services.openaire.eu/search/v2/api/", searchResourcesAPIURL: "https://beta.services.openaire.eu/search/v2/api/resources", + // to here openCitationsAPIURL: "https://services.openaire.eu/opencitations/getCitations?id=", csvAPIURL: "https://beta.services.openaire.eu/search/v2/api/reports", + // From here searchCrossrefAPIURL: "https://api.crossref.org/works", searchDataciteAPIURL: "https://api.datacite.org/works", searchOrcidURL: "https://pub.orcid.org/v2.1/", orcidURL: "https://orcid.org/", + // to here orcidAPIURL: "http://duffy.di.uoa.gr:19480/uoa-orcid-service/", orcidTokenURL : "https://sandbox.orcid.org/oauth/authorize?", orcidClientId: "APP-A5M3KTX6NCN67L91", + // From here doiURL: "https://doi.org/", pmcURL: "http://europepmc.org/articles/", pmidURL: "https://www.ncbi.nlm.nih.gov/pubmed/", @@ -38,8 +46,11 @@ export let properties: EnvProperties = { cordisURL: "http://cordis.europa.eu/projects/", openDoarURL: "http://v2.sherpa.ac.uk/id/repository/", r3DataURL: "http://service.re3data.org/repository/", + // swhURL: "https://archive.softwareheritage.org/", fairSharingURL: "https://fairsharing.org/", + // to here eoscMarketplaceURL: "https://marketplace.eosc-portal.eu/services/", + // From here sherpaURL: "http://sherpa.ac.uk/romeo/issn/", sherpaURLSuffix: "/", zenodo: "https://zenodo.org/", @@ -48,6 +59,7 @@ export let properties: EnvProperties = { fp7Guidlines: "https://www.openaire.eu/open-access-in-fp7-seventh-research-framework-programme", h2020Guidlines: "https://www.openaire.eu/oa-publications/h2020/open-access-in-horizon-2020", ercGuidlines: "http://erc.europa.eu/sites/default/files/document/file/ERC_Open_Access_Guidelines-revised_2014.pdf", + // to here helpdesk: "https://www.openaire.eu/support/helpdesk", helpdeskEmail: "helpdesk@openaire.eu", utilsService: "http://dl170.madgik.di.uoa.gr:8000", @@ -65,6 +77,7 @@ export let properties: EnvProperties = { cacheUrl: "http://dl170.madgik.di.uoa.gr:3000/get?url=", + monitorServiceAPIURL: "http://duffy.di.uoa.gr:19380/uoa-monitor-service", adminToolsAPIURL: "http://duffy.di.uoa.gr:19280/uoa-admin-tools/", adminToolsCommunity: "openaire", @@ -88,6 +101,7 @@ export let properties: EnvProperties = { searchLinkToOrp: "/search/other?orpId=", searchLinkToOrganization: "/search/organization?organizationId=", + searchLinkToAll: "/search/find/", searchLinkToPublications: "/search/find/publications", searchLinkToDataProviders: "/search/find/dataproviders", searchLinkToProjects: "/search/find/projects", @@ -130,3 +144,7 @@ export let properties: EnvProperties = { egiNotebookLink: "https://marketplace.eosc-portal.eu/services/egi-notebooks?q=EGI+Notebook" }; + +export let properties: EnvProperties = { + ...props, ...common, ...commonDev +} \ No newline at end of file diff --git a/explore/tsconfig.json b/explore/tsconfig.json index fc8b4c1a..f7c5a9bf 100644 --- a/explore/tsconfig.json +++ b/explore/tsconfig.json @@ -18,5 +18,8 @@ "es2018", "dom" ] - } + }, +// "angularCompilerOptions": { +// "strictTemplates": true +// } } diff --git a/services/utils-service/properties.file b/services/utils-service/properties.file index ed2c1d79..4f43d8fc 100644 --- a/services/utils-service/properties.file +++ b/services/utils-service/properties.file @@ -1,4 +1,4 @@ -userInfoUrl = http://mpagasas.di.uoa.gr:8080/login-service/userInfo +userInfoUrl = http://mpagasas.di.uoa.gr:19080/login-service/userInfo ssl = false localPath = true # photo size in KB