This commit is contained in:
andreas.mantas 2019-07-08 14:00:33 +00:00
parent 5282d961cd
commit e09818cc9d
34 changed files with 2600 additions and 2209 deletions

3541
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -2,7 +2,7 @@ import { Component, OnInit } from '@angular/core';
import { NavigationEnd, Router, RoutesRecognized } from '@angular/router';
import { AuthenticationService } from './services/authentication.service';
import { environment } from '../environments/environment';
import { MatomoInjector, MatomoTracker } from 'ngx-matomo';
import { MatomoInjector } from 'ngx-matomo';
@Component({
selector: 'oa-repo-manager',
@ -12,10 +12,9 @@ import { MatomoInjector, MatomoTracker } from 'ngx-matomo';
export class AppComponent implements OnInit {
constructor(private router: Router,
private authService: AuthenticationService,
private matomoInjector: MatomoInjector,
private matomoTracker: MatomoTracker) {
private matomoInjector: MatomoInjector) {
console.log('21-06-2019. Fixed matomo to log userIds?');
console.log('11-02-2019. First deploy of project upgraded to angular 6');
let piwikUrl;
if (window.location.origin.includes('beta')) {
@ -49,12 +48,25 @@ export class AppComponent implements OnInit {
ngOnInit() {
this.router.events.subscribe((evt) => {
/*if ((evt instanceof RoutesRecognized) && (environment.production === true)) {
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);
}*/
if (!(evt instanceof NavigationEnd)) {
return;
}
if (this.authService.isLoggedIn) {
this.matomoTracker.setUserId(this.authService.getUserEmail());
}
window.scrollTo(0, 0);
});
}

View File

@ -17,8 +17,7 @@ export const loadingAggregationHistoryError = 'System error retrieving repositor
export const noAggregationHistory = 'There is no aggregation history for this repository at the moment';
/* Interfaces Messages */
export const noInterfacesSaved = 'You have to create at least one interface.';
export const errorsInInterfaces = 'There are still invalid interfaces. Please correct or remove them.';
export const noInterfacesSaved = 'You have to create at least one interface';
export const nonRemovableInterface = 'This interface can not be removed!';
/* Rules Messages */

View File

@ -1,40 +1,13 @@
export const timezones = [
{ offset: -12.0, name: '[GMT - 12:00] United States Minor Outlying Islands' },
{ offset: -11.0, name: '[GMT - 11:00] United States, New Zealand' },
{ offset: -10.0, name: '[GMT - 10:00] Honolulu, Papeete...' },
{ offset: -9.5, name: '[GMT - 09:30] French Polynesia' },
{ offset: -9.0, name: '[GMT - 09:00] Anchorage...' },
{ offset: -8.0, name: '[GMT - 08:00] Los Angeles, Vancouver, Tijuana...' },
{ offset: -7.0, name: '[GMT - 07:00] Phoenix, Denver, Calgary, Ciudad Juárez...' },
{ offset: -6.0, name: '[GMT - 06:00] Chicago, Mexico City, Guatemala City, Tegucigalpa, Managua, Winnipeg, San José, San Salvador...' },
{ offset: -5.0, name: '[GMT - 05:00] New York, Toronto, Havana, Lima, Bogotá, Kingston...' },
{ offset: -4.0, name: '[GMT - 04:00] Santiago, Santo Domingo, Manaus, Caracas, La Paz, Asunción, Halifax...' },
{ offset: -3.5, name: '[GMT - 03:30] St. Johns...' },
{ offset: -3.0, name: '[GMT - 03:00] São Paulo, Buenos Aires, Montevideo...' },
{ offset: -2.0, name: '[GMT - 02:00] Brazil, United Kingdom...' },
{ offset: -1.0, name: '[GMT - 01:00] Praia, Ponta Delgada...' },
{ offset: 0.0, name: '[GMT] London, Dublin, Lisbon, Accra, Dakar...' },
{ offset: 1.0, name: '[GMT + 01:00] Berlin, Rome, Paris, Madrid, Vienna, Warsaw, Lagos, Kinshasa, Luanda, Algiers, Casablanca...' },
{ offset: 2.0, name: '[GMT + 02:00] Cairo, Khartoum, Johannesburg, Athens, Kiev, Bucharest, Lubumbashi, Jerusalem...' },
{ offset: 3.0, name: '[GMT + 03:00] Moscow, Istanbul, Riyadh, Baghdad, Nairobi, Minsk, Doha...' },
{ offset: 3.5, name: '[GMT + 03:30] Tehran...' },
{ offset: 4.0, name: '[GMT + 04:00] Dubai, Baku, Samara...' },
{ offset: 4.5, name: '[GMT + 04:30] Kabul...' },
{ offset: 5.0, name: '[GMT + 05:00] Karachi, Tashkent, Yekaterinburg...' },
{ offset: 5.5, name: '[GMT + 05:30] Mumbai, Delhi, Colombo...' },
{ offset: 5.75, name: '[GMT + 05:45] Kathmandu...' },
{ offset: 6.0, name: '[GMT + 06:00] Dhaka, Almaty, Omsk...' },
{ offset: 6.5, name: '[GMT + 06:30] Yangon...' },
{ offset: 7.0, name: '[GMT + 07:00] Jakarta, Bangkok, Ho Chi Minh City, Krasnoyarsk...' },
{ offset: 8.0, name: '[GMT + 08:00] Shanghai, Beijing, Hong Kong, Kuala Lumpur, Singapore, Taipei, Perth, Manila, Makassar, Irkutsk...' },
{ offset: 8.75, name: '[GMT + 08:45] Australia' },
{ offset: 9.0, name: '[GMT + 09:00] Tokyo, Seoul, Pyongyang, Ambon, Yakutsk...' },
{ offset: 9.5, name: '[GMT + 09:30] Adelaide, Darwin...' },
{ offset: 10.0, name: '[GMT + 10:00] Sydney, Melbourne, Port Moresby, Vladivostok...' },
{ offset: 10.5, name: '[GMT + 10:30] Australia (New South Wales)...' },
{ offset: 11.0, name: '[GMT + 11:00] Nouméa, Magadan...' },
{ offset: 12.0, name: '[GMT + 12:00] Auckland, Suva, Petropavlovsk-Kamchatsky...' },
{ offset: 12.75, name: '[GMT + 12:45] New Zealand (Chatham Islands)...' },
{ offset: 13.0, name: '[GMT + 13:00] Kiribati (Phoenix Islands), New Zealand (Tokelau), Samoa, Tonga' },
{ offset: 14.0, name: '[GMT + 14:00] Kiribati (Line Islands)' },
{ offset: -2.0, name: '[GMT - 2] Fernando de Noronha Time, South Georg...' },
{ offset: -1.0, name: '[GMT - 1] Azores Standard Time, Cape Verde Time...' },
{ offset: 0.0, name: '[GMT] Western European Time, Greenwich Mean Time' },
{ offset: 1.0, name: '[GMT + 1] Central European Time, West African Time' },
{ offset: 2.0, name: '[GMT + 2] Eastern European Time, Central Africa...' },
{ offset: 3.0, name: '[GMT + 3] Moscow Standard Time, Eastern African...' },
{ offset: 3.5, name: '[GMT + 3:30] Iran Standard Time' },
{ offset: 4.0, name: '[GMT + 4] Gulf Standard Time, Samara Standard Time' },
{ offset: 4.5, name: '[GMT + 4:30] Afghanistan Time' },
{ offset: 5.0, name: '[GMT + 5] Pakistan Standard Time, Yekaterinburg...' },
{ offset: 8.0, name: '[GMT + 8] Beijing, Hong Kong, Irkutsk, Kuala Lumpur, Manila, Perth' },
];

View File

@ -1,5 +1,5 @@
import { Component, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute, Router} from '@angular/router';
import { ActivatedRoute, Params, Router} from '@angular/router';
import { CompatibilityValidateStep1Component } from './compatibility-validate-forms/compatibility-validate-step1.component';
import { RepositoryService } from '../../services/repository.service';
import { JobForValidation, RuleSet } from '../../domain/typeScriptClasses';
@ -69,9 +69,7 @@ export class CompatibilityValidateTypeComponent implements OnInit {
if (this.route.snapshot.paramMap.has('type')) {
this.type = this.route.snapshot.paramMap.get('type');
this.getBaseUrlList();
this.route.queryParams.subscribe(
() => this.getStep()
);
this.getStep();
}
}
@ -81,13 +79,13 @@ export class CompatibilityValidateTypeComponent implements OnInit {
const stepName = this.route.snapshot.queryParamMap.get('step');
if (stepName === 'guidelines') {
if (!this.identifiedUrl) {
this.router.navigateByUrl(`/compatibility/validate/${this.type}?step=baseUrl`);
this.navigateToStep('baseUrl');
} else {
this.currentStep = 1;
}
} else if ((stepName === 'parameters') || (stepName === 'crisEntities')) {
if (!this.chosenUrl) {
this.router.navigateByUrl(`/compatibility/validate/${this.type}?step=baseUrl`);
this.navigateToStep('baseUrl');
} else {
this.currentStep = 2;
}
@ -95,11 +93,19 @@ export class CompatibilityValidateTypeComponent implements OnInit {
this.currentStep = 3;
}
}
}
navigateToStep(step: string) {
this.router.navigateByUrl(`/compatibility/validate/${this.type}?step=${step}`)
.then( () => {
this.getStep();
this.rightHelperContent.ngOnInit();
this.topHelperContent.ngOnInit();
this.leftHelperContent.ngOnInit();
this.bottomHelperContent.ngOnInit();
}
);
}
/* retrieves the baseUrl list for the registered repositories of the user */
getBaseUrlList() {
@ -136,10 +142,10 @@ export class CompatibilityValidateTypeComponent implements OnInit {
console.log(this.chosenContentRules);
if (this.chosenContentRules.length || this.chosenUsageRules.length) {
if (this.type === 'cris') {
this.router.navigateByUrl(`/compatibility/validate/${this.type}?step=crisEntities`);
this.navigateToStep('crisEntities');
} else {
this.getValidationSets();
this.router.navigateByUrl(`/compatibility/validate/${this.type}?step=parameters`);
this.navigateToStep('parameters');
}
} else {
this.errorMessage = didntSelectRules;
@ -164,11 +170,11 @@ export class CompatibilityValidateTypeComponent implements OnInit {
moveBackAStep () {
this.errorMessage = '';
if (this.currentStep === 1) {
this.router.navigateByUrl(`/compatibility/validate/${this.type}?step=baseUrl`);
this.navigateToStep('baseUrl');
} else if ((this.currentStep === 2) && (this.type !== 'cris')) {
this.router.navigateByUrl(`/compatibility/validate/${this.type}?step=guidelines`);
this.navigateToStep('guidelines');
} else if ((this.currentStep === 2) && (this.type === 'cris')) {
this.router.navigateByUrl(`/compatibility/validate/${this.type}?step=guidelines`);
this.navigateToStep('guidelines');
}
}
@ -211,7 +217,7 @@ export class CompatibilityValidateTypeComponent implements OnInit {
() => {
this.loadingMessage = '';
if (this.ruleSets && this.ruleSets.length) {
this.router.navigateByUrl(`/compatibility/validate/${this.type}?step=guidelines`);
this.navigateToStep('guidelines');
} else {
this.errorMessage = noRuleSets;
window.scroll(1, 1);
@ -309,7 +315,7 @@ export class CompatibilityValidateTypeComponent implements OnInit {
window.scroll(1, 1);
},
() => {
this.router.navigateByUrl(`/compatibility/validate/${this.type}?step=finish`);
this.navigateToStep('finish');
}
);
}

View File

@ -37,7 +37,9 @@ export class CompatibilityValidationResultsComponent implements OnInit {
ngOnInit () {
if (this.authService.getIsUserLoggedIn()) {
setTimeout(() => {
this.getJobInfo();
}, 500 );
} else {
const id = this.route.snapshot.paramMap.get('id');
this.authService.redirectUrl = '/compatibility/browseHistory/' + id;

View File

@ -32,7 +32,9 @@ export class ContentEventsOfRepositoryComponent implements OnInit {
ngOnInit() {
this.repoName = this.route.snapshot.paramMap.get('name');
this.getCorrectName();
setTimeout(() => {
this.getTopics();
}, 500);
}
getRepoTopics(): void {

View File

@ -1,23 +1,21 @@
<div *ngIf="getIsUserLoggedIn()" id="contentWrapper" class="tm-main uk-section uk-section-default" uk-height-viewport="expand: true" style="box-sizing: border-box;" >
<div>
<div class="uk-container uk-container-large">
<div class="uk-grid uk-grid-stack">
<div class="uk container-fluid">
<div class="uk-sticky-placeholder" style="height: 84px; margin: 0px;" aria-hidden="aria-hidden"></div>
<div class="uk-grid uk-padding">
<div class="uk-width-1-3@m">
<div class="uk-width-expand@m">
<div>
<div>
<!-- MARGIN-TOP -->
<div class="uk-sticky-placeholder" style="height: 84px; margin: 0px;" aria-hidden="aria-hidden"></div>
<div class="uk-width-1-1@m uk-first-column">
<div class="uk-margin uk-grid-match uk-child-width-1-1 uk-child-width-1-2@m uk-grid-small uk-grid uk-scrollspy-inview uk-animation-fade" uk-scrollspy-class="" uk-grid="" style="">
<div class="uk-first-column">
<div>
<div class="el-item uk-card uk-card-hover uk-card-body uk-scrollspy-inview uk-animation-fade" uk-scrollspy-class="" style="">
<a class="el-link uk-position-cover uk-margin-remove-adjacent" [routerLink]="['/sources','register']" uk-scroll=""></a>
<div class="uk-child-width-expand uk-flex-middle uk-grid" uk-grid="">
<div class="uk-width-1-2@m uk-first-column">
<div>
<img class="el-image uk-border-rounded" src="../../../assets/imgs/iStock-153949408.jpg" >
</div>
<div>
<div>
<h3 class="el-title uk-margin uk-card-title">Register</h3>
<div class="el-content uk-margin">
@ -26,16 +24,14 @@
</div>
</div>
</div>
</div>
</div>
<div>
<div class="el-item uk-card uk-card-hover uk-card-body uk-scrollspy-inview uk-animation-fade" uk-scrollspy-class="" style="">
<a class="el-link uk-position-cover uk-margin-remove-adjacent" [routerLink]="['/compatibility','validate']" uk-scroll=""></a>
<div class="uk-child-width-expand uk-flex-middle uk-grid" uk-grid="">
<div class="uk-width-1-2@m uk-first-column">
<div>
<img class="el-image uk-border-rounded" src="../../../assets/imgs/iStock-516286898.jpg" >
</div>
<div>
<div>
<h3 class="el-title uk-margin uk-card-title">Validate</h3>
<div class="el-content uk-margin">
@ -44,16 +40,14 @@
</div>
</div>
</div>
</div>
</div>
<div class="uk-grid-margin uk-first-column">
<div class="el-item uk-card uk-card-hover uk-card-body uk-scrollspy-inview uk-animation-fade" uk-scrollspy-class="" style="">
<a class="el-link uk-position-cover uk-margin-remove-adjacent" [routerLink]="['/content','notifications']" uk-scroll=""></a>
<div class="uk-child-width-expand uk-flex-middle uk-grid" uk-grid="">
<div class="uk-width-1-2@m uk-first-column">
<div>
<img class="el-image uk-border-rounded" src="../../../assets/imgs/iStock-466267165.jpg" >
</div>
<div>
<div>
<h3 class="el-title uk-margin uk-card-title">Notifications</h3>
<div class="el-content uk-margin">
@ -62,16 +56,14 @@
</div>
</div>
</div>
</div>
</div>
<div class="uk-grid-margin">
<div class="el-item uk-card uk-card-hover uk-card-body uk-scrollspy-inview uk-animation-fade" uk-scrollspy-class="" style="">
<a class="el-link uk-position-cover uk-margin-remove-adjacent" uk-scroll="" [routerLink]="['/getImpact']"></a>
<div class="uk-child-width-expand uk-flex-middle uk-grid" uk-grid="">
<div class="uk-width-1-2@m uk-first-column">
<div>
<img class="el-image uk-border-rounded" src="../../../assets/imgs/iStock-659630328.jpg" >
</div>
<div>
<div>
<h3 class="el-title uk-margin uk-card-title">Metrics</h3>
<div class="el-content uk-margin">
@ -85,9 +77,43 @@
</div>
</div>
</div>
<div class="uk-width-2-3@m uk-inline uk-padding-remove">
<div class="uk-visible-toggle uk-light" tabindex="-1" uk-slider="center: true">
<ul *ngIf="getIsUserLoggedIn()" class="uk-slider-items uk-child-width-1-1@s">
<!-- <div *ngIf="getRepos()"></div>-->
<div *ngFor="let repository of repositories">
<li class="uk-padding uk-padding-remove-right">
<div class="uk-card uk-card-default uk-card-hover">
<div class="uk-card-header">
<div class="uk-card-title"><h3 class="uk-text-center" style="color:black;">{{repository.officialName}}</h3></div>
<div class="uk-card-title"><h5 class="uk-text-center" style="color:black;">{{repository.organization}}</h5></div>
<div><p class="uk-text-center" style="color:black;">{{repository.countryName}}</p></div>
</div>
<div class="uk-card-body uk-text-center">
<img src="{{repository.logoUrl ? repository.logoUrl : '../../../assets/imgs/yourLogoHere.jpg'}}" alt="">
<div><p class="uk-text-center" style="color:black;">{{repository.typology}}</p></div>
<div><p class="uk-text-center" style="color:black;">{{repository.description}}</p></div>
</div>
</div>
</li>
</div>
</ul>
<a class="uk-position-top-left uk-position-large uk-hidden-hover" href="#" uk-slidenav-previous uk-slider-item="previous"></a>
<a class="uk-position-top-right uk-position-large uk-hidden-hover" href="#" uk-slidenav-next uk-slider-item="next"></a>
</div>
</div>
</div>
</div>
</div>

View File

@ -1,5 +1,7 @@
import { Component, OnInit } from '@angular/core';
import { AuthenticationService } from '../../services/authentication.service';
import { RepositoryService } from '../../services/repository.service';
import {Repository} from '../../domain/typeScriptClasses';
@Component ({
selector: 'app-dashboard',
@ -8,11 +10,38 @@ import { AuthenticationService } from '../../services/authentication.service';
export class DashboardComponent implements OnInit {
constructor(private authService: AuthenticationService) { }
constructor(private authService: AuthenticationService,
private repositoryService: RepositoryService) { }
ngOnInit() {}
repositories: Repository[] = [];
userEmail: string;
ngOnInit() {
// this.getUserEmail();
this.userEmail = sessionStorage.getItem('email');
if (this.userEmail) {
this.getRepositoriesOfUser(this.userEmail);
}
}
getIsUserLoggedIn() {
return this.authService.getIsUserLoggedIn();
}
getUserEmail() {
this.userEmail = this.authService.getUserEmail();
}
getRepos() {
console.log('in getRepos');
this.getRepositoriesOfUser(this.userEmail);
}
getRepositoriesOfUser(userEmail: string) {
this.repositoryService.getRepositoriesOfUser(userEmail).subscribe(
repositories => this.repositories = repositories,
error => console.log('Errrrror'),
() => console.log(this.repositories)
);
}
}

View File

@ -98,15 +98,10 @@
<div class="questions">
<div class="el-item uk-card uk-card-small uk-card-body">
<ul class="uk-list uk-list-divider">
<!--<li><a href="https://www.openaire.eu/os-primers">Learn about open science policies and how to align</a></li>-->
<!--<li><a href="https://www.openaire.eu/rdm-handbook">Learn more on how to manage your data in the open science era</a></li>-->
<!--<li><a href="https://www.openaire.eu/guides/">Find out how to use OpenAIRE to best serve your needs</a></li>-->
<!--<li><a href="https://www.openaire.eu/webinars/">View our training material on a variety of related topics</a></li>-->
<!--<li><a href="https://www.openaire.eu/contact-us/">Contact us</a></li>-->
<li><a href="https://www.openaire.eu/validator-registration-guide">Learn how to validate and register your repository</a></li>
<li><a href="https://www.openaire.eu/guides">Find out how to use OpenAIRE to best serve your needs</a></li>
<li><a href="https://www.openaire.eu/category/content-providers">View our training material for Content Providers</a></li>
<li><a href="https://guidelines.openaire.eu/en/latest/">Follow the OpenAIRE Guidelines</a></li>
<li><a href="https://www.openaire.eu/os-primers">Learn about open science policies and how to align</a></li>
<li><a href="https://www.openaire.eu/rdm-handbook">Learn more on how to manage your data in the open science era</a></li>
<li><a href="https://www.openaire.eu/guides/">Find out how to use OpenAIRE to best serve your needs</a></li>
<li><a href="https://www.openaire.eu/webinars/">View our training material on a variety of related topics</a></li>
<li><a href="https://www.openaire.eu/contact-us/">Contact us</a></li>
</ul>
</div>

View File

@ -35,7 +35,9 @@ export class MetricsShowComponent implements OnInit {
ngOnInit() {
this.repoId = this.route.snapshot.paramMap.get('id');
setTimeout(() => {
this.getPiwik();
}, 1000);
}

View File

@ -208,20 +208,20 @@ export class DatasourceCreateFormComponent implements OnInit {
createNewRepository(): Repository {
const newRepo: Repository = new Repository();
newRepo.officialName = this.group.get('officialName').value.toString();
newRepo.englishName = this.group.get('englishName').value.toString();
newRepo.officialName = this.group.get('officialName').value;
newRepo.englishName = this.group.get('englishName').value;
newRepo.websiteUrl = this.group.get('websiteUrl').value;
newRepo.logoUrl = this.group.get('logoUrl').value;
newRepo.contactEmail = this.group.get('adminEmail').value;
newRepo.countryName = this.countries.filter(x => x.code === this.group.get('country').value)[0].name;
newRepo.countryCode = this.group.get('country').value;
newRepo.organization = this.group.get('institutionName').value.toString();
newRepo.organization = this.group.get('institutionName').value;
newRepo.latitude = this.group.get('latitude').value;
newRepo.longitude = this.group.get('longtitude').value;
newRepo.timezone = this.group.get('timezone').value;
newRepo.datasourceClass = 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;
newRepo.issn = '';
newRepo.eissn = '';
newRepo.lissn = '';

View File

@ -0,0 +1,61 @@
<div>
<div class="interfaceActionsPanel">
<a *ngIf="!inRegister" (click)="saveInterface()" class="uk-margin-small-right"><i class="far fa-save fa-lg"></i></a>
</div>
<!-- <div>
<h5 *ngIf="currentInterface && oldInterface && currentRepository">{{ currentRepository.datasourceType }} Interface</h5>
</div>-->
</div>
<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="whiteFilm"></div>
</div>
<div *ngIf="group && (!loadingMessage || (loadingMessage===''))" [formGroup]="group">
<div *ngIf="successMessage" class="uk-alert uk-alert-success" style="clear: both">{{ successMessage }}</div>
<div *ngIf="errorMessage" class="uk-alert uk-alert-danger" style="clear: both">{{ errorMessage }}</div>
<div *ngIf="groupErrorMessage" class="uk-alert uk-alert-danger" style="clear: both">{{ groupErrorMessage }}</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(group.get('baseUrl').value)" required (change)="checkIfValid()">
</div>
<div class="form-group">
<!--<label class="control-label">Validation Set (*)</label>-->
<label class="control-label">Validation Set</label>
<div>
<label class="uk-button validationSetRadio" for="selectRadio{{index}}" title="{{ existingValSetDesc.desc }}">
<input id="selectRadio{{index}}" value="select" name="validationSet{{index}}" type="radio" (change)="chooseValSet(true)" checked>
<span>Choose existing</span>
</label>
</div>
<select id="selectValidationSet{{index}}" 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{{index}}" title="{{ customValSetDesc.desc }}">
<input id="customRadio{{index}}" value="custom" name="validationSet{{index}}" type="radio" (change)="chooseValSet(false)">
<span>or a custom one</span>
</label>
</div>
<input id="customValidationSet{{index}}" formControlName="customValidationSet" class="form-control" type="text" (blur)="checkIfValid()">
</div>
<div class="form-group">
<label class="control-label" for="compLvl" title="{{ compatibilityLevelDesc.desc }}">Desired Compatibility Level (*)</label>
<select class="form-control" #compLvl id="compLvl" formControlName="compatibilityLevel" (change)="checkIfValid()">
<option value="">-- none selected --</option>
<option *ngFor="let key of classCodes" value="{{key}}">{{compClasses[key]}}</option>
</select>
</div>
<div>
<label class="uk-form-controls-text control-label">Current Compatibility Level</label>
<div *ngIf="!existingCompLevel">not available</div>
<div *ngIf="existingCompLevel">{{ existingCompLevel }}</div>
</div>
</div>
</div>

View File

@ -0,0 +1,379 @@
import { Component, Injector, OnDestroy, OnInit } from '@angular/core';
import { MyGroup } from '../../../shared/reusablecomponents/forms/my-group.interface';
import { Validators } from '@angular/forms';
import { formErrorRequiredFields, formErrorWasntSaved, formInfoLoading, formSubmitting, formSuccessAddedInterface,
formSuccessUpdatedInterface, invalidCustomBaseUrl, noServiceMessage } from '../../../domain/shared-messages';
import { ValidatorService } from '../../../services/validator.service';
import { RepositoryService } from '../../../services/repository.service';
import { InterfaceInformation, Repository, RepositoryInterface } from '../../../domain/typeScriptClasses';
import { baseUrlDesc, compatibilityLevelDesc, customValSetDesc, Description, existingValSetDesc } from '../../../domain/oa-description';
@Component ({
selector: 'datasource-interface-form',
templateUrl: './datasource-interface-form.component.html'
})
export class DatasourceInterfaceFormComponent extends MyGroup implements OnDestroy, OnInit {
loadingMessage: string;
successMessage: string;
errorMessage: string;
currentRepository: Repository;
oldInterface: boolean;
identifiedBaseUrl: boolean;
existingValSet: boolean;
interfaceInfo: InterfaceInformation;
currentInterface: RepositoryInterface;
valsetList: string[] = [];
existingCompLevel: string;
compClasses: Map<string, string> = new Map<string, string>();
classCodes: string[] = [];
readonly groupDefinition = {
baseUrl: ['', Validators.required],
selectValidationSet: [''],
customValidationSet: [''],
compatibilityLevel: ['']
};
baseUrlDesc: Description = baseUrlDesc;
existingValSetDesc: Description = existingValSetDesc;
customValSetDesc: Description = customValSetDesc;
compatibilityLevelDesc: Description = compatibilityLevelDesc;
constructor(injector: Injector,
private valService: ValidatorService,
private repoService: RepositoryService){
super(injector);
}
ngOnInit() {
this.currentRepository = <Repository>this.otherData;
console.log(`other data is: ${JSON.stringify(this.otherData, null, 2)}`);
if (this.data && this.data.length) {
this.currentInterface = this.data[0];
this.patchData.next({
baseUrl: this.data[0].baseUrl,
selectValidationSet: '',
customValidationSet: '',
compatibilityLevel: this.data[0].desiredCompatibilityLevel
});
this.getInterfaceInfo(this.data[0].baseUrl);
this.data.splice(0, 1);
this.oldInterface = true;
console.log(`received an interface!`);
/*if (this.interfaceInfo && this.interfaceInfo.identified &&
this.currentInterface.desiredCompatibilityLevel) {
this.wasSaved = true;
}*/
}
/* initializes MyGroup parent component and the FormGroup */
super.ngOnInit();
console.log(this.group, this.parentGroup);
this.getCompatibilityClasses();
/* NOT ANYMORE
if (this.currentInterface) {
this.getMyControl('baseUrl').disable();
}
*/
this.existingValSet = true;
this.getMyControl('customValidationSet').disable();
}
chooseValSet(existingValSet: boolean) {
if (existingValSet) {
this.existingValSet = true;
this.getMyControl('selectValidationSet').enable();
this.getMyControl('customValidationSet').disable();
} else {
this.existingValSet = false;
this.getMyControl('selectValidationSet').disable();
this.getMyControl('customValidationSet').enable();
}
this.checkIfValid();
}
getInterfaceInfo(baseUrl: string) {
this.successMessage = '';
this.errorMessage = '';
this.groupErrorMessage = '';
if (baseUrl) {
this.loadingMessage = formInfoLoading;
this.valService.getInterfaceInformation(baseUrl).subscribe(
info => {
this.interfaceInfo = info;
if (this.interfaceInfo.identified) {
this.identifiedBaseUrl = true;
} else {
this.errorMessage = invalidCustomBaseUrl;
}
if (this.interfaceInfo.sets) {
this.valsetList = this.interfaceInfo.sets;
console.log(this.valsetList);
}
},
error => {
console.log(error);
this.loadingMessage = '';
this.identifiedBaseUrl = false;
this.errorMessage = noServiceMessage;
},
() => {
if (this.interfaceInfo && this.interfaceInfo.identified &&
this.currentInterface && this.currentInterface.desiredCompatibilityLevel) {
this.wasSaved = true;
}
if ( this.currentInterface && this.currentInterface.accessParams && this.currentInterface.accessParams['set'] ) {
if ( this.valsetList.some( x => x === this.currentInterface.accessParams['set']) ) {
this.patchData.next({selectValidationSet: this.currentInterface.accessParams['set']});
} else {
this.patchData.next({customValidationSet: this.currentInterface.accessParams['set']});
this.getMyControl('selectValidationSet').enable();
this.getMyControl('customValidationSet').disable();
}
}
this.loadingMessage = '';
}
);
}
}
getCompatibilityClasses() {
this.repoService.getCompatibilityClasses(this.currentRepository.datasourceType).subscribe(
classes => {
this.compClasses = classes;
for (const key in this.compClasses) {
this.classCodes.push(key);
}
},
error => {
this.errorMessage = noServiceMessage;
console.log(error);
},
() => {
if (this.currentInterface) {
console.log(`accessParams is ${JSON.stringify(this.currentInterface.accessParams)}`);
if ( !this.currentInterface.desiredCompatibilityLevel ||
!this.classCodes.some( x => x === this.currentInterface.desiredCompatibilityLevel ) ) {
this.patchData.next({compatibilityLevel: ''});
this.existingCompLevel = this.currentInterface.desiredCompatibilityLevel;
} else {
this.existingCompLevel = this.compClasses[this.currentInterface.desiredCompatibilityLevel];
}
if (this.group.valid ) {
this.exportedData = this.currentInterface;
}
}
}
);
}
saveInterface() {
this.groupErrorMessage = '';
this.errorMessage = '';
this.successMessage = '';
// if decided that valset is required add && this.checkIfValsetWasChosen() to the condition
if (this.group.valid && this.checkIfCompatibilityLevelWasChosen() ) {
if (this.identifiedBaseUrl) {
const baseUrl = this.getMyControl('baseUrl').value;
let valset = '';
if (this.getMyControl('selectValidationSet').enabled) {
valset = this.getMyControl('selectValidationSet').value;
} else {
valset = this.getMyControl('customValidationSet').value;
}
let compLvl = '';
if (this.getMyControl('compatibilityLevel').value) {
compLvl = this.getMyControl('compatibilityLevel').value;
} else {
compLvl = this.existingCompLevel;
}
if (this.currentInterface) {
this.updateCurrent(baseUrl, valset, compLvl);
} else {
this.addCurrent(baseUrl, valset, compLvl);
}
} else {
this.errorMessage = invalidCustomBaseUrl;
}
} else {
this.errorMessage = formErrorRequiredFields;
this.successMessage = '';
}
}
checkIfValsetWasChosen() {
return ( ( this.getMyControl('selectValidationSet').enabled &&
this.getMyControl('selectValidationSet').value !== '' ) ||
( this.getMyControl('customValidationSet').enabled &&
this.getMyControl('customValidationSet').value !== '' ) );
}
checkIfCompatibilityLevelWasChosen() {
return ( (this.getMyControl('compatibilityLevel').value !== '') ||
(this.existingCompLevel && (this.existingCompLevel !== '')) );
}
checkIfValid() {
if (this.inRegister) {
// if decided that valset is required add && this.checkIfValsetWasChosen() to the condition
if ( this.group.valid && this.checkIfCompatibilityLevelWasChosen() ) {
if ( this.identifiedBaseUrl ) {
const baseUrl = this.getMyControl('baseUrl').value;
let valset = '';
if (this.getMyControl('selectValidationSet').enabled) {
valset = this.getMyControl('selectValidationSet').value;
} else {
valset = this.getMyControl('customValidationSet').value;
}
let compLvl = '';
if (this.getMyControl('compatibilityLevel').value) {
this.existingCompLevel = this.compClasses[this.getMyControl('compatibilityLevel').value];
console.log('this.existingCompLevel is', this.existingCompLevel);
compLvl = this.getMyControl('compatibilityLevel').value;
} else {
compLvl = this.existingCompLevel;
}
if (this.currentInterface) {
this.updateCurrent(baseUrl, valset, compLvl);
} else {
this.addCurrent(baseUrl, valset, compLvl);
}
}
} else {
this.exportedData = null;
this.wasSaved = false;
this.successMessage = '';
}
}
}
updateCurrent (baseUrl: string, valset: string, compLvl: string) {
this.successMessage = '';
this.errorMessage = '';
this.currentInterface.baseUrl = baseUrl;
this.currentInterface.accessSet = valset;
this.currentInterface.accessParams['set'] = valset;
this.currentInterface.desiredCompatibilityLevel = compLvl;
this.currentInterface.compliance = compLvl;
this.currentInterface.typology = this.currentRepository.datasourceClass;
this.exportedData = this.currentInterface;
if (!this.inRegister) {
this.loadingMessage = formSubmitting;
this.updateInterface();
} else {
this.loadingMessage = '';
this.wasSaved = true;
this.successMessage = 'The interface will be stored when the registration procedure is completed';
}
}
addCurrent (baseUrl: string, valset: string, compLvl: string) {
this.errorMessage = '';
this.successMessage = '';
this.currentInterface = new RepositoryInterface();
this.currentInterface.baseUrl = baseUrl;
this.currentInterface.accessSet = valset;
this.currentInterface.accessParams = {'set': valset};
this.currentInterface.desiredCompatibilityLevel = compLvl;
this.currentInterface.compliance = compLvl;
this.currentInterface.typology = this.currentRepository.datasourceClass;
this.exportedData = this.currentInterface;
if (!this.inRegister) {
this.loadingMessage = formSubmitting;
this.addInterface();
} else {
this.loadingMessage = '';
this.wasSaved = true;
this.successMessage = 'The interface will be stored when the registration procedure is completed';
}
}
addInterface() {
this.repoService.addInterface(this.currentRepository.datasourceType,
this.currentRepository.id,
this.currentRepository.registeredBy,
this.currentInterface).subscribe(
addedInterface => {
console.log(`addInterface responded ${JSON.stringify(addedInterface)}`);
this.currentInterface = addedInterface;
},
error => {
console.log(error);
this.loadingMessage = '';
this.errorMessage = formErrorWasntSaved;
this.currentInterface = null;
},
() => {
this.loadingMessage = '';
if (this.currentInterface.id) {
this.successMessage = formSuccessAddedInterface;
this.wasSaved = true;
if ( !this.currentInterface.desiredCompatibilityLevel ||
!this.classCodes.some( x => x === this.currentInterface.desiredCompatibilityLevel ) ) {
this.patchData.next({compatibilityLevel: ''});
this.existingCompLevel = this.currentInterface.desiredCompatibilityLevel;
} else {
this.existingCompLevel = this.compClasses[this.currentInterface.desiredCompatibilityLevel];
}
} else {
this.errorMessage = formErrorWasntSaved;
}
}
);
}
updateInterface() {
this.repoService.updateInterface(this.currentRepository.id, this.currentRepository.registeredBy, this.currentInterface).subscribe(
response => {
console.log(`updateRepository responded ${JSON.stringify(response)}`);
if (response) {
this.successMessage = formSuccessUpdatedInterface;
this.wasSaved = true;
} else {
this.errorMessage = formErrorWasntSaved;
}
},
error => {
console.log(error);
this.loadingMessage = '';
this.errorMessage = formErrorWasntSaved;
},
() => {
this.loadingMessage = '';
if ( !this.currentInterface.desiredCompatibilityLevel ||
!this.classCodes.some( x => x === this.currentInterface.desiredCompatibilityLevel ) ) {
this.patchData.next({compatibilityLevel: ''});
this.existingCompLevel = this.currentInterface.desiredCompatibilityLevel;
} else {
this.existingCompLevel = this.compClasses[this.currentInterface.desiredCompatibilityLevel];
}
}
);
}
ngOnDestroy() {
if (this.currentInterface && this.currentInterface.id && this.toBeDeleted) {
this.repoService.deleteInterface(this.currentInterface.id, this.currentRepository.registeredBy).subscribe(
response => console.log(`deleteInterface responded: ${JSON.stringify(response)}`),
error => console.log(error),
() => console.log(`deleted ${this.currentInterface.id}`)
);
} else {
console.log(`deleting empty interface form`);
}
}
}

View File

@ -4,8 +4,12 @@ import { baseUrlDesc, compatibilityLevelDesc, customValSetDesc, Description, exi
import { InterfaceInformation, RepositoryInterface } from '../../../domain/typeScriptClasses';
import { ValidatorService } from '../../../services/validator.service';
import { RepositoryService } from '../../../services/repository.service';
import { formErrorWasntSaved, formInfoLoading, formSubmitting, formSuccessAddedInterface, formSuccessUpdatedInterface, invalidCustomBaseUrl,
nonRemovableInterface, noServiceMessage } from '../../../domain/shared-messages';
import {
formErrorWasntSaved,
formInfoLoading, formSubmitting, formSuccessAddedInterface, formSuccessUpdatedInterface, invalidCustomBaseUrl,
nonRemovableInterface,
noServiceMessage
} from '../../../domain/shared-messages';
export class RepoFields {
id: string;
@ -171,7 +175,7 @@ export class DatasourceNewInterfaceFormComponent implements OnInit {
checkIfValid() {
if (this.formIsValid()) {
if (this.inRegister) {
this.successMessage = 'The interface will be stored when the registration procedure is completed.';
this.successMessage = 'The interface will be stored when the registration procedure is completed';
this.saveInterface();
}
} else {
@ -208,35 +212,9 @@ export class DatasourceNewInterfaceFormComponent implements OnInit {
}
} else {
this.interfaceToExport = null;
this.errorMessage = 'Please make sure all required fields are filled with acceptable values.';
}
}
getCurrentValues() {
let intrf = this.currentInterface;
if (intrf == null) {
intrf = new RepositoryInterface();
}
intrf.baseUrl = this.repoInterfaceForm.get('baseUrl').value;
if (this.existingValSet) {
intrf.accessSet = this.repoInterfaceForm.get('selectValidationSet').value;
intrf.accessParams = {'set': this.repoInterfaceForm.get('selectValidationSet').value};
} else {
intrf.accessSet = this.repoInterfaceForm.get('customValidationSet').value;
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;
return intrf;
}
addCurrent (baseUrl: string, valset: string, compLvl: string) {
const currentInterface = new RepositoryInterface();
currentInterface.baseUrl = baseUrl;
@ -331,7 +309,7 @@ export class DatasourceNewInterfaceFormComponent implements OnInit {
this.errorMessage = '';
this.successMessage = '';
if (this.interfaceID > 0) {
if (this.currentInterface && (this.currentInterface.id !== null) && !this.inRegister) {
if (this.currentInterface && (this.currentInterface.id !== null)) {
this.repoService.deleteInterface(this.currentInterface.id, this.currentRepo.registeredBy).subscribe(
res => console.log(`deleteInterface responded: ${JSON.stringify(res)}`),
er => console.log(er),

View File

@ -280,15 +280,15 @@ export class DatasourceUpdateFormComponent implements OnInit {
} else if (this.updateGroup.get('platformName').value) {
this.selectedRepo.typology = this.updateGroup.get('platformName').value;
}
this.selectedRepo.officialName = this.updateGroup.get('officialName').value.toString();
this.selectedRepo.description = this.updateGroup.get('repoDescription').value.toString();
this.selectedRepo.officialName = this.updateGroup.get('officialName').value;
this.selectedRepo.description = this.updateGroup.get('repoDescription').value;
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.latitude = this.updateGroup.get('latitude').value;
this.selectedRepo.websiteUrl = this.updateGroup.get('websiteUrl').value;
this.selectedRepo.organization = this.updateGroup.get('institutionName').value.toString();
this.selectedRepo.englishName = this.updateGroup.get('englishName').value.toString();
this.selectedRepo.organization = this.updateGroup.get('institutionName').value;
this.selectedRepo.englishName = this.updateGroup.get('englishName').value;
this.selectedRepo.logoUrl = this.updateGroup.get('logoUrl').value;
this.selectedRepo.timezone = this.updateGroup.get('timezone').value;
this.selectedRepo.datasourceClass = this.updateGroup.get('datasourceType').value;

View File

@ -35,7 +35,7 @@
<a href="http://v2.sherpa.ac.uk/opendoar/" target="_blank">
List provided by
<br>
OpenDOAR<i class="fa fa-external-link" style="margin-left: 3px !important;"></i>
OpenDOAR<i class="fa fa-external-link-alt" style="margin-left: 3px !important;"></i>
</a>
</div>
</div>
@ -55,7 +55,7 @@
<a href="http://www.re3data.org" target="_blank">
List provided by
<br>
Re3data<i class="fa fa-external-link" style="margin-left: 3px !important;"></i>
Re3data<i class="fa fa-external-link-alt" style="margin-left: 3px !important;"></i>
</a>
</div>
</div>
@ -72,9 +72,9 @@
Make sure that your Open Access Journal is compatible with the OpenAIRE literature Guidelines.
</h3>
<div class="el-meta uk-margin uk-text-meta" style="z-index:9999; position:relative;">
<a href="https://www.openaire.eu/support/helpdesk" target="_blank">
<a href="https://www.openaire.eu/helpdesk/" target="_blank">
For any questions please contact the OpenAIRE helpdesk.
<i class="fa fa-external-link" style="margin-left: 3px !important;"></i>
<i class="fa fa-external-link-alt" style="margin-left: 3px !important;"></i>
</a>
</div>
</div>
@ -91,9 +91,9 @@
Make sure that your publications aggregator is compatible with the OpenAIRE literature Guidelines.
</h3>
<div class="el-meta uk-margin uk-text-meta" style="z-index:9999; position:relative;">
<a href="https://www.openaire.eu/support/helpdesk" target="_blank">
<a href="http://www.openaire.eu/helpdesk/" target="_blank">
For any questions please contact the OpenAIRE helpdesk.
<i class="fa fa-external-link" style="margin-left: 3px !important;"></i>
<i class="fa fa-external-link-alt" style="margin-left: 3px !important;"></i>
</a>
</div>
</div>

View File

@ -87,6 +87,7 @@ export class RegisterDatasourceSelectExistingComponent implements OnInit {
}
getReposInCountry(i: number) {
setTimeout( () => {
const country = this.countries[i];
console.log(`I got ${country} and ${this.mode}`);
this.countryRepos = [];
@ -121,6 +122,7 @@ export class RegisterDatasourceSelectExistingComponent implements OnInit {
console.log('this.selectedCountry became', JSON.stringify(this.selectedCountry));
}
);
}, 500);
}
getLatestUpdate() {

View File

@ -94,18 +94,15 @@
<div>
<div class="openAIRECompliantLogo">
<h2 class="openAIRECompliantLogoMessage">
We successfully received the request to register your repository to the OpenAIRE compliant list of content providers.
A validation process against the OpenAIRE guidelines compatibility has been started.
You will be informed via email once the process is finished.
<!--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>
<!--<img src="../../../../assets/imgs/3_0ValidatedLogo.png" alt="OpenAireCompliant">-->
<img src="../../../../assets/imgs/3_0ValidatedLogo.png" alt="OpenAireCompliant">
</div>
</div>
<!--<a (click)="downloadLogo()">-->
<!--Download-->
<!--<i class="fa fa-download" style=""></i>-->
<!--</a>-->
<a (click)="downloadLogo()">
Download
<i class="fa fa-download" style=""></i>
</a>
</div>
</div>
</div>

View File

@ -12,7 +12,6 @@ import { DatasourceNewInterfaceFormComponent } from '../sources-forms/datasource
import { from, of } from 'rxjs';
import { concatMap } from 'rxjs/operators';
import {
errorsInInterfaces,
formErrorRegisterRepo,
formInfoLoading, formInterfacesLoading, loadingInterfacesError, loadingRepoError,
noInterfacesSaved
@ -33,7 +32,6 @@ export class RegisterExistingDatasourceComponent implements OnInit {
datasourceId: string;
repo: Repository;
repoInterfaces: RepositoryInterface[] = [];
interfacesToDelete: string[] = [];
/* queryParams are used to follow the steps without refreshing the page
* This was needed for Help Service [which sends back info according to the current router.url].
@ -66,13 +64,8 @@ export class RegisterExistingDatasourceComponent implements OnInit {
ngOnInit() {
if (this.datasourceType && this.currentMode) {
// will execute getStep() every time there is a change in query params
this.route.queryParams.subscribe(
params => {
this.getStep();
}
);
}
}
@ -82,13 +75,13 @@ export class RegisterExistingDatasourceComponent implements OnInit {
const stepName = this.route.snapshot.queryParamMap.get('step');
if (stepName === 'basicInformation') {
if (!this.datasourceId) {
this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=selectDatasource`);
this.navigateToStep('selectDatasource');
} else {
this.currentStep = 1;
}
} else if (stepName === 'interfaces') {
if (!this.repo) {
this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=selectDatasource`);
this.navigateToStep('selectDatasource');
} else {
this.currentStep = 2;
}
@ -96,34 +89,36 @@ export class RegisterExistingDatasourceComponent implements OnInit {
this.currentStep = 3;
}
}
}
navigateToStep(step: string) {
this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=${step}`)
.then( () => {
this.getStep();
this.rightHelperContent.ngOnInit();
this.topHelperContent.ngOnInit();
this.leftHelperContent.ngOnInit();
this.bottomHelperContent.ngOnInit();
}
);
}
moveAStep() {
this.errorMessage = '';
if (this.currentStep === 0) {
if (this.datasourcesByCountry.goToNextStep()) {
console.log(`got datasource with id ${this.datasourceId}`);
this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=basicInformation`);
this.navigateToStep('basicInformation');
}
} else if (this.currentStep === 1) {
this.registerDatasource.updateRepo();
} else if (this.currentStep === 2) {
of(this.getInterfaces()).subscribe(
errors => {
if (errors > 0) {
this.errorMessage = errorsInInterfaces;
window.scrollTo(1, 1);
} else {
() => {
if (this.repoInterfaces.length > 0) {
this.registerRepository();
} else {
this.errorMessage = noInterfacesSaved;
window.scrollTo(1, 1);
}
}
}
);
@ -135,10 +130,10 @@ export class RegisterExistingDatasourceComponent implements OnInit {
if (this.currentStep === 1) {
this.repoInterfaces = [];
this.repo = null;
this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=selectDatasource`);
this.navigateToStep('selectDatasource');
} else if (this.currentStep === 2) {
of(this.getInterfaces()).subscribe(
() => this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=basicInformation`)
() => this.navigateToStep('basicInformation')
);
}
}
@ -157,41 +152,21 @@ export class RegisterExistingDatasourceComponent implements OnInit {
removeInterfaceFromList(i: number) {
const tempArray = this.dataForInterfaceComp;
this.dataForInterfaceComp = [];
if (tempArray[i] && tempArray[i][3] && tempArray[i][3].id) {
this.interfacesToDelete.push(tempArray[i][3].id);
}
tempArray.splice(i, 1);
this.dataForInterfaceComp = tempArray;
console.log(JSON.stringify(this.dataForInterfaceComp));
}
getInterfaces() {
// this.repoInterfaces = [];
let invalidFormsCount = 0;
this.repoInterfaces = [];
for (const el of this.interfacesArray.toArray()) {
const intrf = el.getInterface();
if (intrf) {
if (intrf.id && this.repoInterfaces.some(intr => intr.id === intrf.id)) {
const i = this.repoInterfaces.findIndex( intr => intr.id === intrf.id );
this.repoInterfaces[i] = intrf;
} else {
this.repoInterfaces.push(intrf);
}
console.log(JSON.stringify(intrf));
} else {
invalidFormsCount = invalidFormsCount + 1;
const repo_interface = el.getCurrentValues();
if (repo_interface.id && this.repoInterfaces.some(intr => intr.id === repo_interface.id)) {
const i = this.repoInterfaces.findIndex( intr => intr.id === repo_interface.id );
this.repoInterfaces[i] = repo_interface;
} else {
this.repoInterfaces.push(repo_interface);
}
console.log(JSON.stringify(repo_interface));
}
}
console.log('new interfaces is ', this.repoInterfaces);
return invalidFormsCount;
}
fillInterfacesForms() {
@ -256,7 +231,7 @@ export class RegisterExistingDatasourceComponent implements OnInit {
this.getRepoInterfaces();
} else {
of(this.fillInterfacesForms()).subscribe(
() => this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=interfaces`)
() => this.navigateToStep('interfaces')
);
}
}
@ -281,12 +256,11 @@ export class RegisterExistingDatasourceComponent implements OnInit {
console.log(error);
this.errorMessage = loadingInterfacesError;
this.loadingMessage = '';
window.scrollTo(1, 1);
},
() => {
this.loadingMessage = '';
of(this.fillInterfacesForms()).subscribe(
() => this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=interfaces`)
() => this.navigateToStep('interfaces')
);
}
);
@ -296,6 +270,27 @@ export class RegisterExistingDatasourceComponent implements OnInit {
window.open('../../../../assets/imgs/3_0ValidatedLogo.png', '_blank', 'enabledstatus=0,toolbar=0,menubar=0,location=0');
}
// updateRepository() {
// if (this.repo) {
// this.loadingMessage = 'Saving changes';
// this.errorMessage = '';
// this.repoService.updateRepository(this.repo).subscribe(
// response => {
// console.log(`updateRepository responded: ${response.id}, ${response.registeredBy}`);
// this.repo = response;
// },
// error => {
// console.log(error);
// this.loadingMessage = '';
// this.errorMessage = formErrorRegisterRepo;
// },
// () => {
// this.saveNewInterfaces();
// }
// );
// }
// }
registerRepository() {
if (this.repo) {
this.loadingMessage = 'Saving changes';
@ -309,7 +304,6 @@ export class RegisterExistingDatasourceComponent implements OnInit {
console.log(error);
this.loadingMessage = '';
this.errorMessage = formErrorRegisterRepo;
window.scrollTo(1, 1);
},
() => {
this.saveNewInterfaces();
@ -323,13 +317,7 @@ export class RegisterExistingDatasourceComponent implements OnInit {
from(this.repoInterfaces).pipe(
concatMap(intrf => {
if (intrf.id) {
let req;
if (this.interfacesToDelete.some(id => id === intrf.id)) {
req = this.repoService.deleteInterface(intrf.id, this.repo.registeredBy);
} else {
req = this.repoService.updateInterface(this.repo.id, this.repo.registeredBy, intrf);
}
return req;
return this.repoService.updateInterface(this.repo.id, this.repo.registeredBy, intrf);
} else {
return this.repoService.addInterface(this.repo.datasourceType, this.repo.id, this.repo.registeredBy, intrf);
}
@ -340,14 +328,10 @@ export class RegisterExistingDatasourceComponent implements OnInit {
console.log(er);
this.loadingMessage = '';
this.errorMessage = 'Not all changes were saved. Please try again';
window.scrollTo(1, 1);
},
() => {
this.loadingMessage = '';
this.datasourceId = null;
this.repo = null;
this.repoInterfaces = [];
this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=finish`);
this.navigateToStep('finish');
}
);
}

View File

@ -83,18 +83,15 @@
<div>
<div class="openAIRECompliantLogo">
<h2 class="openAIRECompliantLogoMessage">
We successfully received the request to register your repository to the OpenAIRE compliant list of content providers.
A validation process against the OpenAIRE guidelines compatibility has been started.
You will be informed via email once the process is finished.
<!--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>
<!--<img src="../../../../assets/imgs/3_0ValidatedLogo.png" alt="OpenAireCompliant">-->
<img src="../../../../assets/imgs/3_0ValidatedLogo.png" alt="OpenAireCompliant">
</div>
</div>
<!--<a (click)="downloadLogo()">-->
<!--Download-->
<!--<i class="fa fa-download" style=""></i>-->
<!--</a>-->
<a (click)="downloadLogo()">
Download
<i class="fa fa-download" style=""></i>
</a>
</div>
</div>
</div>

View File

@ -8,7 +8,7 @@ import { DatasourceCreateFormComponent } from '../sources-forms/datasource-creat
import { DatasourceNewInterfaceFormComponent } from '../sources-forms/datasource-new-interface-form.component';
import { from, of } from 'rxjs';
import { concatMap } from 'rxjs/operators';
import { errorsInInterfaces, formErrorRegisterRepo, noInterfacesSaved } from '../../../domain/shared-messages';
import { formErrorRegisterRepo, noInterfacesSaved } from '../../../domain/shared-messages';
@Component({
selector: 'app-register-new-datasource',
@ -21,7 +21,6 @@ export class RegisterNewDatasourceComponent implements OnInit {
datasourceType: string;
repo: Repository = null;
repoInterfaces: RepositoryInterface[] = [];
interfacesToDelete: string[] = [];
/* queryParams are used to follow the steps without refreshing the page
* This was needed for Help Service [which sends back info according to the current router.url].
@ -51,14 +50,8 @@ export class RegisterNewDatasourceComponent implements OnInit {
ngOnInit() {
if (this.datasourceType) {
// will execute getStep() every time there is a change in query params
this.route.queryParams.subscribe(
params => {
this.getStep();
}
);
}
}
@ -70,7 +63,7 @@ export class RegisterNewDatasourceComponent implements OnInit {
this.currentStep = 1;
} else if (stepName === 'interfaces') {
if (!this.repo) {
this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=basicInformation`);
this.navigateToStep('basicInformation');
} else {
this.currentStep = 2;
}
@ -78,11 +71,19 @@ export class RegisterNewDatasourceComponent implements OnInit {
this.currentStep = 3;
}
}
}
navigateToStep(step: string) {
this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=${step}`)
.then( () => {
this.getStep();
this.rightHelperContent.ngOnInit();
this.topHelperContent.ngOnInit();
this.leftHelperContent.ngOnInit();
this.bottomHelperContent.ngOnInit();
}
);
}
moveAStep() {
this.errorMessage = '';
@ -90,17 +91,11 @@ export class RegisterNewDatasourceComponent implements OnInit {
this.registerDatasource.registerDatasource();
} else if (this.currentStep === 2) {
of(this.getInterfaces()).subscribe(
errors => {
if (errors > 0) {
this.errorMessage = errorsInInterfaces;
window.scrollTo(1, 1);
} else {
() => {
if (this.repoInterfaces.length > 0) {
this.addRepository();
} else {
this.errorMessage = noInterfacesSaved;
window.scrollTo(1, 1);
}
}
}
);
@ -111,7 +106,7 @@ export class RegisterNewDatasourceComponent implements OnInit {
this.errorMessage = '';
if (this.currentStep === 2) {
of(this.getInterfaces()).subscribe(
() => this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=basicInformation`)
() => this.navigateToStep('basicInformation')
);
}
}
@ -137,21 +132,13 @@ export class RegisterNewDatasourceComponent implements OnInit {
getInterfaces() {
this.repoInterfaces = [];
let invalidFormsCount = 0;
for (const el of this.interfacesArray.toArray()) {
const intrf = el.getInterface();
if (intrf) {
this.repoInterfaces.push(intrf);
console.log(JSON.stringify(intrf));
} else {
invalidFormsCount = invalidFormsCount + 1;
const repo_interface = el.getCurrentValues();
this.repoInterfaces.push(repo_interface);
console.log(JSON.stringify(repo_interface));
}
}
console.log('new interfaces is ', this.repoInterfaces);
return invalidFormsCount;
}
fillInterfacesForms() {
@ -183,7 +170,7 @@ export class RegisterNewDatasourceComponent implements OnInit {
getCurrentRepo(repo: Repository) {
this.repo = repo;
of (this.fillInterfacesForms()).subscribe(
() => this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=interfaces`)
() => this.navigateToStep('interfaces')
);
}
@ -231,9 +218,7 @@ export class RegisterNewDatasourceComponent implements OnInit {
},
() => {
this.loadingMessage = '';
this.repo = null;
this.repoInterfaces = [];
this.router.navigateByUrl(`/sources/register/${this.datasourceType}?step=finish`);
this.navigateToStep('finish');
}
);
}

View File

@ -1,8 +1,10 @@
import { Component, OnInit, QueryList, ViewChild, ViewChildren } from '@angular/core';
import { Component, OnInit, QueryList, Type, ViewChild, ViewChildren } from '@angular/core';
import { FormBuilder, FormGroup } from '@angular/forms';
import { DatasourceInterfaceFormComponent } from './sources-forms/datasource-interface-form.component';
import { Repository, RepositoryInterface } from '../../domain/typeScriptClasses';
import { RepositoryService } from '../../services/repository.service';
import { ActivatedRoute, Router } from '@angular/router';
import { Description, interfaceFormDesc, } from '../../domain/oa-description';
import { formInfoLoading, loadingRepoError } from '../../domain/shared-messages';
import { DatasourceUpdateFormComponent } from './sources-forms/datasource-update-form.component';
import { ConfirmationDialogComponent } from '../../shared/reusablecomponents/confirmation-dialog.component';
@ -26,6 +28,8 @@ export class SourcesUpdateRepoComponent implements OnInit {
@ViewChild('datasourceUpdateForm') datasourceUpdateForm: DatasourceUpdateFormComponent;
group: FormGroup;
interfaceFormDesc: Description = interfaceFormDesc;
updateDatasourceInterfaces: Type<any> = DatasourceInterfaceFormComponent;
@ViewChildren('interfacesArray') interfacesArray: QueryList<DatasourceNewInterfaceFormComponent>;
dataForInterfaceComp: any[] = [];

View File

@ -18,10 +18,8 @@
<!-- MIDDLE -->
<div class=" uk-width-expand@m">
<repository-tiles #repositoryTiles [parent]="'sourcesUpdate'"
(emitNoRepos)="setNoRepositories($event)"></repository-tiles>
<div *ngIf="!noRepositories" class="row openAIRECompliantLogoDownload">
<repository-tiles [parent]="'sourcesUpdate'"></repository-tiles>
<div class="row openAIRECompliantLogoDownload">
<div class="col-lg-12">
<div class="col-md-12">
<div>

View File

@ -1,5 +1,4 @@
import { Component, OnInit, ViewChild } from '@angular/core';
import { RepositoryTilesComponent } from '../../shared/reusablecomponents/repository-tiles.component';
import { Component, OnInit } from '@angular/core';
@Component ({
selector: 'app-sources-update',
@ -8,17 +7,10 @@ import { RepositoryTilesComponent } from '../../shared/reusablecomponents/reposi
export class SourcesUpdateComponent implements OnInit {
@ViewChild('repositoryTiles') repositoryTiles: RepositoryTilesComponent;
noRepositories: boolean;
constructor() {}
ngOnInit() {}
setNoRepositories(norepos: boolean) {
this.noRepositories = norepos;
}
downloadLogo() {
window.open('../../../assets/imgs/OpenAIRE_validated_icon_medium.png', '_blank', 'enabledstatus=0,toolbar=0,menubar=0,location=0');
}

View File

@ -14,6 +14,7 @@ import { ReusableComponentsModule } from '../../shared/reusablecomponents/reusab
import { SourcesUpdateRepoComponent } from './sources-update-repo.component';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { RepoFilter } from './sourcesPipes';
import { DatasourceInterfaceFormComponent } from './sources-forms/datasource-interface-form.component';
import { DatasourceNewInterfaceFormComponent } from './sources-forms/datasource-new-interface-form.component';
import { SrDataComponent } from './sources-register/sr-data.component';
import { RegisterDatasourceSelectExistingComponent } from './sources-register/register-datasource-select-existing.component';
@ -33,6 +34,9 @@ import { RegisterExistingDatasourceComponent } from './sources-register/register
SourcesRouting,
ReusableComponentsModule
],
entryComponents : [
DatasourceInterfaceFormComponent
],
declarations: [
SourcesComponent,
SourcesRegisterComponent,
@ -47,6 +51,7 @@ import { RegisterExistingDatasourceComponent } from './sources-register/register
RegisterDatasourceSelectExistingComponent,
DatasourceUpdateFormComponent,
DatasourceCreateFormComponent,
DatasourceInterfaceFormComponent,
DatasourceNewInterfaceFormComponent,
RepoFilter // a pipe that searches for string in repository name
]

View File

@ -140,8 +140,10 @@ export class AuthenticationService {
public getUserEmail() {
if (this.isLoggedIn) {
console.log('bommin');
return sessionStorage.getItem('email');
} else {
console.log('bommout');
return '';
}
}

View File

@ -20,7 +20,8 @@ import { typologies } from '../domain/typologies';
const headerOptions = {
headers : new HttpHeaders().set('Content-Type', 'application/json')
.set('Accept', 'application/json'),
.set('Accept', 'application/json; charset=utf-8')
.set('Accept-Charset', 'charset=utf-8'),
withCredentials: true
};

View File

@ -1,52 +0,0 @@
/*#footer#3 {*/
/*margin-right: 280px;*/
/*}*/
/*#footer#9 a, #footer#11 a, #footer#13 a {*/
/*color: #dedede;*/
/*line-height: 22px;*/
/*padding: 2px 0;*/
/*}*/
#footer\#9 a, #footer\#11 a, #footer\#13 a {
color: #dedede;
line-height: 22px;
padding: 2px 0;
}
#footer\#9 a:hover,#footer\#11 a:hover, #footer\#13 a:hover {
color: rgba(255, 255, 255, 0.5);
}
@media all and (min-width: 640px) {
#footer\#3 {
margin-right: 280px;
}
}
#footer\#7 a {
color: rgba(255, 255, 255, 0.7) !important;
text-align: left;
font-size: 14px;
}
.uk-block-secondary {
background: #003D8C none repeat scroll 0 0;
}
.uk-block-secondary:not(.tm-block-texture) {
border-color: #003D8C;
}
.tm-bottom-d {
color: #ffffff;
font-size: 10px;
letter-spacing: 4px;
text-transform: uppercase;
}
.newsletter .uk-icon {
padding-left: 0px;
padding-bottom: 0px;
}

View File

@ -6,36 +6,28 @@
<div class="uk-margin-small uk-margin-remove-top uk-text-left@s uk-text-center">
<img src="../../../assets/imgs/Logo_Horizontal_white_small-74927fe1.png" data-width="126" data-height="30" class="el-image" alt="OpenAIRE">
</div>
<!--div id="footer#5" class="uk-margin uk-text-left@s uk-text-center">
<img src="assets/commission.jpg" sizes="(min-width: 50px) 50px" data-width="427" data-height="285" class="el-image" alt="European Commission">
</div-->
<div class="uk-margin"><img style="margin-right: 8px; float: left;" src="../../../assets/imgs/commission.jpg" alt="flag black white low" width="50" height="33"><span style="font-size: 8pt; line-height: 0.7!important;">OpenAIRE-Advance receives funding from the European Union's Horizon 2020 Research and Innovation programme under Grant Agreement No. 777541.</span></div>
<div id="footer#5" class="uk-margin uk-text-left@s uk-text-center">
<img src="../../../assets/imgs/commission.jpg" sizes="(min-width: 50px) 50px" data-width="427" data-height="285" class="el-image" alt="European Commission">
</div>
<div id="footer#6" class="newsletter uk-margin uk-margin-remove-bottom uk-text-left@s uk-text-center uk-panel">
<div class="uk-child-width-expand uk-grid-small uk-grid" uk-grid="">
<div class="uk-width-auto@m uk-first-column"><a class="el-link" href="/newsletter/listing">
<span class="el-image uk-icon" uk-icon="icon: rss; ratio: 1;">
<!--<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"> <circle cx="3.12" cy="16.8" r="1.85"></circle> <path fill="none" stroke="#000" stroke-width="1.1" d="M1.5,8.2 C1.78,8.18 2.06,8.16 2.35,8.16 C7.57,8.16 11.81,12.37 11.81,17.57 C11.81,17.89 11.79,18.19 11.76,18.5"></path> <path fill="none" stroke="#000" stroke-width="1.1" d="M1.5,2.52 C1.78,2.51 2.06,2.5 2.35,2.5 C10.72,2.5 17.5,9.24 17.5,17.57 C17.5,17.89 17.49,18.19 17.47,18.5"></path></svg>-->
</span></a></div> <div>
<h5 class="el-title uk-margin uk-h5"> Newsletter </h5>
</div>
</div>
<h5 class="el-title uk-margin uk-h5">
Newsletter
</h5>
<a target="_blank" href="https://www.openaire.eu/newsletter/view" class="el-link">
<span class="el-image uk-icon">
<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<circle cx="3.12" cy="16.8" r="1.85"></circle>
<path fill="none" stroke="#000" stroke-width="1.1" d="M1.5,8.2 C1.78,8.18 2.06,8.16 2.35,8.16 C7.57,8.16 11.81,12.37 11.81,17.57 C11.81,17.89 11.79,18.19 11.76,18.5"></path>
<path fill="none" stroke="#000" stroke-width="1.1" d="M1.5,2.52 C1.78,2.51 2.06,2.5 2.35,2.5 C10.72,2.5 17.5,9.24 17.5,17.57 C17.5,17.89 17.49,18.19 17.47,18.5"></path>
</svg>
</span>
</a>
</div>
<div id="footer#7" class="newsletter uk-margin-small uk-margin-remove-top uk-text-left@s uk-text-center uk-panel">
<div class="acymailing_module" id="acymailing_module_formAcymailing60611">
<div class="acymailing_mootoolsbutton" id="acymailing_toggle_formAcymailing60611">
<p><a class="acymailing_togglemodule" id="acymailing_togglemodule_formAcymailing60611" target="_blank" href="https://www.openaire.eu/past-newsletters/listing">Subscribe</a></p>
<p><a class="acymailing_togglemodule" id="acymailing_togglemodule_formAcymailing60611" target="_blank" href="https://www.openaire.eu/#subscribe">Subscribe</a></p>
</div>
</div>
@ -56,7 +48,7 @@
</svg>
</a>
</div>
<div class="">
<div>
<a href="http://www.linkedin.com/groups/OpenAIRE-3893548" target="_blank" class="el-link uk-icon-button uk-icon">
<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path d="M5.77,17.89 L5.77,7.17 L2.21,7.17 L2.21,17.89 L5.77,17.89 L5.77,17.89 Z M3.99,5.71 C5.23,5.71 6.01,4.89 6.01,3.86 C5.99,2.8 5.24,2 4.02,2 C2.8,2 2,2.8 2,3.85 C2,4.88 2.77,5.7 3.97,5.7 L3.99,5.7 L3.99,5.71 L3.99,5.71 Z"></path>
@ -64,7 +56,7 @@
</svg>
</a>
</div>
<div class="">
<div>
<a href="http://www.slideshare.net/OpenAIRE_eu" target="_blank" class="el-link uk-icon-button uk-icon">
<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<line fill="none" stroke="#000" stroke-width="1.1" x1="13.4" y1="14" x2="6.3" y2="10.7"></line>
@ -75,7 +67,7 @@
</svg>
</a>
</div>
<div class="">
<div>
<a href="https://www.youtube.com/channel/UChFYqizc-S6asNjQSoWuwjw" target="_blank" class="el-link uk-icon-button uk-icon">
<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path d="M15,4.1c1,0.1,2.3,0,3,0.8c0.8,0.8,0.9,2.1,0.9,3.1C19,9.2,19,10.9,19,12c-0.1,1.1,0,2.4-0.5,3.4c-0.5,1.1-1.4,1.5-2.5,1.6 c-1.2,0.1-8.6,0.1-11,0c-1.1-0.1-2.4-0.1-3.2-1c-0.7-0.8-0.7-2-0.8-3C1,11.8,1,10.1,1,8.9c0-1.1,0-2.4,0.5-3.4C2,4.5,3,4.3,4.1,4.2 C5.3,4.1,12.6,4,15,4.1z M8,7.5v6l5.5-3L8,7.5z"></path>
@ -101,7 +93,6 @@
<div id="footer#12" class="uk-width-medium uk-text-left@s uk-text-center uk-panel">
<h3 class="el-title uk-h6">Support</h3>
<ul class="uk-nav uk-nav-default uk-nav-parent-icon uk-nav-accordion" uk-nav="">
<li><a href="https://www.openaire.eu/contact-noads">NOADs</a></li>
<li><a target="_blank" href="https://www.openaire.eu/guides">Guides</a></li>
<li><a target="_blank" href="https://www.openaire.eu/faqs">FAQs</a></li>
<li><a target="_blank" href="https://www.openaire.eu/frontpage/webinars">Webinars</a></li>
@ -116,7 +107,6 @@
<li><a target="_blank" href="https://www.openaire.eu/news/">News</a></li>
<li><a target="_blank" href="https://www.openaire.eu/events">Events</a></li>
<li><a target="_blank" href="https://www.openaire.eu/blogs/magazine">Blogs</a></li>
<li><a href="https://www.openaire.eu/newsletter/listing">Newsletters</a></li>
<li><a target="_blank" href="https://www.openaire.eu/documents">Documents</a></li>
</ul>
</div>
@ -141,7 +131,7 @@
<div class="uk-width-expand@m">
<div id="footer#22" class=" uk-text-small uk-margin uk-margin-remove-bottom uk-text-center@m uk-text-center uk-text-lead">
<a href="http://creativecommons.org/licenses/by/4.0/" rel="license">
<img src="/images/Icons/cc.svg" uk-svg="" hidden="true">
<!--<img src="/images/Icons/cc.svg" uk-svg="" hidden="true">-->
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24" class=" uk-svg">
<title></title>
<g data-name="Creative Commons" id="Creative_Commons">
@ -150,7 +140,7 @@
<path d="M18.87,10a3.5,3.5,0,1,0,0,4" style="fill:none;stroke:#ffffff;stroke-linecap:round;stroke-linejoin:round"></path>
</g>
</svg>
&nbsp;<img src="/images/Icons/cc-by.svg" uk-svg="" hidden="true">
<!--<img src="/images/Icons/cc-by.svg" uk-svg="" hidden="true">-->
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="24" height="24" class=" uk-svg">
<title></title>
<g id="Attribution">
@ -168,7 +158,7 @@
<div class="uk-width-small@m">
<div class="uk-margin uk-margin-remove-top uk-margin-remove-bottom uk-text-right@m uk-text-center">
<a href="#" uk-totop="" uk-scroll="" class="uk-totop uk-icon">
<!--<svg width="18" height="10" viewBox="0 0 18 10" xmlns="http://www.w3.org/2000/svg" icon="totop" ratio="1"><polyline fill="none" stroke="#000" stroke-width="1.2" points="1 9 9 1 17 9 "></polyline></svg>-->
</a>
</div>
</div>

View File

@ -6,7 +6,6 @@ import { Component, OnInit } from '@angular/core';
@Component({
selector: 'footer',
templateUrl: './footer.component.html',
styleUrls: ["./footer.component.css"]
})
export class FooterComponent implements OnInit {

View File

@ -1,4 +1,4 @@
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { Component, Input, OnInit } from '@angular/core';
import { Repository } from '../../domain/typeScriptClasses';
import { RepositoryService } from '../../services/repository.service';
import { AuthenticationService } from '../../services/authentication.service';
@ -17,7 +17,6 @@ export class RepositoryTilesComponent implements OnInit {
loadingMessage: string;
@Input() parent: string = '';
@Output() emitNoRepos: EventEmitter<boolean> = new EventEmitter<boolean>();
constructor(private authService: AuthenticationService,
private repoService: RepositoryService) {}
@ -49,7 +48,6 @@ export class RepositoryTilesComponent implements OnInit {
this.loadingMessage = '';
if (!this.reposOfUser || !this.reposOfUser.length) {
this.warningMessage = loadingUserRepoInfoEmpty;
this.emitNoRepos.emit(true);
}
}
);

View File

@ -421,7 +421,7 @@ body {
font-weight: normal;
line-height: 30px;
padding-bottom: 10px;
padding-left: 20px;
padding-left: 5px;
padding-top: 3px;
text-transform: none;
/*color: #829333;

View File

@ -1,6 +1,6 @@
export const environment = {
production: true,
API_ENDPOINT: '/api',
API_ENDPOINT: '/uoa-repository-manager-service',
FAQ_ENDPOINT: '/uoa-admin-tools/api',
FAQ_HOMEPAGE: '/uoa-admin-tools/dashboard'
};