diff --git a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/components/nav-menu/nav-menu.component.html b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/components/nav-menu/nav-menu.component.html
index c07bc44..63d5119 100644
--- a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/components/nav-menu/nav-menu.component.html
+++ b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/components/nav-menu/nav-menu.component.html
@@ -30,7 +30,7 @@
User Manager Portal
-
+
diff --git a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/pages/base-page/base-page.component.ts b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/pages/base-page/base-page.component.ts
index 458c606..b95dc41 100644
--- a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/pages/base-page/base-page.component.ts
+++ b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/pages/base-page/base-page.component.ts
@@ -3,6 +3,7 @@ import { RefreshService } from '../../services/button/refresh.service';
import { CreationService } from '../../services/button/creation.service';
import { UpdateService } from '../../services/button/update.service';
import { TransferService } from '../../services/button/transfer.service';
+import { ButtonVisibilityService } from '../../services/button/button-visibility.service';
@Component({
selector: 'app-base-page',
@@ -17,6 +18,7 @@ export class BasePageComponent {
protected creationService: CreationService = inject(CreationService)
protected updateService: UpdateService = inject(UpdateService)
protected transferService: TransferService = inject(TransferService)
+ protected buttonVisibilityService: ButtonVisibilityService = inject(ButtonVisibilityService)
constructor() {
this.refreshService.removeAll()
diff --git a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/pages/group/group.component.ts b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/pages/group/group.component.ts
index a76d129..49153d3 100644
--- a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/pages/group/group.component.ts
+++ b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/pages/group/group.component.ts
@@ -35,6 +35,7 @@ export class GroupComponent extends BasePageComponent implements AfterViewInit {
private sGroupId = null;
ngAfterViewInit(): void {
+ this.buttonVisibilityService.setVisibleOnly(this.refreshService, this.creationService, this.updateService)
this.refreshService.removeAll()
this.refreshService.add(() => {
this.groupTable.fetchData();
diff --git a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/pages/module/module.component.ts b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/pages/module/module.component.ts
index 5b1bef3..3fd9b7c 100644
--- a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/pages/module/module.component.ts
+++ b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/pages/module/module.component.ts
@@ -18,6 +18,7 @@ export class ModuleComponent extends BasePageComponent implements AfterViewInit
initWithoutData = () => { }
ngAfterViewInit(): void {
+ this.buttonVisibilityService.setVisibleOnly()
this.refreshService.removeAll()
this.refreshService.add(() => {
this.moduleTable.fetchData();
diff --git a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/pages/user-assignment/user-assignment.component.ts b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/pages/user-assignment/user-assignment.component.ts
index 99aca26..f27ff67 100644
--- a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/pages/user-assignment/user-assignment.component.ts
+++ b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/pages/user-assignment/user-assignment.component.ts
@@ -50,6 +50,9 @@ export class UserAssignmentComponent extends BasePageComponent implements OnInit
ngOnInit(): void { }
ngAfterViewInit(): void {
+
+ this.buttonVisibilityService.setVisibleOnly(this.refreshService, this.transferService)
+
this.refreshService.removeAll()
this.refreshService.add(() => {
this.modules.fetchData();
diff --git a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/pages/user-representation/user-representation.component.ts b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/pages/user-representation/user-representation.component.ts
index e447cbb..33abaac 100644
--- a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/pages/user-representation/user-representation.component.ts
+++ b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/pages/user-representation/user-representation.component.ts
@@ -37,6 +37,7 @@ export class UserRepresentationComponent extends BasePageComponent implements Af
}
ngAfterViewInit(): void {
+ this.buttonVisibilityService.setVisibleOnly(this.refreshService, this.transferService)
this.refreshService.removeAll();
this.refreshService.add(() => {
this.users.fetchData();
diff --git a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/pages/user/user.component.ts b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/pages/user/user.component.ts
index 82503a6..14ce625 100644
--- a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/pages/user/user.component.ts
+++ b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/pages/user/user.component.ts
@@ -36,6 +36,7 @@ export class UserComponent extends BasePageComponent implements AfterViewInit {
private sUsername = null;
ngAfterViewInit(): void {
+ this.buttonVisibilityService.setVisibleOnly(this.refreshService, this.creationService, this.updateService)
this.refreshService.removeAll()
this.refreshService.add(() => {
this.userTable.fetchData();
diff --git a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/services/button/base-button.service.ts b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/services/button/base-button.service.ts
index 25602fd..e7a7b4f 100644
--- a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/services/button/base-button.service.ts
+++ b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/services/button/base-button.service.ts
@@ -1,4 +1,16 @@
+import { Injectable, inject } from "@angular/core";
+import { ButtonVisibilityService } from "./button-visibility.service";
+
export class BaseButtonService {
+ constructor() {
+ const bvService = inject(ButtonVisibilityService);
+ bvService.buttons[this.constructorName] = this;
+ }
+
public isVisible: boolean = true;
+
+ public get constructorName() {
+ return this.constructor.name;
+ }
}
\ No newline at end of file
diff --git a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/services/button/button-visibility.service.spec.ts b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/services/button/button-visibility.service.spec.ts
new file mode 100644
index 0000000..d8fd4a0
--- /dev/null
+++ b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/services/button/button-visibility.service.spec.ts
@@ -0,0 +1,16 @@
+import { TestBed } from '@angular/core/testing';
+
+import { ButtonVisibilityService } from './button-visibility.service';
+
+describe('ButtonVisibilityService', () => {
+ let service: ButtonVisibilityService;
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({});
+ service = TestBed.inject(ButtonVisibilityService);
+ });
+
+ it('should be created', () => {
+ expect(service).toBeTruthy();
+ });
+});
diff --git a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/services/button/button-visibility.service.ts b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/services/button/button-visibility.service.ts
new file mode 100644
index 0000000..ffecc3f
--- /dev/null
+++ b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/services/button/button-visibility.service.ts
@@ -0,0 +1,37 @@
+import { Injectable } from '@angular/core';
+import { BaseButtonService } from './base-button.service';
+
+@Injectable({
+ providedIn: 'root'
+})
+export class ButtonVisibilityService {
+ _buttons: { [key: string]: BaseButtonService } = {};
+ public get buttons() {
+ return this._buttons;
+ }
+
+ setVisibility(key: string, show: boolean) {
+ const bttn = this._buttons[key];
+
+ if (show && !bttn.isVisible) {
+ bttn.isVisible = true
+ return
+ }
+
+ if (!show && bttn.isVisible) {
+ bttn.isVisible = false
+ }
+ }
+
+ setVisibleOnly(...buttons: BaseButtonService[]) {
+ const keys = buttons.map(b => b.constructorName)
+ for (const key in this._buttons) {
+ if (keys.includes(key)) {
+ this.setVisibility(key, true)
+ }
+ else {
+ this.setVisibility(key, false)
+ }
+ }
+ }
+}
\ No newline at end of file