X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=src%2Fapp%2Fusers%2Fproject-role%2FProjectRoleComponent.ts;h=600cecd6dceb61a5b98095a4f201973f04d68c03;hb=8c89de764cfca61d3bb2d17cdacd8bc4de48de8d;hp=f5bb7721a441d5a8d103dbd82bfc691a61719ac0;hpb=b5673d092bcae39b5315532b1e034dbf02a8c294;p=osm%2FNG-UI.git diff --git a/src/app/users/project-role/ProjectRoleComponent.ts b/src/app/users/project-role/ProjectRoleComponent.ts index f5bb772..600cecd 100644 --- a/src/app/users/project-role/ProjectRoleComponent.ts +++ b/src/app/users/project-role/ProjectRoleComponent.ts @@ -37,200 +37,222 @@ import { ProjectRoleMappings, UserDetail, UserRoleMap } from 'UserModel'; * @Component takes ProjectRole.html as template url */ @Component({ - templateUrl: './ProjectRoleComponent.html', - styleUrls: ['./ProjectRoleComponent.scss'] + templateUrl: './ProjectRoleComponent.html', + styleUrls: ['./ProjectRoleComponent.scss'] }) /** Exporting a class @exports ProjectRoleComponent */ export class ProjectRoleComponent implements OnInit { - /** To inject services @public */ - public injector: Injector; + /** To inject services @public */ + public injector: Injector; - /** Instance for active modal service @public */ - public activeModal: NgbActiveModal; - - /** FormGroup user Edit Account added to the form @ html @public */ - public projectRoleForm: FormGroup; - - /** Form submission Add */ - public submitted: boolean = false; - - /** Input contains Modal dialog component Instance @private */ - @Input() public userTitle: string; - - /** Input contains Modal dialog component Instance @private */ - @Input() public userID: string; - - /** Contains user details information @public */ - public userDetails: UserDetail; - - /** Project Role Mapping @public */ - public projectRoleMap: UserRoleMap = {}; - - /** Check the loading results @public */ - public isLoadingResults: boolean = false; - - /** Give the message for the loading @public */ - public message: string = 'PLEASEWAIT'; - - /** Contains project information @public */ - public projects: ProjectData[] = []; - - /** Contains roles information @public */ - public roles: RoleData[] = []; - - /** Instance of the rest service @private */ - private restService: RestService; - - /** FormBuilder instance added to the formBuilder @private */ - private formBuilder: FormBuilder; - - /** Controls the header form @private */ - private headers: HttpHeaders; - - /** Notifier service to popup notification @private */ - private notifierService: NotifierService; - - /** Contains tranlsate instance @private */ - private translateService: TranslateService; - - /** Project Role Form array @private */ - private projectRoleFormArray: FormArray; - - /** Holds all project details @private */ - private projectService: ProjectService; - - constructor(injector: Injector) { - this.injector = injector; - this.formBuilder = this.injector.get(FormBuilder); - this.restService = this.injector.get(RestService); - this.activeModal = this.injector.get(NgbActiveModal); - this.notifierService = this.injector.get(NotifierService); - this.translateService = this.injector.get(TranslateService); - this.projectService = this.injector.get(ProjectService); - this.initializeForm(); - } - - /** Generate primitive params @public */ - get projectRoleParamsBuilder(): FormGroup { - return this.formBuilder.group({ - project_name: [null, [Validators.required]], - role_name: [null, [Validators.required]] - }); - } - - /** Lifecyle Hooks the trigger before component is instantiate @public */ - public ngOnInit(): void { - this.headers = new HttpHeaders({ - 'Content-Type': 'application/json', - Accept: 'application/json', - 'Cache-Control': 'no-cache, no-store, must-revalidate, max-age=0' - }); - this.getProjects(); - this.generateData(); - } - - /** convenience getter for easy access to form fields */ - get f(): FormGroup['controls'] { return this.projectRoleForm.controls; } - - /** Initializing Form Action @public */ - public initializeForm(): void { - this.projectRoleForm = this.formBuilder.group({ - project_role_mappings: this.formBuilder.array([]) - }); - } - - /** Handle FormArray Controls @public */ - public getControls(): AbstractControl[] { - // tslint:disable-next-line:no-backbone-get-set-outside-model - return (this.projectRoleForm.get('project_role_mappings') as FormArray).controls; - } - - /** Fetching the data from server to Load in the smarttable @public */ - public generateData(): void { - if (this.userID !== '') { - this.isLoadingResults = true; - this.restService.getResource(environment.USERS_URL + '/' + this.userID).subscribe((userDetails: UserDetail) => { - this.userDetails = userDetails; - this.loadMapping(); - this.isLoadingResults = false; - }, (error: ERRORDATA) => { - this.isLoadingResults = false; - this.restService.handleError(error, 'get'); - }); + /** Instance for active modal service @public */ + public activeModal: NgbActiveModal; + + /** FormGroup user Edit Account added to the form @ html @public */ + public projectRoleForm: FormGroup; + + /** Form submission Add */ + public submitted: boolean = false; + + /** Input contains Modal dialog component Instance @private */ + @Input() public userTitle: string; + + /** Input contains Modal dialog component Instance @private */ + @Input() public userID: string; + + /** Contains user details information @public */ + public userDetails: UserDetail; + + /** Project Role Mapping @public */ + public projectRoleMap: UserRoleMap = {}; + + /** Check the loading results @public */ + public isLoadingResults: boolean = false; + + /** Give the message for the loading @public */ + public message: string = 'PLEASEWAIT'; + + /** Contains project information @public */ + public projects: ProjectData[] = []; + + /** Contains roles information @public */ + public roles: RoleData[] = []; + + /** Instance of the rest service @private */ + private restService: RestService; + + /** FormBuilder instance added to the formBuilder @private */ + private formBuilder: FormBuilder; + + /** Controls the header form @private */ + private headers: HttpHeaders; + + /** Notifier service to popup notification @private */ + private notifierService: NotifierService; + + /** Contains tranlsate instance @private */ + private translateService: TranslateService; + + /** Project Role Form array @private */ + private projectRoleFormArray: FormArray; + + /** Holds all project details @private */ + private projectService: ProjectService; + + constructor(injector: Injector) { + this.injector = injector; + this.formBuilder = this.injector.get(FormBuilder); + this.restService = this.injector.get(RestService); + this.activeModal = this.injector.get(NgbActiveModal); + this.notifierService = this.injector.get(NotifierService); + this.translateService = this.injector.get(TranslateService); + this.projectService = this.injector.get(ProjectService); + } + + /** Generate primitive params @public */ + get projectRoleParamsBuilder(): FormGroup { + return this.formBuilder.group({ + project_name: [null, [Validators.required]], + role_name: [null, [Validators.required]] + }); } - } - /** Fetching the projects information @public */ - public getProjects(): void { - this.isLoadingResults = true; - this.restService.getResource(environment.PROJECTS_URL).subscribe((projectsData: ProjectData[]) => { - this.projects = projectsData; - this.getRoles(); - }, (error: ERRORDATA) => { - this.isLoadingResults = false; - this.restService.handleError(error, 'get'); - }); - } - - /** Fetching the Roles information @public */ - public getRoles(): void { - this.restService.getResource(environment.ROLES_URL).subscribe((rolesData: RoleData[]) => { - this.roles = rolesData; - this.isLoadingResults = false; - }, (error: ERRORDATA) => { - this.isLoadingResults = false; - this.restService.handleError(error, 'get'); - }); - } - - /** Set all roles and project values to the form @public */ - public loadMapping(): void { - this.userDetails.project_role_mappings.forEach((data: ProjectRoleMappings) => { - // tslint:disable-next-line:no-backbone-get-set-outside-model - this.projectRoleFormArray = this.projectRoleForm.get('project_role_mappings') as FormArray; - this.projectRoleFormArray.push(this.projectRoleParamsBuilder); - }); - this.projectRoleForm.patchValue(this.userDetails); - } - - /** Remove project and roles from the list @public */ - public removeMapping(index: number): void { - this.projectRoleFormArray.removeAt(index); - } - - /** Submit project and roles @public */ - public addProjectRole(): void { - this.submitted = true; - const modalData: MODALCLOSERESPONSEDATA = { - message: 'Done' - }; - if (this.projectRoleForm.invalid) { return; } - const apiURLHeader: APIURLHEADER = { - url: environment.USERS_URL + '/' + this.userID - }; - this.projectRoleMap.project_role_mappings = []; - this.projectRoleForm.value.project_role_mappings.forEach((res: ProjectRoleMappings) => { - this.projectRoleMap.project_role_mappings.push({ project: res.project_name, role: res.role_name }); - }); - if (this.projectRoleMap.project_role_mappings.length !== 0) { - this.isLoadingResults = true; - this.restService.patchResource(apiURLHeader, this.projectRoleMap).subscribe((result: {}) => { - this.isLoadingResults = false; - this.activeModal.close(modalData); - this.projectService.setHeaderProjects(); - this.notifierService.notify('success', this.translateService.instant('PAGE.USERS.EDITEDSUCCESSFULLY')); - }, (error: ERRORDATA) => { - this.isLoadingResults = false; - this.restService.handleError(error, 'patch'); - }); - } else { - this.notifierService.notify('error', this.translateService.instant('PAGE.USERS.EDITPROJECTROLEERROR')); + + /** convenience getter for easy access to form fields */ + get f(): FormGroup['controls'] { return this.projectRoleForm.controls; } + + /** Lifecyle Hooks the trigger before component is instantiate @public */ + public ngOnInit(): void { + this.headers = new HttpHeaders({ + 'Content-Type': 'application/json', + Accept: 'application/json', + 'Cache-Control': 'no-cache, no-store, must-revalidate, max-age=0' + }); + this.initializeForm(); + this.getProjects(); + this.generateData(); + } + + /** Initializing Form Action @public */ + public initializeForm(): void { + this.projectRoleForm = this.formBuilder.group({ + project_role_mappings: this.formBuilder.array([]) + }); + } + + /** Handle FormArray Controls @public */ + public getControls(): AbstractControl[] { + // tslint:disable-next-line:no-backbone-get-set-outside-model + return (this.projectRoleForm.get('project_role_mappings') as FormArray).controls; + } + + /** Fetching the data from server to Load in the smarttable @public */ + public generateData(): void { + if (this.userID !== '') { + this.isLoadingResults = true; + this.restService.getResource(environment.USERS_URL + '/' + this.userID).subscribe((userDetails: UserDetail): void => { + this.userDetails = userDetails; + this.loadMapping(); + this.isLoadingResults = false; + }, (error: ERRORDATA): void => { + this.isLoadingResults = false; + this.restService.handleError(error, 'get'); + }); + } + } + /** Fetching the projects information @public */ + public getProjects(): void { + this.isLoadingResults = true; + this.restService.getResource(environment.PROJECTS_URL).subscribe((projectsData: ProjectData[]): void => { + this.projects = projectsData; + this.getRoles(); + }, (error: ERRORDATA): void => { + this.isLoadingResults = false; + this.restService.handleError(error, 'get'); + }); + } + + /** Fetching the Roles information @public */ + public getRoles(): void { + this.restService.getResource(environment.ROLES_URL).subscribe((rolesData: RoleData[]): void => { + this.roles = rolesData; + this.isLoadingResults = false; + }, (error: ERRORDATA): void => { + this.isLoadingResults = false; + this.restService.handleError(error, 'get'); + }); + } + + /** Set all roles and project values to the form @public */ + public loadMapping(): void { + this.userDetails.project_role_mappings.forEach((data: ProjectRoleMappings): void => { + // tslint:disable-next-line:no-backbone-get-set-outside-model + this.projectRoleFormArray = this.projectRoleForm.get('project_role_mappings') as FormArray; + this.projectRoleFormArray.push(this.projectRoleParamsBuilder); + }); + this.projectRoleForm.patchValue(this.userDetails); + } + + /** Remove project and roles from the list @public */ + public removeMapping(index: number): void { + this.projectRoleFormArray.removeAt(index); + } + + /** Submit project and roles @public */ + public addProjectRole(): void { + this.submitted = true; + const modalData: MODALCLOSERESPONSEDATA = { + message: 'Done' + }; + if (this.projectRoleForm.invalid) { return; } + const apiURLHeader: APIURLHEADER = { + url: environment.USERS_URL + '/' + this.userID + }; + this.projectRoleMap.project_role_mappings = []; + this.projectRoleForm.value.project_role_mappings.forEach((res: ProjectRoleMappings): void => { + this.projectRoleMap.project_role_mappings.push({ project: res.project_name, role: res.role_name }); + }); + if (this.projectRoleMap.project_role_mappings.length !== 0) { + this.isLoadingResults = true; + this.restService.patchResource(apiURLHeader, this.projectRoleMap).subscribe((result: {}): void => { + this.isLoadingResults = false; + this.activeModal.close(modalData); + this.projectService.setHeaderProjects(); + this.notifierService.notify('success', this.translateService.instant('PAGE.USERS.EDITEDSUCCESSFULLY')); + }, (error: ERRORDATA): void => { + this.isLoadingResults = false; + this.restService.handleError(error, 'patch'); + }); + } else { + this.notifierService.notify('error', this.translateService.instant('PAGE.USERS.EDITPROJECTROLEERROR')); + } + } + + /** Add extra mapping and set empty project and roles @public */ + public addMapping(): void { + // tslint:disable-next-line:no-backbone-get-set-outside-model + this.projectRoleFormArray = this.projectRoleForm.get('project_role_mappings') as FormArray; + this.projectRoleFormArray.push(this.projectRoleParamsBuilder); + } + + /** Remove project and roles for the user @public */ + public deleteProjectAndRoleMapping(getProjectRoles: ProjectRoleMappings): void { + const modalData: MODALCLOSERESPONSEDATA = { + message: 'Done' + }; + const removeProjectRole: UserRoleMap = { remove_project_role_mappings: [] }; + removeProjectRole.remove_project_role_mappings = [{ project: getProjectRoles.project_name, role: getProjectRoles.role_name }]; + const apiURLHeader: APIURLHEADER = { + url: environment.USERS_URL + '/' + this.userID + }; + this.isLoadingResults = true; + this.restService.patchResource(apiURLHeader, removeProjectRole).subscribe((result: {}): void => { + this.isLoadingResults = false; + this.activeModal.close(modalData); + this.projectService.setHeaderProjects(); + this.notifierService.notify('success', this.translateService.instant('PAGE.USERS.EDITEDSUCCESSFULLY')); + }, (error: ERRORDATA): void => { + this.isLoadingResults = false; + this.restService.handleError(error, 'patch'); + }); } - } - - /** Add extra mapping and set empty project and roles @public */ - public addMapping(): void { - // tslint:disable-next-line:no-backbone-get-set-outside-model - this.projectRoleFormArray = this.projectRoleForm.get('project_role_mappings') as FormArray; - this.projectRoleFormArray.push(this.projectRoleParamsBuilder); - } }