From 8bdf17809928771ffd71fa334c005c56358864b4 Mon Sep 17 00:00:00 2001 From: "argiro.kokogiannaki" Date: Mon, 12 Feb 2018 11:41:40 +0000 Subject: [PATCH] Addind Search Pages| linking| deposit | use properties | remove not useful pages | mockups for main page, my communities | complete search queries in community dashboard page git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-connect-portal/trunk@50681 d315682c-612b-4755-9ff5-7f18f6832af3 --- package.json | 2 +- src/app/app-routing.module.ts | 52 +++ src/app/app.component.ts | 81 +++- src/app/app.module.ts | 54 +-- .../claimsAdmin/claimsAdmin-routing.module.ts | 4 +- .../claimsByToken-routing.module.ts | 4 +- .../directLinking-routing.module.ts | 4 +- .../claims/linking/linking-routing.module.ts | 4 +- .../myClaims/myClaims-routing.module.ts | 4 +- .../communities/communities.component.html | 73 ++- src/app/communities/communities.component.ts | 35 +- src/app/community/community.component.html | 172 +++---- src/app/community/community.component.ts | 19 +- src/app/community/community.service.ts | 35 +- .../depositBySubjectResult-routing.module.ts | 4 +- .../depositDatasets-routing.module.ts | 4 +- .../depositDatasetsResults-routing.module.ts | 4 +- .../depositPublications-routing.module.ts | 4 +- ...epositPublicationsResult-routing.module.ts | 4 +- src/app/home/home.component.html | 38 -- src/app/home/home.component.ts | 174 -------- src/app/home/home.module.ts | 36 -- .../dataProvider-routing.module.ts | 4 +- .../dataset/dataset-routing.module.ts | 4 +- .../organization-routing.module.ts | 4 +- .../project/project-routing.module.ts | 4 +- .../publication/publication-routing.module.ts | 4 +- .../communities-routing.module.ts} | 6 +- .../my-communities/communities.component.html | 81 ++++ .../my-communities/communities.component.ts | 65 +++ src/app/my-communities/communities.module.ts | 28 ++ ...ancedSearchDataProviders-routing.module.ts | 17 - .../advancedSearchDataProviders.component.ts | 14 - .../advancedSearchDataProviders.module.ts | 24 - .../advancedSearchDatasets-routing.module.ts | 3 +- ...ancedSearchOrganizations-routing.module.ts | 17 - .../advancedSearchOrganizations.component.ts | 16 - .../advancedSearchOrganizations.module.ts | 27 -- .../advancedSearchProjects-routing.module.ts | 17 - .../advancedSearchProjects.component.ts | 13 - .../advanced/advancedSearchProjects.module.ts | 26 -- ...vancedSearchPublications-routing.module.ts | 3 +- .../compatibleDataProviders-routing.module.ts | 17 - .../compatibleDataProviders.component.ts | 16 - .../compatibleDataProviders.module.ts | 26 -- ...atibleDataProvidersTable-routing.module.ts | 17 - .../compatibleDataProvidersTable.component.ts | 193 -------- .../compatibleDataProvidersTable.module.ts | 27 -- .../entityRegistries-routing.module.ts | 17 - .../entityRegistries.component.ts | 16 - .../dataProviders/entityRegistries.module.ts | 24 - .../entityRegistriesTable-routing.module.ts | 17 - .../entityRegistriesTable.component.ts | 202 --------- .../entityRegistriesTable.module.ts | 24 - .../dataProviders/journals-routing.module.ts | 17 - .../dataProviders/journals.component.ts | 14 - .../dataProviders/journals.module.ts | 22 - .../journalsTable-routing.module.ts | 17 - .../dataProviders/journalsTable.component.ts | 188 -------- .../dataProviders/journalsTable.module.ts | 27 -- .../searchPageTableView.component.ts | 7 +- .../searchDataProviders-routing.module.ts | 3 +- .../simple/searchDatasets-routing.module.ts | 8 +- .../simple/searchDatasets.component.ts | 21 +- .../searchOrganizations-routing.module.ts | 3 +- .../simple/searchProjects-routing.module.ts | 3 +- .../searchPublications-routing.module.ts | 3 +- .../simple/searchPublications.component.ts | 18 +- .../simple/searchSoftware-routing.module.ts | 5 +- .../simple/searchSoftware.component.ts | 19 +- src/app/utils/properties.ts | 419 +----------------- src/assets/chart.png | Bin 0 -> 41783 bytes src/assets/connect-custom.css | 21 + src/assets/discover-custom.css | 34 -- src/assets/env-properties.json | 93 ++++ src/assets/logo-large-connect.png | Bin 0 -> 82220 bytes src/assets/logo-small-connect.png | Bin 0 -> 21069 bytes src/assets/pub-per-pr.png | Bin 0 -> 26456 bytes src/assets/stats1.png | Bin 0 -> 11913 bytes src/index.html | 1 + 80 files changed, 736 insertions(+), 1991 deletions(-) create mode 100644 src/app/app-routing.module.ts delete mode 100644 src/app/home/home.component.html delete mode 100644 src/app/home/home.component.ts delete mode 100644 src/app/home/home.module.ts rename src/app/{home/home-routing.module.ts => my-communities/communities-routing.module.ts} (50%) create mode 100644 src/app/my-communities/communities.component.html create mode 100644 src/app/my-communities/communities.component.ts create mode 100644 src/app/my-communities/communities.module.ts delete mode 100644 src/app/searchPages/advanced/advancedSearchDataProviders-routing.module.ts delete mode 100644 src/app/searchPages/advanced/advancedSearchDataProviders.component.ts delete mode 100644 src/app/searchPages/advanced/advancedSearchDataProviders.module.ts delete mode 100644 src/app/searchPages/advanced/advancedSearchOrganizations-routing.module.ts delete mode 100644 src/app/searchPages/advanced/advancedSearchOrganizations.component.ts delete mode 100644 src/app/searchPages/advanced/advancedSearchOrganizations.module.ts delete mode 100644 src/app/searchPages/advanced/advancedSearchProjects-routing.module.ts delete mode 100644 src/app/searchPages/advanced/advancedSearchProjects.component.ts delete mode 100644 src/app/searchPages/advanced/advancedSearchProjects.module.ts delete mode 100644 src/app/searchPages/dataProviders/compatibleDataProviders-routing.module.ts delete mode 100644 src/app/searchPages/dataProviders/compatibleDataProviders.component.ts delete mode 100644 src/app/searchPages/dataProviders/compatibleDataProviders.module.ts delete mode 100644 src/app/searchPages/dataProviders/compatibleDataProvidersTable-routing.module.ts delete mode 100644 src/app/searchPages/dataProviders/compatibleDataProvidersTable.component.ts delete mode 100644 src/app/searchPages/dataProviders/compatibleDataProvidersTable.module.ts delete mode 100644 src/app/searchPages/dataProviders/entityRegistries-routing.module.ts delete mode 100644 src/app/searchPages/dataProviders/entityRegistries.component.ts delete mode 100644 src/app/searchPages/dataProviders/entityRegistries.module.ts delete mode 100644 src/app/searchPages/dataProviders/entityRegistriesTable-routing.module.ts delete mode 100644 src/app/searchPages/dataProviders/entityRegistriesTable.component.ts delete mode 100644 src/app/searchPages/dataProviders/entityRegistriesTable.module.ts delete mode 100644 src/app/searchPages/dataProviders/journals-routing.module.ts delete mode 100644 src/app/searchPages/dataProviders/journals.component.ts delete mode 100644 src/app/searchPages/dataProviders/journals.module.ts delete mode 100644 src/app/searchPages/dataProviders/journalsTable-routing.module.ts delete mode 100644 src/app/searchPages/dataProviders/journalsTable.component.ts delete mode 100644 src/app/searchPages/dataProviders/journalsTable.module.ts create mode 100644 src/assets/chart.png create mode 100644 src/assets/connect-custom.css create mode 100644 src/assets/env-properties.json create mode 100644 src/assets/logo-large-connect.png create mode 100644 src/assets/logo-small-connect.png create mode 100644 src/assets/pub-per-pr.png create mode 100644 src/assets/stats1.png diff --git a/package.json b/package.json index cd9024c..f6b8273 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ ], "scripts": { "ng": "ng", - "start": "PORT=5000 ng serve --disable-host-check --host 0.0.0.0", + "start": " ng serve --disable-host-check --host 0.0.0.0", "start:dynamic": "PORT=5000 npm run build:dynamic && npm run serve:dynamic", "start:static": "npm run build:static && npm run serve:static", "build": "ng build", diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts new file mode 100644 index 0000000..d918833 --- /dev/null +++ b/src/app/app-routing.module.ts @@ -0,0 +1,52 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + + +import {EnvironmentSpecificResolver, EnvironmentSpecificService} from 'ng-openaire-library'; +import {NavigationBarModule, FeedbackModule, BottomModule, CookieLawModule, ErrorModule} from 'ng-openaire-library'; + +import { OpenaireErrorPageComponent } from './error/errorPage.component'; + +const routes: Routes = [ + { path: '', loadChildren: './communities/communities.module#CommunitiesModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, +{ path: 'community', loadChildren: './community/community.module#CommunityModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'communities', loadChildren: './communities/communities.module#CommunitiesModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'my-communities', loadChildren: './my-communities/communities.module#CommunitiesModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + + { path: 'search/publication', loadChildren: './landingPages/publication/libPublication.module#LibPublicationModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'search/dataset', loadChildren: './landingPages/dataset/libDataset.module#LibDatasetModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'search/software', loadChildren: './landingPages/software/libSoftware.module#LibSoftwareModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'search/project', loadChildren: './landingPages/project/libProject.module#LibProjectModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'search/dataprovider', loadChildren: '././landingPages/dataProvider/libDataProvider.module#LibDataProviderModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'search/organization', loadChildren: './landingPages/organization/libOrganization.module#LibOrganizationModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'participate/deposit-datasets', loadChildren: './deposit/datasets/depositDatasets.module#LibDepositDatasetsModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'participate/deposit-datasets-result', loadChildren: './deposit/datasets/depositDatasetsResults.module#LibDepositDatasetsResultsModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'participate/deposit-subject-result', loadChildren: './deposit/datasets/depositBySubjectResults.module#LibDepositBySubjectResultsModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'participate/deposit-publications', loadChildren: './deposit/publications/depositPublications.module#LibDepositPublicationsModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'participate/deposit-publications-result', loadChildren: './deposit/publications/depositPublicationsResults.module#LibDepositPublicationsResultsModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'search/find', loadChildren: './searchPages/find/libSearch.module#LibMainSearchModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'search/find/publications', loadChildren: './searchPages/simple/searchPublications.module#LibSearchPublicationsModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'search/find/datasets', loadChildren: './searchPages/simple/searchDatasets.module#LibSearchDatasetsModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'search/find/software', loadChildren: './searchPages/simple/searchSoftware.module#LibSearchSoftwareModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'search/find/projects', loadChildren: './searchPages/simple/searchProjects.module#LibSearchProjectsModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'search/find/dataproviders', loadChildren: './searchPages/simple/searchDataProviders.module#LibSearchDataProvidersModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'search/find/organizations', loadChildren: './searchPages/simple/searchOrganizations.module#LibSearchOrganizationsModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'search/advanced/publications', loadChildren: './searchPages/advanced/advancedSearchPublications.module#LibAdvancedSearchPublicationsModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'search/advanced/datasets', loadChildren: './searchPages/advanced/advancedSearchDatasets.module#LibAdvancedSearchDatasetsModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'search/advanced/software', loadChildren: './searchPages/advanced/advancedSearchSoftware.module#LibAdvancedSearchSoftwareModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'project-report', loadChildren: './landingPages/htmlProjectReport/libHtmlProjectReport.module#LibHtmlProjectReportModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'myclaims', loadChildren: './claims/myClaims/myClaims.module#LibMyClaimsModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'participate/claim', loadChildren: './claims/linking/linkingGeneric.module#LibLinkingGenericModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'participate/direct-claim', loadChildren: './claims/directLinking/directLinking.module#LibDirectLinkingModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'reload', loadChildren: './reload/libReload.module#LibReloadModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'user-info', loadChildren: './login/libUser.module#LibUserModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'error', component: OpenaireErrorPageComponent, resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: '**',pathMatch: 'full',component: OpenaireErrorPageComponent, resolve: { envSpecific: EnvironmentSpecificResolver }} +]; + +@NgModule({ + imports: [RouterModule.forRoot(routes)], + exports: [RouterModule], + providers: [EnvironmentSpecificResolver, EnvironmentSpecificService] +}) +export class AppRoutingModule { } diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 5ae50da..a9ac663 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -1,6 +1,10 @@ import { Component, Directive, ElementRef, Renderer, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core'; import {Observable} from 'rxjs/Observable'; -import { Properties} from './utils/properties'; +import {ActivatedRoute} from '@angular/router'; + +import {MenuItem, RootMenuItem, EnvironmentSpecificService, EnvProperties} from 'ng-openaire-library'; + + @Component({ //changeDetection: ChangeDetectionStrategy.Default, //encapsulation: ViewEncapsulation.Emulated, @@ -9,7 +13,8 @@ import { Properties} from './utils/properties'; `], template: ` - +
@@ -30,22 +35,80 @@ import { Properties} from './utils/properties'; }) export class AppComponent { isClient:boolean = false; - feedbackmail:string = Properties.getFeedbackMail(); - userMenuItems = [ - ]; - menuItems = [ -]; - loginUrl = Properties.getLoginURL(); - logOutUrl = Properties.getLogoutURL(); + userMenuItems:MenuItem[] =[]; + + + menuItems:RootMenuItem []=[]; + + feedbackmail:string + properties:EnvProperties; + community: {id:string, name:string, logoUrl:string}; + constructor( private route: ActivatedRoute, private propertiesService:EnvironmentSpecificService) { + } + ngOnInit() { + this.route.queryParams.subscribe(data => { + if(data['community'] && data['community']!=""){ + this.community = {id: data['community'], name: "Egi Federation", logoUrl:"https:\/\/egi.eu/wp-content/uploads/2016/05/cropped-logo_site-1-300x300.png"}; + + this.userMenuItems = [ new MenuItem("","My profile","","",false,[],[],{}), + new MenuItem("","My claims","","/myclaims",false,[],["/myclaims"],{}), + new MenuItem("","Manage all claims","","/claims",true,[],["/claims"],{}),] + + this.menuItems= [{ + rootItem: new MenuItem("dashboard","Dashboard","","/community",false,[],[],{community:"egi||EGI Federation"}), + items: [] + }, + {rootItem: new MenuItem("search","Search","","",false,[],[],{}), + items: [new MenuItem("","Publications","","/search/find/publications",false,["publication"],["/search/find/publications"],{community: "%22egi%7C%7CEGI%20Federation%22"}), + new MenuItem("","Research Data","","/search/find/datasets",false,["dataset"],["/search/find/datasets"],{community: "%22egi%7C%7CEGI%20Federation%22"}), + new MenuItem("","Software","","/search/find/software",false,["software"],["/search/find/software"],{community: "%22egi%7C%7CEGI%20Federation%22"}), + new MenuItem("","Projects","","/search/find/projects/",false,["project"],["/search/find/projects"],{community: "%22egi%7C%7CEGI%20Federation%22"}), + new MenuItem("","Content Providers","","/search/find/dataproviders",false,["datasource"],["/search/find/dataproviders"],{community: "%22egi%7C%7CEGI%20Federation%22"}), + new MenuItem("","Organizations","","/search/find/organizations/",false,["organization"],["/search/find/organizations"],{community: "%22egi%7C%7CEGI%20Federation%22"}), + ]}, + { + rootItem: new MenuItem("share","Share","","",false,[],["/participate/deposit-publications","/participate/deposit-datasets"],{community:"egi||EGI Federation"}), + items: [new MenuItem("","Publications","","/participate/deposit-publications",false,["publication"],["/participate/deposit-publications"],{community:"egi||EGI Federation"}), + new MenuItem("","Research Data","","/participate/deposit-datasets",false,["dataset"],["/participate/deposit-datasets"],{community:"egi||EGI Federation"})] + }, + { + rootItem: new MenuItem("link","Link","","/participate/claim",false,[],["/participate/claim"],{community:"egi||EGI Federation"}), + items: [] + } + ]; + }else{ + this.community = null; + this.userMenuItems = [ new MenuItem("","My profile","","",false,[],[],{}), + new MenuItem("","My claims","","/myclaims",false,[],["/myclaims"],{}), + new MenuItem("","Manage all claims","","/claims",true,[],["/claims"],{}),]; + this.menuItems= [ + { + rootItem: new MenuItem("communities","Communities","","/",false,[],[],{}), + items: [] + } + ]; + } + + }); if (typeof document !== 'undefined') { try{ this.isClient = true; }catch (e) { } } + this.propertiesService.loadEnvironment() + .then(es => { + this.propertiesService.setEnvProperties(es); + this.properties = this.propertiesService.envSpecific; + this.feedbackmail = this.properties.feedbackmail; + }, error => { + console.log("App couldn't fetch properties"); + console.log(error); + + }); } } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index dd883be..26b5f2c 100755 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -8,9 +8,10 @@ import { HttpModule } from '@angular/http'; import { RouterModule } from '@angular/router'; import { AppComponent } from './app.component'; -import {NavigationBarModule, FeedbackModule, BottomModule, CookieLawModule, ErrorModule} from 'ng-openaire-library'; +import {NavigationBarModule, FeedbackModule, BottomModule, CookieLawModule, ErrorModule, EnvironmentSpecificResolver} from 'ng-openaire-library'; import { OpenaireErrorPageComponent } from './error/errorPage.component'; +import { AppRoutingModule } from './app-routing.module'; import { CommunityService } from './community/community.service'; @@ -25,57 +26,12 @@ ErrorModule, NavigationBarModule, FeedbackModule, BottomModule, CookieLawModule, BrowserModule.withServerTransition({appId: 'my-app'}), - RouterModule.forRoot([ - // { path: '', loadChildren: './community/community.module#CommunityModule'}, - { path: '', loadChildren: './home/home.module#HomeModule'}, - { path: 'home', loadChildren: './home/home.module#HomeModule'}, - { path: 'community', loadChildren: './community/community.module#CommunityModule'}, - { path: 'communities', loadChildren: './communities/communities.module#CommunitiesModule'}, - { path: 'search/publication', loadChildren: './landingPages/publication/libPublication.module#LibPublicationModule' }, - { path: 'search/dataset', loadChildren: './landingPages/dataset/libDataset.module#LibDatasetModule' }, - { path: 'search/software', loadChildren: './landingPages/software/libSoftware.module#LibSoftwareModule' }, - { path: 'search/project', loadChildren: './landingPages/project/libProject.module#LibProjectModule' }, - { path: 'search/dataprovider', loadChildren: '././landingPages/dataProvider/libDataProvider.module#LibDataProviderModule' }, - { path: 'search/organization', loadChildren: './landingPages/organization/libOrganization.module#LibOrganizationModule' }, - { path: 'participate/deposit-datasets', loadChildren: './deposit/datasets/depositDatasets.module#LibDepositDatasetsModule' }, - { path: 'participate/deposit-datasets-result', loadChildren: './deposit/datasets/depositDatasetsResults.module#LibDepositDatasetsResultsModule' }, - { path: 'participate/deposit-subject-result', loadChildren: './deposit/datasets/depositBySubjectResults.module#LibDepositBySubjectResultsModule' }, - { path: 'participate/deposit-publications', loadChildren: './deposit/publications/depositPublications.module#LibDepositPublicationsModule' }, - { path: 'participate/deposit-publications-result', loadChildren: './deposit/publications/depositPublicationsResults.module#LibDepositPublicationsResultsModule' }, - { path: 'search/find', loadChildren: './searchPages/find/libSearch.module#LibMainSearchModule' }, - { path: 'search/find/publications', loadChildren: './searchPages/simple/searchPublications.module#LibSearchPublicationsModule' }, - { path: 'search/find/datasets', loadChildren: './searchPages/simple/searchDatasets.module#LibSearchDatasetsModule' }, - { path: 'search/find/software', loadChildren: './searchPages/simple/searchSoftware.module#LibSearchSoftwareModule' }, - { path: 'search/find/projects', loadChildren: './searchPages/simple/searchProjects.module#LibSearchProjectsModule' }, - { path: 'search/find/dataproviders', loadChildren: './searchPages/simple/searchDataProviders.module#LibSearchDataProvidersModule' }, - { path: 'search/find/organizations', loadChildren: './searchPages/simple/searchOrganizations.module#LibSearchOrganizationsModule' }, - { path: 'search/content-providers', loadChildren: './searchPages/dataProviders/compatibleDataProviders.module#LibCompatibleDataProvidersModule' }, - { path: 'search/content-providers-table', loadChildren: './searchPages/dataProviders/compatibleDataProvidersTable.module#CompatibleDataProvidersTableModule' }, - { path: 'search/entity-registries', loadChildren: './searchPages/dataProviders/entityRegistries.module#LibEntityRegistriesModule' }, - { path: 'search/entity-registries-table', loadChildren: './searchPages/dataProviders/entityRegistriesTable.module#EntityRegistriesTableModule' }, - { path: 'search/journals', loadChildren: './searchPages/dataProviders/journals.module#LibJournalsModule' }, - { path: 'search/journals-table', loadChildren: './searchPages/dataProviders/journalsTable.module#JournalsTableModule' }, - { path: 'search/advanced/publications', loadChildren: './searchPages/advanced/advancedSearchPublications.module#LibAdvancedSearchPublicationsModule' }, - { path: 'search/advanced/datasets', loadChildren: './searchPages/advanced/advancedSearchDatasets.module#LibAdvancedSearchDatasetsModule' }, - { path: 'search/advanced/software', loadChildren: './searchPages/advanced/advancedSearchSoftware.module#LibAdvancedSearchSoftwareModule' }, - { path: 'search/advanced/organizations', loadChildren: './searchPages/advanced/advancedSearchOrganizations.module#LibAdvancedSearchOrganizationsModule' }, - { path: 'search/advanced/dataproviders', loadChildren: './searchPages/advanced/advancedSearchDataProviders.module#LibAdvancedSearchDataProvidersModule' }, - { path: 'search/advanced/projects', loadChildren: './searchPages/advanced/advancedSearchProjects.module#LibAdvancedSearchProjectsModule' }, - { path: 'project-report', loadChildren: './landingPages/htmlProjectReport/libHtmlProjectReport.module#LibHtmlProjectReportModule' }, - { path: 'myclaims', loadChildren: './claims/myClaims/myClaims.module#LibMyClaimsModule' }, - { path: 'claims', loadChildren: './claims/claimsAdmin/claimsAdmin.module#LibClaimsAdminModule' }, - { path: 'participate/claim', loadChildren: './claims/linking/linkingGeneric.module#LibLinkingGenericModule' }, - { path: 'participate/direct-claim', loadChildren: './claims/directLinking/directLinking.module#LibDirectLinkingModule' }, - { path: 'claims-project-manager', loadChildren: './claims/claimsByToken/claimsByToken.module#LibClaimsByTokenModule' }, - { path: 'reload', loadChildren: './reload/libReload.module#LibReloadModule' }, - { path: 'user-info', loadChildren: './login/libUser.module#LibUserModule' }, - { path: 'error', component: OpenaireErrorPageComponent }, - { path: '**',pathMatch: 'full',component: OpenaireErrorPageComponent } - ]), + AppRoutingModule + ], declarations: [ AppComponent, OpenaireErrorPageComponent], exports: [ AppComponent ], - providers:[ CommunityService ], + providers:[EnvironmentSpecificResolver , CommunityService ], bootstrap: [AppComponent] }) // diff --git a/src/app/claims/claimsAdmin/claimsAdmin-routing.module.ts b/src/app/claims/claimsAdmin/claimsAdmin-routing.module.ts index cd92c4e..ed7b539 100644 --- a/src/app/claims/claimsAdmin/claimsAdmin-routing.module.ts +++ b/src/app/claims/claimsAdmin/claimsAdmin-routing.module.ts @@ -2,13 +2,13 @@ import { NgModule } from '@angular/core'; import { RouterModule } from '@angular/router'; import { OpenaireClaimsAdminComponent } from './claimsAdmin.component'; import{ PreviousRouteRecorder, IsRouteEnabled ,AdminLoginGuard} from 'ng-openaire-library'; - +import {Properties} from '../../utils/properties'; @NgModule({ imports: [ RouterModule.forChild([ { path: '', component: OpenaireClaimsAdminComponent, canActivate: [IsRouteEnabled, AdminLoginGuard], - data: {redirect: '/error'}, canDeactivate: [PreviousRouteRecorder]}]) + data: {redirect: '/error', api: Properties.adminToolsAPIURL, community :Properties.adminToolsCommunity}, canDeactivate: [PreviousRouteRecorder]}]) ] }) export class ClaimsAdminRoutingModule { } diff --git a/src/app/claims/claimsByToken/claimsByToken-routing.module.ts b/src/app/claims/claimsByToken/claimsByToken-routing.module.ts index 91c2961..2a0698a 100644 --- a/src/app/claims/claimsByToken/claimsByToken-routing.module.ts +++ b/src/app/claims/claimsByToken/claimsByToken-routing.module.ts @@ -2,12 +2,12 @@ import { NgModule } from '@angular/core'; import { RouterModule } from '@angular/router'; import { OpenaireClaimsByTokenComponent } from './claimsByToken.component'; import{ PreviousRouteRecorder, IsRouteEnabled ,LoginGuard} from 'ng-openaire-library'; - +import {Properties} from '../../utils/properties'; @NgModule({ imports: [ RouterModule.forChild([ { path: '', component: OpenaireClaimsByTokenComponent, canActivate: [IsRouteEnabled, LoginGuard], - data: {redirect: '/error'}, canDeactivate: [PreviousRouteRecorder]}]) + data: {redirect: '/error', api: Properties.adminToolsAPIURL, community :Properties.adminToolsCommunity}, canDeactivate: [PreviousRouteRecorder]}]) ] }) export class ClaimsByTokenRoutingModule { } diff --git a/src/app/claims/directLinking/directLinking-routing.module.ts b/src/app/claims/directLinking/directLinking-routing.module.ts index f73f859..1aec2fe 100644 --- a/src/app/claims/directLinking/directLinking-routing.module.ts +++ b/src/app/claims/directLinking/directLinking-routing.module.ts @@ -3,12 +3,12 @@ import { RouterModule } from '@angular/router'; import { OpenaireDirectLinkingComponent } from './directLinking.component'; import{ PreviousRouteRecorder, IsRouteEnabled, LoginGuard} from 'ng-openaire-library'; - +import {Properties} from '../../utils/properties'; @NgModule({ imports: [ RouterModule.forChild([ { path: '', component: OpenaireDirectLinkingComponent, canActivate: [IsRouteEnabled, LoginGuard], data: { - redirect: '/error' + redirect: '/error', api: Properties.adminToolsAPIURL, community :Properties.adminToolsCommunity }, canDeactivate: [PreviousRouteRecorder]}, ]) diff --git a/src/app/claims/linking/linking-routing.module.ts b/src/app/claims/linking/linking-routing.module.ts index 4a48405..70cfe73 100644 --- a/src/app/claims/linking/linking-routing.module.ts +++ b/src/app/claims/linking/linking-routing.module.ts @@ -3,12 +3,12 @@ import { RouterModule } from '@angular/router'; import { OpenaireLinkingComponent } from './linkingGeneric.component'; import{ PreviousRouteRecorder, IsRouteEnabled, LoginGuard} from 'ng-openaire-library'; - +import {Properties} from '../../utils/properties'; @NgModule({ imports: [ RouterModule.forChild([ { path: '', component: OpenaireLinkingComponent, canActivate: [IsRouteEnabled, LoginGuard], data: { - redirect: '/error' + redirect: '/error', api: Properties.adminToolsAPIURL, community :Properties.adminToolsCommunity }, canDeactivate: [PreviousRouteRecorder]}, ]) diff --git a/src/app/claims/myClaims/myClaims-routing.module.ts b/src/app/claims/myClaims/myClaims-routing.module.ts index 665e3b1..9a2c678 100644 --- a/src/app/claims/myClaims/myClaims-routing.module.ts +++ b/src/app/claims/myClaims/myClaims-routing.module.ts @@ -3,12 +3,12 @@ import { RouterModule } from '@angular/router'; import {OpenaireMyClaimsComponent } from './myClaims.component'; import{ PreviousRouteRecorder, IsRouteEnabled, LoginGuard} from 'ng-openaire-library'; - +import {Properties} from '../../utils/properties'; @NgModule({ imports: [ RouterModule.forChild([ { path: '', component: OpenaireMyClaimsComponent, canActivate: [IsRouteEnabled, LoginGuard], - data: {redirect: '/error'}, canDeactivate: [PreviousRouteRecorder]}]) + data: {redirect: '/error', api: Properties.adminToolsAPIURL, community :Properties.adminToolsCommunity}, canDeactivate: [PreviousRouteRecorder]}]) ] }) export class MyClaimsRoutingModule { } diff --git a/src/app/communities/communities.component.html b/src/app/communities/communities.component.html index 7a5d9ef..a233010 100644 --- a/src/app/communities/communities.component.html +++ b/src/app/communities/communities.component.html @@ -1,5 +1,72 @@ -
-
Communities goes here..
+
+
+
+
+
+
+
+
+
+

Welcome to Research Community Dashboard!

+

Use a trusted partner to share, link, disseminate and monitor your research.

+
+
+
+
-
+
+
+
+
+
+
+ +
+
+
+ A logo goes here +
+
+

+ EGI Federation

+

EGI is a federated e-Infrastructure set up to provide advanced computing services for research and innovation. + +The EGI e-infrastructure is publicly-funded and comprises hundreds of data centres and cloud providers spread across Europe and worldwide.

+ Subscribe +
+
+
+ + +
+
+
+ A logo goes here +
+
+

Environment and Economy Research Community

+

the national/EU node of the United Nations Sustainable Development Solutions Network sets out to build an infrastructure to gather all publications, data (in repositories and in Public Sector Information portals), and link them to EU and national funding

+ Subscribe +
+
+
+ +
+
+
+ A logo goes here +
+
+

Marine environmental science

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +

+ Subscribe +
+
+
+ +
+
diff --git a/src/app/communities/communities.component.ts b/src/app/communities/communities.component.ts index 480147f..2659669 100644 --- a/src/app/communities/communities.component.ts +++ b/src/app/communities/communities.component.ts @@ -3,7 +3,7 @@ import {Observable} from 'rxjs/Observable'; import {ActivatedRoute, Router} from '@angular/router'; import {Location} from '@angular/common'; import "rxjs/add/observable/zip"; -import { Meta, MetaDefinition, ConfigurationService} from 'ng-openaire-library'; +import { Meta, MetaDefinition, ConfigurationService, EnvProperties} from 'ng-openaire-library'; import { ErrorCodes, RouterHelper, PiwikService} from 'ng-openaire-library'; import {Properties} from '../utils/properties'; @@ -18,7 +18,7 @@ export class CommunitiesComponent { public subfunders: any; public pageTitle = "OpenAIRE" - +properties:EnvProperties; constructor ( @@ -28,25 +28,30 @@ export class CommunitiesComponent { private config: ConfigurationService ) { - var description = "open access, research, scientific publication, European Commission, EC, FP7, ERC, Horizon 2020, H2020, search, projects "; + var description = "open access, research, scientific publication, European Commission, EC, FP7, ERC, Horizon 2020, H2020, search, projects "; - var title = "OpenAIRE"; + var title = "OpenAIRE"; - var url = Properties.getBaseLink()+this._router.url; - this._meta.setTitle(title); - this._meta.updateMeta("description", description); - this._meta.updateProperty("og:description", description); - this._meta.updateProperty("og:title", title); - this._meta.updateProperty("og:url", url); + this._meta.setTitle(title); + this._meta.updateMeta("description", description); + this._meta.updateProperty("og:description", description); + this._meta.updateProperty("og:title", title); - if(Properties.isPiwikTrackEnabled() && (typeof document !== 'undefined')){ - this.piwiksub = this._piwikService.trackView("OpenAIRE").subscribe(); - } - } + } - public ngOnInit() { + public ngOnInit() { + this.route.data + .subscribe((data: { envSpecific: EnvProperties }) => { + this.properties = data.envSpecific; + var url = data.envSpecific.baseLink+this._router.url + this._meta.updateProperty("og:url", url); + if(this.properties.enablePiwikTrack && (typeof document !== 'undefined')){ + this.piwiksub = this._piwikService.trackView("OpenAIRE").subscribe(); + } + + }); } public ngOnDestroy() { if(this.piwiksub){ diff --git a/src/app/community/community.component.html b/src/app/community/community.component.html index 7bcf684..d344165 100644 --- a/src/app/community/community.component.html +++ b/src/app/community/community.component.html @@ -5,26 +5,27 @@
Subscribe
-

the ATLAS community relies on thematic data archives (Pangaea) whose datasets are packages of datasets and related literature, aiming to link to different scientific domains

+

EGI is a federated e-Infrastructure set up to provide advanced computing services for research and innovation. The EGI e-infrastructure is publicly-funded and comprises hundreds of data centres and cloud providers spread across Europe and worldwide.

Nature Life science Environment

Curated by: Tom Created: 26-01-2018

@@ -60,151 +61,118 @@
- {{item.result["metadata"]["oaf:entity"]["oaf:result"]["title"]["content"]}} + + + {{item.title}}
-
{{item.result["metadata"]["oaf:entity"]["oaf:result"]["bestaccessright"]["classid"]}}
+
{{item.bestaccessright}}
-
-
{{item1["content"]}}
-
-
{{item.result["metadata"]["oaf:entity"]["oaf:result"]["dateofacceptance"]}}
-
{{item.result["metadata"]["oaf:entity"]["oaf:result"]["description"]}}
+ + {{item1["content"]}}, + + + + +
{{item.dateofacceptance}}
+
-
-
-
-
- Aaltodoc Publication Archive -
-
Aalto University
-
IR Data OpenAIRE 3.0
- 12469 datasets -
-
-
-
-
-
- Cambridge Server -
-
Cambridge Uviversity
-
IR Literature OpenAIRE 2.0
- 4567 publications -
-
-
-
+

Most recent research data

- - -
- --> - -
-
-
-
- Swiss National Science Foundation -
-
Switzerland
-
OA mandate
47.509 publications
-
-
-
-
-
- Ministry of Education, Science and Technological Development of Republic of Serbia -
-
Serbia
-
7.942 publicatios
-
-
+
No results found
+ +
+
+ + View all + +
+ + +

Most recent software

- -
- --> - - -
-
-
-
- Swiss National Science Foundation -
-
Switzerland
-
OA mandate
47.509 publications
-
-
-
-
-
- Ministry of Education, Science and Technological Development of Republic of Serbia -
-
Serbia
-
7.942 publicatios
-
-
+ +
+
+ + View all + +
+ + +

Publications through the years

- stats + stats
-

Word cloud

- stats +

Publications per project

+ stats
diff --git a/src/app/community/community.component.ts b/src/app/community/community.component.ts index 6afff5b..f9da344 100644 --- a/src/app/community/community.component.ts +++ b/src/app/community/community.component.ts @@ -5,7 +5,7 @@ import {Location} from '@angular/common'; import "rxjs/add/observable/zip"; import { Meta, MetaDefinition, ConfigurationService} from 'ng-openaire-library'; -import { ErrorCodes, RouterHelper, PiwikService} from 'ng-openaire-library'; +import { ErrorCodes, RouterHelper, PiwikService, EnvProperties} from 'ng-openaire-library'; import {Properties} from '../utils/properties'; import {CommunityService} from "./community.service"; @@ -27,6 +27,8 @@ export class CommunityComponent { public publicationsInfo=[]; public researchDataInfo=[]; public softwareInfo=[]; + params = {community: encodeURIComponent('"egi||EGI Federation"')}; + properties:EnvProperties; //public publicationsInfo: PublicationInfo[] = []; @@ -42,21 +44,26 @@ export class CommunityComponent { var title = "OpenAIRE"; - var url = Properties.getBaseLink()+this._router.url; this._meta.setTitle(title); this._meta.updateMeta("description", description); this._meta.updateProperty("og:description", description); this._meta.updateProperty("og:title", title); - this._meta.updateProperty("og:url", url); - if(Properties.isPiwikTrackEnabled() && (typeof document !== 'undefined')){ - this.piwiksub = this._piwikService.trackView("OpenAIRE").subscribe(); - } } public ngOnInit() { + this.route.data + .subscribe((data: { envSpecific: EnvProperties }) => { + this.properties = data.envSpecific; + var url = data.envSpecific.baseLink+this._router.url + this._meta.updateProperty("og:url", url); + if(this.properties.enablePiwikTrack && (typeof document !== 'undefined')){ + this.piwiksub = this._piwikService.trackView("OpenAIRE").subscribe(); + } + + }); this._communityService.getNumberOfPublications().subscribe( publications => { this.publications = publications; diff --git a/src/app/community/community.service.ts b/src/app/community/community.service.ts index 775de59..4e069ec 100644 --- a/src/app/community/community.service.ts +++ b/src/app/community/community.service.ts @@ -17,8 +17,13 @@ export class CommunityService { // Most recent publications getPublicationsInfo(){ - return this.http.get('http://rudie.di.uoa.gr:8080/dnet-functionality-services-2.0.0-SNAPSHOT/rest/v2/api/publications?fq=communityid exact "egi"&sortBy=resultdateofacceptance,descending&format=json') - .map(res => res.json()).map(res => res.results).do(res => {console.log(res)}); + return this.http.get('http://rudie.di.uoa.gr:8080/dnet-functionality-services-2.0.0-SNAPSHOT/rest/v2/api/publications?fq=communityid exact "egi"&sortBy=resultdateofacceptance,descending&format=json&size=5') + .map(res => res.json()).map(res => this.parse(res)).do(res => {console.log(res)}); + + } + getDatasetsInfo(){ + return this.http.get('http://rudie.di.uoa.gr:8080/dnet-functionality-services-2.0.0-SNAPSHOT/rest/v2/api/datasets?fq=communityid exact "egi"&sortBy=resultdateofacceptance,descending&format=json&size=5') + .map(res => res.json()).map(res => this.parse(res)).do(res => {console.log(res)}); } @@ -28,7 +33,7 @@ export class CommunityService { } getResearchDataInfo() { - return this.http.get('http://rudie.di.uoa.gr:8080/dnet-functionality-services-2.0.0-SNAPSHOT/rest/v2/api/datasets?fq=communityid exact "egi"&sortBy=resultdateofacceptance,descending&format=json') + return this.http.get('http://rudie.di.uoa.gr:8080/dnet-functionality-services-2.0.0-SNAPSHOT/rest/v2/api/datasets?fq=communityid exact "egi"&sortBy=resultdateofacceptance,descending&format=json&size=5') .map(res => res.json()).map(res => res.results).do(res => {console.log(res)}); } @@ -39,9 +44,31 @@ export class CommunityService { getSoftwareInfo() { return this.http.get('http://rudie.di.uoa.gr:8080/dnet-functionality-services-2.0.0-SNAPSHOT/rest/v2/api/software?fq=communityid exact "egi"&sortBy=resultdateofacceptance,descending&format=json') - .map(res => res.json()).map(res => res.results).do(res => {console.log(res)}); + .map(res => res.json()).map(res => this.parse(res)).do(res => {console.log(res)}); } + parse(res){ + var results =[]; + for(let item of res.results){ + var result= {}; + result["id"] = item.result["header"]["dri:objIdentifier"]; + result["title"] = item.result["metadata"]["oaf:entity"]["oaf:result"]["title"]["content"]; + result["bestaccessright"] = item.result["metadata"]["oaf:entity"]["oaf:result"]["bestaccessright"]["classid"]; + result["date"]=item.result["metadata"]["oaf:entity"]["oaf:result"]["dateofacceptance"]; + result["description"]= item.result["metadata"]["oaf:entity"]["oaf:result"]["description"]; + + result["authors"] = []; + if(Array.isArray(item.result["metadata"]["oaf:entity"]["oaf:result"]["creator"])){ + result["authors"] = item.result["metadata"]["oaf:entity"]["oaf:result"]["creator"]; + }else{ + result["authors"].push(item.result["metadata"]["oaf:entity"]["oaf:result"]["creator"]); + } + result["authors"] = result["authors"].slice(0,10); + + results.push(result); + } + return results; + } // getPublicationInfo(url: string) { // return this.http.get(url).map(res => res.json()).map(res => res.results).do(res => {console.log(res)}); // } diff --git a/src/app/deposit/datasets/depositBySubjectResult-routing.module.ts b/src/app/deposit/datasets/depositBySubjectResult-routing.module.ts index c5039b7..1009d1e 100644 --- a/src/app/deposit/datasets/depositBySubjectResult-routing.module.ts +++ b/src/app/deposit/datasets/depositBySubjectResult-routing.module.ts @@ -3,12 +3,12 @@ import { RouterModule } from '@angular/router'; import { OpenaireDepositBySubjectResultComponent } from './depositBySubjectResult.component'; import { FreeGuard,PreviousRouteRecorder,IsRouteEnabled} from 'ng-openaire-library'; - +import {Properties} from '../../utils/properties'; @NgModule({ imports: [ RouterModule.forChild([ { path: '', component: OpenaireDepositBySubjectResultComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { - redirect: '/error' + redirect: '/error', api: Properties.adminToolsAPIURL, community :Properties.adminToolsCommunity },canDeactivate: [PreviousRouteRecorder] } ]) diff --git a/src/app/deposit/datasets/depositDatasets-routing.module.ts b/src/app/deposit/datasets/depositDatasets-routing.module.ts index c5e3b1d..70d0080 100644 --- a/src/app/deposit/datasets/depositDatasets-routing.module.ts +++ b/src/app/deposit/datasets/depositDatasets-routing.module.ts @@ -3,12 +3,12 @@ import { RouterModule } from '@angular/router'; import { OpenaireDepositDatasetsComponent } from './depositDatasets.component'; import { FreeGuard,PreviousRouteRecorder,IsRouteEnabled} from 'ng-openaire-library'; - +import {Properties} from '../../utils/properties'; @NgModule({ imports: [ RouterModule.forChild([ { path: '', component: OpenaireDepositDatasetsComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { - redirect: '/error' + redirect: '/error', api: Properties.adminToolsAPIURL, community :Properties.adminToolsCommunity },canDeactivate: [PreviousRouteRecorder] } ]) diff --git a/src/app/deposit/datasets/depositDatasetsResults-routing.module.ts b/src/app/deposit/datasets/depositDatasetsResults-routing.module.ts index ab0eb90..b40575d 100644 --- a/src/app/deposit/datasets/depositDatasetsResults-routing.module.ts +++ b/src/app/deposit/datasets/depositDatasetsResults-routing.module.ts @@ -2,12 +2,12 @@ import { NgModule } from '@angular/core'; import { RouterModule } from '@angular/router'; import { OpenaireDepositDatasetsResultComponent } from './depositDatasetsResult.component'; import { FreeGuard,PreviousRouteRecorder,IsRouteEnabled} from 'ng-openaire-library'; - +import {Properties} from '../../utils/properties'; @NgModule({ imports: [ RouterModule.forChild([ { path: '', component: OpenaireDepositDatasetsResultComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { - redirect: '/error' + redirect: '/error', api: Properties.adminToolsAPIURL, community :Properties.adminToolsCommunity },canDeactivate: [PreviousRouteRecorder] } ]) diff --git a/src/app/deposit/publications/depositPublications-routing.module.ts b/src/app/deposit/publications/depositPublications-routing.module.ts index 3f27028..58607fc 100644 --- a/src/app/deposit/publications/depositPublications-routing.module.ts +++ b/src/app/deposit/publications/depositPublications-routing.module.ts @@ -2,12 +2,12 @@ import { NgModule } from '@angular/core'; import { RouterModule } from '@angular/router'; import { OpenaireDepositPublicationsComponent } from './depositPublications.component'; import { FreeGuard,PreviousRouteRecorder,IsRouteEnabled} from 'ng-openaire-library'; - +import {Properties} from '../../utils/properties'; @NgModule({ imports: [ RouterModule.forChild([ { path: '', component: OpenaireDepositPublicationsComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { - redirect: '/error' + redirect: '/error', api: Properties.adminToolsAPIURL, community :Properties.adminToolsCommunity }, canDeactivate: [PreviousRouteRecorder] } ]) diff --git a/src/app/deposit/publications/depositPublicationsResult-routing.module.ts b/src/app/deposit/publications/depositPublicationsResult-routing.module.ts index 645a9df..b049907 100644 --- a/src/app/deposit/publications/depositPublicationsResult-routing.module.ts +++ b/src/app/deposit/publications/depositPublicationsResult-routing.module.ts @@ -2,12 +2,12 @@ import { NgModule } from '@angular/core'; import { RouterModule } from '@angular/router'; import { OpenaireDepositPublicationsResultComponent } from './depositPublicationsResult.component'; import { FreeGuard,PreviousRouteRecorder,IsRouteEnabled} from 'ng-openaire-library'; - +import {Properties} from '../../utils/properties'; @NgModule({ imports: [ RouterModule.forChild([ { path: '', component: OpenaireDepositPublicationsResultComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { - redirect: '/error' + redirect: '/error', api: Properties.adminToolsAPIURL, community :Properties.adminToolsCommunity }, canDeactivate: [PreviousRouteRecorder] } ]) diff --git a/src/app/home/home.component.html b/src/app/home/home.component.html deleted file mode 100644 index ca69df5..0000000 --- a/src/app/home/home.component.html +++ /dev/null @@ -1,38 +0,0 @@ -
-
-
-
-
-
-
-
-
-

Welcome to Research Community Dashboard!

-

Use a trusted partner to share, link, disseminate and monitor your research.

-
-
-
-
- -
-
-
-
-
-
-
-
-
- A logo goes here -
-
-

Neuroinformatics Research Community

-

the France Life Imaging national infrastructure produces data images linking them with methods (software services) producing packages for the context.

- Subscribe -
-
-
- -
-
diff --git a/src/app/home/home.component.ts b/src/app/home/home.component.ts deleted file mode 100644 index f1bc8c3..0000000 --- a/src/app/home/home.component.ts +++ /dev/null @@ -1,174 +0,0 @@ -import {Component, Input, Output, EventEmitter, ViewChild, ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core'; -import {Observable} from 'rxjs/Observable'; -import {ActivatedRoute, Router} from '@angular/router'; -import {Location} from '@angular/common'; -import "rxjs/add/observable/zip"; -import { Meta, MetaDefinition, ConfigurationService} from 'ng-openaire-library'; - -import {SearchPublicationsService, SearchDataprovidersService, SearchProjectsService, SearchDatasetsService, SearchOrganizationsService, SearchFields} from 'ng-openaire-library'; -import { ErrorCodes, RouterHelper, NumberUtils, RefineFieldResultsService, PiwikService} from 'ng-openaire-library'; -import {Properties} from '../utils/properties'; - - -@Component({ - selector: 'home', - templateUrl: 'home.component.html', -}) -export class HomeComponent { - public piwiksub: any; - public subfunders: any; - - public pageTitle = "OpenAIRE" - public keyword:string = ""; - - public searchFields:SearchFields = new SearchFields(); - public errorCodes:ErrorCodes = new ErrorCodes(); - public routerHelper:RouterHelper = new RouterHelper(); - - public publicationsSize:any = null; - public datasetsSize:any = null; - public fundersSize:any = null; - public projectsSize:any = null; - public datasourcesSize:any = null; - - showPublications:boolean= false; - showDatasets:boolean= false; - showProjects:boolean= false; - showDataProviders:boolean= false; - -public subPub;public subData;public subProjects;public subOrg; public subDataPr; - - constructor ( - private route: ActivatedRoute, - private _router: Router, - private _searchPublicationsService: SearchPublicationsService, - private _searchDataprovidersService: SearchDataprovidersService, - private _searchProjectsService: SearchProjectsService, - private _searchDatasetsService: SearchDatasetsService, - private _searchOrganizationsService: SearchOrganizationsService, - private _refineFieldResultsService:RefineFieldResultsService, - private location: Location, private _meta: Meta,private _piwikService:PiwikService, - private config: ConfigurationService - ) { - - var description = "open access, research, scientific publication, European Commission, EC, FP7, ERC, Horizon 2020, H2020, search, projects "; - - var title = "OpenAIRE"; - - var url = Properties.getBaseLink()+this._router.url; - this._meta.setTitle(title); - this._meta.updateMeta("description", description); - this._meta.updateProperty("og:description", description); - this._meta.updateProperty("og:title", title); - this._meta.updateProperty("og:url", url); - - const entityOne = this.config.isEntityEnabled("publication"); - const entityTwo = this.config.isEntityEnabled("dataset"); - const entityThree = this.config.isEntityEnabled("project"); - const entityFour = this.config.isEntityEnabled("datasource"); - const example = Observable.zip(entityOne,entityTwo,entityThree,entityFour); - - // wait until all observables have emitted a value then emit all as an array - example.subscribe(data => { - this.showPublications = data[0]; - this.showDatasets = data[1]; - this.showProjects = data[2]; - this.showDataProviders = data[3]; - this.getNumbers(); - }); - if(Properties.isPiwikTrackEnabled() && (typeof document !== 'undefined')){ - this.piwiksub = this._piwikService.trackView("OpenAIRE").subscribe(); - } - - } - - public ngOnInit() { - } - public ngOnDestroy() { - if(this.piwiksub){ - this.piwiksub.unsubscribe(); - } - if(this.subfunders){ - this.subfunders.unsubscribe(); - } - if(this.subPub){ - this.subPub.unsubscribe(); - } - if(this.subData){ - this.subData.unsubscribe(); - } - // if(this.subProjects){ - // this.subProjects.unsubscribe(); - // } - // if(this.subOrg){ - // this.subOrg.unsubscribe(); - // } - if(this.subDataPr){ - this.subDataPr.unsubscribe(); - } - - } - - private getNumbers() { - if(this.showPublications){ - this.subPub = this._searchPublicationsService.numOfSearchPublications("").subscribe( - data => { - console.log("Count results: "+data); - if(data && data != null && data > 0 ){ - this.publicationsSize = NumberUtils.roundNumber(data); - console.log("After round"); - - } - }, - err => { - console.log(err); - } - ); - } - if(this.showDatasets){ - this.subData = this._searchDatasetsService.numOfSearchDatasets("").subscribe( - data => { - if(data && data != null && data > 0 ){ - this.datasetsSize = NumberUtils.roundNumber(data); - } - }, - err => { - console.log(err); - } - ); - } - if(this.showProjects){ - this.subfunders = this._refineFieldResultsService.getRefineFieldsResultsByEntityName(["funder"],"project").subscribe( - data => { - - console.info("Funders: "+data[1][0].title+ " values "+data[1][0].values.length+"]"); - console.info("Projects: "+data[0]); - - if(data[0] && data[0] > 0 ){ - this.projectsSize = NumberUtils.roundNumber(data[0]); - } - if(data[1].length > 0 && data[1][0].filterId == "funder" && data[1][0].values ){ - this.fundersSize = NumberUtils.roundNumber(data[1][0].values.length); - } - - }, - err => { - console.log(err); - }); - } - if(this.showDataProviders){ - this.subDataPr = this._searchDataprovidersService.numOfSearchDataproviders("").subscribe( - data => { - if(data && data != null && data > 0 ){ - this.datasourcesSize = NumberUtils.roundNumber(data); - } - - }, - err => { - console.log(err); - - } - ); - } - } -} diff --git a/src/app/home/home.module.ts b/src/app/home/home.module.ts deleted file mode 100644 index 5e2e2d9..0000000 --- a/src/app/home/home.module.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { NgModule} from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { FormsModule } from '@angular/forms'; -import { RouterModule } from '@angular/router'; - -import{HomeRoutingModule} from './home-routing.module'; -import{HomeComponent} from './home.component'; - - -import {DataProvidersServiceModule, DatasetsServiceModule,ProjectsServiceModule,PublicationsServiceModule, - OrganizationsServiceModule,SearchFormModule,PiwikServiceModule,RefineFieldResultsServiceModule,HelperModule} from 'ng-openaire-library'; -import {Meta, ConfigurationService, FreeGuard, PreviousRouteRecorder,} from 'ng-openaire-library'; -@NgModule({ - imports: [ - CommonModule, FormsModule, RouterModule, - RefineFieldResultsServiceModule, - DataProvidersServiceModule, DatasetsServiceModule, ProjectsServiceModule, - PublicationsServiceModule, - OrganizationsServiceModule, - SearchFormModule, - PiwikServiceModule, - HomeRoutingModule, - HelperModule - - ], - declarations: [ - HomeComponent - ], - providers:[ - FreeGuard, PreviousRouteRecorder, ConfigurationService, Meta - ], - exports: [ - HomeComponent - ] -}) -export class HomeModule { } diff --git a/src/app/landingPages/dataProvider/dataProvider-routing.module.ts b/src/app/landingPages/dataProvider/dataProvider-routing.module.ts index fce156d..35e5c52 100644 --- a/src/app/landingPages/dataProvider/dataProvider-routing.module.ts +++ b/src/app/landingPages/dataProvider/dataProvider-routing.module.ts @@ -3,12 +3,12 @@ import { RouterModule } from '@angular/router'; import { OpenaireDataProviderComponent } from './dataProvider.component'; import {FreeGuard,PreviousRouteRecorder, IsRouteEnabled} from 'ng-openaire-library'; - +import {Properties} from '../../utils/properties'; @NgModule({ imports: [ RouterModule.forChild([ { path: '', component: OpenaireDataProviderComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { - redirect: '/error' + redirect: '/error', api: Properties.adminToolsAPIURL, community :Properties.adminToolsCommunity },canDeactivate: [PreviousRouteRecorder] } ]) ] diff --git a/src/app/landingPages/dataset/dataset-routing.module.ts b/src/app/landingPages/dataset/dataset-routing.module.ts index aa94134..449665b 100644 --- a/src/app/landingPages/dataset/dataset-routing.module.ts +++ b/src/app/landingPages/dataset/dataset-routing.module.ts @@ -3,12 +3,12 @@ import { RouterModule } from '@angular/router'; import { OpenaireDatasetComponent } from './dataset.component'; import {FreeGuard,PreviousRouteRecorder, IsRouteEnabled} from 'ng-openaire-library'; - +import {Properties} from '../../utils/properties'; @NgModule({ imports: [ RouterModule.forChild([ { path: '', component: OpenaireDatasetComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { - redirect: '/error' + redirect: '/error', api: Properties.adminToolsAPIURL, community :Properties.adminToolsCommunity },canDeactivate: [PreviousRouteRecorder] } ]) ] diff --git a/src/app/landingPages/organization/organization-routing.module.ts b/src/app/landingPages/organization/organization-routing.module.ts index 093a3ec..b43b4f4 100644 --- a/src/app/landingPages/organization/organization-routing.module.ts +++ b/src/app/landingPages/organization/organization-routing.module.ts @@ -3,13 +3,13 @@ import { RouterModule } from '@angular/router'; import { OpenaireOrganizationComponent } from './organization.component'; import {FreeGuard,PreviousRouteRecorder, IsRouteEnabled} from 'ng-openaire-library'; - +import {Properties} from '../../utils/properties'; @NgModule({ imports: [ RouterModule.forChild([ { path: '', component: OpenaireOrganizationComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { - redirect: '/error' + redirect: '/error', api: Properties.adminToolsAPIURL, community :Properties.adminToolsCommunity },canDeactivate: [PreviousRouteRecorder] } ]) ] diff --git a/src/app/landingPages/project/project-routing.module.ts b/src/app/landingPages/project/project-routing.module.ts index 0a114c6..af145a2 100644 --- a/src/app/landingPages/project/project-routing.module.ts +++ b/src/app/landingPages/project/project-routing.module.ts @@ -3,12 +3,12 @@ import { RouterModule } from '@angular/router'; import { OpenaireProjectComponent } from './project.component'; import {FreeGuard,PreviousRouteRecorder, IsRouteEnabled} from 'ng-openaire-library'; - +import {Properties} from '../../utils/properties'; @NgModule({ imports: [ RouterModule.forChild([ { path: '', component: OpenaireProjectComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { - redirect: '/error' + redirect: '/error', api: Properties.adminToolsAPIURL, community :Properties.adminToolsCommunity },canDeactivate: [PreviousRouteRecorder] } ]) ] diff --git a/src/app/landingPages/publication/publication-routing.module.ts b/src/app/landingPages/publication/publication-routing.module.ts index 24057fe..421db29 100644 --- a/src/app/landingPages/publication/publication-routing.module.ts +++ b/src/app/landingPages/publication/publication-routing.module.ts @@ -3,12 +3,12 @@ import { RouterModule } from '@angular/router'; import {OpenairePublicationComponent } from './publication.component'; import {FreeGuard,PreviousRouteRecorder, IsRouteEnabled} from 'ng-openaire-library'; - +import {Properties} from '../../utils/properties'; @NgModule({ imports: [ RouterModule.forChild([ { path: '', component: OpenairePublicationComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { - redirect: '/error' + redirect: '/error', api: Properties.adminToolsAPIURL, community :Properties.adminToolsCommunity },canDeactivate: [PreviousRouteRecorder] } ]) ] diff --git a/src/app/home/home-routing.module.ts b/src/app/my-communities/communities-routing.module.ts similarity index 50% rename from src/app/home/home-routing.module.ts rename to src/app/my-communities/communities-routing.module.ts index 8ee1c6a..39867b7 100644 --- a/src/app/home/home-routing.module.ts +++ b/src/app/my-communities/communities-routing.module.ts @@ -1,15 +1,15 @@ import { NgModule } from '@angular/core'; import { RouterModule } from '@angular/router'; -import{HomeComponent} from './home.component'; +import{CommunitiesComponent} from './communities.component'; import {FreeGuard,PreviousRouteRecorder} from 'ng-openaire-library'; @NgModule({ imports: [ RouterModule.forChild([ - { path: '', component: HomeComponent, canActivate: [FreeGuard], canDeactivate: [PreviousRouteRecorder] } + { path: '', component: CommunitiesComponent, canActivate: [FreeGuard], canDeactivate: [PreviousRouteRecorder] } ]) ] }) -export class HomeRoutingModule { } +export class CommunitiesRoutingModule { } diff --git a/src/app/my-communities/communities.component.html b/src/app/my-communities/communities.component.html new file mode 100644 index 0000000..ef58417 --- /dev/null +++ b/src/app/my-communities/communities.component.html @@ -0,0 +1,81 @@ + +
+
+
+
+
+
+
+
+
+

Welcome to Research Community Dashboard!

+

Use a trusted partner to share, link, disseminate and monitor your research.

+
+
+
+
+ +
+
+
+
+
+
My communities
+
+ +
+
+
+ A logo goes here +
+
+

+ EGI Federation

+

EGI is a federated e-Infrastructure set up to provide advanced computing services for research and innovation. + +The EGI e-infrastructure is publicly-funded and comprises hundreds of data centres and cloud providers spread across Europe and worldwide.

+ Unsubscribe +
+
+
+ + + + +
+
Other communities
+
+ + + +
+
+
+ A logo goes here +
+
+

Environment and Economy Research Community

+

the national/EU node of the United Nations Sustainable Development Solutions Network sets out to build an infrastructure to gather all publications, data (in repositories and in Public Sector Information portals), and link them to EU and national funding

+ Subscribe +
+
+
+ +
+
+
+ A logo goes here +
+
+

Marine environmental science

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +

+ Subscribe +
+
+
+ +
+
diff --git a/src/app/my-communities/communities.component.ts b/src/app/my-communities/communities.component.ts new file mode 100644 index 0000000..853d0b0 --- /dev/null +++ b/src/app/my-communities/communities.component.ts @@ -0,0 +1,65 @@ +import {Component, Input, Output, EventEmitter, ViewChild, ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core'; +import {Observable} from 'rxjs/Observable'; +import {ActivatedRoute, Router} from '@angular/router'; +import {Location} from '@angular/common'; +import "rxjs/add/observable/zip"; +import { Meta, MetaDefinition, ConfigurationService} from 'ng-openaire-library'; + +import { ErrorCodes, RouterHelper, PiwikService, EnvProperties} from 'ng-openaire-library'; +import {Properties} from '../utils/properties'; + + +@Component({ + selector: 'communities', + templateUrl: 'communities.component.html', +}) +export class CommunitiesComponent { + public piwiksub: any; + public subfunders: any; + + public pageTitle = "OpenAIRE" +properties:EnvProperties; + + + constructor ( + private route: ActivatedRoute, + private _router: Router, + private location: Location, private _meta: Meta,private _piwikService:PiwikService, + private config: ConfigurationService + ) { + + + var description = "open access, research, scientific publication, European Commission, EC, FP7, ERC, Horizon 2020, H2020, search, projects "; + + var title = "OpenAIRE"; + + this._meta.setTitle(title); + this._meta.updateMeta("description", description); + this._meta.updateProperty("og:description", description); + this._meta.updateProperty("og:title", title); + + + + } + + public ngOnInit() { + this.route.data + .subscribe((data: { envSpecific: EnvProperties }) => { + this.properties = data.envSpecific; + var url = data.envSpecific.baseLink+this._router.url + this._meta.updateProperty("og:url", url); + if(this.properties.enablePiwikTrack && (typeof document !== 'undefined')){ + this.piwiksub = this._piwikService.trackView("OpenAIRE").subscribe(); + } + + }); + } + public ngOnDestroy() { + if(this.piwiksub){ + this.piwiksub.unsubscribe(); + } + + + } + +} diff --git a/src/app/my-communities/communities.module.ts b/src/app/my-communities/communities.module.ts new file mode 100644 index 0000000..fe45693 --- /dev/null +++ b/src/app/my-communities/communities.module.ts @@ -0,0 +1,28 @@ +import { NgModule} from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; +import { RouterModule } from '@angular/router'; + +import{CommunitiesRoutingModule} from './communities-routing.module'; +import{CommunitiesComponent} from './communities.component'; +import {PiwikService} from 'ng-openaire-library'; + + + +import {Meta, ConfigurationService, FreeGuard, PreviousRouteRecorder,} from 'ng-openaire-library'; +@NgModule({ + imports: [ + CommonModule, FormsModule, RouterModule, + CommunitiesRoutingModule + ], + declarations: [ + CommunitiesComponent + ], + providers:[ + FreeGuard, PreviousRouteRecorder, ConfigurationService, Meta, PiwikService + ], + exports: [ + CommunitiesComponent + ] +}) +export class CommunitiesModule { } diff --git a/src/app/searchPages/advanced/advancedSearchDataProviders-routing.module.ts b/src/app/searchPages/advanced/advancedSearchDataProviders-routing.module.ts deleted file mode 100644 index 22919a1..0000000 --- a/src/app/searchPages/advanced/advancedSearchDataProviders-routing.module.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; -import{OpenaireAdvancedSearchDataProvidersComponent} from './advancedSearchDataProviders.component'; -import {FreeGuard,PreviousRouteRecorder, IsRouteEnabled} from 'ng-openaire-library'; - - -@NgModule({ - imports: [ - RouterModule.forChild([ - { path: '', component: OpenaireAdvancedSearchDataProvidersComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { - redirect: '/error' - }, canDeactivate: [PreviousRouteRecorder] } - - ]) - ] -}) -export class AdvancedSearchDataProvidersRoutingModule { } diff --git a/src/app/searchPages/advanced/advancedSearchDataProviders.component.ts b/src/app/searchPages/advanced/advancedSearchDataProviders.component.ts deleted file mode 100644 index f5cc238..0000000 --- a/src/app/searchPages/advanced/advancedSearchDataProviders.component.ts +++ /dev/null @@ -1,14 +0,0 @@ -import {Component, Input, ViewChild} from '@angular/core'; - - -@Component({ - selector: 'openaire-advanced-search-dataprovider', - template: ` - - - - ` - }) - -export class OpenaireAdvancedSearchDataProvidersComponent { -} diff --git a/src/app/searchPages/advanced/advancedSearchDataProviders.module.ts b/src/app/searchPages/advanced/advancedSearchDataProviders.module.ts deleted file mode 100644 index 3f7613e..0000000 --- a/src/app/searchPages/advanced/advancedSearchDataProviders.module.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { NgModule} from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { FormsModule } from '@angular/forms'; - -import{ AdvancedSearchDataProvidersRoutingModule} from './advancedSearchDataProviders-routing.module'; -import{OpenaireAdvancedSearchDataProvidersComponent} from './advancedSearchDataProviders.component'; -import {AdvancedSearchDataProvidersModule,FreeGuard,PreviousRouteRecorder, IsRouteEnabled} from 'ng-openaire-library'; - -@NgModule({ - imports: [ - CommonModule, FormsModule, - AdvancedSearchDataProvidersRoutingModule, - AdvancedSearchDataProvidersModule - - ], - declarations: [ - OpenaireAdvancedSearchDataProvidersComponent - ], - providers:[FreeGuard, IsRouteEnabled], - exports: [ - OpenaireAdvancedSearchDataProvidersComponent - ] -}) -export class LibAdvancedSearchDataProvidersModule { } diff --git a/src/app/searchPages/advanced/advancedSearchDatasets-routing.module.ts b/src/app/searchPages/advanced/advancedSearchDatasets-routing.module.ts index 24e9895..b4c1bc7 100644 --- a/src/app/searchPages/advanced/advancedSearchDatasets-routing.module.ts +++ b/src/app/searchPages/advanced/advancedSearchDatasets-routing.module.ts @@ -3,12 +3,13 @@ import { RouterModule } from '@angular/router'; import{OpenaireAdvancedSearchDatasetsComponent} from './advancedSearchDatasets.component'; import {FreeGuard,PreviousRouteRecorder, IsRouteEnabled} from 'ng-openaire-library'; +import {Properties} from '../../utils/properties'; @NgModule({ imports: [ RouterModule.forChild([ { path: '', component: OpenaireAdvancedSearchDatasetsComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { - redirect: '/error' + redirect: '/error', api: Properties.adminToolsAPIURL, community :Properties.adminToolsCommunity }, canDeactivate: [PreviousRouteRecorder] } ]) diff --git a/src/app/searchPages/advanced/advancedSearchOrganizations-routing.module.ts b/src/app/searchPages/advanced/advancedSearchOrganizations-routing.module.ts deleted file mode 100644 index c7bf1ad..0000000 --- a/src/app/searchPages/advanced/advancedSearchOrganizations-routing.module.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; - -import{OpenaireAdvancedSearchOrganizationsComponent} from './advancedSearchOrganizations.component'; -import {FreeGuard,PreviousRouteRecorder, IsRouteEnabled} from 'ng-openaire-library'; - -@NgModule({ - imports: [ - RouterModule.forChild([ - { path: '', component: OpenaireAdvancedSearchOrganizationsComponent , canActivate: [FreeGuard, IsRouteEnabled], data: { - redirect: '/error' - },canDeactivate: [PreviousRouteRecorder]} - - ]) - ] -}) -export class AdvancedSearchOrganizationsRoutingModule { } diff --git a/src/app/searchPages/advanced/advancedSearchOrganizations.component.ts b/src/app/searchPages/advanced/advancedSearchOrganizations.component.ts deleted file mode 100644 index cc9339e..0000000 --- a/src/app/searchPages/advanced/advancedSearchOrganizations.component.ts +++ /dev/null @@ -1,16 +0,0 @@ -import {Component, Input, ViewChild} from '@angular/core'; - - -@Component({ - selector: 'openaire-advanced-search-organizations', - template: ` - - - - ` - }) - -export class OpenaireAdvancedSearchOrganizationsComponent { - - -} diff --git a/src/app/searchPages/advanced/advancedSearchOrganizations.module.ts b/src/app/searchPages/advanced/advancedSearchOrganizations.module.ts deleted file mode 100644 index c4cdd3d..0000000 --- a/src/app/searchPages/advanced/advancedSearchOrganizations.module.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { NgModule} from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { FormsModule } from '@angular/forms'; - -import{ AdvancedSearchOrganizationsRoutingModule} from './advancedSearchOrganizations-routing.module'; -import{OpenaireAdvancedSearchOrganizationsComponent} from './advancedSearchOrganizations.component'; - - - - import {AdvancedSearchOrganizationsModule, FreeGuard,PreviousRouteRecorder, IsRouteEnabled} from 'ng-openaire-library'; - -@NgModule({ - imports: [ - CommonModule, FormsModule, - AdvancedSearchOrganizationsModule, - AdvancedSearchOrganizationsRoutingModule - - ], - declarations: [ - OpenaireAdvancedSearchOrganizationsComponent - ], - providers:[FreeGuard, IsRouteEnabled], - exports: [ - OpenaireAdvancedSearchOrganizationsComponent - ] -}) -export class LibAdvancedSearchOrganizationsModule { } diff --git a/src/app/searchPages/advanced/advancedSearchProjects-routing.module.ts b/src/app/searchPages/advanced/advancedSearchProjects-routing.module.ts deleted file mode 100644 index ae3381a..0000000 --- a/src/app/searchPages/advanced/advancedSearchProjects-routing.module.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; - -import{OpenaireAdvancedSearchProjectsComponent} from './advancedSearchProjects.component'; -import {FreeGuard,PreviousRouteRecorder, IsRouteEnabled} from 'ng-openaire-library'; - -@NgModule({ - imports: [ - RouterModule.forChild([ - { path: '', component: OpenaireAdvancedSearchProjectsComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { - redirect: '/error' - }, canDeactivate: [PreviousRouteRecorder] } - - ]) - ] -}) -export class AdvancedSearchProjectsRoutingModule { } diff --git a/src/app/searchPages/advanced/advancedSearchProjects.component.ts b/src/app/searchPages/advanced/advancedSearchProjects.component.ts deleted file mode 100644 index 50bf7e4..0000000 --- a/src/app/searchPages/advanced/advancedSearchProjects.component.ts +++ /dev/null @@ -1,13 +0,0 @@ -import {Component, Input, ViewChild} from '@angular/core'; -@Component({ - selector: 'openaire-advanced-search-projects', - template: ` - - - - ` - }) - -export class OpenaireAdvancedSearchProjectsComponent { - -} diff --git a/src/app/searchPages/advanced/advancedSearchProjects.module.ts b/src/app/searchPages/advanced/advancedSearchProjects.module.ts deleted file mode 100644 index 41830dc..0000000 --- a/src/app/searchPages/advanced/advancedSearchProjects.module.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { NgModule} from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { FormsModule } from '@angular/forms'; - -import{ AdvancedSearchProjectsRoutingModule} from './advancedSearchProjects-routing.module'; -import{OpenaireAdvancedSearchProjectsComponent} from './advancedSearchProjects.component'; - - - import {AdvancedSearchProjectsModule, FreeGuard,PreviousRouteRecorder, IsRouteEnabled} from 'ng-openaire-library'; - -@NgModule({ - imports: [ - CommonModule, FormsModule, - AdvancedSearchProjectsModule, - AdvancedSearchProjectsRoutingModule - - ], - declarations: [ - OpenaireAdvancedSearchProjectsComponent - ], - providers:[FreeGuard, IsRouteEnabled], - exports: [ - OpenaireAdvancedSearchProjectsComponent - ] -}) -export class LibAdvancedSearchProjectsModule { } diff --git a/src/app/searchPages/advanced/advancedSearchPublications-routing.module.ts b/src/app/searchPages/advanced/advancedSearchPublications-routing.module.ts index c4fec9e..2c1e39c 100644 --- a/src/app/searchPages/advanced/advancedSearchPublications-routing.module.ts +++ b/src/app/searchPages/advanced/advancedSearchPublications-routing.module.ts @@ -3,12 +3,13 @@ import { RouterModule } from '@angular/router'; import{OpenaireAdvancedSearchPublicationsComponent} from './advancedSearchPublications.component'; import {FreeGuard,PreviousRouteRecorder, IsRouteEnabled} from 'ng-openaire-library'; +import {Properties} from '../../utils/properties'; @NgModule({ imports: [ RouterModule.forChild([ { path: '', component: OpenaireAdvancedSearchPublicationsComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { - redirect: '/error' + redirect: '/error', api: Properties.adminToolsAPIURL, community :Properties.adminToolsCommunity }, canDeactivate: [PreviousRouteRecorder] } ]) diff --git a/src/app/searchPages/dataProviders/compatibleDataProviders-routing.module.ts b/src/app/searchPages/dataProviders/compatibleDataProviders-routing.module.ts deleted file mode 100644 index 2205c73..0000000 --- a/src/app/searchPages/dataProviders/compatibleDataProviders-routing.module.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; - -import{OpenaireSearchCompatibleDataprovidersComponent} from './compatibleDataProviders.component'; -import {FreeGuard,PreviousRouteRecorder, IsRouteEnabled} from 'ng-openaire-library'; - -@NgModule({ - imports: [ - RouterModule.forChild([ - { path: '', component: OpenaireSearchCompatibleDataprovidersComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { - redirect: '/error' - }, canDeactivate: [PreviousRouteRecorder] } - - ]) - ] -}) -export class CompatibleDataProvidersRoutingModule { } diff --git a/src/app/searchPages/dataProviders/compatibleDataProviders.component.ts b/src/app/searchPages/dataProviders/compatibleDataProviders.component.ts deleted file mode 100644 index d74440b..0000000 --- a/src/app/searchPages/dataProviders/compatibleDataProviders.component.ts +++ /dev/null @@ -1,16 +0,0 @@ -import {Component, Input, ViewChild} from '@angular/core'; -import { ActivatedRoute} from '@angular/router'; - -@Component({ - selector: 'openaire-search-content-providers', - template: ` - - - - - ` - -}) -export class OpenaireSearchCompatibleDataprovidersComponent { - -} diff --git a/src/app/searchPages/dataProviders/compatibleDataProviders.module.ts b/src/app/searchPages/dataProviders/compatibleDataProviders.module.ts deleted file mode 100644 index 4196f9a..0000000 --- a/src/app/searchPages/dataProviders/compatibleDataProviders.module.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { NgModule} from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { FormsModule } from '@angular/forms'; - -import{ CompatibleDataProvidersRoutingModule} from './compatibleDataProviders-routing.module'; -import{OpenaireSearchCompatibleDataprovidersComponent} from './compatibleDataProviders.component'; - - -import { FreeGuard,PreviousRouteRecorder, IsRouteEnabled, CompatibleDataProvidersModule} from 'ng-openaire-library'; - -@NgModule({ - imports: [ - CommonModule, FormsModule, - CompatibleDataProvidersModule, - CompatibleDataProvidersRoutingModule - - ], - declarations: [ - OpenaireSearchCompatibleDataprovidersComponent - ], - providers:[FreeGuard, IsRouteEnabled], - exports: [ - OpenaireSearchCompatibleDataprovidersComponent - ] -}) -export class LibCompatibleDataProvidersModule { } diff --git a/src/app/searchPages/dataProviders/compatibleDataProvidersTable-routing.module.ts b/src/app/searchPages/dataProviders/compatibleDataProvidersTable-routing.module.ts deleted file mode 100644 index c5b68a6..0000000 --- a/src/app/searchPages/dataProviders/compatibleDataProvidersTable-routing.module.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; - -import{SearchCompatibleDataprovidersTableComponent} from './compatibleDataProvidersTable.component'; -import {FreeGuard,PreviousRouteRecorder, IsRouteEnabled} from 'ng-openaire-library'; - -@NgModule({ - imports: [ - RouterModule.forChild([ - { path: '', component: SearchCompatibleDataprovidersTableComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { - redirect: '/error' - }, canDeactivate: [PreviousRouteRecorder] } - - ]) - ] -}) -export class CompatibleDataProvidersTableRoutingModule { } diff --git a/src/app/searchPages/dataProviders/compatibleDataProvidersTable.component.ts b/src/app/searchPages/dataProviders/compatibleDataProvidersTable.component.ts deleted file mode 100644 index 9639868..0000000 --- a/src/app/searchPages/dataProviders/compatibleDataProvidersTable.component.ts +++ /dev/null @@ -1,193 +0,0 @@ -import {Component, Input, ViewChild} from '@angular/core'; -import {Location} from '@angular/common'; -import { ActivatedRoute} from '@angular/router'; -import {SearchPageTableViewComponent } from '../searchUtils/searchPageTableView.component'; -import { ErrorCodes, SearchFields,SearchDataprovidersService, SearchUtilsClass, Filter, Value } from 'ng-openaire-library'; -import {Properties} from '../../utils/properties'; - -@Component({ - selector: 'search-content-providers-table', - template: ` - - - - ` - -}) -export class SearchCompatibleDataprovidersTableComponent { - private errorCodes: ErrorCodes; - - public results =[]; - public filters =[]; - public baseUrl:string; - public searchUtils:SearchUtilsClass = new SearchUtilsClass(); - public sub: any; public subResults: any; - public _location:Location; - public searchFields:SearchFields = new SearchFields(); - public refineFields: string[] = this.searchFields.COMPATIBLE_DATAPROVIDER_FIELDS; - - /*public CSV: any = { "columnNames": [ "Title", "Type", "Coutries", "Compatibility" ], - "export":[] - }; - public CSVDownloaded = false; - public csvParams: string; - public resourcesQuery = "&query=((oaftype exact datasource) not(datasourcecompatibilityid = UNKNOWN) not(datasourcecompatibilityid = notCompatible) not(datasourcetypeuiid = other))";*/ - - public disableForms: boolean = false; - - @ViewChild (SearchPageTableViewComponent) searchPage : SearchPageTableViewComponent ; - - constructor (private route: ActivatedRoute, private _searchDataprovidersService: SearchDataprovidersService ) { - this.errorCodes = new ErrorCodes(); - this.searchUtils.status = this.errorCodes.LOADING; - this.baseUrl = Properties.getLinkToSearchCompatibleDataProvidersTable(); - } - - public ngOnInit() { - this.searchPage.refineFields = this.refineFields; - this.sub = this.route.queryParams.subscribe(params => { - this.searchUtils.keyword = (params['keyword']?params['keyword']:''); - //this.searchUtils.page = (params['page']=== undefined)?1:+params['page']; - this.filters = this.createFilters(); - this.searchPage.getParametersFromUrl(params); - this._getResults(); - }); - } - - public ngOnDestroy() { - if(this.sub){ - this.sub.unsubscribe(); - } - if(this.subResults){ - this.subResults.unsubscribe(); - } } - private _getResults(){ - //this.csvParams = this.resourcesQuery+"&type=datasources"; - - //var errorCodes:ErrorCodes = new ErrorCodes(); - this.searchUtils.status = this.errorCodes.LOADING; - this.disableForms = true; - this.results = []; - this.searchUtils.totalResults = 0; - - let size: number = 0; - this.subResults = this._searchDataprovidersService.searchCompatibleDataprovidersTable().subscribe( - data => { - size = data; - if(size > 0) { - this.subResults = this._searchDataprovidersService.searchCompatibleDataproviders("", null, 1, size, []).subscribe( - data => { - this.searchUtils.totalResults = data[0]; - console.info("search Content Providers [total results:"+this.searchUtils.totalResults+"]"); - this.results = data[1]; - - this.searchPage.checkSelectedFilters(this.filters); - - //var errorCodes:ErrorCodes = new ErrorCodes(); - this.searchUtils.status = this.errorCodes.DONE; - if(this.searchUtils.totalResults == 0 ){ - this.searchUtils.status = this.errorCodes.NONE; - } - this.disableForms = false; - this.searchPage.triggerInitialLoad(); - this.searchPage.transform(this.results); - }, - err => { - console.log(err); - //TODO check erros (service not available, bad request) - // if( ){ - // this.searchUtils.status = ErrorCodes.ERROR; - // } - //var errorCodes:ErrorCodes = new ErrorCodes(); - //this.searchUtils.status = errorCodes.ERROR; - if(err.status == '404') { - this.searchUtils.status = this.errorCodes.NOT_FOUND; - } else if(err.status == '500') { - this.searchUtils.status = this.errorCodes.ERROR; - } else { - this.searchUtils.status = this.errorCodes.NOT_AVAILABLE; - } - - this.disableForms = false; - - } - ); - } else { - this.searchPage.checkSelectedFilters(this.filters); - - //var errorCodes:ErrorCodes = new ErrorCodes(); - this.searchUtils.status = this.errorCodes.NONE; - this.disableForms = false; - } - }, - err => { - console.log(err); - //TODO check erros (service not available, bad request) - // if( ){ - // this.searchUtils.status = ErrorCodes.ERROR; - // } - //var errorCodes:ErrorCodes = new ErrorCodes(); - //this.searchUtils.status = errorCodes.ERROR; - if(err.status == '404') { - this.searchUtils.status = this.errorCodes.NOT_FOUND; - } else if(err.status == '500') { - this.searchUtils.status = this.errorCodes.ERROR; - } else { - this.searchUtils.status = this.errorCodes.NOT_AVAILABLE; - } - } - ); - - } - private setFilters(){ - //TODO set filters from - } - - private createFilters():Filter[] { - var filter_names=["Type","Compatibility Level"]; - var filter_ids=["datasourcetypeuiid","datasourcecompatibilityname"]; - var searchFields = new SearchFields(); - var filter_original_ids = searchFields.COMPATIBLE_DATAPROVIDER_FIELDS; - var value_names=[ - /*[ - "Institutional Publication Repository","Thematic Publication Repository", "Other Publication Repository", - "Institutional Repositories Aggregators", - "Thematic Repositories Aggregators", "Other Repositories Aggregators", - "Data Repositories", "Data Repositories Aggregators", "Journals", "Journals Aggregators", "CRIS Systems", "Publication Catalogues"], - */ - [ - "Institutional Repository", "Thematic Repository", "Publication Repository", - "Institutional Repository Aggregator", - "Thematic Repositories Aggregators", "Publication Repository Aggregator", - "Data Repository", "Data Repository Aggregator", "CRIS Systems", "Publication Catalogue"], - - - - - ["OpenAIRE Basic (DRIVER OA)","OpenAIRE 2.0 (EC funding)", "OpenAIRE 2.0+ (DRIVER OA, EC funding)", "OpenAIRE 3.0 (OA, funding)","OpenAIRE Data (funded, referenced datasets)"]]; - - var value_original_ids=[ - ["pubsrepository::institutional","pubsrepository::thematic", "pubsrepository::unknown", "aggregator::pubsrepository::institutional","aggregator::pubsrepository::thematic","aggregator::pubsrepository::unknown", - "datarepository::unknown", "aggregator::datarepository", "cris", "pubscatalogue::unknown"], - //["driver","openaire2.0", "driver-openaire2.0", "openaire3.0","openaire2.0_data"] - ["OpenAIRE Basic (DRIVER OA)","OpenAIRE 2.0 (EC funding)", "OpenAIRE 2.0+ (DRIVER OA, EC funding)", "OpenAIRE 3.0 (OA, funding)","OpenAIRE Data (funded, referenced datasets)"]]; - var filters: Filter[] =[]; - for(var i =0 ; i < filter_names.length;i++){ - var values:Value[] = []; - for(var j =0 ; j < value_names[i].length;j++){ - var value:Value = {name: value_names[i][j], id: value_original_ids[i][j], number:j, selected:false} - values.push(value); - } - var filter:Filter = {title: filter_names[i], filterId: filter_ids[i], originalFilterId: filter_original_ids[i], values : values, countSelectedValues:0, "filterOperator": 'or' }; - filters.push(filter); - } - return filters; - } -} diff --git a/src/app/searchPages/dataProviders/compatibleDataProvidersTable.module.ts b/src/app/searchPages/dataProviders/compatibleDataProvidersTable.module.ts deleted file mode 100644 index ef3d75d..0000000 --- a/src/app/searchPages/dataProviders/compatibleDataProvidersTable.module.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { NgModule} from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { FormsModule } from '@angular/forms'; - -import{SearchCompatibleDataprovidersTableComponent} from './compatibleDataProvidersTable.component'; - - -import {SearchPageTableViewModule} from '../searchUtils/searchPageTableView.module'; -import {CompatibleDataProvidersTableRoutingModule} from './compatibleDataProvidersTable-routing.module'; -import { FreeGuard,PreviousRouteRecorder, IsRouteEnabled, SearchFormModule, DataProvidersServiceModule} from 'ng-openaire-library'; - - -@NgModule({ - imports: [ - CommonModule, FormsModule, - DataProvidersServiceModule, - SearchFormModule, SearchPageTableViewModule, CompatibleDataProvidersTableRoutingModule - - ], providers:[FreeGuard, IsRouteEnabled], - declarations: [ - SearchCompatibleDataprovidersTableComponent - ], - exports: [ - SearchCompatibleDataprovidersTableComponent - ] -}) -export class CompatibleDataProvidersTableModule { } diff --git a/src/app/searchPages/dataProviders/entityRegistries-routing.module.ts b/src/app/searchPages/dataProviders/entityRegistries-routing.module.ts deleted file mode 100644 index 425c00e..0000000 --- a/src/app/searchPages/dataProviders/entityRegistries-routing.module.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; - -import{OpenaireSearchEntityRegistriesComponent} from './entityRegistries.component'; -import {FreeGuard,PreviousRouteRecorder, IsRouteEnabled} from 'ng-openaire-library'; - -@NgModule({ - imports: [ - RouterModule.forChild([ - { path: '', component: OpenaireSearchEntityRegistriesComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { - redirect: '/error' - }, canDeactivate: [PreviousRouteRecorder] } - - ]) - ] -}) -export class EntityRegistriesRoutingModule { } diff --git a/src/app/searchPages/dataProviders/entityRegistries.component.ts b/src/app/searchPages/dataProviders/entityRegistries.component.ts deleted file mode 100644 index 82336f9..0000000 --- a/src/app/searchPages/dataProviders/entityRegistries.component.ts +++ /dev/null @@ -1,16 +0,0 @@ -import {Component, Input, ViewChild} from '@angular/core'; -import { ActivatedRoute} from '@angular/router'; - -@Component({ - selector: 'openaire-search-entity-registries', - template: ` - - - - - ` - -}) -export class OpenaireSearchEntityRegistriesComponent { - -} diff --git a/src/app/searchPages/dataProviders/entityRegistries.module.ts b/src/app/searchPages/dataProviders/entityRegistries.module.ts deleted file mode 100644 index 492125a..0000000 --- a/src/app/searchPages/dataProviders/entityRegistries.module.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { NgModule} from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { FormsModule } from '@angular/forms'; - -import{ EntityRegistriesRoutingModule} from './entityRegistries-routing.module'; -import{OpenaireSearchEntityRegistriesComponent} from './entityRegistries.component'; - -import {EntityRegistriesModule, FreeGuard,PreviousRouteRecorder, IsRouteEnabled} from 'ng-openaire-library'; - -@NgModule({ - imports: [ - CommonModule, FormsModule, - EntityRegistriesModule, EntityRegistriesRoutingModule - - ], - declarations: [ - OpenaireSearchEntityRegistriesComponent - ], - providers:[FreeGuard, IsRouteEnabled], - exports: [ - OpenaireSearchEntityRegistriesComponent - ] -}) -export class LibEntityRegistriesModule { } diff --git a/src/app/searchPages/dataProviders/entityRegistriesTable-routing.module.ts b/src/app/searchPages/dataProviders/entityRegistriesTable-routing.module.ts deleted file mode 100644 index 70004b2..0000000 --- a/src/app/searchPages/dataProviders/entityRegistriesTable-routing.module.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; - -import{SearchEntityRegistriesTableComponent} from './entityRegistriesTable.component'; -import {FreeGuard,PreviousRouteRecorder, IsRouteEnabled} from 'ng-openaire-library'; - -@NgModule({ - imports: [ - RouterModule.forChild([ - { path: '', component: SearchEntityRegistriesTableComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { - redirect: '/error' - }, canDeactivate: [PreviousRouteRecorder] } - - ]) - ] -}) -export class EntityRegistriesTableRoutingModule { } diff --git a/src/app/searchPages/dataProviders/entityRegistriesTable.component.ts b/src/app/searchPages/dataProviders/entityRegistriesTable.component.ts deleted file mode 100644 index 21368b8..0000000 --- a/src/app/searchPages/dataProviders/entityRegistriesTable.component.ts +++ /dev/null @@ -1,202 +0,0 @@ -import {Component, Input, ViewChild} from '@angular/core'; -import { ActivatedRoute} from '@angular/router'; -import {SearchPageTableViewComponent } from '../searchUtils/searchPageTableView.component'; -import {ErrorCodes, SearchFields,SearchDataprovidersService, SearchUtilsClass, Filter, Value } from 'ng-openaire-library'; - -import {Properties} from '../../utils/properties'; - -@Component({ - selector: 'search-entity-registries-table', - template: ` - - - - - ` - -}) -export class SearchEntityRegistriesTableComponent { - private errorCodes: ErrorCodes; - - public results =[]; - public filters =[]; - public baseUrl:string; - public searchUtils:SearchUtilsClass = new SearchUtilsClass(); - public sub: any; public subResults: any; - public _location:Location; - public searchFields:SearchFields = new SearchFields(); - public refineFields: string[] = this.searchFields.ENTITY_REGISTRIES_FIELDS; - public disableForms: boolean = false; - - @ViewChild (SearchPageTableViewComponent) searchPage : SearchPageTableViewComponent ; - - constructor (private route: ActivatedRoute, private _searchDataprovidersService: SearchDataprovidersService ) { - this.errorCodes = new ErrorCodes(); - this.searchUtils.status = this.errorCodes.LOADING; - } - - public ngOnInit() { - this.searchPage.refineFields = this.refineFields; - this.sub = this.route.queryParams.subscribe(params => { - this.searchUtils.keyword = (params['keyword']?params['keyword']:''); - //this.searchUtils.page = (params['page']=== undefined)?1:+params['page']; - this.filters = this.createFilters(); - - this.searchPage.getParametersFromUrl(params); - this._getResults("", false, this.searchUtils.page); - }); - } - - public ngOnDestroy() { - if(this.sub){ - this.sub.unsubscribe(); - } - if(this.subResults){ - this.subResults.unsubscribe(); - } } - private _getResults(parameters:string,refine:boolean, page: number){ - //var errorCodes:ErrorCodes = new ErrorCodes(); - this.searchUtils.status = this.errorCodes.LOADING; - this.disableForms = true; - this.results = []; - this.searchUtils.totalResults = 0; - - let size: number = 0; - this.subResults = this._searchDataprovidersService.searchEntityRegistriesTable().subscribe( - data => { - size = data; - if(size > 0) { - this.subResults = this._searchDataprovidersService.searchEntityRegistries("",null, page, size, []).subscribe( - data => { - this.searchUtils.totalResults = data[0]; - console.info("search Entity Registries [total results:"+this.searchUtils.totalResults+"]"); - this.results = data[1]; - this.searchPage.checkSelectedFilters(this.filters); - - //var errorCodes:ErrorCodes = new ErrorCodes(); - this.searchUtils.status = this.errorCodes.DONE; - if(this.searchUtils.totalResults == 0 ){ - this.searchUtils.status = this.errorCodes.NONE; - } - this.disableForms = false; - this.searchPage.triggerInitialLoad(); - this.searchPage.transform(this.results); - }, - err => { - console.log(err); - //TODO check erros (service not available, bad request) - // if( ){ - // this.searchUtils.status = ErrorCodes.ERROR; - // } - //var errorCodes:ErrorCodes = new ErrorCodes(); - //this.searchUtils.status = errorCodes.ERROR; - if(err.status == '404') { - this.searchUtils.status = this.errorCodes.NOT_FOUND; - } else if(err.status == '500') { - this.searchUtils.status = this.errorCodes.ERROR; - } else { - this.searchUtils.status = this.errorCodes.NOT_AVAILABLE; - } - - this.disableForms = false; - - } - ); - } else { - this.searchPage.checkSelectedFilters(this.filters); - - //var errorCodes:ErrorCodes = new ErrorCodes(); - this.searchUtils.status = this.errorCodes.NONE; - this.disableForms = false; - } - }, - err => { - console.log(err); - //TODO check erros (service not available, bad request) - // if( ){ - // this.searchUtils.status = ErrorCodes.ERROR; - // } - //var errorCodes:ErrorCodes = new ErrorCodes(); - //this.searchUtils.status = errorCodes.ERROR; - if(err.status == '404') { - this.searchUtils.status = this.errorCodes.NOT_FOUND; - } else if(err.status == '500') { - this.searchUtils.status = this.errorCodes.ERROR; - } else { - this.searchUtils.status = this.errorCodes.NOT_AVAILABLE; - } - } - ); -/* - this.subResults = this._searchDataprovidersService.searchEntityRegistries(parameters,(refine)?this.searchPage.getRefineFieldsQuery():null, page, size, []).subscribe( - data => { - this.searchUtils.totalResults = data[0]; - console.info("search Entity Registries: [Parameters:"+parameters+" ] [total results:"+this.searchUtils.totalResults+"]"); - this.results = data[1]; - this.searchPage.checkSelectedFilters(this.filters); - this.searchPage.updateBaseUrlWithParameters(this.filters); - var errorCodes:ErrorCodes = new ErrorCodes(); - this.searchUtils.status = errorCodes.DONE; - if(this.searchUtils.totalResults == 0 ){ - this.searchUtils.status = errorCodes.NONE; - } - //this.searchPage.closeLoading(); - this.disableForms = false; - - }, - err => { - console.log(err); - //TODO check erros (service not available, bad request) - // if( ){ - // this.searchUtils.status = ErrorCodes.ERROR; - // } - var errorCodes:ErrorCodes = new ErrorCodes(); - this.searchUtils.status = errorCodes.ERROR; - //this.searchPage.closeLoading(); - this.disableForms = false; - - } - ); -*/ - } - private setFilters(){ - //TODO set filters from - } - - - private createFilters():Filter[] { - var filter_names=["Type","Compatibility Level"]; - var filter_ids=["datasourcetypename","datasourcecompatibilityname"]; - var searchFields = new SearchFields(); - var filter_original_ids = searchFields.ENTITY_REGISTRIES_FIELDS; - var value_names=[ - ["Funder database","Registry of repositories","Scholarly Comm. Infrastructure","Registry","Information Space","Web Source"], - - ["OpenAIRE Basic (DRIVER OA)","OpenAIRE 2.0 (EC funding)", "OpenAIRE 2.0+ (DRIVER OA, EC funding)", "OpenAIRE 3.0 (OA, funding)","OpenAIRE Data (funded, referenced datasets)"]]; - - var value_original_ids=[ - ["Funder database","Registry of repositories","Scholarly Comm. Infrastructure","Registry","Information Space","Web Source"], - //["entityregistry::projects","entityregistry::repositories","scholarcomminfra","entityregistry","infospace","websource"], - //["driver","openaire2.0", "driver-openaire2.0", "openaire3.0","openaire2.0_data"] - ["OpenAIRE Basic (DRIVER OA)","OpenAIRE 2.0 (EC funding)", "OpenAIRE 2.0+ (DRIVER OA, EC funding)", "OpenAIRE 3.0 (OA, funding)","OpenAIRE Data (funded, referenced datasets)"]]; - - var filters: Filter[] =[]; - for(var i =0 ; i < filter_names.length;i++){ - var values:Value[] = []; - for(var j =0 ; j < value_names[i].length;j++){ - var value:Value = {name: value_names[i][j], id: value_original_ids[i][j], number:j, selected:false} - values.push(value); - } - var filter:Filter = {title: filter_names[i], filterId: filter_ids[i], originalFilterId: filter_original_ids[i], values : values, countSelectedValues:0, "filterOperator": 'or' }; - filters.push(filter); - } - return filters; - } -} diff --git a/src/app/searchPages/dataProviders/entityRegistriesTable.module.ts b/src/app/searchPages/dataProviders/entityRegistriesTable.module.ts deleted file mode 100644 index 8ac5d50..0000000 --- a/src/app/searchPages/dataProviders/entityRegistriesTable.module.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { NgModule} from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { FormsModule } from '@angular/forms'; - -import{SearchEntityRegistriesTableComponent} from './entityRegistriesTable.component'; -import {SearchPageTableViewModule} from '../searchUtils/searchPageTableView.module'; -import {EntityRegistriesTableRoutingModule} from './entityRegistriesTable-routing.module'; -import { FreeGuard,PreviousRouteRecorder, IsRouteEnabled, SearchFormModule, DataProvidersServiceModule} from 'ng-openaire-library'; - -@NgModule({ - imports: [ - CommonModule, FormsModule, - DataProvidersServiceModule, - SearchFormModule, SearchPageTableViewModule, EntityRegistriesTableRoutingModule - - ], providers:[FreeGuard, IsRouteEnabled], - declarations: [ - SearchEntityRegistriesTableComponent - ], - exports: [ - SearchEntityRegistriesTableComponent - ] -}) -export class EntityRegistriesTableModule { } diff --git a/src/app/searchPages/dataProviders/journals-routing.module.ts b/src/app/searchPages/dataProviders/journals-routing.module.ts deleted file mode 100644 index 2ed7999..0000000 --- a/src/app/searchPages/dataProviders/journals-routing.module.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; - -import{OpenaireSearchJournalsComponent} from './journals.component'; -import {FreeGuard,PreviousRouteRecorder, IsRouteEnabled} from 'ng-openaire-library'; - -@NgModule({ - imports: [ - RouterModule.forChild([ - { path: '', component: OpenaireSearchJournalsComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { - redirect: '/error' - }, canDeactivate: [PreviousRouteRecorder] } - - ]) - ] -}) -export class JournalsRoutingModule { } diff --git a/src/app/searchPages/dataProviders/journals.component.ts b/src/app/searchPages/dataProviders/journals.component.ts deleted file mode 100644 index e54fae6..0000000 --- a/src/app/searchPages/dataProviders/journals.component.ts +++ /dev/null @@ -1,14 +0,0 @@ -import {Component, Input, ViewChild} from '@angular/core'; -import { ActivatedRoute} from '@angular/router'; - -@Component({ - selector: 'openaire-search-journals', - template: ` - - - - ` - -}) -export class OpenaireSearchJournalsComponent { -} diff --git a/src/app/searchPages/dataProviders/journals.module.ts b/src/app/searchPages/dataProviders/journals.module.ts deleted file mode 100644 index cafa2b0..0000000 --- a/src/app/searchPages/dataProviders/journals.module.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { NgModule} from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { FormsModule } from '@angular/forms'; - -import{ JournalsRoutingModule} from './journals-routing.module'; -import{OpenaireSearchJournalsComponent} from './journals.component'; -import { FreeGuard,PreviousRouteRecorder, IsRouteEnabled, JournalsModule} from 'ng-openaire-library'; - -@NgModule({ - imports: [ - CommonModule, FormsModule, JournalsRoutingModule, JournalsModule - - ], - declarations: [ - OpenaireSearchJournalsComponent - ], - providers:[FreeGuard, IsRouteEnabled], - exports: [ - OpenaireSearchJournalsComponent - ] -}) -export class LibJournalsModule { } diff --git a/src/app/searchPages/dataProviders/journalsTable-routing.module.ts b/src/app/searchPages/dataProviders/journalsTable-routing.module.ts deleted file mode 100644 index 71dfbcb..0000000 --- a/src/app/searchPages/dataProviders/journalsTable-routing.module.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; - -import{SearchJournalsTableComponent} from './journalsTable.component'; -import {FreeGuard,PreviousRouteRecorder, IsRouteEnabled} from 'ng-openaire-library'; - -@NgModule({ - imports: [ - RouterModule.forChild([ - { path: '', component: SearchJournalsTableComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { - redirect: '/error' - } , canDeactivate: [PreviousRouteRecorder] } - - ]) - ] -}) -export class JournalsTableRoutingModule { } diff --git a/src/app/searchPages/dataProviders/journalsTable.component.ts b/src/app/searchPages/dataProviders/journalsTable.component.ts deleted file mode 100644 index 0a75c6d..0000000 --- a/src/app/searchPages/dataProviders/journalsTable.component.ts +++ /dev/null @@ -1,188 +0,0 @@ -import {Component, Input, ViewChild} from '@angular/core'; -import { ActivatedRoute} from '@angular/router'; -import {SearchPageTableViewComponent } from '../searchUtils/searchPageTableView.component'; -import {ErrorCodes, SearchFields,SearchDataprovidersService, SearchUtilsClass, Filter, Value } from 'ng-openaire-library'; -import {Properties} from '../../utils/properties'; - - -@Component({ - selector: 'search-journals-table', - template: ` - - - - ` - -}) -export class SearchJournalsTableComponent { - private errorCodes: ErrorCodes; - - public results =[]; - public filters =[]; - public baseUrl:string; - public searchUtils:SearchUtilsClass = new SearchUtilsClass(); - public sub: any; public subResults: any; - public _location:Location; - public searchFields:SearchFields = new SearchFields(); - public refineFields: string[] = this.searchFields.JOURNAL_FIELDS; - - /*public CSV: any = { "columnNames": [ "Title", "Type", "Coutries", "Compatibility" ], - "export":[] - }; - public CSVDownloaded = false; - public csvParams: string; - public resourcesQuery = "&query=((oaftype exact datasource) not(datasourcecompatibilityid = UNKNOWN) not(datasourcecompatibilityid = notCompatible) not(datasourcetypeuiid = other))";*/ - - public disableForms: boolean = false; - - @ViewChild (SearchPageTableViewComponent) searchPage : SearchPageTableViewComponent ; - - constructor (private route: ActivatedRoute, private _searchDataprovidersService: SearchDataprovidersService ) { - this.errorCodes = new ErrorCodes(); - this.searchUtils.status = this.errorCodes.LOADING; - this.baseUrl = Properties.getLinkToSearchJournalsTable(); - } - - public ngOnInit() { - this.searchPage.refineFields = this.refineFields; - this.sub = this.route.queryParams.subscribe(params => { - this.searchUtils.keyword = (params['keyword']?params['keyword']:''); - //this.searchUtils.page = (params['page']=== undefined)?1:+params['page']; - this.filters = this.createFilters(); - this.searchPage.getParametersFromUrl(params); - this._getResults(); - }); - } - - public ngOnDestroy() { - if(this.sub){ - this.sub.unsubscribe(); - } - if(this.subResults){ - this.subResults.unsubscribe(); - } } - private _getResults(){ - //this.csvParams = this.resourcesQuery+"&type=datasources"; - - //var errorCodes:ErrorCodes = new ErrorCodes(); - this.searchUtils.status = this.errorCodes.LOADING; - this.disableForms = true; - this.results = []; - this.searchUtils.totalResults = 0; - - let size: number = 0; - this.subResults = this._searchDataprovidersService.searchJournalsTable().subscribe( - data => { - size = data; - if(size > 0) { - this.subResults = this._searchDataprovidersService.searchJournals("", null, 1, size, []).subscribe( - data => { - this.searchUtils.totalResults = data[0]; - console.info("search Journals [total results:"+this.searchUtils.totalResults+"]"); - this.results = data[1]; - - this.searchPage.checkSelectedFilters(this.filters); - - //var errorCodes:ErrorCodes = new ErrorCodes(); - this.searchUtils.status = this.errorCodes.DONE; - if(this.searchUtils.totalResults == 0 ){ - this.searchUtils.status = this.errorCodes.NONE; - } - this.disableForms = false; - this.searchPage.triggerInitialLoad(); - this.searchPage.transform(this.results); - }, - err => { - console.log(err); - //TODO check erros (service not available, bad request) - // if( ){ - // this.searchUtils.status = ErrorCodes.ERROR; - // } - //var errorCodes:ErrorCodes = new ErrorCodes(); - //this.searchUtils.status = errorCodes.ERROR; - if(err.status == '404') { - this.searchUtils.status = this.errorCodes.NOT_FOUND; - } else if(err.status == '500') { - this.searchUtils.status = this.errorCodes.ERROR; - } else { - this.searchUtils.status = this.errorCodes.NOT_AVAILABLE; - } - - this.disableForms = false; - - } - ); - } else { - this.searchPage.checkSelectedFilters(this.filters); - - //var errorCodes:ErrorCodes = new ErrorCodes(); - this.searchUtils.status = this.errorCodes.NONE; - this.disableForms = false; - } - }, - err => { - console.log(err); - //TODO check erros (service not available, bad request) - // if( ){ - // this.searchUtils.status = ErrorCodes.ERROR; - // } - //var errorCodes:ErrorCodes = new ErrorCodes(); - //this.searchUtils.status = errorCodes.ERROR; - if(err.status == '404') { - this.searchUtils.status = this.errorCodes.NOT_FOUND; - } else if(err.status == '500') { - this.searchUtils.status = this.errorCodes.ERROR; - } else { - this.searchUtils.status = this.errorCodes.NOT_AVAILABLE; - } - } - ); - - } - private setFilters(){ - //TODO set filters from - } - - private createFilters():Filter[] { - var filter_names=["Type","Compatibility Level"]; - var filter_ids=["datasourcetypeuiid","datasourcecompatibilityname"]; - var searchFields = new SearchFields(); - var filter_original_ids = searchFields.JOURNAL_FIELDS; - var value_names=[ - /*[ - "Institutional Publication Repository","Thematic Publication Repository", "Other Publication Repository", - "Institutional Repositories Aggregators", - "Thematic Repositories Aggregators", "Other Repositories Aggregators", - "Data Repositories", "Data Repositories Aggregators", "Journals", "Journals Aggregators", "CRIS Systems", "Publication Catalogues"], - */ - ["Journal", "Journal Aggregator\/Publisher"], - - - - - ["OpenAIRE Basic (DRIVER OA)","OpenAIRE 2.0 (EC funding)", "OpenAIRE 2.0+ (DRIVER OA, EC funding)", "OpenAIRE 3.0 (OA, funding)","OpenAIRE Data (funded, referenced datasets)"]]; - - var value_original_ids=[ - ["pubsrepository::journal", "aggregator::pubsrepository::journals"], - //["driver","openaire2.0", "driver-openaire2.0", "openaire3.0","openaire2.0_data"] - ["OpenAIRE Basic (DRIVER OA)","OpenAIRE 2.0 (EC funding)", "OpenAIRE 2.0+ (DRIVER OA, EC funding)", "OpenAIRE 3.0 (OA, funding)","OpenAIRE Data (funded, referenced datasets)"]]; - var filters: Filter[] =[]; - for(var i =0 ; i < filter_names.length;i++){ - var values:Value[] = []; - for(var j =0 ; j < value_names[i].length;j++){ - var value:Value = {name: value_names[i][j], id: value_original_ids[i][j], number:j, selected:false} - values.push(value); - } - var filter:Filter = {title: filter_names[i], filterId: filter_ids[i], originalFilterId: filter_original_ids[i], values : values, countSelectedValues:0, "filterOperator": 'or' }; - filters.push(filter); - } - return filters; - } -} diff --git a/src/app/searchPages/dataProviders/journalsTable.module.ts b/src/app/searchPages/dataProviders/journalsTable.module.ts deleted file mode 100644 index 3e46d8b..0000000 --- a/src/app/searchPages/dataProviders/journalsTable.module.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { NgModule} from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { FormsModule } from '@angular/forms'; - -import{SearchJournalsTableComponent} from './journalsTable.component'; - - -import {SearchPageTableViewModule} from '../searchUtils/searchPageTableView.module'; -import {JournalsTableRoutingModule} from './journalsTable-routing.module'; -import { FreeGuard,PreviousRouteRecorder, IsRouteEnabled, SearchFormModule, DataProvidersServiceModule} from 'ng-openaire-library'; - - -@NgModule({ - imports: [ - CommonModule, FormsModule, - DataProvidersServiceModule, - SearchFormModule, SearchPageTableViewModule, JournalsTableRoutingModule - - ], providers:[FreeGuard, IsRouteEnabled], - declarations: [ - SearchJournalsTableComponent - ], - exports: [ - SearchJournalsTableComponent - ] -}) -export class JournalsTableModule { } diff --git a/src/app/searchPages/searchUtils/searchPageTableView.component.ts b/src/app/searchPages/searchUtils/searchPageTableView.component.ts index 607b34a..131cec0 100644 --- a/src/app/searchPages/searchUtils/searchPageTableView.component.ts +++ b/src/app/searchPages/searchUtils/searchPageTableView.component.ts @@ -4,9 +4,8 @@ import { Subject } from 'rxjs/Subject'; import {Location} from '@angular/common'; import { DataTableDirective } from 'angular-datatables'; -import {SearchFields, DOI, StringUtils,ModalLoading,ErrorCodes, PiwikService, SearchDataprovidersService} from 'ng-openaire-library'; +import {SearchFields, DOI, StringUtils,ModalLoading,ErrorCodes,OpenaireProperties,PiwikService, SearchDataprovidersService} from 'ng-openaire-library'; import {Meta, SearchUtilsClass, Filter, Value, SearchFilterComponent, SearchFilterModalComponent } from 'ng-openaire-library'; -import {Properties} from '../../utils/properties'; @Component({ selector: 'search-page-table', @@ -66,9 +65,9 @@ export class SearchPageTableViewComponent implements OnInit, AfterViewInit { this.updateTitle(this.pageTitle); this.updateDescription("Openaire, search, repositories, open access, type, content provider, funder, project, " + this.type + "," +this.pageTitle); if(typeof window !== 'undefined') { - this.updateUrl(Properties.getBaseLink()+location.pathname); + this.updateUrl(OpenaireProperties.getBaseLink()+location.pathname); } - if(Properties.isPiwikTrackEnabled() && (typeof document !== 'undefined')){ + if(OpenaireProperties.isPiwikTrackEnabled() && (typeof document !== 'undefined')){ this.piwiksub = this._piwikService.trackView(this.pageTitle).subscribe(); } } diff --git a/src/app/searchPages/simple/searchDataProviders-routing.module.ts b/src/app/searchPages/simple/searchDataProviders-routing.module.ts index 21ead85..9e9e418 100644 --- a/src/app/searchPages/simple/searchDataProviders-routing.module.ts +++ b/src/app/searchPages/simple/searchDataProviders-routing.module.ts @@ -3,12 +3,13 @@ import { RouterModule } from '@angular/router'; import{OpenaireSearchDataprovidersComponent} from './searchDataproviders.component'; import {FreeGuard,PreviousRouteRecorder, IsRouteEnabled} from 'ng-openaire-library'; +import {Properties} from '../../utils/properties'; @NgModule({ imports: [ RouterModule.forChild([ { path: '', component: OpenaireSearchDataprovidersComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { - redirect: '/error' + redirect: '/error', api: Properties.adminToolsAPIURL, community :Properties.adminToolsCommunity }, canDeactivate: [PreviousRouteRecorder] } ]) diff --git a/src/app/searchPages/simple/searchDatasets-routing.module.ts b/src/app/searchPages/simple/searchDatasets-routing.module.ts index 1d28931..262e30f 100644 --- a/src/app/searchPages/simple/searchDatasets-routing.module.ts +++ b/src/app/searchPages/simple/searchDatasets-routing.module.ts @@ -2,14 +2,14 @@ import { NgModule } from '@angular/core'; import { RouterModule } from '@angular/router'; import{OpenaireSearchDatasetsComponent} from './searchDatasets.component'; -import {FreeGuard,PreviousRouteRecorder, IsRouteEnabled} from 'ng-openaire-library'; - +import {FreeGuard,PreviousRouteRecorder, IsRouteEnabled, EnvironmentSpecificResolver} from 'ng-openaire-library'; +import {Properties} from '../../utils/properties'; @NgModule({ imports: [ RouterModule.forChild([ { path: '', component: OpenaireSearchDatasetsComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { - redirect: '/error' - }, canDeactivate: [PreviousRouteRecorder] } + redirect: '/error', api: Properties.adminToolsAPIURL, community :Properties.adminToolsCommunity + }, canDeactivate: [PreviousRouteRecorder] , resolve: { envSpecific: EnvironmentSpecificResolver }}, ]) ] diff --git a/src/app/searchPages/simple/searchDatasets.component.ts b/src/app/searchPages/simple/searchDatasets.component.ts index 8a0231f..908118e 100644 --- a/src/app/searchPages/simple/searchDatasets.component.ts +++ b/src/app/searchPages/simple/searchDatasets.component.ts @@ -1,14 +1,31 @@ import {Component, Input, ViewChild} from '@angular/core'; - +import {ActivatedRoute} from '@angular/router'; + @Component({ selector: 'openaire-search-datasets', template: ` - + ` }) export class OpenaireSearchDatasetsComponent { + advancedSearchParameters:any={community: "%22egi%7C%7CEGI%20Federation%22", co: "and"}; + connectCommunityId:string; + constructor( private route: ActivatedRoute) { + } + ngOnInit() { + this.route.queryParams.subscribe(data => { + if(data['community'] && data['community']!=""){ + var id= decodeURIComponent(data['community']); + this.connectCommunityId = id.slice(1,id.length - 1); + console.log("HEREEEE"+this.connectCommunityId); + } + }); + } } diff --git a/src/app/searchPages/simple/searchOrganizations-routing.module.ts b/src/app/searchPages/simple/searchOrganizations-routing.module.ts index 6dfabf7..37e6935 100644 --- a/src/app/searchPages/simple/searchOrganizations-routing.module.ts +++ b/src/app/searchPages/simple/searchOrganizations-routing.module.ts @@ -3,12 +3,13 @@ import { RouterModule } from '@angular/router'; import{OpenaireSearchOrganizationsComponent} from './searchOrganizations.component'; import {FreeGuard,PreviousRouteRecorder, IsRouteEnabled} from 'ng-openaire-library'; +import {Properties} from '../../utils/properties'; @NgModule({ imports: [ RouterModule.forChild([ { path: '', component: OpenaireSearchOrganizationsComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { - redirect: '/error' + redirect: '/error', api: Properties.adminToolsAPIURL, community :Properties.adminToolsCommunity }, canDeactivate: [PreviousRouteRecorder] } ]) diff --git a/src/app/searchPages/simple/searchProjects-routing.module.ts b/src/app/searchPages/simple/searchProjects-routing.module.ts index 73fee35..6e70d0d 100644 --- a/src/app/searchPages/simple/searchProjects-routing.module.ts +++ b/src/app/searchPages/simple/searchProjects-routing.module.ts @@ -3,12 +3,13 @@ import { RouterModule } from '@angular/router'; import{OpenaireSearchProjectsComponent} from './searchProjects.component'; import {FreeGuard,PreviousRouteRecorder, IsRouteEnabled} from 'ng-openaire-library'; +import {Properties} from '../../utils/properties'; @NgModule({ imports: [ RouterModule.forChild([ { path: '', component: OpenaireSearchProjectsComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { - redirect: '/error' + redirect: '/error', api: Properties.adminToolsAPIURL, community :Properties.adminToolsCommunity }, canDeactivate: [PreviousRouteRecorder] } ]) diff --git a/src/app/searchPages/simple/searchPublications-routing.module.ts b/src/app/searchPages/simple/searchPublications-routing.module.ts index fbe0489..31e7d59 100644 --- a/src/app/searchPages/simple/searchPublications-routing.module.ts +++ b/src/app/searchPages/simple/searchPublications-routing.module.ts @@ -3,12 +3,13 @@ import { RouterModule } from '@angular/router'; import{OpenaireSearchPublicationsComponent} from './searchPublications.component'; import {FreeGuard,PreviousRouteRecorder, IsRouteEnabled} from 'ng-openaire-library'; +import {Properties} from '../../utils/properties'; @NgModule({ imports: [ RouterModule.forChild([ { path: '', component: OpenaireSearchPublicationsComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { - redirect: '/error' + redirect: '/error', api: Properties.adminToolsAPIURL, community :Properties.adminToolsCommunity }, canDeactivate: [PreviousRouteRecorder] } ]) diff --git a/src/app/searchPages/simple/searchPublications.component.ts b/src/app/searchPages/simple/searchPublications.component.ts index d5051da..37dd072 100644 --- a/src/app/searchPages/simple/searchPublications.component.ts +++ b/src/app/searchPages/simple/searchPublications.component.ts @@ -1,10 +1,13 @@ import {Component, Input, ViewChild} from '@angular/core'; +import {ActivatedRoute} from '@angular/router'; @Component({ selector: 'openaire-search-publications', template: ` - + ` @@ -12,5 +15,18 @@ import {Component, Input, ViewChild} from '@angular/core'; }) export class OpenaireSearchPublicationsComponent { + advancedSearchParameters:any={community: "%22egi%7C%7CEGI%20Federation%22", co: "and"}; + connectCommunityId:string; + constructor( private route: ActivatedRoute) { + } + ngOnInit() { + this.route.queryParams.subscribe(data => { + if(data['community'] && data['community']!=""){ + var id= decodeURIComponent(data['community']); + this.connectCommunityId = id.slice(1,id.length - 1); + console.log("HEREEEE"+this.connectCommunityId); + } + }); + } } diff --git a/src/app/searchPages/simple/searchSoftware-routing.module.ts b/src/app/searchPages/simple/searchSoftware-routing.module.ts index a7da5a8..9e7e7a3 100644 --- a/src/app/searchPages/simple/searchSoftware-routing.module.ts +++ b/src/app/searchPages/simple/searchSoftware-routing.module.ts @@ -3,11 +3,14 @@ import { RouterModule } from '@angular/router'; import {OpenaireSearchSoftwareComponent} from './searchSoftware.component'; import {FreeGuard,PreviousRouteRecorder, IsRouteEnabled} from 'ng-openaire-library'; +import {Properties} from '../../utils/properties'; @NgModule({ imports: [ RouterModule.forChild([ - { path: '', component: OpenaireSearchSoftwareComponent, canActivate: [FreeGuard, IsRouteEnabled], canDeactivate: [PreviousRouteRecorder] } + { path: '', component: OpenaireSearchSoftwareComponent, canActivate: [FreeGuard, IsRouteEnabled], canDeactivate: [PreviousRouteRecorder], data: { + redirect: '/error', api: Properties.adminToolsAPIURL, community :Properties.adminToolsCommunity + } } ]) ] diff --git a/src/app/searchPages/simple/searchSoftware.component.ts b/src/app/searchPages/simple/searchSoftware.component.ts index da673ff..7e54263 100644 --- a/src/app/searchPages/simple/searchSoftware.component.ts +++ b/src/app/searchPages/simple/searchSoftware.component.ts @@ -1,14 +1,31 @@ import {Component, Input, ViewChild} from '@angular/core'; +import {ActivatedRoute} from '@angular/router'; @Component({ selector: 'openaire-search-software', template: ` - + ` }) export class OpenaireSearchSoftwareComponent { + advancedSearchParameters:any={community: "%22egi%7C%7CEGI%20Federation%22", co: "and"}; + connectCommunityId:string; + constructor( private route: ActivatedRoute) { + } + ngOnInit() { + this.route.queryParams.subscribe(data => { + if(data['community'] && data['community']!=""){ + var id= decodeURIComponent(data['community']); + this.connectCommunityId = id.slice(1,id.length - 1); + console.log("HEREEEE"+this.connectCommunityId); + } + }); + } } diff --git a/src/app/utils/properties.ts b/src/app/utils/properties.ts index 86a4ccd..5c3a90c 100644 --- a/src/app/utils/properties.ts +++ b/src/app/utils/properties.ts @@ -1,418 +1,5 @@ export class Properties { - private static productionMode:boolean = false; - private static enablePiwikTrack:boolean = false; - private static enableHelper:boolean = false; - private static useCache:boolean = true; - - //base url - private static baseLink = "https://demo.openaire.eu"; - - //landing Pages - private static baseSearchLink="/"; - private static searchLinkToPublication = "search/publication?articleId="; - private static searchLinkToProject = "search/project?projectId="; - private static searchLinkToDataProvider = "search/dataprovider?datasourceId="; - private static searchLinkToDataset = "search/dataset?datasetId="; - private static searchLinkToOrganization = "search/organization?organizationId="; - //Search pages - private static searchLinkToPublications = "search/find/publications"; - private static searchLinkToDataProviders = "search/find/dataproviders"; - private static searchLinkToProjects = "search/find/projects"; - private static searchLinkToDatasets = "search/find/datasets"; - private static searchLinkToSoftware = "search/find/software"; - private static searchLinkToOrganizations = "search/find/organizations"; - private static searchLinkToPeople = "search/find/people"; - public static searchLinkToCompatibleDataProviders = "search/content-providers"; - public static searchLinkToCompatibleDataProvidersTable = "search/content-providers-table"; - public static searchLinkToEntityRegistriesDataProviders = "search/entity-registries"; - public static searchLinkToEntityRegistriesDataProvidersTable = "search/entity-registries-table"; - public static searchLinkToJournals = "search/journals"; - public static searchLinkToJournalsTable = "search/journals-table"; - - //Advanced Search for pages - public static searchLinkToAdvancedPublications = "search/advanced/publications"; - public static searchLinkToAdvancedProjects = "search/advanced/projects"; - public static searchLinkToAdvancedDatasets = "search/advanced/datasets"; - public static searchLinkToAdvancedSoftware = "search/advanced/software"; - public static searchLinkToAdvancedDataProviders = "search/advanced/dataproviders"; - public static searchLinkToAdvancedOrganizations = "search/advanced/organizations"; - public static searchLinkToAdvancedPeople = "search/advanced/people"; - - - private static metricsAPIURL = "https://beta.services.openaire.eu/usagestats/"; - private static framesAPIURL = "https://beta.openaire.eu/stats3/"; - - private static loginAPIURL = "http://rudie.di.uoa.gr:8080/dnet%2Dopenaire%2Dusers%2D1.0.0%2DSNAPSHOT/api/users/authenticates" - //"http://scoobydoo.di.uoa.gr:8080/uoa-user-management-1.0.0-SNAPSHOT/api/users/authenticates"; - private static loginAPIURL_pm = "https://beta.services.openaire.eu/uoa-user-management/api/users/authenticates"; - - private static claimsAPIURL = "http://scoobydoo.di.uoa.gr:8080/dnet-claims-service-2.0.0-SNAPSHOT/rest/claimsService/"; - private static claimsAPIURL_pm = "https://beta.services.openaire.eu/claims/rest/claimsService/"; - - private static searchAPIURLLAst_pm = "https://beta.services.openaire.eu/search/v2/api/"; - private static searchAPIURLLAst = "https://beta.services.openaire.eu/search/v2/api/"; -// private static searchAPIURLLAst = "http://scoobydoo.di.uoa.gr:8080/dnet-functionality-services-2.0.0-SNAPSHOT/rest/v2/api/"; - - private static searchResourcesAPIURL_pm = "https://beta.services.openaire.eu/search/v2/api/resources"; - private static searchResourcesAPIURL = "https://beta.services.openaire.eu/search/v2/api/resources"; - // private static searchResourcesAPIURL = "http://scoobydoo.di.uoa.gr:8080/dnet-functionality-services-2.0.0-SNAPSHOT/rest/v2/api/resources"; - - - private static csvAPIURL_pm = "https://beta.services.openaire.eu/search/v2/api/";//publications?format=csv - // private static csvAPIURL = "http://rudie.di.uoa.gr:8080/dnet-functionality-services-2.0.0-SNAPSHOT/rest/v2/api/";//publications?format=csv - - private static csvAPIURL = "https://beta.services.openaire.eu/search/v2/api/";//publications?format=csv - - private static searchCrossrefAPIURL = "https://api.crossref.org/works"; - // private static searchDataciteAPIURL = "https://search.datacite.org/api"; - private static searchDataciteAPIURL = "https://api.datacite.org/works"; - - private static searchOrcidURL = "https://pub.orcid.org/"; - - // Identifiers - private static pmidURL = "http://www.ncbi.nlm.nih.gov/pubmed/"; - private static doiURL = "https://dx.doi.org/"; - private static cordisURL = "http://cordis.europa.eu/projects/"; - private static pmcURL = "http://europepmc.org/articles/"; - private static handleURL = "http://hdl.handle.net/"; - - // Zenodo's url - private static zenodo = "https://zenodo.org/"; - // Open access link - private static openAccess = "https://www.openaire.eu/support/faq#article-id-234"; - // Open access repository link - private static openAccessRepo = "https://www.openaire.eu/support/faq#article-id-310"; - // FP7 link - private static fp7Guidlines = "https://www.openaire.eu/open-access-in-fp7-seventh-research-framework-programme"; - // H2020 link - private static h2020Guidlines = "https://www.openaire.eu/oa-publications/h2020/open-access-in-horizon-2020"; - // ERC Guidlines - private static ercGuidlines = "http://erc.europa.eu/sites/default/files/document/file/ERC_Open_Access_Guidelines-revised_2014.pdf"; - // helpdesk link - private static helpdesk = "https://www.openaire.eu/support/helpdesk"; - - private static uploadService_pm = "https://demo.openaire.eu/upload"; - private static uploadService = "http://scoobydoo.di.uoa.gr:8000/upload"; - - private static vocabulariesAPI ="https://beta.services.openaire.eu/provision/mvc/vocabularies/"; - - private static piwikBaseUrl =" https://analytics.openaire.eu/piwik.php?idsite=6"; - - - private static loginUrl ="http://rudie.di.uoa.gr:8080/dnet-openaire-users-2.0.0-SNAPSHOT/openid_connect_login"; - //"http://mpagasas.di.uoa.gr:8080/dnet-openaire-users-1.0.0-SNAPSHOT/openid_connect_login"; - private static loginUrl_pm ="https://beta.services.openaire.eu/uoa-user-management/openid_connect_login"; - - private static logoutUrl ="https://aai.openminted.eu/proxy/saml2/idp/SingleLogoutService.php?ReturnTo="; - private static logoutUrl_pm ="https://aai.openminted.eu/proxy/saml2/idp/SingleLogoutService.php?ReturnTo="; - - private static logoutOpenaireUrl ="http://dl067.madgik.di.uoa.gr/idp/profile/Logout"; - private static logoutOpenaireUrl_pm ="http://dl067.madgik.di.uoa.gr/idp/profile/Logout"; - - - - private static cookieDomain =".di.uoa.gr"; - private static cookieDomain_pm =".openaire.eu"; - - private static feedbackmail ="openaire.test@gmail.com"; - - private static helperPageUrl ="http://scoobydoo.di.uoa.gr:16000/api/page/route"; - - private static cache ="http://scoobydoo.di.uoa.gr:3000/get?url="; - private static cache_pm ="https://demo.openaire.eu/cache/get?url="; - - - - public static getBaseLink():string{ - return this.baseLink; - } - - //landing Pages' getters - public static getsearchLinkToPublication():string{ - return this.baseSearchLink + this.searchLinkToPublication; - } - public static getsearchLinkToDataset():string{ - return this.baseSearchLink + this.searchLinkToDataset; - } - public static getsearchLinkToProject():string{ - return this.baseSearchLink + this.searchLinkToProject; - } - - public static getsearchLinkToOrganization():string{ - return this.searchLinkToOrganization; - } - public static getsearchLinkToDataProvider():string{ - return this.searchLinkToDataProvider; - } - //searchPages - public static getLinkToSearchPublications():string{ - return this.baseSearchLink + this.searchLinkToPublications; - } - public static getLinkToSearchProjects():string{ - return this.baseSearchLink + this.searchLinkToProjects; - } - public static getLinkToSearchDataProviders():string{ - return this.baseSearchLink + this.searchLinkToDataProviders; - } - public static getLinkToSearchCompatibleDataProviders():string{ - return this.baseSearchLink + this.searchLinkToCompatibleDataProviders; - } - public static getLinkToSearchCompatibleDataProvidersTable():string{ - return this.baseSearchLink + this.searchLinkToCompatibleDataProvidersTable; - } - public static getLinkToSearchEntityRegistries():string{ - return this.baseSearchLink + this.searchLinkToEntityRegistriesDataProviders; - } - public static getLinkToSearchEntityRegistriesTable():string{ - return this.baseSearchLink + this.searchLinkToEntityRegistriesDataProvidersTable; - } - public static getLinkToSearchJournals():string{ - return this.baseSearchLink + this.searchLinkToJournals; - } - public static getLinkToSearchJournalsTable():string{ - return this.baseSearchLink + this.searchLinkToJournalsTable; - } - public static getLinkToSearchDatasets():string{ - return this.baseSearchLink + this.searchLinkToDatasets; - } - public static getLinkToSearchSoftware():string{ - return this.baseSearchLink + this.searchLinkToSoftware; - } - public static getLinkToSearchOrganizations():string{ - return this.baseSearchLink + this.searchLinkToOrganizations; - } - public static getLinkToSearchPeople():string{ - return this.baseSearchLink + this.searchLinkToPeople; - } - - //Advanced searchPages - public static getLinkToAdvancedSearchPublications():string{ - return this.baseSearchLink + this.searchLinkToAdvancedPublications; - } - public static getLinkToAdvancedSearchProjects():string{ - return this.baseSearchLink + this.searchLinkToAdvancedProjects; - } - public static getLinkToAdvancedSearchDataProviders():string{ - return this.baseSearchLink + this.searchLinkToAdvancedDataProviders; - } - public static getLinkToAdvancedSearchDatasets():string{ - return this.baseSearchLink + this.searchLinkToAdvancedDatasets; - } - public static getLinkToAdvancedSearchSoftware():string{ - return this.baseSearchLink + this.searchLinkToAdvancedSoftware; - } - public static getLinkToAdvancedSearchOrganizations():string{ - return this.baseSearchLink + this.searchLinkToAdvancedOrganizations; - } - public static getLinkToAdvancedSearchPeople():string{ - return this.baseSearchLink + this.searchLinkToAdvancedPeople; - } - - // Services - APIs' getters - // public static getSearchAPIURL():string{ - // return this.searchAPIURL; - // } - // Services - APIs' getters - public static getCsvAPIURL(): string { - if(this.productionMode){ - return this.csvAPIURL_pm; - }else{ - return this.csvAPIURL; - } - // return this.csvAPIURL; - } - - public static getFramesAPIURL(): string { - return this.framesAPIURL; - } - - public static getMetricsAPIURL(): string { - return this.metricsAPIURL; - } - - public static getLoginAPIURL(): string { - if(this.productionMode){ - return this.loginAPIURL_pm; - }else{ - return this.loginAPIURL; - } - // return this.loginAPIURL; - } - - public static getSearchAPIURLLast():string{ - if(this.productionMode){ - return this.searchAPIURLLAst_pm; - }else{ - return this.searchAPIURLLAst; - } - // return this.searchAPIURLLAst; - } - //query using full query: - // - public static getSearchResourcesAPIURL():string{ - if(this.productionMode){ - return this.searchResourcesAPIURL_pm; - }else{ - return this.searchResourcesAPIURL; - } - // return this.searchResourcesAPIURL; - } - public static getSearchAPIURLForEntity(entityType:string):string{ - var suffix = ""; - if(entityType == "project"){ - suffix="projects/"; - }else if(entityType == "publication"){ - suffix="publications/"; - }else if(entityType == "dataset"){ - suffix="datasets/"; - } else if(entityType == "software"){ - suffix="software/"; - }else if(entityType == "organization"){ - suffix="organizations/"; - }else if(entityType == "dataprovider"){ - suffix="datasources/"; - }else if(entityType == "person"){ - suffix="people/"; - } - return (this.productionMode?this.searchAPIURLLAst_pm:this.searchAPIURLLAst) + suffix; - } - - public static getClaimsAPIURL():string{ - if(this.productionMode){ - return this.claimsAPIURL_pm; - }else{ - return this.claimsAPIURL; - } - } - public static getSearchCrossrefAPIURL():string{ - return this.searchCrossrefAPIURL; - } - public static getSearchDataciteAPIURL():string{ - return this.searchDataciteAPIURL; - } - public static getSearchOrcidURL():string{ - return this.searchOrcidURL; - } - - // Identifiers' getters - public static getPmidURL():string{ - return this.pmidURL; - } - public static getDoiURL():string{ - return this.doiURL; - } - public static getCordisURL():string{ - return this.cordisURL; - } - public static getPmcURL():string{ - return this.pmcURL; - } - public static getHandleURL():string{ - return this.handleURL; - } - - // Zenodo's getter - public static getZenodoURL():string{ - return this.zenodo; - } - // Open access getter - public static getOpenAccess():string{ - return this.openAccess; - } - // Open access repository getter - public static getOpenAccessRepo():string{ - return this.openAccessRepo; - } - // FP7 link getter - public static getFP7Guidlines():string{ - return this.fp7Guidlines; - } - // H2020 link getter - public static getH2020Guidlines():string{ - return this.h2020Guidlines; - } - // ERC Guidlines getter - public static getERCGuidlines():string{ - return this.ercGuidlines; - } - // helpdesk link getter - public static getHelpdesk():string{ - return this.helpdesk; - } - - - //upload service for bulk claim - upload csv file - public static getUploadServiceUrl():string{ - if(this.productionMode){ - return this.uploadService_pm; - }else{ - return this.uploadService; - } - } - //vocabularies API - public static getVocabulariesAPI():string{ - return this.vocabulariesAPI; - } - public static getPiwikBaseURL():string{ - return this.piwikBaseUrl; - } - public static isPiwikTrackEnabled():boolean{ - return this.enablePiwikTrack; - } - public static getLoginURL():string{ - if(this.productionMode){ - return this.loginUrl_pm; - }else{ - return this.loginUrl; - } - } - public static getLogoutURL():string{ - if(this.productionMode){ - return this.logoutUrl_pm; - }else{ - return this.logoutUrl; - } - } - public static getLogoutOpenaireURL():string{ - if(this.productionMode){ - return this.logoutOpenaireUrl_pm; - }else{ - return this.logoutOpenaireUrl; - } - } - public static getCookieDomain():string{ - if(this.productionMode){ - return this.cookieDomain_pm; - }else{ - return this.cookieDomain; - } - } - public static getFeedbackMail():string{ - return this.feedbackmail; - } - public static getHelperPageUrl():string{ - return this.helperPageUrl; - } - public static isHelperEnabled():boolean{ - return this.enableHelper; - } - public static getCacheUrl():string{ - if(this.productionMode){ - return this.cache_pm; - }else{ - return this.cache; - } - } - public static isCacheEnabled():boolean{ - return this.useCache; - } -} -export class ErrorCodes { - public LOADING = 0; - public DONE = 1; - public NONE = 2; - public ERROR = 3; - public NOT_AVAILABLE = 4; - public OUT_OF_BOUND = 5; - public NOT_FOUND = 6; + public static adminToolsAPIURL = "http://duffy.di.uoa.gr:8080/uoa-admin-tools"; + public static adminToolsAPIURL_pm = "http://duffy.di.uoa.gr:8080/uoa-admin-tools"; + public static adminToolsCommunity = "egi"; } diff --git a/src/assets/chart.png b/src/assets/chart.png new file mode 100644 index 0000000000000000000000000000000000000000..5d4683412df79edef1144654bdf160f3e7671a35 GIT binary patch literal 41783 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 literal 0 HcmV?d00001 diff --git a/src/assets/connect-custom.css b/src/assets/connect-custom.css new file mode 100644 index 0000000..160c4ee --- /dev/null +++ b/src/assets/connect-custom.css @@ -0,0 +1,21 @@ +.tm-toolbar .uk-subnav-line .custom-connect-li { + display: block; + background:#DEAF50 !important; color:#fff !important; + +} +.custom-connect-toolbar ul.uk-subnav.uk-subnav-line{ + background-color: #FFC700 !important; + } + + .custom-connect-toolbar .inner { + background-color: #FFC700 !important; + } + + .custom-connect-toolbar{ + border-top-color:#FFC700 !important; + } +.custom-footer{ + position:relative; + bottom:0; + left:0; +} diff --git a/src/assets/discover-custom.css b/src/assets/discover-custom.css index 62280be..5f84811 100644 --- a/src/assets/discover-custom.css +++ b/src/assets/discover-custom.css @@ -1,38 +1,4 @@ -.tm-toolbar .uk-subnav-line .custom-explore-li { - display: block; - background:#Fb6e50 !important; color:#fff !important; - -} - -.custom-explore-toolbar ul.uk-subnav.uk-subnav-line{ - background-color: #f25f30 !important; - } - - .custom-explore-toolbar .inner { - background-color: #f25f30 !important; - } - - .custom-explore-toolbar{ - border-top-color:#f25f30 !important; - } - .tm-toolbar .uk-subnav-line .custom-connect-li { - display: block; - background:#DEAF50 !important; color:#fff !important; - - } - - .custom-connect-toolbar ul.uk-subnav.uk-subnav-line{ - background-color: #FFC700 !important; - } - - .custom-connect-toolbar .inner { - background-color: #FFC700 !important; - } - - .custom-connect-toolbar{ - border-top-color:#FFC700 !important; - } .custom-footer{ position:relative; bottom:0; diff --git a/src/assets/env-properties.json b/src/assets/env-properties.json new file mode 100644 index 0000000..b7925b4 --- /dev/null +++ b/src/assets/env-properties.json @@ -0,0 +1,93 @@ +{ + "enablePiwikTrack" : false, + "enableHelper" : false, + "useCache" : true, + "metricsAPIURL" : "https://beta.services.openaire.eu/usagestats/", + "framesAPIURL" : "https://beta.openaire.eu/stats3/", + "claimsAPIURL" : "http://scoobydoo.di.uoa.gr:8080/dnet-claims-service-2.0.0-SNAPSHOT/rest/claimsService/", + + "searchAPIURLLAst" : "https://beta.services.openaire.eu/search/v2/api/", + + "searchResourcesAPIURL" : "https://beta.services.openaire.eu/search/v2/api/resources", + + + + "csvAPIURL" : "http://rudie.di.uoa.gr:8080/dnet-functionality-services-2.0.0-SNAPSHOT/rest/v2/reports", + + "searchCrossrefAPIURL" : "https://api.crossref.org/works", + "searchDataciteAPIURL" : "https://api.datacite.org/works", + + "searchOrcidURL" : "https://pub.orcid.org/", + + "pmidURL" : "http://www.ncbi.nlm.nih.gov/pubmed/", + "doiURL" : "https://dx.doi.org/", + "cordisURL" : "http://cordis.europa.eu/projects/", + "pmcURL" : "http://europepmc.org/articles/", + "handleURL" : "http://hdl.handle.net/", + + "zenodo" : "https://zenodo.org/", + "openAccess" : "https://www.openaire.eu/support/faq#article-id-234", + "openAccessRepo" : "https://www.openaire.eu/support/faq#article-id-310", + "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", + "helpdesk" : "https://www.openaire.eu/support/helpdesk", + + "uploadService" : "http://scoobydoo.di.uoa.gr:8000/upload", + + "vocabulariesAPI" :"https://beta.services.openaire.eu/provision/mvc/vocabularies/", + + "piwikBaseUrl" :" https://analytics.openaire.eu/piwik.php?idsite:6", + + + "loginUrl" :"http://mpagasas.di.uoa.gr:8080/dnet-openaire-users-1.0.0-SNAPSHOT/openid_connect_login", + + "logoutUrl" :"https://aai.openminted.eu/proxy/saml2/idp/SingleLogoutService.php?ReturnTo:", + + "logoutOpenaireUrl" :"http://dl067.madgik.di.uoa.gr/idp/profile/Logout", + + "cookieDomain" :".di.uoa.gr", + + "feedbackmail" :"openaire.test@gmail.com", + + "helperPageUrl" :"http://scoobydoo.di.uoa.gr:16000/api/page/route", + + "cacheUrl" :"http://scoobydoo.di.uoa.gr:3000/get?url=", + + "adminToolsAPIURL" :"http://duffy.di.uoa.gr:8080/uoa-admin-tools", + + "adminToolsCommunity" :"openaire", + + "csvLimit": 2000, + "pagingLimit": 20, + "resultsPerPage": 10, + + "baseLink" : "https://demo.openaire.eu", + + "searchLinkToPublication" : "/search/publication?articleId:", + "searchLinkToProject" : "/search/project?projectId:", + "searchLinkToDataProvider" : "/search/dataprovider?datasourceId:", + "searchLinkToDataset" : "/search/dataset?datasetId:", + "searchLinkToOrganization" : "/search/organization?organizationId:", + + "searchLinkToPublications" : "/search/find/publications", + "searchLinkToDataProviders" : "/search/find/dataproviders", + "searchLinkToProjects" : "/search/find/projects", + "searchLinkToDatasets" : "/search/find/datasets", + "searchLinkToSoftware" : "/search/find/software", + "searchLinkToOrganizations" : "/search/find/organizations", + "searchLinkToCompatibleDataProviders" : "/search/content-providers", + "searchLinkToCompatibleDataProvidersTable" : "/search/content-providers-table", + "searchLinkToEntityRegistriesDataProviders" : "/search/entity-registries", + "searchLinkToEntityRegistriesDataProvidersTable" : "/search/entity-registries-table", + "searchLinkToJournals" : "/search/journals", + "searchLinkToJournalsTable" : "/search/journals-table", + + "searchLinkToAdvancedPublications" : "/search/advanced/publications", + "searchLinkToAdvancedProjects" : "/search/advanced/projects", + "searchLinkToAdvancedDatasets" : "/search/advanced/datasets", + "searchLinkToAdvancedSoftware" : "/search/advanced/software", + "searchLinkToAdvancedDataProviders" : "/search/advanced/dataproviders", + "searchLinkToAdvancedOrganizations" : "/search/advanced/organizations", + "searchLinkToAdvancedPeople" : "/search/advanced/people" +} diff --git a/src/assets/logo-large-connect.png b/src/assets/logo-large-connect.png new file mode 100644 index 0000000000000000000000000000000000000000..e3d95b8c3195c10755df9b55b39e8178498a54cc GIT binary patch literal 82220 zcmZU*2UJs8_dXoNuBdbiMJ)6p9qCGw4pIdH1?f$CC(Miv9YmxHC?FjIB0*{t=?F+K z0U}5ZkU%J*CHYRkckuWB?pm`jv+mvZlzn!2_Ooxej+P45*{f$E5D1m(1I33B$Z7CT zil);i!JiW4j(g-^9uHOSLrS}u7Qv6>w)Zr_|16I^xBv76_cqjK=BGIZeuTtR~wi3tRrzl8U2=Y*Qfh_#|ilOXgbahVU8Mh zdOcyAC}Q^JqD)yzw2_$i`w0=+-~~TR;g234j2;;L+NyqJg=UeeFq(a zMV*m!xr;8bjm|Pn%+TUvpuB-EBrJiLZTF5bX&1JsnH0Mm( zOEXr%nCt{4wMw1E##l$XMtm?*w(*wP>9F%zdtP7gzZZkQ^14P_;@0c$uPi3GM%nI7 zuW6vHdp(Jv_{vU=y?UwFUGEF) zEWWZ?636P)v6T_*tukd?Uv%^?$Uu@W+!yRdE$3JqHYWF+c)$r##-`=a-(6XcEM_hE zSNG^=ii8WfuJ?*wuY#s0dvzJY*yM=>+Hxn9X0Ha@FVW+lN>htN{}356_GW=oBiuRw zajA9d%V16#K^mqB&^ zLvI9;$mQP!K_{LH_j4S~6mJsRIc2%nI6Q4uZ>v$i-L0^p^M@YZf#+6hH*k&_e##!* zpSMie4_YfFQWcKCFrgL=jKM*gSXSeYO4zMaT{24>!<3Gei~D@IrO4bWnDo;vs_E-8 zO@Az!e)p#n+Qi|gjSg{T;d)e<_1XIJ?#YR8%%Hih=>#Pd@wd2Ncm5i8>_kYIb%2jw z1;?|1319DKt~`8kU^$EXAEN&D@V04=6CN|_im(ZQvUJXf`<)<_22*2~*ZExHr*ame zv#)9oUb>_{FRm;VfVjHSmMMx1TGa_6TcH14m#ghvQ0i99Jg6(34A86U^F9RyOZ8dM zL@pu^&E3+;5;}jed^uR8Z2&CNt5kCMP7}rMtN%R={@(EncT8es=$f%<6{?quv^k3e zs(WktQRxR;e1Uu!D`o|`?~L#}c%BFG zYpUyYm05nolhjyrfHCoI`T{3Y(M9Gz9{jiWjoBW~81AdYtM|CHRLnJ_N~;Zq=aG-+ zegIz(rMOiyP<(#Jdd+jHv0xbG7bg4W=;09MoU^Tyo}|Tnx#{#EDg7x6S&W4zy8)w@ z>A#Ax(&nR+UF90Y7T*A(NRTnb(R0x`?LpFXJzHIoAJ)@oCLBNaKs9qYr_CtuGb8MB zbzZgN&W$r1-440hBx1zG)WwkcE2Z)ET*l^XBQ$Z5=qQQXPPj&4SOg|43 zPAtu+0d01QrH^!f?cLt`#71cSZ6r@>z)*W@!(X{E2}v#fhAba0${aoN&ioB_)8ez= z+=@XAc=wznf;eo_mF0o6L~Y%=|<9Lrms0cQU)7{F5?eg^%b-)o2784R)Ef zYkfFU(TMa2FYnJ|$Iv`C%ib*X5__x05UYdVLsdP{KueEi{ScNd20K?vGh8Zr zKlAF*a6(La2XvDeIvE&>3Vs@Z14cYy*>?$ysL19xr&7gB)LY~r<51ooYWps=x>Vv$ zB3Gb9BHtXCsh{3gtm!58=p;Kn6M8R&d{@7xxo-HJ(QL z49em6I09~Etk8#JDsfAe{E3ge)&`cE*>(s1*ggG7-#tCrEan}IFPxLcjB<}2dWI{H zGqqC_VrsRRfI&*J`lZOe{NpvhoDF->w3f^}s6_1MBtrXZ(knvzf(c(w!sJA+C#J?8 zlij+YcjoAcJLZ-pJh?4G&4@SWYUoJqKeBBi!hE*E?Q&PwjZIx%%YHbz7h>hC>_2l8@FJ-B1+MO%*^^@ju7tKiCh}dA0qKZJe6F; zc(rFe>>-QH^{tC~7mws!db7B)(+>5CSq-w3_a*PvoAtdGK4#;)+a`<=-@Z#Oa z@%tQBbg(n>6E;~lNyw(kmsXnvf2hdi0z04H7#kcy(~~O9*B0hlp7=^FN1FDF3AN^Y z!{D2s{n_0&$B#sxANF%0-qu`f^hup}y|mUHjJmrpnHX{dw$1 zk37lGH5a%L{^6X9-9Ce+_HbC|x)h9=Xzc1;el+niaa*eeq_caval6u>A4kyi|2BaF=Jf5JksP~6~ zDT5jJbYy3x>_>-VL~kVW?b1Cta|P8Twb!xO7UY%6b73ft|9@g3kSE%`p8W9(EMP&* zQPVtZgO>*1fzyv-QlIDV`#(48=t<(YeBnMGS&m<-7StYyeyFxh53`NrN&8r&HJo?n zNaoM+1E-OK^`k4l0bM0V<>HiEUua6D`vPw41wk*AaG@ zM*`E2a)}(3@xHd1b{SPJDkAZ&jQ5$|Y1<#&Z>LedWx&{4Q7<(RG)RajexdJ*%aV3f zdaCzH1}_$*c4VpKe}!8cYD9Z&$>x_5QHalK51ey=_t-J6tK>?%xTyDsjlHTeGd3Hl zB;_ubUi~DJI|E~&b2|tAP`~QftJvy|>-3aqev0cy!_D=1rLWy{Q>++QS;4l5CZkPWNur42Ky@lB!Ih97wXb)?9K?j*q1qdx>z(J3Q1ws!5JzjJqMAQ+e$J zD~zF{W(J>!Yv{c3_12{5bs95Au~wn#SajY|bP-ZMEisx@R5brBHz39e9{9!32yNQV zA~k@cMY@xwlG_8E`&W{n95=L*G+H_*m5A=;ljZt?vYW?LW3C5x`iTXIpL!gagW`mMfie2(2qyq!TXtIEe1M37|`L(f1l~S`SH(BX_4Nrt== fv%>Z|PYRZ~CGoFa?4l(|DRl}AM|h0kCf)ZF zwUt4>XC%^NS|vJ`u@@Gsc63B8m(VIW!)q)WoNJ6mZE&G62{ohe@l(u2*6G~nqGO-A zUnJ%AxiZf3Y!l8dY`*<^<@m{KlpPgJZO{OdIaQ>_#9T7Qbw^!;&JdzFNmGNadQL(M!%+-35*_p(2+h?v=#s#&XqYpHaTwqKvzJ)T@Y`LK5g0o4HMzGOM~W)2QsnY0|st8nfwNC=A}^=Fch?p_=@4Ibf~}3WBU3%ZVP1XxrnW zH0Cqro3@Y{k5e_avTHyTKFj|mmdCk&BLD2jEZ2Ug(NJ<}!)vHQl48aKHam|JO`S|9WKfA! zwMBW!P-aIf#|>{2#ka*il?d1J6n(SeaF3?&JkLn`B-!hhj|mp#`6okq0-^HfozBB4 zp7<2p;@|hrOde9El(&9J2jbA)H{GabpZ`Yww<(Z!4H7YXXQgI>$HgWxkv3=wgXLI> z^czl9=SnwV<;kVPkX3Y5V4n0Q6uzJbxqUC^Ar(Z*JE7@>2t;2byp#e2z{Bi91hCTp zX#9P>gQtKs=PjB=0(;OZrkB=Xw3~NAi8L0Sx+}N*DO}v*c}1Ad<_?3L>Yeu#@4T~Z zAYsZ%c(17`(sk-?mAU53=;Nl#?-*%^!A4pmQ_9K7fH6? zgNmgoL$uf8kJDa-I7oG^4@DT)JWpc-(839t{|yL|AKc39vp6;N!yxaj;m2=+@!F#{ z?xEb+Md zi@%8^qSZ)4gvi#MIjgi%=>{&hISv;_L9b0Yu$xp=kjiurTn1*)`6vtTNE(PBn8o({@BrBrKhlko^opHjXAuz&2k?~Z;P7m%{S#oz{s%ztM=e<_MW>bzS>5q3y5Y9nFDHiL|+ z4p{50ereZ|u-x@(-(26A;44Q#R7;X`t?NfkaW0QMpGvuxq?X7U4F=6-_7hy%f=dNq@Qj(APDaGN#!Q=|ufz=NjR zy`aeSTO&XKYYIT_YN)_|g! z*?f}bpEe6>c&SC>WCzKQ73o270#r<99zLhlCs6+17R%3SzV#hE^Hj>O(z!bJt|8A$ zC{AM;oR0w?l3`QdUFvxTh!xFM2>Rw)H^t6K?cG$a$L}m0j%Lyk4jg+-!fu3fVI$Nb zsRo_dC^srR)O2^cSeu_F+^;Zs(PH7&*MCoj?6&(2yU?y_uoYRjA3gtbbSt5Clns9j zsUdp_j(ibOgG0d}8dt@=^OfF8d@y~xK6}a@a`_ur3OVvpgnc-NNP$0@fG#Fk{5Om1 zm-S-2EF|xW_!xo(&8`_kJl>vKQh;M++&1oKU&=euy>fmqp$j;XZhvqkGZr+t9-yNk5zqEtyNwGU}E%N{w7wG*@$d_}%ns@{g&)wnjht*{h{Q6sb z%QQl7j9V>kn@bTwv$%G006>B<8n~5kjta7w;5!@wjt5T~z%70V3?7N`NE2$78TdG! z?9A@!RXk+o&;c#o<;V`-?BHoCs0ik=9L);r+@}9Mr`waGc^N9Tsgmx(8|q^JN%<+j z)ZqV`)_opWAFB};+L*x_3&EsUQ!S~_6MXykNVig9kCse-4<#vO*omPxW_)k6^GHHj zRe_#>>@B)fsm}7(=Q{NWMbiib4Z@lXOa2M-fZrNva@tLq@zNsyTR z?izl@gB8FWvZ%k=3m${LMl{u)ROC%ZK$UG?W?S_AH>n@_8vQ{ABks_v@Q2!=E1z6@ z6JNc{x(YFuS=q}f@OlY0dY3^&brxtH;r8UBXkT#*C>)ho3>``E9jE+e*ty3fyyGf5 z0UdE!=NqA+dG_7NoXtFQyZXUK@g(fk=mUE-#-^wkaxN*Cd$;~JhwM&zaIeK*CqwWS z!#v#@bAiLA1sX}Zzb+^IS`_c5igSXco_IGfaCh}2Vfw$YAw-!b{Ikl4p^#Ntdo(q+ z5Sj}>DB3~Db9Avq#GK>M4x{jrbidTu>5>vZ*b@RAljVyCxgSx~DrvnYVwy+J?BM_|@hwa@T8(6(WeIEAuSbswh*nFQ2gc73ZKLhbj zH`!*XJ!WugscfRdfb`7Cs;2QmWteydDIhKx(Sk^Rlo#HSf6U9nwzu{eX-p2r2(9yp z{5)T(lmTdYaO1 z)lw5_&&I;f@TGDs)ja@wP82ECWv{9dg#OF-Lw4s`>_W%a8x7IKuz32%o7ydsz=e35 zG^fdVdMHdBlQ&y|Vd|m1n}lgnq7%b4IA+M&Z(Ga&x^Ky4tHom)`DVG%#_6;ic)7ia;vAG5I+7PTEx$N?+knp7v$9}r$>xm zi;}S~O%8mh{B~yzsTepJ0u`+2cGogB55$C0S`MPqYow#gS79od4A@6MmZA|Tw*nZQ zQkJ8rnQa#t|Faf)+-e%mAAz}1(JC((4>$XpX zuMa|-t)f9F`=-ETuO1y7UggP@_>ZMNWYyLg|ym+V&%zx3q%aw&f9u8;4lZ*RNG2|?E{dv@MiP?_3kD92&v4UXwupS zR9(zZ7?S^M%I7WmrpUo4-yc(KFv}7_jabe0O9l#XIn4Eb2fE0SQN+}z6^%2Y} zUn7l>xqZ&b5PN68wNcjdVf!W+f?NhmhchDyn?{&iTb0tCE$XU*sJHp%#$APU zYt1UPx(-EXYGa2!*hPi@6Wz_!0z(XJIe&6|NRg{49Q^^%y_D zY00=ra;tpW>EgB+YZO@#zc~)kx#Z@0GNiF_ea=~08Nqijot6jo@7?t6%hx#EU~Ek^ zDb2fUEDCQJt`wF_w%p|%+a0{Ax_Y$zt|@tXKX*V7 z@8Qf-E$yVY&oP*(Tzf(u-BM{uFwBKq*50X!!0@2dy$+;k%hA3od6TtgSV zwi+7>kMP-`YxeY$-jC4>${B}T(wv9M^>iT=5lUn+ke0S{qL8o;%JD=)^3PSnR~ za3wc6W!dMbe68#N(eZP1)EW;Y8Jb13_-@a2U295l(VAdI;V%!W*pVNCgsdqZEJBFx z8Kj4-OIkbCtUZZvuH=QjRfav}^Gx@@c97(uL`I9F^vp{=<9Z@Rz_sSfqryA9)PblS8Fv7de z|92SAK(5H?ls6=}0==n7zh&xG-k_kk{3%T0N=mUtUh=YMyJrB2y(f|?X0|jzuF56s z%Kqd-zq@9WLYt3(yfuCR`hs^e_2wf2Y<0Xsl#lIA-Ctr7jFRu8x zt@-RKEy0E&N>L@W>Eh95W5JbL`#&?UHMivb<4mDbCBEI#bxm;(MgWmO{#x34r|9%I z)bct857jcgIld0f1p46!Vwix;;HAUuVf(#3;b40hnn}Ci+=WSc{2N7zEO$)N4bo3~!ausL{d}Xj zX&xGQ7%l+elBQ}f4z(EZq#5AKMDn|O~nX^UYbz$Er- zHkQAi4CrPk!y6ZvLh5!)P_&u_d5U#<^!$X#)Eps@#1m<-Xrq1-EDTT=K4ikls~jTu z+n&uoL%PIU-Okk4gJDf2ZVx87mz!$Fk~FegY>=LN%)-@8<>P)JH&ZD5!5aS9Z}|-u zMxE-Lj4|t6%^kOCMhm91)-i8I+GWfqEafqzS@a>B=YY;XL5Q_h;-M0JNYGEd+9Xr3& zZNj6N?Z)q3?}>q+~$oq$BV+}@$x~&*E$9Y7+JGy z&ON{H++XrasugZRywy6Z+v+}iAts$xE!?Ocb9HSj)9_%FFO zxuHi*UY`FMsj|$lQU5}#JQnLQ61r1Z3CdAKtmAje!&H{cz?>^)BjedCGqNtSWqf;a zW<92SC2h7)N*9snU|d1{+1_Wo@ib3s%@moun8xn|Od^*#)#ESguDhzN z-1_o*Vm`VedgF-;%Xlt_*J@-PP#X^*(us?C6~E2RG$9W+L{RzAxy4#_IiE2tnKYOu zzO;W>ou38uTOQ1IuBnpD-8+HI*i#0_Cg&nGH|J0}dfb?ur0;8F41(F7Ua8G7vYgx73)u-Fm)AE+@~=a|V*?%B{u<~XGs z1fG|z4g+5*UM6>KkM9HZbf6+xxXS7#gzg}fz-K3&kr-Qr_eJbFyhRr@Qy%A~HcDr# zZ1TAr;50HHIQ1zt^#U+@yIhCjPW=|w;Wln0VTjhI=2$Wv)$p)>F5o)41SisNyq^g@|7%)d<7SRxm%E9TJ=BDKCx z<*-YFidnC-5#Ah>=b|VNd|SxLXDVFUu$GlmU8Ay?qY*E)Q^l5XENBc$M-GR2+-SKXd>4CqdbTIKp zG>Tp^)9;m=_B`F{WVW1Kpsl3!oCEz{g(~brB+5`P1r+idln!CU__lfVtbi^ID2<;W z=pT*}z**o5IVofhu-R5m*60xjG?a8q?25ff{WM}p)JQuK#^OEjDi_eY>?EtW zdS!kBQ1CA@CDF0?32x=9vn*jI|%^6-eHhbEdxp~D@3Mbs?WQ`_COu}4(2|Xam!)u zC2uA1MQmcoy|=~-MjqnB-3Zdw3a+P0ak*L-vu<(fg~av5ZjwxIy>gRKGvVwZ27B?~ z*cYA*A@%m$Adm5jMAqRtLg4BCu~wB^OI+x7&R-MrsB7wY!JYXYDXpzp|9st3mZO2D zyy*hXQhR|B>9^X*fUqhc!`QJS*b*OYJ|)l{uHntYHI%d^yT61wx#?$HJkR2%*l*v^ zGLeP5ys_FP*Xm)RSG=AnOZq7DrlT%n%~woUZ+!)}W31;pK&t>0=mUto&;DPLxuqID z-xDnoBZtQEP)}X_uJ$>kJN8r8UDkBTO`wl=vb#0v&6#LAXBdlk(yFQCtpU6l&0$Ih zOthj%Izm_OFdq38b>P(B#oSHYyW8r3WPn#=Np>`FsTnJWDq4q~(p24h7X{D>mrg16 zS8GTkc`P5fQ0laU86(4s7D@fpe45PlnLm114%hF{YUb;KnB{BvL!QoNM^dAh-}{^m z15&{(weZg3K>>UHlA3%f~q_kK#lx^jUAxF>$}rd>*2~uNTg@u~iBMkN%xv$q%Kc z;!Io&Fyl?LU?mesLtgjhfwEDpcRxgD(YH%5WuI2iXI6KY>;De*7OsOQwz4Y`*)Ep(HL<`$T?cbZi zL4o(%najOSYXorqFfrEtgmdqo>FZKKGKrHRoTV4x6hC_#F97hZetO&+ynI;?amp zfTWY~CP^o&MKva=j1M0h_ex6X;?19q%0`$dJGjnjL`LulU7^Cai*rp$!F49Z6LqFZ zSQQS0chctt=x*~TLr|wyq%kWR+#umay-Fp_gBOPJm_dG5et-7wJoRoWECz&q{#f!{R-_Bl-P7{x~ z;+~=j>Ys6dGoYkNg6@!840gE=Y*PM>!`&BkYCMj=4N7;qBU(uVgk{3n$(hj?E8d%* zzm?CyL+_{D+`My4fOE{;F2;6mmu5Zr#5n`C}oYG0{|k`t_nI+=m==oo`J2K?tkcRZGAYWaJBe?3xkdnF;no4@6$< zRXBaVeIODmeJhn~-#@WtcQo&gnlh`wC&cQtplM8=^3d_JjWy@#Z@76>#{h{wQv95< zzd_nm1m&jQ;kH;GdTNI^)@IJ2Zod^4zs2VpZ%Yf8df{9{05l|89OB-o1-9e=0;Xgg zM}ul<9W1y1ud~Mg9$ zagY8!o;&9CPoety11J!KDq-}IDc7VM#?m0Y6VoWvaQA{LomEunhF55Ocv0-7yVW&( z3cY)GBS;CI#f}5ZjLop6LpJa`wL@1r@J^>qhR+FJdK&56pyc{6X88KkDh5vCP0lq9 zB6F{2aJ-LzXXXvAGi0h)@=z+HCi984YF4VSCE`c({hxqjgm;e+;ty%`E!w#Rohl=YB$FSo|8Ff4qA~#m!H%njROL zp~qX&PFy$J_NZ`xvbQ^vl@8B%I zi}*dI%N#RWKHmZ79bmi*njKt>q-q>%0`(I2Ex>DRQ8d~)>vIy$@`uK9Cmkc3&I=~DEActn{DmC1M->rCHtE_8~w5Kep)aEwokk+of zGFp+CKVF84i^0#xm_2@vqg%YpXzST6KQ!eTqxMLm4-$&!iT5Db`Tmg-S zdO-t7H+-|%ovOmi0I9Zo9CrENfHD@LCmM>vFV9V{54q^!)$js2G!Fy9eKybexwr!A zUGAdZ0R=nv%H`hOgyuur(M72 zyr^OR+qoK=Cer@l!Am#x3t_f6qvqP7U3zW`#;n7=Zjg0H@R&vmdK}PjqN>$<*m~PU`Cgrb~c%ZK=$jB>4ENBM({J zfW)D0a?@R?()`$!*gU(4Aw*0?Cx!L1fg*y{3@84yjE1~HYTTnK(E1aa7BCcPocr10 zYr-oBRdDJLxb%|Hb-#5nmTc{(WRdbzzfYWG#l??+me=1uL3;&8-Kaqf_&DnSk>%FA z!sfo}b<31Sv?AUC)d=SKY7SEgsI(-GRP#-nAoPJ>b71V92HIGx(9>ce5 ze6z}7@XDCQ2GfhwI<%=m)#_HGlV)p9fN-1eYE9#y-1M?Ua~#h~9t`^IZz<)))u6$m zMgX-wiQt^%JcHy)@qU`-vIGF4_x@oash3vxSy(#hpkIJ$Rw{{pXsT%Li_(xS&^9`l zQ~K}d=SH6PvR}D#HR;JNG~rE{g#FVrKImQIHc!lu!tsGO9>}vcBJl{XxxY0VUK-zT z0j(T>ip`P5T%B3SP9IcwFf;V=!!gm9b94noIFRs_T=+ATyp|Yc#~!{wuh5T}E2ID=iK*lB9AuJ@{@qulM$L&PP!7Hs~ke zRVs>7H@VJ`W#xm40QoX#EFbr7RaO?nk*#$Hy~kf-RZV~XK|wD)7q{)&PfR_ z3jzvPJE}p5l@#j=0;j~2xJ%Z*jFol1F&Y|0(0HVn<@j^)$_kG_eBLC*tnekWIGvu~ zXE?<9Hk1M0e}95B3A;0SnhUl2g>MAD$1cMwKLJSRyJ4W^0*OX1`@)B-eAV0RrYCG} zAggYU!ErphpAOEh$Zv<>#&EVW)5a7-OAR9ZZN}CmIWB59$rsMGMvG4=(B}QKu?XqH zR7lNm!Tl0f>ZDh3iWBBwm=mJ|4QTgo^rz5z2Y}oU$l=IZQk*%Ejoz)8mWEw~0^n#* z&4jOTEIg&SdcV;uSWzT?FHxLU-WK6XCRE(&9TWhdTdAE2k*C7-(zwT>nal7Epn z%Zd_fhmRv~YPD3|nY^s4N2t2k4a#nSGC9i7OL*(yr-71DgU{G#^zC+9s5#H5vD^Q>LAQ4zY%-bO#6V zi$wT~aW43%JG5yn;wM!~Svo^Z%CZ>1XTfa0rS+Ci_pdpXSAl+qd$bV0h9;>1C66Be z!Q-n~<6NxF?jbZFa_7*Hx>=@SPJQz><#NgkjQq8k5f)DkD(GeQHLyN~WAc$+bEqqt zj4W@fpTzsTtg={367dFfThNK;PXA7!n{x(hk9 zUY9R!HQj}kmn7C%RqimhElE?mqDhIjm3}GMYFmPajB#_?lDx zdf}>0#r@@|T#ppc_DjEen5TU?%mVIQ0G8oCmWY>aUh~%;aY=|R;L9Dw*~>6NGFr)0 z<%ryK9@b)@N0-BL)Ew1#rvTeD>!uBC*mTN$i{hZc=5X~y)?97ssK3appC%Er&NCmn zUt_1R6uDtO9)0UIHV4EkQ6NL8IjDez1|skT^zOuX&7iJ; zp4h(eipjKNlQ7VDCk*`V`&7BCl<7u0n_1IM`@ha6OK$Ee9BAsxZy0-OsU1P2ckN8T zFpODvC;z*iP`%I+bLWIfu!Xwc8RW|Si6L85K7w^W1Bb6Qbr!Bx&DFMfxnHaD%q7vn zf(La??&^iAjA@A^gfvZc;>nAUFJ+%gC7%CV+ZgUWBTL&g;|f@FKCQydD&T0|oV1d} zKatkk4&Mi;(l`g-w@arMSYOUXKg}JELwK|c@?u2)ot+_FTKQhp3c!~iQD@$z9@@<) zFiP!DT{Gyi52Y_qwG!r7T_aLw5XvUhM6NWH^2;5O%F65l! zLkCCB>=}(YKG8ctz-0~wd=}5{Vp$8oBG*x-^_e`RI+GZa3=@|fZ~58H4?`e~e*^3% zA4)(VI=Lio3~&msoD>FUI|CU7n~OOZV-NoDXovs!HQhY-;c3_f4(O>dCAdC(15i4*`Y(0h$Fk> z;tEoouL`Cf_t;lkhCPm}JH{4=eekK|v`THHcQKzhSFf&w;R~f%C`C@pCiCIj zTNBIf;vcuVDflx2ihv?A!dt}jvl0RGYQfwrgNu8QNi%EI9E&nwt3Bu}J4Jl%VrpS5 zP$*bE{lyMhxaj^J6Yf(IOcZn>r%U-;TRC}1sh347t z_fhVzCh4(0K`X@Q3Tfh%v_QlalTyg5_fN&i1?0&T zjOC8`t~DsiByzR7^Dsl~JSPo)q)eBfeZEeKy(~=mS6|p(1i6>@Xr)N|N2HSkXv<=3 zsx_Ri7kpziEpFJ*&Y%Q3yY_27n-R5$)(TN8eDqn)JeK9%4QY5M6PAbC zhb*BuUi+7MRw?__c9NtCV>pQxP0}o6lfP)D8Sae=@coqi{9bVpw$!HDHQJ|GB`p~1 zhmL*($Iff6@Jzl7g=2mn>G!k%?UytZvT%Wn;J*=fW5z%?hpepIv;o!L6wRei6~a6* zQPv(V(#WJV&>@8_EG5Xky(LP!$u{`?MB1#|a=>Ha&cn^WGGzxYpJ;Wnm`X0e`YaDr zF?E_(Cm^Y;=x!)A!#ylF9EwOPJq0yWtQTJ@v%-|8W{;j`S z7pICHY%R*C+j2dLj_#S>MJK0l~SjWqXE(5c{1lyX;B(c5Q@@;TqPGrKl4 zuIj%=PrK9>B$>#U*imtD+x6n86wr+c6UU)S(|Qk?$x%|CF*_>t0W2_^WvEcNYbC&5 z#BAFI)M9)#Yf!;)Q?0elCX$GUqNIiQrKZ1+(LAKpeO}7&qke!9a}2-v*Jh2aF?c{0 z%Q*-|+T2`hc;0#@*d~IMplkXAUsgJ|ga-y3rUUq&6Ype`AA|22$a(sc8BYok)DQK3 zb>h=vJMrmhz?*5(cPv${@f)}tFGK3z{9*|R{tSSxu<#z_kp+)ZHdT~`t1WtJY>G(O z%imPt!)dbhTxQz|f-U_cv3a=~#6nxxJN%WTDaGigRpOibl?hDWt~gicg4X`a&iyJk zRp|Q%zuTj?7;&Fv3SDR~^~@9&T|!4t&Uy#AJg%)#A=31&o_Uw}y$2>-B7dd9sSa-&s;{%^0FF8rzO1c{*roTmThRs-qUX}ap@ zAQ69kcC=T&I;hGkm?!<#>jx48!KqfahegaOLu$}Mm4hiW86}~|Wmw#aIkVt2A}iW>xIM=;VZZlxr-!B-Q1z6;wTnU7Qts=!XDs{LweI z%Wbf5@S&fLKWE8@;DcVy99vS@1=f8SZbn8d{VzkJ{;@BWkVtF~5=rDA2ff73y7;;o zg%9Q7HK`9KEW{>9t7HLoQc_*9-OyC|;oHXhubdL`rT+g|aX{ZsI$p&Ryf{Za9zPTh zz3wZ+CPC{6y^uI(c8Jw^&$+c_u+LvlGWw=Djpa07tHL=yhi#MIrh?F|jvT^_4!^$xt z9dz}IIRws1U?XxPjnMC5Qom2?b((6NF(AYg=HA{Sy=svCHL-_sdL(prM$(@X5|wSg zj%)qCz!@l++D#BmyceVTID;sc zFz^lXPVI4Ey~M3JuE&>_mg{vj1s6q+y}<@l51+dEY&+cNVwhr&1NG8!fKX~T>AAAa zATK%3f8WXpnhVvCPK$t9QwqLYKq7=Lv&vli;(~NXP~ZKUo*zmF(Ybk0o#@#LZm*TB zzK^JAuHCghDJJ@1J#(m{q!ZI5-|hXX$m9PXQ|B4hWEQpSU_nPjY;**L5u{7+O#~DKrG$Vq zg%Kq*X#$}HyHce~?+}O(5hb*M1qi(dlu%TNK#&9iA;bVV8^7;d=ghD9F_$xwcfapm z>silpujJwjgQ#ToL(xA?|J(O*`lzIXkjQjGaJu_fIDg{Orgl-I%Emu<&a%gp^D#_p^}9iNZ2$!`OxDT3J| zbRzwx59Ea>EDt=(i6O|vO>4HI4cj2LJP4T&?z-XUrS8R9Q%PPBRAh@F-@Jgvog;aO z#buC31b-QJG#;9?rzMf$VQoBf%WA243b%78{;%NzC~nJ@ryA|rv6=1fI&wU+BD=j0 zEDBvfZl&GvjKKksoOeej0{0ndOEeD{m*S7Ly}N6ZyZy)esook{9xp)EvF4HAcPkrK zFy~O&+~U;hP|dza6&SL?HTL~kPm z1g6%`<982hby|641^9WrJfSGBrtk_GTGn?*pBcNIZ($KCAodDh?kHMONn=SZncP0T zXS43D)rBT_dljuIXpI-7dqgqy=iIEARN%@i&^{I_fH{d3z>LN1gQ#AhyPlnunE8$? zP+Xgl&{v#QY<)Ko(bY;lAD0l?MUCshOP56?e4!WLND{d_@E`D)$nnc>>%YLXp=6Jq zLHjoQ)<;_N?2i#r>UYss%61`4jamPG=}F@Ww}j-)1ivNWO?NKB-+srG>{6=T8q8XL z=xMyPwPK4YF`n7H$AuL zv^DTH_T`)Ge$r)8$*cmVBQEzYa=;&#ZrMIig_n{CxpPrCm0MJga4!L8sOJ%l2hNJN~|t*>{t<@F;RSDY6A7ig6;% zDUt>yEwI8W9loX}!mr>iOQLfJv?vSRN;wkvReoiS-YNOIDd7nd)3$9yPUMEcF;W|h zJ)>CC%09>33GK!k^m?rBXNH9=9rMV5%M76pK*q90Z07zAc)n(ZdDYgw74DU_7D~k# z;xu|0L4tJAT4Vh`xFl5CtOcKNl(JUVb5a3+H@>as&R}YiSZZ%%YC}g@vg>)cOPCEU z3Rs7IOP68^QCYw3#ac zmwzDdbVJ{;(6xQp?pnTlaO#bLqj{9q`YKXVMS)H$OrgBfxtG#RwPa`g*Er zMy=6e;@GH1k!QkkB3J%YP3@M^!fIYQO0>Er-y!;bQcP);Vxo}O<<7Gw=GOF!$5(vKZeWmfk*LJwB4W-d^MNxhe+H>v7>H{iHMA!S zPVXA-eNfZ^tZk@H=LlXsWOFdylQtUgI@f+rr!%q59qd-TzkYa(Kn}(12{Z_DGzARc>zih;O2JZcZ}2e0`d9|(7rpZMrKS(hUG z*}nHY?VD?=m@~u>=iPI9*QV7y`te*IjJ&=zemYgRty_Hht{7GlRGSz z{w=7*Ea$v()$5B6uN3%;L(?*ZyxYa+>@hJB&u{mHXtZ}6Dtp>#9f-W!rPN?A`q*rK z?d!j7Gb;&6G6P4|Z=wR$g$I*8S2aw+CHI zPZer06anl_>E{W7B+Hv z>)H07qm5A>>iY|vsZVFr57Pg@28S0KM4NCTx1QgOR{plMu``4dwas7pIPF8E;OPPo zl+-1Wiyh$Dh3y&rZ0`XeCGrITB#HE&W|1az?hec@M%{W-Q*|Y{nlHWe`pT74u!G2u z5M*fEm5r{Iw4~upsQaHOeEVLEbYQ!E<>&j*?VGvV&oKYs71~<6C)NXp0XB~{iM<=V z|KqbOK+6?XJ8IkhU@+68@qtgxwm+Tn5>wNfiI{5VWp1{QLqK!q{p54~Gg2Ev`49 zlZL*yW`e2a!y6qTF8^*l?i+PgGEDF)i`}o7rpGm`97r7d4MCgt#s@FCb$WZ#%{LY# zj?O_E{iS-Mw$pSuvE4pM&!e0<3Y~MBC^~tru-?pXLYs2{jaQv{cUtL^PV;*UHNq{aCq=JYMzw= zRl2TM!zl*NO`~7weal_foB7G>-IswZ5NMhl2OYpb~IHvLJUo%N)D9)`bAjBT0^%S~i<4r4vC$B)1=+qi8%h=JCU|QgomcX*&7Eh(CH5RIR&zhO{7BN zsq2Z}NUyBnn@#;;c{2&wu%<6zB~ukzfwQ}FyhempPUzvI%4AK{iVd+M79E#hW^R$7 z_<|T;iGWq5ObvV&hS-fQ_nq`W>sr;(tE%jc)gdU3I-5VxueZ>HWRv=?D@>`ajIeMK ziyCG2VPcWXqPftO<*Yc=7*wBKuS?V4#jc6Epn;%uG)w zQ#>S_>920R`0PnOsuj)thqx5gsoI6A+#Q`^rEjlaV(LdRORrMa5T~kot_C)bL7DZ0 zKM}-hesP+P{w&69#jRq$AE)YxqFFw`dXNKBre>o$_Bi#)iWbNn*eqA&A|)K-WYzyUSw>j%%tKd&>=Zys#uL zQ3->7_}}LoSE39hK+a)^8E-T(N-M@#j|hE6YFARBHG!dAky8 ze|{CjX|%AgKNITMX93Vh{%3rgAMf2Lcx~7+KUIE#i}AwCE&8ME3^jAi*8Lf)U1hdH zv?6LrpSd2_BFlt6WOFaDU9Uwg__r^gGB}0NS~%q1vow2J3RiCSq&n@bq_g9|KQIHQ zRYtg_u;s@473|`s@$ptdu1L+qU5}-F8W@ygN-h5m4J`^T})ni1AItHWnOijMM=qps+lrl}PNazm=RBpGfBY#un-7uQoY z3Ldk}pB+OA@*1W_rhBDi?|t5T&cl%J{i1bU4X*la8et4SOuP4#!{s~}IoHMg^!#pc zoXNAYP^IIv?J|yAsK0mm-Ea2FDtkA23{JG<$jSPw-=S9b^7eSm@zT#CP%2)OPzldY z*(N8v8;SRO|C|D&^%!smb<0y;z*hg%wJ<#id!O~i?HRo296@Qcv>kWL5P z^-@Bb!jy{lCr_6?p#nfg0)Y)Vz-?`6a8u`oup|}798i_R-skorTjIk&KYKh3h_v}zFmoZHz(x7HMIvb0^6 z2UG6p^>G6NM3LtYbf>H{RSv>elD%3=VmYf;TlxfEu?R9r5d@^dIc!i?BW!T!v6HDTrD=a&y zVn{II(ZARv&KP)-LSj$6HxRnZo=!bOla^N`$PN*8&Rf3z)h24Gm5z7#!V{t%_H&*c zbo;*_YFQmhg9Q(^dhEJv_<4_z^XEU?=g8D-Pw%eK88Z|cw7j$l6`sW2vC z2N7!AZHZ;Yv5diFy|#&7QO3$_=oyc^K;tx`Ke1ASeC}h=MKDqfeDf}Gx*mN}qm0+ zJ6dXEv$b`y2dF7-ZD#&AEkP?uMTu8NUeoxnFh|IDXnOU+Gp-=6EXYqamE9#|~5Nn>A#H^AkqctzK%ChP*oHVyC+%95{L5I^ zDATD5l6epk5_Z)x6^X4KkqsXAK6hy)Gdt^t-<))~ZVjJ?pyIIcMZbCP%Xh$4YxmG` zIy9no%?dYJH8KQV%&Pm?m>N`XRS2dlMgOq?2qAv;8H-8YsC&E7vvWqsMEfc4_h) zkMg-c>WJ$2s5n9ytNUV1Uv<^w3jpT>)E36#UGLO>seoCHB>rXdNRG=1K{f~8{EfD) z>Ef!gzc>B-2+Y9j^sbt0fj#r8+$d3;K@tsj4nB`zYT%Wer10IKDGq>cqpk1GX%^Dr;?d+ct$t5OLav>>m2puEk6(c8k+Oz znLp%)HLE6ZRDA9Tcn0E0JlqgMK8?yZHv%aXg3Sj}QfZAXpL6siQ44`;o~!f?Kdo_# zc;;Vy?qd84T_j*N!8f#Op4ar%+wR3p?SJ*OkS)IY0XLsN*YhbA`fb48op0pVn zRru3DVWIE^`>bENwsbNC;&C=#!5J8}XQ8d|iMB$G3~QJJeuUXS+*h@PIOWa94T-o5 zSV_?RAA#}?AK4?to(_VEs!8NUxYz&rGTUpnj(>Af3kTdi@Z^tflt)ZIA zZ-mT%pcF}(?WgpM8$#0*l^FcCOloAkXXJ~vYuRu$S|l>`Oe^2_HCQJ;EPL+pb)IRl z|Kp94!2rGBJLCT{zK|jWVZU};2z=9vt6OQ>&7V&i-WTc36RX!TPoOmkBvUy+BG;0t zzo`UOd-|F(__z%bb^m50L#*nPA*QCrGIz1{W+JJ8;J`@?L*2E$n5rQblIFzEhz1`_ z4GG+j#e4Xw*`>;FXz?n6B{h!!Xc~+CZyZ%2zw;3HAYVtn!T11nb={Yi>yiqb=FNjf z_?&}<5)8pF$4eAY&?b(v`O=A7#+SzUz?&fDw^qK*ZV}1+Fau>L*jx~ZpLBz&I{5fx z&aG;lGc|}>y%N^Je%gr#R1IfiUZ2eb8G)*AkPLyHKwbSe&+lIA4!Z3Fs6 zg>RO$0*+nLeZSASOB%@I?_#6bhb8L~1~%LWDV9=z5IKQ{A5NTm=A**oqHoJ2JsjMM zKTDb$ZR!Vk$c-upgtwFuB1$FiWxW{k^9eAJ5&-$@*5fMbNC zqwOZTP%);oMx>q{ovL%y*EnLJ$BN}GX`RsJh8&J9*bS=ToX`$tzQ@Qt zL7#mN?vYlBy`K;-I-lHhyJ|^jxu$V@%h#>MM2$mEjdOm2AH8nJLwNma;nP<&(A7Bd zP?YU^CJIqAPXf&Le-stWt-PJQ=Bp*DIGl5l^8YGej}gd?rfE&%)(kmXc9#%HBR5ve z81o5hbbA~h`J(b4Z2^?$f4>0(7p)4uuDj#m%zA}gRl~9L9N*7MP6oxGB-%W6#Ko7G z!MYXx;B?zW${+LaKf#QbS4z{DMj3#OhXz3)nXXG8WOgI4CofLtNM3IxAHY>T3*26V ziTLJpdy^t)qekkJmqn;rIXOPf53l)iK~_T%*OxkgJDrh@UL>r)ekQ!ZoG24TP@ID5SQCRGWf8iO(_R60?7Q5143`1fHhajtOM#K`n zw4XW6X2inxIly)02a}bWY0l36A~sE5wj!6TJR~|mtfAb^&C^F#UiBuhAN3u<(6*9% z_s7IG^+YDuUYSzgc88uHg1o&x7V$)z-(N)^?Uz-o;o;mpXT0C=gBics9hn)(*@-pJ z@Wh$w#4>8V>P^lZ2%lhE>YTC>&*-bJ|JOtu_4qlDwgOZ-H=&9ylI8UF#yn>hT=3(I zGq;?&4Hn(qr_K0p9lC~(!pxCfZWVCWOknr6tW@vGa=LyagZ|Q;lI2Tw`f_T_4hsZgWUMJ zg7!S$WWSKJ09}0maSgi0ri7J;jva&wL5`mmg7ma=cNT$KtMbUrszuy{gDRqjQ3!*1 zXe|GzLXE6+R&?lfA~0KR_X>Q^k>&!hwIALOZM_kF7n_PX;V}y-EH1Bh{crpJo4dNJ z#sE%fXWZk`Y0lKubMo(ONWp_K)Zg08?mdU0K6b|LCVUDl^fFBBn*@1VR)YgILC7Tk zKp6eMi(mW8;k{7CDRcdki|Gka5$OE8>iNeB>eI?GKZ4{!TRqCmZ_9r4nnkNue^yT= z`UX)lHz>wOaws~a@V6gyjUUZ6aBCnYkt)pQ?o^^Mt%n`uXrJRnly9T^9s1rsGNugs0{e)5)?ODSK7;ejnHor&`JHXN|Km(0gA;N- zd!Rodw0g$1kqAF+vaZW)S?O{shH1I0Le5@Lg#bZxRI~K`(0!aN8(q02cKL+t3)ISu zr(d6TwsrV++UfZ`T&FPGzHT`z`FX_rWUpUNuxMPJbZYw2aD&Iqqkawmu~MWp4| zU13D}E8N-e-4V#evBe-~p1j+aB?t0;y{}P7ekr+5j?5C>2U+E< zo#qnhokn32F)Y-#V?K2x1dhe6crqaAe&2k*(Tq60S$R5;dhGdhHcqJa!Og%Kd64VE2JU61aj#TiNrd8qZP=h*1&8N7gM?9Xy*A zkh6(=d!h6QjI7ymV~kNr73<~X_)tTGK1OB`ZzM~9BfZP92o?5j5&z}D&pwo7^g-L zphdJ8H^ewWL?Q%;Ln=psjWGXgoG>WA-hZrQXEa9}h97`@ERY!ibx`H^n%x@87a&0aueZF(|zm>o>8-H9s+jc{#;UkM>s zJ`wdA0&2Hemq5)5jmEh|vGWZKBs=zh$m8i+v3sh2;`ajR z$~wL0^{WNe_mvCjs6B)KI;8b1aP~pB&*x60_k1bB2x#svbk^X84D!+^3u9k$CGaf&eLg~H z4#T`Sa!5snO?3Yx*beg1|F#W)s!3+8l^)heKUpPm4{Oil z?Pgj;_sKaoT0quzvpmh4p5Nx}JYzOi>)@lS@a#SpPh*~#4Qn3P`8!-!Hr>2s0(Iw4 zwd~^G*9i7~D^@0!g$#4`U!yd)==hWm5Sn=)gTPq_Z!~ieq_VSZ+@v)gH*)#1dgeBE zHRROfaUM-^kKwOI>#q2KCVmdVyZYmGWhg*l<}{t}X!X!c3A5z)gunD^ii|l5;kXJ^ zbC4Tk|MO0>vgS%+85aXT86*a3v);#YVQ5DPa9g!$H11am3~p4)M8IFeaX+4PxZwRV2HRIyZUq+x4`uf@VEP9jj=JyjTfst!L!Y93S(mY~2^{ zTQ|gXS=B0CQ!Bm<&qfLl`L>8!kl^)AQw2BBndi{Fhv~ zoMbvhJu%92`%qAu{xO~|q?=ERNn%F@Nf~*TO*z4&3o#uKzZ~LCILxa{TEwuZl~H3M z&BpCDUoeWOrFoCgY2g8HXWl5CPf`SjA(Q6)hQx2W`M(0vlE(d0QqgN2^-Hc37hqWO zzCMrS7djnaH%1tT6^hhMlI~t+t4q%umG-2aTYjR28Eu|L9eZm`x!X$>G!kK?9d_~! z^jX+Va@EgIjd;r&NbIeH99Yk_ZJTq*h^TeeRAEC5A?|rNe!OzW86zvU!FqN-AU*}7 zNM5}ul2b&3jXGgi7pYVl`Wr3T`}Y?0`-)t`Tm%n{qK?$x)!pU>oq7X)`w$W?1IhYiCB%e=}vB z$kKzBjXclOC>O6a#>;|1;W(&eAKx_Vh!d;&S_=j(`5GV<3~T6o7GQzJK5T6*WEwCVa#b|80Ej zUayo|%o616juM*XgrqmO%#|O}oKvm?nH|OBbZwaex4?Km0LHQI4^*`YoK6^q6y|f0 zKC|!8^u8y66Xe-{S1#EJ)Ozj>GIVwJ)=S0 zVxE~OeAlk|rPqB$xvS|f5xildm?JJ~pOmJZ9t$H0k;yHgwE4|b8!`}xgzDZD{GN7Osq?F2 zD8t!rdjYR!VdWFDt9yA5Y4&z-OTgk%0BU)b5eio= z=?qAqI>bx5+8Q;TEuLQX!8M%#Ne3fqvCo-8Z#njESM2+-uO}RosEx(?4KT6q=zS~V z9)RZ~i;u7yL>l}d<9Ra2(jzV6D{!VU=6u{e{YPidc&&dv+ZfO2Qu=1MR-B+cP*sTS zTU3-+jaI;u&(NsHhI3A!MsS@!0^7!T^N_S7He`nb*6m@fsC@$`JsvlF39FciH|$;$ zVgv1v>726AYfEEBl+V0ZlE4G~o_@C| zR|hu-q(nx~EKf6L{aYTzXWur=6Sjy?pJ7V61(6y>!{*X8jEBYNylKo0G5@^u$RxXk zQ6Q5sr?kv4(No>EP^wn*zVJcown2qWPX$D#>-N_y&9$miKIl8it;(&GQ?)9e>r*F8 z#WO|9LDQ5E1Ejaa^vR*am{iiG%I4vEC;igUwsYS$bGhanejg(mIX|osGP7~|{mLl_ zc(kQ@vxRwx)ypEXFBV+jZ~vJSXUfXe0esDc%PP!JuuDhyv8?&8jyK-em%!tSq~0&s z(4W%A-6h453aD1WmHPtkTXKR$Ni&z#*^e0fZvcGdcOC#mYPQ||5l5;;7Cz#JlnE|P z2_ixyfSv5o$P4flMGnf#tI>EBGb)v$x>(YhG7uz1_VqXEEQ%&WqK+RiZkvWu5kot!~|G1vMH)#q)n=E=&Nuy`eiI8U`05 zP-Wuc-C}bRGMAxAvW@bYy*tOia)4T;%?}S>0-TXYldNz#$H%3UU_pW)js;nLWLJ_F zx#KW>Sfvd0DD*2_{+nlSI)WiQFl^?wsZ7jetrt>usPg#WwmSm+u+q9VSIgJmTQ4UP zCmv}Za}A11cb?b$R<&hv5&|FI+dtR)%inzC&8bhkzgU-n&VF5^jH_S-y$0g_$B>7v(=UcV zWBY>B8*-tNMNv@QEsWKPSn(gSJ}3k|>-JwH%#!O3%)rwe8_wX}O`hbWl8xGYMJ(-3 z6i-dv&up00w81=Zm=Anc77>4jS6(KQOZ|Fx?N*A+=_P1V<;Zkrt$T8E8gZC9&G*q? z=kW^>v&Nd0KsQ?i;bAhq5dq|y_3k{=tNKaJ(A1|h?Xf_o7O);{HkqlmaxKyDzt*+a z52Q{RZmcY*#2Wk)okZ zi!JT4+Q>`sfw9}eua=`Lr=D4ml#WqayQ)?TGs-ANxc05*dmgNO*)IxjdRJ^1y@Tl5 zl-^ahiF?II)T?5!?G0rciXPdnD-AMWvXVlq8_OxzezC92ZLASHbOE(SKyyEdOhD!D zu|>xMF}1FKqlY#m?Q?Y>fN`7JpF7R!jL;v?ZZi`gbbNk z?d z+w>kFV12U*&K+|^FgU&+{Oi!GC+(VFC$&y2o9mhOr@3cUQWvNFF91+P*Sjg^C+Cow z@;vJC8J{DgQvs}xAnW&QN_IX7qxy%agqk~7@THvPfx8F!c(G&TDRuC-qg(8uV6}HL zLXu4rv0x&3T_GCd^uDjvNaS??MzlmtY}Z4V9p|)VCke1paK2+AF8g&BkQQ*G4q)`5 zmD%Pj%AT(3qG*UpfK3!A^(swU_$y8bRsRzp{s(()R|z-()KNOt#-HHxTFRajJh&doCt zSxR(}4s3Ii$1aD?tUzP}cq?LMoU5d3sjB-}Q5K@>WWeJcoDD4LKSg7zORD$)Uv3|2 zA~qtyB~T1AlH(9S+Zuuloozw?QONQ7DV_+i7aEuM$H=rd#I4Lt zpQ2NMz$|jlNj{6_eN{pg@*lx&sV#cNTd_K8Dd6!>O+S#nuIQo0?arx;p%@~}u!;7! z!ozX+!(bjv1X#W^mu;WrcSsoQQQ>f5kdMdvyXLJDKxYD8niBs{e*f;#@#mEbvXd!v z98b8aZJ4)Q&aB{nYqq?6AoS+}f?fFE=7qyR+@z}B+;7+-f#l_e+&fTgBm{ZlEpmY& z1+Cqe^~ca<+I!b(F0)MMs4b=*j=GerJHWg>d(1G8pM(aM)&e&<{OV2>q=;WfyzHsz zB?a$l*a3#q!oA|ygH`wH+PAEhk~&Wy(xE2PCk_2(lVrvZ+)yBIbmyXBTJS(e0s(SS zfEk(L!Q>Bj6|K#&aC4|K~}}YiiSS-6}gjhsK-c(3ThZ z8WVf*L6TwyWV)3fksXdP`Jz=Y#?U8rO~@8x3K9&Vf8wk|)DEjr0)@Q+j~+q{ZX3G* z#?xW9a=P6#2S`(F{*Q0FCSI|n>SSMd{XpxHCd?WB+x8UL~|A0sQa;tm>OG-ylO{Sz?6u z9eXu>0#JZ&!dsf&w}-tG@7PD@2x&adTpl^oDZ3$qwgQfC_3&$~=c=6K$QuV=o$nk4 z{f|sg(KfSWquBJ?lzYn+g@uS2xuem`XDr78ZdeM$B~W|q?yMnSHS}xRB(4mOZF1Ut z|Ef_H);QGQ+FxG?(~=3)Mb~i{^1kos$m2VAbavM3v3L?cH$>tpQ;S&$>bUfovDjpQ zZzweCifWsTP(%ZoO4X8Y?e@;XvAI~d>@H6Vk#5fX6Ho#hLKZ3ASjdHIrp`*aNgWBC zMU1UmJBv-pDH);TIAf%3{WMj5Br(3ZoH16nohtpW%-5{gn0n*?fb3ac9VE zt*C1c_RcF{A668CTs#1FhoHev9aVLU3VS1b_2=|{a)3A3q^X1xa#K-$8rQqbUA0zt z*6y};cDF(9eHe^>XdQ4zA}Wf&E3n5YM7B-6KY9P53*hXlG=4+){w>19g$g-7Hvd7s zTq}#criICE^C~#y7Jds0=AnYu4Hm9J$hsG3|wN`)t9fKxBT(Y((B4J(C@)Qhw_X^Y!D=U}8T} z>(Mj|PveZ~{^7@5j5eX_LykKBOG|%A3z=U!TmB5Q8HTm^=e*bhp*LZ^M3^XOf_mOo z1Mdmm6E$3S!MTDz0ix+iLnjjIy*K&=UH5-X1=Kkc#U?)!amtAdf+rZfle^1Vf8J(k zPrS1U=*^Zb5uJ9>oX@Y^l^4ewN3+}iIW_fB-@*I99$^_r-r5)@+l$c{b{j8WifvNMAHq%F3h?YY%C7NPo)n=oOf&a5Ei?=D|OQ46E843 z?2rQ@#GOP48w(!5K7kv(uL3FMLRz5Q!(s;Y(mx3vEMEGVL$5LgNA-Y-s^NaaC4bl2 z@2#9O*Zd&-Xi`K zpET_fp*c4PT|ERY_jIsH%9v3!`k%mvS@F8h&Dx{>ZKkK7AMIe>vBPekWU#deFvqus z>hbUk@^r6n5)i5TrSK`>NSNZr)8g(wT)~JnMhZcMVss}As0qeH7&Gz~I1WsB+1=Cs z#71&!q2Ko{(uKOgAY?2WHL;HnR@b+MofHeN$t^~fN_P3y>~KQpM%f-sNWUkKGMeBT zK3MAem3jOIxUgPn?Rj6|;Vnu+kV)uT)2x!MMPlSv9lWM9|W6v){{yHp2a^`%eLwh8ikOjBt&Y;tBZAZ>#5xX{=qz zwpM+gvR08=+dAI}im-%PBNQ3(+u_L58ck)9d>u7lj?2Vvw&6NY>x4YM(`bPUP<67` z%5aiNTD$d*Hf2$n1x57E&M9Qze@QY!Dz+O3yVs(h`woUDd^!q^u_J=3#x+cy=!9@sR6ukjbZ3ep@7~HJ%XT>s;kQp939!$EkcM9uvgpG_$riGH% zYft(c{UYhSX1yUaySD@H0tmd8m|t4wYh0ooR8xBgT0DEBdj$jD?WyY}LdSO%VAcdI z`L6(Ev;X6si$^Q*AjYxtuAFJ=-PldNs1yI&-JeJRZOKqrChQh>@#?#~8Q~u9jT2{| z)2rZ*rd*x;7$>P!Mj=zZPk)BcsQxL;H{0tLbS!68Fj~n`foy@b1W;IrP4`tqjN)Kv@{6HiX`upGtp z)Dro?mO|ox6&6R!TWaQGK(ta~FfI;oy!SVf;(WoD(Z^Gm+-#EJ z^yU@bE$EjgLUpu;l?Xqy0h+U$)|QF1;nkbnBwxblv;&%KcJ{V8k1j z03bPx`-G?Ro#!?hJrl8JcOInSH6`%mr=5+ueS-G}Dc*GFjK>tpu+~}^f+vOV z(m!l7LIQLB1AG|TTH|7=_{|Uf7YE_J>8z_IbZ=U#YO_CPYL?LzFtykZ`L4oO@=|89*P~5x(&at4diK6- zWi!H%;M(t@4|!KOOOEi6$xSAm^kQ@BiS0=60L6e1VGfcr547|RGFfY)TBf|dvFXc9 z!|$Wh=sW3LZ3g4$O0Azpb2q~CkFB^4e0g~@L*}%C+KiOxw_xccmk?mtK&^kbqDIzq zL4WNXtUr;bxe|0NLIulbejEO6jPg>cE~BKz)^8EG4dI+*)1863zOHmXjRBD76$IDP zg{;{)sh0Jh0b2Ug$|c!eJ}uoVm>tfTQ`du&{&AA$Q8hI}yJ$Y3RlZ2iE)NxhJoD+P zrC0zOO5B11Wz4pP@#G9y#vR8Bxo$ZJ=H7=w9^PwTo4LL+ekOyU37&eQKI^DwiqjX^R-CPiZ^S8)7Qya%Mcodg9us9$wu^ z8~Vuse9vSw%uq`9bvF($o9kp8GIP|&m?f@p^IG&#u*}z4tzfCY(i=V*-D|$tH8F_P z&S(yK8(ywEZiHK?3c9Js-^49zf&Z$_K`+6^}*Ri zr&8goW4;G|=Iw}Q4@{$A>yNVE0df_ zK%2zQ2bG=vZ@vFk&%w>l`z`ZiP3g_Y_huO=24_rjd@A8k+unh(RnVSAQ$C?#P+JgJ zR7@qZwY1d5E=+ri)Ucb}$FxC0fK5LV6FsMuf^xsf)a?iJ2lyZLpg=cQMMeomd|}Cb zj=w~&GfdvX

?WR5G33IU$&lY;AwZdabvpG+Ue#f`2{<2v0l)G|4wT8j+HT~vXD8_(&i>JU z^zE{VgkhkwF|FmdtO3tX(x)56(V&m{0EY+Q7EffUR?7S2P^wAAt6Xe_vT<|`UnXny zOQo&Z1I*4TO9u3|4uSN#l4ZwX%WH0?BdVDD$rA!qwagF!wJ+GmhK{IR?ynNYi!Qf< z9dA6nQQOtJR8fsOqsf{ejOi-xq;mt&N(EVFP(piD)jX<^=M54OksB+v}4j)p_)1H8RH)Ey&?qMSXdF4 zSas@4IHaXt6AJY{-qHIBwH};YTeD}Z!+2hvUq`9$`H-sR!QP&p74G-aU>+S)e55*5 zP-lKK+SMO%>#u7jv3p1FX1)ebxJvg{LhqH5@?E$8rd*pkUZY?DI++N4)7uyF&n7w_+FLi*HGkK|JbbP5L%# zta2hqk$U8{dcWS+W9R+l+@kcd7jBzB$$S6ylHW~5#8*#Y4UvBbv+8M7e&gAUyO?_q z+KTzr{v~Ie1ij%0=S~keo6yL2Y(r+F$h3x-bHY%~`d_vL!^2ANbOoWYtY#lpo?+FP zB;2w_&o;wT>8`lh#dYrr-3d{!LEw6JIZGVZt=6YEls(_-(n{HNq!1_JLf%ASZ$>mT zG}H3+#dnf&Sw4+guNP ztSgydYZb92it8N;ff31h+BrKPxctug{mFT)2Sp5{=vN5>Bp$k${7%pYqXENNMof6C z>n28|Hfm-cRY%Jy>7!sO;(@tfvB_bYR^#0p+rIR_PdEx$F-86GaNysP#OH8xNB2l)3@5ZuK?suj&$m}#v4~$hXUv8@>)!&5v+1Fn-(?aFTti!7YyuSg*@_PMzGpA zEdZ?x5b}-`Co{xMBKF2&k91<*pA2301lsfU@IceaU{3s`x)b(!_52Em+WPM;ceL}5 z{_^sUJx(EG00V>lX7MhXrukr2k7O@x-=)K!S-sd_oOMZE$=_1C%e|xtX9Q>|2II-d zbXQyG-vSbBRj^(7xK?{DV5tw{kE?~fGtpz2P)fj?3Kn2I5+^t84To;`L@je8CYd8H zos^LaTvZ9}&G;ShIh}{RzwE{Wdu(4~xo(S;!l0w=+=00n0@Fb6)^@n>{NJ{reuddo zm}G(3Lv={k`fV&Dr0hr^nZE4jk*RC&j2%G@0>O3APtUhfQofz}8uVZgb!UcJJ?H;Z z-Q#dU|Iq|zQEo`cwfs3Z`Dw4TeNoe4hMvg*Xp!p*&NbpRhl%L@hF}dVK$hXRoQ>4$ z*MuOKx`o|Xla$z5+arciu}^O5?}<7yXYH+l+!K3?S$@9mE<=>RK4HesJ)v1N zb`*EdE@rQumq3OJ`krv+{Q(w;-5=?q+(pJrJ-eQ;kvoi$a2n&CMufLYT5bQdrmg&`a2Ht=jcJEnP6-^u=@eL#mW($fKF`XD9nl^Z%>O z+Ase*e3X5c))>@mA3y(L;vO78VR}!)4rG6K zkHO6sh+{$LyNE8o(|xSLdYNx|UBAqtdV#a?_-X4wAh+&r!o?oRe62(k6M&(@h_9NQ zCsWw%v1V9^zn#T+xT_t$+vSQK*YSz7wTRXy(_iCn)Nn?Hx-7ntU7`Pe*PXl9O@3#1mx+P3Bmj1Nn;~!her|`?PM{_($vTsM4v2*Woo~c)N)?c z%~MjYCz1yHghf()S}xK2_GVTu{Se;WbTQx;4Z2R>R1DSo$ekq)2TV$)Lxf!m4!{{oZzdk^J$cxbVnViMn zR9o8()(Z0Y%Lx2=wxL|idfr||ULy<)j1v(Z8HF``b{#o~T6j{Phgj5_!ftxDm?nN3 z|9GTArpmCfeJiV>AB7%-w0ORJ3Z}Er%4n8eN}4c4J%e)5ihveWXRd!zgQUeN36s`X zg^`H^P#F0T!tZw$&2Al=o{_k#euA3-DXjOc9hSha*fGC4)k;F3F)nbQ)VbBGz(&kf zHDwQqt~A6>3adqTD99S%C6p;Cz13N9UP4cG73jd#-HHnkf;16=o81V_#~@$$jx|;g zZmzkPO7lxiQ&lhRk5Tg)h#=`>q{W=rYXasi;?+yLriy&L#gvDBP85wElK{4dQd(ME zYqie266=NQ#;b7HFQDEg{>okRGrA>-TxN*Wy=fesXG|4Q*{!pK_WpJOlMx9bZ^6xJ zrKWJK^s)Yxq9I;0?Y)`CW=+k?#QI&oPxoOLRI%{8XRNWZuRJ23&y4HUx78Q>ai3!V zt2}P&QRHqC>b{G2wlZ_vq5l6+_1@udz26t;ArT2lB+(LrB#2HBM4f~ndhb1=1cT^( zB#7uKO7z~l(HTQT?>%}q`skz0%soEe-}Bsi|2EHzbN0K-T6?{FySt0g&QNyR=mRDtwY0(T z0iC@>w9-Y4?mK6Uc7G=|q(K7b*B3GTae*povx?xgJ^rZ^(*7_Qd1MH1t%D z@JFFuZ+6frYCW2L&%(eNMkm_$@B9PyxE$(8BY0wWV=s)l;%Q$3}1Jv?!h34boQ(!9@F= z&Iw}7%^JB|_iA$AlDJ-y$F1|Ziaq2_iqPEHvR@CKyymC*>Yp`9uUf=qc*ZkJQoy?C zmTTA-ec$5!_BQ)j8bMSwJvdfX%Xy0#9E6u{DabZoZR&D|Y3#nhufPeWgWu-;zHxJX z1@{GK-9;=n=Q9xq`Kq@<;oGq&)u;rbw`fZvui%Rnm^A;HEV$}oM<<$Ask?1$CSqje z0HpGmri^@~UnV0VL*&~heTHRnpll1~VI`uYRWotbB>~0FuZ!Rw_F$Llhoyjm%yZ zf-4> zc4d(@XxGPI6T6gi%Ni#?&jcK21b=X1UGAJ`i;Y^VdMyN8Vzs9QQo5WbCaSI_3P@;`hQ5L;BpBF+Ec^R4Y4lsu&I{(1CE!Cjc zTh+Z=uW4G8rF;P%75ngN)Lf2^2IZB5yG{U4{t}cc?q(kN7?+S7`dvK!01ls)u4Kfo zhxc|*taCk#kq1*Fs3e#zcQGsUX>!np`;C4WK5N;5y=}r_C1U$(m_@V^+GGqTsx?>d zKX0aVt~oTcz*-|k*(cJN=doyRBfqHM^OD zZJLKnO6D?=bP33v2gCfkMxuuIK1mjP}oixGv1y8k$A6wo5a*TaYPs`@^!RPF#HqKCQQ zM6UTLi!fRa@g2OWrBQ>@-;toLQD-BE_B_oBg4Y6f^JSP^Mg6CgJTJy<7r?b^-_}xG zZQKHa6ZwJ^2AmIF#S?oS$Dr4m>DsM8-*=z))Ov0Bp@@y^Wr6)kuFZ3M-n+5p)nbEx z78&Qt*YA~lN;6iP{b4@NjoX2v86#|re{`f*&O96{e!l9Qp8?jqo)!O2%iUu|DIME6BUH}aODL&0(xUL z&svMXJ%43N?wTXpfVJHl3akxtfg_^{zeDO{CpwTP*|@s#P~A5Qo#P_&X*bJb69Ot% zq9o42nc>ozU!E&BZeH(jao`%5SpaF2pDi-rHo{={6yizXYI)G`f$zpIWFffpHkHF$ zkU%l%AOBjLx>d%7jc3VapOQ<>Fx4)!el8>$%U$Gfx3bLm9=v4wIYXE@+-m+s!9~jM z8zTX%M(L}Eri;8OI~oxr)1Yvnpsth;M8)86xy~bmY-z!oB0~2u9|DfAw9eV%I!n^M zA7`!^^6B7ewIsVlX;d}p8pmVpYH$f=M*GJcpSiY%8`W3hP8A0e&oA`dUs=FJZ(2UY zU4x|1EzdU8ZGczy-rUkMy$RB&rLi69kk0srE4=@hqtHR%D9U_L%=vp}VD@t|65}y| z@&TuBe4~+E_0R#YX8h=>0q+;;lo$4nRTmcaQqxXsXx&xF6arYC@TEtgxo?t){nW0g zvrod@x!|9|E+^Z;DQazb6Aouhocu-cE`N90w^mPQ8UCGd4cxD5q;nFjjj@aQ*^xs} z1I&Cl3jl9Z0t-RltjgC1)m{$3tJTwLIVVV5OlkcILss{3qcA^upIRRA3192Jv`Ek)xEqL&5S zx9=u`Pajd@ zwhyb$+b15VW`FkUg@u1QDjZ8vrop>X=($CSN1ef)U}Kq4;ZGu^X>mftA`84k7gFGT zXCkZ~3g}v2&Tvp&SG%e1sTkbx`v#!ITM#SDgKm$C>@vfg4z(`E|sG-w~ zH*I#&D)COO=^!vGx|Xb3VSW@ryID8GcTccXLYBw<9ic5yHk0@#=YshR6|wrI43BAY z><+T1Qmj&{UucxUrPQeVAtZ5kkMf{(WFSkfj`NK1>Fw%>aKbi>)|ueyx+$`VGdpa; z=x7qzHphBNoRCN(KYL=Ni480zxxB^bYGTT&@F&@SPOt(P64z*6Z?gBkE)~w{9(j4; z(1rO9>+V=}x+ESQxJwWBje{I?TEvYl*D_aZ0`|)iVmo$cv^GF@; zb5HoBAPQGw25vNP94+#AK0(n#by&cGTJlgkUN@2T{lE4+}lY=w+A1P4p{*1aB8Ax?jD+NW? zlbFobzb_(Pvq6B2P2o&6>5&-;cnh2{N+=-2U4r@=N8@M(cxG;T)h{^lu6uj!KYZqS z*XT(HRKrwSLm&p^Z05jg00LkTk&B$%`mlSLb9zD>yeK1{8uyTPwH6DxIx*9H&+h=C zmo+>wyS#2%MXCk;>Dld0!t_?_T6e)cjuux#r&e??S;|~@Xa$-IRDFVno`TtFypZmJ zr_X<9ri|cqiUULRGW86XZ#TbEktYA>x>j0ur!&aV>W5%j3gTxtk@Q164}mnrPcz@m zt7gdU%5y|UK&r;rEwop@)!C4VK{IgdWHMb#Yq*_>OkeTZGROV_DyxFw~k-V@@FMcXl+_8@+K7}<;?2^qN$t>$w?t;>qNPFb!&z6 z=^6atj5ncC4wTQ?imwNKaVD0U1$ByZ-bL^yql8h8o!>+|Dvr`{=D=B4=wHf33V_Kt zTwXly2dx-dg(eVp*KGhX8h37WCxi@2PH3q3Zh zHp|bXCxN&|yo73P4QsriJmw++_w37i1kde$VVs>WwpZxvj^0}r2bM6k(PmV$!dF#q zMBWFV5Uzw$jUQ_&DP9F7{0$O$pE65cseOB-G^(RB`D{qZw@kQK(jOO3w>~LYLm{`Z z-&*(Y87@(s311g+9;PiboqSXkfa^sSx*s5sCzu_}aZ)_}yg98|@G_d^?D4DtW&H2; z4vj;hEdF`XL|J?dW>rypm0Ya5>gg<|dqopH(OV)(X={SjLV{(ixqTLtNUm<|BRuhG z5TU&Rgezf|)B%!6oq9t5i=xF*(Ps=B=Z_s1 z1xWy7Dd_(Gw$oNyM&D>Nzcy#pxFxy>Ok6NBIG?OqP|RG zbwU;IdURkDf201vzdzX9EN3S>Q7vy@5E`(F=dsoNF}TZQ_Oq%Ex6^!I>*G1d$p4&` zWSSB_dsuZ~5azS;+adYw^f@bnr%^lP@6RV)-CZ*?7yXbg8wb$)$em(oL+)0pkf@PE zTZ2U`+ zBh>3>C%52*&xV3u@%eo!+kRV)gS1R5duHz3J(s}oVQ0xHFoXOHI`Zu>8Q8?yJ1kUo zgJXjRm(KMQnRVC{;Abh^Cc~|`(8S-vPr+P!?{nlT&f4YNapVOh%lOn`_1BZ8To3sJ zL%9MU#&;r?v5LF8yxrUEns=b_pDM9qNo507cpt`xT(i^s<<5QIVP#Q-{#YWG;T~}( zI`@rMlksO`4Q5US?gbkegK0oo*@D~hNm$jfF*Kpl^3yW`11J#?RwNQ?k-Bre zr&(cpXdnYfOJW=#1ROrQJ~bkpmh!|o4tie``O4C_mVR3e5B|sM&sc#$4!R$mwh>PO zfGWiBQ{&J5MDTEl+xD- z&C}>MiAyiWC^B>)+xE~|o_S8dGE2gApNLxfEu)thk8lfqJ{@(rQ$1=B@aS6Tr}-N_ zj<24jEHu3gR^x5ol8v%{XQ7{CTqSJvg&n={R~uE&3B3@37Y-t<`nxkd*1oVg8~6I& zKD(jPH#=9u7`u!3yKU2%1^{aB9G&X&&7rYPskZejnydh;ST6#5RJk?&7@AP^T+8Ch z2Q@{4v(qVoJ?l~KLY{_Zk?C#18{ejO*z21r(wPzThZjrj+a@=V5+2O^YkI-pF);Cp zLRkm+e3?%DYX|X|GAMs1|#B*XIVD+&l6}T3+4Z-4M$1}e$aU?ws=>;u3B=CjMU;Y;E z^<8jri7G1+c)gw&_G_KBG%ubRc(xw~ZP`krHU?f#pH)tBMuXq z>a!&NkVgV|K;7%-1P3wDq4U^`5~Up$l_2}vEiYf)%;5`04-=|^caxX)@P_Z}QXX$> z=Xst+$Y65a<3dnp;?6GjMlMkt`jFOitY6f*r_SO8bySkWv>a4D`eU!G@?dH1M96%g z+BdlSp6xxD)-X0%{Tyj0Dm=9<$Yc0o;U<ugvrn?NV%Tr%HA(s#N;AX)4 zJlm`NWfp%_p!j*}Fa2^&74*tDCHiFpd#JA0m|g^Y+}>tg_t)X8gD?pP5|&kU1exOK zKvVy=%{$PdKVV0mN^n7s@@g%zBylTjevY>!m<#@7emuG1HGWiVyWQE?`qEZOlAsv? z-9uOEQ^_RJ?R!QBkX;oCl-+d84VLHBdK16N|q1%ChrE^vB%rvMViL#{8aP$ z6ik3U>aEUgLR)3G{3?!U>{_TP`yLB?cKjiH8Vi1HQyy$C#>f&|Xx$^=_{Sr@Dxeg? z9m?A<%X2PF0Yp1H!qzl^K`3)$uCpCa>Via?ZD9482HcZX$|d4Ir#(%ZG-|OGPt+g= z9=_}aRDF}a;T#NVMM1~)^qBQCcwR##vg2Vv0qm{6uV=AX;uaki>v}9Bw>L~U+E4l= z@S`r8I^Zzf+cITRiPd^Kby;n$`gX3#rMYGoiw8yBq_o`VSf6m{TqZ0m(hQnD@f-O! zDBNnj-V-_LV;%k5lOCaLM~1=QH>`Y(p3ZLYpZ4wjeJ$!}p!J0;)0{#FHVo&xDiL}4 z#{vEB(p_?0RU(ZoroB4F;bq@k8OOHkQNYI|ek6YbTY|I88q?H3YHqKmS?V$?)8(>? zMfGqsah0OtKUKiLQ-}t8GGJ$~h@pg5z90ceqT2hbj*2!Whrb&O4~sDeaGE_S z7X7qd27JqGi!5$|b2g+H(*M$HU$yJs*nNv^h4VW`X@KdA&xHQzuYEBR%uBW;D&J$h z2>^5}vfYm|q*rzAp1l0Go@~b1#4q@`{K`jsVib6a=ow? z(pM7tj3#?oXE)9oIdFZ4*7y_YETib-eBzfuR>I%iZgR&nqH5k!f}{WmaPRE;e1M;NllUPd#~_rD2nZsk1_rSQ zPMl-TKR%8ptfT`A3*f^xswJiaPgGn?#(fBY9`5qFHy68$Z+-iBC~4Ntv&<9B+~Ube z0H;jnSD{O}IQ2VbvnX%kWNNyBfJ*E&KV|vp14S|1y zhV&8ae+OOp>+~}m1qo0=4sOGrge{zjVT^}%)n zb+0e5gIo8<{<(9dJwg@V@R|S50CcS-kaIJTcwKS4o+I#CanQ zNkfvbFq;?`sgDkKC1kw%^uW9MIvGP@3e~X%BCh8K(0ugWDb_~k^of9rXFpt8CS2KG zW_d#!hzx%t)Gfs46}$`2WA-AmsJeHLg{Y zK3bU<2i~l}%|UUj)+VMnof(|)Y2l(6RuoYg<=o4S0ZoGK>93I)8gM_8rZHoh$K0KJ z4hg2#7gBp{;nqO5$#4~BR`h_^7-Qa8;56p{J=kU>fZO2NxQny^Kw+6Tj-?NMP0(x# znqDe>$_lvo;AgRDw9CkN;1-!s1HC#+ipL~xXc%yLk-hhUttOR`oJUlh`sM1*!}N|J z-%HccH473av~Ajbri^3x`lfD6I%B*rvw`ugl8~7W-?E#rgoE=84t*T2?!SDhdjXTv zoq+9mWljVO(Ec@*1{cZMBu)oR-u}Z%`0ii}#hv{i^<@LA!LR95ND1$(cLxPTk74Zy zU&uDTcYZdtU2wh8tPJE z8b@9D?voC{zpfzONvbsZ0L}H?7V3D5kGu*yKBNGZ z!Tw-qdM(+PiKB-96>FMO1h2*J`>29X0r&^xBM1R;h(3f71rsSC0^LDJllgtMV$(|A zpSjj(D*~WYDW#iz(bz%n`~`fv!gPA4V~BT7`yHPb<^>$MY^mmf^l!iae)ROHsGiTp z`Jj3b15c_QD~+B$+959@C36oHjZ5hfJrwU)&{sNo^<(8ae6sP=#Xoh2JIm)7Qtqq< z`@GcDOMTgn{fV@jX@gteV920>E$trgs?d$I-!ns^ys?|ULBHJVeyX3zyhx~WpIwQp z%IqtV&nOok`S-oQh|H3q)7S3oZ}g;CVe=+TMZVatbW%$W+|k2Z)_FR?-WJ(@w0Q!; zz(-ecKSyui@HXIUReeMN1x+{>h~e8$TdqC3;)%%gTnbO@rW7X+2Lj3}y(U_Yqn12J}CTamnpRO!^M&-?kIkkpox-qB?7Uw4VBJ zyZF75LQ}aA+5a<>AAvuY>tz*L!3l1!z$*g@G*g}1{ttr{y;Cq~XDEyz1XBL|CQn{F zD*Q(l#*=` z?Wz-f=tEg}yE+0A@0hMLJgLx+*bXs&pWo|{Ym5MUlB*06I8Gq(G^vE^#AUM%tgU#z z|K>vxIdpHMYE&Cogw8J8rMb?h$QQqIFJq=MC;zLJ zx3^q;gM?f!7;(gBupSB1J3UkpYx$|@fgn$f^|Hu0~ zESt{u4TB4W{ublo+k{)wmT{$Efz>j^kFh>S(1r<;Hrr;_P!GGRI=Ef1|6kYx%QKVo zIqw!b29@Cx`HBzpx9N{nC@FxO7}Dx+bU_Fq5dSYb5Em=#3i!W)s~nRn4U9<=yw*IE z%Q2W!e`@;>rEm+gMKS${75K((G)28nllv@07z0^u{SsN8birG0gNv zY;WY(>R!(rIa_T3Dxhpza*IdI=#m~4?cg~4RrWS_OEp~InQbl zK^1<`pmT(_Ni~D|H2RW4@BHnSa4#AjQk)|ySb@Dt*PGZ~d=GcFIh*#g81yl5(VSh4 zK-czoFrokFt~slS^h2+|1}WwZX4f&I)Ha-D_MJH2fq0t#FB2kmo*XCHfcX;7q&>{P z-e*azYMF=RKmw+fHWCK=ou{hf4V>t`U)S%8PbY~0&1n&_T_e!=f5tn~8jo@O8XF8s zza7o=io}gMBS%rgTMG$)WcUt`zwdouQpSHA)xmz3T~kGOgFfspu|Uk*@8HECZ6vR?Xh zHVv+NwsnwR?i)cQXdFF}UCC!EWN?$r)>q!)Rjz7V`0)N3hHO{nq0lOC1Yn<*?PDcW26r zsi)mt!*8B1WJ)4CQYD+3G37W{rX^UojO!%qRC%E2xd;k%2t8cDEI~qKP;2{kn6E>E z_8gZ@hf%(wSO`<;4@jHk^!W#y%+;W#xkEHZ{sieJKYXKtw@#cqB%7Zj?1$=F{sBu( z@%dWiM=2q=lvDvGp*^xn4<`8KamQ~5#r-&fPEPCJvl_$kk{}%V$2fIyskYp5JXmAn zRAAM<5=oh{06Og7YSXgh;lt-&|`8ST_@L()|7w0=yoLxce6m^SDNHo$a} zxR`fTP(h08U{d^*-lLgA$U1`sSf+elmSj7}1|l`3e&0gR23XmwACzuj5@yGZ2>_F@ zOS@IKl0c8|U(k5zSiwHNCv!eq&?8Z@U^m|p0ZGhZWD7lU^xfI%F;(FEsr3#8;BpXM zKap^SXDibHe{yP&qFlgbos$9&tk~0as6dvYH1j@&Ww~R3qoJy`aP);}hC!>`+x7|J z_w8viPbe}0|FHY(;**xy3FekU7Ex9=%d?w8=_^>z}t9u#+v z*I3s)@>`TH%+h zT9j5@Jf00Mv?kWyn2CszHE@W^_CC_=S&DBPh2zo7N(%|ggo-sSC_yvf7Ol(WVzD?w_`~fU?&_Q?dwMiJKmBu0*4|0% z&5%W%CAC(_ZkLO-g07=uh0BlQf$b4(<5d13bgUKua7d-g03tJOYG{F{@&kzv(CovL zFr~(z@ek+pM8LI`SqD0m>DmbL4PnfE8OI;(&$g69Mdnz1iz5jA7wDIm#hYX&2IE+p zwC@i=eUp*HRlF@Pd;ACMBGa4^ES0t)7f(H&W$ef!vRl^XabsZtCUI*@qg2SQN{ zr9YAg{2TWYmd~CWv2$Ho<%F7;>4oMr~W*aQ8NCzYhj82ivV&(sz;XU)oUnFvStF5M}Ozd#9+@`7)gop4UK}4LQde!euu>GgCg$ zD4kpq$l(Jw1s;C2JAyUSQYm2O#$Vb7q*e~N7J(#U&D{6Rx|(v=op*3}h7D! zRUoM!T|Jmni*iE|#!8PPz+Qt4(!h@hNO8Rh&Fxdk`})bSZs`qj){AX!*;S8WFEzv) z!f_bE&I6{(2zLz#gnsJN4xJCwnZZ>Lo@a757u<{$0v-cDW2H~kAo}DlWkjBYA)TsZ zC0gLYoRzVb3^mFx8$R<%VvUH107j4u+3h*=@z?!$p8{BiL@<~<8rdX#eHKE3ZPRB1 z_TrR&?5?hj7LM1d<&(!aqRGse>K^QCt=5k_SLGKr9B3MBHjpZdTx9kiUs}6-H5U|r zvPcb_f)mSlI`aRJ*-xb#)~cRz0yyiBD$+;(;}8v-HG}9uqEcxUG#R`ySs6YVdM~2- zPA+P^;Iah2aNMJIE2#q0{6=HX>3BW`=0&+r1~aHNR7SyFmAAY_xf zUiAjT`Bp!n?{3}KqwX-;DIEvswqYFqWURw=_^l%ZpKz5;!Q|L?8@sKufv=kAo`~ed z=V`(}WKG}^8(LP*>7OT!)Ibo^GGR256d`timnAPT@d8`$6{<&%fZA`l839v4$Q-_D zTG8>6TxWgd0q{q_+^tCdWl_r(!RPw>w3{L~|o zLcla0Z-#@gDGN2^vriI@H>}U39Ow4-yW#@wjGRo`Zv|gjyF9BcpZaKBq|Q7_s;t_A+T6IczE&xzJYxtgPEo# z@ufdRYv4=W155HY+^fce2QM(GsJNsxx3w?K7={3Y%vsu;x0gaeR9?RY@$vT{92fE2 zS$2LkczhONsN!Y3c%boC=UNnK==>0`zM)?l;uvMbTJ}sxHR1csF@r|k0@S#(i{)UC z0!8azknC6LIIM+`zK&e(gPdQgHQw3iMXwv0IJoJ6ErHjLj^MCHuh^s!oR41dg;6D; zf8?0qURgSC@)_IC^5)l*Ia_wVVT5x4nqTK-mRDl`j&AV#MeJTdCE!1_?;fNN+zY?q zmz2RyKF}t)<9e&DfAB$N60p>?UfmA@A@(He6WQFaG3)wECN>p;88OjI4*tS_!o1x&|deLX6zeG{+jO0fK~ z4jNxuG8m|l{nt8o#5oIBEsQO&B*jp-B#Z|!J-|*3#c^=`(9O>pWgwYqEb|^>;ztU7 zT6#m??|riYcw$qtk9A9*^lAH)^ypZAACyD_P)pdbpj5tEb zkfxYn=JvhS<{$f|gWjih5-0|y>{-f8nd}>er+@HPY4de8Ws~Z)r~X#=zQOwKs*9wb zZ7f6688}z)a%(iRPZ?MDy+nko4)`PJY+F^j-HJ}E6GflrdNoiR%|{ifQ9{D1axgEL&?#|6Eo1mjM0mKS~ERNWc{oFmW4 zSb!P;Ju}+K&O%B_4DxoTVzB-%h+&^hLlM79vUe^F&4aG9bT$;FdSi681g7myK5psO zH`yNy@Jx83$e*9RnMYx9A$~}^t9H*cwG^`5jjRdNs%$)=PSEUQO94e2U)gQNr(^+l z%bDsXNYzo+f1Ojn^dPa4KMkQjRrZ|tjI?#!LbNKF*Gx_GOxTgYLiGC4Vzpx``$|Bu z{4IQ|ay}k9QRCB`Bmp%0-(e_;(jG>XgFWS+NtFv5oe&3QWWgk#Ume$R{~sBi3&uEi zwnde~JJK>cmu-@{&rlDc?g#5LZ!mhbV5j?;K1Sp|_AdM^lqsm`=_d8?ib%)jAWulW z-?pxJx1AtM3fr5|Q>mb82oD)^kT)rhxv8KLZ8B5@68h*U zkg%M2&zv#~p$939zjz{I`8nQKP6ggNKR%k;Lk5{x8NN&}f~Vm!OO>d22n1A9>Wc#B!(EX1}z~xnx$`t%cw0bOeDC*}eCkBw5Iaw5Mmon8S&nd0E5inB>Z;V}`(M)QP7^ zaB=!`qJU$RLvFLvgKKYhV2_Q=7nME^ln0)h<&Q~W_o(2B1q;*)obYo=gk=CTc?!o$ zLiRk*79jx353%23hY0HyU3dPcCIxz6Nh)UW?8NCn1SQeK1rmwc6|l0%^sU?;Z%$e7 z71~QqeH-XWeNn>c?WUiDhq<8Zd3*?CJieS_1s2FemlI!zkOK$%v8GH5zEuZ}l@>m5 zE=#{ZNq$7;j#kvIV=ZKv3p*0zUXMQD!{txwWzb*dMS zl~LrVzvlhU{VcV~wYu+r92+>KxCTy+U4>KEt8n@;`Q0?4!CHYJkWN4wXtqwA?{y1~ z9_4TY8*kf#!uVz$Cekg}z<`Uop7U!}t7)+;K}#7D`Im&i(<9m#7c|>S>s0qGTpH3f zmvOfA_Xvn+US#J)l?C~gP^H8@Z#ir%nm{Ftl-eBWp9+f1TLs)-t(*SvWD(!wm|Af3 z*1ir7^{sf|^)Vgu{ssT{#B#G2Q5Bclg>P_E>kHY~@SxwF8M8c_= z8E2Rpn5`%6Cc_F&<4CxGh4|;|UfAi=MX%1BuMvHl-cnNRhpq6ivJ+%#xT1x&vb~8$ zEWAibxhU!1_uc9CTiu2osqT9xQx_F?Hd5}w3p3sjG^czznTbQ_UQDrpFgp9=?np=b zFv4A>&c?aloQyH2*Yh*^G8v4iDu>gO;57jd*jBjq2>24Xc{xaaqouM1d5eQrbLVns zGOUQ_d_woPhKuw2h90l>t%`yr&zPO+_QA8F+XBMfJ4zE0Rd}KqGD{t>t~EIU9W8QS zymEFdy@b2Qh{otEJBGgz4x8}C$nn+cClE*bE`w6VSF!FdemihJafD(u+`f1@>>deqZziz#| z#d;>5O;P#;`d>C@yhRF4GBP#5^fG*Hnfzb~=w^o}R7zIOig%rwAc48GN+0cK%_*-c$>WTuk z)B$HOrd|`4yptp9QNnQJ5QC)itzNt1g~is zTAdn{k&|}yKksBZ*Tc&sX<+((DbI1SA4k@9YD}UX4bEYH^Uxp!XM<}I3tsLpq3DpkmeA0ZX;Lo0Q8RQ(A7VW{61*ZYq0cZJy*Z?@*7%#hOWR{_ z^gN!9BGG(fF0Px6Mm?SjH{rrVXHsI$!$~7LzRw9v)2bt+liNTrhShwL9Ujt)79*&9A-^b`llh z)SYUHI3qiyqup|2D_p(xs}Px;V_8T`a-sNP#6kepDnAvZ2c`Kk@%-r~xjlKlRQj;= z9jccG&#FGPQ2>J{o@-HPZ?ci5ZqI1X2rA&k)CooXn#paf=RHd>EOHK2IV-Hg&mGm~ z-`f&HFGwwgD1%d&(Vg6I2_@d{OD*ZlraUk}T9RTRRT{tojMbNv$JbPu0Wf`ScOOqE z4siqdb$@&j#cp!UOC{&@$E*FS!?VVFc}_70S%dD1NqJ=aiC^!1YGA*QR|4(U=pZ-f znzEG9>;~U>bE^<|QaiB(W8gVrvmBv}NTG#rbL!Dh0I%+2#QPu^ zRso}C>p#HGJoCu%d2wUr15#ky3)}yP6!@}g7HAE2pzP$@^v^Y=WaqEF`SZd(qjkN3KR2(o{hTf-kfavRoFN7Nt++Teej5Lp zES*T?zguT26V>Z!8F$6#+>0&X0Zto^Z~Ox8h?|+p=+q<_X;ExWJHx|@o3^iwD~#fi z-P~n!9Z(Bg9ji6WWKR}LmCMlN;HL5EGVoY(Yi+PpZH|h%fU^=r1l_bojFcK+cA7Sa z&uZ70T>rlHu=}Y^Er=$LkCL~gT$F--+~bkCvdvkkkTQiNTcBUmWFe%Ry59IBH|P||rRk}K#XL#4^OT9fa{u#_#_Yl&H)25w@B zujH1`AK?|5GN2=s#DRqVp!7o?U!PWWRYiCYMNjga-fA_J6MSnnG+LK3<#rs_IOG5E zWDpcd4dj6z56O=i(yhllwVyXcsd_jPG=azmflydTqL9Qz#iW>}d@3(H8Uxc_AOP`5- zIT1}+s`D+Wk_;FyD?cXm#q+`oLnS9xQE-LO7Yfpjz9%102IhSw2Qt(7d0^DM_$}Gd zIOP4JgEv}g)ayzwc6~E75sOm&H?a2NDm{htU+9JgU!wd>0{zKLC&Vgsxfhx|CQ6&t6os{J?d z0!w(+)4b*GZ+WvDa*McsNq$P--j=*dA%AH}hi_!`5LdF-$avHPP<#&ki~JCF8kv^t zjA?oOC-tX6eGk+?wl{~Exroqz$fcBR)$MnmwixA*Np<#|`n!fb@w}|WbWE;rE|C0U z@w^q}Zg^g@8El#T93Gf-y_OgYQi(Boz`evVcPFq5Q5Hh}QTTz~H%AarCnCC_;;{I< zRIcvPHdf#tKYKcOTF+Q$L?@s;uQX&gfhHkJ_D;>kUszWwEc z3xNbI@2T{o4!)Vg8!BX=jvj8GV>-FZD@y&!`cWRF4ez?$(cZt;`?4TU#d8XdB${YqHnHcgMby&o!wsZMJff&^*Q1;N(p z;IAOFw-MC93lY4#Dg(BVbs$g@BuXs8N)pkhI}h6rtuYJGVfdF4Y&=-xM3r3QF7oz> znz-jokK1}*bL?=A*>KrG^j*qJr%B{R5(3#j9d1dC7Jyy*6#Z(8T*l+NwIc%HZZ`!W zrf=<3tNy-nM9yT{xp!mYHuEfPE9CGgy%;_bQZq=haMQUrrEEb3h*=|A46OSOW!n#`lD9m*va13MnS!SS+t(~!XZVLse6HGsB?*G;j7H~K`E2Ch#J(J2u0}%t z$s>Uue2K*#>YJqU8lcDqR1=VZD)QTk%wR4b#XP>Ei$4$HvqRvebALjPXy+%&cOQ-r zrC$}%SC+7IDv%X&E1FX)0yiv(j1N!ThQU5hT6BTL;vaR=E8gy-q}#_I4{lr%2(Xma z7p2A>jJ=|N(WsX4cy9)O-9{_sHaA%+&H0Vp}A%6 z9iH$7^Shxy3F_}RP+@SeTl35%sph;Z{ykGpzAv1#I8jp3So;GgJ;pZ1Pc4;WsSvld z(tu`^=lBboV3!jDTW__LfwLQ+DX5OS%v^SLc7*ngtR2-%YN{f4KR3p5a}m{BMP@8t zl;90%-w`~jp&U4XcX|arlSAUE;Q1AAQQBaliEIriKCMV#15`h91E;$<3EdmOzeMO( z{?R2XYrYm+3o0*b&L-@X8uXBGa3T4R>Qr6M%2dzlcuj3K_gFC3G)LAt+f7zvem`Cn zzGTXB)Oi;#Hf!fK2zKXhk|^m{v!(M~nF7?rCxJ?)W=#r@fskv`1y)^evFk&YHCJMy zn+kmtz>GP98*EdO>wmFBF9f!z+tT{toxv#wv7#I~VA9wb9UwbH!OB+fyDbw$EPtpB z5;rjTKS97GQdc&iZ!PG2ab(hBJnX{I8EkB~I&E2qj5E<;?pwxLw3++_;i)&|DY=Z3 zIeNj{J^om1XF1a{jwlnVWd}l4Hv@*;fBM?e04v}@S=D;$$gsA9CyT^eFx=-VVny`h zUA(>)ad&Us#E?_}`gFhf*%m+ey^I%?u1vH1&Ks8|2HjRqT2O5RHzjJA#~EFs@W1=_ z5g@t`iYyi(0c0ZTm;Rc{&rY2_8N-|Ets^7oyeC;lt^)uu6Jv-2M}7@;f=5x{%?B^* zW#wm0m64XG3gTcjUCqfk*?PZ9BZceem*je={(PQcMDavso;ZVmEr$A@VNy%iE8k!X z&(_{GVy>h|z=KAL7H;O54NEvB8JIrEad6{Wj_vvl2SFw8*Pz)ze*&|4)SCm!5q#Y9 z^F}ru=mE_%|5fwluE6X)(66>1#b^S}U>zO%^#lj5>`c{oIy5Q=P3pEwP3rfV+^+Z^ zf&u$cGAK`xwq@yfn}lDRVhM@WN;_`e!Vx8hvN-1hh%UJVa>03d9$jsm2Ib1A<(&Wf z(8!>4fV<4kygJSsc6I{;&Yq0bGstJ~dxMe~-md2S;JLXOG+r#NfO8g;L8 zSDTK`QyKvaQGDnM5$uXBuccupiz-kSY*%xvT;HyJijgTXXLkjwvm(#KBB_l_QBp4> zQQf_*vuCz+J1ASRE&s{m?@NSY^+Kh`zwl>NkUfFUopw~sKm9iY>8blzD>pT&^~Z&o zKr{Y{*1GK_S+0|hwHDM&A{tk-eB16XIpEK=guE$n$-~KJc&p`>wwIEJ=2#!+)<=&} zY3T&WBML8ysfk-W@}-69g0N{j8j{yguSac>X|EV{yvaDfY~W|hvu*5Kx?P+BO)tX`%me&C(=IpQIdQ6u_; z35-`}kgUc6UDLhfyuSTl>$XTr8%{vIXa&OJQePYc=7xC7n)I~gl66q@7Q2F39)F*1^~s#@J(AY)<#gjB)T zjlx*ekg(K9i#R+@+?EG1xsSNh^ge%GVo5Id7WEPK6};i8bcZ?^-xS#}!+&JQwB%3a z;*03y6!}1I!4WvWXHZLa##rwxp;5q*;Wp)*mBJ9A%wSKGmXq|{An?I1yD|mJCbi}5 z_oE?jdLxyEAerYvc4%}s&!R2AjwsplFIk@&Rl4KN`_>L0fDLyRP4Z&UeRx1u@vsCd zfuZ#o#*P1nssE0r`v3pO@k3-)LZv}M8QIzM*n5v`ijYl4);UM1WG5?oh0K$z%oCAh z9J05NJu;5NInFuXyXWiu`CWdGKkIVg;y!P;>$=b9Dv>F&{}D1#Mu%Y0r#D?Pj=}*5 zX-NqIFaUjY;yV=w==kPpuj?yZOIVsB4whJC-F|Ig=TaqpC7VgW42A<+K89ARv4<=kOh z{yoxjdZJ;@c)Ir=KeX&2=1`HgolwXf%=PWZNZG;Ny zHxBRxA69!QA+}@m{Z%R|-FAE6!rO^x7{dJXFk*Uh?&8^G#YC;i;K5@BVk2rd!5Kk) z$a3NkXsH>sNT7t)q*_@vaqkpK%Q;Fye>Iaebej$S`i%1VwRNeljQ}{h#ZLBo4rb;I+o7i9=&GNoWyjs zA$=Gr9T1SlQuL}#BI_l+{+GHC?R9Ulx)^bRJK3uFS zaTyLLEdeF(FHqn=T`x_jbIQqhHcBU*H5V1V4G|Jp`x4j%BMY3u~h7qii*NOF#6y{`di`tdPrj(kIt{H+cVxahGR~xy67tD5n@T&V%^

UA@bXEy3(8_si-xiamw&7w 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 literal 0 HcmV?d00001 diff --git a/src/assets/logo-small-connect.png b/src/assets/logo-small-connect.png new file mode 100644 index 0000000000000000000000000000000000000000..08fd7cdeb060397f434b55bd7f52ef420a8e2569 GIT binary patch literal 21069 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 literal 0 HcmV?d00001 diff --git a/src/assets/pub-per-pr.png b/src/assets/pub-per-pr.png new file mode 100644 index 0000000000000000000000000000000000000000..28c508c6c064dd46b710ff6e0881fe91e7f55947 GIT binary patch literal 26456 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 literal 0 HcmV?d00001 diff --git a/src/assets/stats1.png b/src/assets/stats1.png new file mode 100644 index 0000000000000000000000000000000000000000..94f211d3ecce9e34c7b3174a6cb1a9e7915d73f1 GIT binary patch literal 11913 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 +