+
block
{{"perms.unauthorized" | translate}}
diff --git a/web/angular/src/app/project-perms/project-perms.component.ts b/web/angular/src/app/project-perms/project-perms.component.ts
index c081c6a..1a6ea22 100644
--- a/web/angular/src/app/project-perms/project-perms.component.ts
+++ b/web/angular/src/app/project-perms/project-perms.component.ts
@@ -1,12 +1,14 @@
import {Component, OnInit} from '@angular/core';
import {ApiService} from "../api.service";
import {Project} from "../models/project";
-import {ActivatedRoute, Router} from "@angular/router";
-import {MessengerService} from "../messenger.service";
-import {TranslateService} from "@ngx-translate/core";
+import {ActivatedRoute} from "@angular/router";
import * as moment from "moment"
import {WorkerAccess} from "../models/worker-access";
+import {AuthService} from "../auth.service";
+import {Manager, ManagerRoleOnProject} from "../models/manager";
+import {MessengerService} from "../messenger.service";
+import {TranslateService} from "@ngx-translate/core";
@Component({
selector: 'app-project-perms',
@@ -17,14 +19,15 @@ export class ProjectPermsComponent implements OnInit {
constructor(private apiService: ApiService,
private route: ActivatedRoute,
- private messengerService: MessengerService,
private translate: TranslateService,
- private router: Router) {
+ private messenger: MessengerService,
+ public auth: AuthService) {
}
project: Project;
private projectId: number;
accesses: WorkerAccess[];
+ managerRoles: ManagerRoleOnProject;
unauthorized: boolean = false;
moment = moment;
@@ -33,17 +36,24 @@ export class ProjectPermsComponent implements OnInit {
this.projectId = params["id"];
this.getProject();
this.getProjectAccesses();
+ this.getProjectManagers();
})
}
public acceptRequest(wa: WorkerAccess) {
this.apiService.acceptWorkerAccessRequest(wa.worker.id, this.projectId)
- .subscribe(() => this.getProjectAccesses())
+ .subscribe(() => {
+ this.getProjectAccesses();
+ this.translate.get("perms.set").subscribe(t => this.messenger.show(t));
+ })
}
public rejectRequest(wa: WorkerAccess) {
this.apiService.rejectWorkerAccessRequest(wa.worker.id, this.projectId)
- .subscribe(() => this.getProjectAccesses())
+ .subscribe(() => {
+ this.getProjectAccesses();
+ this.translate.get("perms.set").subscribe(t => this.messenger.show(t));
+ })
}
private getProject() {
@@ -64,7 +74,31 @@ export class ProjectPermsComponent implements OnInit {
})
}
+ private getProjectManagers() {
+ this.apiService.getManagerListWithRoleOn(this.projectId)
+ .subscribe(data => {
+ this.managerRoles = data["content"]["managers"].map(d =>
+ ManagerRoleOnProject.fromEntity(d))
+ })
+ }
+
public refresh() {
- this.getProjectAccesses()
+ this.getProjectAccesses();
+ this.getProjectManagers();
+ }
+
+ public onSelectManager(manager: Manager) {
+ if (manager.id != this.auth.account.id) {
+ this.apiService.setManagerRoleOnProject(this.projectId, 1, manager.id)
+ .subscribe(() => this.refresh())
+ }
+ }
+
+ public onRoleChange(manager: ManagerRoleOnProject) {
+ this.apiService.setManagerRoleOnProject(this.projectId, manager.role, manager.manager.id)
+ .subscribe(() => {
+ this.refresh();
+ this.translate.get("perms.set").subscribe(t => this.messenger.show(t));
+ })
}
}
diff --git a/web/angular/src/app/project-select/project-select.component.html b/web/angular/src/app/project-select/project-select.component.html
index cbc6745..60e7c37 100644
--- a/web/angular/src/app/project-select/project-select.component.html
+++ b/web/angular/src/app/project-select/project-select.component.html
@@ -11,8 +11,7 @@
{{"project_select.none" | translate}}
- public
- lock
+
{{p.id}}
{{p.name}}
diff --git a/web/angular/src/app/update-project/update-project.component.html b/web/angular/src/app/update-project/update-project.component.html
index c44c5c4..e1a6630 100644
--- a/web/angular/src/app/update-project/update-project.component.html
+++ b/web/angular/src/app/update-project/update-project.component.html
@@ -5,25 +5,37 @@
diff --git a/web/angular/src/assets/i18n/en.json b/web/angular/src/assets/i18n/en.json
index b963c6c..e4fa40b 100644
--- a/web/angular/src/assets/i18n/en.json
+++ b/web/angular/src/assets/i18n/en.json
@@ -51,7 +51,7 @@
},
"project": {
"name": "Project name",
- "clone_url": "Clone url",
+ "clone_url": "Git clone url",
"clone_url_placeholder": "Example: \"https://github.com/simon987/task_tracker\"",
"git_repo_placeholder": "Example: \"simon987/task_tracker\"",
"git_repo_hint": "Changes in the master branch will be tracked if webhooks are enabled",
@@ -65,7 +65,9 @@
"motd": "Message of the day",
"update": "Edit",
"perms": "Permissions",
- "chain": "Chain tasks to"
+ "chain": "Chain tasks to",
+ "manager_select": "Give access to manager",
+ "version": "Git version (commit hash)"
},
"dashboard": {
"title": "Dashboard for",
@@ -107,7 +109,14 @@
"refresh": "Refresh",
"pending": "(Pending)",
"assign": "Assign",
- "submit": "Submit"
+ "submit": "Submit",
+ "read": "Read",
+ "edit": "Edit",
+ "manage": "Manage permissions",
+ "set": "Changes saved",
+ "workers": "Workers",
+ "no_workers": "No workers have explicit access to this project",
+ "managers": "Managers"
},
"messenger": {
"close": "Close",
diff --git a/web/angular/src/assets/i18n/fr.json b/web/angular/src/assets/i18n/fr.json
index 578611b..827db1d 100644
--- a/web/angular/src/assets/i18n/fr.json
+++ b/web/angular/src/assets/i18n/fr.json
@@ -66,7 +66,9 @@
"motd": "Message du jour",
"update": "Mettre à jour",
"perms": "Permissions",
- "chain": "Enchainer les tâches vers"
+ "chain": "Enchainer les tâches vers",
+ "manager_select": "Donner accès à",
+ "version": "Version git (hash du commit)"
},
"dashboard": {
"title": "Tableau de bord pour ",
@@ -100,7 +102,7 @@
},
"perms": {
"title": "Permissions du projet",
- "subtitle": "Les Workers doivent faire un requête d'acces pour pouvoir travailler sur les projets privés",
+ "subtitle": "Les Workers doivent faire une requête d'acces pour pouvoir travailler sur les projets privés",
"unauthorized": "Vous devez avoir ROLE_GESTION_ACCES sur ce project pour accéder à cette page",
"created": "Créé le",
"grant": "Accepter la requête",
@@ -109,7 +111,14 @@
"refresh": "Refraichir",
"pending": "(En attente)",
"assign": "Assigner",
- "submit": "Soumettre"
+ "submit": "Soumettre",
+ "read": "Lecture",
+ "edit": "Modification",
+ "manage": "Gestion des permissions",
+ "set": "Changements enregistrés",
+ "workers": "Workers",
+ "no_workers": "Aucun Worker n'a explicitement accès à ce projet",
+ "managers": "Managers"
},
"messenger": {
"close": "Fermer",
diff --git a/web/angular/src/styles.css b/web/angular/src/styles.css
index b6ac0cd..dc548cb 100644
--- a/web/angular/src/styles.css
+++ b/web/angular/src/styles.css
@@ -99,3 +99,12 @@ pre {
color: #ff4081;
}
+.spacer {
+ flex: 1 1 auto;
+}
+
+.mat-list-item-content > mat-icon {
+ margin-right: 15px;
+}
+
+