Project

General

Profile

« Previous | Next » 

Revision 51581

fixed checking if at least one interface was saved

View differences:

modules/uoa-repository-dashboard-gui/trunk/app/pages/sources/sources-register/sr-data.component.html
72 72
                    <div *ngIf="errorMessage" class="uk-alert uk-alert-danger">{{ errorMessage }}</div>
73 73
                    <div *ngIf="showInterfaces && repoInterfaces">
74 74
                      <form [formGroup]="group">
75
                        <form-repeat [component]="updateDatasourceInterfaces"
75
                        <form-repeat #interfaceFormArray
76
                                     [component]="updateDatasourceInterfaces"
76 77
                                     [parentGroup]="group"
77 78
                                     [description]="interfaceFormDesc"
78 79
                                     [name]="'repository-interfaces'"
modules/uoa-repository-dashboard-gui/trunk/app/pages/sources/sources-register/sr-journal.component.html
45 45
            <div class="content">
46 46
              <div>
47 47
                <div class="animated fadeInRight stepContent">
48
                  <div *ngIf="errorMessage" class="uk-alert uk-alert-warning">{{errorMessage}}</div>
48 49
                  <div>
49 50
                    <datasource-create-form *ngIf="showForm"
50 51
                                            #registerJournal
......
52 53

  
53 54
                    <div *ngIf="showInterfaces">
54 55
                      <form *ngIf="repo" [formGroup]="group">
55
                        <form-repeat [component]="addDatasourceInterfaces"
56
                        <form-repeat #interfaceFormArray
57
                                     [component]="addDatasourceInterfaces"
56 58
                                     [parentGroup]="group"
57 59
                                     [description]="interfaceFormDesc"
58 60
                                     [name]="'repository-interfaces'"
modules/uoa-repository-dashboard-gui/trunk/app/pages/sources/sources-register/sr-data.component.ts
10 10
import { Description, interfaceFormDesc } from '../../../domain/oa-description';
11 11
import { FormBuilder, FormGroup } from '@angular/forms';
12 12
import { RepositoryService } from '../../../services/repository.service';
13
import { formInfoLoading, loadingRepoError } from '../../../domain/shared-messages';
13
import {formInfoLoading, loadingRepoError, noInterfacesSaved} from '../../../domain/shared-messages';
14 14
import {ActivatedRoute, Params, Router} from "@angular/router";
15
import {MyArray} from "../../../shared/reusablecomponents/forms/my-array.interface";
15 16

  
16 17
@Component ({
17 18
  selector: 'app-sr-data',
......
46 47
  @ViewChild('updateDatasource')
47 48
  public updateDatasource: DatasourceUpdateFormComponent;
48 49

  
50
  @ViewChild('interfaceFormArray')
51
  public interfaceFormArray: MyArray;
52

  
49 53
  group: FormGroup;
50 54
  interfaceFormDesc: Description = interfaceFormDesc;
51 55
  updateDatasourceInterfaces: Type<any> = DatasourceInterfaceFormComponent;
......
74 78
    } else if(this.showForm) {
75 79
        this.updateDatasource.updateRepo();
76 80
    } else if(this.showInterfaces) {
81
      if (this.interfaceFormArray.checkIfOneElementExists()) {
77 82
        this.setQueryParam('finish');
78 83
        this.showInterfaces = false;
79 84
        this.showFinish = true;
80 85
        this.step4 = 'active';
86
      } else {
87
        this.errorMessage = noInterfacesSaved;
88
      }
81 89
    }
82 90
  }
