Compare commits

...

105 Commits

Author SHA1 Message Date
Konstantina Galouni 5a90938545 [Aggregator | angular-14]: myClaims.component.ts: No data in route - set claimsInfoURL and userInfoURL from properties. 2022-12-22 13:25:00 +02:00
Konstantina Galouni b2d69e938e [Aggregator | angular-14]: environment.ts: Update in development properties, ports of local services | home.module.ts: Removed from import and iconsService.registerIcons unused icon "arrow_right". 2022-12-22 12:45:46 +02:00
argirok c00119dcc3 Enable Orcid S&L for aggregator 2022-11-09 13:41:33 +02:00
Alex Martzios 9f67013ad0 reintroduce numbersComponent in homepage, update submodules 2022-11-08 14:10:18 +02:00
Konstantina Galouni 734d7897ee Merge remote-tracking branch 'origin/master' into angular-14 2022-11-07 13:39:45 +02:00
Konstantina Galouni 5ad24057ad [Aggregator]: home.component.ts: [Bug fix] Fixed checks for numbers sections - check count, not number (it is rounded in K/M...) 2022-11-07 13:38:44 +02:00
Konstantina Galouni d58964f931 Merge remote-tracking branch 'origin/master' into angular-14 2022-11-07 13:03:48 +02:00
Konstantina Galouni 9eb97022da Updated libraries 2022-11-07 13:03:40 +02:00
Konstantina Galouni 0891bd6b72 [Library]: searchResult.ts & result-preview.ts: Added field objId: string; | searchResearchResults.service.ts: Set in parsing objId | result-preview.component.html: Updated link to Bip Finder - use objId (openaire id) instead of id (pid related). 2022-11-07 12:55:55 +02:00
Konstantina Galouni ac835f379b [Aggregator]: aggregators.ts: Removed "software" entity from disabled list of canada | home.component: Updated checks for numbers section. 2022-11-07 11:10:26 +02:00
Alex Martzios c42450c633 create fos/sdg components to call library components in order to use extra parameters, update submodules 2022-11-03 15:55:45 +02:00
Alex Martzios fc8c98935b remove fos/sdg assets from aggregator project 2022-11-03 12:16:14 +02:00
Alex Martzios 84464efac3 add fos/sdg pages 2022-11-03 12:15:29 +02:00
Alex Martzios 623c5fbc6e redesign develop page, update submodules 2022-11-03 11:11:11 +02:00
Alex Martzios a36c695d2b home page redesign 2022-11-02 14:10:08 +02:00
Konstantina Galouni 3ae3be6649 [Aggregator | angular-14]: angular.json: Merged with origin/master | canada-custom.less: Set background for active buttons - merged with origin/master 2022-10-20 23:39:46 +03:00
Konstantina Galouni 0d9736b5a7 [Aggregator]: angular.json: Added analytics option 2022-10-20 23:37:12 +03:00
Konstantina Galouni 2df2661184 Updated libraries 2022-10-20 23:26:57 +03:00
Konstantina Galouni 224ad78c22 Updated libraries 2022-10-20 23:22:54 +03:00
Konstantina Galouni ca8fbac27c [Aggregator]: canada-custom.less: Set @button-primary-active-background: @aggregator-secondary-color; 2022-10-20 23:19:32 +03:00
Konstantina Galouni 2b9c69fa99 Merge remote-tracking branch 'origin/master' into angular-14 2022-10-20 23:07:10 +03:00
Konstantina Galouni 07c6c04ed7 [Aggregator]: app.component.ts: Set menuPosition of header to center. 2022-10-20 23:05:43 +03:00
Konstantina Galouni 07c584e82c Merge remote-tracking branch 'origin/master' into angular-14 2022-10-20 19:45:29 +03:00
Konstantina Galouni 4779fbb4a4 [Aggregator]: home.component.html: Updated width of search form and width of each step of the form. 2022-10-20 19:34:55 +03:00
Konstantina Galouni 4dc668ef34 Merge remote-tracking branch 'origin/master' into angular-14 2022-10-20 17:29:05 +03:00
Konstantina Galouni 9ae560d20b Updated openaireLibrary 2022-10-20 17:28:58 +03:00
Konstantina Galouni d96e5abcea Updated libraries 2022-10-20 17:25:08 +03:00
Konstantina Galouni 27a08bdad6 [Aggregator]: Updated libraries. 2022-10-20 13:34:08 +03:00
Konstantina Galouni 557fd10d27 Merge remote-tracking branch 'origin/angular-13' into angular-14 2022-10-04 15:59:44 +03:00
Konstantina Galouni 95450efb13 Updating libraries 2022-10-04 15:59:29 +03:00
Konstantina Galouni 1f74535144 Merge remote-tracking branch 'origin/angular-12' into angular-13 2022-10-04 15:58:31 +03:00
Konstantina Galouni 9440f37c50 Updating libraries 2022-10-04 15:58:22 +03:00
Konstantina Galouni a2eea5da72 Merge remote-tracking branch 'origin/master' into angular-12 2022-10-04 15:56:54 +03:00
Konstantina Galouni 4c80f751d4 Updating libraries 2022-10-04 15:56:39 +03:00
Konstantina Galouni 9c06b32a65 Updating libraries 2022-10-04 15:54:10 +03:00
Konstantina Galouni a5a26bc593 [Aggregator]: Updates in css | Bug fix in isRouteEnabled check.
1. portal.ts & aggregators.ts: [Bug fix] In method "getMockCommunityInfo()" set also pid for community (isRouteEnabled.guard needs it) | Updates in less files (overrides of colors)
2. styles.less: Updated imports (added linking, landing and canada-custom and removed aggregator-custom).
3. numbers.component.ts: Updated default value of @Input() colorClass to "uk-text-primary".
4. connectHelper.ts: In method "getCommunityFromDomain()" added also "aggregator" and "eosc" portal types to set domain on development.
2022-10-03 20:25:37 +03:00
Konstantina Galouni 2f83388fce [Aggregator | angular-14]: angular.json: Updated optimization configuration to set "inlineCritical": false. 2022-10-03 16:30:45 +03:00
Konstantinos Triantafyllou 79a6069432 Disable inline critical css from server.ts 2022-10-03 12:31:55 +03:00
Alex Martzios 9b0d4f4371 Update recaptch to version 10.0.0 2022-09-26 16:54:26 +03:00
Alex Martzios 01aef27350 update submodules to v14, add .angular folder to gitignore and after-build-clean script 2022-09-23 17:49:33 +03:00
Alex Martzios 923ce868a7 update angular express engine to v14 2022-09-23 17:42:45 +03:00
Alex Martzios 58304ee33d update angular material to v14 2022-09-23 17:33:08 +03:00
Alex Martzios 84d691c407 update angular core and cli to v14 2022-09-23 17:31:56 +03:00
Alex Martzios e691294aa2 update submodules to v13 and remove renderModuleFactory from main.server.ts 2022-09-23 17:29:00 +03:00
Alex Martzios 6a8535087e update angular express engine to v13 2022-09-23 17:26:52 +03:00
Alex Martzios 4cf596099d update angular material to v13 2022-09-23 17:25:26 +03:00
Alex Martzios 2a17731231 update angular core and cli to v13 2022-09-23 17:24:00 +03:00
Alex Martzios 1eacb4dbec update submodules to v12 2022-09-23 17:20:57 +03:00
Alex Martzios 9d49d877fd update angular express engine to v12 2022-09-23 17:15:51 +03:00
Alex Martzios 8484ca32b9 update angular material to v12 2022-09-23 17:14:32 +03:00
Alex Martzios 7b79d9e71b update angular core and cli to v12 2022-09-23 17:13:11 +03:00
Konstantina Galouni dc784afe4b [Aggregator | Trunk]: Renaming and using less files for assets | Updating home page to look ok | TODO: Fix less files to be real less & organize rules among files. 2022-09-23 16:33:26 +03:00
Konstantina Galouni 9b22660e8a [Aggregator | new-theme]: Updated uikit paths | Re-added <app-root> in index.html | Removed RootMenuItem.
1. app.component.ts: Removed deprecated RootMenuItem and used MenuItem instead.
2. index.html: [Bug fix] Re-added <app-root> which was accidentally deleted in previous commit.
3. package.json: Added in dependencies "uikit": "3.12.0".
4. angular.json: Updated uikit paths in scripts, to get them from node_modules.
2022-09-21 01:05:21 +03:00
Konstantina Galouni f5968ca7b5 [Aggregator | new-theme]: environments/: Removed old properties "searchLinkToEntityRegistriesDataProvidersTable" and "searchLinkToJournalsTable" | Removed checks and configurations for eosc (created dedicated project for eosc). 2022-08-08 17:20:28 +03:00
argirok 1da2632c2e Eosc explore: latest changes/ corrections before review 2022-08-08 12:47:14 +03:00
argirok 1839b3a82a Bug with optional routes: move the error case in the end of all routes 2022-06-22 17:20:19 +03:00
argirok 513bb83769 remove property metricsAPIURL 2022-06-08 15:02:56 +03:00
Konstantina Galouni d2a90a4b7b [Library | new-theme]: [Bug fix] searchAll.component.html: Add class "uk-flex uk-flex-center" in ul uk-slider-items instead of div with uk-position-relative - on eosc the arrows were visible when they shouldn't. 2022-06-01 18:29:12 +03:00
Konstantina Galouni 844832d97a [Library | new-theme]: [Bug fix] dataProvider.component.ts: Set typeQueryPathParam="services" when ?pid in url and type=="service". 2022-06-01 15:48:58 +03:00
argirok 34f176f9fd add beta bagde in eosc 2022-05-26 14:06:01 +03:00
argirok ae08a296cf Aggregator update home entry text 2022-05-25 17:56:23 +03:00
Konstantina Galouni 44ed7c37f8 [Aggregator & Library| new-theme]: Use <modal-alert> common component in transferData.component.ts instead of uk-modal.
1. transferData.module.ts: Imported AlertModalModule.
2. transferData.component.ts: Use <modal-alert> common component instead of uk-modal | Comment logs.
3 alert.ts:
  a. Added "@Input() public emitHidden: boolean = false;" and "  @Output() public alertHidden: EventEmitter<any> = new EventEmitter();"
  b. On ngAfterViewInit, if emitHidden is true, check when modal is hidden and emit alertHidden (currently used only in transferData.component.ts to reinitialize local fields and route).
2022-05-25 12:52:00 +03:00
argirok 68ef4a96b9 update eosc properties with beta services/ apis 2022-05-24 14:25:28 +03:00
Konstantina Galouni 82913f68a2 [Library | new-theme]: parsingFunctions.class.ts: Updated links for eoscSubjects. 2022-05-23 13:23:24 +03:00
Konstantina Galouni 9898990385 [Aggregator | new-theme]: home.component.ts: In home search set input unchecked for research products categories as default & in "name" use OpenaireEntities. 2022-05-20 16:21:11 +03:00
Konstantina Galouni 723dc20219 [Aggregator | new-theme]: home.component.html: [Bug fix] Updated height, margin and padding of section with logo and search form so that dropdown for entity selection is visible. 2022-05-20 16:02:42 +03:00
Konstantina Galouni a551ed38a9 [Aggregator & Library | new-theme]: Fixes in search forms and logo | Removed animation in card results | Added service landing links for incompatible datasources in eosc portal.
1. home.component.html:
   a. Removed uk-margin-large-top from search form and logo.
   b. Removed uk-height-medium from  search form and logo.
   c. Move searchImage on top of search form (uk-width-1-1) for small screens.
2. searchMyOrcidResults.component.html: Removed animation with uk-scrollspy.
3. searchAll.component.html: Move searchImage on top of search form (uk-width-1-1) for small screens.
4. newSearchPage.component.html:
   a. Removed animation with uk-scrollspy.
   b. For simple search, move searchImage on top of search form (uk-width-1-1) for small screens.
   c. For advanced search, searchImage is on top of search form for any screen size.
5. result-preview.component.html & result-preview.component.ts: For eosc portalType, added in incompatible datasources link to the service landing page.
6. aggregators.ts:
   a. In #searchImage commented custom margin-left.
   b. In #searchForm commented custom padding and width.
   c. Exclude also .uk-button-link from custom css for buttons with parent .search_box_bg or #searchForm.
2022-05-20 15:20:50 +03:00
Konstantina Galouni 8629d61a95 [Library | new-theme]: dataProvider.component.html: Do not show "not available" compatibility label in service landing page. 2022-05-19 19:01:37 +03:00
Konstantina Galouni 644e884b00 [Aggregator & Library | new-theme]: Hide datasources in eosc & Do not show compatibility "Not yet registered" in services.
1. app.component.ts: [Bug fix] Add services search page in menu items if "service" entity is enabled (not datasource".
2.  aggregators.ts: Added "datasource" entity and "/search/find/datasources" page in disabled list for eosc.
3. result-preview.component.html:
   a. Do not show "Not yet registered" compatibility label in services.
   b. For eosc, show in datasources "Not yet registered in OpenAIRE".
4. quick-selections.component.ts: Changed uk-child-width-auto@l to uk-child-width-auto@m (not nice in medium screens for 2 types).
5. newSearchPage.component.ts: "Include" filter name for services changed to "Other Services"
2022-05-19 18:35:59 +03:00
argirok 0cf54149bb move datatransfer modules to library 2022-05-19 12:15:53 +03:00
Konstantina Galouni 1e30595f3d [Aggregator | Library | new-theme]: Fixes for eosc portal in search forms.
1. advancedSearchForm.component.html: Updated width in div for entity selection in advanced search form (uk-width-large@m uk-width-2-5@xl uk-width-1-1).
2. newSearchPage.component.html:  In <advanced-search-form> added horizontal padding (on the left it was already there) - the form is centered and leaves some space from the right side of page.
3. aggregators.ts:
   a. Commented background css in .search_box_bg.
   b. Do not apply custom button css for .uk-button-text with parent .search_box_bg or #searchForm.
   c. Added padding: 10px in buttons with parent .search_box_bg or #searchForm.
2022-05-19 12:14:28 +03:00
Konstantina Galouni 586b81311a [Aggregator | new-theme]:[Bug fix] advancedSearchServices.module.ts: Imported AdvancedSearchServicesRoutingModule instead of AdvancedSearchDataProvidersRoutingModule. 2022-05-18 17:50:25 +03:00
argirok ce0733f17d update portal custom css 2022-05-18 17:20:36 +03:00
argirok 3d578992d6 Merge branch 'new-theme' of https://code-repo.d4science.org/MaDgIK/aggregator into new-theme 2022-05-18 17:04:42 +03:00
argirok 43773285db library changes 2022-05-18 17:04:15 +03:00
argirok 5d6d7bcc78 EOSC transfer service: checklogin when modal opens 2022-05-18 16:59:36 +03:00
argirok e233a32875 set login redirect to the current url 2022-05-18 15:25:11 +03:00
Konstantina Galouni a76954cbbc Merge remote-tracking branch 'origin/new-theme' into new-theme 2022-05-18 15:14:38 +03:00
Konstantina Galouni 6820f4c0ad [Aggregator | new-theme]: Use of properties.errorLink | Link to simple/advanced page dark or not depending on background.
1. directLinking-routing.module.ts & linking-routing.module.ts & myClaims-routing.module.ts & deposit-routing.module.ts & searchDataProviders-routing.module.ts & errorPage.component.ts & dataProvider-routing.module.ts & dataset-routing.module.ts & organization-routing.module.ts & orp-routing.module.ts & project-routing.module.ts & publication-routing.module.ts & result-routing.module.ts & service-routing.module.ts & advancedSearchDataProviders-routing.module.ts & advancedSearchOrganizations-routing.module.ts & advancedSearchProjects-routing.module.ts & advancedSearchServices-routing.module.ts & searchResearchResults-routing.module.ts & searchDataProviders-routing.module.ts & searchOrganizations-routing.module.ts & searchProjects-routing.module.ts & searchResearchResults-routing.module.ts & searchServices-routing.module.ts: Replaced /error path with properties.errorLink.
2. advancedSearchDataProviders.component.ts & advancedSearchOrganizations.component.ts & advancedSearchProjects.component.ts & advancedSearchServices.component.ts & searchResearchResults.component.ts & search.component.ts & searchDataproviders.component.ts & searchOrganizations.component.ts & searchProjects.component.ts & searchResearchResults.component.ts & searchServices.component.ts: Added field searchForm: SearchForm, which sets dark to false for eosc, otherwise true - this is passed to the corresponding search component.
2022-05-18 15:13:42 +03:00
argirok 7ffe95f12b update eosc properties: to use BETA services 2022-05-18 14:47:35 +03:00
argirok cbc205d2d5 add eosc data transfer action button in landing
update properties
2022-05-18 13:30:00 +03:00
argirok 3112689645 add reload path 2022-05-18 12:40:51 +03:00
argirok 1927b04d7a update data transfer service - add selection for dois and destination Storages 2022-05-18 12:40:31 +03:00
argirok 4f9fdce645 Merge branch 'new-theme' of code-repo.d4science.org:MaDgIK/aggregator into new-theme 2022-05-18 12:19:53 +03:00
Konstantina Galouni 2b620d4e26 [Library | new-theme]: 1. showSubjects.component.ts: Ignore specialSubjects and do not add links. | 2. resultLanding.component.html & resultLanding.component.ts: Show button "Check compatible EOSC services" not only in development or beta environments. 2022-05-16 18:42:23 +03:00
Konstantina Galouni 1500084e78 [Aggregator & Library | new-theme]: [Bug fix] Set properly "dashboard" and "adminToolsPortalType" properties and show "Check compatible EOSC services" button in eosc portal too.
1. env-properties.ts:
   a. In Dashboard type added "aggregator".
   b. In PortalType added "funder", "ri", "project", "organization", "aggregator", "eosc".
2. environments/: Set "dashboard" property to "aggregator" and only for eosc set "adminToolsPortalType" property to "eosc".
3. entitiesSelection.component.ts: Added check if adminToolsPortalType is "eosc".
4. resultLanding.component.ts: In method "hasRightSidebarInfo()" check if adminToolsPortalType is "eosc" to show "Check compatible EOSC services" button.
5. resultLanding.component.html: Show "Check compatible EOSC services" for adminToolsPortalType "explore" or "eosc".
2022-05-16 17:14:50 +03:00
Konstantina Galouni e2ca8d3e4b [Library | new-theme]: [NEW] #6915 - Added new fields in datasources/services.
1. dataProviderInfo.ts: Added fields jurisdiction, thematic, contentpolicy, identifiers.
2. dataProvider.service.ts: Parse new fields.
3. dataProvider.component.html: Added label "Thematic" when true | moved "web page" under the labels | Show identifiers, jurisdiction and contentpolicy.
4. dataProvider.module.ts: Import ResultLandingUtilsModule.
5. parsingFunctions.class.ts: In method "parseIdentifiers()" added parsing for classid "re3data".
6. showIdentifiers.component.ts: Show identifier when key is "re3data" too.
7. string-utils.class.ts: In Identifier class added class and check for "re3data".
8. searchDataproviders.service.ts: In method "parseResults()" parse "pid" and set identifiers.
9. newSearchPage.component.ts: In method "createKeywordQuery()" added check for identifiers for entityTypes "datasource" and "service".
2022-05-16 17:01:36 +03:00
Konstantina Galouni 0bd5589342 [Aggregator | new-theme]: angular.json: Update UIKIT scripts (get them from the "openaire-theme" folder instead of the "common-assets"). 2022-05-16 16:42:03 +03:00
Konstantina Galouni bdda998127 [Aggregator | new-theme]: [NEW] Added service entity in Menu, properties and added landing and search pages.
1. aggregators.ts: Added in PortalAggregators.disabled object, service entity & route.
2. app.component.ts: Added in menuItems "Serive" and use for menuItems entity names from OpenaireEntities.
3. app-routing.module.ts: Added routes for service landing, search and advanced search pages.
4. environments/: Added values for properties searchLinkToService, searchLinkToServices, searchLinkToAdvancedServices, errorLink
5. [NEW] Files added for services landing, search and advanced search pages: landingPages/service/, advancedSearchServices.component.ts, advancedSearchServices.module.ts, advancedSearchServices-routing.module.ts, searchServices.component.ts, searchServices.module.ts, searchServices-routing.module.ts
2022-05-13 16:07:09 +03:00
Konstantina Galouni 12d4473e54 [Library | Trunk]: [NEW] Added service entity.
1. result-preview.component.ts & datasourcesHelper.class.ts & entitiesSelection.component.ts & newSearchPage.component.ts & errorPage.component.ts & searchAll.component.ts: Added case for service entity.
2. searchFields.ts: Added  in OpenaireEntities names for Services | In methods "getFieldName()" and "getFieldParam()" case for service entity.
3. searchDataProviders.component.ts: Parametrize component to show/query for datasources or services.
4. quick-selections.component.ts: Delete reset of resultTypes from "initializeFilters()" method.
5. searchDataproviders.service.ts: In method "numOfSearchDataproviders2()" added parameter "typePathParam" to search for datasources or services | In method "parseResults()" set "entityType" according to eosctype field.
6. portal.ts: In method "getmockPortalInfo()" added entity and routes for service.
7. env-properties.ts: Added properties "searchLinkToService", "searchLinkToServices", "searchLinkToAdvancedServices".
8. dataProvider.component.html: Parametrize component to show for datasources or services | [Bug fix] Added [class.uk-invisible]="!dataProviderInfo" in #graph_and_feedback_template.
9. dataProvider.component.ts: Parametrize component to show/query for datasources or services.
10. dataProvider.service.ts: In method "getDataproviderInfo()" added parameter "typePathParam" to search for datasources or services.
11. searchAll.component.html: Added tab for search services.
2022-05-13 15:57:31 +03:00
Konstantina Galouni 19dbcf328d [openaire-theme | Trunk]: In class .uk-dropdown.options, updated max-height: 216px to be enough for 6 entities (5 old + services). 2022-05-13 15:50:16 +03:00
Konstantina Galouni c142a5fe21 [Library | Trunk]: advancedSearchForm.component.html: Dropdown for advanced search link (all content) replaced with a link to advanced search results (research products). 2022-05-13 15:46:54 +03:00
argirok 3b3f1e38d7 EGI data transfer: mock login process with reload 2022-05-10 15:39:21 +03:00
argirok fff6a016a8 egi transfer component: update messages for transfered files, separate destination path and url 2022-05-09 13:35:42 +03:00
argirok 2f32fd705b Initial version of data service component 2022-05-09 13:16:52 +03:00
argirok 6259a84df6 Add blur background in tabs slider arrows and in search selected filters 2022-05-06 13:13:45 +03:00
argirok b80ef7d32e update properties for stats 2022-05-05 17:48:45 +03:00
argirok 424eff78a1 apply new theme changes - mainly for eosc 2022-05-03 16:53:37 +03:00
argirok 87865d6ba1 update properties for datasources (fairSharingURL,eoscMarketplaceURL) 2022-05-03 16:08:38 +03:00
argirok 38bba7440b initial commit for new-theme branch 2022-04-26 17:19:38 +03:00
argirok 120983b937 home: add eosc logo in search bar, add eosc intro text
remove navbar
disable recaptcha for eosc
2022-03-08 15:31:13 +02:00
argirok 21b67013ed eosc properties: add piwik 2022-03-04 13:29:48 +02:00
argirok 7476cd68b4 Apply initial changes for eosc explore 2022-02-18 16:58:47 +02:00
argirok aa00582f7e update prod login properties 2021-12-21 12:30:37 +02:00
argirok be8c7629d1 update cookies link 2021-12-10 12:31:53 +02:00
90 changed files with 1353 additions and 813 deletions

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
.angular/
node_modules/
dist/
.idea/

3
.gitmodules vendored
View File

@ -4,3 +4,6 @@
[submodule "src/assets/common-assets"]
path = src/assets/common-assets
url = gitea@code-repo.d4science.org:MaDgIK/openaire-assets.git
[submodule "src/assets/openaire-theme"]
path = src/assets/openaire-theme
url = gitea@code-repo.d4science.org:MaDgIK/openaire-theme.git

View File

@ -22,7 +22,6 @@
"skipTests": true
},
"@schematics/angular:module": {
"skipTests": true
},
"@schematics/angular:pipe": {
"skipTests": true
@ -35,7 +34,6 @@
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"aot": true,
"outputPath": "dist/aggregator/browser",
"index": "src/index.html",
"main": "src/main.ts",
@ -46,23 +44,34 @@
"src/robots.txt"
],
"styles": [
"src/styles.css",
"src/material.scss"
"src/styles.less",
"src/assets/common-assets/library-css/material.scss"
],
"scripts": [
"src/assets/common-assets/common/jquery.js",
"src/assets/common-assets/common/uikit.min.js",
"src/assets/common-assets/common/uikit-icons.min.js",
"node_modules/uikit/dist/js/uikit.min.js",
"node_modules/uikit/dist/js/uikit-icons.min.js",
"node_modules/jquery/dist/jquery.js"
]
],
"vendorChunk": true,
"extractLicenses": false,
"buildOptimizer": false,
"sourceMap": true,
"optimization": false,
"namedChunks": true
},
"configurations": {
"development": {
"optimization": true,
"optimization": {
"scripts": true,
"styles": {
"minify": true,
"inlineCritical": false
},
"fonts": true
},
"outputHashing": "all",
"sourceMap": false,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
@ -97,11 +106,17 @@
"with": "src/environments/environment.beta.ts"
}
],
"optimization": true,
"optimization": {
"scripts": true,
"styles": {
"minify": true,
"inlineCritical": false
},
"fonts": true
},
"outputHashing": "all",
"sourceMap": false,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
@ -136,11 +151,17 @@
"with": "src/environments/environment.prod.ts"
}
],
"optimization": true,
"optimization": {
"scripts": true,
"styles": {
"minify": true,
"inlineCritical": false
},
"fonts": true
},
"outputHashing": "all",
"sourceMap": false,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
@ -156,7 +177,8 @@
}
]
}
}
},
"defaultConfiguration": ""
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
@ -191,24 +213,14 @@
]
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": [
"src/tsconfig.app.json",
"src/tsconfig.spec.json"
],
"exclude": [
"**/node_modules/**"
]
}
},
"server": {
"builder": "@angular-devkit/build-angular:server",
"options": {
"outputPath": "dist/aggregator/server",
"main": "server.ts",
"tsConfig": "src/tsconfig.server.json"
"tsConfig": "src/tsconfig.server.json",
"sourceMap": true,
"optimization": false
},
"configurations": {
"development": {
@ -238,7 +250,8 @@
"sourceMap": false,
"optimization": true
}
}
},
"defaultConfiguration": ""
},
"serve-ssr": {
"builder": "@nguniversal/builders:ssr-dev-server",
@ -284,18 +297,12 @@
"devServerTarget": "aggregator:serve:production"
}
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": "e2e/tsconfig.e2e.json",
"exclude": [
"**/node_modules/**"
]
}
}
}
}
},
"defaultProject": "aggregator"
"defaultProject": "aggregator",
"cli": {
"analytics": false
}
}

