Revision 61385
Added by Stefania Martziou almost 3 years ago
modules/uoa-repository-dashboard-gui/branches/multiuser-access/src/app/pages/join/join.component.ts | ||
---|---|---|
41 | 41 |
} |
42 | 42 |
|
43 | 43 |
getReposOfUser(): void { |
44 |
this.repositoryService.getRepositoriesOfUser() |
|
44 |
this.repositoryService.getRepositoriesSnippetsOfUser()
|
|
45 | 45 |
.subscribe( |
46 | 46 |
repos => { |
47 | 47 |
this.repositoriesOfUser = repos; |
modules/uoa-repository-dashboard-gui/branches/multiuser-access/src/app/pages/repository/update/update-repo-admins.component.html | ||
---|---|---|
1 |
<div class="uk-margin-small-top"> |
|
2 |
<div>Update the users who can access the dashboard to manage the datasource.</div> |
|
3 |
|
|
4 |
<div *ngIf="errorMessage" class="uk-alert uk-alert-danger">{{errorMessage}}</div> |
|
5 |
<div *ngIf="loadingMessage" class="loading-medium"> |
|
6 |
<div class="loader-small" style="text-align: center; padding-top: 170px; color: rgb(47, 64, 80); font-weight: bold;"> |
|
7 |
{{ loadingMessage }} |
|
8 |
</div> |
|
9 |
<div class="whiteFilm"></div> |
|
10 |
</div> |
|
11 |
|
|
12 |
<div *ngIf="!loadingMessage" > |
|
13 |
|
|
14 |
<div class="uk-margin-top"> |
|
15 |
<div class="uk-flex uk-flex-right@m uk-flex-right@l"> |
|
16 |
<a class="uk-button uk-button-primary action uk-flex uk-flex-middle" (click)="showAddRepoAdminModal()"> |
|
17 |
<!--<i class="md-icon material-icons">clear</i>--> |
|
18 |
<span class="uk-margin-small-left">Invite admin</span> |
|
19 |
</a> |
|
20 |
</div> |
|
21 |
</div> |
|
22 |
|
|
23 |
<div class="uk-margin-medium-top"> |
|
24 |
<div *ngFor="let repoAdmin of repoAdmins" class="uk-grid uk-grid-divider uk-flex uk-flex-middle" uk-grid=""> |
|
25 |
<div class="uk-width-3-4@l uk-width-1-2@m uk-first-column"> |
|
26 |
<div class=""> |
|
27 |
<span class="uk-text-muted">Email: </span> |
|
28 |
<span class="uk-text-bold">{{repoAdmin.email}}</span> |
|
29 |
</div> |
|
30 |
</div> |
|
31 |
<div class="uk-width-expand"> |
|
32 |
<div class="uk-flex uk-flex-center"> |
|
33 |
<a class="uk-button uk-button-default action uk-flex uk-flex-middle" (click)="showDeletionModal(repoAdmin)"> |
|
34 |
<i class="md-icon material-icons">clear</i> |
|
35 |
<span class="uk-margin-small-left">Remove</span> |
|
36 |
</a> |
|
37 |
</div> |
|
38 |
</div> |
|
39 |
</div> |
|
40 |
</div> |
|
41 |
|
|
42 |
</div> |
|
43 |
|
|
44 |
</div> |
|
45 |
|
|
46 |
<confirmation-dialog #deleteRepositoryAdminModal [title]="'Remove datasource admin'" [isModalShown]="isDeleteModalShown" |
|
47 |
[confirmButNotCloseButton]="'Remove'" (emitObject)="deleteRepoAdmin($event)"> |
|
48 |
|
|
49 |
<div *ngIf="modalErrorMessage" class="uk-alert uk-alert-danger">{{modalErrorMessage}}</div> |
|
50 |
|
|
51 |
<div *ngIf="modalLoadingMessage" class="loading-small"> |
|
52 |
<div class="loader-small" style="text-align: center; padding-top: 170px; color: rgb(47, 64, 80); font-weight: bold;"> |
|
53 |
{{ modalLoadingMessage }} |
|
54 |
</div> |
|
55 |
<div class="whiteFilm"></div> |
|
56 |
</div> |
|
57 |
|
|
58 |
<!--<div *ngIf="!modalLoadingMessage && !modalErrorMessage">--> |
|
59 |
|
|
60 |
<!--<div *ngIf="selectedAdminForDelete">--> |
|
61 |
<!--<h6>Are you sure you want to delete {{ selectedAdminForDelete.email }} from the list of repository admins?</h6>--> |
|
62 |
<!--</div>--> |
|
63 |
<!--</div>--> |
|
64 |
<div *ngIf="selectedAdminForDelete"> |
|
65 |
<h6>Are you sure you want to remove this user admin?</h6> |
|
66 |
<pre> |
|
67 |
<ng-container *ngIf="selectedAdminForDelete.firstName || selectedAdminForDelete.lastName"> |
|
68 |
{{selectedAdminForDelete.firstName}} {{selectedAdminForDelete.lastName}} |
|
69 |
</ng-container> |
|
70 |
{{ selectedAdminForDelete.email }} |
|
71 |
</pre> |
|
72 |
</div> |
|
73 |
|
|
74 |
</confirmation-dialog> |
|
75 |
|
|
76 |
|
|
77 |
<confirmation-dialog #addRepositoryAdminModal [title]="'Add new datasource admin'" [isModalShown]="isAddModalShown" |
|
78 |
[confirmButNotCloseButton]="'Submit'" (emitObject)="addRepositoryAdmin($event)"> |
|
79 |
|
|
80 |
<div *ngIf="modalErrorMessage" class="uk-alert uk-alert-danger">{{modalErrorMessage}}</div> |
|
81 |
|
|
82 |
<div *ngIf="modalLoadingMessage" class="loading-small"> |
|
83 |
<div class="loader-small" style="text-align: center; padding-top: 170px; color: rgb(47, 64, 80); font-weight: bold;"> |
|
84 |
{{ modalLoadingMessage }} |
|
85 |
</div> |
|
86 |
<div class="whiteFilm"></div> |
|
87 |
</div> |
|
88 |
|
|
89 |
<h6>Add the email address of the new user admin. Make sure the user already has an OpenAIRE account with this email address.</h6> |
|
90 |
<form> |
|
91 |
<div class="uk-margin"> |
|
92 |
<input class="uk-input" placeholder="Enter email..." [formControl]="emailControl"> |
|
93 |
</div> |
|
94 |
</form> |
|
95 |
</confirmation-dialog> |
|
96 |
|
|
97 |
|
|
98 |
|
|
99 |
<!--<div id="addAdminModal" uk-modal>--> |
|
100 |
<!--<div class="uk-modal-dialog" style="top: 95.5px;">--> |
|
101 |
<!--<div class="uk-modal-header">--> |
|
102 |
<!--<h3 class="uk-modal-title">Adding a new repository admin for this repository</h3>--> |
|
103 |
<!--</div>--> |
|
104 |
<!--<div class="uk-modal-body">--> |
|
105 |
<!--<p>Lorem ipsum.....</p>--> |
|
106 |
<!--</div>--> |
|
107 |
<!--<div class="uk-modal-footer uk-text-right">--> |
|
108 |
<!--<button type="button" class="md-btn md-btn-flat uk-modal-close">Cancel</button>--> |
|
109 |
<!--<button (click)="addRepositoryAdmin()" type="button" class="md-btn md-btn-flat md-btn-flat-primary">Add admin</button>--> |
|
110 |
<!--</div>--> |
|
111 |
<!--</div>--> |
|
112 |
|
|
113 |
|
|
114 |
|
|
115 |
<!--<!–<div *ngIf="!loadingMessage" class="uk-modal-dialog uk-modal-body">–>--> |
|
116 |
<!--<!–<div *ngIf="selectedAdminForDelete">–>--> |
|
117 |
<!--<!–<h6>Are you sure you want to delete {{ selectedAdminForDelete.email }} from the list of repository admins?</h6>–>--> |
|
118 |
<!--<!–<!–<p>Deleting a {{serviceORresource}} is an irreversible action.</p>–>–>--> |
|
119 |
<!--<!–</div>–>--> |
|
120 |
<!--<!–<button class="uk-button uk-button-danger uk-modal-close" type="button" (click)="deleteRepoAdmin(selectedAdminForDelete.email)">Delete</button>–>--> |
|
121 |
<!--<!–<button class="uk-button uk-button-primary uk-modal-close" type="button" (click)="closeDeletionModal()">Cancel</button>–>--> |
|
122 |
<!--<!–</div>–>--> |
|
123 |
<!--<!–<div *ngIf="loadingMessage">–>--> |
|
124 |
<!--<!–<div class="loader-small" style="text-align: center; padding-top: 170px; color: rgb(47, 64, 80); font-weight: bold;">–>--> |
|
125 |
<!--<!–{{ loadingMessage }}–>--> |
|
126 |
<!--<!–</div>–>--> |
|
127 |
<!--<!–<!– <div class="whiteFilm"></div>–>–>--> |
|
128 |
<!--<!–</div>–>--> |
|
129 |
<!--</div>--> |
modules/uoa-repository-dashboard-gui/branches/multiuser-access/src/app/pages/repository/update/update-repo-admins.component.ts | ||
---|---|---|
1 |
import {Component, Input, OnChanges, SimpleChanges, ViewChild} from '@angular/core'; |
|
2 |
import { Repository, User } from '../../../domain/typeScriptClasses'; |
|
3 |
import { RepositoryService } from '../../../services/repository.service'; |
|
4 |
import {loadingRepoMessage} from '../../../domain/shared-messages'; |
|
5 |
import {ConfirmationDialogComponent} from '../../../shared/reusablecomponents/confirmation-dialog.component'; |
|
6 |
import {FormControl} from '@angular/forms'; |
|
7 |
|
|
8 |
declare var UIkit: any; |
|
9 |
|
|
10 |
@Component ({ |
|
11 |
selector: 'app-update-repo-admins', |
|
12 |
templateUrl: 'update-repo-admins.component.html', |
|
13 |
}) |
|
14 |
|
|
15 |
export class UpdateRepoAdminsComponent implements OnChanges { |
|
16 |
|
|
17 |
@Input() repo: Repository; |
|
18 |
|
|
19 |
loadingMessage: string; |
|
20 |
errorMessage: string; |
|
21 |
|
|
22 |
repoAdmins: User[]; |
|
23 |
|
|
24 |
selectedAdminForDelete: User; |
|
25 |
|
|
26 |
isDeleteModalShown: boolean; |
|
27 |
@ViewChild('deleteRepositoryAdminModal') |
|
28 |
public deleteRepositoryAdminModal: ConfirmationDialogComponent; |
|
29 |
|
|
30 |
isAddModalShown: boolean; |
|
31 |
@ViewChild('addRepositoryAdminModal') |
|
32 |
public addRepositoryAdminModal: ConfirmationDialogComponent; |
|
33 |
|
|
34 |
modalErrorMessage: string; |
|
35 |
modalLoadingMessage: string; |
|
36 |
|
|
37 |
emailControl = new FormControl(); |
|
38 |
|
|
39 |
constructor (private repoService: RepositoryService) { } |
|
40 |
|
|
41 |
ngOnChanges(changes: SimpleChanges): void { |
|
42 |
this.getRepositoryAdmins(); |
|
43 |
} |
|
44 |
|
|
45 |
getRepositoryAdmins() { |
|
46 |
|
|
47 |
this.loadingMessage = 'Retrieving repository\'s admins...'; |
|
48 |
|
|
49 |
this.repoService.getRepositoryAdmins(this.repo.id).subscribe( |
|
50 |
users => { |
|
51 |
this.repoAdmins = users; |
|
52 |
}, |
|
53 |
error => { |
|
54 |
console.log(error); |
|
55 |
this.loadingMessage = ''; |
|
56 |
this.errorMessage = 'Error retrieving the repository\'s admins'; |
|
57 |
}, |
|
58 |
() => { |
|
59 |
this.loadingMessage = ''; |
|
60 |
} |
|
61 |
); |
|
62 |
} |
|
63 |
|
|
64 |
showDeletionModal(repoAdmin: User) { |
|
65 |
|
|
66 |
this.errorMessage = ''; |
|
67 |
this.loadingMessage = ''; |
|
68 |
|
|
69 |
this.selectedAdminForDelete = repoAdmin; |
|
70 |
if (this.selectedAdminForDelete) { |
|
71 |
this.deleteRepositoryAdminModal.showModal(); |
|
72 |
// UIkit.modal('#deletionModal').show(); |
|
73 |
} |
|
74 |
} |
|
75 |
|
|
76 |
closeDeletionModal() { |
|
77 |
this.selectedAdminForDelete = null; |
|
78 |
this.deleteRepositoryAdminModal.hideModal(); |
|
79 |
// UIkit.modal('#deletionModal').hide(); |
|
80 |
} |
|
81 |
|
|
82 |
deleteRepoAdmin(event: any) { |
|
83 |
console.log('deleting: ', this.selectedAdminForDelete.email); |
|
84 |
|
|
85 |
// this.deleteRepositoryAdminModal.hideModal(); |
|
86 |
this.modalLoadingMessage = 'Deleting admin...'; |
|
87 |
|
|
88 |
this.repoService.deleteRepositoryAdmin(this.repo.id, this.selectedAdminForDelete.email).subscribe( |
|
89 |
res => { |
|
90 |
this.selectedAdminForDelete = null; |
|
91 |
this.deleteRepositoryAdminModal.hideModal(); |
|
92 |
this.getRepositoryAdmins(); |
|
93 |
}, |
|
94 |
error => { |
|
95 |
console.log('Error deleting repository\'s admins', error); |
|
96 |
this.modalLoadingMessage = ''; |
|
97 |
this.modalErrorMessage = 'Error deleting admin'; |
|
98 |
}, |
|
99 |
() => { |
|
100 |
this.modalLoadingMessage = ''; |
|
101 |
// this.deleteRepositoryAdminModal.hideModal(); |
|
102 |
} |
|
103 |
); |
|
104 |
|
|
105 |
} |
|
106 |
|
|
107 |
showAddRepoAdminModal() { |
|
108 |
|
|
109 |
this.emailControl.reset(); |
|
110 |
|
|
111 |
this.modalErrorMessage = ''; |
|
112 |
this.modalLoadingMessage = ''; |
|
113 |
|
|
114 |
this.addRepositoryAdminModal.showModal(); |
|
115 |
// UIkit.modal('#addAdminModal').show(); |
|
116 |
} |
|
117 |
|
|
118 |
addRepositoryAdmin() { |
|
119 |
|
|
120 |
this.modalLoadingMessage = 'Adding repository admin'; |
|
121 |
|
|
122 |
console.log('Adding repository admin..', this.emailControl.value); |
|
123 |
|
|
124 |
this.repoService.addRepositoryAdmin(this.repo.id, this.emailControl.value).subscribe( |
|
125 |
res => { |
|
126 |
this.addRepositoryAdminModal.hideModal(); |
|
127 |
this.getRepositoryAdmins(); |
|
128 |
}, error => { |
|
129 |
console.log('Error adding repository admin', error); |
|
130 |
this.modalLoadingMessage = ''; |
|
131 |
if(error.status === 404) { |
|
132 |
this.modalErrorMessage = 'This email address is not associated with an OpenAIRE user account.\n' + |
|
133 |
'Please make sure the user has an OpenAIRE account and then try again.'; |
|
134 |
} else { |
|
135 |
this.modalErrorMessage = 'Error deleting the user admin, please try again. If the error persists, ' + |
|
136 |
'please contact helpdesk@openaire.eu'; |
|
137 |
} |
|
138 |
}, |
|
139 |
() => { |
|
140 |
this.modalLoadingMessage = ''; |
|
141 |
} |
|
142 |
); |
|
143 |
|
|
144 |
// UIkit.modal('#addAdminModal').hide(); |
|
145 |
} |
|
146 |
|
|
147 |
} |
modules/uoa-repository-dashboard-gui/branches/multiuser-access/src/app/pages/repository/update/sources-update-repo.component.html | ||
---|---|---|
84 | 84 |
</div> |
85 | 85 |
</li> |
86 | 86 |
<li> |
87 |
<div class="uk-margin-small-top"> |
|
88 |
<div>This is a mock representation of the update admins functionality coming soon..</div> |
|
89 |
<div class="uk-margin-top"> |
|
90 |
<div class="uk-flex uk-flex-right@m uk-flex-right@l"> |
|
91 |
<a class="uk-button uk-button-primary action uk-flex uk-flex-middle"> |
|
92 |
<!--<i class="md-icon material-icons">clear</i>--> |
|
93 |
<span class="uk-margin-small-left">Invite admin</span> |
|
94 |
</a> |
|
95 |
</div> |
|
96 |
</div> |
|
97 |
<div class="uk-margin-medium-top"> |
|
98 |
<div class="uk-grid uk-grid-divider uk-flex uk-flex-middle" uk-grid=""> |
|
99 |
<div class="uk-width-3-4@l uk-width-1-2@m uk-first-column"> |
|
100 |
<div class=""> |
|
101 |
<span class="uk-text-muted">Email: </span> |
|
102 |
<span class="uk-text-bold">admin1@gmail.com</span> |
|
103 |
</div> |
|
104 |
</div> |
|
105 |
<div class="uk-width-expand"> |
|
106 |
<div class="uk-flex uk-flex-center"> |
|
107 |
<a class="uk-button uk-button-default action uk-flex uk-flex-middle"> |
|
108 |
<i class="md-icon material-icons">clear</i> |
|
109 |
<span class="uk-margin-small-left">Remove</span> |
|
110 |
</a> |
|
111 |
</div> |
|
112 |
</div> |
|
113 |
</div> |
|
114 |
<div class="uk-grid uk-grid-divider uk-flex uk-flex-middle" uk-grid=""> |
|
115 |
<div class="uk-width-3-4@l uk-width-1-2@m uk-first-column"> |
|
116 |
<div class=""> |
|
117 |
<span class="uk-text-muted">Email: </span> |
|
118 |
<span class="uk-text-bold">admin2@gmail.com</span> |
|
119 |
</div> |
|
120 |
</div> |
|
121 |
<div class="uk-width-expand"> |
|
122 |
<div class="uk-flex uk-flex-center"> |
|
123 |
<a class="uk-button uk-button-default action uk-flex uk-flex-middle"> |
|
124 |
<i class="md-icon material-icons">clear</i> |
|
125 |
<span class="uk-margin-small-left">Remove</span> |
|
126 |
</a> |
|
127 |
</div> |
|
128 |
</div> |
|
129 |
</div> |
|
130 |
</div> |
|
131 |
</div> |
|
87 |
<app-update-repo-admins [repo]="repo"></app-update-repo-admins> |
|
132 | 88 |
</li> |
133 | 89 |
<li class="el-item"> |
134 | 90 |
<div> |
modules/uoa-repository-dashboard-gui/branches/multiuser-access/src/app/pages/repository/update/sources-update-repo.component.ts | ||
---|---|---|
8 | 8 |
import { ConfirmationDialogComponent } from '../../../shared/reusablecomponents/confirmation-dialog.component'; |
9 | 9 |
import { AuthenticationService } from '../../../services/authentication.service'; |
10 | 10 |
import { DatasourceNewInterfaceFormComponent } from '../../../shared/reusablecomponents/sources-forms/datasource-new-interface-form.component'; |
11 |
import {SharedService} from "../../../services/shared.service";
|
|
11 |
import { SharedService } from '../../../services/shared.service';
|
|
12 | 12 |
|
13 | 13 |
@Component ({ |
14 | 14 |
selector: 'sources-update-repo', |
modules/uoa-repository-dashboard-gui/branches/multiuser-access/src/app/pages/repository/repository.module.ts | ||
---|---|---|
3 | 3 |
import { TabsModule } from 'ngx-bootstrap'; |
4 | 4 |
import { ReusableComponentsModule } from '../../shared/reusablecomponents/reusable-components.module'; |
5 | 5 |
import { FormsModule, ReactiveFormsModule } from '@angular/forms'; |
6 |
import { RepositoryComponent } from "./repository.component"; |
|
7 |
import { RepositoryRoutingModule } from "./repository-routing.module"; |
|
8 |
import { DashboardComponent } from "./dashboard/dashboard.component"; |
|
9 |
import {AuthenticationInterceptor} from "../../services/authentication-interceptor"; |
|
10 |
import {UsagestatsService} from "../../services/usagestats.service"; |
|
11 |
import {RepositoryService} from "../../services/repository.service"; |
|
12 |
import {AuthGuardService} from "../../services/auth-guard.service"; |
|
13 |
import {ValidatorService} from "../../services/validator.service"; |
|
14 |
import {AuthenticationService} from "../../services/authentication.service"; |
|
15 |
import {MonitorService} from "../../services/monitor.service"; |
|
16 |
import {PiwikService} from "../../services/piwik.service"; |
|
17 |
import {StatisticsService} from "../../services/statistics.service"; |
|
18 |
import {BrokerService} from "../../services/broker.service"; |
|
19 |
import {DashboardService} from "../../services/dashboard.service"; |
|
20 |
import { SharedService } from "../../services/shared.service"; |
|
21 |
import { SourcesUpdateRepoComponent } from "./update/sources-update-repo.component"; |
|
22 |
import {SourcesModule} from '../sources/sources.module'; |
|
6 |
import { RepositoryComponent } from './repository.component'; |
|
7 |
import { RepositoryRoutingModule } from './repository-routing.module'; |
|
8 |
import { DashboardComponent } from './dashboard/dashboard.component'; |
|
9 |
import {AuthenticationInterceptor} from '../../services/authentication-interceptor'; |
|
10 |
import {UsagestatsService} from '../../services/usagestats.service'; |
|
11 |
import {RepositoryService} from '../../services/repository.service'; |
|
12 |
import {AuthGuardService} from '../../services/auth-guard.service'; |
|
13 |
import {ValidatorService} from '../../services/validator.service'; |
|
14 |
import {AuthenticationService} from '../../services/authentication.service'; |
|
15 |
import {MonitorService} from '../../services/monitor.service'; |
|
16 |
import {PiwikService} from '../../services/piwik.service'; |
|
17 |
import {StatisticsService} from '../../services/statistics.service'; |
|
18 |
import {BrokerService} from '../../services/broker.service'; |
|
19 |
import {DashboardService} from '../../services/dashboard.service'; |
|
20 |
import { SharedService } from '../../services/shared.service'; |
|
21 |
import { SourcesUpdateRepoComponent } from './update/sources-update-repo.component'; |
|
22 |
import { SourcesModule } from '../sources/sources.module'; |
|
23 |
import { UpdateRepoAdminsComponent } from './update/update-repo-admins.component'; |
|
23 | 24 |
|
24 | 25 |
@NgModule ({ |
25 | 26 |
imports: [ |
... | ... | |
36 | 37 |
RepositoryComponent, |
37 | 38 |
DashboardComponent, |
38 | 39 |
SourcesUpdateRepoComponent, |
40 |
UpdateRepoAdminsComponent |
|
39 | 41 |
// SourcesComponent, |
40 | 42 |
// SourcesRegisterComponent, |
41 | 43 |
// SourcesUpdateComponent, |
modules/uoa-repository-dashboard-gui/branches/multiuser-access/src/app/services/repository.service.ts | ||
---|---|---|
12 | 12 |
RepositoryInterface, |
13 | 13 |
RepositorySnippet, RepositorySummaryInfo, |
14 | 14 |
Timezone, |
15 |
Typology |
|
15 |
Typology, User
|
|
16 | 16 |
} from '../domain/typeScriptClasses'; |
17 | 17 |
import { Observable, of } from 'rxjs'; |
18 | 18 |
import { timezones } from '../domain/timezones'; |
... | ... | |
28 | 28 |
|
29 | 29 |
@Injectable () |
30 | 30 |
export class RepositoryService { |
31 |
private apiUrl = environment.API_ENDPOINT + '/repository/';
|
|
31 |
private apiUrl = environment.API_ENDPOINT + '/repositories/';
|
|
32 | 32 |
private dashboardAPIUrl = environment.API_ENDPOINT + '/dashboard/'; |
33 | 33 |
|
34 | 34 |
constructor(private httpClient: HttpClient) { } |
... | ... | |
91 | 91 |
return this.httpClient.get<RepositorySnippet[]>(url, headerOptions); |
92 | 92 |
} |
93 | 93 |
|
94 |
getRepositoriesOfUser(): Observable<RepositorySnippet[]> { |
|
95 |
const url = `${this.apiUrl}getRepositoriesOfUser/0/100`;
|
|
94 |
getRepositoriesSnippetsOfUser(): Observable<RepositorySnippet[]> {
|
|
95 |
const url = `${this.apiUrl}snippets/user`;
|
|
96 | 96 |
console.log(`knocking on: ${url}`); |
97 | 97 |
return this.httpClient.get<RepositorySnippet[]>(url, headerOptions); |
98 | 98 |
} |
99 | 99 |
|
100 | 100 |
|
101 | 101 |
getRepositoryById(id: string): Observable<Repository> { |
102 |
const url = `${this.apiUrl}getRepositoryById/${id}`; |
|
102 |
const url = `${this.apiUrl}getRepositoryById/${id}`;
|
|
103 | 103 |
console.log(`knocking on: ${url}`); |
104 | 104 |
return this.httpClient.get<Repository>(url, headerOptions); |
105 | 105 |
} |
... | ... | |
144 | 144 |
} |
145 | 145 |
|
146 | 146 |
getCountries(): Observable<Country[]> { |
147 |
const url = `${this.apiUrl}getCountries`;
|
|
147 |
const url = `${this.apiUrl}countries`;
|
|
148 | 148 |
console.log(`knocking on: ${url}`); |
149 | 149 |
return this.httpClient.get<Country[]>(url, headerOptions); |
150 | 150 |
} |
... | ... | |
193 | 193 |
console.log(`knocking on: ${url}`); |
194 | 194 |
return this.httpClient.get<RepositorySummaryInfo[]>(url, headerOptions); |
195 | 195 |
} |
196 |
|
|
197 |
getRepositoryAdmins(repoId: string): Observable<User[]> { |
|
198 |
const url = `${this.apiUrl}${repoId}/admins`; |
|
199 |
console.log(`knocking on: ${url}`); |
|
200 |
return this.httpClient.get<User[]>(url, headerOptions); |
|
201 |
} |
|
202 |
|
|
203 |
deleteRepositoryAdmin(repoId: string, repoAdminEmail: string) { |
|
204 |
const url = `${this.apiUrl}${repoId}/admins/${repoAdminEmail}`; |
|
205 |
console.log(`knocking on: ${url}`); |
|
206 |
|
|
207 |
return this.httpClient.delete(url, headerOptions); |
|
208 |
} |
|
209 |
|
|
210 |
addRepositoryAdmin(repoId: string, repoAdminEmail: string) { |
|
211 |
const url = `${this.apiUrl}${repoId}/admins`; |
|
212 |
return this.httpClient.post<string>(url, repoAdminEmail, headerOptions); |
|
213 |
} |
|
196 | 214 |
} |
modules/uoa-repository-dashboard-gui/branches/multiuser-access/src/app/app.component.ts | ||
---|---|---|
72 | 72 |
} |
73 | 73 |
|
74 | 74 |
getReposOfUser(): void { |
75 |
this.repositoryService.getRepositoriesOfUser() |
|
75 |
this.repositoryService.getRepositoriesSnippetsOfUser()
|
|
76 | 76 |
.subscribe( |
77 | 77 |
repos => { this.reposOfUser = repos; }, |
78 | 78 |
error => { console.log(error); }, |
modules/uoa-repository-dashboard-gui/branches/multiuser-access/src/app/shared/reusablecomponents/repository-tiles.component.ts | ||
---|---|---|
30 | 30 |
|
31 | 31 |
getReposOfUser(): void { |
32 | 32 |
this.loadingMessage = loadingReposMessage; |
33 |
this.repoService.getRepositoriesOfUser() |
|
33 |
this.repoService.getRepositoriesSnippetsOfUser()
|
|
34 | 34 |
.subscribe( |
35 | 35 |
repos => this.reposOfUser = repos.sort( function(a, b) { |
36 | 36 |
if (a.officialname < b.officialname) { |
modules/uoa-repository-dashboard-gui/branches/multiuser-access/src/app/shared/reusablecomponents/confirmation-dialog.component.html | ||
---|---|---|
31 | 31 |
<div class="uk-modal-footer uk-text-right"> |
32 | 32 |
<button (click)="hideModal()" type="button" class="md-btn md-btn-flat uk-modal-close">{{ hideModalButton }}</button> |
33 | 33 |
<button *ngIf="confirmActionButton" (click)="confirmedAction()" type="button" class="md-btn md-btn-flat md-btn-flat-primary">{{confirmActionButton}}</button> |
34 |
<button *ngIf="confirmButNotCloseButton" (click)="confirmedButNotCloseAction()" type="button" class="md-btn md-btn-flat md-btn-flat-primary">{{confirmButNotCloseButton}}</button> |
|
34 | 35 |
</div> |
35 | 36 |
</div> |
36 | 37 |
</div> |
modules/uoa-repository-dashboard-gui/branches/multiuser-access/src/app/shared/reusablecomponents/confirmation-dialog.component.ts | ||
---|---|---|
19 | 19 |
@Input() public title: string; |
20 | 20 |
|
21 | 21 |
@Input() public confirmActionButton: string; |
22 |
@Input() public confirmButNotCloseButton: string; |
|
22 | 23 |
|
23 | 24 |
@Input() public hideModalButton: string = 'Cancel'; |
24 | 25 |
|
... | ... | |
50 | 51 |
// this.hideModal(); |
51 | 52 |
} |
52 | 53 |
} |
54 |
|
|
55 |
public confirmedButNotCloseAction() { |
|
56 |
this.emitObject.emit(this._ids); |
|
57 |
} |
|
53 | 58 |
} |
modules/uoa-repository-dashboard-gui/branches/multiuser-access/src/app/shared/sidemenu/sidemenu.component.ts | ||
---|---|---|
154 | 154 |
} |
155 | 155 |
|
156 | 156 |
getReposOfUser(): void { |
157 |
this.repositoryService.getRepositoriesOfUser() |
|
157 |
this.repositoryService.getRepositoriesSnippetsOfUser()
|
|
158 | 158 |
.subscribe( |
159 | 159 |
repos => { |
160 | 160 |
this.reposOfUser = repos; |
modules/uoa-repository-dashboard-gui/branches/multiuser-access/src/app/domain/typeScriptClasses.ts | ||
---|---|---|
716 | 716 |
aggregationDetails: AggregationDetails[]; |
717 | 717 |
lastIndexedVersion: AggregationDetails; |
718 | 718 |
} |
719 |
|
|
720 |
export class User { |
|
721 |
sub: string; |
|
722 |
firstName: string; |
|
723 |
lastName: string; |
|
724 |
email: string; |
|
725 |
} |
modules/uoa-repository-dashboard-gui/branches/multiuser-access/package-lock.json | ||
---|---|---|
4516 | 4516 |
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", |
4517 | 4517 |
"integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", |
4518 | 4518 |
"dev": true, |
4519 |
"hasInstallScript": true, |
|
4519 | 4520 |
"optional": true, |
4520 | 4521 |
"os": [ |
4521 | 4522 |
"darwin" |
Also available in: Unified diff
Finished the multiuser access functionality