Compare commits
No commits in common. "master" and "remove-parameters" have entirely different histories.
master
...
remove-par
|
@ -3,4 +3,3 @@ node_modules/
|
|||
dist/
|
||||
.idea/
|
||||
package-lock.json
|
||||
*.zip
|
||||
|
|
181
CHANGELOG.md
|
@ -1,181 +0,0 @@
|
|||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
||||
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
||||
|
||||
*For each release, use the following subsections:*
|
||||
|
||||
- *Added (for new features)*
|
||||
- *Changed (for changes in existing functionality)*
|
||||
- *Deprecated (for soon-to-be removed features)*
|
||||
- *Removed (for now removed features)*
|
||||
- *Fixed (for any bug fixes)*
|
||||
- *Security (in case of vulnerabilities)*
|
||||
|
||||
## v1.0.3 - 30.10.2024
|
||||
### Changed
|
||||
Open Access Indicator changed to show open access for the last full year. (e.g. 2023)
|
||||
|
||||
## v1.0.2 - 18.09.2024
|
||||
### Changed
|
||||
Texts in home and about.
|
||||
|
||||
### Added
|
||||
Add info for publicly-funded filter.
|
||||
Add engagement tag for engagement-training page.
|
||||
|
||||
## v1.0.1 - 25.07.2024
|
||||
### Fixed
|
||||
Problem with ORCID KPIs regarding a researcher.
|
||||
Reordered action buttons in a search page.
|
||||
Fix import/export indicators tab title wasn't imported.
|
||||
Fix the redirection URL after verification of a manager.
|
||||
|
||||
### Changed
|
||||
Extract a stakeholder in every field of a json in a chart.
|
||||
Improvements regarding import/export indicators and editing an indicator.
|
||||
|
||||
## v1.0.0 - 26.06.2024 - Official Release
|
||||
### Added
|
||||
Add banner for announcements. Disabled by default.
|
||||
Add guide text in researcher search bar for more accurate results.
|
||||
|
||||
### Removed
|
||||
Remove final release text from footer.
|
||||
|
||||
### Changed
|
||||
Improvements in User Interface of browse RPOs/RFOs pages.
|
||||
|
||||
## v0.1.5 - 19.6.2024
|
||||
### Added
|
||||
Add open access indicator in browse pages.
|
||||
Add OAI PMH in user actions page.
|
||||
|
||||
### Changed
|
||||
Change api call to get manage stakeholders from the API.
|
||||
|
||||
## v0.1.4 - 03.6.2024
|
||||
### Added
|
||||
Add message for results that are not related to Ireland in detailed page of the result.
|
||||
Add Tab title in indicator form (admin).
|
||||
|
||||
### Changed
|
||||
Position of buttons for multi indicator in cards and add allows for overflow.
|
||||
_Open Access_ to _Open Access with Licence_ and set precision of the percentage to one decimal.
|
||||
|
||||
## v0.1.3 - 20.5.2024
|
||||
### Added
|
||||
Share OA Indicator in Monitor pages.
|
||||
Dashboard Managers Documentation in User Actions.
|
||||
|
||||
### Fixed
|
||||
Improve performance in search pages.
|
||||
|
||||
## v0.1.2 - 25.4.2024
|
||||
### Fixed
|
||||
* Bug with invitation in RPOs.
|
||||
|
||||
### Removed
|
||||
* Remove number of products in researcher dashboard page.
|
||||
|
||||
## v0.1.1 - 18.4.2024
|
||||
### Fixed
|
||||
* Bug with router links to search pages in all entities.
|
||||
|
||||
### Changed
|
||||
* Filters replace result with publication, dataset, software, other.
|
||||
* Range Filter override initial values of a chart.
|
||||
|
||||
### Removed
|
||||
* Remove search bar from menu in landings.
|
||||
|
||||
## v0.1.0 - 17.4.2024
|
||||
### Added
|
||||
* Introduce copy/reference instance type in stakeholders profiles.
|
||||
* Add class help texts for Engagement and training
|
||||
* Add Managers in admin
|
||||
* Multi indicator paths in admin and monitor page.
|
||||
|
||||
### Changed
|
||||
* Rename existed managers to Primary Dashboard Managers
|
||||
* Convert all profiles to **reference**
|
||||
* Reordering in default will be inherited to children. (copy)
|
||||
* Export/import Indicators add stakeholder index variables and type in order to import into another profile.
|
||||
* Remove edit/remove actions in indicators page when a profile is **reference**
|
||||
|
||||
## v0.0.7 - 23.3.2024
|
||||
### Added
|
||||
* Add licence facet in results.
|
||||
* Cache # of publications response
|
||||
* Pop-up to every monitor with guide for the basic interactivity functions of the charts.
|
||||
|
||||
### Fixed
|
||||
* Responsive menu items for medium screens
|
||||
* Fix bug with condition if user is manager in publications method.
|
||||
|
||||
## v0.0.6 - 22.2.2024
|
||||
### Added
|
||||
* Sort by # of publications in browse pages of RFOs/RPOs.
|
||||
* Override profiles in indicator level.
|
||||
|
||||
### Changed
|
||||
* Change research queries.
|
||||
|
||||
### Removed
|
||||
* My orcid links from beta.
|
||||
|
||||
### Fixed
|
||||
* Bug with encoding alias.
|
||||
* Link to matomo stats.
|
||||
|
||||
## v0.0.5 - 14.2.2024
|
||||
### Added
|
||||
* Country filter in all entities.
|
||||
|
||||
### Fixed
|
||||
* Bug with encoding of index variables in url of indicators.
|
||||
* Bug in section tabs.
|
||||
* Bug with search to landing navigation in national monitor.
|
||||
|
||||
## v0.0.4 - 07.2.2024
|
||||
### Added
|
||||
* Home page.
|
||||
* Orcid page to discover your results.
|
||||
* Show filters in subtitle of a chart.
|
||||
* Show selected filters in indicators.
|
||||
* Sections: Add description.
|
||||
|
||||
### Changed
|
||||
* Section changed to tabs.
|
||||
* Filter OA color changed to Publisher Access.
|
||||
|
||||
### Fixed
|
||||
* Fos filter in charts.
|
||||
|
||||
## v0.0.3 - 29.1.2024
|
||||
### Added
|
||||
* Add info floating button to all pages and link to terminology page.
|
||||
|
||||
### Changed
|
||||
* Change OA Routes to Access Routes.
|
||||
* Make contact-us full screen modal.
|
||||
* Move floating message button to root components.
|
||||
|
||||
|
||||
## v0.0.2 - 18.1.2024
|
||||
### Added
|
||||
* Loading in dashboard - cache for FOS call.
|
||||
|
||||
### Removed
|
||||
* Remove imported from file in sections titles.
|
||||
* Remove loading in dashboard when a subcategory is changed.
|
||||
|
||||
### Fixed
|
||||
* Export indicators with file name.
|
||||
* Invitation of manager doesn't work as expected.
|
||||
* Sandbox guard for researcher.
|
||||
|
||||
## v0.0.1 - 10.1.2024
|
||||
* Initial Release.
|
190
LICENSE.txt
|
@ -1,190 +0,0 @@
|
|||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
Copyright 2024 National Open Access Monitor, Ireland
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
39
README.md
|
@ -1,34 +1,27 @@
|
|||
# Irish Monitor
|
||||
# IrishMonitor
|
||||
|
||||
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 16.2.0.
|
||||
|
||||
## Development server
|
||||
|
||||
Run `npm start` for a dev server. Navigate to `http://localhost:5500/`. The application will automatically reload if you change any of the source files.
|
||||
Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The application will automatically reload if you change any of the source files.
|
||||
|
||||
## Sandbox environment (BETA) build
|
||||
1. Run `npm run build:ssr-beta` to build the project.
|
||||
2. Copy the folder to another location and navigate to it.
|
||||
3. Run `npm run after-build-clean` to remove git unnecessary files in the new folder.
|
||||
4. Upload to the server.
|
||||
5. Run `npm install` in the uploaded folder and copy the content to the server location.
|
||||
6. Restart the service.
|
||||
## Code scaffolding
|
||||
|
||||
## Production environment build
|
||||
1. Run `npm run build:ssr-prod` to build the project.
|
||||
2. Copy the folder to another location and navigate to it.
|
||||
3. Run `npm run after-build-clean` to remove git unnecessary files in the new folder.
|
||||
4. Upload to the server.
|
||||
5. Run `npm install` in the uploaded folder and copy the content to the server location.
|
||||
6. Restart the service.
|
||||
Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.
|
||||
|
||||
## Notes
|
||||
1. Login Session is only working under the same domain with the login-service of the [properties](src/environments/environment.ts).
|
||||
2. Search service, ORCID-Integrated service, Linking service belongs to OpenAIRE.
|
||||
3. Managers are stored at OpenAIRE AAI Registry.
|
||||
4. Irish Monitor Service is the main service of Irish Monitor.
|
||||
## Build
|
||||
|
||||
## License
|
||||
Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory.
|
||||
|
||||
This project is licensed under the Apache License, Version 2.0. See the [LICENSE](LICENSE.txt) file for details.
|
||||
## Running unit tests
|
||||
|
||||
Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
||||
|
||||
## Running end-to-end tests
|
||||
|
||||
Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities.
|
||||
|
||||
## Further help
|
||||
|
||||
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
||||
|
|
|
@ -305,8 +305,5 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cli": {
|
||||
"analytics": false
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "irish-monitor",
|
||||
"version": "1.0.3",
|
||||
"version": "0.0.0",
|
||||
"scripts": {
|
||||
"ng": "ng",
|
||||
"start": "ng serve --port 5500 --disable-host-check --host 0.0.0.0",
|
||||
|
@ -15,8 +15,7 @@
|
|||
"build:ssr-beta": "npm run build-beta && ng run irish-monitor:server:beta",
|
||||
"build:ssr-prod": "npm run build-prod && ng run irish-monitor:server:production",
|
||||
"prerender": "ng run irish-monitor:prerender",
|
||||
"release": "chmod +x release.sh && ./release.sh",
|
||||
"after-build-clean": "rm -rf release.sh .vscode dist/irish-monitor/browser/assets/common-assets/.git* src/app/openaireLibrary/.git* node_modules .angular src/assets/common-assets/.git* .git*"
|
||||
"after-build-clean": "rm -rf dist/irish-monitor/browser/assets/common-assets/.git src/app/openaireLibrary/.git node_modules .angular src/assets/common-assets/.git .git"
|
||||
},
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
|
|
39
release.sh
|
@ -1,39 +0,0 @@
|
|||
rm -f *.zip
|
||||
|
||||
# Portal
|
||||
git clone https://code-repo.d4science.org/MaDgIK/irish-monitor.git
|
||||
cd irish-monitor
|
||||
git checkout master
|
||||
git submodule update --init --recursive
|
||||
cd src/app/openaireLibrary
|
||||
git checkout master
|
||||
cd ../../assets/common-assets
|
||||
git checkout master
|
||||
cd ../openaire-theme
|
||||
git checkout master
|
||||
cd ../../../
|
||||
npm run after-build-clean
|
||||
version=$(npm pkg get version | xargs)
|
||||
cd ../
|
||||
zip -r irish-monitor-$version.zip irish-monitor
|
||||
rm -rf irish-monitor
|
||||
|
||||
# Service
|
||||
git clone https://code-repo.d4science.org/MaDgIK/irish-monitor-service.git
|
||||
cd irish-monitor-service
|
||||
git checkout production
|
||||
rm -rf .git*
|
||||
version=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)
|
||||
# Remove the '-SNAPSHOT' suffix
|
||||
version=${version%-SNAPSHOT}
|
||||
# Split the version string into major, minor, and patch components
|
||||
IFS='.' read -r major minor patch <<EOF
|
||||
$version
|
||||
EOF
|
||||
# Subtract one from the patch version
|
||||
patch=$((patch - 1))
|
||||
# Reconstruct the version string
|
||||
version="$major.$minor.$patch"
|
||||
cd ../
|
||||
zip -r irish-monitor-service-$version.zip irish-monitor-service
|
||||
rm -rf irish-monitor-service
|
|
@ -111,7 +111,7 @@ export function app(): express.Express {
|
|||
}));
|
||||
if (userinfoRes.status === 200) {
|
||||
let user = new User(userinfoRes.data);
|
||||
let stakeholderRes = (await axios.get<Stakeholder>(properties.monitorServiceAPIURL + 'stakeholder/' + encodeURIComponent(req.params.alias), {
|
||||
let stakeholderRes = (await axios.get<Stakeholder>(properties.monitorServiceAPIURL + '/stakeholder/' + encodeURIComponent(req.params.alias), {
|
||||
withCredentials: true,
|
||||
headers: headers
|
||||
}).catch(error => {
|
||||
|
|
|
@ -20,11 +20,9 @@ import {Irish} from "../shared/irish";
|
|||
[class.sidebar_main_active]="open && (hasSidebar || hasInternalSidebar || hasAdminMenu)"
|
||||
[class.sidebar_mini]="!open && (hasSidebar || hasInternalSidebar || hasAdminMenu)"
|
||||
[class.sidebar_hover]="hover">
|
||||
<dashboard-sidebar *ngIf="hasSidebar && !hasInternalSidebar && sideBarItems.length > 0"
|
||||
[logoURL]="stakeholder | logoUrl"
|
||||
<dashboard-sidebar *ngIf="hasSidebar && !hasInternalSidebar && sideBarItems.length > 0" [logoURL]="stakeholder | logoUrl"
|
||||
[items]="sideBarItems" [backItem]="backItem"></dashboard-sidebar>
|
||||
<dashboard-sidebar *ngIf="hasAdminMenu && !hasInternalSidebar" [items]="adminMenuItems"
|
||||
[backItem]="backItem"></dashboard-sidebar>
|
||||
<dashboard-sidebar *ngIf="hasAdminMenu && !hasInternalSidebar" [items]="adminMenuItems" [backItem]="backItem"></dashboard-sidebar>
|
||||
<div class="uk-width-1-1">
|
||||
<router-outlet></router-outlet>
|
||||
</div>
|
||||
|
@ -51,7 +49,6 @@ export class AdminComponent extends SidebarBaseComponent implements OnInit {
|
|||
|
||||
ngOnInit() {
|
||||
super.ngOnInit();
|
||||
this.layoutService.setHasHelpPopUp(false);
|
||||
this.subscriptions.push(this.userManagementService.getUserInfo().subscribe(user => {
|
||||
this.user = user;
|
||||
this.subscriptions.push(this.params.subscribe(params => {
|
||||
|
@ -71,10 +68,19 @@ export class AdminComponent extends SidebarBaseComponent implements OnInit {
|
|||
if (this.isAdmin && this.stakeholder.defaultId) {
|
||||
this.sideBarItems.push(new MenuItem("admin-tools", "Pages & Entities", "", "/admin/" + this.stakeholder.alias + "/admin-tools/pages", false, [], [], {}, {name: 'description'}, null, "uk-visible@m", "/admin/" + this.stakeholder.alias + "/admin-tools"));
|
||||
}
|
||||
this.backItem = null;
|
||||
if (this.hasAdminMenu) {
|
||||
this.setAdminMenuItems();
|
||||
this.adminMenuItems = [];
|
||||
this.backItem = null;
|
||||
this.adminMenuItems.push(new MenuItem("stakeholders", "Manage profiles", "", "/admin", false, [], [], {}, {name: 'settings'}));
|
||||
if (Session.isPortalAdministrator(this.user)) {
|
||||
this.adminMenuItems.push(new MenuItem("adminOptions", "Super Admin options", "", "/admin/admin-tools/portals", false, [], [], {}, {name: 'settings'}, null, "uk-visible@m", '/admin/admin-tools'));
|
||||
}
|
||||
if (Session.isPortalAdministrator(this.user) || Session.isMonitorCurator(this.user)) {
|
||||
this.adminMenuItems.push(new MenuItem("irishOptions", "Irish options", "", "/admin/irish/admin-tools/pages", false, [], [], {}, {name: 'settings'}, null, "uk-visible@m", '/admin/irish/admin-tools'));
|
||||
}
|
||||
this.hasAdminMenu = this.hasAdminMenu && this.adminMenuItems.length > 1;
|
||||
}
|
||||
|
||||
this.backItem = new MenuItem("back", "Manage profiles", "", "/admin", false, [], null, {}, {name: 'west'});
|
||||
this.loading = false;
|
||||
}));
|
||||
|
@ -85,7 +91,16 @@ export class AdminComponent extends SidebarBaseComponent implements OnInit {
|
|||
this.hasSidebar = false;
|
||||
this.loading = false;
|
||||
if (this.hasAdminMenu) {
|
||||
this.setAdminMenuItems();
|
||||
this.adminMenuItems = [];
|
||||
this.backItem = null;
|
||||
this.adminMenuItems.push(new MenuItem("stakeholders", "Manage profiles", "", "/admin", false, [], [], {}, {name: 'settings'}));
|
||||
if (Session.isPortalAdministrator(this.user)) {
|
||||
this.adminMenuItems.push(new MenuItem("adminOptions", "Super Admin options", "", "/admin/admin-tools/portals", false, [], [], {}, {name: 'settings'}, null, "uk-visible@m", '/admin/admin-tools'));
|
||||
}
|
||||
if (Session.isPortalAdministrator(this.user) || Session.isMonitorCurator(this.user)) {
|
||||
this.adminMenuItems.push(new MenuItem("irishOptions", "Irish options", "", "/admin/irish/admin-tools/pages", false, [], [], {}, {name: 'settings'}, null, "uk-visible@m", '/admin/irish/admin-tools'));
|
||||
}
|
||||
this.hasAdminMenu = this.hasAdminMenu && this.adminMenuItems.length > 1;
|
||||
}
|
||||
}
|
||||
}));
|
||||
|
@ -94,7 +109,6 @@ export class AdminComponent extends SidebarBaseComponent implements OnInit {
|
|||
|
||||
ngOnDestroy() {
|
||||
super.ngOnDestroy();
|
||||
this.layoutService.setHasHelpPopUp(true);
|
||||
this.layoutService.setRootClass(null);
|
||||
this.setProperties(Irish.irishAdminToolsCommunity, Irish.irishAdminToolsPortalType);
|
||||
}
|
||||
|
@ -109,18 +123,6 @@ export class AdminComponent extends SidebarBaseComponent implements OnInit {
|
|||
this.configurationService.initPortal(this.properties, this.properties.adminToolsCommunity);
|
||||
}
|
||||
|
||||
private setAdminMenuItems() {
|
||||
this.adminMenuItems = [];
|
||||
this.adminMenuItems.push(new MenuItem("stakeholders", "Manage profiles", "", "/admin", false, [], [], {}, {name: 'settings'}));
|
||||
if (Session.isPortalAdministrator(this.user)) {
|
||||
this.adminMenuItems.push(new MenuItem("adminOptions", "Super Admin options", "", "/admin/admin-tools/portals", false, [], [], {}, {name: 'settings'}, null, "uk-visible@m", '/admin/admin-tools'));
|
||||
}
|
||||
if (Session.isPortalAdministrator(this.user) || Session.isMonitorCurator(this.user)) {
|
||||
this.adminMenuItems.push(new MenuItem("irishOptions", "Irish options", "", "/admin/irish/admin-tools/pages", false, [], [], {}, {name: 'settings'}, null, "uk-visible@m", '/admin/irish/admin-tools'));
|
||||
}
|
||||
this.hasAdminMenu = this.hasAdminMenu && this.adminMenuItems.length > 1;
|
||||
}
|
||||
|
||||
public get isAdmin() {
|
||||
return Session.isPortalAdministrator(this.user) || Session.isCurator(this.stakeholder.type, this.user);
|
||||
}
|
||||
|
|
|
@ -47,7 +47,7 @@ import {CacheIndicatorsModule} from "../openaireLibrary/monitor-admin/utils/cach
|
|||
pathMatch: 'full'
|
||||
},
|
||||
{
|
||||
path: 'users/:user_type',
|
||||
path: 'users/manager',
|
||||
loadChildren: () => import('./users/users.module').then(m => m.UsersModule),
|
||||
pathMatch: 'full'
|
||||
},
|
||||
|
|
|
@ -4,10 +4,6 @@
|
|||
</div>
|
||||
</div>
|
||||
<role-users *ngIf="!loading && stakeholder" [id]="stakeholder.alias" [type]="stakeholder.type" [name]="stakeholder.name" [link]="link" [role]="tab" [message]="messages.get(tab)"
|
||||
[emailComposer]="emailComposer" [inviteAuthorizationLevel]="tab === 'manager'?'curator':'manager'">
|
||||
<ul class="uk-tab uk-margin-remove-bottom uk-margin-medium-top">
|
||||
<li [class.uk-active]="tab === 'manager'"><a routerLink="../manager" class="uk-text-capitalize">{{roleUtils.roles.manager}}s</a></li>
|
||||
<li [class.uk-active]="tab === 'member'"><a routerLink="../member" class="uk-text-capitalize">{{roleUtils.roles.member}}s</a></li>
|
||||
</ul>
|
||||
[emailComposer]="emailComposer">
|
||||
</role-users>
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import {Component} from "@angular/core";
|
||||
import {StakeholderBaseComponent} from "../../openaireLibrary/monitor-admin/utils/stakeholder-base.component";
|
||||
import {Stakeholder} from "../../openaireLibrary/monitor/entities/stakeholder";
|
||||
import {Role, RoleUtils, User} from "../../openaireLibrary/login/utils/helper.class";
|
||||
import {User} from "../../openaireLibrary/login/utils/helper.class";
|
||||
import {Email} from "../../openaireLibrary/utils/email/email";
|
||||
import {Composer} from "../../openaireLibrary/utils/email/composer";
|
||||
import {StakeholderService} from "../../openaireLibrary/monitor/services/stakeholder.service";
|
||||
|
@ -20,7 +20,6 @@ type Tab = 'member' | 'manager';
|
|||
})
|
||||
export class UsersComponent extends StakeholderBaseComponent {
|
||||
public stakeholder: Stakeholder;
|
||||
public roleUtils: RoleUtils = new RoleUtils();
|
||||
public link: string;
|
||||
public loading: boolean;
|
||||
public messages: Map<Tab, string> = new Map<Tab, string>();
|
||||
|
@ -58,10 +57,10 @@ export class UsersComponent extends StakeholderBaseComponent {
|
|||
this.title = this.stakeholder.name + " | " + this.users;
|
||||
this.setMetadata();
|
||||
this.link = this.getURL(this.stakeholder.alias);
|
||||
this.messages.set("member", 'A ' + this.roleUtils.roles.member + ' has the right to access the <b>sandbox</b> of this indicator\'s profile. ' +
|
||||
'A ' + this.roleUtils.roles.member + ' has <b>no access</b> to the administration part of the profile.');
|
||||
this.messages.set("manager", 'A ' + this.roleUtils.roles.manager + ' has the right to access the <b>administration part</b> of this indicator\'s profile, ' +
|
||||
'where he is able to invite other users as ' + this.roleUtils.roles.member + 's and access the <b>sandbox.</b>');
|
||||
this.messages.set("member", 'A member has the right to view the <b>restricted access</b> areas of this indicator\'s profile. ' +
|
||||
'A member has <b>no access</b> to the administration part of the profile.');
|
||||
this.messages.set("manager", 'A manager has the right to access the administration part of this indicator\'s profile, ' +
|
||||
'where he is able to invite other users as members and access the sandbox.');
|
||||
this.loading = false;
|
||||
}
|
||||
}));
|
||||
|
@ -98,9 +97,7 @@ export class UsersComponent extends StakeholderBaseComponent {
|
|||
url = url + '/rpo/' + id;
|
||||
} else if(this.stakeholder.type === 'datasource') {
|
||||
url = url + '/repository/' + id;
|
||||
} else if(this.stakeholder.type === 'country') {
|
||||
url = url + '/national';
|
||||
}
|
||||
return url + "?verify=";
|
||||
return url + "/national?verify=";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
import {NgModule} from '@angular/core';
|
||||
import {RouterModule, Routes} from '@angular/router';
|
||||
import { NgModule } from '@angular/core';
|
||||
import { RouterModule, Routes } from '@angular/router';
|
||||
import {Irish} from "./shared/irish";
|
||||
import {ErrorPageComponent} from "./openaireLibrary/error/errorPage.component";
|
||||
import {AdminLoginGuard} from "./openaireLibrary/login/adminLoginGuard.guard";
|
||||
import {HasConsentGuard} from "./shared/hasConsent.guard";
|
||||
|
||||
const routes: Routes = [
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import {AfterViewInit, ChangeDetectorRef, Component, HostListener, OnInit} from '@angular/core';
|
||||
import {AfterViewInit, ChangeDetectorRef, Component, OnInit} from '@angular/core';
|
||||
import {ActivatedRoute, Router} from "@angular/router";
|
||||
import {MenuItem} from "./openaireLibrary/sharedComponents/menu";
|
||||
import {Header} from "./openaireLibrary/sharedComponents/navigationBar.component";
|
||||
|
@ -16,15 +16,11 @@ import {SearchOrcidService} from "./openaireLibrary/claims/claim-utils/service/s
|
|||
import {SearchResearchResultsService} from "./openaireLibrary/services/searchResearchResults.service";
|
||||
import {Identifier} from "./openaireLibrary/utils/string-utils.class";
|
||||
import {ConnectHelper} from "./openaireLibrary/connect/connectHelper";
|
||||
import {HelperService} from "./openaireLibrary/utils/helper/helper.service";
|
||||
|
||||
@Component({
|
||||
selector: 'app-root',
|
||||
template: `
|
||||
<div class="uk-background-default">
|
||||
<div *ngIf="divContents && divContents['banner']" class="uk-tile uk-tile-default uk-padding uk-border-bottom">
|
||||
<helper [texts]="divContents['banner']"></helper>
|
||||
</div>
|
||||
<navbar *ngIf="hasHeader" portal="irish_monitor" [menuItems]="menuItems" [showMenu]="true"
|
||||
[header]="header" [user]="user" [userMenuItems]="userMenuItems"></navbar>
|
||||
<div *ngIf="loading">
|
||||
|
@ -35,23 +31,33 @@ import {HelperService} from "./openaireLibrary/utils/helper/helper.service";
|
|||
<main>
|
||||
<router-outlet></router-outlet>
|
||||
</main>
|
||||
<help-pop-up *ngIf="hasHelpPopUp && !isBottomIntersecting"></help-pop-up>
|
||||
<a routerLink="/methodology/terminology" target="_blank" id="info_switcher_toggle"
|
||||
class="uk-offcanvas-switcher uk-flex uk-flex-center uk-flex-middle uk-link-reset" uk-tooltip="Terminology and construction">
|
||||
<icon name="info" ratio="1.5" [flex]="true" customClass="uk-text-background" visuallyHidden="info"></icon>
|
||||
</a>
|
||||
<contact [page]="false"></contact>
|
||||
</div>
|
||||
</div>
|
||||
<cookie-law *ngIf="isClient" position="bottom" cookieName="cookieLawSeen-NOAMIreland">
|
||||
National Open Access Monitor - Ireland, uses cookies in order to function properly.<br>
|
||||
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 National Open Access Monitor - Ireland portal you accept our use of cookies.
|
||||
By using the National Open Access Monitor - Ireland portal you accept our use of cookies. <!--<a
|
||||
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>-->
|
||||
</cookie-law>
|
||||
<footer id="bottom" class="uk-text-center uk-text-small uk-border-top">
|
||||
<footer class="uk-text-center uk-text-small uk-border-top">
|
||||
<div class="uk-tile-default">
|
||||
<div class="uk-section uk-container">
|
||||
<div class="uk-flex uk-flex-middle uk-flex-center uk-margin-medium-bottom">
|
||||
<div class="uk-flex uk-flex-middle uk-flex-center">
|
||||
<img src="assets/logo/small.svg" alt="National Open Access Monitor Ireland" style="width: 40px;"/>
|
||||
<div class="uk-margin-small-left">
|
||||
Platform in <span class="uk-text-bold">Pilot</span> Phase
|
||||
Platform in <span class="uk-text-bold">Pilot</span> Phase - Final Release June 2024
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="uk-margin-medium-bottom">
|
||||
<a href="https://graph.openaire.eu" target="_blank" class="uk-width-1-1 uk-width-auto@m">
|
||||
|
@ -102,11 +108,6 @@ export class AppComponent extends ResearcherBaseComponent implements OnInit, Aft
|
|||
user: User;
|
||||
isClient: boolean = false;
|
||||
stakeholderUtils: StakeholderUtils = new StakeholderUtils();
|
||||
windowWidth: number;
|
||||
compactMenuItems: boolean = false;
|
||||
hasHelpPopUp: boolean = true;
|
||||
isBottomIntersecting: boolean = false;
|
||||
divContents: any;
|
||||
|
||||
constructor(protected _route: ActivatedRoute,
|
||||
protected _router: Router,
|
||||
|
@ -117,22 +118,17 @@ export class AppComponent extends ResearcherBaseComponent implements OnInit, Aft
|
|||
private customFilterService: CustomFilterService,
|
||||
private userManagementService: UserManagementService,
|
||||
private userProfileService: UserProfileService,
|
||||
private helper: HelperService,
|
||||
protected _searchOrcidService: SearchOrcidService,
|
||||
protected _searchResearchResultsService: SearchResearchResultsService
|
||||
) {
|
||||
super();
|
||||
// this.configurationService.initStaticPortal(this.irish.portal);
|
||||
// this.configurationService.initPortal(this.properties, this.properties.adminToolsCommunity);
|
||||
this.setProperties(this.properties.adminToolsCommunity, this.properties.adminToolsPortalType);
|
||||
this.userManagementService.fixRedirectURL = this.properties.afterLoginRedirectLink;
|
||||
this.userManagementService.allowDoubleRedirectToFixAndCurrentPage = true;
|
||||
}
|
||||
|
||||
@HostListener('window:resize', ['$event'])
|
||||
onResize(event) {
|
||||
this.getWindowWidth();
|
||||
this.buildMenuItems();
|
||||
}
|
||||
|
||||
ngOnDestroy() {
|
||||
super.ngOnDestroy();
|
||||
this.customFilterService.clearSubscriptions();
|
||||
|
@ -143,17 +139,6 @@ export class AppComponent extends ResearcherBaseComponent implements OnInit, Aft
|
|||
|
||||
ngOnInit() {
|
||||
this.isClient = typeof document !== 'undefined';
|
||||
this.subscriptions.push(this.layoutService.hasHelpPopUp.subscribe(value => {
|
||||
this.hasHelpPopUp = value;
|
||||
this.cdr.detectChanges();
|
||||
}));
|
||||
this.subscriptions.push(this.layoutService.isBottomIntersecting.subscribe(isBottomIntersecting => {
|
||||
this.isBottomIntersecting = isBottomIntersecting;
|
||||
this.cdr.detectChanges();
|
||||
}));
|
||||
if(this.isClient) {
|
||||
this.getWindowWidth();
|
||||
}
|
||||
if (this.properties.environment == 'beta') {
|
||||
this.header.environmentBadge = {
|
||||
asset: 'assets/badge/sandbox.svg'
|
||||
|
@ -173,7 +158,6 @@ export class AppComponent extends ResearcherBaseComponent implements OnInit, Aft
|
|||
}
|
||||
this.initialize();
|
||||
}));
|
||||
this.getDivContents();
|
||||
}
|
||||
|
||||
ngAfterViewInit() {
|
||||
|
@ -205,33 +189,14 @@ export class AppComponent extends ResearcherBaseComponent implements OnInit, Aft
|
|||
}
|
||||
|
||||
initialize() {
|
||||
this.buildMenuItems();
|
||||
}
|
||||
|
||||
buildMenuItems() {
|
||||
if(this.compactMenuItems) {
|
||||
this.menuItems = [
|
||||
new MenuItem("home", "Home", "", "/", false, [], null, {}, null, null, null),
|
||||
new MenuItem("monitors", "Monitors", "", "", false, [], null, {}, null, null, null, "/monitors", "_blank", "internal", false,
|
||||
[
|
||||
new MenuItem("national", this.stakeholderUtils.entities.country, "", "/national", false, [], null, {}, null, null, null),
|
||||
new MenuItem("rpo", this.stakeholderUtils.entities.organization, "", "/rpo", false, [], null, {}, null, null, null, "/rpo"),
|
||||
new MenuItem("rfo", this.stakeholderUtils.entities.funder, "", "/rfo", false, [], null, {}, null, null, null, "/rfo"),
|
||||
new MenuItem("researcher", "Researcher", "", "/researcher", false, [], null, {}, null, null, null, "/researcher"),
|
||||
new MenuItem("repository", "Repository", "", "/repository", false, [], null, {}, null, null, null, "/repository")
|
||||
]
|
||||
)
|
||||
];
|
||||
} else {
|
||||
this.menuItems = [
|
||||
new MenuItem("home", "Home", "", "/", false, [], null, {}, null, null, null),
|
||||
new MenuItem("national", this.stakeholderUtils.entities.country + ' ' + this.stakeholderUtils.entities.stakeholder, "", "/national", false, [], null, {}, null, null, null),
|
||||
new MenuItem("rpo", this.stakeholderUtils.entities.organization + ' ' + this.stakeholderUtils.entities.stakeholders, "", "/rpo", false, [], null, {}, null, null, null, "/rpo"),
|
||||
new MenuItem("rfo", this.stakeholderUtils.entities.funder + ' ' + this.stakeholderUtils.entities.stakeholders, "", "/rfo", false, [], null, {}, null, null, null, "/rfo"),
|
||||
new MenuItem("researcher", "Researcher Monitors", "", "/researcher", false, [], null, {}, null, null, null, "/researcher"),
|
||||
new MenuItem("repository", "Repository Monitors", "", "/repository", false, [], null, {}, null, null, null, "/repository")
|
||||
];
|
||||
}
|
||||
this.menuItems = [
|
||||
new MenuItem("home", "Home", "", "/", false, [], null, {}, null, null, null),
|
||||
new MenuItem("national", this.stakeholderUtils.entities.country + ' ' + this.stakeholderUtils.entities.stakeholder, "", "/national", false, [], null, {}, null, null, null),
|
||||
new MenuItem("rpo", this.stakeholderUtils.entities.organization + ' ' + this.stakeholderUtils.entities.stakeholders, "", "/rpo", false, [], null, {}, null, null, null, "/rpo"),
|
||||
new MenuItem("rfo", this.stakeholderUtils.entities.funder + ' ' + this.stakeholderUtils.entities.stakeholders, "", "/rfo", false, [], null, {}, null, null, null, "/rfo"),
|
||||
new MenuItem("researcher", "Researcher Monitors", "", "/researcher", false, [], null, {}, null, null, null, "/researcher"),
|
||||
new MenuItem("repository", "Repository Monitors", "", "/repository", false, [], null, {}, null, null, null, "/repository")
|
||||
];
|
||||
if (this.properties.environment != "beta") {
|
||||
this.menuItems.push(
|
||||
new MenuItem("resources", "Resources & Help", "", "", false, [], null, {}, null, null, null, "/resources", "_blank", "internal", false,
|
||||
|
@ -243,11 +208,10 @@ export class AppComponent extends ResearcherBaseComponent implements OnInit, Aft
|
|||
new MenuItem("methodology", "Methodology", "", "", false, [], null, {}, null, null, null, null, "_self"),
|
||||
new MenuItem("methodological-approach", "Methodological Approach", "", "/methodology/methodological-approach", false, [], null, {}, null, null, null, "/methodological-approach"),
|
||||
new MenuItem("terminology-construction", "Terminology & Construction", "", "/methodology/terminology", false, [], null, {}, null, null, null, "/methodology/terminology"),
|
||||
new MenuItem("help", "Help", "", "", false, [], null, {}, null, null, null, null, "_self"),
|
||||
new MenuItem("", "", "", "", false, [], null, {}, null, null, null, null, "_self"),
|
||||
new MenuItem("stats-logs", "Web Statistics & Activity Logs", "", "/stats-logs", false, [], null, {}, null, null, null, "/stats-logs"),
|
||||
new MenuItem("engagement-training", "Engagement & Training", "", "/engagement-training", false, [], null, {}, null, null, null, "/engagement-training"),
|
||||
new MenuItem("support", "Support", "", "/support", false, [], null, {}, null, null, null, "/support"),
|
||||
new MenuItem("privacy-policy", "Privacy Policy", "/assets/privacy-policy.pdf", "", false, [], null, {}, null, null, null, null, "_blank"),
|
||||
]
|
||||
)
|
||||
)
|
||||
|
@ -293,12 +257,6 @@ export class AppComponent extends ResearcherBaseComponent implements OnInit, Aft
|
|||
}
|
||||
}
|
||||
|
||||
private getDivContents() {
|
||||
this.subscriptions.push(this.helper.getDivHelpContents(this.properties, 'irish', '/').subscribe(contents => {
|
||||
this.divContents = contents;
|
||||
}));
|
||||
}
|
||||
|
||||
setProperties(id, type = null) {
|
||||
this.properties.adminToolsCommunity = id;
|
||||
if (type) {
|
||||
|
@ -312,11 +270,4 @@ export class AppComponent extends ResearcherBaseComponent implements OnInit, Aft
|
|||
public get isAdmin() {
|
||||
return Session.isPortalAdministrator(this.user) || Session.isMonitorCurator(this.user) || Session.isKindOfMonitorManager(this.user);
|
||||
}
|
||||
|
||||
getWindowWidth() {
|
||||
this.windowWidth = window.innerWidth;
|
||||
let mBreakpoint = Number.parseInt(getComputedStyle(document.documentElement).getPropertyValue('--uk-breakpoint-m'));
|
||||
let xlBreakpoint = Number.parseInt(getComputedStyle(document.documentElement).getPropertyValue('--uk-breakpoint-xl'));
|
||||
this.compactMenuItems = this.windowWidth > mBreakpoint && this.windowWidth <= xlBreakpoint;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,10 +17,8 @@ import {CookieLawModule} from "./openaireLibrary/sharedComponents/cookie-law/coo
|
|||
import {SearchResearchResultsServiceModule} from "./openaireLibrary/services/searchResearchResultsService.module";
|
||||
import {SearchOrcidService} from "./openaireLibrary/claims/claim-utils/service/searchOrcid.service";
|
||||
import {SearchOrcidServiceModule} from "./openaireLibrary/claims/claim-utils/service/searchOrcidService.module";
|
||||
import {HelpPopUpModule} from './shared/help-pop-up/help-pop-up.module';
|
||||
import {RouteReuseStrategy} from '@angular/router';
|
||||
import {CustomRouteReuseStrategy} from './openaireLibrary/shared/custom-route-reuse-strategy';
|
||||
import {HelperModule} from "./openaireLibrary/utils/helper/helper.module";
|
||||
import {ContactModule} from "./contact/contact.module";
|
||||
import {IconsModule} from "./openaireLibrary/utils/icons/icons.module";
|
||||
|
||||
@NgModule({
|
||||
declarations: [
|
||||
|
@ -39,12 +37,11 @@ import {HelperModule} from "./openaireLibrary/utils/helper/helper.module";
|
|||
CookieLawModule,
|
||||
SearchResearchResultsServiceModule,
|
||||
SearchOrcidServiceModule,
|
||||
HelpPopUpModule,
|
||||
HelperModule
|
||||
ContactModule,
|
||||
IconsModule
|
||||
],
|
||||
providers: [
|
||||
SearchOrcidService,
|
||||
{provide: RouteReuseStrategy, useClass: CustomRouteReuseStrategy},
|
||||
{provide: APP_ID, useValue: 'irish-monitor'},
|
||||
{
|
||||
provide: HTTP_INTERCEPTORS,
|
||||
|
|
|
@ -21,14 +21,8 @@
|
|||
</div>
|
||||
</modal-alert>
|
||||
<ng-container *ngIf="!page">
|
||||
<a class="uk-link-reset" (click)="openFsModal()">
|
||||
<div class="uk-flex uk-flex-top">
|
||||
<icon name="description" flex="true" customClass="uk-text-primary"></icon>
|
||||
<div class="uk-margin-small-left">
|
||||
<p class="uk-text-bold uk-margin-xsmall-bottom">Give us your feedback</p>
|
||||
<span class="uk-text-small uk-text-meta">Give general feedback of this platform.</span>
|
||||
</div>
|
||||
</div>
|
||||
<a id="feedback_switcher_toggle" class="uk-offcanvas-switcher uk-flex uk-flex-center uk-flex-middle uk-link-reset" uk-tooltip="Give us feedback">
|
||||
<icon name="email" ratio="1.5" [flex]="true" customClass="uk-text-background" visuallyHidden="feedback" (click)="openFsModal()"></icon>
|
||||
</a>
|
||||
<fs-modal #fsModal>
|
||||
<div class="uk-section uk-container uk-container-large uk-flex uk-flex-center">
|
||||
|
|
|
@ -7,9 +7,8 @@
|
|||
<div class="uk-text-large uk-width-1-1 uk-width-medium@m uk-flex-last@m">
|
||||
<div>
|
||||
Enhance your approach to Open Science. Explore insights thoughtfully designed to support your
|
||||
strategy and contribute to the future of Irish Open Science. In our current pilot phase we are
|
||||
aiming at enhancing data integrity, broadening functionality and embedding the Monitor into the
|
||||
Irish scholarly ecosystem.
|
||||
strategy and contribute to the future of Irish Open Science. Our current pilot phase, aimed at
|
||||
enhancing data integrity and broadening functionality, continues until June 2024.
|
||||
</div>
|
||||
<a routerLink="/national" class="uk-button uk-button-secondary uk-margin-top">Take a look</a>
|
||||
</div>
|
||||
|
@ -55,22 +54,17 @@
|
|||
<div class="uk-section uk-background-secondary dark">
|
||||
<div class="uk-container">
|
||||
<h2 class="uk-text-center uk-light">All in one platform</h2>
|
||||
<div class="uk-margin-large-top uk-grid uk-grid-small uk-child-width-1-1 uk-child-width-1-2@m"
|
||||
uk-height-match=".column" uk-grid>
|
||||
<div class="uk-margin-large-top uk-grid uk-grid-small uk-child-width-1-1 uk-child-width-1-2@m" uk-height-match=".column" uk-grid>
|
||||
<div>
|
||||
<div class="uk-card uk-card-default uk-card-body column uk-flex uk-flex-column">
|
||||
<div class="uk-text-primary uk-text-large">National Monitor</div>
|
||||
<h3 class="uk-margin-remove-top uk-width-large">Explore Ireland’s Research Overview</h3>
|
||||
<div class="uk-width-large uk-width-expand uk-margin-medium-bottom uk-text-large">
|
||||
Dive into the National Dashboard for a comprehensive view of Ireland’s Open Access landscape or
|
||||
explore our other four types of tailor-made dashboards.
|
||||
</div>
|
||||
Dive into the National Dashboard for a comprehensive view of Ireland’s Open Access landscape or explore our other four types of tailor-made dashboards. </div>
|
||||
<div class="uk-flex uk-flex-right">
|
||||
<a routerLink="/national"
|
||||
class="uk-link-reset uk-text-large uk-text-bolder uk-flex uk-flex-middle">
|
||||
<a routerLink="/national" class="uk-link-reset uk-text-large uk-text-bolder uk-flex uk-flex-middle">
|
||||
<span>National Monitor</span>
|
||||
<button class="uk-icon-button uk-button-primary uk-margin-left"
|
||||
[class.uk-icon-button-small]="isMobile">
|
||||
<button class="uk-icon-button uk-button-primary uk-margin-left" [class.uk-icon-button-small]="isMobile">
|
||||
<icon name="north_east" [flex]="true" [ratio]="isMobile?1:1.5"></icon>
|
||||
</button>
|
||||
</a>
|
||||
|
@ -81,8 +75,7 @@
|
|||
<div class="uk-grid column uk-grid-small uk-child-width-1-1 uk-child-width-1-2@s" uk-grid>
|
||||
<div>
|
||||
<div class="uk-card uk-card-default uk-flex uk-flex-column uk-padding-small uk-height-1-1">
|
||||
<h6 class="uk-margin-remove-top uk-width-expand">Research Performing Organisations
|
||||
Monitors</h6>
|
||||
<h6 class="uk-margin-remove-top uk-width-expand">Research Performing Organisations Monitors</h6>
|
||||
<div class="uk-flex uk-flex-right uk-margin-top organization">
|
||||
<a routerLink="/rpo">
|
||||
<button class="uk-icon-button uk-icon-button-small uk-button-primary uk-margin-left">
|
||||
|
@ -106,8 +99,7 @@
|
|||
</div>
|
||||
<div>
|
||||
<div class="uk-card uk-card-default uk-flex uk-flex-column uk-padding-small uk-height-1-1">
|
||||
<h6 class="uk-margin-remove-top uk-width-expand">Research Funding Organisations
|
||||
Monitors</h6>
|
||||
<h6 class="uk-margin-remove-top uk-width-expand">Research Funding Organisations Monitors</h6>
|
||||
<div class="uk-flex uk-flex-right funder">
|
||||
<a routerLink="/rfo">
|
||||
<button class="uk-icon-button uk-icon-button-small uk-button-primary uk-margin-left">
|
||||
|
@ -139,14 +131,11 @@
|
|||
Enhancing data quality through user engagement
|
||||
</h3>
|
||||
<div class="uk-light uk-margin-medium-bottom">
|
||||
We encourage active participation from our users to refine and improve the data quality on our
|
||||
platform. Collaborate with us, utilize the tools provided, and contribute to shaping a robust Open
|
||||
Access environment.
|
||||
We encourage active participation from our users to refine and improve the data quality on our platform. Collaborate with us, utilize the tools provided, and contribute to shaping a robust Open Access environment.
|
||||
</div>
|
||||
<a class="uk-button uk-button-secondary" routerLink="/how-it-works/user-actions">Learn More</a>
|
||||
</div>
|
||||
<div class="uk-grid uk-grid-small uk-child-width-1-1 uk-child-width-1-2@s"
|
||||
uk-height-match="target: .uk-card; row: false" uk-grid>
|
||||
<div class="uk-grid uk-grid-small uk-child-width-1-1 uk-child-width-1-2@s" uk-height-match="target: .uk-card; row: false" uk-grid>
|
||||
<div>
|
||||
<div class="uk-card uk-card-default uk-flex uk-flex-column uk-padding-small">
|
||||
<h6>Add to ORCID</h6>
|
||||
|
@ -170,8 +159,7 @@
|
|||
Connect research results with projects, research communities, or other research outcomes.
|
||||
</div>
|
||||
<div class="uk-flex uk-flex-right">
|
||||
<a routerLink="/participate/claim"
|
||||
class="uk-link-reset uk-text-bolder uk-flex uk-flex-middle">
|
||||
<a routerLink="/participate/claim" class="uk-link-reset uk-text-bolder uk-flex uk-flex-middle">
|
||||
<span>Link</span>
|
||||
<button class="uk-icon-button uk-icon-button-small uk-button-secondary uk-margin-left">
|
||||
<icon name="north_east" [flex]="true"></icon>
|
||||
|
@ -209,9 +197,7 @@
|
|||
</div>
|
||||
<div class="uk-width-1-1 uk-width-2-3@s">
|
||||
<h3>We Value Your Feedback.</h3>
|
||||
<div class="uk-width-large">Your insights and feedback are crucial. Reach out with questions, comments, or
|
||||
to collaborate on data quality.
|
||||
</div>
|
||||
<div class="uk-width-large">Your insights and feedback are crucial. Reach out with questions, comments, or to collaborate on data quality.</div>
|
||||
</div>
|
||||
<div class="uk-width-1-1 uk-width-expand@s uk-flex uk-flex-center">
|
||||
<a routerLink="/contact-us" class="uk-button uk-button-secondary">Contact us</a>
|
||||
|
|
|
@ -11,77 +11,58 @@ import {CustomFilterService} from "../openaireLibrary/shared/customFilter.servic
|
|||
import {StakeholderBaseComponent} from "../openaireLibrary/monitor-admin/utils/stakeholder-base.component";
|
||||
import {LayoutService} from "../openaireLibrary/dashboard/sharedComponents/sidebar/layout.service";
|
||||
import {OpenaireEntities} from "../openaireLibrary/utils/properties/searchFields";
|
||||
import {RouterHelper} from "../openaireLibrary/utils/routerHelper.class";
|
||||
import {StringUtils} from "../openaireLibrary/utils/string-utils.class";
|
||||
import {ConfigurationService} from "../openaireLibrary/utils/configuration/configuration.service";
|
||||
import {Session} from "../openaireLibrary/login/utils/helper.class";
|
||||
import {properties as beta} from "../../environments/environment.beta";
|
||||
import {UserManagementService} from "../openaireLibrary/services/user-management.service";
|
||||
|
||||
@Component({
|
||||
selector: 'national',
|
||||
template: `
|
||||
<div>
|
||||
<loading *ngIf="loading" class="uk-position-center"></loading>
|
||||
<div *ngIf="!loading && stakeholder">
|
||||
<div class="uk-banner uk-light">
|
||||
<div class="uk-container uk-container-large">
|
||||
<div class="uk-padding-small uk-padding-remove-vertical">
|
||||
<div class="uk-grid uk-grid-large uk-flex-middle uk-margin-medium-bottom" uk-grid>
|
||||
<div class="uk-width-expand">
|
||||
<h1 class="uk-h3 uk-margin-remove uk-text-truncate">{{ entities.country }} {{ entities.stakeholder }}</h1>
|
||||
</div>
|
||||
<div class="uk-width-auto">
|
||||
<oa-indicator [stakeholder]="stakeholder"></oa-indicator>
|
||||
</div>
|
||||
</div>
|
||||
<loading *ngIf="loading" class="uk-position-center"></loading>
|
||||
<div *ngIf="!loading && stakeholder">
|
||||
<div class="uk-banner uk-light">
|
||||
<div class="uk-container uk-container-large">
|
||||
<div class="uk-padding-small uk-padding-remove-vertical">
|
||||
<div class="uk-grid uk-grid-large uk-flex-middle uk-margin-medium-bottom" uk-grid>
|
||||
<div class="uk-width-expand">
|
||||
<h1 *ngIf="stakeholder" class="uk-h3 uk-margin-remove uk-text-truncate">{{entities.country}} {{entities.stakeholder}}</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-banner-footer">
|
||||
<div class="uk-container uk-container-large uk-flex uk-flex-between">
|
||||
<ul class="uk-banner-tab uk-padding-small uk-padding-remove-vertical">
|
||||
<li [class.uk-active]="!isSearch">
|
||||
<a [routerLink]="'/national'">{{ entities.stakeholder }}</a>
|
||||
</li>
|
||||
<li [class.uk-active]="isSearch">
|
||||
<a [routerLink]="'/national/search/find/research-outcomes'"
|
||||
[queryParams]="routerHelper.createQueryParams(['type','peerreviewed'], [quote('publications'), quote('true')])">
|
||||
Browse {{ openaireEntities.RESULTS }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div *ngIf="!isMobile" class="uk-margin-large-right uk-flex uk-flex-middle">
|
||||
<a *ngIf="isManager" [routerLink]="adminLink" target="_blank"
|
||||
class="uk-button uk-flex uk-flex-middle uk-margin-small-right">
|
||||
Manage
|
||||
</a>
|
||||
<a *ngIf="sandboxLink" [href]="sandboxLink" target="_blank"
|
||||
class="uk-button uk-flex uk-flex-middle uk-margin-small-right">
|
||||
Sandbox
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<router-outlet></router-outlet>
|
||||
</div>
|
||||
</div>
|
||||
<h3 *ngIf="!loading && !stakeholder" class="uk-position-center">
|
||||
No {{ entities.country }} {{ entities.stakeholder }} yet.
|
||||
</h3>
|
||||
</div>
|
||||
<div class="uk-banner-footer">
|
||||
<div class="uk-container uk-container-large">
|
||||
<ul class="uk-banner-tab uk-padding-small uk-padding-remove-vertical">
|
||||
<li [class.uk-active]="!isSearch">
|
||||
<a [routerLink]="'/national'">{{entities.stakeholder}}</a>
|
||||
</li>
|
||||
<li [class.uk-active]="isSearch">
|
||||
<a [routerLink]="'/national/search/find/research-outcomes'" [queryParams]="routerHelper.createQueryParams(['type','peerreviewed'], [quote('publications'), quote('true')])">
|
||||
Browse {{openaireEntities.RESULTS}}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-margin-medium-top uk-margin-medium-bottom">
|
||||
<router-outlet></router-outlet>
|
||||
</div>
|
||||
</div>
|
||||
<h3 *ngIf="!loading && !stakeholder" class="uk-position-center">
|
||||
No {{entities.country}} {{entities.stakeholder}} yet.
|
||||
</h3>
|
||||
</div>
|
||||
<role-verification *ngIf="stakeholder" [id]="stakeholder.alias" [name]="stakeholder.name"
|
||||
[dashboard]="'National Open Access Monitor, Ireland'"
|
||||
[type]="stakeholder.type" [service]="'irish'" [relativeTo]="null"></role-verification>
|
||||
<role-verification *ngIf="stakeholder" [id]="stakeholder.alias" [name]="stakeholder.name" [type]="stakeholder.type" [service]="'irish'"></role-verification>
|
||||
`
|
||||
})
|
||||
export class NationalComponent extends StakeholderBaseComponent implements OnInit {
|
||||
stakeholder: Stakeholder;
|
||||
loading: boolean = true;
|
||||
isMobile: boolean = false;
|
||||
isSearch: boolean = false;
|
||||
openaireEntities = OpenaireEntities;
|
||||
|
||||
constructor(private stakeholderService: StakeholderService,
|
||||
private userManagementService: UserManagementService,
|
||||
private layoutService: LayoutService,
|
||||
protected _router: Router,
|
||||
protected _route: ActivatedRoute,
|
||||
|
@ -99,15 +80,13 @@ export class NationalComponent extends StakeholderBaseComponent implements OnIni
|
|||
|
||||
ngOnInit() {
|
||||
this.layoutService.setRootClass('country');
|
||||
this.subscriptions.push(this.layoutService.isMobile.subscribe(isMobile => {
|
||||
this.isMobile = isMobile;
|
||||
}));
|
||||
this.stakeholderService.getStakeholder(this._route.snapshot.data.stakeholder).subscribe(stakeholder => {
|
||||
this.stakeholder = stakeholder;
|
||||
if(this.stakeholder) {
|
||||
this.setProperties(this.stakeholder.alias, this.stakeholder.type, this.configurationService);
|
||||
this._customFilterService.setCustomFilter([new SearchCustomFilter("National", "country", "IE", "Irish National Monitor")]);
|
||||
LinksResolver.resetProperties();
|
||||
LinksResolver.setSearchAndResultLanding("national/");
|
||||
this.loading = false;
|
||||
} else {
|
||||
this.loading = false;
|
||||
|
@ -119,27 +98,4 @@ export class NationalComponent extends StakeholderBaseComponent implements OnIni
|
|||
super.ngOnDestroy();
|
||||
this.layoutService.setRootClass(null);
|
||||
}
|
||||
|
||||
get isManager() {
|
||||
return Session.isPortalAdministrator(this.userManagementService.user) ||
|
||||
Session.isCurator(this.stakeholder.type, this.userManagementService.user) ||
|
||||
Session.isManager(this.stakeholder.type, this.stakeholder.alias, this.userManagementService.user);
|
||||
}
|
||||
|
||||
get isMember() {
|
||||
return this.isManager ||
|
||||
Session.isMember(this.stakeholder.type, this.stakeholder.alias, this.userManagementService.user);
|
||||
}
|
||||
|
||||
get adminLink() {
|
||||
return "/admin/" + this.stakeholder.alias;
|
||||
}
|
||||
|
||||
get sandboxLink() {
|
||||
if(this.properties.environment !== 'beta' && this.isMember) {
|
||||
return beta.domain + '/national/';
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,6 @@ import {IconsModule} from "../openaireLibrary/utils/icons/icons.module";
|
|||
import {IconsService} from "../openaireLibrary/utils/icons/icons.service";
|
||||
import {open_access} from "../openaireLibrary/utils/icons/icons";
|
||||
import {SandboxGuard} from "../shared/sandbox.guard";
|
||||
import {OaIndicatorModule} from "../shared/oa-indicator/oa-indicator.module";
|
||||
|
||||
const routes: Route[] = [
|
||||
{
|
||||
|
@ -20,7 +19,7 @@ const routes: Route[] = [
|
|||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [CommonModule, RouterModule.forChild(routes), LoadingModule, RoleVerificationModule, IconsModule, OaIndicatorModule],
|
||||
imports: [CommonModule, RouterModule.forChild(routes), LoadingModule, RoleVerificationModule, IconsModule],
|
||||
declarations: [NationalComponent],
|
||||
exports: [NationalComponent],
|
||||
})
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit f9444fa7c0e565ad5375e0d83dd6d178963c291b
|
||||
Subproject commit e0de892998d76b2236babf3439ed532e4501145d
|
|
@ -5,19 +5,13 @@ import {SEOService} from '../openaireLibrary/sharedComponents/SEO/SEO.service';
|
|||
import {PiwikService} from '../openaireLibrary/utils/piwik/piwik.service';
|
||||
import {Meta, Title} from '@angular/platform-browser';
|
||||
import {LogService} from "../openaireLibrary/utils/log/log.service";
|
||||
import {Breadcrumb} from '../openaireLibrary/utils/breadcrumbs/breadcrumbs.component';
|
||||
|
||||
@Component({
|
||||
selector: 'public-logs',
|
||||
template: `
|
||||
<div class="uk-banner dark uk-padding-remove-vertical uk-light">
|
||||
<div class="uk-container uk-container-large uk-section uk-section-small">
|
||||
<div>
|
||||
<breadcrumbs [breadcrumbs]="breadcrumbs"></breadcrumbs>
|
||||
</div>
|
||||
<div class="uk-text-center uk-margin-medium-top" uk-scrollspy-class>
|
||||
<h1 class="uk-h2 uk-margin-medium-top uk-margin-medium-bottom">Web Statistics & Activity Logs</h1>
|
||||
</div>
|
||||
<div class="uk-banner">
|
||||
<div class="uk-container uk-container-large uk-section uk-section-small uk-text-center">
|
||||
<h1 class="uk-h2">Web Statistics & Activity Logs</h1>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-container uk-container-small uk-section">
|
||||
|
@ -91,7 +85,6 @@ import {Breadcrumb} from '../openaireLibrary/utils/breadcrumbs/breadcrumbs.compo
|
|||
`
|
||||
})
|
||||
export class PublicLogsComponent extends BaseComponent implements OnInit {
|
||||
breadcrumbs: Breadcrumb[] = [{name: 'home', route: '/'}, {name: 'resources - web statistics & activity logs'}];
|
||||
isConsent = false;
|
||||
redirectUrl = null;
|
||||
startDate = new Date();
|
||||
|
|
|
@ -3,7 +3,6 @@ import {CommonModule} from '@angular/common';
|
|||
import {PublicLogsComponent} from "./public-logs.component";
|
||||
import {LogServiceModule} from "../openaireLibrary/utils/log/LogService.module";
|
||||
import {Route, RouterModule} from "@angular/router";
|
||||
import {BreadcrumbsModule} from '../openaireLibrary/utils/breadcrumbs/breadcrumbs.module';
|
||||
|
||||
const routes: Route[] = [
|
||||
{
|
||||
|
@ -15,7 +14,7 @@ const routes: Route[] = [
|
|||
@NgModule({
|
||||
declarations: [PublicLogsComponent],
|
||||
imports: [
|
||||
CommonModule, RouterModule.forChild(routes), LogServiceModule, RouterModule, BreadcrumbsModule
|
||||
CommonModule, RouterModule.forChild(routes), LogServiceModule, RouterModule
|
||||
],
|
||||
exports: [PublicLogsComponent]
|
||||
})
|
||||
|
|
|
@ -3,13 +3,13 @@
|
|||
<loading></loading>
|
||||
</div>
|
||||
</ng-container>
|
||||
<div *ngIf="!showLoading" class="uk-container uk-container-large uk-section-small">
|
||||
<div *ngIf="!showLoading" class="uk-container uk-container-large">
|
||||
<div class="uk-flex uk-flex-middle uk-flex-center">
|
||||
<div search-input *ngIf="keywordControl" [searchControl]="keywordControl" [searchInputClass]="'flat'" [iconPosition]="'left'"
|
||||
placeholder="Search for {{typeAsLabel}} {{entities.stakeholders}}" [disabled]="stakeholders.length === 0" class="uk-width-xlarge@l uk-width-large@m uk-width-1-1">
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-flex uk-flex-middle uk-flex-between uk-margin-large-top" [id]="id">
|
||||
<div class="uk-flex uk-flex-middle uk-flex-between uk-margin-large-top">
|
||||
<div class="uk-flex uk-flex-middle">
|
||||
<div class="uk-width-small uk-margin-medium-right">
|
||||
<div input
|
||||
|
@ -32,7 +32,7 @@
|
|||
</paging-no-load>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-margin-large-top">
|
||||
<div class="uk-margin-large-top" id="target">
|
||||
<div *ngIf="!filteredStakeholders || filteredStakeholders?.length == 0" class="uk-flex uk-flex-center">
|
||||
<div class="uk-alert uk-alert-primary uk-text-center uk-width-2-3@m uk-width-1-1">
|
||||
No {{entities.stakeholders}} available
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import {ChangeDetectorRef, Component} from "@angular/core";
|
||||
import {ActivatedRoute, Router} from "@angular/router";
|
||||
import {FormBuilder} from "@angular/forms";
|
||||
import {BrowseStakeholderBaseComponent} from "../../shared/browse-stakeholder-base.component";
|
||||
import {LayoutService} from "../../openaireLibrary/dashboard/sharedComponents/sidebar/layout.service";
|
||||
import {Option} from "../../openaireLibrary/sharedComponents/input/input.component";
|
||||
import {SearchDataprovidersService} from "../../openaireLibrary/services/searchDataproviders.service";
|
||||
|
@ -8,15 +9,14 @@ import {SearchResult} from "../../openaireLibrary/utils/entities/searchResult";
|
|||
import {ResultPreview} from "../../openaireLibrary/utils/result-preview/result-preview";
|
||||
import {forkJoin, Observable, of} from "rxjs";
|
||||
import {catchError} from "rxjs/operators";
|
||||
import {StakeholderExtended} from "../../shared/irish";
|
||||
import {StakeholderPublication} from "../../shared/irish";
|
||||
import {IrishMonitorService} from "../../shared/irish-monitor.service";
|
||||
import {BrowseStakeholderBaseComponent} from "../../openaireLibrary/monitor/browse-stakeholder/browse-stakeholder-base.component";
|
||||
|
||||
@Component({
|
||||
selector: 'browse-repository',
|
||||
templateUrl: 'browse-repositories.component.html'
|
||||
})
|
||||
export class BrowseRepositoriesComponent extends BrowseStakeholderBaseComponent<StakeholderExtended> {
|
||||
export class BrowseRepositoriesComponent extends BrowseStakeholderBaseComponent {
|
||||
sortBy = 'alphAsc';
|
||||
sortOptions: Option[] = [
|
||||
{value: 'alphAsc', label: 'Alphabetically Asc. (A-Z)'},
|
||||
|
@ -33,15 +33,6 @@ export class BrowseRepositoriesComponent extends BrowseStakeholderBaseComponent<
|
|||
super();
|
||||
}
|
||||
|
||||
init() {
|
||||
this.subscriptions.push(this.irishMonitorService.getStakeholders(this.stakeholderType).subscribe(stakeholders => {
|
||||
this.stakeholders = stakeholders;
|
||||
this.filteredStakeholders = stakeholders;
|
||||
this.sortByChanged();
|
||||
this.filtering(this.keywordControl.value);
|
||||
}));
|
||||
}
|
||||
|
||||
sortByChanged() {
|
||||
switch(this.sortBy) {
|
||||
case 'alphAsc':
|
||||
|
@ -93,3 +84,7 @@ export class BrowseRepositoriesComponent extends BrowseStakeholderBaseComponent<
|
|||
return ResultPreview.searchResultConvert(result, (result.entityType) ? result.entityType : this.typeAsLabel);
|
||||
}
|
||||
}
|
||||
|
||||
export class StakeholderRepository extends StakeholderPublication {
|
||||
details: any;
|
||||
}
|
||||
|
|
|
@ -15,121 +15,87 @@ import {SearchDataprovidersService} from "../openaireLibrary/services/searchData
|
|||
import {UserManagementService} from "../openaireLibrary/services/user-management.service";
|
||||
import {ConfigurationService} from "../openaireLibrary/utils/configuration/configuration.service";
|
||||
import {Irish} from "../shared/irish";
|
||||
import {Session} from "../openaireLibrary/login/utils/helper.class";
|
||||
import {properties as beta} from "../../environments/environment.beta";
|
||||
|
||||
|
||||
@Component({
|
||||
selector: 'repository',
|
||||
template: `
|
||||
<loading *ngIf="loading" class="uk-position-center"></loading>
|
||||
<div *ngIf="!loading">
|
||||
<div class="uk-banner uk-light">
|
||||
<div class="uk-container uk-container-large">
|
||||
<div class="uk-padding-small uk-padding-remove-vertical">
|
||||
<div *ngIf="stakeholder" class="uk-grid uk-grid-large uk-flex-middle uk-margin-medium-bottom"
|
||||
uk-grid>
|
||||
<div class="uk-width-expand">
|
||||
<div class="uk-grid uk-grid-small uk-flex-middle" uk-grid>
|
||||
<div class="uk-card uk-card-default uk-padding-small">
|
||||
<img *ngIf="stakeholder.logoUrl; else elseBlock" [src]="stakeholder | logoUrl"
|
||||
[alt]="stakeholder.name + ' logo'" class="uk-height-max-xsmall"
|
||||
style="max-width: 180px;">
|
||||
<ng-template #elseBlock>
|
||||
<img src="assets/common-assets/placeholder.png"
|
||||
alt="OpenAIRE placeholder logo" class="uk-height-max-xsmall"
|
||||
style="max-width: 180px;">
|
||||
</ng-template>
|
||||
</div>
|
||||
<div class="uk-width-expand uk-margin-small-left">
|
||||
<div class="uk-text-small uk-flex uk-flex-middle uk-margin-small-bottom">
|
||||
<icon [name]="'navigate_before'" [flex]="true" [ratio]="0.8"
|
||||
class="uk-margin-xsmall-right"></icon>
|
||||
<a routerLink=".">Back to
|
||||
all {{ entities.datasource }} {{ entities.stakeholders }}</a>
|
||||
</div>
|
||||
<div class="uk-h4 uk-margin-remove uk-text-truncate">{{ stakeholder.name }}</div>
|
||||
<ng-container *ngIf="stakeholder.details">
|
||||
<div class="uk-text-xsmall uk-margin-small-bottom">
|
||||
<entity-metadata [entityType]="stakeholder.details.type"
|
||||
[compatibilityString]="stakeholder.details.compatibility"
|
||||
[organizations]="stakeholder.details.organizations">
|
||||
</entity-metadata>
|
||||
</div>
|
||||
<div class="uk-text-small">
|
||||
<!-- Website URL -->
|
||||
<div *ngIf="stakeholder.details?.websiteURL"
|
||||
class="uk-margin-xsmall-bottom">
|
||||
<span>Website URL: </span>
|
||||
<span class="uk-text-italic">
|
||||
<div class="uk-banner uk-light">
|
||||
<div class="uk-container uk-container-large">
|
||||
<div class="uk-padding-small uk-padding-remove-vertical">
|
||||
<div *ngIf="stakeholder" class="uk-grid uk-grid-large uk-flex-middle uk-margin-medium-bottom" uk-grid>
|
||||
<div class="uk-width-expand">
|
||||
<div class="uk-grid uk-grid-small uk-flex-middle" uk-grid>
|
||||
<div class="uk-card uk-card-default uk-padding-small">
|
||||
<img *ngIf="stakeholder.logoUrl; else elseBlock" [src]="stakeholder | logoUrl" [alt]="stakeholder.name + ' logo'" class="uk-height-max-xsmall" style="max-width: 180px;">
|
||||
<ng-template #elseBlock>
|
||||
<img src="assets/common-assets/placeholder.png" alt="OpenAIRE placeholder logo" class="uk-height-max-xsmall" style="max-width: 180px;">
|
||||
</ng-template>
|
||||
</div>
|
||||
<div class="uk-width-expand uk-margin-small-left">
|
||||
<div class="uk-h4 uk-margin-remove uk-text-truncate">{{stakeholder.name}}</div>
|
||||
<ng-container *ngIf="stakeholder.details">
|
||||
<div class="uk-text-xsmall uk-margin-small-bottom">
|
||||
<entity-metadata [entityType]="stakeholder.details.type"
|
||||
[compatibilityString]="stakeholder.details.compatibility"
|
||||
[organizations]="stakeholder.details.organizations">
|
||||
</entity-metadata>
|
||||
</div>
|
||||
<div class="uk-text-small">
|
||||
<!-- Website URL -->
|
||||
<div *ngIf="stakeholder.details.websiteURL && stakeholder.details.websiteURL != ''" class="uk-margin-xsmall-bottom">
|
||||
<span>Website URL: </span>
|
||||
<span class="uk-text-italic">
|
||||
<a href="{{stakeholder.details.websiteURL}}" target="_blank" class="custom-external">
|
||||
{{ stakeholder.details.websiteURL }}
|
||||
{{stakeholder.details.websiteURL}}
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
<!-- OAI-PMH URL-->
|
||||
<div *ngIf="stakeholder.details?.OAIPMHURL"
|
||||
class="uk-margin-xsmall-bottom">
|
||||
<span>OAI-PMH URL: </span>
|
||||
<span class="uk-text-italic">
|
||||
</div>
|
||||
<!-- OAI-PMH URL-->
|
||||
<div *ngIf="stakeholder.details.OAIPMHURL && stakeholder.details.OAIPMHURL != ''" class="uk-margin-xsmall-bottom">
|
||||
<span>OAI-PMH URL: </span>
|
||||
<span class="uk-text-italic">
|
||||
<a href="{{stakeholder.details.OAIPMHURL}}" target="_blank" class="custom-external">
|
||||
{{ stakeholder.details.OAIPMHURL }}
|
||||
{{stakeholder.details.OAIPMHURL}}
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</ng-container>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-width-auto">
|
||||
<oa-indicator [stakeholder]="stakeholder"></oa-indicator>
|
||||
</div>
|
||||
</div>
|
||||
<h1 *ngIf="!stakeholder" class="uk-h3 uk-margin-small-bottom">{{ entities.datasources }}</h1>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="stakeholder" class="uk-banner-footer">
|
||||
<div class="uk-container uk-container-large uk-flex uk-flex-between">
|
||||
<ul class="uk-banner-tab uk-padding-small uk-padding-remove-vertical">
|
||||
<li [class.uk-active]="!isSearch">
|
||||
<a [routerLink]="['./', stakeholder.alias]" [relativeTo]="_route"
|
||||
(click)="isSearch = false">
|
||||
{{ entities.stakeholder }}
|
||||
</a>
|
||||
</li>
|
||||
<li [class.uk-active]="isSearch">
|
||||
<a [routerLink]="['./', stakeholder.alias, 'search']"
|
||||
[queryParams]="routerHelper.createQueryParams(['type','peerreviewed'], [quote('publications'), quote('true')])"
|
||||
[relativeTo]="_route">
|
||||
Browse {{ openaireEntities.RESULTS }}
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div *ngIf="!isMobile" class="uk-margin-large-right uk-flex uk-flex-middle">
|
||||
<a *ngIf="isManager" [routerLink]="adminLink" target="_blank"
|
||||
class="uk-button uk-flex uk-flex-middle uk-margin-small-right">
|
||||
Manage
|
||||
</a>
|
||||
<a *ngIf="sandboxLink" [href]="sandboxLink" target="_blank"
|
||||
class="uk-button uk-flex uk-flex-middle uk-margin-small-right">
|
||||
Sandbox
|
||||
</a>
|
||||
<a *ngIf="isProvideManager && provideLink" [href]="provideLink" target="_blank"
|
||||
class="uk-button uk-flex uk-flex-middle">
|
||||
<img class="uk-margin-xsmall-bottom" width="78"
|
||||
src="assets/common-assets/logo-small-provide.png">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</ng-container>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h1 *ngIf="!stakeholder" class="uk-h3 uk-margin-small-bottom">{{entities.datasources}}</h1>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="!this.alias || this.stakeholder">
|
||||
<router-outlet></router-outlet>
|
||||
<div *ngIf="stakeholder" class="uk-banner-footer">
|
||||
<div class="uk-container uk-container-large uk-flex uk-flex-between">
|
||||
<ul class="uk-banner-tab uk-padding-small uk-padding-remove-vertical">
|
||||
<li [class.uk-active]="!isSearch">
|
||||
<a [routerLink]="['./', stakeholder.alias]" [relativeTo]="_route" (click)="isSearch = false">
|
||||
{{entities.stakeholder}}
|
||||
</a>
|
||||
</li>
|
||||
<li [class.uk-active]="isSearch">
|
||||
<a [routerLink]="['./', stakeholder.alias, 'search']" [queryParams]="routerHelper.createQueryParams(['type','peerreviewed'], [quote('publications'), quote('true')])" [relativeTo]="_route">
|
||||
Browse {{openaireEntities.RESULTS}}
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a *ngIf="isProvideManager" [href]="provideLink" target="_blank" class="uk-button uk-margin-large-right uk-flex uk-flex-middle">
|
||||
<span class="uk-margin-small-right">Manage at</span>
|
||||
<img class="uk-margin-xsmall-bottom" width="78" src="assets/common-assets/logo-small-provide.png">
|
||||
<icon name="east" flex="true" class="uk-margin-small-left"></icon>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<role-verification *ngIf="stakeholder" [id]="stakeholder.alias" [name]="stakeholder.name"
|
||||
[type]="stakeholder.type" [dashboard]="'National Open Access Monitor, Ireland'"
|
||||
[service]="'irish'" [relativeTo]="null"></role-verification>
|
||||
</div>
|
||||
<div *ngIf="!this.alias || this.stakeholder" class="uk-margin-medium-top uk-margin-medium-bottom">
|
||||
<router-outlet></router-outlet>
|
||||
</div>
|
||||
<role-verification *ngIf="stakeholder" [id]="stakeholder.alias" [name]="stakeholder.name" [type]="stakeholder.type" [service]="'irish'"></role-verification>
|
||||
</div>
|
||||
`
|
||||
})
|
||||
|
@ -137,7 +103,6 @@ export class RepositoryComponent extends StakeholderBaseComponent implements OnI
|
|||
stakeholder: Stakeholder;
|
||||
alias: string;
|
||||
isSearch: boolean = false;
|
||||
isMobile: boolean = false;
|
||||
loading: boolean = false;
|
||||
openaireEntities = OpenaireEntities;
|
||||
isProvideManager: boolean;
|
||||
|
@ -165,13 +130,10 @@ export class RepositoryComponent extends StakeholderBaseComponent implements OnI
|
|||
this.title = 'Repository Monitors';
|
||||
this.description = 'Repository Monitors';
|
||||
this.setMetadata();
|
||||
this.subscriptions.push(this.layoutService.isMobile.subscribe(isMobile => {
|
||||
this.isMobile = isMobile;
|
||||
}));
|
||||
this.params.subscribe(params => {
|
||||
this.alias = params['stakeholder'];
|
||||
if (this.alias) {
|
||||
if (this.stakeholder?.alias !== this.alias) {
|
||||
if(this.stakeholder?.alias !== this.alias) {
|
||||
this._customFilterService.setCustomFilter(null);
|
||||
this.loading = true;
|
||||
this.subscriptions.push(this.stakeholderService.getStakeholder(this.alias, true).subscribe(stakeholder => {
|
||||
|
@ -181,9 +143,9 @@ export class RepositoryComponent extends StakeholderBaseComponent implements OnI
|
|||
LinksResolver.resetProperties();
|
||||
LinksResolver.setSearchAndResultLanding("repository/" + this.stakeholder.alias);
|
||||
this._customFilterService.setCustomFilter(
|
||||
[
|
||||
new SearchCustomFilter("National", "country", "IE", "Irish National Monitor", false),
|
||||
[new SearchCustomFilter("National", "country", "IE", "Irish National Monitor", false),
|
||||
new SearchCustomFilter("Repository", "resulthostingdatasourceid", this.stakeholder.index_id, this.stakeholder.index_name, true)
|
||||
// new SearchCustomFilter("Repository", "collectedfromdatasourceid", this.stakeholder.index_id, this.stakeholder.index_name, true)
|
||||
]);
|
||||
this.subscriptions.push(this.searchDataprovidersService.searchDataproviderById(this.stakeholder.index_id).subscribe(data => {
|
||||
this.stakeholder.details = data[0];
|
||||
|
@ -191,9 +153,6 @@ export class RepositoryComponent extends StakeholderBaseComponent implements OnI
|
|||
this.isProvideManager = !!user.role.find(role => role.includes(this.stakeholder.details.originalId.toUpperCase()));
|
||||
}));
|
||||
this.loading = false;
|
||||
}, error => {
|
||||
this.stakeholder.details = null;
|
||||
this.loading = false;
|
||||
}));
|
||||
} else {
|
||||
this.navigateToError();
|
||||
|
@ -207,32 +166,9 @@ export class RepositoryComponent extends StakeholderBaseComponent implements OnI
|
|||
});
|
||||
}
|
||||
|
||||
get isManager() {
|
||||
return Session.isPortalAdministrator(this.userManagementService.user) ||
|
||||
Session.isCurator(this.stakeholder.type, this.userManagementService.user) ||
|
||||
Session.isManager(this.stakeholder.type, this.stakeholder.alias, this.userManagementService.user);
|
||||
}
|
||||
|
||||
get isMember() {
|
||||
return this.isManager ||
|
||||
Session.isMember(this.stakeholder.type, this.stakeholder.alias, this.userManagementService.user);
|
||||
}
|
||||
|
||||
get adminLink() {
|
||||
return "/admin/" + this.stakeholder.alias;
|
||||
}
|
||||
|
||||
get sandboxLink() {
|
||||
if (this.properties.environment !== 'beta' && this.isMember) {
|
||||
return beta.domain + '/repository/' + this.stakeholder.alias;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
get provideLink() {
|
||||
if (this.stakeholder?.details?.originalId) {
|
||||
return 'https://' + (this.properties.environment != 'production' ? 'beta.' : '') + 'provide.openaire.eu/repository/' + this.stakeholder.details.originalId + '/dashboard';
|
||||
if(this.stakeholder?.details?.originalId) {
|
||||
return 'https://' + (this.properties.environment != 'production'?'beta.':'') + 'provide.openaire.eu/repository/' + this.stakeholder.details.originalId + '/dashboard';
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
@ -242,6 +178,5 @@ export class RepositoryComponent extends StakeholderBaseComponent implements OnI
|
|||
super.ngOnDestroy();
|
||||
this.layoutService.setRootClass(null);
|
||||
this.setProperties(Irish.irishAdminToolsCommunity, Irish.irishAdminToolsPortalType, this.configurationService);
|
||||
LinksResolver.resetProperties();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,7 +11,6 @@ import {IconsService} from "../openaireLibrary/utils/icons/icons.service";
|
|||
import {open_access} from "../openaireLibrary/utils/icons/icons";
|
||||
import {LogoUrlPipeModule} from "../openaireLibrary/utils/pipes/logoUrlPipe.module";
|
||||
import {SandboxGuard} from "../shared/sandbox.guard";
|
||||
import {OaIndicatorModule} from "../shared/oa-indicator/oa-indicator.module";
|
||||
|
||||
const routes: Route[] = [
|
||||
{
|
||||
|
@ -24,7 +23,7 @@ const routes: Route[] = [
|
|||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [CommonModule, RouterModule.forChild(routes), LoadingModule, RoleVerificationModule, IconsModule, EntityMetadataModule, LogoUrlPipeModule, OaIndicatorModule],
|
||||
imports: [CommonModule, RouterModule.forChild(routes), LoadingModule, RoleVerificationModule, IconsModule, EntityMetadataModule, LogoUrlPipeModule],
|
||||
declarations: [RepositoryComponent],
|
||||
providers: [SearchDataprovidersService],
|
||||
exports: [RepositoryComponent],
|
||||
|
|
|
@ -34,10 +34,10 @@ import {OpenaireEntities} from "../openaireLibrary/utils/properties/searchFields
|
|||
</div>
|
||||
<div class="uk-width-expand uk-margin-small-left">
|
||||
<div class="uk-h4 uk-margin-xsmall-bottom uk-text-truncate">{{author.authorGivenName}} {{author.authorFamilyName}}</div>
|
||||
<!--<div class="uk-text-xsmall uk-text-bold uk-margin-bottom">
|
||||
<div class="uk-text-xsmall uk-text-bold uk-margin-bottom">
|
||||
<div *ngIf="totalResults > 0">{{totalResults}} {{openaireEntities.RESULTS}}</div>
|
||||
<div *ngIf="author.institutions" class="uk-text-truncate">{{author.institutions.join(", ")}} </div>
|
||||
</div>-->
|
||||
</div>
|
||||
<div class="uk-flex uk-flex-middle uk-text-small uk-text-italic">
|
||||
<img src="assets/common-assets/common/ORCIDiD_icon16x16.png" alt="orcid"
|
||||
loading="lazy" style="width:16px; height:16px;" class="uk-margin-xsmall-right">
|
||||
|
@ -46,8 +46,12 @@ import {OpenaireEntities} from "../openaireLibrary/utils/properties/searchFields
|
|||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="stakeholder" class="uk-width-auto">
|
||||
<oa-indicator [stakeholder]="stakeholder"></oa-indicator>
|
||||
<div *ngIf="openResults && totalResults" class="uk-width-auto">
|
||||
<div class="uk-progress-semicircle open-access" [attr.percentage]="getPercentage()" [style]="'--percentage:' + getPercentage()"></div>
|
||||
<div class="uk-flex uk-flex-middle uk-margin-small-top">
|
||||
<icon class="open-access" [name]="'open_access'" [flex]="true"></icon>
|
||||
<span class="uk-margin-xsmall-left">Open Access</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -73,7 +77,7 @@ import {OpenaireEntities} from "../openaireLibrary/utils/properties/searchFields
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-container uk-container-large">
|
||||
<div class="uk-container uk-container-large uk-margin-medium-top uk-margin-medium-bottom">
|
||||
<router-outlet></router-outlet>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -81,6 +85,7 @@ import {OpenaireEntities} from "../openaireLibrary/utils/properties/searchFields
|
|||
})
|
||||
export class ResearcherComponent extends ResearcherBaseComponent implements OnInit {
|
||||
totalResults: number;
|
||||
openResults: number;
|
||||
loading: boolean = false;
|
||||
stakeholder;
|
||||
isSearch: boolean = false;
|
||||
|
@ -124,10 +129,12 @@ export class ResearcherComponent extends ResearcherBaseComponent implements OnI
|
|||
]);
|
||||
this.title = name;
|
||||
this.description = name;
|
||||
this.setProperties(this.authorId, "researcher", this.configurationService);
|
||||
this.setProperties(this.orcid, "researcher", this.configurationService);
|
||||
LinksResolver.resetProperties();
|
||||
LinksResolver.setSearchAndResultLanding("researcher/" + this.authorId);
|
||||
this.setMetadata();
|
||||
|
||||
|
||||
},
|
||||
error: () => {
|
||||
this._router.navigate([properties.errorLink]);
|
||||
|
@ -144,6 +151,9 @@ export class ResearcherComponent extends ResearcherBaseComponent implements OnI
|
|||
this.stakeholder = stakeholder;
|
||||
|
||||
}));
|
||||
this.subscriptions.push(this._searchResearchResultsService.numOfResearchOutcomes(this.param + ' and (resultbestaccessright exact "Open Access") and (peerreviewed exact "true")', properties, null).subscribe(res => {
|
||||
this.openResults = +res;
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -168,6 +178,10 @@ export class ResearcherComponent extends ResearcherBaseComponent implements OnI
|
|||
ngOnDestroy() {
|
||||
super.ngOnDestroy();
|
||||
this.layoutService.setRootClass(null);
|
||||
LinksResolver.resetProperties();
|
||||
}
|
||||
|
||||
getPercentage(){
|
||||
let num = (this.openResults/this.totalResults)*100;
|
||||
return num == 100?100:num.toPrecision(2);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,7 +9,6 @@ import {IconsModule} from '../openaireLibrary/utils/icons/icons.module';
|
|||
import {IconsService} from '../openaireLibrary/utils/icons/icons.service';
|
||||
import {open_access} from '../openaireLibrary/utils/icons/icons';
|
||||
import {SandboxGuard} from "../shared/sandbox.guard";
|
||||
import {OaIndicatorModule} from "../shared/oa-indicator/oa-indicator.module";
|
||||
|
||||
const routes: Route[] = [
|
||||
{
|
||||
|
@ -23,7 +22,7 @@ const routes: Route[] = [
|
|||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [CommonModule, RouterModule.forChild(routes), SearchOrcidServiceModule, SearchResearchResultsServiceModule, LoadingModule, IconsModule, OaIndicatorModule],
|
||||
imports: [CommonModule, RouterModule.forChild(routes), SearchOrcidServiceModule, SearchResearchResultsServiceModule, LoadingModule, IconsModule],
|
||||
declarations: [ResearcherComponent],
|
||||
exports: [ResearcherComponent],
|
||||
})
|
||||
|
|
|
@ -1,67 +1,66 @@
|
|||
<div class="uk-section-small">
|
||||
<div class="uk-flex uk-flex-center">
|
||||
<div search-input [(value)]="keyword" placeholder="Search by full name or ORCID for accurate results." tooltip="e.g: James Smith or 0000-0001-2345-6789" [disabled]="orcidStatus ==errorCodes.LOADING"
|
||||
[searchInputClass]="'flat'" [iconPosition]="'left'" (searchEmitter)="searchByKeyword()" (valueChange)="checkForReset()" class="uk-width-xlarge@l uk-width-large@m uk-width-1-1"></div>
|
||||
</div>
|
||||
<div class="uk-margin-large-top">
|
||||
<div *ngIf="orcidStatus == errorCodes.ERROR" class="uk-flex uk-flex-center">
|
||||
<div class="uk-alert uk-alert-warning uk-text-center uk-width-2-3@m uk-width-1-1" role="alert">
|
||||
An error occured
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="orcidStatus == errorCodes.NOT_AVAILABLE" class="uk-flex uk-flex-center">
|
||||
<div class="uk-alert uk-alert-danger uk-text-center uk-width-2-3@m uk-width-1-1" role="alert">
|
||||
Service not available
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="orcidStatus == errorCodes.NONE" class="uk-flex uk-flex-center">
|
||||
<div class="uk-alert uk-alert-primary uk-text-center uk-width-2-3@m uk-width-1-1">
|
||||
No results found
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="!(orcidStatus == errorCodes.NONE ||
|
||||
orcidStatus == errorCodes.ERROR || orcidStatus == errorCodes.NOT_AVAILABLE)">
|
||||
<!-- Debug info -->
|
||||
<!--<div>
|
||||
Orcid found:{{authors.length}} <br>
|
||||
check for results: {{authorsRendered}} <br>
|
||||
Authors found (with OpenAIRE results):{{authorsToShow.length}} <br>
|
||||
page: {{page}}<br>
|
||||
</div>-->
|
||||
<div class="uk-grid uk-grid-small uk-child-width-1-3@l uk-child-width-1-2@m" uk-grid>
|
||||
<div *ngFor=" let author of authorsToShow.slice(0,page*size>authorsToShow.length?authorsToShow.length:page*size)">
|
||||
<div *ngIf="author.resultsCount > 0" class="uk-card uk-card-default uk-card-hover uk-padding-small clickable"
|
||||
[routerLink]="'./'+author.id+''">
|
||||
<div class="uk-margin-bottom uk-grid uk-flex-middle" uk-grid>
|
||||
<div>
|
||||
<div class="uk-border uk-border-circle uk-text-meta uk-padding-xsmall uk-margin-small-right">
|
||||
<icon [name]="'person'" [ratio]="2" [flex]="true"></icon>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-padding-remove-left uk-width-expand">
|
||||
<div class="uk-h6 uk-margin-xsmall-bottom uk-text-truncate">{{author.authorGivenName}} {{author.authorFamilyName}}</div>
|
||||
<div class="uk-text-primary uk-text-xsmall uk-text-bold">
|
||||
<!-- <div *ngIf="author.resultsCount && author.resultsCount > 0">{{author.resultsCount}} {{openaireEntities.RESULTS}}</div></div>-->
|
||||
<div class="uk-text-truncate" *ngIf="author.institutions">{{author.institutions.join(", ")}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-margin-top uk-text-small uk-text-italic">
|
||||
<img src="assets/common-assets/common/ORCIDiD_icon16x16.png" alt="orcid"
|
||||
loading="lazy" style="width:16px; height:16px; margin-right: 3px;">
|
||||
<a [href]="properties.orcidURL + author.id" target="_blank" class="uk-link-text">
|
||||
<div class="uk-flex uk-flex-center">
|
||||
<div search-input [(value)]="keyword" [placeholder]="'Search for author or ORCID...'" [disabled]="orcidStatus ==errorCodes.LOADING"
|
||||
[searchInputClass]="'flat'" [iconPosition]="'left'" (searchEmitter)="searchByKeyword()" (valueChange)="checkForReset()" class="uk-width-xlarge@l uk-width-large@m uk-width-1-1"></div>
|
||||
</div>
|
||||
|
||||
{{properties.orcidURL + author.id}}</a></div>
|
||||
<!-- <div>Research outcomes:{{author.resultsCount}}</div>-->
|
||||
</div>
|
||||
<div class="uk-margin-large-top">
|
||||
<div *ngIf="orcidStatus == errorCodes.ERROR" class="uk-flex uk-flex-center">
|
||||
<div class="uk-alert uk-alert-warning uk-text-center uk-width-2-3@m uk-width-1-1" role="alert">
|
||||
An error occured
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="orcidStatus == errorCodes.NOT_AVAILABLE" class="uk-flex uk-flex-center">
|
||||
<div class="uk-alert uk-alert-danger uk-text-center uk-width-2-3@m uk-width-1-1" role="alert">
|
||||
Service not available
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="orcidStatus == errorCodes.NONE" class="uk-flex uk-flex-center">
|
||||
<div class="uk-alert uk-alert-primary uk-text-center uk-width-2-3@m uk-width-1-1">
|
||||
No results found
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="!(orcidStatus == errorCodes.NONE ||
|
||||
orcidStatus == errorCodes.ERROR || orcidStatus == errorCodes.NOT_AVAILABLE)">
|
||||
<!-- Debug info -->
|
||||
<!--<div>
|
||||
Orcid found:{{authors.length}} <br>
|
||||
check for results: {{authorsRendered}} <br>
|
||||
Authors found (with OpenAIRE results):{{authorsToShow.length}} <br>
|
||||
page: {{page}}<br>
|
||||
</div>-->
|
||||
<div class="uk-grid uk-grid-small uk-child-width-1-3@l uk-child-width-1-2@m" uk-grid>
|
||||
<div *ngFor=" let author of authorsToShow.slice(0,page*size>authorsToShow.length?authorsToShow.length:page*size)">
|
||||
<div *ngIf="author.resultsCount > 0" class="uk-card uk-card-default uk-card-hover uk-padding-small clickable"
|
||||
[routerLink]="'./'+author.id+''">
|
||||
<div class="uk-margin-bottom uk-grid uk-flex-middle" uk-grid>
|
||||
<div>
|
||||
<div class="uk-border uk-border-circle uk-text-meta uk-padding-xsmall uk-margin-small-right">
|
||||
<icon [name]="'person'" [ratio]="2" [flex]="true"></icon>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-padding-remove-left uk-width-expand">
|
||||
<div class="uk-h6 uk-margin-xsmall-bottom uk-text-truncate">{{author.authorGivenName}} {{author.authorFamilyName}}</div>
|
||||
<div class="uk-text-primary uk-text-xsmall uk-text-bold">
|
||||
<!-- <div *ngIf="author.resultsCount && author.resultsCount > 0">{{author.resultsCount}} {{openaireEntities.RESULTS}}</div></div>-->
|
||||
<div class="uk-text-truncate" *ngIf="author.institutions">{{author.institutions.join(", ")}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="orcidStatus == errorCodes.LOADING" class="uk-height-medium uk-position-relative" role="alert">
|
||||
<loading class="uk-position-center"></loading>
|
||||
</div>
|
||||
<div class="uk-flex uk-flex-center uk-margin-medium-top">
|
||||
<button *ngIf="authorsToShow.length > 0 && orcidStatus != errorCodes.LOADING && (authorsToShow.length > page*size || authors.length > authorsRendered)" class="uk-button uk-button-default" [class.uk-disabled]="orcidStatus == errorCodes.LOADING" (click)="loadMore()" >Load more</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-margin-top uk-text-small uk-text-italic">
|
||||
<img src="assets/common-assets/common/ORCIDiD_icon16x16.png" alt="orcid"
|
||||
loading="lazy" style="width:16px; height:16px; margin-right: 3px;">
|
||||
<a [href]="properties.orcidURL + author.id" target="_blank" class="uk-link-text">
|
||||
|
||||
{{properties.orcidURL + author.id}}</a></div>
|
||||
<!-- <div>Research outcomes:{{author.resultsCount}}</div>-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="orcidStatus == errorCodes.LOADING" class="uk-height-medium uk-position-relative" role="alert">
|
||||
<loading class="uk-position-center"></loading>
|
||||
</div>
|
||||
<div class="uk-flex uk-flex-center uk-margin-medium-top">
|
||||
<button *ngIf="authorsToShow.length > 0 && orcidStatus != errorCodes.LOADING && (authorsToShow.length > page*size || authors.length > authorsRendered)" class="uk-button uk-button-default" [class.uk-disabled]="orcidStatus == errorCodes.LOADING" (click)="loadMore()" >Load more</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,38 +0,0 @@
|
|||
<div class="uk-banner dark uk-padding-remove-vertical uk-light">
|
||||
<div class="uk-container uk-container-large uk-section uk-section-small uk-padding-remove-bottom">
|
||||
<div>
|
||||
<breadcrumbs [breadcrumbs]="breadcrumbs"></breadcrumbs>
|
||||
</div>
|
||||
<div class="uk-container uk-container-small uk-text-center" uk-scrollspy-class>
|
||||
<h1 class="uk-h2 uk-margin-medium-top">Engage, learn, and contribute to the Open Science community.</h1>
|
||||
<div class="uk-text-large uk-margin-medium-bottom">Explore essential resources and activities that enhance your interaction with the National Open Access Monitor of Ireland.</div>
|
||||
</div>
|
||||
<div class="graphics uk-flex uk-flex-middle uk-flex-center uk-margin-top">
|
||||
<img class="graphic graphic1 uk-position-relative" src="assets/irish-assets/resources/resources-pink-blue.png" loading="lazy">
|
||||
<img class="graphic graphic2 uk-position-relative" src="assets/irish-assets/resources/resources-green.png" loading="lazy">
|
||||
<img class="graphic graphic3 uk-position-relative" src="assets/irish-assets/resources/resources-dark-blue.jpg" loading="lazy">
|
||||
<img class="graphic graphic4 uk-position-relative" src="assets/irish-assets/resources/resources-orange.jpg" loading="lazy">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ng-container *ngIf="divContents">
|
||||
<helper [texts]="divContents['events']"></helper>
|
||||
</ng-container>
|
||||
|
||||
<div class="uk-flex uk-child-width-1-1 uk-child-width-1-2@m uk-margin-large-top">
|
||||
<div class="uk-section">
|
||||
<div class="uk-width-1-1 uk-width-1-2@m uk-margin-auto" [ngClass]="isMobile ? 'uk-container' : ''">
|
||||
<div class="uk-text-large uk-text-primary">Contact us</div>
|
||||
<h2 class="uk-h3 uk-margin-remove">Stay in the loop</h2>
|
||||
<div class="uk-margin-top">
|
||||
If you wish to stay updated on our engagement and training events, please contact us. We’ll ensure you’re informed about upcoming opportunities to connect and learn.
|
||||
</div>
|
||||
<a class="uk-button uk-button-primary uk-margin-medium-top" routerLink="/contact-us">contact us</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-visible@m uk-banner uk-overflow-hidden uk-position-relative">
|
||||
<img class="uk-position-bottom-right" style="margin: -10px"
|
||||
src="assets/irish-assets/resources/dashboard-half-height.png" alt="National Monitor Dashboard" loading="lazy">
|
||||
</div>
|
||||
</div>
|
|
@ -1,52 +1,26 @@
|
|||
@import (reference) "~src/assets/extend-theme/less/_import-variables.less";
|
||||
@import (reference) "~src/assets/openaire-theme/less/mixin.less";
|
||||
|
||||
.graphics {
|
||||
grid-gap: 40px;
|
||||
@training-color: #A8B9FF;
|
||||
@webinar-color: #E0C44F;
|
||||
|
||||
.graphic {
|
||||
max-width: 213px;
|
||||
|
||||
&.graphic1 {
|
||||
transform: translateY(60%);
|
||||
}
|
||||
|
||||
&.graphic2 {
|
||||
transform: translateY(45%);
|
||||
}
|
||||
|
||||
&.graphic3 {
|
||||
transform: translateY(25%);
|
||||
}
|
||||
|
||||
&.graphic4 {
|
||||
transform: translateY(45%);
|
||||
}
|
||||
}
|
||||
.uk-label.training {
|
||||
background-color: @training-color;
|
||||
border-color: @training-color;
|
||||
}
|
||||
|
||||
@media (max-width: @breakpoint-small-max) {
|
||||
.graphics {
|
||||
grid-gap: 20px;
|
||||
|
||||
.graphic {
|
||||
max-width: 80px;
|
||||
|
||||
&.graphic1 {
|
||||
transform: translateY(60%);
|
||||
}
|
||||
|
||||
&.graphic2 {
|
||||
transform: translateY(45%);
|
||||
}
|
||||
|
||||
&.graphic3 {
|
||||
transform: translateY(25%);
|
||||
}
|
||||
|
||||
&.graphic4 {
|
||||
transform: translateY(45%);
|
||||
}
|
||||
}
|
||||
}
|
||||
.uk-label.webinar {
|
||||
background-color: @webinar-color;
|
||||
border-color: @webinar-color;
|
||||
}
|
||||
|
||||
.uk-label.funder {
|
||||
background-color: @funder-color;
|
||||
border-color: @funder-color;
|
||||
color: @global-inverse-color;
|
||||
}
|
||||
|
||||
.uk-label.organization {
|
||||
background-color: @organization-color;
|
||||
border-color: @organization-color;
|
||||
color: @global-inverse-color;
|
||||
}
|
||||
|
|
|
@ -1,50 +1,73 @@
|
|||
import {ChangeDetectorRef, Component, OnInit} from "@angular/core";
|
||||
import {Component, OnInit} from "@angular/core";
|
||||
import {BaseComponent} from "../../openaireLibrary/sharedComponents/base/base.component";
|
||||
import {PiwikService} from "../../openaireLibrary/utils/piwik/piwik.service";
|
||||
import {ActivatedRoute, Router} from "@angular/router";
|
||||
import {Meta, Title} from "@angular/platform-browser";
|
||||
import {SEOService} from "../../openaireLibrary/sharedComponents/SEO/SEO.service";
|
||||
import {Breadcrumb} from "../../openaireLibrary/utils/breadcrumbs/breadcrumbs.component";
|
||||
import {LayoutService} from "../../openaireLibrary/dashboard/sharedComponents/sidebar/layout.service";
|
||||
import {HelperService} from "../../openaireLibrary/utils/helper/helper.service";
|
||||
|
||||
@Component({
|
||||
selector: 'engagement',
|
||||
templateUrl: 'engagement.component.html',
|
||||
template: `
|
||||
<div class="uk-banner uk-section uk-section-large">
|
||||
<div class="uk-container uk-container-small">
|
||||
<div class="uk-text-center">
|
||||
<h1 class="uk-h2">Engage, learn, and contribute to the Open Science community.</h1>
|
||||
<div class="uk-text-large">Explore essential resources and activities that enhance your interaction with the National Open Access Monitor of Ireland.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-section uk-container uk-container-small">
|
||||
<div class="uk-grid uk-child-width-1-3@m uk-child-width-1-1" uk-grid>
|
||||
<div>
|
||||
<div class="uk-card uk-card-default uk-padding-small">
|
||||
<span class="uk-label uk-label-small webinar uk-padding-xsmall">Webinar</span>
|
||||
<div class="uk-text-large uk-text-bold uk-margin-small-top">1st Stakeholder Webinar</div>
|
||||
<a href="https://zenodo.org/records/8370579" target="_blank" class="uk-button uk-button-text uk-margin-medium-top">Learn more</a>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="uk-card uk-card-default uk-padding-small">
|
||||
<span class="uk-label uk-label-small training uk-padding-xsmall">Training</span>
|
||||
<span class="uk-label uk-label-small funder uk-padding-xsmall uk-margin-xsmall-left">RFO</span>
|
||||
<div class="uk-text-large uk-text-bold uk-margin-small-top">RFO Training</div>
|
||||
<a href="https://zenodo.org/records/10202641" target="_blank" class="uk-button uk-button-text uk-margin-medium-top">Learn more</a>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="uk-card uk-card-default uk-padding-small">
|
||||
<span class="uk-label uk-label-small training uk-padding-xsmall">Training</span>
|
||||
<span class="uk-label uk-label-small organization uk-padding-xsmall uk-margin-xsmall-left">RPO</span>
|
||||
<div class="uk-text-large uk-text-bold uk-margin-small-top">RPO Training</div>
|
||||
<a href="https://zenodo.org/records/10143613" target="_blank" class="uk-button uk-button-text uk-margin-medium-top">Learn more</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-section uk-container uk-container-small uk-flex uk-flex-center">
|
||||
<div class="uk-width-1-2@l uk-text-center">
|
||||
<div class="uk-text-large uk-text-primary uk-margin-xsmall-bottom">Contact us</div>
|
||||
<h3 class="uk-margin-remove-top">Stay in the loop</h3>
|
||||
<div>If you wish to stay updated on our engagement and training events, please contact us. We’ll ensure you’re informed about upcoming opportunities to connect and learn.</div>
|
||||
<a routerLink="/contact-us" class="uk-button uk-button-primary uk-margin-medium-top">Contact us</a>
|
||||
</div>
|
||||
</div>
|
||||
`,
|
||||
styleUrls: ['engagement.component.less']
|
||||
})
|
||||
export class EngagementComponent extends BaseComponent implements OnInit {
|
||||
title = 'Engagement & Training';
|
||||
description = 'Engagement & Training';
|
||||
breadcrumbs: Breadcrumb[] = [{name: 'home', route: '/'}, {name: 'resources - engagement & training'}];
|
||||
divContents: any;
|
||||
|
||||
isMobile: boolean = false;
|
||||
|
||||
constructor(protected _route: ActivatedRoute,
|
||||
protected _piwikService: PiwikService,
|
||||
protected _meta: Meta,
|
||||
protected seoService: SEOService,
|
||||
protected _title: Title,
|
||||
protected _router: Router,
|
||||
private cdr: ChangeDetectorRef,
|
||||
private layoutService: LayoutService,
|
||||
private helper: HelperService) {
|
||||
protected _router: Router) {
|
||||
super();
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.setMetadata();
|
||||
this.layoutService.isMobile.subscribe(isMobile => {
|
||||
this.isMobile = isMobile;
|
||||
this.cdr.detectChanges();
|
||||
});
|
||||
this.getDivContents();
|
||||
}
|
||||
|
||||
private getDivContents() {
|
||||
this.subscriptions.push(this.helper.getDivHelpContents(this.properties, 'irish', '/engagement-training').subscribe(contents => {
|
||||
this.divContents = contents;
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,8 +2,6 @@ import {NgModule} from "@angular/core";
|
|||
import {CommonModule} from "@angular/common";
|
||||
import {EngagementComponent} from "./engagement.component";
|
||||
import {RouterModule} from "@angular/router";
|
||||
import {BreadcrumbsModule} from "../../openaireLibrary/utils/breadcrumbs/breadcrumbs.module";
|
||||
import {HelperModule} from "../../openaireLibrary/utils/helper/helper.module";
|
||||
|
||||
@NgModule({
|
||||
declarations: [EngagementComponent],
|
||||
|
@ -11,7 +9,7 @@ import {HelperModule} from "../../openaireLibrary/utils/helper/helper.module";
|
|||
{
|
||||
path: '', component: EngagementComponent
|
||||
}
|
||||
]), BreadcrumbsModule, HelperModule],
|
||||
])],
|
||||
exports: [EngagementComponent]
|
||||
})
|
||||
export class EngagementModule {
|
||||
|
|
|
@ -1,26 +1,27 @@
|
|||
<ng-template #about>
|
||||
<h1 [ngClass]="isMobile ? 'uk-heading-small' : 'uk-h2'">About</h1>
|
||||
<div class="about uk-margin-top uk-text-large">
|
||||
Welcome to the National Open Access Monitor, Ireland, <mark>a dynamic and innovative platform
|
||||
designed to chart and foster the transition of Ireland’s scholarly output to 100% Open Access.</mark>
|
||||
<div class="uk-margin-top">
|
||||
Welcome to the National Open Access Monitor, Ireland, a dynamic and innovative platform
|
||||
designed to chart and foster the transition of Ireland’s scholarly output to 100% Open Access.
|
||||
This project has been entrusted to <a target="_blank" href="https://www.openaire.eu/" class="custom-external">OpenAIRE</a>,
|
||||
following a contract awarded through a
|
||||
<a target="_blank" href="https://irl.eu-supply.com/ctm/Supplier/PublicPurchase/238957/0/0?returnUrl=ctm/Supplier/publictenders&b=ETENDERS_SIMPLE" class="custom-external">competitive tendering process</a>
|
||||
by the <a target="_blank" href="https://irel.ie/" class="custom-external">Irish Research eLibrary</a> (IReL) in collaboration with
|
||||
<a target="_blank" href="https://www.educationprocurementservice.ie/" class="custom-external">Education Procurement Services</a>.
|
||||
</div>
|
||||
<a routerLink="/national" class="uk-button uk-button-secondary uk-margin-medium-top">Take a look</a>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #pilot>
|
||||
This platform is currently in its <span class="uk-text-bold">pilot</span> phase.
|
||||
Over the next few months, we are dedicatedly working on enhancing data quality and expanding functionalities.
|
||||
Our goal is to deliver the final product by June 2024.
|
||||
This period is crucial for refining our services and ensuring that the platform meets the highest standards of excellence
|
||||
and user satisfaction, please <a routerLink="/contact-us">contact us</a> with any questions or comments.
|
||||
</ng-template>
|
||||
|
||||
<ng-template #mission>
|
||||
<div class="uk-text-large uk-width-2-5@m uk-width-1-1">
|
||||
<h4>Our Mission</h4>
|
||||
<div class="uk-margin-medium-top">
|
||||
At the heart of this platform is the mission to provide transparent, comprehensive insights into the state of Open Access in Ireland.
|
||||
It serves as a key instrument for analyzing trends, identifying challenges,
|
||||
and guiding policy development towards achieving an open, accessible, and sustainable research environment.
|
||||
|
@ -28,155 +29,176 @@
|
|||
</ng-template>
|
||||
|
||||
<ng-template #context>
|
||||
<div class="uk-light">
|
||||
<h2 [ngClass]="isMobile ? 'uk-heading-small' : 'uk-h2'">Context</h2>
|
||||
<div class="context uk-text-large uk-margin-medium-top">
|
||||
In 2022, the National Open Research Forum (NORF) awarded funding to six collaborative projects
|
||||
to implement priority actions in Ireland’s <a target="_blank" href="https://norf.ie/national-action-plan/" class="custom-external">National Action Plan for Open Research 2022-2030</a>.
|
||||
By building national capacity and infrastructure for open research, these projects support the visibility and impact
|
||||
of Irish research and help progress Ireland’s strategic goals for research and innovation under Impact 2030.
|
||||
Development of the National Open Access Monitor is one of the priority actions
|
||||
and the funding for management of the project was awarded to IReL.
|
||||
The tender requirements for the National Open Access Monitor and a definition for open access in this context were
|
||||
both defined following <a target="_blank" href="https://irel.ie/oamonitor-february2023survey-update/" class="custom-external">consultation</a> with national stakeholders.
|
||||
The impact of the project will be to enable both point-in-time and longitudinal monitoring
|
||||
of the open access status of Irish research publications as part of national implementation
|
||||
and monitoring of open research practices.
|
||||
</div>
|
||||
<h4>Context</h4>
|
||||
<div class="uk-margin-medium-top">
|
||||
In 2022, the National Open Research Forum (NORF) awarded funding to six collaborative projects
|
||||
to implement priority actions in Ireland’s <a target="_blank" href="https://norf.ie/national-action-plan/" class="custom-external">National Action Plan for Open Research 2022-2030</a>.
|
||||
By building national capacity and infrastructure for open research, these projects support the visibility and impact
|
||||
of Irish research and help progress Ireland’s strategic goals for research and innovation under Impact 2030.
|
||||
Development of the National Open Access Monitor is one of the priority actions
|
||||
and the funding for management of the project was awarded to IReL.
|
||||
The tender requirements for the National Open Access Monitor and a definition for open access in this context were
|
||||
both defined following <a target="_blank" href="https://irel.ie/oamonitor-february2023survey-update/" class="custom-external">consultation</a> with national stakeholders.
|
||||
The impact of the project will be to enable both point-in-time and longitudinal monitoring
|
||||
of the open access status of Irish research publications as part of national implementation
|
||||
and monitoring of open research practices.
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #norf>
|
||||
<h4 class="uk-h3">NORF</h4>
|
||||
<div class="uk-width-expand uk-text-large uk-margin-medium-bottom">
|
||||
<h4>About NORF</h4>
|
||||
<div class="uk-margin-medium-top">
|
||||
Ireland’s <a target="_blank" href="https://norf.ie/" class="custom-external">National Open Research Forum</a> (NORF) was established in 2017 to drive the Irish agenda for open research.
|
||||
NORF provides a space for communication, consultation and cooperation among key stakeholders
|
||||
in the research system regarding strategic issues and overarching policies and procedures in open research.
|
||||
NORF developed Ireland’s <a target="_blank" href="https://doi.org/10.7486/DRI.0287dj04d" class="custom-external">National Framework on the Transition to an Open Research Environment</a> (2019)
|
||||
and the <a target="_blank" href="https://norf.ie/national-action-plan/" class="custom-external">National Action Plan for Open Research 2022-2030</a>.
|
||||
</div>
|
||||
<div class="uk-flex uk-flex-right">
|
||||
<a target="_blank" href="https://norf.ie/" class="uk-link-reset uk-flex uk-flex-middle">
|
||||
<span class="uk-text-large uk-text-bolder">NORF</span>
|
||||
<button class="uk-icon-button uk-button-secondary uk-margin-left">
|
||||
<icon [name]="'north_east'" [flex]="true" [ratio]="1.5"></icon>
|
||||
</button>
|
||||
</a>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #irel>
|
||||
<h4 class="uk-h3">IReL</h4>
|
||||
<div class="uk-width-expand uk-text-large uk-margin-medium-bottom">
|
||||
<h4>About IReL</h4>
|
||||
<div class="uk-margin-medium-top">
|
||||
IReL is the e-resource licensing consortium for Irish publicly funded higher education institutions
|
||||
and the lead organisation for the Irish ORCID Consortium.
|
||||
Since 2004, the IReL service (hosted by Maynooth University) has expanded from providing access
|
||||
to quality peer-reviewed online research publications and index & abstracting services,
|
||||
to facilitating open access publishing agreements, and managing the Irish ORCID Consortium.
|
||||
</div>
|
||||
<div class="uk-flex uk-flex-right">
|
||||
<a target="_blank" href="" class="uk-link-reset uk-flex uk-flex-middle">
|
||||
<span class="uk-text-large uk-text-bolder">IReL</span>
|
||||
<button class="uk-icon-button uk-button-secondary uk-margin-left">
|
||||
<icon [name]="'north_east'" [flex]="true" [ratio]="1.5"></icon>
|
||||
</button>
|
||||
</a>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #openaire>
|
||||
<h4 class="uk-h3">OpenAIRE</h4>
|
||||
<div class="uk-grid uk-grid-divider uk-child-width-1-1 uk-child-width-1-2@m" uk-grid>
|
||||
<div class="uk-text-large">
|
||||
OpenAIRE AMKE is a non-profit organization established in 2018 to create a European-wide national policy
|
||||
and open scholarly communication infrastructure.
|
||||
OpenAIRE started as a series of European Commission projects in 2010 before incorporating
|
||||
and has built extensive experience in both technical infrastructure and working within the Open Science community.
|
||||
Its mission is to establish, maintain, and operate an open and sustainable scholarly communication infrastructure
|
||||
and provide the necessary services, resources, and network for supporting a common European open e-research and e-science environment.
|
||||
OpenAIRE modus operandi includes applying and contributing to international best practices
|
||||
to meet the needs of the research community and promote Open Science. In particular, OpenAIRE:
|
||||
</div>
|
||||
<div>
|
||||
<ul class="uk-list uk-list-bullet uk-list-secondary">
|
||||
<li>Adheres to and promotes key standards like the FAIR principles.</li>
|
||||
<li>Provides the <a target="_blank" href="https://guidelines.openaire.eu/en/latest/" class="custom-external">OpenAIRE Guidelines</a>
|
||||
for literature repositories, data archives, and Current Research Information Systems (CRIS) managers,
|
||||
which (a) adapt global standards and schemas from RDA, COUNTER, COAR, DataCite, etc.,
|
||||
and (b) are adopted by organisations around the world.</li>
|
||||
<li>As a key partner in delivering the EOSC CORE and the EOSC Interoperability Framework,
|
||||
OpenAIRE ensures interoperability with the European Open Science Cloud (EOSC).</li>
|
||||
<li>Supports Open Access policies and advocacy.</li>
|
||||
<li>Provides capacity building and training for the Open Science community.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-text-large">
|
||||
<h4>About OpenAIRE</h4>
|
||||
<div class="uk-margin-medium-top">
|
||||
OpenAIRE AMKE is a non-profit organization established in 2018 to create a European-wide national policy
|
||||
and open scholarly communication infrastructure.
|
||||
OpenAIRE started as a series of European Commission projects in 2010 before incorporating
|
||||
and has built extensive experience in both technical infrastructure and working within the Open Science community.
|
||||
Its mission is to establish, maintain, and operate an open and sustainable scholarly communication infrastructure
|
||||
and provide the necessary services, resources, and network for supporting a common European open e-research and e-science environment.
|
||||
OpenAIRE modus operandi includes applying and contributing to international best practices
|
||||
to meet the needs of the research community and promote Open Science. In particular, OpenAIRE
|
||||
|
||||
<ul class="uk-list uk-list-bullet uk-list-primary uk-margin-top">
|
||||
<li>Adheres to and promotes key standards like the FAIR principles.</li>
|
||||
<li>Provides the <a target="_blank" href="https://guidelines.openaire.eu/en/latest/" class="custom-external">OpenAIRE Guidelines</a>
|
||||
for literature repositories, data archives, and Current Research Information Systems (CRIS) managers,
|
||||
which (a) adapt global standards and schemas from RDA, COUNTER, COAR, DataCite, etc.,
|
||||
and (b) are adopted by organisations around the world.</li>
|
||||
<li>As a key partner in delivering the EOSC CORE and the EOSC Interoperability Framework,
|
||||
OpenAIRE ensures interoperability with the European Open Science Cloud (EOSC).</li>
|
||||
<li>Supports Open Access policies and advocacy.</li>
|
||||
<li>Provides capacity building and training for the Open Science community.</li>
|
||||
</ul>
|
||||
|
||||
<div class="uk-margin-medium-top">
|
||||
As Ireland moves towards an open research environment, this platform signifies a commitment to transparency,
|
||||
access, and the advancement of scientific communication.
|
||||
It is a crucial step in supporting Ireland's alignment with broader European and global movements towards accessible and open scientific research.
|
||||
</div>
|
||||
|
||||
<div class="uk-margin-top">
|
||||
Discover more about this initiative in our Zenodo community, including related reports, presentations, and datasets.
|
||||
</div>
|
||||
<div class="uk-margin-top">
|
||||
Thank you for joining us!
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-flex uk-flex-right uk-margin-medium-top">
|
||||
<a target="_blank" href="https://www.openaire.eu" class="uk-link-reset uk-flex uk-flex-middle">
|
||||
<span class="uk-text-large uk-text-bolder">OpenAIRE</span>
|
||||
<button class="uk-icon-button uk-button-secondary uk-margin-left">
|
||||
<icon [name]="'north_east'" [flex]="true" [ratio]="1.5"></icon>
|
||||
</button>
|
||||
</a>
|
||||
|
||||
<div class="uk-margin-top">Thank you for joining us!</div>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<div class="uk-container uk-container-large uk-section uk-section-small hero">
|
||||
<div>
|
||||
<breadcrumbs [breadcrumbs]="breadcrumbs"></breadcrumbs>
|
||||
<div *ngIf="!isMobile" class="uk-visible@m">
|
||||
<div class="uk-banner">
|
||||
<div class="uk-container uk-container-large">
|
||||
<div class="uk-margin-medium-top uk-margin-medium-bottom uk-margin-remove-left uk-grid uk-grid-large uk-child-width-1-2@m uk-width-1-1"
|
||||
uk-grid uk-scrollspy-class>
|
||||
<div class="uk-padding-remove-horizontal">
|
||||
<ng-container *ngTemplateOutlet="about"></ng-container>
|
||||
</div>
|
||||
<div>
|
||||
<div class="uk-card uk-card-body uk-card-default pilot">
|
||||
<ng-container *ngTemplateOutlet="pilot"></ng-container>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-flex uk-flex-wrap uk-flex-middle uk-child-width-1-2@m uk-width-1-1 uk-margin-medium-top uk-margin-large-bottom" uk-scrollspy-class>
|
||||
<div uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-fade; delay: 250">
|
||||
<div class="uk-section uk-container uk-container-large" uk-scrollspy-class>
|
||||
<div id="parentContainer" class="uk-grid uk-grid-large" uk-grid>
|
||||
<div class="uk-width-medium uk-margin-top">
|
||||
<div class="uk-sticky" uk-sticky="end: !#parentContainer; offset: 100;">
|
||||
<slider-tabs type="scrollable" position="left">
|
||||
<slider-tab tabId="mission" tabTitle="Our Mission"></slider-tab>
|
||||
<slider-tab tabId="context" tabTitle="Context"></slider-tab>
|
||||
<slider-tab tabId="norf" tabTitle="About NORF"></slider-tab>
|
||||
<slider-tab tabId="irel" tabTitle="About IReL"></slider-tab>
|
||||
<slider-tab tabId="openaire" tabTitle="About OpenAIRE"></slider-tab>
|
||||
</slider-tabs>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-width-expand uk-margin-top">
|
||||
<div id="mission" class="uk-margin-large-bottom">
|
||||
<ng-container *ngTemplateOutlet="mission"></ng-container>
|
||||
</div>
|
||||
<div id="context" class="uk-margin-large-bottom">
|
||||
<ng-container *ngTemplateOutlet="context"></ng-container>
|
||||
</div>
|
||||
<div id="norf" class="uk-margin-large-bottom">
|
||||
<ng-container *ngTemplateOutlet="norf"></ng-container>
|
||||
</div>
|
||||
<div id="irel" class="uk-margin-large-bottom">
|
||||
<ng-container *ngTemplateOutlet="irel"></ng-container>
|
||||
</div>
|
||||
<div id="openaire" class="uk-margin-large-bottom">
|
||||
<ng-container *ngTemplateOutlet="openaire"></ng-container>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="isMobile || isServer" class="uk-hidden@m">
|
||||
<div class="uk-banner">
|
||||
<div class="uk-container uk-container-large">
|
||||
<div class="uk-margin-medium-top uk-margin-medium-bottom uk-text-center" uk-scrollspy-class>
|
||||
<div class="uk-padding-remove-horizontal">
|
||||
<ng-container *ngTemplateOutlet="about"></ng-container>
|
||||
</div>
|
||||
<div>
|
||||
<div class="uk-card uk-card-body uk-card-default pilot uk-margin-medium-top">
|
||||
<ng-container *ngTemplateOutlet="pilot"></ng-container>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-fade; delay: 250">
|
||||
<div>
|
||||
<ng-container *ngTemplateOutlet="about"></ng-container>
|
||||
<div class="uk-sticky uk-background-default uk-padding-small uk-padding-remove-right" uk-sticky>
|
||||
<slider-tabs type="scrollable" position="horizontal">
|
||||
<slider-tab tabId="mission_m" tabTitle="Our Mission"></slider-tab>
|
||||
<slider-tab tabId="context_m" tabTitle="Context"></slider-tab>
|
||||
<slider-tab tabId="norf_m" tabTitle="About NORF"></slider-tab>
|
||||
<slider-tab tabId="irel_m" tabTitle="About IReL"></slider-tab>
|
||||
<slider-tab tabId="openaire_m" tabTitle="About OpenAIRE"></slider-tab>
|
||||
</slider-tabs>
|
||||
</div>
|
||||
</div>
|
||||
<div [ngClass]="isMobile ? 'uk-margin-medium-top' : ''">
|
||||
<div class="uk-card uk-card-body uk-card-default uk-background-secondary uk-light uk-margin-auto pilot uk-text-large">
|
||||
<ng-container *ngTemplateOutlet="pilot"></ng-container>
|
||||
<div class="uk-container uk-container-large uk-section uk-section-small uk-text-break">
|
||||
<div id="mission_m" class="uk-margin-xlarge-bottom">
|
||||
<ng-container *ngTemplateOutlet="mission"></ng-container>
|
||||
</div>
|
||||
<div id="context_m" class="uk-margin-xlarge-bottom">
|
||||
<ng-container *ngTemplateOutlet="context"></ng-container>
|
||||
</div>
|
||||
<div id="norf_m" class="uk-margin-xlarge-bottom">
|
||||
<ng-container *ngTemplateOutlet="norf"></ng-container>
|
||||
</div>
|
||||
<div id="irel_m" class="uk-margin-xlarge-bottom">
|
||||
<ng-container *ngTemplateOutlet="irel"></ng-container>
|
||||
</div>
|
||||
<div id="openaire_m" class="uk-margin-xlarge-bottom">
|
||||
<ng-container *ngTemplateOutlet="openaire"></ng-container>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="logos uk-flex uk-flex-middle uk-flex-center">
|
||||
<img src="assets/norf.jpg" alt="NORF" class="uk-blend-multiply">
|
||||
<img src="assets/IReL logo.png" alt="IRel" class="uk-blend-multiply">
|
||||
<img src="assets/common-assets/common/Logo_Horizontal.png" alt="OpenAIRE" class="uk-blend-multiply">
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-container uk-container-large uk-section">
|
||||
<div class="uk-flex uk-flex-center">
|
||||
<ng-container *ngTemplateOutlet="mission"></ng-container>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-section uk-background-secondary dark">
|
||||
<div class="uk-container uk-container-large">
|
||||
<ng-container *ngTemplateOutlet="context"></ng-container>
|
||||
<hr class="uk-margin-large">
|
||||
<div class="uk-grid uk-child-width-1-1 uk-child-width-1-2@m uk-margin-medium-bottom" uk-grid uk-height-match="target: .uk-card;">
|
||||
<div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-flex uk-flex-column card-bg norf">
|
||||
<ng-container *ngTemplateOutlet="norf"></ng-container>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-flex uk-flex-column card-bg irel">
|
||||
<ng-container *ngTemplateOutlet="irel"></ng-container>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-width-1-1 uk-card uk-card-default uk-card-body card-bg openaire">
|
||||
<ng-container *ngTemplateOutlet="openaire"></ng-container>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -1,60 +1,12 @@
|
|||
@import (reference) "~src/assets/extend-theme/less/_import-variables";
|
||||
@import (reference) "~src/assets/openaire-theme/less/color.less";
|
||||
|
||||
.hero {
|
||||
background-image: url("~/src/assets/irish-assets/resources/irish-bg-blur.png");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
.about {
|
||||
max-width: 500px;
|
||||
}
|
||||
.pilot {
|
||||
max-width: 400px;
|
||||
}
|
||||
.logos {
|
||||
grid-gap: 60px;
|
||||
img {
|
||||
height: 60px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.context {
|
||||
column-count: 2;
|
||||
column-gap: 200px;
|
||||
}
|
||||
.card-bg {
|
||||
background-repeat: no-repeat;
|
||||
background-position: bottom;
|
||||
&.norf {
|
||||
background-image: url("~/src/assets/irish-assets/resources/norf-logo-blur.png");
|
||||
}
|
||||
&.irel {
|
||||
background-image: url("~/src/assets/irish-assets/resources/irel-logo-blur.png");
|
||||
}
|
||||
&.openaire {
|
||||
background-image: url("~/src/assets/irish-assets/resources/openaire-logo-blur.png");
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: @breakpoint-small-max) {
|
||||
.hero {
|
||||
background-position: center bottom;
|
||||
.logos {
|
||||
grid-gap: 40px;
|
||||
img {
|
||||
height: 40px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.context {
|
||||
column-count: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.uk-width-medium {
|
||||
width: 350px;
|
||||
}
|
||||
|
||||
@pilot-card-border-color: @info-border-color;
|
||||
|
||||
.uk-card.pilot {
|
||||
border: 1px solid @pilot-card-border-color;
|
||||
box-shadow: none;
|
||||
}
|
|
@ -6,7 +6,6 @@ import {Meta, Title} from "@angular/platform-browser";
|
|||
import {SEOService} from "../../openaireLibrary/sharedComponents/SEO/SEO.service";
|
||||
import {LayoutService} from "../../openaireLibrary/dashboard/sharedComponents/sidebar/layout.service";
|
||||
import {HelperService} from "../../openaireLibrary/utils/helper/helper.service";
|
||||
import {Breadcrumb} from "../../openaireLibrary/utils/breadcrumbs/breadcrumbs.component";
|
||||
|
||||
@Component({
|
||||
selector: 'about',
|
||||
|
@ -16,7 +15,6 @@ import {Breadcrumb} from "../../openaireLibrary/utils/breadcrumbs/breadcrumbs.co
|
|||
export class AboutComponent extends BaseComponent {
|
||||
title = 'About';
|
||||
description = 'About';
|
||||
breadcrumbs: Breadcrumb[] = [{name: 'home', route: '/'}, {name: 'resources - about'}];
|
||||
tab: 'mission' | 'context' | 'norf' | 'irel' | 'openaire' = 'mission';
|
||||
contentSections: string[] = ['entities', 'inherited-and-inferred-attributes', 'constructed-attributes'];
|
||||
activeSection: string;
|
||||
|
|
|
@ -6,9 +6,6 @@ import {TheFiveMonitorsComponent} from "./the-five-monitors.component";
|
|||
import {UserActionsComponent} from "./user-actions.component";
|
||||
import {SliderTabsModule} from "../../openaireLibrary/sharedComponents/tabs/slider-tabs.module";
|
||||
import {YouWeComponent} from "./you-we.component";
|
||||
import {BreadcrumbsModule} from "../../openaireLibrary/utils/breadcrumbs/breadcrumbs.module";
|
||||
import {IconsModule} from "../../openaireLibrary/utils/icons/icons.module";
|
||||
import {HelperModule} from "../../openaireLibrary/utils/helper/helper.module";
|
||||
|
||||
@NgModule({
|
||||
declarations: [AboutComponent, TheFiveMonitorsComponent, UserActionsComponent, YouWeComponent],
|
||||
|
@ -34,7 +31,7 @@ import {HelperModule} from "../../openaireLibrary/utils/helper/helper.module";
|
|||
component: UserActionsComponent,
|
||||
canDeactivate: []
|
||||
}
|
||||
]), SliderTabsModule, BreadcrumbsModule, IconsModule, HelperModule],
|
||||
]), SliderTabsModule],
|
||||
exports: []
|
||||
})
|
||||
export class HowItWorksModule {
|
||||
|
|
|
@ -1,245 +1,523 @@
|
|||
<div class="uk-container uk-container-large uk-section uk-section-small hero">
|
||||
<div>
|
||||
<breadcrumbs [breadcrumbs]="breadcrumbs"></breadcrumbs>
|
||||
</div>
|
||||
<div class="uk-margin-medium-top" [class.uk-margin-medium-bottom]="!isMobile">
|
||||
<h1 class="uk-h2 uk-text-center uk-width-1-1 uk-width-1-2@m uk-margin-auto">
|
||||
Navigating Ireland’s Open Access
|
||||
</h1>
|
||||
<div class="uk-grid uk-flex-middle uk-margin-medium-top" uk-grid>
|
||||
<div class="uk-width-1-1 uk-width-1-4@m">
|
||||
<h2 class="uk-h3" [class.uk-text-center]="isMobile">
|
||||
5 Tailored Dashboards for Insights.
|
||||
</h2>
|
||||
</div>
|
||||
<div class="uk-width-1-1 uk-width-expand@m">
|
||||
<img src="assets/irish-assets/resources/dashboard-half-height.png">
|
||||
</div>
|
||||
<div class="uk-width-1-1 uk-width-1-4@m" [class.uk-text-center]="isMobile">
|
||||
<img src="assets/irish-assets/resources/five-monitors-badges.png">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-container uk-container-large uk-section">
|
||||
<div class="uk-grid uk-flex-middle uk-child-width-1-1 uk-child-width-1-2@m uk-margin-medium-top" uk-grid>
|
||||
<div>
|
||||
<img src="assets/irish-assets/resources/dashboard-detailed.png">
|
||||
</div>
|
||||
<div>
|
||||
<h2 class="uk-h3 uk-margin-remove">National Monitor.</h2>
|
||||
<h2 class="uk-h3 uk-margin-remove-top">The Broad Perspective.</h2>
|
||||
<div class="uk-margin-top uk-text-large">
|
||||
The National Monitor offers an expansive view, featuring cross-country benchmarking and in-depth breakdowns specific to Ireland. It is meant to serve as a key resource for policymakers, publishers, and anyone interested in a comprehensive national overview. Take a look at the National Monitor for detailed insights into the broader Open Access landscape.
|
||||
</div>
|
||||
<a routerLink="/national" class="uk-button uk-button-secondary uk-margin-medium-top">Take a look</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-section uk-background-secondary">
|
||||
<div class="uk-container uk-container-large">
|
||||
<div class="uk-width-1-1 uk-width-2-3@m uk-light">
|
||||
<h2 class="uk-h3">
|
||||
Dive Deeper with Tailored Dashboards
|
||||
</h2>
|
||||
<div class="uk-text-large">
|
||||
For RPOs, RFOs, Researchers, and Institutional Repositories, we invite you to explore your individual monitors. Each dashboard is equipped to give you a detailed understanding of your role and impact within Open Access research. Discover how each dashboard works in the sections below.
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-section uk-light">
|
||||
<div class="uk-sticky uk-visible@l" [attr.uk-sticky]="shouldSticky?'':null" [attr.offset]="offset">
|
||||
<div class="uk-container">
|
||||
<div class="uk-padding-small uk-padding-remove-horizontal uk-padding-remove-bottom">
|
||||
<slider-tabs tabsClass="uk-subnav uk-subnav-pill-alt" [border]="false" flexPosition="center" customClass="uk-flex uk-flex-center uk-text-large"
|
||||
[arrows]="false" containerClass="uk-padding-xsmall uk-blur-background uk-border-rounded-xlarge" connect="#tabs-content">
|
||||
<slider-tab *ngFor="let section of sections; let i = index" [tabTitle]="section"
|
||||
[tabId]="section"></slider-tab>
|
||||
</slider-tabs>
|
||||
<div class="uk-visible@m">
|
||||
<div class="uk-position-relative">
|
||||
<div class="uk-banner">
|
||||
<div class="uk-container uk-container-large uk-section uk-section-small">
|
||||
<div class="uk-flex uk-flex-column uk-flex-middle uk-flex-center uk-text-center uk-margin-bottom" uk-scrollspy-class>
|
||||
<h1 class="uk-h2 uk-margin-top" uk-scrollspy-class>The 5 Monitors</h1>
|
||||
<div class="uk-text-large uk-width-1-2@l uk-width-2-3" uk-scrollspy-class>
|
||||
5 distinct types of dashboards to navigate Ireland’s Open Access landscape. Each dashboard is tailored to provide unique insights and data relevant to different aspects of Open Science.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-sticky uk-hidden@l" [attr.uk-sticky]="shouldSticky?'':null">
|
||||
</div>
|
||||
<div class="uk-container uk-container-large uk-position-relative">
|
||||
<div class="uk-grid uk-flex-middle uk-flex-center uk-child-width-1-5 uk-text-center five-boxes" uk-grid>
|
||||
<div>
|
||||
<slider-tabs tabsClass="uk-subnav uk-subnav-pill-alt" [border]="false" flexPosition="center" customClass="uk-flex uk-flex-center uk-text-large"
|
||||
[arrows]="false" containerClass="uk-padding-xsmall uk-blur-background uk-border-rounded-xlarge" connect="#tabs-content">
|
||||
<div class="uk-card uk-border-rounded uk-card-body uk-flex uk-flex-center uk-flex-middle country uk-height-small">
|
||||
{{entities.country}} {{entities.stakeholder}}
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="uk-card uk-border-rounded uk-card-body uk-flex uk-flex-center uk-flex-middle organization uk-height-small">
|
||||
Research Performing Organisation ({{entities.organization}})
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="uk-card uk-border-rounded uk-card-body uk-flex uk-flex-center uk-flex-middle funder uk-height-small">
|
||||
Research Funding Organisation ({{entities.funder}})
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="uk-card uk-border-rounded uk-card-body uk-flex uk-flex-center uk-flex-middle researcher uk-height-small">
|
||||
Researcher
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="uk-card uk-border-rounded uk-card-body uk-flex uk-flex-center uk-flex-middle datasource uk-height-small">
|
||||
{{entities.datasource}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-container uk-container-large uk-section uk-section-small">
|
||||
<div class="uk-width-2-3@m">
|
||||
<h3 class="uk-margin-remove">National Monitor</h3>
|
||||
<h3 class="uk-margin-remove">The Broad Perspective</h3>
|
||||
<p class="uk-text-large">
|
||||
The National Monitor offers an expansive view, featuring cross-country benchmarking and in-depth breakdowns specific to Ireland. It is meant to serve as a key resource for policymakers, publishers, and anyone interested in a comprehensive national overview. Take a look at the National Monitor for detailed insights into the broader Open Access landscape.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-container uk-container-large uk-section uk-section-small">
|
||||
<div class="uk-width-2-3@m">
|
||||
<h3>Dive Deeper with Tailored Dashboards</h3>
|
||||
<p class="uk-text-large">
|
||||
For RPOs, RFOs, Researchers, and Institutional Repositories, we invite you to explore your individual monitors. Each dashboard is equipped to give you a detailed understanding of your role and impact within Open Access research. Discover how each dashboard works in the sections below.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-section uk-section-small">
|
||||
<div class="uk-sticky uk-blur-background uk-visible@l" [attr.uk-sticky]="shouldSticky?'':null" [attr.offset]="offset">
|
||||
<div class="uk-container">
|
||||
<div class="uk-padding uk-padding-remove-right uk-padding-remove-bottom">
|
||||
<slider-tabs flexPosition="center" customClass="uk-text-large" connect="#tabs-content">
|
||||
<slider-tab *ngFor="let section of sections; let i = index" [tabTitle]="section"
|
||||
[tabId]="section"></slider-tab>
|
||||
</slider-tabs>
|
||||
</div>
|
||||
</div>
|
||||
<ul id="tabs-content" class="uk-switcher uk-margin-large-bottom">
|
||||
<li>
|
||||
<you-we [type]="'Research Performing Organisation (RPO)'" id="rpo" [titleClass]="null" backgroundClass="uk-background-secondary">
|
||||
<ng-container you>
|
||||
<div class="uk-card uk-blur-background uk-box-shadow-large uk-position-relative uk-overflow-hidden uk-margin-top uk-margin-large-bottom">
|
||||
<div class="uk-card-body">
|
||||
<span class="uk-text-primary">Step 1a</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Assign a Primary Dashboard Manager</p>
|
||||
<p>Nominate a primary dashboard manager by <a routerLink="/contact-us" target="_blank">contacting us</a>. If you already have a primary dashboard manager or prefer not to be one, proceed to step 2. </p>
|
||||
</div>
|
||||
</div>
|
||||
<ul id="tabs-content" class="uk-switcher uk-margin-large-bottom">
|
||||
<li>
|
||||
<you-we [type]="'Research Performing Organisation (RPO)'" id="rpo">
|
||||
<ng-container you>
|
||||
<div class="uk-card uk-card-default uk-position-relative uk-overflow-hidden uk-margin-large-bottom">
|
||||
<div class="uk-card-body">
|
||||
<span class="uk-text-primary">Step 1a</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Assign a Primary Dashboard Manager</p>
|
||||
<p>Nominate a primary dashboard manager by filling out <a href="https://app.onlinesurveys.jisc.ac.uk/s/maynoothuniversity/national-open-access-monitor-dashboard-manager-application-form" target="_blank">an application form</a>. If you already have a primary dashboard manager or prefer not to be one, proceed to step 2. </p>
|
||||
</div>
|
||||
<div class="uk-card uk-blur-background uk-box-shadow-large uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<span class="uk-text-primary">Step 2a</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Find Your RPO's Monitor Dashboard</p>
|
||||
<p>Head to the <a routerLink="/rpo">RPO Monitor page</a> and look up your organization. If you can't find it or it appears under multiple names, please <a routerLink="/contact-us">contact us</a>. </p>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<span class="uk-text-primary">Step 2a</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Find Your RPO's Monitor Dashboard</p>
|
||||
<p>Head to the <a routerLink="/rpo">RPO Monitor page</a> and look up your organization. If you can't find it or it appears under multiple names, please <a routerLink="/contact-us">contact us</a>. </p>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<span class="uk-text-primary">Step 3a</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Validate and approve the results. </p>
|
||||
<p>You examine your dashboard and the showcased information to ensure you are satisfied with what you see.</p>
|
||||
</div>
|
||||
</ng-container>
|
||||
<ng-container we>
|
||||
<div class="uk-card uk-card-default uk-overflow-hidden uk-position-relative uk-margin-large-bottom">
|
||||
<div class="uk-card-body">
|
||||
<span class="uk-text-primary">Step 1b</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">
|
||||
Invite your RPOs Primary Manager via email
|
||||
</p>
|
||||
<p>Primary managers will have the ability to invite additional managers. They will also have access to our Sandbox environment for data previews and use of OpenOrgs, OpenAIRE's organization deduplication service.</p>
|
||||
</div>
|
||||
<div class="uk-card uk-blur-background uk-box-shadow-large uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<span class="uk-text-primary">Step 3a</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Validate and approve the results. </p>
|
||||
<p>You examine your dashboard and the showcased information to ensure you are satisfied with what you see.</p>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<span class="uk-text-primary">Step 2b</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Troubleshoot your Monitor</p>
|
||||
<p>We built your profile if it is missing and help you deduplicate your organization’s name via the OpenORgs service.</p>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<span class="uk-text-primary">Step 3b</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Interact with you Through 1-on-1 expert consultations</p>
|
||||
<p>to understand any gaps and deviations within the dashboard to verify the data integrity</p>
|
||||
</div>
|
||||
</ng-container>
|
||||
</you-we>
|
||||
</li>
|
||||
<li>
|
||||
<you-we [type]="'Research Funding Organisation (RFO)'" id="rfo">
|
||||
<ng-container you>
|
||||
<div class="uk-card uk-card-default uk-position-relative uk-overflow-hidden uk-margin-large-bottom">
|
||||
<div class="uk-card-body">
|
||||
<span class="uk-text-primary">Step 1a</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Assign a Primary Dashboard Manager</p>
|
||||
<p>Nominate a primary dashboard manager by completing <a href="https://app.onlinesurveys.jisc.ac.uk/s/maynoothuniversity/national-open-access-monitor-dashboard-manager-application-form" target="_blank">our application form</a>. If you already have a primary dashboard manager or prefer not to be one, proceed to step 2.</p>
|
||||
</div>
|
||||
</ng-container>
|
||||
<ng-container we>
|
||||
<div class="uk-card uk-blur-background uk-box-shadow-large uk-overflow-hidden uk-position-relative uk-margin-top uk-margin-large-bottom">
|
||||
<div class="uk-card-body">
|
||||
<span class="uk-text-primary">Step 1b</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">
|
||||
Invite your RPOs Primary Manager via email
|
||||
</p>
|
||||
<p>Primary managers will have the ability to invite additional managers. They will also have access to our Sandbox environment for data previews and use of OpenOrgs, OpenAIRE's organization deduplication service.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<span class="uk-text-primary">Step 2a</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Find Your RFO's Monitor Dashboard</p>
|
||||
<p>Head to the <a routerLink="/rfo">RFO Monitor page</a> and look up your organization. If you can't find it or it appears under multiple names, please <a routerLink="/contact-us">contact us</a>.</p>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<span class="uk-text-primary">Step 3a</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Discover Your Monitor and consider joining OpenAIRE (Optional)</p>
|
||||
<p>Explore your personalized dashboard at your leisure. You have the option to join OpenAIRE, allowing us to develop a specialized text mining algorithm to enrich your profile. This marks the final step if you choose not to join OpenAIRE.</p>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-position-relative uk-overflow-hidden uk-margin-large-bottom">
|
||||
<div class="uk-card-body uk-margin-medium-bottom">
|
||||
<span class="uk-text-primary">Step 4a</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Join OpenAIRE - You provide Information about your funded projects and join OpenAIRE.</p>
|
||||
<p>All information is exchanged under confidential agreements and we only make public what you agree on.
|
||||
</p>
|
||||
</div>
|
||||
<div class="uk-card uk-blur-background uk-box-shadow-large uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<span class="uk-text-primary">Step 2b</span>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative">
|
||||
<span class="uk-text-primary">Step 5a</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">validate the results and approve for them to be shown on your Monitor dashboard.</p>
|
||||
<p>Examine your dashboard in the Sandbox environment and the showcased information to ensure you are satisfied with what you see.</p>
|
||||
</div>
|
||||
</ng-container>
|
||||
<ng-container we>
|
||||
<div class="uk-card uk-card-default uk-position-relative uk-overflow-hidden uk-margin-large-bottom">
|
||||
<div class="uk-card-body">
|
||||
<span class="uk-text-primary">Step 1b</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Invite your RFOs Primary Manager via email</p>
|
||||
<p>Primary managers will have the ability to invite additional managers. They will also have access to our Sandbox environment for data previews and curation.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<span class="uk-text-primary">Step 2b</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Troubleshoot your Monitor</p>
|
||||
<p>We built your profile if it is missing and help you with any additional issues</p>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<span class="uk-text-primary">Step 3b</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Interact with you Through 1-on-1 expert consultations</p>
|
||||
<p>to understand any gaps and deviations within the dashboard to verify the data integrity</p>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<span class="uk-text-primary">Step 4b</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Ingest your project metadata and mine the <a href="https://graph.openaire.eu" target="_blank">OpenAIRE Graph</a>.</p>
|
||||
<p>We infer links to research results: publications, datasets, software, etc, via dedicated text mining algorithms.</p>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative">
|
||||
<span class="uk-text-primary">Step 5b</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Refine until you are happy with the results.</p>
|
||||
</div>
|
||||
</ng-container>
|
||||
</you-we>
|
||||
</li>
|
||||
<li>
|
||||
<you-we [type]="'Researcher'" id="researcher">
|
||||
<ng-container you>
|
||||
<div class="uk-card uk-card-default uk-position-relative uk-overflow-hidden uk-margin-large-bottom">
|
||||
<div class="uk-card-body">
|
||||
<span class="uk-text-primary">Step 1a</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Access Your Profile with ORCID iD</p>
|
||||
<p>Log in using your ORCID iD to grant OpenAIRE access to your ORCID record. Then, visit the <a routerLink="/researcher">Researcher Monitors</a> to search for your ORCID iD. If it’s not listed, contact us. Note that only research products affiliated with an Irish RPO will be displayed in your profile. </p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<span class="uk-text-primary">Step 2a</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Claim Additional Records</p>
|
||||
<p>From your profile (click the circle with your initials at the top right), navigate to the 'My ORCID Links' page and allow OpenAIRE to enhance your ORCID record. Search for your research products and claim them. These will appear in your ORCID record following the next update of the OpenAIRE Graph.</p>
|
||||
</div>
|
||||
</ng-container>
|
||||
<ng-container we>
|
||||
<div class="uk-card uk-card-default uk-position-relative uk-overflow-hidden uk-margin-large-bottom">
|
||||
<div class="uk-card-body">
|
||||
<span class="uk-text-primary">Step 1b</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Troubleshoot your Monitor</p>
|
||||
<p>We built your profile if it is missing and help you deduplicate your organization’s name via the OpenORgs service.</p>
|
||||
<p>If your profile is missing, we are here to help build it. Remember, OpenAIRE syncs with ORCID, so research products not in ORCID or unaffiliated with an Irish organization will not appear in your record.</p>
|
||||
</div>
|
||||
<div class="uk-card uk-blur-background uk-box-shadow-large uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<span class="uk-text-primary">Step 3b</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Interact with you Through 1-on-1 expert consultations</p>
|
||||
<p>to understand any gaps and deviations within the dashboard to verify the data integrity</p>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<span class="uk-text-primary">Step 2b</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Support you in understanding any gaps or deviations within your dashboard and to provide assistance as needed.</p>
|
||||
</div>
|
||||
</ng-container>
|
||||
</you-we>
|
||||
</li>
|
||||
<li>
|
||||
<you-we [type]="'Institutional Repository'" id="repository">
|
||||
<ng-container you>
|
||||
<div class="uk-card uk-card-default uk-position-relative uk-overflow-hidden uk-margin-large-bottom">
|
||||
<div class="uk-card-body">
|
||||
<span class="uk-text-primary">Step 1a</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Find Your Repository’s Monitor Dashboard & Register to OpenAIRE PROVIDE</p>
|
||||
<p>Navigate to the <a routerLink="/repository">Repository Monitor page</a> and search for your repository. If it is not listed, this indicates that you need to register with OpenAIRE. You can complete this process by following <a href="http://Navigate%20to%20the%20Repository%20Monitor%20page%20and%20search%20for%20your%20repository.%20If%20it's%20not%20listed,%20this%20typically%20indicates%20that%20you%20need%20to%20register%20with%20OpenAIRE.%20You%20can%20complete%20this%20process%20here.%20If%20your%20repository%20already%20has%20a%20Monitor%20dashboard%20but%20hasn't%20been%20registered%20in%20OpenAIRE%20PROVIDE,%20please%20contact%20us%20for%20assistance." target="_blank">these</a> instructions. If your repository already has a Monitor dashboard but your have not been registered in OpenAIRE PROVIDE, please <a routerLink="/contact-us">contact us</a> for assistance.</p>
|
||||
</div>
|
||||
</ng-container>
|
||||
</you-we>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<span class="uk-text-primary">Step 2a</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Validate and approve the results.</p>
|
||||
<p>You examine your dashboard and the showcased information to ensure you are satisfied with what you see.</p>
|
||||
</div>
|
||||
</ng-container>
|
||||
<ng-container we>
|
||||
<div class="uk-card uk-card-default uk-position-relative uk-overflow-hidden uk-margin-large-bottom">
|
||||
<div class="uk-card-body">
|
||||
<span class="uk-text-primary">Step 1b</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Invite you as a Manager via email</p>
|
||||
<p>As a manager, you will receive access to the PROVIDE dashboard. OpenAIRE PROVIDE is a service designed for Institutional Repository Managers to register, validate, and enrich their records. It also offers insights into usage statistics, including views and downloads. This dashboard allows you to efficiently manage your records and comply with Open Access requirements.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<span class="uk-text-primary">Step 2b</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Interact with you through 1-on-1 expert consultations</p>
|
||||
<p>to understand any gaps and deviations within the dashboard to verify the data integrity</p>
|
||||
</div>
|
||||
</ng-container>
|
||||
</you-we>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="uk-hidden@m">
|
||||
<div class="uk-banner">
|
||||
<div class="uk-container uk-container-large">
|
||||
<div class="uk-text-center" uk-scrollspy-class>
|
||||
<h1 class="uk-margin-medium-top uk-margin-medium-bottom" uk-scrollspy-class>How it works<span class="uk-text-primary">.</span></h1>
|
||||
<div class="uk-text-large" uk-scrollspy-class>
|
||||
Join the OpenAIRE Monitor service and we will create for you a dashboard to track, understand and
|
||||
position your organization's research activities and their impact, discover and evaluate Open Science
|
||||
trends for your organization and make data-driven decisions. Here's how it works.
|
||||
</div>
|
||||
<div class="uk-margin-medium-top" uk-scrollspy-class>
|
||||
<a class="uk-button uk-button-primary uk-text-uppercase" routerLink="/get-started">Get Started</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-position-relative uk-height-medium" style="overflow-x: hidden; overflow-x: clip;">
|
||||
<img class="uk-width-large uk-position-absolute" src="assets/monitor-assets/about/hero.svg" loading="lazy"
|
||||
style="bottom: -70px; right: -80px;">
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-section uk-section-large uk-margin-medium-top">
|
||||
<div class="uk-sticky uk-blur-background" [attr.uk-sticky]="shouldSticky?'':null">
|
||||
<div class="uk-padding-small uk-padding-remove-right uk-padding-remove-bottom">
|
||||
<slider-tabs flexPosition="center" customClass="uk-text-large" connect="#tabs-content-mobile">
|
||||
<slider-tab *ngFor="let section of sections; let i = index" [tabTitle]="section"
|
||||
[tabId]="section"></slider-tab>
|
||||
</slider-tabs>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-container uk-container-large">
|
||||
<ul id="tabs-content-mobile" class="uk-switcher uk-margin-large-bottom">
|
||||
<li id="funder">
|
||||
<div class="uk-h1 uk-text-center uk-margin-xlarge-top uk-margin-xlarge-bottom">
|
||||
Are you a <span class="uk-text-primary">Funder?</span>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<div>
|
||||
<span class="uk-text-primary">Step 1a</span>
|
||||
<h5 class="uk-margin-xsmall-top">You provide Information about your funded projects and
|
||||
<a href="https://www.openaire.eu/funders-how-to-join-guide" target="_blank">join OpenAIRE</a>.</h5>
|
||||
<p>All information is exchanged under confidential agreements and we only make public what you agree
|
||||
on.</p>
|
||||
</div>
|
||||
<div class="uk-margin-large-top">
|
||||
<span class="uk-text-primary">Step 1b</span>
|
||||
<h5 class="uk-margin-xsmall-top">We ingest your project metadata and mine the <a
|
||||
href="https://graph.openaire.eu" target="_blank" class="text-graph">OpenAIRE Graph</a>.
|
||||
</h5>
|
||||
<p>We infer links to research results: publications, datasets, software, etc.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<div>
|
||||
<span class="uk-text-primary">Step 2a</span>
|
||||
<h5 class="uk-margin-xsmall-top">You validate the results and approve for them to be shown
|
||||
on the <a href="https://explore.openaire.eu" target="_blank">Explore</a> portal.</h5>
|
||||
<p>Examine your dashboard and the showcased information to ensure you are satisfied with what you
|
||||
see.</p>
|
||||
</div>
|
||||
<div class="uk-margin-large-top">
|
||||
<span class="uk-text-primary">Step 2b</span>
|
||||
<h5 class="uk-margin-xsmall-top">We present the results to you on our Beta portal.</h5>
|
||||
<p>We refine until you are happy with the results. We allocate the hardware resources needed to create
|
||||
your dashboard.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<div>
|
||||
<span class="uk-text-primary">Step 3a</span>
|
||||
<h5 class="uk-margin-xsmall-top">Through 1-on-1 expert consultations you interact with
|
||||
us</h5>
|
||||
<ul class="uk-list uk-list-disc">
|
||||
<li>to understand any gaps and deviations within the dashboard</li>
|
||||
<li>to verify the data integrity</li>
|
||||
<li>to discuss the addition of any new metrics and indicators that might interest you</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="uk-margin-large-top">
|
||||
<span class="uk-text-primary">Step 3b</span>
|
||||
<h5 class="uk-margin-xsmall-top">We produce well-documented visualisations of simple & more
|
||||
advanced composite indicators.</h5>
|
||||
<p>Aligned with the Open Science principles and following an evidence-based approach, and based on the
|
||||
funded research activities.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<div>
|
||||
<span class="uk-text-primary">Step 4a</span>
|
||||
<h5 class="uk-margin-xsmall-top">Customise your dashboard and make your own profile.</h5>
|
||||
<p>Select the <a href="https://monitor.openaire.eu/indicators/funder" target="_blank">metrics</a> of
|
||||
interest to you and the ones you want to publish, to keep private, or to share just with colleagues.
|
||||
</p>
|
||||
</div>
|
||||
<div class="uk-margin-large-top">
|
||||
<span class="uk-text-primary">Step 4b</span>
|
||||
<h5 class="uk-margin-xsmall-top">We refine until we are happy with the results.</h5>
|
||||
<p>We present your dashboard to you.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<div>
|
||||
<span class="uk-text-primary">Step 5a</span>
|
||||
<h5 class="uk-margin-xsmall-top">Select your team</h5>
|
||||
<p>And make them collaborators of the service.</p>
|
||||
</div>
|
||||
<div class="uk-margin-large-top">
|
||||
<span class="uk-text-primary">Step 5b</span>
|
||||
<h5 class="uk-margin-xsmall-top">Notify you about new metrics and indicators</h5>
|
||||
<p>as we keep enriching the Graph, which you may find useful and add to your profile</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<you-we [type]="'Research Funding Organisation (RFO)'" id="rfo" [titleClass]="null" backgroundClass="uk-background-secondary">
|
||||
<ng-container you>
|
||||
<div class="uk-card uk-blur-background uk-box-shadow-large uk-position-relative uk-overflow-hidden uk-margin-top uk-margin-large-bottom">
|
||||
<div class="uk-card-body">
|
||||
<span class="uk-text-primary">Step 1a</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Assign a Primary Dashboard Manager</p>
|
||||
<p>Nominate a primary dashboard manager by by <a routerLink="/contact-us" target="_blank">contacting us</a>. If you already have a primary dashboard manager or prefer not to be one, proceed to step 2.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-card uk-blur-background uk-box-shadow-large uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<span class="uk-text-primary">Step 2a</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Find Your RFO's Monitor Dashboard</p>
|
||||
<p>Head to the <a routerLink="/rfo">RFO Monitor page</a> and look up your organization. If you can't find it or it appears under multiple names, please <a routerLink="/contact-us">contact us</a>.</p>
|
||||
</div>
|
||||
<div class="uk-card uk-blur-background uk-box-shadow-large uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<span class="uk-text-primary">Step 3a</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Discover Your Monitor and consider joining OpenAIRE (Optional)</p>
|
||||
<p>Explore your personalized dashboard at your leisure. You have the option to join OpenAIRE, allowing us to develop a specialized text mining algorithm to enrich your profile. This marks the final step if you choose not to join OpenAIRE.</p>
|
||||
</div>
|
||||
<div class="uk-card uk-blur-background uk-box-shadow-large uk-position-relative uk-overflow-hidden uk-margin-large-bottom">
|
||||
<div class="uk-card-body uk-margin-medium-bottom">
|
||||
<span class="uk-text-primary">Step 4a</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Join OpenAIRE - You provide Information about your funded projects and join OpenAIRE.</p>
|
||||
<p>All information is exchanged under confidential agreements and we only make public what you agree on.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-card uk-blur-background uk-box-shadow-large uk-card-body uk-position-relative">
|
||||
<span class="uk-text-primary">Step 5a</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">validate the results and approve for them to be shown on your Monitor dashboard.</p>
|
||||
<p>Examine your dashboard in the Sandbox environment and the showcased information to ensure you are satisfied with what you see.</p>
|
||||
</div>
|
||||
</ng-container>
|
||||
<ng-container we>
|
||||
<div class="uk-card uk-blur-background uk-box-shadow-large uk-position-relative uk-overflow-hidden uk-margin-top uk-margin-large-bottom">
|
||||
<div class="uk-card-body">
|
||||
<span class="uk-text-primary">Step 1b</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Invite your RFOs Primary Manager via email</p>
|
||||
<p>Primary managers will have the ability to invite additional managers. They will also have access to our Sandbox environment for data previews and curation.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-card uk-blur-background uk-box-shadow-large uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<span class="uk-text-primary">Step 2b</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Troubleshoot your Monitor</p>
|
||||
<p>We built your profile if it is missing and help you with any additional issues</p>
|
||||
</div>
|
||||
<div class="uk-card uk-blur-background uk-box-shadow-large uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<span class="uk-text-primary">Step 3b</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Interact with you Through 1-on-1 expert consultations</p>
|
||||
<p>to understand any gaps and deviations within the dashboard to verify the data integrity</p>
|
||||
</div>
|
||||
<div class="uk-card uk-blur-background uk-box-shadow-large uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<span class="uk-text-primary">Step 4b</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Ingest your project metadata and mine the <a href="https://graph.openaire.eu" target="_blank">OpenAIRE Graph</a>.</p>
|
||||
<p>We infer links to research results: publications, datasets, software, etc, via dedicated text mining algorithms.</p>
|
||||
</div>
|
||||
<div class="uk-card uk-blur-background uk-box-shadow-large uk-card-body uk-position-relative">
|
||||
<span class="uk-text-primary">Step 5b</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Refine until you are happy with the results.</p>
|
||||
</div>
|
||||
</ng-container>
|
||||
</you-we>
|
||||
<li id="ri">
|
||||
<div class="uk-h1 uk-text-center uk-margin-xlarge-top uk-margin-xlarge-bottom">
|
||||
Are you a <span class="uk-text-primary">Research Initiative?</span>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<div>
|
||||
<span class="uk-text-primary">Step 1a</span>
|
||||
<h5 class="uk-margin-xsmall-top">You state your interest in having a research initiative
|
||||
dashboard.</h5>
|
||||
<p>All information is exchanged under confidential agreements and we only make public what you agree
|
||||
on.</p>
|
||||
</div>
|
||||
<div class="uk-margin-large-top">
|
||||
<span class="uk-text-primary">Step 1b</span>
|
||||
<h5 class="uk-margin-xsmall-top">We set up an administration dashboard that you can use
|
||||
to specify which research products of the <a href="https://graph.openaire.eu" target="_blank"
|
||||
class="text-graph">OpenAIRE Graph</a> are
|
||||
relevant for you.</h5>
|
||||
<p>If needed, we develop a customized full-text mining algorithm to identify your publications.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<div>
|
||||
<span class="uk-text-primary">Step 2a</span>
|
||||
<h5 class="uk-margin-xsmall-top">You configure the criteria to identify the research
|
||||
products that you want to be accounted for.</h5>
|
||||
<p>You use the administration dashboard we created for you. If this is not enough, you give us input for
|
||||
the implementation of a customised full-text mining algorithm.</p>
|
||||
</div>
|
||||
<div class="uk-margin-large-top">
|
||||
<span class="uk-text-primary">Step 2b</span>
|
||||
<h5 class="uk-margin-xsmall-top">We present the results to you on our Beta portal.</h5>
|
||||
<p>We refine until you are happy with the results. We allocate the hardware resources needed to create
|
||||
your dashboard.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<div>
|
||||
<span class="uk-text-primary">Step 3a</span>
|
||||
<h5 class="uk-margin-xsmall-top">Through 1-on-1 expert consultations you interact with
|
||||
us</h5>
|
||||
<ul class="uk-list uk-list-disc">
|
||||
<li>to understand any gaps and deviations within the dashboard</li>
|
||||
<li>to verify the data integrity</li>
|
||||
<li>to discuss the addition of any new metrics and indicators that might interest you</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="uk-margin-large-top">
|
||||
<span class="uk-text-primary">Step 3b</span>
|
||||
<h5 class="uk-margin-xsmall-top">We produce well-documented visualisations of simple & more
|
||||
advanced composite indicators.</h5>
|
||||
<p>Aligned with the Open Science principles and following an evidence-based approach, and based on the
|
||||
institution’s research activities.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<div>
|
||||
<span class="uk-text-primary">Step 4a</span>
|
||||
<h5 class="uk-margin-xsmall-top">Customise your dashboard and make your own profile.</h5>
|
||||
<p>Select the <a href="https://monitor.openaire.eu/indicators/ri" target="_blank">metrics</a> of
|
||||
interest to you and the ones you want to publish, to keep private, or to share just with colleagues.
|
||||
</p>
|
||||
</div>
|
||||
<div class="uk-margin-large-top">
|
||||
<span class="uk-text-primary">Step 4b</span>
|
||||
<h5 class="uk-margin-xsmall-top">We refine until we are happy with the results.</h5>
|
||||
<p>We present your dashboard to you.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<div>
|
||||
<span class="uk-text-primary">Step 5a</span>
|
||||
<h5 class="uk-margin-xsmall-top">Select your team</h5>
|
||||
<p>And make them collaborators of the service.</p>
|
||||
</div>
|
||||
<div class="uk-margin-large-top">
|
||||
<span class="uk-text-primary">Step 5b</span>
|
||||
<h5 class="uk-margin-xsmall-top">Notify you about new metrics and indicators</h5>
|
||||
<p>as we keep enriching the Graph, which you may find useful and add to your profile</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<you-we [type]="'Researcher'" id="researcher" [titleClass]="null" backgroundClass="uk-background-secondary">
|
||||
<ng-container you>
|
||||
<div class="uk-card uk-blur-background uk-box-shadow-large uk-position-relative uk-overflow-hidden uk-margin-top uk-margin-large-bottom">
|
||||
<div class="uk-card-body">
|
||||
<span class="uk-text-primary">Step 1a</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Access Your Profile with ORCID iD</p>
|
||||
<p>Log in using your ORCID iD to grant OpenAIRE access to your ORCID record. Then, visit the <a routerLink="/researcher">Researcher Monitors</a> to search for your ORCID iD. If it’s not listed, contact us. Note that only research products affiliated with an Irish RPO will be displayed in your profile. </p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-card uk-blur-background uk-box-shadow-large uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<span class="uk-text-primary">Step 2a</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Claim Additional Records</p>
|
||||
<p>From your profile (click the circle with your initials at the top right), navigate to the 'My ORCID Links' page and allow OpenAIRE to enhance your ORCID record. Search for your research products and claim them. These will appear in your ORCID record following the next update of the OpenAIRE Graph.</p>
|
||||
</div>
|
||||
</ng-container>
|
||||
<ng-container we>
|
||||
<div class="uk-card uk-blur-background uk-box-shadow-large uk-position-relative uk-overflow-hidden uk-margin-top uk-margin-large-bottom">
|
||||
<div class="uk-card-body">
|
||||
<span class="uk-text-primary">Step 1b</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Troubleshoot your Monitor</p>
|
||||
<p>If your profile is missing, we are here to help build it. Remember, OpenAIRE syncs with ORCID, so research products not in ORCID or unaffiliated with an Irish organization will not appear in your record.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-card uk-blur-background uk-box-shadow-large uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<span class="uk-text-primary">Step 2b</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Support you in understanding any gaps or deviations within your dashboard and to provide assistance as needed.</p>
|
||||
</div>
|
||||
</ng-container>
|
||||
</you-we>
|
||||
</li>
|
||||
<li>
|
||||
<you-we [type]="'Institutional Repository'" id="repository" [titleClass]="null" backgroundClass="uk-background-secondary">
|
||||
<ng-container you>
|
||||
<div class="uk-card uk-blur-background uk-box-shadow-large uk-position-relative uk-overflow-hidden uk-margin-top uk-margin-large-bottom">
|
||||
<div class="uk-card-body">
|
||||
<span class="uk-text-primary">Step 1a</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Find Your Repository’s Monitor Dashboard & Register to OpenAIRE PROVIDE</p>
|
||||
<p>Navigate to the <a routerLink="/repository">Repository Monitor page</a> and search for your repository. If it is not listed, this indicates that you need to register with OpenAIRE. You can complete this process by following <a href="http://Navigate%20to%20the%20Repository%20Monitor%20page%20and%20search%20for%20your%20repository.%20If%20it's%20not%20listed,%20this%20typically%20indicates%20that%20you%20need%20to%20register%20with%20OpenAIRE.%20You%20can%20complete%20this%20process%20here.%20If%20your%20repository%20already%20has%20a%20Monitor%20dashboard%20but%20hasn't%20been%20registered%20in%20OpenAIRE%20PROVIDE,%20please%20contact%20us%20for%20assistance." target="_blank">these</a> instructions. If your repository already has a Monitor dashboard but your have not been registered in OpenAIRE PROVIDE, please <a routerLink="/contact-us">contact us</a> for assistance.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-card uk-blur-background uk-box-shadow-large uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<span class="uk-text-primary">Step 2a</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Validate and approve the results.</p>
|
||||
<p>You examine your dashboard and the showcased information to ensure you are satisfied with what you see.</p>
|
||||
</div>
|
||||
</ng-container>
|
||||
<ng-container we>
|
||||
<div class="uk-card uk-blur-background uk-box-shadow-large uk-position-relative uk-overflow-hidden uk-margin-top uk-margin-large-bottom">
|
||||
<div class="uk-card-body">
|
||||
<span class="uk-text-primary">Step 1b</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Invite you as a Manager via email</p>
|
||||
<p>As a manager, you will receive access to the PROVIDE dashboard. OpenAIRE PROVIDE is a service designed for Institutional Repository Managers to register, validate, and enrich their records. It also offers insights into usage statistics, including views and downloads. This dashboard allows you to efficiently manage your records and comply with Open Access requirements.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-card uk-blur-background uk-box-shadow-large uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<span class="uk-text-primary">Step 2b</span>
|
||||
<p class="uk-text-large uk-margin-xsmall-top">Interact with you through 1-on-1 expert consultations</p>
|
||||
<p>to understand any gaps and deviations within the dashboard to verify the data integrity</p>
|
||||
</div>
|
||||
</ng-container>
|
||||
</you-we>
|
||||
<li id="organizations">
|
||||
<div class="uk-h1 uk-text-center uk-margin-xlarge-top uk-margin-xlarge-bottom">
|
||||
Are you a <span class="uk-text-primary">Research Institution?</span>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<div>
|
||||
<span class="uk-text-primary">Step 1a</span>
|
||||
<h5 class="uk-margin-xsmall-top">You state your interest in having an institutional
|
||||
dashboard for your institution.</h5>
|
||||
<p>All information is exchanged under confidential agreements and we only make public what you agree
|
||||
on.</p>
|
||||
</div>
|
||||
<div class="uk-margin-large-top">
|
||||
<span class="uk-text-primary">Step 1b</span>
|
||||
<h5 class="uk-margin-xsmall-top">Starting from the <a href="https://graph.openaire.eu"
|
||||
target="_blank" class="text-graph">OpenAIRE
|
||||
Research Graph</a> we check for existing data for your institution.</h5>
|
||||
<p>We infer links to research results: publications, datasets, software, etc.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<div>
|
||||
<span class="uk-text-primary">Step 2a</span>
|
||||
<h5 class="uk-margin-xsmall-top">You validate and approve the results.</h5>
|
||||
<p>You examine your dashboard and the showcased information to ensure you are satisfied with what you
|
||||
see.</p>
|
||||
</div>
|
||||
<div class="uk-margin-large-top">
|
||||
<span class="uk-text-primary">Step 2b</span>
|
||||
<h5 class="uk-margin-xsmall-top">We present the results to you on our Beta portal.</h5>
|
||||
<p>We refine until you are happy with the results. We allocate the hardware resources needed to create
|
||||
your dashboard.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<div>
|
||||
<span class="uk-text-primary">Step 3a</span>
|
||||
<h5 class="uk-margin-xsmall-top">Through 1-on-1 expert consultations you interact with
|
||||
us</h5>
|
||||
<ul class="uk-list uk-list-disc">
|
||||
<li>to understand any gaps and deviations within the dashboard</li>
|
||||
<li>to verify the data integrity</li>
|
||||
<li>to discuss the addition of any new metrics and indicators that might interest you</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="uk-margin-large-top">
|
||||
<span class="uk-text-primary">Step 3b</span>
|
||||
<h5 class="uk-margin-xsmall-top">We produce well-documented visualisations of simple & more
|
||||
advanced composite indicators.</h5>
|
||||
<p>Aligned with the Open Science principles and following an evidence-based approach, and based on the
|
||||
institution’s research activities.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<div>
|
||||
<span class="uk-text-primary">Step 4a</span>
|
||||
<h5 class="uk-margin-xsmall-top">Customise your dashboard and make your own profile.</h5>
|
||||
<p>Select the <a href="https://monitor.openaire.eu/indicators/organization" target="_blank">metrics</a> of
|
||||
interest to you and the ones you want to publish, to keep private, or to share just with colleagues.
|
||||
</p>
|
||||
</div>
|
||||
<div class="uk-margin-large-top">
|
||||
<span class="uk-text-primary">Step 4b</span>
|
||||
<h5 class="uk-margin-xsmall-top">We refine until we are happy with the results.</h5>
|
||||
<p>We present your dashboard to you.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-card uk-card-default uk-card-body uk-position-relative uk-margin-large-bottom">
|
||||
<div>
|
||||
<span class="uk-text-primary">Step 5a</span>
|
||||
<h5 class="uk-margin-xsmall-top">Select your team</h5>
|
||||
<p>And make them collaborators of the service.</p>
|
||||
</div>
|
||||
<div class="uk-margin-large-top">
|
||||
<span class="uk-text-primary">Step 5b</span>
|
||||
<h5 class="uk-margin-xsmall-top">Notify you about new metrics and indicators</h5>
|
||||
<p>as we keep enriching the Graph, which you may find useful and add to your profile</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
|
|
|
@ -1,17 +1,5 @@
|
|||
@import (reference) "~src/assets/extend-theme/less/_import-variables";
|
||||
|
||||
.hero {
|
||||
background-image: url("~/src/assets/irish-assets/home/logo-shadow.png");
|
||||
background-position: center -100%;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
@media (max-width: @breakpoint-small-max) {
|
||||
.hero {
|
||||
background-position: center bottom;
|
||||
}
|
||||
}
|
||||
|
||||
.custom-translate-bottom-left {
|
||||
transform: translate(-20%, 20%);
|
||||
}
|
||||
|
|
|
@ -4,8 +4,6 @@ import {PiwikService} from "src/app/openaireLibrary/utils/piwik/piwik.service";
|
|||
import {Meta, Title} from "@angular/platform-browser";
|
||||
import {SEOService} from "src/app/openaireLibrary/sharedComponents/SEO/SEO.service";
|
||||
import {StakeholderBaseComponent} from "../../openaireLibrary/monitor-admin/utils/stakeholder-base.component";
|
||||
import {Breadcrumb} from "../../openaireLibrary/utils/breadcrumbs/breadcrumbs.component";
|
||||
import {LayoutService} from "../../openaireLibrary/dashboard/sharedComponents/sidebar/layout.service";
|
||||
|
||||
@Component({
|
||||
selector: 'the-five-monitors',
|
||||
|
@ -15,40 +13,43 @@ import {LayoutService} from "../../openaireLibrary/dashboard/sharedComponents/si
|
|||
export class TheFiveMonitorsComponent extends StakeholderBaseComponent{
|
||||
title = 'The 5 Monitors';
|
||||
description = 'The 5 Monitors';
|
||||
breadcrumbs: Breadcrumb[] = [{name: 'home', route: '/'}, {name: 'resources - the 5 monitors'}];
|
||||
public sections: string[] = ['RPOs', 'RFOs', 'Researchers', 'Repositories'];
|
||||
public offset: number;
|
||||
public shouldSticky: boolean = true;
|
||||
|
||||
isMobile: boolean = false;
|
||||
|
||||
constructor(protected _route: ActivatedRoute,
|
||||
protected _piwikService: PiwikService,
|
||||
protected _meta: Meta,
|
||||
protected seoService: SEOService,
|
||||
protected _title: Title,
|
||||
protected _router: Router,
|
||||
private cdr: ChangeDetectorRef,
|
||||
private layoutService: LayoutService) {
|
||||
private cdr: ChangeDetectorRef) {
|
||||
super();
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.setMetadata();
|
||||
this.layoutService.isMobile.subscribe(isMobile => {
|
||||
this.isMobile = isMobile;
|
||||
this.cdr.detectChanges();
|
||||
});
|
||||
this.subscriptions.push(this.layoutService.isBottomIntersecting.subscribe(isBottomIntersecting => {
|
||||
this.shouldSticky = !isBottomIntersecting;
|
||||
this.cdr.detectChanges();
|
||||
}));
|
||||
}
|
||||
|
||||
ngAfterViewInit() {
|
||||
if (typeof document !== 'undefined') {
|
||||
this.offset = Number.parseInt(getComputedStyle(document.documentElement).getPropertyValue('--header-height'));
|
||||
this.cdr.detectChanges();
|
||||
this.observeBottom();
|
||||
}
|
||||
}
|
||||
|
||||
private observeBottom() {
|
||||
let bottom = document.getElementById('bottom');
|
||||
if (bottom) {
|
||||
let bottomObs = new IntersectionObserver(entries => {
|
||||
entries.forEach(entry => {
|
||||
this.shouldSticky = !entry.isIntersecting;
|
||||
this.cdr.detectChanges();
|
||||
})
|
||||
});
|
||||
this.subscriptions.push(bottomObs);
|
||||
bottomObs.observe(bottom);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,96 +1,58 @@
|
|||
<div *ngIf="!isMobile" class="uk-visible@m">
|
||||
<div class="uk-banner dark uk-padding-remove-vertical uk-light">
|
||||
<div class="uk-container uk-container-large uk-section uk-section-small">
|
||||
<div>
|
||||
<breadcrumbs [breadcrumbs]="breadcrumbs"></breadcrumbs>
|
||||
</div>
|
||||
<div class="uk-margin-medium-top uk-margin-medium-bottom" uk-scrollspy-class>
|
||||
<h1 class="uk-h2" uk-scrollspy-class>User Actions</h1>
|
||||
<div class="uk-text-large uk-width-1-2@l uk-width-2-3" uk-scrollspy-class>
|
||||
Once you are logged in (researchers should use their ORCID ID), you will be all set to access the
|
||||
following
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="uk-banner">
|
||||
<div class="uk-container uk-container-large uk-section uk-section-small">
|
||||
<div class="uk-flex uk-flex-column uk-flex-middle uk-flex-center uk-text-center" uk-scrollspy-class>
|
||||
<h1 class="uk-h2" uk-scrollspy-class>User Actions</h1>
|
||||
<div class="uk-text-large uk-width-1-2@l uk-width-2-3" uk-scrollspy-class>
|
||||
Once you are logged in (researchers should use their ORCID ID), you will be all set to access the following
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="divContents" uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-fade; delay: 250">
|
||||
<div class="uk-section uk-container uk-container-large" uk-scrollspy-class>
|
||||
<div id="parentContainer" class="uk-grid uk-grid-large" uk-grid>
|
||||
<div class="uk-width-medium uk-margin-top">
|
||||
<div class="uk-sticky" uk-sticky="end: !#parentContainer; offset: 100;">
|
||||
<slider-tabs type="scrollable" position="left" [scrollThreshold]="0.5">
|
||||
<slider-tab tabId="add-to-orcid" tabTitle="Add to ORCID"></slider-tab>
|
||||
<slider-tab tabId="linking" tabTitle="Linking"></slider-tab>
|
||||
<slider-tab tabId="upload-dois" tabTitle="Upload DOIs"></slider-tab>
|
||||
<slider-tab tabId="oai-pmh" tabTitle="OAI-PMH"></slider-tab>
|
||||
<slider-tab tabId="dashboard-managers" tabTitle="Dashboard Managers"></slider-tab>
|
||||
</slider-tabs>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-width-expand uk-margin-top">
|
||||
<div id="add-to-orcid" class="uk-width-xlarge uk-margin-large-bottom">
|
||||
<helper [texts]="divContents['add-to-orcid']"></helper>
|
||||
</div>
|
||||
<div id="linking" class="uk-width-xlarge uk-margin-large-bottom">
|
||||
<helper [texts]="divContents['linking']"></helper>
|
||||
</div>
|
||||
<div id="upload-dois" class="uk-width-xlarge uk-margin-large-bottom">
|
||||
<helper [texts]="divContents['upload-dois']"></helper>
|
||||
</div>
|
||||
<div id="oai-pmh" class="uk-width-xlarge uk-margin-large-bottom">
|
||||
<helper [texts]="divContents['oai-pmh']"></helper>
|
||||
</div>
|
||||
<div id="dashboard-managers" class="uk-width-xlarge uk-margin-large-bottom">
|
||||
<helper [texts]="divContents['dashboard-managers']"></helper>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="isMobile || isServer" class="uk-hidden@m">
|
||||
<div class="uk-banner dark uk-padding-remove-vertical uk-light">
|
||||
<div class="uk-container uk-container-large uk-section uk-section-small">
|
||||
<div>
|
||||
<breadcrumbs [breadcrumbs]="breadcrumbs"></breadcrumbs>
|
||||
</div>
|
||||
<div class="uk-text-center" uk-scrollspy-class>
|
||||
<h1 class="uk-heading-small uk-margin-medium-top uk-margin-bottom">User Actions</h1>
|
||||
<div uk-scrollspy-class>
|
||||
Once you are logged in (researchers should use their ORCID ID), you will be all set to access the
|
||||
following
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="divContents" uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-fade; delay: 250">
|
||||
<div>
|
||||
<div class="uk-sticky uk-background-default uk-padding-small uk-padding-remove-right" uk-sticky>
|
||||
<slider-tabs type="scrollable" position="horizontal">
|
||||
<slider-tab tabId="add-to-orcid" tabTitle="Add to ORCID"></slider-tab>
|
||||
<slider-tab tabId="linking" tabTitle="Linking"></slider-tab>
|
||||
<slider-tab tabId="upload-dois" tabTitle="Upload DOIs"></slider-tab>
|
||||
<slider-tab tabId="oai-pmh" tabTitle="OAI-PMH"></slider-tab>
|
||||
<slider-tab tabId="dashboard-managers" tabTitle="Dashboard Managers"></slider-tab>
|
||||
</slider-tabs>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-container uk-container-large uk-section uk-section-small uk-text-break">
|
||||
<div id="add-to-orcid" class="uk-margin-xlarge-bottom">
|
||||
<helper [texts]="divContents['add-to-orcid']"></helper>
|
||||
</div>
|
||||
<div id="linking" class="uk-margin-xlarge-bottom">
|
||||
<helper [texts]="divContents['linking']"></helper>
|
||||
</div>
|
||||
<div id="upload-dois" class="uk-margin-xlarge-bottom">
|
||||
<helper [texts]="divContents['upload-dois']"></helper>
|
||||
</div>
|
||||
<div id="oai-pmh" class="uk-width-xlarge uk-margin-large-bottom">
|
||||
<helper [texts]="divContents['oai-pmh']"></helper>
|
||||
</div>
|
||||
<div id="dashboard-managers" class="uk-margin-xlarge-bottom">
|
||||
<helper [texts]="divContents['dashboard-managers']"></helper>
|
||||
</div>
|
||||
</div>
|
||||
<div uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-fade; delay: 250">
|
||||
<div class="uk-section uk-container uk-container-large" uk-scrollspy-class>
|
||||
<div id="parentContainer" class="uk-grid uk-grid-large" uk-grid>
|
||||
<div class="uk-width-medium uk-margin-top">
|
||||
<div class="uk-sticky" uk-sticky="end: !#parentContainer; offset: 100;">
|
||||
<slider-tabs type="scrollable" position="left">
|
||||
<slider-tab tabId="adding" tabTitle="Add to ORCID"></slider-tab>
|
||||
<slider-tab tabId="linking" tabTitle="Linking"></slider-tab>
|
||||
<slider-tab tabId="upload" tabTitle="Upload DOIs"></slider-tab>
|
||||
</slider-tabs>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-width-expand uk-margin-top">
|
||||
<div id="adding" class="uk-width-xlarge uk-margin-large-bottom">
|
||||
<h3>Adding research products to your ORCID record via ~ My ORCID LINKS ~</h3>
|
||||
<p>Researchers who log in using their ORCID ID have the ability to claim additional research outputs as their own. Once claimed, this information synchronizes with their ORCID profile and will be reflected in both the ORCID system and this portal following the next update of the OpenAIRE Graph, which occurs approximately monthly. This integration ensures that researchers can see their claimed research outputs in both places, maintaining consistency and visibility of their work.</p>
|
||||
<p>To claim your research products in OpenAIRE and synchronize them with your ORCID profile, you will need to follow a few simple steps. Once logged in with your ORCID iD, navigate to the top right corner of any page and click on your initials. From there, select “My ORCiD links.” This action will prompt you to grant OpenAIRE permission to access (once) and update your ORCID works.</p>
|
||||
<p>After you have granted permission, you will see a list of all your works associated with your ORCID ID. You can then view, update, or remove these works from both your ORCID record and the National Open Access Monitor, Ireland. To expand your record, use the “Discover research products related to you” link, located at the top right of the page. This feature allows you to use the search function to find your Irish publications and other research products. Once you find them, you can easily add them to your ORCID record by clicking on “link”.</p>
|
||||
</div>
|
||||
<div id="linking" class="uk-width-xlarge uk-margin-large-bottom">
|
||||
<h3>Linking research products via ~ Link ~</h3>
|
||||
<p>'Linking' is a functionality provided by OpenAIRE enabling users to connect research results with projects, research communities, or other research outcomes. This linked information is subsequently integrated into the OpenAIRE Graph and, consequently, becomes accessible in the National Open Access Monitor, Ireland.</p>
|
||||
<h5 class="uk-text-italic">Where to Find the Linking Feature?</h5>
|
||||
<p>To access the Linking feature, sign in to your account, click on the circle with your initials in the top right corner, and select 'Link'. Additionally, the linking option is available under any research product while browsing. Each Monitor includes a 'Browse Research Products' tab at the top for easy navigation and access.</p>
|
||||
<h5 class="uk-text-italic">Types of Research Results for Linking</h5>
|
||||
<p>Users have two options for linking research results:</p>
|
||||
<p><span class="uk-text-bold">1. Existing OpenAIRE Results:</span> Link to research results already present within OpenAIRE.</p>
|
||||
<p><span class="uk-text-bold">2. External Content Providers:</span> Link to research results hosted on external platforms like Crossref, Datacite, or ORCID. </p>
|
||||
<h5 class="uk-text-italic">Visibility of New Links</h5>
|
||||
<p>The visibility of newly created links depends on their origin:</p>
|
||||
<p><span class="uk-text-bold">1. Links to Existing OpenAIRE Results:</span> These will be visible on the portal after the next OpenAIRE Graph update, which occurs nearly monthly.</p>
|
||||
<p><span class="uk-text-bold">2. Links to Results on External Platforms:</span> Links to research results on platforms like Crossref, Datacite, or ORCID will be immediately visible through the portal.</p>
|
||||
<h5 class="uk-text-italic">Managing ‘My Links’</h5>
|
||||
<p>All users can manage their links through the 'My Links' page. After linking results, users can view and manage their list of created links, including the option to delete them if needed.</p>
|
||||
</div>
|
||||
<div id="upload" class="uk-width-xlarge uk-margin-large-bottom">
|
||||
<h3>Upload DOIs</h3>
|
||||
<p>Accessing the "Upload DOIs" feature on the OA Monitor platform is a straightforward process that allows users to obtain detailed information about their publications. Here's how you can use this feature:</p>
|
||||
<p>First, sign in to your account. Once you are logged in, locate the circle with your initials at the top right corner of the page and click on it. In the dropdown menu, select 'Upload DOIs'. This will take you to a page specifically designed for uploading Digital Object Identifiers (DOIs).</p>
|
||||
<p>On this page, you have the option to upload a CSV file that contains a list of DOIs. Once your CSV file is uploaded, the system will process the information and generate a comprehensive report. This report includes a wealth of details about the publications associated with the given DOIs.</p>
|
||||
<p>The information provided in the report covers various aspects such as the publication title, its access mode (which could be Open, Closed, Embargo, or Restricted), and the access routes (like gold, hybrid, or bronze). It also indicates whether the publication is green (self-archived) and if it is published in an OA (Open Access) diamond Journal. The report also highlights the total number of DOIs found in your list and identifies if there are any duplicates or invalid DOIs.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,13 +1,9 @@
|
|||
import {ChangeDetectorRef, Component, Inject, PLATFORM_ID} from "@angular/core";
|
||||
import {Component} from "@angular/core";
|
||||
import {BaseComponent} from "../../openaireLibrary/sharedComponents/base/base.component";
|
||||
import {ActivatedRoute, Router} from "@angular/router";
|
||||
import {PiwikService} from "../../openaireLibrary/utils/piwik/piwik.service";
|
||||
import {SEOService} from "../../openaireLibrary/sharedComponents/SEO/SEO.service";
|
||||
import {Meta, Title} from "@angular/platform-browser";
|
||||
import {Breadcrumb} from "../../openaireLibrary/utils/breadcrumbs/breadcrumbs.component";
|
||||
import {isPlatformServer} from "@angular/common";
|
||||
import {LayoutService} from "../../openaireLibrary/dashboard/sharedComponents/sidebar/layout.service";
|
||||
import {HelperService} from "../../openaireLibrary/utils/helper/helper.service";
|
||||
|
||||
@Component({
|
||||
selector: 'user-actions',
|
||||
|
@ -17,46 +13,17 @@ import {HelperService} from "../../openaireLibrary/utils/helper/helper.service";
|
|||
export class UserActionsComponent extends BaseComponent{
|
||||
title = 'User Actions';
|
||||
description = 'User Actions';
|
||||
breadcrumbs: Breadcrumb[] = [{name: 'home', route: '/'}, {name: 'resources - user actions'}];
|
||||
activeSection: string;
|
||||
divContents: any;
|
||||
|
||||
isMobile: boolean = false;
|
||||
isServer: boolean;
|
||||
|
||||
constructor(protected _route: ActivatedRoute,
|
||||
protected _piwikService: PiwikService,
|
||||
protected _meta: Meta,
|
||||
protected seoService: SEOService,
|
||||
protected _title: Title,
|
||||
protected _router: Router,
|
||||
private cdr: ChangeDetectorRef,
|
||||
private layoutService: LayoutService,
|
||||
private helper: HelperService,
|
||||
@Inject(PLATFORM_ID) private platform: any) {
|
||||
protected _router: Router) {
|
||||
super();
|
||||
this.isServer = isPlatformServer(this.platform);
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.setMetadata();
|
||||
this.subscriptions.push(this._route.fragment.subscribe(fragment => {
|
||||
if(fragment) {
|
||||
this.activeSection = fragment;
|
||||
} else {
|
||||
this.activeSection = 'add-to-orcid';
|
||||
}
|
||||
}));
|
||||
this.layoutService.isMobile.subscribe(isMobile => {
|
||||
this.isMobile = isMobile;
|
||||
this.cdr.detectChanges();
|
||||
});
|
||||
this.getDivContents();
|
||||
}
|
||||
|
||||
private getDivContents() {
|
||||
this.subscriptions.push(this.helper.getDivHelpContents(this.properties, 'irish', '/how-it-works/user-actions').subscribe(contents => {
|
||||
this.divContents = contents;
|
||||
}));
|
||||
}
|
||||
}
|
|
@ -17,9 +17,9 @@ declare var UIkit;
|
|||
<div>
|
||||
<div class="uk-container">
|
||||
<h3 class="uk-h4 uk-text-center uk-margin-large-top uk-margin-large-bottom">Are you a <span
|
||||
[ngClass]="titleClass">{{type}}?</span></h3>
|
||||
class="uk-text-primary">{{type}}?</span></h3>
|
||||
</div>
|
||||
<div [id]="'sticky-' + id" #sticky class="uk-sticky uk-visible@l" [ngClass]="isSticky?backgroundClass:null"
|
||||
<div [id]="'sticky-' + id" #sticky class="uk-background-default uk-blur-background uk-sticky uk-visible@l"
|
||||
uk-sticky="animation: uk-animation-slide-bottom" [attr.end]="'#' + id"
|
||||
[attr.start]="'100vh -' + height + 'px'" [attr.offset]="offset">
|
||||
<div class="uk-container">
|
||||
|
@ -38,13 +38,13 @@ declare var UIkit;
|
|||
<div class="uk-grid uk-grid-large uk-grid-divider uk-child-width-1-2@l" uk-grid
|
||||
uk-height-match="target: .uk-card">
|
||||
<div class="uk-flex uk-flex-column uk-flex-middle uk-child-width-1-1">
|
||||
<div class="uk-margin-top uk-margin-large-bottom">
|
||||
<div class="uk-margin-top uk-margin-xlarge-bottom">
|
||||
<span class="uk-h3 uk-text-center uk-margin-bottom uk-hidden@l">You</span>
|
||||
<ng-content select="[you]"></ng-content>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-flex uk-flex-column uk-flex-middle uk-child-width-1-1">
|
||||
<div class="uk-margin-top uk-margin-large-bottom">
|
||||
<div class="uk-margin-top uk-margin-xlarge-bottom">
|
||||
<span class="uk-h3 uk-text-center uk-margin-bottom uk-hidden@l">We</span>
|
||||
<ng-content select="[we]"></ng-content>
|
||||
</div>
|
||||
|
@ -60,10 +60,6 @@ export class YouWeComponent implements AfterViewInit, AfterContentChecked, OnDes
|
|||
public type: string;
|
||||
@Input()
|
||||
public id;
|
||||
@Input()
|
||||
titleClass: string = "uk-text-primary";
|
||||
@Input()
|
||||
backgroundClass: string = "uk-background-default uk-blur-background";
|
||||
@ViewChild('sticky') sticky: ElementRef;
|
||||
public isSticky: boolean = false;
|
||||
public offset: number
|
||||
|
@ -87,31 +83,29 @@ export class YouWeComponent implements AfterViewInit, AfterContentChecked, OnDes
|
|||
|
||||
ngOnDestroy() {
|
||||
this.subscriptions.forEach(subscription => {
|
||||
if (typeof ResizeObserver != 'undefined' && subscription instanceof ResizeObserver) {
|
||||
if (subscription instanceof (ResizeObserver || IntersectionObserver)) {
|
||||
subscription.disconnect();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public observeSticky() {
|
||||
if(typeof ResizeObserver != 'undefined') {
|
||||
let resizeObs = new ResizeObserver(entries => {
|
||||
entries.forEach(entry => {
|
||||
setTimeout(() => {
|
||||
this.offset = this.calcOffset(entry.target);
|
||||
this.cdr.detectChanges();
|
||||
});
|
||||
})
|
||||
});
|
||||
this.subscriptions.push(resizeObs);
|
||||
resizeObs.observe(this.sticky.nativeElement);
|
||||
this.subscriptions.push(UIkit.util.on('#sticky-' + this.id, 'active', (): void => {
|
||||
this.isSticky = true;
|
||||
}));
|
||||
this.subscriptions.push(UIkit.util.on('#sticky-' + this.id, 'inactive', () => {
|
||||
this.isSticky = false;
|
||||
}));
|
||||
}
|
||||
let resizeObs = new ResizeObserver(entries => {
|
||||
entries.forEach(entry => {
|
||||
setTimeout(() => {
|
||||
this.offset = this.calcOffset(entry.target);
|
||||
this.cdr.detectChanges();
|
||||
});
|
||||
})
|
||||
});
|
||||
this.subscriptions.push(resizeObs);
|
||||
resizeObs.observe(this.sticky.nativeElement);
|
||||
this.subscriptions.push(UIkit.util.on('#sticky-' + this.id, 'active', (): void => {
|
||||
this.isSticky = true;
|
||||
}));
|
||||
this.subscriptions.push(UIkit.util.on('#sticky-' + this.id, 'inactive', () => {
|
||||
this.isSticky = false;
|
||||
}));
|
||||
}
|
||||
|
||||
calcOffset(element) {
|
||||
|
|
|
@ -1,145 +0,0 @@
|
|||
<div class="hero">
|
||||
<div class="uk-container uk-container-large uk-section uk-section-small" uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-fade; delay: 250">
|
||||
<div>
|
||||
<breadcrumbs [breadcrumbs]="breadcrumbs"></breadcrumbs>
|
||||
</div>
|
||||
<div id="how" class="uk-margin-medium-top uk-margin-medium-bottom">
|
||||
<h1 class="uk-h2" uk-scrollspy-class>
|
||||
Methodological <br>Approach<span class="uk-text-primary">.</span>
|
||||
</h1>
|
||||
<div class="uk-width-large uk-text-large">
|
||||
The National Open Access Monitor for Ireland employs a robust methodology, underpinned by a commitment
|
||||
to best practices in Open Science. This approach ensures comprehensive, accurate, and user-centric
|
||||
insights into Ireland's Open Access landscape.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-section uk-background-secondary blur-bg-img">
|
||||
<div class="uk-container uk-container-large uk-light">
|
||||
<h2 class="uk-h3 uk-text-center " uk-scrollspy-class>
|
||||
Principles
|
||||
</h2>
|
||||
<div class="uk-margin-large-top uk-grid uk-child-width-1-2@m uk-child-width-1-1@s uk-grid-match" uk-grid>
|
||||
<div class="uk-margin-small-bottom">
|
||||
<div class="uk-card uk-card-body uk-blur-background uk-box-shadow-large" uk-scrollspy-class>
|
||||
<div class="uk-text-bold uk-margin-small-bottom">Openness & Transparency</div>
|
||||
<div>
|
||||
We prioritize transparent methodological assumptions and the use of openly available,
|
||||
public data.
|
||||
Adherence to the FAIR principles and international standards ensures our findings are
|
||||
trustworthy, replicable, and accessible for public engagement.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-margin-small-bottom">
|
||||
<div class="uk-card uk-card-body uk-blur-background uk-box-shadow-large" uk-scrollspy-class>
|
||||
<div class="uk-text-bold uk-margin-small-bottom">Comprehensive Coverage & Accuracy</div>
|
||||
<div>
|
||||
Leveraging the extensive data capabilities of the OpenAIRE Graph and working closely with
|
||||
stakeholders for data representation and quality we aim to provide the most comprehensive
|
||||
coverage possible, incorporating data from multiple sources for accurate and meaningful
|
||||
indicators.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-margin-small-bottom">
|
||||
<div class="uk-card uk-card-body uk-blur-background uk-box-shadow-large" uk-scrollspy-class>
|
||||
<div class="uk-text-bold uk-margin-small-bottom">Readiness & Timeliness:</div>
|
||||
<div>
|
||||
Built around well-established open databases and already tested knowledge extraction
|
||||
technologies - natural language processing (NLP) / machine-learning (ML) - using
|
||||
operational workflows in OpenAIRE to warrant timely results.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-margin-small-bottom">
|
||||
<div class="uk-card uk-card-body uk-blur-background uk-box-shadow-large" uk-scrollspy-class>
|
||||
<div class="uk-text-bold uk-margin-small-bottom">Engagement & Inclusivity</div>
|
||||
<div>
|
||||
Our methodology focuses on meeting the needs of our diverse users, from researchers to
|
||||
policymakers. We emphasize ease of use, clear communication, and responsiveness to
|
||||
feedback. The platform is designed to be intuitive and responsive, ensuring an effective
|
||||
and engaging experience for all stakeholders.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-section uk-margin-medium-top uk-position-relative" [ngClass]="isMobile ? 'uk-padding-remove-bottom' : ''">
|
||||
<div class="uk-container uk-container-large">
|
||||
<div class="uk-grid uk-child-width-1-2@m" uk-grid>
|
||||
<div>
|
||||
<div style="max-width: 575px;">
|
||||
<span class="uk-text-large text-graph">
|
||||
Data backbone: The OpenAIRE Graph
|
||||
</span>
|
||||
<h2 class="uk-h2 uk-margin-small-top">
|
||||
How? It’s about open data and collaboration<span class="text-graph">.</span>
|
||||
</h2>
|
||||
<div>
|
||||
The National Open Access Monitor for Ireland is built upon the OpenAIRE Graph, a
|
||||
comprehensive database of research metadata records. This extensive collection includes
|
||||
records from 129K data sources, featuring around 3 million projects, 170 million
|
||||
publications, 60 million datasets, 400K pieces of research software, and approximately 8
|
||||
million other research outputs as of December 2023. Regular updates, conducted nearly
|
||||
monthly, ensure the graph is consistently reflective of the latest scholarly
|
||||
contributions.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<img class="uk-margin-medium-left uk-position-center-right uk-visible@m"
|
||||
src="assets/common-assets/common/graph-nodes-1.svg" alt="OpenAIRE Graph" loading="lazy">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-position-relative" [ngClass]="isMobile ? '' : 'uk-section uk-section-small'">
|
||||
<img class="uk-position-center-left uk-visible@m"
|
||||
src="assets/common-assets/common/graph-nodes-2.svg" alt="OpenAIRE Graph" loading="lazy">
|
||||
<div class="uk-container uk-container-large uk-width-1-1 uk-width-1-2@m">
|
||||
At the core of the OpenAIRE Graph is a commitment to data quality. The pipeline processes metadata
|
||||
from a multitude of sources, including detailed project information from funding bodies. Advanced
|
||||
inference algorithms enhance the metadata and full texts of Open Access publications, establishing
|
||||
crucial links between research results, projects, author affiliations, and classifications like Fields
|
||||
of Science (FoS) and Sustainable Development Goals (SDGs). To maintain an open, trusted, and publicly
|
||||
accessible resource, we apply sophisticated techniques for identifying and merging duplicate records,
|
||||
supplemented by OpenAIRE's suite of curation tools, including the Metadata Validator for completeness
|
||||
checks and OpenORGS for organization disambiguation.
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-container uk-container-large uk-margin-large-top">
|
||||
<img class="uk-width-1-1" src="assets/irish-assets/openaire-pipeline.png" alt="OpenAIRE pipeline" loading="lazy">
|
||||
<div class="uk-text-meta uk-text-small uk-text-right uk-margin-top">
|
||||
Figure 1: Seemless Integration with to OpenAIRE & EOSC
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-container uk-width-xlarge uk-margin-large-top">
|
||||
The OpenAIRE technology center is responsible with the upkeep of this robust infrastructure,
|
||||
conducting regular hardware maintenance and implementing high-availability solutions, load balancing,
|
||||
backups, and precise restore procedures to ensure uninterrupted system performance.
|
||||
</div>
|
||||
<div class="uk-container uk-width-xlarge uk-margin-top">
|
||||
Explore the Graph in detail at the OpenAIRE Graph <a href="https://graph.openaire.eu" target="_blank">website</a>
|
||||
and its <a href="https://graph.openaire.eu/docs/" target="_blank">documentation</a>.
|
||||
</div>
|
||||
<div class="uk-flex uk-child-width-1-1 uk-child-width-1-2@m uk-margin-large-top">
|
||||
<div class="uk-section">
|
||||
<div class="uk-width-1-1 uk-width-1-2@m uk-margin-auto" [ngClass]="isMobile ? 'uk-container' : ''">
|
||||
<div class="uk-text-large uk-text-primary">Contact us</div>
|
||||
<h2 class="uk-h3 uk-margin-remove">Your Feedback Matters</h2>
|
||||
<div class="uk-margin-top">
|
||||
If you notice any issues or have improvement
|
||||
suggestions, please contact us. Your feedback is crucial for the continuous enhancement of our
|
||||
platform and helps us maintain the highest accuracy and effectiveness.
|
||||
</div>
|
||||
<a class="uk-button uk-button-primary uk-margin-medium-top" routerLink="/contact-us">contact us</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-visible@m uk-banner uk-overflow-hidden uk-position-relative">
|
||||
<img class="uk-position-bottom-right" style="margin: -10px;"
|
||||
src="assets/irish-assets/resources/dashboard-half-height.png" alt="National Monitor Dashboard" loading="lazy">
|
||||
</div>
|
||||
</div>
|
|
@ -1,14 +0,0 @@
|
|||
@import (reference) "~src/assets/extend-theme/less/_import-variables";
|
||||
|
||||
.hero {
|
||||
background-image: url("~/src/assets/irish-assets/resources/hero.svg");
|
||||
background-size: 25%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: 105% 125%;
|
||||
}
|
||||
.blur-bg-img {
|
||||
background-image: url("~/src/assets/irish-assets/resources/irish-bg-blur.png");
|
||||
background-size: 50%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: -15% 100%;
|
||||
}
|
|
@ -1,40 +1,156 @@
|
|||
import {ChangeDetectorRef, Component, OnInit} from "@angular/core";
|
||||
import {Component, OnInit} from "@angular/core";
|
||||
import {BaseComponent} from "../../openaireLibrary/sharedComponents/base/base.component";
|
||||
import {ActivatedRoute, Router} from "@angular/router";
|
||||
import {PiwikService} from "../../openaireLibrary/utils/piwik/piwik.service";
|
||||
import {Meta, Title} from "@angular/platform-browser";
|
||||
import {SEOService} from "../../openaireLibrary/sharedComponents/SEO/SEO.service";
|
||||
import {Breadcrumb} from "../../openaireLibrary/utils/breadcrumbs/breadcrumbs.component";
|
||||
import {LayoutService} from "../../openaireLibrary/dashboard/sharedComponents/sidebar/layout.service";
|
||||
|
||||
@Component({
|
||||
selector: 'methodological-approach',
|
||||
templateUrl: 'methodological-approach.component.html',
|
||||
styleUrls: ['methodological-approach.component.less']
|
||||
template: `
|
||||
<div class="uk-section" uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-fade; delay: 250">
|
||||
<div id="how" class="uk-container uk-container-large">
|
||||
<h1 class="uk-h2" uk-scrollspy-class>
|
||||
Methodological <br>Approach<span
|
||||
class="uk-text-primary">.</span>
|
||||
</h1>
|
||||
<div class="uk-width-large uk-text-large ">
|
||||
The National Open Access Monitor for Ireland employs a robust methodology, underpinned by a commitment
|
||||
to best practices in Open Science. This approach ensures comprehensive, accurate, and user-centric
|
||||
insights into Ireland's Open Access landscape.
|
||||
</div>
|
||||
</div>
|
||||
<hr class="uk-margin-large-top uk-margin-large-bottom">
|
||||
<div class="uk-container uk-container-large">
|
||||
<h3 class="uk-h3 uk-text-center " uk-scrollspy-class>
|
||||
Principles
|
||||
</h3>
|
||||
<div class="uk-margin-large-top uk-grid uk-child-width-1-2@m uk-child-width-1-1@s uk-grid-match" uk-grid>
|
||||
<div class="uk-margin-small-bottom">
|
||||
<div class="uk-card uk-card-default uk-card-body" uk-scrollspy-class>
|
||||
<div class="uk-text-bold uk-margin-small-bottom">Openness & Transparency</div>
|
||||
<div>We prioritize transparent methodological assumptions and the use of openly available,
|
||||
public data.
|
||||
Adherence to the FAIR principles and international standards ensures our findings are
|
||||
trustworthy, replicable, and accessible for public engagement.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-margin-small-bottom">
|
||||
<div class="uk-card uk-card-default uk-card-body" uk-scrollspy-class>
|
||||
<div class="uk-text-bold uk-margin-small-bottom">Comprehensive Coverage & Accuracy</div>
|
||||
<div>Leveraging the extensive data capabilities of the OpenAIRE Graph and working closely with
|
||||
stakeholders for data representation and quality we aim to provide the most comprehensive
|
||||
coverage possible, incorporating data from multiple sources for accurate and meaningful
|
||||
indicators.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-margin-small-bottom">
|
||||
<div class=" uk-card uk-card-default uk-card-body" uk-scrollspy-class>
|
||||
<div class="uk-text-bold uk-margin-small-bottom">Readiness & Timeliness:</div>
|
||||
<div>Built around well-established open databases and already tested knowledge extraction
|
||||
technologies - natural language processing (NLP) / machine-learning (ML) - using
|
||||
operational workflows in OpenAIRE to warrant timely results.
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-margin-small-bottom">
|
||||
<div class=" uk-card uk-card-default uk-card-body" uk-scrollspy-class>
|
||||
<div class="uk-text-bold uk-margin-small-bottom">Engagement & Inclusivity</div>
|
||||
<div>Our methodology focuses on meeting the needs of our diverse users, from researchers to
|
||||
policymakers. We emphasize ease of use, clear communication, and responsiveness to
|
||||
feedback. The platform is designed to be intuitive and responsive, ensuring an effective
|
||||
and engaging experience for all stakeholders.
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-banner uk-margin-large-top">
|
||||
<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: 575px;">
|
||||
<h2 class="uk-margin-small-top">DATA BACKBONE: THE OPENAIRE GRAPH<span
|
||||
class="text-graph">.</span></h2>
|
||||
<div>
|
||||
The National Open Access Monitor for Ireland is built upon the OpenAIRE Graph, a
|
||||
comprehensive database of research metadata records. This extensive collection includes
|
||||
records from 129K data sources, featuring around 3 million projects, 170 million
|
||||
publications, 60 million datasets, 400K pieces of research software, and approximately 8
|
||||
million other research outputs as of December 2023. Regular updates, conducted nearly
|
||||
monthly, ensure the graph is consistently reflective of the latest scholarly
|
||||
contributions.
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-position-relative">
|
||||
<img class=" uk-margin-medium-left uk-position-center-right uk-visible@m"
|
||||
src="assets/common-assets/common/graph-nodes.svg" alt="OpenAIRE Graph" loading="lazy">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-padding">
|
||||
<div class="uk-container uk-width-xlarge uk-margin-large-top">
|
||||
At the core of the OpenAIRE Graph is a commitment to data quality. The pipeline processes metadata
|
||||
from a multitude of sources, including detailed project information from funding bodies. Advanced
|
||||
inference algorithms enhance the metadata and full texts of Open Access publications, establishing
|
||||
crucial links between research results, projects, author affiliations, and classifications like Fields
|
||||
of Science (FoS) and Sustainable Development Goals (SDGs). To maintain an open, trusted, and publicly
|
||||
accessible resource, we apply sophisticated techniques for identifying and merging duplicate records,
|
||||
supplemented by OpenAIRE's suite of curation tools, including the Metadata Validator for completeness
|
||||
checks and OpenORGS for organization disambiguation.
|
||||
</div>
|
||||
<div class=" uk-margin-large-top uk-container uk-container-large">
|
||||
<img class="uk-width-1-1"
|
||||
src="assets/irish-assets/openaire-pipeline.png" alt="OpenAIRE pipeline" loading="lazy">
|
||||
<div class="uk-text-meta uk-text-small uk-text-right uk-margin-top">Figure 1: Seemless Integration
|
||||
with to OpenAIRE & EOSC
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-container uk-width-xlarge uk-margin-large-top">
|
||||
The OpenAIRE technology center is responsible with the upkeep of this robust infrastructure,
|
||||
conducting regular hardware maintenance and implementing high-availability solutions, load balancing,
|
||||
backups, and precise restore procedures to ensure uninterrupted system performance.
|
||||
</div>
|
||||
<div class="uk-container uk-width-xlarge uk-margin-top">
|
||||
Explore the Graph in detail at the OpenAIRE Graph <a href="https://graph.openaire.eu" target="_blank">website</a>
|
||||
and its <a href="https://graph.openaire.eu/docs/" target="_blank">documentation</a>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-text-center uk-section uk-section-large">
|
||||
<div class="uk-text-large uk-text-primary"> Contact us</div>
|
||||
<div class="uk-h3 uk-margin-remove"> Your Feedback Matters</div>
|
||||
<div class="uk-flex uk-flex-center">
|
||||
<div class="uk-width-xlarge@m uk-width-1-1@s uk-margin-top uk-margin-medium-bottom"> If you notice any issues or have improvement
|
||||
suggestions, please contact us. Your feedback is crucial for the continuous enhancement of our
|
||||
platform and helps us maintain the highest accuracy and effectiveness.
|
||||
</div>
|
||||
</div>
|
||||
<a class="uk-button uk-button-primary" routerLink="/contact-us">contact us</a>
|
||||
</div>
|
||||
`
|
||||
})
|
||||
export class MethodologicalApproachComponent extends BaseComponent implements OnInit {
|
||||
title = 'Methodological Approach';
|
||||
description = 'Methodological Approach';
|
||||
breadcrumbs: Breadcrumb[] = [{name: 'home', route: '/'}, {name: 'resources - methodological approach'}];
|
||||
|
||||
isMobile: boolean = false;
|
||||
|
||||
constructor(protected _route: ActivatedRoute,
|
||||
protected _piwikService: PiwikService,
|
||||
protected _meta: Meta,
|
||||
protected seoService: SEOService,
|
||||
protected _title: Title,
|
||||
protected _router: Router,
|
||||
private cdr: ChangeDetectorRef,
|
||||
private layoutService: LayoutService) {
|
||||
protected _router: Router) {
|
||||
super();
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.setMetadata();
|
||||
this.layoutService.isMobile.subscribe(isMobile => {
|
||||
this.isMobile = isMobile;
|
||||
this.cdr.detectChanges();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,6 @@ import {MethodologicalApproachComponent} from "./methodological-approach.compone
|
|||
import {TerminologyComponent} from "./terminology.component";
|
||||
import {SliderTabsModule} from "../../openaireLibrary/sharedComponents/tabs/slider-tabs.module";
|
||||
import {HelperModule} from "../../openaireLibrary/utils/helper/helper.module";
|
||||
import {BreadcrumbsModule} from "../../openaireLibrary/utils/breadcrumbs/breadcrumbs.module";
|
||||
|
||||
@NgModule({
|
||||
declarations: [MethodologicalApproachComponent, TerminologyComponent],
|
||||
|
@ -26,7 +25,7 @@ import {BreadcrumbsModule} from "../../openaireLibrary/utils/breadcrumbs/breadcr
|
|||
component: TerminologyComponent,
|
||||
canDeactivate: []
|
||||
},
|
||||
]), SliderTabsModule, HelperModule, BreadcrumbsModule],
|
||||
]), SliderTabsModule, HelperModule],
|
||||
exports: []
|
||||
})
|
||||
export class MethodologyModule {
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
<div *ngIf="!isMobile" class="uk-visible@m">
|
||||
<div class="uk-banner dark uk-padding-remove-vertical uk-light">
|
||||
<div class="uk-container uk-container-large uk-section uk-section-small">
|
||||
<div>
|
||||
<breadcrumbs [breadcrumbs]="breadcrumbs"></breadcrumbs>
|
||||
</div>
|
||||
<div class="uk-text-center uk-margin-medium-top" uk-scrollspy-class>
|
||||
<div class="uk-banner">
|
||||
<div class="uk-container uk-container-large">
|
||||
<div class="uk-text-center" uk-scrollspy-class>
|
||||
<h1 class="uk-h2 uk-margin-medium-top uk-margin-medium-bottom">Terminology & Construction.</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -37,11 +34,8 @@
|
|||
</div>
|
||||
</div>
|
||||
<div *ngIf="isMobile || isServer" class="uk-hidden@m">
|
||||
<div class="uk-banner dark uk-padding-remove-vertical uk-light">
|
||||
<div class="uk-container uk-container-large uk-section uk-section-small">
|
||||
<div>
|
||||
<breadcrumbs [breadcrumbs]="breadcrumbs"></breadcrumbs>
|
||||
</div>
|
||||
<div class="uk-banner">
|
||||
<div class="uk-container uk-container-large">
|
||||
<div class="uk-text-center" uk-scrollspy-class>
|
||||
<h1 class="uk-heading-small uk-margin-medium-top uk-margin-medium-bottom">Terminology & Construction.</h1>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import {ChangeDetectorRef, Component, Inject, PLATFORM_ID} from "@angular/core";
|
||||
import {ChangeDetectorRef, Component} from "@angular/core";
|
||||
import {Meta, Title} from "@angular/platform-browser";
|
||||
import {ActivatedRoute, Router} from "@angular/router";
|
||||
import {SEOService} from "../../openaireLibrary/sharedComponents/SEO/SEO.service";
|
||||
|
@ -6,8 +6,6 @@ import {BaseComponent} from "../../openaireLibrary/sharedComponents/base/base.co
|
|||
import {PiwikService} from "../../openaireLibrary/utils/piwik/piwik.service";
|
||||
import {LayoutService} from "../../openaireLibrary/dashboard/sharedComponents/sidebar/layout.service";
|
||||
import {HelperService} from "../../openaireLibrary/utils/helper/helper.service";
|
||||
import {Breadcrumb} from "../../openaireLibrary/utils/breadcrumbs/breadcrumbs.component";
|
||||
import {isPlatformServer} from "@angular/common";
|
||||
|
||||
@Component({
|
||||
selector: 'terminology',
|
||||
|
@ -17,7 +15,6 @@ import {isPlatformServer} from "@angular/common";
|
|||
export class TerminologyComponent extends BaseComponent{
|
||||
title = 'Terminology & Construction';
|
||||
description = 'Terminology & Construction';
|
||||
breadcrumbs: Breadcrumb[] = [{name: 'home', route: '/'}, {name: 'resources - terminology & construction'}];
|
||||
tab: 'entities' | 'attributes' = 'entities';
|
||||
contentSections: string[] = ['entities', 'inherited-and-inferred-attributes', 'constructed-attributes'];
|
||||
activeSection: string;
|
||||
|
@ -34,10 +31,8 @@ export class TerminologyComponent extends BaseComponent{
|
|||
protected _router: Router,
|
||||
private cdr: ChangeDetectorRef,
|
||||
private layoutService: LayoutService,
|
||||
private helper: HelperService,
|
||||
@Inject(PLATFORM_ID) private platform: any) {
|
||||
private helper: HelperService) {
|
||||
super();
|
||||
this.isServer = isPlatformServer(this.platform);
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
|
@ -59,6 +54,7 @@ export class TerminologyComponent extends BaseComponent{
|
|||
private getDivContents() {
|
||||
this.subscriptions.push(this.helper.getDivHelpContents(this.properties, 'irish', '/methodology/terminology').subscribe(contents => {
|
||||
this.divContents = contents;
|
||||
console.log(this.divContents);
|
||||
}));
|
||||
}
|
||||
}
|
|
@ -1,14 +1,11 @@
|
|||
<div class="uk-visible@m">
|
||||
<div class="uk-banner dark uk-padding-remove-vertical uk-light hero">
|
||||
<div class="uk-container uk-container-large uk-section uk-section-small">
|
||||
<div>
|
||||
<breadcrumbs [breadcrumbs]="breadcrumbs"></breadcrumbs>
|
||||
</div>
|
||||
<div class="uk-banner">
|
||||
<div class="uk-container uk-container-large">
|
||||
<div class="uk-flex uk-flex-middle" uk-scrollspy-class>
|
||||
<div class="uk-width-1-2 uk-margin-medium-bottom">
|
||||
<h1 class="uk-h2">How can we help you?</h1>
|
||||
<h1 class="uk-h2 uk-margin-medium-top">How can we help you?</h1>
|
||||
<div class="uk-text-lead uk-margin-medium-bottom">Monitor expert support team is ready and excited to help.</div>
|
||||
<a routerLink="/contact-us" class="uk-button uk-button-primary">Contact Us</a>
|
||||
<a routerLink="/contact-us" class="uk-button uk-button-secondary">Contact Us</a>
|
||||
</div>
|
||||
<div class="uk-position-relative uk-width-1-2 uk-visible@l contact-us">
|
||||
<img class="uk-box-shadow-large two" src="assets/irish-assets/curators/1.jpg">
|
||||
|
@ -24,12 +21,12 @@
|
|||
<helper *ngIf="pageContents" [texts]="pageContents.top"></helper>
|
||||
</div>
|
||||
<div class="uk-hidden@m">
|
||||
<div class="uk-banner dark uk-padding-remove-vertical uk-light">
|
||||
<div class="uk-container uk-container-large uk-section uk-section-small">
|
||||
<div class="uk-banner">
|
||||
<div class="uk-section-small uk-container uk-container-large">
|
||||
<div class="uk-text-center" uk-scrollspy-class>
|
||||
<h1 class="uk-margin-top">How can we help you?</h1>
|
||||
<div class="uk-margin-medium-bottom">Monitor expert support team is ready and excited to help.</div>
|
||||
<a routerLink="/contact-us" class="uk-button uk-button-small uk-button-primary">Contact Us</a>
|
||||
<a routerLink="/contact-us" class="uk-button uk-button-small uk-button-secondary">Contact Us</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -3,11 +3,6 @@
|
|||
@faqs-curator-image-size: 120px;
|
||||
@faqs-contact-us-height: 400px;
|
||||
|
||||
.hero {
|
||||
background-image: url("~/src/assets/irish-assets/resources/irish-bg-blur.png");
|
||||
background-position: right;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
.contact-us {
|
||||
height: @faqs-contact-us-height;
|
||||
|
||||
|
|
|
@ -5,7 +5,6 @@ import {SEOService} from "../../openaireLibrary/sharedComponents/SEO/SEO.service
|
|||
import {BaseComponent} from "../../openaireLibrary/sharedComponents/base/base.component";
|
||||
import {PiwikService} from "../../openaireLibrary/utils/piwik/piwik.service";
|
||||
import {HelperService} from "../../openaireLibrary/utils/helper/helper.service";
|
||||
import {Breadcrumb} from "../../openaireLibrary/utils/breadcrumbs/breadcrumbs.component";
|
||||
|
||||
@Component({
|
||||
selector: 'support',
|
||||
|
@ -15,7 +14,6 @@ import {Breadcrumb} from "../../openaireLibrary/utils/breadcrumbs/breadcrumbs.co
|
|||
export class SupportComponent extends BaseComponent {
|
||||
title = 'Support';
|
||||
description = 'Support';
|
||||
breadcrumbs: Breadcrumb[] = [{name: 'home', route: '/'}, {name: 'resources - support'}];
|
||||
pageContents = null;
|
||||
|
||||
constructor(protected _route: ActivatedRoute,
|
||||
|
|
|
@ -3,7 +3,6 @@ import {CommonModule} from "@angular/common";
|
|||
import {SupportComponent} from "./support.component";
|
||||
import {RouterModule} from "@angular/router";
|
||||
import {HelperModule} from "../../openaireLibrary/utils/helper/helper.module";
|
||||
import {BreadcrumbsModule} from "../../openaireLibrary/utils/breadcrumbs/breadcrumbs.module";
|
||||
|
||||
@NgModule({
|
||||
declarations: [SupportComponent],
|
||||
|
@ -11,7 +10,7 @@ import {BreadcrumbsModule} from "../../openaireLibrary/utils/breadcrumbs/breadcr
|
|||
{
|
||||
path: '', component: SupportComponent
|
||||
}
|
||||
]), HelperModule, BreadcrumbsModule],
|
||||
]), HelperModule],
|
||||
exports: [SupportComponent]
|
||||
})
|
||||
export class SupportModule {
|
||||
|
|
|
@ -13,9 +13,6 @@ import {LayoutService} from "../openaireLibrary/dashboard/sharedComponents/sideb
|
|||
import {OpenaireEntities} from "../openaireLibrary/utils/properties/searchFields";
|
||||
import {ConfigurationService} from "../openaireLibrary/utils/configuration/configuration.service";
|
||||
import {Irish} from "../shared/irish";
|
||||
import {UserManagementService} from "../openaireLibrary/services/user-management.service";
|
||||
import {Session} from "../openaireLibrary/login/utils/helper.class";
|
||||
import {properties as beta} from "../../environments/environment.beta";
|
||||
|
||||
@Component({
|
||||
selector: 'rfo',
|
||||
|
@ -25,84 +22,58 @@ import {properties as beta} from "../../environments/environment.beta";
|
|||
<div class="uk-banner uk-light">
|
||||
<div class="uk-container uk-container-large">
|
||||
<div class="uk-padding-small uk-padding-remove-vertical">
|
||||
<div *ngIf="stakeholder" class="uk-grid uk-grid-large uk-flex-middle uk-margin-medium-bottom"
|
||||
uk-grid>
|
||||
<div class="uk-width-expand">
|
||||
<div class="uk-grid uk-grid-small uk-flex-middle" uk-grid>
|
||||
<div class="uk-card uk-card-default uk-padding-small">
|
||||
<img *ngIf="stakeholder.logoUrl; else elseBlock" [src]="stakeholder | logoUrl"
|
||||
[alt]="stakeholder.name + ' logo'" class="uk-height-max-xsmall"
|
||||
style="max-width: 180px;">
|
||||
<ng-template #elseBlock>
|
||||
<img src="assets/common-assets/placeholder.png"
|
||||
alt="OpenAIRE placeholder logo" class="uk-height-max-xsmall"
|
||||
style="max-width: 180px;">
|
||||
</ng-template>
|
||||
</div>
|
||||
<div class="uk-width-expand uk-margin-small-left">
|
||||
<div class="uk-text-small uk-flex uk-flex-middle uk-margin-small-bottom">
|
||||
<icon [name]="'navigate_before'" [flex]="true" [ratio]="0.8"
|
||||
class="uk-margin-xsmall-right"></icon>
|
||||
<a routerLink=".">Back to
|
||||
all {{ entities.funder }} {{ entities.stakeholders }}</a>
|
||||
</div>
|
||||
<h1 class="uk-h4 uk-margin-remove uk-text-truncate">{{ stakeholder.name }}</h1>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="stakeholder" class="uk-grid uk-grid-large uk-flex-middle uk-margin-medium-bottom" uk-grid>
|
||||
<div class="uk-width-expand">
|
||||
<div class="uk-grid uk-grid-small uk-flex-middle" uk-grid>
|
||||
<div class="uk-card uk-card-default uk-padding-small">
|
||||
<img *ngIf="stakeholder.logoUrl; else elseBlock" [src]="stakeholder | logoUrl" [alt]="stakeholder.name + ' logo'" class="uk-height-max-xsmall" style="max-width: 180px;">
|
||||
<ng-template #elseBlock>
|
||||
<img src="assets/common-assets/placeholder.png" alt="OpenAIRE placeholder logo" class="uk-height-max-xsmall" style="max-width: 180px;">
|
||||
</ng-template>
|
||||
</div>
|
||||
<div class="uk-width-auto">
|
||||
<oa-indicator [stakeholder]="stakeholder"></oa-indicator>
|
||||
<div class="uk-width-expand uk-margin-small-left">
|
||||
<div class="uk-text-small uk-flex uk-flex-middle uk-margin-small-bottom">
|
||||
<icon [name]="'navigate_before'" [flex]="true" [ratio]="0.8" class="uk-margin-xsmall-right"></icon>
|
||||
<a routerLink=".">Back to all {{entities.funder}} {{entities.stakeholders}}</a>
|
||||
</div>
|
||||
<h1 class="uk-h4 uk-margin-remove uk-text-truncate">{{stakeholder.name}}</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h1 *ngIf="!stakeholder" class="uk-h3 uk-margin-small-bottom">Research Funding Organisations
|
||||
({{ entities.funders }})</h1>
|
||||
</div>
|
||||
<h1 *ngIf="!stakeholder" class="uk-h3 uk-margin-small-bottom">Research Funding Organisations ({{entities.funders}})</h1>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="stakeholder" class="uk-banner-footer">
|
||||
<div class="uk-container uk-container-large uk-flex uk-flex-between">
|
||||
<div class="uk-container uk-container-large">
|
||||
<ul class="uk-banner-tab uk-padding-small uk-padding-remove-vertical">
|
||||
<li [class.uk-active]="!isSearch">
|
||||
<a [routerLink]="['./', stakeholder.alias]" [relativeTo]="_route"
|
||||
(click)="isSearch = false">{{ entities.stakeholder }}</a>
|
||||
(click)="isSearch = false">{{entities.stakeholder}}</a>
|
||||
</li>
|
||||
<li [class.uk-active]="isSearch">
|
||||
<a [routerLink]="['./', stakeholder.alias, 'search']"
|
||||
[queryParams]="routerHelper.createQueryParams(['type','peerreviewed'], [quote('publications'), quote('true')])"
|
||||
[relativeTo]="_route">Browse {{ openaireEntities.RESULTS }}</a>
|
||||
<a [routerLink]="['./', stakeholder.alias, 'search']" [queryParams]="routerHelper.createQueryParams(['type','peerreviewed'], [quote('publications'), quote('true')])"
|
||||
[relativeTo]="_route">Browse {{openaireEntities.RESULTS}}</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div *ngIf="!isMobile" class="uk-margin-large-right uk-flex uk-flex-middle">
|
||||
<a *ngIf="isManager" [routerLink]="adminLink" target="_blank"
|
||||
class="uk-button uk-flex uk-flex-middle uk-margin-small-right">
|
||||
Manage
|
||||
</a>
|
||||
<a *ngIf="sandboxLink" [href]="sandboxLink" target="_blank"
|
||||
class="uk-button uk-flex uk-flex-middle uk-margin-small-right">
|
||||
Sandbox
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="!this.alias || this.stakeholder">
|
||||
<div *ngIf="!this.alias || this.stakeholder" class="uk-margin-medium-top uk-margin-medium-bottom">
|
||||
<router-outlet></router-outlet>
|
||||
</div>
|
||||
</div>
|
||||
<role-verification *ngIf="stakeholder" [id]="stakeholder.alias" [name]="stakeholder.name"
|
||||
[type]="stakeholder.type" [service]="'irish'"
|
||||
[relativeTo]="null" [dashboard]="'National Open Access Monitor, Ireland'"></role-verification>
|
||||
<role-verification *ngIf="stakeholder" [id]="stakeholder.alias" [name]="stakeholder.name" [type]="stakeholder.type" [service]="'irish'"></role-verification>
|
||||
`
|
||||
})
|
||||
export class RfoComponent extends StakeholderBaseComponent implements OnInit {
|
||||
stakeholder: Stakeholder;
|
||||
alias: string;
|
||||
isSearch: boolean = false;
|
||||
isMobile: boolean = false;
|
||||
loading: boolean = false;
|
||||
openaireEntities = OpenaireEntities;
|
||||
|
||||
constructor(private stakeholderService: StakeholderService,
|
||||
private userManagementService: UserManagementService,
|
||||
private layoutService: LayoutService,
|
||||
private _customFilterService: CustomFilterService,
|
||||
protected _router: Router,
|
||||
|
@ -124,9 +95,6 @@ export class RfoComponent extends StakeholderBaseComponent implements OnInit {
|
|||
this.title = 'RFOs';
|
||||
this.description = 'RFOs';
|
||||
this.setMetadata();
|
||||
this.subscriptions.push(this.layoutService.isMobile.subscribe(isMobile => {
|
||||
this.isMobile = isMobile;
|
||||
}));
|
||||
this.params.subscribe(params => {
|
||||
this.alias = params['stakeholder'];
|
||||
if (this.alias) {
|
||||
|
@ -161,29 +129,5 @@ export class RfoComponent extends StakeholderBaseComponent implements OnInit {
|
|||
super.ngOnDestroy();
|
||||
this.layoutService.setRootClass(null);
|
||||
this.setProperties(Irish.irishAdminToolsCommunity, Irish.irishAdminToolsPortalType, this.configurationService);
|
||||
LinksResolver.resetProperties();
|
||||
}
|
||||
|
||||
get isManager() {
|
||||
return Session.isPortalAdministrator(this.userManagementService.user) ||
|
||||
Session.isCurator(this.stakeholder.type, this.userManagementService.user) ||
|
||||
Session.isManager(this.stakeholder.type, this.stakeholder.alias, this.userManagementService.user);
|
||||
}
|
||||
|
||||
get isMember() {
|
||||
return this.isManager ||
|
||||
Session.isMember(this.stakeholder.type, this.stakeholder.alias, this.userManagementService.user);
|
||||
}
|
||||
|
||||
get adminLink() {
|
||||
return "/admin/" + this.stakeholder.alias;
|
||||
}
|
||||
|
||||
get sandboxLink() {
|
||||
if(this.properties.environment !== 'beta' && this.isMember) {
|
||||
return beta.domain + '/rfo/' + this.stakeholder.alias;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,7 +9,6 @@ import {LogoUrlPipeModule} from "../openaireLibrary/utils/pipes/logoUrlPipe.modu
|
|||
import {IconsService} from "../openaireLibrary/utils/icons/icons.service";
|
||||
import {open_access} from "../openaireLibrary/utils/icons/icons";
|
||||
import {SandboxGuard} from "../shared/sandbox.guard";
|
||||
import {OaIndicatorModule} from "../shared/oa-indicator/oa-indicator.module";
|
||||
|
||||
const routes: Route[] = [
|
||||
{
|
||||
|
@ -22,7 +21,7 @@ const routes: Route[] = [
|
|||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [CommonModule, RouterModule.forChild(routes), LoadingModule, RoleVerificationModule, IconsModule, LogoUrlPipeModule, OaIndicatorModule],
|
||||
imports: [CommonModule, RouterModule.forChild(routes), LoadingModule, RoleVerificationModule, IconsModule, LogoUrlPipeModule],
|
||||
declarations: [RfoComponent],
|
||||
exports: [RfoComponent],
|
||||
})
|
||||
|
|
|
@ -13,9 +13,6 @@ import {LayoutService} from "../openaireLibrary/dashboard/sharedComponents/sideb
|
|||
import {OpenaireEntities} from "../openaireLibrary/utils/properties/searchFields";
|
||||
import {ConfigurationService} from "../openaireLibrary/utils/configuration/configuration.service";
|
||||
import {Irish} from "../shared/irish";
|
||||
import {Role, Session} from "../openaireLibrary/login/utils/helper.class";
|
||||
import {properties as beta} from "../../environments/environment.beta";
|
||||
import {UserManagementService} from "../openaireLibrary/services/user-management.service";
|
||||
|
||||
@Component({
|
||||
selector: 'rpo',
|
||||
|
@ -43,15 +40,12 @@ import {UserManagementService} from "../openaireLibrary/services/user-management
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-width-auto">
|
||||
<oa-indicator [stakeholder]="stakeholder"></oa-indicator>
|
||||
</div>
|
||||
</div>
|
||||
<h1 *ngIf="!stakeholder" class="uk-h3 uk-margin-small-bottom">Research Performing Organisations ({{entities.organizations}})</h1>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="stakeholder" class="uk-banner-footer">
|
||||
<div class="uk-container uk-container-large uk-flex uk-flex-between">
|
||||
<div class="uk-container uk-container-large">
|
||||
<ul class="uk-banner-tab uk-padding-small uk-padding-remove-vertical">
|
||||
<li [class.uk-active]="!isSearch">
|
||||
<a [routerLink]="['./', stakeholder.alias]" [relativeTo]="_route"
|
||||
|
@ -62,36 +56,25 @@ import {UserManagementService} from "../openaireLibrary/services/user-management
|
|||
[relativeTo]="_route">Browse {{openaireEntities.RESULTS}}</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div *ngIf="!isMobile" class="uk-margin-large-right uk-flex uk-flex-middle">
|
||||
<a *ngIf="isManager" [routerLink]="adminLink" target="_blank" class="uk-button uk-flex uk-flex-middle uk-margin-small-right">
|
||||
Manage
|
||||
</a>
|
||||
<a *ngIf="sandboxLink" [href]="sandboxLink" target="_blank" class="uk-button uk-flex uk-flex-middle uk-margin-small-right">
|
||||
Sandbox
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="!this.alias || this.stakeholder">
|
||||
<div *ngIf="!this.alias || this.stakeholder" class="uk-margin-medium-top uk-margin-medium-bottom">
|
||||
<router-outlet></router-outlet>
|
||||
</div>
|
||||
</div>
|
||||
<role-verification *ngIf="stakeholder" [id]="stakeholder.alias" [name]="stakeholder.name" [type]="stakeholder.type" [dashboard]="'National Open Access Monitor, Ireland'"
|
||||
[service]="'irish'" [relativeTo]="null"></role-verification>
|
||||
<role-verification *ngIf="stakeholder" [id]="stakeholder.alias" [name]="stakeholder.name" [type]="stakeholder.type" [service]="'irish'"></role-verification>
|
||||
`
|
||||
})
|
||||
export class RpoComponent extends StakeholderBaseComponent implements OnInit {
|
||||
stakeholder: Stakeholder;
|
||||
alias: string;
|
||||
isMobile: boolean = false;
|
||||
isSearch: boolean = false;
|
||||
loading: boolean = false;
|
||||
openaireEntities = OpenaireEntities;
|
||||
|
||||
constructor(private stakeholderService: StakeholderService,
|
||||
private _customFilterService: CustomFilterService,
|
||||
private userManagementService: UserManagementService,
|
||||
private layoutService: LayoutService,
|
||||
protected _router: Router,
|
||||
protected _route: ActivatedRoute,
|
||||
|
@ -112,9 +95,6 @@ export class RpoComponent extends StakeholderBaseComponent implements OnInit {
|
|||
this.title = 'RPOs';
|
||||
this.description = 'RPOs';
|
||||
this.setMetadata();
|
||||
this.subscriptions.push(this.layoutService.isMobile.subscribe(isMobile => {
|
||||
this.isMobile = isMobile;
|
||||
}));
|
||||
this.params.subscribe(params => {
|
||||
this.alias = params['stakeholder'];
|
||||
if (this.alias) {
|
||||
|
@ -150,30 +130,6 @@ export class RpoComponent extends StakeholderBaseComponent implements OnInit {
|
|||
super.ngOnDestroy();
|
||||
this.layoutService.setRootClass(null);
|
||||
this.setProperties(Irish.irishAdminToolsCommunity, Irish.irishAdminToolsPortalType, this.configurationService);
|
||||
LinksResolver.resetProperties();
|
||||
}
|
||||
|
||||
get isManager() {
|
||||
return Session.isPortalAdministrator(this.userManagementService.user) ||
|
||||
Session.isCurator(this.stakeholder.type, this.userManagementService.user) ||
|
||||
Session.isManager(this.stakeholder.type, this.stakeholder.alias, this.userManagementService.user);
|
||||
}
|
||||
|
||||
get isMember() {
|
||||
return this.isManager ||
|
||||
Session.isMember(this.stakeholder.type, this.stakeholder.alias, this.userManagementService.user);
|
||||
}
|
||||
|
||||
get adminLink() {
|
||||
return "/admin/" + this.stakeholder.alias;
|
||||
}
|
||||
|
||||
get sandboxLink() {
|
||||
if(this.properties.environment !== 'beta' && this.isMember) {
|
||||
return beta.domain + '/rpo/' + this.stakeholder.alias;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -9,7 +9,6 @@ import {LogoUrlPipeModule} from "../openaireLibrary/utils/pipes/logoUrlPipe.modu
|
|||
import {IconsService} from "../openaireLibrary/utils/icons/icons.service";
|
||||
import {open_access} from "../openaireLibrary/utils/icons/icons";
|
||||
import {SandboxGuard} from "../shared/sandbox.guard";
|
||||
import {OaIndicatorModule} from "../shared/oa-indicator/oa-indicator.module";
|
||||
|
||||
const routes: Route[] = [
|
||||
{
|
||||
|
@ -22,7 +21,7 @@ const routes: Route[] = [
|
|||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [CommonModule, RouterModule.forChild(routes), LoadingModule, RoleVerificationModule, IconsModule, LogoUrlPipeModule, OaIndicatorModule],
|
||||
imports: [CommonModule, RouterModule.forChild(routes), LoadingModule, RoleVerificationModule, IconsModule, LogoUrlPipeModule],
|
||||
declarations: [RpoComponent],
|
||||
exports: [RpoComponent],
|
||||
})
|
||||
|
|
|
@ -2,6 +2,7 @@ import {Component} from '@angular/core';
|
|||
import {ActivatedRoute, Router} from "@angular/router";
|
||||
import {StakeholderService} from "../../../openaireLibrary/monitor/services/stakeholder.service";
|
||||
import {Subscriber} from "rxjs";
|
||||
import {ConfigurationService} from "../../../openaireLibrary/utils/configuration/configuration.service";
|
||||
|
||||
@Component({
|
||||
selector: 'monitor-organization',
|
||||
|
|
|
@ -57,13 +57,12 @@ export class LinksResolver {
|
|||
searchLinkToAdvancedOrganizations: properties.searchLinkToAdvancedOrganizations,
|
||||
errorLink: properties.errorLink
|
||||
};
|
||||
|
||||
|
||||
public static setProperties(alias: string) {
|
||||
Object.keys(this.default).forEach(field => {
|
||||
properties[field] = "/" + alias + (<string>this.default[field]);
|
||||
});
|
||||
}
|
||||
|
||||
public static setSearchAndResultLanding(alias: string) {
|
||||
properties.searchLinkToResult= "/" + alias + this.default.searchLinkToResult;
|
||||
properties.searchLinkToPublication= "/" + alias + this.default.searchLinkToPublication;
|
||||
|
@ -77,8 +76,9 @@ export class LinksResolver {
|
|||
properties.searchLinkToAdvancedOrps= "/" + alias + this.default.searchLinkToAdvancedOrps;
|
||||
|
||||
}
|
||||
|
||||
public static resetProperties() {
|
||||
this.setProperties('national/');
|
||||
Object.keys(this.default).forEach(field => {
|
||||
properties[field] = this.default[field];
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,24 +6,22 @@ import {CustomFilterService} from "../../../openaireLibrary/shared/customFilter.
|
|||
@Component({
|
||||
selector: 'monitor-search-dataproviders',
|
||||
template: `
|
||||
<div class="uk-flex uk-flex-center uk-margin-medium-bottom uk-margin-medium-top">
|
||||
<div class="uk-width-1-1 uk-width-auto@s uk-padding uk-padding-remove-vertical">
|
||||
<div class=" uk-flex uk-flex-right">
|
||||
<a [routerLink]="properties.searchLinkToAdvancedDataProviders" [queryParams]="parameters">Advanced
|
||||
search</a>
|
||||
</div>
|
||||
<div search-input [(value)]="keyword" [placeholder]="'Search by name, description, subject...'"
|
||||
[searchInputClass]="'inner background'" (searchEmitter)="search()"
|
||||
class="uk-width-xlarge@l uk-width-large@m uk-width-1-1"></div>
|
||||
</div>
|
||||
<div class="uk-flex uk-flex-center">
|
||||
<div class="uk-width-1-1 uk-width-auto@s uk-padding uk-padding-remove-vertical">
|
||||
<div class=" uk-flex uk-flex-right">
|
||||
<a [routerLink]="properties.searchLinkToAdvancedDataProviders" [queryParams]="parameters">Advanced search</a>
|
||||
</div>
|
||||
<div search-input [(value)]="keyword" [placeholder]="'Search by name, description, subject...'"
|
||||
[searchInputClass]="'inner background'" (searchEmitter)="search()" class="uk-width-xlarge@l uk-width-large@m uk-width-1-1"></div>
|
||||
</div>
|
||||
<search-dataproviders *ngIf="customFilters"
|
||||
[customFilters]=customFilters
|
||||
[hasPrefix]="false"
|
||||
[includeOnlyResultsAndFilter]="true" [showBreadcrumb]="false"
|
||||
[showSwitchSearchLink]="false"
|
||||
[searchForm]="{dark: false, class: 'search-form'}">
|
||||
</search-dataproviders>
|
||||
</div>
|
||||
<search-dataproviders *ngIf="customFilters"
|
||||
[customFilters]=customFilters
|
||||
[hasPrefix]="false"
|
||||
[includeOnlyResultsAndFilter]="true" [showBreadcrumb]="false"
|
||||
[showSwitchSearchLink]="false"
|
||||
[searchForm]="{dark: false, class: 'search-form'}">
|
||||
</search-dataproviders>
|
||||
`
|
||||
})
|
||||
export class MonitorSearchDataprovidersComponent extends SearchBaseComponent{
|
||||
|
|
|
@ -6,17 +6,15 @@ import {CustomFilterService} from "../../../openaireLibrary/shared/customFilter.
|
|||
@Component({
|
||||
selector: 'monitor-search-organizations',
|
||||
template: `
|
||||
<div class="uk-flex uk-flex-center uk-margin-medium-bottom uk-margin-medium-top">
|
||||
<div class="uk-width-1-1 uk-width-auto@s uk-padding uk-padding-remove-vertical">
|
||||
<div class=" uk-flex uk-flex-right">
|
||||
<a [routerLink]="properties.searchLinkToAdvancedOrganizations" [queryParams]="parameters">Advanced
|
||||
search</a>
|
||||
</div>
|
||||
<div search-input [(value)]="keyword" [placeholder]="'Search by organization name...'"
|
||||
[searchInputClass]="'inner background'" (searchEmitter)="search()"
|
||||
class="uk-width-xlarge@l uk-width-large@m uk-width-1-1"></div>
|
||||
</div>
|
||||
<div class=" uk-flex uk-flex-center ">
|
||||
<div class="uk-width-1-1 uk-width-auto@s uk-padding uk-padding-remove-vertical">
|
||||
<div class=" uk-flex uk-flex-right">
|
||||
<a [routerLink]="properties.searchLinkToAdvancedOrganizations" [queryParams]="parameters">Advanced search</a>
|
||||
</div>
|
||||
<div search-input [(value)]="keyword" [placeholder]="'Search by organization name...'"
|
||||
[searchInputClass]="'inner background'" (searchEmitter)="search()" class="uk-width-xlarge@l uk-width-large@m uk-width-1-1"></div>
|
||||
</div>
|
||||
</div>
|
||||
<search-organizations *ngIf="customFilters" [customFilters]="customFilters"
|
||||
[hasPrefix]="false"
|
||||
[includeOnlyResultsAndFilter]="true" [showBreadcrumb]="false"
|
||||
|
|
|
@ -6,23 +6,21 @@ import {CustomFilterService} from "../../../openaireLibrary/shared/customFilter.
|
|||
@Component({
|
||||
selector: 'monitor-search-projects',
|
||||
template: `
|
||||
<div class="uk-flex uk-flex-center uk-margin-medium-bottom uk-margin-medium-top">
|
||||
<div class="uk-width-1-1 uk-width-auto@s uk-padding uk-padding-remove-vertical">
|
||||
<div class=" uk-flex uk-flex-right">
|
||||
<a [routerLink]="properties.searchLinkToAdvancedProjects" [queryParams]="parameters">Advanced
|
||||
search</a>
|
||||
</div>
|
||||
<div search-input [(value)]="keyword" [placeholder]="'Search by title, acronym, project code...'"
|
||||
[searchInputClass]="'inner background'" (searchEmitter)="search()"
|
||||
class="uk-width-xlarge@l uk-width-large@m uk-width-1-1"></div>
|
||||
</div>
|
||||
<div class=" uk-flex uk-flex-center ">
|
||||
<div class="uk-width-1-1 uk-width-auto@s uk-padding uk-padding-remove-vertical">
|
||||
<div class=" uk-flex uk-flex-right">
|
||||
<a [routerLink]="properties.searchLinkToAdvancedProjects" [queryParams]="parameters">Advanced search</a>
|
||||
</div>
|
||||
<div search-input [(value)]="keyword" [placeholder]="'Search by title, acronym, project code...'"
|
||||
[searchInputClass]="'inner background'" (searchEmitter)="search()" class="uk-width-xlarge@l uk-width-large@m uk-width-1-1"></div>
|
||||
</div>
|
||||
</div>
|
||||
<search-projects *ngIf="customFilters"
|
||||
[customFilters]="customFilters" [hasPrefix]="false"
|
||||
[customFilters]="customFilters" [hasPrefix]="false"
|
||||
[includeOnlyResultsAndFilter]="true" [showBreadcrumb]="false"
|
||||
[showSwitchSearchLink]="false"
|
||||
[searchForm]="{dark: false, class: 'search-form'}"
|
||||
>
|
||||
[searchForm]="{dark: false, class: 'search-form'}"
|
||||
>
|
||||
</search-projects>
|
||||
`
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ import {OpenaireEntities} from "../../../openaireLibrary/utils/properties/search
|
|||
@Component({
|
||||
selector: 'monitor-search-results',
|
||||
template: `
|
||||
<div class="uk-flex uk-flex-center uk-margin-medium-bottom uk-margin-medium-top">
|
||||
<div class=" uk-flex uk-flex-center uk-margin-medium-bottom">
|
||||
<div class="uk-width-1-1 uk-width-auto@s uk-padding uk-padding-remove-vertical">
|
||||
<div class=" uk-flex uk-flex-right">
|
||||
<a [routerLink]="properties.searchLinkToAdvancedResults" [queryParams]="parameters"
|
||||
|
|
|
@ -0,0 +1,123 @@
|
|||
import {ChangeDetectorRef, Directive, OnInit} from "@angular/core";
|
||||
import {StakeholderBaseComponent} from "../openaireLibrary/monitor-admin/utils/stakeholder-base.component";
|
||||
import {StakeholderType} from "../openaireLibrary/monitor/entities/stakeholder";
|
||||
import {Option} from "../openaireLibrary/sharedComponents/input/input.component";
|
||||
import {FormBuilder, FormControl} from "@angular/forms";
|
||||
import {debounceTime, distinctUntilChanged} from "rxjs/operators";
|
||||
import {HelperFunctions} from "../openaireLibrary/utils/HelperFunctions.class";
|
||||
import {LayoutService} from "../openaireLibrary/dashboard/sharedComponents/sidebar/layout.service";
|
||||
import {IrishMonitorService} from "./irish-monitor.service";
|
||||
import {StakeholderPublication} from "./irish";
|
||||
import {OpenaireEntities} from "../openaireLibrary/utils/properties/searchFields";
|
||||
|
||||
@Directive()
|
||||
export class BrowseStakeholderBaseComponent extends StakeholderBaseComponent implements OnInit {
|
||||
openaireEntities = OpenaireEntities;
|
||||
stakeholderType: StakeholderType;
|
||||
stakeholders: StakeholderPublication[] = [];
|
||||
filteredStakeholders: StakeholderPublication[] = [];
|
||||
showLoading: boolean = true;
|
||||
isMobile: boolean = false;
|
||||
|
||||
gridView: boolean = true;
|
||||
sortOptions: Option[] = [
|
||||
{value: null, label: 'Number of Publications'},
|
||||
{value: 'alphAsc', label: 'Alphabetically Asc. (A-Z)'},
|
||||
{value: 'alphDsc', label: 'Alphabetically Dsc. (Z-A)'},
|
||||
/*{value: 'oaDsc', label: '"Open Access %" Dsc.'}*/
|
||||
];
|
||||
pageOptions: number[] = [10, 20, 30, 40];
|
||||
sortBy: string = null;
|
||||
currentPage: number = 1;
|
||||
pageSize: number = 10;
|
||||
parameters = {};
|
||||
keywordControl: FormControl;
|
||||
hasPublications: boolean = true;
|
||||
|
||||
/* Services */
|
||||
protected irishMonitorService: IrishMonitorService;
|
||||
protected layoutService: LayoutService;
|
||||
protected cdr: ChangeDetectorRef;
|
||||
protected fb: FormBuilder;
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.keywordControl = this.fb.control(this._route.snapshot.queryParams.keyword);
|
||||
this.subscriptions.push(this.layoutService.isMobile.subscribe(isMobile => {
|
||||
this.isMobile = isMobile;
|
||||
this.cdr.detectChanges();
|
||||
}));
|
||||
this.stakeholderType = this._route.snapshot.data.type;
|
||||
if(!this.stakeholderType) {
|
||||
this.navigateToError();
|
||||
}
|
||||
this.subscriptions.push(this.irishMonitorService.getStakeholdersWithPublications(this.stakeholderType).subscribe(stakeholders => {
|
||||
this.stakeholders = stakeholders;
|
||||
this.filteredStakeholders = stakeholders;
|
||||
this.hasPublications = this.stakeholders.length > 0 && this.stakeholders.filter(stakeholder => stakeholder.publications > 0).length > 0;
|
||||
if(!this.hasPublications) {
|
||||
this.sortBy = 'alphAsc';
|
||||
this.sortOptions = this.sortOptions.filter(option => !!option.value);
|
||||
}
|
||||
this.sortByChanged();
|
||||
this.filtering(this.keywordControl.value);
|
||||
}));
|
||||
this.subscriptions.push(this.keywordControl.valueChanges.pipe(debounceTime(200), distinctUntilChanged()).subscribe(value => {
|
||||
this.filtering(value);
|
||||
if(value?.length > 0) {
|
||||
this.parameters['keyword'] = value;
|
||||
} else {
|
||||
delete this.parameters['keyword']
|
||||
}
|
||||
this._router.navigate([], {queryParams: this.parameters});
|
||||
}));
|
||||
}
|
||||
|
||||
private filtering(value) {
|
||||
if(!value){
|
||||
this.filteredStakeholders = this.stakeholders;
|
||||
} else {
|
||||
this.filteredStakeholders = this.stakeholders.filter(item => (item['name'] && item['name'].toLowerCase().includes(value.toLowerCase())) || (item['alias'] && item['alias'].toLowerCase().includes(value.toLowerCase())));
|
||||
}
|
||||
this.afterStakeholdersInitialized();
|
||||
this.currentPage = 1;
|
||||
}
|
||||
|
||||
sortByChanged() {
|
||||
switch(this.sortBy) {
|
||||
case 'alphAsc':
|
||||
this.stakeholders = this.stakeholders.sort((a, b) => a['name'].localeCompare(b['name']));
|
||||
break;
|
||||
case 'alphDsc':
|
||||
this.stakeholders = this.stakeholders.sort((a, b) => b['name'].localeCompare(a['name']));
|
||||
break;
|
||||
default:
|
||||
this.stakeholders = this.stakeholders.sort((a, b) => b.publications - a.publications);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
sizeChanged($event) {
|
||||
this.pageSize = $event;
|
||||
this.currentPage = 1;
|
||||
this.afterStakeholdersInitialized();
|
||||
}
|
||||
|
||||
updateCurrentPage($event) {
|
||||
this.currentPage = $event.value;
|
||||
HelperFunctions.scrollToId('target');
|
||||
this.afterStakeholdersInitialized();
|
||||
}
|
||||
|
||||
get typeAsLabel() {
|
||||
return this.stakeholderUtils.types.find(type => type.value === this.stakeholderType).label;
|
||||
}
|
||||
|
||||
afterStakeholdersInitialized() {
|
||||
// this is a method that will be overriden from the components extending this base component, if needed
|
||||
this.showLoading = false;
|
||||
}
|
||||
}
|
|
@ -1,191 +1,170 @@
|
|||
<ng-container *ngIf="showLoading">
|
||||
<div class="uk-container uk-container-large uk-section">
|
||||
<loading></loading>
|
||||
</div>
|
||||
<div class="uk-container uk-container-large uk-section">
|
||||
<loading></loading>
|
||||
</div>
|
||||
</ng-container>
|
||||
<div *ngIf="!showLoading" class="uk-container uk-container-large uk-section-small">
|
||||
<div class="uk-flex uk-flex-middle uk-flex-between">
|
||||
<div class="uk-visible@m uk-width-small">
|
||||
</div>
|
||||
<div search-input *ngIf="keywordControl" [searchControl]="keywordControl" [searchInputClass]="'flat'"
|
||||
[iconPosition]="'left'"
|
||||
placeholder="Search for {{typeAsLabel}} {{entities.stakeholders}}" [disabled]="stakeholders.length === 0"
|
||||
class="uk-width-xlarge@l uk-width-large@m uk-width-1-1">
|
||||
</div>
|
||||
<div *ngIf="!isMobile">
|
||||
<div [class.uk-disabled]="stakeholders.length === 0"
|
||||
class="uk-flex uk-flex-middle uk-flex-right uk-width-small">
|
||||
<button (click)="gridView = true" [class.uk-button-primary]="gridView"
|
||||
[disabled]="stakeholders.length === 0"
|
||||
class="uk-icon-button uk-button-default uk-border-rounded uk-icon-button-small">
|
||||
<icon name="apps" [flex]="true" type="round" [ratio]="1.2"></icon>
|
||||
</button>
|
||||
<button (click)="gridView = false" [class.uk-button-primary]="!gridView"
|
||||
[disabled]="stakeholders.length === 0"
|
||||
class="uk-icon-button uk-button-default uk-border-rounded uk-icon-button-small uk-margin-small-left">
|
||||
<icon name="view_list" [flex]="true" type="round" [ratio]="1.2"></icon>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="!showLoading" class="uk-container uk-container-large">
|
||||
<div class="uk-flex uk-flex-middle uk-flex-between">
|
||||
<div class="uk-visible@m uk-width-small">
|
||||
</div>
|
||||
<div class="uk-grid uk-flex-middle uk-flex-between@m uk-flex-center uk-margin-large-top" [id]="id" uk-grid>
|
||||
<div class="uk-flex uk-flex-middle">
|
||||
<div *ngIf="sortOptions?.length > 0" class="uk-width-small uk-margin-medium-right">
|
||||
<div input
|
||||
type="select" placeholder="Sort by" inputClass="border-bottom"
|
||||
[options]="sortOptions" [(value)]="sortBy" (valueChange)="sortByChanged()">
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-width-xsmall">
|
||||
<div input
|
||||
type="select" placeholder="Results per page" inputClass="border-bottom"
|
||||
[options]="pageOptions" [(value)]="pageSize" (valueChange)="sizeChanged($event)">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<paging-no-load *ngIf="filteredStakeholders.length > pageSize"
|
||||
(pageChange)="updateCurrentPage($event)"
|
||||
[currentPage]="currentPage" [size]="pageSize"
|
||||
[totalResults]="filteredStakeholders.length">
|
||||
</paging-no-load>
|
||||
</div>
|
||||
<div search-input *ngIf="keywordControl" [searchControl]="keywordControl" [searchInputClass]="'flat'" [iconPosition]="'left'"
|
||||
placeholder="Search for {{typeAsLabel}} {{entities.stakeholders}}" [disabled]="stakeholders.length === 0" class="uk-width-xlarge@l uk-width-large@m uk-width-1-1">
|
||||
</div>
|
||||
<div class="uk-margin-large-top" id="target">
|
||||
<div *ngIf="!filteredStakeholders || filteredStakeholders?.length == 0" class="uk-flex uk-flex-center">
|
||||
<div class="uk-alert uk-alert-primary uk-text-center uk-width-2-3@m uk-width-1-1">
|
||||
No {{ entities.stakeholders }} available
|
||||
</div>
|
||||
</div>
|
||||
<!-- STAKEHOLDERS -->
|
||||
<!-- Grid view -->
|
||||
<ng-container *ngIf="gridView || isMobile; else elseBlock">
|
||||
<div class="uk-grid" class="uk-child-width-1-4@l uk-child-width-1-3@m uk-child-width-1-1"
|
||||
uk-grid uk-height-match="target: .top-info;">
|
||||
<div *ngFor="let item of filteredStakeholders.slice((currentPage-1)*pageSize, currentPage*pageSize)">
|
||||
<a [routerLink]="['./', item.alias]" class="uk-link-reset">
|
||||
<div class="uk-card uk-card-default uk-card-hover">
|
||||
<div class="uk-padding-small top-info">
|
||||
<!-- logo -->
|
||||
<!-- remove max-width style, add something custom maybe? -->
|
||||
<div class="uk-flex uk-flex-center uk-flex-middle uk-height-xsmall">
|
||||
<img *ngIf="item.logoUrl; else elseBlock" [src]="item | logoUrl"
|
||||
[alt]="item.name + ' logo'" class="uk-height-max-xsmall uk-blend-multiply"
|
||||
style="max-width: 180px;">
|
||||
<ng-template #elseBlock>
|
||||
<img src="assets/common-assets/placeholder.png" alt="OpenAIRE placeholder logo"
|
||||
class="uk-height-max-xsmall uk-blend-multiply" style="max-width: 180px;">
|
||||
</ng-template>
|
||||
</div>
|
||||
<!-- name -->
|
||||
<div class="uk-text-center uk-text-bold uk-margin-top multi-line-ellipsis lines-2">
|
||||
<div [title]="item.name">
|
||||
{{ item.name }}
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="item.publications"
|
||||
class="uk-margin-small-top uk-text-xsmall uk-text-center">
|
||||
{{ openaireEntities.PUBLICATIONS }}: {{ item.publications | number }}
|
||||
</div>
|
||||
</div>
|
||||
<!-- when OA badges are re-introduced, the below if-statement will have to be moved on its correct div -->
|
||||
<div *ngIf="item.funderType || item.openAccess"
|
||||
class="uk-card-footer uk-padding-small uk-background-muted">
|
||||
<div class="uk-grid uk-grid-small uk-grid-divider uk-flex-center uk-flex-middle uk-child-width-1-2@m"
|
||||
uk-grid>
|
||||
<div *ngIf="item.funderType">
|
||||
<div class="uk-text-xsmall">
|
||||
Type
|
||||
</div>
|
||||
<div class="uk-text-small uk-text-bold">
|
||||
{{ getFunderTypeLabel(item.funderType) }}
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="item.openAccess">
|
||||
<div class="uk-text-center uk-text-bold">
|
||||
<span class="uk-text-small">{{ item.openAccess.toFixed(1) }}</span>
|
||||
<span class="uk-text-xsmall">%</span>
|
||||
</div>
|
||||
<progress
|
||||
class="uk-progress open-access uk-margin-xsmall-top uk-margin-xsmall-bottom"
|
||||
[value]="item.openAccess" max="100"></progress>
|
||||
<div class="uk-flex uk-text-center uk-flex-middle" [attr.uk-tooltip]="'Open Access with Licence (' + year + ')'">
|
||||
<icon [name]="'open_access'" [flex]="true" [ratio]="0.8"
|
||||
class="open-access"></icon>
|
||||
<span class="uk-text-xsmall uk-margin-xsmall-left">Open Access ({{year}})</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</ng-container>
|
||||
<!-- List view -->
|
||||
<ng-template #elseBlock>
|
||||
<div>
|
||||
<table class="uk-table uk-table-striped uk-table-middle uk-table-responsive uk-table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Logo</th>
|
||||
<th>Name</th>
|
||||
<th *ngIf="stakeholderType === 'funder'">Type</th>
|
||||
<th *ngIf="hasPublications"># of Publications</th>
|
||||
<th *ngIf="hasOpenAccess" class="uk-flex uk-flex-middle">
|
||||
<icon [name]="'open_access'" [flex]="true" [ratio]="0.8" class="open-access"></icon>
|
||||
<span class="uk-margin-xsmall-left">Open Access with Licence ({{year}})</span>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr *ngFor="let item of filteredStakeholders.slice((currentPage-1)*pageSize, currentPage*pageSize)"
|
||||
class="clickable" [routerLink]="['./', item.alias]">
|
||||
<td>
|
||||
<div class="uk-flex uk-flex-middle uk-height-xsmall uk-margin-left">
|
||||
<img *ngIf="item.logoUrl; else elseBlock" [src]="item | logoUrl"
|
||||
[alt]="item.name + ' logo'" class="uk-height-max-xsmall uk-blend-multiply"
|
||||
style="max-width: 140px;">
|
||||
<ng-template #elseBlock>
|
||||
<img src="assets/common-assets/placeholder.png" alt="OpenAIRE placeholder logo"
|
||||
class="uk-height-max-xsmall uk-blend-multiply" style="max-width: 140px;">
|
||||
</ng-template>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="uk-text-truncate uk-text-capitalize uk-text-italic uk-text-small uk-text-bold uk-width-large"
|
||||
[title]="item.name">
|
||||
{{ item.name }}
|
||||
</div>
|
||||
</td>
|
||||
<td *ngIf="stakeholderType === 'funder'">
|
||||
<div *ngIf="item.funderType" class="uk-text-small uk-text-bold uk-text-capitalize">
|
||||
{{ getFunderTypeLabel(item.funderType) }}
|
||||
</div>
|
||||
</td>
|
||||
<td *ngIf="hasPublications">
|
||||
<div *ngIf="item.publications > 0"
|
||||
class="uk-text-truncate uk-text-capitalize uk-text-italic uk-text-small uk-text-bold"
|
||||
[title]="item.name">
|
||||
{{ item.publications | number }}
|
||||
</div>
|
||||
<div *ngIf="!item.publications">--</div>
|
||||
</td>
|
||||
<td *ngIf="hasOpenAccess">
|
||||
<div *ngIf="item.openAccess" class="uk-width-xsmall uk-margin-left">
|
||||
<div class="uk-text-center uk-text-bold">
|
||||
<span class="uk-text-small">{{item.openAccess.toFixed(1)}}</span>
|
||||
<span class="uk-text-xsmall">%</span>
|
||||
</div>
|
||||
<progress class="uk-progress open-access uk-margin-xsmall-top uk-margin-xsmall-bottom"
|
||||
[value]="item.openAccess" max="100"></progress>
|
||||
</div>
|
||||
<div *ngIf="!item.openAccess">--</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</ng-template>
|
||||
<div *ngIf="!isMobile">
|
||||
<div [class.uk-disabled]="stakeholders.length === 0" class="uk-flex uk-flex-middle uk-flex-right uk-width-small">
|
||||
<button (click)="gridView = true" [class.uk-button-primary]="gridView" [disabled]="stakeholders.length === 0"
|
||||
class="uk-icon-button uk-button-default uk-border-rounded uk-icon-button-small">
|
||||
<icon name="apps" [flex]="true" type="round" [ratio]="1.2"></icon>
|
||||
</button>
|
||||
<button (click)="gridView = false" [class.uk-button-primary]="!gridView" [disabled]="stakeholders.length === 0"
|
||||
class="uk-icon-button uk-button-default uk-border-rounded uk-icon-button-small uk-margin-small-left">
|
||||
<icon name="view_list" [flex]="true" type="round" [ratio]="1.2"></icon>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-flex uk-flex-middle uk-flex-between uk-margin-large-top">
|
||||
<div class="uk-flex uk-flex-middle">
|
||||
<div *ngIf="sortOptions?.length > 0" class="uk-width-small uk-margin-medium-right">
|
||||
<div input
|
||||
type="select" placeholder="Sort by" inputClass="border-bottom"
|
||||
[options]="sortOptions" [(value)]="sortBy" (valueChange)="sortByChanged()">
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-width-xsmall">
|
||||
<div input
|
||||
type="select" placeholder="Results per page" inputClass="border-bottom"
|
||||
[options]="pageOptions" [(value)]="pageSize" (valueChange)="sizeChanged($event)">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<paging-no-load *ngIf="filteredStakeholders.length > pageSize"
|
||||
(pageChange)="updateCurrentPage($event)"
|
||||
[currentPage]="currentPage" [size]="pageSize"
|
||||
[totalResults]="filteredStakeholders.length">
|
||||
</paging-no-load>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-margin-large-top" id="target">
|
||||
<div *ngIf="!filteredStakeholders || filteredStakeholders?.length == 0" class="uk-flex uk-flex-center">
|
||||
<div class="uk-alert uk-alert-primary uk-text-center uk-width-2-3@m uk-width-1-1">
|
||||
No {{entities.stakeholders}} available
|
||||
</div>
|
||||
</div>
|
||||
<!-- STAKEHOLDERS -->
|
||||
<!-- Grid view -->
|
||||
<ng-container *ngIf="gridView || isMobile; else elseBlock">
|
||||
<div class="uk-grid" class="uk-child-width-1-4@l uk-child-width-1-3@m uk-child-width-1-1"
|
||||
uk-grid uk-height-match="target: .top-info;">
|
||||
<div *ngFor="let item of filteredStakeholders.slice((currentPage-1)*pageSize, currentPage*pageSize)">
|
||||
<a routerLink="./{{item.alias}}" class="uk-link-reset">
|
||||
<div class="uk-card uk-card-default uk-card-hover">
|
||||
<div class="uk-padding-small top-info">
|
||||
<!-- logo -->
|
||||
<!-- remove max-width style, add something custom maybe? -->
|
||||
<div class="uk-flex uk-flex-center uk-flex-middle uk-height-xsmall">
|
||||
<img *ngIf="item.logoUrl; else elseBlock" [src]="item | logoUrl" [alt]="item.name + ' logo'" class="uk-height-max-xsmall uk-blend-multiply" style="max-width: 180px;">
|
||||
<ng-template #elseBlock>
|
||||
<img src="assets/common-assets/placeholder.png" alt="OpenAIRE placeholder logo" class="uk-height-max-xsmall uk-blend-multiply" style="max-width: 180px;">
|
||||
</ng-template>
|
||||
</div>
|
||||
<!-- name -->
|
||||
<div class="uk-text-center uk-text-bold uk-margin-top multi-line-ellipsis lines-2">
|
||||
<div [title]="item.name">
|
||||
{{item.name}}
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="item.publications" class="uk-margin-small-top uk-text-xsmall uk-text-center">
|
||||
{{openaireEntities.PUBLICATIONS}}: {{item.publications | number}}
|
||||
</div>
|
||||
</div>
|
||||
<!-- when OA badges are re-introduced, the below if-statement will have to be moved on its correct div -->
|
||||
<div *ngIf="item.funderType" class="uk-card-footer uk-padding-small uk-background-muted">
|
||||
<div class="uk-grid uk-grid-divider uk-flex-center uk-flex-middle uk-child-width-1-2@m" uk-grid>
|
||||
<div *ngIf="item.funderType">
|
||||
<div class="uk-text-xsmall">
|
||||
Type
|
||||
</div>
|
||||
<div class="uk-text-small uk-text-bold">
|
||||
{{getFunderTypeLabel(item.funderType)}}
|
||||
</div>
|
||||
</div>
|
||||
<!-- Commenting out temporarily the div below - OA badge -->
|
||||
<!-- <div>
|
||||
<div class="uk-text-center uk-text-bold">
|
||||
<span class="uk-text-small">50</span>
|
||||
<span class="uk-text-xsmall">%</span>
|
||||
</div>
|
||||
<progress class="uk-progress open-access uk-margin-xsmall-top uk-margin-xsmall-bottom" [value]="50" max="100"></progress>
|
||||
<div class="uk-flex uk-flex-middle">
|
||||
<icon [name]="'open_access'" [flex]="true" [ratio]="0.8" class="open-access"></icon>
|
||||
<span class="uk-text-xsmall uk-margin-xsmall-left">Open Access</span>
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</ng-container>
|
||||
<!-- List view -->
|
||||
<ng-template #elseBlock>
|
||||
<div>
|
||||
<table class="uk-table uk-table-striped uk-table-middle uk-table-responsive uk-table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Logo</th>
|
||||
<th>Name</th>
|
||||
<th *ngIf="hasPublications"># of Publications</th>
|
||||
<th *ngIf="stakeholderType === 'funder'">Type</th>
|
||||
<!-- <th class="uk-flex uk-flex-middle">
|
||||
<icon [name]="'open_access'" [flex]="true" [ratio]="0.8" class="open-access"></icon>
|
||||
<span class="uk-margin-xsmall-left">Open Access %</span>
|
||||
</th> -->
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr *ngFor="let item of filteredStakeholders.slice((currentPage-1)*pageSize, currentPage*pageSize)"
|
||||
class="clickable" routerLink="./{{item.alias}}">
|
||||
<td>
|
||||
<!-- remove max-width style, add something custom maybe? -->
|
||||
<div class="uk-flex uk-flex-middle uk-height-xsmall uk-margin-left">
|
||||
<img *ngIf="item.logoUrl; else elseBlock" [src]="item | logoUrl" [alt]="item.name + ' logo'" class="uk-height-max-xsmall uk-blend-multiply" style="max-width: 140px;">
|
||||
<ng-template #elseBlock>
|
||||
<img src="assets/common-assets/placeholder.png" alt="OpenAIRE placeholder logo" class="uk-height-max-xsmall uk-blend-multiply" style="max-width: 140px;">
|
||||
</ng-template>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="uk-text-truncate uk-text-capitalize uk-text-italic uk-text-small uk-text-bold" [title]="item.name">
|
||||
{{item.name}}
|
||||
</div>
|
||||
</td>
|
||||
<td *ngIf="hasPublications">
|
||||
<div class="uk-text-truncate uk-text-capitalize uk-text-italic uk-text-small uk-text-bold" [title]="item.name">
|
||||
{{item.publications | number}}
|
||||
</div>
|
||||
</td>
|
||||
<td *ngIf="stakeholderType === 'funder'">
|
||||
<div *ngIf="item.funderType" class="uk-text-small uk-text-bold uk-text-capitalize">
|
||||
{{getFunderTypeLabel(item.funderType)}}
|
||||
</div>
|
||||
</td>
|
||||
<!-- <td>
|
||||
<div class="uk-width-xsmall uk-margin-left">
|
||||
<div class="uk-text-center uk-text-bold">
|
||||
<span class="uk-text-small">50</span>
|
||||
<span class="uk-text-xsmall">%</span>
|
||||
</div>
|
||||
<progress class="uk-progress open-access uk-margin-xsmall-top uk-margin-xsmall-bottom" [value]="50" max="100"></progress>
|
||||
</div>
|
||||
</td> -->
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</ng-template>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -2,24 +2,14 @@ import {ChangeDetectorRef, Component} from "@angular/core";
|
|||
import {ActivatedRoute, Router} from "@angular/router";
|
||||
import {LayoutService} from "src/app/openaireLibrary/dashboard/sharedComponents/sidebar/layout.service";
|
||||
import {FormBuilder} from "@angular/forms";
|
||||
import {BrowseStakeholderBaseComponent} from "../browse-stakeholder-base.component";
|
||||
import {IrishMonitorService} from "../irish-monitor.service";
|
||||
import {StakeholderExtended} from "../irish";
|
||||
import {Option} from "../../openaireLibrary/sharedComponents/input/input.component";
|
||||
import {
|
||||
BrowseStakeholderBaseComponent
|
||||
} from "../../openaireLibrary/monitor/browse-stakeholder/browse-stakeholder-base.component";
|
||||
|
||||
@Component({
|
||||
selector: 'browse-stakeholder',
|
||||
templateUrl: 'browse-stakeholders.component.html'
|
||||
})
|
||||
export class BrowseStakeholdersComponent extends BrowseStakeholderBaseComponent<StakeholderExtended> {
|
||||
sortOptions: Option[] = [
|
||||
{value: null, label: 'Number of Publications'},
|
||||
{value: 'openAccess', label: 'Open Access'},
|
||||
{value: 'alphAsc', label: 'Alphabetically Asc. (A-Z)'},
|
||||
{value: 'alphDsc', label: 'Alphabetically Dsc. (Z-A)'},
|
||||
];
|
||||
export class BrowseStakeholdersComponent extends BrowseStakeholderBaseComponent {
|
||||
|
||||
constructor(protected _route: ActivatedRoute,
|
||||
protected _router: Router,
|
||||
|
@ -29,45 +19,4 @@ export class BrowseStakeholdersComponent extends BrowseStakeholderBaseComponent<
|
|||
protected fb: FormBuilder) {
|
||||
super();
|
||||
}
|
||||
|
||||
init() {
|
||||
this.subscriptions.push(this.irishMonitorService.getStakeholders(this.stakeholderType).subscribe(stakeholders => {
|
||||
this.stakeholders = stakeholders;
|
||||
this.filteredStakeholders = stakeholders;
|
||||
this.hasPublications = this.stakeholders.length > 0 && this.stakeholders.filter(stakeholder => stakeholder.publications > 0).length > 0;
|
||||
this.hasOpenAccess = this.stakeholders.length > 0 && this.stakeholders.filter(stakeholder => stakeholder.openAccess > 0).length > 0;
|
||||
if(!this.hasPublications) {
|
||||
this.sortOptions = this.sortOptions.filter(option => !!option.value);
|
||||
if(!this.hasOpenAccess) {
|
||||
this.sortOptions = this.sortOptions.filter(option => option.value === 'openAccess');
|
||||
this.sortBy = 'alphAsc';
|
||||
} else {
|
||||
this.sortBy = 'openAccess';
|
||||
}
|
||||
}
|
||||
this.sortByChanged();
|
||||
this.filtering(this.keywordControl.value);
|
||||
}));
|
||||
}
|
||||
|
||||
sortByChanged() {
|
||||
switch(this.sortBy) {
|
||||
case 'alphAsc':
|
||||
this.stakeholders = this.stakeholders.sort((a, b) => a['name'].localeCompare(b['name']));
|
||||
break;
|
||||
case 'alphDsc':
|
||||
this.stakeholders = this.stakeholders.sort((a, b) => b['name'].localeCompare(a['name']));
|
||||
break;
|
||||
case 'openAccess':
|
||||
this.stakeholders = this.stakeholders.sort((a, b) => b.openAccess - a.openAccess);
|
||||
break;
|
||||
default:
|
||||
this.stakeholders = this.stakeholders.sort((a, b) => b.publications - a.publications);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
get year() {
|
||||
return (new Date().getFullYear() - 1).toString();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,36 +0,0 @@
|
|||
<div id="help-pop-up">
|
||||
<button class="uk-button uk-button-primary uk-box-shadow-default uk-box-shadow-default-hover uk-flex uk-flex-middle" (click)="helpPopUpClicked = true">
|
||||
<icon *ngIf="!showDrop" name="help_outline" [flex]="true"></icon>
|
||||
<icon *ngIf="showDrop" name="close" [flex]="true"></icon>
|
||||
<span class="uk-margin-small-left">Help</span>
|
||||
</button>
|
||||
<div #drop id="pop-up" class="uk-drop" uk-drop="mode: click; pos: top-right; offset: 20">
|
||||
<div *ngIf="helpPopUpClicked" class="uk-card uk-card-default uk-card-body uk-box-shadow-default">
|
||||
<div class="uk-flex uk-flex-top uk-margin-medium-bottom">
|
||||
<icon name="ondemand_video" flex="true" customClass="uk-text-primary"></icon>
|
||||
<div class="uk-margin-small-left">
|
||||
<p class="uk-text-bold uk-margin-small-bottom">Basic interactivity functions</p>
|
||||
<a class="uk-link-reset" (click)="openGuideModal()">
|
||||
<img src="assets/irish-assets/interactive_functions_preview.png" alt="Basic interactive functions" loading="lazy">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<a routerLink="/methodology/terminology" target="_blank" class="uk-link-reset">
|
||||
<div class="uk-flex uk-flex-top uk-margin-medium-bottom">
|
||||
<icon name="info" flex="true" customClass="uk-text-primary"></icon>
|
||||
<div class="uk-margin-small-left">
|
||||
<p class="uk-text-bold uk-margin-xsmall-bottom">Terminology and construction</p>
|
||||
<span class="uk-text-small uk-text-meta">Do you have questions on our terminology?</span>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
<contact [page]="false"></contact>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<modal-alert #guideModal [large]="true">
|
||||
<div>
|
||||
<img src="assets/irish-assets/interactive_functions.gif" alt="Basic interactive functions">
|
||||
</div>
|
||||
</modal-alert>
|
|
@ -1,15 +0,0 @@
|
|||
@import (reference) "~src/assets/openaire-theme/less/_import-variables";
|
||||
|
||||
#help-pop-up {
|
||||
position: fixed;
|
||||
bottom: 5vh;
|
||||
right: 5vw;
|
||||
z-index: @global-z-index - 20;
|
||||
|
||||
.uk-drop {
|
||||
max-height: 550px;
|
||||
height: 385px;
|
||||
max-width: 80vw;
|
||||
width: 400px;
|
||||
}
|
||||
}
|
|
@ -1,39 +0,0 @@
|
|||
import {Component, ElementRef, OnInit, ViewChild} from "@angular/core";
|
||||
import {AlertModal} from "../../openaireLibrary/utils/modal/alert";
|
||||
|
||||
declare var UIkit;
|
||||
|
||||
@Component({
|
||||
selector: 'help-pop-up',
|
||||
templateUrl: 'help-pop-up.component.html',
|
||||
styleUrls: ['help-pop-up.component.less']
|
||||
})
|
||||
export class HelpPopUpComponent implements OnInit {
|
||||
private subscriptions: any[] = [];
|
||||
isClient: boolean = false;
|
||||
helpPopUpClicked: boolean = false;
|
||||
showDrop: boolean = false;
|
||||
@ViewChild('drop') drop: ElementRef;
|
||||
@ViewChild('guideModal', { static: true }) guideModal: AlertModal;
|
||||
|
||||
ngOnInit() {
|
||||
this.isClient = typeof document !== 'undefined';
|
||||
if(this.isClient) {
|
||||
this.subscriptions.push(UIkit.util.on(document, 'show', '#pop-up', (event) => {
|
||||
this.showDrop = true;
|
||||
}));
|
||||
this.subscriptions.push(UIkit.util.on(document, 'hide', '#pop-up', (event) => {
|
||||
this.showDrop = false;
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
openGuideModal() {
|
||||
this.guideModal.alertMessage = false;
|
||||
this.guideModal.alertHeader = false;
|
||||
this.guideModal.alertFooter = false;
|
||||
this.guideModal.cancelButton = false;
|
||||
this.guideModal.okButton = false;
|
||||
this.guideModal.open();
|
||||
}
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
import {NgModule} from '@angular/core';
|
||||
import {CommonModule} from '@angular/common';
|
||||
import {FormsModule} from '@angular/forms';
|
||||
import {AppRoutingModule} from '../../app-routing.module';
|
||||
import {IconsModule} from '../../openaireLibrary/utils/icons/icons.module';
|
||||
import {HelpPopUpComponent} from './help-pop-up.component';
|
||||
import {AlertModalModule} from '../../openaireLibrary/utils/modal/alertModal.module';
|
||||
import {ContactModule} from '../../contact/contact.module';
|
||||
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule, FormsModule, AppRoutingModule, IconsModule, ContactModule, AlertModalModule
|
||||
],
|
||||
declarations: [
|
||||
HelpPopUpComponent
|
||||
],
|
||||
providers:[],
|
||||
exports: [
|
||||
HelpPopUpComponent
|
||||
]
|
||||
})
|
||||
export class HelpPopUpModule {
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
import {Injectable} from "@angular/core";
|
||||
import {HttpClient} from "@angular/common/http";
|
||||
import {Observable} from "rxjs";
|
||||
import {StakeholderExtended} from "./irish";
|
||||
import {StakeholderPublication} from "./irish";
|
||||
import {properties} from "../../environments/environment";
|
||||
import {Stakeholder, StakeholderType} from "../openaireLibrary/monitor/entities/stakeholder";
|
||||
import {CustomOptions} from "../openaireLibrary/services/servicesUtils/customOptions.class";
|
||||
|
@ -19,15 +19,9 @@ export class IrishMonitorService {
|
|||
private stakeholderService: StakeholderService) {
|
||||
}
|
||||
|
||||
public getStakeholder(id: string): Observable<StakeholderExtended> {
|
||||
return this.http.get<StakeholderExtended>(properties.monitorServiceAPIURL + 'extended/' + id, CustomOptions.registryOptions()).pipe(map(stakeholder => {
|
||||
return HelperFunctions.copy(Stakeholder.checkIsUpload(stakeholder));
|
||||
}));
|
||||
}
|
||||
|
||||
public getStakeholders(type: StakeholderType): Observable<StakeholderExtended[]> {
|
||||
return this.http.get<StakeholderExtended[]>(properties.monitorServiceAPIURL + 'extended?type=' + type, CustomOptions.registryOptions()).pipe(catchError(err => {
|
||||
return this.stakeholderService.getStakeholders(type, null);
|
||||
public getStakeholdersWithPublications(type: StakeholderType): Observable<StakeholderPublication[]> {
|
||||
return this.http.get<StakeholderPublication[]>(properties.monitorServiceAPIURL + '/publications/' + type, CustomOptions.registryOptions()).pipe(catchError(err => {
|
||||
return this.stakeholderService.getStakeholders(properties.monitorServiceAPIURL, type, null);
|
||||
}), map(stakeholders => {
|
||||
return HelperFunctions.copy(Stakeholder.checkIsUpload(stakeholders));
|
||||
}));
|
||||
|
|
|
@ -3,28 +3,19 @@ import {StakeholderConfiguration} from "../openaireLibrary/monitor-admin/utils/i
|
|||
import {LayoutService} from "../openaireLibrary/dashboard/sharedComponents/sidebar/layout.service";
|
||||
import {Role} from "../openaireLibrary/login/utils/helper.class";
|
||||
import {Stakeholder} from "../openaireLibrary/monitor/entities/stakeholder";
|
||||
import {LinksResolver} from "../search/links-resolver";
|
||||
import {BelongsTo} from "../openaireLibrary/utils/entities/resultLandingInfo";
|
||||
import {properties} from "../../environments/environment";
|
||||
import {OpenaireEntities} from "../openaireLibrary/utils/properties/searchFields";
|
||||
|
||||
export class Irish {
|
||||
public static irishAdminToolsPortalType = "country";
|
||||
public static irishAdminToolsCommunity = "irish";
|
||||
public static METADATA_PREFIX = '';
|
||||
|
||||
public portal: Portal = Portal.getMockCommunityInfo("noami", "Noami", ['service'], ['/search/advanced/services', '/search/find/services']);
|
||||
public portal: Portal = Portal.getMockCommunityInfo("noami", "Noami",['service'],['/search/advanced/services', '/search/find/services']);
|
||||
|
||||
constructor() {
|
||||
LinksResolver.resetProperties();
|
||||
|
||||
Role.ROLES.manager = 'primary dashboard manager';
|
||||
Role.ROLES.member = 'manager';
|
||||
|
||||
StakeholderConfiguration.ENTITIES.stakeholder = 'Monitor';
|
||||
StakeholderConfiguration.ENTITIES.stakeholders = 'Monitors';
|
||||
StakeholderConfiguration.ENTITIES.funder = 'RFO';
|
||||
StakeholderConfiguration.ENTITIES.funders = 'RFOs';
|
||||
StakeholderConfiguration.ENTITIES.stakeholders = 'Monitors';
|
||||
StakeholderConfiguration.ENTITIES.funder = 'RFO';
|
||||
StakeholderConfiguration.ENTITIES.funders = 'RFOs';
|
||||
StakeholderConfiguration.ENTITIES.organization = 'RPO';
|
||||
StakeholderConfiguration.ENTITIES.organizations = 'RPOs';
|
||||
StakeholderConfiguration.ENTITIES.datasource = 'Repository';
|
||||
|
@ -33,24 +24,19 @@ export class Irish {
|
|||
StakeholderConfiguration.ENTITIES.researcher = 'Researcher';
|
||||
StakeholderConfiguration.ENTITIES.researchers = 'Researchers';
|
||||
|
||||
StakeholderConfiguration.STAKEHOLDER_CATEGORIES = [
|
||||
{name: 'All', plural: 'All', value: 'all'},
|
||||
{name: 'Template', plural: 'Templates', value: 'templates'},
|
||||
{name: 'Monitor', plural: 'Monitors', value: 'standalone'},
|
||||
];
|
||||
|
||||
StakeholderConfiguration.TYPES = [
|
||||
{value: 'funder', label: StakeholderConfiguration.ENTITIES.funder},
|
||||
{value: 'organization', label: StakeholderConfiguration.ENTITIES.organization},
|
||||
{value: 'country', label: StakeholderConfiguration.ENTITIES.country},
|
||||
{value: 'datasource', label: StakeholderConfiguration.ENTITIES.datasource},
|
||||
{value: 'researcher', label: StakeholderConfiguration.ENTITIES.researcher}
|
||||
|
||||
];
|
||||
|
||||
StakeholderConfiguration.FUNDER_TYPES = [
|
||||
{value: null, label: 'None'},
|
||||
{value: 'private', label: 'Private'},
|
||||
{value: 'government', label: 'Government'}
|
||||
{value: null, label: 'None'},
|
||||
{value: 'private', label: 'Private'},
|
||||
{value: 'government', label: 'Government'}
|
||||
];
|
||||
|
||||
StakeholderConfiguration.VISIBILITIES = [
|
||||
|
@ -62,169 +48,10 @@ export class Irish {
|
|||
LayoutService.HEADER_HEIGHT = '60px';
|
||||
|
||||
Role.GROUP = 'irish.';
|
||||
|
||||
/** OA Indicator */
|
||||
Irish.initializeOAIndicators();
|
||||
|
||||
/* Landing belongs to*/
|
||||
BelongsTo.result = {
|
||||
fields: [
|
||||
{path: ['countries'], value: 'Ireland'},
|
||||
{path: ['organizations', 'country'], value: 'Ireland'},
|
||||
{path: ['fundedByProjects', 'funderJurisdiction'], value: 'IE'}
|
||||
],
|
||||
message: 'This ((result)) is not specific to Ireland. For more details, please visit ' +
|
||||
'<a href="https://' + (properties.environment !== 'production' ? 'beta.' : '') + 'explore.openaire.eu/search/result?((type_id))=((id))" target="_blank">OpenAIRE Explore.</a>'
|
||||
};
|
||||
BelongsTo.project = {
|
||||
fields: [
|
||||
{path: ['organizations', 'country'], value: 'Ireland'},
|
||||
{path: ['funding', 'funderJurisdiction'], value: 'IE'}
|
||||
],
|
||||
message: 'This ' + OpenaireEntities.PROJECT + ' is not specific to Ireland. For more details, please visit ' +
|
||||
'<a href="https://' + (properties.environment !== 'production' ? 'beta.' : '') + 'explore.openaire.eu/search/project?projectId=((id))" target="_blank">OpenAIRE Explore.</a>'
|
||||
};
|
||||
BelongsTo.organization = {
|
||||
fields: [
|
||||
{path: ['country'], value: 'Ireland'}
|
||||
],
|
||||
message: 'This ' + OpenaireEntities.ORGANIZATION + ' is not specific to Ireland. For more details, please visit ' +
|
||||
'<a href="https://' + (properties.environment !== 'production' ? 'beta.' : '') + 'explore.openaire.eu/search/organization?organizationId=((id))" target="_blank">OpenAIRE Explore.</a>'
|
||||
};
|
||||
BelongsTo.datasource = {
|
||||
fields: [
|
||||
{path: ['countries'], value: 'Ireland'}
|
||||
],
|
||||
message: 'This ' + OpenaireEntities.DATASOURCE + ' is not specific to Ireland. For more details, please visit ' +
|
||||
'<a href="https://' + (properties.environment !== 'production' ? 'beta.' : '') + 'explore.openaire.eu/search/dataprovider?datasourceId=((id))" target="_blank">OpenAIRE Explore.</a>'
|
||||
};
|
||||
}
|
||||
|
||||
public static initializeOAIndicators(): void {
|
||||
StakeholderConfiguration.openAccess.set('country', {
|
||||
numerator: {
|
||||
"type": null,
|
||||
"format": "NUMBER",
|
||||
"source": "stats-tool",
|
||||
"url": "raw?json=",
|
||||
"jsonPath": ["data", "0", "0", "0"],
|
||||
"chartObject": "{\"verbose\":false,\"series\":[{\"query\":{\"parameters\":[],\"select\":[{\"field\":\"publication\",\"aggregate\":\"count\"}],\"filters\":[{\"groupFilters\":[{\"field\":\"publication.indi_result_oa_with_license.oa_with_license\",\"type\":\"=\",\"values\":[\"1\"]},{\"field\":\"publication.result_refereed.refereed\",\"type\":\"=\",\"values\":[\"peerReviewed\"]}],\"op\":\"AND\"}],\"entity\":\"publication\",\"profile\":\"ie_monitor\",\"limit\":\"30\"}}]}",
|
||||
"parameters": {},
|
||||
"filters": {},
|
||||
"filtersApplied": 0
|
||||
},
|
||||
denominator: {
|
||||
"type": null,
|
||||
"format": "NUMBER",
|
||||
"source": "stats-tool",
|
||||
"url": "raw?json=",
|
||||
"jsonPath": ["data", "0", "0", "0"],
|
||||
"chartObject": "{\"verbose\":false,\"series\":[{\"query\":{\"parameters\":[],\"select\":[{\"field\":\"publication\",\"aggregate\":\"count\"}],\"filters\":[{\"groupFilters\":[{\"field\":\"publication.result_refereed.refereed\",\"type\":\"=\",\"values\":[\"peerReviewed\"]}],\"op\":\"AND\"}],\"entity\":\"publication\",\"profile\":\"ie_monitor\",\"limit\":\"30\"}}]}",
|
||||
"parameters": {},
|
||||
"filters": {},
|
||||
"filtersApplied": 0
|
||||
}
|
||||
});
|
||||
StakeholderConfiguration.openAccess.set('organization', {
|
||||
numerator: {
|
||||
"type": null,
|
||||
"format": "NUMBER",
|
||||
"source": "stats-tool",
|
||||
"url": "raw?json=",
|
||||
"jsonPath": ["data", "0", "0", "0"],
|
||||
"chartObject": "{\"verbose\":false,\"series\":[{\"query\":{\"parameters\":[],\"select\":[{\"field\":\"publication\",\"aggregate\":\"count\"}],\"filters\":[{\"groupFilters\":[{\"field\":\"publication.organization.id\",\"type\":\"=\",\"values\":[\"((__index_id__))\"]},{\"field\":\"publication.result_refereed.refereed\",\"type\":\"=\",\"values\":[\"peerReviewed\"]},{\"field\":\"publication.indi_result_oa_with_license.oa_with_license\",\"type\":\"=\",\"values\":[\"1\"]}],\"op\":\"AND\"}],\"entity\":\"publication\",\"profile\":\"((__profile__))\",\"limit\":\"30\"}}]}",
|
||||
"parameters": {},
|
||||
"filters": {},
|
||||
"filtersApplied": 0
|
||||
},
|
||||
denominator: {
|
||||
"type": null,
|
||||
"format": "NUMBER",
|
||||
"source": "stats-tool",
|
||||
"url": "raw?json=",
|
||||
"jsonPath": ["data", "0", "0", "0"],
|
||||
"chartObject": "{\"verbose\":false,\"series\":[{\"query\":{\"parameters\":[],\"select\":[{\"field\":\"publication\",\"aggregate\":\"count\"}],\"filters\":[{\"groupFilters\":[{\"field\":\"publication.organization.id\",\"type\":\"=\",\"values\":[\"((__index_id__))\"]},{\"field\":\"publication.result_refereed.refereed\",\"type\":\"=\",\"values\":[\"peerReviewed\"]}],\"op\":\"AND\"}],\"entity\":\"publication\",\"profile\":\"((__profile__))\",\"limit\":\"30\"}}]}",
|
||||
"parameters": {},
|
||||
"filters": {},
|
||||
"filtersApplied": 0
|
||||
}
|
||||
});
|
||||
StakeholderConfiguration.openAccess.set('funder', {
|
||||
numerator: {
|
||||
"type": null,
|
||||
"format": "NUMBER",
|
||||
"source": "stats-tool",
|
||||
"url": "raw?json=",
|
||||
"jsonPath": ["data", "0", "0", "0"],
|
||||
"chartObject": "{\"verbose\":false,\"series\":[{\"query\":{\"parameters\":[],\"select\":[{\"field\":\"publication\",\"aggregate\":\"count\"}],\"filters\":[{\"groupFilters\":[{\"field\":\"publication.project.funder.id\",\"type\":\"=\",\"values\":[\"((__index_id__))\"]},{\"field\":\"publication.indi_result_oa_with_license.oa_with_license\",\"type\":\"=\",\"values\":[\"1\"]}],\"op\":\"AND\"}],\"entity\":\"publication\",\"profile\":\"((__profile__))\",\"limit\":\"30\"}}]}",
|
||||
"parameters": {},
|
||||
"filters": {},
|
||||
"filtersApplied": 0
|
||||
},
|
||||
denominator: {
|
||||
"type": null,
|
||||
"format": "NUMBER",
|
||||
"source": "stats-tool",
|
||||
"url": "raw?json=",
|
||||
"jsonPath": ["data", "0", "0", "0"],
|
||||
"chartObject": "{\"verbose\":false,\"series\":[{\"query\":{\"parameters\":[],\"select\":[{\"field\":\"publication\",\"aggregate\":\"count\"}],\"filters\":[{\"groupFilters\":[{\"field\":\"publication.project.funder.id\",\"type\":\"=\",\"values\":[\"((__index_id__))\"]},{\"field\":\"publication.result_refereed.refereed\",\"type\":\"=\",\"values\":[\"peerReviewed\"]}],\"op\":\"AND\"}],\"entity\":\"publication\",\"profile\":\"((__profile__))\",\"limit\":\"30\"}}]}",
|
||||
"parameters": {},
|
||||
"filters": {},
|
||||
"filtersApplied": 0
|
||||
}
|
||||
});
|
||||
StakeholderConfiguration.openAccess.set('researcher', {
|
||||
numerator: {
|
||||
"type": null,
|
||||
"format": "NUMBER",
|
||||
"source": "stats-tool",
|
||||
"url": "raw?json=",
|
||||
"jsonPath": ["data", "0", "0", "0"],
|
||||
"chartObject": "{\"verbose\":false,\"series\":[{\"query\":{\"parameters\":[],\"select\":[{\"field\":\"publication\",\"aggregate\":\"count\"}],\"filters\":[{\"groupFilters\":[{\"field\":\"publication.result_orcid.orcid\",\"type\":\"=\",\"values\":[\"((__index_id__))\"]},{\"field\":\"publication.result_refereed.refereed\",\"type\":\"=\",\"values\":[\"peerReviewed\"]},{\"field\":\"publication.indi_result_oa_with_license.oa_with_license\",\"type\":\"=\",\"values\":[\"1\"]}],\"op\":\"AND\"}],\"entity\":\"publication\",\"profile\":\"((__profile__))\",\"limit\":\"30\"}}]}",
|
||||
"parameters": {"statsProfile": "openaire_stats"},
|
||||
"filters": {},
|
||||
"filtersApplied": 0
|
||||
},
|
||||
denominator: {
|
||||
"type": null,
|
||||
"format": "NUMBER",
|
||||
"source": "stats-tool",
|
||||
"url": "raw?json=",
|
||||
"jsonPath": ["data", "0", "0", "0"],
|
||||
"chartObject": "{\"verbose\":false,\"series\":[{\"query\":{\"parameters\":[],\"select\":[{\"field\":\"publication\",\"aggregate\":\"count\"}],\"filters\":[{\"groupFilters\":[{\"field\":\"publication.result_orcid.orcid\",\"type\":\"=\",\"values\":[\"((__index_id__))\"]},{\"field\":\"publication.result_refereed.refereed\",\"type\":\"=\",\"values\":[\"peerReviewed\"]}],\"op\":\"AND\"}],\"entity\":\"publication\",\"profile\":\"((__profile__))\",\"limit\":\"30\"}}]}",
|
||||
"parameters": {"statsProfile": "openaire_stats"},
|
||||
"filters": {},
|
||||
"filtersApplied": 0
|
||||
}
|
||||
});
|
||||
StakeholderConfiguration.openAccess.set('datasource', {
|
||||
numerator: {
|
||||
"type": null,
|
||||
"format": "NUMBER",
|
||||
"source": "stats-tool",
|
||||
"url": "raw?json=",
|
||||
"jsonPath": ["data", "0", "0", "0"],
|
||||
"chartObject": "{\"verbose\":false,\"series\":[{\"query\":{\"parameters\":[],\"select\":[{\"field\":\"publication\",\"aggregate\":\"count\"}],\"filters\":[{\"groupFilters\":[{\"field\":\"publication.datasource.id\",\"type\":\"=\",\"values\":[\"((__index_id__))\"]},{\"field\":\"publication.result_refereed.refereed\",\"type\":\"=\",\"values\":[\"peerReviewed\"]},{\"field\":\"publication.indi_result_oa_with_license.oa_with_license\",\"type\":\"=\",\"values\":[\"1\"]}],\"op\":\"AND\"}],\"entity\":\"publication\",\"profile\":\"((__profile__))\",\"limit\":\"30\"}}]}",
|
||||
"parameters": {},
|
||||
"filters": {},
|
||||
"filtersApplied": 0
|
||||
},
|
||||
denominator: {
|
||||
"type": null,
|
||||
"format": "NUMBER",
|
||||
"source": "stats-tool",
|
||||
"url": "raw?json=",
|
||||
"jsonPath": ["data", "0", "0", "0"],
|
||||
"chartObject": "{\"verbose\":false,\"series\":[{\"query\":{\"parameters\":[],\"select\":[{\"field\":\"publication\",\"aggregate\":\"count\"}],\"filters\":[{\"groupFilters\":[{\"field\":\"publication.datasource.id\",\"type\":\"=\",\"values\":[\"((__index_id__))\"]},{\"field\":\"publication.result_refereed.refereed\",\"type\":\"=\",\"values\":[\"peerReviewed\"]}],\"op\":\"AND\"}],\"entity\":\"publication\",\"profile\":\"((__profile__))\",\"limit\":\"30\"}}]}",
|
||||
"parameters": {},
|
||||
"filters": {},
|
||||
"filtersApplied": 0
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export class StakeholderExtended extends Stakeholder {
|
||||
export class StakeholderPublication extends Stakeholder {
|
||||
publications: number;
|
||||
openAccess: number;
|
||||
}
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<div page-content [border]="isMobile">
|
||||
<div class="uk-margin-top" actions>
|
||||
<div class="uk-margin-bottom uk-flex uk-flex-middle">
|
||||
<span *ngIf="countSelectedFilters() > 0" class="uk-text-meta uk-margin-small-right"> Active filters:</span>
|
||||
<div class="uk-width-expand">
|
||||
<ng-container *ngTemplateOutlet="selected_filters_pills"></ng-container>
|
||||
</div>
|
||||
<a *ngIf="countSelectedFilters() > 1" class="uk-text-small uk-margin-small-left" (click)="clearAll()"> Clear
|
||||
All </a>
|
||||
<a *ngIf="countSelectedFilters() > 1" class="uk-text-small uk-margin-small-left" (click)="clearAll()"> Clear All </a>
|
||||
</div>
|
||||
<div *ngIf="activeCategory && countSubCategoriesToShow(activeCategory) > 0" [class.uk-margin-bottom]="isMobile">
|
||||
<slider-tabs *ngIf="stakeholder && !loading && activeTopic" [border]="!isMobile" [type]="'dynamic'">
|
||||
|
@ -22,33 +22,31 @@
|
|||
<div inner>
|
||||
<loading *ngIf="loading" class="uk-margin-top"></loading>
|
||||
<div *ngIf="!activeSubCategory && !loading" class="message">
|
||||
No {{ entities.stakeholder }} yet.
|
||||
No {{entities.stakeholder}} yet.
|
||||
</div>
|
||||
<div *ngIf="activeSubCategory" class="uk-section-small">
|
||||
<div *ngIf="activeSubCategory.description" [innerHTML]="activeSubCategory.description"
|
||||
class="uk-margin-medium-bottom">
|
||||
<div *ngIf="activeSubCategory.description" [innerHTML]="activeSubCategory.description" class="uk-margin-medium-bottom">
|
||||
</div>
|
||||
<div [class.uk-margin-large-bottom]="activeSubCategory.numbers.length > 0 && !tabs">
|
||||
<ng-container *ngFor="let number of activeSubCategory.numbers; let i = index;">
|
||||
<div *ngIf="!isMobile" class="uk-grid uk-grid-small uk-grid-match uk-margin-medium-bottom" uk-grid
|
||||
uk-height-match="target: .uk-card">
|
||||
<h5 *ngIf="number.title" class="uk-width-1-1 uk-margin-bottom">{{ number.title }}</h5>
|
||||
<h5 *ngIf="number.title" class="uk-width-1-1 uk-margin-bottom">{{number.title}}</h5>
|
||||
<ng-template ngFor [ngForOf]="number.indicators" let-indicator let-j="index">
|
||||
<div *ngIf="hasPermission(indicator.visibility)"
|
||||
[ngClass]="getNumberClassBySize(indicator.width)">
|
||||
<div class="uk-card uk-card-default uk-padding-small number-card uk-position-relative"
|
||||
[class.semiFiltered]="indicator.indicatorPaths[0].filtersApplied < countSelectedFilters()">
|
||||
<div *ngIf="!indicator.overlay">
|
||||
<div class="uk-text-small uk-text-truncate uk-margin-xsmall-bottom uk-margin-right">{{ indicator.name }}</div>
|
||||
<div class="uk-text-small uk-text-truncate uk-margin-xsmall-bottom uk-margin-right">{{indicator.name}}</div>
|
||||
<div class="number uk-text-small uk-text-bold">
|
||||
<span *ngIf="numberResults.get(i + '-' + j + '-0')"
|
||||
[innerHTML]="(indicator.indicatorPaths[0].format == 'NUMBER'?(numberResults.get(i + '-' + j + '-0') | numberRound: 2:1:stakeholder.locale):(numberResults.get(i + '-' + j + '-0') | numberPercentage: stakeholder.locale))"></span>
|
||||
<span *ngIf="!numberResults.get(i + '-' + j + '-0')">--</span>
|
||||
<span *ngIf="numberResults.get(i + '-' + j)"
|
||||
[innerHTML]="(indicator.indicatorPaths[0].format == 'NUMBER'?(numberResults.get(i + '-' + j) | numberRound: 2:1:stakeholder.locale):(numberResults.get(i + '-' + j) | numberPercentage: stakeholder.locale))"></span>
|
||||
<span *ngIf="!numberResults.get(i + '-' + j)">--</span>
|
||||
</div>
|
||||
<div *ngIf="indicator.description || indicator.additionalDescription"
|
||||
class="uk-position-top-right uk-text-center uk-margin-small-top uk-margin-small-right uk-visible@m">
|
||||
<a class="uk-display-inline-block uk-button uk-button-link"
|
||||
uk-tooltip="Note"
|
||||
<a class="uk-display-inline-block uk-button uk-button-link" uk-tooltip="Note"
|
||||
(click)="changeOverlay($event, indicator, 'description')">
|
||||
<span class="uk-flex uk-flex-middle">
|
||||
<icon name="analytics" type="outlined" [flex]="true"></icon>
|
||||
|
@ -69,10 +67,10 @@
|
|||
</div>
|
||||
<div class="uk-margin-small-top uk-margin-right">
|
||||
<p *ngIf="indicator.description">
|
||||
{{ indicator.description }}
|
||||
{{indicator.description}}
|
||||
</p>
|
||||
<p *ngIf="indicator.additionalDescription">
|
||||
{{ indicator.additionalDescription }}
|
||||
{{indicator.additionalDescription}}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -81,7 +79,7 @@
|
|||
</ng-template>
|
||||
</div>
|
||||
<div *ngIf="isMobile">
|
||||
<h6 *ngIf="number.title" class="uk-width-1-1 uk-margin-bottom">{{ number.title }}</h6>
|
||||
<h6 *ngIf="number.title" class="uk-width-1-1 uk-margin-bottom">{{number.title}}</h6>
|
||||
<div class="uk-card uk-card-default uk-padding-small number-card">
|
||||
<div class="uk-grid uk-grid-small uk-child-width-1-1" uk-grid>
|
||||
<ng-template ngFor [ngForOf]="number.indicators" let-indicator let-j="index">
|
||||
|
@ -90,12 +88,11 @@
|
|||
<div [class.semiFiltered]="indicator.indicatorPaths[0].filtersApplied < countSelectedFilters()">
|
||||
<div *ngIf="!indicator.overlay">
|
||||
<div
|
||||
class="uk-text-xsmall uk-text-truncate uk-margin-xsmall-bottom uk-margin-right">{{ indicator.name }}
|
||||
</div>
|
||||
class="uk-text-xsmall uk-text-truncate uk-margin-xsmall-bottom uk-margin-right">{{indicator.name}}</div>
|
||||
<div class="number uk-text-small uk-text-bold">
|
||||
<span *ngIf="numberResults.get(i + '-' + j + '-0')"
|
||||
[innerHTML]="(indicator.indicatorPaths[0].format == 'NUMBER'?(numberResults.get(i + '-' + j + '-0') | numberRound: 2:1:stakeholder.locale):(numberResults.get(i + '-' + j + '-0') | numberPercentage: stakeholder.locale))"></span>
|
||||
<span *ngIf="!numberResults.get(i + '-' + j + '-0')">--</span>
|
||||
<span *ngIf="numberResults.get(i + '-' + j)"
|
||||
[innerHTML]="(indicator.indicatorPaths[0].format == 'NUMBER'?(numberResults.get(i + '-' + j) | numberRound: 2:1:stakeholder.locale):(numberResults.get(i + '-' + j) | numberPercentage: stakeholder.locale))"></span>
|
||||
<span *ngIf="!numberResults.get(i + '-' + j)">--</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -108,118 +105,103 @@
|
|||
</div>
|
||||
<div [class.section-container]="tabs">
|
||||
<ul *ngIf="tabs" class="tabs">
|
||||
<li *ngFor="let tab of activeSubCategory.charts; let i = index;"
|
||||
[class.uk-active]="i === activeChartSectionIndex"
|
||||
<li *ngFor="let tab of activeSubCategory.charts; let i = index;" [class.uk-active]="i === activeChartSectionIndex"
|
||||
(click)="changeSection(i)" class="uk-text-truncate" [attr.uk-tooltip]="getSectionTitle(tab)">
|
||||
{{ getSectionTitle(tab) }}
|
||||
{{getSectionTitle(tab)}}
|
||||
</li>
|
||||
</ul>
|
||||
<div *ngIf="chart"
|
||||
class="uk-grid uk-grid-small uk-grid-match uk-margin-medium-bottom uk-flex uk-flex-middle" uk-grid
|
||||
uk-height-match="target: .uk-card">
|
||||
<h5 *ngIf="chart.title && !isMobile && !tabs"
|
||||
class="uk-width-1-1 uk-margin-bottom">{{ getSectionTitle(chart) }}</h5>
|
||||
<div *ngIf="getSectionDescription(chart)"
|
||||
class="uk-width-1-1 uk-margin-bottom">{{ getSectionDescription(chart) }}
|
||||
</div>
|
||||
<h6 *ngIf="chart.title && isMobile && !tabs" class="uk-width-1-1">{{ getSectionTitle(chart) }}</h6>
|
||||
<ng-container *ngFor="let indicator of chart.indicators; let j=index">
|
||||
<div *ngIf="hasPermission(indicator.visibility)"
|
||||
<div *ngIf="chart" class="uk-grid uk-grid-small uk-grid-match uk-margin-medium-bottom uk-flex uk-flex-middle" uk-grid uk-height-match="target: .uk-card">
|
||||
<h5 *ngIf="chart.title && !isMobile && !tabs" class="uk-width-1-1 uk-margin-bottom">{{getSectionTitle(chart)}}</h5>
|
||||
<div *ngIf="getSectionDescription(chart)" class="uk-width-1-1 uk-margin-bottom">{{getSectionDescription(chart)}}</div>
|
||||
<h6 *ngIf="chart.title && isMobile && !tabs" class="uk-width-1-1">{{getSectionTitle(chart)}}</h6>
|
||||
<ng-template ngFor [ngForOf]="chart.indicators" let-indicator let-j="index">
|
||||
<div *ngIf="hasPermission(indicator.visibility) && chartsActiveType.get(activeChartSectionIndex + '-' + j)"
|
||||
[ngClass]="getChartClassBySize(indicator.width)">
|
||||
<div class="uk-card uk-card-default uk-position-relative"
|
||||
[class.semiFiltered]="getActiveIndicatorPath(indicator).filtersApplied < countSelectedFilters()">
|
||||
<div class="uk-card-body uk-margin-small-bottom">
|
||||
<!-- Main content-->
|
||||
<div>
|
||||
<h6 class="uk-margin-bottom chartTitle uk-flex uk-flex-bottom">
|
||||
{{ indicator.name + " " }}
|
||||
</h6>
|
||||
<iframe [class.uk-blend-multiply]="!isFullscreen"
|
||||
*ngIf=" !properties.disableFrameLoad && getActiveIndicatorPath(indicator).source !== 'image'"
|
||||
[src]="getActiveIndicatorPath(indicator).safeResourceUrl"
|
||||
class="uk-width-1-1" allowfullscreen="true"
|
||||
mozallowfullscreen="true"
|
||||
[ngClass]="'uk-height-' + (indicator.height?indicator.height.toLowerCase():'medium')"></iframe>
|
||||
<div *ngIf="properties.disableFrameLoad && getActiveIndicatorPath(indicator)?.source !=='image'">
|
||||
<img class="uk-width-1-1 uk-blend-multiply"
|
||||
[ngClass]="'uk-height-' + (indicator.height?indicator.height.toLowerCase():'medium')"
|
||||
src="assets/chart-placeholder.png">
|
||||
</div>
|
||||
<img *ngIf="getActiveIndicatorPath(indicator).source === 'image'"
|
||||
[src]="getActiveIndicatorPath(indicator).url"
|
||||
class="uk-width-1-1 uk-blend-multiply"
|
||||
[ngClass]="'uk-height-' + (indicator.height?indicator.height.toLowerCase():'medium')">
|
||||
[class.semiFiltered]="chartsActiveType.get(activeChartSectionIndex + '-' + j).filtersApplied < countSelectedFilters()">
|
||||
<div class="uk-card-body uk-text-center uk-margin-small-bottom">
|
||||
<h6 class="uk-margin-bottom chartTitle uk-flex uk-flex-bottom">
|
||||
{{indicator.name + " "}}
|
||||
</h6>
|
||||
<div *ngIf="indicator.indicatorPaths.length > 1" class="uk-button-group">
|
||||
<button *ngFor="let indicatorPath of indicator.indicatorPaths;"
|
||||
class="uk-button"
|
||||
(click)="setActiveChart(activeChartSectionIndex, j, indicatorPath.type)"
|
||||
[class.uk-button-secondary]="chartsActiveType.get(activeChartSectionIndex + '-' + j).url === indicatorPath.url">
|
||||
{{indicatorPath.type}}
|
||||
</button>
|
||||
</div>
|
||||
<!-- Tabs -->
|
||||
<slider-tabs [type]="'dynamic'" [flexPosition]="'right'"
|
||||
(activeEmitter)="indicator.activePath = $event"
|
||||
tabsClass="uk-subnav uk-subnav-pill uk-subnav-small"
|
||||
containerClass="uk-margin-top uk-margin-bottom" [border]="false">
|
||||
<slider-tab
|
||||
*ngFor="let indicatorPath of indicator.indicatorPaths; let i=index"
|
||||
[tabTitle]="indicatorPath.parameters.tab ? indicatorPath.parameters.tab : indicatorPath.parameters.title"
|
||||
[invisible]="indicator.indicatorPaths.length < 2"
|
||||
[tabId]="i" [active]="getActivePathIndex(indicator) == i">
|
||||
</slider-tab>
|
||||
</slider-tabs>
|
||||
<div class="uk-position-bottom-left uk-margin-left uk-margin-small-bottom uk-visible@m">
|
||||
<a *ngIf="indicator.description || indicator.additionalDescription"
|
||||
class="uk-display-inline-block uk-button uk-button-link uk-margin-right"
|
||||
(click)="changeOverlay($event, indicator, 'description')">
|
||||
<span class="uk-flex uk-flex-middle">
|
||||
<icon name="analytics" type="outlined" [flex]="true"></icon>
|
||||
<span class="uk-margin-xsmall-left">Note</span>
|
||||
</span>
|
||||
</a>
|
||||
<a class="uk-display-inline-block uk-button uk-button-link"
|
||||
(click)="changeOverlay($event, indicator, 'embed')">
|
||||
<span class="uk-flex uk-flex-middle">
|
||||
<icon name="code" type="outlined" [flex]="true"></icon>
|
||||
<span class="uk-margin-xsmall-left">Embed</span>
|
||||
</span>
|
||||
</a>
|
||||
<iframe [class.uk-blend-multiply]="!isFullscreen"
|
||||
*ngIf=" !properties.disableFrameLoad && chartsActiveType.get(activeChartSectionIndex + '-' + j).source !== 'image'"
|
||||
[src]="chartsActiveType.get(activeChartSectionIndex + '-' + j).safeResourceUrl"
|
||||
class="uk-width-1-1" allowfullscreen="true" mozallowfullscreen="true"
|
||||
[ngClass]="'uk-height-' + (indicator.height?indicator.height.toLowerCase():'medium')"></iframe>
|
||||
<div *ngIf="properties.disableFrameLoad && chartsActiveType.get(activeChartSectionIndex + '-' + j).source !== 'image'">
|
||||
<img class="uk-width-1-1 uk-blend-multiply"
|
||||
[ngClass]="'uk-height-' + (indicator.height?indicator.height.toLowerCase():'medium')"
|
||||
src="assets/chart-placeholder.png">
|
||||
</div>
|
||||
<div *ngIf="indicator.overlay"
|
||||
class="indicator-overlay uk-card uk-card-default uk-flex uk-flex-middle uk-flex-center">
|
||||
<div *ngIf="indicator.overlay == 'description'" class="inner"
|
||||
click-outside-or-esc
|
||||
(clickOutside)="closeOverlay($event, indicator)">
|
||||
<div class="uk-padding-small">
|
||||
<div class="uk-flex uk-flex-right">
|
||||
<button class="uk-close uk-icon"
|
||||
(click)="changeOverlay($event, indicator, false)">
|
||||
<icon name="close" ratio="1"></icon>
|
||||
</button>
|
||||
</div>
|
||||
<div class="uk-padding-small uk-padding-remove-horizontal">
|
||||
<p *ngIf="indicator.description">
|
||||
{{ indicator.description }}
|
||||
</p>
|
||||
<p *ngIf="indicator.additionalDescription">
|
||||
{{ indicator.additionalDescription }}
|
||||
</p>
|
||||
</div>
|
||||
<img *ngIf="chartsActiveType.get(activeChartSectionIndex + '-' + j).source === 'image'"
|
||||
[src]="chartsActiveType.get(activeChartSectionIndex + '-' + j).safeResourceUrl"
|
||||
class="uk-width-1-1 uk-blend-multiply"
|
||||
[ngClass]="'uk-height-' + (indicator.height?indicator.height.toLowerCase():'medium')">
|
||||
</div>
|
||||
<div class="uk-position-bottom-left uk-margin-left uk-margin-small-bottom uk-visible@m">
|
||||
<a *ngIf="indicator.description || indicator.additionalDescription"
|
||||
class="uk-display-inline-block uk-button uk-button-link uk-margin-right"
|
||||
(click)="changeOverlay($event, indicator, 'description')">
|
||||
<span class="uk-flex uk-flex-middle">
|
||||
<icon name="analytics" type="outlined" [flex]="true"></icon>
|
||||
<span class="uk-margin-xsmall-left">Note</span>
|
||||
</span>
|
||||
</a>
|
||||
<a class="uk-display-inline-block uk-button uk-button-link"
|
||||
(click)="changeOverlay($event, indicator, 'embed')">
|
||||
<span class="uk-flex uk-flex-middle">
|
||||
<icon name="code" type="outlined" [flex]="true"></icon>
|
||||
<span class="uk-margin-xsmall-left">Embed</span>
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
<div *ngIf="indicator.overlay"
|
||||
class="indicator-overlay uk-card uk-card-default uk-flex uk-flex-middle uk-flex-center">
|
||||
<div *ngIf="indicator.overlay == 'description'" class="inner" click-outside-or-esc
|
||||
(clickOutside)="closeOverlay($event, indicator)">
|
||||
<div class="uk-padding-small">
|
||||
<div class="uk-flex uk-flex-right">
|
||||
<button class="uk-close uk-icon"
|
||||
(click)="changeOverlay($event, indicator, false)">
|
||||
<icon name="close" ratio="1"></icon>
|
||||
</button>
|
||||
</div>
|
||||
<div class="uk-padding-small uk-padding-remove-horizontal">
|
||||
<p *ngIf="indicator.description">
|
||||
{{indicator.description}}
|
||||
</p>
|
||||
<p *ngIf="indicator.additionalDescription">
|
||||
{{indicator.additionalDescription}}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="indicator.overlay === 'embed'" class="inner" click-outside-or-esc
|
||||
(clickOutside)="closeOverlay($event, indicator)">
|
||||
<div class="uk-padding-small">
|
||||
<div class="uk-flex uk-flex-right">
|
||||
<button class="uk-close uk-icon"
|
||||
(click)="changeOverlay($event, indicator, false)">
|
||||
<icon name="close" ratio="1"></icon>
|
||||
</button>
|
||||
</div>
|
||||
<div class="clipboard-wrapper uk-margin-top uk-margin-bottom">
|
||||
<pre id="embed_content_id" class="uk-padding-small"><code><iframe width="500" height="500" <br> src="{{ getActiveIndicatorPath(indicator).safeResourceUrl.changingThisBreaksApplicationSecurity }}
|
||||
"<br> allowfullscreen="true" mozallowfullscreen="true"><br></iframe></code></pre>
|
||||
</div>
|
||||
<div class="uk-flex uk-flex-right">
|
||||
<a class="uk-link-reset copy clipboard_btn"
|
||||
data-clipboard-target="#embed_content_id" title="Copy code">
|
||||
<icon [flex]="true" name="content_copy"></icon>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="indicator.overlay === 'embed'" class="inner" click-outside-or-esc
|
||||
(clickOutside)="closeOverlay($event, indicator)">
|
||||
<div class="uk-padding-small">
|
||||
<div class="uk-flex uk-flex-right">
|
||||
<button class="uk-close uk-icon"
|
||||
(click)="changeOverlay($event, indicator, false)">
|
||||
<icon name="close" ratio="1"></icon>
|
||||
</button>
|
||||
</div>
|
||||
<div class="clipboard-wrapper uk-margin-top uk-margin-bottom">
|
||||
<pre id="embed_content_id" class="uk-padding-small"><code><iframe width="500" height="500" <br> src="{{chartsActiveType.get(activeChartSectionIndex + '-' + j).safeResourceUrl.changingThisBreaksApplicationSecurity}}
|
||||
" <br> allowfullscreen="true" mozallowfullscreen="true"><br></iframe></code></pre>
|
||||
</div>
|
||||
<div class="uk-flex uk-flex-right">
|
||||
<a class="uk-link-reset copy clipboard_btn"
|
||||
data-clipboard-target="#embed_content_id" title="Copy code">
|
||||
<icon [flex]="true" name="content_copy"></icon>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -227,7 +209,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="printGap uk-hidden"></div>
|
||||
</ng-container>
|
||||
</ng-template>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -238,7 +220,7 @@
|
|||
<icon name="filters" ratio="1.5" visuallyHidden="Filters" gradient="filters_icon"></icon>
|
||||
<span [class.uk-hidden]="countSelectedFilters() === 0"
|
||||
class="uk-offcanvas-count uk-flex uk-flex-middle uk-flex-center">
|
||||
{{ countSelectedFilters() }}
|
||||
{{countSelectedFilters()}}
|
||||
</span>
|
||||
</a>
|
||||
<div *ngIf="stakeholder" id="style_switcher" class="uk-offcanvas"
|
||||
|
@ -273,8 +255,8 @@
|
|||
</li>
|
||||
</ng-container>
|
||||
</ul>
|
||||
<i class="uk-margin-medium-top uk-text-small uk-display-block"><sup>*</sup> Publicly-funded information has been curated for IE only.</i>
|
||||
<i class="uk-margin-top uk-text-small uk-display-block">
|
||||
<i *ngIf="user || countSelectedFilters() > 0 "
|
||||
class="uk-margin-medium-top uk-text-small uk-display-block">
|
||||
<sup>*</sup> If your filter selection cannot be applied to a chart, that chart will appear
|
||||
grayed-out.
|
||||
</i>
|
||||
|
@ -290,7 +272,7 @@
|
|||
<li *ngIf="periodFilter.selectedFromAndToValues.length > 0">
|
||||
<span class="uk-label uk-label-small uk-label-secondary uk-flex uk-flex-middle">
|
||||
<span
|
||||
class="uk-margin-small-right uk-width-expand uk-text-truncate">{{ periodFilter.selectedFromAndToValues }}</span>
|
||||
class="uk-margin-small-right uk-width-expand uk-text-truncate">{{periodFilter.selectedFromAndToValues}}</span>
|
||||
<button [class.uk-disabled]="loading" (click)="clearPeriodFilter()" class="uk-close uk-icon"
|
||||
[disabled]="loading">
|
||||
<icon name="close" flex="true" ratio="0.7"></icon>
|
||||
|
@ -307,15 +289,14 @@
|
|||
|
||||
<ng-container
|
||||
*ngIf="filter.type && (filter.type == 'boolean' || filter.type == 'triplet') else noboolean">
|
||||
{{ filter.title }}:
|
||||
{{ (value.name == 'true' || value.name == 'Yes') ? 'Yes' : 'No' }}
|
||||
{{filter.title}}:
|
||||
{{(value.name == 'true' || value.name == 'Yes') ? 'Yes' : 'No'}}
|
||||
</ng-container>
|
||||
<ng-template #noboolean>
|
||||
{{ value.name }}
|
||||
{{value.name}}
|
||||
</ng-template>
|
||||
</span>
|
||||
<button [class.uk-disabled]="loading"
|
||||
(click)="clearFilterValue(filter, value)"
|
||||
<button [class.uk-disabled]="loading" (click)="clearFilterValue(filter, value)"
|
||||
class="uk-close uk-icon" [disabled]="loading">
|
||||
<icon name="close" flex="true" ratio="0.7"></icon>
|
||||
</button>
|
||||
|
|
|
@ -62,9 +62,21 @@ export class MonitorComponent extends MonitorIndicatorStakeholderBaseComponent {
|
|||
}
|
||||
this.subscriptions.push(this.searchResearchResultsService.advancedSearchResults("publication", null, 1, 0, null, this.properties,
|
||||
"&refine=true&fields=fos&type=publications", ["fos"], customFilterParams).subscribe(res => {
|
||||
this.init(res[2]);
|
||||
}, error =>{
|
||||
this.init(null)
|
||||
this.filters = this.postProcessingFosFilters(res[2]);
|
||||
this.title = this.stakeholder.name;
|
||||
this.description = this.stakeholder.name;
|
||||
this.subscriptions.push(this._route.params.subscribe(params => {
|
||||
this.loading = true;
|
||||
this.activeTopic = null;
|
||||
this.activeCategory = null;
|
||||
this.activeSubCategory = null;
|
||||
this.numberResults = new Map<string, number>();
|
||||
this.chartsActiveType = new Map<string, IndicatorPath>();
|
||||
this.subscriptions.push(this._route.queryParams.subscribe(queryParams => {
|
||||
this.handleQueryParams(queryParams, params);
|
||||
this.setMetadata();
|
||||
}));
|
||||
}));
|
||||
}));
|
||||
}
|
||||
}));
|
||||
|
@ -72,22 +84,7 @@ export class MonitorComponent extends MonitorIndicatorStakeholderBaseComponent {
|
|||
}));
|
||||
}));
|
||||
}
|
||||
init(fos){
|
||||
this.filters = this.postProcessingFosFilters(fos);
|
||||
this.title = this.stakeholder.name;
|
||||
this.description = this.stakeholder.name;
|
||||
this.subscriptions.push(this._route.params.subscribe(params => {
|
||||
this.loading = true;
|
||||
this.activeTopic = null;
|
||||
this.activeCategory = null;
|
||||
this.activeSubCategory = null;
|
||||
this.numberResults = new Map<string, number>();
|
||||
this.subscriptions.push(this._route.queryParams.subscribe(queryParams => {
|
||||
this.handleQueryParams(queryParams, params);
|
||||
this.setMetadata();
|
||||
}));
|
||||
}));
|
||||
}
|
||||
|
||||
hasPermission(visibility: Visibility): boolean {
|
||||
return true;
|
||||
}
|
||||
|
@ -99,22 +96,20 @@ export class MonitorComponent extends MonitorIndicatorStakeholderBaseComponent {
|
|||
|
||||
postProcessingFosFilters(refineFilters:Filter[]){
|
||||
let filters:Filter[] = [];
|
||||
if(refineFilters) {
|
||||
for (let filter of refineFilters) {
|
||||
if (filter.filterId == "fos") {
|
||||
let fos: Filter = {...filter};
|
||||
fos.values = [];
|
||||
for (let value of filter.values) {
|
||||
let code = value.id.split(" ")[0];
|
||||
if (code.length <= 4) {
|
||||
fos.values.push(value);
|
||||
}
|
||||
for(let filter of refineFilters){
|
||||
if(filter.filterId == "fos"){
|
||||
let fos: Filter ={...filter};
|
||||
fos.values = [];
|
||||
for(let value of filter.values){
|
||||
let code = value.id.split(" ")[0];
|
||||
if(code.length <= 4){
|
||||
fos.values.push(value);
|
||||
}
|
||||
fos.countAllValues = fos.values.length;
|
||||
filters.push(fos);
|
||||
} else {
|
||||
filters.push(filter);
|
||||
}
|
||||
fos.countAllValues = fos.values.length;
|
||||
filters.push(fos);
|
||||
}else{
|
||||
filters.push(filter);
|
||||
}
|
||||
}
|
||||
let publiclyFunded:Filter = new Filter();
|
||||
|
|
|
@ -1,82 +0,0 @@
|
|||
import {Component, Input, OnInit} from "@angular/core";
|
||||
import {Stakeholder} from "../../openaireLibrary/monitor/entities/stakeholder";
|
||||
import {StatisticsService} from "../../openaireLibrary/monitor-admin/utils/services/statistics.service";
|
||||
import {IndicatorStakeholderBaseComponent} from "../../openaireLibrary/monitor-admin/utils/stakeholder-base.component";
|
||||
import {zip} from "rxjs";
|
||||
import {OAIndicator} from "../../openaireLibrary/monitor-admin/utils/indicator-utils";
|
||||
import {IrishMonitorService} from "../irish-monitor.service";
|
||||
|
||||
@Component({
|
||||
selector: "oa-indicator",
|
||||
template: `
|
||||
<ng-container *ngIf="percentage > 0">
|
||||
<div class="uk-flex uk-flex-column uk-flex-middle">
|
||||
<div class="uk-progress-semicircle open-access" [attr.percentage]="percentage.toFixed(1)"
|
||||
[style]="'--percentage:' + percentage.toFixed(1)"></div>
|
||||
<div class="uk-flex uk-flex-middle uk-margin-small-top">
|
||||
<icon class="open-access" [name]="'open_access'" [flex]="true"></icon>
|
||||
<span class="uk-margin-xsmall-left uk-text-small">Open Access with Licence ({{year}})</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</ng-container>
|
||||
`
|
||||
})
|
||||
export class OaIndicatorComponent extends IndicatorStakeholderBaseComponent implements OnInit {
|
||||
@Input()
|
||||
public stakeholder: Stakeholder;
|
||||
public percentage: number = 0;
|
||||
|
||||
constructor(private statisticsService: StatisticsService,
|
||||
private irishMonitorService: IrishMonitorService) {
|
||||
super();
|
||||
}
|
||||
|
||||
ngOnInit(): void {
|
||||
if(this.stakeholder) {
|
||||
this.subscriptions.push(this.irishMonitorService.getStakeholder(this.stakeholder._id).subscribe(stakeholder => {
|
||||
this.percentage = stakeholder.openAccess;
|
||||
if(!this.percentage) {
|
||||
this.initPercentage();
|
||||
}
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
public initPercentage(): void {
|
||||
let OAIndicator: OAIndicator = this.stakeholderUtils.openAccess.get(this.stakeholder.type);
|
||||
if(OAIndicator) {
|
||||
this.subscriptions.push(zip(
|
||||
this.statisticsService.getNumbers(this.indicatorUtils.getSourceType(OAIndicator.numerator.source), this.indicatorUtils.getFullUrlWithFilters(this.stakeholder, OAIndicator.numerator, null, this.year, this.year)),
|
||||
this.statisticsService.getNumbers(this.indicatorUtils.getSourceType(OAIndicator.denominator.source), this.indicatorUtils.getFullUrlWithFilters(this.stakeholder, OAIndicator.denominator, null, this.year, this.year))).subscribe(res => {
|
||||
let numerator = this.calculate(res[0], OAIndicator.numerator.jsonPath);
|
||||
let denominator = this.calculate(res[1], OAIndicator.denominator.jsonPath);
|
||||
if (denominator > 0) {
|
||||
this.percentage = (numerator * 100 / denominator);
|
||||
}
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
get year() {
|
||||
return (new Date().getFullYear() - 1).toString();
|
||||
}
|
||||
|
||||
public calculate(response: any, jsonPath: string[]) {
|
||||
let result = JSON.parse(JSON.stringify(response));
|
||||
jsonPath.forEach(path => {
|
||||
if (result) {
|
||||
result = result[path];
|
||||
}
|
||||
});
|
||||
if (typeof result === 'string' || typeof result === 'number') {
|
||||
result = Number(result);
|
||||
if (result === Number.NaN) {
|
||||
result = 0;
|
||||
}
|
||||
} else {
|
||||
result = 0;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
import {NgModule} from "@angular/core";
|
||||
import {CommonModule} from "@angular/common";
|
||||
import {OaIndicatorComponent} from "./oa-indicator.component";
|
||||
import {IconsModule} from "../../openaireLibrary/utils/icons/icons.module";
|
||||
|
||||
@NgModule({
|
||||
declarations: [OaIndicatorComponent],
|
||||
imports: [CommonModule, IconsModule],
|
||||
exports: [OaIndicatorComponent]
|
||||
})
|
||||
export class OaIndicatorModule {}
|
|
@ -1,70 +1,35 @@
|
|||
import {AdminDashboardGuard} from "../openaireLibrary/monitor-admin/utils/adminDashboard.guard";
|
||||
import {Injectable} from "@angular/core";
|
||||
import {ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree} from "@angular/router";
|
||||
import {Observable, zip} from "rxjs";
|
||||
import {ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree} from "@angular/router";
|
||||
import {Observable} from "rxjs";
|
||||
import {properties} from "../../environments/environment";
|
||||
import {LoginErrorCodes} from "../openaireLibrary/login/utils/guardHelper.class";
|
||||
import {map, take, tap} from "rxjs/operators";
|
||||
import {map, tap} from "rxjs/operators";
|
||||
import {Session} from "../openaireLibrary/login/utils/helper.class";
|
||||
import {UserManagementService} from "../openaireLibrary/services/user-management.service";
|
||||
import {StakeholderService} from "../openaireLibrary/monitor/services/stakeholder.service";
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class SandboxGuard {
|
||||
|
||||
constructor(private userManagementService: UserManagementService,
|
||||
private stakeholderService: StakeholderService,
|
||||
private router: Router) {
|
||||
}
|
||||
export class SandboxGuard extends AdminDashboardGuard {
|
||||
|
||||
canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
|
||||
let sandbox = properties.environment === 'beta';
|
||||
if (childRoute.data['researcher'] && childRoute.params.stakeholder && sandbox) {
|
||||
return this.checkResearcher(state.url, childRoute.params.stakeholder);
|
||||
} else {
|
||||
if(childRoute.data['researcher'] && childRoute.params.stakeholder && sandbox) {
|
||||
let errorCode = LoginErrorCodes.NOT_LOGIN;
|
||||
let alias = childRoute.params.stakeholder;
|
||||
let route = childRoute;
|
||||
while (!alias && route) {
|
||||
alias = route.data.stakeholder;
|
||||
route = route.parent;
|
||||
}
|
||||
return !sandbox || this.check(state.url, alias);
|
||||
return this.userManagementService.getUserInfo().pipe(map(user => {
|
||||
if(user) {
|
||||
errorCode = LoginErrorCodes.NOT_ADMIN;
|
||||
}
|
||||
return user && (Session.isPortalAdministrator(user) ||
|
||||
Session.isCurator('researcher', user) || user?.orcid === alias);
|
||||
}), tap(authorized => {
|
||||
if(!authorized){
|
||||
this.router.navigate(['/user-info'], {queryParams: {'errorCode': errorCode, 'redirectUrl':state.url}});
|
||||
}
|
||||
}));
|
||||
} else {
|
||||
return !sandbox || super.canActivateChild(childRoute, state);
|
||||
}
|
||||
}
|
||||
|
||||
checkResearcher(path: string, alias: string) {
|
||||
let errorCode = LoginErrorCodes.NOT_LOGIN;
|
||||
return this.userManagementService.getUserInfo().pipe(map(user => {
|
||||
if (user) {
|
||||
errorCode = LoginErrorCodes.NOT_ADMIN;
|
||||
}
|
||||
return user && (Session.isPortalAdministrator(user) ||
|
||||
Session.isCurator('researcher', user) || user?.orcid === alias);
|
||||
}), tap(authorized => {
|
||||
if (!authorized) {
|
||||
this.router.navigate(['/user-info'], {queryParams: {'errorCode': errorCode, 'redirectUrl': path}});
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
check(path: string, alias: string): Observable<boolean> | boolean {
|
||||
let errorCode = LoginErrorCodes.NOT_LOGIN;
|
||||
return zip(
|
||||
this.userManagementService.getUserInfo(), this.stakeholderService.getStakeholder(alias)
|
||||
).pipe(take(1), map(res => {
|
||||
if (res[0]) {
|
||||
errorCode = LoginErrorCodes.NOT_ADMIN;
|
||||
}
|
||||
return res[0] && res[1] && (Session.isPortalAdministrator(res[0]) ||
|
||||
Session.isCurator(res[1].type, res[0]) ||
|
||||
Session.isManager(res[1].type, res[1].alias, res[0]) ||
|
||||
Session.isMember(res[1].type, res[1].alias, res[0]))
|
||||
}), tap(authorized => {
|
||||
if (!authorized) {
|
||||
this.router.navigate(['/user-info'], {queryParams: {'errorCode': errorCode, 'redirectUrl': path}});
|
||||
}
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@ import {SearchFieldsBase} from "src/app/openaireLibrary/utils/properties/searchF
|
|||
import {properties} from "src/environments/environment";
|
||||
|
||||
export class SearchFields extends SearchFieldsBase {
|
||||
public RESULT_STATIC_FIELDS = ["resultbestaccessright", "haslicense", "type",
|
||||
public RESULT_STATIC_FIELDS = ["resultbestaccessright", "type",
|
||||
"peerreviewed", "isgreen", "isindiamondjournal", "publiclyfunded"];
|
||||
|
||||
public RESULT_REFINE_FIELDS = [
|
||||
|
@ -16,7 +16,7 @@ export class SearchFields extends SearchFieldsBase {
|
|||
RESULT_FIELDS_ORDERED = [
|
||||
{type: "refine", title: "", values: ["type"]},
|
||||
{type: "refine", title: "", values: ["instancetypename", "peerreviewed"]},
|
||||
{type: "refine", title: "", values: ["resultbestaccessright", "haslicense"]},
|
||||
{type: "refine", title: "", values: ["resultbestaccessright"]},
|
||||
{type: "refine", title: "Access Routes", values: ["isgreen", "openaccesscolor", "isindiamondjournal"]},
|
||||
{type: "range", title: "", values: ["resultacceptanceyear", "resultacceptanceyear"]},
|
||||
{type: "refine", title: "", values: [
|
||||
|
@ -26,9 +26,6 @@ export class SearchFields extends SearchFieldsBase {
|
|||
]}
|
||||
];
|
||||
|
||||
ORGANIZATION_REFINE_FIELDS: string[] = [];
|
||||
ORGANIZATION_ADVANCED_FIELDS: string[] = ["q", "organizationlegalname", "organizationlegalshortname", "pid"];
|
||||
|
||||
public static getParameterOrder(fieldId: string, params): number {
|
||||
let fields = [];
|
||||
let searchFields = new SearchFields();
|
||||
|
|
|
@ -16,7 +16,7 @@ import {UserProfileService} from "../openaireLibrary/services/userProfile.servic
|
|||
<div class="">
|
||||
<div>
|
||||
National Open Access Monitor - Ireland requires users to accept user privacy policy, to proceed with certain actions.<br>
|
||||
Please read the <a href="/assets/privacy-policy.pdf" target="_blank">user privacy policy</a>.
|
||||
Please read the <a href="/assets/National Open Access Monitor, Ireland - Personal data protection policy and public logs consent form.pdf" target="_blank">user privacy policy</a>.
|
||||
</div>
|
||||
<div>
|
||||
<input type="checkbox" (change)="value = !value"> Accept policy</div>
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit a4d8923b82a59ac1cc41e9c0574f1d64a61c0c1b
|
||||
Subproject commit 651102a5ba049b71bed8eb6a85a8d02cefcb24cc
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
// Base
|
||||
@import "variables";
|
||||
@import "base";
|
||||
|
||||
// Elements
|
||||
@import "button";
|
||||
|
@ -19,10 +18,8 @@
|
|||
|
||||
// Navs
|
||||
@import "navbar";
|
||||
@import "subnav";
|
||||
|
||||
// Utilities
|
||||
@import "text";
|
||||
@import "background";
|
||||
|
||||
// Extra
|
||||
|
|
|
@ -1,8 +1,3 @@
|
|||
@background-primary-background-gradient: none;
|
||||
@background-secondary-background: @primary-dark-color;
|
||||
@background-secondary-blur-background: @grey-color;
|
||||
@background-muted-background: @table-color;
|
||||
|
||||
.uk-background-secondary {
|
||||
.set-blur-background(@background-secondary-blur-background, 30%, brightness(0.7) blur(50px));
|
||||
}
|
|
@ -1 +1,91 @@
|
|||
@banner-tab-item-hover-color: @irish-global-secondary-color;
|
||||
@banner-background: @ciel-color;
|
||||
@banner-background-gradient: none;
|
||||
|
||||
@banner-footer-background: #000000;
|
||||
|
||||
@banner-tab-gutter: 60px;
|
||||
@banner-tab-margin-vertical: @global-small-margin;
|
||||
@banner-tab-divider: @global-border-width solid @global-border;
|
||||
@banner-tab-divider-height: @global-line-height;
|
||||
@banner-tab-item-hover-color: @irish-global-secondary-color;
|
||||
@banner-tab-item-active-color: @banner-tab-item-hover-color;
|
||||
@banner-tab-item-active-indicator: @global-background;
|
||||
|
||||
@banner-tab-button-background: @global-secondary-background;
|
||||
@banner-tab-button-border-radius: 0;
|
||||
|
||||
.uk-banner:extend(.uk-section) {
|
||||
background: @banner-background;
|
||||
position: relative;
|
||||
|
||||
& .uk-banner-footer:extend(.uk-light all) {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
background: fade(@banner-footer-background, 50%);
|
||||
|
||||
@supports ((-webkit-backdrop-filter: none) or (backdrop-filter: none)) {
|
||||
-webkit-backdrop-filter: blur(30px) opacity(10%) brightness(90%);
|
||||
backdrop-filter: blur(30px) opacity(10%) brightness(90%);
|
||||
}
|
||||
|
||||
& ul.uk-banner-tab:extend(.uk-flex):extend(.uk-margin-top) {
|
||||
list-style: none;
|
||||
margin: @banner-tab-margin-vertical 0;
|
||||
|
||||
& > li {
|
||||
&:not(:first-child) {
|
||||
margin-left: @banner-tab-gutter;
|
||||
position: relative;
|
||||
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: -1 * (@banner-tab-gutter/2);
|
||||
transform: translateX(-100%);
|
||||
border-left: @banner-tab-divider;
|
||||
height: @banner-tab-divider-height;
|
||||
}
|
||||
}
|
||||
|
||||
a:extend(.uk-text-truncate) {
|
||||
text-transform: uppercase;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
&:hover a {
|
||||
color: @banner-tab-item-hover-color;
|
||||
}
|
||||
|
||||
&.uk-active a {
|
||||
color: @banner-tab-item-active-color;
|
||||
font-weight: @text-bold-weight;
|
||||
position: relative;
|
||||
|
||||
&:after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
bottom: -@banner-tab-margin-vertical;
|
||||
left: 50%;
|
||||
transform: translate(-50%, 50%);
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-left: 2*@banner-tab-margin-vertical solid transparent;
|
||||
border-right: 2*@banner-tab-margin-vertical solid transparent;
|
||||
border-bottom: @banner-tab-margin-vertical solid @banner-tab-item-active-indicator;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
& .uk-button {
|
||||
background: @banner-tab-button-background;
|
||||
border-radius: @banner-tab-button-border-radius;
|
||||
|
||||
&:hover {
|
||||
background: fade(@banner-tab-button-background, 80%);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
@base-mark-background: fade(@global-primary-background, 20%);
|
|
@ -6,12 +6,3 @@
|
|||
@card-default-border-width-m: @card-default-border-width;
|
||||
@card-default-hover-background: @card-hover-background;
|
||||
@card-default-hover-border: @global-primary-background;
|
||||
|
||||
|
||||
.hook-card-default() {
|
||||
.set-blur-background(@card-default-background, 80%) !important;
|
||||
|
||||
.uk-slider-arrow, .uk-slider-arrow > .uk-icon-button {
|
||||
background: @card-default-background !important;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,13 +1,7 @@
|
|||
/* Secondary */
|
||||
@label-secondary-background: @irish-global-secondary-color;
|
||||
@label-secondary-color: @global-inverse-color;
|
||||
@label-secondary-border: @irish-global-secondary-color;
|
||||
|
||||
/* Search filter */
|
||||
@label-search-filter-background: @irish-global-secondary-color;
|
||||
@label-search-filter-color: @global-inverse-color;
|
||||
@label-search-filter-border: @irish-global-secondary-color;
|
||||
|
||||
.hook-label-misc() {
|
||||
.uk-label-secondary {
|
||||
& .uk-close {
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
@subnav-pill-alt-item-active-background: @global-secondary-background;
|
||||
@subnav-pill-alt-item-active-background-gradient: none;
|
|
@ -1 +0,0 @@
|
|||
@inverse-text-primary-color: @global-primary-background;
|
Before Width: | Height: | Size: 3.0 MiB |
Before Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 776 KiB |
Before Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 20 KiB |
|
@ -1,99 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="632.213" height="519.857" viewBox="0 0 632.213 519.857">
|
||||
<defs>
|
||||
<filter id="dark" x="312.065" y="348.286" width="171.572" height="171.572" filterUnits="userSpaceOnUse">
|
||||
<feOffset dx="15" dy="15" input="SourceAlpha"/>
|
||||
<feGaussianBlur stdDeviation="12.5" result="blur"/>
|
||||
<feFlood flood-opacity="0.102"/>
|
||||
<feComposite operator="in" in2="blur"/>
|
||||
<feComposite in="SourceGraphic"/>
|
||||
</filter>
|
||||
<filter id="dark-2" x="119.861" y="0" width="171.572" height="171.572" filterUnits="userSpaceOnUse">
|
||||
<feOffset dx="15" dy="15" input="SourceAlpha"/>
|
||||
<feGaussianBlur stdDeviation="12.5" result="blur-2"/>
|
||||
<feFlood flood-opacity="0.102"/>
|
||||
<feComposite operator="in" in2="blur-2"/>
|
||||
<feComposite in="SourceGraphic"/>
|
||||
</filter>
|
||||
<filter id="dark-3" x="23.937" y="225.984" width="171.572" height="171.572" filterUnits="userSpaceOnUse">
|
||||
<feOffset dx="15" dy="15" input="SourceAlpha"/>
|
||||
<feGaussianBlur stdDeviation="12.5" result="blur-3"/>
|
||||
<feFlood flood-opacity="0.102"/>
|
||||
<feComposite operator="in" in2="blur-3"/>
|
||||
<feComposite in="SourceGraphic"/>
|
||||
</filter>
|
||||
<filter id="dark-4" x="266.709" y="50.667" width="171.572" height="171.572" filterUnits="userSpaceOnUse">
|
||||
<feOffset dx="15" dy="15" input="SourceAlpha"/>
|
||||
<feGaussianBlur stdDeviation="12.5" result="blur-4"/>
|
||||
<feFlood flood-opacity="0.102"/>
|
||||
<feComposite operator="in" in2="blur-4"/>
|
||||
<feComposite in="SourceGraphic"/>
|
||||
</filter>
|
||||
<filter id="dark-5" x="407.988" y="122.304" width="171.572" height="171.572" filterUnits="userSpaceOnUse">
|
||||
<feOffset dx="15" dy="15" input="SourceAlpha"/>
|
||||
<feGaussianBlur stdDeviation="12.5" result="blur-5"/>
|
||||
<feFlood flood-opacity="0.102"/>
|
||||
<feComposite operator="in" in2="blur-5"/>
|
||||
<feComposite in="SourceGraphic"/>
|
||||
</filter>
|
||||
<filter id="dark-6" x="166.589" y="286.537" width="171.572" height="171.572" filterUnits="userSpaceOnUse">
|
||||
<feOffset dx="15" dy="15" input="SourceAlpha"/>
|
||||
<feGaussianBlur stdDeviation="12.5" result="blur-6"/>
|
||||
<feFlood flood-opacity="0.102"/>
|
||||
<feComposite operator="in" in2="blur-6"/>
|
||||
<feComposite in="SourceGraphic"/>
|
||||
</filter>
|
||||
</defs>
|
||||
<g id="Group_14281" data-name="Group 14281" transform="matrix(0.985, 0.174, -0.174, 0.985, -733.479, -286.153)">
|
||||
<g id="Group_12983" data-name="Group 12983" transform="translate(877.932 158.215) rotate(13)">
|
||||
<path id="Path_104359" data-name="Path 104359" d="M19.757,27.133S166.609,0,290.143,0s305.85,5.749,277.5,40.262S204.069,143.135,204.069,143.135-75.4,210.955,19.757,242.683s547.888,0,547.888,0" transform="translate(0 0)" fill="none" stroke="#dedede" stroke-width="5"/>
|
||||
<g id="Group_12980" data-name="Group 12980" transform="translate(375.294 219.485)">
|
||||
<g id="Group_12847" data-name="Group 12847" transform="translate(0 0)">
|
||||
<g transform="matrix(0.92, -0.39, 0.39, 0.92, -479.34, -199.34)" filter="url(#dark)">
|
||||
<rect id="dark-7" data-name="dark" width="73.649" height="73.649" rx="36.825" transform="matrix(0.92, 0.39, -0.39, 0.92, 363.34, 370.79)" fill="#f9f9f9"/>
|
||||
</g>
|
||||
<rect id="neutral" width="73.649" height="73.649" rx="36.825" fill="#f9f9f9"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Group_12979" data-name="Group 12979" transform="translate(944.471 146.878) rotate(13)">
|
||||
<g id="Group_12847-2" data-name="Group 12847" transform="translate(0 0)">
|
||||
<g transform="matrix(0.92, -0.39, 0.39, 0.92, -166.33, 46.16)" filter="url(#dark-2)">
|
||||
<rect id="dark-8" data-name="dark" width="73.649" height="73.649" rx="36.825" transform="matrix(0.92, 0.39, -0.39, 0.92, 171.14, 22.5)" fill="#f9f9f9"/>
|
||||
</g>
|
||||
<rect id="neutral-2" data-name="neutral" width="73.649" height="73.649" rx="36.825" fill="#f9f9f9"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Group_12982" data-name="Group 12982" transform="translate(889.246 386.086) rotate(13)">
|
||||
<g id="Group_12847-3" data-name="Group 12847" transform="translate(0 0)">
|
||||
<g transform="matrix(0.92, -0.39, 0.39, 0.92, -166.33, -199.34)" filter="url(#dark-3)">
|
||||
<rect id="dark-9" data-name="dark" width="73.649" height="73.649" rx="36.825" transform="matrix(0.92, 0.39, -0.39, 0.92, 75.21, 248.48)" fill="#f9f9f9"/>
|
||||
</g>
|
||||
<rect id="neutral-3" data-name="neutral" width="73.649" height="73.649" rx="36.825" fill="#f9f9f9"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Group_12977" data-name="Group 12977" transform="translate(1097.886 171.275) rotate(13)">
|
||||
<g id="Group_12847-4" data-name="Group 12847" transform="translate(0 0)">
|
||||
<g transform="matrix(0.92, -0.39, 0.39, 0.92, -321.3, 56.9)" filter="url(#dark-4)">
|
||||
<rect id="dark-10" data-name="dark" width="73.649" height="73.649" rx="36.825" transform="matrix(0.92, 0.39, -0.39, 0.92, 317.99, 73.17)" fill="#f9f9f9"/>
|
||||
</g>
|
||||
<rect id="neutral-4" data-name="neutral" width="73.649" height="73.649" rx="36.825" fill="#f9f9f9"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Group_12978" data-name="Group 12978" transform="translate(1249.459 217.291) rotate(13)">
|
||||
<g id="Group_12847-5" data-name="Group 12847" transform="translate(0 0)">
|
||||
<g transform="matrix(0.92, -0.39, 0.39, 0.92, -479.34, 46.16)" filter="url(#dark-5)">
|
||||
<rect id="dark-11" data-name="dark" width="73.649" height="73.649" rx="36.825" transform="matrix(0.92, 0.39, -0.39, 0.92, 459.27, 144.8)" fill="#f9f9f9"/>
|
||||
</g>
|
||||
<rect id="neutral-5" data-name="neutral" width="73.649" height="73.649" rx="36.825" fill="#f9f9f9"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Group_12981" data-name="Group 12981" transform="translate(1040.246 420.948) rotate(13)">
|
||||
<g id="Group_12847-6" data-name="Group 12847" transform="translate(0 0)">
|
||||
<g transform="matrix(0.92, -0.39, 0.39, 0.92, -321.3, -199.34)" filter="url(#dark-6)">
|
||||
<rect id="dark-12" data-name="dark" width="73.649" height="73.649" rx="36.825" transform="matrix(0.92, 0.39, -0.39, 0.92, 217.87, 309.04)" fill="#f9f9f9"/>
|
||||
</g>
|
||||
<rect id="neutral-6" data-name="neutral" width="73.649" height="73.649" rx="36.825" fill="#f9f9f9"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 137 KiB |
Before Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 91 KiB |
Before Width: | Height: | Size: 652 KiB |