83 91

  
......
140 148
  getRepoInterfaces() {
141 149
    this.repoService.getRepositoryInterface(this.datasourceId).subscribe(
142 150
      interfaces => {
143
        this.repoInterfaces = interfaces;
144
        console.log(this.repoInterfaces.length);
151
        this.repoInterfaces = interfaces.sort( function(a, b) {
152
          if (a.id<b.id) {
153
            return -1;
154
          } else if (a.id>b.id) {
155
            return 1;
156
          } else {
157
            return 0;
158
          }
159
        });
160
        console.log(`the number of interfaces is ${this.repoInterfaces.length}`);
145 161
      },
146 162
      error => console.log(error),
147 163
      () => {
modules/uoa-repository-dashboard-gui/trunk/app/pages/sources/sources-register/sr-journal.component.ts
5 5
import { Repository } from '../../../domain/typeScriptClasses';
6 6
import { DatasourceCreateFormComponent } from '../sources-forms/datasource-create-form.component';
7 7
import {ActivatedRoute, Params, Router} from "@angular/router";
8
import {MyArray} from "../../../shared/reusablecomponents/forms/my-array.interface";
9
import {noInterfacesSaved} from "../../../domain/shared-messages";
8 10

  
9 11
@Component ({
10 12
  selector: 'app-sr-journal',
......
12 14
})
13 15

  
14 16
export class SrJournalComponent implements OnInit {
17
  errorMessage: string;
18

  
15 19
  showForm: boolean;
16 20
  showInterfaces: boolean;
17 21
  showFinish: boolean;
......
21 25
  @ViewChild ('registerJournal')
22 26
  registerJournal: DatasourceCreateFormComponent;
23 27

  
28
  @ViewChild('interfaceFormArray')
29
  public interfaceFormArray: MyArray;
30

  
24 31
  group: FormGroup;
25 32
  interfaceFormDesc: Description = interfaceFormDesc;
26 33
  addDatasourceInterfaces: Type<any> = DatasourceInterfaceFormComponent;
......
47 54
    if (this.showForm) {
48 55
      this.registerJournal.registerDatasource();
49 56
    } else if (this.showInterfaces) {
50
      this.setQueryParam('finish');
51
      this.showInterfaces = false;
52
      this.showFinish = true;
53
      this.step3 = 'active';
57
      if (this.interfaceFormArray.checkIfOneElementExists()) {
58
        this.setQueryParam('finish');
59
        this.showInterfaces = false;
60
        this.showFinish = true;
61
        this.step3 = 'active';
62
      } else {
63
        this.errorMessage = noInterfacesSaved;
64
      }
54 65
    }
55 66
  }
56 67

  
57 68
  moveBackAStep(){
69
    this.errorMessage = '';
58 70
    if (this.showInterfaces) {
59 71
      this.setQueryParam('basicInformation');
60 72
      this.showForm = true;
modules/uoa-repository-dashboard-gui/trunk/app/pages/sources/sources-register/register-datasource-shareable.component.html
41 41
                  <div class="form-group"
42 42
                       *ngFor="let repo of countryRepos | repoFilter: searchBox">
43 43
                    <label for="{{ repo.id }}"
44
                           class="uk-button uk-button-default uk-link-muted"
44
                           class="uk-button uk-link-muted visible_uk_links"
45 45
                           style="display: block; text-align: left;">
46 46
                      <input type="radio" value="{{ repo.id }}" id="{{ repo.id }}" name="repositories" (change)="onChooseRepository(repo.id)" [disabled]="repo.registered">
47 47
                      <span>
modules/uoa-repository-dashboard-gui/trunk/app/pages/sources/sources-register/sr-literature.component.html
72 72
                    <div *ngIf="errorMessage" class="uk-alert uk-alert-danger">{{ errorMessage }}</div>
73 73
                    <div *ngIf="showInterfaces && repoInterfaces">
74 74
                      <form [formGroup]="group">
75
                        <form-repeat [component]="updateDatasourceInterfaces"
75
                        <form-repeat #interfaceFormArray
76
                                     [component]="updateDatasourceInterfaces"
76 77
                                     [parentGroup]="group"
77 78
                                     [description]="interfaceFormDesc"
78 79
                                     [name]="'repository-interfaces'"
modules/uoa-repository-dashboard-gui/trunk/app/pages/sources/sources-register/sr-aggregator.component.html
53 53

  
54 54
                    <div *ngIf="showInterfaces && repo">
55 55
                      <form [formGroup]="group">
56
                        <form-repeat [component]="addDatasourceInterfaces"
56
                        <form-repeat #interfaceFormArray
57
                                     [component]="addDatasourceInterfaces"
57 58
                                     [parentGroup]="group"
58 59
                                     [description]="interfaceFormDesc"
59 60
                                     [name]="'repository-interfaces'"
modules/uoa-repository-dashboard-gui/trunk/app/pages/sources/sources-register/sr-literature.component.ts
10 10
import { FormBuilder, FormGroup } from '@angular/forms';
11 11
import { Description, interfaceFormDesc } from '../../../domain/oa-description';
12 12
import { RepositoryService } from '../../../services/repository.service';
13
import { formInfoLoading, loadingRepoError } from '../../../domain/shared-messages';
13
import {formInfoLoading, loadingRepoError, noInterfacesSaved} from '../../../domain/shared-messages';
14 14
import {ActivatedRoute, Params, Router} from "@angular/router";
15
import {MyArray} from "../../../shared/reusablecomponents/forms/my-array.interface";
15 16

  
16 17
@Component ({
17 18
  selector:'app-sr-literature',
......
45 46
  @ViewChild('updateDatasource')
46 47
  public updateDatasource: DatasourceUpdateFormComponent;
47 48

  
49
  @ViewChild('interfaceFormArray')
50
    public interfaceFormArray: MyArray;
51

  
48 52
  group: FormGroup;
49 53
  interfaceFormDesc: Description = interfaceFormDesc;
50 54
  updateDatasourceInterfaces: Type<any> = DatasourceInterfaceFormComponent;
......
62 66
  }
63 67

  
64 68
  moveAStep(){
69
    this.errorMessage = '';
65 70
    if(this.showRepositories) {
66 71
      if (this.datasourcesByCountry.goToNextStep()) {
67 72
        this.setQueryParam('basicInformation');
......
73 78
    } else if(this.showForm) {
74 79
        this.updateDatasource.updateRepo();
75 80
    } else if(this.showInterfaces) {
81
      if (this.interfaceFormArray.checkIfOneElementExists()) {
76 82
        this.setQueryParam('finish');
77 83
        this.showInterfaces = false;
78 84
        this.showFinish = true;
79 85
        this.step4 = 'active';
86
      } else {
87
        this.errorMessage = noInterfacesSaved;
88
      }
80 89
    }
81 90
  }
82 91

  
......
139 148
  getRepoInterfaces() {
140 149
    this.repoService.getRepositoryInterface(this.datasourceId).subscribe(
141 150
      interfaces => {
142
        this.repoInterfaces = interfaces;
143
        console.log(this.repoInterfaces.length);
151
        this.repoInterfaces = interfaces.sort( function(a,b) {
152
          if(a.id<b.id){
153
            return -1;
154
          } else if(a.id>b.id){
155
            return 1;
156
          } else {
157
            return 0;
158
          }
159
        });
160
        console.log(`the number of interfaces is ${this.repoInterfaces.length}`);
144 161
      },
145 162
      error => console.log(error),
146 163
      () => {
modules/uoa-repository-dashboard-gui/trunk/app/pages/sources/sources-register/sr-aggregator.component.ts
5 5
import { Repository } from '../../../domain/typeScriptClasses';
6 6
import { DatasourceCreateFormComponent } from '../sources-forms/datasource-create-form.component';
7 7
import {ActivatedRoute, Params, Router} from "@angular/router";
8
import {MyArray} from "../../../shared/reusablecomponents/forms/my-array.interface";
9
import {noInterfacesSaved} from "../../../domain/shared-messages";
8 10

  
9 11
@Component ({
10 12
  selector: 'sr-aggregator',
......
12 14
})
13 15

  
14 16
export class SrAggregatorComponent implements OnInit {
17
  errorMessage: string;
18

  
15 19
  showForm: boolean;
16 20
  showInterfaces: boolean;
17 21
  showFinish: boolean;
......
30 34
  @ViewChild ('registerAggregator')
31 35
  registerAggregator: DatasourceCreateFormComponent;
32 36

  
37
  @ViewChild('interfaceFormArray')
38
  public interfaceFormArray: MyArray;
39

  
33 40
  group: FormGroup;
34 41
  interfaceFormDesc: Description = interfaceFormDesc;
35 42
  addDatasourceInterfaces: Type<any> = DatasourceInterfaceFormComponent;
......
48 55
    if (this.showForm) {
49 56
      this.registerAggregator.registerDatasource();
50 57
    } else if (this.showInterfaces) {
51
      this.setQueryParam('finish');
52
      this.showInterfaces = false;
53
      this.showFinish = true;
54
      this.step3 = 'active';
58
      if (this.interfaceFormArray.checkIfOneElementExists()) {
59
        this.setQueryParam('finish');
60
        this.showInterfaces = false;
61
        this.showFinish = true;
62
        this.step3 = 'active';
63
      } else {
64
        this.errorMessage = noInterfacesSaved;
65
      }
55 66
    }
56 67
  }
57 68

  
modules/uoa-repository-dashboard-gui/trunk/app/pages/sources/sources-forms/datasource-interface-form.component.ts
58 58
  ngOnInit() {
59 59
    this.currentRepository = <Repository>this.otherData;
60 60
    this.getCompatibilityClasses();
61
    console.log(`other data is: ${JSON.stringify(this.otherData)}`);
61
    console.log(`other data is: ${JSON.stringify(this.otherData,null,2)}`);
62 62
    if (this.data && this.data.length) {
63 63
      this.currentInterface = this.data[0];
64 64
      this.patchData.next({
......
71 71
      this.data.splice(0,1);
72 72
      this.oldInterface = true;
73 73
      console.log(`received an interface!`);
74
      if (this.currentInterface.baseUrl && this.currentInterface.accessParams['set'] && this.currentInterface.desiredCompatibilityLevel) {
75
        this.wasSaved = true;
76
      }
74 77
    }
75 78

  
76 79
    /* initializes MyGroup parent component and the FormGroup */
......
105 108
  getInterfaceInfo(baseUrl: string) {
106 109
    this.successMessage = '';
107 110
    this.errorMessage = '';
111
    this.groupErrorMessage = '';
108 112
    if (baseUrl) {
109 113
      this.loadingMessage = formInfoLoading;
110 114
      this.valService.getInterfaceInformation(baseUrl).subscribe(
......
201 205
        console.log(`updateRepository responded ${JSON.stringify(response)}`);
202 206
        if (response) {
203 207
          this.successMessage = formSuccessUpdatedInterface;
208
          this.wasSaved = true;
204 209
        } else {
205 210
          this.errorMessage = formErrorWasntSaved;
206 211
        }
......
240 245
      () => {
241 246
        if (this.currentInterface.id) {
242 247
          this.successMessage = formSuccessAddedInterface;
248
          this.wasSaved = true;
243 249
        } else {
244 250
          this.errorMessage = formErrorWasntSaved;
245 251
        }
modules/uoa-repository-dashboard-gui/trunk/app/pages/sources/sources-forms/datasource-update-form.component.html
12 12
      Basic information
13 13
    </h4>
14 14
  </div>
15
  <form-inline [description]="softwarePlatformDesc" [valid]="updateGroup.get('softwarePlatform').valid || !formSubmitted">
15
  <form-inline [description]="softwarePlatformDesc" [valid]="updateGroup.get('softwarePlatform').valid">
16 16
    <select formControlName="softwarePlatform" class="form-control">
17 17
<!--      <option value="" selected>[Other] (enter name below)</option> RESTORE AFTER getTypologies begins to work-->
18 18
      <option *ngFor="let platform of typologies" value="{{ platform.value }}">{{ platform.name }}</option>
19 19
    </select>
20 20
  </form-inline>
21
  <form-inline [description]="platformNameDesc" [valid]="updateGroup.get('platformName').valid || !formSubmitted">
21
  <form-inline [description]="platformNameDesc" [valid]="updateGroup.get('platformName').valid">
22 22
    <span *ngIf="updateGroup.get('platformName').touched && updateGroup.get('platformName').value"
23 23
          class="help-block inline"
24 24
          style="margin-top: 0px; margin-bottom: 0px; ">This value will be used as the platform for your repository</span>
25 25
    <input formControlName="platformName" class="form-control" style="" type="text">
26 26
  </form-inline>
27
  <form-inline [description]="officialNameDesc" >
27
  <form-inline [description]="officialNameDesc" [valid]="updateGroup.get('officialName').valid">
28 28
    <input formControlName="officialName" class="form-control" style="" type="text">
29 29
  </form-inline>
30 30
  <div *ngIf="selectedRepo.datasourceType == 'journal'">
31
    <form-inline [description]="issnDesc" [valid]="updateGroup.get('issn').valid || !formSubmitted">
32
      <span *ngIf="updateGroup.get('issn').invalid && updateGroup.get('issn').touched && updateGroup.get('issn').dirty"
33
            class="help-block inline uk-text-danger"
34
            style="margin-top: 0px; margin-bottom: 0px; ">Issn needs to be of the form: "1111-1111"</span>
35
      <input formControlName="issn" class="form-control" type="text" (focus)="updateGroup.get('issn').markAsUntouched()" (blur)="updateGroup.get('issn').updateValueAndValidity()">
31
    <form-inline [description]="issnDesc" [valid]="updateGroup.get('issn').valid">
32
      <input formControlName="issn" class="form-control" type="text">
36 33
    </form-inline>
37 34
    <form-inline [description]="eissnDesc" [valid]="updateGroup.get('eissn').valid">
38
      <span *ngIf="updateGroup.get('eissn').invalid && updateGroup.get('eissn').touched && updateGroup.get('eissn').dirty"
39
            class="help-block inline uk-text-danger"
40
            style="margin-top: 0px; margin-bottom: 0px; ">Eissn needs to be of the form: "1111-1111"</span>
41
      <input formControlName="eissn"class="form-control" type="text" (focus)="updateGroup.get('eissn').markAsUntouched()" (blur)="updateGroup.get('eissn').updateValueAndValidity()">
35
      <input formControlName="eissn" class="form-control" type="text">
42 36
    </form-inline>
43 37
    <form-inline [description]="lissnDesc" [valid]="updateGroup.get('lissn').valid">
44
      <span *ngIf="updateGroup.get('lissn').invalid && updateGroup.get('lissn').touched && updateGroup.get('lissn').dirty"
45
            class="help-block inline uk-text-danger"
46
            style="margin-top: 0px; margin-bottom: 0px;">Lissn needs to be of the form: "1111-1111"</span>
47
      <input formControlName="lissn"class="form-control" type="text" (focus)="updateGroup.get('lissn').markAsUntouched()" (blur)="updateGroup.get('lissn').updateValueAndValidity()">
38
      <input formControlName="lissn" class="form-control" type="text">
48 39
    </form-inline>
49 40
  </div>
50
  <form-inline [description]="repoDescriptionDesc" [valid]="updateGroup.get('repoDescription').valid || !formSubmitted">
41
  <form-inline [description]="repoDescriptionDesc" [valid]="updateGroup.get('repoDescription').valid">
51 42
    <textarea formControlName="repoDescription" class="form-control"></textarea>
52 43
  </form-inline>
53
  <form-inline [description]="countryDesc" [valid]="updateGroup.get('country') || !formSubmitted">
44
  <form-inline [description]="countryDesc" [valid]="updateGroup.get('country')">
54 45
    <select formControlName="country" class="form-control">
55 46
      <option value="">-- none selected --</option>
56 47
      <option *ngFor="let country of countries" value="{{country.code}}" title="{{country.name}}">{{ country.name }}</option>
57 48
    </select>
58 49
  </form-inline>
59
  <form-inline [description]="longtitudeDesc" [valid]="updateGroup.get('longtitude').valid || !formSubmitted">
60
    <span *ngIf="updateGroup.get('longtitude').invalid && updateGroup.get('longtitude').touched && updateGroup.get('longtitude').dirty"
61
          class="help-block inline"
62
          style="margin-top: 0px; margin-bottom: 0px; ">Invalid Longtitude</span>
63
    <input formControlName="longtitude" class="form-control" type="number" step="0.05" (focus)="updateGroup.get('longtitude').markAsUntouched()" (blur)="updateGroup.get('longtitude').updateValueAndValidity()">
50
  <form-inline [description]="longtitudeDesc" [valid]="updateGroup.get('longtitude').valid">
51
    <input formControlName="longtitude" type="text" class="form-control">
64 52
  </form-inline>
65
  <form-inline [description]="latitudeDesc" [valid]="updateGroup.get('latitude').valid || !formSubmitted">
66
    <span *ngIf="updateGroup.get('latitude').invalid && updateGroup.get('latitude').touched && updateGroup.get('latitude').dirty"
67
          class="help-block inline"
68
          style="margin-top: 0px; margin-bottom: 0px; ">Invalid Latitude</span>
69
    <input formControlName="latitude" class="form-control" type="number" step="0.05" (focus)="updateGroup.get('latitude').markAsUntouched()" (blur)="updateGroup.get('latitude').updateValueAndValidity()">
53
  <form-inline [description]="latitudeDesc" [valid]="updateGroup.get('latitude').valid">
54
    <input formControlName="latitude" type="text" class="form-control">
70 55
  </form-inline>
71
  <form-inline [description]="websiteUrlDesc" [valid]="updateGroup.get('websiteUrl').valid || !formSubmitted">
72
    <span *ngIf="updateGroup.get('websiteUrl').invalid && updateGroup.get('websiteUrl').touched && updateGroup.get('websiteUrl').dirty"
73
            class="help-block inline uk-text-danger"
74
            style="margin-top: 0px; margin-bottom: 0px; ">You need to enter a valid url</span>
75
    <input formControlName="websiteUrl" class="form-control" type="text"
76
           (focus)="updateGroup.get('websiteUrl').markAsUntouched()"
77
           (blur)="updateGroup.get('websiteUrl').updateValueAndValidity()">
56
  <form-inline [description]="websiteUrlDesc" [valid]="updateGroup.get('websiteUrl').valid">
57
    <input formControlName="websiteUrl" class="form-control" type="text">
78 58
  </form-inline>
79
  <form-inline [description]="institutionNameDesc" [valid]="updateGroup.get('institutionName').valid || !formSubmitted">
59
  <form-inline [description]="institutionNameDesc" [valid]="updateGroup.get('institutionName').valid">
80 60
    <input formControlName="institutionName" class="form-control" type="text">
81 61
  </form-inline>
82 62
  <h4 class="uk-h4 uk-text-primary uk-scrollspy-inview uk-animation-slide-top-medium"
83 63
      uk-scrollspy-class="">Extra Information</h4>
84
  <form-inline [description]="englishNameDesc" [valid]="updateGroup.get('englishName').valid || !formSubmitted">
64
  <form-inline [description]="englishNameDesc" [valid]="updateGroup.get('englishName').valid">
85 65
    <input formControlName="englishName" class="form-control" type="text">
86 66
  </form-inline>
87 67
  <form-inline [description]="logoUrlDesc" [valid]="updateGroup.get('logoUrl').valid">
......
95 75
      Please make sure that the maximum size of the uploaded image is width=360px, height=240px
96 76
    </div>
97 77
  </form-inline>
98
  <form-inline [description]="timezoneDesc" [valid]="updateGroup.get('timezone').valid || !formSubmitted">
78
  <form-inline [description]="timezoneDesc" [valid]="updateGroup.get('timezone').valid">
99 79
    <select formControlName="timezone" class="form-control">
100 80
      <option value="">-- none selected --</option>
101 81
      <option *ngFor="let timezone of timezones" value="{{ timezone.offset }}">{{ timezone.name }}</option>
102 82
    </select>
103 83
  </form-inline>
104
  <form-inline [description]="datasourceTypeDesc" [valid]="updateGroup.get('datasourceType').valid || !formSubmitted">
84
  <form-inline [description]="datasourceTypeDesc" [valid]="updateGroup.get('datasourceType').valid">
105 85
    <select formControlName="datasourceType" class="form-control">
106 86
      <option value="">-- none selected --</option>
107 87
      <option *ngFor="let key of classCodes" value="{{key}}">{{ datasourceClasses[key] }}</option>
......
109 89
  </form-inline>
110 90
  <h4 class="uk-h4 uk-text-primary uk-scrollspy-inview uk-animation-slide-top-medium"
111 91
      uk-scrollspy-class="">Administrator & contact information</h4>
112
  <form-inline [description]="adminEmailDesc" [valid]="updateGroup.get('adminEmail').valid || !formSubmitted">
92
  <form-inline [description]="adminEmailDesc" [valid]="updateGroup.get('adminEmail').valid">
113 93
    <span *ngIf="updateGroup.get('adminEmail').invalid && updateGroup.get('adminEmail').touched && updateGroup.get('adminEmail').dirty"
114 94
          class="help-block inline"
115 95
          style="margin-top: 0px; margin-bottom: 0px; ">You need to enter a valid email address</span>
modules/uoa-repository-dashboard-gui/trunk/app/pages/sources/sources-forms/datasource-create-form.component.html
12 12
  </div>
13 13
  <div *ngIf="errorMessage" class="uk-alert uk-alert-danger">{{ errorMessage }}</div>
14 14
  <div *ngIf="successMessage" class="uk-alert uk-alert-success">{{ successMessage }}</div>
15
  <form-inline [description]="softwarePlatformDesc" [valid]="group.get('softwarePlatform').valid || !formSubmitted">
15
  <form-inline [description]="softwarePlatformDesc" [valid]="group.get('softwarePlatform').valid">
16 16
    <select formControlName="softwarePlatform" class="form-control">
17 17
      <option *ngFor="let platform of typologies" value="{{ platform.value }}">{{ platform.name }}</option>
18 18
    </select>
19 19
  </form-inline>
20
  <form-inline [description]="officialNameDesc"  [valid]="group.get('officialName').valid || !formSubmitted">
20
  <form-inline [description]="officialNameDesc"  [valid]="group.get('officialName').valid">
21 21
    <input formControlName="officialName" class="form-control" type="text">
22 22
  </form-inline>
23 23
  <div *ngIf="mode == 'journal'">
24
    <form-inline [description]="issnDesc" [valid]="group.get('issn').valid || !formSubmitted">
24
    <form-inline [description]="issnDesc" [valid]="group.get('issn').valid">
25 25
      <span *ngIf="group.get('issn').invalid && group.get('issn').touched && group.get('issn').dirty"
26 26
            class="help-block inline uk-text-danger"
27 27
            style="margin-top: 0px; margin-bottom: 0px; padding-left: 10px;">Issn needs to be of the form: "1111-1111"</span>
......
40 40
      <input formControlName="lissn"class="form-control" type="text" (focus)="group.get('lissn').markAsUntouched()" (blur)="group.get('lissn').updateValueAndValidity()">
41 41
    </form-inline>
42 42
  </div>
43
  <form-inline [description]="repoDescriptionDesc" [valid]="group.get('repoDescription').valid || !formSubmitted">
43
  <form-inline [description]="repoDescriptionDesc" [valid]="group.get('repoDescription').valid">
44 44
    <textarea formControlName="repoDescription" class="form-control"></textarea>
45 45
  </form-inline>
46
  <form-inline [description]="countryDesc" [valid]="group.get('country').valid || !formSubmitted">
46
  <form-inline [description]="countryDesc" [valid]="group.get('country').valid">
47 47
    <select formControlName="country" class="form-control">
48 48
      <option value="">-- none selected --</option>
49 49
      <option *ngFor="let country of countries" value="{{ country.code }}">{{ country.name }}</option>
50 50
    </select>
51 51
  </form-inline>
52
  <form-inline [description]="longtitudeDesc" [valid]="group.get('longtitude').valid || !formSubmitted">
52
  <form-inline [description]="longtitudeDesc" [valid]="group.get('longtitude').valid">
53 53
    <span *ngIf="group.get('longtitude').invalid && group.get('longtitude').touched && group.get('longtitude').dirty"
54
          class="help-block inline"
54
          class="help-block inline uk-text-danger"
55 55
          style="margin-top: 0px; margin-bottom: 0px; ">Invalid Longtitude</span>
56
    <input formControlName="longtitude" class="form-control" type="text"
56
    <input formControlName="longtitude" class="form-control" type="number" step="0.5"
57 57
           (focus)="group.get('longtitude').markAsUntouched()"
58 58
           (blur)="group.get('longtitude').updateValueAndValidity()">
59 59
  </form-inline>
60
  <form-inline [description]="latitudeDesc" [valid]="group.get('latitude').valid || !formSubmitted">
60
  <form-inline [description]="latitudeDesc" [valid]="group.get('latitude').valid">
61 61
    <span *ngIf="group.get('latitude').invalid && group.get('latitude').touched && group.get('latitude').dirty"
62
          class="help-block inline"
62
          class="help-block inline uk-text-danger"
63 63
          style="margin-top: 0px; margin-bottom: 0px; ">Invalid Latitude</span>
64
    <input formControlName="latitude" class="form-control" type="text" (focus)="group.get('latitude').markAsUntouched()" (blur)="group.get('latitude').updateValueAndValidity()">
64
    <input formControlName="latitude" class="form-control" type="number" step="0.5"
65
           (focus)="group.get('latitude').markAsUntouched()"
66
           (blur)="group.get('latitude').updateValueAndValidity()">
65 67
  </form-inline>
66
  <form-inline [description]="websiteUrlDesc" [valid]="group.get('websiteUrl').valid || !formSubmitted">
68
  <form-inline [description]="websiteUrlDesc" [valid]="group.get('websiteUrl').valid">
67 69
    <span *ngIf="group.get('websiteUrl').invalid && group.get('websiteUrl').touched && group.get('websiteUrl').dirty"
68 70
          class="help-block inline uk-text-danger"
69 71
          style="margin-top: 0px; margin-bottom: 0px; ">You need to enter a valid url</span>
......
71 73
           (focus)="group.get('websiteUrl').markAsUntouched()"
72 74
           (blur)="group.get('websiteUrl').updateValueAndValidity()">
73 75
  </form-inline>
74
  <form-inline [description]="institutionNameDesc" [valid]="group.get('institutionName').valid || !formSubmitted">
76
  <form-inline [description]="institutionNameDesc" [valid]="group.get('institutionName').valid">
75 77
    <input formControlName="institutionName" class="form-control" type="text">
76 78
  </form-inline>
77 79
  <h4 class="uk-h4 uk-text-primary uk-scrollspy-inview uk-animation-slide-top-medium"
78 80
      uk-scrollspy-class="">Extra Information</h4>
79
  <form-inline [description]="englishNameDesc" [valid]="group.get('englishName').valid || !formSubmitted">
81
  <form-inline [description]="englishNameDesc" [valid]="group.get('englishName').valid">
80 82
    <input formControlName="englishName" class="form-control" type="text" >
81 83
  </form-inline>
82 84
  <form-inline [description]="logoUrlDesc" [valid]="group.get('logoUrl').valid">
......
90 92
      Please make sure that the maximum size of the uploaded image is width=360px, height=240px
91 93
    </div>
92 94
  </form-inline>
93
  <form-inline [description]="timezoneDesc" [valid]="group.get('timezone').valid || !formSubmitted">
95
  <form-inline [description]="timezoneDesc" [valid]="group.get('timezone').valid">
94 96
    <select formControlName="timezone" class="form-control">
95 97
      <option value="">-- none selected --</option>
96 98
      <option *ngFor="let timezone of timezones" value="{{ timezone.offset }}">{{ timezone.name }}</option>
97 99
    </select>
98 100
  </form-inline>
99
  <form-inline [description]="datasourceTypeDesc" [valid]="group.get('datasourceType').valid || !formSubmitted">
101
  <form-inline [description]="datasourceTypeDesc" [valid]="group.get('datasourceType').valid">
100 102
    <select formControlName="datasourceType" class="form-control">
101 103
      <option value="">-- none selected --</option>
102 104
      <option *ngFor="let key of classCodes" value="{{key}}">{{ datasourceClasses[key] }}</option>
......
105 107
  </form-inline>
106 108
  <h4 class="uk-h4 uk-text-primary uk-scrollspy-inview uk-animation-slide-top-medium"
107 109
      uk-scrollspy-class="">Administrator & contact information</h4>
108
  <form-inline [description]="adminEmailDesc" [valid]="group.get('adminEmail').valid || !formSubmitted">
110
  <form-inline [description]="adminEmailDesc" [valid]="group.get('adminEmail').valid">
109 111
    <span *ngIf="group.get('adminEmail').invalid && group.get('adminEmail').touched && group.get('adminEmail').dirty"
110 112
          class="help-block inline"
111 113
          style="margin-top: 0px; margin-bottom: 0px; ">You need to enter a valid email address</span>
modules/uoa-repository-dashboard-gui/trunk/app/pages/sources/sources-forms/datasource-update-form.component.ts
67 67
  readonly updateGroupDefinition = {
68 68
    softwarePlatform : '',
69 69
    platformName : '',
70
    officialName : ['', Validators.required],
71
    issn : ['', [Validators.pattern('^\\d\\d\\d\\d[-]\\d\\d\\d\\d$')] ],
72
    eissn : ['', Validators.pattern('^\\d\\d\\d\\d[-]\\d\\d\\d\\d$') ],
73
    lissn : ['', Validators.pattern('^\\d\\d\\d\\d[-]\\d\\d\\d\\d$') ],
70
    officialName : '',
71
    issn : '',
72
    eissn : '',
73
    lissn : '',
74 74
    repoDescription : ['', Validators.required],
75
    country : ['', Validators.required],
76
    longtitude : ['', [Validators.required, Validators.min(-180), Validators.max(180)] ],
77
    latitude : ['', [Validators.required, Validators.min(-90), Validators.max(90)] ],
78
    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})?(\\/.*)?$')] ],
79
    institutionName : ['', Validators.required],
75
    country : '',
76
    longtitude : '',
77
    latitude : '',
78
    websiteUrl : [''],
79
    institutionName : [''],
80 80
    englishName: ['', Validators.required],
81 81
    logoUrl: ['', Validators.pattern('^(http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/)?[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?$') ],
82 82
    timezone: ['', Validators.required],
......
155 155
        datasourceType: this.selectedRepo.datasourceClass,
156 156
        adminEmail: this.selectedRepo.contactEmail
157 157
      });
158
      if ( !this.typologies.filter(x => x.value == this.selectedRepo.typology).length ) {
158
      if ( !this.updateGroup.get('softwarePlatform').value ) {
159 159
        this.updateGroup.get('softwarePlatform').setValue('');
160 160
        this.updateGroup.get('platformName').setValue(this.selectedRepo.typology);
161 161
      }
......
167 167
      this.updateGroup.get('institutionName').disable();
168 168
      if (this.selectedRepo.datasourceType == 'journal') {
169 169

  
170
        this.updateGroup.get('issn').setValidators([Validators.required, Validators.pattern('^\\d\\d\\d\\d[-]\\d\\d\\d\\d$')]);
171

  
172 170
        let ssnToShow = this.selectedRepo.issn.slice(0, 4)+ '-' + this.selectedRepo.issn.toString().slice(4);
173 171
        this.updateGroup.get('issn').setValue(ssnToShow);
174 172

  
......
293 291
  }
294 292

  
295 293
  refreshSelectedRepo() {
296
    if (this.updateGroup.get('platformName').value.trim() ) {
294
    if (this.updateGroup.get('platformName').value ) {
297 295
      this.selectedRepo.typology = this.updateGroup.get('platformName').value;
298 296
    } else if (this.updateGroup.get('softwarePlatform').value){
299 297
      this.selectedRepo.typology = this.updateGroup.get('softwarePlatform').value;
......
351 349
export function checkPlatform(c: AbstractControl) {
352 350
  if ( c.get('softwarePlatform').value || c.get('platformName').value )
353 351
    return null;
354
  markPlatformAsRequired(c);
355 352
  return 'invalid';
356 353
}
357 354

  
modules/uoa-repository-dashboard-gui/trunk/app/pages/sources/sources-update-repo.component.ts
75 75
    this.group = this.fb.group({});
76 76
    this.repoService.getRepositoryInterface(this.repoId).subscribe(
77 77
      interfaces => {
78
        this.repoInterfaces = interfaces;
78
        this.repoInterfaces = interfaces.sort( function(a,b) {
79
          if(a.id<b.id){
80
            return -1;
81
          } else if(a.id>b.id){
82
            return 1;
83
          } else {
84
            return 0;
85
          }
86
        });
79 87
        console.log(`the number of interfaces for ${this.repoId} is ${this.repoInterfaces.length}`);
80 88
      },
81 89
      error => {
modules/uoa-repository-dashboard-gui/trunk/app/services/authentication.service.ts
16 16

  
17 17
  private apiUrl : string = process.env.API_ENDPOINT;
18 18
  private loginUrl: string = process.env.AAI_ENDPOINT;
19
  private baseUrl: string = 'http://aleka.athenarc.gr:3000';
19
  private baseUrl: string = process.env.BASE_URL;
20 20

  
21 21
  // store the URL so we can redirect after logging in
22 22
  public redirectUrl: string;
......
40 40
    this.isLoggedIn = false;
41 41

  
42 42
    console.log('logging out, going to:');
43
    console.log(`https://aai.openaire.eu/proxy/saml2/idp/SingleLogoutService.php?ReturnTo=${this.baseUrl}/landing`);
44
    window.location.href = `https://aai.openaire.eu/proxy/saml2/idp/SingleLogoutService.php?ReturnTo=${this.baseUrl}/landing`;
43
    console.log(`https://aai.openaire.eu/proxy/saml2/idp/SingleLogoutService.php?ReturnTo=${this.baseUrl}`);
44
    window.location.href = `https://aai.openaire.eu/proxy/saml2/idp/SingleLogoutService.php?ReturnTo=${this.baseUrl}`;
45 45
  }
46 46

  
47 47
  public tryLogin() {
......
97 97
          this.router.navigate([state]);
98 98
        }
99 99
      }
100
    } else {
101
      this.isLoggedIn = false;
100 102
    }
101 103
  }
102 104

  
modules/uoa-repository-dashboard-gui/trunk/app/services/help-content.service.ts
21 21
    console.log(`sending request at: ${url}`);
22 22

  
23 23
    return this.http.get(url)
24
        .map(res => res.json() )
24
        .map(res => <PageContent>res.json() )
25 25
        .catch(this.handleError);
26 26
  }
27 27

  
modules/uoa-repository-dashboard-gui/trunk/app/shared/topmenu/topmenu.component.html
196 196
                        <ul class="uk-nav uk-navbar-dropdown-nav">
197 197
                          <ul *ngIf="getIsUserAdmin()" class="uk-nav uk-navbar-dropdown-nav">
198 198
                            <li class="uk-nav-header" style="display: block;">Admin</li>
199
                            <li style="display: block"><a [routerLink]="['/admin','help-texts']">Help Texts</a></li>
199
                            <li style="display: block"><a href="{{adminHomePage}}" target="_blank">Help Texts</a></li>
200 200
                            <li style="display: block" class="uk-margin-small-bottom"><a [routerLink]="['/admin','metrics']">Metrics</a></li>
201 201
                          </ul>
202 202
                          <li><a class="logoutLink loginLink" (click)="logout()">Log out</a></li>
modules/uoa-repository-dashboard-gui/trunk/app/shared/topmenu/topmenu.component.ts
15 15
  userLoggedIn: boolean = false;
16 16
  userName: string = '';
17 17
  isUserAdmin: boolean = false;
18
  adminHomePage = process.env.FAQ_HOMEPAGE;
18 19

  
19 20
  constructor(public authService: AuthenticationService) { }
20 21

  
modules/uoa-repository-dashboard-gui/trunk/app/shared/reusablecomponents/forms/my-group.interface.ts
6 6
  Injector,
7 7
  Input,
8 8
  OnChanges,
9
  OnInit,
9
  OnInit, Output,
10 10
  SimpleChanges
11 11
} from "@angular/core";
12 12
import { Description } from '../../../domain/oa-description';
......
49 49

  
50 50
  public groupErrorMessage: string;
51 51

  
52
  public wasSaved: boolean = false;
53

  
52 54
  constructor(injector : Injector) {
53 55
    this._fb = injector.get(FormBuilder);
54 56
    this.patchData.subscribe(_ => {
......
124 126
  selector : 'form-inline',
125 127
  template : `
126 128
    <div class="form-group">
127
      <label class="control-label" *ngIf="description.label != ''" [ngClass]="{'required' : description.mandatory==true, 'uk-text-danger' : valid == false}" title="{{ description.desc }}">
129
      <label class="control-label" *ngIf="description.label != ''" [ngClass]="{'required' : description.mandatory==true}" title="{{ description.desc }}">
128 130
        {{ description.label }}
129 131
      </label>
130 132
      <ng-content></ng-content>
modules/uoa-repository-dashboard-gui/trunk/app/shared/reusablecomponents/forms/my-array.interface.ts
9 9
import { Description } from '../../../domain/oa-description';
10 10
import { Subject } from "rxjs/Subject";
11 11
import {ConfirmationDialogComponent} from "../confirmation-dialog.component";
12
import {nonRemovableInterface} from "../../../domain/shared-messages";
12 13

  
13 14

  
14 15
@Component({
......
51 52

  
52 53
  arrayData_ : Subject<any>[] = [];
53 54

  
55
  components : MyGroup[] = [];
56

  
54 57
  push() {
55 58
    this.createView();
56 59
  }
......
65 68
    let wrapperFactory = this._cfr.resolveComponentFactory(this.wrapper);
66 69
    let wrapperView = wrapperFactory.create(this.viewContainerRef.injector);
67 70
    let componentView = componentFactory.create(this.viewContainerRef.injector);
68

  
71
    this.components.push(componentView.instance);
69 72
    (<MyGroup>componentView.instance).index = this.viewContainerRef.length;
70 73
    (<MyGroup>componentView.instance).required = this.required;
71 74
    (<MyGroup>componentView.instance).data = this.data;
......
89 92
        if (index>0){
90 93
          this.curIntrf = <MyGroup>componentView.instance;
91 94
          this.curIndex = index;
95
          this.components.splice(index,1);
92 96
          this.confirmRemoveInterface();
93
        } else { (<MyGroup>componentView.instance).groupErrorMessage = 'At least one interface must be present'; }
97
        } else {
98
          (<MyGroup>componentView.instance).groupErrorMessage = nonRemovableInterface;
99
        }
94 100
        /*(<MyGroup>componentView.instance).toBeDeleted = true;
95 101
        this.remove(index);
96 102
        (this.parentGroup as FormArray).controls[this.name].removeAt(index-1);
......
104 110
    console.log("ADDED NEW GROUP IN CREATEVIEW");
105 111
  }
106 112

  
113
  public checkIfOneElementExists() {
114
    console.log(`searching`);
115
    return this.components.some(data => data.wasSaved);
116
  }
117

  
107 118
  isModalShown: boolean = false;
108 119
  curIntrf: any;
109 120
  curIndex: number;
modules/uoa-repository-dashboard-gui/trunk/app/domain/shared-messages.ts
2 2
/* Service Down Message */
3 3
export const noServiceMessage = 'The service is not available at the moment.';
4 4

  
5
/* Loading Repositories Messages */
5
/* Repositories Messages */
6 6
export const loadingUserRepoInfoError = "Failed to load information on your registered repositories";
7 7
export const loadingUserRepoInfoEmpty = "You have not yet registered any repositories";
8 8
export const reposRetrievalError = 'The repositories can not be retrieved at the moment';
......
15 15
export const loadingAggregationHistoryError = 'System error retrieving repository aggregation history.';
16 16
export const noAggregationHistory = 'There is no aggregation history for this repository at the moment';
17 17

  
18
/* Interfaces Messages */
19
export const noInterfacesSaved = 'You have to create at least one interface';
20
export const nonRemovableInterface = 'This interface can not be removed!';
21

  
18 22
/* Rules Messages */
19 23
export const loadingRuleSets = 'Retrieving sets of rules ...';
20 24
export const loadingRuleSetsError = 'The rule sets can not be retrieved at the moment';
modules/uoa-repository-dashboard-gui/trunk/assets/css/RepositoryManager.css
1719 1719
}
1720 1720

  
1721 1721
/********************************/
1722

  
1723
.visible_uk_links:hover, .visible_uk_links:focus {
1724
  color: #28beFF;
1725
}
modules/uoa-repository-dashboard-gui/trunk/assets/css/custom.css
26 26
 font-family: 'Open Sans', sans-serif !important;
27 27
 font-weight:bold;
28 28
}
29
	
29

  
30 30
h6, .uk-h6, .wk-h6 {
31 31
 font-family: 'Open Sans', sans-serif !important;
32 32
 font-weight: normal;
......
63 63
.wk-panel { }
64 64

  
65 65
.dark_overlay .wk-overlay-active :not(.wk-active)>.wk-overlay-panel:not(.wk-ignore),
66
.dark_overlay .wk-overlay-active :not(.wk-active)>.wk-overlay-panel:not(.wk-ignore), 
66
.dark_overlay .wk-overlay-active :not(.wk-active)>.wk-overlay-panel:not(.wk-ignore),
67 67
.dark_overlay .wk-overlay-hover:not(:hover):not(.wk-hover) .wk-overlay-panel:not(.wk-ignore),
68 68
.dark_overlay .wk-overlay-background{background:rgba(100,100,100,.6);}
69
 
69

  
70 70
/* service pages */
71
.service-button .wk-dotnav>li>a, 
72
.service-button .wk-icon-button, .service-button .wk-list>li>a, .service-button .wk-nav ul>li>a, .service-button .wk-nav>li>a, 
71
.service-button .wk-dotnav>li>a,
72
.service-button .wk-icon-button, .service-button .wk-list>li>a, .service-button .wk-nav ul>li>a, .service-button .wk-nav>li>a,
73 73
.service-button .wk-overlay, .service-button .wk-slidenav {}
74 74

  
75 75
.service-button > .wk-subnav>li>a{
......
78 78

  
79 79
}
80 80
.service-button .wk-subnav-pill>*>:hover {
81
    border: 1px solid #213BAA!important;    
82
    color:#213BAA!important;    
81
    border: 1px solid #213BAA!important;
82
    color:#213BAA!important;
83 83
    text-decoration: none;
84 84
    outline: 0;
85 85
    box-shadow: none!important;
......
92 92
.service-button .wk-subnav-pill>.wk-active>*
93 93
 {
94 94
    background: #213BAA;
95
    border: 1px solid #213BAA!important;    
95
    border: 1px solid #213BAA!important;
96 96
    color: #fff!important;
97 97
    box-shadow: none;
98 98
}
......
111 111
}
112 112

  
113 113
.uk-button-default:focus, .uk-button-default:hover {color:#fff;}
114
.btn-info, .btn-primary, .uk-button-primary { 
114
.btn-info, .btn-primary, .uk-button-primary {
115 115
    /*provide*/
116 116
background: #17A6F6!important;
117 117
}
118
.btn-info:focus, .btn-info:hover, .btn-primary:focus, .btn-primary:hover, 
118
.btn-info:focus, .btn-info:hover, .btn-primary:focus, .btn-primary:hover,
119 119
.uk-button-primary:focus, .uk-button-primary:hover {
120 120

  
121 121
 	/*provide*/
......
132 132
/*.uk-badge, .badge, a.badge { border-radius: 2px;}*/
133 133
.uk-button-secondary {
134 134
    background-color: transparent;
135
    
135

  
136 136
    border-radius:0px;
137 137

  
138 138
    /*provide*/
......
140 140
}
141 141

  
142 142
.uk-button-secondary:hover {
143
    
143

  
144 144
     /*provide*/
145 145
    border:1px solid #17A6F6!important;
146 146
    background-color:#17A6F6!important;
147
   
148
    
147

  
148

  
149 149
}
150 150
.uk-section-secondary:not(.uk-preserve-color) .uk-button-secondary:hover,
151 151
.uk-tile-primary:not(.uk-preserve-color) .uk-button-secondary:hover {
......
169 169
ol.big-numbers-list li::before {
170 170
    content: counter(step-counter);
171 171
    margin-right: 5px;
172
    text-align: center; 
172
    text-align: center;
173 173

  
174 174
    font-size: 100%;
175 175
    vertical-align: middle;
......
183 183
    border: 1px solid #192699;
184 184

  
185 185

  
186
        /* 
186
        /*
187 187
    border: 1px solid #192699;
188 188
    color: #192699;
189 189
    border-radius: 12px;
......
252 252
 padding:10px 10px  0px 0px;
253 253
  -ms-transform: skew(25deg);
254 254
  -webkit-transform: skew(25deg);
255
  transform: skew(25deg);  
255
  transform: skew(25deg);
256 256
  margin-right:10px;
257 257

  
258 258
  /*provide*/
......
294 294
  text-decoration:none;
295 295
  -ms-transform: skew(-25deg);
296 296
  -webkit-transform: skew(-25deg);
297
  transform: skew(-25deg); 
297
  transform: skew(-25deg);
298 298
  font-family:Roboto:900!important;
299 299
  text-transform:uppercase!important;
300 300
  font-size:13px!important;
......
335 335
}
336 336

  
337 337
.tm-toolbar .uk-subnav-line li a:hover,
338
.tm-toolbar .uk-subnav li a:hover, 
338
.tm-toolbar .uk-subnav li a:hover,
339 339
.tm-toolbar .uk-subnav-line li:hover a,
340 340
.tm-toolbar .uk-subnav li:hover a {
341 341
  display: block;
......
361 361
  -moz-border-radius: 0px;
362 362
  -webkit-border-radius: 0px;
363 363
  border-radius: 0px;
364
  background:  #fff; 
364
  background:  #fff;
365 365
  -moz-box-shadow: 0px 0px 1px #666;
366 366
  -webkit-box-shadow: 0px 0px 1px #666;
367 367
  box-shadow: 0px 0px 1px #666;
......
374 374
  background-image: -o-linear-gradient(top, #eeeeee, #cccccc);
375 375
  */
376 376
}
377
 
377

  
378 378
.movetotop .uk-slidenav-position{
379 379
  /*top:-130px;
380 380
  z-index:5;*/
......
408 408
    align-items: flex-end!important;
409 409
}
410 410
/*
411
.uk-light a, .uk-light .uk-link, 
412
.uk-section-primary:not(.uk-preserve-color) a, .uk-section-primary:not(.uk-preserve-color) .uk-link, 
413
.uk-section-secondary:not(.uk-preserve-color) a, .uk-section-secondary:not(.uk-preserve-color) .uk-link, 
414
.uk-tile-primary:not(.uk-preserve-color) a, .uk-tile-primary:not(.uk-preserve-color) .uk-link, 
415
.uk-tile-secondary:not(.uk-preserve-color) a, .uk-tile-secondary:not(.uk-preserve-color) .uk-link, 
416
.uk-card-primary.uk-card-body a, .uk-card-primary.uk-card-body .uk-link, .uk-card-primary>:not([class*='uk-card-media']) a, 
417
.uk-card-primary>:not([class*='uk-card-media']) .uk-link, .uk-card-secondary.uk-card-body a, 
418
.uk-card-secondary.uk-card-body .uk-link, .uk-card-secondary>:not([class*='uk-card-media']) a, 
419
.uk-card-secondary>:not([class*='uk-card-media']) .uk-link, .uk-overlay-primary a, .uk-overlay-primary .uk-link, 
411
.uk-light a, .uk-light .uk-link,
412
.uk-section-primary:not(.uk-preserve-color) a, .uk-section-primary:not(.uk-preserve-color) .uk-link,
413
.uk-section-secondary:not(.uk-preserve-color) a, .uk-section-secondary:not(.uk-preserve-color) .uk-link,
414
.uk-tile-primary:not(.uk-preserve-color) a, .uk-tile-primary:not(.uk-preserve-color) .uk-link,
415
.uk-tile-secondary:not(.uk-preserve-color) a, .uk-tile-secondary:not(.uk-preserve-color) .uk-link,
416
.uk-card-primary.uk-card-body a, .uk-card-primary.uk-card-body .uk-link, .uk-card-primary>:not([class*='uk-card-media']) a,
417
.uk-card-primary>:not([class*='uk-card-media']) .uk-link, .uk-card-secondary.uk-card-body a,
418
.uk-card-secondary.uk-card-body .uk-link, .uk-card-secondary>:not([class*='uk-card-media']) a,
419
.uk-card-secondary>:not([class*='uk-card-media']) .uk-link, .uk-overlay-primary a, .uk-overlay-primary .uk-link,
420 420
*/
421
.uk-navbar-container:not(.uk-navbar-transparent) a, .uk-navbar-container:not(.uk-navbar-transparent) .uk-link, 
421
.uk-navbar-container:not(.uk-navbar-transparent) a, .uk-navbar-container:not(.uk-navbar-transparent) .uk-link,
422 422
.uk-offcanvas-bar a, .uk-offcanvas-bar .uk-link, .tm-toolbar a, .tm-toolbar .uk-link {
423 423
	color: #292C3D
424 424
}
425 425
.uk-card {border-radius:0;}
426 426

  
427
.uk-navbar-container:not(.uk-navbar-transparent) a, .uk-navbar-container:not(.uk-navbar-transparent) .uk-link, 
427
.uk-navbar-container:not(.uk-navbar-transparent) a, .uk-navbar-container:not(.uk-navbar-transparent) .uk-link,
428 428
.uk-offcanvas-bar a, .uk-offcanvas-bar .uk-link, .tm-toolbar a, .tm-toolbar .uk-link {
429 429
/*color:#292C3D;
430 430
color: #245BCC;
......
451 451
 color: #D33A24;
452 452
}
453 453

  
454
.uk-light .uk-navbar-nav>li>a, .uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a, .uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a, .uk-card-primary.uk-card-body .uk-navbar-nav>li>a, .uk-card-primary>:not([class*='uk-card-media']) .uk-navbar-nav>li>a, 
454
.uk-light .uk-navbar-nav>li>a, .uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a, .uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a, .uk-card-primary.uk-card-body .uk-navbar-nav>li>a, .uk-card-primary>:not([class*='uk-card-media']) .uk-navbar-nav>li>a,
455 455
.uk-card-secondary.uk-card-body .uk-navbar-nav>li>a, .uk-card-secondary>:not([class*='uk-card-media']) .uk-navbar-nav>li>a, .uk-overlay-primary .uk-navbar-nav>li>a, .uk-navbar-container:not(.uk-navbar-transparent) .uk-navbar-nav>li>a, .uk-offcanvas-bar .uk-navbar-nav>li>a, .tm-toolbar .uk-navbar-nav>li>a {
456 456
color:#292C3D;}
457 457

  
458 458
.uk-light .uk-navbar-nav>li.uk-active>a, .uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li.uk-active>a, .uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li.uk-active>a, .uk-card-primary.uk-card-body .uk-navbar-nav>li.uk-active>a, .uk-card-primary>:not([class*='uk-card-media']) .uk-navbar-nav>li.uk-active>a, .uk-card-secondary.uk-card-body .uk-navbar-nav>li.uk-active>a, .uk-card-secondary>:not([class*='uk-card-media']) .uk-navbar-nav>li.uk-active>a, .uk-overlay-primary .uk-navbar-nav>li.uk-active>a, .uk-navbar-container:not(.uk-navbar-transparent) .uk-navbar-nav>li.uk-active>a, .uk-offcanvas-bar .uk-navbar-nav>li.uk-active>a, .tm-toolbar .uk-navbar-nav>li.uk-active>a {
459 459
color:#292C3D;}
460 460

  
461
.uk-light .uk-navbar-nav>li>a::before, .uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a::before, 
462
.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a::before, 
463
.uk-card-primary.uk-card-body .uk-navbar-nav>li>a::before, 
461
.uk-light .uk-navbar-nav>li>a::before, .uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a::before,
462
.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a::before,
463
.uk-card-primary.uk-card-body .uk-navbar-nav>li>a::before,
464 464
.uk-card-primary>:not([class*='uk-card-media']) .uk-navbar-nav>li>a::before, .
465
uk-card-secondary.uk-card-body .uk-navbar-nav>li>a::before, 
466
.uk-card-secondary>:not([class*='uk-card-media']) .uk-navbar-nav>li>a::before, 
467
.uk-overlay-primary .uk-navbar-nav>li>a::before, .uk-navbar-container:not(.uk-navbar-transparent) .uk-navbar-nav>li>a::before, 
465
uk-card-secondary.uk-card-body .uk-navbar-nav>li>a::before,
466
.uk-card-secondary>:not([class*='uk-card-media']) .uk-navbar-nav>li>a::before,
467
.uk-overlay-primary .uk-navbar-nav>li>a::before, .uk-navbar-container:not(.uk-navbar-transparent) .uk-navbar-nav>li>a::before,
468 468
.uk-offcanvas-bar .uk-navbar-nav>li>a::before, .tm-toolbar .uk-navbar-nav>li>a::before {
469 469

  
470 470
background-color: #128DD5;
......
473 473
/*height:2px;*/
474 474
background-color: #128DD5!important;
475 475
}
476
.uk-light .uk-navbar-nav>li:hover>a, .uk-light .uk-navbar-nav>li>a:focus, .uk-light .uk-navbar-nav>li>a.uk-open, 
477
.uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li:hover>a, 
478
.uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a:focus, 
479
.uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a.uk-open, 
480
.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li:hover>a, 
481
.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a:focus, 
482
.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a.uk-open, 
483
.uk-card-primary.uk-card-body .uk-navbar-nav>li:hover>a, .uk-card-primary.uk-card-body .uk-navbar-nav>li>a:focus, 
484
.uk-card-primary.uk-card-body .uk-navbar-nav>li>a.uk-open, 
485
.uk-card-primary>:not([class*='uk-card-media']) .uk-navbar-nav>li:hover>a, 
486
.uk-card-primary>:not([class*='uk-card-media']) .uk-navbar-nav>li>a:focus, 
487
.uk-card-primary>:not([class*='uk-card-media']) .uk-navbar-nav>li>a.uk-open, 
488
.uk-card-secondary.uk-card-body .uk-navbar-nav>li:hover>a, 
489
.uk-card-secondary.uk-card-body .uk-navbar-nav>li>a:focus, 
490
.uk-card-secondary.uk-card-body .uk-navbar-nav>li>a.uk-open, 
491
.uk-card-secondary>:not([class*='uk-card-media']) .uk-navbar-nav>li:hover>a, 
492
.uk-card-secondary>:not([class*='uk-card-media']) .uk-navbar-nav>li>a:focus, 
493
.uk-card-secondary>:not([class*='uk-card-media']) .uk-navbar-nav>li>a.uk-open, 
494
.uk-overlay-primary .uk-navbar-nav>li:hover>a, .uk-overlay-primary .uk-navbar-nav>li>a:focus, 
495
.uk-overlay-primary .uk-navbar-nav>li>a.uk-open, .uk-navbar-container:not(.uk-navbar-transparent) .uk-navbar-nav>li:hover>a, 
496
.uk-navbar-container:not(.uk-navbar-transparent) .uk-navbar-nav>li>a:focus, 
497
.uk-navbar-container:not(.uk-navbar-transparent) .uk-navbar-nav>li>a.uk-open, 
498
.uk-offcanvas-bar .uk-navbar-nav>li:hover>a, .uk-offcanvas-bar .uk-navbar-nav>li>a:focus, 
499
.uk-offcanvas-bar .uk-navbar-nav>li>a.uk-open, .tm-toolbar .uk-navbar-nav>li:hover>a, 
476
.uk-light .uk-navbar-nav>li:hover>a, .uk-light .uk-navbar-nav>li>a:focus, .uk-light .uk-navbar-nav>li>a.uk-open,
477
.uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li:hover>a,
478
.uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a:focus,
479
.uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a.uk-open,
480
.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li:hover>a,
481
.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a:focus,
482
.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a.uk-open,
483
.uk-card-primary.uk-card-body .uk-navbar-nav>li:hover>a, .uk-card-primary.uk-card-body .uk-navbar-nav>li>a:focus,
484
.uk-card-primary.uk-card-body .uk-navbar-nav>li>a.uk-open,
485
.uk-card-primary>:not([class*='uk-card-media']) .uk-navbar-nav>li:hover>a,
486
.uk-card-primary>:not([class*='uk-card-media']) .uk-navbar-nav>li>a:focus,
487
.uk-card-primary>:not([class*='uk-card-media']) .uk-navbar-nav>li>a.uk-open,
488
.uk-card-secondary.uk-card-body .uk-navbar-nav>li:hover>a,
489
.uk-card-secondary.uk-card-body .uk-navbar-nav>li>a:focus,
490
.uk-card-secondary.uk-card-body .uk-navbar-nav>li>a.uk-open,
491
.uk-card-secondary>:not([class*='uk-card-media']) .uk-navbar-nav>li:hover>a,
492
.uk-card-secondary>:not([class*='uk-card-media']) .uk-navbar-nav>li>a:focus,
493
.uk-card-secondary>:not([class*='uk-card-media']) .uk-navbar-nav>li>a.uk-open,
494
.uk-overlay-primary .uk-navbar-nav>li:hover>a, .uk-overlay-primary .uk-navbar-nav>li>a:focus,
495
.uk-overlay-primary .uk-navbar-nav>li>a.uk-open, .uk-navbar-container:not(.uk-navbar-transparent) .uk-navbar-nav>li:hover>a,
496
.uk-navbar-container:not(.uk-navbar-transparent) .uk-navbar-nav>li>a:focus,
497
.uk-navbar-container:not(.uk-navbar-transparent) .uk-navbar-nav>li>a.uk-open,
498
.uk-offcanvas-bar .uk-navbar-nav>li:hover>a, .uk-offcanvas-bar .uk-navbar-nav>li>a:focus,
499
.uk-offcanvas-bar .uk-navbar-nav>li>a.uk-open, .tm-toolbar .uk-navbar-nav>li:hover>a,
500 500
.tm-toolbar .uk-navbar-nav>li>a:focus, .tm-toolbar .uk-navbar-nav>li>a.uk-open {
501 501
color: #128DD5;
502 502
}
......
529 529
   color: #128DD5!important;
530 530
}
531 531
/*.uk-light a:hover, .uk-light .uk-link:hover, */
532
.uk-section-primary:not(.uk-preserve-color) a:hover, .uk-section-primary:not(.uk-preserve-color) .uk-link:hover, 
533
.uk-section-secondary:not(.uk-preserve-color) a:hover, .uk-section-secondary:not(.uk-preserve-color) .uk-link:hover, 
534
.uk-card-primary.uk-card-body a:hover, .uk-card-primary.uk-card-body .uk-link:hover, 
535
.uk-card-primary>:not([class*='uk-card-media']) a:hover, .uk-card-primary>:not([class*='uk-card-media']) .uk-link:hover, 
536
.uk-card-secondary.uk-card-body a:hover, .uk-card-secondary.uk-card-body .uk-link:hover, 
537
.uk-card-secondary>:not([class*='uk-card-media']) a:hover, .uk-card-secondary>:not([class*='uk-card-media']) .uk-link:hover, 
538
.uk-overlay-primary a:hover, .uk-overlay-primary .uk-link:hover, 
539
.uk-navbar-container:not(.uk-navbar-transparent) a:hover, .uk-navbar-container:not(.uk-navbar-transparent) .uk-link:hover, 
532
.uk-section-primary:not(.uk-preserve-color) a:hover, .uk-section-primary:not(.uk-preserve-color) .uk-link:hover,
533
.uk-section-secondary:not(.uk-preserve-color) a:hover, .uk-section-secondary:not(.uk-preserve-color) .uk-link:hover,
534
.uk-card-primary.uk-card-body a:hover, .uk-card-primary.uk-card-body .uk-link:hover,
535
.uk-card-primary>:not([class*='uk-card-media']) a:hover, .uk-card-primary>:not([class*='uk-card-media']) .uk-link:hover,
536
.uk-card-secondary.uk-card-body a:hover, .uk-card-secondary.uk-card-body .uk-link:hover,
537
.uk-card-secondary>:not([class*='uk-card-media']) a:hover, .uk-card-secondary>:not([class*='uk-card-media']) .uk-link:hover,
538
.uk-overlay-primary a:hover, .uk-overlay-primary .uk-link:hover,
539
.uk-navbar-container:not(.uk-navbar-transparent) a:hover, .uk-navbar-container:not(.uk-navbar-transparent) .uk-link:hover,
540 540
.uk-offcanvas-bar a:hover, .uk-offcanvas-bar .uk-link:hover, .tm-toolbar a:hover, .tm-toolbar .uk-link:hover {
541 541
   color: #128DD5!important;
542 542
}
......
625 625
	font-weight:300;
626 626
	padding:4px 0;
627 627
}
628
.uk-nav li.emphasized_menu a, 
629
.uk-navbar-dropdown-nav li.emphasized_menu a 
628
.uk-nav li.emphasized_menu a,
629
.uk-navbar-dropdown-nav li.emphasized_menu a
630 630
 {
631 631
color:#1E36B2;
632 632
font-weight: 500!important;
......
683 683
  font-family: 'Open Sans', sans-serif;
684 684
  font-weight: 300;
685 685
  color:#fff;
686
 
686

  
687 687
}
688 688
.first_page_panel h3.uk-h1 {
689
  color:#fff; 
689
  color:#fff;
690 690
}
691 691
.first_page_panel {
692 692
  border: 0px solid #e5e5e7!important;
......
695 695
  font-size:24pt!important;
696 696
  padding:20px!important;
697 697
  color:#fff;
698
}  
698
}
699 699
.first_page_panel .banner_text_bottom {
700 700
  font-size:20pt;
701 701
  padding:20px;
......
794 794
    box-shadow: 0px 3px 12px rgba(0, 0, 0, 0.07);
795 795
}
796 796

  
797
.readon:hover{ 
797
.readon:hover{
798 798
background-color: #fff;
799 799
color: #00a0de;
800 800
box-shadow: 0 6px 50px rgba(0, 0, 0, 0.05);
......
803 803

  
804 804

  
805 805
/*custom classes */
806
.partner_slider .wk-link-reset, .partner_slider .wk-link-reset a, .partner_slider .wk-link-reset a:focus, 
806
.partner_slider .wk-link-reset, .partner_slider .wk-link-reset a, .partner_slider .wk-link-reset a:focus,
807 807
.partner_slider .wk-link-reset a:hover, .partner_slider .wk-link-reset:focus, .partner_slider .wk-link-reset:hover {
808 808
color: black;
809 809
}
......
822 822
	margin-top:0px;
823 823
}
824 824

  
825
.mod_events_latest_date { 
825
.mod_events_latest_date {
826 826
	width: 18%;
827 827
	float: left;
828 828
	position: relative;
......
849 849
.mod_events_latest_date .larger_font {
850 850
	font-size:28px!important;
851 851
	font-weight:700!important;}
852
	
852

  
853 853
.mod_events_latest_time {
854 854
	//float: left;
855 855
	position: relative;
......
982 982
.readon-button:hover {
983 983
}
984 984
.newsletter .uk-h2 {font-size:28px!important;}
985
.newsletter .uk-icon { 
985
.newsletter .uk-icon {
986 986
padding-left: 10px;
987 987
padding-bottom: 15px;
988 988
vertical-align: middle;
......
993 993
margin-bottom:0;
994 994
}
995 995

  
996
.newsletter .acymailing_mootoolsbutton a:link, 
996
.newsletter .acymailing_mootoolsbutton a:link,
997 997
.newsletter .acymailing_mootoolsbutton a:visited {
998 998
background:none!important;
999 999
border:none!important;
......
1039 1039
background-image:none!important;
1040 1040
}
1041 1041

  
1042
.newsletter .acysubbuttons input.button:hover, .newsletter .acysubbuttons .button:hover, 
1043
.newsletter .acysubbuttons button.validate:hover, .newsletter .acymailing_mootoolsbutton a:hover, 
1042
.newsletter .acysubbuttons input.button:hover, .newsletter .acysubbuttons .button:hover,
1043
.newsletter .acysubbuttons button.validate:hover, .newsletter .acymailing_mootoolsbutton a:hover,
1044 1044
.newsletter .acymailing_mootoolsbutton a:active {
1045 1045
box-shadow:none!important;
1046 1046
-moz-box-shadow:none!important;
......
1070 1070
	box-shadow: 0px 0px 0px;
1071 1071
	border-radius:0px!important;
1072 1072
	display: inline-table!important;
1073
	text-transform:none!important;	
1073
	text-transform:none!important;
1074 1074
	font-size: 14px;
1075 1075
	font-family: 'Roboto Slab', serif;
1076 1076
	font-size: 16px;
1077 1077
	line-height: 23px;
1078 1078
	font-weight: 500 !important;
1079 1079
}
1080
.loginLink { 
1080
.loginLink {
1081 1081
text-transform:none!important;
1082 1082
color: rgba(0, 0, 0, 0.8)!important;
1083 1083
}
1084 1084

  
1085 1085
/*.btl-panel {
1086
	background: url(../images/key_login.png) right 40% no-repeat;	
1086
	background: url(../images/key_login.png) right 40% no-repeat;
1087 1087
}*/
1088 1088
#btl-panel-login >span {
1089
	border: 5px solid #d0d0d0!important;	
1089
	border: 5px solid #d0d0d0!important;
1090 1090
}
1091 1091
.uk-navbar-item .btlogin{ color: red!important;
1092 1092
}
......
1237 1237
background-repeat: no-repeat;
1238 1238
 background-position: 98% 50%;
1239 1239
}
1240
.ifaq-tpl-clean_blue_arrow .collapse-close:hover { 
1240
.ifaq-tpl-clean_blue_arrow .collapse-close:hover {
1241 1241
	background:transparent;
1242 1242
}
1243 1243

  
......
1349 1349
.omtd_secondary > .uk-section-default,
1350 1350
.omtd_secondary.uk-section-default{
1351 1351
	background:#35C2CE!important;
1352
}
1352
}
1353

  
1354
.uk-navbar-dropdown-nav > li > a:hover, .uk-navbar-dropdown-nav > li > a:focus {
1355
  color: #28beFF;
1356
}
1357

  
1358
.clear-style {
1359
  padding-left: 0px;
1360
}
modules/uoa-repository-dashboard-gui/trunk/webpack.config.js
99 99
          PRODUCTION: JSON.stringify(false),
100 100
          API_ENDPOINT: JSON.stringify(process.env.API_ENDPOINT || "http://aleka.athenarc.gr:8380/repomanager-service-dev"),
101 101
          FAQ_ENDPOINT: JSON.stringify(process.env.FAQ_ENDPOINT || "http://aleka.athenarc.gr:5555/api"),
102
          AAI_ENDPOINT: JSON.stringify(process.env.AAI_ENDPOINT || "http://aleka.athenarc.gr:8380/repomanager-service-dev/openid_connect_login")
102
          AAI_ENDPOINT: JSON.stringify(process.env.AAI_ENDPOINT || "http://aleka.athenarc.gr:8380/repomanager-service-dev/openid_connect_login"),
103
          FAQ_HOMEPAGE: JSON.stringify(process.env.FAQ_HOMEPAGE || "http://aleka.athenarc.gr:5555"),
104
          BASE_URL: JSON.stringify(process.env.FAQ_HOMEPAGE || "http://aleka.athenarc.gr:3000")
103 105
        }
104 106
      })
105 107
    );
......
126 128
          PRODUCTION: JSON.stringify(true),
127 129
          API_ENDPOINT: JSON.stringify("http://aleka.athenarc.gr:8380/repomanager-service-dev"),
128 130
          FAQ_ENDPOINT: JSON.stringify("http://aleka.athenarc.gr:5555/api"),
129
          AAI_ENDPOINT: JSON.stringify("http://aleka.athenarc.gr:8380/repomanager-service-dev/openid_connect_login")
131
          AAI_ENDPOINT: JSON.stringify("http://aleka.athenarc.gr:8380/repomanager-service-dev/openid_connect_login"),
132
          FAQ_HOMEPAGE: JSON.stringify("http://aleka.athenarc.gr:5555"),
133
          BASE_URL: JSON.stringify("http://aleka.athenarc.gr:3000")
130 134
        }
131 135
      })
132 136
    );

Also available in: Unified diff