View File

@ -7,7 +7,7 @@
"build": "ng build",
"build-dev": "ng build --configuration=development",
"build-beta": "ng build --configuration=beta",
"build-prod": "ng build --prod",
"build-prod": "ng build --configuration production",
"webpack-bundle-analyzer": "ng build --stats-json && webpack-bundle-analyzer dist/aggregator/browser/stats-es2015.json --host 0.0.0.0",
"test": "ng test",
"e2e": "ng e2e",
@ -17,40 +17,41 @@
"build:ssr-beta": "npm run build-beta && ng run aggregator:server:beta",
"build:ssr-prod": "npm run build-prod && ng run aggregator:server:production",
"prerender": "ng run aggregator:prerender",
"after-build-clean": "rm -rf dist/aggregator/browser/assets/common-assets/.git/ src/app/openaireLibrary/.git node_modules .git*"
"after-build-clean": "rm -rf dist/aggregator/browser/assets/common-assets/.git/ src/app/openaireLibrary/.git node_modules .angular .git*"
},
"private": true,
"dependencies": {
"@angular/animations": "~11.2.14",
"@angular/cdk": "^11.2.13",
"@angular/common": "~11.2.14",
"@angular/compiler": "~11.2.14",
"@angular/core": "~11.2.14",
"@angular/forms": "~11.2.14",
"@angular/localize": "^11.2.14",
"@angular/material": "^11.2.13",
"@angular/platform-browser": "~11.2.14",
"@angular/platform-browser-dynamic": "~11.2.14",
"@angular/platform-server": "~11.2.14",
"@angular/router": "~11.2.14",
"@nguniversal/express-engine": "^11.2.1",
"@angular/animations": "^14.2.3",
"@angular/cdk": "^14.2.2",
"@angular/common": "^14.2.3",
"@angular/compiler": "^14.2.3",
"@angular/core": "^14.2.3",
"@angular/forms": "^14.2.3",
"@angular/localize": "^14.2.3",
"@angular/material": "^14.2.2",
"@angular/platform-browser": "^14.2.3",
"@angular/platform-browser-dynamic": "^14.2.3",
"@angular/platform-server": "^14.2.3",
"@angular/router": "^14.2.3",
"@nguniversal/express-engine": "^14.2.0",
"clipboard": "^1.5.16",
"core-js": "^2.5.4",
"express": "^4.15.2",
"jquery": "^3.4.1",
"ng-recaptcha": "^7.0.1",
"ng-recaptcha": "^10.0.0",
"prom-client": "^11.3.0",
"rxjs": "^6.5.1",
"ts-md5": "^1.2.0",
"tslib": "^2.0.0",
"zone.js": "~0.10.2"
"uikit": "3.12.0",
"zone.js": "~0.11.4"
},
"devDependencies": {
"@angular-devkit/build-angular": "~0.1102.14",
"@angular/cli": "~11.2.14",
"@angular/compiler-cli": "~11.2.14",
"@angular/language-service": "~11.2.14",
"@nguniversal/builders": "^11.2.1",
"@angular-devkit/build-angular": "^14.2.3",
"@angular/cli": "^14.2.3",
"@angular/compiler-cli": "^14.2.3",
"@angular/language-service": "^14.2.3",
"@nguniversal/builders": "^14.2.0",
"@types/express": "^4.17.0",
"@types/compression": "^1.7.0",
"@types/node": "^12.11.1",
@ -66,6 +67,6 @@
"karma-jasmine-html-reporter": "^1.6.0",
"protractor": "~7.0.0",
"ts-node": "~7.0.0",
"typescript": "~4.0.7"
"typescript": "~4.6.4"
}
}

View File

