X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=src%2Fapp%2Fprojects%2Fproject-create-update%2FProjectCreateUpdateComponent.ts;h=01f963e6d0310e4addb48a770c028004edb1b4df;hb=76e55f45abfebcbb817f1f0f90c067fa429f6b34;hp=ba176e004a49f173587a0daa8bbc53759b8e4789;hpb=381181051ad7c24c2ad20b7c6687be21c4870cc7;p=osm%2FNG-UI.git diff --git a/src/app/projects/project-create-update/ProjectCreateUpdateComponent.ts b/src/app/projects/project-create-update/ProjectCreateUpdateComponent.ts index ba176e0..01f963e 100644 --- a/src/app/projects/project-create-update/ProjectCreateUpdateComponent.ts +++ b/src/app/projects/project-create-update/ProjectCreateUpdateComponent.ts @@ -23,10 +23,10 @@ import { AbstractControl, FormBuilder, FormControl, FormGroup, Validators } from import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; import { TranslateService } from '@ngx-translate/core'; import { NotifierService } from 'angular-notifier'; -import { APIURLHEADER, ERRORDATA, MODALCLOSERESPONSEDATA } from 'CommonModel'; +import { APIURLHEADER, ERRORDATA, MODALCLOSERESPONSEDATA, TYPESECTION } from 'CommonModel'; import { DataService } from 'DataService'; import { environment } from 'environment'; -import { ProjectData, ProjectDetails, QUOTA_ITEMS, QUOTAITEM} from 'ProjectModel'; +import { ProjectData, ProjectDetails, QUOTAITEM, QUOTA_ITEMS } from 'ProjectModel'; import { ProjectService } from 'ProjectService'; import { RestService } from 'RestService'; import { SharedService } from 'SharedService'; @@ -37,257 +37,239 @@ import { isNullOrUndefined } from 'util'; * @Component takes ProjectCreateUpdateComponent.html as template url */ @Component({ - selector: 'app-project-create-update', - templateUrl: './ProjectCreateUpdateComponent.html', - styleUrls: ['./ProjectCreateUpdateComponent.scss'] + selector: 'app-project-create-update', + templateUrl: './ProjectCreateUpdateComponent.html', + styleUrls: ['./ProjectCreateUpdateComponent.scss'] }) /** Exporting a class @exports ProjectCreateUpdateComponent */ export class ProjectCreateUpdateComponent implements OnInit { - /** To inject services @public */ - public injector: Injector; + /** To inject services @public */ + public injector: Injector; - /** Instance of the rest service @public */ - public restService: RestService; + /** Instance of the rest service @public */ + public restService: RestService; - /** Instance for active modal service @public */ - public activeModal: NgbActiveModal; + /** Instance for active modal service @public */ + public activeModal: NgbActiveModal; - /** Contains the recently created project details @public */ - public recentProject: ProjectDetails; + /** Contains the recently created project details @public */ + public recentProject: ProjectDetails; - /** Contains project create or edit @public */ - public getProjectType: string; + /** Contains project create or edit @public */ + public getProjectType: string; - /** To inject input type services @public */ - @Input() public projectType: string; + /** To inject input type services @public */ + @Input() public projectType: string; - /** FormGroup user Edit Account added to the form @ html @public */ - public projectForm: FormGroup; + /** FormGroup user Edit Account added to the form @ html @public */ + public projectForm: FormGroup; - /** Form submission Add */ - public submitted: boolean = false; + /** Form submission Add */ + public submitted: boolean = false; - /** Check the loading results for loader status @public */ - public isLoadingResults: boolean = false; + /** Check the loading results for loader status @public */ + public isLoadingResults: boolean = false; - /** Give the message for the loading @public */ - public message: string = 'PLEASEWAIT'; + /** Give the message for the loading @public */ + public message: string = 'PLEASEWAIT'; - /** Holds list of domains @public */ - public domains: {}[] = []; + /** Holds list of domains @public */ + public domains: TYPESECTION[] = []; - /** Holds list of quota items @public */ - public quotaItems: QUOTAITEM[] = QUOTA_ITEMS; + /** Holds list of quota items @public */ + public quotaItems: QUOTAITEM[] = QUOTA_ITEMS; - /** Holds project reference from response @public */ - public quotaRefs: {} = null; + /** Holds project reference from response @public */ + public quotaRefs: {} = null; - /** FormBuilder instance added to the formBuilder @private */ - private formBuilder: FormBuilder; + /** FormBuilder instance added to the formBuilder @private */ + private formBuilder: FormBuilder; - /** DataService to pass the data from one component to another @private */ - private dataService: DataService; + /** DataService to pass the data from one component to another @private */ + private dataService: DataService; - /** Contains project name ref @private */ - private projectRef: string; + /** Contains project name ref @private */ + private projectRef: string; - /** Notifier service to popup notification @private */ - private notifierService: NotifierService; + /** Notifier service to popup notification @private */ + private notifierService: NotifierService; - /** Contains tranlsate instance @private */ - private translateService: TranslateService; + /** Contains tranlsate instance @private */ + private translateService: TranslateService; - /** Contains all methods related to shared @private */ - private sharedService: SharedService; + /** Contains all methods related to shared @private */ + private sharedService: SharedService; - /** ModalData instance of modal @private */ - private modalData: MODALCLOSERESPONSEDATA; + /** ModalData instance of modal @private */ + private modalData: MODALCLOSERESPONSEDATA; - /** Holds all project details @private */ - private projectService: ProjectService; + /** 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.dataService = this.injector.get(DataService); - this.notifierService = this.injector.get(NotifierService); - this.translateService = this.injector.get(TranslateService); - this.sharedService = this.injector.get(SharedService); - this.projectService = this.injector.get(ProjectService); - /** Initializing Form Action */ - this.projectForm = this.formBuilder.group({ - project_name: ['', Validators.required], - domain_name: [null], - enable_quota: [false, Validators.required] - }); - } - - /** convenience getter for easy access to form fields */ - get f(): FormGroup['controls'] { return this.projectForm.controls; } + 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.dataService = this.injector.get(DataService); + this.notifierService = this.injector.get(NotifierService); + this.translateService = this.injector.get(TranslateService); + this.sharedService = this.injector.get(SharedService); + this.projectService = this.injector.get(ProjectService); + /** Initializing Form Action */ + this.projectForm = this.formBuilder.group({ + project_name: ['', Validators.required], + domain_name: [null], + enable_quota: [false, Validators.required] + }); + } - /** Lifecyle Hooks the trigger before component is instantiate @public */ - public ngOnInit(): void { - this.getProjectType = this.projectType; - if (this.getProjectType === 'Edit') { - this.dataService.currentMessage.subscribe((data: ProjectData) => { - if (data.projectName !== undefined || data.projectName !== '' || data.projectName !== null) { - this.projectForm.patchValue({ project_name: data.projectName }); - this.projectRef = data.id; - this.quotaRefs = data.quotas; - this.patchQuotaInfo(this.quotaRefs); + /** convenience getter for easy access to form fields */ + get f(): FormGroup['controls'] { return this.projectForm.controls; } + + /** Lifecyle Hooks the trigger before component is instantiate @public */ + public ngOnInit(): void { + this.getProjectType = this.projectType; + if (this.getProjectType === 'Edit') { + this.dataService.currentMessage.subscribe((data: ProjectData): void => { + if (data.projectName !== undefined || data.projectName !== '' || data.projectName !== null) { + this.projectForm.patchValue({ project_name: data.projectName }); + this.projectRef = data.id; + this.quotaRefs = data.quotas; + this.patchQuotaInfo(this.quotaRefs); + } + }); + } else { + this.patchQuotaInfo(); + this.getProjects(); } - }); - } else { - this.patchQuotaInfo(); - this.getProjects(); } - } - - /** Get the last project name @public */ - public getProjects(): void { - this.isLoadingResults = true; - this.restService.getResource(environment.PROJECTS_URL).subscribe((projects: ProjectDetails[]) => { - this.recentProject = projects.slice(-1).pop(); - this.getDomainName(); - }, (error: ERRORDATA) => { - this.restService.handleError(error, 'get'); - this.isLoadingResults = false; - }); - } - - /** On modal submit users acction will called @public */ - public projectAction(userType: string): void { - this.submitted = true; - this.modalData = { - message: 'Done' - }; - this.sharedService.cleanForm(this.projectForm); - if (!this.projectForm.invalid) { - if (userType === 'Add') { - this.createProject(); - } else if (userType === 'Edit') { - this.editProject(); - } + + /** Get the last project name @public */ + public getProjects(): void { + this.isLoadingResults = true; + this.restService.getResource(environment.PROJECTS_URL).subscribe((projects: ProjectDetails[]): void => { + this.recentProject = projects.slice(-1).pop(); + this.getDomainList(); + }, (error: ERRORDATA): void => { + this.restService.handleError(error, 'get'); + this.isLoadingResults = false; + }); + } + + /** On modal submit users acction will called @public */ + public projectAction(userType: string): void { + this.submitted = true; + this.modalData = { + message: 'Done' + }; + this.sharedService.cleanForm(this.projectForm); + if (!this.projectForm.invalid) { + if (userType === 'Add') { + this.createProject(); + } else if (userType === 'Edit') { + this.editProject(); + } + } } - } - - /** Create project @public */ - public createProject(): void { - this.isLoadingResults = true; - const apiURLHeader: APIURLHEADER = { - url: environment.PROJECTS_URL - }; - const projectPayload: ProjectDetails = { - name: this.projectForm.value.project_name, - domain_name: !isNullOrUndefined(this.projectForm.value.domain_name) ? this.projectForm.value.domain_name : undefined - }; - this.addQuotaLimit(projectPayload); - this.restService.postResource(apiURLHeader, projectPayload).subscribe(() => { - this.activeModal.close(this.modalData); - this.isLoadingResults = false; - this.notifierService.notify('success', this.translateService.instant('PAGE.PROJECT.CREATEDSUCCESSFULLY')); - }, (error: ERRORDATA) => { - this.restService.handleError(error, 'post'); - this.isLoadingResults = false; - }); - } - /** Handle enable quota limit checkbox event @public */ - public checkQuota(): void { - if (this.getFormControl('enable_quota').value) { - this.quotaItems.forEach((quotaItem: QUOTAITEM): void => { - this.projectForm.addControl(quotaItem.value, new FormControl(quotaItem.minValue, Validators.required)); - }); - } else { - this.quotaItems.forEach((quotaItem: QUOTAITEM): void => { - this.getFormControl(quotaItem.value).setValue(quotaItem.minValue); - }); + + /** Create project @public */ + public createProject(): void { + this.isLoadingResults = true; + const apiURLHeader: APIURLHEADER = { + url: environment.PROJECTS_URL + }; + const projectPayload: ProjectDetails = { + name: this.projectForm.value.project_name, + domain_name: !isNullOrUndefined(this.projectForm.value.domain_name) ? this.projectForm.value.domain_name : undefined + }; + this.addQuotaLimit(projectPayload); + this.restService.postResource(apiURLHeader, projectPayload).subscribe((): void => { + this.activeModal.close(this.modalData); + this.isLoadingResults = false; + this.notifierService.notify('success', this.translateService.instant('PAGE.PROJECT.CREATEDSUCCESSFULLY')); + }, (error: ERRORDATA): void => { + this.restService.handleError(error, 'post'); + this.isLoadingResults = false; + }); } - } - /** Edit project @public */ - public editProject(): void { - this.isLoadingResults = true; - const apiURLHeader: APIURLHEADER = { - url: environment.PROJECTS_URL + '/' + this.projectRef - }; - const projectPayload: ProjectDetails = { - name: this.projectForm.value.project_name - }; - this.addQuotaLimit(projectPayload); - this.restService.patchResource(apiURLHeader, projectPayload).subscribe(() => { - this.activeModal.close(this.modalData); - this.isLoadingResults = false; - this.projectService.setHeaderProjects(); - this.notifierService.notify('success', this.translateService.instant('PAGE.PROJECT.UPDATEDSUCCESSFULLY')); - }, (error: ERRORDATA) => { - this.restService.handleError(error, 'patch'); - this.isLoadingResults = false; - }); - } - /** Get domain name @private */ - private getDomainName(): void { - this.restService.getResource(environment.DOMAIN_URL).subscribe((domains: { project_domain_name: string, user_domain_name: string }) => { - let domainNames: string[] = []; - if (!isNullOrUndefined(domains.project_domain_name)) { - domainNames = domainNames.concat(domains.project_domain_name.split(',')); - } - if (!isNullOrUndefined(domains.user_domain_name)) { - domainNames = domainNames.concat(domains.user_domain_name.split(',')); - } - domainNames = Array.from(new Set(domainNames)); - this.checkDomainNames(domainNames); - this.isLoadingResults = false; - }, (error: ERRORDATA) => { - this.restService.handleError(error, 'get'); - this.isLoadingResults = false; - }); - } - - /** Check the domain names and create modal for domain select @private */ - private checkDomainNames(domainNames: string[]): void { - if (domainNames.length > 0) { - domainNames.forEach((domainName: string) => { - if (!domainName.endsWith(':ro')) { - this.domains.push({ id: domainName, text: domainName }); + /** Handle enable quota limit checkbox event @public */ + public checkQuota(): void { + if (this.getFormControl('enable_quota').value) { + this.quotaItems.forEach((quotaItem: QUOTAITEM): void => { + this.projectForm.addControl(quotaItem.value, new FormControl(quotaItem.minValue, Validators.required)); + }); + } else { + this.quotaItems.forEach((quotaItem: QUOTAITEM): void => { + this.getFormControl(quotaItem.value).setValue(quotaItem.minValue); + }); } - }); } - } - - /** Used to get the AbstractControl of controlName passed @private */ - private getFormControl(controlName: string): AbstractControl { - return this.projectForm.controls[controlName]; - } - - /** Add quota information to payload @private */ - private addQuotaLimit(payload: ProjectDetails): void { - if (this.getFormControl('enable_quota').value) { - payload.quotas = {}; - this.quotaItems.forEach((quotaItem: QUOTAITEM): void => { - payload.quotas[quotaItem.value] = this.getFormControl(quotaItem.value).value; - }); + /** Edit project @public */ + public editProject(): void { + this.isLoadingResults = true; + const apiURLHeader: APIURLHEADER = { + url: environment.PROJECTS_URL + '/' + this.projectRef + }; + const projectPayload: ProjectDetails = { + name: this.projectForm.value.project_name + }; + this.addQuotaLimit(projectPayload); + this.restService.patchResource(apiURLHeader, projectPayload).subscribe((): void => { + this.activeModal.close(this.modalData); + this.isLoadingResults = false; + this.projectService.setHeaderProjects(); + this.notifierService.notify('success', this.translateService.instant('PAGE.PROJECT.UPDATEDSUCCESSFULLY')); + }, (error: ERRORDATA): void => { + this.restService.handleError(error, 'patch'); + this.isLoadingResults = false; + }); + } + /** Get domain name list @private */ + private getDomainList(): void { + this.isLoadingResults = true; + this.sharedService.getDomainName().subscribe((domainList: TYPESECTION[]): void => { + this.domains = domainList; + this.isLoadingResults = false; + }, (error: ERRORDATA): void => { + this.isLoadingResults = false; + this.restService.handleError(error, 'get'); + }); + } + + /** Used to get the AbstractControl of controlName passed @private */ + private getFormControl(controlName: string): AbstractControl { + return this.projectForm.controls[controlName]; + } + + /** Add quota information to payload @private */ + private addQuotaLimit(payload: ProjectDetails): void { + if (this.getFormControl('enable_quota').value) { + payload.quotas = {}; + this.quotaItems.forEach((quotaItem: QUOTAITEM): void => { + payload.quotas[quotaItem.value] = this.getFormControl(quotaItem.value).value; + }); + } } - } - - /** Set quota information in project form model @private */ - private patchQuotaInfo(quotaRef?: {}): void { - if (quotaRef !== null && this.getProjectType === 'Edit') { - this.getFormControl('enable_quota').setValue(true); - this.quotaItems.forEach((quotaItem: QUOTAITEM): void => { - if (!isNullOrUndefined(quotaRef[quotaItem.value])) { - this.projectForm.addControl(quotaItem.value, new FormControl(quotaRef[quotaItem.value], - [Validators.required, Validators.min(quotaItem.minValue), Validators.max(quotaItem.maxValue)])); + + /** Set quota information in project form model @private */ + private patchQuotaInfo(quotaRef?: {}): void { + if (quotaRef !== null && this.getProjectType === 'Edit') { + this.getFormControl('enable_quota').setValue(true); + this.quotaItems.forEach((quotaItem: QUOTAITEM): void => { + if (!isNullOrUndefined(quotaRef[quotaItem.value])) { + this.projectForm.addControl(quotaItem.value, new FormControl(quotaRef[quotaItem.value], + [Validators.required, Validators.min(quotaItem.minValue), Validators.max(quotaItem.maxValue)])); + } else { + this.projectForm.addControl(quotaItem.value, new FormControl(quotaItem.minValue, [Validators.required, + Validators.min(quotaItem.minValue), Validators.max(quotaItem.maxValue)])); + } + }); } else { - this.projectForm.addControl(quotaItem.value, new FormControl(quotaItem.minValue, [Validators.required, - Validators.min(quotaItem.minValue), Validators.max(quotaItem.maxValue)])); + this.quotaItems.forEach((quotaItem: QUOTAITEM): void => { + this.projectForm.addControl(quotaItem.value, new FormControl(quotaItem.minValue, [Validators.required, + Validators.min(quotaItem.minValue), Validators.max(quotaItem.maxValue)])); + }); } - }); - } else { - this.quotaItems.forEach((quotaItem: QUOTAITEM): void => { - this.projectForm.addControl(quotaItem.value, new FormControl(quotaItem.minValue, [Validators.required, - Validators.min(quotaItem.minValue), Validators.max(quotaItem.maxValue)])); - }); } - } }