Compare commits
No commits in common. "master" and "test" have entirely different histories.
176
LICENSE.txt
|
@ -1,176 +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
|
|
106
README.md
|
@ -1,108 +1,30 @@
|
||||||
# UOA Repository Manager UI
|
# UOA Repository Manager UI
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Introduction
|
|
||||||
## Architecture
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Building
|
|
||||||
|
|
||||||
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 6.0.8 (Angular version 6.1.10).
|
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 6.0.8 (Angular version 6.1.10).
|
||||||
|
|
||||||
#### Minimum requirements for installing and building the project
|
## Minimum requirements for installing and building the project
|
||||||
|
|
||||||
[Node.js](https://nodejs.org/en/) version 8.x or 10.x.<br>
|
[Node.js](https://nodejs.org/en/) version 8.x or 10.x.<br>
|
||||||
[npm client](https://docs.npmjs.com/cli/install) command line interface (it is installed with Node.js by default).
|
[npm client](https://docs.npmjs.com/cli/install) command line interface (it is installed with Node.js by default).
|
||||||
- [Node.js version 16](https://nodejs.org/en/blog/release/v16.16.0)
|
|
||||||
|
|
||||||
###### Build Instructions:
|
## Installing the project
|
||||||
Follow the instructions below to download the source code and build the application.
|
|
||||||
For more information about building an Angular app you can refer to the official documentation: [Building and serving Angular apps](https://angular.io/guide/build#building-and-serving-angular-apps).
|
|
||||||
|
|
||||||
1. Clone the repository and move inside the directory
|
After checking out (or updating) the repository enter the created folder and run `npm ci`.
|
||||||
<br> `git clone https://code-repo.d4science.org/MaDgIK/uoa-repository-manager-ui.git && cd uoa-repository-manager-ui`
|
This will install the exact versions of the dependencies as mentioned in the `package-lock.json` file (inside the root folder).
|
||||||
2. Install Angular dependencies
|
|
||||||
<br> `npm install`
|
|
||||||
3. Build Angular app
|
|
||||||
<br> `ng build --configuration production`
|
|
||||||
<br> Produces the directory "dist/**uoa-repository-manager-ui**" which contains the compiled files.
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
|
|
||||||
## Deployment
|
## Build for production
|
||||||
|
|
||||||
### Prerequisites
|
Run `npm run build` (equivalent of `ng build --prod`) to build the project. The build artifacts will be stored in the `dist/uoa-repository-manager-ui` directory.
|
||||||
- Nginx
|
|
||||||
|
|
||||||
### Instructions
|
## Deploy project to nginx server
|
||||||
To deploy the Frontend app:
|
|
||||||
1. Make sure that you have successfully built and installed the application on Nginx (or another Web Server).
|
|
||||||
2. _Start_ or _reload_ the Web Server service.
|
|
||||||
<br>e.g. `systemctl start nginx` or `systemctl reload nginx`
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
### Prerequisites
|
|
||||||
- [Nginx](https://www.nginx.com/) (or another Web Server like [Apache HTTP Server](https://httpd.apache.org/))
|
|
||||||
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
|
|
||||||
|
|
||||||
### Installation
|
|
||||||
|
|
||||||
#### Nginx Configuration
|
|
||||||
You have to create a [Server Block configuration](https://www.nginx.com/resources/wiki/start/topics/examples/server_blocks/) that will point to the directory "dist/**uoa-repository-manager-ui**" created by [building manually](./building.md#manual-build) the webapp.
|
|
||||||
It must also be configured as a reverse proxy for the Backend Application (to serve it under the path '/api') and for the list of [Dependencies](#dependencies) of the project.
|
|
||||||
|
|
||||||
See the example below:
|
|
||||||
```nginx
|
|
||||||
server {
|
|
||||||
server_name ...
|
|
||||||
access_log ...
|
|
||||||
root /path/to/uoa-repository-manager-ui; # the directory of the application
|
|
||||||
|
|
||||||
location / {
|
|
||||||
try_files $uri$args $uri$args/ /index.html /index.php;
|
|
||||||
}
|
|
||||||
|
|
||||||
location ~* \.(eot|ttf|woff)$ {
|
|
||||||
add_header Access-Control-Allow-Origin *;
|
|
||||||
}
|
|
||||||
|
|
||||||
# reverse proxy configuration for the backend application
|
|
||||||
location /api {
|
|
||||||
proxy_set_header Host $host;
|
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
|
||||||
proxy_pass <?>;
|
|
||||||
proxy_read_timeout 3600;
|
|
||||||
proxy_send_timeout 3600;
|
|
||||||
}
|
|
||||||
|
|
||||||
[...]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Lastly, we would advice to validate the configuration of the Nginx to make sure it does not contain errors.
|
|
||||||
<br>Execute `nginx -t` with elevated permissions to perform a validation. If the test is successful you can move on to [deploying](./deployment.md#frontend) the application.
|
|
||||||
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
|
|
||||||
## Configuration
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Security
|
|
||||||
## Maintenance
|
|
||||||
## Recovery
|
|
||||||
## References
|
|
||||||
|
|
||||||
|
Run `tar -czvf dist.tar.gz dist/` to generate a compressed `.gz` file containing the built angular folder<br>
|
||||||
|
Run `scp dist.tar.gz path/to/server/` to copy the compressed file to the server.<br>
|
||||||
|
Connect to server (`ssh user@server.ip.address`).<br>
|
||||||
|
Uncompress `dist.tar.gz` file.<br>
|
||||||
|
Navigate to the root folder of the server.
|
||||||
|
Copy the contents of the uncompressed dist/uoa-repository-manager-ui folder
|
||||||
|
into the `uoa-repository-manager-dashboard` folder (superuser privileges are normally required for this action).<br>
|
||||||
|
|
||||||
## Other topics
|
## Other topics
|
||||||
### Development server
|
### Development server
|
||||||
|
|
27
angular.json
|
@ -33,22 +33,10 @@
|
||||||
"src/assets/js/altair_admin_common.min.js",
|
"src/assets/js/altair_admin_common.min.js",
|
||||||
"src/assets/js/common.min.js",
|
"src/assets/js/common.min.js",
|
||||||
"src/assets/js/pages/forms_wizard.js"
|
"src/assets/js/pages/forms_wizard.js"
|
||||||
],
|
]
|
||||||
"vendorChunk": true,
|
|
||||||
"extractLicenses": false,
|
|
||||||
"buildOptimizer": false,
|
|
||||||
"sourceMap": true,
|
|
||||||
"optimization": false,
|
|
||||||
"namedChunks": true
|
|
||||||
},
|
},
|
||||||
"configurations": {
|
"configurations": {
|
||||||
"production": {
|
"production": {
|
||||||
"budgets": [
|
|
||||||
{
|
|
||||||
"type": "anyComponentStyle",
|
|
||||||
"maximumWarning": "6kb"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"fileReplacements": [
|
"fileReplacements": [
|
||||||
{
|
{
|
||||||
"replace": "src/environments/environment.ts",
|
"replace": "src/environments/environment.ts",
|
||||||
|
@ -58,18 +46,14 @@
|
||||||
"optimization": true,
|
"optimization": true,
|
||||||
"outputHashing": "all",
|
"outputHashing": "all",
|
||||||
"sourceMap": false,
|
"sourceMap": false,
|
||||||
|
"extractCss": true,
|
||||||
"namedChunks": false,
|
"namedChunks": false,
|
||||||
|
"aot": true,
|
||||||
"extractLicenses": true,
|
"extractLicenses": true,
|
||||||
"vendorChunk": false,
|
"vendorChunk": false,
|
||||||
"buildOptimizer": true
|
"buildOptimizer": true
|
||||||
},
|
},
|
||||||
"beta": {
|
"beta": {
|
||||||
"budgets": [
|
|
||||||
{
|
|
||||||
"type": "anyComponentStyle",
|
|
||||||
"maximumWarning": "6kb"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"fileReplacements": [
|
"fileReplacements": [
|
||||||
{
|
{
|
||||||
"replace": "src/environments/environment.ts",
|
"replace": "src/environments/environment.ts",
|
||||||
|
@ -79,13 +63,14 @@
|
||||||
"optimization": true,
|
"optimization": true,
|
||||||
"outputHashing": "all",
|
"outputHashing": "all",
|
||||||
"sourceMap": false,
|
"sourceMap": false,
|
||||||
|
"extractCss": true,
|
||||||
"namedChunks": false,
|
"namedChunks": false,
|
||||||
|
"aot": true,
|
||||||
"extractLicenses": true,
|
"extractLicenses": true,
|
||||||
"vendorChunk": false,
|
"vendorChunk": false,
|
||||||
"buildOptimizer": true
|
"buildOptimizer": true
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
"defaultConfiguration": ""
|
|
||||||
},
|
},
|
||||||
"serve": {
|
"serve": {
|
||||||
"builder": "@angular-devkit/build-angular:dev-server",
|
"builder": "@angular-devkit/build-angular:dev-server",
|
||||||
|
|
71
package.json
|
@ -3,58 +3,57 @@
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"ng": "ng",
|
"ng": "ng",
|
||||||
"start": "ng serve --proxy-config proxy.conf.json",
|
"start": "ng serve",
|
||||||
"start:proxy": "ng serve --proxy-config proxy.conf.json",
|
"start:proxy": "ng serve --proxy-config proxy.conf.json",
|
||||||
"build": "ng build --output-hashing=all",
|
"build": "rm -rf dist; ng build --prod",
|
||||||
"build:beta": "ng build --configuration beta --output-hashing=all",
|
|
||||||
"build:prod": "ng build --configuration production --output-hashing=all",
|
|
||||||
"test": "ng test",
|
"test": "ng test",
|
||||||
"lint": "ng lint",
|
"lint": "ng lint",
|
||||||
"e2e": "ng e2e"
|
"e2e": "ng e2e"
|
||||||
},
|
},
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@angular/animations": "12.2.17",
|
"@angular/animations": "^6.0.3",
|
||||||
"@angular/common": "12.2.17",
|
"@angular/common": "^6.0.3",
|
||||||
"@angular/compiler": "12.2.17",
|
"@angular/compiler": "^6.0.3",
|
||||||
"@angular/core": "12.2.17",
|
"@angular/core": "^6.0.3",
|
||||||
"@angular/forms": "12.2.17",
|
"@angular/forms": "^6.0.3",
|
||||||
"@angular/platform-browser": "12.2.17",
|
"@angular/http": "^6.0.3",
|
||||||
"@angular/platform-browser-dynamic": "^12.2.17",
|
"@angular/platform-browser": "^6.0.3",
|
||||||
"@angular/router": "12.2.17",
|
"@angular/platform-browser-dynamic": "^6.0.3",
|
||||||
|
"@angular/router": "^6.0.3",
|
||||||
"altair": "^1.0.0",
|
"altair": "^1.0.0",
|
||||||
|
"angular2-cookie-law": "^6.0.4",
|
||||||
"bootstrap": "^4.1.3",
|
"bootstrap": "^4.1.3",
|
||||||
"core-js": "^2.5.4",
|
"core-js": "^2.5.4",
|
||||||
"highcharts": "^9.1.2",
|
"highcharts": "^7.2.1",
|
||||||
"highcharts-angular": "^2.10.0",
|
"highcharts-angular": "^2.4.0",
|
||||||
"jquery": "^3.4.1",
|
"jquery": "^3.4.1",
|
||||||
"jquery-bez": "^1.0.11",
|
"jquery-bez": "^1.0.11",
|
||||||
"ngx-bootstrap": "^4.3.0",
|
"ngx-bootstrap": "^3.0.1",
|
||||||
"ngx-matomo": "1.0.0-rc.0",
|
"ngx-matomo": "^0.1.2",
|
||||||
"rxjs": "6.6.7",
|
"rxjs": "6.3.3",
|
||||||
"tslib": "^2.0.0",
|
|
||||||
"uikit": "^3.0.0-rc.19",
|
"uikit": "^3.0.0-rc.19",
|
||||||
"zone.js": "~0.11.4"
|
"zone.js": "^0.8.26"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@angular-devkit/build-angular": "~12.2.18",
|
"@angular-devkit/build-angular": "~0.6.8",
|
||||||
"@angular/cli": "~12.2.18",
|
"@angular/cli": "~6.0.8",
|
||||||
"@angular/compiler-cli": "^12.2.17",
|
"@angular/compiler-cli": "^6.0.3",
|
||||||
"@angular/language-service": "^12.2.17",
|
"@angular/language-service": "^6.0.3",
|
||||||
"@types/jasmine": "~3.6.0",
|
"@types/jasmine": "~2.8.6",
|
||||||
"@types/jasminewd2": "~2.0.3",
|
"@types/jasminewd2": "~2.0.3",
|
||||||
"@types/node": "^12.11.1",
|
"@types/node": "~8.9.4",
|
||||||
"codelyzer": "^6.0.0",
|
"codelyzer": "~4.2.1",
|
||||||
"jasmine-core": "~3.8.0",
|
"jasmine-core": "~2.99.1",
|
||||||
"jasmine-spec-reporter": "~5.0.0",
|
"jasmine-spec-reporter": "~4.2.1",
|
||||||
"karma": "~6.3.4",
|
"karma": "~4.0.0",
|
||||||
"karma-chrome-launcher": "~3.1.0",
|
"karma-chrome-launcher": "~2.2.0",
|
||||||
"karma-coverage-istanbul-reporter": "~3.0.2",
|
"karma-coverage-istanbul-reporter": "~2.0.0",
|
||||||
"karma-jasmine": "~4.0.0",
|
"karma-jasmine": "~1.1.1",
|
||||||
"karma-jasmine-html-reporter": "^1.5.0",
|
"karma-jasmine-html-reporter": "^0.2.2",
|
||||||
"protractor": "~7.0.0",
|
"protractor": "^5.4.1",
|
||||||
"ts-node": "~5.0.1",
|
"ts-node": "~5.0.1",
|
||||||
"tslint": "~6.1.0",
|
"tslint": "~5.9.1",
|
||||||
"typescript": "~4.3.5"
|
"typescript": "~2.7.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
# This file is currently used by autoprefixer to adjust CSS to support the below specified browsers
|
|
||||||
# For additional information regarding the format and rule options, please see:
|
|
||||||
# https://github.com/browserslist/browserslist#queries
|
|
||||||
# For IE 9-11 support, please uncomment the last line of the file and adjust as needed
|
|
||||||
> 0.5%
|
|
||||||
last 2 versions
|
|
||||||
Firefox ESR
|
|
||||||
not dead
|
|
||||||
# IE 9-11
|
|
|
@ -3,9 +3,9 @@ import { NgModule } from '@angular/core';
|
||||||
import { HomeComponent } from './pages/landing/home/home.component';
|
import { HomeComponent } from './pages/landing/home/home.component';
|
||||||
import { AuthGuardService } from './services/auth-guard.service';
|
import { AuthGuardService } from './services/auth-guard.service';
|
||||||
import { ForbiddenPageComponent } from './shared/reusablecomponents/403-forbidden-page.component';
|
import { ForbiddenPageComponent } from './shared/reusablecomponents/403-forbidden-page.component';
|
||||||
import { EmptyPageComponent } from './pages/emptypage/empty-page.component';
|
import { EmptyPageComponent } from "./pages/emptypage/empty-page.component";
|
||||||
import { JoinComponent } from './pages/join/join.component';
|
import { JoinComponent } from "./pages/join/join.component";
|
||||||
import { AboutComponent } from './pages/landing/about/about.component';
|
import { AboutComponent } from "./pages/landing/about/about.component";
|
||||||
|
|
||||||
const appRoutes: Routes = [
|
const appRoutes: Routes = [
|
||||||
{
|
{
|
||||||
|
@ -33,38 +33,57 @@ const appRoutes: Routes = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'repository',
|
path: 'repository',
|
||||||
loadChildren: () => import('./pages/repository/repository.module').then(m => m.RepositoryModule),
|
loadChildren: './pages/repository/repository.module#RepositoryModule',
|
||||||
|
// loadChildren: () => import('./pages/repository/repository.module').then(m => m.RepositoryModule),
|
||||||
canActivate: [AuthGuardService]
|
canActivate: [AuthGuardService]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'repositoryAdmin',
|
path: 'repositoryAdmin',
|
||||||
loadChildren: () => import('./pages/repository/repository.module').then(m => m.RepositoryModule),
|
loadChildren: './pages/repository/repository.module#RepositoryModule',
|
||||||
|
// loadChildren: () => import('./pages/repository/repository.module').then(m => m.RepositoryModule),
|
||||||
canActivate: [AuthGuardService]
|
canActivate: [AuthGuardService]
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
// {
|
||||||
|
// path: 'dashboard',
|
||||||
|
// component: DashboardComponent,
|
||||||
|
// canActivate: [AuthGuardService]
|
||||||
|
// },
|
||||||
{
|
{
|
||||||
path: 'sources',
|
path: 'sources',
|
||||||
loadChildren: () => import('./pages/sources/sources.module').then(m => m.SourcesModule),
|
loadChildren: './pages/sources/sources.module#SourcesModule',
|
||||||
canActivate: [AuthGuardService]
|
canActivate: [AuthGuardService]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'compatibility',
|
path: 'compatibility',
|
||||||
loadChildren: () => import('./pages/compatibility/compatibility.module').then(m => m.CompatibilityModule)
|
loadChildren: './pages/compatibility/compatibility.module#CompatibilityModule'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'content',
|
path: 'content',
|
||||||
loadChildren: () => import('./pages/content/content.module').then(m => m.ContentModule),
|
loadChildren: './pages/content/content.module#ContentModule',
|
||||||
canActivate: [AuthGuardService]
|
canActivate: [AuthGuardService]
|
||||||
},
|
},
|
||||||
|
// {
|
||||||
|
// path: 'getImpact',
|
||||||
|
// loadChildren: './pages/metrics/metrics.module#MetricsModule',
|
||||||
|
// canActivate: [AuthGuardService]
|
||||||
|
// },
|
||||||
{
|
{
|
||||||
path: 'admin',
|
path: 'admin',
|
||||||
loadChildren: () => import('./pages/adminPg/adminPg.module').then(m => m.AdminPgModule),
|
loadChildren: './pages/adminPg/adminPg.module#AdminPgModule',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '403-forbidden',
|
path: '403-forbidden',
|
||||||
component: ForbiddenPageComponent
|
component: ForbiddenPageComponent
|
||||||
},
|
},
|
||||||
|
// {
|
||||||
|
// path: '',
|
||||||
|
// redirectTo: '/home',
|
||||||
|
// pathMatch: 'full'
|
||||||
|
// },
|
||||||
{
|
{
|
||||||
// fixme redirect to 404
|
//fixme redirect to 404
|
||||||
path: '**',
|
path: '**',
|
||||||
redirectTo: '/403-forbidden',
|
redirectTo: '/403-forbidden',
|
||||||
// component: ForbiddenPageComponent
|
// component: ForbiddenPageComponent
|
||||||
|
@ -73,7 +92,7 @@ const appRoutes: Routes = [
|
||||||
|
|
||||||
|
|
||||||
@NgModule ({
|
@NgModule ({
|
||||||
imports: [RouterModule.forRoot(appRoutes, { relativeLinkResolution: 'legacy' })],
|
imports: [RouterModule.forRoot(appRoutes)],
|
||||||
exports: [RouterModule]
|
exports: [RouterModule]
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -50,39 +50,26 @@
|
||||||
<!-- End Matomo Code -->
|
<!-- End Matomo Code -->
|
||||||
|
|
||||||
|
|
||||||
<!-- Terms of Use (modal) -->
|
<!--<!– Terms of Use (modal) –>-->
|
||||||
<confirmation-dialog #subscribeToTermsModal [title]=modalTitle [isModalShown]=isModalShown
|
<!--<confirmation-dialog #subscribeToTermsModal [title]=modalTitle [isModalShown]=isModalShown-->
|
||||||
[confirmActionButton]=modalButton (emitObject)="updateTerms()">
|
<!-- [confirmActionButton]=modalButton (emitObject)="updateTerms()">-->
|
||||||
<form class="" [formGroup]="agreementForm">
|
<!-- <form class="" [formGroup]="agreementForm">-->
|
||||||
<div formArrayName="terms">
|
<!-- <div formArrayName="terms">-->
|
||||||
<table class="table">
|
<!-- <table class="table">-->
|
||||||
<tr>Thanks for being part of OpenAIRE. Please confirm the acceptance of our datasources policy.</tr>
|
<!-- <tr class="uk-text-nowrap">Do you agree with the <a href="https://zenodo.org/record/1446384#.XiGIAdmxU5n" target="_blank">terms of use</a>?</tr>-->
|
||||||
<br>
|
<!-- <tbody>-->
|
||||||
<tr>Being registered in OpenAIRE, you are giving consent to OpenAIRE to download, transform and enrich the
|
<!-- <tr class="el-item" *ngFor="let term of terms.controls; let i=index">-->
|
||||||
metadata records, publishing them in the OpenAIRE Research Graph.
|
<!--<!– {{term.get('accept').value}}–>-->
|
||||||
</tr>
|
<!-- <br> {{term.get('name').value}} <br>-->
|
||||||
<tbody>
|
<!-- <div [formGroupName]="i">-->
|
||||||
<tr class="el-item" *ngFor="let term of terms.controls; let i=index">
|
<!-- <label>-->
|
||||||
<br> {{term.get('name').value}} <br>
|
<!-- <input id="i" type="checkbox" formControlName="accept"> Yes, I agree to the terms of use.-->
|
||||||
<div [formGroupName]="i">
|
<!-- </label>-->
|
||||||
<label>
|
<!-- </div>-->
|
||||||
<input id="consentTerms" type="checkbox" formControlName="consentTermsOfUse">
|
<!-- </tr>-->
|
||||||
Accept the <a href="https://www.openaire.eu/terms-of-use-for-content-providers" target="_blank">Terms of Use</a>
|
<!-- </tbody>-->
|
||||||
</label>
|
<!-- </table>-->
|
||||||
<br>
|
<!-- </div>-->
|
||||||
<label>
|
<!-- </form>-->
|
||||||
<input id="consentText" type="checkbox" formControlName="fullTextDownload">Agree to the
|
<!-- <!– <pre>{{this.agreementForm.value | json}}</pre>–>-->
|
||||||
<a href="https://www.openaire.eu/terms-of-use-for-content-providers#consent" target="_blank">
|
<!--</confirmation-dialog>-->
|
||||||
re-use of full texts</a>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
<p class="uk-text-meta">Note: OpenAIRE will not provide the full text files for public distribution,
|
|
||||||
the users will access from the original datasource.
|
|
||||||
</p>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
<!-- <pre>{{this.agreementForm.value | json}}</pre>-->
|
|
||||||
</confirmation-dialog>
|
|
||||||
|
|
|
@ -1,24 +1,24 @@
|
||||||
import { TestBed, waitForAsync } from '@angular/core/testing';
|
import { TestBed, async } from '@angular/core/testing';
|
||||||
import { AppComponent } from './app.component';
|
import { AppComponent } from './app.component';
|
||||||
describe('AppComponent', () => {
|
describe('AppComponent', () => {
|
||||||
beforeEach(waitForAsync(() => {
|
beforeEach(async(() => {
|
||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
declarations: [
|
declarations: [
|
||||||
AppComponent
|
AppComponent
|
||||||
],
|
],
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
}));
|
}));
|
||||||
it('should create the app', waitForAsync(() => {
|
it('should create the app', async(() => {
|
||||||
const fixture = TestBed.createComponent(AppComponent);
|
const fixture = TestBed.createComponent(AppComponent);
|
||||||
const app = fixture.debugElement.componentInstance;
|
const app = fixture.debugElement.componentInstance;
|
||||||
expect(app).toBeTruthy();
|
expect(app).toBeTruthy();
|
||||||
}));
|
}));
|
||||||
it(`should have as title 'app'`, waitForAsync(() => {
|
it(`should have as title 'app'`, async(() => {
|
||||||
const fixture = TestBed.createComponent(AppComponent);
|
const fixture = TestBed.createComponent(AppComponent);
|
||||||
const app = fixture.debugElement.componentInstance;
|
const app = fixture.debugElement.componentInstance;
|
||||||
expect(app.title).toEqual('app');
|
expect(app.title).toEqual('app');
|
||||||
}));
|
}));
|
||||||
it('should render title in a h1 tag', waitForAsync(() => {
|
it('should render title in a h1 tag', async(() => {
|
||||||
const fixture = TestBed.createComponent(AppComponent);
|
const fixture = TestBed.createComponent(AppComponent);
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
const compiled = fixture.debugElement.nativeElement;
|
const compiled = fixture.debugElement.nativeElement;
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
import {Component, OnInit, ViewChild} from '@angular/core';
|
import {Component, OnInit, ViewChild} from '@angular/core';
|
||||||
import {NavigationEnd, Router} from '@angular/router';
|
import { NavigationEnd, Router, RoutesRecognized } from '@angular/router';
|
||||||
import {AuthenticationService} from './services/authentication.service';
|
import { AuthenticationService } from './services/authentication.service';
|
||||||
import {environment} from '../environments/environment';
|
import { environment } from '../environments/environment';
|
||||||
import {MatomoTracker} from 'ngx-matomo';
|
import { MatomoInjector, MatomoTracker } from 'ngx-matomo';
|
||||||
import {ConfirmationDialogComponent} from './shared/reusablecomponents/confirmation-dialog.component';
|
import { ConfirmationDialogComponent } from './shared/reusablecomponents/confirmation-dialog.component';
|
||||||
import {RepositoryService} from './services/repository.service';
|
import { RepositoryService } from './services/repository.service';
|
||||||
import {RepositorySnippet} from './domain/typeScriptClasses';
|
import { RepositorySnippet } from './domain/typeScriptClasses';
|
||||||
import {FormBuilder, FormGroup, FormArray} from '@angular/forms';
|
import {FormBuilder, FormGroup, FormControl, FormArray} from '@angular/forms';
|
||||||
|
import {element} from 'protractor';
|
||||||
|
import {timestamp} from 'rxjs/operators';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'oa-repo-manager',
|
selector: 'oa-repo-manager',
|
||||||
|
@ -30,10 +32,28 @@ export class AppComponent implements OnInit {
|
||||||
|
|
||||||
open: boolean = true;
|
open: boolean = true;
|
||||||
|
|
||||||
constructor(private router: Router, private authService: AuthenticationService, private matomoTracker: MatomoTracker,
|
constructor(private router: Router,
|
||||||
private repositoryService: RepositoryService, private fb: FormBuilder) {
|
private authService: AuthenticationService,
|
||||||
|
private matomoInjector: MatomoInjector,
|
||||||
|
private matomoTracker: MatomoTracker,
|
||||||
|
private repositoryService: RepositoryService,
|
||||||
|
private fb: FormBuilder) {
|
||||||
|
|
||||||
// console.log('21-06-2019. Fixed matomo to log userIds?');
|
console.log('21-06-2019. Fixed matomo to log userIds?');
|
||||||
|
|
||||||
|
let piwikUrl;
|
||||||
|
if (window.location.origin.includes('beta')) {
|
||||||
|
// piwikUrl = 'https://analytics.openaire.eu/piwik.php?idsite=92&rec=1';
|
||||||
|
piwikUrl = '92';
|
||||||
|
} else if (window.location.origin.includes('localhost:4200') ||
|
||||||
|
window.location.origin.includes('athenarc')) {
|
||||||
|
// piwikUrl = 'https://analytics.openaire.eu/piwik.php?idsite=92&rec=1';
|
||||||
|
piwikUrl = '9222222';
|
||||||
|
} else {
|
||||||
|
// piwikUrl = 'https://analytics.openaire.eu/piwik.php?idsite=111&rec=1';
|
||||||
|
piwikUrl = '111';
|
||||||
|
}
|
||||||
|
this.matomoInjector.init('https://analytics.openaire.eu/', piwikUrl);
|
||||||
|
|
||||||
/*disabling console.log in production*/
|
/*disabling console.log in production*/
|
||||||
if ( environment.production === true ) {
|
if ( environment.production === true ) {
|
||||||
|
@ -51,64 +71,63 @@ export class AppComponent implements OnInit {
|
||||||
this.authService.tryLogin();
|
this.authService.tryLogin();
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
|
||||||
this.router.events.subscribe((evt) => {
|
|
||||||
if (!(evt instanceof NavigationEnd)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (this.authService.isLoggedIn_) {
|
|
||||||
this.matomoTracker.setUserId(this.authService.getUserEmail());
|
|
||||||
}
|
|
||||||
window.scrollTo(0, 0);
|
|
||||||
});
|
|
||||||
|
|
||||||
this.authService.isLoggedIn.subscribe(
|
|
||||||
logged => {if (logged) {this.getReposOfUser(); }},
|
|
||||||
error => {console.log(error); }
|
|
||||||
);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
getReposOfUser(): void {
|
getReposOfUser(): void {
|
||||||
this.repositoryService.getRepositoriesSnippetsOfUser().subscribe(
|
this.repositoryService.getRepositoriesOfUser()
|
||||||
repos => {
|
.subscribe(
|
||||||
this.reposOfUser = repos;
|
repos => { this.reposOfUser = repos; },
|
||||||
},
|
error => { console.log(error); },
|
||||||
error => {
|
|
||||||
console.log(error);
|
|
||||||
},
|
|
||||||
() => {
|
() => {
|
||||||
// console.log(this.reposOfUser);
|
console.log(this.reposOfUser);
|
||||||
if (this.agreementForm.get('terms').value.length === 0) {
|
this.reposOfUser.forEach( repo => {
|
||||||
this.reposOfUser.forEach(repo => {
|
// TODO: change !repo.consentTermsOfUse check when it gets a non-null value
|
||||||
if (repo.consentTermsOfUse === null || repo.fullTextDownload === null) {
|
if (this.authService.isLoggedIn && !repo.consentTermsOfUse) {
|
||||||
this.addTerm(repo.officialname, repo.id, repo.consentTermsOfUse);
|
this.addTerm(repo.officialname, repo.id, repo.consentTermsOfUse);
|
||||||
this.isModalShown = true;
|
this.isModalShown = true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
updateTerms() {
|
updateTerms() {
|
||||||
this.repositoryService.updateRepositoriesTerms(this.agreementForm.value.terms).subscribe(
|
/* update consentTermsOfUse, consentTermsOfUseDate(?)
|
||||||
res => {},
|
depending on what value will consentTermsOfUse hold
|
||||||
err => {console.log(err); }
|
Also what type of consentTermsOfUse will be? boolean or string */
|
||||||
);
|
for (let i = 0; i < this.terms.length; i++) {
|
||||||
|
const id = this.terms.controls[i].get('id').value;
|
||||||
|
if (this.terms.controls[i].get('accept').value === true) {
|
||||||
|
console.log(`Agreed to the Terms of Use for: `, id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.consentTermsOfUseDate = new Date(Date.now());
|
||||||
|
console.log(this.consentTermsOfUseDate);
|
||||||
|
console.log('will POST when backend is ready');
|
||||||
}
|
}
|
||||||
|
|
||||||
addTerm(name: string, id: string, consent: boolean) {
|
ngOnInit() {
|
||||||
|
this.router.events.subscribe((evt) => {
|
||||||
|
if (!(evt instanceof NavigationEnd)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this.authService.isLoggedIn) {
|
||||||
|
this.matomoTracker.setUserId(this.authService.getUserEmail());
|
||||||
|
}
|
||||||
|
window.scrollTo(0, 0);
|
||||||
|
});
|
||||||
|
|
||||||
|
// this.getReposOfUser();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
addTerm(name: string, id: string, consent: string) {
|
||||||
this.terms.push(this.newTerm(name, id, consent));
|
this.terms.push(this.newTerm(name, id, consent));
|
||||||
}
|
}
|
||||||
|
|
||||||
newTerm(name: string, id: string, consent: boolean): FormGroup {
|
newTerm(name: string, id: string, consent: string): FormGroup {
|
||||||
return this.fb.group({
|
return this.fb.group({
|
||||||
id: [id],
|
id: [id],
|
||||||
name: [name],
|
name: [name],
|
||||||
// accept: [(consent ? consent : true)]
|
accept: [(consent ? consent : true)]
|
||||||
consentTermsOfUse: false,
|
|
||||||
fullTextDownload: false
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,30 +1,29 @@
|
||||||
import {AppComponent} from './app.component';
|
import { AppComponent } from './app.component';
|
||||||
import {NgModule} from '@angular/core';
|
import { NgModule } from '@angular/core';
|
||||||
import {BrowserModule} from '@angular/platform-browser';
|
import { BrowserModule } from '@angular/platform-browser';
|
||||||
import {NoopAnimationsModule} from '@angular/platform-browser/animations';
|
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
import {FormsModule, ReactiveFormsModule} from '@angular/forms';
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
||||||
import {HTTP_INTERCEPTORS, HttpClientModule} from '@angular/common/http';
|
import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
|
||||||
import {ReusableComponentsModule} from './shared/reusablecomponents/reusable-components.module';
|
import { ReusableComponentsModule } from './shared/reusablecomponents/reusable-components.module';
|
||||||
import {CookieLawModule} from './shared/reusablecomponents/cookie-law/cookie-law.module';
|
import { CookieLawModule } from './shared/reusablecomponents/cookie-law/cookie-law.module';
|
||||||
import {AppRoutingModule} from './app-routing.module';
|
import { AppRoutingModule } from './app-routing.module';
|
||||||
import {AuthenticationInterceptor} from './services/authentication-interceptor';
|
import { AuthenticationInterceptor } from './services/authentication-interceptor';
|
||||||
import {BrokerService} from './services/broker.service';
|
import { BrokerService } from './services/broker.service';
|
||||||
import {MonitorService} from './services/monitor.service';
|
import { MonitorService } from './services/monitor.service';
|
||||||
import {PiwikService} from './services/piwik.service';
|
import { PiwikService } from './services/piwik.service';
|
||||||
import {RepositoryService} from './services/repository.service';
|
import { RepositoryService } from './services/repository.service';
|
||||||
import {ValidatorService} from './services/validator.service';
|
import { ValidatorService } from './services/validator.service';
|
||||||
import {UsagestatsService} from './services/usagestats.service';
|
import { UsagestatsService } from './services/usagestats.service';
|
||||||
import {StatisticsService} from './services/statistics.service';
|
import { StatisticsService } from './services/statistics.service';
|
||||||
import {AuthGuardService} from './services/auth-guard.service';
|
import { AuthGuardService } from './services/auth-guard.service';
|
||||||
import {AuthenticationService} from './services/authentication.service';
|
import { AuthenticationService } from './services/authentication.service';
|
||||||
import {HomeComponent} from './pages/landing/home/home.component';
|
import { HomeComponent } from './pages/landing/home/home.component';
|
||||||
import {MatomoModule} from 'ngx-matomo';
|
import { MatomoModule } from 'ngx-matomo';
|
||||||
import {DashboardService} from './services/dashboard.service';
|
import { DashboardService } from "./services/dashboard.service";
|
||||||
import {EmptyPageComponent} from './pages/emptypage/empty-page.component';
|
import { EmptyPageComponent } from "./pages/emptypage/empty-page.component";
|
||||||
import {SharedService} from './services/shared.service';
|
import { SharedService } from "./services/shared.service";
|
||||||
import {JoinComponent} from './pages/join/join.component';
|
import { JoinComponent } from "./pages/join/join.component";
|
||||||
import {AboutComponent} from './pages/landing/about/about.component';
|
import { AboutComponent } from "./pages/landing/about/about.component";
|
||||||
import {environment} from '../environments/environment';
|
|
||||||
|
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
|
@ -43,18 +42,7 @@ import {environment} from '../environments/environment';
|
||||||
HttpClientModule,
|
HttpClientModule,
|
||||||
ReusableComponentsModule,
|
ReusableComponentsModule,
|
||||||
CookieLawModule,
|
CookieLawModule,
|
||||||
MatomoModule.forRoot({
|
MatomoModule,
|
||||||
scriptUrl: environment.MATOMO_URL + 'matomo.js',
|
|
||||||
trackers: [
|
|
||||||
{
|
|
||||||
trackerUrl: environment.MATOMO_URL + 'matomo.php',
|
|
||||||
siteId: environment.MATOMO_SITE
|
|
||||||
}
|
|
||||||
],
|
|
||||||
routeTracking: {
|
|
||||||
enable: true
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
AppRoutingModule
|
AppRoutingModule
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
|
@ -77,5 +65,4 @@ import {environment} from '../environments/environment';
|
||||||
],
|
],
|
||||||
bootstrap: [AppComponent]
|
bootstrap: [AppComponent]
|
||||||
})
|
})
|
||||||
export class AppModule {
|
export class AppModule { }
|
||||||
}
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ export const interfaceFormDesc = {
|
||||||
/* Desription of the Datasource Info Forms Fields */
|
/* Desription of the Datasource Info Forms Fields */
|
||||||
export const softwarePlatformDesc = {
|
export const softwarePlatformDesc = {
|
||||||
desc: 'The typology used by your repository/journal.\nIf you use a typology not found in the drop-down list,\nyou can enter a custom name in the field below.',
|
desc: 'The typology used by your repository/journal.\nIf you use a typology not found in the drop-down list,\nyou can enter a custom name in the field below.',
|
||||||
label: 'Software Platform',
|
label: 'Software Platform (*)',
|
||||||
mandatory: true,
|
mandatory: true,
|
||||||
recommended: false
|
recommended: false
|
||||||
};
|
};
|
||||||
|
@ -40,14 +40,14 @@ export const platformNameDesc = {
|
||||||
|
|
||||||
export const officialNameDesc = {
|
export const officialNameDesc = {
|
||||||
desc: 'Your repository\'s/journal\'s official name.',
|
desc: 'Your repository\'s/journal\'s official name.',
|
||||||
label: 'Official Name',
|
label: 'Official Name (*)',
|
||||||
mandatory: true,
|
mandatory: true,
|
||||||
recommended: false
|
recommended: false
|
||||||
};
|
};
|
||||||
|
|
||||||
export const issnDesc = {
|
export const issnDesc = {
|
||||||
desc: 'Input your journal\'s issn (www.issn.org)',
|
desc: 'Input your journal\'s issn (www.issn.org)',
|
||||||
label: 'ISSN',
|
label: 'ISSN (*)',
|
||||||
mandatory: true,
|
mandatory: true,
|
||||||
recommended: false
|
recommended: false
|
||||||
};
|
};
|
||||||
|
@ -68,49 +68,49 @@ export const lissnDesc = {
|
||||||
|
|
||||||
export const repoDescriptionDesc = {
|
export const repoDescriptionDesc = {
|
||||||
desc: 'A description of your repository/journal',
|
desc: 'A description of your repository/journal',
|
||||||
label: 'Description',
|
label: 'Description (*)',
|
||||||
mandatory: true,
|
mandatory: true,
|
||||||
recommended: false
|
recommended: false
|
||||||
};
|
};
|
||||||
|
|
||||||
export const countryDesc = {
|
export const countryDesc = {
|
||||||
desc: 'The country where your repository/journal is located',
|
desc: 'The country where your repository/journal is located',
|
||||||
label: 'Country',
|
label: 'Country (*)',
|
||||||
mandatory: true,
|
mandatory: true,
|
||||||
recommended: false
|
recommended: false
|
||||||
};
|
};
|
||||||
|
|
||||||
export const longtitudeDesc = {
|
export const longtitudeDesc = {
|
||||||
desc: 'The (approximate) longtitude of your repository/journal\'s location',
|
desc: 'The (approximate) longtitude of your repository/journal\'s location',
|
||||||
label: 'Longtitude',
|
label: 'Longtitude (*)',
|
||||||
mandatory: false,
|
mandatory: true,
|
||||||
recommended: false
|
recommended: false
|
||||||
};
|
};
|
||||||
|
|
||||||
export const latitudeDesc = {
|
export const latitudeDesc = {
|
||||||
desc: 'The (approximate) latitude of your repository/journal\'s location',
|
desc: 'The (approximate) latitude of your repository/journal\'s location',
|
||||||
label: 'Latitude',
|
label: 'Latitude (*)',
|
||||||
mandatory: false,
|
mandatory: true,
|
||||||
recommended: false
|
recommended: false
|
||||||
};
|
};
|
||||||
|
|
||||||
export const websiteUrlDesc = {
|
export const websiteUrlDesc = {
|
||||||
desc: 'The main page of your repository/journal\'s website',
|
desc: 'The main page of your repository/journal\'s website',
|
||||||
label: 'Entry URL',
|
label: 'Entry URL (*)',
|
||||||
mandatory: true,
|
mandatory: true,
|
||||||
recommended: false
|
recommended: false
|
||||||
};
|
};
|
||||||
|
|
||||||
export const institutionNameDesc = {
|
export const institutionNameDesc = {
|
||||||
desc: 'The institution that your repository belongs to',
|
desc: 'The institution that your repository belongs to',
|
||||||
label: 'Institution',
|
label: 'Institution (*)',
|
||||||
mandatory: true,
|
mandatory: true,
|
||||||
recommended: false
|
recommended: false
|
||||||
};
|
};
|
||||||
|
|
||||||
export const englishNameDesc = {
|
export const englishNameDesc = {
|
||||||
desc: 'Your repository/journal\'s name in english',
|
desc: 'Your repository/journal\'s name in english',
|
||||||
label: 'English Name',
|
label: 'English Name (*)',
|
||||||
mandatory: true,
|
mandatory: true,
|
||||||
recommended: false
|
recommended: false
|
||||||
};
|
};
|
||||||
|
@ -124,35 +124,35 @@ export const logoUrlDesc = {
|
||||||
|
|
||||||
export const timezoneDesc = {
|
export const timezoneDesc = {
|
||||||
desc: 'The timezone of the area where your repository/ journal is located',
|
desc: 'The timezone of the area where your repository/ journal is located',
|
||||||
label: 'Timezone',
|
label: 'Timezone (*)',
|
||||||
mandatory: true,
|
mandatory: true,
|
||||||
recommended: false
|
recommended: false
|
||||||
};
|
};
|
||||||
|
|
||||||
export const datasourceTypeDesc = {
|
export const datasourceTypeDesc = {
|
||||||
desc: 'The type of your repository',
|
desc: 'The type of your repository',
|
||||||
label: 'Data source type',
|
label: 'Repository Type (*)',
|
||||||
mandatory: true,
|
mandatory: true,
|
||||||
recommended: false
|
recommended: false
|
||||||
};
|
};
|
||||||
|
|
||||||
export const journalTypeDesc = {
|
export const journalTypeDesc = {
|
||||||
desc: 'The type of your journal',
|
desc: 'The type of your journal',
|
||||||
label: 'Journal Type',
|
label: 'Journal Type (*)',
|
||||||
mandatory: true,
|
mandatory: true,
|
||||||
recommended: false
|
recommended: false
|
||||||
};
|
};
|
||||||
|
|
||||||
export const aggregatorTypeDesc = {
|
export const aggregatorTypeDesc = {
|
||||||
desc: 'The type of your aggregator',
|
desc: 'The type of your aggregator',
|
||||||
label: 'Aggregator Type',
|
label: 'Aggregator Type (*)',
|
||||||
mandatory: true,
|
mandatory: true,
|
||||||
recommended: false
|
recommended: false
|
||||||
};
|
};
|
||||||
|
|
||||||
export const adminEmailDesc = {
|
export const adminEmailDesc = {
|
||||||
desc: 'The email address of the repository/journal\'s administrator',
|
desc: 'The email address of the repository/journal\'s administrator',
|
||||||
label: 'Admin Email',
|
label: 'Admin Email (*)',
|
||||||
mandatory: true,
|
mandatory: true,
|
||||||
recommended: false
|
recommended: false
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,257 +0,0 @@
|
||||||
/* tslint:disable */
|
|
||||||
/* eslint-disable */
|
|
||||||
// Generated using typescript-generator version 2.16.538 on 2023-03-29 16:52:47.
|
|
||||||
|
|
||||||
export class Alert {
|
|
||||||
Date_Time: string;
|
|
||||||
Alert: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class COUNTER_Dataset_Attributes {
|
|
||||||
Type: string;
|
|
||||||
Value: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class COUNTER_Dataset_Contributors {
|
|
||||||
Type: string;
|
|
||||||
Name: string;
|
|
||||||
Identifier: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class COUNTER_Dataset_Dates {
|
|
||||||
Type: string;
|
|
||||||
Value: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class COUNTER_Dataset_Identifiers {
|
|
||||||
Type: string;
|
|
||||||
Value: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class COUNTER_Dataset_Performance {
|
|
||||||
Period: Period;
|
|
||||||
Instance: Instance[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export class COUNTER_Dataset_Report {
|
|
||||||
Report_Header: SUSHI_Report_Header_DSR;
|
|
||||||
Report_Datasets: COUNTER_Dataset_Usage[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export class COUNTER_Dataset_Usage {
|
|
||||||
Dataset_Title: string;
|
|
||||||
Publisher: string;
|
|
||||||
YOP: string;
|
|
||||||
Access_Method: string;
|
|
||||||
Performance: COUNTER_Dataset_Performance[];
|
|
||||||
Dataset_ID: COUNTER_Dataset_Identifiers[];
|
|
||||||
Dataset_Contributors: COUNTER_Dataset_Contributors[];
|
|
||||||
Dataset_Dates: COUNTER_Dataset_Dates[];
|
|
||||||
Dataset_Attributes: COUNTER_Dataset_Attributes[];
|
|
||||||
Publisher_ID: COUNTER_Publisher_Identifiers[];
|
|
||||||
Item_Parent: COUNTER_Item_Parent;
|
|
||||||
Item_Component: COUNTER_Item_Component[];
|
|
||||||
Data_Type: string;
|
|
||||||
Platform: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class COUNTER_Item_Attributes {
|
|
||||||
Type: string;
|
|
||||||
Value: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class COUNTER_Item_Component {
|
|
||||||
Data_Type: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class COUNTER_Item_Contributors {
|
|
||||||
Type: string;
|
|
||||||
Name: string;
|
|
||||||
Identifier: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class COUNTER_Item_Dates {
|
|
||||||
Type: string;
|
|
||||||
Value: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class COUNTER_Item_Identifiers {
|
|
||||||
Type: string;
|
|
||||||
Value: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class COUNTER_Item_Parent {
|
|
||||||
Data_Type: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class COUNTER_Item_Performance {
|
|
||||||
Period: Period;
|
|
||||||
Instance: Instance[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export class COUNTER_Item_Report {
|
|
||||||
Report_Header: SUSHI_Report_Header;
|
|
||||||
Report_Items: COUNTER_Item_Usage[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export class COUNTER_Item_Usage {
|
|
||||||
Platform: string;
|
|
||||||
Data_Type: string;
|
|
||||||
Access_Method: string;
|
|
||||||
Performance: COUNTER_Item_Performance[];
|
|
||||||
Item: string;
|
|
||||||
Item_ID: COUNTER_Item_Identifiers[];
|
|
||||||
Item_Contributors: COUNTER_Item_Contributors[];
|
|
||||||
Item_Dates: COUNTER_Item_Dates[];
|
|
||||||
Item_Attributes: COUNTER_Item_Attributes[];
|
|
||||||
Publisher_ID: COUNTER_Publisher_Identifiers[];
|
|
||||||
Item_Parent: COUNTER_Item_Parent;
|
|
||||||
Item_Component: COUNTER_Item_Component[];
|
|
||||||
YOP: string;
|
|
||||||
Access_Type: string;
|
|
||||||
Publisher: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class COUNTER_Platform_Report {
|
|
||||||
Report_Header: SUSHI_Report_Header;
|
|
||||||
Report_Items: COUNTER_Platform_Usage[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export class COUNTER_Platform_Usage {
|
|
||||||
Platform: string;
|
|
||||||
Data_Type: string;
|
|
||||||
Access_Method: string;
|
|
||||||
Performance: COUNTER_Item_Performance[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export class COUNTER_Publisher_Identifiers {
|
|
||||||
Type: string;
|
|
||||||
Value: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class COUNTER_Title_Report {
|
|
||||||
Report_Header: SUSHI_Report_Header;
|
|
||||||
Report_Items: COUNTER_Platform_Usage[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export class COUNTER_Title_Usage {
|
|
||||||
Title: string;
|
|
||||||
Item_ID: COUNTER_Item_Identifiers[];
|
|
||||||
Platform: string;
|
|
||||||
Publisher: string;
|
|
||||||
Data_Type: string;
|
|
||||||
Section_Type: string;
|
|
||||||
YOP: string;
|
|
||||||
Access_Type: string;
|
|
||||||
Access_Method: string;
|
|
||||||
Performance: COUNTER_Item_Performance[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export class Filter {
|
|
||||||
Name: string;
|
|
||||||
Value: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class Filters {
|
|
||||||
UsageDateRange: UsageDateRange;
|
|
||||||
Filter: Filter[];
|
|
||||||
ReportAttribute: Filter[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export class Instance {
|
|
||||||
MetricType: string;
|
|
||||||
Count: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class Period {
|
|
||||||
Begin_Date: string;
|
|
||||||
End_Date: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class ReportAttribute {
|
|
||||||
Name: string;
|
|
||||||
Value: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class ReportDefinition {
|
|
||||||
"@Name": string;
|
|
||||||
"@Release": string;
|
|
||||||
Filters: Filters;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class ReportSupported {
|
|
||||||
Report_Name: string;
|
|
||||||
Report_ID: string;
|
|
||||||
Release: string;
|
|
||||||
Report_Description: string;
|
|
||||||
Path: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class Requestor {
|
|
||||||
ID: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class SUSHI_Consortium_Member_List {
|
|
||||||
Customer_ID: string;
|
|
||||||
Requestor_ID: string;
|
|
||||||
Name: string;
|
|
||||||
Notes: string;
|
|
||||||
Institution_ID: SUSHI_Org_Identifiers[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export class SUSHI_Error_Model {
|
|
||||||
Code: string;
|
|
||||||
Severity: string;
|
|
||||||
Message: string;
|
|
||||||
Help_URL: string;
|
|
||||||
Data: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class SUSHI_Org_Identifiers {
|
|
||||||
Type: string;
|
|
||||||
Value: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class SUSHI_Report_Header {
|
|
||||||
Created: string;
|
|
||||||
Created_By: string;
|
|
||||||
Customer_ID: string;
|
|
||||||
Report_ID: string;
|
|
||||||
Report_Name: string;
|
|
||||||
Institution_Name: string;
|
|
||||||
Institution_ID: SUSHI_Org_Identifiers[];
|
|
||||||
Report_Filters: Filter[];
|
|
||||||
Report_Attributes: ReportAttribute[];
|
|
||||||
Exceptions: SUSHI_Error_Model[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export class SUSHI_Report_Header_DSR {
|
|
||||||
Report_Name: string;
|
|
||||||
Report_ID: string;
|
|
||||||
Created: string;
|
|
||||||
Created_By: string;
|
|
||||||
Customer_ID: string;
|
|
||||||
Report_Filters: Filter[];
|
|
||||||
Report_Attributes: ReportAttribute[];
|
|
||||||
Exceptions: SUSHI_Error_Model[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export class SUSHI_Report_List {
|
|
||||||
Report_Name: string;
|
|
||||||
Report_ID: string;
|
|
||||||
Report_Description: string;
|
|
||||||
Path: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class SUSHI_Service_Status {
|
|
||||||
Description: string;
|
|
||||||
Service_Active: boolean;
|
|
||||||
Registry_URL: string;
|
|
||||||
Note: string;
|
|
||||||
Alerts: Alert[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export class UsageDateRange {
|
|
||||||
Begin: string;
|
|
||||||
End: string;
|
|
||||||
}
|
|
|
@ -1,234 +1,41 @@
|
||||||
export const typologies = [
|
export const typologies = [
|
||||||
{
|
{ value: '', name: '[Other] (enter name below)' },
|
||||||
value: '',
|
{ value: 'CONTENTdm', name: 'CONTENTdm' },
|
||||||
name: '[Other] (enter name below)'
|
{ value: 'Digibib', name: 'Digibib' },
|
||||||
},
|
{ value: 'Digital Commons', name: 'Digital Commons' },
|
||||||
{
|
{ value: 'DigiTool', name: 'DigiTool' },
|
||||||
value: 'Avesis',
|
{ value: 'DIVA', name: 'DIVA' },
|
||||||
name: 'Avesis'
|
{ value: 'Diva-Portal', name: 'Diva-Portal' },
|
||||||
},
|
{ value: 'dLibra', name: 'dLibra' },
|
||||||
{
|
{ value: 'Doks', name: 'Doks' },
|
||||||
value: 'CKAN',
|
{ value: 'Drupal', name: 'Drupal' },
|
||||||
name: 'CKAN'
|
{ value: 'DSpace', name: 'DSpace' },
|
||||||
},
|
{ value: 'Earmas', name: 'Earmas' },
|
||||||
{
|
{ value: 'EPrints', name: 'EPrints' },
|
||||||
value: 'CONTENTdm',
|
{ value: 'ETD', name: 'ETD' },
|
||||||
name: 'CONTENTdm'
|
{ value: 'ETD - db', name: 'ETD - db' },
|
||||||
},
|
{ value: 'Fedora', name: 'Fedora' },
|
||||||
{
|
{ value: 'Fez', name: 'Fez' },
|
||||||
value: 'Converis',
|
{ value: 'Greenstone', name: 'Greenstone' },
|
||||||
name: 'Converis'
|
{ value: 'HAL', name: 'HAL' },
|
||||||
},
|
{ value: 'invenio', name: 'invenio' },
|
||||||
{
|
{ value: 'MyCoRe', name: 'MyCoRe' },
|
||||||
value: 'CRIStin',
|
{ value: 'Open Repository', name: 'Open Repository' },
|
||||||
name: 'CRIStin'
|
{ value: 'OPUS', name: 'OPUS' },
|
||||||
},
|
{ value: 'Pica - Verbundkatalog', name: 'Pica - Verbundkatalog' },
|
||||||
{
|
{ value: 'Proprietary Software', name: 'Proprietary Software' },
|
||||||
value: 'DataVerse',
|
{ value: 'PUMA', name: 'PUMA' },
|
||||||
name: 'DataVerse'
|
{ value: 'PURE', name: 'PURE' },
|
||||||
},
|
{ value: 'SciELO', name: 'SciELO' },
|
||||||
{
|
{ value: 'SFIX', name: 'SFIX' },
|
||||||
value: 'Dialnet',
|
{ value: 'VITAL', name: 'VITAL' },
|
||||||
name: 'Dialnet CRIS'
|
{ value: 'VTOAI', name: 'VTOAI' },
|
||||||
},
|
{ value: 'WEKO', name: 'WEKO' },
|
||||||
{
|
{ value: 'XooNIps', name: 'XooNIps' },
|
||||||
value: 'Digibib',
|
{ value: 'OJS', name: 'OJS' },
|
||||||
name: 'Digibib'
|
{ value: 'HyperJournal', name: 'HyperJournal' },
|
||||||
},
|
{ value: 'ePubTk', name: 'ePubTk' },
|
||||||
{
|
{ value: 'GAPworks', name: 'GAPworks' },
|
||||||
value: 'Digital Commons',
|
{ value: 'DPubS', name: 'DPubS' },
|
||||||
name: 'Digital Commons'
|
{ value: 'E - Journal', name: 'E - Journal' },
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'DigiTool',
|
|
||||||
name: 'DigiTool'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'DIVA',
|
|
||||||
name: 'DIVA'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'Diva-Portal',
|
|
||||||
name: 'Diva-Portal'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'dLibra',
|
|
||||||
name: 'dLibra'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'Doks',
|
|
||||||
name: 'Doks'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'DPubS',
|
|
||||||
name: 'DPubS'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'Drupal',
|
|
||||||
name: 'Drupal'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'DSpace',
|
|
||||||
name: 'DSpace'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'DSpace-CRIS',
|
|
||||||
name: 'DSpace-CRIS'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'E - Journal',
|
|
||||||
name: 'E - Journal'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'Earmas',
|
|
||||||
name: 'Earmas'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'EPrints',
|
|
||||||
name: 'EPrints'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'ePubTk',
|
|
||||||
name: 'ePubTk'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'eSciDoc',
|
|
||||||
name: 'eSciDoc'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'ETD',
|
|
||||||
name: 'ETD'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'ETD - db',
|
|
||||||
name: 'ETD - db'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'Fedora',
|
|
||||||
name: 'Fedora'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'Fez',
|
|
||||||
name: 'Fez'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'GAPworks',
|
|
||||||
name: 'GAPworks'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'Greenstone',
|
|
||||||
name: 'Greenstone'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'HAL',
|
|
||||||
name: 'HAL'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'Haplo',
|
|
||||||
name: 'Haplo'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'HyperJournal',
|
|
||||||
name: 'HyperJournal'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'invenio',
|
|
||||||
name: 'invenio'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'IRIS',
|
|
||||||
name: 'IRIS'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'Metis',
|
|
||||||
name: 'Metis'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'MyCoRe',
|
|
||||||
name: 'MyCoRe'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'MySQL',
|
|
||||||
name: 'MySQL'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'Nesstar',
|
|
||||||
name: 'Nesstar'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'OJS',
|
|
||||||
name: 'OJS'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'Omega',
|
|
||||||
name: 'Omega-PSIR'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'Open Repository',
|
|
||||||
name: 'Open Repository'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'OPUS',
|
|
||||||
name: 'OPUS'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'Pica - Verbundkatalog',
|
|
||||||
name: 'Pica - Verbundkatalog'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'Proprietary Software',
|
|
||||||
name: 'Proprietary Software'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'PUMA',
|
|
||||||
name: 'PUMA'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'PURE',
|
|
||||||
name: 'PURE'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'SciELO',
|
|
||||||
name: 'SciELO'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'SFIX',
|
|
||||||
name: 'SFIX'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'SIGMA',
|
|
||||||
name: 'SIGMA Research'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'SoleCRIS',
|
|
||||||
name: 'SoleCRIS'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'Symplectic',
|
|
||||||
name: 'Symplectic Elements'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'VITAL',
|
|
||||||
name: 'VITAL'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'VIVO',
|
|
||||||
name: 'VIVO'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'VTOAI',
|
|
||||||
name: 'VTOAI'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'WEKO',
|
|
||||||
name: 'WEKO'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'Worktribe',
|
|
||||||
name: 'Worktribe'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'XooNIps',
|
|
||||||
name: 'XooNIps'
|
|
||||||
},
|
|
||||||
];
|
];
|
||||||
|
|
|
@ -74,7 +74,7 @@ export class ReportItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
export class ReportResponse {
|
export class ReportResponse {
|
||||||
'@Created': string;
|
"@Created": string;
|
||||||
Exception: ReportException[];
|
Exception: ReportException[];
|
||||||
Requestor: Requestor;
|
Requestor: Requestor;
|
||||||
ReportDefinition: ReportDefinition;
|
ReportDefinition: ReportDefinition;
|
||||||
|
|
|
@ -15,6 +15,7 @@ import {RepositoryService} from '../../services/repository.service';
|
||||||
import {ActivatedRoute, Router} from '@angular/router';
|
import {ActivatedRoute, Router} from '@angular/router';
|
||||||
import {PiwikInfoPage} from '../../domain/page-content';
|
import {PiwikInfoPage} from '../../domain/page-content';
|
||||||
import {environment} from '../../../environments/environment';
|
import {environment} from '../../../environments/environment';
|
||||||
|
import {st} from '@angular/core/src/render3';
|
||||||
|
|
||||||
@Component ({
|
@Component ({
|
||||||
selector: 'app-admin-metrics',
|
selector: 'app-admin-metrics',
|
||||||
|
@ -43,7 +44,7 @@ export class AdminPgMetricsComponent implements OnInit {
|
||||||
|
|
||||||
dataForm: FormGroup;
|
dataForm: FormGroup;
|
||||||
|
|
||||||
@ViewChild('confirmApprovalModal', { static: true })
|
@ViewChild('confirmApprovalModal')
|
||||||
public confirmApprovalModal: ConfirmationDialogComponent;
|
public confirmApprovalModal: ConfirmationDialogComponent;
|
||||||
private pageTotal: number;
|
private pageTotal: number;
|
||||||
private piwiksTotal: number;
|
private piwiksTotal: number;
|
||||||
|
|
|
@ -121,7 +121,7 @@
|
||||||
<!-- REPOSITORY CARD -->
|
<!-- REPOSITORY CARD -->
|
||||||
<div *ngFor="let res of repositorySnippet" class="md-card repositoryCard">
|
<div *ngFor="let res of repositorySnippet" class="md-card repositoryCard">
|
||||||
<div class="md-card-content large-padding">
|
<div class="md-card-content large-padding">
|
||||||
<div class="uk-text-meta">{{res.eoscDatasourceType.split('::')[0]}} {{res.eoscDatasourceType.split('::')[1]}} {{res.eoscDatasourceType.split('::')[2]}}</div>
|
<div class="uk-text-meta">{{res.typology.split('::')[0]}} {{res.typology.split('::')[1]}} {{res.typology.split('::')[2]}}</div>
|
||||||
<div class="repositoryCardHeader uk-margin-bottom uk-margin-small-top"><a [routerLink]="['/repositoryAdmin/' + res.id]">{{res.officialname}}</a></div>
|
<div class="repositoryCardHeader uk-margin-bottom uk-margin-small-top"><a [routerLink]="['/repositoryAdmin/' + res.id]">{{res.officialname}}</a></div>
|
||||||
<div class="uk-margin-small-bottom"><span class="uk-badge uk-badge-primary uk-badge-notification uk-margin-small-right">ID</span>{{res.id}}</div>
|
<div class="uk-margin-small-bottom"><span class="uk-badge uk-badge-primary uk-badge-notification uk-margin-small-right">ID</span>{{res.id}}</div>
|
||||||
<div class="uk-margin-small-bottom"><span class="uk-badge uk-badge-primary uk-badge-notification uk-margin-small-right">RM</span>{{res.registeredby}}</div>
|
<div class="uk-margin-small-bottom"><span class="uk-badge uk-badge-primary uk-badge-notification uk-margin-small-right">RM</span>{{res.registeredby}}</div>
|
||||||
|
|
|
@ -25,26 +25,26 @@
|
||||||
<div class="steps clearfix">
|
<div class="steps clearfix">
|
||||||
<ul role="tablist">
|
<ul role="tablist">
|
||||||
<li role="tab" class="first {{ (currentStep == 0) ? 'current' : '' }}" aria-disabled="false" aria-selected="true">
|
<li role="tab" class="first {{ (currentStep == 0) ? 'current' : '' }}" aria-disabled="false" aria-selected="true">
|
||||||
<a id="wizard_advanced-t-0" aria-controls="wizard_advanced-p-0" style="cursor: default">
|
<a id="wizard_advanced-t-0" href="#wizard_advanced-h-0" aria-controls="wizard_advanced-p-0">
|
||||||
<!--<span class="current-info audible">current step: </span>-->
|
<!--<span class="current-info audible">current step: </span>-->
|
||||||
<span class="number">1</span>
|
<span class="number">1</span>
|
||||||
<span class="title">Select datasource</span>
|
<span class="title">Select datasource</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li role="tab" class="{{ (currentStep < 1) ? 'disabled' : '' }} {{ (currentStep == 1) ? 'current' : '' }}" aria-disabled="true">
|
<li role="tab" class="{{ (currentStep < 1) ? 'disabled' : '' }} {{ (currentStep == 1) ? 'current' : '' }}" aria-disabled="true">
|
||||||
<a id="wizard_advanced-t-1" aria-controls="wizard_advanced-p-1" style="cursor: default">
|
<a id="wizard_advanced-t-1" href="#wizard_advanced-h-1" aria-controls="wizard_advanced-p-1">
|
||||||
<span class="number">2</span>
|
<span class="number">2</span>
|
||||||
<span class="title">{{ (type === 'cris') ? 'Finish' : 'Select guidelines' }}</span>
|
<span class="title">{{ (type === 'cris') ? 'Finish' : 'Select guidelines' }}</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li *ngIf="(type !== 'cris')" role="tab" class=" {{ (currentStep < 2) ? 'disabled' : '' }} {{ (currentStep == 2) ? 'current' : '' }}" aria-disabled="true">
|
<li *ngIf="(type !== 'cris')" role="tab" class=" {{ (currentStep < 2) ? 'disabled' : '' }} {{ (currentStep == 2) ? 'current' : '' }}" aria-disabled="true">
|
||||||
<a id="wizard_advanced-t-2" aria-controls="wizard_advanced-p-2" style="cursor: default">
|
<a id="wizard_advanced-t-2" href="#wizard_advanced-h-2" aria-controls="wizard_advanced-p-2">
|
||||||
<span class="number">3</span>
|
<span class="number">3</span>
|
||||||
<span class="title">Select parameters</span>
|
<span class="title">Select parameters</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li *ngIf="(type !== 'cris')" role="tab" class="last {{ (currentStep < 3) ? 'disabled' : '' }} {{ (currentStep == 3) ? 'current' : '' }}" aria-disabled="true">
|
<li *ngIf="(type !== 'cris')" role="tab" class="last {{ (currentStep < 3) ? 'disabled' : '' }} {{ (currentStep == 3) ? 'current' : '' }}" aria-disabled="true">
|
||||||
<a id="wizard_advanced-t-3" aria-controls="wizard_advanced-p-3" style="cursor: default">
|
<a id="wizard_advanced-t-3" href="#wizard_advanced-h-3" aria-controls="wizard_advanced-p-3">
|
||||||
<span class="number">4</span>
|
<span class="number">4</span>
|
||||||
<span class="title">Finish</span>
|
<span class="title">Finish</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -27,13 +27,13 @@ export class CompatibilityValidateTypeComponent implements OnInit {
|
||||||
* the param that is used is 'step' and the values are: 'baseUrl','guidelines','crisEntities'/'parameters','finish'
|
* the param that is used is 'step' and the values are: 'baseUrl','guidelines','crisEntities'/'parameters','finish'
|
||||||
*/
|
*/
|
||||||
currentStep: number;
|
currentStep: number;
|
||||||
@ViewChild('topHelperContent', { static: true })
|
@ViewChild('topHelperContent')
|
||||||
public topHelperContent: HelpContentComponent;
|
public topHelperContent: HelpContentComponent;
|
||||||
@ViewChild('leftHelperContent', { static: true })
|
@ViewChild('leftHelperContent')
|
||||||
public leftHelperContent: AsideHelpContentComponent;
|
public leftHelperContent: AsideHelpContentComponent;
|
||||||
@ViewChild('rightHelperContent', { static: true })
|
@ViewChild('rightHelperContent')
|
||||||
public rightHelperContent: AsideHelpContentComponent;
|
public rightHelperContent: AsideHelpContentComponent;
|
||||||
@ViewChild('bottomHelperContent', { static: true })
|
@ViewChild('bottomHelperContent')
|
||||||
public bottomHelperContent: HelpContentComponent;
|
public bottomHelperContent: HelpContentComponent;
|
||||||
|
|
||||||
baseUrlList: string[] = [];
|
baseUrlList: string[] = [];
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
<a [routerLink]="['literature']" [queryParams]="{ step: 'baseUrl' }" class="el-link uk-position-cover uk-margin-remove-adjacent"></a>
|
<a [routerLink]="['literature']" [queryParams]="{ step: 'baseUrl' }" class="el-link uk-position-cover uk-margin-remove-adjacent"></a>
|
||||||
<div class="md-card-content large-padding uk-margin-medium-top uk-margin-bottom">
|
<div class="md-card-content large-padding uk-margin-medium-top uk-margin-bottom">
|
||||||
<div class="">
|
<div class="">
|
||||||
<img class="el-image" src="../../../assets/imgs/datasourcetypes/Literature%20repository.svg" alt="" width="50">
|
<img class="el-image" src="../../../assets/imgs/datasourcetypes/Asset%203.svg" alt="" width="50">
|
||||||
</div>
|
</div>
|
||||||
<h3>Literature repository</h3>
|
<h3>Literature repository</h3>
|
||||||
<div class="uk-transition-slide-bottom uk-position-bottom uk-overlay uk-overlay-primary">
|
<div class="uk-transition-slide-bottom uk-position-bottom uk-overlay uk-overlay-primary">
|
||||||
|
@ -41,7 +41,7 @@
|
||||||
<a [routerLink]="['data']" [queryParams]="{ step: 'baseUrl' }" class="el-link uk-position-cover uk-margin-remove-adjacent"></a>
|
<a [routerLink]="['data']" [queryParams]="{ step: 'baseUrl' }" class="el-link uk-position-cover uk-margin-remove-adjacent"></a>
|
||||||
<div class="md-card-content large-padding uk-margin-medium-top uk-margin-bottom">
|
<div class="md-card-content large-padding uk-margin-medium-top uk-margin-bottom">
|
||||||
<div class="">
|
<div class="">
|
||||||
<img class="el-image" src="../../../assets/imgs/datasourcetypes/Data%20repository.svg" alt="" width="50">
|
<img class="el-image" src="../../../assets/imgs/datasourcetypes/Asset%202.svg" alt="" width="50">
|
||||||
</div>
|
</div>
|
||||||
<h3>Data repository</h3>
|
<h3>Data repository</h3>
|
||||||
<div class="uk-transition-slide-bottom uk-position-bottom uk-overlay uk-overlay-primary">
|
<div class="uk-transition-slide-bottom uk-position-bottom uk-overlay uk-overlay-primary">
|
||||||
|
@ -57,7 +57,7 @@
|
||||||
<a [routerLink]="['cris']" [queryParams]="{ step: 'baseUrl' }" class="el-link uk-position-cover uk-margin-remove-adjacent"></a>
|
<a [routerLink]="['cris']" [queryParams]="{ step: 'baseUrl' }" class="el-link uk-position-cover uk-margin-remove-adjacent"></a>
|
||||||
<div class="md-card-content large-padding uk-margin-medium-top uk-margin-bottom">
|
<div class="md-card-content large-padding uk-margin-medium-top uk-margin-bottom">
|
||||||
<div class="">
|
<div class="">
|
||||||
<img class="el-image" src="../../../assets/imgs/datasourcetypes/Cris.svg" alt="" width="50">
|
<img class="el-image" src="../../../assets/imgs/datasourcetypes/Asset%201.svg" alt="" width="50">
|
||||||
</div>
|
</div>
|
||||||
<h3>CRIS systems</h3>
|
<h3>CRIS systems</h3>
|
||||||
<div class="uk-transition-slide-bottom uk-position-bottom uk-overlay uk-overlay-primary">
|
<div class="uk-transition-slide-bottom uk-position-bottom uk-overlay uk-overlay-primary">
|
||||||
|
@ -69,29 +69,6 @@
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="uk-grid uk-grid-match uk-grid-medium repositoryTypeSelection uk-child-width-1-3@l uk-child-widht-1-3@m" data-uk-grid-margin="">
|
|
||||||
|
|
||||||
<div class="uk-row-first">
|
|
||||||
<div class="uk-text-center md-card md-card-default md-card-hover uk-scrollspy-inview uk-animation-slide-top-medium
|
|
||||||
datasourceTypeCard uk-inline-clip uk-transition-toggle" uk-scrollspy-class="" tabindex="0">
|
|
||||||
<img alt="BETA" class="large-beta-indication" src="../../../assets/imgs/beta_flag.svg" width="100" style="position:absolute; left: 0;">
|
|
||||||
<a [routerLink]="['fair']" [queryParams]="{ step: 'baseUrl' }" class="el-link uk-position-cover uk-margin-remove-adjacent"></a>
|
|
||||||
<div class="md-card-content large-padding uk-margin-medium-top uk-margin-bottom">
|
|
||||||
<div class="">
|
|
||||||
<img class="el-image" src="../../../assets/imgs/datasourcetypes/Fair.svg" alt="" width="50">
|
|
||||||
</div>
|
|
||||||
<h3>FAIR assessment</h3>
|
|
||||||
<div class="uk-transition-slide-bottom uk-position-bottom uk-overlay uk-overlay-primary">
|
|
||||||
<p class="uk-margin-remove">Perform a fair assessment on your metadata.</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- RIGHT HELP CONTENT -->
|
<!-- RIGHT HELP CONTENT -->
|
||||||
|
|
|
@ -7,6 +7,7 @@ import { loadingJobSummary, loadingJobSummaryError, noContentRulesResults,
|
||||||
import { ConfirmationDialogComponent } from '../../shared/reusablecomponents/confirmation-dialog.component';
|
import { ConfirmationDialogComponent } from '../../shared/reusablecomponents/confirmation-dialog.component';
|
||||||
import { AuthenticationService } from '../../services/authentication.service';
|
import { AuthenticationService } from '../../services/authentication.service';
|
||||||
import * as Highcharts from 'highcharts';
|
import * as Highcharts from 'highcharts';
|
||||||
|
import {text} from '@angular/core/src/render3/instructions';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-compatibility-validation-results',
|
selector: 'app-compatibility-validation-results',
|
||||||
|
@ -40,7 +41,7 @@ export class CompatibilityValidationResultsComponent implements OnInit {
|
||||||
chartOptionsForContent: Highcharts.Options;
|
chartOptionsForContent: Highcharts.Options;
|
||||||
chartOptionsForUsage: Highcharts.Options;
|
chartOptionsForUsage: Highcharts.Options;
|
||||||
|
|
||||||
@ViewChild('checkErrors', { static: true })
|
@ViewChild('checkErrors')
|
||||||
public checkErrors: ConfirmationDialogComponent;
|
public checkErrors: ConfirmationDialogComponent;
|
||||||
|
|
||||||
constructor (private route: ActivatedRoute,
|
constructor (private route: ActivatedRoute,
|
||||||
|
@ -72,11 +73,11 @@ export class CompatibilityValidationResultsComponent implements OnInit {
|
||||||
if (this.jobSummary.resultEntries && this.jobSummary.resultEntries.length) {
|
if (this.jobSummary.resultEntries && this.jobSummary.resultEntries.length) {
|
||||||
this.jobSummary.resultEntries.forEach(
|
this.jobSummary.resultEntries.forEach(
|
||||||
entry => {
|
entry => {
|
||||||
if (entry.type.toLowerCase() === 'content') {
|
if (entry.type === 'content') {
|
||||||
this.contentResults.push(entry);
|
this.contentResults.push(entry);
|
||||||
this.ruleNameForContent.push(entry.name);
|
this.ruleNameForContent.push(entry.name);
|
||||||
this.unprocessedDataForContent.push(entry.successes.split('/')[0]);
|
this.unprocessedDataForContent.push(entry.successes.split('/')[0]);
|
||||||
} else if (entry.type.toLowerCase() === 'usage') {
|
} else if (entry.type === 'usage') {
|
||||||
this.usageResults.push(entry);
|
this.usageResults.push(entry);
|
||||||
this.ruleNameForUsage.push(entry.name);
|
this.ruleNameForUsage.push(entry.name);
|
||||||
this.unprocessedDataForUsage.push(entry.successes.split('/')[0]);
|
this.unprocessedDataForUsage.push(entry.successes.split('/')[0]);
|
||||||
|
@ -86,7 +87,7 @@ export class CompatibilityValidationResultsComponent implements OnInit {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error => {
|
error => {
|
||||||
console.error(error);
|
console.log(error);
|
||||||
this.errorMessage = loadingJobSummaryError;
|
this.errorMessage = loadingJobSummaryError;
|
||||||
this.loadingMessage = '';
|
this.loadingMessage = '';
|
||||||
},
|
},
|
||||||
|
|
|
@ -41,7 +41,7 @@ export class JoinComponent implements OnInit {
|
||||||
}
|
}
|
||||||
|
|
||||||
getReposOfUser(): void {
|
getReposOfUser(): void {
|
||||||
this.repositoryService.getRepositoriesSnippetsOfUser()
|
this.repositoryService.getRepositoriesOfUser()
|
||||||
.subscribe(
|
.subscribe(
|
||||||
repos => {
|
repos => {
|
||||||
this.repositoriesOfUser = repos;
|
this.repositoriesOfUser = repos;
|
||||||
|
|
|
@ -51,90 +51,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- campaing banner-->
|
|
||||||
<div class="uk-section-muted uk-section uk-section-large uk-section-overlap uk-position-relative">
|
|
||||||
|
|
||||||
<h2 class="uk-text-center">Update your repository with latest OpenAIRE Interoperability Guidelines</h2>
|
|
||||||
|
|
||||||
<div class="uk-margin-medium-left uk-margin-medium-right uk-text-center text-muted">Become compatible to get onboard the EOSC catalogue</div>
|
|
||||||
|
|
||||||
<div class="uk-container uk-container-large uk-margin-medium-top">
|
|
||||||
|
|
||||||
<div class="slider-mobile-card">
|
|
||||||
<div class="uk-slider" tabindex="-1" uk-slider="velocity: 0;autoplay: true;autoplay-interval: 5000;pause-on-hover: false;center: true">
|
|
||||||
<div class="uk-position-relative">
|
|
||||||
<div class="uk-slider-container">
|
|
||||||
<ul class="uk-slider-items uk-child-width-1-1" style="transform: translateX(-1300px);">
|
|
||||||
<li class="ng-star-inserted uk-active" tabindex="-1" style="order: 1;">
|
|
||||||
<div class="uk-flex uk-padding uk-child-width-1-2@m uk-child-width-1-1@s uk-grid" uk-grid="">
|
|
||||||
<div class="uk-first-column">
|
|
||||||
<img class="uk-box-shadow-large uk-border-rounded" src="../../../../assets/imgs/landing/campaign-banner/1.jpg">
|
|
||||||
</div>
|
|
||||||
<div class="uk-margin-top">
|
|
||||||
<div>
|
|
||||||
<div class="uk-text-bold uk-h4">OpenAIRE Guidelines</div>
|
|
||||||
<div class="uk-margin-medium">
|
|
||||||
by adopting the Guidelines you ensure that your research products are more interconnected and more interoperable?
|
|
||||||
</div>
|
|
||||||
<div class="uk-inline">
|
|
||||||
<a class="uk-button uk-button-primary uk-text-uppercase" href="https://www.openaire.eu/openaire-guidelines-for-literature-institutional-and-thematic-repositories" target="_blank">learn more</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li tabindex="-1" style="order: 1;">
|
|
||||||
<div class="uk-flex uk-padding uk-child-width-1-2@m uk-child-width-1-1@s uk-grid" uk-grid="">
|
|
||||||
<div class="uk-first-column">
|
|
||||||
<img class="uk-box-shadow-large uk-border-rounded" src="../../../../assets/imgs/landing/campaign-banner/2.jpg">
|
|
||||||
</div>
|
|
||||||
<div class="uk-margin-top">
|
|
||||||
<div>
|
|
||||||
<div class="uk-text-bold uk-h4">FAIR principles</div>
|
|
||||||
<div class="uk-margin-medium">
|
|
||||||
if you are compliant with the latest versions of the OpenAIRE Guidelines, you are also FAIR enough?
|
|
||||||
</div>
|
|
||||||
<div class="uk-inline">
|
|
||||||
<a class="uk-button uk-button-primary uk-text-uppercase" href="https://www.openaire.eu/openaire-guidelines-for-literature-institutional-and-thematic-repositories" target="_blank">learn more</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li tabindex="-1" style="order: 1;">
|
|
||||||
<div class="uk-flex uk-padding uk-child-width-1-2@m uk-child-width-1-1@s uk-grid" uk-grid="">
|
|
||||||
<div class="uk-first-column">
|
|
||||||
<img class="uk-box-shadow-large uk-border-rounded" src="../../../../assets/imgs/landing/campaign-banner/3.jpg">
|
|
||||||
</div>
|
|
||||||
<div class="uk-margin-top">
|
|
||||||
<div>
|
|
||||||
<div class="uk-text-bold uk-h4">Provide dashboard</div>
|
|
||||||
<div class="uk-margin-medium">
|
|
||||||
our one-stop-shop web service, not only helps you connect your content within OpenAIRE, but also facilitates your onboarding into the EOSC Portal Catalogue and Marketplace?
|
|
||||||
</div>
|
|
||||||
<div class="uk-inline">
|
|
||||||
<a class="uk-button uk-button-primary uk-text-uppercase" href="https://www.openaire.eu/openaire-guidelines-for-literature-institutional-and-thematic-repositories" target="_blank">learn more</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<ul class="uk-position-relative uk-slider-nav uk-dotnav uk-flex-center uk-margin">
|
|
||||||
<li uk-slider-item="0" class="uk-active"><a href="#"></a></li>
|
|
||||||
<li uk-slider-item="1" class=""><a href="#"></a></li>
|
|
||||||
<li uk-slider-item="2" class=""><a href="#"></a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- campaing banner end-->
|
|
||||||
|
|
||||||
<div class="uk-section-muted uk-section uk-section-large uk-section-overlap uk-position-relative">
|
<div class="uk-section-muted uk-section uk-section-large uk-section-overlap uk-position-relative">
|
||||||
|
|
||||||
<h2 class="uk-text-center">PROVIDE Dashboard brings all your data together</h2>
|
<h2 class="uk-text-center">PROVIDE Dashboard brings all your data together</h2>
|
||||||
|
@ -405,7 +321,7 @@
|
||||||
<div style="display: block; text-align: center">
|
<div style="display: block; text-align: center">
|
||||||
<img width="55" src="../../../../assets/imgs/landing/Agreement%20color.svg">
|
<img width="55" src="../../../../assets/imgs/landing/Agreement%20color.svg">
|
||||||
</div>
|
</div>
|
||||||
<div class="uk-margin-bottom uk-margin-top" style="font-weight: 600">Terms of Use for Content Providers</div>
|
<div class="uk-margin-bottom uk-margin-top" style="font-weight: 600">Terms of Agreement for Content Providers</div>
|
||||||
<p>Learn more: <a href="https://www.openaire.eu/terms-of-use-for-content-providers" target="_blank">https://www.openaire.eu/terms-of-use-for-content-providers</a></p>
|
<p>Learn more: <a href="https://www.openaire.eu/terms-of-use-for-content-providers" target="_blank">https://www.openaire.eu/terms-of-use-for-content-providers</a></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -418,7 +334,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="uk-margin-bottom uk-margin-top" style="font-weight: 600">Support</div>
|
<div class="uk-margin-bottom uk-margin-top" style="font-weight: 600">Support</div>
|
||||||
<p>Read <strong>how to use OpenAIRE</strong> to best serve your needs. <br>Learn more: <a href="https://www.openaire.eu/guides" target="_blank">https://www.openaire.eu/guides</a></p>
|
<p>Read <strong>how to use OpenAIRE</strong> to best serve your needs. <br>Learn more: <a href="https://www.openaire.eu/guides" target="_blank">https://www.openaire.eu/guides</a></p>
|
||||||
<p>Ask a question. Contact us via our <strong>ticketing system.</strong> <br>Learn more: <a href="https://www.openaire.eu/helpdesk" target="_blank">https://www.openaire.eu/helpdesk</a></p>
|
<p>Ask a question. Contact us via our <strong>ticketing system.</strong> <br>Learn more: <a href="https://www.openaire.eu/support/helpdesk" target="_blank">https://www.openaire.eu/support/helpdesk</a></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -571,88 +487,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Campaign banner-->
|
|
||||||
<div class="uk-section-muted uk-section uk-section-large uk-section-overlap uk-position-relative uk-padding-remove-bottom">
|
|
||||||
|
|
||||||
<h2 class="uk-text-center">Update your repository with latest OpenAIRE Interoperability Guidelines</h2>
|
|
||||||
|
|
||||||
<div class="uk-margin-medium-left uk-margin-medium-right uk-text-center text-muted">Become compatible to get onboard the EOSC catalogue</div>
|
|
||||||
|
|
||||||
<div class="uk-container uk-container-large uk-margin-medium-top">
|
|
||||||
|
|
||||||
<div class="uk-slider" tabindex="-1" uk-slider="velocity: 0;autoplay: true;autoplay-interval: 5000;pause-on-hover: false;center: true">
|
|
||||||
<div class="uk-position-relative">
|
|
||||||
<div class="uk-slider-container">
|
|
||||||
<ul class="uk-slider-items uk-child-width-1-1" style="transform: translateX(-1300px);">
|
|
||||||
<li class="ng-star-inserted uk-active" tabindex="-1" style="order: 1;">
|
|
||||||
<div class="uk-flex uk-padding uk-child-width-1-2@m uk-child-width-1-1@s uk-grid" uk-grid="">
|
|
||||||
<div class="uk-first-column">
|
|
||||||
<img class="uk-box-shadow-large uk-border-rounded" src="../../../../assets/imgs/landing/campaign-banner/1.jpg">
|
|
||||||
</div>
|
|
||||||
<div class="uk-margin-top">
|
|
||||||
<div>
|
|
||||||
<div class="uk-text-bold uk-h4">OpenAIRE Guidelines</div>
|
|
||||||
<div class="uk-margin-medium">
|
|
||||||
by adopting the Guidelines you ensure that your research products are more interconnected and more interoperable?
|
|
||||||
</div>
|
|
||||||
<div class="uk-inline">
|
|
||||||
<a class="uk-button uk-button-primary uk-text-uppercase" href="https://www.openaire.eu/openaire-guidelines-for-literature-institutional-and-thematic-repositories" target="_blank">learn more</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li tabindex="-1" style="order: 1;">
|
|
||||||
<div class="uk-flex uk-padding uk-child-width-1-2@m uk-child-width-1-1@s uk-grid" uk-grid="">
|
|
||||||
<div class="uk-first-column">
|
|
||||||
<img class="uk-box-shadow-large uk-border-rounded" src="../../../../assets/imgs/landing/campaign-banner/2.jpg">
|
|
||||||
</div>
|
|
||||||
<div class="uk-margin-top">
|
|
||||||
<div>
|
|
||||||
<div class="uk-text-bold uk-h4">FAIR principles</div>
|
|
||||||
<div class="uk-margin-medium">
|
|
||||||
if you are compliant with the latest versions of the OpenAIRE Guidelines, you are also FAIR enough?
|
|
||||||
</div>
|
|
||||||
<div class="uk-inline">
|
|
||||||
<a class="uk-button uk-button-primary uk-text-uppercase" href="https://www.openaire.eu/openaire-guidelines-for-literature-institutional-and-thematic-repositories" target="_blank">learn more</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li tabindex="-1" style="order: 1;">
|
|
||||||
<div class="uk-flex uk-padding uk-child-width-1-2@m uk-child-width-1-1@s uk-grid" uk-grid="">
|
|
||||||
<div class="uk-first-column">
|
|
||||||
<img class="uk-box-shadow-large uk-border-rounded" src="../../../../assets/imgs/landing/campaign-banner/3.jpg">
|
|
||||||
</div>
|
|
||||||
<div class="uk-margin-top">
|
|
||||||
<div>
|
|
||||||
<div class="uk-text-bold uk-h4">Provide dashboard</div>
|
|
||||||
<div class="uk-margin-medium">
|
|
||||||
our one-stop-shop web service, not only helps you connect your content within OpenAIRE, but also facilitates your onboarding into the EOSC Portal Catalogue and Marketplace?
|
|
||||||
</div>
|
|
||||||
<div class="uk-inline">
|
|
||||||
<a class="uk-button uk-button-primary uk-text-uppercase" href="https://www.openaire.eu/openaire-guidelines-for-literature-institutional-and-thematic-repositories" target="_blank">learn more</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<ul class="uk-position-relative uk-slider-nav uk-dotnav uk-flex-center uk-margin">
|
|
||||||
<li uk-slider-item="0" class="uk-active"><a href="#"></a></li>
|
|
||||||
<li uk-slider-item="1" class=""><a href="#"></a></li>
|
|
||||||
<li uk-slider-item="2" class=""><a href="#"></a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- end of campaing banner-->
|
|
||||||
|
|
||||||
<div class="uk-section-muted uk-section uk-section-large uk-section-overlap uk-position-relative">
|
<div class="uk-section-muted uk-section uk-section-large uk-section-overlap uk-position-relative">
|
||||||
|
|
||||||
<h2 class="uk-text-center">PROVIDE Dashboard brings all your data together</h2>
|
<h2 class="uk-text-center">PROVIDE Dashboard brings all your data together</h2>
|
||||||
|
@ -918,7 +752,7 @@
|
||||||
<div class="uk-first-column">
|
<div class="uk-first-column">
|
||||||
<div class="uk-margin-medium-left uk-margin-medium-top uk-margin-medium-bottom">
|
<div class="uk-margin-medium-left uk-margin-medium-top uk-margin-medium-bottom">
|
||||||
<img width="55" src="../../../../assets/imgs/landing/Agreement%20color.svg">
|
<img width="55" src="../../../../assets/imgs/landing/Agreement%20color.svg">
|
||||||
<div class="uk-margin-bottom uk-margin-top" style="font-weight: 600">Terms of Use for Content Providers</div>
|
<div class="uk-margin-bottom uk-margin-top" style="font-weight: 600">Terms of Agreement for Content Providers</div>
|
||||||
<p>Learn more: <a href="https://www.openaire.eu/terms-of-use-for-content-providers" target="_blank">https://www.openaire.eu/terms-of-use-for-content-providers</a></p>
|
<p>Learn more: <a href="https://www.openaire.eu/terms-of-use-for-content-providers" target="_blank">https://www.openaire.eu/terms-of-use-for-content-providers</a></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -929,7 +763,7 @@
|
||||||
<img width="38" src="../../../../assets/imgs/landing/Support%20color.svg">
|
<img width="38" src="../../../../assets/imgs/landing/Support%20color.svg">
|
||||||
<div class="uk-margin-bottom uk-margin-top" style="font-weight: 600">Support</div>
|
<div class="uk-margin-bottom uk-margin-top" style="font-weight: 600">Support</div>
|
||||||
<p>Read <strong>how to use OpenAIRE</strong> to best serve your needs. <br>Learn more: <a href="https://www.openaire.eu/guides" target="_blank">https://www.openaire.eu/guides</a></p>
|
<p>Read <strong>how to use OpenAIRE</strong> to best serve your needs. <br>Learn more: <a href="https://www.openaire.eu/guides" target="_blank">https://www.openaire.eu/guides</a></p>
|
||||||
<p>Ask a question. Contact us via our <strong>ticketing system.</strong> <br>Learn more: <a href="https://www.openaire.eu/helpdesk" target="_blank">https://www.openaire.eu/helpdesk</a></p>
|
<p>Ask a question. Contact us via our <strong>ticketing system.</strong> <br>Learn more: <a href="https://www.openaire.eu/support/helpdesk" target="_blank">https://www.openaire.eu/support/helpdesk</a></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -986,7 +820,7 @@
|
||||||
<div class="uk-first-column">
|
<div class="uk-first-column">
|
||||||
<div class="uk-margin-medium-left uk-margin-medium-top uk-margin-medium-bottom">
|
<div class="uk-margin-medium-left uk-margin-medium-top uk-margin-medium-bottom">
|
||||||
<img width="55" src="../../../../assets/imgs/landing/Agreement%20color.svg">
|
<img width="55" src="../../../../assets/imgs/landing/Agreement%20color.svg">
|
||||||
<div class="uk-margin-bottom uk-margin-top" style="font-weight: 600">Terms of Use for Content Providers</div>
|
<div class="uk-margin-bottom uk-margin-top" style="font-weight: 600">Terms of Agreement for Content Providers</div>
|
||||||
<p>Learn more: <a href="https://www.openaire.eu/terms-of-use-for-content-providers" target="_blank">https://www.openaire.eu/terms-of-use-for-content-providers</a></p>
|
<p>Learn more: <a href="https://www.openaire.eu/terms-of-use-for-content-providers" target="_blank">https://www.openaire.eu/terms-of-use-for-content-providers</a></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -997,7 +831,7 @@
|
||||||
<img width="38" src="../../../../assets/imgs/landing/Support%20color.svg">
|
<img width="38" src="../../../../assets/imgs/landing/Support%20color.svg">
|
||||||
<div class="uk-margin-bottom uk-margin-top" style="font-weight: 600">Support</div>
|
<div class="uk-margin-bottom uk-margin-top" style="font-weight: 600">Support</div>
|
||||||
<p>Read <strong>how to use OpenAIRE</strong> to best serve your needs. <br>Learn more: <a href="https://www.openaire.eu/guides" target="_blank">https://www.openaire.eu/guides</a></p>
|
<p>Read <strong>how to use OpenAIRE</strong> to best serve your needs. <br>Learn more: <a href="https://www.openaire.eu/guides" target="_blank">https://www.openaire.eu/guides</a></p>
|
||||||
<p>Ask a question. Contact us via our <strong>ticketing system.</strong> <br>Learn more: <a href="https://www.openaire.eu/helpdesk" target="_blank">https://www.openaire.eu/helpdesk</a></p>
|
<p>Ask a question. Contact us via our <strong>ticketing system.</strong> <br>Learn more: <a href="https://www.openaire.eu/support/helpdesk" target="_blank">https://www.openaire.eu/support/helpdesk</a></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -7,7 +7,7 @@ import { Router } from '@angular/router';
|
||||||
@Component ({
|
@Component ({
|
||||||
selector: 'app-landing',
|
selector: 'app-landing',
|
||||||
templateUrl: './home.component.html',
|
templateUrl: './home.component.html',
|
||||||
styleUrls: ['../../../../assets/css/landingpage/theme.css', '../../../../assets/css/landingpage/custom.css', '../../../../assets/css/landingpage/custom-provide.css'],
|
styleUrls: ['../../../../assets/css/landingpage/theme.css','../../../../assets/css/landingpage/custom.css','../../../../assets/css/landingpage/custom-provide.css'],
|
||||||
})
|
})
|
||||||
|
|
||||||
export class HomeComponent implements OnInit {
|
export class HomeComponent implements OnInit {
|
||||||
|
@ -26,9 +26,9 @@ export class HomeComponent implements OnInit {
|
||||||
const baseUrl = window.location.origin;
|
const baseUrl = window.location.origin;
|
||||||
this.inBeta = ( baseUrl.includes('beta') || baseUrl.includes('athenarc') );
|
this.inBeta = ( baseUrl.includes('beta') || baseUrl.includes('athenarc') );
|
||||||
|
|
||||||
const body = document.getElementsByTagName('body')[0];
|
let body = document.getElementsByTagName('body')[0];
|
||||||
body.classList.remove('dashboard');
|
body.classList.remove("dashboard");
|
||||||
body.classList.add('landing');
|
body.classList.add("landing");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ export class HomeComponent implements OnInit {
|
||||||
},
|
},
|
||||||
error => console.log(error),
|
error => console.log(error),
|
||||||
() => {
|
() => {
|
||||||
// console.log('statisticsNumbers is', JSON.stringify(this.statisticsNumbers));
|
console.log('statisticsNumbers is', JSON.stringify(this.statisticsNumbers));
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -53,7 +53,7 @@ export class HomeComponent implements OnInit {
|
||||||
if (this.authService.getIsUserLoggedIn()) {
|
if (this.authService.getIsUserLoggedIn()) {
|
||||||
this.router.navigate([pageUrl]);
|
this.router.navigate([pageUrl]);
|
||||||
} else {
|
} else {
|
||||||
// this.authService.redirectUrl = pageUrl;
|
this.authService.redirectUrl = pageUrl;
|
||||||
this.login();
|
this.login();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,8 +51,8 @@
|
||||||
<!--<td class="uk-text-center"><img class="md-user-image dense-image dense-ready" src="assets/img/avatars/avatar_01_tn@2x.png" alt="" data-dense-cap="2"></td>-->
|
<!--<td class="uk-text-center"><img class="md-user-image dense-image dense-ready" src="assets/img/avatars/avatar_01_tn@2x.png" alt="" data-dense-cap="2"></td>-->
|
||||||
<td><span *ngIf="aggr.date">{{ aggr.date | date : "yyyy-MM-dd" }}</span></td>
|
<td><span *ngIf="aggr.date">{{ aggr.date | date : "yyyy-MM-dd" }}</span></td>
|
||||||
<td class=""><span *ngIf="aggr.aggregationStage">{{ aggr.aggregationStage }}</span></td>
|
<td class=""><span *ngIf="aggr.aggregationStage">{{ aggr.aggregationStage }}</span></td>
|
||||||
<td class=""><span>{{ aggr.collectionMode ? aggr.collectionMode : '-'}}</span></td>
|
<td class=""><span *ngIf="aggr.collectionMode">{{ aggr.collectionMode }}</span></td>
|
||||||
<td class="uk-text-center"><span *ngIf="aggr.numberOfRecords !== null">{{ aggr.numberOfRecords }}</span></td>
|
<td class="uk-text-center"><span *ngIf="aggr.numberOfRecords">{{ aggr.numberOfRecords }}</span></td>
|
||||||
<td class="uk-text-center"><span *ngIf="aggr.indexedVersion !== null && (aggr.indexedVersion === true)" class="uk-badge">Indexed version</span></td>
|
<td class="uk-text-center"><span *ngIf="aggr.indexedVersion !== null && (aggr.indexedVersion === true)" class="uk-badge">Indexed version</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
|
@ -30,7 +30,7 @@ export class CompatibilityMonitorFullHistoryRepoComponent implements OnInit {
|
||||||
|
|
||||||
if(this.sharedService.getRepository()) {
|
if(this.sharedService.getRepository()) {
|
||||||
this.repo = this.sharedService.getRepository();
|
this.repo = this.sharedService.getRepository();
|
||||||
this.repoName = this.repo.officialname;
|
this.repoName = this.repo.officialName;
|
||||||
this.getAllAggregationHistory();
|
this.getAllAggregationHistory();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ export class CompatibilityMonitorFullHistoryRepoComponent implements OnInit {
|
||||||
r => {
|
r => {
|
||||||
this.repo = r;
|
this.repo = r;
|
||||||
if (this.repo) {
|
if (this.repo) {
|
||||||
this.repoName = this.repo.officialname;
|
this.repoName = this.repo.officialName;
|
||||||
this.getAllAggregationHistory();
|
this.getAllAggregationHistory();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,7 +74,7 @@
|
||||||
<span class="uk-text-small uk-text-muted">{{ aggr.collectionMode }}</span>
|
<span class="uk-text-small uk-text-muted">{{ aggr.collectionMode }}</span>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li *ngIf="aggr.numberOfRecords">
|
||||||
<!--<div class="md-list-addon-element">-->
|
<!--<div class="md-list-addon-element">-->
|
||||||
<!--<span class="md-user-image md-list-addon-avatar dense-image dense-ready">-->
|
<!--<span class="md-user-image md-list-addon-avatar dense-image dense-ready">-->
|
||||||
<!--<i class="material-icons">list</i>-->
|
<!--<i class="material-icons">list</i>-->
|
||||||
|
@ -82,13 +82,7 @@
|
||||||
<!--</div>-->
|
<!--</div>-->
|
||||||
<div class="md-list-content">
|
<div class="md-list-content">
|
||||||
<span class="md-list-heading">Number of records</span>
|
<span class="md-list-heading">Number of records</span>
|
||||||
<span class="uk-text-small uk-text-muted">{{ aggr?.numberOfRecords>=0 ? aggr.numberOfRecords : 'NA' }}</span>
|
<span class="uk-text-small uk-text-muted">{{ aggr.numberOfRecords }}</span>
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<div class="md-list-content">
|
|
||||||
<span class="md-list-heading">Completed Successfully</span>
|
|
||||||
<span class="uk-text-small uk-text-muted">{{ aggr.completedSuccessfully }}</span>
|
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -29,7 +29,7 @@ export class CompatibilityMonitorRepoComponent implements OnInit {
|
||||||
|
|
||||||
if(this.sharedService.getRepository()) {
|
if(this.sharedService.getRepository()) {
|
||||||
this.repo = this.sharedService.getRepository();
|
this.repo = this.sharedService.getRepository();
|
||||||
this.repoName = this.repo.officialname;
|
this.repoName = this.repo.officialName;
|
||||||
this.getLatestAggregationHistory();
|
this.getLatestAggregationHistory();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ export class CompatibilityMonitorRepoComponent implements OnInit {
|
||||||
r => {
|
r => {
|
||||||
this.repo = r;
|
this.repo = r;
|
||||||
if (this.repo) {
|
if (this.repo) {
|
||||||
this.repoName = this.repo.officialname;
|
this.repoName = this.repo.officialName;
|
||||||
this.getLatestAggregationHistory();
|
this.getLatestAggregationHistory();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -144,7 +144,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="uk-margin-small-bottom">
|
<div *ngIf="aggr.numberOfRecords" class="uk-margin-small-bottom">
|
||||||
<!--<div class="inline-block" style="vertical-align: top">-->
|
<!--<div class="inline-block" style="vertical-align: top">-->
|
||||||
<!--<span class="md-user-image md-list-addon-avatar dense-image dense-ready">-->
|
<!--<span class="md-user-image md-list-addon-avatar dense-image dense-ready">-->
|
||||||
<!--<i class="material-icons">list</i>-->
|
<!--<i class="material-icons">list</i>-->
|
||||||
|
@ -153,14 +153,7 @@
|
||||||
|
|
||||||
<div class="">
|
<div class="">
|
||||||
<div class="md-list-heading">Number of records</div>
|
<div class="md-list-heading">Number of records</div>
|
||||||
<div class="uk-text-small uk-text-muted">{{ aggr?.numberOfRecords>=0 ? aggr.numberOfRecords : 'NA' }}</div>
|
<div class="uk-text-small uk-text-muted">{{ aggr.numberOfRecords | number }}</div>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="uk-margin-small-bottom">
|
|
||||||
<div class="">
|
|
||||||
<div class="md-list-heading">Completed Successfully</div>
|
|
||||||
<div class="uk-text-small uk-text-muted">{{ aggr.completedSuccessfully }}</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -380,7 +373,7 @@
|
||||||
<div *ngIf="!brokerSummary || !brokerSummary.userSubs">No notifications were found</div>
|
<div *ngIf="!brokerSummary || !brokerSummary.userSubs">No notifications were found</div>
|
||||||
<div *ngIf="brokerSummary && brokerSummary.userSubs">
|
<div *ngIf="brokerSummary && brokerSummary.userSubs">
|
||||||
<ul class="md-list md-list-addon gmap_list">
|
<ul class="md-list md-list-addon gmap_list">
|
||||||
<li *ngFor="let sub of brokerSummary.userSubs[repository.officialname]">
|
<li *ngFor="let sub of brokerSummary.userSubs[repository.officialName]">
|
||||||
<div class="md-list-addon-element">
|
<div class="md-list-addon-element">
|
||||||
<span>{{ sub.count | number }}</span>
|
<span>{{ sub.count | number }}</span>
|
||||||
<!--<img class="md-user-image md-list-addon-avatar" src="assets/img/avatars/avatar_01_tn.png" alt="">-->
|
<!--<img class="md-user-image md-list-addon-avatar" src="assets/img/avatars/avatar_01_tn.png" alt="">-->
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import {Component, OnDestroy, OnInit} from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import { AuthenticationService } from '../../../services/authentication.service';
|
import { AuthenticationService } from '../../../services/authentication.service';
|
||||||
import { RepositoryService } from '../../../services/repository.service';
|
import { RepositoryService } from '../../../services/repository.service';
|
||||||
import {
|
import {
|
||||||
|
@ -16,15 +16,15 @@ import {DashboardService} from '../../../services/dashboard.service';
|
||||||
import {DomSanitizer, SafeResourceUrl} from '@angular/platform-browser';
|
import {DomSanitizer, SafeResourceUrl} from '@angular/platform-browser';
|
||||||
import {PiwikService} from '../../../services/piwik.service';
|
import {PiwikService} from '../../../services/piwik.service';
|
||||||
import {ValidatorService} from '../../../services/validator.service';
|
import {ValidatorService} from '../../../services/validator.service';
|
||||||
import {ActivatedRoute} from '@angular/router';
|
import {ActivatedRoute} from "@angular/router";
|
||||||
import {SharedService} from '../../../services/shared.service';
|
import {SharedService} from "../../../services/shared.service";
|
||||||
|
|
||||||
@Component ({
|
@Component ({
|
||||||
selector: 'app-dashboard',
|
selector: 'app-dashboard',
|
||||||
templateUrl: 'dashboard.component.html'
|
templateUrl: 'dashboard.component.html'
|
||||||
})
|
})
|
||||||
|
|
||||||
export class DashboardComponent implements OnInit, OnDestroy {
|
export class DashboardComponent implements OnInit {
|
||||||
|
|
||||||
repository: Repository = null;
|
repository: Repository = null;
|
||||||
errorMessage: string;
|
errorMessage: string;
|
||||||
|
@ -88,25 +88,29 @@ export class DashboardComponent implements OnInit, OnDestroy {
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
|
||||||
if (this.sharedService.getRepository()) {
|
if(this.sharedService.getRepository()) {
|
||||||
this.repository = this.sharedService.getRepository();
|
this.repository = this.sharedService.getRepository();
|
||||||
this.getSelectedRepositorySummaryInfo(this.repository);
|
this.getSelectedRepositorySummaryInfo(this.repository);
|
||||||
}
|
}
|
||||||
|
|
||||||
const body = document.getElementsByTagName('body')[0];
|
this.sharedService.repository$.subscribe(
|
||||||
body.classList.remove('top_bar_active');
|
r => {
|
||||||
body.classList.remove('page_heading_active');
|
this.repository = r;
|
||||||
body.classList.remove('landing');
|
// console.log("RepositoryID: ", this.repository.id);
|
||||||
body.classList.add('dashboard');
|
this.getSelectedRepositorySummaryInfo(this.repository);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
let body = document.getElementsByTagName('body')[0];
|
||||||
|
body.classList.remove("top_bar_active");
|
||||||
|
body.classList.remove("page_heading_active");
|
||||||
|
body.classList.remove("landing");
|
||||||
|
body.classList.add("dashboard");
|
||||||
|
|
||||||
const currentTime = new Date();
|
const currentTime = new Date();
|
||||||
this.currentDate = currentTime.getFullYear() + '-' + (currentTime.getMonth() + 1);
|
this.currentDate = currentTime.getFullYear() + '-' + (currentTime.getMonth() + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnDestroy() {
|
|
||||||
// this.sharedService.repository.unsubscribe();
|
|
||||||
}
|
|
||||||
|
|
||||||
getSelectedRepositorySummaryInfo(repository: Repository) {
|
getSelectedRepositorySummaryInfo(repository: Repository) {
|
||||||
|
|
||||||
// Aggregations
|
// Aggregations
|
||||||
|
@ -183,7 +187,7 @@ export class DashboardComponent implements OnInit, OnDestroy {
|
||||||
this.validatorService.getValidationSummary(repository.id).subscribe(
|
this.validatorService.getValidationSummary(repository.id).subscribe(
|
||||||
validationSummary => {
|
validationSummary => {
|
||||||
this.storedJob = validationSummary;
|
this.storedJob = validationSummary;
|
||||||
// console.log(validationSummary);
|
console.log(validationSummary);
|
||||||
},
|
},
|
||||||
error => {
|
error => {
|
||||||
this.errorValidationsMessage = loadingJobSummaryError;
|
this.errorValidationsMessage = loadingJobSummaryError;
|
||||||
|
@ -199,7 +203,7 @@ export class DashboardComponent implements OnInit, OnDestroy {
|
||||||
|
|
||||||
getCollectionMonitorSummary(collectionMonitorSummary: CollectionMonitorSummary) {
|
getCollectionMonitorSummary(collectionMonitorSummary: CollectionMonitorSummary) {
|
||||||
|
|
||||||
this.latestAggregations = collectionMonitorSummary.aggregationInfo;
|
this.latestAggregations = collectionMonitorSummary.aggregationDetails;
|
||||||
this.lastIndexedVersion = collectionMonitorSummary.lastIndexedVersion;
|
this.lastIndexedVersion = collectionMonitorSummary.lastIndexedVersion;
|
||||||
|
|
||||||
if ( !this.latestAggregations || (this.latestAggregations.length === 0) ) {
|
if ( !this.latestAggregations || (this.latestAggregations.length === 0) ) {
|
||||||
|
@ -214,16 +218,16 @@ export class DashboardComponent implements OnInit, OnDestroy {
|
||||||
|
|
||||||
this.brokerSummary = brokerSummary;
|
this.brokerSummary = brokerSummary;
|
||||||
|
|
||||||
if (this.brokerSummary.userSubs == null)
|
if(this.brokerSummary.userSubs==null)
|
||||||
this.noSubscriptions = noTopicsFound;
|
this.noSubscriptions = noTopicsFound;
|
||||||
if (this.brokerSummary.topicsForDatasource == null)
|
if(this.brokerSummary.topicsForDatasource==null)
|
||||||
this.noTopics = noSubscriptionsFound;
|
this.noTopics = noSubscriptionsFound;
|
||||||
|
|
||||||
this.totalNumberOfEvents = 0;
|
this.totalNumberOfEvents = 0;
|
||||||
this.totalMore = 0;
|
this.totalMore = 0;
|
||||||
this.totalMissing = 0;
|
this.totalMissing = 0;
|
||||||
if (brokerSummary.topicsForDatasource) {
|
if(brokerSummary.topicsForDatasource) {
|
||||||
for (const browseEntry of brokerSummary.topicsForDatasource) {
|
for (let browseEntry of brokerSummary.topicsForDatasource) {
|
||||||
this.totalNumberOfEvents += browseEntry.size;
|
this.totalNumberOfEvents += browseEntry.size;
|
||||||
if (browseEntry.value.startsWith('ENRICH/MORE')) {
|
if (browseEntry.value.startsWith('ENRICH/MORE')) {
|
||||||
this.totalMore += browseEntry.size;
|
this.totalMore += browseEntry.size;
|
||||||
|
@ -268,18 +272,18 @@ export class DashboardComponent implements OnInit, OnDestroy {
|
||||||
|
|
||||||
getViewsUrl () {
|
getViewsUrl () {
|
||||||
|
|
||||||
const encodedURL = encodeURIComponent('{"library":"HighCharts","chartDescription":{"queries":[{"name":"Monthly views","type":"line","query":{"name":"usagestats.views.monthly", "parameters":["' + this.piwik.openaireId + '"], "profile":"OpenAIRE All-inclusive" }}],"chart":{"backgroundColor":"#FFFFFFFF","borderColor":"#335cadff","borderRadius":0,"borderWidth":0,"plotBorderColor":"#ccccccff","plotBorderWidth":0},"title":{"text":""},"subtitle":{},"yAxis":{"title":{"text":"Monthly views"}},"xAxis":{"title":{}},"lang":{"noData":"No Data available for the Query"},"exporting":{"enabled":false},"plotOptions":{"series":{"dataLabels":{"enabled":false}}},"legend":{"enabled":false},"credits":{"href":null,"enabled":true,"text":"Created by OpenAIRE via HighCharts"}}}');
|
let encodedURL = encodeURIComponent('{"library":"HighCharts","chartDescription":{"queries":[{"name":"Monthly views","type":"line","query":{"name":"usagestats.views.monthly", "parameters":["' + this.piwik.openaireId + '"], "profile":"OpenAIRE All-inclusive" }}],"chart":{"backgroundColor":"#FFFFFFFF","borderColor":"#335cadff","borderRadius":0,"borderWidth":0,"plotBorderColor":"#ccccccff","plotBorderWidth":0},"title":{"text":""},"subtitle":{},"yAxis":{"title":{"text":"Monthly views"}},"xAxis":{"title":{}},"lang":{"noData":"No Data available for the Query"},"exporting":{"enabled":false},"plotOptions":{"series":{"dataLabels":{"enabled":false}}},"legend":{"enabled":false},"credits":{"href":null,"enabled":true,"text":"Created by OpenAIRE via HighCharts"}}}');
|
||||||
this.viewsUrl = this.sanitizer.bypassSecurityTrustResourceUrl(`${this.repoMetrics.diagramsBaseURL}chart?json=${encodedURL}`);
|
this.viewsUrl = this.sanitizer.bypassSecurityTrustResourceUrl(`${this.repoMetrics.diagramsBaseURL}chart?json=${encodedURL}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
getDownloadsUrl () {
|
getDownloadsUrl () {
|
||||||
|
|
||||||
const encodedURL = encodeURIComponent('{"library":"HighCharts","chartDescription":{"queries":[{"name":"Monthly downloads","type":"line","query":{"name":"usagestats.downloads.monthly", "parameters":["' + this.piwik.openaireId + '"], "profile":"OpenAIRE All-inclusive" }}],"chart":{"backgroundColor":"#FFFFFFFF","borderColor":"#335cadff","borderRadius":0,"borderWidth":0,"plotBorderColor":"#ccccccff","plotBorderWidth":0},"title":{"text":""},"subtitle":{},"yAxis":{"title":{"text":"Monthly downloads"}},"xAxis":{"title":{}},"lang":{"noData":"No Data available for the Query"},"exporting":{"enabled":false},"plotOptions":{"series":{"dataLabels":{"enabled":false}}},"legend":{"enabled":false},"credits":{"href":null,"enabled":true,"text":"Created by OpenAIRE via HighCharts"}}}');
|
let encodedURL = encodeURIComponent('{"library":"HighCharts","chartDescription":{"queries":[{"name":"Monthly downloads","type":"line","query":{"name":"usagestats.downloads.monthly", "parameters":["' + this.piwik.openaireId + '"], "profile":"OpenAIRE All-inclusive" }}],"chart":{"backgroundColor":"#FFFFFFFF","borderColor":"#335cadff","borderRadius":0,"borderWidth":0,"plotBorderColor":"#ccccccff","plotBorderWidth":0},"title":{"text":""},"subtitle":{},"yAxis":{"title":{"text":"Monthly views"}},"xAxis":{"title":{}},"lang":{"noData":"No Data available for the Query"},"exporting":{"enabled":false},"plotOptions":{"series":{"dataLabels":{"enabled":false}}},"legend":{"enabled":false},"credits":{"href":null,"enabled":true,"text":"Created by OpenAIRE via HighCharts"}}}');
|
||||||
this.downloadsUrl = this.sanitizer.bypassSecurityTrustResourceUrl(`${this.repoMetrics.diagramsBaseURL}chart?json=${encodedURL}`);
|
this.downloadsUrl = this.sanitizer.bypassSecurityTrustResourceUrl(`${this.repoMetrics.diagramsBaseURL}chart?json=${encodedURL}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
getCorrectName() {
|
getCorrectName() {
|
||||||
const temp = this.repository.officialname.split('|');
|
const temp = this.repository.officialName.split('|');
|
||||||
let correctName = temp[0];
|
let correctName = temp[0];
|
||||||
let repoName = temp[0];
|
let repoName = temp[0];
|
||||||
for (let i = 1; i < temp.length; i++) {
|
for (let i = 1; i < temp.length; i++) {
|
||||||
|
|
|
@ -57,7 +57,7 @@ export class ContentEventsOfRepoEventslistComponent implements OnInit {
|
||||||
modalErrorMessage: string;
|
modalErrorMessage: string;
|
||||||
|
|
||||||
isModalShown: boolean;
|
isModalShown: boolean;
|
||||||
@ViewChild('subscribeToEventsModal', { static: true })
|
@ViewChild('subscribeToEventsModal')
|
||||||
public subscribeToEventsModal: ConfirmationDialogComponent;
|
public subscribeToEventsModal: ConfirmationDialogComponent;
|
||||||
|
|
||||||
constructor (private route: ActivatedRoute,
|
constructor (private route: ActivatedRoute,
|
||||||
|
@ -74,7 +74,7 @@ export class ContentEventsOfRepoEventslistComponent implements OnInit {
|
||||||
|
|
||||||
|
|
||||||
if(this.sharedService.getRepository()) {
|
if(this.sharedService.getRepository()) {
|
||||||
this.repoName = this.sharedService.getRepository().officialname;
|
this.repoName = this.sharedService.getRepository().officialName;
|
||||||
this.initQuery();
|
this.initQuery();
|
||||||
this.initForm();
|
this.initForm();
|
||||||
this.currentPage = 0; /* DELETE WHEN ADVANCED SHOW EVENTS IS FIXED AND SENDS CORRECT VALUE FOR CURRENT PAGE */
|
this.currentPage = 0; /* DELETE WHEN ADVANCED SHOW EVENTS IS FIXED AND SENDS CORRECT VALUE FOR CURRENT PAGE */
|
||||||
|
@ -84,7 +84,7 @@ export class ContentEventsOfRepoEventslistComponent implements OnInit {
|
||||||
this.sharedService.repository$.subscribe(
|
this.sharedService.repository$.subscribe(
|
||||||
r => {
|
r => {
|
||||||
if (r) {
|
if (r) {
|
||||||
this.repoName = r.officialname;
|
this.repoName = r.officialName;
|
||||||
this.initQuery();
|
this.initQuery();
|
||||||
this.initForm();
|
this.initForm();
|
||||||
this.currentPage = 0; /* DELETE WHEN ADVANCED SHOW EVENTS IS FIXED AND SENDS CORRECT VALUE FOR CURRENT PAGE */
|
this.currentPage = 0; /* DELETE WHEN ADVANCED SHOW EVENTS IS FIXED AND SENDS CORRECT VALUE FOR CURRENT PAGE */
|
||||||
|
|
|
@ -34,7 +34,7 @@ export class ContentEventsOfRepositoryComponent implements OnInit {
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
|
||||||
if(this.sharedService.getRepository()) {
|
if(this.sharedService.getRepository()) {
|
||||||
this.repoName = this.sharedService.getRepository().officialname;
|
this.repoName = this.sharedService.getRepository().officialName;
|
||||||
this.getCorrectName();
|
this.getCorrectName();
|
||||||
this.getTopics();
|
this.getTopics();
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ export class ContentEventsOfRepositoryComponent implements OnInit {
|
||||||
this.sharedService.repository$.subscribe(
|
this.sharedService.repository$.subscribe(
|
||||||
r => {
|
r => {
|
||||||
if (r) {
|
if (r) {
|
||||||
this.repoName = r.officialname;
|
this.repoName = r.officialName;
|
||||||
this.getCorrectName();
|
this.getCorrectName();
|
||||||
this.getTopics();
|
this.getTopics();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<div id="page_content_inner">
|
<div id="page_content_inner">
|
||||||
<!--<h2 class="heading_b uk-margin-bottom">Metrics for repository....</h2>-->
|
<!--<h2 class="heading_b uk-margin-bottom">Metrics for repository....</h2>-->
|
||||||
<h2 *ngIf="repo" class="heading_b uk-margin-bottom">Metrics for {{repo.officialname}}</h2>
|
<h2 *ngIf="repo" class="heading_b uk-margin-bottom">Metrics for {{repo.officialName}}</h2>
|
||||||
|
|
||||||
<!-- TOP HELP CONTENT -->
|
<!-- TOP HELP CONTENT -->
|
||||||
<help-content #topHelperContent [position]="'top'"
|
<help-content #topHelperContent [position]="'top'"
|
||||||
|
|
|
@ -3,11 +3,9 @@ import { ActivatedRoute, Router } from '@angular/router';
|
||||||
import { ConfirmationDialogComponent } from '../../../shared/reusablecomponents/confirmation-dialog.component';
|
import { ConfirmationDialogComponent } from '../../../shared/reusablecomponents/confirmation-dialog.component';
|
||||||
import { PiwikService } from '../../../services/piwik.service';
|
import { PiwikService } from '../../../services/piwik.service';
|
||||||
import { RepositoryService } from '../../../services/repository.service';
|
import { RepositoryService } from '../../../services/repository.service';
|
||||||
import {Country, PiwikInfo, Repository} from '../../../domain/typeScriptClasses';
|
import { PiwikInfo, Repository } from '../../../domain/typeScriptClasses';
|
||||||
import {
|
import { enabledMetricsError, enabledMetricsSuccess, enablingMetrics,
|
||||||
enabledMetricsError, enabledMetricsSuccess, enablingMetrics,
|
loadingRepoError, loadingRepoMessage } from '../../../domain/shared-messages';
|
||||||
loadingRepoError, loadingRepoMessage, noServiceMessage
|
|
||||||
} from '../../../domain/shared-messages';
|
|
||||||
import { AuthenticationService } from '../../../services/authentication.service';
|
import { AuthenticationService } from '../../../services/authentication.service';
|
||||||
import { SharedService } from "../../../services/shared.service";
|
import { SharedService } from "../../../services/shared.service";
|
||||||
|
|
||||||
|
@ -27,13 +25,11 @@ export class MetricsEnableComponent implements OnInit {
|
||||||
repo: Repository;
|
repo: Repository;
|
||||||
oaId: string;
|
oaId: string;
|
||||||
|
|
||||||
countries: Country[] = [];
|
|
||||||
|
|
||||||
modalTitle = 'Confirmation';
|
modalTitle = 'Confirmation';
|
||||||
modalButton = 'Yes, enable it';
|
modalButton = 'Yes, enable it';
|
||||||
isModalShown: boolean;
|
isModalShown: boolean;
|
||||||
|
|
||||||
@ViewChild('confirmEnablingModal', { static: true })
|
@ViewChild('confirmEnablingModal')
|
||||||
public confirmEnablingModal: ConfirmationDialogComponent;
|
public confirmEnablingModal: ConfirmationDialogComponent;
|
||||||
|
|
||||||
|
|
||||||
|
@ -64,13 +60,11 @@ export class MetricsEnableComponent implements OnInit {
|
||||||
|
|
||||||
// this.getRepo();
|
// this.getRepo();
|
||||||
this.isModalShown = false;
|
this.isModalShown = false;
|
||||||
const body = document.getElementsByTagName('body')[0];
|
let body = document.getElementsByTagName('body')[0];
|
||||||
body.classList.remove('top_bar_active'); // remove the class
|
body.classList.remove("top_bar_active"); //remove the class
|
||||||
body.classList.remove('page_heading_active');
|
body.classList.remove("page_heading_active");
|
||||||
body.classList.remove('landing');
|
body.classList.remove("landing");
|
||||||
body.classList.add('dashboard');
|
body.classList.add("dashboard");
|
||||||
|
|
||||||
this.getCountries();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// getRepo(): void {
|
// getRepo(): void {
|
||||||
|
@ -115,8 +109,8 @@ export class MetricsEnableComponent implements OnInit {
|
||||||
const piwik: PiwikInfo = {
|
const piwik: PiwikInfo = {
|
||||||
repositoryId: this.repo.id,
|
repositoryId: this.repo.id,
|
||||||
openaireId: this.oaId,
|
openaireId: this.oaId,
|
||||||
repositoryName: this.repo.officialname,
|
repositoryName: this.repo.officialName,
|
||||||
country: this.getCountryName(this.repo.organizations[0].country),
|
country: this.repo.countryName,
|
||||||
siteId: '',
|
siteId: '',
|
||||||
authenticationToken: this.authenticationToken,
|
authenticationToken: this.authenticationToken,
|
||||||
creationDate: null,
|
creationDate: null,
|
||||||
|
@ -127,13 +121,13 @@ export class MetricsEnableComponent implements OnInit {
|
||||||
comment: ''
|
comment: ''
|
||||||
};
|
};
|
||||||
|
|
||||||
this.piwikService.enableMetricsForRepository(this.repo.officialname, this.repo.websiteurl, piwik).subscribe(
|
this.piwikService.enableMetricsForRepository(this.repo.officialName, this.repo.websiteUrl, piwik).subscribe(
|
||||||
response => {
|
response => {
|
||||||
console.log(`enableMetrics answered: ${response}`);
|
console.log(`enableMetrics answered: ${response}`);
|
||||||
this.successMessage = enabledMetricsSuccess;
|
this.successMessage = enabledMetricsSuccess;
|
||||||
this.loadingMessage = '';
|
this.loadingMessage = '';
|
||||||
|
|
||||||
// save piwik and update shareRepo
|
//save piwik and update shareRepo
|
||||||
this.repo.piwikInfo = piwik;
|
this.repo.piwikInfo = piwik;
|
||||||
this.sharedService.setRepository(this.repo);
|
this.sharedService.setRepository(this.repo);
|
||||||
},
|
},
|
||||||
|
@ -149,33 +143,4 @@ export class MetricsEnableComponent implements OnInit {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getCountries() {
|
|
||||||
this.repoService.getCountries()
|
|
||||||
.subscribe(
|
|
||||||
countries => this.countries = countries.sort(function (a, b) {
|
|
||||||
if (a.name < b.name) {
|
|
||||||
return -1;
|
|
||||||
} else if (a.name > b.name) {
|
|
||||||
return 1;
|
|
||||||
} else {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
error => {
|
|
||||||
this.loadingMessage = '';
|
|
||||||
this.errorMessage = noServiceMessage;
|
|
||||||
console.log(error);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
getCountryName(countryCode): string {
|
|
||||||
for (const country of Object.values(this.countries)) {
|
|
||||||
if (country.code === countryCode) {
|
|
||||||
return country.name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,7 @@ export class MetricsShowComponent implements OnInit {
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
|
||||||
if (this.sharedService.getRepository()) {
|
if(this.sharedService.getRepository()) {
|
||||||
this.repoId = this.sharedService.getRepository().id;
|
this.repoId = this.sharedService.getRepository().id;
|
||||||
this.piwik = this.sharedService.getRepository().piwikInfo;
|
this.piwik = this.sharedService.getRepository().piwikInfo;
|
||||||
this.getMetrics();
|
this.getMetrics();
|
||||||
|
@ -51,11 +51,11 @@ export class MetricsShowComponent implements OnInit {
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
const body = document.getElementsByTagName('body')[0];
|
let body = document.getElementsByTagName('body')[0];
|
||||||
body.classList.remove('top_bar_active'); // remove the class
|
body.classList.remove("top_bar_active"); //remove the class
|
||||||
body.classList.remove('page_heading_active');
|
body.classList.remove("page_heading_active");
|
||||||
body.classList.remove('landing');
|
body.classList.remove("landing");
|
||||||
body.classList.add('dashboard');
|
body.classList.add("dashboard");
|
||||||
}
|
}
|
||||||
|
|
||||||
getMetrics() {
|
getMetrics() {
|
||||||
|
@ -90,7 +90,7 @@ export class MetricsShowComponent implements OnInit {
|
||||||
|
|
||||||
getViewsUrl () {
|
getViewsUrl () {
|
||||||
|
|
||||||
const encodedURL = encodeURIComponent('{"library":"HighCharts","chartDescription":{"queries":[{"name":"Monthly views","type":"line","query":{"name":"usagestats.views.monthly", "parameters":["' + this.piwik.openaireId + '"], "profile":"OpenAIRE All-inclusive" }}],"chart":{"backgroundColor":"#FFFFFFFF","borderColor":"#335cadff","borderRadius":0,"borderWidth":0,"plotBorderColor":"#ccccccff","plotBorderWidth":0},"title":{"text":""},"subtitle":{},"yAxis":{"title":{"text":"Monthly views"}},"xAxis":{"title":{}},"lang":{"noData":"No Data available for the Query"},"exporting":{"enabled":false},"plotOptions":{"series":{"dataLabels":{"enabled":false}}},"legend":{"enabled":false},"credits":{"href":null,"enabled":true,"text":"Created by OpenAIRE via HighCharts"}}}');
|
let encodedURL = encodeURIComponent('{"library":"HighCharts","chartDescription":{"queries":[{"name":"Monthly views","type":"line","query":{"name":"usagestats.views.monthly", "parameters":["' + this.piwik.openaireId + '"], "profile":"OpenAIRE All-inclusive" }}],"chart":{"backgroundColor":"#FFFFFFFF","borderColor":"#335cadff","borderRadius":0,"borderWidth":0,"plotBorderColor":"#ccccccff","plotBorderWidth":0},"title":{"text":""},"subtitle":{},"yAxis":{"title":{"text":"Monthly views"}},"xAxis":{"title":{}},"lang":{"noData":"No Data available for the Query"},"exporting":{"enabled":false},"plotOptions":{"series":{"dataLabels":{"enabled":false}}},"legend":{"enabled":false},"credits":{"href":null,"enabled":true,"text":"Created by OpenAIRE via HighCharts"}}}');
|
||||||
this.viewsUrl = this.sanitizer.bypassSecurityTrustResourceUrl(`${this.repoMetrics.diagramsBaseURL}chart?json=${encodedURL}`);
|
this.viewsUrl = this.sanitizer.bypassSecurityTrustResourceUrl(`${this.repoMetrics.diagramsBaseURL}chart?json=${encodedURL}`);
|
||||||
|
|
||||||
// this.viewsUrl = this.sanitizer.bypassSecurityTrustResourceUrl(
|
// this.viewsUrl = this.sanitizer.bypassSecurityTrustResourceUrl(
|
||||||
|
@ -112,7 +112,7 @@ export class MetricsShowComponent implements OnInit {
|
||||||
|
|
||||||
getDownloadsUrl () {
|
getDownloadsUrl () {
|
||||||
|
|
||||||
const encodedURL = encodeURIComponent('{"library":"HighCharts","chartDescription":{"queries":[{"name":"Monthly downloads","type":"line","query":{"name":"usagestats.downloads.monthly", "parameters":["' + this.piwik.openaireId + '"], "profile":"OpenAIRE All-inclusive" }}],"chart":{"backgroundColor":"#FFFFFFFF","borderColor":"#335cadff","borderRadius":0,"borderWidth":0,"plotBorderColor":"#ccccccff","plotBorderWidth":0},"title":{"text":""},"subtitle":{},"yAxis":{"title":{"text":"Monthly downloads"}},"xAxis":{"title":{}},"lang":{"noData":"No Data available for the Query"},"exporting":{"enabled":false},"plotOptions":{"series":{"dataLabels":{"enabled":false}}},"legend":{"enabled":false},"credits":{"href":null,"enabled":true,"text":"Created by OpenAIRE via HighCharts"}}}');
|
let encodedURL = encodeURIComponent('{"library":"HighCharts","chartDescription":{"queries":[{"name":"Monthly downloads","type":"line","query":{"name":"usagestats.downloads.monthly", "parameters":["' + this.piwik.openaireId + '"], "profile":"OpenAIRE All-inclusive" }}],"chart":{"backgroundColor":"#FFFFFFFF","borderColor":"#335cadff","borderRadius":0,"borderWidth":0,"plotBorderColor":"#ccccccff","plotBorderWidth":0},"title":{"text":""},"subtitle":{},"yAxis":{"title":{"text":"Monthly views"}},"xAxis":{"title":{}},"lang":{"noData":"No Data available for the Query"},"exporting":{"enabled":false},"plotOptions":{"series":{"dataLabels":{"enabled":false}}},"legend":{"enabled":false},"credits":{"href":null,"enabled":true,"text":"Created by OpenAIRE via HighCharts"}}}');
|
||||||
this.downloadsUrl = this.sanitizer.bypassSecurityTrustResourceUrl(`${this.repoMetrics.diagramsBaseURL}chart?json=${encodedURL}`);
|
this.downloadsUrl = this.sanitizer.bypassSecurityTrustResourceUrl(`${this.repoMetrics.diagramsBaseURL}chart?json=${encodedURL}`);
|
||||||
|
|
||||||
// this.downloadsUrl = this.sanitizer.bypassSecurityTrustResourceUrl(
|
// this.downloadsUrl = this.sanitizer.bypassSecurityTrustResourceUrl(
|
||||||
|
|
|
@ -14,176 +14,7 @@
|
||||||
</aside-help-content>
|
</aside-help-content>
|
||||||
|
|
||||||
<!-- MIDDLE -->
|
<!-- MIDDLE -->
|
||||||
<div *ngIf="release === '5'; else elseBlock" class="uk-width-expand@m">
|
<div class=" uk-width-expand@m">
|
||||||
<div *ngIf="errorMessage" class="uk-alert uk-alert-warning">{{errorMessage}}</div>
|
|
||||||
<div *ngIf="loadingMessage" class="loading-big">
|
|
||||||
<div class="loader-big" style="text-align: center; padding-top: 170px; color: rgb(47, 64, 80); font-weight: bold;">
|
|
||||||
{{ loadingMessage }}
|
|
||||||
</div>
|
|
||||||
<div class="transparentFilm"></div>
|
|
||||||
</div>
|
|
||||||
<div *ngIf="compressed; else notCompressed" class="uk-margin-top">
|
|
||||||
<a [href]=r5report?.Data target="_blank" class="uk-button uk-button-primary">
|
|
||||||
<span class=""><i class="fas fa-download"></i></span> Download report
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<ng-template #notCompressed>
|
|
||||||
<div *ngIf="r5report?.[reportItems]?.length === 0" class="uk-alert uk-alert-warning">
|
|
||||||
Service did not find any data
|
|
||||||
</div>
|
|
||||||
<div *ngIf="r5report?.[reportItems]?.length > 0" class="md-card">
|
|
||||||
<div class="md-card-content large-padding">
|
|
||||||
|
|
||||||
<div class="uk-margin-bottom" data-uk-margin="">
|
|
||||||
|
|
||||||
<div class="uk-grid">
|
|
||||||
<div class="uk-width-4-5@m">
|
|
||||||
<h3>{{ r5report?.Report_Header?.Report_Name }} Results</h3>
|
|
||||||
</div>
|
|
||||||
<!-- <div class="uk-width-1-5@m">-->
|
|
||||||
<!-- <div [formGroup]="pageSizeSelect" class="md-input-wrapper md-input-filled">-->
|
|
||||||
<!-- <label class="">Results per page</label>-->
|
|
||||||
<!-- <select class="md-input" formControlName="selectPageSize" (change)="getPageSize()">-->
|
|
||||||
<!-- <option value="10" selected>10</option>-->
|
|
||||||
<!-- <option value="25">25</option>-->
|
|
||||||
<!-- <option value="50">50</option>-->
|
|
||||||
<!-- <option value="100">100</option>-->
|
|
||||||
<!-- </select>-->
|
|
||||||
<!-- <span class="md-input-bar"></span>-->
|
|
||||||
<!-- </div>-->
|
|
||||||
<!-- </div>-->
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
|
|
||||||
<div class="uk-grid uk-grid-divider" data-uk-grid-margin="">
|
|
||||||
|
|
||||||
<div class="uk-width-3-4@m uk-row-first">
|
|
||||||
|
|
||||||
<!-- RESULTS TABLE -->
|
|
||||||
<div class="uk-overflow-container">
|
|
||||||
<table class="uk-table table_check" style="overflow-wrap: anywhere;">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<ng-container *ngIf="chosenReport === 'DSR'; else notDSR">
|
|
||||||
<th>Dataset Title</th>
|
|
||||||
<th>Publisher</th>
|
|
||||||
<th>YOP</th>
|
|
||||||
<th>Access Method</th>
|
|
||||||
</ng-container>
|
|
||||||
|
|
||||||
<ng-template #notDSR>
|
|
||||||
<th>Platform</th>
|
|
||||||
<th *ngIf="chosenReport === 'PR'">Data type</th>
|
|
||||||
<th>Access method</th>
|
|
||||||
</ng-template>
|
|
||||||
|
|
||||||
<th *ngIf="granularity === 'Monthly'">Count</th>
|
|
||||||
<ng-container *ngIf="granularity === 'Totals'">
|
|
||||||
<th *ngFor="let Instance of r5report[reportItems][0].Performance[0].Instance">
|
|
||||||
{{Instance.MetricType}}
|
|
||||||
</th>
|
|
||||||
</ng-container>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<ng-container *ngFor="let item of r5report[reportItems]; let i=index">
|
|
||||||
<tr>
|
|
||||||
<ng-container *ngIf="chosenReport === 'DSR'; else notDsrRow">
|
|
||||||
<td class="uk-width-1-3">{{item.Dataset_Title}}</td>
|
|
||||||
<td>{{item.Publisher}}</td>
|
|
||||||
<td>{{item.YOP}}</td>
|
|
||||||
<td>{{item.Access_Method}}</td>
|
|
||||||
</ng-container>
|
|
||||||
<ng-template #notDsrRow>
|
|
||||||
<td>{{item.Platform}}</td>
|
|
||||||
<td *ngIf="chosenReport === 'PR'">{{item.Data_Type}}</td>
|
|
||||||
<td>{{item.Access_Method}}</td>
|
|
||||||
</ng-template>
|
|
||||||
<ng-container *ngIf="granularity === 'Totals'">
|
|
||||||
<td *ngFor="let instance of item.Performance[0].Instance">
|
|
||||||
{{instance.Count}}
|
|
||||||
</td>
|
|
||||||
</ng-container>
|
|
||||||
<td class="uk-text-center" *ngIf="granularity === 'Monthly'">
|
|
||||||
<a *ngIf="item?.Performance?.length > 0" (click)="displayItemPerformance(i)">
|
|
||||||
{{ (selectedItemIndex === i) ? 'Hide' : 'See' }} results
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr *ngIf="(selectedItemIndex === i)">
|
|
||||||
<td colspan="6">
|
|
||||||
<div class="uk-animation-slide-top-medium uk-margin-small-top">
|
|
||||||
<table class="uk-table uk-table-middle uk-table-striped innerTable uk-margin-small-top uk-margin-small-bottom">
|
|
||||||
<tr>
|
|
||||||
<th>Month</th>
|
|
||||||
<th *ngFor="let instance of item.Performance[0].Instance">{{instance.MetricType}}</th>
|
|
||||||
</tr>
|
|
||||||
<tr *ngFor="let month of item.Performance">
|
|
||||||
<td>{{ month.Period.Begin_Date | date: "MMM yyyy" }}</td>
|
|
||||||
<td *ngFor="let instance of month.Instance">{{ instance.Count }}</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</ng-container>
|
|
||||||
</tbody>
|
|
||||||
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="uk-width-1-4@m">
|
|
||||||
|
|
||||||
<div class="uk-margin-medium-bottom">
|
|
||||||
<!-- <p>-->
|
|
||||||
<!-- Number of results:-->
|
|
||||||
<!-- <span class="uk-badge uk-badge-success uk-text-upper uk-margin-small-left">{{ repoResponse.ReportDefinition.Filters.ReportAttribute[1].Value }}</span>-->
|
|
||||||
<!-- </p>-->
|
|
||||||
<p>
|
|
||||||
Filters:
|
|
||||||
<span *ngFor="let filter of r5report.Report_Header.Report_Filters; let i = index" class="uk-badge uk-badge-outline uk-text-upper uk-margin-small-left">
|
|
||||||
{{ filter.Name }}: {{ filter.Value }}
|
|
||||||
</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<h2 class="heading_c uk-margin-small-bottom">Details</h2>
|
|
||||||
<ul class="md-list md-list-addon">
|
|
||||||
<li>
|
|
||||||
<div class="md-list-addon-element">
|
|
||||||
<i class="md-list-addon-icon material-icons"></i>
|
|
||||||
</div>
|
|
||||||
<div class="md-list-content">
|
|
||||||
<span class="md-list-heading">{{ r5report.Report_Header.Created | date: "yyyy-MM-dd HH:mm:ss" }}</span>
|
|
||||||
<span class="uk-text-small uk-text-muted">Date run</span>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<!-- <li>-->
|
|
||||||
<!-- <div class="md-list-addon-element">-->
|
|
||||||
<!-- <i class="md-list-addon-icon material-icons"></i>-->
|
|
||||||
<!-- </div>-->
|
|
||||||
<!-- <div class="md-list-content">-->
|
|
||||||
<!-- <span class="md-list-heading">{{ coveredPeriod }}</span>-->
|
|
||||||
<!-- <span class="uk-text-small uk-text-muted">Period covered</span>-->
|
|
||||||
<!-- </div>-->
|
|
||||||
<!-- </li>-->
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</ng-template>
|
|
||||||
|
|
||||||
<!-- <pre>{{r5report | json}}</pre>-->
|
|
||||||
</div>
|
|
||||||
<ng-template #elseBlock>
|
|
||||||
<div class="uk-width-expand@m">
|
|
||||||
|
|
||||||
<div *ngIf="errorMessage" class="uk-alert uk-alert-warning">{{errorMessage}}</div>
|
<div *ngIf="errorMessage" class="uk-alert uk-alert-warning">{{errorMessage}}</div>
|
||||||
<div *ngIf="loadingMessage" class="loading-big">
|
<div *ngIf="loadingMessage" class="loading-big">
|
||||||
|
@ -202,10 +33,10 @@
|
||||||
<div class="uk-width-4-5@m">
|
<div class="uk-width-4-5@m">
|
||||||
<h3>{{ repoResponse.ReportDefinition['@Name'] }} Report Results
|
<h3>{{ repoResponse.ReportDefinition['@Name'] }} Report Results
|
||||||
<!--<span *ngIf="repoResponse.Report &&-->
|
<!--<span *ngIf="repoResponse.Report &&-->
|
||||||
<!--repoResponse.Report.Report &&-->
|
<!--repoResponse.Report.Report &&-->
|
||||||
<!--repoResponse.Report.Report.Customer &&-->
|
<!--repoResponse.Report.Report.Customer &&-->
|
||||||
<!--repoResponse.Report.Report.Customer.ReportItems &&-->
|
<!--repoResponse.Report.Report.Customer.ReportItems &&-->
|
||||||
<!--repoResponse.Report.Report.Customer.ReportItems.length > 0">for {{ repoResponse.Report.Report.Customer.ReportItems[0].ItemPlatform }}</span>-->
|
<!--repoResponse.Report.Report.Customer.ReportItems.length > 0">for {{ repoResponse.Report.Report.Customer.ReportItems[0].ItemPlatform }}</span>-->
|
||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="uk-width-1-5@m">
|
<div class="uk-width-1-5@m">
|
||||||
|
@ -306,6 +137,75 @@
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!--<div>-->
|
||||||
|
<!--<div>-->
|
||||||
|
<!--<div class="uk-overflow-auto uk-scrollspy-inview uk-animation-slide-top-medium uk-margin-top uk-margin-bottom">-->
|
||||||
|
|
||||||
|
<!--<table class="uk-table uk-table-middle uk-table-striped" style="vertical-align: top !important;">-->
|
||||||
|
<!--<thead>-->
|
||||||
|
<!--<tr>-->
|
||||||
|
<!--<th *ngIf="chosenReport !== 'RR1'">Title</th>-->
|
||||||
|
<!--<th *ngIf="chosenReport !== 'RR1'">Publisher</th>-->
|
||||||
|
<!--<th *ngIf="chosenReport === 'RR1'">Platform name</th>-->
|
||||||
|
<!--<th>{{ (chosenReport !== 'RR1') ? 'Item Urls' : 'Url' }}</th>-->
|
||||||
|
<!--<th>Type</th>-->
|
||||||
|
<!--<th colspan="2">Downloads/Views</th>-->
|
||||||
|
<!--</tr>-->
|
||||||
|
<!--</thead>-->
|
||||||
|
<!--<td colspan="6" *ngIf="infoMessage">{{ infoMessage }}</td>-->
|
||||||
|
<!--<tbody *ngFor="let item of repoResponse.Report.Report.Customer.ReportItems; let item_i = index"-->
|
||||||
|
<!--style="border-bottom: 1px solid whitesmoke;">-->
|
||||||
|
<!--<tr>-->
|
||||||
|
<!--<td *ngIf="chosenReport !== 'RR1'">{{ item.ItemName }}</td>-->
|
||||||
|
<!--<td *ngIf="chosenReport !== 'RR1'">{{ item.ItemPublisher }}</td>-->
|
||||||
|
<!--<td *ngIf="chosenReport === 'RR1'">{{ item.ItemPlatform }}</td>-->
|
||||||
|
<!--<td style="min-width: 300px;">-->
|
||||||
|
<!--<span *ngFor="let url of transformItem(item.ItemIdentifier); let i = index">-->
|
||||||
|
<!--<br *ngIf="i>0">{{ url }}-->
|
||||||
|
<!--</span>-->
|
||||||
|
<!--</td>-->
|
||||||
|
<!--<td>{{ item.ItemDataType }}</td>-->
|
||||||
|
<!--<td class="uk-text-center"-->
|
||||||
|
<!--*ngIf="repoResponse.ReportDefinition.Filters.ReportAttribute[0].Value === 'Monthly'" colspan="2">-->
|
||||||
|
<!--<a *ngIf="item.ItemPerformance && (item.ItemPerformance.length > 0)"-->
|
||||||
|
<!--(click)="displayItemPerformance(item_i)">{{ (selectedItemIndex === item_i) ? 'Hide' : 'See' }} results</a>-->
|
||||||
|
<!--</td>-->
|
||||||
|
<!--<td class="uk-text-center"-->
|
||||||
|
<!--*ngIf="repoResponse.ReportDefinition.Filters.ReportAttribute[0].Value === 'Totals'">-->
|
||||||
|
<!--{{ item.ItemPerformance[0].Instance[0].Count }}-->
|
||||||
|
<!--</td>-->
|
||||||
|
<!--<td class="uk-text-center"-->
|
||||||
|
<!--*ngIf="repoResponse.ReportDefinition.Filters.ReportAttribute[0].Value === 'Totals'">-->
|
||||||
|
<!--{{ item.ItemPerformance[0].Instance[1].Count }}-->
|
||||||
|
<!--</td>-->
|
||||||
|
<!--</tr>-->
|
||||||
|
<!--<tr *ngIf="(selectedItemIndex === item_i)">-->
|
||||||
|
<!--<td colspan="6">-->
|
||||||
|
<!--<div class="uk-animation-slide-top-medium uk-margin-small-top">-->
|
||||||
|
<!--<table class="uk-table uk-table-middle uk-table-striped innerTable">-->
|
||||||
|
<!--<tr>-->
|
||||||
|
<!--<th>Month</th>-->
|
||||||
|
<!--<th>Downloads</th>-->
|
||||||
|
<!--<th>Views</th>-->
|
||||||
|
<!--</tr>-->
|
||||||
|
<!--<tr *ngFor="let month of item.ItemPerformance">-->
|
||||||
|
<!--<td>{{ month.Period.Begin | date: "MMM yyyy" }}</td>-->
|
||||||
|
<!--<td>{{ month.Instance[0].Count }}</td>-->
|
||||||
|
<!--<td>{{ month.Instance[1].Count }}</td>-->
|
||||||
|
<!--</tr>-->
|
||||||
|
<!--</table>-->
|
||||||
|
<!--</div>-->
|
||||||
|
<!--</td>-->
|
||||||
|
<!--</tr>-->
|
||||||
|
<!--</tbody>-->
|
||||||
|
<!--</table>-->
|
||||||
|
|
||||||
|
<!--</div>-->
|
||||||
|
<!--</div>-->
|
||||||
|
<!--</div>-->
|
||||||
|
|
||||||
<!-- BOTTOM PAGINATION LINKS -->
|
<!-- BOTTOM PAGINATION LINKS -->
|
||||||
<ul class="uk-pagination uk-margin-medium-top">
|
<ul class="uk-pagination uk-margin-medium-top">
|
||||||
<li class="uk-pagination-previous"><a (click)="goToPreviousPage()"><i class="uk-icon-angle-left"></i><span class="uk-margin-left">Previous</span></a></li>
|
<li class="uk-pagination-previous"><a (click)="goToPreviousPage()"><i class="uk-icon-angle-left"></i><span class="uk-margin-left">Previous</span></a></li>
|
||||||
|
@ -533,7 +433,6 @@
|
||||||
<!--</div>-->
|
<!--</div>-->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</ng-template>
|
|
||||||
|
|
||||||
<!-- RIGHT HELP CONTENT -->
|
<!-- RIGHT HELP CONTENT -->
|
||||||
<aside-help-content #rightHelperContent [position]="'right'"
|
<aside-help-content #rightHelperContent [position]="'right'"
|
||||||
|
|
|
@ -4,7 +4,6 @@ import { AuthenticationService } from '../../../services/authentication.service'
|
||||||
import { UsagestatsService } from '../../../services/usagestats.service';
|
import { UsagestatsService } from '../../../services/usagestats.service';
|
||||||
import { ReportResponse } from '../../../domain/usageStatsClasses';
|
import { ReportResponse } from '../../../domain/usageStatsClasses';
|
||||||
import { FormBuilder, FormGroup } from '@angular/forms';
|
import { FormBuilder, FormGroup } from '@angular/forms';
|
||||||
import {COUNTER_Dataset_Report, COUNTER_Item_Report, SUSHI_Error_Model} from '../../../domain/sushilite';
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'metrics-usagestats-report-results',
|
selector: 'metrics-usagestats-report-results',
|
||||||
|
@ -16,11 +15,6 @@ export class MetricsUsagestatsReportResultsComponent implements OnInit {
|
||||||
loadingMessage: string;
|
loadingMessage: string;
|
||||||
errorMessage: string;
|
errorMessage: string;
|
||||||
infoMessage: string;
|
infoMessage: string;
|
||||||
release: string;
|
|
||||||
granularity: string;
|
|
||||||
r5report: COUNTER_Dataset_Report | COUNTER_Item_Report | SUSHI_Error_Model = null;
|
|
||||||
reportItems: string;
|
|
||||||
compressed: boolean = null;
|
|
||||||
|
|
||||||
repoResponse: ReportResponse;
|
repoResponse: ReportResponse;
|
||||||
coveredPeriod: string;
|
coveredPeriod: string;
|
||||||
|
@ -43,11 +37,11 @@ export class MetricsUsagestatsReportResultsComponent implements OnInit {
|
||||||
this.pageSize = 10;
|
this.pageSize = 10;
|
||||||
this.readParams();
|
this.readParams();
|
||||||
this.pageSizeSelect = this.fb.group({selectPageSize: ['']});
|
this.pageSizeSelect = this.fb.group({selectPageSize: ['']});
|
||||||
const body = document.getElementsByTagName('body')[0];
|
let body = document.getElementsByTagName('body')[0];
|
||||||
body.classList.remove('top_bar_active'); // remove the class
|
body.classList.remove("top_bar_active"); //remove the class
|
||||||
body.classList.remove('page_heading_active');
|
body.classList.remove("page_heading_active");
|
||||||
body.classList.remove('landing');
|
body.classList.remove("landing");
|
||||||
body.classList.add('dashboard');
|
body.classList.add("dashboard");
|
||||||
}
|
}
|
||||||
|
|
||||||
readParams() {
|
readParams() {
|
||||||
|
@ -55,33 +49,14 @@ export class MetricsUsagestatsReportResultsComponent implements OnInit {
|
||||||
|
|
||||||
this.route.queryParams.subscribe( qparams => {
|
this.route.queryParams.subscribe( qparams => {
|
||||||
this.params.append('Report', qparams['report']);
|
this.params.append('Report', qparams['report']);
|
||||||
this.params.append('Release', qparams['release']);
|
this.params.append('Release', '4');
|
||||||
this.release = qparams['release'];
|
|
||||||
this.params.append('RequestorID', this.authService.getUserEmail());
|
this.params.append('RequestorID', this.authService.getUserEmail());
|
||||||
if (qparams['beginDate'])
|
this.params.append('BeginDate', qparams['beginDate']);
|
||||||
this.params.append('BeginDate', qparams['beginDate']);
|
this.params.append('EndDate', qparams['endDate']);
|
||||||
if (qparams['endDate'])
|
|
||||||
this.params.append('EndDate', qparams['endDate']);
|
|
||||||
this.params.append('RepositoryIdentifier', qparams['repoId']);
|
this.params.append('RepositoryIdentifier', qparams['repoId']);
|
||||||
if (qparams['itemIdentifier'])
|
this.params.append('ItemIdentifier', qparams['itemIdentifier']);
|
||||||
this.params.append('ItemIdentifier', qparams['itemIdentifier']);
|
this.params.append('ItemDataType', qparams['itemIdentifier']);
|
||||||
if (qparams['datasetIdentifier'])
|
|
||||||
this.params.append('DatasetIdentifier', qparams['datasetIdentifier']);
|
|
||||||
if (qparams['dataType'])
|
|
||||||
this.params.append('DataType', qparams['dataType']);
|
|
||||||
this.params.append('Granularity', qparams['granularity']);
|
this.params.append('Granularity', qparams['granularity']);
|
||||||
this.granularity = qparams['granularity'];
|
|
||||||
// this.params.append('MetricType', qparams['metricTypes']);
|
|
||||||
if (qparams['report'] !== 'PR_P1') {
|
|
||||||
if (qparams['totalItemRequests'])
|
|
||||||
this.params.append('MetricType', qparams['totalItemRequests']);
|
|
||||||
if (qparams['totalItemInvestigations'])
|
|
||||||
this.params.append('MetricType', qparams['totalItemInvestigations']);
|
|
||||||
if (qparams['uniqueItemRequests'])
|
|
||||||
this.params.append('MetricType', qparams['uniqueItemRequests']);
|
|
||||||
if (qparams['uniqueItemInvestigations'])
|
|
||||||
this.params.append('MetricType', qparams['uniqueItemInvestigations']);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
this.chosenReport = this.params.get('Report');
|
this.chosenReport = this.params.get('Report');
|
||||||
|
@ -95,70 +70,48 @@ export class MetricsUsagestatsReportResultsComponent implements OnInit {
|
||||||
this.selectedItemIndex = null;
|
this.selectedItemIndex = null;
|
||||||
this.repoResponse = null;
|
this.repoResponse = null;
|
||||||
|
|
||||||
if (this.release === '5') {
|
this.usageService.getReportResponse(this.page.toString(), this.pageSize.toString(), this.params).subscribe(
|
||||||
this.usageService.getR5Response(this.params).subscribe(
|
responseWrapper => {
|
||||||
res => {
|
this.repoResponse = responseWrapper.ReportResponse;
|
||||||
this.r5report = res;
|
},
|
||||||
this.reportItems = 'Report_Items';
|
error => {
|
||||||
if (this.chosenReport === 'DSR') {
|
this.errorMessage = 'Failed to load the report results!';
|
||||||
this.reportItems = 'Report_Datasets';
|
this.loadingMessage = '';
|
||||||
}
|
},
|
||||||
if (this.r5report?.['Code'] === '100000') {
|
() => {
|
||||||
this.compressed = true;
|
this.errorMessage = '';
|
||||||
}
|
this.loadingMessage = '';
|
||||||
}, error => {
|
|
||||||
this.errorMessage = 'Failed to load the report results!';
|
this.pageSizeSelect.get('selectPageSize').setValue(this.pageSize);
|
||||||
this.loadingMessage = '';
|
this.pageSizeSelect.get('selectPageSize').updateValueAndValidity();
|
||||||
},
|
|
||||||
() => {
|
this.totalPages = Math.ceil(
|
||||||
this.errorMessage = '';
|
+this.repoResponse.ReportDefinition.Filters
|
||||||
this.loadingMessage = '';
|
.ReportAttribute.filter(x => x['Name'] === 'ReportItemCount')[0].Value / this.pageSize);
|
||||||
|
if ( this.totalPages === 0 ) {
|
||||||
|
this.infoMessage = 'No results were found';
|
||||||
}
|
}
|
||||||
);
|
|
||||||
} else {
|
|
||||||
this.usageService.getReportResponse(this.page.toString(), this.pageSize.toString(), this.params).subscribe(
|
|
||||||
responseWrapper => {
|
|
||||||
this.repoResponse = responseWrapper.ReportResponse;
|
|
||||||
},
|
|
||||||
error => {
|
|
||||||
this.errorMessage = 'Failed to load the report results!';
|
|
||||||
this.loadingMessage = '';
|
|
||||||
},
|
|
||||||
() => {
|
|
||||||
this.errorMessage = '';
|
|
||||||
this.loadingMessage = '';
|
|
||||||
|
|
||||||
this.pageSizeSelect.get('selectPageSize').setValue(this.pageSize);
|
if (this.repoResponse.ReportDefinition && this.repoResponse.ReportDefinition.Filters &&
|
||||||
this.pageSizeSelect.get('selectPageSize').updateValueAndValidity();
|
|
||||||
|
|
||||||
this.totalPages = Math.ceil(
|
|
||||||
+this.repoResponse.ReportDefinition.Filters
|
|
||||||
.ReportAttribute.filter(x => x['Name'] === 'ReportItemCount')[0].Value / this.pageSize);
|
|
||||||
if ( this.totalPages === 0 ) {
|
|
||||||
this.infoMessage = 'No results were found';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.repoResponse.ReportDefinition && this.repoResponse.ReportDefinition.Filters &&
|
|
||||||
this.repoResponse.ReportDefinition.Filters.ReportAttribute) {
|
this.repoResponse.ReportDefinition.Filters.ReportAttribute) {
|
||||||
|
|
||||||
if (this.repoResponse.Report && this.repoResponse.ReportDefinition.Filters.UsageDateRange &&
|
if (this.repoResponse.Report && this.repoResponse.ReportDefinition.Filters.UsageDateRange &&
|
||||||
this.repoResponse.ReportDefinition.Filters.UsageDateRange.Begin &&
|
this.repoResponse.ReportDefinition.Filters.UsageDateRange.Begin &&
|
||||||
this.repoResponse.ReportDefinition.Filters.UsageDateRange.End) {
|
this.repoResponse.ReportDefinition.Filters.UsageDateRange.End) {
|
||||||
this.coveredPeriod = this.repoResponse.ReportDefinition.Filters.UsageDateRange.Begin + ' to ';
|
this.coveredPeriod = this.repoResponse.ReportDefinition.Filters.UsageDateRange.Begin + ' to ';
|
||||||
this.coveredPeriod = this.coveredPeriod + this.repoResponse.ReportDefinition.Filters.UsageDateRange.End;
|
this.coveredPeriod = this.coveredPeriod + this.repoResponse.ReportDefinition.Filters.UsageDateRange.End;
|
||||||
} else {
|
|
||||||
const defaultDatePeriod = this.repoResponse.Exception.filter(x => x['Message'] === 'Unspecified Date Arguments');
|
|
||||||
|
|
||||||
this.coveredPeriod = defaultDatePeriod[0].Data.split(':')[1].trim() + ' to ';
|
|
||||||
this.coveredPeriod = this.coveredPeriod + defaultDatePeriod[1].Data.split(':')[1].trim() + ' (default)';
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
this.repoResponse = null;
|
const defaultDatePeriod = this.repoResponse.Exception.filter(x => x['Message'] === 'Unspecified Date Arguments');
|
||||||
|
|
||||||
|
this.coveredPeriod = defaultDatePeriod[0].Data.split(':')[1].trim() + ' to ';
|
||||||
|
this.coveredPeriod = this.coveredPeriod + defaultDatePeriod[1].Data.split(':')[1].trim() + ' (default)';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
this.repoResponse = null;
|
||||||
}
|
}
|
||||||
);
|
}
|
||||||
}
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
|
|
||||||
<div class="md-input-wrapper md-input-filled uk-margin-bottom">
|
<div class="md-input-wrapper md-input-filled uk-margin-bottom">
|
||||||
<label>Release</label>
|
<label>Release</label>
|
||||||
<input class="md-input label-fixed" type="text" value="{{release}}" disabled>
|
<input class="md-input label-fixed" type="text" value="4" disabled>
|
||||||
<span class="md-input-bar "></span>
|
<span class="md-input-bar "></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -112,77 +112,17 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div *ngIf="chosen_report != 'JR1' && chosen_report != 'RR1' && chosen_report != 'PR'
|
<div *ngIf="chosen_report != 'JR1' && chosen_report != 'RR1'" class="">
|
||||||
&& chosen_report != 'PR_P1' && chosen_report != 'DSR'">
|
|
||||||
<div class="md-input-wrapper md-input-filled uk-margin-bottom">
|
<div class="md-input-wrapper md-input-filled uk-margin-bottom">
|
||||||
<label>Item Identifier</label>
|
<label>Item Identifier</label>
|
||||||
<input class="md-input label-fixed" name="ItemIdentifier" placeholder="e.g. doi:10.xyz/12345"
|
<input class="md-input label-fixed" name="ItemIdentifier" placeholder="e.g. openaire:od_________::fb90de6f20d79783d05749d8f60417d5"
|
||||||
type="text" (blur)="updateItemIdentifier($event)">
|
type="text" (blur)="updateItemIdentifier($event)">
|
||||||
<span class="md-input-bar "></span>
|
<span class="md-input-bar "></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div *ngIf="chosen_report == 'DSR'">
|
<div *ngIf="chosen_report == 'IR1' || chosen_report == 'RR1' || chosen_report == 'JR1'">
|
||||||
<div class="md-input-wrapper md-input-filled uk-margin-bottom">
|
|
||||||
<label>Dataset Identifier</label>
|
|
||||||
<input class="md-input label-fixed" name="DatasetIdentifier" placeholder="e.g. doi:10.xyz/12345"
|
|
||||||
type="text" (blur)="updateDatasetIdentifier($event)">
|
|
||||||
<span class="md-input-bar "></span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div *ngIf="chosen_report == 'PR' || chosen_report == 'IR'">
|
|
||||||
<h5>Metric Type</h5>
|
|
||||||
<div>
|
|
||||||
<label>
|
|
||||||
<input type="checkbox" class="uk-checkbox" value="Total_Item_Requests" checked (change)="updateTotalItemRequests($event)"> Total Item Requests
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<label>
|
|
||||||
<input type="checkbox" class="uk-checkbox" value="Total_Item_Investigations" checked (change)="updateTotalItemInvestigations($event)"> Total Item Investigations
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<label>
|
|
||||||
<input type="checkbox" class="uk-checkbox" value="Unique_Item_Requests" checked (change)="updateUniqueItemRequests($event)"> Unique Item Requests
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<label>
|
|
||||||
<input type="checkbox" class="uk-checkbox" value="Unique_Item_Investigations" checked (change)="updateUniqueItemInvestigations($event)"> Unique Item Investigations
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div *ngIf="chosen_report == 'DSR'">
|
|
||||||
<h5>Metric Type</h5>
|
|
||||||
<div>
|
|
||||||
<label>
|
|
||||||
<input type="checkbox" class="uk-checkbox" value="Total_Dataset_Requests" checked (change)="updateTotalItemRequests($event)"> Total Dataset Requests
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<label>
|
|
||||||
<input type="checkbox" class="uk-checkbox" value="Total_Dataset_Investigations" checked (change)="updateTotalItemInvestigations($event)"> Total Dataset Investigations
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<label>
|
|
||||||
<input type="checkbox" class="uk-checkbox" value="Unique_Dataset_Requests" checked (change)="updateUniqueItemRequests($event)"> Unique Dataset Requests
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<label>
|
|
||||||
<input type="checkbox" class="uk-checkbox" value="Unique_Dataset_Investigations" checked (change)="updateUniqueItemInvestigations($event)"> Unique Dataset Investigations
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div *ngIf="chosen_report == 'IR1' || chosen_report == 'RR1' || chosen_report == 'JR1'
|
|
||||||
|| chosen_report == 'PR' || chosen_report == 'IR'">
|
|
||||||
|
|
||||||
<div class="uk-text-italic uk-margin-top uk-margin-bottom">
|
<div class="uk-text-italic uk-margin-top uk-margin-bottom">
|
||||||
<p>Optional filter to only show results for a single item type, e.g. article, book, etc.</p>
|
<p>Optional filter to only show results for a single item type, e.g. article, book, etc.</p>
|
||||||
|
@ -190,7 +130,7 @@
|
||||||
|
|
||||||
<div class="md-input-wrapper md-input-filled">
|
<div class="md-input-wrapper md-input-filled">
|
||||||
<label class="">Item Data Type</label>
|
<label class="">Item Data Type</label>
|
||||||
<select class="md-input label-fixed" name="ItemDataType" (change)="updateItemDataType($event)">
|
<select class="md-input" name="ItemDataType" (change)="updateItemDataType($event)">
|
||||||
<!-- TODO: get the list from api if it becomes available -->
|
<!-- TODO: get the list from api if it becomes available -->
|
||||||
<option value="">--- Select Item Data Type ---</option>
|
<option value="">--- Select Item Data Type ---</option>
|
||||||
<option value="Annotation">Annotation</option>
|
<option value="Annotation">Annotation</option>
|
||||||
|
|
|
@ -4,7 +4,7 @@ import { ActivatedRoute, Router } from '@angular/router';
|
||||||
import { RepositoryService } from '../../../services/repository.service';
|
import { RepositoryService } from '../../../services/repository.service';
|
||||||
import { AuthenticationService } from '../../../services/authentication.service';
|
import { AuthenticationService } from '../../../services/authentication.service';
|
||||||
import { loadingRepoMessage } from '../../../domain/shared-messages';
|
import { loadingRepoMessage } from '../../../domain/shared-messages';
|
||||||
import { SharedService } from '../../../services/shared.service';
|
import { SharedService } from "../../../services/shared.service";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'metrics-usagestats-report',
|
selector: 'metrics-usagestats-report',
|
||||||
|
@ -26,16 +26,10 @@ export class MetricsUsagestatsReportComponent implements OnInit {
|
||||||
chosen_report: string;
|
chosen_report: string;
|
||||||
|
|
||||||
userEmail: string;
|
userEmail: string;
|
||||||
release: string;
|
|
||||||
beginDate = '';
|
beginDate = '';
|
||||||
endDate = '';
|
endDate = '';
|
||||||
itemIdentifier = '';
|
itemIdentifier = '';
|
||||||
datasetIdentifier = '';
|
itemDataType = '';
|
||||||
totalItemRequests = '';
|
|
||||||
totalItemInvestigations = '';
|
|
||||||
uniqueItemRequests = '';
|
|
||||||
uniqueItemInvestigations = '';
|
|
||||||
dataType = '';
|
|
||||||
granularity = 'Monthly';
|
granularity = 'Monthly';
|
||||||
|
|
||||||
constructor(private repoService: RepositoryService,
|
constructor(private repoService: RepositoryService,
|
||||||
|
@ -46,7 +40,7 @@ export class MetricsUsagestatsReportComponent implements OnInit {
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
|
||||||
if (this.sharedService.getRepository()) {
|
if(this.sharedService.getRepository()) {
|
||||||
this.repo = this.sharedService.getRepository();
|
this.repo = this.sharedService.getRepository();
|
||||||
this.getInfo();
|
this.getInfo();
|
||||||
}
|
}
|
||||||
|
@ -58,11 +52,11 @@ export class MetricsUsagestatsReportComponent implements OnInit {
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
const body = document.getElementsByTagName('body')[0];
|
let body = document.getElementsByTagName('body')[0];
|
||||||
body.classList.remove('top_bar_active'); // remove the class
|
body.classList.remove("top_bar_active"); //remove the class
|
||||||
body.classList.remove('page_heading_active');
|
body.classList.remove("page_heading_active");
|
||||||
body.classList.remove('landing');
|
body.classList.remove("landing");
|
||||||
body.classList.add('dashboard');
|
body.classList.add("dashboard");
|
||||||
}
|
}
|
||||||
|
|
||||||
getInfo() {
|
getInfo() {
|
||||||
|
@ -74,26 +68,12 @@ export class MetricsUsagestatsReportComponent implements OnInit {
|
||||||
if (this.repo.issn && this.repo.issn !== 'null') {
|
if (this.repo.issn && this.repo.issn !== 'null') {
|
||||||
this.shownRepoId = this.repo.issn.slice(0, 4) + '-' + this.repo.issn.toString().slice(4);
|
this.shownRepoId = this.repo.issn.slice(0, 4) + '-' + this.repo.issn.toString().slice(4);
|
||||||
}
|
}
|
||||||
this.title = `${this.chosen_report} report for ${this.repo.officialname}`;
|
this.title = `${this.chosen_report} report for ${this.repo.officialName}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
getParams() {
|
getParams() {
|
||||||
// this.repoId = this.route.snapshot.paramMap.get('id');
|
// this.repoId = this.route.snapshot.paramMap.get('id');
|
||||||
this.release = this.route.snapshot.paramMap.get('reportType').slice(1, 2);
|
|
||||||
this.chosen_report = this.route.snapshot.paramMap.get('reportID');
|
this.chosen_report = this.route.snapshot.paramMap.get('reportID');
|
||||||
if (this.release === '5') {
|
|
||||||
if (this.chosen_report === 'DSR') {
|
|
||||||
this.totalItemRequests = 'Total_Dataset_Requests';
|
|
||||||
this.totalItemInvestigations = 'Total_Dataset_Investigations';
|
|
||||||
this.uniqueItemRequests = 'Unique_Dataset_Requests';
|
|
||||||
this.uniqueItemInvestigations = 'Unique_Dataset_Investigations';
|
|
||||||
} else {
|
|
||||||
this.totalItemRequests = 'Total_Item_Requests';
|
|
||||||
this.totalItemInvestigations = 'Total_Item_Investigations';
|
|
||||||
this.uniqueItemRequests = 'Unique_Item_Requests';
|
|
||||||
this.uniqueItemInvestigations = 'Unique_Item_Investigations';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.shownRepoId = this.convertToDisplayedFormat(this.repo.id);
|
this.shownRepoId = this.convertToDisplayedFormat(this.repo.id);
|
||||||
console.log(`shownRepoId is ${this.repo.id}`);
|
console.log(`shownRepoId is ${this.repo.id}`);
|
||||||
this.title = `${this.chosen_report} report`;
|
this.title = `${this.chosen_report} report`;
|
||||||
|
@ -142,17 +122,13 @@ export class MetricsUsagestatsReportComponent implements OnInit {
|
||||||
}
|
}
|
||||||
|
|
||||||
updateItemDataType(event: any) {
|
updateItemDataType(event: any) {
|
||||||
this.dataType = event.target.value;
|
this.itemDataType = event.target.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
updateItemIdentifier(event: any) {
|
updateItemIdentifier(event: any) {
|
||||||
this.itemIdentifier = event.target.value;
|
this.itemIdentifier = event.target.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
updateDatasetIdentifier(event: any) {
|
|
||||||
this.datasetIdentifier = event.target.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
updateGranularity(event: any) {
|
updateGranularity(event: any) {
|
||||||
this.granularity = event.target.value;
|
this.granularity = event.target.value;
|
||||||
}
|
}
|
||||||
|
@ -161,70 +137,18 @@ export class MetricsUsagestatsReportComponent implements OnInit {
|
||||||
this.useCurrentRepo = event.target.value;
|
this.useCurrentRepo = event.target.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
updateTotalItemRequests(event: any) {
|
|
||||||
if (event.target.checked) {
|
|
||||||
this.totalItemRequests = event.target.value;
|
|
||||||
} else {
|
|
||||||
this.totalItemRequests = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
updateUniqueItemRequests(event: any) {
|
|
||||||
if (event.target.checked) {
|
|
||||||
this.uniqueItemRequests = event.target.value;
|
|
||||||
} else {
|
|
||||||
this.uniqueItemRequests = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
updateTotalItemInvestigations(event: any) {
|
|
||||||
if (event.target.checked) {
|
|
||||||
this.totalItemInvestigations = event.target.value;
|
|
||||||
} else {
|
|
||||||
this.totalItemInvestigations = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
updateUniqueItemInvestigations(event: any) {
|
|
||||||
if (event.target.checked) {
|
|
||||||
this.uniqueItemInvestigations = event.target.value;
|
|
||||||
} else {
|
|
||||||
this.uniqueItemInvestigations = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
goToReport() {
|
goToReport() {
|
||||||
if (!this.useCurrentRepo) { this.shownRepoId = ''; }
|
if (!this.useCurrentRepo) { this.shownRepoId = ''; }
|
||||||
const metricTypes: string[] = [];
|
|
||||||
if (this.totalItemRequests !== null) {
|
|
||||||
metricTypes.push(this.totalItemRequests);
|
|
||||||
}
|
|
||||||
if (this.totalItemInvestigations !== null) {
|
|
||||||
metricTypes.push(this.totalItemRequests);
|
|
||||||
}
|
|
||||||
if (this.uniqueItemRequests !== null) {
|
|
||||||
metricTypes.push(this.uniqueItemRequests);
|
|
||||||
}
|
|
||||||
if (this.uniqueItemInvestigations !== null) {
|
|
||||||
metricTypes.push(this.uniqueItemInvestigations);
|
|
||||||
}
|
|
||||||
this.router.navigate(['usagestats-report-results'], {
|
this.router.navigate(['usagestats-report-results'], {
|
||||||
relativeTo: this.route.parent,
|
relativeTo: this.route.parent,
|
||||||
queryParams: {
|
queryParams: {
|
||||||
report: this.chosen_report,
|
report: this.chosen_report,
|
||||||
release: this.release,
|
|
||||||
beginDate: this.beginDate,
|
beginDate: this.beginDate,
|
||||||
endDate: this.endDate,
|
endDate: this.endDate,
|
||||||
repoId: this.shownRepoId,
|
repoId: this.shownRepoId,
|
||||||
dataType: this.dataType,
|
itemDataType: this.itemDataType,
|
||||||
itemIdentifier: this.itemIdentifier,
|
itemIdentifier: this.itemIdentifier,
|
||||||
datasetIdentifier: this.datasetIdentifier,
|
granularity: this.granularity
|
||||||
granularity: this.granularity,
|
|
||||||
// metricTypes: metricTypes,
|
|
||||||
totalItemRequests: this.totalItemRequests,
|
|
||||||
totalItemInvestigations: this.totalItemInvestigations,
|
|
||||||
uniqueItemRequests: this.uniqueItemRequests,
|
|
||||||
uniqueItemInvestigations: this.uniqueItemInvestigations
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -21,73 +21,10 @@
|
||||||
|
|
||||||
<h3>Supported Reports</h3>
|
<h3>Supported Reports</h3>
|
||||||
|
|
||||||
<h2>R5 Reports</h2>
|
|
||||||
|
|
||||||
<div class="uk-grid-match" uk-grid>
|
|
||||||
<div class="uk-width-1-3">
|
|
||||||
<div class="uk-text-center md-card md-card-hover">
|
|
||||||
<a [routerLink]="['R5','PR']" class="uk-position-cover"></a>
|
|
||||||
<div class="uk-card-media-top " style="background-color: #001a6e">
|
|
||||||
<h1 class="uk-padding-large font-weight-bolder md-color-white">PR</h1>
|
|
||||||
</div>
|
|
||||||
<div class="uk-card-body uk-padding-small">
|
|
||||||
<h3 class="uk-card-title uk-margin-small-bottom">
|
|
||||||
A report summarizing usage activity for the repository by month, metric type and item type
|
|
||||||
</h3>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="uk-width-1-3">
|
|
||||||
<div class="uk-text-center md-card md-card-hover">
|
|
||||||
<a [routerLink]="['R5','PR_P1']" class="uk-position-cover"></a>
|
|
||||||
<div class="uk-card-media-top " style="background-color: #001a6e">
|
|
||||||
<h1 class="uk-padding-large font-weight-bolder md-color-white">PR_P1</h1>
|
|
||||||
</div>
|
|
||||||
<div class="uk-card-body uk-padding-small">
|
|
||||||
<h3 class="uk-card-title uk-margin-small-bottom">
|
|
||||||
A report summarizing usage activity for the repository by month, broken down by metric type
|
|
||||||
</h3>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="uk-width-1-3">
|
|
||||||
<div class="uk-text-center md-card md-card-hover">
|
|
||||||
<a [routerLink]="['R5','IR']" class="uk-position-cover"></a>
|
|
||||||
<div class="uk-card-media-top " style="background-color: #001a6e">
|
|
||||||
<h1 class="uk-padding-large font-weight-bolder md-color-white">IR</h1>
|
|
||||||
</div>
|
|
||||||
<div class="uk-card-body uk-padding-small">
|
|
||||||
<h3 class="uk-card-title uk-margin-small-bottom">
|
|
||||||
A report for items requests by month metric_type, item type and repository
|
|
||||||
</h3>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="uk-grid-match" uk-grid>
|
|
||||||
<div class="uk-width-1-3">
|
|
||||||
<div class="uk-text-center md-card md-card-hover">
|
|
||||||
<a [routerLink]="['R5','DSR']" class="uk-position-cover"></a>
|
|
||||||
<div class="uk-card-media-top " style="background-color: #001a6e">
|
|
||||||
<h1 class="uk-padding-large font-weight-bolder md-color-white">DSR</h1>
|
|
||||||
</div>
|
|
||||||
<div class="uk-card-body uk-padding-small">
|
|
||||||
<h3 class="uk-card-title uk-margin-small-bottom">
|
|
||||||
A report for datasets requests by month metric type and repository
|
|
||||||
</h3>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<h2>R4 Reports</h2>
|
|
||||||
|
|
||||||
<div class="uk-grid uk-grid-match repositoryTypeSelection" data-uk-grid-margin="">
|
<div class="uk-grid uk-grid-match repositoryTypeSelection" data-uk-grid-margin="">
|
||||||
<div class="uk-width-1-3@m uk-row-first">
|
<div class="uk-width-1-3@m uk-row-first">
|
||||||
<div class="uk-text-center md-card md-card-default md-card-hover uk-scrollspy-inview uk-animation-slide-top-medium" uk-scrollspy-class="">
|
<div class="uk-text-center md-card md-card-default md-card-hover uk-scrollspy-inview uk-animation-slide-top-medium" uk-scrollspy-class="">
|
||||||
<a [routerLink]="['R4','AR1']" class="el-link uk-position-cover uk-margin-remove-adjacent"></a>
|
<a [routerLink]="['AR1']" class="el-link uk-position-cover uk-margin-remove-adjacent"></a>
|
||||||
<div class="uk-card-media-top">
|
<div class="uk-card-media-top">
|
||||||
<img class="el-image" src="../../../../assets/imgs/Icons_Reports_wide_AR1.png" alt="" style="width: 100%;">
|
<img class="el-image" src="../../../../assets/imgs/Icons_Reports_wide_AR1.png" alt="" style="width: 100%;">
|
||||||
</div>
|
</div>
|
||||||
|
@ -100,7 +37,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="uk-width-1-3@m">
|
<div class="uk-width-1-3@m">
|
||||||
<div class="uk-margin uk-text-center md-card md-card-default md-card-hover uk-scrollspy-inview uk-animation-slide-top-medium" uk-scrollspy-class="" data-id="" style="">
|
<div class="uk-margin uk-text-center md-card md-card-default md-card-hover uk-scrollspy-inview uk-animation-slide-top-medium" uk-scrollspy-class="" data-id="" style="">
|
||||||
<a [routerLink]="['R4','IR1']" class="el-link uk-position-cover uk-margin-remove-adjacent" href=""></a>
|
<a [routerLink]="['IR1']" class="el-link uk-position-cover uk-margin-remove-adjacent" href=""></a>
|
||||||
<div class="uk-card-media-top">
|
<div class="uk-card-media-top">
|
||||||
<img class="el-image" src="../../../../assets/imgs/Icons_Reports_wide_IR1.png" alt="" style="width:100%;">
|
<img class="el-image" src="../../../../assets/imgs/Icons_Reports_wide_IR1.png" alt="" style="width:100%;">
|
||||||
</div>
|
</div>
|
||||||
|
@ -113,7 +50,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="uk-width-1-3@m">
|
<div class="uk-width-1-3@m">
|
||||||
<div class="uk-margin uk-text-center md-card md-card-default md-card-hover uk-scrollspy-inview uk-animation-slide-top-medium" uk-scrollspy-class="" data-id="" style="">
|
<div class="uk-margin uk-text-center md-card md-card-default md-card-hover uk-scrollspy-inview uk-animation-slide-top-medium" uk-scrollspy-class="" data-id="" style="">
|
||||||
<a [routerLink]="['R4','RR1']" class="el-link uk-position-cover uk-margin-remove-adjacent"></a>
|
<a [routerLink]="['RR1']" class="el-link uk-position-cover uk-margin-remove-adjacent"></a>
|
||||||
<div class="uk-card-media-top">
|
<div class="uk-card-media-top">
|
||||||
<img class="el-image" src="../../../../assets/imgs/Icons_Reports_wide_RR1.png" alt="" style="width:100%;">
|
<img class="el-image" src="../../../../assets/imgs/Icons_Reports_wide_RR1.png" alt="" style="width:100%;">
|
||||||
</div>
|
</div>
|
||||||
|
@ -125,11 +62,10 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="uk-grid uk-grid-match repositoryTypeSelection" data-uk-grid-margin="">
|
<div class="uk-grid uk-grid-match repositoryTypeSelection" data-uk-grid-margin="">
|
||||||
<div class="uk-width-1-3@m uk-row-first">
|
<div class="uk-width-1-3@m uk-row-first">
|
||||||
<div class="uk-text-center md-card md-card-default md-card-hover uk-scrollspy-inview uk-animation-slide-top-medium" uk-scrollspy-class="">
|
<div class="uk-text-center md-card md-card-default md-card-hover uk-scrollspy-inview uk-animation-slide-top-medium" uk-scrollspy-class="">
|
||||||
<a [routerLink]="['R4','BR1']" class="el-link uk-position-cover uk-margin-remove-adjacent"></a>
|
<a [routerLink]="['BR1']" class="el-link uk-position-cover uk-margin-remove-adjacent"></a>
|
||||||
<div class="uk-card-media-top">
|
<div class="uk-card-media-top">
|
||||||
<img class="el-image" src="../../../../assets/imgs/Icons_Reports_wide_BR1.png" alt="" style="width: 100%;">
|
<img class="el-image" src="../../../../assets/imgs/Icons_Reports_wide_BR1.png" alt="" style="width: 100%;">
|
||||||
</div>
|
</div>
|
||||||
|
@ -142,7 +78,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="uk-width-1-3@m">
|
<div class="uk-width-1-3@m">
|
||||||
<div class="uk-margin uk-text-center md-card md-card-default md-card-hover uk-scrollspy-inview uk-animation-slide-top-medium" uk-scrollspy-class="" data-id="" style="">
|
<div class="uk-margin uk-text-center md-card md-card-default md-card-hover uk-scrollspy-inview uk-animation-slide-top-medium" uk-scrollspy-class="" data-id="" style="">
|
||||||
<a [routerLink]="['R4','BR2']" class="el-link uk-position-cover uk-margin-remove-adjacent" href=""></a>
|
<a [routerLink]="['BR2']" class="el-link uk-position-cover uk-margin-remove-adjacent" href=""></a>
|
||||||
<div class="uk-card-media-top">
|
<div class="uk-card-media-top">
|
||||||
<img class="el-image" src="../../../../assets/imgs/Icons_Reports_wide_BR2.png" alt="" style="width:100%;">
|
<img class="el-image" src="../../../../assets/imgs/Icons_Reports_wide_BR2.png" alt="" style="width:100%;">
|
||||||
</div>
|
</div>
|
||||||
|
@ -153,9 +89,9 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="repo.eoscDatasourceType === 'journal'" class="uk-width-1-3@m">
|
<div *ngIf="repo.datasourceType === 'journal'" class="uk-width-1-3@m">
|
||||||
<div class="uk-margin uk-text-center md-card md-card-default md-card-hover uk-scrollspy-inview uk-animation-slide-top-medium" uk-scrollspy-class="" data-id="" style="">
|
<div class="uk-margin uk-text-center md-card md-card-default md-card-hover uk-scrollspy-inview uk-animation-slide-top-medium" uk-scrollspy-class="" data-id="" style="">
|
||||||
<a [routerLink]="['R4','JR1']" class="el-link uk-position-cover uk-margin-remove-adjacent"></a>
|
<a [routerLink]="['JR1']" class="el-link uk-position-cover uk-margin-remove-adjacent"></a>
|
||||||
<div class="uk-card-media-top">
|
<div class="uk-card-media-top">
|
||||||
<img class="el-image" src="../../../../assets/imgs/Icons_Reports_wide_JR1.png" alt="" style="width:100%;">
|
<img class="el-image" src="../../../../assets/imgs/Icons_Reports_wide_JR1.png" alt="" style="width:100%;">
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3,7 +3,7 @@ import { Repository } from '../../../domain/typeScriptClasses';
|
||||||
import { RepositoryService } from '../../../services/repository.service';
|
import { RepositoryService } from '../../../services/repository.service';
|
||||||
import { AuthenticationService } from '../../../services/authentication.service';
|
import { AuthenticationService } from '../../../services/authentication.service';
|
||||||
import { ActivatedRoute, Router } from '@angular/router';
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
import { SharedService } from '../../../services/shared.service';
|
import { SharedService } from "../../../services/shared.service";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'metrics-usagestats',
|
selector: 'metrics-usagestats',
|
||||||
|
@ -27,13 +27,13 @@ export class MetricsUsagestatsComponent implements OnInit {
|
||||||
|
|
||||||
if(this.sharedService.getRepository()) {
|
if(this.sharedService.getRepository()) {
|
||||||
this.repo = this.sharedService.getRepository();
|
this.repo = this.sharedService.getRepository();
|
||||||
this.title = this.title + ' for ' + this.repo.officialname;
|
this.title = this.title + ' for ' + this.repo.officialName;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.sharedService.repository$.subscribe(
|
this.sharedService.repository$.subscribe(
|
||||||
r => {
|
r => {
|
||||||
this.repo = r;
|
this.repo = r;
|
||||||
this.title = this.title + ' for ' + this.repo.officialname;
|
this.title = this.title + ' for ' + this.repo.officialName;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ const metricsRoutes: Routes = [
|
||||||
component: MetricsUsagestatsComponent
|
component: MetricsUsagestatsComponent
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'usagestats/:reportType/:reportID',
|
path: 'usagestats/:reportID',
|
||||||
component: MetricsUsagestatsReportComponent
|
component: MetricsUsagestatsReportComponent
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -25,17 +25,17 @@ const repositoryRoutes: Routes = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'getImpact',
|
path: 'getImpact',
|
||||||
loadChildren: () => import('./metrics/metrics.module').then(m => m.MetricsModule),
|
loadChildren: './metrics/metrics.module#MetricsModule',
|
||||||
canActivate: [AuthGuardService]
|
canActivate: [AuthGuardService]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'aggregationHistory',
|
path: 'aggregationHistory',
|
||||||
loadChildren: () => import('./aggregationhistory/compatibility-monitor.module').then(m => m.AggregationHistoryModule),
|
loadChildren: './aggregationhistory/compatibility-monitor.module#AggregationHistoryModule',
|
||||||
canActivate: [AuthGuardService]
|
canActivate: [AuthGuardService]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'events',
|
path: 'events',
|
||||||
loadChildren: () => import('./events/events.module').then(m => m.EventsModule),
|
loadChildren: './events/events.module#EventsModule',
|
||||||
canActivate: [AuthGuardService]
|
canActivate: [AuthGuardService]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -15,9 +15,9 @@
|
||||||
<div class="uk-margin-medium-left uk-margin-medium-right">
|
<div class="uk-margin-medium-left uk-margin-medium-right">
|
||||||
<div class="uk-padding-small">
|
<div class="uk-padding-small">
|
||||||
<h3 *ngIf="repository" class="heading_b">
|
<h3 *ngIf="repository" class="heading_b">
|
||||||
<img *ngIf="!repository.logourl" src="../../../assets/imgs/yourLogoHere.jpg" style="margin-right: 15px; margin-top:-8px" width="60">
|
<img *ngIf="!repository.logoUrl" src="../../../assets/imgs/yourLogoHere.jpg" style="margin-right: 15px; margin-top:-8px" width="60">
|
||||||
<img *ngIf="repository.logourl" src="{{ repository.logourl }}" style="margin-right: 15px; margin-top:-8px" width="60">
|
<img *ngIf="repository.logoUrl" src="{{ repository.logoUrl }}" style="margin-right: 15px; margin-top:-8px" width="60">
|
||||||
{{ repository.officialname }}
|
{{ repository.officialName }}
|
||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ export class RepositoryComponent implements OnInit {
|
||||||
this.loadingMessage = 'Retrieving datasource info';
|
this.loadingMessage = 'Retrieving datasource info';
|
||||||
this.repoService.getRepositoryById(this.repositoryId).subscribe(
|
this.repoService.getRepositoryById(this.repositoryId).subscribe(
|
||||||
repository => {
|
repository => {
|
||||||
console.log('Repository component - Repository id: ' + repository.id);
|
console.log("Repository component - Repository id: " + repository.id);
|
||||||
this.sharedService.setRepository(repository);
|
this.sharedService.setRepository(repository);
|
||||||
this.loadingMessage = '';
|
this.loadingMessage = '';
|
||||||
},
|
},
|
||||||
|
|
|
@ -3,24 +3,23 @@ import { CommonModule } from '@angular/common';
|
||||||
import { TabsModule } from 'ngx-bootstrap';
|
import { TabsModule } from 'ngx-bootstrap';
|
||||||
import { ReusableComponentsModule } from '../../shared/reusablecomponents/reusable-components.module';
|
import { ReusableComponentsModule } from '../../shared/reusablecomponents/reusable-components.module';
|
||||||
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
||||||
import { RepositoryComponent } from './repository.component';
|
import { RepositoryComponent } from "./repository.component";
|
||||||
import { RepositoryRoutingModule } from './repository-routing.module';
|
import { RepositoryRoutingModule } from "./repository-routing.module";
|
||||||
import { DashboardComponent } from './dashboard/dashboard.component';
|
import { DashboardComponent } from "./dashboard/dashboard.component";
|
||||||
import {AuthenticationInterceptor} from '../../services/authentication-interceptor';
|
import {AuthenticationInterceptor} from "../../services/authentication-interceptor";
|
||||||
import {UsagestatsService} from '../../services/usagestats.service';
|
import {UsagestatsService} from "../../services/usagestats.service";
|
||||||
import {RepositoryService} from '../../services/repository.service';
|
import {RepositoryService} from "../../services/repository.service";
|
||||||
import {AuthGuardService} from '../../services/auth-guard.service';
|
import {AuthGuardService} from "../../services/auth-guard.service";
|
||||||
import {ValidatorService} from '../../services/validator.service';
|
import {ValidatorService} from "../../services/validator.service";
|
||||||
import {AuthenticationService} from '../../services/authentication.service';
|
import {AuthenticationService} from "../../services/authentication.service";
|
||||||
import {MonitorService} from '../../services/monitor.service';
|
import {MonitorService} from "../../services/monitor.service";
|
||||||
import {PiwikService} from '../../services/piwik.service';
|
import {PiwikService} from "../../services/piwik.service";
|
||||||
import {StatisticsService} from '../../services/statistics.service';
|
import {StatisticsService} from "../../services/statistics.service";
|
||||||
import {BrokerService} from '../../services/broker.service';
|
import {BrokerService} from "../../services/broker.service";
|
||||||
import {DashboardService} from '../../services/dashboard.service';
|
import {DashboardService} from "../../services/dashboard.service";
|
||||||
import { SharedService } from '../../services/shared.service';
|
import { SharedService } from "../../services/shared.service";
|
||||||
import { SourcesUpdateRepoComponent } from './update/sources-update-repo.component';
|
import { SourcesUpdateRepoComponent } from "./update/sources-update-repo.component";
|
||||||
import { SourcesModule } from '../sources/sources.module';
|
import {SourcesModule} from '../sources/sources.module';
|
||||||
import { UpdateRepoAdminsComponent } from './update/update-repo-admins.component';
|
|
||||||
|
|
||||||
@NgModule ({
|
@NgModule ({
|
||||||
imports: [
|
imports: [
|
||||||
|
@ -37,7 +36,6 @@ import { UpdateRepoAdminsComponent } from './update/update-repo-admins.component
|
||||||
RepositoryComponent,
|
RepositoryComponent,
|
||||||
DashboardComponent,
|
DashboardComponent,
|
||||||
SourcesUpdateRepoComponent,
|
SourcesUpdateRepoComponent,
|
||||||
UpdateRepoAdminsComponent
|
|
||||||
// SourcesComponent,
|
// SourcesComponent,
|
||||||
// SourcesRegisterComponent,
|
// SourcesRegisterComponent,
|
||||||
// SourcesUpdateComponent,
|
// SourcesUpdateComponent,
|
||||||
|
|
|
@ -43,23 +43,22 @@
|
||||||
<li class="uk-active" aria-expanded="true"><a href="#">Update Information</a></li>
|
<li class="uk-active" aria-expanded="true"><a href="#">Update Information</a></li>
|
||||||
<li aria-expanded="false" class=""><a href="#">Update Interfaces</a></li>
|
<li aria-expanded="false" class=""><a href="#">Update Interfaces</a></li>
|
||||||
<li aria-expanded="false" class=""><a href="#">Update Admins</a></li>
|
<li aria-expanded="false" class=""><a href="#">Update Admins</a></li>
|
||||||
<li aria-expanded="false" class=""><a href="#">Update Terms of Use</a></li>
|
<!-- <li aria-expanded="false" class=""><a href="#">Update Terms of Agreement</a></li>-->
|
||||||
</ul>
|
</ul>
|
||||||
<ul id="tabs_anim4" class="uk-switcher uk-margin">
|
<ul id="tabs_anim4" class="uk-switcher uk-margin">
|
||||||
<li aria-hidden="false" class="uk-active" style="animation-duration: 200ms;">
|
<li aria-hidden="false" class="uk-active" style="animation-duration: 200ms;">
|
||||||
<datasource-update-form #datasourceUpdateForm
|
<datasource-update-form #datasourceUpdateForm
|
||||||
[selectedRepo]="repo"
|
[selectedRepo]="repo"
|
||||||
[mode]="this.mode"
|
|
||||||
[showButton]=true
|
[showButton]=true
|
||||||
(emittedUrl)="getNewLogoUrl($event)">
|
(emittedUrl)="getNewLogoUrl($event)"></datasource-update-form>
|
||||||
</datasource-update-form>
|
|
||||||
</li>
|
</li>
|
||||||
<li aria-hidden="true" style="animation-duration: 200ms;" class="">
|
<li aria-hidden="true" style="animation-duration: 200ms;" class="">
|
||||||
<div *ngIf="repo && repoInterfaces && !loadingMessage" class="uk-grid uk-grid-match uk-margin-top" style="padding: 0px 3px 0px 3px;">
|
<div *ngIf="repo && repoInterfaces && !loadingMessage" class="uk-grid uk-grid-match uk-margin-top" style="padding: 0px 3px 0px 3px;">
|
||||||
<div *ngFor="let inter of dataForInterfaceComp" class="uk-width-1-2@m uk-margin-bottom">
|
<div *ngFor="let inter of dataForInterfaceComp" class="uk-width-1-2@m uk-margin-bottom">
|
||||||
<div>
|
<div>
|
||||||
<div class="md-card" style="height: 100%">
|
<div class="md-card" style="height: 100%">
|
||||||
<app-repository-interface-form #interfacesArray [data]="inter"
|
<app-repository-interface-form #interfacesArray
|
||||||
|
[data]="inter"
|
||||||
(emitDeleteInterface)="removeInterfaceFromList($event)">
|
(emitDeleteInterface)="removeInterfaceFromList($event)">
|
||||||
</app-repository-interface-form>
|
</app-repository-interface-form>
|
||||||
</div>
|
</div>
|
||||||
|
@ -85,7 +84,51 @@
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<app-update-repo-admins [repo]="repo"></app-update-repo-admins>
|
<div class="uk-margin-small-top">
|
||||||
|
<div>This is a mock representation of the update admins functionality coming soon..</div>
|
||||||
|
<div class="uk-margin-top">
|
||||||
|
<div class="uk-flex uk-flex-right@m uk-flex-right@l">
|
||||||
|
<a class="uk-button uk-button-primary action uk-flex uk-flex-middle">
|
||||||
|
<!--<i class="md-icon material-icons">clear</i>-->
|
||||||
|
<span class="uk-margin-small-left">Invite admin</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="uk-margin-medium-top">
|
||||||
|
<div class="uk-grid uk-grid-divider uk-flex uk-flex-middle" uk-grid="">
|
||||||
|
<div class="uk-width-3-4@l uk-width-1-2@m uk-first-column">
|
||||||
|
<div class="">
|
||||||
|
<span class="uk-text-muted">Email: </span>
|
||||||
|
<span class="uk-text-bold">admin1@gmail.com</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="uk-width-expand">
|
||||||
|
<div class="uk-flex uk-flex-center">
|
||||||
|
<a class="uk-button uk-button-default action uk-flex uk-flex-middle">
|
||||||
|
<i class="md-icon material-icons">clear</i>
|
||||||
|
<span class="uk-margin-small-left">Remove</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="uk-grid uk-grid-divider uk-flex uk-flex-middle" uk-grid="">
|
||||||
|
<div class="uk-width-3-4@l uk-width-1-2@m uk-first-column">
|
||||||
|
<div class="">
|
||||||
|
<span class="uk-text-muted">Email: </span>
|
||||||
|
<span class="uk-text-bold">admin2@gmail.com</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="uk-width-expand">
|
||||||
|
<div class="uk-flex uk-flex-center">
|
||||||
|
<a class="uk-button uk-button-default action uk-flex uk-flex-middle">
|
||||||
|
<i class="md-icon material-icons">clear</i>
|
||||||
|
<span class="uk-margin-small-left">Remove</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="el-item">
|
<li class="el-item">
|
||||||
<div>
|
<div>
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
import {Component, OnInit, QueryList, ViewChild, ViewChildren} from '@angular/core';
|
import { Component, OnInit, QueryList, ViewChild, ViewChildren } from '@angular/core';
|
||||||
import {FormBuilder, FormGroup} from '@angular/forms';
|
import { FormBuilder, FormGroup } from '@angular/forms';
|
||||||
import {Repository, RepositoryInterface} from '../../../domain/typeScriptClasses';
|
import { Repository, RepositoryInterface } from '../../../domain/typeScriptClasses';
|
||||||
import {RepositoryService} from '../../../services/repository.service';
|
import { RepositoryService } from '../../../services/repository.service';
|
||||||
import {ActivatedRoute, Router} from '@angular/router';
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
import {loadingRepoError} from '../../../domain/shared-messages';
|
import { formInfoLoading, loadingRepoError } from '../../../domain/shared-messages';
|
||||||
import {DatasourceUpdateFormComponent} from '../../../shared/reusablecomponents/sources-forms/datasource-update-form.component';
|
import { DatasourceUpdateFormComponent } from '../../../shared/reusablecomponents/sources-forms/datasource-update-form.component';
|
||||||
import {ConfirmationDialogComponent} from '../../../shared/reusablecomponents/confirmation-dialog.component';
|
import { ConfirmationDialogComponent } from '../../../shared/reusablecomponents/confirmation-dialog.component';
|
||||||
import {AuthenticationService} from '../../../services/authentication.service';
|
import { AuthenticationService } from '../../../services/authentication.service';
|
||||||
import {DatasourceNewInterfaceFormComponent} from '../../../shared/reusablecomponents/sources-forms/datasource-new-interface-form.component';
|
import { DatasourceNewInterfaceFormComponent } from '../../../shared/reusablecomponents/sources-forms/datasource-new-interface-form.component';
|
||||||
import {SharedService} from '../../../services/shared.service';
|
import {SharedService} from "../../../services/shared.service";
|
||||||
|
|
||||||
@Component({
|
@Component ({
|
||||||
selector: 'sources-update-repo',
|
selector: 'sources-update-repo',
|
||||||
templateUrl: 'sources-update-repo.component.html',
|
templateUrl: 'sources-update-repo.component.html',
|
||||||
})
|
})
|
||||||
|
@ -22,7 +22,6 @@ export class SourcesUpdateRepoComponent implements OnInit {
|
||||||
// repoId: string;
|
// repoId: string;
|
||||||
logoURL: string;
|
logoURL: string;
|
||||||
repo: Repository;
|
repo: Repository;
|
||||||
mode: string = null;
|
|
||||||
repoInterfaces: RepositoryInterface[] = [];
|
repoInterfaces: RepositoryInterface[] = [];
|
||||||
|
|
||||||
@ViewChild('datasourceUpdateForm') datasourceUpdateForm: DatasourceUpdateFormComponent;
|
@ViewChild('datasourceUpdateForm') datasourceUpdateForm: DatasourceUpdateFormComponent;
|
||||||
|
@ -33,35 +32,23 @@ export class SourcesUpdateRepoComponent implements OnInit {
|
||||||
dataForInterfaceComp: any[] = [];
|
dataForInterfaceComp: any[] = [];
|
||||||
|
|
||||||
isModalShown: boolean;
|
isModalShown: boolean;
|
||||||
@ViewChild('updateLogoUrlModal', {static: true})
|
@ViewChild('updateLogoUrlModal')
|
||||||
public updateLogoUrlModal: ConfirmationDialogComponent;
|
public updateLogoUrlModal: ConfirmationDialogComponent;
|
||||||
|
|
||||||
constructor(private fb: FormBuilder,
|
constructor ( private fb: FormBuilder,
|
||||||
private repoService: RepositoryService,
|
private repoService: RepositoryService,
|
||||||
private authService: AuthenticationService,
|
private authService: AuthenticationService,
|
||||||
private route: ActivatedRoute,
|
private route: ActivatedRoute,
|
||||||
private sharedService: SharedService,
|
private sharedService: SharedService,
|
||||||
private router: Router) {
|
private router: Router) { }
|
||||||
}
|
|
||||||
|
|
||||||
@ViewChild('updateTermsForm') updateTermsForm: DatasourceUpdateFormComponent;
|
@ViewChild('updateTermsForm')
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
|
||||||
if (this.sharedService.getRepository()) {
|
if(this.sharedService.getRepository()) {
|
||||||
this.repo = this.sharedService.getRepository();
|
this.repo = this.sharedService.getRepository();
|
||||||
if (this.repo.id.includes('eurocrisdris')) {
|
this.logoURL = this.repo.logoUrl;
|
||||||
this.mode = 'cris';
|
|
||||||
} else if (this.repo.id.includes('opendoar')) {
|
|
||||||
this.mode = 'opendoar';
|
|
||||||
} else if (this.repo.id.includes('re3data')) {
|
|
||||||
this.mode = 're3data';
|
|
||||||
} else if (this.repo.id.includes('journal')) {
|
|
||||||
this.mode = 'journal';
|
|
||||||
} else if (this.repo.id.includes('aggregator')) {
|
|
||||||
this.mode = 'aggregator';
|
|
||||||
}
|
|
||||||
this.logoURL = this.repo.logourl;
|
|
||||||
this.getRepoInterfaces();
|
this.getRepoInterfaces();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,18 +56,18 @@ export class SourcesUpdateRepoComponent implements OnInit {
|
||||||
r => {
|
r => {
|
||||||
this.repo = r;
|
this.repo = r;
|
||||||
if (this.repo) {
|
if (this.repo) {
|
||||||
this.logoURL = this.repo.logourl;
|
this.logoURL = this.repo.logoUrl;
|
||||||
this.getRepoInterfaces();
|
this.getRepoInterfaces();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
// this.readRepoId();
|
// this.readRepoId();
|
||||||
const body = document.getElementsByTagName('body')[0];
|
let body = document.getElementsByTagName('body')[0];
|
||||||
body.classList.remove('top_bar_active'); // remove the class
|
body.classList.remove("top_bar_active"); //remove the class
|
||||||
body.classList.remove('page_heading_active');
|
body.classList.remove("page_heading_active");
|
||||||
body.classList.remove('landing');
|
body.classList.remove("landing");
|
||||||
body.classList.add('dashboard');
|
body.classList.add("dashboard");
|
||||||
}
|
}
|
||||||
|
|
||||||
// readRepoId() {
|
// readRepoId() {
|
||||||
|
@ -113,7 +100,7 @@ export class SourcesUpdateRepoComponent implements OnInit {
|
||||||
this.group = this.fb.group({});
|
this.group = this.fb.group({});
|
||||||
this.repoService.getRepositoryInterface(this.repo.id).subscribe(
|
this.repoService.getRepositoryInterface(this.repo.id).subscribe(
|
||||||
interfaces => {
|
interfaces => {
|
||||||
this.repoInterfaces = interfaces.sort(function (a, b) {
|
this.repoInterfaces = interfaces.sort( function(a, b) {
|
||||||
if (a.id < b.id) {
|
if (a.id < b.id) {
|
||||||
return -1;
|
return -1;
|
||||||
} else if (a.id > b.id) {
|
} else if (a.id > b.id) {
|
||||||
|
@ -143,11 +130,10 @@ export class SourcesUpdateRepoComponent implements OnInit {
|
||||||
for (let i = 0; i < this.repoInterfaces.length; i++) {
|
for (let i = 0; i < this.repoInterfaces.length; i++) {
|
||||||
this.dataForInterfaceComp.push([
|
this.dataForInterfaceComp.push([
|
||||||
false, i,
|
false, i,
|
||||||
{
|
{ id: this.repo.id,
|
||||||
id: this.repo.id,
|
datasourceType: this.repo.datasourceType,
|
||||||
datasourceType: this.repo.eoscDatasourceType,
|
datasourceClass: this.repo.datasourceClass,
|
||||||
datasourceClass: this.repo.eoscDatasourceType,
|
registeredBy: this.repo.registeredBy
|
||||||
registeredBy: this.repo.registeredby
|
|
||||||
},
|
},
|
||||||
this.repoInterfaces[i]
|
this.repoInterfaces[i]
|
||||||
]);
|
]);
|
||||||
|
@ -155,11 +141,10 @@ export class SourcesUpdateRepoComponent implements OnInit {
|
||||||
} else {
|
} else {
|
||||||
this.dataForInterfaceComp.push([
|
this.dataForInterfaceComp.push([
|
||||||
false, 0,
|
false, 0,
|
||||||
{
|
{ id: this.repo.id,
|
||||||
id: this.repo.id,
|
datasourceType: this.repo.datasourceType,
|
||||||
datasourceType: this.repo.eoscDatasourceType,
|
datasourceClass: this.repo.datasourceClass,
|
||||||
datasourceClass: this.repo.eoscDatasourceType,
|
registeredBy: this.repo.registeredBy
|
||||||
registeredBy: this.repo.registeredby
|
|
||||||
}
|
}
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
@ -167,10 +152,8 @@ export class SourcesUpdateRepoComponent implements OnInit {
|
||||||
|
|
||||||
addInterfaceToList(intrf?: RepositoryInterface) {
|
addInterfaceToList(intrf?: RepositoryInterface) {
|
||||||
const curIndex = this.dataForInterfaceComp.length;
|
const curIndex = this.dataForInterfaceComp.length;
|
||||||
const curRepoInfo = {
|
const curRepoInfo = { id: this.repo.id, datasourceType: this.repo.datasourceType,
|
||||||
id: this.repo.id, datasourceType: this.repo.eoscDatasourceType,
|
datasourceClass: this.repo.datasourceClass, registeredBy: this.repo.registeredBy };
|
||||||
datasourceClass: this.repo.eoscDatasourceType, registeredBy: this.repo.registeredby
|
|
||||||
};
|
|
||||||
if (intrf) {
|
if (intrf) {
|
||||||
this.dataForInterfaceComp.push([false, curIndex, curRepoInfo, intrf]);
|
this.dataForInterfaceComp.push([false, curIndex, curRepoInfo, intrf]);
|
||||||
} else {
|
} else {
|
||||||
|
@ -204,13 +187,13 @@ export class SourcesUpdateRepoComponent implements OnInit {
|
||||||
}
|
}
|
||||||
|
|
||||||
updatedLogoUrl(event: any) {
|
updatedLogoUrl(event: any) {
|
||||||
this.repo.logourl = this.logoURL;
|
this.repo.logoUrl = this.logoURL;
|
||||||
this.datasourceUpdateForm.updateGroup.get('logoUrl').setValue(this.logoURL);
|
this.datasourceUpdateForm.updateGroup.get('logoUrl').setValue(this.logoURL);
|
||||||
this.datasourceUpdateForm.updateRepo();
|
this.datasourceUpdateForm.updateRepo();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
getNewLogoUrl(event: any) {
|
getNewLogoUrl( event: any ) {
|
||||||
this.logoURL = event.target.value;
|
this.logoURL = event.target.value;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,122 +0,0 @@
|
||||||
<div class="uk-margin-small-top">
|
|
||||||
<div>Update the users who can access the dashboard to manage the datasource.</div>
|
|
||||||
|
|
||||||
<div *ngIf="errorMessage" class="uk-alert uk-alert-danger">{{errorMessage}}</div>
|
|
||||||
<div *ngIf="loadingMessage" class="loading-medium">
|
|
||||||
<div class="loader-small" style="text-align: center; padding-top: 170px; color: rgb(47, 64, 80); font-weight: bold;">
|
|
||||||
{{ loadingMessage }}
|
|
||||||
</div>
|
|
||||||
<div class="whiteFilm"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div *ngIf="!loadingMessage" >
|
|
||||||
|
|
||||||
<div class="uk-margin-top">
|
|
||||||
<div class="uk-flex uk-flex-right@m uk-flex-right@l">
|
|
||||||
<a class="uk-button uk-button-primary action uk-flex uk-flex-middle" (click)="showAddRepoAdminModal()">
|
|
||||||
<!--<i class="md-icon material-icons">clear</i>-->
|
|
||||||
<span class="uk-margin-small-left">Invite admin</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="uk-margin-medium-top">
|
|
||||||
<div *ngFor="let repoAdmin of repoAdmins" class="uk-grid uk-grid-divider uk-flex uk-flex-middle" uk-grid="">
|
|
||||||
<div class="uk-width-3-4@l uk-width-1-2@m uk-first-column">
|
|
||||||
<div class="">
|
|
||||||
<span class="uk-text-muted">Email: </span>
|
|
||||||
<span class="uk-text-bold">{{repoAdmin.email}}</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="uk-width-expand">
|
|
||||||
<div class="uk-flex uk-flex-center">
|
|
||||||
<a class="uk-button uk-button-default action uk-flex uk-flex-middle" (click)="showDeletionModal(repoAdmin)">
|
|
||||||
<i class="md-icon material-icons">clear</i>
|
|
||||||
<span class="uk-margin-small-left">Remove</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<confirmation-dialog #deleteRepositoryAdminModal [title]="'Remove datasource admin'" [isModalShown]="isDeleteModalShown"
|
|
||||||
[confirmButNotCloseButton]="'Remove'" (emitObject)="deleteRepoAdmin($event)" (clearAll)="clearModal()">
|
|
||||||
|
|
||||||
<div *ngIf="modalErrorMessage" class="uk-alert uk-alert-danger">{{modalErrorMessage}}</div>
|
|
||||||
|
|
||||||
<div *ngIf="modalLoadingMessage" class="loading-small">
|
|
||||||
<div class="loader-small" style="text-align: center; padding-top: 170px; color: rgb(47, 64, 80); font-weight: bold;">
|
|
||||||
{{ modalLoadingMessage }}
|
|
||||||
</div>
|
|
||||||
<div class="whiteFilm"></div>
|
|
||||||
</div>
|
|
||||||
<div *ngIf="selectedAdminForDelete">
|
|
||||||
<h6>Are you sure you want to remove this user admin?</h6>
|
|
||||||
<pre>
|
|
||||||
<ng-container *ngIf="selectedAdminForDelete.firstName || selectedAdminForDelete.lastName">
|
|
||||||
{{selectedAdminForDelete.firstName}} {{selectedAdminForDelete.lastName}}
|
|
||||||
</ng-container>
|
|
||||||
{{ selectedAdminForDelete.email }}
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</confirmation-dialog>
|
|
||||||
|
|
||||||
|
|
||||||
<confirmation-dialog #addRepositoryAdminModal [title]="'Add new datasource admin'" [isModalShown]="isAddModalShown"
|
|
||||||
[confirmButNotCloseButton]="'Submit'" (emitObject)="addRepositoryAdmin()" (clearAll)="clearModal()">
|
|
||||||
|
|
||||||
<div *ngIf="modalErrorMessage" class="uk-alert uk-alert-danger">{{modalErrorMessage}}</div>
|
|
||||||
|
|
||||||
<div *ngIf="modalLoadingMessage" class="loading-small">
|
|
||||||
<div class="loader-small" style="text-align: center; padding-top: 170px; color: rgb(47, 64, 80); font-weight: bold;">
|
|
||||||
{{ modalLoadingMessage }}
|
|
||||||
</div>
|
|
||||||
<div class="whiteFilm"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h6>Add the email address of the new user admin. Make sure the user already has an OpenAIRE account with this email address.</h6>
|
|
||||||
<form>
|
|
||||||
<div class="uk-margin">
|
|
||||||
<input class="uk-input" placeholder="Enter email..." [formControl]="emailControl">
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</confirmation-dialog>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!--<div id="addAdminModal" uk-modal>-->
|
|
||||||
<!--<div class="uk-modal-dialog" style="top: 95.5px;">-->
|
|
||||||
<!--<div class="uk-modal-header">-->
|
|
||||||
<!--<h3 class="uk-modal-title">Adding a new repository admin for this repository</h3>-->
|
|
||||||
<!--</div>-->
|
|
||||||
<!--<div class="uk-modal-body">-->
|
|
||||||
<!--<p>Lorem ipsum.....</p>-->
|
|
||||||
<!--</div>-->
|
|
||||||
<!--<div class="uk-modal-footer uk-text-right">-->
|
|
||||||
<!--<button type="button" class="md-btn md-btn-flat uk-modal-close">Cancel</button>-->
|
|
||||||
<!--<button (click)="addRepositoryAdmin()" type="button" class="md-btn md-btn-flat md-btn-flat-primary">Add admin</button>-->
|
|
||||||
<!--</div>-->
|
|
||||||
<!--</div>-->
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!--<!–<div *ngIf="!loadingMessage" class="uk-modal-dialog uk-modal-body">–>-->
|
|
||||||
<!--<!–<div *ngIf="selectedAdminForDelete">–>-->
|
|
||||||
<!--<!–<h6>Are you sure you want to delete {{ selectedAdminForDelete.email }} from the list of repository admins?</h6>–>-->
|
|
||||||
<!--<!–<!–<p>Deleting a {{serviceORresource}} is an irreversible action.</p>–>–>-->
|
|
||||||
<!--<!–</div>–>-->
|
|
||||||
<!--<!–<button class="uk-button uk-button-danger uk-modal-close" type="button" (click)="deleteRepoAdmin(selectedAdminForDelete.email)">Delete</button>–>-->
|
|
||||||
<!--<!–<button class="uk-button uk-button-primary uk-modal-close" type="button" (click)="closeDeletionModal()">Cancel</button>–>-->
|
|
||||||
<!--<!–</div>–>-->
|
|
||||||
<!--<!–<div *ngIf="loadingMessage">–>-->
|
|
||||||
<!--<!–<div class="loader-small" style="text-align: center; padding-top: 170px; color: rgb(47, 64, 80); font-weight: bold;">–>-->
|
|
||||||
<!--<!–{{ loadingMessage }}–>-->
|
|
||||||
<!--<!–</div>–>-->
|
|
||||||
<!--<!–<!– <div class="whiteFilm"></div>–>–>-->
|
|
||||||
<!--<!–</div>–>-->
|
|
||||||
<!--</div>-->
|
|
|
@ -1,146 +0,0 @@
|
||||||
import {Component, Input, OnChanges, SimpleChanges, ViewChild} from '@angular/core';
|
|
||||||
import { Repository, User } from '../../../domain/typeScriptClasses';
|
|
||||||
import { RepositoryService } from '../../../services/repository.service';
|
|
||||||
import {loadingRepoMessage} from '../../../domain/shared-messages';
|
|
||||||
import {ConfirmationDialogComponent} from '../../../shared/reusablecomponents/confirmation-dialog.component';
|
|
||||||
import {FormControl} from '@angular/forms';
|
|
||||||
|
|
||||||
declare var UIkit: any;
|
|
||||||
|
|
||||||
@Component ({
|
|
||||||
selector: 'app-update-repo-admins',
|
|
||||||
templateUrl: 'update-repo-admins.component.html',
|
|
||||||
})
|
|
||||||
|
|
||||||
export class UpdateRepoAdminsComponent implements OnChanges {
|
|
||||||
|
|
||||||
@Input() repo: Repository;
|
|
||||||
|
|
||||||
loadingMessage: string;
|
|
||||||
errorMessage: string;
|
|
||||||
|
|
||||||
repoAdmins: User[];
|
|
||||||
|
|
||||||
selectedAdminForDelete: User;
|
|
||||||
|
|
||||||
isDeleteModalShown: boolean;
|
|
||||||
@ViewChild('deleteRepositoryAdminModal', { static: true })
|
|
||||||
public deleteRepositoryAdminModal: ConfirmationDialogComponent;
|
|
||||||
|
|
||||||
isAddModalShown: boolean;
|
|
||||||
@ViewChild('addRepositoryAdminModal', { static: true })
|
|
||||||
public addRepositoryAdminModal: ConfirmationDialogComponent;
|
|
||||||
|
|
||||||
modalErrorMessage: string;
|
|
||||||
modalLoadingMessage: string;
|
|
||||||
|
|
||||||
emailControl = new FormControl();
|
|
||||||
|
|
||||||
constructor (private repoService: RepositoryService) { }
|
|
||||||
|
|
||||||
ngOnChanges(changes: SimpleChanges): void {
|
|
||||||
this.getRepositoryAdmins();
|
|
||||||
}
|
|
||||||
|
|
||||||
getRepositoryAdmins() {
|
|
||||||
|
|
||||||
this.loadingMessage = 'Retrieving repository\'s admins...';
|
|
||||||
|
|
||||||
this.repoService.getRepositoryAdmins(this.repo.id).subscribe(
|
|
||||||
users => {
|
|
||||||
this.repoAdmins = users;
|
|
||||||
},
|
|
||||||
error => {
|
|
||||||
console.log(error);
|
|
||||||
this.loadingMessage = '';
|
|
||||||
this.errorMessage = 'Error retrieving the repository\'s admins';
|
|
||||||
},
|
|
||||||
() => {
|
|
||||||
this.loadingMessage = '';
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
showDeletionModal(repoAdmin: User) {
|
|
||||||
|
|
||||||
this.errorMessage = '';
|
|
||||||
this.loadingMessage = '';
|
|
||||||
|
|
||||||
this.selectedAdminForDelete = repoAdmin;
|
|
||||||
if (this.selectedAdminForDelete) {
|
|
||||||
this.deleteRepositoryAdminModal.showModal();
|
|
||||||
// UIkit.modal('#deletionModal').show();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
clearModal() {
|
|
||||||
this.selectedAdminForDelete = null;
|
|
||||||
this.modalErrorMessage = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
deleteRepoAdmin(event: any) {
|
|
||||||
console.log('deleting: ', this.selectedAdminForDelete.email);
|
|
||||||
|
|
||||||
// this.deleteRepositoryAdminModal.hideModal();
|
|
||||||
this.modalLoadingMessage = 'Deleting admin...';
|
|
||||||
|
|
||||||
this.repoService.deleteRepositoryAdmin(this.repo.id, this.selectedAdminForDelete.email).subscribe(
|
|
||||||
res => {
|
|
||||||
this.selectedAdminForDelete = null;
|
|
||||||
this.deleteRepositoryAdminModal.hideModal();
|
|
||||||
this.getRepositoryAdmins();
|
|
||||||
},
|
|
||||||
error => {
|
|
||||||
console.log('Error deleting repository\'s admins', error);
|
|
||||||
this.modalLoadingMessage = '';
|
|
||||||
this.modalErrorMessage = 'Error deleting admin';
|
|
||||||
},
|
|
||||||
() => {
|
|
||||||
this.modalLoadingMessage = '';
|
|
||||||
// this.deleteRepositoryAdminModal.hideModal();
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
showAddRepoAdminModal() {
|
|
||||||
|
|
||||||
this.emailControl.reset();
|
|
||||||
|
|
||||||
this.modalErrorMessage = '';
|
|
||||||
this.modalLoadingMessage = '';
|
|
||||||
|
|
||||||
this.addRepositoryAdminModal.showModal();
|
|
||||||
// UIkit.modal('#addAdminModal').show();
|
|
||||||
}
|
|
||||||
|
|
||||||
addRepositoryAdmin() {
|
|
||||||
|
|
||||||
this.modalLoadingMessage = 'Adding repository admin';
|
|
||||||
|
|
||||||
console.log('Adding repository admin..', this.emailControl.value);
|
|
||||||
|
|
||||||
this.repoService.addRepositoryAdmin(this.repo.id, this.emailControl.value).subscribe(
|
|
||||||
res => {
|
|
||||||
this.addRepositoryAdminModal.hideModal();
|
|
||||||
this.getRepositoryAdmins();
|
|
||||||
}, error => {
|
|
||||||
console.log('Error adding repository admin', error);
|
|
||||||
this.modalLoadingMessage = '';
|
|
||||||
if (error.status === 404) {
|
|
||||||
this.modalErrorMessage = 'This email address is not associated with an OpenAIRE user account.\n' +
|
|
||||||
'Please make sure the user has an OpenAIRE account and then try again.';
|
|
||||||
} else {
|
|
||||||
this.modalErrorMessage = 'Error adding the new admin, please try again. If the error persists, ' +
|
|
||||||
'please contact helpdesk@openaire.eu';
|
|
||||||
}
|
|
||||||
},
|
|
||||||
() => {
|
|
||||||
this.modalLoadingMessage = '';
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
// UIkit.modal('#addAdminModal').hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -22,21 +22,45 @@
|
||||||
<div class="uk-row-first">
|
<div class="uk-row-first">
|
||||||
<div class="uk-text-center md-card md-card-default md-card-hover uk-scrollspy-inview uk-animation-slide-top-medium
|
<div class="uk-text-center md-card md-card-default md-card-hover uk-scrollspy-inview uk-animation-slide-top-medium
|
||||||
datasourceTypeCard uk-inline-clip uk-transition-toggle" uk-scrollspy-class="" tabindex="0">
|
datasourceTypeCard uk-inline-clip uk-transition-toggle" uk-scrollspy-class="" tabindex="0">
|
||||||
<a [routerLink]="['repository']" [queryParams]="{ step: 'selectDatasource' }" class="el-link uk-position-cover uk-margin-remove-adjacent"></a>
|
<a [routerLink]="['literature']" [queryParams]="{ step: 'selectDatasource' }" class="el-link uk-position-cover uk-margin-remove-adjacent"></a>
|
||||||
<div class="md-card-content large-padding uk-margin-medium-top uk-margin-bottom">
|
<div class="md-card-content large-padding uk-margin-medium-top uk-margin-bottom">
|
||||||
<div class="">
|
<div class="">
|
||||||
<img class="el-image" src="../../../assets/imgs/datasourcetypes/Literature%20repository.svg" alt="" width="51">
|
<img class="el-image" src="../../../assets/imgs/datasourcetypes/Asset%203.svg" alt="" width="51">
|
||||||
</div>
|
</div>
|
||||||
<h3>Repository</h3>
|
<h3>Literature repository</h3>
|
||||||
<div class="uk-transition-slide-bottom uk-position-bottom uk-overlay uk-overlay-primary" (click)="goTo('repository')" style="cursor: pointer">
|
<!--<a [routerLink]="['literature']" [queryParams]="{ step: 'selectDatasource' }" class="el-link uk-position-cover uk-margin-remove-adjacent"></a>-->
|
||||||
<p class="uk-margin-remove">Make sure your repository is already registered in one of the following global registries -
|
<div class="uk-transition-slide-bottom uk-position-bottom uk-overlay uk-overlay-primary" (click)="goTo('literature')" style="cursor: pointer">
|
||||||
<a href="https://v2.sherpa.ac.uk/opendoar/">OpenDOAR<i class="fas fa-external-link-alt" style="margin-left: 3px !important;"></i></a>,
|
<p class="uk-margin-remove">Make sure your repository is already registered in OpenDOAR, the authoritative
|
||||||
<a href="http://www.re3data.org/">Re3data<i class="fas fa-external-link-alt" style="margin-left: 3px !important;"></i></a> or
|
directory of institutional and thematic OA repositories, and is compatible with the OpenAIRE Guidelines for Literature Repositories.</p>
|
||||||
<a href="https://fairsharing.org/search?fairsharingRegistry=Database">FAIRsharing<i class="fas fa-external-link-alt" style="margin-left: 3px !important;"></i></a>
|
<a href="http://v2.sherpa.ac.uk/opendoar/" target="_blank">
|
||||||
and is compatible with the
|
List provided by
|
||||||
<a href="https://guidelines.openaire.eu/en/latest/">OpenAIRE Guidelines<i class="fas fa-external-link-alt" style="margin-left: 3px !important;"></i></a>.
|
<br>
|
||||||
<br>For any questions please contact the <a href="mailto:helpdesk@openaire.eu" target="_blank">OpenAIRE helpdesk.<i class="fas fa-external-link-alt" style="margin-left: 3px !important;"></i></a>
|
OpenDOAR<i class="fas fa-external-link-alt" style="margin-left: 3px !important;"></i>
|
||||||
</p>
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="">
|
||||||
|
<div class="uk-text-center md-card md-card-default md-card-hover uk-scrollspy-inview uk-animation-slide-top-medium
|
||||||
|
datasourceTypeCard uk-inline-clip uk-transition-toggle" uk-scrollspy-class="" tabindex="0">
|
||||||
|
<a [routerLink]="['data']" [queryParams]="{ step: 'selectDatasource' }" class="el-link uk-position-cover uk-margin-remove-adjacent"></a>
|
||||||
|
<div class="md-card-content large-padding uk-margin-medium-top uk-margin-bottom">
|
||||||
|
<div class="">
|
||||||
|
<img class="el-image" src="../../../assets/imgs/datasourcetypes/Asset%202.svg" alt="" width="51">
|
||||||
|
</div>
|
||||||
|
<h3>Data repository</h3>
|
||||||
|
<!--<a [routerLink]="['data']" [queryParams]="{ step: 'selectDatasource' }" class="el-link uk-position-cover uk-margin-remove-adjacent"></a>-->
|
||||||
|
<div class="uk-transition-slide-bottom uk-position-bottom uk-overlay uk-overlay-primary" (click)="goTo('data')" style="cursor: pointer">
|
||||||
|
<p class="uk-margin-remove">Make sure your data repository is registered in Re3Data, the global registry
|
||||||
|
of research data repositories from different academic disciplines, and is compatible with the OpenAIRE Guidelines for Data Archives.</p>
|
||||||
|
<a href="http://www.re3data.org" target="_blank">
|
||||||
|
List provided by
|
||||||
|
<br>
|
||||||
|
Re3data<i class="fas fa-external-link-alt" style="margin-left: 3px !important;"></i>
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -48,7 +72,7 @@
|
||||||
<a [routerLink]="['journal']" [queryParams]="{ step: 'basicInformation' }" class="el-link uk-position-cover uk-margin-remove-adjacent"></a>
|
<a [routerLink]="['journal']" [queryParams]="{ step: 'basicInformation' }" class="el-link uk-position-cover uk-margin-remove-adjacent"></a>
|
||||||
<div class="md-card-content large-padding uk-margin-medium-top uk-margin-bottom">
|
<div class="md-card-content large-padding uk-margin-medium-top uk-margin-bottom">
|
||||||
<div class="">
|
<div class="">
|
||||||
<img class="el-image" src="../../../assets/imgs/datasourcetypes/Journal.svg" alt="" width="37">
|
<img class="el-image" src="../../../assets/imgs/datasourcetypes/Asset%208.svg" alt="" width="37">
|
||||||
</div>
|
</div>
|
||||||
<h3>Journal</h3>
|
<h3>Journal</h3>
|
||||||
<div class="uk-transition-slide-bottom uk-position-bottom uk-overlay uk-overlay-primary" (click)="goTo('journal')" style="cursor: pointer">
|
<div class="uk-transition-slide-bottom uk-position-bottom uk-overlay uk-overlay-primary" (click)="goTo('journal')" style="cursor: pointer">
|
||||||
|
@ -61,13 +85,17 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="uk-margin uk-grid uk-grid-match uk-grid-medium repositoryTypeSelection uk-child-width-1-3@l uk-child-widht-1-3@m" uk-grid="">
|
||||||
|
|
||||||
<div class="uk-row-first">
|
<div class="uk-row-first">
|
||||||
<div class="uk-text-center md-card md-card-default md-card-hover uk-scrollspy-inview uk-animation-slide-top-medium
|
<div class="uk-text-center md-card md-card-default md-card-hover uk-scrollspy-inview uk-animation-slide-top-medium
|
||||||
datasourceTypeCard uk-inline-clip uk-transition-toggle" uk-scrollspy-class="" tabindex="0">
|
datasourceTypeCard uk-inline-clip uk-transition-toggle" uk-scrollspy-class="" tabindex="0">
|
||||||
<a [routerLink]="['aggregator']" [queryParams]="{ step: 'basicInformation' }" class="el-link uk-position-cover uk-margin-remove-adjacent"></a>
|
<a [routerLink]="['aggregator']" [queryParams]="{ step: 'basicInformation' }" class="el-link uk-position-cover uk-margin-remove-adjacent"></a>
|
||||||
<div class="md-card-content large-padding uk-margin-medium-top uk-margin-bottom">
|
<div class="md-card-content large-padding uk-margin-medium-top uk-margin-bottom">
|
||||||
<div class="">
|
<div class="">
|
||||||
<img class="el-image" src="../../../assets/imgs/datasourcetypes/Aggregator.svg" alt="" width="50">
|
<img class="el-image" src="../../../assets/imgs/datasourcetypes/Asset%204.svg" alt="" width="50">
|
||||||
</div>
|
</div>
|
||||||
<h3>Aggregator</h3>
|
<h3>Aggregator</h3>
|
||||||
<div class="uk-transition-slide-bottom uk-position-bottom uk-overlay uk-overlay-primary" (click)="goTo('aggregator')" style="cursor: pointer">
|
<div class="uk-transition-slide-bottom uk-position-bottom uk-overlay uk-overlay-primary" (click)="goTo('aggregator')" style="cursor: pointer">
|
||||||
|
@ -82,31 +110,6 @@
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="uk-margin uk-grid uk-grid-match uk-grid-medium repositoryTypeSelection uk-child-width-1-3@l uk-child-widht-1-3@m" uk-grid="">
|
|
||||||
|
|
||||||
<div class="">
|
|
||||||
<div class="uk-text-center md-card md-card-default md-card-hover uk-scrollspy-inview uk-animation-slide-top-medium
|
|
||||||
datasourceTypeCard uk-inline-clip uk-transition-toggle" uk-scrollspy-class="" tabindex="0">
|
|
||||||
<a [routerLink]="['cris']" [queryParams]="{ step: 'selectDatasource' }" class="el-link uk-position-cover uk-margin-remove-adjacent"></a>
|
|
||||||
<div class="md-card-content large-padding uk-margin-medium-top uk-margin-bottom">
|
|
||||||
<div class="">
|
|
||||||
<img class="el-image" src="../../../assets/imgs/datasourcetypes/Cris.svg" alt="" width="50">
|
|
||||||
</div>
|
|
||||||
<h3>CRIS systems</h3>
|
|
||||||
<div class="uk-transition-slide-bottom uk-position-bottom uk-overlay uk-overlay-primary" (click)="goTo('cris')" style="cursor: pointer">
|
|
||||||
<p class="uk-margin-remove">Please make sure your CRIS is registered in DRIS the Directory of Research
|
|
||||||
Information Systems, and is compatible with the OpenAIRE Guidelines for CRIS Managers.
|
|
||||||
<a href="https://dspacecris.eurocris.org/cris/explore/dris" target="_blank">
|
|
||||||
List provided by DRIS.<i class="fas fa-external-link-alt" style="margin-left: 3px !important;"></i>
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr style="border-top: 1px solid #dedede; margin-top: 40px; margin-bottom: 30px;">
|
<hr style="border-top: 1px solid #dedede; margin-top: 40px; margin-bottom: 30px;">
|
||||||
|
|
||||||
<h2 class="heading_b uk-margin-bottom">Coming soon</h2>
|
<h2 class="heading_b uk-margin-bottom">Coming soon</h2>
|
||||||
|
@ -119,7 +122,24 @@
|
||||||
<a class="el-link uk-position-cover uk-margin-remove-adjacent uk-disabled"></a>
|
<a class="el-link uk-position-cover uk-margin-remove-adjacent uk-disabled"></a>
|
||||||
<div class="md-card-content large-padding uk-margin-medium-top uk-margin-bottom">
|
<div class="md-card-content large-padding uk-margin-medium-top uk-margin-bottom">
|
||||||
<div class="">
|
<div class="">
|
||||||
<img class="el-image" src="../../../assets/imgs/datasourcetypes/Software.svg" alt="" width="51">
|
<img class="el-image" src="../../../assets/imgs/datasourcetypes/Asset%201.svg" alt="" width="50">
|
||||||
|
</div>
|
||||||
|
<h3>CRIS systems</h3>
|
||||||
|
<div class="uk-transition-slide-bottom uk-position-bottom uk-overlay uk-overlay-primary">
|
||||||
|
<p class="uk-margin-remove">Stay tuned.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="whiteFilm"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="">
|
||||||
|
<div class="uk-text-center md-card md-card-default md-card-hover uk-scrollspy-inview uk-animation-slide-top-medium
|
||||||
|
datasourceTypeCard uk-inline-clip uk-transition-toggle" uk-scrollspy-class="" tabindex="0">
|
||||||
|
<a class="el-link uk-position-cover uk-margin-remove-adjacent uk-disabled"></a>
|
||||||
|
<div class="md-card-content large-padding uk-margin-medium-top uk-margin-bottom">
|
||||||
|
<div class="">
|
||||||
|
<img class="el-image" src="../../../assets/imgs/datasourcetypes/Asset%207.svg" alt="" width="51">
|
||||||
</div>
|
</div>
|
||||||
<h3>Software</h3>
|
<h3>Software</h3>
|
||||||
<div class="uk-transition-slide-bottom uk-position-bottom uk-overlay uk-overlay-primary">
|
<div class="uk-transition-slide-bottom uk-position-bottom uk-overlay uk-overlay-primary">
|
||||||
|
@ -136,7 +156,7 @@
|
||||||
<a class="el-link uk-position-cover uk-margin-remove-adjacent uk-disabled"></a>
|
<a class="el-link uk-position-cover uk-margin-remove-adjacent uk-disabled"></a>
|
||||||
<div class="md-card-content large-padding uk-margin-medium-top uk-margin-bottom">
|
<div class="md-card-content large-padding uk-margin-medium-top uk-margin-bottom">
|
||||||
<div class="">
|
<div class="">
|
||||||
<img class="el-image" src="../../../assets/imgs/datasourcetypes/Catch-all.svg" alt="" width="47">
|
<img class="el-image" src="../../../assets/imgs/datasourcetypes/Asset%206.svg" alt="" width="47">
|
||||||
</div>
|
</div>
|
||||||
<h3>Catch-all</h3>
|
<h3>Catch-all</h3>
|
||||||
<div class="uk-transition-slide-bottom uk-position-bottom uk-overlay uk-overlay-primary">
|
<div class="uk-transition-slide-bottom uk-position-bottom uk-overlay uk-overlay-primary">
|
||||||
|
@ -147,28 +167,26 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="">
|
|
||||||
<div class="uk-text-center md-card md-card-default md-card-hover uk-scrollspy-inview uk-animation-slide-top-medium
|
|
||||||
datasourceTypeCard uk-inline-clip uk-transition-toggle" uk-scrollspy-class="" tabindex="0">
|
|
||||||
<a class="el-link uk-position-cover uk-margin-remove-adjacent uk-disabled"></a>
|
|
||||||
<div class="md-card-content large-padding uk-margin-medium-top uk-margin-bottom">
|
|
||||||
<div class="">
|
|
||||||
<img class="el-image" src="../../../assets/imgs/datasourcetypes/Other.svg" alt="" width="50">
|
|
||||||
</div>
|
|
||||||
<h3>Other sources</h3>
|
|
||||||
<div class="uk-transition-slide-bottom uk-position-bottom uk-overlay uk-overlay-primary">
|
|
||||||
<p class="uk-margin-remove">Stay tuned.</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="whiteFilm"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="uk-margin uk-grid uk-grid-match uk-grid-medium repositoryTypeSelection uk-child-width-1-3@l uk-child-widht-1-3@m" uk-grid="">
|
<div class="uk-margin uk-grid uk-grid-match uk-grid-medium repositoryTypeSelection uk-child-width-1-3@l uk-child-widht-1-3@m" uk-grid="">
|
||||||
|
|
||||||
|
<div class="uk-row-first">
|
||||||
|
<div class="uk-text-center md-card md-card-default md-card-hover uk-scrollspy-inview uk-animation-slide-top-medium
|
||||||
|
datasourceTypeCard uk-inline-clip uk-transition-toggle" uk-scrollspy-class="" tabindex="0">
|
||||||
|
<a class="el-link uk-position-cover uk-margin-remove-adjacent uk-disabled"></a>
|
||||||
|
<div class="md-card-content large-padding uk-margin-medium-top uk-margin-bottom">
|
||||||
|
<div class="">
|
||||||
|
<img class="el-image" src="../../../assets/imgs/datasourcetypes/Asset%205.svg" alt="" width="50">
|
||||||
|
</div>
|
||||||
|
<h3>Other sources</h3>
|
||||||
|
<div class="uk-transition-slide-bottom uk-position-bottom uk-overlay uk-overlay-primary">
|
||||||
|
<p class="uk-margin-remove">Stay tuned.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="whiteFilm"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import {Component, OnInit} from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import {Router} from '@angular/router';
|
import { Router } from "@angular/router";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-sources-register',
|
selector: 'app-sources-register',
|
||||||
|
@ -8,28 +8,27 @@ import {Router} from '@angular/router';
|
||||||
|
|
||||||
export class SourcesRegisterComponent implements OnInit {
|
export class SourcesRegisterComponent implements OnInit {
|
||||||
|
|
||||||
constructor(private router: Router) {}
|
constructor(private router: Router) {
|
||||||
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
const body = document.getElementsByTagName('body')[0];
|
let body = document.getElementsByTagName('body')[0];
|
||||||
body.classList.remove('top_bar_active'); // remove the class
|
body.classList.remove("top_bar_active"); //remove the class
|
||||||
body.classList.remove('page_heading_active');
|
body.classList.remove("page_heading_active");
|
||||||
body.classList.remove('landing');
|
body.classList.remove("landing");
|
||||||
body.classList.add('dashboard');
|
body.classList.add("dashboard");
|
||||||
}
|
}
|
||||||
|
|
||||||
// fixme still when I click the link inside the text in overlay, this event happens as well (I go to the first step of the wizard)
|
// fixme still when I click the link inside the text in overlay, this event happens as well (I go to the first step of the wizard)
|
||||||
goTo(datasourceType: string) {
|
goTo(datasourceType: string) {
|
||||||
if (datasourceType === 'repository') {
|
if(datasourceType==='literature') {
|
||||||
this.router.navigateByUrl(`/sources/register/${datasourceType}?step=selectDatasource`);
|
this.router.navigateByUrl(`/sources/register/${datasourceType}?step=selectDatasource`);
|
||||||
} else if (datasourceType === 'data') {
|
} else if(datasourceType==='data') {
|
||||||
this.router.navigateByUrl(`/sources/register/${datasourceType}?step=selectDatasource`);
|
this.router.navigateByUrl(`/sources/register/${datasourceType}?step=selectDatasource`);
|
||||||
} else if (datasourceType === 'journal') {
|
} else if(datasourceType==='journal') {
|
||||||
this.router.navigateByUrl(`/sources/register/${datasourceType}?step=basicInformation`);
|
this.router.navigateByUrl(`/sources/register/${datasourceType}?step=basicInformation`);
|
||||||
} else if (datasourceType === 'aggregator') {
|
} else if(datasourceType==='aggregator') {
|
||||||
this.router.navigateByUrl(`/sources/register/${datasourceType}?step=basicInformation`);
|
this.router.navigateByUrl(`/sources/register/${datasourceType}?step=basicInformation`);
|
||||||
} else if (datasourceType === 'cris') {
|
|
||||||
this.router.navigateByUrl(`/sources/register/${datasourceType}?step=selectDatasource`);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,45 +5,20 @@
|
||||||
{{ alertMessage }}
|
{{ alertMessage }}
|
||||||
</div>
|
</div>
|
||||||
<div class="uk-alert uk-alert-info">
|
<div class="uk-alert uk-alert-info">
|
||||||
|
Please make sure your repository is registered in
|
||||||
<ng-container *ngIf="mode === 'repository'">
|
<a target="_blank" href="{{ sourceUrl }}">
|
||||||
Please make sure your repository is registered in <a href="https://v2.sherpa.ac.uk/opendoar/" target="_blank">OpenDOAR</a>,
|
<i class="fas fa-external-link-alt" style="margin-right:3px;"></i>{{ sourceTitle }}
|
||||||
<a href="http://www.re3data.org/" target="_blank">Re3data</a> or <a href="https://fairsharing.org/search?fairsharingRegistry=Database" target="_blank">FAIRsharing</a>.
|
</a>
|
||||||
<span *ngIf="opendoarlatestUpdate && (opendoarlatestUpdate !== 'null')">
|
. <br>
|
||||||
<br><b>Last Updated (OpenDOAR): </b>{{ opendoarlatestUpdate }}
|
<span *ngIf="latestUpdate && (latestUpdate !== 'null')">
|
||||||
</span>
|
<b>Last Updated: </b>{{ latestUpdate }}
|
||||||
<span *ngIf="re3datalatestUpdate && (re3datalatestUpdate !== 'null')">
|
</span>
|
||||||
<br><b>Last Updated (Re3data): </b>{{ re3datalatestUpdate }}
|
|
||||||
</span>
|
|
||||||
<span *ngIf="fairsharinglatestUpdate && (fairsharinglatestUpdate !== 'null')">
|
|
||||||
<br><b>Last Updated (FAIRsharing): </b>{{ fairsharinglatestUpdate }}
|
|
||||||
</span>
|
|
||||||
</ng-container>
|
|
||||||
|
|
||||||
<ng-container *ngIf="mode === 'cris'">
|
|
||||||
Please make sure your Research Information System is registered in <a href="https://eurocris.org" target="_blank">euroCRIS</a>.
|
|
||||||
<a href="https://eurocris.org/dris/dris-form" target="_blank"><br><i class="fas fa-external-link-alt" style="margin-right:3px;"></i>euroCRIS DRIS</a>
|
|
||||||
<span *ngIf="latestUpdate && (latestUpdate !== 'null')">
|
|
||||||
<br><b>Last Updated: </b>{{ latestUpdate }}
|
|
||||||
</span>
|
|
||||||
</ng-container>
|
|
||||||
<!-- <span *ngIf="latestUpdate && (latestUpdate !== 'null')">-->
|
|
||||||
<!-- <ng-container *ngIf="mode==='repository'">-->
|
|
||||||
<!-- <b>Last Updated (OpenDOAR): </b>{{ latestUpdate }}-->
|
|
||||||
<!-- <b>Last Updated (Re3data): </b>{{ latestUpdate }}-->
|
|
||||||
<!-- <b>Last Updated (FAIRsharing): </b>{{ latestUpdate }}-->
|
|
||||||
<!-- </ng-container>-->
|
|
||||||
<!-- <ng-container *ngIf="mode==='cris'">-->
|
|
||||||
<!-- -->
|
|
||||||
<!-- </ng-container>-->
|
|
||||||
<!-- </span>-->
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="uk-margin-medium-top">
|
<div class="uk-margin-medium-top">
|
||||||
<div class="md-input-wrapper md-input-filled">
|
<div class="md-input-wrapper md-input-filled">
|
||||||
<label style="top: -16px;" class="">Select country</label>
|
<label style="top: -16px;" class="">Select country</label>
|
||||||
<select class="md-input" (change)="getReposInCountry($event.target.value)">
|
<select class="md-input" (change)="getReposInCountry($event.target.value)">
|
||||||
<option value="" disabled selected>-- none selected --</option>
|
<option value="" disabled>-- none selected --</option>
|
||||||
<option *ngFor="let country of countries; let i = index" value="{{ i }}">{{ country.name ? country.name :
|
<option *ngFor="let country of countries; let i = index" value="{{ i }}">{{ country.name ? country.name :
|
||||||
country.code }}
|
country.code }}
|
||||||
</option>
|
</option>
|
||||||
|
@ -54,12 +29,12 @@
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="selectedCountry">
|
<div *ngIf="selectedCountry">
|
||||||
<div>
|
<div>
|
||||||
<h2 class="heading_b uk-margin-bottom uk-margin-medium-top">{{ sourceTitle }}
|
<h2 class="heading_b uk-margin-bottom uk-margin-medium-top">{{ sourceTitle }} Repositories in {{
|
||||||
{{mode === 'cris' ? '- Research Information Systems' : 'Repositories'}} in
|
selectedCountry.name ? selectedCountry.name : selectedCountry.code }}</h2>
|
||||||
{{selectedCountry.name ? selectedCountry.name : selectedCountry.code }}</h2>
|
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="loadingMessage" class="loading-big">
|
<div *ngIf="loadingMessage" class="loading-big">
|
||||||
<div class="loader-big" style="text-align: center; padding-top: 170px; color: rgb(47, 64, 80); font-weight: bold;">
|
<div class="loader-big"
|
||||||
|
style="text-align: center; padding-top: 170px; color: rgb(47, 64, 80); font-weight: bold;">
|
||||||
{{ loadingMessage }}
|
{{ loadingMessage }}
|
||||||
</div>
|
</div>
|
||||||
<div class="whiteFilm"></div>
|
<div class="whiteFilm"></div>
|
||||||
|
@ -76,17 +51,21 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="form-group" *ngFor="let repo of countryRepos | repoFilter: searchBox">
|
<div class="form-group"
|
||||||
<label for="{{ repo.id }}" class="uk-button uk-link-muted visible_uk_links" style="display: block; text-align: left;">
|
*ngFor="let repo of countryRepos | repoFilter: searchBox">
|
||||||
|
<label for="{{ repo.id }}"
|
||||||
|
class="uk-button uk-link-muted visible_uk_links"
|
||||||
|
style="display: block; text-align: left;">
|
||||||
<input type="radio" value="{{ repo.id }}" id="{{ repo.id }}" name="repositories"
|
<input type="radio" value="{{ repo.id }}" id="{{ repo.id }}" name="repositories"
|
||||||
(change)="onChooseRepository(repo.id)" [disabled]="repo.registeredby !== null">
|
(change)="onChooseRepository(repo.id)" [disabled]="repo.registeredby !== null">
|
||||||
<span>{{(repo.officialname !== null) ? repo.officialname : repo.englishname }}
|
<span>
|
||||||
<span *ngIf="repo.registeredby !== null"
|
{{(repo.officialname !== null) ? repo.officialname : repo.englishname }}
|
||||||
class="uk-badge uk-badge-warning uk-margin-small-right uk-margin-small-left">Registered</span>
|
<span *ngIf="repo.registeredby !== null"
|
||||||
<a target="_blank" href="{{ (repo.websiteurl !== null) ? repo.websiteurl : '' }}" [ngStyle]="">
|
class="uk-badge uk-badge-warning uk-margin-small-right uk-margin-small-left">Registered</span>
|
||||||
<i class="fas fa-external-link-alt externalLink"></i>
|
<a target="_blank" href="{{ (repo.websiteurl !== null) ? repo.websiteurl : '' }}" [ngStyle]="">
|
||||||
</a>
|
<i class="fas fa-external-link-alt externalLink"></i>
|
||||||
</span>
|
</a>
|
||||||
|
</span>
|
||||||
<!--TODO uncomment if we still need the next button everywhere-->
|
<!--TODO uncomment if we still need the next button everywhere-->
|
||||||
<!--<div *ngIf="repoId == repo.id" class="uk-float-right">-->
|
<!--<div *ngIf="repoId == repo.id" class="uk-float-right">-->
|
||||||
<!--<a class="uk-button uk-button-primary uk-border-rounded uk-vertical-align-middle"-->
|
<!--<a class="uk-button uk-button-primary uk-border-rounded uk-vertical-align-middle"-->
|
||||||
|
|
|
@ -28,9 +28,6 @@ export class RegisterDatasourceSelectExistingComponent implements OnInit {
|
||||||
sourceUrl: string;
|
sourceUrl: string;
|
||||||
sourceTitle: string;
|
sourceTitle: string;
|
||||||
latestUpdate: string;
|
latestUpdate: string;
|
||||||
opendoarlatestUpdate: string;
|
|
||||||
re3datalatestUpdate: string;
|
|
||||||
fairsharinglatestUpdate: string;
|
|
||||||
|
|
||||||
@Input() mode: string;
|
@Input() mode: string;
|
||||||
|
|
||||||
|
@ -47,53 +44,51 @@ export class RegisterDatasourceSelectExistingComponent implements OnInit {
|
||||||
this.hasSelectedCountry = false;
|
this.hasSelectedCountry = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
setUpSourceInfo() { // deprecated?
|
setUpSourceInfo() {
|
||||||
if (this.mode === 'opendoar') {
|
if (this.mode === 'opendoar') {
|
||||||
this.sourceUrl = 'http://v2.sherpa.ac.uk/opendoar/';
|
this.sourceUrl = 'http://v2.sherpa.ac.uk/opendoar/';
|
||||||
this.sourceTitle = 'OpenDOAR';
|
this.sourceTitle = 'OpenDOAR';
|
||||||
} else if (this.mode === 're3data') {
|
} else if (this.mode === 're3data') {
|
||||||
this.sourceUrl = 'https://www.re3data.org/';
|
this.sourceUrl = 'https://www.re3data.org/';
|
||||||
this.sourceTitle = 'Re3data';
|
this.sourceTitle = 'Re3data';
|
||||||
} else if (this.mode === 'cris') {
|
|
||||||
this.sourceUrl = 'https://eurocris.org';
|
|
||||||
this.sourceTitle = 'euroCRIS';
|
|
||||||
}
|
}
|
||||||
this.getLatestUpdate();
|
this.getLatestUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
getCountries() {
|
getCountries() {
|
||||||
this.repoService.getCountries().subscribe(
|
this.repoService.getCountries()
|
||||||
countries => {
|
.subscribe(
|
||||||
// TODO: check again getCountries null return values
|
countries => {
|
||||||
/*/!* check for null values *!/
|
// TODO: check again getCountries null return values
|
||||||
let nullVals = countries.filter(el => el.name === null);
|
/*/!* check for null values *!/
|
||||||
/!* remove null values from array *!/
|
let nullVals = countries.filter(el => el.name === null);
|
||||||
for (let nullVal of nullVals) {
|
/!* remove null values from array *!/
|
||||||
let i = countries.findIndex(el => el === nullVal);
|
for (let nullVal of nullVals) {
|
||||||
/!* remove null value from array *!/
|
let i = countries.findIndex(el => el === nullVal);
|
||||||
if (i !== -1) { countries.splice(i, 1); }
|
/!* remove null value from array *!/
|
||||||
}*/
|
if (i !== -1) { countries.splice(i, 1); }
|
||||||
|
}*/
|
||||||
|
|
||||||
/* sort countries array */
|
/* sort countries array */
|
||||||
this.countries = countries.sort( function(a, b) {
|
this.countries = countries.sort( function(a, b) {
|
||||||
if (a.name < b.name) {
|
if (a.name < b.name) {
|
||||||
return -1;
|
return -1;
|
||||||
} else if (a.name > b.name) {
|
} else if (a.name > b.name) {
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
},
|
},
|
||||||
error => {
|
error => {
|
||||||
this.alertMessage = noServiceMessage;
|
this.alertMessage = noServiceMessage;
|
||||||
console.log(error);
|
console.log(error);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getReposInCountry(i: number) {
|
getReposInCountry(i: number) {
|
||||||
const country = this.countries[i];
|
const country = this.countries[i];
|
||||||
// console.log(`I got ${country} and ${this.mode}`);
|
console.log(`I got ${country} and ${this.mode}`);
|
||||||
this.countryRepos = [];
|
this.countryRepos = [];
|
||||||
this.selectedCountry = country;
|
this.selectedCountry = country;
|
||||||
this.hasSelectedCountry = false;
|
this.hasSelectedCountry = false;
|
||||||
|
@ -123,21 +118,14 @@ export class RegisterDatasourceSelectExistingComponent implements OnInit {
|
||||||
}
|
}
|
||||||
this.loadingMessage = '';
|
this.loadingMessage = '';
|
||||||
this.alertMessage = '';
|
this.alertMessage = '';
|
||||||
// console.log('this.selectedCountry became', JSON.stringify(this.selectedCountry));
|
console.log('this.selectedCountry became', JSON.stringify(this.selectedCountry));
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
getLatestUpdate() {
|
getLatestUpdate() {
|
||||||
return this.repoService.getListLatestUpdate(this.mode).subscribe(
|
return this.repoService.getListLatestUpdate(this.mode).subscribe (
|
||||||
responseDate => {
|
responseDate => this.latestUpdate = responseDate['lastCollectionDate'],
|
||||||
if (this.mode === 'cris') { this.latestUpdate = responseDate['lastCollectionDate']; }
|
|
||||||
if (this.mode === 'repository') {
|
|
||||||
this.opendoarlatestUpdate = responseDate['opendoar'];
|
|
||||||
this.re3datalatestUpdate = responseDate['re3data'];
|
|
||||||
this.fairsharinglatestUpdate = responseDate['fairsharing'];
|
|
||||||
}
|
|
||||||
},
|
|
||||||
error => console.log(error)
|
error => console.log(error)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,34 +23,36 @@
|
||||||
<div class="steps clearfix">
|
<div class="steps clearfix">
|
||||||
<ul role="tablist">
|
<ul role="tablist">
|
||||||
<li role="tab" class="first {{ (currentStep == 0) ? 'current' : '' }}" aria-disabled="false" aria-selected="true">
|
<li role="tab" class="first {{ (currentStep == 0) ? 'current' : '' }}" aria-disabled="false" aria-selected="true">
|
||||||
<!-- <a id="wizard_advanced-t-0" href="#wizard_advanced-h-0" aria-controls="wizard_advanced-p-0">-->
|
<a id="wizard_advanced-t-0" href="#wizard_advanced-h-0" aria-controls="wizard_advanced-p-0">
|
||||||
<a id="wizard_advanced-t-0" aria-controls="wizard_advanced-p-0" style="cursor: default">
|
|
||||||
<!--<span class="current-info audible">current step: </span>-->
|
<!--<span class="current-info audible">current step: </span>-->
|
||||||
<span class="number">1</span>
|
<span class="number">1</span>
|
||||||
<span class="title">Select {{currentMode === 'cris' ? 'Datasource' : 'Repository'}}</span>
|
<span class="title">Select Repository</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li role="tab" class="{{ (currentStep < 1) ? 'disabled' : '' }} {{ (currentStep == 1) ? 'current' : '' }}" aria-disabled="true">
|
<li role="tab" class="{{ (currentStep < 1) ? 'disabled' : '' }} {{ (currentStep == 1) ? 'current' : '' }}" aria-disabled="true">
|
||||||
<a id="wizard_advanced-t-1" aria-controls="wizard_advanced-p-1" style="cursor: default">
|
<a id="wizard_advanced-t-1" href="#wizard_advanced-h-1" aria-controls="wizard_advanced-p-1">
|
||||||
<span class="number">2</span>
|
<span class="number">2</span>
|
||||||
<span class="title">Register data source</span>
|
<span class="title">Register data source</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li role="tab" class=" {{ (currentStep < 2) ? 'disabled' : '' }} {{ (currentStep == 2) ? 'current' : '' }}" aria-disabled="true">
|
<li role="tab" class=" {{ (currentStep < 2) ? 'disabled' : '' }} {{ (currentStep == 2) ? 'current' : '' }}" aria-disabled="true">
|
||||||
<a id="wizard_advanced-t-2" aria-controls="wizard_advanced-p-2" style="cursor: default">
|
<a id="wizard_advanced-t-2" href="#wizard_advanced-h-2" aria-controls="wizard_advanced-p-2">
|
||||||
<span class="number">3</span>
|
<span class="number">3</span>
|
||||||
<span class="title">Register interface</span>
|
<span class="title">Register interface</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li role="tab" class=" {{ (currentStep < 3) ? 'disabled' : '' }} {{ (currentStep == 3) ? 'current' : '' }}" aria-disabled="true">
|
<li role="tab" class="last {{ (currentStep < 3) ? 'disabled' : '' }} {{ (currentStep == 3) ? 'current' : '' }}" aria-disabled="true">
|
||||||
<a id="wizard_advanced-t-3" aria-controls="wizard_advanced-p-3" style="cursor: default">
|
<!-- ToU: replace above line with below line -->
|
||||||
|
<!--<li role="tab" class=" {{ (currentStep < 3) ? 'disabled' : '' }} {{ (currentStep == 3) ? 'current' : '' }}" aria-disabled="true">-->
|
||||||
|
<a id="wizard_advanced-t-3" href="#wizard_advanced-h-3" aria-controls="wizard_advanced-p-3">
|
||||||
<span class="number">4</span>
|
<span class="number">4</span>
|
||||||
<span class="title">Terms of Use</span>
|
<!-- ToU: uncomment this section -->
|
||||||
|
<!--<span class="title">Terms of Use</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li role="tab" class="last {{ (currentStep < 4) ? 'disabled' : '' }} {{ (currentStep == 4) ? 'current' : '' }}" aria-disabled="true">
|
<li role="tab" class="last {{ (currentStep < 4) ? 'disabled' : '' }} {{ (currentStep == 4) ? 'current' : '' }}" aria-disabled="true">
|
||||||
<a id="wizard_advanced-t-4" aria-controls="wizard_advanced-p-4" style="cursor: default">
|
<a id="wizard_advanced-t-4" href="#wizard_advanced-h-4" aria-controls="wizard_advanced-p-4">
|
||||||
<span class="number">5</span>
|
<span class="number">5</span>-->
|
||||||
<span class="title">Finish</span>
|
<span class="title">Finish</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -71,13 +73,11 @@
|
||||||
<section id="wizard_advanced-p-0" role="tabpanel" aria-labelledby="wizard_advanced-h-0"
|
<section id="wizard_advanced-p-0" role="tabpanel" aria-labelledby="wizard_advanced-h-0"
|
||||||
class="body step-0 {{ (currentStep == 0) ? 'current' : '' }}" data-step="0" aria-hidden="false">
|
class="body step-0 {{ (currentStep == 0) ? 'current' : '' }}" data-step="0" aria-hidden="false">
|
||||||
|
|
||||||
<app-select-existing-datasource
|
<app-select-existing-datasource *ngIf="(currentStep === 0) && (currentMode !== null) && !loadingMessage"
|
||||||
*ngIf="(currentStep === 0) && (currentMode !== null) && !loadingMessage"
|
#datasourcesByCountry
|
||||||
#datasourcesByCountry
|
[mode]="currentMode"
|
||||||
[mode]="currentMode"
|
(emitRepoId)="getRepoId($event)"
|
||||||
(emitRepoId)="getRepoId($event)"
|
(promptNext)="goToStep2($event)"></app-select-existing-datasource>
|
||||||
(promptNext)="goToStep2($event)">
|
|
||||||
</app-select-existing-datasource>
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- second section -->
|
<!-- second section -->
|
||||||
|
@ -86,9 +86,9 @@
|
||||||
class="body step-1 {{ (currentStep == 1) ? 'current' : '' }}" data-step="1" aria-hidden="true">
|
class="body step-1 {{ (currentStep == 1) ? 'current' : '' }}" data-step="1" aria-hidden="true">
|
||||||
|
|
||||||
<datasource-update-form *ngIf="(currentStep === 1) && (repo !== null) && !loadingMessage"
|
<datasource-update-form *ngIf="(currentStep === 1) && (repo !== null) && !loadingMessage"
|
||||||
#registerDatasource [selectedRepo]="repo" [mode]="currentMode"
|
#registerDatasource
|
||||||
(emittedInfo)="getUpdatedRepo($event)">
|
[selectedRepo]="repo"
|
||||||
</datasource-update-form>
|
(emittedInfo)="getUpdatedRepo($event)"></datasource-update-form>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- third section -->
|
<!-- third section -->
|
||||||
|
@ -102,7 +102,7 @@
|
||||||
<div>
|
<div>
|
||||||
<div class="md-card" style="height: 100%">
|
<div class="md-card" style="height: 100%">
|
||||||
<app-repository-interface-form #interfacesArray
|
<app-repository-interface-form #interfacesArray
|
||||||
[data]="inter" [mode]="currentMode"
|
[data]="inter"
|
||||||
(emitDeleteInterface)="removeInterfaceFromList($event)">
|
(emitDeleteInterface)="removeInterfaceFromList($event)">
|
||||||
</app-repository-interface-form>
|
</app-repository-interface-form>
|
||||||
</div>
|
</div>
|
||||||
|
@ -131,24 +131,28 @@
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- fourth section -->
|
<!-- fourth section -->
|
||||||
<h3 id="wizard_advanced-h-3" tabindex="-1" class="title {{ (currentStep == 3) ? 'current' : '' }}">Terms of Use</h3>
|
<h3 id="wizard_advanced-h-3" tabindex="-1" class="title {{ (currentStep == 3) ? 'current' : '' }}">Finish</h3>
|
||||||
|
<!-- ToU: replace line above with line below -->
|
||||||
|
<!--<h3 id="wizard_advanced-h-3" tabindex="-1" class="title {{ (currentStep == 3) ? 'current' : '' }}">Terms of Use</h3>-->
|
||||||
<section id="wizard_advanced-p-3" role="tabpanel" aria-labelledby="wizard_advanced-h-3"
|
<section id="wizard_advanced-p-3" role="tabpanel" aria-labelledby="wizard_advanced-h-3"
|
||||||
class="body step-3 {{ (currentStep == 3) ? 'current' : '' }}" data-step="3" aria-hidden="true">
|
class="body step-3 {{ (currentStep == 3) ? 'current' : '' }}" data-step="2" aria-hidden="true">
|
||||||
|
|
||||||
|
<div *ngIf="(currentStep === 3) && !loadingMessage" class="row openAIRECompliantLogoDownload">
|
||||||
|
<!-- ToU: replace above 3 lines (starting at class="body step-3) with commented section below -->
|
||||||
|
<!--class="body step-3 {{ (currentStep == 3) ? 'current' : '' }}" data-step="3" aria-hidden="true">
|
||||||
<div *ngIf="(currentStep === 3) && !loadingMessage" class="uk-grid uk-grid-match">
|
<div *ngIf="(currentStep === 3) && !loadingMessage" class="uk-grid uk-grid-match">
|
||||||
<datasource-update-terms-form #updateTermsForm
|
<datasource-update-terms-form #updateTermsForm
|
||||||
[selectedRepo]="repo"
|
[selectedRepo]="repo"
|
||||||
[showButton]=false
|
[showButton]=false></datasource-update-terms-form>
|
||||||
(emittedInfo)="getTerms($event)">
|
|
||||||
</datasource-update-terms-form>
|
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- fifth section -->
|
<!– fifth section –>
|
||||||
<h3 id="wizard_advanced-h-4" tabindex="-1" class="title {{ (currentStep == 4) ? 'current' : '' }}">Finish</h3>
|
<h3 id="wizard_advanced-h-4" tabindex="-1" class="title {{ (currentStep == 4) ? 'current' : '' }}">Finish</h3>
|
||||||
<section id="wizard_advanced-p-4" role="tabpanel" aria-labelledby="wizard_advanced-h-4"
|
<section id="wizard_advanced-p-4" role="tabpanel" aria-labelledby="wizard_advanced-h-4"
|
||||||
class="body step-4 {{ (currentStep == 4) ? 'current' : '' }}" data-step="3" aria-hidden="true">
|
class="body step-4 {{ (currentStep == 4) ? 'current' : '' }}" data-step="3" aria-hidden="true">
|
||||||
|
|
||||||
<div *ngIf="(currentStep === 4) && !loadingMessage" class="row openAIRECompliantLogoDownload">
|
<div *ngIf="(currentStep === 4) && !loadingMessage" class="row openAIRECompliantLogoDownload">-->
|
||||||
<div class="col-lg-12">
|
<div class="col-lg-12">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<div>
|
<div>
|
||||||
|
@ -156,9 +160,8 @@
|
||||||
<h2 class="openAIRECompliantLogoMessage">
|
<h2 class="openAIRECompliantLogoMessage">
|
||||||
We successfully received the request to register/update your repository with/on OpenAIRE.
|
We successfully received the request to register/update your repository with/on OpenAIRE.
|
||||||
It usually takes about 6 weeks to check your metadata and index it.
|
It usually takes about 6 weeks to check your metadata and index it.
|
||||||
For questions, please create a ticket
|
For questions, please create a <a href="https://www.openaire.eu/support/helpdesk" target="_blank">helpdesk ticket</a>
|
||||||
<!-- <a href="https://www.openaire.eu/support/helpdesk" target="_blank">helpdesk ticket</a>-->
|
or write to <a href="mailto:helpdesk@openaire.eu">helpdesk@openaire.eu</a>.
|
||||||
writing to <a href="mailto:helpdesk@openaire.eu">helpdesk@openaire.eu</a>.
|
|
||||||
</h2>
|
</h2>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -169,8 +172,21 @@
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
<div *ngIf="currentStep != 3" class="actions clearfix">
|
||||||
<div *ngIf="currentStep != 4" class="actions clearfix">
|
<ul role="menu" aria-label="Pagination">
|
||||||
|
<li class="button_previous {{ (currentStep < 1) ? 'disabled' : '' }}" aria-disabled="true">
|
||||||
|
<a (click)="moveBackAStep()" role="menuitem"><i class="material-icons"></i> Previous</a>
|
||||||
|
</li>
|
||||||
|
<li *ngIf="currentStep < 2" class="button_next" aria-hidden="false" aria-disabled="false">
|
||||||
|
<a (click)="moveAStep()" role="menuitem">Next<i class="material-icons"></i></a>
|
||||||
|
</li>
|
||||||
|
<li *ngIf="currentStep == 2" class="button_finish" aria-hidden="true">
|
||||||
|
<a (click)="moveAStep()" role="menuitem">Finish</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!-- ToU: replace above <div> with commented section below -->
|
||||||
|
<!--<div *ngIf="currentStep != 4" class="actions clearfix">
|
||||||
<ul role="menu" aria-label="Pagination">
|
<ul role="menu" aria-label="Pagination">
|
||||||
<li class="button_previous {{ (currentStep < 1) ? 'disabled' : '' }}" aria-disabled="true">
|
<li class="button_previous {{ (currentStep < 1) ? 'disabled' : '' }}" aria-disabled="true">
|
||||||
<a (click)="moveBackAStep()" role="menuitem"><i class="material-icons"></i> Previous</a>
|
<a (click)="moveBackAStep()" role="menuitem"><i class="material-icons"></i> Previous</a>
|
||||||
|
@ -182,7 +198,7 @@
|
||||||
<a (click)="moveAStep()" role="menuitem">Finish</a>
|
<a (click)="moveAStep()" role="menuitem">Finish</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>-->
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
@ -203,3 +219,4 @@
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,6 @@ import {
|
||||||
} from '../../../domain/shared-messages';
|
} from '../../../domain/shared-messages';
|
||||||
import { DatasourceUpdateFormComponent } from '../../../shared/reusablecomponents/sources-forms/datasource-update-form.component';
|
import { DatasourceUpdateFormComponent } from '../../../shared/reusablecomponents/sources-forms/datasource-update-form.component';
|
||||||
import { RegisterDatasourceSelectExistingComponent } from './register-datasource-select-existing.component';
|
import { RegisterDatasourceSelectExistingComponent } from './register-datasource-select-existing.component';
|
||||||
import {DatasourceUpdateTermsFormComponent} from '../../../shared/reusablecomponents/sources-forms/datasource-update-terms-form.component';
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-register-existing-datasource',
|
selector: 'app-register-existing-datasource',
|
||||||
|
@ -43,35 +42,34 @@ export class RegisterExistingDatasourceComponent implements OnInit {
|
||||||
* currentStep represents the number of the current step
|
* currentStep represents the number of the current step
|
||||||
*/
|
*/
|
||||||
currentStep: number;
|
currentStep: number;
|
||||||
@ViewChild('topHelperContent', { static: true })
|
@ViewChild('topHelperContent')
|
||||||
public topHelperContent: HelpContentComponent;
|
public topHelperContent: HelpContentComponent;
|
||||||
@ViewChild('leftHelperContent', { static: true })
|
@ViewChild('leftHelperContent')
|
||||||
public leftHelperContent: AsideHelpContentComponent;
|
public leftHelperContent: AsideHelpContentComponent;
|
||||||
@ViewChild('rightHelperContent', { static: true })
|
@ViewChild('rightHelperContent')
|
||||||
public rightHelperContent: AsideHelpContentComponent;
|
public rightHelperContent: AsideHelpContentComponent;
|
||||||
@ViewChild('bottomHelperContent', { static: true })
|
@ViewChild('bottomHelperContent')
|
||||||
public bottomHelperContent: HelpContentComponent;
|
public bottomHelperContent: HelpContentComponent;
|
||||||
|
|
||||||
@ViewChild('datasourcesByCountry')
|
@ViewChild('datasourcesByCountry')
|
||||||
public datasourcesByCountry: RegisterDatasourceSelectExistingComponent;
|
public datasourcesByCountry: RegisterDatasourceSelectExistingComponent;
|
||||||
|
|
||||||
@ViewChild('registerDatasource')
|
@ViewChild ('registerDatasource')
|
||||||
registerDatasource: DatasourceUpdateFormComponent;
|
registerDatasource: DatasourceUpdateFormComponent;
|
||||||
|
|
||||||
@ViewChild('interfaceComments')
|
@ViewChild ('interfaceComments')
|
||||||
interfaceComments: DatasourceNewInterfaceFormComponent;
|
interfaceComments: DatasourceNewInterfaceFormComponent;
|
||||||
|
|
||||||
@ViewChildren('interfacesArray') interfacesArray: QueryList<DatasourceNewInterfaceFormComponent>;
|
@ViewChildren('interfacesArray') interfacesArray: QueryList<DatasourceNewInterfaceFormComponent>;
|
||||||
dataForInterfaceComp: any[] = [];
|
dataForInterfaceComp: any[] = [];
|
||||||
|
|
||||||
@ViewChild('updateTermsForm')
|
|
||||||
updateTermsForm: DatasourceUpdateTermsFormComponent;
|
|
||||||
|
|
||||||
constructor(private fb: FormBuilder,
|
constructor(private fb: FormBuilder,
|
||||||
private route: ActivatedRoute,
|
private route: ActivatedRoute,
|
||||||
private router: Router,
|
private router: Router,
|
||||||
private repoService: RepositoryService) {}
|
private repoService: RepositoryService) {}
|
||||||
|
|
||||||
|
// @ViewChild('updateTermsForm')
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
if (this.datasourceType && this.currentMode) {
|
if (this.datasourceType && this.currentMode) {
|
||||||
// will execute getStep() every time there is a change in query params
|
// will execute getStep() every time there is a change in query params
|
||||||
|
@ -100,14 +98,17 @@ export class RegisterExistingDatasourceComponent implements OnInit {
|
||||||
} else {
|
} else {
|
||||||
this.currentStep = 2;
|
this.currentStep = 2;
|
||||||
}
|
}
|
||||||
} else if (stepName === 'termsOfUse') {
|
} else if (stepName === 'finish') {
|
||||||
|
this.currentStep = 3;
|
||||||
|
// ToU: to enable ToU delete the 2 lines above and uncomment the section below
|
||||||
|
/*} else if (stepName === 'termsOfUse') {
|
||||||
if (!this.interfacesArray) {
|
if (!this.interfacesArray) {
|
||||||
this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=selectDatasource`);
|
this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=selectDatasource`);
|
||||||
} else {
|
} else {
|
||||||
this.currentStep = 3;
|
this.currentStep = 3;
|
||||||
}
|
}
|
||||||
} else if (stepName === 'finish') {
|
} else if (stepName === 'finish') {
|
||||||
this.currentStep = 4;
|
this.currentStep = 4;*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.rightHelperContent.ngOnInit();
|
this.rightHelperContent.ngOnInit();
|
||||||
|
@ -134,7 +135,9 @@ export class RegisterExistingDatasourceComponent implements OnInit {
|
||||||
window.scrollTo(1, 1);
|
window.scrollTo(1, 1);
|
||||||
} else {
|
} else {
|
||||||
if (this.repoInterfaces.length > 0) {
|
if (this.repoInterfaces.length > 0) {
|
||||||
this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=termsOfUse`);
|
this.registerRepository();
|
||||||
|
// ToU: replace above line with the comment below
|
||||||
|
// this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=termsOfUse`);
|
||||||
} else {
|
} else {
|
||||||
this.errorMessage = noInterfacesSaved;
|
this.errorMessage = noInterfacesSaved;
|
||||||
window.scrollTo(1, 1);
|
window.scrollTo(1, 1);
|
||||||
|
@ -142,8 +145,9 @@ export class RegisterExistingDatasourceComponent implements OnInit {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
} else if (this.currentStep === 3) {
|
// ToU: uncomment these lines
|
||||||
this.registerRepository();
|
// } else if (this.currentStep === 3) {
|
||||||
|
// this.registerRepository();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -158,15 +162,19 @@ export class RegisterExistingDatasourceComponent implements OnInit {
|
||||||
of(this.getInterfaces()).subscribe(
|
of(this.getInterfaces()).subscribe(
|
||||||
() => this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=basicInformation`)
|
() => this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=basicInformation`)
|
||||||
);
|
);
|
||||||
} else if (this.currentStep === 3) {
|
// ToU: uncomment these lines
|
||||||
this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=interfaces`);
|
// } else if (this.currentStep === 3) {
|
||||||
|
// this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=interfaces`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
addInterfaceToList(intrf?: RepositoryInterface) {
|
addInterfaceToList(intrf?: RepositoryInterface) {
|
||||||
|
|
||||||
|
console.log('clicked add interface to list');
|
||||||
|
|
||||||
const curIndex = this.dataForInterfaceComp.length;
|
const curIndex = this.dataForInterfaceComp.length;
|
||||||
const curRepoInfo = { id: this.repo.id, datasourceType: this.repo.eoscDatasourceType,
|
const curRepoInfo = { id: this.repo.id, datasourceType: this.repo.datasourceType,
|
||||||
datasourceClass: this.repo.eoscDatasourceType, registeredBy: this.repo.registeredby };
|
datasourceClass: this.repo.datasourceClass, registeredBy: this.repo.registeredBy };
|
||||||
if (intrf) {
|
if (intrf) {
|
||||||
this.dataForInterfaceComp.push([true, curIndex, curRepoInfo, intrf]);
|
this.dataForInterfaceComp.push([true, curIndex, curRepoInfo, intrf]);
|
||||||
} else {
|
} else {
|
||||||
|
@ -182,7 +190,7 @@ export class RegisterExistingDatasourceComponent implements OnInit {
|
||||||
}
|
}
|
||||||
tempArray.splice(i, 1);
|
tempArray.splice(i, 1);
|
||||||
this.dataForInterfaceComp = tempArray;
|
this.dataForInterfaceComp = tempArray;
|
||||||
// console.log(JSON.stringify(this.dataForInterfaceComp));
|
console.log(JSON.stringify(this.dataForInterfaceComp));
|
||||||
}
|
}
|
||||||
|
|
||||||
getInterfaces() {
|
getInterfaces() {
|
||||||
|
@ -207,10 +215,10 @@ export class RegisterExistingDatasourceComponent implements OnInit {
|
||||||
} else {
|
} else {
|
||||||
this.repoInterfaces.push(repo_interface);
|
this.repoInterfaces.push(repo_interface);
|
||||||
}
|
}
|
||||||
// console.log(JSON.stringify(repo_interface));
|
console.log(JSON.stringify(repo_interface));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// console.log('new interfaces is ', this.repoInterfaces);
|
console.log('new interfaces is ', this.repoInterfaces);
|
||||||
return invalidFormsCount;
|
return invalidFormsCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -221,9 +229,9 @@ export class RegisterExistingDatasourceComponent implements OnInit {
|
||||||
this.dataForInterfaceComp.push([
|
this.dataForInterfaceComp.push([
|
||||||
true, i,
|
true, i,
|
||||||
{ id: this.repo.id,
|
{ id: this.repo.id,
|
||||||
datasourceType: this.repo.eoscDatasourceType,
|
datasourceType: this.repo.datasourceType,
|
||||||
datasourceClass: this.repo.eoscDatasourceType,
|
datasourceClass: this.repo.datasourceClass,
|
||||||
registeredBy: this.repo.registeredby
|
registeredBy: this.repo.registeredBy
|
||||||
},
|
},
|
||||||
this.repoInterfaces[i]
|
this.repoInterfaces[i]
|
||||||
]);
|
]);
|
||||||
|
@ -232,9 +240,9 @@ export class RegisterExistingDatasourceComponent implements OnInit {
|
||||||
this.dataForInterfaceComp.push([
|
this.dataForInterfaceComp.push([
|
||||||
true, 0,
|
true, 0,
|
||||||
{ id: this.repo.id,
|
{ id: this.repo.id,
|
||||||
datasourceType: this.repo.eoscDatasourceType,
|
datasourceType: this.repo.datasourceType,
|
||||||
datasourceClass: this.repo.eoscDatasourceType,
|
datasourceClass: this.repo.datasourceClass,
|
||||||
registeredBy: this.repo.registeredby
|
registeredBy: this.repo.registeredBy
|
||||||
}
|
}
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
@ -271,7 +279,6 @@ export class RegisterExistingDatasourceComponent implements OnInit {
|
||||||
}
|
}
|
||||||
|
|
||||||
getUpdatedRepo(repo: Repository) {
|
getUpdatedRepo(repo: Repository) {
|
||||||
console.log('getUpdatedRepo(repo: Repository)');
|
|
||||||
this.repo = repo;
|
this.repo = repo;
|
||||||
if (this.repoInterfaces.length === 0) {
|
if (this.repoInterfaces.length === 0) {
|
||||||
this.getRepoInterfaces();
|
this.getRepoInterfaces();
|
||||||
|
@ -296,7 +303,7 @@ export class RegisterExistingDatasourceComponent implements OnInit {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// console.log(`the number of interfaces is ${this.repoInterfaces.length}`);
|
console.log(`the number of interfaces is ${this.repoInterfaces.length}`);
|
||||||
},
|
},
|
||||||
error => {
|
error => {
|
||||||
console.log(error);
|
console.log(error);
|
||||||
|
@ -313,24 +320,17 @@ export class RegisterExistingDatasourceComponent implements OnInit {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// recheck if needed
|
|
||||||
getTerms(repo: Repository) {
|
|
||||||
this.repo = repo;
|
|
||||||
}
|
|
||||||
|
|
||||||
downloadLogo() {
|
downloadLogo() {
|
||||||
window.open('../../../../assets/imgs/3_0ValidatedLogo.png', '_blank', 'enabledstatus=0,toolbar=0,menubar=0,location=0');
|
window.open('../../../../assets/imgs/3_0ValidatedLogo.png', '_blank', 'enabledstatus=0,toolbar=0,menubar=0,location=0');
|
||||||
}
|
}
|
||||||
|
|
||||||
registerRepository() {
|
registerRepository() {
|
||||||
console.log('in registerRepository, step ===', this.currentStep);
|
|
||||||
if (this.repo) {
|
if (this.repo) {
|
||||||
this.loadingMessage = 'Saving changes';
|
this.loadingMessage = 'Saving changes';
|
||||||
this.errorMessage = '';
|
this.errorMessage = '';
|
||||||
console.log('reg this.repo', this.repo);
|
this.repoService.addRepository( this.repo.datasourceType, this.repo).subscribe(
|
||||||
this.repoService.addRepository( this.repo.eoscDatasourceType, this.repo).subscribe( // this.repo.collectedfrom
|
|
||||||
response => {
|
response => {
|
||||||
console.log(`addRepository responded: ${response.id}, ${response.registeredby}`);
|
console.log(`addRepository responded: ${response.id}, ${response.registeredBy}`);
|
||||||
this.repo = response;
|
this.repo = response;
|
||||||
},
|
},
|
||||||
error => {
|
error => {
|
||||||
|
@ -341,6 +341,7 @@ export class RegisterExistingDatasourceComponent implements OnInit {
|
||||||
},
|
},
|
||||||
() => {
|
() => {
|
||||||
this.saveNewInterfaces();
|
this.saveNewInterfaces();
|
||||||
|
// TODO: update terms when backend is ready, maybe POST with updateRepository
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -353,17 +354,15 @@ export class RegisterExistingDatasourceComponent implements OnInit {
|
||||||
if (intrf.id) {
|
if (intrf.id) {
|
||||||
let req;
|
let req;
|
||||||
if (this.interfacesToDelete.some(id => id === intrf.id)) {
|
if (this.interfacesToDelete.some(id => id === intrf.id)) {
|
||||||
req = this.repoService.deleteInterface(intrf.id, this.repo.registeredby);
|
req = this.repoService.deleteInterface(intrf.id, this.repo.registeredBy);
|
||||||
} else {
|
} else {
|
||||||
// console.log('comments', intrf.comments);
|
const comments = this.interfaceComments.getComments();
|
||||||
req = this.repoService.updateInterface(this.repo.id, this.repo.registeredby,
|
req = this.repoService.updateInterface(this.repo.id, this.repo.registeredBy, comments, intrf);
|
||||||
intrf.comments, intrf, intrf.desiredCompatibilityLevel);
|
|
||||||
}
|
}
|
||||||
return req;
|
return req;
|
||||||
} else {
|
} else {
|
||||||
// console.log('comments', intrf.comments);
|
const comments = this.interfaceComments.getComments();
|
||||||
return this.repoService.addInterface(this.repo.eoscDatasourceType, this.repo.id, this.repo.registeredby,
|
return this.repoService.addInterface(this.repo.datasourceType, this.repo.id, this.repo.registeredBy, comments, intrf);
|
||||||
intrf.comments, intrf, intrf.desiredCompatibilityLevel);
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
).subscribe(
|
).subscribe(
|
||||||
|
|
|
@ -23,27 +23,28 @@
|
||||||
<div class="steps clearfix">
|
<div class="steps clearfix">
|
||||||
<ul role="tablist">
|
<ul role="tablist">
|
||||||
<li role="tab" class="first {{ (currentStep == 1) ? 'current' : '' }}" aria-disabled="false" aria-selected="true">
|
<li role="tab" class="first {{ (currentStep == 1) ? 'current' : '' }}" aria-disabled="false" aria-selected="true">
|
||||||
<a id="wizard_advanced-t-0" aria-controls="wizard_advanced-p-0" style="cursor: default">
|
<a id="wizard_advanced-t-0" href="#wizard_advanced-h-0" aria-controls="wizard_advanced-p-0">
|
||||||
<!--<span class="current-info audible">current step: </span>-->
|
<!--<span class="current-info audible">current step: </span>-->
|
||||||
<span class="number">1</span>
|
<span class="number">1</span>
|
||||||
<span class="title">Register data source</span>
|
<span class="title">Register data source</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li role="tab" class="{{ (currentStep < 2) ? 'disabled' : '' }} {{ (currentStep == 2) ? 'current' : '' }}" aria-disabled="true">
|
<li role="tab" class="{{ (currentStep < 2) ? 'disabled' : '' }} {{ (currentStep == 2) ? 'current' : '' }}" aria-disabled="true">
|
||||||
<a id="wizard_advanced-t-1" aria-controls="wizard_advanced-p-1" style="cursor: default">
|
<a id="wizard_advanced-t-1" href="#wizard_advanced-h-1" aria-controls="wizard_advanced-p-1">
|
||||||
<span class="number">2</span>
|
<span class="number">2</span>
|
||||||
<span class="title">Register interface</span>
|
<span class="title">Register interface</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li role="tab" class=" {{ (currentStep < 3) ? 'disabled' : '' }} {{ (currentStep == 3) ? 'current' : '' }}" aria-disabled="true">
|
<li role="tab" class=" {{ (currentStep < 3) ? 'disabled' : '' }} {{ (currentStep == 3) ? 'current' : '' }}" aria-disabled="true">
|
||||||
<a id="wizard_advanced-t-2" aria-controls="wizard_advanced-p-2" style="cursor: default">
|
<a id="wizard_advanced-t-2" href="#wizard_advanced-h-2" aria-controls="wizard_advanced-p-2">
|
||||||
<span class="number">3</span>
|
<span class="number">3</span>
|
||||||
<span class="title">Terms of Use</span>
|
<!-- ToU: uncomment this section -->
|
||||||
|
<!--<span class="title">Terms of Use</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li role="tab" class=" {{ (currentStep < 4) ? 'disabled' : '' }} {{ (currentStep == 4) ? 'current' : '' }}" aria-disabled="true">
|
<li role="tab" class=" {{ (currentStep < 4) ? 'disabled' : '' }} {{ (currentStep == 4) ? 'current' : '' }}" aria-disabled="true">
|
||||||
<a id="wizard_advanced-t-3" aria-controls="wizard_advanced-p-2" style="cursor: default">
|
<a id="wizard_advanced-t-3" href="#wizard_advanced-h-3" aria-controls="wizard_advanced-p-2">
|
||||||
<span class="number">4</span>
|
<span class="number">4</span>-->
|
||||||
<span class="title">Finish</span>
|
<span class="title">Finish</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -91,7 +92,7 @@
|
||||||
<div>
|
<div>
|
||||||
<div class="md-card" style="height: 100%">
|
<div class="md-card" style="height: 100%">
|
||||||
<app-repository-interface-form #interfacesArray
|
<app-repository-interface-form #interfacesArray
|
||||||
[data]="inter" [mode]=""
|
[data]="inter"
|
||||||
(emitDeleteInterface)="removeInterfaceFromList($event)">
|
(emitDeleteInterface)="removeInterfaceFromList($event)">
|
||||||
</app-repository-interface-form>
|
</app-repository-interface-form>
|
||||||
</div>
|
</div>
|
||||||
|
@ -121,32 +122,34 @@
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- third section -->
|
<!-- third section -->
|
||||||
<h3 id="wizard_advanced-h-2" tabindex="-1" class="title {{ (currentStep == 3) ? 'current' : '' }}">Terms of Use</h3>
|
<h3 id="wizard_advanced-h-2" tabindex="-1" class="title {{ (currentStep == 3) ? 'current' : '' }}">Finish</h3>
|
||||||
|
<!-- ToU: replace line above with line below -->
|
||||||
|
<!-- <h3 id="wizard_advanced-h-2" tabindex="-1" class="title {{ (currentStep == 3) ? 'current' : '' }}">Terms of Use</h3>-->
|
||||||
<section id="wizard_advanced-p-2" role="tabpanel" aria-labelledby="wizard_advanced-h-2"
|
<section id="wizard_advanced-p-2" role="tabpanel" aria-labelledby="wizard_advanced-h-2"
|
||||||
class="body step-2 {{ (currentStep == 3) ? 'current' : '' }}" data-step="2" aria-hidden="true">
|
class="body step-2 {{ (currentStep == 3) ? 'current' : '' }}" data-step="2" aria-hidden="true">
|
||||||
<div *ngIf="(currentStep === 3) && !loadingMessage" class="uk-grid">
|
<div *ngIf="(currentStep === 3) && !loadingMessage" class="row openAIRECompliantLogoDownload">
|
||||||
|
<!-- ToU: delete line above and uncomment section below -->
|
||||||
|
<!--<div *ngIf="(currentStep === 3) && !loadingMessage" class="uk-grid">
|
||||||
<datasource-update-terms-form #updateTermsForm
|
<datasource-update-terms-form #updateTermsForm
|
||||||
[selectedRepo]="repo"
|
[selectedRepo]="repo"
|
||||||
[showButton]=false
|
[showButton]=false></datasource-update-terms-form>
|
||||||
(emittedInfo)="getTerms($event)"></datasource-update-terms-form>
|
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- fourth section -->
|
<!– fourth section –>
|
||||||
<h3 id="wizard_advanced-h-3" tabindex="-1" class="title {{ (currentStep == 4) ? 'current' : '' }}">Finish</h3>
|
<h3 id="wizard_advanced-h-3" tabindex="-1" class="title {{ (currentStep == 4) ? 'current' : '' }}">Finish</h3>
|
||||||
<section id="wizard_advanced-p-3" role="tabpanel" aria-labelledby="wizard_advanced-h-3"
|
<section id="wizard_advanced-p-3" role="tabpanel" aria-labelledby="wizard_advanced-h-3"
|
||||||
class="body step-3 {{ (currentStep == 4) ? 'current' : '' }}" data-step="3" aria-hidden="true">
|
class="body step-3 {{ (currentStep == 4) ? 'current' : '' }}" data-step="3" aria-hidden="true">
|
||||||
<div *ngIf="(currentStep === 4) && !loadingMessage" class="row openAIRECompliantLogoDownload">
|
<div *ngIf="(currentStep === 4) && !loadingMessage" class="row openAIRECompliantLogoDownload">-->
|
||||||
<div class="col-lg-12">
|
<div class="col-lg-12">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<div>
|
<div>
|
||||||
<div class="openAIRECompliantLogo">
|
<div class="openAIRECompliantLogo">
|
||||||
<h2 class="openAIRECompliantLogoMessage">
|
<h2 class="openAIRECompliantLogoMessage">
|
||||||
We successfully received the request to register/update your data source with/on OpenAIRE.
|
We successfully received the request to register/update your repository with/on OpenAIRE.
|
||||||
It usually takes about 6 weeks to check your metadata and index it.
|
It usually takes about 6 weeks to check your metadata and index it.
|
||||||
For questions, please create a ticket
|
For questions, please create a <a href="https://www.openaire.eu/support/helpdesk" target="_blank">helpdesk ticket</a>
|
||||||
<!-- <a href="https://www.openaire.eu/support/helpdesk" target="_blank">helpdesk ticket</a>-->
|
or write to <a href="mailto:helpdesk@openaire.eu">helpdesk@openaire.eu</a>.
|
||||||
writing to <a href="mailto:helpdesk@openaire.eu">helpdesk@openaire.eu</a>.
|
|
||||||
<!--Congratulations! Your repository was successfully registered in OpenAIRE. You can download this logo to use in your site.-->
|
<!--Congratulations! Your repository was successfully registered in OpenAIRE. You can download this logo to use in your site.-->
|
||||||
</h2>
|
</h2>
|
||||||
<!--<img src="../../../../assets/imgs/3_0ValidatedLogo.png" alt="OpenAireCompliant">-->
|
<!--<img src="../../../../assets/imgs/3_0ValidatedLogo.png" alt="OpenAireCompliant">-->
|
||||||
|
@ -162,8 +165,21 @@
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
<div *ngIf="currentStep != 3" class="actions clearfix">
|
||||||
<div *ngIf="currentStep != 4" class="actions clearfix">
|
<ul role="menu" aria-label="Pagination">
|
||||||
|
<li class="button_previous {{ (currentStep < 1) ? 'disabled' : '' }}" aria-disabled="true">
|
||||||
|
<a (click)="moveBackAStep()" role="menuitem"><i class="material-icons"></i> Previous</a>
|
||||||
|
</li>
|
||||||
|
<li *ngIf="currentStep < 2" class="button_next" aria-hidden="false" aria-disabled="false">
|
||||||
|
<a (click)="moveAStep()" role="menuitem">Next<i class="material-icons"></i></a>
|
||||||
|
</li>
|
||||||
|
<li *ngIf="currentStep == 2" class="button_finish" aria-hidden="true">
|
||||||
|
<a (click)="moveAStep()" role="menuitem">Finish</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!-- ToU: replace above <div> with commented section below -->
|
||||||
|
<!--<div *ngIf="currentStep != 4" class="actions clearfix">
|
||||||
<ul role="menu" aria-label="Pagination">
|
<ul role="menu" aria-label="Pagination">
|
||||||
<li class="button_previous {{ (currentStep <= 1) ? 'disabled' : '' }}" aria-disabled="true">
|
<li class="button_previous {{ (currentStep <= 1) ? 'disabled' : '' }}" aria-disabled="true">
|
||||||
<a (click)="moveBackAStep()" role="menuitem"><i class="material-icons"></i> Previous</a>
|
<a (click)="moveBackAStep()" role="menuitem"><i class="material-icons"></i> Previous</a>
|
||||||
|
@ -175,7 +191,7 @@
|
||||||
<a (click)="moveAStep()" role="menuitem">Finish</a>
|
<a (click)="moveAStep()" role="menuitem">Finish</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>-->
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -9,13 +9,11 @@ import { DatasourceNewInterfaceFormComponent } from '../../../shared/reusablecom
|
||||||
import { from, of } from 'rxjs';
|
import { from, of } from 'rxjs';
|
||||||
import { concatMap } from 'rxjs/operators';
|
import { concatMap } from 'rxjs/operators';
|
||||||
import { errorsInInterfaces, formErrorRegisterRepo, noInterfacesSaved } from '../../../domain/shared-messages';
|
import { errorsInInterfaces, formErrorRegisterRepo, noInterfacesSaved } from '../../../domain/shared-messages';
|
||||||
import {DatasourceUpdateTermsFormComponent} from '../../../shared/reusablecomponents/sources-forms/datasource-update-terms-form.component';
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-register-new-datasource',
|
selector: 'app-register-new-datasource',
|
||||||
templateUrl: './register-new-datasource.component.html'
|
templateUrl: './register-new-datasource.component.html'
|
||||||
})
|
})
|
||||||
|
|
||||||
export class RegisterNewDatasourceComponent implements OnInit {
|
export class RegisterNewDatasourceComponent implements OnInit {
|
||||||
loadingMessage: string;
|
loadingMessage: string;
|
||||||
errorMessage: string;
|
errorMessage: string;
|
||||||
|
@ -32,32 +30,31 @@ export class RegisterNewDatasourceComponent implements OnInit {
|
||||||
* currentStep represents the number of the current step
|
* currentStep represents the number of the current step
|
||||||
*/
|
*/
|
||||||
currentStep: number;
|
currentStep: number;
|
||||||
@ViewChild('topHelperContent', { static: true })
|
@ViewChild('topHelperContent')
|
||||||
public topHelperContent: HelpContentComponent;
|
public topHelperContent: HelpContentComponent;
|
||||||
@ViewChild('leftHelperContent', { static: true })
|
@ViewChild('leftHelperContent')
|
||||||
public leftHelperContent: AsideHelpContentComponent;
|
public leftHelperContent: AsideHelpContentComponent;
|
||||||
@ViewChild('rightHelperContent', { static: true })
|
@ViewChild('rightHelperContent')
|
||||||
public rightHelperContent: AsideHelpContentComponent;
|
public rightHelperContent: AsideHelpContentComponent;
|
||||||
@ViewChild('bottomHelperContent', { static: true })
|
@ViewChild('bottomHelperContent')
|
||||||
public bottomHelperContent: HelpContentComponent;
|
public bottomHelperContent: HelpContentComponent;
|
||||||
|
|
||||||
@ViewChild('registerDatasource')
|
@ViewChild ('registerDatasource')
|
||||||
registerDatasource: DatasourceCreateFormComponent;
|
registerDatasource: DatasourceCreateFormComponent;
|
||||||
|
|
||||||
@ViewChild('interfaceComments')
|
@ViewChild ('interfaceComments')
|
||||||
interfaceComments: DatasourceNewInterfaceFormComponent;
|
interfaceComments: DatasourceNewInterfaceFormComponent;
|
||||||
|
|
||||||
@ViewChildren('interfacesArray') interfacesArray: QueryList<DatasourceNewInterfaceFormComponent>;
|
@ViewChildren('interfacesArray') interfacesArray: QueryList<DatasourceNewInterfaceFormComponent>;
|
||||||
dataForInterfaceComp: any[] = [];
|
dataForInterfaceComp: any[] = [];
|
||||||
|
|
||||||
@ViewChild('updateTermsForm')
|
|
||||||
updateTermsForm: DatasourceUpdateTermsFormComponent;
|
|
||||||
|
|
||||||
constructor(private fb: FormBuilder,
|
constructor(private fb: FormBuilder,
|
||||||
private route: ActivatedRoute,
|
private route: ActivatedRoute,
|
||||||
private router: Router,
|
private router: Router,
|
||||||
private repoService: RepositoryService) {}
|
private repoService: RepositoryService) {}
|
||||||
|
|
||||||
|
// @ViewChild('updateTermsForm')
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
if (this.datasourceType) {
|
if (this.datasourceType) {
|
||||||
|
|
||||||
|
@ -83,14 +80,17 @@ export class RegisterNewDatasourceComponent implements OnInit {
|
||||||
} else {
|
} else {
|
||||||
this.currentStep = 2;
|
this.currentStep = 2;
|
||||||
}
|
}
|
||||||
} else if (stepName === 'termsOfUse') {
|
} else if (stepName === 'finish') {
|
||||||
|
this.currentStep = 3;
|
||||||
|
// ToU: to enable ToU delete the 2 lines above and uncomment the section below
|
||||||
|
/*} else if (stepName === 'termsOfUse') {
|
||||||
if (this.interfacesArray && this.interfacesArray.length === 0) {
|
if (this.interfacesArray && this.interfacesArray.length === 0) {
|
||||||
this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=basicInformation`);
|
this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=basicInformation`);
|
||||||
} else {
|
} else {
|
||||||
this.currentStep = 3;
|
this.currentStep = 3;
|
||||||
}
|
}
|
||||||
} else if (stepName === 'finish') {
|
} else if (stepName === 'finish') {
|
||||||
this.currentStep = 4;
|
this.currentStep = 4;*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.rightHelperContent.ngOnInit();
|
this.rightHelperContent.ngOnInit();
|
||||||
|
@ -111,7 +111,9 @@ export class RegisterNewDatasourceComponent implements OnInit {
|
||||||
window.scrollTo(1, 1);
|
window.scrollTo(1, 1);
|
||||||
} else {
|
} else {
|
||||||
if (this.repoInterfaces.length > 0) {
|
if (this.repoInterfaces.length > 0) {
|
||||||
this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=termsOfUse`);
|
this.addRepository();
|
||||||
|
// ToU: replace above line with the comment below
|
||||||
|
// this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=termsOfUse`);
|
||||||
} else {
|
} else {
|
||||||
this.errorMessage = noInterfacesSaved;
|
this.errorMessage = noInterfacesSaved;
|
||||||
window.scrollTo(1, 1);
|
window.scrollTo(1, 1);
|
||||||
|
@ -119,8 +121,9 @@ export class RegisterNewDatasourceComponent implements OnInit {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
} else if ( this.currentStep === 3 ) {
|
// ToU: uncomment these lines
|
||||||
this.addRepository();
|
// } else if ( this.currentStep === 3 ) {
|
||||||
|
// this.addRepository();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,15 +133,16 @@ export class RegisterNewDatasourceComponent implements OnInit {
|
||||||
of(this.getInterfaces()).subscribe(
|
of(this.getInterfaces()).subscribe(
|
||||||
() => this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=basicInformation`)
|
() => this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=basicInformation`)
|
||||||
);
|
);
|
||||||
} else if (this.currentStep === 3) {
|
// ToU: uncomment these lines
|
||||||
this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=interfaces`);
|
// } else if (this.currentStep === 3) {
|
||||||
|
// this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=interfaces`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
addInterfaceToList(intrf?: RepositoryInterface) {
|
addInterfaceToList(intrf?: RepositoryInterface) {
|
||||||
const curIndex = this.dataForInterfaceComp.length;
|
const curIndex = this.dataForInterfaceComp.length;
|
||||||
const curRepoInfo = { id: this.repo.id, datasourceType: this.repo.eoscDatasourceType,
|
const curRepoInfo = { id: this.repo.id, datasourceType: this.repo.datasourceType,
|
||||||
datasourceClass: this.repo.eoscDatasourceType, registeredBy: this.repo.registeredby };
|
datasourceClass: this.repo.datasourceClass, registeredBy: this.repo.registeredBy };
|
||||||
if (intrf) {
|
if (intrf) {
|
||||||
this.dataForInterfaceComp.push([true, curIndex, curRepoInfo, intrf]);
|
this.dataForInterfaceComp.push([true, curIndex, curRepoInfo, intrf]);
|
||||||
} else {
|
} else {
|
||||||
|
@ -180,9 +184,9 @@ export class RegisterNewDatasourceComponent implements OnInit {
|
||||||
this.dataForInterfaceComp.push([
|
this.dataForInterfaceComp.push([
|
||||||
true, i,
|
true, i,
|
||||||
{ id: this.repo.id,
|
{ id: this.repo.id,
|
||||||
datasourceType: this.repo.eoscDatasourceType,
|
datasourceType: this.repo.datasourceType,
|
||||||
datasourceClass: this.repo.eoscDatasourceType,
|
datasourceClass: this.repo.datasourceClass,
|
||||||
registeredBy: this.repo.registeredby
|
registeredBy: this.repo.registeredBy
|
||||||
},
|
},
|
||||||
this.repoInterfaces[i]
|
this.repoInterfaces[i]
|
||||||
]);
|
]);
|
||||||
|
@ -191,9 +195,9 @@ export class RegisterNewDatasourceComponent implements OnInit {
|
||||||
this.dataForInterfaceComp.push([
|
this.dataForInterfaceComp.push([
|
||||||
true, 0,
|
true, 0,
|
||||||
{ id: this.repo.id,
|
{ id: this.repo.id,
|
||||||
datasourceType: this.repo.eoscDatasourceType,
|
datasourceType: this.repo.datasourceType,
|
||||||
datasourceClass: this.repo.eoscDatasourceType,
|
datasourceClass: this.repo.datasourceClass,
|
||||||
registeredBy: this.repo.registeredby
|
registeredBy: this.repo.registeredBy
|
||||||
}
|
}
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
@ -206,26 +210,17 @@ export class RegisterNewDatasourceComponent implements OnInit {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// recheck if needed
|
|
||||||
getTerms(repo: Repository) {
|
|
||||||
console.log('this.repo', this.repo.consentTermsOfUse, this.repo.fullTextDownload);
|
|
||||||
console.log('repo', repo.consentTermsOfUse, repo.fullTextDownload);
|
|
||||||
this.repo = repo;
|
|
||||||
}
|
|
||||||
|
|
||||||
downloadLogo() {
|
downloadLogo() {
|
||||||
window.open('../../../../assets/imgs/3_0ValidatedLogo.png', '_blank', 'enabledstatus=0,toolbar=0,menubar=0,location=0');
|
window.open('../../../../assets/imgs/3_0ValidatedLogo.png', '_blank', 'enabledstatus=0,toolbar=0,menubar=0,location=0');
|
||||||
}
|
}
|
||||||
|
|
||||||
addRepository() {
|
addRepository() {
|
||||||
console.log('in addRepository, step ===', this.currentStep);
|
|
||||||
if (this.repo) {
|
if (this.repo) {
|
||||||
this.loadingMessage = 'Saving changes';
|
this.loadingMessage = 'Saving changes';
|
||||||
this.errorMessage = '';
|
this.errorMessage = '';
|
||||||
console.log('add this.repo', this.repo);
|
this.repoService.addRepository(this.repo.datasourceType, this.repo).subscribe(
|
||||||
this.repoService.addRepository(this.repo.eoscDatasourceType, this.repo).subscribe(
|
|
||||||
response => {
|
response => {
|
||||||
console.log(`addRepository responded: ${response.id}, ${response.registeredby}`);
|
console.log(`addRepository responded: ${response.id}, ${response.registeredBy}`);
|
||||||
this.repo = response;
|
this.repo = response;
|
||||||
},
|
},
|
||||||
error => {
|
error => {
|
||||||
|
@ -235,6 +230,7 @@ export class RegisterNewDatasourceComponent implements OnInit {
|
||||||
},
|
},
|
||||||
() => {
|
() => {
|
||||||
this.saveNewInterfaces();
|
this.saveNewInterfaces();
|
||||||
|
// TODO: update terms when backend is ready, maybe POST with updateRepository
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -245,13 +241,11 @@ export class RegisterNewDatasourceComponent implements OnInit {
|
||||||
from(this.repoInterfaces).pipe(
|
from(this.repoInterfaces).pipe(
|
||||||
concatMap(intrf => {
|
concatMap(intrf => {
|
||||||
if (intrf.id) {
|
if (intrf.id) {
|
||||||
// console.log('comments', intrf.comments);
|
const comments = this.interfaceComments.getComments();
|
||||||
return this.repoService.updateInterface(this.repo.id, this.repo.registeredby, intrf.comments, intrf,
|
return this.repoService.updateInterface(this.repo.id, this.repo.registeredBy, comments, intrf);
|
||||||
intrf.desiredCompatibilityLevel);
|
|
||||||
} else {
|
} else {
|
||||||
// console.log('comments', intrf.comments);
|
const comments = this.interfaceComments.getComments();
|
||||||
return this.repoService.addInterface(this.repo.eoscDatasourceType, this.repo.id, this.repo.registeredby,
|
return this.repoService.addInterface(this.repo.datasourceType, this.repo.id, this.repo.registeredBy, comments, intrf);
|
||||||
intrf.comments, intrf, intrf.desiredCompatibilityLevel);
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
).subscribe(
|
).subscribe(
|
||||||
|
|
|
@ -1,19 +1,20 @@
|
||||||
/*
|
/*
|
||||||
* updated by myrto on 19/12/2018
|
* created by myrto on 12/12/2017
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import { RegisterExistingDatasourceComponent } from './register-existing-datasource.component';
|
import { RegisterExistingDatasourceComponent } from './register-existing-datasource.component';
|
||||||
|
|
||||||
@Component ({
|
@Component ({
|
||||||
selector: 'app-sr-cris',
|
selector: 'app-sr-data',
|
||||||
templateUrl: './register-existing-datasource.component.html'
|
templateUrl: './register-existing-datasource.component.html'
|
||||||
})
|
})
|
||||||
export class SrCrisComponent extends RegisterExistingDatasourceComponent implements OnInit {
|
|
||||||
|
export class SrDataComponent extends RegisterExistingDatasourceComponent implements OnInit {
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.datasourceType = 'cris';
|
this.datasourceType = 'data';
|
||||||
this.currentMode = 'cris';
|
this.currentMode = 're3data';
|
||||||
super.ngOnInit();
|
super.ngOnInit();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
/*
|
/*
|
||||||
* created by andreas on 4/7/2022
|
* updated by myrto on 19/12/2018
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import { RegisterExistingDatasourceComponent } from './register-existing-datasource.component';
|
import { RegisterExistingDatasourceComponent } from './register-existing-datasource.component';
|
||||||
|
|
||||||
@Component ({
|
@Component ({
|
||||||
selector: 'app-sr-repository',
|
selector: 'app-sr-literature',
|
||||||
templateUrl: './register-existing-datasource.component.html'
|
templateUrl: './register-existing-datasource.component.html'
|
||||||
})
|
})
|
||||||
export class SrRepositoryComponent extends RegisterExistingDatasourceComponent implements OnInit {
|
export class SrLiteratureComponent extends RegisterExistingDatasourceComponent implements OnInit {
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.datasourceType = 'repository';
|
this.datasourceType = 'literature';
|
||||||
this.currentMode = 'repository';
|
this.currentMode = 'opendoar';
|
||||||
super.ngOnInit();
|
super.ngOnInit();
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,17 +4,17 @@ import { SourcesComponent } from './sources.component';
|
||||||
import { SourcesRegisterComponent } from './sources-register.component';
|
import { SourcesRegisterComponent } from './sources-register.component';
|
||||||
import { CommonModule } from '@angular/common';
|
import { CommonModule } from '@angular/common';
|
||||||
import { TabsModule } from 'ngx-bootstrap';
|
import { TabsModule } from 'ngx-bootstrap';
|
||||||
|
import { SrLiteratureComponent } from './sources-register/sr-literature.component';
|
||||||
import { ReusableComponentsModule } from '../../shared/reusablecomponents/reusable-components.module';
|
import { ReusableComponentsModule } from '../../shared/reusablecomponents/reusable-components.module';
|
||||||
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
||||||
import { RepoFilter } from './sourcesPipes';
|
import { RepoFilter } from './sourcesPipes';
|
||||||
|
import { SrDataComponent } from './sources-register/sr-data.component';
|
||||||
import { RegisterDatasourceSelectExistingComponent } from './sources-register/register-datasource-select-existing.component';
|
import { RegisterDatasourceSelectExistingComponent } from './sources-register/register-datasource-select-existing.component';
|
||||||
import { SrJournalComponent } from './sources-register/sr-journal.component';
|
import { SrJournalComponent } from './sources-register/sr-journal.component';
|
||||||
import { SrAggregatorComponent } from './sources-register/sr-aggregator.component';
|
import { SrAggregatorComponent } from './sources-register/sr-aggregator.component';
|
||||||
import { RegisterNewDatasourceComponent } from './sources-register/register-new-datasource.component';
|
import { RegisterNewDatasourceComponent } from './sources-register/register-new-datasource.component';
|
||||||
import { RegisterExistingDatasourceComponent } from './sources-register/register-existing-datasource.component';
|
import { RegisterExistingDatasourceComponent } from './sources-register/register-existing-datasource.component';
|
||||||
import { DatasourceUpdateTermsFormComponent } from '../../shared/reusablecomponents/sources-forms/datasource-update-terms-form.component';
|
import { DatasourceUpdateTermsFormComponent } from '../../shared/reusablecomponents/sources-forms/datasource-update-terms-form.component';
|
||||||
import {SrCrisComponent} from './sources-register/sr-cris.component';
|
|
||||||
import {SrRepositoryComponent} from './sources-register/sr-repository.component';
|
|
||||||
|
|
||||||
@NgModule ({
|
@NgModule ({
|
||||||
imports: [
|
imports: [
|
||||||
|
@ -33,10 +33,10 @@ import {SrRepositoryComponent} from './sources-register/sr-repository.component'
|
||||||
SourcesRegisterComponent,
|
SourcesRegisterComponent,
|
||||||
RegisterNewDatasourceComponent,
|
RegisterNewDatasourceComponent,
|
||||||
RegisterExistingDatasourceComponent,
|
RegisterExistingDatasourceComponent,
|
||||||
SrRepositoryComponent,
|
SrLiteratureComponent,
|
||||||
|
SrDataComponent,
|
||||||
SrJournalComponent,
|
SrJournalComponent,
|
||||||
SrAggregatorComponent,
|
SrAggregatorComponent,
|
||||||
SrCrisComponent,
|
|
||||||
RegisterDatasourceSelectExistingComponent,
|
RegisterDatasourceSelectExistingComponent,
|
||||||
DatasourceUpdateTermsFormComponent,
|
DatasourceUpdateTermsFormComponent,
|
||||||
RepoFilter // a pipe that searches for string in repository name
|
RepoFilter // a pipe that searches for string in repository name
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
import { RouterModule, Routes } from '@angular/router';
|
import { RouterModule, Routes } from '@angular/router';
|
||||||
import { NgModule } from '@angular/core';
|
import { NgModule } from '@angular/core';
|
||||||
import { SourcesRegisterComponent } from './sources-register.component';
|
import { SourcesRegisterComponent } from './sources-register.component';
|
||||||
|
import { SrLiteratureComponent } from './sources-register/sr-literature.component';
|
||||||
|
import { SrDataComponent } from './sources-register/sr-data.component';
|
||||||
import { SrJournalComponent } from './sources-register/sr-journal.component';
|
import { SrJournalComponent } from './sources-register/sr-journal.component';
|
||||||
import { SrAggregatorComponent } from './sources-register/sr-aggregator.component';
|
import { SrAggregatorComponent } from './sources-register/sr-aggregator.component';
|
||||||
import {SrCrisComponent} from './sources-register/sr-cris.component';
|
|
||||||
import {SrRepositoryComponent} from './sources-register/sr-repository.component';
|
|
||||||
|
|
||||||
const sourcesRoutes: Routes = [
|
const sourcesRoutes: Routes = [
|
||||||
{
|
{
|
||||||
|
@ -19,8 +19,12 @@ const sourcesRoutes: Routes = [
|
||||||
component: SourcesRegisterComponent
|
component: SourcesRegisterComponent
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'repository',
|
path: 'literature',
|
||||||
component: SrRepositoryComponent
|
component: SrLiteratureComponent
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'data',
|
||||||
|
component: SrDataComponent
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'journal',
|
path: 'journal',
|
||||||
|
@ -29,14 +33,30 @@ const sourcesRoutes: Routes = [
|
||||||
{
|
{
|
||||||
path: 'aggregator',
|
path: 'aggregator',
|
||||||
component: SrAggregatorComponent
|
component: SrAggregatorComponent
|
||||||
},
|
|
||||||
{
|
|
||||||
path: 'cris',
|
|
||||||
component: SrCrisComponent
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
// path: '',
|
||||||
|
// component: SourcesRegisterComponent,
|
||||||
|
// children: [
|
||||||
|
// {
|
||||||
|
// path: 'literature',
|
||||||
|
// component: SrLiteratureComponent
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// path: 'data',
|
||||||
|
// component: SrDataComponent
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// path: 'journal',
|
||||||
|
// component: SrJournalComponent
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// path: 'aggregator',
|
||||||
|
// component: SrAggregatorComponent
|
||||||
|
// }
|
||||||
|
// ]
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -10,19 +10,19 @@ export class AuthGuardService implements CanActivate, CanLoad {
|
||||||
constructor (private authenticationService: AuthenticationService, private router: Router) {}
|
constructor (private authenticationService: AuthenticationService, private router: Router) {}
|
||||||
|
|
||||||
canActivate (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
|
canActivate (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
|
||||||
if ( this.authenticationService.getIsUserLoggedIn() ) { return true; }
|
|
||||||
|
|
||||||
|
if ( (getCookie('openAIREUser') !== null) &&
|
||||||
|
(getCookie('openAIREUser') !== '') &&
|
||||||
|
this.authenticationService.getIsUserLoggedIn() ) { return true; }
|
||||||
|
|
||||||
|
if ( (getCookie('openAIREUser') !== null) && (getCookie('openAIREUser') !== '') ) { return true; }
|
||||||
|
|
||||||
|
/* If no cookie was found, clear the app's session.
|
||||||
|
The user may have logged out using another OpenAIRE portal */
|
||||||
|
sessionStorage.clear();
|
||||||
|
|
||||||
// Store the attempted URL for redirecting
|
// Store the attempted URL for redirecting
|
||||||
if (state.url !== '/join') {
|
sessionStorage.setItem('state.location', state.url);
|
||||||
/* If no cookie was found, clear the app's session.
|
|
||||||
The user may have logged out using another OpenAIRE portal */
|
|
||||||
sessionStorage.clear();
|
|
||||||
this.authenticationService.redirectUrl = state.url;
|
|
||||||
sessionStorage.setItem('state.location', state.url);
|
|
||||||
}
|
|
||||||
console.log('redirect state: ' + sessionStorage.getItem('state.location'));
|
|
||||||
|
|
||||||
// If we decide that in this case we will send the user back to the aai
|
// If we decide that in this case we will send the user back to the aai
|
||||||
// this.authenticationService.redirectUrl = state.url;
|
// this.authenticationService.redirectUrl = state.url;
|
||||||
|
@ -36,8 +36,8 @@ export class AuthGuardService implements CanActivate, CanLoad {
|
||||||
canLoad () {
|
canLoad () {
|
||||||
|
|
||||||
if (this.authenticationService.getUserRole() &&
|
if (this.authenticationService.getUserRole() &&
|
||||||
(this.authenticationService.getUserRole().includes('SUPER_ADMINISTRATOR') ||
|
(this.authenticationService.getUserRole().includes('ROLE_ADMIN') ||
|
||||||
this.authenticationService.getUserRole().includes('CONTENT_PROVIDER_DASHBOARD_ADMINISTRATOR')) ) {
|
this.authenticationService.getUserRole().includes('ROLE_PROVIDE_ADMIN')) ) {
|
||||||
console.log('Admin recognized');
|
console.log('Admin recognized');
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { Router } from '@angular/router';
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
import { HttpClient } from '@angular/common/http';
|
import { HttpClient } from '@angular/common/http';
|
||||||
import { environment } from '../../environments/environment';
|
import { environment } from '../../environments/environment';
|
||||||
import { deleteCookie, getCookie } from '../domain/utils';
|
import { deleteCookie, getCookie } from '../domain/utils';
|
||||||
import { BehaviorSubject } from 'rxjs';
|
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class AuthenticationService {
|
export class AuthenticationService {
|
||||||
|
|
||||||
constructor(private router: Router,
|
constructor(private route: ActivatedRoute,
|
||||||
|
private router: Router,
|
||||||
private http: HttpClient) {}
|
private http: HttpClient) {}
|
||||||
|
|
||||||
private apiUrl: string = environment.API_ENDPOINT;
|
private apiUrl: string = environment.API_ENDPOINT;
|
||||||
|
@ -17,19 +17,16 @@ export class AuthenticationService {
|
||||||
// store the URL so we can redirect after logging in
|
// store the URL so we can redirect after logging in
|
||||||
public redirectUrl: string;
|
public redirectUrl: string;
|
||||||
|
|
||||||
private cookie: string = null;
|
private _storage: Storage = sessionStorage;
|
||||||
|
|
||||||
public isLoggedIn_ = new BehaviorSubject(false);
|
isLoggedIn: boolean = false;
|
||||||
|
|
||||||
public get isLoggedIn() {
|
|
||||||
return this.isLoggedIn_;
|
|
||||||
}
|
|
||||||
|
|
||||||
public loginWithState() {
|
public loginWithState() {
|
||||||
console.log(`logging in with state. Current url is: ${this.router.url}`);
|
console.log(`logging in with state. Current url is: ${this.router.url}`);
|
||||||
if (this.redirectUrl) {
|
if (this.redirectUrl) {
|
||||||
const url = this.redirectUrl;
|
const url = this.redirectUrl;
|
||||||
this.redirectUrl = null;
|
this.redirectUrl = null;
|
||||||
|
console.log('stored location', url);
|
||||||
sessionStorage.setItem('state.location', url);
|
sessionStorage.setItem('state.location', url);
|
||||||
} else {
|
} else {
|
||||||
/*sessionStorage.setItem("state.location", this.router.url);*/
|
/*sessionStorage.setItem("state.location", this.router.url);*/
|
||||||
|
@ -40,35 +37,35 @@ export class AuthenticationService {
|
||||||
}
|
}
|
||||||
|
|
||||||
public logout() {
|
public logout() {
|
||||||
|
deleteCookie('openAIREUser');
|
||||||
deleteCookie('AccessToken');
|
deleteCookie('AccessToken');
|
||||||
sessionStorage.clear();
|
sessionStorage.clear();
|
||||||
this.isLoggedIn_.next(false);
|
this.isLoggedIn = false;
|
||||||
|
|
||||||
console.log('logging out, calling:');
|
console.log('logging out, calling:');
|
||||||
console.log(`${this.apiUrl}/openid_logout`);
|
console.log(`${this.apiUrl}/openid_logout`);
|
||||||
|
|
||||||
/*window.location.href = `${this.apiUrl}/openid_logout`;*/
|
/*window.location.href = `${this.apiUrl}/openid_logout`;*/
|
||||||
window.location.href = `${environment.AAI_LOGOUT + window.location.origin + this.apiUrl}/openid_logout`;
|
window.location.href = `https://aai.openaire.eu/proxy/saml2/idp/SingleLogoutService.php?ReturnTo=${this.apiUrl}/openid_logout`;
|
||||||
}
|
}
|
||||||
|
|
||||||
public tryLogin() {
|
public tryLogin() {
|
||||||
this.cookie = getCookie('AccessToken');
|
if ( getCookie('openAIREUser') && (getCookie('openAIREUser') !== '') ) {
|
||||||
if (this.cookie && this.cookie !== '') {
|
console.log(`I got the cookie!`);
|
||||||
// console.log(`I got the cookie!`);
|
console.log(`in tryLogin -> document.cookie is: ${document.cookie.toString()}`);
|
||||||
// console.log(`in tryLogin -> document.cookie is: ${document.cookie.toString()}`);
|
|
||||||
/* SETTING INTERVAL TO REFRESH SESSION TIMEOUT COUNTDOWN */
|
/* SETTING INTERVAL TO REFRESH SESSION TIMEOUT COUNTDOWN */
|
||||||
setInterval(() => {
|
setInterval(() => {
|
||||||
this.http.get(this.apiUrl + '/user/login', { withCredentials: true }).subscribe(
|
this.http.get(this.apiUrl + '/user/login', { withCredentials: true }).subscribe(
|
||||||
userInfo => {
|
userInfo => {
|
||||||
// console.log('User is still logged in');
|
console.log('User is still logged in');
|
||||||
// console.log(userInfo);
|
console.log(userInfo);
|
||||||
this.isLoggedIn_.next(true);
|
this.isLoggedIn = true;
|
||||||
},
|
},
|
||||||
() => {
|
() => {
|
||||||
this.logout();
|
this.logout();
|
||||||
},
|
},
|
||||||
() => {
|
() => {
|
||||||
this.cookie = getCookie('AccessToken');
|
if ( !getCookie('openAIREUser') || (getCookie('openAIREUser') === '') ) {
|
||||||
if ( !this.cookie || this.cookie === '') {
|
|
||||||
this.logout();
|
this.logout();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -78,24 +75,24 @@ export class AuthenticationService {
|
||||||
|
|
||||||
}, 1000 * 60 * 5);
|
}, 1000 * 60 * 5);
|
||||||
if (!this.getIsUserLoggedIn()) {
|
if (!this.getIsUserLoggedIn()) {
|
||||||
// console.log(`session.name wasn't found --> logging in via repo-service!`);
|
console.log(`session.name wasn't found --> logging in via repo-service!`);
|
||||||
this.http.get(this.apiUrl + '/user/login', { withCredentials: true }).subscribe(
|
this.http.get(this.apiUrl + '/user/login', { withCredentials: true }).subscribe(
|
||||||
userInfo => {
|
userInfo => {
|
||||||
// console.log(userInfo);
|
console.log(userInfo);
|
||||||
sessionStorage.setItem('name', userInfo['name']);
|
sessionStorage.setItem('name', userInfo['name']);
|
||||||
sessionStorage.setItem('email', userInfo['email'].trim());
|
sessionStorage.setItem('email', userInfo['email'].trim());
|
||||||
sessionStorage.setItem('role', userInfo['role']);
|
sessionStorage.setItem('role', userInfo['role']);
|
||||||
this.isLoggedIn_.next(true);
|
this.isLoggedIn = true;
|
||||||
// console.log(`the current user is: ${sessionStorage.getItem('name')},
|
console.log(`the current user is: ${sessionStorage.getItem('name')},
|
||||||
// ${sessionStorage.getItem('email')}, ${sessionStorage.getItem('role')}`);
|
${sessionStorage.getItem('email')}, ${sessionStorage.getItem('role')}`);
|
||||||
},
|
},
|
||||||
error => {
|
error => {
|
||||||
sessionStorage.clear();
|
sessionStorage.clear();
|
||||||
console.log('Error!');
|
console.log('Error!');
|
||||||
console.log(error);
|
console.log(error);
|
||||||
|
deleteCookie('openAIREUser');
|
||||||
deleteCookie('AccessToken');
|
deleteCookie('AccessToken');
|
||||||
deleteCookie('AccessToken');
|
this.isLoggedIn = false;
|
||||||
this.isLoggedIn_.next(false);
|
|
||||||
this.router.navigate(['/home']);
|
this.router.navigate(['/home']);
|
||||||
},
|
},
|
||||||
() => {
|
() => {
|
||||||
|
@ -104,7 +101,7 @@ export class AuthenticationService {
|
||||||
sessionStorage.removeItem('state.location');
|
sessionStorage.removeItem('state.location');
|
||||||
console.log(`tried to login - returning to state: ${state}`);
|
console.log(`tried to login - returning to state: ${state}`);
|
||||||
if ( !this.getIsUserLoggedIn() ) {
|
if ( !this.getIsUserLoggedIn() ) {
|
||||||
// console.log('user hasn't logged in yet -- redirecting to home');
|
console.log('user hasn\'t logged in yet -- going to home');
|
||||||
this.router.navigate(['/home']);
|
this.router.navigate(['/home']);
|
||||||
} else {
|
} else {
|
||||||
this.router.navigate([state]);
|
this.router.navigate([state]);
|
||||||
|
@ -113,26 +110,26 @@ export class AuthenticationService {
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
this.isLoggedIn_.next(true);
|
this.isLoggedIn = true;
|
||||||
// console.log(`the current user is: ${sessionStorage.getItem('name')},
|
console.log(`the current user is: ${sessionStorage.getItem('name')},
|
||||||
// ${sessionStorage.getItem('email')}, ${sessionStorage.getItem('role')}`);
|
${sessionStorage.getItem('email')}, ${sessionStorage.getItem('role')}`);
|
||||||
if (this.redirectUrl) {
|
if (this.redirectUrl) {
|
||||||
const url = this.redirectUrl;
|
const url = this.redirectUrl;
|
||||||
this.redirectUrl = null;
|
this.redirectUrl = null;
|
||||||
this.router.navigate([url]);
|
this.router.navigate([url]);
|
||||||
// console.log('route is', url);
|
console.log('route is', url);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public getIsUserLoggedIn() {
|
public getIsUserLoggedIn() {
|
||||||
// todo: probably not all of them are needed
|
this.isLoggedIn = (getCookie('openAIREUser') && (getCookie('openAIREUser') !== '') && (sessionStorage.getItem('email') !== null ) );
|
||||||
return this.isLoggedIn_.value && this.cookie && this.cookie !== '' && sessionStorage.getItem('email') !== null;
|
return this.isLoggedIn;
|
||||||
}
|
}
|
||||||
|
|
||||||
public getUserName() {
|
public getUserName() {
|
||||||
if (this.isLoggedIn_.value) {
|
if (this.isLoggedIn) {
|
||||||
return sessionStorage.getItem('name');
|
return sessionStorage.getItem('name');
|
||||||
} else {
|
} else {
|
||||||
return '';
|
return '';
|
||||||
|
@ -148,7 +145,7 @@ export class AuthenticationService {
|
||||||
}
|
}
|
||||||
|
|
||||||
public getUserRole() {
|
public getUserRole() {
|
||||||
if (this.isLoggedIn_.value) {
|
if (this.isLoggedIn) {
|
||||||
return sessionStorage.getItem('role');
|
return sessionStorage.getItem('role');
|
||||||
} else {
|
} else {
|
||||||
return '';
|
return '';
|
||||||
|
|
|
@ -30,10 +30,11 @@ export class MonitorService {
|
||||||
|
|
||||||
getJobsOfUser(params: URLParameter[]): Observable<JobsOfUser> {
|
getJobsOfUser(params: URLParameter[]): Observable<JobsOfUser> {
|
||||||
let url = `${this.apiUrl}getJobsOfUser`;
|
let url = `${this.apiUrl}getJobsOfUser`;
|
||||||
if ( params.length > 0 ) {
|
for (const param of params) {
|
||||||
url += `?`
|
if (param.key === 'offset') {
|
||||||
for (const param of params) {
|
url += `?${param.key}=${param.value[0]}`;
|
||||||
url += `${param.key}=${param.value[0]}&`; // An ending "&" in the url does no cause any issues.
|
} else {
|
||||||
|
url += `&${param.key}=${param.value[0]}`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log(`knocking on: ${url}`);
|
console.log(`knocking on: ${url}`);
|
||||||
|
|
|
@ -10,9 +10,9 @@ import {
|
||||||
Country, MetricsInfo,
|
Country, MetricsInfo,
|
||||||
Repository,
|
Repository,
|
||||||
RepositoryInterface,
|
RepositoryInterface,
|
||||||
RepositorySnippet, RepositorySummaryInfo, TermsOfUse,
|
RepositorySnippet, RepositorySummaryInfo,
|
||||||
Timezone,
|
Timezone,
|
||||||
Typology, User
|
Typology
|
||||||
} from '../domain/typeScriptClasses';
|
} from '../domain/typeScriptClasses';
|
||||||
import { Observable, of } from 'rxjs';
|
import { Observable, of } from 'rxjs';
|
||||||
import { timezones } from '../domain/timezones';
|
import { timezones } from '../domain/timezones';
|
||||||
|
@ -28,34 +28,20 @@ const headerOptions = {
|
||||||
|
|
||||||
@Injectable ()
|
@Injectable ()
|
||||||
export class RepositoryService {
|
export class RepositoryService {
|
||||||
private apiUrl = environment.API_ENDPOINT + '/repositories/';
|
private apiUrl = environment.API_ENDPOINT + '/repository/';
|
||||||
private dashboardAPIUrl = environment.API_ENDPOINT + '/dashboard/';
|
private dashboardAPIUrl = environment.API_ENDPOINT + '/dashboard/';
|
||||||
|
|
||||||
constructor(private httpClient: HttpClient) { }
|
constructor(private httpClient: HttpClient) { }
|
||||||
|
|
||||||
addInterface(datatype: string, repoId: string, registeredBy: string, comment: string,
|
addInterface(datatype: string, repoId: string, registeredBy: string, comment: string, newInterface: RepositoryInterface): Observable<RepositoryInterface> {
|
||||||
newInterface: RepositoryInterface, desiredCompatibilityLevel: string): Observable<RepositoryInterface> {
|
const url = `${this.apiUrl}addInterface?datatype=${datatype}&repoId=${repoId}®isteredBy=${registeredBy}&comment=${comment}`;
|
||||||
let url;
|
|
||||||
comment = newInterface.comments; // temp fix for emailing comment
|
|
||||||
if (comment == null || comment === '') {
|
|
||||||
url = `${this.apiUrl}addInterface?datatype=${datatype}&repoId=${repoId}®isteredBy=${registeredBy}&desiredCompatibilityLevel=${desiredCompatibilityLevel}`;
|
|
||||||
} else {
|
|
||||||
url = `${this.apiUrl}addInterface?datatype=${datatype}&repoId=${repoId}®isteredBy=${registeredBy}&comment=${comment}&desiredCompatibilityLevel=${desiredCompatibilityLevel}`;
|
|
||||||
}
|
|
||||||
console.log(`knocking on: ${url}`);
|
console.log(`knocking on: ${url}`);
|
||||||
console.log(`sending ${JSON.stringify(newInterface)}`);
|
console.log(`sending ${JSON.stringify(newInterface)}`);
|
||||||
return this.httpClient.post<RepositoryInterface>(url, newInterface, headerOptions);
|
return this.httpClient.post<RepositoryInterface>(url, newInterface, headerOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
updateInterface(repoId: string, registeredBy: string, comment: string, interfaceInfo: RepositoryInterface,
|
updateInterface(repoId: string, registeredBy: string, comment: string, interfaceInfo: RepositoryInterface): Observable<RepositoryInterface> {
|
||||||
desiredCompatibilityLevel?: string): Observable<RepositoryInterface> {
|
const url = `${this.apiUrl}updateRepositoryInterface?repoId=${repoId}®isteredBy=${registeredBy}&comment=${comment}`;
|
||||||
let url;
|
|
||||||
comment = interfaceInfo.comments; // temp fix for emailing comment
|
|
||||||
if (comment == null || comment === '') {
|
|
||||||
url = `${this.apiUrl}updateRepositoryInterface?repoId=${repoId}®isteredBy=${registeredBy}&desiredCompatibilityLevel=${desiredCompatibilityLevel}`;
|
|
||||||
} else {
|
|
||||||
url = `${this.apiUrl}updateRepositoryInterface?repoId=${repoId}®isteredBy=${registeredBy}&comment=${comment}&desiredCompatibilityLevel=${desiredCompatibilityLevel}`;
|
|
||||||
}
|
|
||||||
console.log(`knocking on: ${url}`);
|
console.log(`knocking on: ${url}`);
|
||||||
console.log(`sending ${JSON.stringify(interfaceInfo)}`);
|
console.log(`sending ${JSON.stringify(interfaceInfo)}`);
|
||||||
return this.httpClient.post<RepositoryInterface>(url, interfaceInfo, headerOptions);
|
return this.httpClient.post<RepositoryInterface>(url, interfaceInfo, headerOptions);
|
||||||
|
@ -68,10 +54,6 @@ export class RepositoryService {
|
||||||
return this.httpClient.delete(url, {withCredentials: true, responseType: 'text'});
|
return this.httpClient.delete(url, {withCredentials: true, responseType: 'text'});
|
||||||
}
|
}
|
||||||
|
|
||||||
getInterfaceDesiredCompatibilityLevel(repoId: string, interfaceId: string) {
|
|
||||||
return this.httpClient.get(environment.API_ENDPOINT + `/compliance/${repoId}/${interfaceId}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
addRepository(datatype: string, newRepository: Repository): Observable<Repository> {
|
addRepository(datatype: string, newRepository: Repository): Observable<Repository> {
|
||||||
const url = `${this.apiUrl}addRepository?datatype=${datatype}`;
|
const url = `${this.apiUrl}addRepository?datatype=${datatype}`;
|
||||||
console.log(`knocking on: ${url}`);
|
console.log(`knocking on: ${url}`);
|
||||||
|
@ -93,27 +75,21 @@ export class RepositoryService {
|
||||||
return this.httpClient.post<Repository>(url, repoInfo, headerOptions);
|
return this.httpClient.post<Repository>(url, repoInfo, headerOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
updateRepositoriesTerms(termsList: any): Observable<TermsOfUse> {
|
|
||||||
const url = `${this.apiUrl}terms`;
|
|
||||||
console.log(`knocking on: ${url}`);
|
|
||||||
console.log(`sending ${JSON.stringify(termsList)}`);
|
|
||||||
return this.httpClient.post<TermsOfUse>(url, termsList, headerOptions);
|
|
||||||
}
|
|
||||||
|
|
||||||
getRepositoriesOfCountry(country: string, mode: string): Observable<RepositorySnippet[]> {
|
getRepositoriesOfCountry(country: string, mode: string): Observable<RepositorySnippet[]> {
|
||||||
const url = `${this.apiUrl}getRepositoriesByCountry/${country}/${mode}`;
|
const url = `${this.apiUrl}getRepositoriesByCountry/${country}/${mode}`;
|
||||||
console.log(`knocking on: ${url}`);
|
console.log(`knocking on: ${url}`);
|
||||||
return this.httpClient.get<RepositorySnippet[]>(url, headerOptions);
|
return this.httpClient.get<RepositorySnippet[]>(url, headerOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
getRepositoriesSnippetsOfUser(): Observable<RepositorySnippet[]> {
|
getRepositoriesOfUser(): Observable<RepositorySnippet[]> {
|
||||||
const url = `${this.apiUrl}snippets/user`;
|
const url = `${this.apiUrl}getRepositoriesOfUser/0/100`;
|
||||||
console.log(`knocking on: ${url}`);
|
console.log(`knocking on: ${url}`);
|
||||||
return this.httpClient.get<RepositorySnippet[]>(url, headerOptions);
|
return this.httpClient.get<RepositorySnippet[]>(url, headerOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
getRepositoryById(id: string): Observable<Repository> {
|
getRepositoryById(id: string): Observable<Repository> {
|
||||||
const url = `${this.apiUrl}getRepositoryById/${id}`;
|
const url = `${this.apiUrl}getRepositoryById/${id}`;
|
||||||
console.log(`knocking on: ${url}`);
|
console.log(`knocking on: ${url}`);
|
||||||
return this.httpClient.get<Repository>(url, headerOptions);
|
return this.httpClient.get<Repository>(url, headerOptions);
|
||||||
}
|
}
|
||||||
|
@ -124,6 +100,7 @@ export class RepositoryService {
|
||||||
return this.httpClient.get<RepositoryInterface[]>(url, headerOptions);
|
return this.httpClient.get<RepositoryInterface[]>(url, headerOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
getUrlsOfUserRepos(): Observable<string[]> {
|
getUrlsOfUserRepos(): Observable<string[]> {
|
||||||
const url = `${this.apiUrl}getUrlsOfUserRepos/0/100/`;
|
const url = `${this.apiUrl}getUrlsOfUserRepos/0/100/`;
|
||||||
console.log(`knocking on: ${url}`);
|
console.log(`knocking on: ${url}`);
|
||||||
|
@ -157,7 +134,7 @@ export class RepositoryService {
|
||||||
}
|
}
|
||||||
|
|
||||||
getCountries(): Observable<Country[]> {
|
getCountries(): Observable<Country[]> {
|
||||||
const url = `${this.apiUrl}countries`;
|
const url = `${this.apiUrl}getCountries`;
|
||||||
console.log(`knocking on: ${url}`);
|
console.log(`knocking on: ${url}`);
|
||||||
return this.httpClient.get<Country[]>(url, headerOptions);
|
return this.httpClient.get<Country[]>(url, headerOptions);
|
||||||
}
|
}
|
||||||
|
@ -169,7 +146,7 @@ export class RepositoryService {
|
||||||
return this.httpClient.get<Map<string, string>>(url, headerOptions);
|
return this.httpClient.get<Map<string, string>>(url, headerOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
getDatasourceClasses(mode: string): Observable<Object> {
|
getDatasourceClasses(mode: string): Observable<Map<string, string>> {
|
||||||
const url = `${this.apiUrl}getDatasourceClasses/${mode}`;
|
const url = `${this.apiUrl}getDatasourceClasses/${mode}`;
|
||||||
console.log(`knocking on: ${url}`);
|
console.log(`knocking on: ${url}`);
|
||||||
return this.httpClient.get<Map<string, string>>(url, headerOptions);
|
return this.httpClient.get<Map<string, string>>(url, headerOptions);
|
||||||
|
@ -206,22 +183,4 @@ export class RepositoryService {
|
||||||
console.log(`knocking on: ${url}`);
|
console.log(`knocking on: ${url}`);
|
||||||
return this.httpClient.get<RepositorySummaryInfo[]>(url, headerOptions);
|
return this.httpClient.get<RepositorySummaryInfo[]>(url, headerOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
getRepositoryAdmins(repoId: string): Observable<User[]> {
|
|
||||||
const url = `${this.apiUrl}${repoId}/admins`;
|
|
||||||
console.log(`knocking on: ${url}`);
|
|
||||||
return this.httpClient.get<User[]>(url, headerOptions);
|
|
||||||
}
|
|
||||||
|
|
||||||
deleteRepositoryAdmin(repoId: string, repoAdminEmail: string) {
|
|
||||||
const url = `${this.apiUrl}${repoId}/admins/${repoAdminEmail}`;
|
|
||||||
console.log(`knocking on: ${url}`);
|
|
||||||
|
|
||||||
return this.httpClient.delete(url, headerOptions);
|
|
||||||
}
|
|
||||||
|
|
||||||
addRepositoryAdmin(repoId: string, repoAdminEmail: string) {
|
|
||||||
const url = `${this.apiUrl}${repoId}/admins`;
|
|
||||||
return this.httpClient.post<string>(url, repoAdminEmail, headerOptions);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import {Injectable} from '@angular/core';
|
import { Injectable } from "@angular/core";
|
||||||
import {Repository, RepositorySnippet} from '../domain/typeScriptClasses';
|
import { Repository, RepositorySnippet } from "../domain/typeScriptClasses";
|
||||||
import {Subject} from 'rxjs/internal/Subject';
|
import { Subject } from "rxjs/internal/Subject";
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class SharedService {
|
export class SharedService {
|
||||||
|
@ -12,6 +12,7 @@ export class SharedService {
|
||||||
private repositoriesOfUser: Subject<RepositorySnippet[]> = new Subject<RepositorySnippet[]>();
|
private repositoriesOfUser: Subject<RepositorySnippet[]> = new Subject<RepositorySnippet[]>();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
get repository$() {
|
get repository$() {
|
||||||
return this.repository.asObservable();
|
return this.repository.asObservable();
|
||||||
}
|
}
|
||||||
|
@ -20,7 +21,7 @@ export class SharedService {
|
||||||
return this.repositoryCopy;
|
return this.repositoryCopy;
|
||||||
}
|
}
|
||||||
|
|
||||||
setRepository(data: Repository) {
|
setRepository(data:Repository) {
|
||||||
this.repository.next(data);
|
this.repository.next(data);
|
||||||
this.repositoryCopy = data;
|
this.repositoryCopy = data;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,6 @@ import { Injectable } from '@angular/core';
|
||||||
import { Observable } from 'rxjs';
|
import { Observable } from 'rxjs';
|
||||||
import { ReportResponseWrapper } from '../domain/usageStatsClasses';
|
import { ReportResponseWrapper } from '../domain/usageStatsClasses';
|
||||||
import { environment } from '../../environments/environment';
|
import { environment } from '../../environments/environment';
|
||||||
import {COUNTER_Dataset_Report, COUNTER_Item_Report} from '../domain/sushilite';
|
|
||||||
|
|
||||||
const headerOptions = {
|
const headerOptions = {
|
||||||
headers : new HttpHeaders().set('Content-Type', 'application/json')
|
headers : new HttpHeaders().set('Content-Type', 'application/json')
|
||||||
|
@ -16,24 +15,17 @@ const headerOptions = {
|
||||||
|
|
||||||
@Injectable ()
|
@Injectable ()
|
||||||
export class UsagestatsService {
|
export class UsagestatsService {
|
||||||
private apiUrl = environment.API_ENDPOINT + '';
|
private apiUrl = environment.API_ENDPOINT + '/sushilite/';
|
||||||
|
|
||||||
constructor(private httpClient: HttpClient) { }
|
constructor(private httpClient: HttpClient) { }
|
||||||
|
|
||||||
|
|
||||||
getReportResponse(page: String, pageSize: String, params: URLSearchParams): Observable<ReportResponseWrapper> {
|
getReportResponse(page: String, pageSize: String, params: URLSearchParams): Observable<ReportResponseWrapper> {
|
||||||
const url = `${this.apiUrl}/sushilite/getReportResults/${page}/${pageSize}?${params}`;
|
const url = `${this.apiUrl}getReportResults/${page}/${pageSize}?${params}`;
|
||||||
// console.log(`knocking on: ${url}`);
|
console.log(`knocking on: ${url}`);
|
||||||
|
|
||||||
return this.httpClient.get<ReportResponseWrapper>(url, headerOptions);
|
return this.httpClient.get<ReportResponseWrapper>(url, headerOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
getR5Response(params: URLSearchParams) {
|
|
||||||
const url = `${this.apiUrl}/sushiliteR5/getReportResults/?${params}`;
|
|
||||||
console.log(`knocking on: ${url}`);
|
|
||||||
|
|
||||||
return this.httpClient.get<COUNTER_Dataset_Report | COUNTER_Item_Report>(url, headerOptions);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,6 @@
|
||||||
<div class="uk-modal-footer uk-text-right">
|
<div class="uk-modal-footer uk-text-right">
|
||||||
<button (click)="hideModal()" type="button" class="md-btn md-btn-flat uk-modal-close">{{ hideModalButton }}</button>
|
<button (click)="hideModal()" type="button" class="md-btn md-btn-flat uk-modal-close">{{ hideModalButton }}</button>
|
||||||
<button *ngIf="confirmActionButton" (click)="confirmedAction()" type="button" class="md-btn md-btn-flat md-btn-flat-primary">{{confirmActionButton}}</button>
|
<button *ngIf="confirmActionButton" (click)="confirmedAction()" type="button" class="md-btn md-btn-flat md-btn-flat-primary">{{confirmActionButton}}</button>
|
||||||
<button *ngIf="confirmButNotCloseButton" (click)="confirmedButNotCloseAction()" type="button" class="md-btn md-btn-flat md-btn-flat-primary">{{confirmButNotCloseButton}}</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -19,12 +19,10 @@ export class ConfirmationDialogComponent {
|
||||||
@Input() public title: string;
|
@Input() public title: string;
|
||||||
|
|
||||||
@Input() public confirmActionButton: string;
|
@Input() public confirmActionButton: string;
|
||||||
@Input() public confirmButNotCloseButton: string;
|
|
||||||
|
|
||||||
@Input() public hideModalButton: string = 'Cancel';
|
@Input() public hideModalButton: string = 'Cancel';
|
||||||
|
|
||||||
@Output() emitObject: EventEmitter<any> = new EventEmitter();
|
@Output() emitObject: EventEmitter<any> = new EventEmitter();
|
||||||
@Output() clearAll: EventEmitter<any> = new EventEmitter();
|
|
||||||
|
|
||||||
private _ids: string[] = [];
|
private _ids: string[] = [];
|
||||||
|
|
||||||
|
@ -38,7 +36,6 @@ export class ConfirmationDialogComponent {
|
||||||
|
|
||||||
public hideModal(): void {
|
public hideModal(): void {
|
||||||
this.isModalShown = false;
|
this.isModalShown = false;
|
||||||
this.clearAll.emit();
|
|
||||||
// this.autoShownModal.hide();
|
// this.autoShownModal.hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,8 +50,4 @@ export class ConfirmationDialogComponent {
|
||||||
// this.hideModal();
|
// this.hideModal();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public confirmedButNotCloseAction() {
|
|
||||||
this.emitObject.emit(this._ids);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,7 +44,7 @@ export class MyArray extends MyGroup {
|
||||||
|
|
||||||
@Input() public initEmpty: boolean = false;
|
@Input() public initEmpty: boolean = false;
|
||||||
|
|
||||||
@ViewChild(MyFormDirective, { static: true }) protected formComponents: MyFormDirective;
|
@ViewChild(MyFormDirective) protected formComponents: MyFormDirective;
|
||||||
|
|
||||||
protected _cfr: ComponentFactoryResolver;
|
protected _cfr: ComponentFactoryResolver;
|
||||||
|
|
||||||
|
|
|
@ -120,16 +120,16 @@ export class MyGroup implements OnInit, AfterContentInit {
|
||||||
selector : 'form-inline',
|
selector : 'form-inline',
|
||||||
template : `
|
template : `
|
||||||
<div class="">
|
<div class="">
|
||||||
<label class="" *ngIf="description?.label !== null && description?.label !== ''"
|
<label class="" *ngIf="description.label !== null && description.label !== ''"
|
||||||
[ngClass]="{'required' : description.mandatory==true}" title="{{ description.desc }}">
|
[ngClass]="{'required' : description.mandatory==true}" title="{{ description.desc }}">
|
||||||
{{ description.label + (description.mandatory ? ' (*)' : '') }}
|
{{ description.label }}
|
||||||
</label>
|
</label>
|
||||||
<ng-content></ng-content>
|
<ng-content></ng-content>
|
||||||
<span class="md-input-bar"></span>
|
<span class="md-input-bar"></span>
|
||||||
</div>
|
</div>
|
||||||
`
|
`
|
||||||
})
|
|
||||||
|
|
||||||
|
})
|
||||||
export class InlineFormWrapper implements OnChanges {
|
export class InlineFormWrapper implements OnChanges {
|
||||||
|
|
||||||
@Input() public description: Description = null;
|
@Input() public description: Description = null;
|
||||||
|
|
|
@ -1,13 +1,12 @@
|
||||||
/**
|
/**
|
||||||
* Created by stefanos on 19/5/2017.
|
* Created by stefanos on 19/5/2017.
|
||||||
*/
|
*/
|
||||||
import { EventEmitter, Input, OnInit, Output, ViewChild, ViewRef, Directive } from '@angular/core';
|
import { EventEmitter, Input, OnInit, Output, ViewChild, ViewRef } from '@angular/core';
|
||||||
import { Description } from '../../../domain/oa-description';
|
import { Description } from '../../../domain/oa-description';
|
||||||
import { MyFormDirective } from './my-form.directive';
|
import { MyFormDirective } from './my-form.directive';
|
||||||
import { throwError } from 'rxjs';
|
import { throwError } from 'rxjs';
|
||||||
|
|
||||||
|
|
||||||
@Directive()
|
|
||||||
export abstract class MyWrapper implements OnInit{
|
export abstract class MyWrapper implements OnInit{
|
||||||
|
|
||||||
@Input() public component: ViewRef;
|
@Input() public component: ViewRef;
|
||||||
|
@ -18,7 +17,7 @@ export abstract class MyWrapper implements OnInit{
|
||||||
|
|
||||||
@Output() deleteNotifier: EventEmitter<ViewRef> = new EventEmitter();
|
@Output() deleteNotifier: EventEmitter<ViewRef> = new EventEmitter();
|
||||||
|
|
||||||
@ViewChild(MyFormDirective, { static: true }) private formComponents: MyFormDirective;
|
@ViewChild(MyFormDirective) private formComponents: MyFormDirective;
|
||||||
|
|
||||||
public first = true;
|
public first = true;
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ export class ReadMoreComponent implements AfterContentInit {
|
||||||
//@Input() text: string;
|
//@Input() text: string;
|
||||||
//maximum height of the container
|
//maximum height of the container
|
||||||
@Input("maxHeight") maxHeight: number = 100;
|
@Input("maxHeight") maxHeight: number = 100;
|
||||||
@ViewChild("readMoreDiv", { static: true })
|
@ViewChild("readMoreDiv")
|
||||||
readMoreDiv: ElementRef;
|
readMoreDiv: ElementRef;
|
||||||
//set these to false to get the height of the expended container
|
//set these to false to get the height of the expended container
|
||||||
public isCollapsed: boolean = false;
|
public isCollapsed: boolean = false;
|
||||||
|
|
|
@ -30,7 +30,7 @@ export class RepositoryTilesComponent implements OnInit {
|
||||||
|
|
||||||
getReposOfUser(): void {
|
getReposOfUser(): void {
|
||||||
this.loadingMessage = loadingReposMessage;
|
this.loadingMessage = loadingReposMessage;
|
||||||
this.repoService.getRepositoriesSnippetsOfUser()
|
this.repoService.getRepositoriesOfUser()
|
||||||
.subscribe(
|
.subscribe(
|
||||||
repos => this.reposOfUser = repos.sort( function(a, b) {
|
repos => this.reposOfUser = repos.sort( function(a, b) {
|
||||||
if (a.officialname < b.officialname) {
|
if (a.officialname < b.officialname) {
|
||||||
|
|
|
@ -57,7 +57,7 @@
|
||||||
<form-inline [description]="issnDesc" [valid]="group.get('issn').valid">
|
<form-inline [description]="issnDesc" [valid]="group.get('issn').valid">
|
||||||
<span *ngIf="group.get('issn').invalid && group.get('issn').touched && group.get('issn').dirty"
|
<span *ngIf="group.get('issn').invalid && group.get('issn').touched && group.get('issn').dirty"
|
||||||
class="help-block inline uk-text-danger"
|
class="help-block inline uk-text-danger"
|
||||||
style="margin-top: 0px; margin-bottom: 0px; padding-left: 10px;">Issn needs to be of the form: "1111-1111" or "1111-111X" or "11111111" or "1111111X"</span>
|
style="margin-top: 0px; margin-bottom: 0px; padding-left: 10px;">Issn needs to be of the form: "1111-1111" or "1111-111X"</span>
|
||||||
<input formControlName="issn" class="md-input" type="text"
|
<input formControlName="issn" class="md-input" type="text"
|
||||||
(focus)="group.get('issn').markAsUntouched()" (blur)="group.get('issn').updateValueAndValidity()">
|
(focus)="group.get('issn').markAsUntouched()" (blur)="group.get('issn').updateValueAndValidity()">
|
||||||
</form-inline>
|
</form-inline>
|
||||||
|
@ -71,7 +71,7 @@
|
||||||
<form-inline [description]="eissnDesc" [valid]="group.get('eissn').valid">
|
<form-inline [description]="eissnDesc" [valid]="group.get('eissn').valid">
|
||||||
<span *ngIf="group.get('eissn').invalid && group.get('eissn').touched && group.get('eissn').dirty"
|
<span *ngIf="group.get('eissn').invalid && group.get('eissn').touched && group.get('eissn').dirty"
|
||||||
class="help-block inline uk-text-danger"
|
class="help-block inline uk-text-danger"
|
||||||
style="margin-top: 0px; margin-bottom: 0px; padding-left: 10px;">Eissn needs to be of the form: "1111-1111" or "1111-111X" or "11111111" or "1111111X"</span>
|
style="margin-top: 0px; margin-bottom: 0px; padding-left: 10px;">Eissn needs to be of the form: "1111-1111" or "1111-111X"</span>
|
||||||
<input formControlName="eissn" class="md-input" type="text"
|
<input formControlName="eissn" class="md-input" type="text"
|
||||||
(focus)="group.get('eissn').markAsUntouched()" (blur)="group.get('eissn').updateValueAndValidity()">
|
(focus)="group.get('eissn').markAsUntouched()" (blur)="group.get('eissn').updateValueAndValidity()">
|
||||||
</form-inline>
|
</form-inline>
|
||||||
|
@ -85,7 +85,7 @@
|
||||||
<form-inline [description]="lissnDesc" [valid]="group.get('lissn').valid">
|
<form-inline [description]="lissnDesc" [valid]="group.get('lissn').valid">
|
||||||
<span *ngIf="group.get('lissn').invalid && group.get('lissn').touched && group.get('lissn').dirty"
|
<span *ngIf="group.get('lissn').invalid && group.get('lissn').touched && group.get('lissn').dirty"
|
||||||
class="help-block inline uk-text-danger"
|
class="help-block inline uk-text-danger"
|
||||||
style="margin-top: 0px; margin-bottom: 0px; padding-left: 10px;">Lissn needs to be of the form: "1111-1111" or "1111-111X" or "11111111" or "1111111X"</span>
|
style="margin-top: 0px; margin-bottom: 0px; padding-left: 10px;">Lissn needs to be of the form: "1111-1111" or "1111-111X"</span>
|
||||||
<input formControlName="lissn" class="md-input" type="text"
|
<input formControlName="lissn" class="md-input" type="text"
|
||||||
(focus)="group.get('lissn').markAsUntouched()" (blur)="group.get('lissn').updateValueAndValidity()">
|
(focus)="group.get('lissn').markAsUntouched()" (blur)="group.get('lissn').updateValueAndValidity()">
|
||||||
</form-inline>
|
</form-inline>
|
||||||
|
@ -111,7 +111,7 @@
|
||||||
<form-inline [description]="countryDesc" [valid]="group.get('country')">
|
<form-inline [description]="countryDesc" [valid]="group.get('country')">
|
||||||
<select formControlName="country" class="md-input">
|
<select formControlName="country" class="md-input">
|
||||||
<option value="">-- none selected --</option>
|
<option value="">-- none selected --</option>
|
||||||
<option *ngFor="let country of countries" value="{{country.code}}">{{ country.name }}</option>
|
<option *ngFor="let country of countries" value="{{country.code}}" title="{{country.name}}">{{ country.name }}</option>
|
||||||
</select>
|
</select>
|
||||||
</form-inline>
|
</form-inline>
|
||||||
</div>
|
</div>
|
||||||
|
@ -277,7 +277,7 @@
|
||||||
<form-inline [description]="datasourceTypeDesc" [valid]="group.get('datasourceType').valid">
|
<form-inline [description]="datasourceTypeDesc" [valid]="group.get('datasourceType').valid">
|
||||||
<select formControlName="datasourceType" class="md-input">
|
<select formControlName="datasourceType" class="md-input">
|
||||||
<option value="">-- none selected --</option>
|
<option value="">-- none selected --</option>
|
||||||
<option *ngFor="let key of classCodes" value="{{key}}">{{ datasourceClasses.get(key) }}</option>
|
<option *ngFor="let key of classCodes" value="{{key}}">{{ datasourceClasses[key] }}</option>
|
||||||
</select>
|
</select>
|
||||||
</form-inline>
|
</form-inline>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -51,17 +51,19 @@ export class DatasourceCreateFormComponent implements OnInit {
|
||||||
formSubmitted = false;
|
formSubmitted = false;
|
||||||
group: FormGroup;
|
group: FormGroup;
|
||||||
|
|
||||||
|
// old issn regex
|
||||||
|
// issn : ['', [Validators.pattern('^\\d\\d\\d\\d[-]\\d\\d\\d\\d$')] ],
|
||||||
readonly groupDefinition = {
|
readonly groupDefinition = {
|
||||||
softwarePlatform : ['', Validators.required],
|
softwarePlatform : ['', Validators.required],
|
||||||
platformName : '',
|
platformName : '',
|
||||||
officialName : ['', Validators.required],
|
officialName : ['', Validators.required],
|
||||||
issn : ['', [Validators.pattern('^(\\d{4}-?\\d{3}[\\dxX])$')] ],
|
issn : ['', [Validators.pattern('^\\d{4}-\\d{3}[\\dxX]$')] ],
|
||||||
eissn : ['', Validators.pattern('^(\\d{4}-?\\d{3}[\\dxX])$') ],
|
eissn : ['', Validators.pattern('^\\d{4}-\\d{3}[\\dxX]$') ],
|
||||||
lissn : ['', Validators.pattern('^(\\d{4}-?\\d{3}[\\dxX])$') ],
|
lissn : ['', Validators.pattern('^\\d{4}-\\d{3}[\\dxX]$') ],
|
||||||
repoDescription : ['', Validators.required],
|
repoDescription : ['', Validators.required],
|
||||||
country : ['', Validators.required],
|
country : ['', Validators.required],
|
||||||
longtitude : ['', [Validators.min(-180), Validators.max(180)] ],
|
longtitude : ['', [Validators.required, Validators.min(-180), Validators.max(180)] ],
|
||||||
latitude : ['', [Validators.min(-90), Validators.max(90)] ],
|
latitude : ['', [Validators.required, Validators.min(-90), Validators.max(90)] ],
|
||||||
websiteUrl : ['', [Validators.required, Validators.pattern('^(http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/)?[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?$')] ],
|
websiteUrl : ['', [Validators.required, Validators.pattern('^(http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/)?[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?$')] ],
|
||||||
institutionName : ['', Validators.required],
|
institutionName : ['', Validators.required],
|
||||||
englishName: ['', Validators.required],
|
englishName: ['', Validators.required],
|
||||||
|
@ -108,7 +110,7 @@ export class DatasourceCreateFormComponent implements OnInit {
|
||||||
this.group = this.fb.group(this.groupDefinition);
|
this.group = this.fb.group(this.groupDefinition);
|
||||||
if (this.mode === 'journal') {
|
if (this.mode === 'journal') {
|
||||||
this.group.get('issn').clearValidators();
|
this.group.get('issn').clearValidators();
|
||||||
this.group.get('issn').setValidators([Validators.required, Validators.pattern('^(\\d{4}-?\\d{3}[\\dxX])$')]);
|
this.group.get('issn').setValidators([Validators.required, Validators.pattern('^\\d{4}-\\d{3}[\\dxX]$')]);
|
||||||
}
|
}
|
||||||
this.getTypologies();
|
this.getTypologies();
|
||||||
this.getTimezones();
|
this.getTimezones();
|
||||||
|
@ -122,29 +124,29 @@ export class DatasourceCreateFormComponent implements OnInit {
|
||||||
|
|
||||||
setupForm() {
|
setupForm() {
|
||||||
if (this.selectedRepo) {
|
if (this.selectedRepo) {
|
||||||
console.log(`my datasource type is: ${this?.selectedRepo?.eoscDatasourceType}`);
|
console.log(`my datasource type is: ${this.selectedRepo.datasourceType}`);
|
||||||
|
|
||||||
this.group.setValue({
|
this.group.setValue({
|
||||||
softwarePlatform: this.selectedRepo.platform,
|
softwarePlatform: this.selectedRepo.typology,
|
||||||
platformName: '',
|
platformName: '',
|
||||||
officialName: this.selectedRepo.officialname,
|
officialName: this.selectedRepo.officialName,
|
||||||
issn: '',
|
issn: '',
|
||||||
eissn: '',
|
eissn: '',
|
||||||
lissn: '',
|
lissn: '',
|
||||||
repoDescription: this.selectedRepo.description,
|
repoDescription: this.selectedRepo.description,
|
||||||
country: this.selectedRepo.organizations[0].country, // countryCode
|
country: this.selectedRepo.countryCode,
|
||||||
longtitude: this.selectedRepo.longitude,
|
longtitude: this.selectedRepo.longitude,
|
||||||
latitude: this.selectedRepo.latitude,
|
latitude: this.selectedRepo.latitude,
|
||||||
websiteUrl: this.selectedRepo.websiteurl,
|
websiteUrl: this.selectedRepo.websiteUrl,
|
||||||
institutionName: this.selectedRepo.organizations[0].legalname,
|
institutionName: this.selectedRepo.organization,
|
||||||
englishName: this.selectedRepo.englishname,
|
englishName: this.selectedRepo.englishName,
|
||||||
logoUrl: this.selectedRepo.logourl,
|
logoUrl: this.selectedRepo.logoUrl,
|
||||||
timezone: this.selectedRepo.timezone,
|
timezone: this.selectedRepo.timezone,
|
||||||
datasourceType: this.selectedRepo.eoscDatasourceType, // TODO: still needed? should it be typology? typology exists on that stage?
|
datasourceType: this.selectedRepo.datasourceClass,
|
||||||
adminEmail: this.selectedRepo.contactemail
|
adminEmail: this.selectedRepo.contactEmail
|
||||||
});
|
});
|
||||||
|
|
||||||
if (this.selectedRepo.eoscDatasourceType === 'Journal archive') {
|
if (this.selectedRepo.datasourceType === 'journal') {
|
||||||
|
|
||||||
let ssnToShow = this.selectedRepo.issn.slice(0, 4) + '-' + this.selectedRepo.issn.toString().slice(4);
|
let ssnToShow = this.selectedRepo.issn.slice(0, 4) + '-' + this.selectedRepo.issn.toString().slice(4);
|
||||||
this.group.get('issn').setValue(ssnToShow);
|
this.group.get('issn').setValue(ssnToShow);
|
||||||
|
@ -183,17 +185,15 @@ export class DatasourceCreateFormComponent implements OnInit {
|
||||||
|
|
||||||
getDatasourceClasses() {
|
getDatasourceClasses() {
|
||||||
this.repoService.getDatasourceClasses(this.mode).subscribe(
|
this.repoService.getDatasourceClasses(this.mode).subscribe(
|
||||||
classes => {
|
classes => this.datasourceClasses = classes,
|
||||||
for (const [key, value] of Object.entries(classes)) {
|
|
||||||
this.datasourceClasses.set(key, value);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
error => {
|
error => {
|
||||||
this.errorMessage = noServiceMessage;
|
this.errorMessage = noServiceMessage;
|
||||||
console.log(error);
|
console.log(error);
|
||||||
},
|
},
|
||||||
() => {
|
() => {
|
||||||
this.classCodes = Array.from(this.datasourceClasses.keys());
|
for (const key of Object.keys(this.datasourceClasses)) {
|
||||||
|
this.classCodes.push(key);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -227,28 +227,25 @@ export class DatasourceCreateFormComponent implements OnInit {
|
||||||
}
|
}
|
||||||
|
|
||||||
createNewRepository(): Repository {
|
createNewRepository(): Repository {
|
||||||
const newRepo = new Repository();
|
const newRepo: Repository = new Repository();
|
||||||
newRepo.officialname = this.group.get('officialName').value.toString();
|
newRepo.officialName = this.group.get('officialName').value.toString();
|
||||||
newRepo.englishname = this.group.get('englishName').value.toString();
|
newRepo.englishName = this.group.get('englishName').value.toString();
|
||||||
newRepo.websiteurl = this.group.get('websiteUrl').value;
|
newRepo.websiteUrl = this.group.get('websiteUrl').value;
|
||||||
newRepo.logourl = this.group.get('logoUrl').value;
|
newRepo.logoUrl = this.group.get('logoUrl').value;
|
||||||
newRepo.contactemail = this.group.get('adminEmail').value;
|
newRepo.contactEmail = this.group.get('adminEmail').value;
|
||||||
newRepo.organizations.push({
|
newRepo.countryName = this.countries.filter(x => x.code === this.group.get('country').value)[0].name;
|
||||||
legalshortname: null,
|
newRepo.countryCode = this.group.get('country').value;
|
||||||
legalname: this.group.get('institutionName').value.toString(),
|
newRepo.organization = this.group.get('institutionName').value.toString();
|
||||||
websiteurl: null,
|
|
||||||
logourl: null,
|
|
||||||
country: this.group.get('country').value
|
|
||||||
});
|
|
||||||
newRepo.latitude = this.group.get('latitude').value;
|
newRepo.latitude = this.group.get('latitude').value;
|
||||||
newRepo.longitude = this.group.get('longtitude').value;
|
newRepo.longitude = this.group.get('longtitude').value;
|
||||||
newRepo.timezone = this.group.get('timezone').value;
|
newRepo.timezone = this.group.get('timezone').value;
|
||||||
if (this.group.get('softwarePlatform').value !== '') {
|
newRepo.datasourceClass = this.group.get('datasourceType').value;
|
||||||
newRepo.platform = this.group.get('softwarePlatform').value;
|
if (this.group.get('softwarePlatform').value ) {
|
||||||
|
newRepo.typology = this.group.get('softwarePlatform').value;
|
||||||
} else if (this.group.get('platformName').value) {
|
} else if (this.group.get('platformName').value) {
|
||||||
newRepo.platform = this.group.get('platformName').value;
|
newRepo.typology = this.group.get('platformName').value;
|
||||||
}
|
}
|
||||||
newRepo.typology = this.group.get('datasourceType').value;
|
// newRepo.typology = this.group.get('softwarePlatform').value;
|
||||||
newRepo.description = this.group.get('repoDescription').value.toString();
|
newRepo.description = this.group.get('repoDescription').value.toString();
|
||||||
newRepo.issn = '';
|
newRepo.issn = '';
|
||||||
newRepo.eissn = '';
|
newRepo.eissn = '';
|
||||||
|
@ -270,15 +267,14 @@ export class DatasourceCreateFormComponent implements OnInit {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
newRepo.registeredby = this.authService.getUserEmail();
|
newRepo.registeredBy = this.authService.getUserEmail();
|
||||||
|
|
||||||
newRepo.eoscDatasourceType = this.mode; // keep this
|
/* THE BELOW FIELDS ARE NOT SET IN GWT CODE*/
|
||||||
newRepo.managed = true;
|
newRepo.datasourceType = this.mode;
|
||||||
|
newRepo.dateOfCreation = new Date(Date.now()); // NOT NEEDED ??
|
||||||
|
newRepo.registered = true;
|
||||||
|
newRepo.registrationDate = new Date(Date.now()); // NOT NEEDED ??
|
||||||
|
|
||||||
const now = new Date(Date.now());
|
|
||||||
newRepo.consentTermsOfUseDate = now;
|
|
||||||
newRepo.lastConsentTermsOfUseDate = now;
|
|
||||||
newRepo.registrationdate = now;
|
|
||||||
return newRepo;
|
return newRepo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,87 +14,136 @@
|
||||||
<div class="md-card-toolbar">
|
<div class="md-card-toolbar">
|
||||||
<div class="md-card-toolbar-actions">
|
<div class="md-card-toolbar-actions">
|
||||||
<a *ngIf="!inRegister" (click)="saveInterface()" class="uk-margin-small-right"><i class="md-icon material-icons">save</i></a>
|
<a *ngIf="!inRegister" (click)="saveInterface()" class="uk-margin-small-right"><i class="md-icon material-icons">save</i></a>
|
||||||
<a *ngIf="canEdit" (click)="removeInterface()" class="uk-margin-small-left"><i class="md-icon material-icons">clear</i></a>
|
<a (click)="removeInterface()" class="uk-margin-small-left"><i class="md-icon material-icons">clear</i></a>
|
||||||
</div>
|
</div>
|
||||||
|
<!--<h3 class="md-card-toolbar-heading-text"> Card Heading </h3>-->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!--<div class="md-card-toolbar interfaceActionsPanel">-->
|
||||||
|
<!--<a *ngIf="!inRegister" (click)="saveInterface()" class="uk-margin-small-right"><i class="far fa-save fa-lg"></i></a>-->
|
||||||
|
<!--<a (click)="removeInterface()" class="uk-margin-small-left"><i class="fas fa-times fa-lg"></i></a>-->
|
||||||
|
<!--</div>-->
|
||||||
|
|
||||||
<div class="md-card-content">
|
<div class="md-card-content">
|
||||||
<div *ngIf="successMessage" class="uk-alert uk-alert-success" style="clear: both">{{ successMessage }}</div>
|
<div *ngIf="successMessage" class="uk-alert uk-alert-success" style="clear: both">{{ successMessage }}</div>
|
||||||
<div *ngIf="errorMessage" class="uk-alert" [ngClass]="{'uk-alert-warning': errorMessage == invalidCustomBaseUrl,
|
<div *ngIf="errorMessage" class="uk-alert" [ngClass]="{'uk-alert-warning': errorMessage == invalidCustomBaseUrl,
|
||||||
'uk-alert-danger': errorMessage != invalidCustomBaseUrl}" style="clear: both">{{ errorMessage }}
|
'uk-alert-danger': errorMessage != invalidCustomBaseUrl}" style="clear: both">{{ errorMessage }}</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="md-input-wrapper uk-margin-top {{ (repoInterfaceForm.get('baseurl') != null) ? 'md-input-filled' : '' }}">
|
<div class="md-input-wrapper uk-margin-medium-top {{ (repoInterfaceForm.get('baseUrl') != null) ? 'md-input-filled' : '' }}">
|
||||||
<div>
|
<label class="" for="baseUrl" title="{{ baseUrlDesc.desc }}">Base OAI-PMH URL (*)</label>
|
||||||
<label class="uk-text-bold" for="baseurl" title="{{ baseUrlDesc.desc }}">Base OAI-PMH URL (*)</label>
|
<span *ngIf="showIdentifiedBaseUrl" class="help-block inline" style="margin-top: 8px; margin-bottom: 0px; padding-left: 10px; display: block;">
|
||||||
</div>
|
|
||||||
<span *ngIf="showIdentifiedBaseUrl" class="help-block inline uk-text-success" style="margin-top: 8px; margin-bottom: 0px; padding-left: 10px; display: block;">
|
|
||||||
Identified
|
Identified
|
||||||
</span>
|
</span>
|
||||||
<span *ngIf="errorMessage == invalidCustomBaseUrl" class="help-block inline uk-text-warning" style="margin-top: 8px; margin-bottom: 0px; padding-left: 10px; display: block;">
|
<input id="baseUrl" type="text" class="md-input" formControlName="baseUrl" (blur)="getInterfaceInfo()">
|
||||||
Not identified
|
|
||||||
</span>
|
|
||||||
<input id="baseurl" type="text" class="md-input" [ngClass]="{'uk-disabled': !canEdit}"
|
|
||||||
formControlName="baseurl" (blur)="getInterfaceInfo()">
|
|
||||||
<span class="md-input-bar"></span>
|
<span class="md-input-bar"></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!--<div class="form-group has-success">-->
|
||||||
|
<!--<label class="control-label" for="baseUrl" title="{{ baseUrlDesc.desc }}">Base OAI-PMH URL (*)</label>-->
|
||||||
|
<!--<span *ngIf="identifiedBaseUrl" class="help-block inline" style="margin-top: 0px; margin-bottom: 0px; padding-left: 10px;">-->
|
||||||
|
<!--Identified-->
|
||||||
|
<!--</span>-->
|
||||||
|
<!--<input id="baseUrl" type="text" class="form-control" formControlName="baseUrl" (blur)="getInterfaceInfo()">-->
|
||||||
|
<!--</div>-->
|
||||||
|
|
||||||
|
|
||||||
<div class="radioButtonForm uk-margin-top">
|
<div class="radioButtonForm uk-margin-top">
|
||||||
<label for="selectValidationSet{{interfaceID}}" class="control-label uk-text-bold">Set</label>
|
<label class="control-label">Validation Set</label>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="selectRadio{{interfaceID}}" title="{{ existingValSetDesc.desc }}"
|
||||||
|
class="uk-button uk-link-muted visible_uk_links"
|
||||||
|
style="display: block; text-align: left;">
|
||||||
|
<input id="selectRadio{{interfaceID}}" value="select" name="validationSet{{interfaceID}}" type="radio"
|
||||||
|
(change)="chooseValSet(true)" checked >
|
||||||
|
<span class="uk-margin-small-left">Choose existing</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
<div class="md-input-wrapper">
|
<div class="md-input-wrapper">
|
||||||
|
<!--<label class="">Select repository's country</label>-->
|
||||||
<select class="md-input" id="selectValidationSet{{interfaceID}}" formControlName="selectValidationSet" (change)="checkIfValid()">
|
<select class="md-input" id="selectValidationSet{{interfaceID}}" formControlName="selectValidationSet" (change)="checkIfValid()">
|
||||||
<option value="" selected>-- none selected --</option>
|
<option value="" selected>-- none selected --</option>
|
||||||
<option *ngFor="let set of valsetList" value="{{set}}">{{set}}</option>
|
<option *ngFor="let set of valsetList" value="{{set}}">{{set}}</option>
|
||||||
</select>
|
</select>
|
||||||
<span class="md-input-bar"></span>
|
<span class="md-input-bar"></span>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="customRadio{{interfaceID}}" title="{{ customValSetDesc.desc }}"
|
||||||
|
class="uk-button uk-link-muted visible_uk_links"
|
||||||
|
style="display: block; text-align: left;">
|
||||||
|
<input id="customRadio{{interfaceID}}" value="custom" name="validationSet{{interfaceID}}" type="radio"
|
||||||
|
(change)="chooseValSet(false)">
|
||||||
|
<span class="uk-margin-small-left">or a custom one</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="md-input-wrapper">
|
||||||
|
<input id="customValidationSet{{interfaceID}}" formControlName="customValidationSet"
|
||||||
|
class="md-input" type="text" (keyup)="checkIfValid()">
|
||||||
|
<span class="md-input-bar"></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!--<div class="form-group">-->
|
||||||
|
<!--<label class="control-label">Validation Set</label>-->
|
||||||
|
<!--<div>-->
|
||||||
|
<!--<label class="uk-button validationSetRadio" for="selectRadio{{interfaceID}}" title="{{ existingValSetDesc.desc }}">-->
|
||||||
|
<!--<input id="selectRadio{{interfaceID}}" value="select" name="validationSet{{interfaceID}}" type="radio"-->
|
||||||
|
<!--(change)="chooseValSet(true)" checked >-->
|
||||||
|
<!--<span class="uk-margin-small-left">Choose existing</span>-->
|
||||||
|
<!--</label>-->
|
||||||
|
<!--</div>-->
|
||||||
|
<!--<select id="selectValidationSet{{interfaceID}}" formControlName="selectValidationSet"-->
|
||||||
|
<!--class="form-control" (change)="checkIfValid()">-->
|
||||||
|
<!--<option value="" selected>-- none selected --</option>-->
|
||||||
|
<!--<option *ngFor="let set of valsetList" value="{{set}}">{{set}}</option>-->
|
||||||
|
<!--</select>-->
|
||||||
|
<!--<div>-->
|
||||||
|
<!--<label class="uk-button validationSetRadio" for="customRadio{{interfaceID}}" title="{{ customValSetDesc.desc }}">-->
|
||||||
|
<!--<input id="customRadio{{interfaceID}}" value="custom" name="validationSet{{interfaceID}}" type="radio"-->
|
||||||
|
<!--(change)="chooseValSet(false)">-->
|
||||||
|
<!--<span class="uk-margin-small-left">or a custom one</span>-->
|
||||||
|
<!--</label>-->
|
||||||
|
<!--</div>-->
|
||||||
|
<!--<input id="customValidationSet{{interfaceID}}" formControlName="customValidationSet"-->
|
||||||
|
<!--class="form-control" type="text" (keyup)="checkIfValid()">-->
|
||||||
|
<!--</div>-->
|
||||||
|
|
||||||
<div class="md-input-wrapper md-input-filled uk-margin-medium-top">
|
<div class="md-input-wrapper md-input-filled uk-margin-medium-top">
|
||||||
<div>
|
<label style="top: -16px" class="" for="compLvl" title="{{ compatibilityLevelDesc.desc }}">Desired Compatibility Level (*)</label>
|
||||||
<label class="uk-text-bold" for="compLvl" title="{{ compatibilityLevelDesc.desc }}">
|
<select class="md-input" id="compLvl" formControlName="compatibilityLevel" (change)="checkIfValid()">
|
||||||
Desired compatibility level (*)
|
|
||||||
</label>
|
|
||||||
<div class="uk-comment-meta uk-text-italic uk-margin-small-top uk-margin-small-bottom">
|
|
||||||
Select the Guidelines with which your data source is compatible.
|
|
||||||
Please note that the Aggregation Team will evaluate the compatibility, so the actual compliance level may be different from which you chose.
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<select class="md-input" id="compLvl" formControlName="desiredCompatibilityLevel" (change)="checkIfValid()">
|
|
||||||
<option value="">-- none selected --</option>
|
<option value="">-- none selected --</option>
|
||||||
<option *ngFor="let key of classCodes" value="{{key}}">{{compClasses[key]}}</option>
|
<option *ngFor="let key of classCodes" value="{{key}}">{{compClasses[key]}}</option>
|
||||||
</select>
|
</select>
|
||||||
<span class="md-input-bar"></span>
|
<span class="md-input-bar"></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="uk-margin-medium-top">
|
<!--<div class="form-group">-->
|
||||||
<label class="uk-text-bold">Current compatibility level</label>
|
<!--<label class="control-label" for="compLvl" title="{{ compatibilityLevelDesc.desc }}">Desired Compatibility Level (*)</label>-->
|
||||||
<div class="uk-comment-meta uk-text-italic uk-margin-small-top uk-margin-small-bottom">
|
<!--<select class="form-control" id="compLvl" formControlName="compatibilityLevel" (change)="checkIfValid()">-->
|
||||||
Compatible level returned by the Validator tool after your request to register the interface.
|
<!--<option value="">-- none selected --</option>-->
|
||||||
</div>
|
<!--<option *ngFor="let key of classCodes" value="{{key}}">{{compClasses[key]}}</option>-->
|
||||||
<div class="uk-margin-small-top">{{(repoInterfaceForm.get('compatibilityLevel').value && repoInterfaceForm.get('compatibilityLevel').value !== 'UNKNOWN')
|
<!--</select>-->
|
||||||
? this.compClasses[repoInterfaceForm.get('compatibilityLevel').value] : 'not available' }}</div>
|
<!--</div>-->
|
||||||
|
|
||||||
|
<div class="">
|
||||||
|
<label class="">Current Compatibility Level</label>
|
||||||
|
<div *ngIf="existingCompLevel">{{ existingCompLevel ? existingCompLevel : 'not available' }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="uk-margin-medium-top">
|
<!--<div>-->
|
||||||
<label class="uk-text-bold">Compatibility override</label>
|
<!--<label class="uk-form-controls-text control-label">Current Compatibility Level</label>-->
|
||||||
<div class="uk-comment-meta uk-text-italic uk-margin-small-top uk-margin-small-bottom">
|
<!--<div *ngIf="existingCompLevel">{{ existingCompLevel ? existingCompLevel : 'not available' }}</div>-->
|
||||||
Actual compatibility level of your data source, according to the validation process by the Aggregation Team. This is the compatibility level displayed on the data source public page in EXPLORE
|
<!--</div>-->
|
||||||
</div>
|
|
||||||
<div class="uk-margin-small-top">{{repoInterfaceForm.get('compatibilityLevelOverride').value ? this.compClasses[repoInterfaceForm.get('compatibilityLevelOverride').value] : 'not available' }}</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="uk-margin-medium-top uk-margin-bottom">
|
<div class="uk-margin-medium-top">
|
||||||
<label class="uk-text-bold" for="comment" title="{{ commentDesc.desc }}">Comments (What else do we need to know?)</label>
|
<label class="" for="comment" title="{{ commentDesc.desc }}">Comments (What else do we need to know?)</label>
|
||||||
<textarea id="comment" class="uk-textarea" rows="3" formControlName="comment" (blur)="checkIfValid()"></textarea>
|
<textarea id="comment" class="uk-textarea" rows="3" formControlName="comment"></textarea>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- <pre>{{repoInterfaceForm.value | json}}</pre>-->
|
|
||||||
<!-- <pre>{{interfaceToExport | json}}</pre>-->
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
|
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
|
||||||
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
||||||
import { baseUrlDesc, compatibilityLevelDesc, customValSetDesc, Description, existingValSetDesc, commentDesc } from '../../../domain/oa-description';
|
import { baseUrlDesc, compatibilityLevelDesc, customValSetDesc, Description, existingValSetDesc, commentDesc } from '../../../domain/oa-description';
|
||||||
import {ApiParamDetails, InterfaceInformation, RepositoryInterface} from '../../../domain/typeScriptClasses';
|
import { InterfaceInformation, RepositoryInterface } from '../../../domain/typeScriptClasses';
|
||||||
import { ValidatorService } from '../../../services/validator.service';
|
import { ValidatorService } from '../../../services/validator.service';
|
||||||
import { RepositoryService } from '../../../services/repository.service';
|
import { RepositoryService } from '../../../services/repository.service';
|
||||||
import { formErrorWasntSaved, formInfoLoading, formSubmitting, formSuccessAddedInterface, formSuccessUpdatedInterface, invalidCustomBaseUrl,
|
import { formErrorWasntSaved, formInfoLoading, formSubmitting, formSuccessAddedInterface, formSuccessUpdatedInterface, invalidCustomBaseUrl,
|
||||||
|
@ -12,7 +12,6 @@ export class RepoFields {
|
||||||
datasourceType: string;
|
datasourceType: string;
|
||||||
datasourceClass: string;
|
datasourceClass: string;
|
||||||
registeredBy: string;
|
registeredBy: string;
|
||||||
comments: string;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
@ -26,7 +25,6 @@ export class DatasourceNewInterfaceFormComponent implements OnInit {
|
||||||
invalidCustomBaseUrl = invalidCustomBaseUrl;
|
invalidCustomBaseUrl = invalidCustomBaseUrl;
|
||||||
|
|
||||||
@Input() data: any[] = []; // expects an array containing at least 3 of the 4 below fields in this order
|
@Input() data: any[] = []; // expects an array containing at least 3 of the 4 below fields in this order
|
||||||
@Input() mode: string = null;
|
|
||||||
inRegister: boolean;
|
inRegister: boolean;
|
||||||
interfaceID: number; // holds the interface index in the interfaces array as displayed
|
interfaceID: number; // holds the interface index in the interfaces array as displayed
|
||||||
currentRepo: RepoFields; // a fraction of the Repository class
|
currentRepo: RepoFields; // a fraction of the Repository class
|
||||||
|
@ -37,11 +35,10 @@ export class DatasourceNewInterfaceFormComponent implements OnInit {
|
||||||
|
|
||||||
repoInterfaceForm: FormGroup;
|
repoInterfaceForm: FormGroup;
|
||||||
readonly repoInterfaceFormDef = {
|
readonly repoInterfaceFormDef = {
|
||||||
baseurl: ['', Validators.required],
|
baseUrl: ['', Validators.required],
|
||||||
selectValidationSet: [''],
|
selectValidationSet: [''],
|
||||||
compatibilityLevel: null,
|
customValidationSet: [''],
|
||||||
desiredCompatibilityLevel: null,
|
compatibilityLevel: [''],
|
||||||
compatibilityLevelOverride: null,
|
|
||||||
comment: ['']
|
comment: ['']
|
||||||
};
|
};
|
||||||
baseUrlDesc: Description = baseUrlDesc;
|
baseUrlDesc: Description = baseUrlDesc;
|
||||||
|
@ -51,12 +48,13 @@ export class DatasourceNewInterfaceFormComponent implements OnInit {
|
||||||
commentDesc: Description = commentDesc;
|
commentDesc: Description = commentDesc;
|
||||||
|
|
||||||
identifiedBaseUrl: boolean;
|
identifiedBaseUrl: boolean;
|
||||||
canEdit = true;
|
showIdentifiedBaseUrl: boolean;
|
||||||
showIdentifiedBaseUrl: boolean = null;
|
|
||||||
valsetList: string[] = [];
|
valsetList: string[] = [];
|
||||||
existingCompLevel: string;
|
existingCompLevel: string;
|
||||||
classCodes: string[] = [];
|
classCodes: string[] = [];
|
||||||
compClasses: Map<string, string> = new Map<string, string>();
|
compClasses: Map<string, string> = new Map<string, string>();
|
||||||
|
existingValSet: boolean;
|
||||||
|
comments: string;
|
||||||
interfaceInfo: InterfaceInformation;
|
interfaceInfo: InterfaceInformation;
|
||||||
|
|
||||||
constructor(private fb: FormBuilder,
|
constructor(private fb: FormBuilder,
|
||||||
|
@ -69,22 +67,11 @@ export class DatasourceNewInterfaceFormComponent implements OnInit {
|
||||||
this.interfaceID = this.data[1];
|
this.interfaceID = this.data[1];
|
||||||
this.currentRepo = this.data[2];
|
this.currentRepo = this.data[2];
|
||||||
this.repoInterfaceForm = this.fb.group(this.repoInterfaceFormDef);
|
this.repoInterfaceForm = this.fb.group(this.repoInterfaceFormDef);
|
||||||
// this.chooseValSet(true);
|
this.chooseValSet(true);
|
||||||
if (this.data[3]) {
|
if (this.data[3]) {
|
||||||
this.currentInterface = this.data[3];
|
this.currentInterface = this.data[3];
|
||||||
if (this.currentInterface.baseurl !== null && this.currentInterface.baseurl !== '') {
|
this.repoInterfaceForm.get('baseUrl').setValue(this.currentInterface.baseUrl);
|
||||||
this.canEdit = false;
|
this.repoInterfaceForm.get('compatibilityLevel').setValue(this.currentInterface.desiredCompatibilityLevel);
|
||||||
this.repoInterfaceForm.get('baseurl').setValue(this.currentInterface.baseurl);
|
|
||||||
}
|
|
||||||
this.repoInterfaceForm.get('compatibilityLevel').setValue(this.currentInterface.compatibility);
|
|
||||||
this.repoInterfaceForm.get('compatibilityLevelOverride').setValue(this.currentInterface.compatibilityOverride);
|
|
||||||
this.repoService.getInterfaceDesiredCompatibilityLevel(this.currentInterface.datasource, this.currentInterface.id).subscribe(
|
|
||||||
res => {
|
|
||||||
if (res !== null) {
|
|
||||||
this.repoInterfaceForm.get('desiredCompatibilityLevel').setValue(res['desiredCompatibilityLevel']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
this.getInterfaceInfo();
|
this.getInterfaceInfo();
|
||||||
this.getCompatibilityClasses();
|
this.getCompatibilityClasses();
|
||||||
|
@ -96,10 +83,10 @@ export class DatasourceNewInterfaceFormComponent implements OnInit {
|
||||||
this.successMessage = '';
|
this.successMessage = '';
|
||||||
this.errorMessage = '';
|
this.errorMessage = '';
|
||||||
|
|
||||||
const baseurl = this.repoInterfaceForm.get('baseurl').value;
|
const baseUrl = this.repoInterfaceForm.get('baseUrl').value;
|
||||||
if (baseurl) {
|
if (baseUrl) {
|
||||||
this.loadingMessage = formInfoLoading;
|
this.loadingMessage = formInfoLoading;
|
||||||
this.valService.getInterfaceInformation(baseurl).subscribe(
|
this.valService.getInterfaceInformation(baseUrl).subscribe(
|
||||||
info => {
|
info => {
|
||||||
this.interfaceInfo = info;
|
this.interfaceInfo = info;
|
||||||
if (this.interfaceInfo.identified) {
|
if (this.interfaceInfo.identified) {
|
||||||
|
@ -107,12 +94,12 @@ export class DatasourceNewInterfaceFormComponent implements OnInit {
|
||||||
this.showIdentifiedBaseUrl = true;
|
this.showIdentifiedBaseUrl = true;
|
||||||
} else {
|
} else {
|
||||||
this.errorMessage = invalidCustomBaseUrl;
|
this.errorMessage = invalidCustomBaseUrl;
|
||||||
this.identifiedBaseUrl = true; // pass interface without baseurl identification
|
this.identifiedBaseUrl = true; // pass interface without baseUrl identification
|
||||||
this.showIdentifiedBaseUrl = false;
|
this.showIdentifiedBaseUrl = false;
|
||||||
}
|
}
|
||||||
if (this.interfaceInfo.sets) {
|
if (this.interfaceInfo.sets) {
|
||||||
this.valsetList = this.interfaceInfo.sets;
|
this.valsetList = this.interfaceInfo.sets;
|
||||||
// console.log(this.valsetList);
|
console.log(this.valsetList);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error => {
|
error => {
|
||||||
|
@ -122,24 +109,23 @@ export class DatasourceNewInterfaceFormComponent implements OnInit {
|
||||||
this.errorMessage = noServiceMessage;
|
this.errorMessage = noServiceMessage;
|
||||||
},
|
},
|
||||||
() => {
|
() => {
|
||||||
if (this.currentInterface?.apiParams?.find(entry => entry.param === 'set')) {
|
if ( this.currentInterface && this.currentInterface.accessParams && this.currentInterface.accessParams['set'] ) {
|
||||||
this.repoInterfaceForm.get('selectValidationSet').setValue(this.currentInterface.apiParams
|
if ( this.valsetList.some( x => x === this.currentInterface.accessParams['set']) ) {
|
||||||
.find(entry => entry.param === 'set').value);
|
this.repoInterfaceForm.get('selectValidationSet').setValue(this.currentInterface.accessParams['set']);
|
||||||
this.repoInterfaceForm.updateValueAndValidity();
|
} else {
|
||||||
this.checkIfValid();
|
this.repoInterfaceForm.get('customValidationSet').setValue(this.currentInterface.accessParams['set']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
this.loadingMessage = '';
|
this.loadingMessage = '';
|
||||||
|
this.repoInterfaceForm.updateValueAndValidity();
|
||||||
|
this.checkIfValid();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getCompatibilityClasses() {
|
getCompatibilityClasses() {
|
||||||
// FIXME: Use eoscDatasourceType when we support the new model
|
this.repoService.getCompatibilityClasses(this.currentRepo.datasourceType).subscribe(
|
||||||
if (this.mode === null) {
|
|
||||||
this.mode = this.currentRepo.datasourceType;
|
|
||||||
}
|
|
||||||
this.repoService.getCompatibilityClasses(this.mode).subscribe(
|
|
||||||
classes => {
|
classes => {
|
||||||
this.compClasses = classes;
|
this.compClasses = classes;
|
||||||
this.classCodes = Object.keys(this.compClasses);
|
this.classCodes = Object.keys(this.compClasses);
|
||||||
|
@ -157,23 +143,37 @@ export class DatasourceNewInterfaceFormComponent implements OnInit {
|
||||||
|
|
||||||
getExistingCompatibilityLevel() {
|
getExistingCompatibilityLevel() {
|
||||||
if (this.currentInterface) {
|
if (this.currentInterface) {
|
||||||
if (this.currentInterface.compatibility
|
if (this.currentInterface.desiredCompatibilityLevel &&
|
||||||
&& this.classCodes.some( x => x === this.currentInterface.compatibilityOverride)) {
|
this.classCodes.some( x => x === this.currentInterface.desiredCompatibilityLevel ) ) {
|
||||||
this.existingCompLevel = this.compClasses[this.currentInterface.compatibility];
|
this.existingCompLevel = this.compClasses[this.currentInterface.desiredCompatibilityLevel];
|
||||||
} else {
|
} else {
|
||||||
// this.repoInterfaceForm.get('compatibilityLevel').setValue('');
|
this.repoInterfaceForm.get('compatibilityLevel').setValue('');
|
||||||
this.existingCompLevel = this.currentInterface.compatibility;
|
this.existingCompLevel = this.currentInterface.desiredCompatibilityLevel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
chooseValSet(fromList: boolean) {
|
||||||
|
this.existingValSet = fromList;
|
||||||
|
if (this.existingValSet) {
|
||||||
|
this.repoInterfaceForm.get('selectValidationSet').enable();
|
||||||
|
this.repoInterfaceForm.get('customValidationSet').disable();
|
||||||
|
} else {
|
||||||
|
this.repoInterfaceForm.get('selectValidationSet').disable();
|
||||||
|
this.repoInterfaceForm.get('customValidationSet').enable();
|
||||||
|
}
|
||||||
|
this.checkIfValid();
|
||||||
|
}
|
||||||
|
|
||||||
checkIfCompatibilityLevelWasChosen() {
|
checkIfCompatibilityLevelWasChosen() {
|
||||||
return ( (this.repoInterfaceForm.get('compatibilityLevel').value !== '') ||
|
return ( (this.repoInterfaceForm.get('compatibilityLevel').value !== '') ||
|
||||||
(this.existingCompLevel && (this.existingCompLevel !== '')) );
|
(this.existingCompLevel && (this.existingCompLevel !== '')) );
|
||||||
}
|
}
|
||||||
|
|
||||||
formIsValid() {
|
formIsValid() {
|
||||||
return (this.repoInterfaceForm.valid && this.identifiedBaseUrl && this.checkIfCompatibilityLevelWasChosen());
|
return (this.repoInterfaceForm.valid &&
|
||||||
|
this.identifiedBaseUrl &&
|
||||||
|
this.checkIfCompatibilityLevelWasChosen());
|
||||||
}
|
}
|
||||||
|
|
||||||
checkIfValid() {
|
checkIfValid() {
|
||||||
|
@ -185,7 +185,7 @@ export class DatasourceNewInterfaceFormComponent implements OnInit {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
this.successMessage = '';
|
this.successMessage = '';
|
||||||
// this.interfaceToExport = null;
|
this.interfaceToExport = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -194,81 +194,88 @@ export class DatasourceNewInterfaceFormComponent implements OnInit {
|
||||||
this.errorMessage = '';
|
this.errorMessage = '';
|
||||||
this.successMessage = '';
|
this.successMessage = '';
|
||||||
if (this.formIsValid()) {
|
if (this.formIsValid()) {
|
||||||
const baseurl = this.repoInterfaceForm.get('baseurl').value;
|
const baseUrl = this.repoInterfaceForm.get('baseUrl').value;
|
||||||
const valset = this.repoInterfaceForm.get('selectValidationSet').value;
|
let valset = '';
|
||||||
const desiredCompLvl = this.repoInterfaceForm.get('desiredCompatibilityLevel').value;
|
if (this.existingValSet) {
|
||||||
const compLvl = this.existingCompLevel;
|
valset = this.repoInterfaceForm.get('selectValidationSet').value;
|
||||||
|
} else {
|
||||||
|
valset = this.repoInterfaceForm.get('customValidationSet').value;
|
||||||
|
}
|
||||||
|
let compLvl = '';
|
||||||
|
if (this.repoInterfaceForm.get('compatibilityLevel').value) {
|
||||||
|
this.existingCompLevel = this.compClasses[this.repoInterfaceForm.get('compatibilityLevel').value];
|
||||||
|
console.log('this.existingCompLevel is', this.existingCompLevel);
|
||||||
|
compLvl = this.repoInterfaceForm.get('compatibilityLevel').value;
|
||||||
|
} else {
|
||||||
|
compLvl = this.existingCompLevel;
|
||||||
|
}
|
||||||
let comment = '';
|
let comment = '';
|
||||||
if (this.repoInterfaceForm.get('comment').value) {
|
if (this.repoInterfaceForm.get('comment').value) {
|
||||||
comment = this.repoInterfaceForm.get('comment').value;
|
comment = this.repoInterfaceForm.get('comment').value;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.currentInterface) {
|
if (this.currentInterface) {
|
||||||
this.updateCurrent(baseurl, valset, desiredCompLvl, compLvl, comment);
|
this.updateCurrent(baseUrl, valset, compLvl, comment);
|
||||||
} else {
|
} else {
|
||||||
this.addCurrent(baseurl, valset, desiredCompLvl, compLvl, comment);
|
this.addCurrent(baseUrl, valset, compLvl, comment);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// this.interfaceToExport = null;
|
this.interfaceToExport = null;
|
||||||
this.errorMessage = 'Please make sure all required fields are filled with acceptable values.';
|
this.errorMessage = 'Please make sure all required fields are filled with acceptable values.';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getCurrentValues() {
|
getCurrentValues() {
|
||||||
console.log('getcurrentvalues');
|
|
||||||
let intrf = this.currentInterface;
|
let intrf = this.currentInterface;
|
||||||
if (intrf == null) {
|
if (intrf == null) {
|
||||||
intrf = new RepositoryInterface();
|
intrf = new RepositoryInterface();
|
||||||
}
|
}
|
||||||
intrf.baseurl = this.repoInterfaceForm.get('baseurl').value;
|
intrf.baseUrl = this.repoInterfaceForm.get('baseUrl').value;
|
||||||
this.updateValidationSet(intrf, this.repoInterfaceForm.get('selectValidationSet').value);
|
if (this.existingValSet) {
|
||||||
console.log(intrf);
|
intrf.accessSet = this.repoInterfaceForm.get('selectValidationSet').value;
|
||||||
if (this.repoInterfaceForm.get('compatibilityLevel').value) {
|
intrf.accessParams = {'set': this.repoInterfaceForm.get('selectValidationSet').value};
|
||||||
intrf.compatibilityOverride = this.repoInterfaceForm.get('compatibilityLevel').value;
|
|
||||||
intrf.compatibility = this.repoInterfaceForm.get('compatibilityLevel').value;
|
|
||||||
} else {
|
} else {
|
||||||
intrf.compatibilityOverride = this.existingCompLevel;
|
intrf.accessSet = this.repoInterfaceForm.get('customValidationSet').value;
|
||||||
intrf.compatibility = this.existingCompLevel;
|
intrf.accessParams = {'set': this.repoInterfaceForm.get('customValidationSet').value};
|
||||||
|
}
|
||||||
|
if (this.repoInterfaceForm.get('compatibilityLevel').value) {
|
||||||
|
intrf.desiredCompatibilityLevel = this.repoInterfaceForm.get('compatibilityLevel').value;
|
||||||
|
intrf.compliance = this.repoInterfaceForm.get('compatibilityLevel').value;
|
||||||
|
} else {
|
||||||
|
intrf.desiredCompatibilityLevel = this.existingCompLevel;
|
||||||
|
intrf.compliance = this.existingCompLevel;
|
||||||
}
|
}
|
||||||
intrf.typology = this.currentRepo.datasourceClass;
|
intrf.typology = this.currentRepo.datasourceClass;
|
||||||
|
|
||||||
return intrf;
|
return intrf;
|
||||||
}
|
}
|
||||||
|
|
||||||
updateValidationSet(intrf: RepositoryInterface, value: string) {
|
addCurrent (baseUrl: string, valset: string, compLvl: string, comment: string) {
|
||||||
let validationSet = intrf.apiParams.find(element => element.param === 'set');
|
const currentInterface = new RepositoryInterface();
|
||||||
if (!validationSet) {
|
currentInterface.baseUrl = baseUrl;
|
||||||
validationSet = new ApiParamDetails('set', value);
|
currentInterface.accessSet = valset;
|
||||||
intrf.apiParams.push(validationSet);
|
currentInterface.accessParams = {'set': valset};
|
||||||
} else {
|
currentInterface.desiredCompatibilityLevel = compLvl;
|
||||||
validationSet.value = this.repoInterfaceForm.get('selectValidationSet').value;
|
currentInterface.compliance = compLvl;
|
||||||
}
|
currentInterface.typology = this.currentRepo.datasourceClass;
|
||||||
}
|
this.comments = comment;
|
||||||
|
|
||||||
addCurrent (baseurl: string, valset: string, desiredCompLvl: string, compLvl: string, comment: string) {
|
|
||||||
console.log('add current');
|
|
||||||
this.currentInterface = new RepositoryInterface();
|
|
||||||
this.updateValidationSet(this.currentInterface, valset);
|
|
||||||
this.currentInterface.baseurl = baseurl;
|
|
||||||
this.currentInterface.desiredCompatibilityLevel = desiredCompLvl;
|
|
||||||
this.currentInterface.compatibility = compLvl;
|
|
||||||
this.currentInterface.typology = this.currentRepo.datasourceClass;
|
|
||||||
this.currentInterface.comments = comment;
|
|
||||||
|
|
||||||
if (!this.inRegister) {
|
if (!this.inRegister) {
|
||||||
this.addInterface();
|
this.addInterface(currentInterface);
|
||||||
} else {
|
} else {
|
||||||
this.successMessage = 'The harvesting settings are valid!';
|
this.successMessage = 'The harvesting settings are valid!';
|
||||||
console.log('SAVED !');
|
console.log('SAVED !');
|
||||||
this.interfaceToExport = this.currentInterface;
|
this.interfaceToExport = currentInterface;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
addInterface() {
|
addInterface(newInterface: RepositoryInterface) {
|
||||||
this.loadingMessage = formSubmitting;
|
this.loadingMessage = formSubmitting;
|
||||||
this.repoService.addInterface(this.currentRepo.datasourceType, this.currentRepo.id,
|
this.repoService.addInterface(this.currentRepo.datasourceType,
|
||||||
this.currentRepo.registeredBy, this.currentRepo.comments, this.currentInterface,
|
this.currentRepo.id,
|
||||||
this.repoInterfaceForm.get('desiredCompatibilityLevel').value).subscribe(
|
this.currentRepo.registeredBy,
|
||||||
|
this.comments,
|
||||||
|
newInterface).subscribe(
|
||||||
addedInterface => {
|
addedInterface => {
|
||||||
console.log(`addInterface responded ${JSON.stringify(addedInterface)}`);
|
console.log(`addInterface responded ${JSON.stringify(addedInterface)}`);
|
||||||
this.currentInterface = addedInterface;
|
this.currentInterface = addedInterface;
|
||||||
|
@ -292,15 +299,15 @@ export class DatasourceNewInterfaceFormComponent implements OnInit {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
updateCurrent (baseurl: string, valset: string, desiredCompLvl: string, compLvl: string, comment: string) {
|
|
||||||
console.log('update current');
|
updateCurrent (baseUrl: string, valset: string, compLvl: string, comment: string) {
|
||||||
this.updateValidationSet(this.currentInterface, valset);
|
this.currentInterface.baseUrl = baseUrl;
|
||||||
this.currentInterface.baseurl = baseurl;
|
this.currentInterface.accessSet = valset;
|
||||||
this.currentInterface.desiredCompatibilityLevel = desiredCompLvl;
|
this.currentInterface.accessParams['set'] = valset;
|
||||||
console.log(this.currentInterface.desiredCompatibilityLevel);
|
this.currentInterface.desiredCompatibilityLevel = compLvl;
|
||||||
this.currentInterface.compatibility = compLvl;
|
this.currentInterface.compliance = compLvl;
|
||||||
this.currentInterface.typology = this.currentRepo.datasourceClass;
|
this.currentInterface.typology = this.currentRepo.datasourceClass;
|
||||||
this.currentInterface.comments = comment;
|
this.comments = comment;
|
||||||
|
|
||||||
if (!this.inRegister) {
|
if (!this.inRegister) {
|
||||||
this.updateInterface();
|
this.updateInterface();
|
||||||
|
@ -313,8 +320,10 @@ export class DatasourceNewInterfaceFormComponent implements OnInit {
|
||||||
|
|
||||||
updateInterface() {
|
updateInterface() {
|
||||||
this.loadingMessage = formSubmitting;
|
this.loadingMessage = formSubmitting;
|
||||||
this.repoService.updateInterface(this.currentRepo.id, this.currentRepo.registeredBy, this.currentRepo.comments,
|
this.repoService.updateInterface(this.currentRepo.id,
|
||||||
this.currentInterface, this.repoInterfaceForm.get('desiredCompatibilityLevel').value).subscribe(
|
this.currentRepo.registeredBy,
|
||||||
|
this.comments,
|
||||||
|
this.currentInterface).subscribe(
|
||||||
response => {
|
response => {
|
||||||
console.log(`updateRepository responded ${JSON.stringify(response)}`);
|
console.log(`updateRepository responded ${JSON.stringify(response)}`);
|
||||||
if (response) {
|
if (response) {
|
||||||
|
@ -358,4 +367,8 @@ export class DatasourceNewInterfaceFormComponent implements OnInit {
|
||||||
return this.interfaceToExport;
|
return this.interfaceToExport;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getComments() {
|
||||||
|
return this.comments;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,20 +12,15 @@
|
||||||
Basic information
|
Basic information
|
||||||
</h4>
|
</h4>
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="selectedRepo.collectedfrom.split('openaire____::')[1] === 'opendoar'" class="uk-alert uk-alert-info">
|
<div *ngIf="selectedRepo.datasourceType === 'opendoar'" class="uk-alert uk-alert-info">
|
||||||
The following fields are completed by OpenDOAR.<br>
|
The following fields are completed by OpenDOAR.<br>
|
||||||
If you want to edit them, you can do it by using this
|
If you want to edit them, you can do it by using this
|
||||||
<a target="_blank" href="{{ 'http://v2.sherpa.ac.uk/id/repository/' + repoId }}">OpenDOAR link</a>.
|
<a target="_blank" href="{{ 'http://v2.sherpa.ac.uk/id/repository/' + repoId }}">OpenDOAR link</a>
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="selectedRepo.collectedfrom.split('openaire____::')[1] === 're3data'" class="uk-alert uk-alert-info">
|
<div *ngIf="selectedRepo.datasourceType === 're3data'" class="uk-alert uk-alert-info">
|
||||||
The following fields are completed by Re3data.<br>
|
The following fields are completed by Re3data.<br>
|
||||||
If you want to edit them, you can do it by using this
|
If you want to edit them, you can do it by using this
|
||||||
<a target="_blank" href="{{ 'http://service.re3data.org/repository/' + repoId }}">Re3data link</a>.
|
<a target="_blank" href="{{ 'http://service.re3data.org/repository/' + repoId }}">Re3data link</a>
|
||||||
</div>
|
|
||||||
<div *ngIf="selectedRepo.collectedfrom.split('openaire____::')[1] === 'fairsharing'" class="uk-alert uk-alert-info">
|
|
||||||
The following fields are completed by FAIRsharing.<br>
|
|
||||||
If you want to edit them, you can do it by using this
|
|
||||||
<a target="_blank" href="{{ 'https://fairsharing.org/search?q=' + selectedRepo.officialname }}">FAIRsharing link</a>.
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div data-dynamic-fields="d_field_wizard" class="uk-grid" data-uk-grid-margin="" dynamic-fields-counter="0">
|
<div data-dynamic-fields="d_field_wizard" class="uk-grid" data-uk-grid-margin="" dynamic-fields-counter="0">
|
||||||
|
@ -64,14 +59,14 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div *ngIf="selectedRepo.eoscDatasourceType == 'Journal archive'">
|
<div *ngIf="selectedRepo.datasourceType == 'journal'">
|
||||||
<div data-dynamic-fields="d_field_wizard" class="uk-grid" data-uk-grid-margin="" dynamic-fields-counter="0">
|
<div data-dynamic-fields="d_field_wizard" class="uk-grid" data-uk-grid-margin="" dynamic-fields-counter="0">
|
||||||
<div class="uk-width-medium-1-1 parsley-row form_section uk-row-first">
|
<div class="uk-width-medium-1-1 parsley-row form_section uk-row-first">
|
||||||
<div class="md-input-wrapper {{ (updateGroup.get('issn') != null) ? 'md-input-filled' : '1234-5678' }}">
|
<div class="md-input-wrapper {{ (updateGroup.get('issn') != null) ? 'md-input-filled' : '' }}">
|
||||||
<form-inline [description]="issnDesc" [valid]="updateGroup.get('issn').valid">
|
<form-inline [description]="issnDesc" [valid]="updateGroup.get('issn').valid">
|
||||||
<span *ngIf="updateGroup.get('issn').invalid && updateGroup.get('issn').touched && updateGroup.get('issn').dirty"
|
<span *ngIf="updateGroup.get('issn').invalid && updateGroup.get('issn').touched && updateGroup.get('issn').dirty"
|
||||||
class="help-block inline uk-text-danger"
|
class="help-block inline uk-text-danger"
|
||||||
style="margin-top: 0px; margin-bottom: 0px; padding-left: 10px;">Issn needs to be of the form: "1111-1111" or "1111-111X" or "11111111" or "1111111X"</span>
|
style="margin-top: 0px; margin-bottom: 0px; padding-left: 10px;">Issn needs to be of the form: "1111-1111" or "1111-111X"</span>
|
||||||
<input formControlName="issn" class="md-input" type="text"
|
<input formControlName="issn" class="md-input" type="text"
|
||||||
(focus)="updateGroup.get('issn').markAsUntouched()" (blur)="updateGroup.get('issn').updateValueAndValidity()">
|
(focus)="updateGroup.get('issn').markAsUntouched()" (blur)="updateGroup.get('issn').updateValueAndValidity()">
|
||||||
</form-inline>
|
</form-inline>
|
||||||
|
@ -85,7 +80,7 @@
|
||||||
<form-inline [description]="eissnDesc" [valid]="updateGroup.get('eissn').valid">
|
<form-inline [description]="eissnDesc" [valid]="updateGroup.get('eissn').valid">
|
||||||
<span *ngIf="updateGroup.get('eissn').invalid && updateGroup.get('eissn').touched && updateGroup.get('eissn').dirty"
|
<span *ngIf="updateGroup.get('eissn').invalid && updateGroup.get('eissn').touched && updateGroup.get('eissn').dirty"
|
||||||
class="help-block inline uk-text-danger"
|
class="help-block inline uk-text-danger"
|
||||||
style="margin-top: 0px; margin-bottom: 0px; padding-left: 10px;">Eissn needs to be of the form: "1111-1111" or "1111-111X" or "11111111" or "1111111X"</span>
|
style="margin-top: 0px; margin-bottom: 0px; padding-left: 10px;">Eissn needs to be of the form: "1111-1111" or "1111-111X"</span>
|
||||||
<input formControlName="eissn" class="md-input" type="text"
|
<input formControlName="eissn" class="md-input" type="text"
|
||||||
(focus)="updateGroup.get('eissn').markAsUntouched()" (blur)="updateGroup.get('eissn').updateValueAndValidity()">
|
(focus)="updateGroup.get('eissn').markAsUntouched()" (blur)="updateGroup.get('eissn').updateValueAndValidity()">
|
||||||
</form-inline>
|
</form-inline>
|
||||||
|
@ -99,7 +94,7 @@
|
||||||
<form-inline [description]="lissnDesc" [valid]="updateGroup.get('lissn').valid">
|
<form-inline [description]="lissnDesc" [valid]="updateGroup.get('lissn').valid">
|
||||||
<span *ngIf="updateGroup.get('lissn').invalid && updateGroup.get('lissn').touched && updateGroup.get('lissn').dirty"
|
<span *ngIf="updateGroup.get('lissn').invalid && updateGroup.get('lissn').touched && updateGroup.get('lissn').dirty"
|
||||||
class="help-block inline uk-text-danger"
|
class="help-block inline uk-text-danger"
|
||||||
style="margin-top: 0px; margin-bottom: 0px; padding-left: 10px;">Lissn needs to be of the form: "1111-1111" or "1111-111X" or "11111111" or "1111111X"</span>
|
style="margin-top: 0px; margin-bottom: 0px; padding-left: 10px;">Lissn needs to be of the form: "1111-1111" or "1111-111X"</span>
|
||||||
<input formControlName="lissn" class="md-input" type="text"
|
<input formControlName="lissn" class="md-input" type="text"
|
||||||
(focus)="updateGroup.get('lissn').markAsUntouched()" (blur)="updateGroup.get('lissn').updateValueAndValidity()">
|
(focus)="updateGroup.get('lissn').markAsUntouched()" (blur)="updateGroup.get('lissn').updateValueAndValidity()">
|
||||||
</form-inline>
|
</form-inline>
|
||||||
|
@ -125,7 +120,7 @@
|
||||||
<form-inline [description]="countryDesc" [valid]="updateGroup.get('country')">
|
<form-inline [description]="countryDesc" [valid]="updateGroup.get('country')">
|
||||||
<select formControlName="country" class="md-input">
|
<select formControlName="country" class="md-input">
|
||||||
<option value="">-- none selected --</option>
|
<option value="">-- none selected --</option>
|
||||||
<option *ngFor="let country of countries" value="{{country.code}}">{{ country.name }}</option>
|
<option *ngFor="let country of countries" value="{{country.code}}" title="{{country.name}}">{{ country.name }}</option>
|
||||||
</select>
|
</select>
|
||||||
</form-inline>
|
</form-inline>
|
||||||
</div>
|
</div>
|
||||||
|
@ -222,7 +217,7 @@
|
||||||
<form-inline [description]="datasourceTypeDesc" [valid]="updateGroup.get('datasourceType').valid">
|
<form-inline [description]="datasourceTypeDesc" [valid]="updateGroup.get('datasourceType').valid">
|
||||||
<select formControlName="datasourceType" class="md-input">
|
<select formControlName="datasourceType" class="md-input">
|
||||||
<option value="">-- none selected --</option>
|
<option value="">-- none selected --</option>
|
||||||
<option *ngFor="let key of classCodes" value="{{key}}">{{ datasourceClasses.get(key) }}</option>
|
<option *ngFor="let key of classCodes" value="{{key}}">{{ datasourceClasses[key] }}</option>
|
||||||
</select>
|
</select>
|
||||||
</form-inline>
|
</form-inline>
|
||||||
</div>
|
</div>
|
||||||
|
@ -249,3 +244,4 @@
|
||||||
<button class="uk-button uk-button-primary updateRepoInfoButton" type="button" (click)="updateRepo()">Update Information</button>
|
<button class="uk-button uk-button-primary updateRepoInfoButton" type="button" (click)="updateRepo()">Update Information</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ import { Description, softwarePlatformDesc, platformNameDesc, officialNameDesc,
|
||||||
longtitudeDesc, latitudeDesc, websiteUrlDesc, institutionNameDesc, englishNameDesc, logoUrlDesc, timezoneDesc,
|
longtitudeDesc, latitudeDesc, websiteUrlDesc, institutionNameDesc, englishNameDesc, logoUrlDesc, timezoneDesc,
|
||||||
datasourceTypeDesc, adminEmailDesc, lissnDesc, eissnDesc, issnDesc } from '../../../domain/oa-description';
|
datasourceTypeDesc, adminEmailDesc, lissnDesc, eissnDesc, issnDesc } from '../../../domain/oa-description';
|
||||||
import { AuthenticationService } from '../../../services/authentication.service';
|
import { AuthenticationService } from '../../../services/authentication.service';
|
||||||
import {SharedService} from '../../../services/shared.service';
|
import {SharedService} from "../../../services/shared.service";
|
||||||
|
|
||||||
@Component ({
|
@Component ({
|
||||||
selector: 'datasource-update-form',
|
selector: 'datasource-update-form',
|
||||||
|
@ -32,8 +32,6 @@ export class DatasourceUpdateFormComponent implements OnInit {
|
||||||
|
|
||||||
@Input() selectedRepo: Repository;
|
@Input() selectedRepo: Repository;
|
||||||
|
|
||||||
@Input() mode: string;
|
|
||||||
|
|
||||||
@Input() showButton: boolean;
|
@Input() showButton: boolean;
|
||||||
|
|
||||||
repoId: string;
|
repoId: string;
|
||||||
|
@ -43,9 +41,9 @@ export class DatasourceUpdateFormComponent implements OnInit {
|
||||||
softwarePlatform : '',
|
softwarePlatform : '',
|
||||||
platformName : '',
|
platformName : '',
|
||||||
officialName : ['', Validators.required],
|
officialName : ['', Validators.required],
|
||||||
issn : ['', [Validators.pattern('^(\\d{4}-?\\d{3}[\\dxX])$')] ],
|
issn : ['', [Validators.pattern('^\\d{4}-\\d{3}[\\dxX]$')] ],
|
||||||
eissn : ['', Validators.pattern('^(\\d{4}-?\\d{3}[\\dxX])$') ],
|
eissn : ['', Validators.pattern('^\\d{4}-\\d{3}[\\dxX]$') ],
|
||||||
lissn : ['', Validators.pattern('^(\\d{4}-?\\d{3}[\\dxX])$') ],
|
lissn : ['', Validators.pattern('^\\d{4}-\\d{3}[\\dxX]$') ],
|
||||||
repoDescription : ['', Validators.required],
|
repoDescription : ['', Validators.required],
|
||||||
country : '',
|
country : '',
|
||||||
longtitude : '',
|
longtitude : '',
|
||||||
|
@ -86,7 +84,6 @@ export class DatasourceUpdateFormComponent implements OnInit {
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.loadForm();
|
this.loadForm();
|
||||||
console.log('mode: ', this.mode);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
loadForm() {
|
loadForm() {
|
||||||
|
@ -102,64 +99,51 @@ export class DatasourceUpdateFormComponent implements OnInit {
|
||||||
|
|
||||||
setupUpdateForm() {
|
setupUpdateForm() {
|
||||||
if (this.selectedRepo) {
|
if (this.selectedRepo) {
|
||||||
|
console.log(`my datasource type is: ${this.selectedRepo.datasourceType}`);
|
||||||
|
|
||||||
this.updateGroup.setValue({
|
this.updateGroup.setValue({
|
||||||
softwarePlatform: this.selectedRepo.platform,
|
softwarePlatform: this.selectedRepo.typology,
|
||||||
platformName: '',
|
platformName: '',
|
||||||
officialName: this.selectedRepo.officialname,
|
officialName: this.selectedRepo.officialName,
|
||||||
issn: '',
|
issn: '',
|
||||||
eissn: '',
|
eissn: '',
|
||||||
lissn: '',
|
lissn: '',
|
||||||
repoDescription: this.selectedRepo.description,
|
repoDescription: this.selectedRepo.description,
|
||||||
country: this.selectedRepo.organizations[0].country, // countryCode
|
country: this.selectedRepo.countryCode,
|
||||||
longtitude: this.selectedRepo.longitude,
|
longtitude: this.selectedRepo.longitude,
|
||||||
latitude: this.selectedRepo.latitude,
|
latitude: this.selectedRepo.latitude,
|
||||||
websiteUrl: this.selectedRepo.websiteurl,
|
websiteUrl: this.selectedRepo.websiteUrl,
|
||||||
institutionName: this.selectedRepo.organizations[0].legalname,
|
institutionName: this.selectedRepo.organization,
|
||||||
englishName: this.selectedRepo.englishname,
|
englishName: this.selectedRepo.englishName,
|
||||||
logoUrl: this.selectedRepo.logourl,
|
logoUrl: this.selectedRepo.logoUrl,
|
||||||
timezone: this.selectedRepo.timezone,
|
timezone: this.selectedRepo.timezone,
|
||||||
datasourceType: this.selectedRepo.typology, // TODO: rename to typology?
|
datasourceType: this.selectedRepo.datasourceClass,
|
||||||
adminEmail: this.selectedRepo.contactemail
|
adminEmail: this.selectedRepo.contactEmail
|
||||||
});
|
});
|
||||||
|
|
||||||
if ( this.selectedRepo.platform === '' || !this.typologies.some(x => x.value === this.selectedRepo.platform) ) {
|
if ( this.selectedRepo.typology === '' || !this.typologies.some(x => x.value === this.selectedRepo.typology) ) {
|
||||||
this.updateGroup.get('softwarePlatform').setValue('');
|
this.updateGroup.get('softwarePlatform').setValue('');
|
||||||
this.updateGroup.get('platformName').setValue(this.selectedRepo.platform);
|
this.updateGroup.get('platformName').setValue(this.selectedRepo.typology);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.selectedRepo.eoscDatasourceType === 'Journal archive') {
|
if ((this.selectedRepo.datasourceType === 'opendoar') ||
|
||||||
console.log('inside journal');
|
(this.selectedRepo.datasourceType === 're3data')) {
|
||||||
this.updateGroup.get('issn').setValue(this.selectedRepo.issn);
|
|
||||||
this.updateGroup.get('eissn').setValue(this.selectedRepo.eissn);
|
|
||||||
this.updateGroup.get('lissn').setValue(this.selectedRepo.lissn);
|
|
||||||
}
|
|
||||||
|
|
||||||
// FIXME: Use eoscDatasourceType when we support the new model
|
|
||||||
if ((this.mode === 'opendoar') || (this.mode === 're3data')) {
|
|
||||||
|
|
||||||
|
// this.updateGroup.get('officialName').disable();
|
||||||
this.updateGroup.get('country').disable();
|
this.updateGroup.get('country').disable();
|
||||||
|
// this.updateGroup.get('longtitude').disable();
|
||||||
|
// this.updateGroup.get('latitude').disable();
|
||||||
|
// this.updateGroup.get('websiteUrl').disable();
|
||||||
|
// this.updateGroup.get('institutionName').disable();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: Use eoscDatasourceType when we support the new model
|
if (this.selectedRepo.datasourceType === 'journal') {
|
||||||
if (this.mode === 'cris') {
|
|
||||||
// this.longtitudeDesc.mandatory = false;
|
|
||||||
// this.latitudeDesc.mandatory = false;
|
|
||||||
this.datasourceTypeDesc.label = 'CRIS scope/type';
|
|
||||||
} else {
|
|
||||||
// this.longtitudeDesc.mandatory = true;
|
|
||||||
// this.latitudeDesc.mandatory = true;
|
|
||||||
this.datasourceTypeDesc.label = 'Data source type';
|
|
||||||
}
|
|
||||||
|
|
||||||
// FIXME: Use eoscDatasourceType when we support the new model
|
|
||||||
if (this.mode === 'journal') {
|
|
||||||
console.log(this.mode);
|
|
||||||
|
|
||||||
let ssnToShow = this.selectedRepo.issn.slice(0, 4) + '-' + this.selectedRepo.issn.toString().slice(4);
|
let ssnToShow = this.selectedRepo.issn.slice(0, 4) + '-' + this.selectedRepo.issn.toString().slice(4);
|
||||||
this.updateGroup.get('issn').setValue(ssnToShow);
|
this.updateGroup.get('issn').setValue(ssnToShow);
|
||||||
this.updateGroup.get('issn').clearValidators();
|
this.updateGroup.get('issn').clearValidators();
|
||||||
this.updateGroup.get('issn').setValidators([Validators.required, Validators.pattern('^(\\d{4}-?\\d{3}[\\dxX])$')]);
|
this.updateGroup.get('issn').setValidators([Validators.required, Validators.pattern('^\\d{4}-\\d{3}[\\dxX]$')]);
|
||||||
|
|
||||||
if (this.selectedRepo.eissn.trim().length) {
|
if (this.selectedRepo.eissn.trim().length) {
|
||||||
ssnToShow = this.selectedRepo.eissn.slice(0, 4) + '-' + this.selectedRepo.eissn.toString().slice(4);
|
ssnToShow = this.selectedRepo.eissn.slice(0, 4) + '-' + this.selectedRepo.eissn.toString().slice(4);
|
||||||
|
@ -176,36 +160,30 @@ export class DatasourceUpdateFormComponent implements OnInit {
|
||||||
this.updateGroup.get('eissn').disable();
|
this.updateGroup.get('eissn').disable();
|
||||||
this.updateGroup.get('lissn').disable();*/
|
this.updateGroup.get('lissn').disable();*/
|
||||||
}
|
}
|
||||||
|
/*this.getDatasourceClasses();*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getDatasourceClasses() {
|
getDatasourceClasses() {
|
||||||
// FIXME: Use eoscDatasourceType when we support the new model
|
this.repoService.getDatasourceClasses(this.selectedRepo.datasourceType).subscribe(
|
||||||
|
classes => this.datasourceClasses = classes,
|
||||||
let param = this.selectedRepo.collectedfrom.split('::')[1];
|
|
||||||
if (this.selectedRepo.eoscDatasourceType === 'Journal archive') { param = 'journal'; }
|
|
||||||
if (this.selectedRepo.eoscDatasourceType === 'Aggregator') { param = 'aggregator'; }
|
|
||||||
|
|
||||||
this.repoService.getDatasourceClasses(param).subscribe(
|
|
||||||
classes => {
|
|
||||||
for (const [key, value] of Object.entries(classes)) {
|
|
||||||
this.datasourceClasses.set(key, value);
|
|
||||||
}},
|
|
||||||
error => {
|
error => {
|
||||||
this.loadingMessage = '';
|
this.loadingMessage = '';
|
||||||
this.errorMessage = noServiceMessage;
|
this.errorMessage = noServiceMessage;
|
||||||
console.log(error);
|
console.log(error);
|
||||||
},
|
},
|
||||||
() => {
|
() => {
|
||||||
console.log('gotDatasourceClasses');
|
for (const key of Object.keys(this.datasourceClasses)) {
|
||||||
this.classCodes = Array.from(this.datasourceClasses.keys());
|
this.classCodes.push(key);
|
||||||
|
}
|
||||||
this.getCountries();
|
this.getCountries();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
getCountries() {
|
getCountries() {
|
||||||
this.repoService.getCountries().subscribe(
|
this.repoService.getCountries()
|
||||||
|
.subscribe(
|
||||||
countries => this.countries = countries.sort( function(a, b) {
|
countries => this.countries = countries.sort( function(a, b) {
|
||||||
if (a.name < b.name) {
|
if (a.name < b.name) {
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -258,7 +236,7 @@ export class DatasourceUpdateFormComponent implements OnInit {
|
||||||
window.scroll(1, 1);
|
window.scroll(1, 1);
|
||||||
|
|
||||||
if (this.updateGroup.valid) {
|
if (this.updateGroup.valid) {
|
||||||
if ( this.selectedRepo.eoscDatasourceType !== 'journal' || this.updateGroup.get('issn').value ) {
|
if ( this.selectedRepo.datasourceType !== 'journal' || this.updateGroup.get('issn').value ) {
|
||||||
this.refreshSelectedRepo();
|
this.refreshSelectedRepo();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -288,7 +266,7 @@ export class DatasourceUpdateFormComponent implements OnInit {
|
||||||
} else {
|
} else {
|
||||||
this.successMessage = formSuccessUpdatedRepo;
|
this.successMessage = formSuccessUpdatedRepo;
|
||||||
}
|
}
|
||||||
// fixme is this the place to update the subject??
|
//fixme is this the place to update the subject??
|
||||||
this.sharedService.setRepository(this.selectedRepo);
|
this.sharedService.setRepository(this.selectedRepo);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -303,26 +281,24 @@ export class DatasourceUpdateFormComponent implements OnInit {
|
||||||
|
|
||||||
refreshSelectedRepo() {
|
refreshSelectedRepo() {
|
||||||
if (this.updateGroup.get('softwarePlatform').value ) {
|
if (this.updateGroup.get('softwarePlatform').value ) {
|
||||||
this.selectedRepo.platform = this.updateGroup.get('softwarePlatform').value;
|
this.selectedRepo.typology = this.updateGroup.get('softwarePlatform').value;
|
||||||
} else if (this.updateGroup.get('platformName').value) {
|
} else if (this.updateGroup.get('platformName').value) {
|
||||||
this.selectedRepo.platform = this.updateGroup.get('platformName').value;
|
this.selectedRepo.typology = this.updateGroup.get('platformName').value;
|
||||||
}
|
}
|
||||||
this.selectedRepo.typology = this.updateGroup.get('datasourceType').value;
|
this.selectedRepo.officialName = this.updateGroup.get('officialName').value.toString();
|
||||||
console.log('typology ', this.selectedRepo.typology);
|
|
||||||
console.log(this.datasourceClasses);
|
|
||||||
console.log(this.updateGroup.get('datasourceType').value);
|
|
||||||
this.selectedRepo.officialname = this.updateGroup.get('officialName').value.toString();
|
|
||||||
this.selectedRepo.description = this.updateGroup.get('repoDescription').value.toString();
|
this.selectedRepo.description = this.updateGroup.get('repoDescription').value.toString();
|
||||||
this.selectedRepo.organizations[0].country = this.updateGroup.get('country').value; // countryCode
|
this.selectedRepo.countryCode = this.updateGroup.get('country').value;
|
||||||
|
this.selectedRepo.countryName = this.countries.filter(x => x.code === this.updateGroup.get('country').value)[0].name;
|
||||||
this.selectedRepo.longitude = this.updateGroup.get('longtitude').value;
|
this.selectedRepo.longitude = this.updateGroup.get('longtitude').value;
|
||||||
this.selectedRepo.latitude = this.updateGroup.get('latitude').value;
|
this.selectedRepo.latitude = this.updateGroup.get('latitude').value;
|
||||||
this.selectedRepo.websiteurl = this.updateGroup.get('websiteUrl').value;
|
this.selectedRepo.websiteUrl = this.updateGroup.get('websiteUrl').value;
|
||||||
this.selectedRepo.organizations[0].legalname = this.updateGroup.get('institutionName').value.toString();
|
this.selectedRepo.organization = this.updateGroup.get('institutionName').value.toString();
|
||||||
this.selectedRepo.englishname = this.updateGroup.get('englishName').value.toString();
|
this.selectedRepo.englishName = this.updateGroup.get('englishName').value.toString();
|
||||||
this.selectedRepo.logourl = this.updateGroup.get('logoUrl').value;
|
this.selectedRepo.logoUrl = this.updateGroup.get('logoUrl').value;
|
||||||
this.selectedRepo.timezone = this.updateGroup.get('timezone').value;
|
this.selectedRepo.timezone = this.updateGroup.get('timezone').value;
|
||||||
this.selectedRepo.contactemail = this.updateGroup.get('adminEmail').value;
|
this.selectedRepo.datasourceClass = this.updateGroup.get('datasourceType').value;
|
||||||
if (this.selectedRepo.eoscDatasourceType === 'journal') {
|
this.selectedRepo.contactEmail = this.updateGroup.get('adminEmail').value;
|
||||||
|
if (this.selectedRepo.datasourceType === 'journal') {
|
||||||
let ssnParts = this.updateGroup.get('issn').value.split('-');
|
let ssnParts = this.updateGroup.get('issn').value.split('-');
|
||||||
let correctSSN = ssnParts[0] + ssnParts[1];
|
let correctSSN = ssnParts[0] + ssnParts[1];
|
||||||
this.selectedRepo.issn = correctSSN;
|
this.selectedRepo.issn = correctSSN;
|
||||||
|
@ -337,13 +313,10 @@ export class DatasourceUpdateFormComponent implements OnInit {
|
||||||
this.selectedRepo.lissn = correctSSN;
|
this.selectedRepo.lissn = correctSSN;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!this.showButton) { // on register
|
if (!this.showButton) {
|
||||||
this.selectedRepo.registeredby = this.authService.getUserEmail();
|
this.selectedRepo.registeredBy = this.authService.getUserEmail();
|
||||||
this.selectedRepo.managed = true;
|
this.selectedRepo.registered = true;
|
||||||
const now = new Date(Date.now());
|
this.selectedRepo.registrationDate = new Date(Date.now()); // NOT NEEDED ??
|
||||||
this.selectedRepo.consentTermsOfUseDate = now;
|
|
||||||
this.selectedRepo.lastConsentTermsOfUseDate = now;
|
|
||||||
this.selectedRepo.registrationdate = now;
|
|
||||||
this.emittedInfo.emit(this.selectedRepo);
|
this.emittedInfo.emit(this.selectedRepo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,35 +8,18 @@
|
||||||
<div *ngIf="successMessage" class="uk-alert uk-alert-success">{{ successMessage }}</div>
|
<div *ngIf="successMessage" class="uk-alert uk-alert-success">{{ successMessage }}</div>
|
||||||
|
|
||||||
<form *ngIf="selectedRepo && !loadingMessage" [formGroup]="agreementForm">
|
<form *ngIf="selectedRepo && !loadingMessage" [formGroup]="agreementForm">
|
||||||
<div *ngIf="showButton" class="uk-margin-small"> <!-- Update -->
|
<br>
|
||||||
<span>Being registered in OpenAIRE, you are giving consent to OpenAIRE to download, transform and enrich the metadata records, publishing them in the OpenAIRE Research Graph.</span>
|
<!-- {{agreementForm.get('acceptTerms').value}}-->
|
||||||
</div>
|
|
||||||
<div *ngIf="!showButton" class="uk-margin-medium"> <!-- Register -->
|
|
||||||
<span>By registering your data source, you are giving your consent to OpenAIRE to download, transform and enrich the metadata records, publishing them in the OpenAIRE Research Graph.</span>
|
|
||||||
</div>
|
|
||||||
<form-inline>
|
<form-inline>
|
||||||
<label><input formControlName="acceptTerms" class="uk-checkbox" type="checkbox" checked
|
<label><input formControlName="acceptTerms" class="uk-checkbox" type="checkbox" checked> I Agree with the </label>
|
||||||
[checked]="this.agreementForm.get('acceptTerms').value === true"
|
<a href="https://zenodo.org/record/1446384#.XiGIAdmxU5n" target="_blank">OpenAIRE's Terms of Agreement for Content Providers</a>
|
||||||
(change)="emitRepo()">
|
|
||||||
Accept the
|
|
||||||
</label>
|
|
||||||
<a href="https://www.openaire.eu/terms-of-use-for-content-providers" target="_blank">Terms of Use</a>
|
|
||||||
</form-inline>
|
</form-inline>
|
||||||
|
<!-- {{agreementForm.get('optOut').value}}-->
|
||||||
<form-inline>
|
<form-inline>
|
||||||
<label><input formControlName="textMining" class="uk-checkbox" type="checkbox"
|
<label><input formControlName="optOut" class="uk-checkbox" type="checkbox"> I would like to opt out from "data mining of Open Access publications in my repository"</label>
|
||||||
[checked]="this.agreementForm.get('textMining').value === true"
|
|
||||||
(change)="emitRepo()">
|
|
||||||
Agree to the <a href="https://www.openaire.eu/terms-of-use-for-content-providers#consent" target="_blank">re-use of full texts</a>
|
|
||||||
</label>
|
|
||||||
</form-inline>
|
</form-inline>
|
||||||
<ng-container *ngIf="showButton">
|
<br>
|
||||||
<div class="uk-margin-top" *ngIf="selectedRepo.registrationdate">Data source registration date: {{selectedRepo.registrationdate | date}}</div>
|
|
||||||
<div class="uk-margin-small-top">Last date of acceptance of the Terms of Use: {{selectedRepo.lastConsentTermsOfUseDate ? (selectedRepo.lastConsentTermsOfUseDate | date) : '-'}}</div>
|
|
||||||
</ng-container>
|
|
||||||
<p class="uk-text-meta">Note: OpenAIRE will not provide the full text files for public distribution, the users will access from the original datasource.</p>
|
|
||||||
<div *ngIf="showButton" class="form-group">
|
<div *ngIf="showButton" class="form-group">
|
||||||
<button class="uk-button uk-button-primary updateRepoInfoButton" type="button" (click)="updateRepo()">Update Information</button>
|
<button class="uk-button uk-button-primary updateRepoInfoButton" type="button" (click)="updateRepo()">Update Information</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<!--<pre>{{agreementForm.value|json}}</pre>-->
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ export class DatasourceUpdateTermsFormComponent implements OnInit {
|
||||||
|
|
||||||
agreementForm = this.fb.group({
|
agreementForm = this.fb.group({
|
||||||
acceptTerms: '',
|
acceptTerms: '',
|
||||||
textMining: ''
|
optOut: ''
|
||||||
});
|
});
|
||||||
|
|
||||||
consentTermsOfUseDate: Date;
|
consentTermsOfUseDate: Date;
|
||||||
|
@ -38,6 +38,8 @@ export class DatasourceUpdateTermsFormComponent implements OnInit {
|
||||||
repoId: string;
|
repoId: string;
|
||||||
formSubmitted = false;
|
formSubmitted = false;
|
||||||
// updateGroup: FormGroup;
|
// updateGroup: FormGroup;
|
||||||
|
termsTick: boolean;
|
||||||
|
dataMiningTick: boolean;
|
||||||
readonly updateGroupDefinition = {
|
readonly updateGroupDefinition = {
|
||||||
softwarePlatform : ''
|
softwarePlatform : ''
|
||||||
};
|
};
|
||||||
|
@ -50,24 +52,20 @@ export class DatasourceUpdateTermsFormComponent implements OnInit {
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.agreementForm.get('acceptTerms').setValue(this.selectedRepo.consentTermsOfUse ? this.selectedRepo.consentTermsOfUse : false);
|
console.log(this.selectedRepo);
|
||||||
this.agreementForm.get('textMining').setValue(this.selectedRepo.fullTextDownload ? this.selectedRepo.fullTextDownload : false);
|
// this.dataMiningTick = false; // until we have an actual value
|
||||||
this.selectedRepo.consentTermsOfUse = this.agreementForm.value.acceptTerms;
|
if (this.router.url.indexOf('/sources/update') > -1) {
|
||||||
this.selectedRepo.fullTextDownload = this.agreementForm.value.textMining;
|
console.log('up');
|
||||||
// if (this.router.url.indexOf('/sources/update') > -1) {
|
this.termsTick = (this.selectedRepo.consentTermsOfUse ? (this.selectedRepo.consentTermsOfUse === 'true') : true);
|
||||||
// console.log('update');
|
// this.addTerm(this.selectedRepo.consentTermsOfUse, this.dataMiningTick);
|
||||||
// } else
|
|
||||||
if (this.router.url.indexOf('/sources/register') > -1) {
|
} else if (this.router.url.indexOf('/sources/register') > -1) {
|
||||||
this.emitRepo();
|
console.log('reg');
|
||||||
|
this.termsTick = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
emitRepo() {
|
// TODO: review updateRepo when backend is ready to POST terms
|
||||||
this.selectedRepo.consentTermsOfUse = this.agreementForm.value.acceptTerms;
|
|
||||||
this.selectedRepo.fullTextDownload = this.agreementForm.value.textMining;
|
|
||||||
this.emittedInfo.emit(this.selectedRepo);
|
|
||||||
}
|
|
||||||
|
|
||||||
updateRepo() {
|
updateRepo() {
|
||||||
this.formSubmitted = true;
|
this.formSubmitted = true;
|
||||||
this.errorMessage = '';
|
this.errorMessage = '';
|
||||||
|
@ -78,12 +76,6 @@ export class DatasourceUpdateTermsFormComponent implements OnInit {
|
||||||
if (this.showButton) {
|
if (this.showButton) {
|
||||||
this.loadingMessage = formSubmitting;
|
this.loadingMessage = formSubmitting;
|
||||||
this.errorMessage = '';
|
this.errorMessage = '';
|
||||||
this.selectedRepo.consentTermsOfUse = this.agreementForm.value.acceptTerms;
|
|
||||||
this.selectedRepo.fullTextDownload = this.agreementForm.value.textMining;
|
|
||||||
if (!this.selectedRepo.consentTermsOfUseDate) {
|
|
||||||
this.selectedRepo.consentTermsOfUseDate = new Date(Date.now());
|
|
||||||
}
|
|
||||||
this.selectedRepo.lastConsentTermsOfUseDate = new Date(Date.now());
|
|
||||||
this.repoService.updateRepository(this.selectedRepo).subscribe(
|
this.repoService.updateRepository(this.selectedRepo).subscribe(
|
||||||
response => {
|
response => {
|
||||||
if (response) {
|
if (response) {
|
||||||
|
|
|
@ -61,7 +61,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div *ngIf="reposOfUser && reposOfUser.length>0" class="menu_section border_top">
|
<div *ngIf="reposOfUser && reposOfUser.length>0" class="menu_section border_top">
|
||||||
<div class="sidebar_heading">DATASOURCES</div>
|
<div class="sidebar_heading">REPOSITORIES</div>
|
||||||
<ul>
|
<ul>
|
||||||
|
|
||||||
<li *ngFor="let repo of visibleReposOfUser" [routerLinkActive]="['current_section']" class="">
|
<li *ngFor="let repo of visibleReposOfUser" [routerLinkActive]="['current_section']" class="">
|
||||||
|
@ -113,8 +113,8 @@
|
||||||
</a>
|
</a>
|
||||||
<ul [ngClass]="{'uk-display-block': visibleAdminRepo}">
|
<ul [ngClass]="{'uk-display-block': visibleAdminRepo}">
|
||||||
<li class="act_item">
|
<li class="act_item">
|
||||||
<a *ngIf="adminRepository?.officialname && adminRepository.officialname.length>30" [routerLink]="['/repositoryAdmin/' + adminRepository.id]">{{adminRepository.officialname.substr(0,30)}}...</a>
|
<a *ngIf="adminRepository?.officialName && adminRepository.officialName.length>30" [routerLink]="['/repositoryAdmin/' + adminRepository.id]">{{adminRepository.officialName.substr(0,30)}}...</a>
|
||||||
<a *ngIf="adminRepository?.officialname && adminRepository.officialname.length<=30" [routerLink]="['/repositoryAdmin/' + adminRepository.id]">{{adminRepository.officialname}}</a>
|
<a *ngIf="adminRepository?.officialName && adminRepository.officialName.length<=30" [routerLink]="['/repositoryAdmin/' + adminRepository.id]">{{adminRepository.officialName}}</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -136,8 +136,8 @@ export class SideMenuComponent implements OnInit {
|
||||||
}
|
}
|
||||||
|
|
||||||
getIsUserAdmin() {
|
getIsUserAdmin() {
|
||||||
this.isUserAdmin = (this.authService.getUserRole().includes('SUPER_ADMINISTRATOR') ||
|
this.isUserAdmin = (this.authService.getUserRole().includes('ROLE_ADMIN') ||
|
||||||
this.authService.getUserRole().includes('CONTENT_PROVIDER_DASHBOARD_ADMINISTRATOR'));
|
this.authService.getUserRole().includes('ROLE_PROVIDE_ADMIN'));
|
||||||
return this.isUserAdmin;
|
return this.isUserAdmin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -154,7 +154,7 @@ export class SideMenuComponent implements OnInit {
|
||||||
}
|
}
|
||||||
|
|
||||||
getReposOfUser(): void {
|
getReposOfUser(): void {
|
||||||
this.repositoryService.getRepositoriesSnippetsOfUser()
|
this.repositoryService.getRepositoriesOfUser()
|
||||||
.subscribe(
|
.subscribe(
|
||||||
repos => {
|
repos => {
|
||||||
this.reposOfUser = repos;
|
this.reposOfUser = repos;
|
||||||
|
|
|
@ -74,8 +74,8 @@ export class TopmenuDashboardComponent implements OnInit {
|
||||||
}
|
}
|
||||||
|
|
||||||
getIsUserAdmin() {
|
getIsUserAdmin() {
|
||||||
this.isUserAdmin = (this.authService.getUserRole().includes('SUPER_ADMINISTRATOR') ||
|
this.isUserAdmin = (this.authService.getUserRole().includes('ROLE_ADMIN') ||
|
||||||
this.authService.getUserRole().includes('CONTENT_PROVIDER_DASHBOARD_ADMINISTRATOR'));
|
this.authService.getUserRole().includes('ROLE_PROVIDE_ADMIN'));
|
||||||
return this.isUserAdmin;
|
return this.isUserAdmin;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,6 +36,37 @@
|
||||||
<a class="uk-search-input" [routerLink]="['emptyPage']" [routerLinkActive]="['uk-active']">Dashboard</a>
|
<a class="uk-search-input" [routerLink]="['emptyPage']" [routerLinkActive]="['uk-active']">Dashboard</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<!--Sources-->
|
||||||
|
<!--<ul>-->
|
||||||
|
<!--<li><a [routerLink]="['sources', 'register']" [routerLinkActive]="['uk-active']">Register</a></li>-->
|
||||||
|
<!--<li><a [routerLink]="['sources', 'update']" [routerLinkActive]="['uk-active']">Update</a></li>-->
|
||||||
|
<!--</ul>-->
|
||||||
|
<!--</li>-->
|
||||||
|
<!--<li>-->
|
||||||
|
<!--Compatibility-->
|
||||||
|
<!--<ul>-->
|
||||||
|
<!--<li><a [routerLink]="['compatibility', 'validate']" [routerLinkActive]="['uk-active']">Validate</a></li>-->
|
||||||
|
<!--<li><a [routerLink]="['compatibility', 'browseHistory']" [routerLinkActive]="['uk-active']">Validation History</a></li>-->
|
||||||
|
<!--<li><a [routerLink]="['compatibility', 'monitor']" [routerLinkActive]="['uk-active']">Collection Monitor</a></li>-->
|
||||||
|
<!--</ul>-->
|
||||||
|
<!--</li>-->
|
||||||
|
<!--<li>-->
|
||||||
|
<!--Content-->
|
||||||
|
<!--<ul>-->
|
||||||
|
<!--<li><a [routerLink]="['content', 'events']" [routerLinkActive]="['uk-active']">Events</a></li>-->
|
||||||
|
<!--<li><a [routerLink]="['content', 'notifications']" [routerLinkActive]="['uk-active']">Notifications</a></li>-->
|
||||||
|
<!--</ul>-->
|
||||||
|
<!--</li>-->
|
||||||
|
<!--<li>-->
|
||||||
|
<!--<a class="uk-search-input" [routerLink]="['getImpact']" [routerLinkActive]="['uk-active']">Metrics</a>-->
|
||||||
|
<!--</li>-->
|
||||||
|
<!--<li *ngIf="getIsUserAdmin()">-->
|
||||||
|
<!--Admin-->
|
||||||
|
<!--<ul>-->
|
||||||
|
<!--<li><a href="{{adminHomePage}}" target="_blank">Help Texts</a></li>-->
|
||||||
|
<!--<li><a [routerLink]="['admin', 'metrics']" [routerLinkActive]="['uk-active']">Validate</a></li>s-->
|
||||||
|
<!--</ul>-->
|
||||||
|
<!--</li>-->
|
||||||
<li><a (click)="logout()">Logout</a></li>
|
<li><a (click)="logout()">Logout</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
@ -87,7 +118,7 @@
|
||||||
<div class="uk-container uk-container-expand">
|
<div class="uk-container uk-container-expand">
|
||||||
<nav class="uk-navbar" uk-navbar="{"align":"left"}">
|
<nav class="uk-navbar" uk-navbar="{"align":"left"}">
|
||||||
<div class="uk-navbar-left">
|
<div class="uk-navbar-left">
|
||||||
<a [routerLink]="['join']" class="uk-logo uk-navbar-item">
|
<a [routerLink]="['landing']" class="uk-logo uk-navbar-item">
|
||||||
<img src="../../../assets/imgs/OA_PROVIDE_B.png" alt="OpenAIRE" class="uk-responsive-height">
|
<img src="../../../assets/imgs/OA_PROVIDE_B.png" alt="OpenAIRE" class="uk-responsive-height">
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -96,13 +127,19 @@
|
||||||
|
|
||||||
<ul class="uk-navbar-nav" >
|
<ul class="uk-navbar-nav" >
|
||||||
<li class="uk-parent" [routerLinkActive]="['uk-active']">
|
<li class="uk-parent" [routerLinkActive]="['uk-active']">
|
||||||
<a [routerLink]="['home']" [routerLinkActive]="['uk-active']">Home</a>
|
<a [routerLink]="['home']" [routerLinkActive]="['uk-active']">
|
||||||
|
Home
|
||||||
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="uk-parent" [routerLinkActive]="['uk-active']">
|
<li class="uk-parent" [routerLinkActive]="['uk-active']">
|
||||||
<a [routerLink]="['about']" [routerLinkActive]="['uk-active']">About</a>
|
<a [routerLink]="['about']" [routerLinkActive]="['uk-active']">
|
||||||
|
About
|
||||||
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li *ngIf="getIsUserLoggedIn()" class="uk-parent" [routerLinkActive]="['uk-active']">
|
<li *ngIf="getIsUserLoggedIn()" class="uk-parent" [routerLinkActive]="['uk-active']">
|
||||||
<a [routerLink]="['join']" [routerLinkActive]="['uk-active']">Dashboard</a>
|
<a [routerLink]="['join']" [routerLinkActive]="['uk-active']">
|
||||||
|
Dashboard
|
||||||
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li *ngIf="!getIsUserLoggedIn()" class="uk-parent">
|
<li *ngIf="!getIsUserLoggedIn()" class="uk-parent">
|
||||||
|
@ -146,6 +183,55 @@
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
<!--<div class="uk-navbar-item">-->
|
||||||
|
|
||||||
|
<!--<ul *ngIf="!getIsUserLoggedIn()" class="uk-navbar-nav">-->
|
||||||
|
<!--<li class="uk-parent">-->
|
||||||
|
<!--<a class="" (click)="login()">-->
|
||||||
|
<!--Sign in-->
|
||||||
|
<!--<span class="uk-margin-small-left uk-icon">-->
|
||||||
|
<!--<svg height="20" ratio="1" viewBox="0 0 20 20" width="20" xmlns="http://www.w3.org/2000/svg">-->
|
||||||
|
<!--<circle cx="9.9" cy="6.4" fill="none" r="4.4" stroke="#000" stroke-width="1.1"></circle>-->
|
||||||
|
<!--<path d="M1.5,19 C2.3,14.5 5.8,11.2 10,11.2 C14.2,11.2 17.7,14.6 18.5,19.2" fill="none" stroke="#000" stroke-width="1.1"></path>-->
|
||||||
|
<!--</svg>-->
|
||||||
|
<!--</span>-->
|
||||||
|
<!--</a>-->
|
||||||
|
<!--</li>-->
|
||||||
|
<!--</ul>-->
|
||||||
|
|
||||||
|
<!--<ul *ngIf="getIsUserLoggedIn()" class="uk-navbar-nav">-->
|
||||||
|
<!--<li class="uk-parent">-->
|
||||||
|
<!--<a class="" aria-expanded="false">-->
|
||||||
|
<!--{{ getUserName() }}-->
|
||||||
|
<!--<span class="uk-margin-small-left uk-icon">-->
|
||||||
|
<!--<svg height="20" ratio="1" viewBox="0 0 20 20" width="20" xmlns="http://www.w3.org/2000/svg">-->
|
||||||
|
<!--<circle cx="9.9" cy="6.4" fill="none" r="4.4" stroke="#000" stroke-width="1.1"></circle>-->
|
||||||
|
<!--<path d="M1.5,19 C2.3,14.5 5.8,11.2 10,11.2 C14.2,11.2 17.7,14.6 18.5,19.2" fill="none" stroke="#000" stroke-width="1.1"></path>-->
|
||||||
|
<!--</svg>-->
|
||||||
|
<!--</span>-->
|
||||||
|
<!--</a>-->
|
||||||
|
<!--<div class="uk-navbar-dropdown uk-navbar-dropdown-bottom-left" style="top: 80px; left: 106.55px;"-->
|
||||||
|
<!--id="userMenu" (click)="onClick('userMenu')">-->
|
||||||
|
<!--<div class="uk-navbar-dropdown-grid uk-child-width-1-1 uk-grid uk-grid-stack" uk-grid="">-->
|
||||||
|
<!--<div class="uk-first-column">-->
|
||||||
|
<!--<ul class="uk-nav uk-navbar-dropdown-nav">-->
|
||||||
|
<!--<!–<ul *ngIf="getIsUserAdmin()" class="uk-nav uk-navbar-dropdown-nav">–>-->
|
||||||
|
<!--<!–<li class="uk-nav-header" style="display: block;">Admin</li>–>-->
|
||||||
|
<!--<!–<li style="display: block"><a href="{{adminHomePage}}" target="_blank">Help Texts</a></li>–>-->
|
||||||
|
<!--<!–<li style="display: block"><a [routerLink]="['/admin/metrics']">Metrics</a></li>–>-->
|
||||||
|
<!--<!–<li style="display: block" class="uk-margin-small-bottom"><a [routerLink]="['/admin/registrations']">Registrations</a></li>–>-->
|
||||||
|
<!--<!–</ul>–>-->
|
||||||
|
<!--<li><a class="" (click)="logout()">Log out</a></li>-->
|
||||||
|
<!--</ul>-->
|
||||||
|
<!--</div>-->
|
||||||
|
<!--</div>-->
|
||||||
|
<!--</div>-->
|
||||||
|
<!--</li>-->
|
||||||
|
<!--</ul>-->
|
||||||
|
|
||||||
|
<!--</div>-->
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</nav>
|
</nav>
|
||||||
|
|
|
@ -57,8 +57,8 @@ export class TopmenuLandingComponent implements OnInit {
|
||||||
}
|
}
|
||||||
|
|
||||||
getIsUserAdmin() {
|
getIsUserAdmin() {
|
||||||
this.isUserAdmin = (this.authService.getUserRole().includes('SUPER_ADMINISTRATOR') ||
|
this.isUserAdmin = (this.authService.getUserRole().includes('ROLE_ADMIN') ||
|
||||||
this.authService.getUserRole().includes('CONTENT_PROVIDER_DASHBOARD_ADMINISTRATOR'));
|
this.authService.getUserRole().includes('ROLE_PROVIDE_ADMIN'));
|
||||||
return this.isUserAdmin;
|
return this.isUserAdmin;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,13 +14,13 @@
|
||||||
@import url('https://fonts.googleapis.com/css?family=Sura:400,700');
|
@import url('https://fonts.googleapis.com/css?family=Sura:400,700');
|
||||||
|
|
||||||
body.landing {
|
body.landing {
|
||||||
padding-top: 0;
|
padding-top: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* yard */
|
/* yard */
|
||||||
.tm-page {
|
.tm-page {
|
||||||
border-width:0!important;
|
border-width:0px!important;
|
||||||
border:0!important;
|
border:0px!important;
|
||||||
}
|
}
|
||||||
body { font-family: 'Open Sans', sans-serif !important;}
|
body { font-family: 'Open Sans', sans-serif !important;}
|
||||||
/*
|
/*
|
||||||
|
@ -71,7 +71,7 @@ font-weight: 400!important;
|
||||||
|
|
||||||
}
|
}
|
||||||
.news .wk-panel-box, .news .wk-panel-header {
|
.news .wk-panel-box, .news .wk-panel-header {
|
||||||
padding :20px 0 30px 0;
|
padding :20px 0px 30px 0px;
|
||||||
margin-bottom:40px;
|
margin-bottom:40px;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
@ -94,7 +94,7 @@ margin-bottom:40px;
|
||||||
.wk-twitter-firstpage .wk-article-meta{
|
.wk-twitter-firstpage .wk-article-meta{
|
||||||
font-size:12px!important;
|
font-size:12px!important;
|
||||||
line-height:16px;
|
line-height:16px;
|
||||||
margin:0;
|
margin:0px;
|
||||||
|
|
||||||
}
|
}
|
||||||
.wk-twitter-firstpage .wk-margin {
|
.wk-twitter-firstpage .wk-margin {
|
||||||
|
@ -164,7 +164,7 @@ font-weight:300;
|
||||||
.service-button > .wk-subnav>li>a,
|
.service-button > .wk-subnav>li>a,
|
||||||
.boxedpills > .uk-subnav>li>a {
|
.boxedpills > .uk-subnav>li>a {
|
||||||
border: 1px solid #9c9c9c!important;
|
border: 1px solid #9c9c9c!important;
|
||||||
border-radius: 0!important;
|
border-radius: 0px!important;
|
||||||
color: #9c9c9c!important;
|
color: #9c9c9c!important;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -204,11 +204,11 @@ font-weight:300;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
/* border: 1px solid #e5e5e5; */
|
/* border: 1px solid #e5e5e5; */
|
||||||
border: none!important;
|
border: none!important;
|
||||||
border-radius: 0;
|
border-radius: 0px;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
color: #767779;
|
color: #767779;
|
||||||
color: rgb(108, 109, 116);
|
color: rgb(108, 109, 116);
|
||||||
box-shadow: rgba(0, 0, 0, 0.08) 0 5px 15px;
|
box-shadow: rgba(0, 0, 0, 0.08) 0px 5px 15px;
|
||||||
background: rgb(255, 255, 255)!important;
|
background: rgb(255, 255, 255)!important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -325,8 +325,8 @@ background-color:#222080;}
|
||||||
.tm-toolbar {
|
.tm-toolbar {
|
||||||
position:relative;
|
position:relative;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
padding-top: 0;
|
padding-top: 0px;
|
||||||
padding-bottom:0;
|
padding-bottom:0px;
|
||||||
background:rgba(255,255,255, 0.0);
|
background:rgba(255,255,255, 0.0);
|
||||||
z-index:10000;
|
z-index:10000;
|
||||||
/*background: linear-gradient(rgba(255,255,255,0), rgba(255,255,255,0)), url(/images/toolbar_bg.png);*/
|
/*background: linear-gradient(rgba(255,255,255,0), rgba(255,255,255,0)), url(/images/toolbar_bg.png);*/
|
||||||
|
@ -345,19 +345,19 @@ background:rgba(255,255,255, 0.4);
|
||||||
}
|
}
|
||||||
.uk-logo > img {max-height:80px;}
|
.uk-logo > img {max-height:80px;}
|
||||||
.inner {
|
.inner {
|
||||||
left:0;
|
left:0px;
|
||||||
margin-top:-5px;
|
margin-top:-5px;
|
||||||
background-color: #222080;
|
background-color: #222080;
|
||||||
}
|
}
|
||||||
.tm-toolbar .uk-container {
|
.tm-toolbar .uk-container {
|
||||||
padding-right:0;
|
padding-right:0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tm-toolbar ul.uk-subnav.uk-subnav-line,
|
.tm-toolbar ul.uk-subnav.uk-subnav-line,
|
||||||
.tm-toolbar ul.uk-subnav{
|
.tm-toolbar ul.uk-subnav{
|
||||||
margin-top:-10px;
|
margin-top:-10px;
|
||||||
margin-top: -5px; /* no border on top */
|
margin-top: -5px; /* no border on top */
|
||||||
padding:10px 10px 0 0;
|
padding:10px 10px 0px 0px;
|
||||||
-ms-transform: skew(25deg);
|
-ms-transform: skew(25deg);
|
||||||
-webkit-transform: skew(25deg);
|
-webkit-transform: skew(25deg);
|
||||||
transform: skew(25deg);
|
transform: skew(25deg);
|
||||||
|
@ -390,7 +390,7 @@ padding-right:0;
|
||||||
.uk-subnav-line > :nth-child(n + 2):before,
|
.uk-subnav-line > :nth-child(n + 2):before,
|
||||||
.tm-toolbar .uk-subnav > :nth-child(n + 2):before {
|
.tm-toolbar .uk-subnav > :nth-child(n + 2):before {
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
border-left: 0 ;
|
border-left: 0px ;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tm-toolbar .uk-subnav-line li a,
|
.tm-toolbar .uk-subnav-line li a,
|
||||||
|
@ -432,7 +432,7 @@ li.home-hover
|
||||||
}
|
}
|
||||||
|
|
||||||
.tm-toolbar .uk-dotnav, .tm-toolbar .uk-subnav {
|
.tm-toolbar .uk-dotnav, .tm-toolbar .uk-subnav {
|
||||||
margin-bottom:0!important;
|
margin-bottom:0px!important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tm-toolbar .uk-subnav-line li a:hover,
|
.tm-toolbar .uk-subnav-line li a:hover,
|
||||||
|
@ -461,13 +461,13 @@ li.home-hover
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
/*white-space:pre-wrap;*/
|
/*white-space:pre-wrap;*/
|
||||||
text-align:center;
|
text-align:center;
|
||||||
-moz-border-radius: 0;
|
-moz-border-radius: 0px;
|
||||||
-webkit-border-radius: 0;
|
-webkit-border-radius: 0px;
|
||||||
border-radius: 0;
|
border-radius: 0px;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
-moz-box-shadow: 0 0 1px #666;
|
-moz-box-shadow: 0px 0px 1px #666;
|
||||||
-webkit-box-shadow: 0 0 1px #666;
|
-webkit-box-shadow: 0px 0px 1px #666;
|
||||||
box-shadow: 0 0 1px #666;
|
box-shadow: 0px 0px 1px #666;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tm-toolbar .uk-subnav a[title]:hover:before{
|
.tm-toolbar .uk-subnav a[title]:hover:before{
|
||||||
|
@ -747,13 +747,13 @@ color: #17106E;
|
||||||
.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav > li > a:focus,
|
.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav > li > a:focus,
|
||||||
.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav > li > a.uk-open,
|
.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav > li > a.uk-open,
|
||||||
.uk-card-primary.uk-card-body .uk-navbar-nav > li:hover > a, .uk-card-primary.uk-card-body .uk-navbar-nav > li > a:focus,
|
.uk-card-primary.uk-card-body .uk-navbar-nav > li:hover > a, .uk-card-primary.uk-card-body .uk-navbar-nav > li > a:focus,
|
||||||
.uk-card-primary.uk-card-body .uk-navbar-nav > li > a.uk-open, .uk-card-primary > :not([class *='uk-card-media']) .uk-navbar-nav > li:hover > a,
|
.uk-card-primary.uk-card-body .uk-navbar-nav > li > a.uk-open, .uk-card-primary > :not([class * ='uk-card-media']) .uk-navbar-nav > li:hover > a,
|
||||||
.uk-card-primary > :not([class *='uk-card-media']) .uk-navbar-nav > li > a:focus,
|
.uk-card-primary > :not([class * ='uk-card-media']) .uk-navbar-nav > li > a:focus,
|
||||||
.uk-card-primary > :not([class *='uk-card-media']) .uk-navbar-nav > li > a.uk-open,
|
.uk-card-primary > :not([class * ='uk-card-media']) .uk-navbar-nav > li > a.uk-open,
|
||||||
.uk-card-secondary.uk-card-body .uk-navbar-nav > li:hover > a, .uk-card-secondary.uk-card-body .uk-navbar-nav > li > a:focus,
|
.uk-card-secondary.uk-card-body .uk-navbar-nav > li:hover > a, .uk-card-secondary.uk-card-body .uk-navbar-nav > li > a:focus,
|
||||||
.uk-card-secondary.uk-card-body .uk-navbar-nav > li > a.uk-open, .uk-card-secondary > :not([class *='uk-card-media']) .uk-navbar-nav > li:hover > a,
|
.uk-card-secondary.uk-card-body .uk-navbar-nav > li > a.uk-open, .uk-card-secondary > :not([class * ='uk-card-media']) .uk-navbar-nav > li:hover > a,
|
||||||
.uk-card-secondary > :not([class *='uk-card-media']) .uk-navbar-nav > li > a:focus,
|
.uk-card-secondary > :not([class * ='uk-card-media']) .uk-navbar-nav > li > a:focus,
|
||||||
.uk-card-secondary > :not([class *='uk-card-media']) .uk-navbar-nav > li > a.uk-open,
|
.uk-card-secondary > :not([class * ='uk-card-media']) .uk-navbar-nav > li > a.uk-open,
|
||||||
.uk-overlay-primary .uk-navbar-nav > li:hover > a, .uk-overlay-primary .uk-navbar-nav > li > a:focus,
|
.uk-overlay-primary .uk-navbar-nav > li:hover > a, .uk-overlay-primary .uk-navbar-nav > li > a:focus,
|
||||||
.uk-overlay-primary .uk-navbar-nav > li > a.uk-open, .uk-navbar-container:not(.uk-navbar-transparent) .uk-navbar-nav > li:hover > a,
|
.uk-overlay-primary .uk-navbar-nav > li > a.uk-open, .uk-navbar-container:not(.uk-navbar-transparent) .uk-navbar-nav > li:hover > a,
|
||||||
.uk-navbar-container:not(.uk-navbar-transparent) .uk-navbar-nav > li > a:focus,
|
.uk-navbar-container:not(.uk-navbar-transparent) .uk-navbar-nav > li > a:focus,
|
||||||
|
@ -805,7 +805,7 @@ color: #17106E;
|
||||||
color: #63BDE9!important;
|
color: #63BDE9!important;
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
.uk-tile-primary {background-color: #17106E;}
|
.uk-tile-primary {background-color: #17106E;}
|
||||||
*/
|
*/
|
||||||
|
@ -913,7 +913,7 @@ transform: translateY(-50%);
|
||||||
color:#fff;
|
color:#fff;
|
||||||
}
|
}
|
||||||
.first_page_panel {
|
.first_page_panel {
|
||||||
border: 0 solid #e5e5e7!important;
|
border: 0px solid #e5e5e7!important;
|
||||||
padding:20px 20px!important;
|
padding:20px 20px!important;
|
||||||
/*width:100%!important;*/
|
/*width:100%!important;*/
|
||||||
font-size:24pt!important;
|
font-size:24pt!important;
|
||||||
|
@ -997,8 +997,8 @@ border-top: 1px solid #6c6c6c;
|
||||||
border-bottom: 1px solid #c5c5c5;
|
border-bottom: 1px solid #c5c5c5;
|
||||||
}
|
}
|
||||||
.mod_events_latest_table td p{
|
.mod_events_latest_table td p{
|
||||||
margin-bottom:0;
|
margin-bottom:0px;
|
||||||
margin-top:0;
|
margin-top:0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mod_events_latest_date {
|
.mod_events_latest_date {
|
||||||
|
@ -1013,7 +1013,7 @@ border-top: 1px solid #6c6c6c;
|
||||||
margin-right:8px;
|
margin-right:8px;
|
||||||
margin-top:5px;
|
margin-top:5px;
|
||||||
text-align:center;
|
text-align:center;
|
||||||
padding:10px 0;
|
padding:10px 0px;
|
||||||
line-height:20px;
|
line-height:20px;
|
||||||
*/
|
*/
|
||||||
color: #4687E6;
|
color: #4687E6;
|
||||||
|
@ -1031,7 +1031,7 @@ border-top: 1px solid #6c6c6c;
|
||||||
line-height:14px;
|
line-height:14px;
|
||||||
font-weight:400;
|
font-weight:400;
|
||||||
font-size:12px;
|
font-size:12px;
|
||||||
padding: 5px 0;
|
padding: 5px 0px;
|
||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
text-transform:none;
|
text-transform:none;
|
||||||
*/
|
*/
|
||||||
|
@ -1094,7 +1094,7 @@ font-family: 'Heebo', sans-serif;
|
||||||
font-size:13px!important;
|
font-size:13px!important;
|
||||||
line-height: 18px;
|
line-height: 18px;
|
||||||
font-weight:normal!important;
|
font-weight:normal!important;
|
||||||
margin-top: 0;
|
margin-top: 0px;
|
||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
}
|
}
|
||||||
.nspArt { border-bottom: 1px solid #c5c5c5;}
|
.nspArt { border-bottom: 1px solid #c5c5c5;}
|
||||||
|
@ -1112,7 +1112,7 @@ font-family: 'Heebo', sans-serif;
|
||||||
.nspLinks ul li p {
|
.nspLinks ul li p {
|
||||||
text-transform:none;
|
text-transform:none;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
margin:0;
|
margin:0px;
|
||||||
}
|
}
|
||||||
.readon-button{
|
.readon-button{
|
||||||
background:0!important;
|
background:0!important;
|
||||||
|
@ -1203,16 +1203,16 @@ color: rgba(255, 255, 255, 0.5)!important;
|
||||||
#btl .btl-panel > span .btl-dropdown { border:3!important;}
|
#btl .btl-panel > span .btl-dropdown { border:3!important;}
|
||||||
|
|
||||||
#btl .btl-panel > span{
|
#btl .btl-panel > span{
|
||||||
border: 0!important;
|
border: 0px!important;
|
||||||
background-color: transparent!important;
|
background-color: transparent!important;
|
||||||
color:#444!important;
|
color:#444!important;
|
||||||
padding-right:30px;
|
padding-right:30px;
|
||||||
padding-left:6px;
|
padding-left:6px;
|
||||||
height:0!important;
|
height:0px!important;
|
||||||
line-height:20px!important;
|
line-height:20px!important;
|
||||||
margin:0 !important;
|
margin:0px !important;
|
||||||
box-shadow: 0 0 0;
|
box-shadow: 0px 0px 0px;
|
||||||
border-radius:0!important;
|
border-radius:0px!important;
|
||||||
display: inline-table!important;
|
display: inline-table!important;
|
||||||
text-transform:none!important;
|
text-transform:none!important;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
|
@ -1250,12 +1250,12 @@ border-bottom-left-radius: 2px;
|
||||||
border-bottom-right-radius: 2px;
|
border-bottom-right-radius: 2px;
|
||||||
border-top-left-radius: 2px;
|
border-top-left-radius: 2px;
|
||||||
border-top-right-radius: 2px;
|
border-top-right-radius: 2px;
|
||||||
box-shadow: rgba(41, 44, 61, 0.0980392) 2px 15px 50px 0;
|
box-shadow: rgba(41, 44, 61, 0.0980392) 2px 15px 50px 0px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
color: rgb(79, 82, 96);
|
color: rgb(79, 82, 96);
|
||||||
display: none;
|
display: none;
|
||||||
height: auto;
|
height: auto;
|
||||||
margin-top: 0;
|
margin-top: 0px;
|
||||||
padding-bottom: 25px;
|
padding-bottom: 25px;
|
||||||
padding-left: 25px;
|
padding-left: 25px;
|
||||||
padding-right: 25px;
|
padding-right: 25px;
|
||||||
|
@ -1285,8 +1285,8 @@ list-style-image: none;
|
||||||
list-style-position: outside;
|
list-style-position: outside;
|
||||||
list-style-type: none;
|
list-style-type: none;
|
||||||
padding-bottom: 6px;
|
padding-bottom: 6px;
|
||||||
padding-left: 0;
|
padding-left: 0px;
|
||||||
padding-right: 0;
|
padding-right: 0px;
|
||||||
padding-top: 6px;
|
padding-top: 6px;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
@ -1433,7 +1433,7 @@ color: #2D72D6;
|
||||||
box-shadow:none;
|
box-shadow:none;
|
||||||
border: 1px solid #eee;
|
border: 1px solid #eee;
|
||||||
|
|
||||||
padding:0 30px 15px 30px;
|
padding:0px 30px 15px 30px;
|
||||||
|
|
||||||
background: #fff;
|
background: #fff;
|
||||||
color: #767779;
|
color: #767779;
|
||||||
|
@ -1442,7 +1442,7 @@ box-shadow: 0 6px 50px rgba(0,0,0,.05);
|
||||||
}
|
}
|
||||||
|
|
||||||
.ifaq-tpl-clean_blue_arrow .ifaq-collapsible > a {
|
.ifaq-tpl-clean_blue_arrow .ifaq-collapsible > a {
|
||||||
display: block; padding: 1px 0 1px 0;
|
display: block; padding: 1px 0 1px 0px;
|
||||||
background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22%236C6D74%22%20width%3D%2213%22%20height%3D%221%22%20x%3D%220%22%20y%3D%226%22%3E%3C%2Frect%3E%0A%20%20%20%20%3Crect%20fill%3D%22%236C6D74%22%20width%3D%221%22%20height%3D%2213%22%20x%3D%226%22%20y%3D%220%22%3E%3C%2Frect%3E%0A%3C%2Fsvg%3E");
|
background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2213%22%20height%3D%2213%22%20viewBox%3D%220%200%2013%2013%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Crect%20fill%3D%22%236C6D74%22%20width%3D%2213%22%20height%3D%221%22%20x%3D%220%22%20y%3D%226%22%3E%3C%2Frect%3E%0A%20%20%20%20%3Crect%20fill%3D%22%236C6D74%22%20width%3D%221%22%20height%3D%2213%22%20x%3D%226%22%20y%3D%220%22%3E%3C%2Frect%3E%0A%3C%2Fsvg%3E");
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-position: 98% 50%;
|
background-position: 98% 50%;
|
||||||
|
|
|
@ -1,40 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
||||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
||||||
viewBox="0 0 118 118" style="enable-background:new 0 0 118 118;" xml:space="preserve">
|
|
||||||
<style type="text/css">
|
|
||||||
.st0{clip-path:url(#SVGID_2_);}
|
|
||||||
.st1{fill:#FFE250;}
|
|
||||||
.st2{fill:none;stroke:#EFC82A;stroke-width:3;stroke-dasharray:8;}
|
|
||||||
.st3{enable-background:new ;}
|
|
||||||
</style>
|
|
||||||
<g>
|
|
||||||
<defs>
|
|
||||||
<rect id="SVGID_1_" y="0" width="118" height="118"/>
|
|
||||||
</defs>
|
|
||||||
<clipPath id="SVGID_2_">
|
|
||||||
<use xlink:href="#SVGID_1_" style="overflow:visible;"/>
|
|
||||||
</clipPath>
|
|
||||||
<g class="st0">
|
|
||||||
<g transform="translate(27 32)">
|
|
||||||
<g transform="translate(-161.906 166.693) rotate(-45)">
|
|
||||||
|
|
||||||
<rect x="0" y="0" transform="matrix(-1 2.535182e-06 -2.535182e-06 -1 523.3979 37.2033)" class="st1" width="523.4" height="37.2"/>
|
|
||||||
|
|
||||||
<rect x="1.5" y="1.5" transform="matrix(-1 2.535182e-06 -2.535182e-06 -1 523.3979 37.2033)" class="st2" width="520.4" height="34.2"/>
|
|
||||||
</g>
|
|
||||||
<g class="st3">
|
|
||||||
<path d="M3.9,21.3l2.2-2.2c1-1,1.9-1.6,2.6-1.8c0.7-0.2,1.4,0.1,2,0.7c0.4,0.4,0.7,0.9,0.7,1.3s0,0.9-0.3,1.3l0,0
|
|
||||||
c0.5-0.3,1.1-0.5,1.5-0.4c0.5,0.1,0.9,0.3,1.4,0.8c0.6,0.6,0.9,1.4,0.8,2.2c-0.1,0.8-0.6,1.6-1.4,2.4L11,28.4L3.9,21.3z
|
|
||||||
M8.2,22.6l0.9-0.9c0.4-0.4,0.6-0.8,0.7-1.1s-0.1-0.6-0.3-0.9c-0.3-0.3-0.6-0.4-0.9-0.3c-0.3,0.1-0.7,0.3-1.1,0.8l-0.8,0.8
|
|
||||||
L8.2,22.6z M9.4,23.8l1.8,1.8l1-1c0.4-0.4,0.6-0.8,0.7-1.2c0-0.4-0.1-0.7-0.4-1c-0.6-0.6-1.3-0.5-2.1,0.4L9.4,23.8z"/>
|
|
||||||
<path d="M21.7,17.7l-4.1,4.1l-7.1-7.1l4.1-4.1l1.2,1.2l-2.6,2.6l1.6,1.6l2.4-2.4l1.2,1.2l-2.4,2.4l1.8,1.8l2.6-2.6L21.7,17.7z"
|
|
||||||
/>
|
|
||||||
<path d="M25.9,13.5L24.4,15l-5.8-5.8l-1.9,1.9l-1.2-1.2l5.3-5.3L22,5.7l-1.9,1.9L25.9,13.5z"/>
|
|
||||||
<path d="M33.3,6.1L31.1,5l-2.6,2.6l1.2,2.2L28,11.4l-4.6-9.6l1.8-1.8l9.6,4.6L33.3,6.1z M29.4,4.1c-2-1.1-3.1-1.6-3.4-1.8
|
|
||||||
c-0.3-0.1-0.5-0.3-0.6-0.3c0.3,0.5,1,1.8,2.1,4L29.4,4.1z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 2.1 KiB |
|
@ -1 +0,0 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 89.13 90.48"><defs><style>.cls-1,.cls-2{fill:#35baa0;}.cls-1{opacity:0.11;}</style></defs><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><circle class="cls-1" cx="11.7" cy="55.01" r="8.97"/><circle class="cls-1" cx="44.33" cy="79.24" r="8.97"/><circle class="cls-1" cx="77.3" cy="56.17" r="8.97"/><path class="cls-2" d="M77.16,43.33a12,12,0,0,0-11.72,9.51C60.51,52.78,47.76,51.58,47,41V8.48l9.78,9.64a2.5,2.5,0,0,0,3.51-3.55L46.25.73h0L46.15.64a2,2,0,0,0-.29-.22L45.67.31a1.67,1.67,0,0,0-.23-.12A1.58,1.58,0,0,0,45.13.1L45,.05l-.34,0h-.18a2.06,2.06,0,0,0-.26,0,1.46,1.46,0,0,0-.22,0l-.19.05L43.5.2l-.15.08-.28.16-.14.11a2.29,2.29,0,0,0-.23.21h0L29,15.11A2.49,2.49,0,0,0,29,18.64a2.52,2.52,0,0,0,1.73.69,2.47,2.47,0,0,0,1.81-.77L42,8.73V40.84s0,0,0,.08c-.73,10.52-13.21,11.83-18.28,11.92a12,12,0,1,0,0,5c5.67-.06,13.34-1.51,18.31-6V66.88a12,12,0,1,0,5-.15V51.83c5,4.57,12.8,6,18.48,6a12,12,0,1,0,11.7-14.53ZM12,62.28a7,7,0,1,1,7-7A7,7,0,0,1,12,62.28ZM51.79,78.5a7,7,0,1,1-7-7A7,7,0,0,1,51.79,78.5ZM77.16,62.28a7,7,0,1,1,7-7A7,7,0,0,1,77.16,62.28Z"/></g></g></svg>
|
|
Before Width: | Height: | Size: 1.1 KiB |
|
@ -1 +0,0 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 77.12 92.97"><defs><style>.cls-1,.cls-2{fill:#937245;}.cls-1{opacity:0.18;}</style></defs><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><rect class="cls-1" x="2.09" y="17.5" width="56.62" height="73.4" rx="12"/><path class="cls-2" d="M66,0H27c-4.72,0-8.75,3.33-10.37,8a11.6,11.6,0,0,0-8.27,7.71C3.57,17.12,0,22.06,0,27.93V80.39C0,87.33,5,93,11.14,93H50.08c4.69,0,8.71-3.28,10.34-7.93a11.8,11.8,0,0,0,7.65-7.65c5.14-1.1,9.05-6.22,9.05-12.35V12.58C77.12,5.64,72.12,0,66,0ZM50.08,87.68H11.14c-3.56,0-6.45-3.27-6.45-7.29V27.93A7.58,7.58,0,0,1,7.6,21.84a5.94,5.94,0,0,1,3.54-1.19H50.08c3.55,0,6.45,3.26,6.45,7.28V80.39a7.78,7.78,0,0,1-1.8,5A6.12,6.12,0,0,1,50.08,87.68Zm11.14-8.74v-51c0-6.94-5-12.57-11.14-12.57h-36a6.59,6.59,0,0,1,1.82-1.52,5.89,5.89,0,0,1,2.84-.74H57.68c3.56,0,6.45,3.27,6.45,7.28V72.85a7.82,7.82,0,0,1-1.58,4.76A6.45,6.45,0,0,1,61.22,78.94ZM72.43,65a7.46,7.46,0,0,1-3.61,6.54V20.38c0-6.93-5-12.58-11.14-12.58H22.17A6.13,6.13,0,0,1,27,5.29H66c3.56,0,6.45,3.27,6.45,7.29Z"/></g></g></svg>
|
|
Before Width: | Height: | Size: 1.1 KiB |
|
@ -1 +0,0 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 86 92.48"><defs><style>.cls-1{fill:#ce4d20;opacity:0.11;}.cls-2{fill:#e4572e;}</style></defs><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><circle class="cls-1" cx="55.66" cy="50.79" r="11.53"/><circle class="cls-1" cx="11.62" cy="50.09" r="10.83"/><circle class="cls-1" cx="74.89" cy="9.19" r="7.11"/><circle class="cls-1" cx="77.22" cy="83.99" r="7.11"/><path class="cls-2" d="M84.51,78.86a8.72,8.72,0,0,0-9.37-3.61L65.33,60.47a13.91,13.91,0,0,0-1-20.85L73,19.31l.15,0a10.27,10.27,0,0,0,1.9.18A9.79,9.79,0,1,0,68.54,17l-8.6,20.21a14.27,14.27,0,0,0-1.62-.43A13.94,13.94,0,0,0,42,47.78c0,.14,0,.27-.06.41l-18.74-.61A11.71,11.71,0,0,0,14,38.8a11.75,11.75,0,1,0,9.25,13.79h0L42,53.2a13.91,13.91,0,0,0,19.21,10L70.83,77.8a8.74,8.74,0,0,0,4.73,14.52,9,9,0,0,0,1.71.16,8.75,8.75,0,0,0,7.24-13.62Zm-14.14-70a4.77,4.77,0,1,1,3.75,5.6A4.77,4.77,0,0,1,70.37,8.84Zm-52,42.79a6.74,6.74,0,1,1-6.64-8.06,7.38,7.38,0,0,1,1.32.13,6.75,6.75,0,0,1,5.32,7.93ZM53.9,59.24a8.94,8.94,0,0,1,1.71-17.7,9.43,9.43,0,0,1,1.75.17A8.93,8.93,0,0,1,53.9,59.24Zm27,25.22A3.75,3.75,0,1,1,77.25,80a4.39,4.39,0,0,1,.72.07,3.76,3.76,0,0,1,3,4.41Z"/></g></g></svg>
|
|
Before Width: | Height: | Size: 1.2 KiB |
|
@ -1 +0,0 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 85.94 86.44"><defs><style>.cls-1,.cls-2{fill:#28beff;}.cls-1{opacity:0.11;}</style></defs><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><polygon class="cls-1" points="41.77 4.17 3.79 27.24 42.94 50.77 82.32 26.54 41.77 4.17"/><path class="cls-2" d="M84.75,25.61,43.85.37a2.54,2.54,0,0,0-2.62,0L1.2,24.73a2.51,2.51,0,0,0,0,4.29L42.13,53.38a2.42,2.42,0,0,0,1.27.36,2.51,2.51,0,0,0,1.27-.35l40-23.5a2.49,2.49,0,0,0,0-4.28ZM43.41,48.33,7.35,26.84,42.53,5.43,78.59,27.68Z"/><path class="cls-2" d="M82.17,41.74,43.41,64.49,3.78,40.88a2.5,2.5,0,1,0-2.56,4.3L42.13,69.55a2.48,2.48,0,0,0,2.54,0l40-23.49a2.5,2.5,0,0,0-2.53-4.32Z"/><path class="cls-2" d="M82.17,58.28,43.41,81,3.78,57.42a2.5,2.5,0,1,0-2.56,4.3L42.13,86.08a2.42,2.42,0,0,0,1.27.36,2.51,2.51,0,0,0,1.27-.35l40-23.5a2.5,2.5,0,0,0-2.53-4.31Z"/></g></g></svg>
|
|
Before Width: | Height: | Size: 892 B |
|
@ -1 +0,0 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 69.74 88.08"><defs><style>.cls-1,.cls-2{fill:#4059ad;}.cls-2{opacity:0.05;}</style></defs><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M23.58,47V45h-7V56.75h2.59V52.08h3.39v-2H19.18V47Z"/><path class="cls-1" d="M31.75,45.81H29.14L25.6,57.6H28l.58-2.43h3.32l.59,2.43h2.65Zm-2.69,7.33,1.15-4.82,1.18,4.82Z"/><path class="cls-1" d="M38.83,45.81V57.6h2.59V45.81Z"/><path class="cls-1" d="M52.25,51.59a3.22,3.22,0,0,0,1.66-3.1,4.16,4.16,0,0,0-.33-1.7,3,3,0,0,0-.92-1.2,2.71,2.71,0,0,0-1.17-.53,11.07,11.07,0,0,0-1.65-.1h-3.7V56.75h2.59V52.08H50l1.58,4.67h2.81Zm-2.39-1.41H48.73V46.87h1a2.43,2.43,0,0,1,.88.13,1.21,1.21,0,0,1,.52.51,1.86,1.86,0,0,1,.23,1C51.39,49.61,50.88,50.18,49.86,50.18Z"/><path class="cls-2" d="M66.35,9.47V82.56C59.7,86.8,44.7,88.08,34.87,88.08c-10.5,0-26.9-1.45-32.73-6.42V9.47A10.71,10.71,0,0,1,2.72,6c6.26-4.6,22-6,32.15-6,9.37,0,23.46,1.16,30.5,4.94A10.71,10.71,0,0,1,66.35,9.47Z"/><path class="cls-1" d="M65.37,4.94C58.33,1.16,44.24,0,34.87,0,24.69,0,9,1.37,2.72,6A5.67,5.67,0,0,0,0,10.5V77.58a5.33,5.33,0,0,0,2.14,4.08c5.83,5,22.23,6.42,32.73,6.42,9.83,0,24.83-1.28,31.48-5.52,2.12-1.34,3.39-3,3.39-5V10.5C69.74,8.21,68.06,6.38,65.37,4.94ZM4.59,10.53c.49-1.7,10.15-5.94,30.28-5.94s29.69,4.2,30.26,5.91c-.57,1.72-10.24,5.91-30.26,5.91S5.08,12.17,4.59,10.55Zm60.55,67c-.48,1.69-10.15,5.94-30.27,5.94S5,79.23,4.59,77.58V61.19c7.13,3.69,21,4.82,30.28,4.82S58,64.88,65.14,61.19Zm0-22.06c-.48,1.7-10.15,5.93-30.27,5.93S5,57.17,4.59,55.51V37.88c7.13,3.68,21,4.82,30.28,4.82S58,41.56,65.14,37.88Zm0-23.32c-.48,1.7-10.15,5.94-30.27,5.94S5,33.85,4.59,32.2v-16c7.13,3.69,21,4.82,30.28,4.82S58,19.87,65.14,16.18Z"/></g></g></svg>
|
|
Before Width: | Height: | Size: 1.7 KiB |
|
@ -1 +0,0 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 69.08 88.18"><defs><style>.cls-1,.cls-2{fill:#6d326d;}.cls-1{opacity:0.11;}</style></defs><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M54.4,2H13.62a12,12,0,0,0-12,12V72.52a12,12,0,0,0,12,12H54.4a12,12,0,0,0,12-12V14A12,12,0,0,0,54.4,2ZM22.21,17.87a6.91,6.91,0,1,1-6.9,6.91A6.91,6.91,0,0,1,22.21,17.87Zm.18,20.8a6.91,6.91,0,1,1-6.91,6.9A6.9,6.9,0,0,1,22.39,38.67ZM23.26,74a6.9,6.9,0,1,1,6.9-6.9A6.9,6.9,0,0,1,23.26,74Z"/><path class="cls-2" d="M54.58,0H14.5A14.51,14.51,0,0,0,0,14.5V73.68a14.51,14.51,0,0,0,14.5,14.5H54.58a14.51,14.51,0,0,0,14.5-14.5V14.5A14.51,14.51,0,0,0,54.58,0Zm9.5,73.68a9.51,9.51,0,0,1-9.5,9.5H14.5A9.51,9.51,0,0,1,5,73.68v-4h7.67a9.68,9.68,0,1,0,0-5H5V48.37h7.67a9.68,9.68,0,1,0,0-5H5V27.09h7.67a9.68,9.68,0,1,0,0-5H5V14.5A9.51,9.51,0,0,1,14.5,5H54.58a9.51,9.51,0,0,1,9.5,9.5ZM17.33,67.15A4.68,4.68,0,1,1,22,71.82,4.69,4.69,0,0,1,17.33,67.15Zm0-21.28A4.68,4.68,0,1,1,22,50.54,4.69,4.69,0,0,1,17.33,45.87Zm0-21.28A4.68,4.68,0,1,1,22,29.26,4.69,4.69,0,0,1,17.33,24.59Z"/></g></g></svg>
|
|
Before Width: | Height: | Size: 1.1 KiB |
|
@ -1 +0,0 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 77.93 86.2"><defs><style>.cls-1,.cls-2{fill:#f4b942;}.cls-1{opacity:0.11;}</style></defs><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><rect class="cls-1" x="0.99" y="14.54" width="61.51" height="69.44" rx="12"/><path class="cls-2" d="M53.43,12.9H11.88A11.89,11.89,0,0,0,0,24.78V74.33A11.89,11.89,0,0,0,11.88,86.2H53.43A11.89,11.89,0,0,0,65.31,74.33V24.78A11.89,11.89,0,0,0,53.43,12.9Zm6.88,61.43a6.88,6.88,0,0,1-6.88,6.87H11.88A6.88,6.88,0,0,1,5,74.33V24.78a6.89,6.89,0,0,1,6.88-6.88H53.43a6.89,6.89,0,0,1,6.88,6.88Z"/><path class="cls-2" d="M64.32,0H17.14a2.5,2.5,0,0,0,0,5H64.32a8.69,8.69,0,0,1,8.61,8.75V74.58a2.5,2.5,0,0,0,5,0V13.75A13.7,13.7,0,0,0,64.32,0Z"/><path class="cls-2" d="M48.73,36.47H16.57a2.5,2.5,0,0,0,0,5H48.73a2.5,2.5,0,0,0,0-5Z"/><path class="cls-2" d="M48.73,49.92H16.57a2.5,2.5,0,0,0,0,5H48.73a2.5,2.5,0,1,0,0-5Z"/><path class="cls-2" d="M48.73,63.38H16.57a2.5,2.5,0,0,0,0,5H48.73a2.5,2.5,0,1,0,0-5Z"/></g></g></svg>
|
|
Before Width: | Height: | Size: 1021 B |
|
@ -1 +0,0 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 95.17 30.66"><defs><style>.cls-1,.cls-2{fill:#323332;}.cls-1{opacity:0.11;}</style></defs><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><circle class="cls-1" cx="15" cy="15.34" r="11.62"/><circle class="cls-1" cx="47.68" cy="15.34" r="11.62"/><circle class="cls-1" cx="78.78" cy="15.34" r="11.62"/><path class="cls-2" d="M15.33,30.66A15.33,15.33,0,1,1,30.66,15.33,15.35,15.35,0,0,1,15.33,30.66ZM15.33,5A10.33,10.33,0,1,0,25.66,15.33,10.34,10.34,0,0,0,15.33,5Z"/><path class="cls-2" d="M47.59,30.66A15.33,15.33,0,1,1,62.92,15.33,15.35,15.35,0,0,1,47.59,30.66ZM47.59,5A10.33,10.33,0,1,0,57.92,15.33,10.34,10.34,0,0,0,47.59,5Z"/><path class="cls-2" d="M79.85,30.66A15.33,15.33,0,1,1,95.17,15.33,15.34,15.34,0,0,1,79.85,30.66ZM79.85,5A10.33,10.33,0,1,0,90.17,15.33,10.34,10.34,0,0,0,79.85,5Z"/></g></g></svg>
|
|
Before Width: | Height: | Size: 885 B |
|
@ -1 +0,0 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 74.15 87.09"><defs><style>.cls-1,.cls-2{fill:#3e703e;}.cls-1{opacity:0.11;}</style></defs><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><rect class="cls-1" x="2.44" y="3.93" width="67.81" height="80.16" rx="12"/><path class="cls-2" d="M59.15,87.09H15a15,15,0,0,1-15-15V15A15,15,0,0,1,15,0H59.15a15,15,0,0,1,15,15V72.09A15,15,0,0,1,59.15,87.09ZM15,6a9,9,0,0,0-9,9V72.09a9,9,0,0,0,9,9H59.15a9,9,0,0,0,9-9V15a9,9,0,0,0-9-9Z"/><path class="cls-2" d="M25,56.48a3,3,0,0,1-2.12-.88L11.93,44.69a3.06,3.06,0,0,1-.88-2.14A3,3,0,0,1,12,40.42L22.75,29.88a3,3,0,1,1,4.19,4.29l-8.62,8.42,8.77,8.77a3,3,0,0,1,0,4.24A3,3,0,0,1,25,56.48Z"/><path class="cls-2" d="M49.64,56.93a3,3,0,0,1-2.12-.88,3,3,0,0,1,0-4.24L56.29,43l-8.62-8.42a3,3,0,1,1,4.19-4.29L62.65,40.87a3,3,0,0,1,0,4.27L51.76,56.05A3,3,0,0,1,49.64,56.93Z"/><path class="cls-2" d="M31.67,63.7a2.74,2.74,0,0,1-.93-.15,3,3,0,0,1-1.92-3.78L40.52,24.1A3,3,0,0,1,46.22,26L34.52,61.64A3,3,0,0,1,31.67,63.7Z"/></g></g></svg>
|
|
Before Width: | Height: | Size: 1.0 KiB |