@ -1,4 +1,4 @@
import 'zone.js/dist/zone-node';
import 'zone.js/node';
import { ngExpressEngine } from '@nguniversal/express-engine';
import * as express from 'express';
@ -24,6 +24,7 @@ export function app() {
// Our Universal express-engine (found @ https://github.com/angular/universal/tree/master/modules/express-engine)
server.engine('html', ngExpressEngine({
bootstrap: AppServerModule,
inlineCriticalCss: false
}));
server.set('view engine', 'html');

View File

@ -1,40 +1,45 @@
import {NgModule} from '@angular/core';
import {Routes, RouterModule, PreloadAllModules} from '@angular/router';
import {Router, RouterModule, Routes} from '@angular/router';
import {OpenaireErrorPageComponent} from './error/errorPage.component';
import {ConfigurationService} from "./openaireLibrary/utils/configuration/configuration.service";
const routes: Routes = [
{path: '', loadChildren: () => import('./home/home.module').then(m => m.HomeModule)},
{
path: 'search/result',
loadChildren: () => import('./landingPages/result/libResult.module').then(m => m.LibResultModule)
loadChildren: () => import('./landingPages/result/libResult.module').then(m => m.LibResultModule), data: { showHeader: true}
},
{
path: 'search/publication',
loadChildren: () => import('./landingPages/publication/libPublication.module').then(m => m.LibPublicationModule)
loadChildren: () => import('./landingPages/publication/libPublication.module').then(m => m.LibPublicationModule), data: { showHeader: true}
},
{
path: 'search/dataset',
loadChildren: () => import('./landingPages/dataset/libDataset.module').then(m => m.LibDatasetModule)
loadChildren: () => import('./landingPages/dataset/libDataset.module').then(m => m.LibDatasetModule), data: { showHeader: true}
},
{
path: 'search/software',
loadChildren: () => import('./landingPages/software/libSoftware.module').then(m => m.LibSoftwareModule)
loadChildren: () => import('./landingPages/software/libSoftware.module').then(m => m.LibSoftwareModule), data: { showHeader: true}
},
{
path: 'search/other',
loadChildren: () => import('./landingPages/orp/libOrp.module').then(m => m.LibOrpModule)
loadChildren: () => import('./landingPages/orp/libOrp.module').then(m => m.LibOrpModule), data: { showHeader: true}
},
{
path: 'search/project',
loadChildren: () => import('./landingPages/project/libProject.module').then(m => m.LibProjectModule)
loadChildren: () => import('./landingPages/project/libProject.module').then(m => m.LibProjectModule), data: { showHeader: true}
},
{
path: 'search/dataprovider',
loadChildren: () => import('./landingPages/dataProvider/libDataProvider.module').then(m => m.LibDataProviderModule)
loadChildren: () => import('./landingPages/dataProvider/libDataProvider.module').then(m => m.LibDataProviderModule), data: { showHeader: true}
},
{
path: 'search/service',
loadChildren: () => import('./landingPages/service/libService.module').then(m => m.LibServiceModule), data: { showHeader: true}
},
{
path: 'search/organization',
loadChildren: () => import('./landingPages/organization/libOrganization.module').then(m => m.LibOrganizationModule)
loadChildren: () => import('./landingPages/organization/libOrganization.module').then(m => m.LibOrganizationModule), data: { showHeader: true}
},
{
path: 'search/find',
@ -52,6 +57,10 @@ const routes: Routes = [
path: 'search/find/dataproviders',
loadChildren: () => import('./searchPages/simple/searchDataProviders.module').then(m => m.LibSearchDataProvidersModule)
},
{
path: 'search/find/services',
loadChildren: () => import('./searchPages/simple/searchServices.module').then(m => m.LibSearchServicesModule)
},
{
path: 'search/find/organizations',
loadChildren: () => import('./searchPages/simple/searchOrganizations.module').then(m => m.LibSearchOrganizationsModule)
@ -68,6 +77,10 @@ const routes: Routes = [
path: 'search/advanced/dataproviders',
loadChildren: () => import('./searchPages/advanced/advancedSearchDataProviders.module').then(m => m.LibAdvancedSearchDataProvidersModule)
},
{
path: 'search/advanced/services',
loadChildren: () => import('./searchPages/advanced/advancedSearchServices.module').then(m => m.LibAdvancedSearchServicesModule)
},
{
path: 'search/advanced/projects',
loadChildren: () => import('./searchPages/advanced/advancedSearchProjects.module').then(m => m.LibAdvancedSearchProjectsModule)
@ -76,23 +89,24 @@ const routes: Routes = [
path: 'project-report',
loadChildren: () => import('./landingPages/htmlProjectReport/libHtmlProjectReport.module').then(m => m.LibHtmlProjectReportModule)
},
// Deposit Pages
{ path: 'participate/deposit-datasets', redirectTo: 'participate/deposit/learn-how', pathMatch: 'full'},
{ path: 'participate/deposit-datasets-result', redirectTo: 'participate/deposit/learn-how', pathMatch: 'full'},
{ path: 'participate/deposit-subject-result', redirectTo: 'participate/deposit/learn-how', pathMatch: 'full'},
{ path: 'participate/deposit-publications', redirectTo: 'participate/deposit/learn-how', pathMatch: 'full'},
{ path: 'participate/deposit-publications-result', redirectTo: 'participate/deposit/learn-how', pathMatch: 'full'},
{ path: 'participate/deposit/learn-how', loadChildren: () => import('./deposit/deposit.module').then(m => m.LibDepositModule)},
{ path: 'participate/deposit/search', loadChildren: () => import('./deposit/searchDataprovidersToDeposit.module').then(m => m.LibSearchDataprovidersToDepositModule)},
// Linking Pages
{ path: 'myclaims', loadChildren: () => import('./claims/myClaims/myClaims.module').then(m => m.LibMyClaimsModule)},
{ path: 'participate/claim', loadChildren: () => import('./claims/linking/linkingGeneric.module').then(m => m.LibLinkingGenericModule)},
{ path: 'participate/direct-claim', loadChildren: () => import('./claims/directLinking/directLinking.module').then(m => m.LibDirectLinkingModule)},
{path: 'develop', loadChildren: () => import('./develop/develop.module').then(m => m.DevelopModule)},
{
path: 'reload',
loadChildren: () => import('./reload/libReload.module').then(m => m.LibReloadModule),
data: {hasSidebar: false}
},
{
path: 'sdgs',
loadChildren: () => import('./sdg/sdg.module').then(m => m.LibSdgModule)
},
{
path: 'fields-of-science',
loadChildren: () => import('./fos/fos.module').then(m => m.LibFosModule), data: {extraOffset: 100}
},
{path: 'user-info', loadChildren: () => import('./login/libUser.module').then(m => m.LibUserModule)},
{path: 'error', component: OpenaireErrorPageComponent},
{path: '**', pathMatch: 'full', component: OpenaireErrorPageComponent}
// ORCID Pages
{path: 'orcid', loadChildren: () => import('./orcid/orcid.module').then(m => m.LibOrcidModule)},
{path: 'my-orcid-links', loadChildren: () => import('./orcid/my-orcid-links/myOrcidLinks.module').then(m => m.LibMyOrcidLinksModule)},
];
@NgModule({
@ -102,4 +116,51 @@ const routes: Routes = [
exports: [RouterModule]
})
export class AppRoutingModule {
subs = [];
enabledRoutes =[];
ngOnDestroy() {
for (let sub of this.subs) {
sub.unsubscribe();
}
}
constructor( private config: ConfigurationService, private router: Router){
this.subs.push(this.config.communityInformationState.subscribe(data => {
if (data) {
if (data['pages']) {
for (var i = 0; i < data['pages'].length; i++) {
this.enabledRoutes[data['pages'][i]['route']] = data['pages'][i]['isEnabled'];
}
}
this.getOptionalRoutes();
}
},
error => {
// this.handleError('Error getting community information (e.g. pages,entities) for community with id: ' + this.communityId, error);
}));
}
getOptionalRoutes(){
let optionalRoutes: Routes = [
// Deposit Pages
{ path: 'participate/deposit-datasets', redirectTo: 'participate/deposit/learn-how', pathMatch: 'full'},
{ path: 'participate/deposit-datasets-result', redirectTo: 'participate/deposit/learn-how', pathMatch: 'full'},
{ path: 'participate/deposit-subject-result', redirectTo: 'participate/deposit/learn-how', pathMatch: 'full'},
{ path: 'participate/deposit-publications', redirectTo: 'participate/deposit/learn-how', pathMatch: 'full'},
{ path: 'participate/deposit-publications-result', redirectTo: 'participate/deposit/learn-how', pathMatch: 'full'},
{ path: 'participate/deposit/learn-how', loadChildren: () => import('./deposit/deposit.module').then(m => m.LibDepositModule)},
{ path: 'participate/deposit/search', loadChildren: () => import('./deposit/searchDataprovidersToDeposit.module').then(m => m.LibSearchDataprovidersToDepositModule)},
// Linking Pages
{ path: 'myclaims', loadChildren: () => import('./claims/myClaims/myClaims.module').then(m => m.LibMyClaimsModule)},
{ path: 'participate/claim', loadChildren: () => import('./claims/linking/linkingGeneric.module').then(m => m.LibLinkingGenericModule)},
{ path: 'participate/direct-claim', loadChildren: () => import('./claims/directLinking/directLinking.module').then(m => m.LibDirectLinkingModule)},
{path: 'develop', loadChildren: () => import('./develop/develop.module').then(m => m.DevelopModule)}
];
for (var i = 0; i <optionalRoutes.length; i++) {
if(this.enabledRoutes[("/"+optionalRoutes[i].path)]){
this.router.config.push(optionalRoutes[i]);
}
}
this.router.config.push({path: '**', pathMatch: 'full', component: OpenaireErrorPageComponent});
return routes;
}
}

View File

@ -1,6 +1,6 @@
import {Component, Inject, RendererFactory2, ViewEncapsulation} from '@angular/core';
import {EnvProperties} from './openaireLibrary/utils/properties/env-properties';
import {MenuItem, RootMenuItem} from './openaireLibrary/sharedComponents/menu';
import {MenuItem} from './openaireLibrary/sharedComponents/menu';
import {AggregatorInfo, PortalAggregators} from "./utils/aggregators";
import {UserManagementService} from "./openaireLibrary/services/user-management.service";
import {User} from "./openaireLibrary/login/utils/helper.class";
@ -12,15 +12,18 @@ import {ConfigurationService} from "./openaireLibrary/utils/configuration/config
import {Subscriber} from "rxjs";
import {DOCUMENT} from "@angular/common";
import {SmoothScroll} from "./openaireLibrary/utils/smooth-scroll";
import {ActivatedRoute, NavigationEnd, Router} from "@angular/router";
import {OpenaireEntities} from "./openaireLibrary/utils/properties/searchFields";
@Component({
selector: 'app-root',
template: `
<div id="modal-container"></div>
<div *ngIf="agg">
<navbar *ngIf="properties && loginCheck && header" portal="aggregator" [properties]=properties [onlyTop]=false
<navbar *ngIf="properties && loginCheck && header && showHeader" portal="aggregator" [properties]=properties [onlyTop]=false
[user]="user" [userMenuItems]="userMenuItems"
[communityId]="properties.adminToolsCommunity" [menuItems]=menuItems
[userMenu]="true" [header]="header"></navbar>
[userMenu]="agg.enableLogin" [header]="header"></navbar>
<div class="custom-main-content">
<main>
<router-outlet></router-outlet>
@ -31,7 +34,7 @@ import {SmoothScroll} from "./openaireLibrary/utils/smooth-scroll";
Cookies are small pieces of data that websites store in your browser to allow us to give you the best browsing
experience possible.
By using the OpenAIRE portal you accept our use of cookies. <a
href="//ec.europa.eu/ipg/basics/legal/cookies/index_en.htm" target="_blank"> Read more <span class="uk-icon">
href="https://www.openaire.eu/privacy-policy#cookies" target="_blank"> Read more <span class="uk-icon">
<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" icon="chevron-right"
ratio="1"><polyline fill="none" stroke="#000" stroke-width="1.03" points="7 4 13 10 7 16"></polyline></svg>
</span></a>
@ -42,7 +45,7 @@ import {SmoothScroll} from "./openaireLibrary/utils/smooth-scroll";
})
export class AppComponent {
isClient: boolean = false;
menuItems: RootMenuItem [] = [];
menuItems: MenuItem [] = [];
userMenuItems: MenuItem[] = [];
community = null;
id: string = null;
@ -51,19 +54,30 @@ export class AppComponent {
loginCheck: boolean = false;
footer = portalProperties.sectionFooter;
header: Header;
showHeader;
agg: AggregatorInfo = null;
subscriptions = [];
constructor(private userManagementService: UserManagementService,
private configurationService: ConfigurationService, private smoothScroll: SmoothScroll,
@Inject(DOCUMENT) private document, private rendererFactory: RendererFactory2) {
@Inject(DOCUMENT) private document, private rendererFactory: RendererFactory2, private router: Router, private route: ActivatedRoute) {
this.id = ConnectHelper.getCommunityFromDomain(this.properties.domain);
this.agg = PortalAggregators.getFilterInfoByMenuId(this.id);
this.setStyles();
this.configurationService.initStaticCommunityInformation(PortalAggregators.getCommunityInfoByMenuId(this.id));
this.showHeader = this.agg.showHeaderAlways;
}
ngOnInit() {
this.subscriptions.push(this.router.events.subscribe(event => {
if (event instanceof NavigationEnd) {
let r = this.route;
while (r.firstChild) {
r = r.firstChild;
}
this.showHeader = (r.snapshot.data.showHeader == true || this.agg.showHeaderAlways);
}
}));
if (typeof document !== 'undefined') {
this.isClient = true;
}
@ -77,6 +91,7 @@ export class AppComponent {
logoUrl: this.agg.logoUrl,
logoSmallUrl: this.agg.logoUrl,
position: 'left',
menuPosition: 'center',
badge: true
};
this.buildMenu();
@ -87,11 +102,12 @@ export class AppComponent {
this.userMenuItems = [];
if (this.user) {
this.userMenuItems.push(new MenuItem("", "My links", "", "/myclaims", false, [], [], {}));
this.userMenuItems.push(new MenuItem("", "My ORCID links", "", "/my-orcid-links", false, [], [""], {}));
// this.userMenuItems.push(new MenuItem("", "User information", "", "/user-info", false, [], [], {}));
}
}));
}
ngOnDestroy() {
this.subscriptions.forEach(subscription => {
if (subscription instanceof Subscriber) {
@ -102,49 +118,32 @@ export class AppComponent {
this.userManagementService.clearSubscriptions();
this.smoothScroll.clearSubscriptions();
}
private buildMenu() {
this.menuItems = [
{rootItem: new MenuItem("home", "Home", "", "/", false, [], null, {}), items: []},
{
rootItem: new MenuItem("search", "Search", "", "/search/find", false, [], ["/search/find"], {}),
items: []
},
{
rootItem: new MenuItem("deposit", "Deposit", "", "/participate/deposit/learn-how", false, [], ["/participate/deposit/learn-how"], {}),
items: []
},
{
rootItem: new MenuItem("link", "Link", "", "/participate/claim", false, [], ["/participate/claim"], {}),
items: [new MenuItem("", "Start linking", "", "/participate/claim", false, [], ["/participate/claim"], {}),
new MenuItem("", "Learn more", this.properties.claimsInformationLink, "", false, [], [], {})]
},
{
rootItem: new MenuItem("develop", "Develop", "", "/develop", false, [], ["/develop"], {}),
items: []
}
new MenuItem("home", "Home", "", "/", false, [], null, {}),
new MenuItem("search", "Search", "", "/search/find", false, [], ["/search/find"], {}),
new MenuItem("deposit", "Deposit", "", "/participate/deposit/learn-how", false, [], ["/participate/deposit/learn-how"], {}),
new MenuItem("link", "Link", "", "/participate/claim", false, [], ["/participate/claim"], {},
null, null, null, null, "_blank", "internal", false,
[
new MenuItem("", "Start linking", "", "/participate/claim", false, [], ["/participate/claim"], {}),
new MenuItem("", "Learn more", this.properties.claimsInformationLink, "", false, [], [], {})
]
),
new MenuItem("develop", "Develop", "", "/develop", false, [], ["/develop"], {}),
];
let params = {};
// params[this.agg.queryFieldName] = this.agg.valueId;
this.menuItems[1].items.push(new MenuItem("", "Research outcomes", "", "/search/find/research-outcomes", false, [], ["/search/find/research-outcomes"], params));
this.menuItems[1].items.push(new MenuItem("", "Projects", "", "/search/find/projects", false, ["project"], ["/search/find/projects"], params));
this.menuItems[1].items.push(new MenuItem("", "Content Providers", "", "/search/find/dataproviders", false, ["datasource"], ["/search/find/dataproviders"], params));
this.menuItems[1].items.push(new MenuItem("", "Organizations", "", "/search/find/organizations", false, ["organization"], ["/search/find/organizations"], params));
this.menuItems[1].items.push(new MenuItem("", OpenaireEntities.RESULTS, "", properties.searchLinkToResults, false, [], ["/search/find/research-outcomes"], params));
this.menuItems[1].items.push(new MenuItem("", OpenaireEntities.PROJECTS, "", properties.searchLinkToProjects, false, ["project"], ["/search/find/projects"], params));
this.menuItems[1].items.push(new MenuItem("", OpenaireEntities.DATASOURCES, "", properties.searchLinkToDataProviders, false, ["datasource"], ["/search/find/dataproviders"], params));
this.menuItems[1].items.push(new MenuItem("", OpenaireEntities.SERVICES, "", properties.searchLinkToServices, false, ["service"], ["/search/find/services"], params));
this.menuItems[1].items.push(new MenuItem("", OpenaireEntities.ORGANIZATIONS, "", properties.searchLinkToOrganizations, false, ["organization"], ["/search/find/organizations"], params));
}
setStyles(){
let css:string =':root {\n';
if(this.agg.mainColor){
css = css.concat('--portal-main-color: ' + this.agg.mainColor + ';\n');
}
if(this.agg.darkColor){
css = css.concat('--portal-dark-color: ' + this.agg.darkColor + ';\n');
}
if(this.agg.darkColor){
css = css.concat("--graph-background: url('" + this.agg.background + "\') no-repeat bottom;\n");
}
css = css.concat('}');
let css:string = this.agg.customCss;
try {
if( this.document.getElementById('customStyle')){
try {

View File

@ -5,13 +5,14 @@ import {OpenaireDirectLinkingComponent} from './directLinking.component';
import {LoginGuard} from '../../openaireLibrary/login/loginGuard.guard';
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {IsRouteEnabled} from "../../openaireLibrary/error/isRouteEnabled.guard";
import {properties} from "../../../environments/environment";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: OpenaireDirectLinkingComponent, canActivate: [IsRouteEnabled, LoginGuard], data: {
redirect: '/error', community : 'openaire'
redirect: properties.errorLink, community : 'openaire'
}, canDeactivate: [PreviousRouteRecorder]},
])

View File

@ -4,13 +4,14 @@ import {OpenaireLinkingComponent} from './linkingGeneric.component';
import {LoginGuard} from '../../openaireLibrary/login/loginGuard.guard';
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {IsRouteEnabled} from "../../openaireLibrary/error/isRouteEnabled.guard";
import {properties} from "../../../environments/environment";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: OpenaireLinkingComponent, canActivate: [IsRouteEnabled, LoginGuard], data: {
redirect: '/error', community : 'openaire'
redirect: properties.errorLink, community : 'openaire'
}, canDeactivate: [PreviousRouteRecorder]},
])

View File

@ -5,13 +5,14 @@ import {OpenaireMyClaimsComponent} from './myClaims.component';
import {LoginGuard} from '../../openaireLibrary/login/loginGuard.guard';
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {IsRouteEnabled} from "../../openaireLibrary/error/isRouteEnabled.guard";
import {properties} from "../../../environments/environment";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: OpenaireMyClaimsComponent, canActivate: [IsRouteEnabled, LoginGuard],
data: {redirect: '/error', community : 'openaire'}, canDeactivate: [PreviousRouteRecorder]}])
data: {redirect: properties.errorLink, community : 'openaire'}, canDeactivate: [PreviousRouteRecorder]}])
]
})
export class MyClaimsRoutingModule { }

View File

@ -28,10 +28,7 @@ import {properties} from "../../../environments/environment";
}
}
public ngOnInit() {
this.sub = this.route.data
.subscribe((data: { envSpecific: EnvProperties }) => {
this.claimsInfoURL = data.envSpecific.claimsInformationLink;
this.userInfoURL = data.envSpecific.userInfoUrl;
});
this.claimsInfoURL = properties.claimsInformationLink;
this.userInfoURL = properties.userInfoUrl;
}
}

View File

@ -3,12 +3,13 @@ import {RouterModule} from '@angular/router';
import {OpenaireDepositComponent} from './deposit.component';
import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {IsRouteEnabled} from "../openaireLibrary/error/isRouteEnabled.guard";
import {properties} from "../../environments/environment";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: OpenaireDepositComponent, data: {
redirect: '/error'
redirect: properties.errorLink
}, canDeactivate: [PreviousRouteRecorder], canActivate: [IsRouteEnabled] }
])

View File

@ -3,13 +3,14 @@ import {RouterModule} from '@angular/router';
import {OpenaireSearchDataprovidersToDepositComponent} from './searchDataprovidersToDeposit.component';
import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {IsRouteEnabled} from "../openaireLibrary/error/isRouteEnabled.guard";
import {properties} from "../../environments/environment";
@NgModule({
imports: [
RouterModule.forChild([
{
path: '', component: OpenaireSearchDataprovidersToDepositComponent, data: {
redirect: '/error'
redirect: properties.errorLink
}, canDeactivate: [PreviousRouteRecorder], canActivate: [IsRouteEnabled]
}

View File

@ -7,91 +7,82 @@ import {AggregatorInfo, PortalAggregators} from "../utils/aggregators";
import {ConnectHelper} from "../openaireLibrary/connect/connectHelper";
import {PiwikService} from "../openaireLibrary/utils/piwik/piwik.service";
import {Subscription} from "rxjs";
import {OpenaireEntities} from "../openaireLibrary/utils/properties/searchFields";
@Component({
selector: 'develop',
template: `
<div page-content>
<div inner>
<div *ngIf="aggregator" class="uk-container uk-container-large uk-section-small">
<h2 class="uk-text-center">
Develop
</h2>
<div class="uk-margin-medium-top uk-card uk-card-body uk-card-default">
<h3 class="uk-text-center">Help developers with <span
class="portal-color uk-text-bold">OpenAIRE APIs</span>
</h3>
<div class="uk-margin-large-top uk-margin-medium-bottom">
Not sure where to start? Let us give you some guides and request examples.
</div>
<p>
<span class="uk-text-bold">For research outcomes </span>
(publications, datasets, software and other research data) you can use the
<a href="https://graph.openaire.eu/develop/api.html" target="_blank">Selective Access APIs</a>
by adding the <span class="uk-text-lowercase">country</span> parameter.
</p>
<div class="uk-grid uk-child-width-1-2@m uk-child-width-1-1@s" uk-grid>
<div>
<p>
Request examples:
</p>
<ul class="portal-circle">
<li>
<span class="uk-text-bold">Access Publications</span><br>
<span class="uk-text-bold">GET</span>
<span
class="uk-text-break space">https://api.openaire.eu/search/publications?country={{aggregator.valueId}}</span>
</li>
<li>
<span class="uk-text-bold">Access Open Access Publications</span><br>
<span class="uk-text-bold">GET</span>
<span
class="uk-text-break space">http://api.openaire.eu/search/publications?country={{aggregator.valueId}}&OA=true</span>
</li>
<li>
<span class="uk-text-bold">Access Datasets</span><br>
<span class="uk-text-bold">GET</span>
<span
class="uk-text-break space">https://api.openaire.eu/search/datasets?country={{aggregator.valueId}}</span>
</li>
<li>
<span class="uk-text-bold">Access Software</span><br>
<span class="uk-text-bold">GET</span>
<span
class="uk-text-break space">https://api.openaire.eu/search/software?country={{aggregator.valueId}}</span>
</li>
<li>
<span class="uk-text-bold">Access Other Research</span><br>
<span class="uk-text-bold">GET</span>
<span
class="uk-text-break space">https://api.openaire.eu/search/other?country={{aggregator.valueId}}</span>
</li>
</ul>
</div>
<div class="uk-flex uk-flex-middle">
<div class="uk-flex uk-flex-center uk-width-1-1 uk-margin-medium-top">
<img width="350" src="assets/develop.png">
</div>
</div>
</div>
<div class="uk-margin-large-top uk-flex uk-flex-center uk-padding">
<div class="documentation">
For <span
class="uk-text-bold">more information</span> on the full potential of the OpenAIRE APIs please check
the <a href="https://graph.openaire.eu/develop" target="_blank">OpenAIRE API Documentation</a>.
</div>
</div>
</div>
</div>
</div>
</div>
<div class="uk-section">
<div class="uk-container uk-container-large">
<h1>OpenAIRE APIs<br> for developers<span class="uk-text-primary">.</span></h1>
</div>
<div class="uk-section uk-container uk-container-large">
<div class="uk-grid uk-grid-large uk-child-width-1-2@m" uk-grid>
<div class="uk-text-center uk-margin-large-top">
<div class="uk-width-2-3@m uk-margin-auto@m">
<div class="uk-icon-bg-shadow uk-icon-bg-shadow-large uk-margin-auto">
<icon name="description" customClass="uk-text-background" [flex]="true" ratio="2.5" type="outlined" visuallyHidden="For {{openaireEntities.RESULTS}}"></icon>
</div>
<h3>For {{openaireEntities.RESULTS | lowercase}}</h3>
<div class="uk-margin-bottom">
For {{openaireEntities.RESULTS | lowercase}} ({{openaireEntities.PUBLICATIONS | lowercase}}, {{openaireEntities.DATASETS | lowercase}}, {{openaireEntities.SOFTWARE | lowercase}} and {{openaireEntities.OTHER | lowercase}}) you can use the Selective Access APIs by adding the community parameter.
</div>
<a class="uk-display-inline-block uk-button uk-button-text"
href="https://graph.openaire.eu/develop/api.html" target="_blank">
<span class="uk-flex uk-flex-middle">
<span>Selective Access APIs</span>
</span>
</a>
</div>
</div>
<div class="uk-margin-large-top">
<div class="uk-margin-top">
<div>Request examples:</div>
<ul class="uk-list uk-list-large uk-list-bullet uk-list-primary">
<li>
<span>Access all </span><span class="uk-text-bolder">{{openaireEntities.RESULTS}}</span> ({{openaireEntities.PUBLICATIONS}}, {{openaireEntities.DATASETS}}, {{openaireEntities.SOFTWARE}}, {{openaireEntities.OTHER}})<br>
<span class="uk-text-bold uk-margin-small-right">GET</span>
<span class="">https://api.openaire.eu/search/researchProducts?country={{aggregator.valueId}}</span>
</li>
<li>
<span>Access </span><span class="uk-text-bolder">{{openaireEntities.PUBLICATIONS}}</span><br>
<span class="uk-text-bold uk-margin-small-right">GET</span>
<span class="">https://api.openaire.eu/search/publications?country={{aggregator.valueId}}</span>
</li>
<li>
<span>Access </span> <span class="uk-text-bolder">Open Access {{openaireEntities.PUBLICATIONS}}</span><br>
<span class="uk-text-bold uk-margin-small-right">GET</span>
<span class="uk-text-break">http://api.openaire.eu/search/publications?country={{aggregator.valueId}}&OA=true</span>
</li>
<li>
<span>Access </span><span class="uk-text-bolder">{{openaireEntities.DATASETS}}</span><br>
<span class="uk-text-bold uk-margin-small-right">GET</span>
<span class="uk-text-break">https://api.openaire.eu/search/datasets?country={{aggregator.valueId}}</span>
</li>
<li>
<span>Access </span><span class="uk-text-bolder">{{openaireEntities.SOFTWARE}}</span><br>
<span class="uk-text-bold uk-margin-small-right">GET</span>
<span class="uk-text-break">https://api.openaire.eu/search/software?country={{aggregator.valueId}}</span>
</li>
<li>
<span>Access </span><span class="uk-text-bolder">{{openaireEntities.OTHER}}</span><br>
<span class="uk-text-bold uk-margin-small-right">GET</span>
<span class="uk-text-break">https://api.openaire.eu/search/other?country={{aggregator.valueId}}</span>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
`,
styleUrls: ['develop.component.css']
})
export class DevelopComponent implements OnInit {
public aggregator: AggregatorInfo = null;
public openaireEntities = OpenaireEntities;
subs: Subscription[] = [];
constructor(private seoService: SEOService,
@ -105,34 +96,29 @@ export class DevelopComponent implements OnInit {
}
}
ngOnInit() {
let id = ConnectHelper.getCommunityFromDomain(properties.domain);
this.aggregator = PortalAggregators.getFilterInfoByMenuId(id);
if (this.aggregator) {
/* Metadata */
const url = properties.domain + properties.baseLink + this._router.url;
this.seoService.createLinkForCanonicalURL(url, false);
this._meta.updateTag({content: url}, "property='og:url'");
const description = "Develop | " + this.aggregator.valueName;
const title = "Develop | " + this.aggregator.valueName;
this._meta.updateTag({content: description}, "name='description'");
this._meta.updateTag({content: description}, "property='og:description'");
this._meta.updateTag({content: title}, "property='og:title'");
this._title.setTitle(title);
if(properties.enablePiwikTrack && (typeof document !== 'undefined')){
this.subs.push(this._piwikService.trackView(properties, "OpenAIRE").subscribe());
}
}else {
this.navigateToError();
}
let id = ConnectHelper.getCommunityFromDomain(properties.domain);
this.aggregator = PortalAggregators.getFilterInfoByMenuId(id);
if (this.aggregator) {
/* Metadata */
const url = properties.domain + properties.baseLink + this._router.url;
this.seoService.createLinkForCanonicalURL(url, false);
this._meta.updateTag({content: url}, "property='og:url'");
const description = "Develop | " + this.aggregator.valueName;
const title = "Develop | " + this.aggregator.valueName;
this._meta.updateTag({content: description}, "name='description'");
this._meta.updateTag({content: description}, "property='og:description'");
this._meta.updateTag({content: title}, "property='og:title'");
this._title.setTitle(title);
if(properties.enablePiwikTrack && (typeof document !== 'undefined')){
this.subs.push(this._piwikService.trackView(properties, "OpenAIRE").subscribe());
}
}else {
this.navigateToError();
}
}
private navigateToError() {
this._router.navigate(['/error'], {queryParams: {'page': this._router.url}});
this._router.navigate([properties.errorLink], {queryParams: {'page': this._router.url}});
}
}

View File

@ -4,16 +4,17 @@ import {DevelopComponent} from "./develop.component";
import {RouterModule} from "@angular/router";
import {PreviousRouteRecorder} from "../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
import {PiwikServiceModule} from "../openaireLibrary/utils/piwik/piwikService.module";
import {IconsModule} from "../openaireLibrary/utils/icons/icons.module";
@NgModule({
declarations: [DevelopComponent],
imports: [CommonModule,PiwikServiceModule, RouterModule.forChild([
imports: [CommonModule, PiwikServiceModule, RouterModule.forChild([
{
path: '',
component: DevelopComponent,
canDeactivate: [PreviousRouteRecorder]
},
])],
]), IconsModule],
exports: [DevelopComponent]
})
export class DevelopModule {

View File

@ -0,0 +1,17 @@
import {NgModule} from "@angular/core";
import {RouterModule} from "@angular/router";
import {PreviousRouteRecorder} from "../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
import {AggregatorFosComponent} from "./fos.component";
@NgModule({
imports: [
RouterModule.forChild([
{
path: '',
component: AggregatorFosComponent,
canDeactivate: [PreviousRouteRecorder]
}
])
]
})
export class LibFosRoutingModule { }

View File

@ -0,0 +1,16 @@
import {Component} from "@angular/core";
import {properties} from "../../environments/environment";
@Component({
selector: 'aggregator-fos',
template: `
<fos [piwikSiteId]="piwikSiteId"></fos>
`
})
export class AggregatorFosComponent {
piwikSiteId = properties.piwikSiteId;
constructor() {
}
}

26
src/app/fos/fos.module.ts Normal file
View File

@ -0,0 +1,26 @@
import {CommonModule} from "@angular/common";
import {NgModule} from "@angular/core";
import {PreviousRouteRecorder} from "../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
import {LibFosRoutingModule} from "./fos-routing.module";
import {FosRoutingModule} from "../openaireLibrary/fos/fos-routing.module";
import {FosModule} from "../openaireLibrary/fos/fos.module";
import {AggregatorFosComponent} from "./fos.component";
@NgModule({
imports: [
CommonModule,
LibFosRoutingModule,
FosRoutingModule,
FosModule
],
declarations: [
AggregatorFosComponent
],
exports: [
AggregatorFosComponent
],
providers: [
PreviousRouteRecorder
]
})
export class LibFosModule { }

View File

@ -1,188 +1,123 @@
<div class="image-front-topbar">
<div class="uk-section mainPageSearchForm">
<div class="uk-container">
<div class="search_box_bg uk-flex uk-flex-center">
<div>
<form class="uk-margin">
<div class="uk-grid uk-margin-small-left">
<div class="uk-margin-small-top uk-padding-remove-left">
<entities-selection [simpleView]="true" currentEntity="all" [selectedEntity]="selectedEntity"
[properties]="properties" [onChangeNavigate]="false"
(selectionChange)="entityChanged($event)" [customFilter]="customFilter"
></entities-selection>
</div>
<div class=" uk-padding-remove-left uk-margin-small-top">
<div class="uk-inline">
<a *ngIf="keyword.length > 0" class="uk-form-icon uk-form-icon-flip" (click)="keyword = ''"
uk-icon="icon: close"></a>
<input type="text" class="uk-input uk-width-xlarge@l uk-width-large@m uk-width-medium"
placeholder="Search in OpenAIRE for scholarly works"
[(ngModel)]="keyword"
name="keyword">
</div>
<div class=" quickSelectionsBox uk-width-xlarge@l uk-width-large@m uk-width-medium">
<quick-selections *ngIf="selectedEntity == 'result'" [resultTypes]="resultTypes"
[quickFilter]="resultsQuickFilter"
[properties]="properties">
</quick-selections>
</div>
</div>
<div class="uk-padding-remove-left uk-margin-small-top">
<button (click)="goTo(true)" type="submit"
class="uk-button portal-button uk-text-bold uk-padding uk-padding-remove-vertical uk-margin-small-left">
Search
</button>
<div class="uk-margin-small-top uk-margin-left">
<!-- (click)="goTo(false)"-->
<a *ngIf="selectedEntity!='all'" (click)="goTo(false)" class="portal-link">Advanced Search</a>
<a *ngIf="selectedEntity=='all'" class="portal-link ">Advanced Search</a></div>
<div *ngIf="selectedEntity=='all'" uk-dropdown class="uk-dropdown default-dropdown">
<ul class="uk-list uk-margin-remove-bottom">
<li *ngIf="showSoftware || showPublications || showOrp || showDatasets"><a
[routerLink]="properties.searchLinkToAdvancedResults"
[queryParams]="getQueryParamsForAdvancedSearch('result')"
>Research
outcomes</a></li>
<li *ngIf="showProjects"><a
[routerLink]="properties.searchLinkToAdvancedProjects"
[queryParams]="getQueryParamsForAdvancedSearch('project')">
Projects</a></li>
<li *ngIf="showDataProviders"><a
[routerLink]="properties.searchLinkToAdvancedDataProviders"
[queryParams]="getQueryParamsForAdvancedSearch('datasource')">
Content providers</a></li>
<li *ngIf="showOrganizations"><a
[routerLink]="properties.searchLinkToAdvancedOrganizations"
[queryParams]="getQueryParamsForAdvancedSearch('organization')">
Organizations</a></li>
</ul>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div class="uk-section graph-background" *ngIf="aggregator.graphSectionText && aggregator.graphSectionTitle">
<div class="uk-container">
<div class="uk-flex uk-flex-top uk-child-width-1-1 uk-child-width-1-2@m" uk-grid>
<div class="uk-flex-last@m">
<div [class.lines-10]="!readMore" class="uk-margin-bottom multi-line-ellipsis">
<div class="uk-h3">{{aggregator.graphSectionTitle}}</div>
<p [innerHtml]="aggregator.graphSectionText">
</p>
</div>
<div *ngIf="aggregator.graphSectionText">
<div *ngIf="!readMore" class="uk-text-center clickable" (click)="readMore = true">
<span>Read more<span class="space" uk-icon="chevron-down"></span></span>
</div>
<div *ngIf="readMore" class="uk-text-center clickable" (click)="readMore = false">
<span>Read less<span class="space" uk-icon="chevron-up"></span></span>
<div>
<div class="uk-section uk-padding-remove-bottom uk-overflow-hidden">
<div class="uk-container uk-container-large" uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-slide-bottom-medium; delay: 200">
<div class="uk-grid uk-flex-middle" uk-grid>
<div class="uk-width-3-5@m uk-margin-large-bottom">
<h1 class="uk-h2 uk-width-1-2@m" uk-scrollspy-class>
Discover open linked research<span class="uk-text-primary">.</span>
</h1>
<numbers #numbersComponent [defaultInit]="false"></numbers>
<div [class.uk-invisible]="disableSelect" class="uk-margin-medium-top uk-width-3-4@xl">
<advanced-search-input #advanced (searchEmitter)="goTo(true)">
<entities-selection [simpleView]="true" currentEntity="all" [selectedEntity]="selectedEntity"
(selectionChange)="entityChanged($event);advanced.focusNext(input, $event)" (disableSelectEmitter)="disableSelectChange($event)"
[onChangeNavigate]="false" class="uk-width-2-5"></entities-selection>
<div class="uk-width-expand" input #input placeholder="Scholary works" [searchable]="true" [hint]="'Search in OpenAIRE'" [(value)]="keyword"></div>
</advanced-search-input>
<div *ngIf="selectedEntity === 'result' && input.focused" (click)="$event.stopPropagation();advanced.focusNext(input, $event)" class="uk-dropdown uk-display-block uk-margin-small-top uk-width-auto">
<div class="uk-padding-small">
<quick-selections [resultTypes]="resultTypes" [quickFilter]="resultsQuickFilter"></quick-selections>
</div>
</div>
</div>
<div class="uk-padding-small uk-margin-small-top">
<div class="uk-text-meta">
Try browsing by:
</div>
<div class="link-actions uk-flex uk-flex-column uk-flex-top uk-margin-small-top">
<a class="uk-display-inline-block uk-text-uppercase uk-button uk-button-text uk-margin-small-bottom"
routerLinkActive="router-link-active" routerLink="/sdgs">
<span class="uk-flex uk-flex-middle">
<img src="assets/common-assets/sdg/sdg-dot-img.svg" alt="SDGs logo" loading="lazy">
<span class="uk-margin-small-left">Sustainable Development Goals (SDG<span class="uk-text-lowercase">s</span>)</span>
</span>
</a>
<a class="uk-display-inline-block uk-text-uppercase uk-button uk-button-text"
routerLinkActive="router-link-active" routerLink="/fields-of-science">
<span class="uk-flex uk-flex-middle">
<img src="assets/common-assets/fos/fos-icon.svg" alt="FOS logo" loading="lazy">
<span class="uk-margin-small-left">Fields of Science (FoS)</span>
</span>
</a>
</div>
</div>
</div>
</div>
<div class="uk-flex uk-flex-bottom">
<div class="uk-width-1-3 uk-width-1-2@m">
<img src="assets/graph.svg">
</div>
<div class="uk-padding uk-width-1-2">
<img src="assets/common-assets/logo-large-graph.png">
</div>
</div>
</div>
</div>
</div>
<!-- Funders Cards -->
<div *ngIf=" funders.length" class="uk-section uk-padding-remove-bottom" style="background: linear-gradient(180deg, #FAFAFA 50%, #FFFFFF 55%);">
<h3 class="uk-text-center uk-margin-medium-bottom">Our Canadian <span class="uk-text-bold">Funders</span></h3>
<!-- TODO: individual component -->
<div class="uk-section uk-container uk-container-large">
<div class="uk-grid uk-child-width-1-3" uk-grid uk-height-match="target: > div > .uk-card">
<div *ngFor="let funder of funders">
<div [routerLink]="properties.searchLinkToResults" [queryParams]="funder.params" class="uk-card uk-card-default uk-card-body uk-text-center uk-link">
<div class="uk-margin-bottom">
<img *ngIf="funder.logo" src={{funder.logo}} style="max-height: 80px;">
</div>
<div class="uk-margin-bottom">
<div class="uk-text-large">{{funder.name}}</div>
</div>
<div class="uk-margin-bottom">
<h5 class="uk-text-bold uk-margin-remove uk-link number">{{funder.publications | number}}</h5> research outcomes found
</div>
<div>
<h5 class="uk-text-bold uk-margin-remove uk-link number">{{(funder.openAccessPublications / funder.publications) * 100 | number : '1.0-0'}}%</h5> Open Access
<div class="uk-visible@m uk-width-expand" uk-scrollspy-class>
<div class="uk-position-relative">
<img src="assets/aggregator-assets/home/canada.png" uk-parallax="y: 500">
<img class="uk-position-bottom-left" src="assets/aggregator-assets/home/mask.svg">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="uk-section uk-padding-remove-bottom">
<h3 class="uk-text-center uk-margin-medium-bottom">Our growing <span class="uk-text-bold">Community</span></h3>
<numbers #numbersComponent [defaultInit]="false" backgroundClass="numbers-background"></numbers>
</div>
<div class="uk-section" >
<div class="uk-padding uk-padding-remove-horizontal">
<div class="uk-container uk-container-small">
<div class="uk-grid-margin uk-grid uk-grid-stack" uk-grid="">
<div class="uk-width-1-1@m uk-first-column">
<div
class="uk-margin uk-text-center uk-child-width-1-1 uk-grid-match uk-child-width-1-1@s uk-child-width-1-2@m uk-child-width-1-2@l uk-grid"
id="page#8" uk-grid="" uk-height-match="target: .target">
<div class="uk-first-column">
<div class="el-item uk-card uk-card-default uk-card-medium uk-card-body">
<div class="uk-text-center target"><img alt="Share" class="uk-width-1-3@m uk-width-small"
src="assets/share.svg"></div>
<div class="el-content uk-margin uk-text-large"><span class="uk-text-bold">Deposit</span> your research
</div>
<div class="uk-margin-small-top uk-text-left card-text uk-flex uk-flex-center">
<div class="uk-margin-left uk-margin-right">Deposit in a repository of your choice.<br>
Select an OpenAIRE compatible<br>
repository (2.0 +) so that your research is linked to your funding information. Use Zenodo, a
catch-all repository hosted by CERN to deposit all your research results (publications, data,
software, etc.)
</div>
</div>
<a class="uk-button portal-button uk-padding uk-padding-remove-vertical uk-margin-small-left ng-star-inserted uk-margin uk-margin-bottom uk-width-1-2"
href="/participate/deposit/learn-how" type="submit">Deposit </a></div>
</div>
<div>
<div class="el-item uk-card uk-card-default uk-card-medium uk-card-body">
<div class="uk-text-center target"><img alt="Share" class="uk-width-1-3@m uk-width-small"
src="assets/link.svg"></div>
<div class="el-content uk-margin uk-text-large"><span class="uk-text-bold">Link</span> your work</div>
<div class="uk-margin-small-top uk-text-left card-text uk-flex uk-flex-center">
<div class="uk-margin-left uk-margin-right">Connect all your research.<br>
If you can't find your research results in OpenAIRE, don't worry! Use our Link Out service , that
reaches out to many<br>
external sources via APIs, to connect<br>
your research results and claim them to your project.
</div>
</div>
<a class="uk-button portal-button uk-padding uk-padding-remove-vertical uk-margin-small-left ng-star-inserted uk-margin uk-margin-bottom uk-width-1-2"
href="/participate/claim" type="submit">Link </a></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!--<helper *ngIf="pageContents && pageContents['left'] && pageContents['left'].length > 0"-->
<!-- [texts]="pageContents['left']"></helper>-->
<!--<div class="uk-section-muted"-->
<!-- uk-scrollspy="{&quot;target&quot;:&quot;[uk-scrollspy-class]&quot;,&quot;cls&quot;:&quot;uk-animation-fade&quot;,&quot;delay&quot;:false}">-->
<!-- <div class="uk-container uk-container-large">-->
<!-- <other-portals portal="explore" [properties]="properties"></other-portals>-->
<!-- </div>-->
<!--</div>-->
<div class="uk-background-muted" *ngIf="aggregator.graphSectionText && aggregator.graphSectionTitle">
<div class="uk-section uk-section-large uk-container uk-container-large">
<div class="uk-grid uk-child-width-1-2@m" uk-grid>
<div>
<div style="max-width: 600px;">
<h2 class="uk-margin-small-top">{{aggregator.graphSectionTitle}}<span class="text-graph">.</span></h2>
<p [innerHtml]="aggregator.graphSectionText"></p>
</div>
</div>
<div class="uk-position-relative">
<img class="uk-visible@m uk-height-1-1 uk-position-center-right" src="assets/common-assets/common/graph-nodes.svg" alt="OpenAIRE Research Graph" loading="lazy">
</div>
</div>
</div>
</div>
<ng-container *ngIf="this.customFilter && this.customFilter.valueId == 'CA'">
<div *ngIf="funders.length" class="uk-section uk-section-large">
<h2 class="uk-heading-large uk-text-center uk-width-1-2@m uk-margin-auto">Our Canadian Funders<span class="uk-text-primary">.</span></h2>
<div class="uk-section uk-container uk-container-large">
<div class="uk-grid-match uk-grid-medium uk-child-width-1-3 uk-flex-center" uk-grid uk-height-match="target: .logo, .title, .outcomes, .percentage">
<div *ngFor="let funder of funders">
<a [routerLink]="properties.searchLinkToResults" [queryParams]="funder.params" class="uk-height-1-1 uk-link-reset uk-display-block">
<div class="uk-card uk-card-default uk-card-hover uk-card-body uk-text-center funder">
<img *ngIf="funder.logo" src={{funder.logo}} alt="{{funder.name}}" class="logo" style="max-height: 60px;">
<div class="uk-margin-top uk-margin-bottom title">{{funder.name}}</div>
<div class="outcomes">
<h5 class="uk-margin-remove">{{funder.publications | number}}</h5>
<span>Research Outcomes Found</span>
</div>
<div class="uk-margin-top percentage">
<h5 class="uk-margin-remove">{{(funder.openAccessPublications / funder.publications) * 100 | number : '1.0-0'}}%</h5>
<span>Open Access</span>
</div>
</div>
</a>
</div>
</div>
</div>
</div>
</ng-container>
<div class="uk-section uk-section-large uk-padding-remove-top uk-container uk-container-large uk-margin-large-top">
<h2 class="uk-h1">Share your research<span class="uk-text-primary">.</span></h2>
<div class="uk-grid uk-child-width-1-2@m uk-margin-large-top" uk-grid>
<div>
<div class="uk-text-center uk-margin-auto" style="max-width:420px;">
<img src="assets/aggregator-assets/home/linking-home-img.svg" alt="Linking">
<h5>Link your work.</h5>
<div>
Connect all your research. If you cant find your research results in OpenAIRE, dont worry! Use our Link Out service , that reaches out to many external sources via APIs, to connect your research results and claim them to your project.
</div>
<a class="uk-button uk-button-primary uk-margin-medium-top" routerLink="/participate/claim">
Learn More
</a>
</div>
</div>
<div>
<div class="uk-text-center uk-margin-auto" style="max-width:420px;">
<img src="assets/aggregator-assets/home/deposit-home-img.svg" alt="Deposit">
<h5>Deposit your research.</h5>
<div>
Whether its publications, data or software, select an OpenAIRE compatible repository and share using community standards. Alternatively use Zenodo, a catch-all repository hosted by CERN. All results will be indexed, discoverable and accessible via Canada Explore.
</div>
<a class="uk-button uk-button-primary uk-margin-medium-top" routerLink="/participate/deposit/learn-how">
Learn More
</a>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,9 @@
@import (reference) "~src/assets/openaire-theme/less/_import-variables";
.link-actions img {
width: 17px;
}
.uk-card.funder {
border-bottom: 4px solid fade(@organization-color, 30%);
}

View File

@ -1,21 +1,15 @@
import {Component, ViewChild} from '@angular/core';
import {ChangeDetectorRef, Component, ViewChild} from '@angular/core';
import {Subscription, zip} from 'rxjs';
import {ActivatedRoute, Router} from '@angular/router';
import {Location} from '@angular/common';
import {Router} from '@angular/router';
import {Meta, Title} from '@angular/platform-browser';
import {ConfigurationService} from '../openaireLibrary/utils/configuration/configuration.service';
import {SearchDataprovidersService} from '../openaireLibrary/services/searchDataproviders.service';
import {SearchProjectsService} from '../openaireLibrary/services/searchProjects.service';
import {SearchOrganizationsService} from '../openaireLibrary/services/searchOrganizations.service';
import {RefineFieldResultsService} from '../openaireLibrary/services/refineFieldResults.service';
import {SearchFields} from '../openaireLibrary/utils/properties/searchFields';
import {OpenaireEntities, SearchFields} from '../openaireLibrary/utils/properties/searchFields';
import {RouterHelper} from '../openaireLibrary/utils/routerHelper.class';
import {EnvProperties} from '../openaireLibrary/utils/properties/env-properties';
import {ErrorCodes} from '../openaireLibrary/utils/properties/errorCodes';
import {PiwikService} from '../openaireLibrary/utils/piwik/piwik.service';
import {SEOService} from '../openaireLibrary/sharedComponents/SEO/SEO.service';
import {SearchResearchResultsService} from "../openaireLibrary/services/searchResearchResults.service";
import {HelperService} from "../openaireLibrary/utils/helper/helper.service";
import {Filter} from "../openaireLibrary/searchPages/searchUtils/searchHelperClasses.class";
import {AggregatorInfo, PortalAggregators} from "../utils/aggregators";
@ -24,33 +18,24 @@ import {properties} from "../../environments/environment";
import {portalProperties} from "../../environments/environment-aggregator";
import {StringUtils} from "../openaireLibrary/utils/string-utils.class";
import {ConnectHelper} from "../openaireLibrary/connect/connectHelper";
import {NumbersComponent} from "../openaireLibrary/sharedComponents/numbers/numbers.component";
import {Numbers, NumbersComponent} from "../openaireLibrary/sharedComponents/numbers/numbers.component";
@Component({
selector: 'home',
templateUrl: 'home.component.html',
styleUrls: ['home.component.less']
})
export class HomeComponent {
public keyword:string = "";
public searchFields:SearchFields = new SearchFields();
public errorCodes:ErrorCodes = new ErrorCodes();
public routerHelper:RouterHelper = new RouterHelper();
showPublications: boolean = portalProperties.entities.publication.isEnabled;
showDatasets: boolean = portalProperties.entities.dataset.isEnabled;
showSoftware: boolean = portalProperties.entities.software.isEnabled;
showOrp: boolean = portalProperties.entities.other.isEnabled;
showOrganizations: boolean = portalProperties.entities.organization.isEnabled;
showProjects: boolean = portalProperties.entities.project.isEnabled;
showDataProviders: boolean = portalProperties.entities.datasource.isEnabled;
public numbers: Numbers = {};
properties: EnvProperties = properties;
public openaireEntities = OpenaireEntities;
public readMore: boolean = false;
private noOfFunders = 3;
public funders = [];
subs: Subscription[] = [];
resultsQuickFilter: { filter: Filter, selected: boolean, filterId: string, value: string } = {
filter: null,
selected: true,
@ -58,6 +43,7 @@ export class HomeComponent {
value: "Open Access"
};
selectedEntity = "all";
disableSelect;
selectedEntitySimpleUrl;
selectedEntityAdvancedUrl;
resultTypes:Filter = {values:[],filterId:"type", countSelectedValues: 0, filterType: 'checkbox', originalFilterId: "", valueIsExact: true, title: "Result Types",filterOperator:"or"};
@ -68,29 +54,22 @@ export class HomeComponent {
@ViewChild('numbersComponent', { static: true }) numbersComponent: NumbersComponent;
constructor (
private route: ActivatedRoute,
private _router: Router,
private _searchResearchResultsService: SearchResearchResultsService,
private _searchDataprovidersService: SearchDataprovidersService,
private _searchProjectsService: SearchProjectsService,
private _searchOrganizationsService: SearchOrganizationsService,
private _refineFieldResultsService:RefineFieldResultsService,
private location: Location, private _piwikService:PiwikService,
private _piwikService:PiwikService,
private config: ConfigurationService, private _meta: Meta, private _title: Title, private seoService: SEOService,
private helper: HelperService
private helper: HelperService,
private cdr: ChangeDetectorRef
) {
this.aggregatorId = ConnectHelper.getCommunityFromDomain(properties.domain);
this.aggregator = PortalAggregators.getFilterInfoByMenuId(this.aggregatorId);
this.customFilter = PortalAggregators.getSearchCustomFilterByAggregator(this.aggregator);
let description = "OpenAIRE Explore: Over 100M of research deduplicated, 170K research software, 11M research data. One of the largest open scholarly records collection worldwide.";
let title = "OpenAIRE - Explore| " +this.aggregator.title;
let title = "OpenAIRE - Explore | " +this.aggregator.title;
this._title.setTitle(title);
this._meta.updateTag({content:description},"name='description'");
this._meta.updateTag({content:description},"property='og:description'");
this._meta.updateTag({content:title},"property='og:title'");
}
private getPageContents() {
@ -112,37 +91,46 @@ export class HomeComponent {
if(this.properties.enablePiwikTrack && (typeof document !== 'undefined')){
this.subs.push(this._piwikService.trackView(this.properties, "OpenAIRE").subscribe());
}
//this.config.getCommunityInformation(this.properties, this.properties.adminToolsCommunity ).subscribe(data => {
if(this.numbersComponent) {
this.numbersComponent.showPublications = portalProperties.entities.publication.isEnabled;
this.numbersComponent.showDatasets = portalProperties.entities.dataset.isEnabled;
this.numbersComponent.showSoftware = portalProperties.entities.software.isEnabled;
this.numbersComponent.showOrp = portalProperties.entities.other.isEnabled;
this.numbersComponent.showOrganizations = portalProperties.entities.organization.isEnabled;
this.numbersComponent.showProjects = portalProperties.entities.project.isEnabled;
this.numbersComponent.showDataProviders = portalProperties.entities.datasource.isEnabled;
}
this.subs.push(this.config.communityInformationState.subscribe(data => {
if(data) {
var showEntity = {};
for (var i = 0; i < data['entities'].length; i++) {
showEntity["" + data['entities'][i]["pid"] + ""] = data['entities'][i]["isEnabled"];
}
this.showPublications = !!showEntity["publication"];
this.showDatasets = !!showEntity["dataset"];
this.showSoftware = !!showEntity["software"];
this.showOrp = !!showEntity["orp"];
this.showProjects = !!showEntity["project"];
this.showDataProviders = !!showEntity["datasource"];
this.showOrganizations = !!showEntity["organization"];
if(this.showPublications){
this.resultTypes.values.push({name: "Publications" , id:"publications",selected:true, number:0});
if(this.numbersComponent) {
this.numbersComponent.showPublications = !!showEntity["publication"];
this.numbersComponent.showDatasets = !!showEntity["dataset"];
this.numbersComponent.showSoftware = !!showEntity["software"];
this.numbersComponent.showOrp = !!showEntity["orp"];
this.numbersComponent.showProjects = !!showEntity["project"];
this.numbersComponent.showDataProviders = !!showEntity["datasource"];
this.numbersComponent.showOrganizations = !!showEntity["organization"];
}
if(this.numbersComponent && this.numbersComponent.showPublications){
this.resultTypes.values.push({name: this.openaireEntities.PUBLICATIONS , id:"publications",selected:false, number:0});
}
if(this.showDatasets){
this.resultTypes.values.push({name: "Research data" , id:"datasets",selected:true, number:0});
if(this.numbersComponent && this.numbersComponent.showDatasets){
this.resultTypes.values.push({name: this.openaireEntities.DATASETS , id:"datasets",selected:false, number:0});
}
if(this.showSoftware){
this.resultTypes.values.push({name: "Software" , id:"software",selected:true, number:0});
if(this.numbersComponent && this.numbersComponent.showSoftware){
this.resultTypes.values.push({name: this.openaireEntities.SOFTWARE , id:"software",selected:false, number:0});
}
if(this.showOrp){
this.resultTypes.values.push({name: "Other research products" , id:"other",selected:true, number:0});
if(this.numbersComponent && this.numbersComponent.showOrp){
this.resultTypes.values.push({name: this.openaireEntities.OTHER , id:"other",selected:false, number:0});
}
this.numbersComponent.init(false, false, this.showPublications, this.showDatasets,
this.showSoftware, this.showOrp, this.showProjects, this.showDataProviders,
StringUtils.URIEncode(this.customFilter.queryFieldName + " exact " + StringUtils.quote((this.customFilter.valueId ))));
if(this.numbersComponent) {
this.numbersComponent.init(false, false, this.numbersComponent.showPublications, this.numbersComponent.showDatasets, this.numbersComponent.showSoftware, this.numbersComponent.showOrp, this.numbersComponent.showProjects, this.numbersComponent.showDataProviders, this.numbersComponent.showOrganizations,
this.customFilter ? StringUtils.URIEncode(this.customFilter.queryFieldName + " exact " + StringUtils.quote((this.customFilter.valueId))) : '');
}
this.getFunders();
}
},
@ -220,7 +208,7 @@ export class HomeComponent {
params["f0"] = "q";
}
if(this.customFilter){
params = this.customFilter.getParameters(params);
params = this.customFilter.getParameters(params);
}
return params;
}
@ -277,7 +265,21 @@ export class HomeComponent {
}
}
});
// console.log(this.funders);
}));
}
isRouteAvailable(routeToCheck: string) {
for (let i = 0; i < this._router.config.length; i++) {
let routePath: string = this._router.config[i].path;
if (routePath == routeToCheck) {
return true;
}
}
return false;
}
disableSelectChange(event: boolean) {
this.disableSelect = event;
this.cdr.detectChanges();
}
}

View File

@ -24,8 +24,10 @@ import {EntitiesSelectionModule} from "../openaireLibrary/searchPages/searchUtil
import {QuickSelectionsModule} from "../openaireLibrary/searchPages/searchUtils/quick-selections.module";
import {IconsModule} from "../openaireLibrary/utils/icons/icons.module";
import {IconsService} from "../openaireLibrary/utils/icons/icons.service";
import {arrow_right, book, cog, database, earth} from "../openaireLibrary/utils/icons/icons";
import {book, cog, database, earth} from "../openaireLibrary/utils/icons/icons";
import {NumbersModule} from "../openaireLibrary/sharedComponents/numbers/numbers.module";
import {AdvancedSearchInputModule} from "../openaireLibrary/sharedComponents/advanced-search-input/advanced-search-input.module";
import {InputModule} from "../openaireLibrary/sharedComponents/input/input.module";
@NgModule({
imports: [
@ -38,7 +40,7 @@ import {NumbersModule} from "../openaireLibrary/sharedComponents/numbers/numbers
HomeRoutingModule,
HelperModule,
ErrorMessagesModule,
SEOServiceModule, EntitiesSelectionModule, QuickSelectionsModule, IconsModule, NumbersModule
SEOServiceModule, EntitiesSelectionModule, QuickSelectionsModule, IconsModule, NumbersModule, AdvancedSearchInputModule, InputModule
],
declarations: [
HomeComponent
@ -52,6 +54,6 @@ import {NumbersModule} from "../openaireLibrary/sharedComponents/numbers/numbers
})
export class HomeModule {
constructor(private iconsService: IconsService) {
this.iconsService.registerIcons([arrow_right, book, earth, cog, database]);
this.iconsService.registerIcons([book, earth, cog, database]);
}
}

View File

@ -4,13 +4,14 @@ import { RouterModule } from '@angular/router';
import { OpenaireDataProviderComponent } from './dataProvider.component';
import {FreeGuard} from '../../openaireLibrary/login/freeGuard.guard';
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {properties} from "../../../environments/environment";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: OpenaireDataProviderComponent, canActivate: [FreeGuard], data: {
redirect: '/error'
redirect: properties.errorLink
},canDeactivate: [PreviousRouteRecorder] }
])
]

View File

@ -4,13 +4,14 @@ import { RouterModule } from '@angular/router';
import { OpenaireDatasetComponent } from './dataset.component';
import {FreeGuard} from '../../openaireLibrary/login/freeGuard.guard';
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {properties} from "../../../environments/environment";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: OpenaireDatasetComponent, canActivate: [FreeGuard], data: {
redirect: '/error'
redirect: properties.errorLink
},canDeactivate: [PreviousRouteRecorder] }
])
]

View File

@ -4,13 +4,14 @@ import {RouterModule} from '@angular/router';
import {OpenaireOrganizationComponent} from './organization.component';
import {FreeGuard} from '../../openaireLibrary/login/freeGuard.guard';
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {properties} from "../../../environments/environment";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: OpenaireOrganizationComponent, canActivate: [FreeGuard], data: {
redirect: '/error'
redirect: properties.errorLink
},canDeactivate: [PreviousRouteRecorder] }
])
]

View File

@ -3,13 +3,14 @@ import {RouterModule} from '@angular/router';
import {OpenaireOrpComponent} from './orp.component';
import {FreeGuard} from '../../openaireLibrary/login/freeGuard.guard';
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {properties} from "../../../environments/environment";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: OpenaireOrpComponent, canActivate: [FreeGuard], data: {
redirect: '/error'
redirect: properties.errorLink
},canDeactivate: [PreviousRouteRecorder] }
])
]

View File

@ -4,13 +4,14 @@ import {RouterModule} from '@angular/router';
import {OpenaireProjectComponent} from './project.component';
import {FreeGuard} from '../../openaireLibrary/login/freeGuard.guard';
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {properties} from "../../../environments/environment";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: OpenaireProjectComponent, canActivate: [FreeGuard], data: {
redirect: '/error'
redirect: properties.errorLink
},canDeactivate: [PreviousRouteRecorder] }
])
]

View File

@ -4,13 +4,14 @@ import {RouterModule} from '@angular/router';
import {OpenairePublicationComponent} from './publication.component';
import {FreeGuard} from '../../openaireLibrary/login/freeGuard.guard';
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {properties} from "../../../environments/environment";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: OpenairePublicationComponent, canActivate: [FreeGuard], data: {
redirect: '/error'
redirect: properties.errorLink
},canDeactivate: [PreviousRouteRecorder] }
])
]

View File

@ -3,13 +3,14 @@ import { RouterModule } from '@angular/router';
import {OpenaireResultComponent } from './result.component';
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {properties} from "../../../environments/environment";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: OpenaireResultComponent, data: {
redirect: '/error', community : 'openaire'
redirect: properties.errorLink, community : 'openaire'
},canDeactivate: [PreviousRouteRecorder] }
])
]

View File

@ -0,0 +1,14 @@
import { NgModule} from '@angular/core';
import { DataProviderModule } from '../../openaireLibrary/landingPages/dataProvider/dataProvider.module';
import { OpenaireServiceComponent } from './service.component';
import {ServiceRoutingModule} from './service-routing.module';
import {FreeGuard} from '../../openaireLibrary/login/freeGuard.guard';
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
@NgModule({
imports: [DataProviderModule, ServiceRoutingModule],
declarations:[OpenaireServiceComponent],
providers:[FreeGuard, PreviousRouteRecorder],
exports:[OpenaireServiceComponent]
})
export class LibServiceModule { }

View File

@ -0,0 +1,19 @@
import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';
import { OpenaireServiceComponent } from './service.component';
import {FreeGuard} from '../../openaireLibrary/login/freeGuard.guard';
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {properties} from "../../../environments/environment";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: OpenaireServiceComponent, canActivate: [FreeGuard], data: {
redirect: properties.errorLink
},canDeactivate: [PreviousRouteRecorder] }
])
]
})
export class ServiceRoutingModule { }

View File

@ -0,0 +1,20 @@
import {Component} from '@angular/core';
import {properties} from "../../../environments/environment";
@Component({
selector: 'openaire-dataprovider',
template: `<dataprovider type="service" [piwikSiteId]="piwikSiteId"></dataprovider>`,
})
export class OpenaireServiceComponent{
piwikSiteId = properties.piwikSiteId;
constructor ( ) {
}
ngOnInit() {
}
}

@ -1 +1 @@
Subproject commit ca430fd89f7654bb71f52383bd52bf58e4c70e5f
Subproject commit 328198b6a56c3f3ecb38c7928073914a9609ddc0

View File

@ -0,0 +1,21 @@
import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';
import {PreviousRouteRecorder} from "../../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
import {OpenaireMyOrcidLinksComponent} from "./myOrcidLinks.component";
import {LoginGuard} from "../../openaireLibrary/login/loginGuard.guard";
import {properties} from "../../../environments/environment";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: OpenaireMyOrcidLinksComponent,
canActivate: [LoginGuard], data: {
redirect: properties.errorLink, community : 'openaire'
},
canDeactivate: [PreviousRouteRecorder]
}
])
]
})
export class MyOrcidLinksRoutingModule { }

View File

@ -0,0 +1,16 @@
import {Component} from '@angular/core';
@Component({
selector: 'openaire-my-orcid-links',
template: `
<my-orcid-links></my-orcid-links>
`
})
export class OpenaireMyOrcidLinksComponent {
constructor() {}
public ngOnInit() {}
}

View File

@ -0,0 +1,24 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import {PreviousRouteRecorder} from "../../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
import {OpenaireMyOrcidLinksComponent} from './myOrcidLinks.component';
import {MyOrcidLinksModule} from "../../openaireLibrary/orcid/my-orcid-links/myOrcidLinks.module";
import {MyOrcidLinksRoutingModule} from "./myOrcidLinks-routing.module";
import {LoginGuard} from "../../openaireLibrary/login/loginGuard.guard";
@NgModule({
imports: [
CommonModule, FormsModule,
MyOrcidLinksModule,
MyOrcidLinksRoutingModule
],
declarations: [
OpenaireMyOrcidLinksComponent
],
exports: [
OpenaireMyOrcidLinksComponent
],
providers: [PreviousRouteRecorder, LoginGuard]
})
export class LibMyOrcidLinksModule { }

View File

@ -0,0 +1,21 @@
import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';
import {OpenaireOrcidComponent} from './orcid.component';
import {PreviousRouteRecorder} from "../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
import {LoginGuard} from "../openaireLibrary/login/loginGuard.guard";
import {properties} from "../../environments/environment";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: OpenaireOrcidComponent,
canActivate: [LoginGuard], data: {
redirect: properties.errorLink, community : 'openaire'
},
canDeactivate: [PreviousRouteRecorder] }
])
]
})
export class OrcidRoutingModule { }

View File

@ -0,0 +1,10 @@
import { Component } from '@angular/core';
@Component({
selector: 'openaire-orcid',
template: `
<orcid></orcid>
`
})
export class OpenaireOrcidComponent {}

View File

@ -0,0 +1,24 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import {OpenaireOrcidComponent} from './orcid.component';
import {OrcidRoutingModule} from './orcid-routing.module';
import {PreviousRouteRecorder} from "../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
import {FormsModule} from "@angular/forms";
import {OrcidModule} from "../openaireLibrary/orcid/orcid.module";
import {LoginGuard} from "../openaireLibrary/login/loginGuard.guard";
@NgModule({
imports: [
CommonModule, FormsModule,
OrcidModule, OrcidRoutingModule
],
declarations: [
OpenaireOrcidComponent
],
providers: [PreviousRouteRecorder, LoginGuard],
exports: [
OpenaireOrcidComponent
]
})
export class LibOrcidModule { }

View File

@ -0,0 +1,24 @@
import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';
import {IsRouteEnabled} from "../../openaireLibrary/error/isRouteEnabled.guard";
import {PreviousRouteRecorder} from "../../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
import {OpenaireSearchRecommendedResultsForOrcidComponent} from "./searchRecommendedResultsForOrcid.component";
import {FreeGuard} from "../../openaireLibrary/login/freeGuard.guard";
import {LoginGuard} from "../../openaireLibrary/login/loginGuard.guard";
import {properties} from "../../../environments/environment";
@NgModule({
imports: [
RouterModule.forChild([
// { path: '', component: OpenaireSearchMyResultsInOrcidComponent, canActivate: [IsRouteEnabled], data: {
{ path: '', component: OpenaireSearchRecommendedResultsForOrcidComponent,
canActivate: [LoginGuard], data: {
redirect: properties.errorLink, community : 'openaire'
},
canDeactivate: [PreviousRouteRecorder]
}
])
]
})
export class SearchRecommendedResultsForOrcidRoutingModule { }

View File

@ -0,0 +1,16 @@
import {Component} from '@angular/core';
@Component({
selector: 'openaire-search-recommended-results-for-orcid',
template: `
<search-recommended-results-for-orcid></search-recommended-results-for-orcid>
`
})
export class OpenaireSearchRecommendedResultsForOrcidComponent {
constructor() {}
public ngOnInit() {}
}

View File

@ -0,0 +1,27 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import {OpenaireSearchRecommendedResultsForOrcidComponent} from "./searchRecommendedResultsForOrcid.component";
import {PreviousRouteRecorder} from "../../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
import {IsRouteEnabled} from "../../openaireLibrary/error/isRouteEnabled.guard";
import {SearchRecommendedResultsForOrcidModule} from "../../openaireLibrary/orcid/recommend-orcid-links/searchRecommendedResultsForOrcid.module";
import {SearchRecommendedResultsForOrcidRoutingModule} from "./searchRecommendedResultsForOrcid-routing.module";
import {FreeGuard} from "../../openaireLibrary/login/freeGuard.guard";
import {LoginGuard} from "../../openaireLibrary/login/loginGuard.guard";
@NgModule({
imports: [
CommonModule, FormsModule,
SearchRecommendedResultsForOrcidModule,
SearchRecommendedResultsForOrcidRoutingModule
],
declarations: [
OpenaireSearchRecommendedResultsForOrcidComponent
],
exports: [
OpenaireSearchRecommendedResultsForOrcidComponent
],
// providers: [PreviousRouteRecorder, IsRouteEnabled]
providers: [PreviousRouteRecorder, LoginGuard]
})
export class LibSearchRecommendedResultsForOrcidModule { }

View File

@ -0,0 +1,17 @@
import {NgModule} from "@angular/core";
import {RouterModule} from "@angular/router";
import {PreviousRouteRecorder} from "../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
import {AggregatorSdgComponent} from "./sdg.component";
@NgModule({
imports: [
RouterModule.forChild([
{
path: '',
component: AggregatorSdgComponent,
canDeactivate: [PreviousRouteRecorder]
}
])
]
})
export class LibSdgRoutingModule { }

View File

@ -0,0 +1,26 @@
import {Component} from "@angular/core";
import {properties} from "../../environments/environment";
import {ConnectHelper} from "../openaireLibrary/connect/connectHelper";
import {SearchCustomFilter} from "../openaireLibrary/searchPages/searchUtils/searchUtils.class";
import {AggregatorInfo, PortalAggregators} from "../utils/aggregators";
@Component({
selector: 'aggregator-sdg',
template: `
<sdg [piwikSiteId]="piwikSiteId" [customFilter]="customFilter"></sdg>
`
})
export class AggregatorSdgComponent {
piwikSiteId = properties.piwikSiteId;
aggregatorId;
aggregator: AggregatorInfo;
customFilter: SearchCustomFilter = null;
constructor() {
this.aggregatorId = ConnectHelper.getCommunityFromDomain(properties.domain);
this.aggregator = PortalAggregators.getFilterInfoByMenuId(this.aggregatorId);
this.customFilter = PortalAggregators.getSearchCustomFilterByAggregator(this.aggregator);
}
public ngOnInit() {}
}

26
src/app/sdg/sdg.module.ts Normal file
View File

@ -0,0 +1,26 @@
import {CommonModule} from "@angular/common";
import {NgModule} from "@angular/core";
import {PreviousRouteRecorder} from "../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
import {LibSdgRoutingModule} from "./sdg-routing.module";
import {SdgRoutingModule} from "../openaireLibrary/sdg/sdg-routing.module";
import {SdgModule} from "../openaireLibrary/sdg/sdg.module";
import {AggregatorSdgComponent} from "./sdg.component";
@NgModule({
imports: [
CommonModule,
LibSdgRoutingModule,
SdgRoutingModule,
SdgModule
],
declarations: [
AggregatorSdgComponent
],
exports: [
AggregatorSdgComponent
],
providers: [
PreviousRouteRecorder
]
})
export class LibSdgModule { }

View File

@ -2,13 +2,14 @@ import {NgModule} from '@angular/core';
import {RouterModule} from '@angular/router';
import {OpenaireAdvancedSearchDataProvidersComponent} from './advancedSearchDataProviders.component';
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {properties} from "../../../environments/environment";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: OpenaireAdvancedSearchDataProvidersComponent, data: {
redirect: '/error'
redirect: properties.errorLink
}, canDeactivate: [PreviousRouteRecorder] }
])

View File

@ -4,13 +4,14 @@ import {AggregatorInfo, PortalAggregators} from "../../utils/aggregators";
import {ConnectHelper} from "../../openaireLibrary/connect/connectHelper";
import {properties} from "../../../environments/environment";
import {EnvProperties} from "../../openaireLibrary/utils/properties/env-properties";
import {SearchForm} from "../../openaireLibrary/searchPages/searchUtils/newSearchPage.component";
@Component({
selector: 'openaire-advanced-search-dataprovider',
template: `
<search-dataproviders [customFilter]="customFilter" [simpleView]="false" [openaireLink]="'https://'+(properties.environment != 'production'?'beta.':'')+'explore.openaire.eu/search/advanced/dataproviders'"
[piwikSiteId]="properties.piwikSiteId">
<search-dataproviders [customFilter]="customFilter" [simpleView]="false" [openaireLink]="customFilter?'https://'+(properties.environment != 'production'?'beta.':'')+'explore.openaire.eu/search/advanced/dataproviders':null"
[piwikSiteId]="properties.piwikSiteId" [hasPrefix]="false" [searchForm]="searchForm">
</search-dataproviders>
`
@ -19,6 +20,7 @@ import {EnvProperties} from "../../openaireLibrary/utils/properties/env-properti
export class OpenaireAdvancedSearchDataProvidersComponent {
customFilter: SearchCustomFilter = null;
properties: EnvProperties;
public searchForm: SearchForm = {class: 'search-form', dark: true};
constructor ( ) {}
ngOnInit() {
this.properties = properties;

View File

@ -3,13 +3,14 @@ import {RouterModule} from '@angular/router';
import {OpenaireAdvancedSearchOrganizationsComponent} from './advancedSearchOrganizations.component';
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {properties} from "../../../environments/environment";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: OpenaireAdvancedSearchOrganizationsComponent , data: {
redirect: '/error'
redirect: properties.errorLink
},canDeactivate: [PreviousRouteRecorder]}
])

View File

@ -4,13 +4,14 @@ import {AggregatorInfo, PortalAggregators} from "../../utils/aggregators";
import {ConnectHelper} from "../../openaireLibrary/connect/connectHelper";
import {properties} from "../../../environments/environment";
import {EnvProperties} from "../../openaireLibrary/utils/properties/env-properties";
import {SearchForm} from "../../openaireLibrary/searchPages/searchUtils/newSearchPage.component";
@Component({
selector: 'openaire-advanced-search-organizations',
template: `
<search-organizations [customFilter]="customFilter" [simpleView]="false" [openaireLink]="'https://'+(properties.environment != 'production'?'beta.':'')+'explore.openaire.eu/search/advanced/organizations'"
[piwikSiteId]="properties.piwikSiteId">
<search-organizations [customFilter]="customFilter" [simpleView]="false" [openaireLink]="customFilter?'https://'+(properties.environment != 'production'?'beta.':'')+'explore.openaire.eu/search/advanced/organizations':null"
[piwikSiteId]="properties.piwikSiteId" [hasPrefix]="false" [searchForm]="searchForm">
</search-organizations>
`
@ -20,6 +21,7 @@ export class OpenaireAdvancedSearchOrganizationsComponent {
customFilter:SearchCustomFilter= null;
properties: EnvProperties;
public searchForm: SearchForm = {class: 'search-form', dark: true};
constructor ( ) {}
ngOnInit() {
this.properties = properties;

View File

@ -3,12 +3,13 @@ import { RouterModule } from '@angular/router';
import{OpenaireAdvancedSearchProjectsComponent} from './advancedSearchProjects.component';
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {properties} from "../../../environments/environment";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: OpenaireAdvancedSearchProjectsComponent, data: {
redirect: '/error'
redirect: properties.errorLink
}, canDeactivate: [PreviousRouteRecorder] }
])

View File

@ -4,12 +4,13 @@ import {AggregatorInfo, PortalAggregators} from "../../utils/aggregators";
import {ConnectHelper} from "../../openaireLibrary/connect/connectHelper";
import {properties} from "../../../environments/environment";
import {EnvProperties} from "../../openaireLibrary/utils/properties/env-properties";
import {SearchForm} from "../../openaireLibrary/searchPages/searchUtils/newSearchPage.component";
@Component({
selector: 'openaire-advanced-search-projects',
template: `
<search-projects [customFilter]="customFilter" [simpleView]="false" [openaireLink]="'https://'+(properties.environment != 'production'?'beta.':'')+'explore.openaire.eu/search/advanced/projects'"
[piwikSiteId]="properties.piwikSiteId">
<search-projects [customFilter]="customFilter" [simpleView]="false" [openaireLink]="customFilter?'https://'+(properties.environment != 'production'?'beta.':'')+'explore.openaire.eu/search/advanced/projects':null"
[piwikSiteId]="properties.piwikSiteId" [hasPrefix]="false" [searchForm]="searchForm">
</search-projects>
`
@ -19,6 +20,7 @@ export class OpenaireAdvancedSearchProjectsComponent {
customFilter:SearchCustomFilter= null;
properties: EnvProperties;
public searchForm: SearchForm = {class: 'search-form', dark: true};
constructor ( ) {}
ngOnInit() {
this.properties = properties;

View File

@ -0,0 +1,18 @@
import {NgModule} from '@angular/core';
import {RouterModule} from '@angular/router';
import {OpenaireAdvancedSearchServicesComponent} from './advancedSearchServices.component';
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {properties} from "../../../environments/environment";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: OpenaireAdvancedSearchServicesComponent, data: {
redirect: properties.errorLink
}, canDeactivate: [PreviousRouteRecorder] }
])
]
})
export class AdvancedSearchServicesRoutingModule { }

View File

@ -0,0 +1,35 @@
import {Component} from '@angular/core';
import {SearchCustomFilter} from "../../openaireLibrary/searchPages/searchUtils/searchUtils.class";
import {AggregatorInfo, PortalAggregators} from "../../utils/aggregators";
import {ConnectHelper} from "../../openaireLibrary/connect/connectHelper";
import {properties} from "../../../environments/environment";
import {EnvProperties} from "../../openaireLibrary/utils/properties/env-properties";
import {OpenaireEntities} from "../../openaireLibrary/utils/properties/searchFields";
import {SearchForm} from "../../openaireLibrary/searchPages/searchUtils/newSearchPage.component";
@Component({
selector: 'openaire-advanced-search-service',
template: `
<search-dataproviders [customFilter]="customFilter" [simpleView]="false" [openaireLink]="customFilter?'https://'+(properties.environment != 'production'?'beta.':'')+'explore.openaire.eu/search/advanced/services':null"
[piwikSiteId]="properties.piwikSiteId" [hasPrefix]="false"
type="services" entityType="service" [typeName]="openaireEntities.SERVICES"
[searchForm]="searchForm">
</search-dataproviders>
`
})
export class OpenaireAdvancedSearchServicesComponent {
customFilter: SearchCustomFilter = null;
properties: EnvProperties;
public openaireEntities = OpenaireEntities;
public searchForm: SearchForm = {class: 'search-form', dark: true};
constructor ( ) {}
ngOnInit() {
this.properties = properties;
let id = ConnectHelper.getCommunityFromDomain(properties.domain);
let agg: AggregatorInfo = PortalAggregators.getFilterInfoByMenuId(id);
this.customFilter = PortalAggregators.getSearchCustomFilterByAggregator(agg);
}
}

View File

@ -0,0 +1,25 @@
import {NgModule} from '@angular/core';
import {CommonModule} from '@angular/common';
import {FormsModule} from '@angular/forms';
import {OpenaireAdvancedSearchServicesComponent} from './advancedSearchServices.component';
import {SearchDataProvidersModule} from "../../openaireLibrary/searchPages/searchDataProviders.module";
import {AdvancedSearchServicesRoutingModule} from "./advancedSearchServices-routing.module";
@NgModule({
imports: [
CommonModule, FormsModule,
AdvancedSearchServicesRoutingModule,
SearchDataProvidersModule
],
declarations: [
OpenaireAdvancedSearchServicesComponent
],
providers:[],
exports: [
OpenaireAdvancedSearchServicesComponent
]
})
export class LibAdvancedSearchServicesModule { }

View File

@ -3,13 +3,14 @@ import { RouterModule } from '@angular/router';
import{OpenaireSearchResearchResultsComponent} from './searchResearchResults.component';
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {properties} from "../../../environments/environment";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: OpenaireSearchResearchResultsComponent, data: {
redirect: '/error', community : 'openaire'
redirect: properties.errorLink, community : 'openaire'
}, canDeactivate: [PreviousRouteRecorder] }
])

View File

@ -4,12 +4,13 @@ import {SearchCustomFilter} from "../../openaireLibrary/searchPages/searchUtils/
import {ConnectHelper} from "../../openaireLibrary/connect/connectHelper";
import {properties} from "../../../environments/environment";
import {EnvProperties} from "../../openaireLibrary/utils/properties/env-properties";
import {SearchForm} from "../../openaireLibrary/searchPages/searchUtils/newSearchPage.component";
@Component({
selector: 'openaire-search-results',
template: `
<search-research-results resultType="result" [simpleView]="false" [customFilter]="customFilter" [openaireLink]="'https://'+(properties.environment != 'production'?'beta.':'')+'explore.openaire.eu/search/advanced/research-outcomes'"
[piwikSiteId]="properties.piwikSiteId"></search-research-results>
<search-research-results resultType="result" [simpleView]="false" [customFilter]="customFilter" [openaireLink]="customFilter?'https://'+(properties.environment != 'production'?'beta.':'')+'explore.openaire.eu/search/advanced/research-outcomes':null"
[piwikSiteId]="properties.piwikSiteId" [hasPrefix]="false" [searchForm]="searchForm"></search-research-results>
`
})
@ -17,7 +18,8 @@ export class OpenaireSearchResearchResultsComponent {
@Input() searchLink: string = "/search/advanced/research-results";
customFilter:SearchCustomFilter= null;
properties: EnvProperties;
constructor ( ) {}
public searchForm: SearchForm = {class: 'search-form', dark: true};
constructor ( ) {}
ngOnInit() {
this.properties = properties;
let id = ConnectHelper.getCommunityFromDomain(properties.domain);

View File

@ -3,16 +3,19 @@ import {SearchCustomFilter} from "../../openaireLibrary/searchPages/searchUtils/
import {AggregatorInfo, PortalAggregators} from "../../utils/aggregators";
import {ConnectHelper} from "../../openaireLibrary/connect/connectHelper";
import {properties} from "../../../environments/environment";
import {SearchForm} from "../../openaireLibrary/searchPages/searchUtils/newSearchPage.component";
@Component({
selector: 'openaire-search-find',
template: `
<search-all logoURL = "/assets/common-assets/logo-small-aggregator.png" name="OpenAIRE" [customFilter]="customFilter" [piwikSiteId]="piwikSiteId"></search-all>
<search-all logoURL = "/assets/common-assets/logo-small-aggregator.png" name="OpenAIRE" [customFilter]="customFilter" [piwikSiteId]="piwikSiteId"
[searchForm]="searchForm"></search-all>
`,
})
export class OpenaireSearchComponent{
customFilter:SearchCustomFilter= null;
piwikSiteId = properties.piwikSiteId;
public searchForm: SearchForm = {class: 'search-form', dark: true};
constructor ( ) {}
ngOnInit() {
let id = ConnectHelper.getCommunityFromDomain(properties.domain);

View File

@ -4,13 +4,14 @@ import {RouterModule} from '@angular/router';
import {OpenaireSearchDataprovidersComponent} from './searchDataproviders.component';
import {FreeGuard} from '../../openaireLibrary/login/freeGuard.guard';
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {properties} from "../../../environments/environment";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: OpenaireSearchDataprovidersComponent,data: {
redirect: '/error'
redirect: properties.errorLink
}, canDeactivate: [PreviousRouteRecorder] }
])

View File

@ -4,13 +4,14 @@ import {AggregatorInfo, PortalAggregators} from "../../utils/aggregators";
import {ConnectHelper} from "../../openaireLibrary/connect/connectHelper";
import {properties} from "../../../environments/environment";
import {EnvProperties} from "../../openaireLibrary/utils/properties/env-properties";
import {SearchForm} from "../../openaireLibrary/searchPages/searchUtils/newSearchPage.component";
@Component({
selector: 'openaire-search-dataproviders',
template: `
<search-dataproviders [customFilter]="customFilter" [openaireLink]="'https://'+(properties.environment != 'production'?'beta.':'')+'explore.openaire.eu/search/find/dataproviders'"
[piwikSiteId]="properties.piwikSiteId">
<search-dataproviders [customFilter]="customFilter" [openaireLink]="customFilter?'https://'+(properties.environment != 'production'?'beta.':'')+'explore.openaire.eu/search/find/dataproviders':null"
[piwikSiteId]="properties.piwikSiteId" [hasPrefix]="false" [searchForm]="searchForm">
</search-dataproviders>
`
@ -18,6 +19,7 @@ import {EnvProperties} from "../../openaireLibrary/utils/properties/env-properti
export class OpenaireSearchDataprovidersComponent {
customFilter: SearchCustomFilter = null;
properties: EnvProperties;
public searchForm: SearchForm = {class: 'search-form', dark: true};
constructor ( ) {}
ngOnInit() {
this.properties = properties;

View File

@ -2,13 +2,14 @@ import {NgModule} from '@angular/core';
import {RouterModule} from '@angular/router';
import {OpenaireSearchOrganizationsComponent} from './searchOrganizations.component';
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {properties} from "../../../environments/environment";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: OpenaireSearchOrganizationsComponent, data: {
redirect: '/error'
redirect: properties.errorLink
}, canDeactivate: [PreviousRouteRecorder] }
])

View File

@ -4,13 +4,14 @@ import {AggregatorInfo, PortalAggregators} from "../../utils/aggregators";
import {ConnectHelper} from "../../openaireLibrary/connect/connectHelper";
import {properties} from "../../../environments/environment";
import {EnvProperties} from "../../openaireLibrary/utils/properties/env-properties";
import {SearchForm} from "../../openaireLibrary/searchPages/searchUtils/newSearchPage.component";
@Component({
selector: 'openaire-search-organizations',
template: `
<search-organizations [customFilter]="customFilter" [openaireLink]="'https://'+(properties.environment != 'production'?'beta.':'')+'explore.openaire.eu/search/find/organizations'"
[piwikSiteId]="properties.piwikSiteId">
<search-organizations [customFilter]="customFilter" [openaireLink]="customFilter?'https://'+(properties.environment != 'production'?'beta.':'')+'explore.openaire.eu/search/find/organizations':null"
[piwikSiteId]="properties.piwikSiteId" [hasPrefix]="false" [searchForm]="searchForm">
</search-organizations>
`
@ -19,7 +20,8 @@ import {EnvProperties} from "../../openaireLibrary/utils/properties/env-properti
export class OpenaireSearchOrganizationsComponent {
customFilter:SearchCustomFilter= null;
properties: EnvProperties;
constructor ( ) {}
public searchForm: SearchForm = {class: 'search-form', dark: true};
constructor ( ) {}
ngOnInit() {
this.properties = properties;
let id = ConnectHelper.getCommunityFromDomain(properties.domain);

View File

@ -3,13 +3,14 @@ import {RouterModule} from '@angular/router';
import {OpenaireSearchProjectsComponent} from './searchProjects.component';
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {properties} from "../../../environments/environment";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: OpenaireSearchProjectsComponent, data: {
redirect: '/error'
redirect: properties.errorLink
}, canDeactivate: [PreviousRouteRecorder] }
])

View File

@ -4,21 +4,23 @@ import {AggregatorInfo, PortalAggregators} from "../../utils/aggregators";
import {ConnectHelper} from "../../openaireLibrary/connect/connectHelper";
import {properties} from "../../../environments/environment";
import {EnvProperties} from "../../openaireLibrary/utils/properties/env-properties";
import {SearchForm} from "../../openaireLibrary/searchPages/searchUtils/newSearchPage.component";
@Component({
selector: 'openaire-search-projects',
template: `
<search-projects [customFilter]="customFilter" [openaireLink]="'https://'+(properties.environment != 'production'?'beta.':'')+'explore.openaire.eu/search/find/projects'"
[piwikSiteId]="properties.piwikSiteId">
<search-projects [customFilter]="customFilter" [openaireLink]="customFilter?'https://'+(properties.environment != 'production'?'beta.':'')+'explore.openaire.eu/search/find/projects':null"
[piwikSiteId]="properties.piwikSiteId" [hasPrefix]="false" [searchForm]="searchForm">
</search-projects>
`
})
export class OpenaireSearchProjectsComponent {
customFilter: SearchCustomFilter = null;
properties: EnvProperties;
constructor ( ) {}
customFilter: SearchCustomFilter = null;
properties: EnvProperties;
public searchForm: SearchForm = {class: 'search-form', dark: true};
constructor ( ) {}
ngOnInit() {
this.properties = properties;
let id = ConnectHelper.getCommunityFromDomain(properties.domain);

View File

@ -3,13 +3,14 @@ import { RouterModule } from '@angular/router';
import{OpenaireSearchResearchResultsComponent} from './searchResearchResults.component';
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {properties} from "../../../environments/environment";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: OpenaireSearchResearchResultsComponent, data: {
redirect: '/error', community : 'openaire'
redirect: properties.errorLink, community : 'openaire'
}, canDeactivate: [PreviousRouteRecorder] }
])

View File

@ -4,12 +4,13 @@ import {AggregatorInfo, PortalAggregators} from "../../utils/aggregators";
import {ConnectHelper} from "../../openaireLibrary/connect/connectHelper";
import {properties} from "../../../environments/environment";
import {EnvProperties} from "../../openaireLibrary/utils/properties/env-properties";
import {SearchForm} from "../../openaireLibrary/searchPages/searchUtils/newSearchPage.component";
@Component({
selector: 'openaire-search-results',
template: `
<search-research-results resultType="result" [stickyForm]="false" [customFilter]="customFilter" [openaireLink]="'https://'+(properties.environment != 'production'?'beta.':'')+'explore.openaire.eu/search/find/research-outcomes'"
[piwikSiteId]="properties.piwikSiteId"></search-research-results>
<search-research-results resultType="result" [stickyForm]="false" [customFilter]="customFilter" [openaireLink]="customFilter?'https://'+(properties.environment != 'production'?'beta.':'')+'explore.openaire.eu/search/find/research-outcomes':null"
[piwikSiteId]="properties.piwikSiteId" [hasPrefix]="false" [searchForm]="searchForm"></search-research-results>
`
})
@ -17,6 +18,7 @@ export class OpenaireSearchResearchResultsComponent {
@Input() searchLink: string = "/search/research-results";
customFilter:SearchCustomFilter= null;
properties: EnvProperties;
public searchForm: SearchForm = {class: 'search-form', dark: true};
constructor ( ) {}
ngOnInit() {
this.properties = properties;

View File

@ -0,0 +1,19 @@
import {NgModule} from '@angular/core';
import {RouterModule} from '@angular/router';
import {OpenaireSearchServicesComponent} from './searchServices.component';
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {properties} from "../../../environments/environment";
@NgModule({
imports: [
RouterModule.forChild([
{ path: '', component: OpenaireSearchServicesComponent,data: {
redirect: properties.errorLink
}, canDeactivate: [PreviousRouteRecorder] }
])
]
})
export class SearchServicesRoutingModule { }

View File

@ -0,0 +1,34 @@
import {Component} from '@angular/core';
import {SearchCustomFilter} from "../../openaireLibrary/searchPages/searchUtils/searchUtils.class";
import {AggregatorInfo, PortalAggregators} from "../../utils/aggregators";
import {ConnectHelper} from "../../openaireLibrary/connect/connectHelper";
import {properties} from "../../../environments/environment";
import {EnvProperties} from "../../openaireLibrary/utils/properties/env-properties";
import {OpenaireEntities} from "../../openaireLibrary/utils/properties/searchFields";
import {SearchForm} from "../../openaireLibrary/searchPages/searchUtils/newSearchPage.component";
@Component({
selector: 'openaire-search-services',
template: `
<search-dataproviders [customFilter]="customFilter" [openaireLink]="customFilter?'https://'+(properties.environment != 'production'?'beta.':'')+'explore.openaire.eu/search/find/services':null"
[piwikSiteId]="properties.piwikSiteId" [hasPrefix]="false"
type="services" entityType="service" [typeName]="openaireEntities.SERVICES"
[searchForm]="searchForm">
</search-dataproviders>
`
})
export class OpenaireSearchServicesComponent {
customFilter: SearchCustomFilter = null;
properties: EnvProperties;
public openaireEntities = OpenaireEntities;
public searchForm: SearchForm = {class: 'search-form', dark: true};
constructor ( ) {}
ngOnInit() {
this.properties = properties;
let id = ConnectHelper.getCommunityFromDomain(properties.domain);
let agg: AggregatorInfo = PortalAggregators.getFilterInfoByMenuId(id);
this.customFilter = PortalAggregators.getSearchCustomFilterByAggregator(agg);
}
}

View File

@ -0,0 +1,23 @@
import {NgModule} from '@angular/core';
import {CommonModule} from '@angular/common';
import {FormsModule} from '@angular/forms';
import {SearchServicesRoutingModule} from './searchServices-routing.module';
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {SearchDataProvidersModule} from "../../openaireLibrary/searchPages/searchDataProviders.module";
import {OpenaireSearchServicesComponent} from "./searchServices.component";
@NgModule({
imports: [
CommonModule, FormsModule,
SearchDataProvidersModule, SearchServicesRoutingModule
],
declarations: [
OpenaireSearchServicesComponent
],
providers:[PreviousRouteRecorder],
exports: [
OpenaireSearchServicesComponent
]
})
export class LibSearchServicesModule { }

View File

@ -10,14 +10,15 @@ export class AggregatorInfo {
queryFieldName: string; //country
valueId: string; //gr
valueName: string; // Greece
mainColor:string;
darkColor:string;
background:string;
graphSectionTitle: string;
graphSectionText: string;
enableLogin: boolean;
/** @deprecated */
customCss:string;
showHeaderAlways:boolean;
constructor(menuId: string, title: string, logoUrl: string, fieldName: string, queryFieldName: string, valueId: string,
valueName: string, mainColor:string=null, darkColor:string=null, background:string=null,graphSectionTitle: string = null, graphSectionText:string = null ) {
valueName: string, graphSectionTitle: string = null, graphSectionText:string = null, enableLogin:boolean = true, showHeaderAlways:boolean = true, customCss:string = "" ) {
this.menuId = menuId;
this.title = title;
this.logoUrl = logoUrl;
@ -25,17 +26,18 @@ export class AggregatorInfo {
this.queryFieldName = queryFieldName;
this.valueId = valueId;
this.valueName = valueName;
this.mainColor = mainColor;
this.darkColor = darkColor;
this.background = background;
this.graphSectionTitle = graphSectionTitle;
this.graphSectionText = graphSectionText;
this.enableLogin = enableLogin;
this.showHeaderAlways = showHeaderAlways;
this.customCss = customCss;
}
}
export class PortalAggregators {
static list: AggregatorInfo[] = [
new AggregatorInfo("canada", "Canadian Aggregator", "assets/canada-logo.png", "Country", "country", "CA", "Canada","#E80000","#ad0000", "/assets/canada-background.svg",
new AggregatorInfo("canada", "Canadian Aggregator", "assets/canada-logo.png", "Country",
"country", "CA", "Canada",
"Portal to Canadian Research Outputs", `<span>
Welcome to the Portal of Canadian Research Outputs. This has been developed as part of a collaboration between
Canadian Association of Research Libraries (CARL) and OpenAIRE. The portal presents research results collected
@ -51,15 +53,30 @@ export class PortalAggregators {
Bienvenue sur le portal des résultats de la recherche canadienne, qui a é développé dans le cadre d'une collaboration entre l'ABRC et OpenAIRE dans le contexte du projet OpenAIRE Advance. Le portail permet aux utilisateurs de repérer et de parcourir le contenu canadien inclus sur la plateforme OpenAIRE. La quantité des résultats de la recherche canadienne disponible sur la plateforme augmentera tout au long de l'année 2021 au fur et à mesure que les dépôts canadiens se conformeront aux directives d'OpenAIRE et que les détails relatifs aux affiliations canadiennes seront améliorés. Pour plus d'informations,
<a
href="https://www.carl-abrc.ca/fr/faire-avancer-la-recherche/depots-institutionnels/groupe-de-travail-depots-ouverts/collaboration-avec-openaire/" target="_blank">veuillez visiter le site Web de lABRC</a>.
</span>`),
new AggregatorInfo("italy", "Italian Aggregator", "assets/common-assets/logo-small-aggregator.png", "Country", "country", "IT", "Italy"),
new AggregatorInfo("greece", "Greek Aggregator", "assets/common-assets/logo-small-aggregator.png", "Country", "country", "GR", "Greece"),
</span>`,true, true,`
:root {
--primary-color: #E80000;
--primary-color-rgb: 232,0,0;
--primary-dark-color: #ad0000;
--graph-background: url('/assets/canada-background.svg') no-repeat bottom;
--label-secondary: #E80000;
/* Fonts */
--text-primary-color: var(primary-color);
--text-gradient-color: linear-gradient(110deg, var(primary-color) 0%, var(--monitor-dark-color) 100%);
/** Label */
--label-secondary: var(--primary-color);
}
`),
new AggregatorInfo("italy", "Italian Aggregator", "assets/common-assets/logo-small-aggregator.png", "Country", "country", "IT", "Italy"),
new AggregatorInfo("greece", "Greek Aggregator", "assets/common-assets/logo-small-aggregator.png", "Country", "country", "GR", "Greece")
];
static disabled = {
"canada": {pages: [], entities: ["software"]},
"italy": {pages: [], entities: []},
"greece": {pages: [], entities: []}
"canada": {pages: ["/search/find/services"], entities: ["service"]},
"italy": {pages: ["/search/find/services"], entities: ["service"]},
"greece": {pages: ["/search/find/services"], entities: ["service"]}
};
static defaultAggregator: AggregatorInfo = PortalAggregators.list[0];
@ -78,7 +95,7 @@ export class PortalAggregators {
public static getSearchCustomFilterByAggregator(agg: AggregatorInfo): SearchCustomFilter {
let filter:SearchCustomFilter = null;
if(agg) {
if(agg && agg.fieldName) {
filter = new SearchCustomFilter(agg.fieldName, agg.queryFieldName, agg.valueId, agg.valueName);
filter.promptToAddFilter = false;
filter.isHiddenFilter = true;
@ -88,9 +105,9 @@ export class PortalAggregators {
public static getCommunityInfoByMenuId(menuId: string): any {
if(PortalAggregators.disabled[menuId]){
return Portal.getMockCommunityInfo(PortalAggregators.disabled[menuId].entities,PortalAggregators.disabled[menuId].pages);
return Portal.getMockCommunityInfo(menuId, PortalAggregators.disabled[menuId].entities,PortalAggregators.disabled[menuId].pages);
}
return Portal.getMockCommunityInfo([],[]);
return Portal.getMockCommunityInfo(menuId, [],[]);
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 169 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 81 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 677.14 1140.24"><defs><style>.cls-1{fill:#f9f9f9;}</style></defs><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M275.51,330.92c-105.95,0-191.84,85.89-191.84,191.83s85.89,191.84,191.84,191.84S467.35,628.7,467.35,522.75,381.46,330.92,275.51,330.92Z"/><path class="cls-1" d="M0,0V1140.24H677.14V0ZM618,917.23,435.6,740.92h0a269.38,269.38,0,0,1-160.09,52.41C126.07,793.34,4.92,672.19,4.92,522.75S126.07,252.16,275.51,252.16,546.1,373.31,546.1,522.75a269.46,269.46,0,0,1-54.9,163.42h0l181,175Z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 608 B

View File

@ -1,105 +0,0 @@
:root {
--portal-main-color: #313179;
--portal-main-contrast: white;
--portal-dark-color: #4687E6;
--openaire-main-color: #313179;
--explore-portal-color: #D95F2D;
--provide-portal-color: #37C7E9;
--monitor-portal-color: #9ABB55;
--connect-portal-color: #EBB13E;
--develop-portal-color: #DA65AB;
--explore-portal-lower-tone: #a0462c;
--provide-portal-lower-tone: #3A8FA3;
--monitor-portal-lower-tone: #7c9144;
--connect-portal-lower-tone: #b48536;
--develop-portal-lower-tone: #9f4e7e;
}
.tm-toolbar .uk-subnav-line .custom-explore-li {
background:var(--portal-main-color) !important;
}
.mainPageSearchForm{
background-image: /*linear-gradient(rgba(255, 255, 255, 0.5),rgba(255, 255, 255, 0.5)),*/ url('home.jpg');
}
.mainPageBottomInfo{
background: linear-gradient( rgba(255, 255, 255, 0.5),rgba(255, 255, 255, 0.5)), url('home.jpg');
background-attachment: scroll, scroll;
background-size: auto auto, auto auto;
background-size: cover;
background-attachment: fixed;
box-sizing: border-box;
min-height: calc(100vh - 412.767px);
}
.box-links .uk-card-header:hover {
text-decoration: underline;
text-decoration-color: currentcolor;
text-decoration-color: #90929D;
}
.searchForm, .generalSearchForm,
.publicationsSearchForm,
.projectsSearchForm, .projectsTableSearchForm,
.organizationsSearchForm,
.datasetsSearchForm,
.softwareSearchForm,
.orpsSearchForm,
.datasourcesSearchForm, .compatibleDatasourcesSearchForm, .compatibleDatasourcesTableSearchForm, .datasourcesTableSearchForm,
.journalsSearchForm, .journalsTableSearchForm,
.entityRegistriesSearchForm, .entityRegistriesTableSearchForm {
background: url('./Εxplore-sub.jpg') right !important;
}
.ask-explore.uk-grid-divider > :not(.uk-first-column)::before {
border-left: 1px solid var(--portal-main-color) ;
}
.questions .tm-child-list-divider > ul > li:nth-child(n+2), .questions .uk-list-divider > li:nth-child(n+2) {
border-top: 1px solid #c5c5c5;
}
.questions {
font-size: 15px;
font-weight: bold;
color: #4687E6;
}
.uk-card-explore {
background-color: var(--portal-main-color);
color: #fff !important;
}
.uk-card-explore .uk-h3 {
color: #fff !important;
}
.uk-card-explore .uk-h6 a {
color: #fff !important;
text-decoration: underline;
}
.uk-card-explore .uk-h5 {
color: #fff !important;
text-transform: uppercase;
font-size: 15px;
font-weight: bolder;
}
.emphasis {
color: #000;
font-size: 17px;
font-weight: bold;
}
.portal-color.emphasis {
color: #37C7E9;
font-size: 60px;
font-weight: 300;
}

View File

@ -0,0 +1,53 @@
/* Canada Aggregator */
@aggregator-color: #E80000;
@aggregator-light-color: #E80000;
@aggregator-dark-color: #AD0000;
@aggregator-secondary-color: #AD0000;
//@global-primary-gradient: linear-gradient(104deg, @aggregator-dark-color 0%, @aggregator-light-color 100%);
@global-primary-gradient: @aggregator-light-color;
/* Button */
@button-primary-background: @aggregator-color;
@inverse-button-primary-background: @aggregator-color;
@button-primary-hover-background: @aggregator-secondary-color;
@button-primary-active-background: @aggregator-secondary-color;
/* Background */
@background-primary-background: @aggregator-color;
@background-primary-background-gradient: none;
/* Text */
@text-primary-color: @aggregator-color;
/* Label */
@label-secondary-color: @aggregator-color;
/* General */
@general-tab-featured-tab: @aggregator-color;
/* Landing */
@landing-portal-color: @aggregator-color;
//.deposit {
// @import (multiple) "~src/assets/openaire-theme/less/_import";
//}
a.uk-link-text:hover {
color: @aggregator-dark-color;
}
.search-form {
background-color: rgba(173, 0, 0, 0.7);
}
.graph-background {
background-size: cover !important;
padding-bottom: 100px;
background-color: #FAFAFA !important;
background: url('canada-background.svg') no-repeat bottom;
}
.numbers-background {
background: transparent url('numbers_background_pattern.svg') repeat-x center bottom !important;
}

@ -1 +1 @@
Subproject commit 28db142aa54b8bea87ada52dbae2da7c7da8f458
Subproject commit 0c6b2ac12b4796e41bf4cc8de93c157efa866543

View File

@ -1,99 +0,0 @@
{
"environment" : "production",
"enablePiwikTrack" : false,
"enableHelper" : true,
"useCache" : false,
"metricsAPIURL" : "https://beta.services.openaire.eu/usagestats/",
"framesAPIURL" : "https://beta.openaire.eu/stats3/",
"statisticsAPIURL" : "http://vatopedi.di.uoa.gr:8080/stats/",
"statisticsFrameAPIURL":"https://beta.openaire.eu/stats/",
"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",
"openCitationsAPIURL" : "https://services.openaire.eu/opencitations/getCitations?id=",
"csvAPIURL" : "https://beta.services.openaire.eu/search/v2/api/reports",
"searchCrossrefAPIURL" : "https://api.crossref.org/works",
"searchDataciteAPIURL" : "https://api.datacite.org/works",
"searchOrcidURL" : "https://pub.orcid.org/v2.1/",
"orcidURL" : "https://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/",
"openDoarURL": "http://v2.sherpa.ac.uk/id/repository/",
"r3DataURL": "http://service.re3data.org/repository/",
"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://dev-openaire.d4science.org/provision/mvc/vocabularies/",
"piwikBaseUrl" :"https://analytics.openaire.eu/piwik.php?idsite=",
"piwikSiteId" : "6",
"loginUrl" :"http://scoobydoo.di.uoa.gr:8080/dnet-openaire-users-1.0.0-SNAPSHOT/openid_connect_login",
"userInfoUrl" : "http://rudie.di.uoa.gr:8080/dnet-openaire-users-1.0.0-SNAPSHOT/api/users/getUserInfo?accessToken=",
"logoutUrl" :"https://aai.openaire.eu/proxy/saml2/idp/SingleLogoutService.php?ReturnTo=",
"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://mpagasas.di.uoa.gr:8080/uoa-admin-tools/",
"adminToolsCommunity" :null,
"datasourcesAPI": "https://beta.services.openaire.eu/openaire/ds/search/",
"contextsAPI":"https://dev-openaire.d4science.org/openaire/context",
"communityAPI": "https://dev-openaire.d4science.org/openaire/community/",
"csvLimit": 2000,
"pagingLimit": 20,
"resultsPerPage": 10,
"baseLink" : "https://beta.explore.openaire.eu",
"searchLinkToPublication" : "/search/publication?articleId=",
"searchLinkToProject" : "/search/project?projectId=",
"searchLinkToDataProvider" : "/search/dataprovider?datasourceId=",
"searchLinkToDataset" : "/search/dataset?datasetId=",
"searchLinkToOrp" : "/search/other?orpId=",
"searchLinkToOrganization" : "/search/organization?organizationId=",
"searchLinkToPublications" : "/search/find/publications",
"searchLinkToDataProviders" : "/search/find/dataproviders",
"searchLinkToProjects" : "/search/find/projects",
"searchLinkToDatasets" : "/search/find/datasets",
"searchLinkToSoftware" : "/search/find/software",
"searchLinkToOrps" : "/search/find/other",
"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",
"searchLinkToAdvancedOrps" : "/search/advanced/other",
"searchLinkToAdvancedDataProviders" : "/search/advanced/dataproviders",
"searchLinkToAdvancedOrganizations" : "/search/advanced/organizations",
"lastIndexInformationLink" : "https://www.openaire.eu/aggregation-and-content-provision-workflows",
"showLastIndexInformationLink" : false,
"widgetLink" : "https://beta.openaire.eu/index.php?option=com_openaire&view=widget&format=raw&projectId=",
"claimsInformationLink": "https://www.openaire.eu/linking-beta"
}

@ -0,0 +1 @@
Subproject commit 5c7af220c1de2c87d393e2636cdf18805a97e6a1

View File

@ -1,11 +1,27 @@
/*new theme */
:root {
--portal-main-color: #2d72d6;
--portal-main-contrast: white;
--portal-dark-color: #313179;
--openaire-main-color: #313179;
--graph-background: no-repeat bottom;;
}
--primary-color: #E80000;
/*buttons*/
/*--button-primary-background: var(--primary-color);*/
/*--button-primary-background-image: linear-gradient(104deg, var(--explore-dark-color) 0%, var(--explore-light-color) 100%);*/
/*backgrounds*/
/*--background-primary:var(--explore-color);*/
/*--background-primary-image:none;*/
/*--background-secondary: var(--grey-color);*/
/*--background-secondary-image:none;*/
/*fonts*/
/*--text-primary-color: var(--explore-color);*/
/*--text-gradient-color: linear-gradient(110deg, var(--explore-dark-color) 0%, var(--explore-light-color) 100%);*/
/* Label */
/*--label-secondary: var(--explore-color);*/
/*slider*/
/*--slider-dot-background: rgba(var(--explore-color-rgb), 0.5);*/
/*--slider-dot-active-background: var(--explore-color);*/
}
.graph-background {
background-size: cover !important;
padding-bottom: 100px;
@ -16,6 +32,7 @@
background-color: white !important;
background-image: none !important;
margin-bottom: 20px;
}
.searchForm, .generalSearchForm,

View File

@ -3,12 +3,11 @@ import {EnvProperties} from "../app/openaireLibrary/utils/properties/env-propert
export let properties: EnvProperties = {
environment: "beta",
adminToolsPortalType: "aggregator",
dashboard: "explore",
dashboard: "aggregator",
enablePiwikTrack: true,
useCache: false,
useLongCache: true,
showAddThis: true,
metricsAPIURL: "https://beta.services.openaire.eu/usagestats/",
framesAPIURL: "https://beta.openaire.eu/stats3/",
statisticsAPIURL: "https://beta.services.openaire.eu/stats-api/",
statisticsFrameAPIURL: "https://beta.openaire.eu/stats/",
@ -23,6 +22,10 @@ export let properties: EnvProperties = {
searchDataciteAPIURL: "https://api.datacite.org/works",
searchOrcidURL: "https://pub.orcid.org/v2.1/",
orcidURL: "https://orcid.org/",
orcidAPIURL: "https://services.openaire.eu/uoa-orcid-service/",
orcidTokenURL : "https://orcid.org/oauth/authorize?",
orcidClientId: "APP-IN0O56SBVVTB7NN4",
myOrcidLinksPage: "/my-orcid-links",
doiURL: "https://dx.doi.org/",
pmcURL: "http://europepmc.org/articles/",
pmidURL: "https://www.ncbi.nlm.nih.gov/pubmed/",
@ -30,6 +33,8 @@ export let properties: EnvProperties = {
cordisURL: "http://cordis.europa.eu/projects/",
openDoarURL: "http://v2.sherpa.ac.uk/id/repository/",
r3DataURL: "http://service.re3data.org/repository/",
fairSharingURL: "https://fairsharing.org/",
eoscMarketplaceURL: "https://marketplace.eosc-portal.eu/services/",
sherpaURL: "http://sherpa.ac.uk/romeo/issn/",
sherpaURLSuffix: "/",
zenodo: "https://zenodo.org/",
@ -75,6 +80,7 @@ export let properties: EnvProperties = {
searchLinkToPublication: "/search/publication?articleId=",
searchLinkToProject: "/search/project?projectId=",
searchLinkToDataProvider: "/search/dataprovider?datasourceId=",
searchLinkToService: "/search/service?serviceId=",
searchLinkToDataset: "/search/dataset?datasetId=",
searchLinkToSoftwareLanding: "/search/software?softwareId=",
searchLinkToOrp: "/search/other?orpId=",
@ -82,6 +88,7 @@ export let properties: EnvProperties = {
searchLinkToPublications: "/search/find/publications",
searchLinkToDataProviders: "/search/find/dataproviders",
searchLinkToServices: "/search/find/services",
searchLinkToProjects: "/search/find/projects",
searchLinkToDatasets: "/search/find/datasets",
searchLinkToSoftware: "/search/find/software",
@ -89,9 +96,7 @@ export let properties: EnvProperties = {
searchLinkToOrganizations: "/search/find/organizations",
searchLinkToCompatibleDataProviders: "/search/content-providers",
searchLinkToEntityRegistriesDataProviders: "/search/entity-registries",
searchLinkToEntityRegistriesDataProvidersTable: "/search/entity-registries-table",
searchLinkToJournals: "/search/journals",
searchLinkToJournalsTable: "/search/journals-table",
searchLinkToResults: "/search/find/research-outcomes",
searchLinkToAdvancedPublications: "/search/advanced/publications",
@ -100,9 +105,12 @@ export let properties: EnvProperties = {
searchLinkToAdvancedSoftware: "/search/advanced/software",
searchLinkToAdvancedOrps: "/search/advanced/other",
searchLinkToAdvancedDataProviders: "/search/advanced/dataproviders",
searchLinkToAdvancedServices: "/search/advanced/services",
searchLinkToAdvancedOrganizations: "/search/advanced/organizations",
searchLinkToAdvancedResults: "/search/advanced/research-outcomes",
errorLink: "/error",
lastIndexInformationLink: "https://beta.openaire.eu/aggregation-and-content-provision-workflows",
showLastIndexInformationLink: true,
widgetLink: "https://beta.openaire.eu/index.php?option=com_openaire&view=widget&format=raw&projectId=",

View File

@ -3,17 +3,16 @@ import {EnvProperties} from "../app/openaireLibrary/utils/properties/env-propert
export let properties: EnvProperties = {
environment: "production",
adminToolsPortalType: "aggregator",
dashboard: "explore",
dashboard: "aggregator",
enablePiwikTrack: true,
useCache: false,
useLongCache: true,
showAddThis: true,
metricsAPIURL: "https://services.openaire.eu/usagestats/",
framesAPIURL: "https://www.openaire.eu/stats3/",
statisticsAPIURL: "https://beta.services.openaire.eu/stats-api/",
statisticsFrameAPIURL: "https://www.openaire.eu/stats/",
statisticsFrameNewAPIURL: "https://services.openaire.eu/stats/",
useNewStatistisTool: false,
statisticsFrameNewAPIURL: "https://services.openaire.eu/stats-tool/",
useNewStatistisTool: true,
claimsAPIURL: "https://services.openaire.eu/claims/rest/claimsService/",
searchAPIURLLAst: "https://services.openaire.eu/search/v2/api/",
searchResourcesAPIURL: "https://services.openaire.eu/search/v2/api/resources",
@ -23,6 +22,10 @@ export let properties: EnvProperties = {
searchDataciteAPIURL: "https://api.datacite.org/works",
searchOrcidURL: "https://pub.orcid.org/v2.1/",
orcidURL: "https://orcid.org/",
orcidAPIURL: "https://services.openaire.eu/uoa-orcid-service/",
orcidTokenURL : "https://orcid.org/oauth/authorize?",
orcidClientId: "APP-IN0O56SBVVTB7NN4",
myOrcidLinksPage: "/my-orcid-links",
doiURL: "https://dx.doi.org/",
pmcURL: "http://europepmc.org/articles/",
pmidURL: "https://www.ncbi.nlm.nih.gov/pubmed/",
@ -30,6 +33,8 @@ export let properties: EnvProperties = {
cordisURL: "http://cordis.europa.eu/projects/",
openDoarURL: "http://v2.sherpa.ac.uk/id/repository/",
r3DataURL: "http://service.re3data.org/repository/",
fairSharingURL: "https://fairsharing.org/",
eoscMarketplaceURL: "https://marketplace.eosc-portal.eu/services/",
sherpaURL: "http://sherpa.ac.uk/romeo/issn/",
sherpaURLSuffix: "/",
zenodo: "https://zenodo.org/",
@ -46,12 +51,10 @@ export let properties: EnvProperties = {
piwikBaseUrl: "https://analytics.openaire.eu/piwik.php?idsite=",
piwikSiteId: "553",
loginUrl: "https://services.openaire.eu/uoa-user-management/openid_connect_login",
userInfoUrl: " https://services.openaire.eu/uoa-user-management/api/users/getUserInfo?accessToken=",
logoutUrl: "https://aai.openaire.eu/proxy/saml2/idp/SingleLogoutService.php?ReturnTo=",
loginUrl: "https://services.openaire.eu/login-service/openid_connect_login",
userInfoUrl: "https://services.openaire.eu/login-service/userInfo",
logoutUrl: "https://services.openaire.eu/login-service/openid_logout",
cookieDomain: ".openaire.eu",
feedbackmail: "feedback@openaire.eu",
@ -79,6 +82,7 @@ export let properties: EnvProperties = {
searchLinkToPublication: "/search/publication?articleId=",
searchLinkToProject: "/search/project?projectId=",
searchLinkToDataProvider: "/search/dataprovider?datasourceId=",
searchLinkToService: "/search/service?serviceId=",
searchLinkToDataset: "/search/dataset?datasetId=",
searchLinkToSoftwareLanding: "/search/software?softwareId=",
searchLinkToOrp: "/search/other?orpId=",
@ -86,6 +90,7 @@ export let properties: EnvProperties = {
searchLinkToPublications: "/search/find/publications",
searchLinkToDataProviders: "/search/find/dataproviders",
searchLinkToServices: "/search/find/services",
searchLinkToProjects: "/search/find/projects",
searchLinkToDatasets: "/search/find/datasets",
searchLinkToSoftware: "/search/find/software",
@ -93,9 +98,7 @@ export let properties: EnvProperties = {
searchLinkToOrganizations: "/search/find/organizations",
searchLinkToCompatibleDataProviders: "/search/content-providers",
searchLinkToEntityRegistriesDataProviders: "/search/entity-registries",
searchLinkToEntityRegistriesDataProvidersTable: "/search/entity-registries-table",
searchLinkToJournals: "/search/journals",
searchLinkToJournalsTable: "/search/journals-table",
searchLinkToResults: "/search/find/research-outcomes",
searchLinkToAdvancedPublications: "/search/advanced/publications",
@ -104,9 +107,12 @@ export let properties: EnvProperties = {
searchLinkToAdvancedSoftware: "/search/advanced/software",
searchLinkToAdvancedOrps: "/search/advanced/other",
searchLinkToAdvancedDataProviders: "/search/advanced/dataproviders",
searchLinkToAdvancedServices: "/search/advanced/services",
searchLinkToAdvancedOrganizations: "/search/advanced/organizations",
searchLinkToAdvancedResults: "/search/advanced/research-outcomes",
errorLink: "/error",
lastIndexInformationLink: "https://www.openaire.eu/aggregation-and-content-provision-workflows",
showLastIndexInformationLink: true,
widgetLink: "https://www.openaire.eu/index.php?option=com_openaire&view=widget&format=raw&projectId=",

View File

@ -8,26 +8,30 @@ import {EnvProperties} from "../app/openaireLibrary/utils/properties/env-propert
export let properties: EnvProperties = {
environment: "development",
adminToolsPortalType: "aggregator",
dashboard: "explore",
dashboard: "aggregator",
enablePiwikTrack: false,
useCache: true,
useLongCache: true,
useCache: false,
useLongCache: false,
showAddThis: true,
metricsAPIURL: "https://beta.services.openaire.eu/usagestats/",
enableEoscDataTransfer: true,
framesAPIURL: "https://beta.openaire.eu/stats3/",
statisticsAPIURL: "http://vatopedi.di.uoa.gr:8080/stats/",
statisticsAPIURL: "https://beta.services.openaire.eu/stats-api/",
statisticsFrameAPIURL: "https://beta.openaire.eu/stats/",
statisticsFrameNewAPIURL: "https://stats.madgik.di.uoa.gr/stats-api/",
statisticsFrameNewAPIURL: "https://beta.services.openaire.eu/stats-tool/",
useNewStatistisTool: true,
claimsAPIURL: "http://dl170.madgik.di.uoa.gr:8180/dnet-claims-service-2.0.0-SNAPSHOT/rest/claimsService/",
searchAPIURLLAst: "http://beta.services.openaire.eu/search/v2/api/",
searchResourcesAPIURL: "https://beta.services.openaire.eu/search/v2/api/resources",
searchResourcesAPIURL: "http://beta.services.openaire.eu/search/v2/api/resources",
openCitationsAPIURL: "https://services.openaire.eu/opencitations/getCitations?id=",
csvAPIURL: "https://beta.services.openaire.eu/search/v2/api/reports",
searchCrossrefAPIURL: "https://api.crossref.org/works",
searchDataciteAPIURL: "https://api.datacite.org/works",
searchOrcidURL: "https://pub.orcid.org/v2.1/",
orcidURL: "https://orcid.org/",
orcidAPIURL: "http://duffy.di.uoa.gr:19480/uoa-orcid-service/",
orcidTokenURL : "https://sandbox.orcid.org/oauth/authorize?",
orcidClientId: "APP-A5M3KTX6NCN67L91",
myOrcidLinksPage: "/my-orcid-links",
doiURL: "https://dx.doi.org/",
pmcURL: "http://europepmc.org/articles/",
pmidURL: "https://www.ncbi.nlm.nih.gov/pubmed/",
@ -35,6 +39,8 @@ export let properties: EnvProperties = {
cordisURL: "http://cordis.europa.eu/projects/",
openDoarURL: "http://v2.sherpa.ac.uk/id/repository/",
r3DataURL: "http://service.re3data.org/repository/",
fairSharingURL: "https://fairsharing.org/",
eoscMarketplaceURL: "https://marketplace.eosc-portal.eu/services/",
sherpaURL: "http://sherpa.ac.uk/romeo/issn/",
sherpaURLSuffix: "/",
zenodo: "https://zenodo.org/",
@ -51,9 +57,9 @@ export let properties: EnvProperties = {
piwikBaseUrl: "https://analytics.openaire.eu/piwik.php?idsite=",
piwikSiteId: "6",
loginUrl: "http://mpagasas.di.uoa.gr:8080/login-service/openid_connect_login",
userInfoUrl: "http://mpagasas.di.uoa.gr:8080/login-service/userInfo",
logoutUrl: "http://mpagasas.di.uoa.gr:8080/login-service/openid_logout",
loginUrl: "http://mpagasas.di.uoa.gr:19080/login-service/openid_connect_login",
userInfoUrl: "http://mpagasas.di.uoa.gr:19080/login-service/userInfo",
logoutUrl: "http://mpagasas.di.uoa.gr:19080/login-service/openid_logout",
cookieDomain: ".di.uoa.gr",
@ -62,7 +68,7 @@ export let properties: EnvProperties = {
cacheUrl: "http://dl170.madgik.di.uoa.gr:3000/get?url=",
adminToolsCommunity: "aggregator",
adminToolsAPIURL: "http://duffy.di.uoa.gr:8080/uoa-admin-tools/",
adminToolsAPIURL: "http://duffy.di.uoa.gr:19280/uoa-admin-tools/",
useHelpTexts: false,
datasourcesAPI: "https://beta.services.openaire.eu/openaire/ds/search/",
contextsAPI: "https://dev-openaire.d4science.org/openaire/context",
@ -73,12 +79,13 @@ export let properties: EnvProperties = {
resultsPerPage: 10,
"baseLink" : "",
"domain": "https://beta.explore.openaire.eu",
"domain": "https://canada.explore.openaire.eu",
searchLinkToResult: "/search/result?id=",
searchLinkToPublication: "/search/publication?articleId=",
searchLinkToProject: "/search/project?projectId=",
searchLinkToDataProvider: "/search/dataprovider?datasourceId=",
searchLinkToService: "/search/service?serviceId=",
searchLinkToDataset: "/search/dataset?datasetId=",
searchLinkToSoftwareLanding: "/search/software?softwareId=",
searchLinkToOrp: "/search/other?orpId=",
@ -86,6 +93,7 @@ export let properties: EnvProperties = {
searchLinkToPublications: "/search/find/publications",
searchLinkToDataProviders: "/search/find/dataproviders",
searchLinkToServices: "/search/find/services",
searchLinkToProjects: "/search/find/projects",
searchLinkToDatasets: "/search/find/datasets",
searchLinkToSoftware: "/search/find/software",
@ -93,9 +101,7 @@ export let properties: EnvProperties = {
searchLinkToOrganizations: "/search/find/organizations",
searchLinkToCompatibleDataProviders: "/search/content-providers",
searchLinkToEntityRegistriesDataProviders: "/search/entity-registries",
searchLinkToEntityRegistriesDataProvidersTable: "/search/entity-registries-table",
searchLinkToJournals: "/search/journals",
searchLinkToJournalsTable: "/search/journals-table",
searchLinkToResults: "/search/find/research-outcomes",
searchLinkToAdvancedPublications: "/search/advanced/publications",
@ -104,9 +110,12 @@ export let properties: EnvProperties = {
searchLinkToAdvancedSoftware: "/search/advanced/software",
searchLinkToAdvancedOrps: "/search/advanced/other",
searchLinkToAdvancedDataProviders: "/search/advanced/dataproviders",
searchLinkToAdvancedServices: "/search/advanced/services",
searchLinkToAdvancedOrganizations: "/search/advanced/organizations",
searchLinkToAdvancedResults: "/search/advanced/research-outcomes",
errorLink: "/error",
lastIndexInformationLink: "https://www.openaire.eu/aggregation-and-content-provision-workflows",
showLastIndexInformationLink: true,
widgetLink: "https://beta.openaire.eu/index.php?option=com_openaire&view=widget&format=raw&projectId=",
@ -117,6 +126,6 @@ export let properties: EnvProperties = {
depositLearnHowPage: "/participate/deposit/learn-how",
depositSearchPage: "/participate/deposit/search",
altMetricsAPIURL: "https://api.altmetric.com/v1/doi/",
reCaptchaSiteKey: "6LcVtFIUAAAAAB2ac6xYivHxYXKoUvYRPi-6_rLu",
reCaptchaSiteKey: null,
footerGrantText : "This OpenAIRE gateway is part of a project that has received funding from the European Union's Horizon 2020 research and innovation programme under grant agreements No. 777541 and 101017452"
};

View File

@ -43,9 +43,9 @@
<title>Search OpenAIRE</title>
</head>
<body>
<div class="uk-offcanvas-content uk-height-viewport">
<app-root></app-root>
</div>
<div class="uk-offcanvas-content uk-height-viewport">
<app-root></app-root>
</div>
</body>
<script type="text/javascript">
function loadAltmetrics(e,t,n){

View File

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

View File

@ -1,9 +0,0 @@
@import '~@angular/material/theming';
@include mat-core();
$my-app-primary: mat-palette($mat-gray, 900);
$my-app-accent: mat-palette($mat-light-green, 700);
$my-app-theme: mat-light-theme($my-app-primary, $my-app-accent);
@include angular-material-theme($my-app-theme);

View File

@ -22,16 +22,6 @@ import '@angular/localize/init';
* BROWSER POLYFILLS
*/
/** IE10 and IE11 requires the following for NgClass support on SVG elements */
// import 'classlist.js'; // Run `npm install --save classlist.js`.
/**
* Web Animations `@angular/platform-browser/animations`
* Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.
* Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).
*/
// import 'web-animations-js'; // Run `npm install --save web-animations-js`.
/**
* By default, zone.js will patch all possible macroTask and DomEvents
* user can disable parts of macroTask/DomEvents patch by setting following flags
@ -59,7 +49,7 @@ import '@angular/localize/init';
/***************************************************************************************************
* Zone JS is required by default for Angular itself.
*/
import 'zone.js/dist/zone'; // Included with Angular CLI.
import 'zone.js'; // Included with Angular CLI.
/***************************************************************************************************

View File

@ -1,5 +0,0 @@
/* You can add global styles to this file, and also import other style files */
@import "assets/common-assets/common/theme.css";
@import "assets/common-assets/common/custom.css";
@import "assets/common-assets/library.css";
@import "assets/portal-custom.css";

7
src/styles.less Normal file
View File

@ -0,0 +1,7 @@
/* You can add global styles to this file, and also import other style files */
@import "~src/assets/openaire-theme/less/_import";
@import "~src/assets/common-assets/less/general";
@import "~src/assets/common-assets/less/user";
@import "~src/assets/common-assets/less/linking";
@import "~src/assets/common-assets/less/landing";
@import "assets/canada-custom";

View File

@ -1,6 +1,6 @@
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
import 'zone.js/dist/zone-testing';
import 'zone.js/testing';
import { getTestBed } from '@angular/core/testing';
import {
BrowserDynamicTestingModule,
@ -12,7 +12,9 @@ declare const require: any;
// First, initialize the Angular testing environment.
getTestBed().initTestEnvironment(
BrowserDynamicTestingModule,
platformBrowserDynamicTesting()
platformBrowserDynamicTesting(), {
teardown: { destroyAfterEach: false }
}
);
// Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);

View File

@ -8,10 +8,9 @@
"declaration": false,
"module": "es2020",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"importHelpers": true,
"target": "es2015",
"target": "es2020",
"typeRoots": [
"node_modules/@types"
],