This is an automated email from the ASF dual-hosted git repository. ankovalyshyn pushed a commit to branch feature/projects in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git
commit 3e6be349efb8ae67787e1a0cf9ffdefe65f7c0ef Author: Andriana Kovalyshyn <andriana_kovalys...@epam.com> AuthorDate: Thu Jun 20 15:23:32 2019 +0300 [DLAB-747]: patch project creation form with file; validation added --- .../project/project-form/project-form.component.ts | 36 ++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/services/self-service/src/main/resources/webapp/src/app/administration/project/project-form/project-form.component.ts b/services/self-service/src/main/resources/webapp/src/app/administration/project/project-form/project-form.component.ts index 5a1e2ea..a332f9e 100644 --- a/services/self-service/src/main/resources/webapp/src/app/administration/project/project-form/project-form.component.ts +++ b/services/self-service/src/main/resources/webapp/src/app/administration/project/project-form/project-form.component.ts @@ -17,7 +17,7 @@ * under the License. */ -import { Component, OnInit, Input, Output, EventEmitter, ViewChild } from '@angular/core'; +import { Component, OnInit, Input, Output, EventEmitter, ViewChild, ChangeDetectorRef } from '@angular/core'; import { FormGroup, FormBuilder, Validators } from '@angular/forms'; import { ToastrService } from 'ngx-toastr'; import { Subscription } from 'rxjs'; @@ -38,6 +38,8 @@ export class ProjectFormComponent implements OnInit { public groupsList: any = []; public endpointsList: any = []; public projectList: Project[] = []; + public accessKeyValid: boolean; + public keyLabel: string = ''; @Input() item: any; @Output() update: EventEmitter<{}> = new EventEmitter(); @@ -51,7 +53,8 @@ export class ProjectFormComponent implements OnInit { private projectService: ProjectService, private projectDataService: ProjectDataService, private rolesService: RolesGroupsService, - private endpointService: EndpointService + private endpointService: EndpointService, + private cd: ChangeDetectorRef ) { } ngOnInit() { @@ -94,6 +97,25 @@ export class ProjectFormComponent implements OnInit { this.projectForm.controls.tag.setValue(user_tag.toLowerCase()); } + public onFileChange($event) { + const reader = new FileReader(); + + if($event.target.files && $event.target.files.length) { + const [file] = $event.target.files; + reader.readAsDataURL(file); + + reader.onload = () => { + this.projectForm.patchValue({ + key: reader.result + }); + + this.accessKeyValid = this.isValidKey(file.name); + this.keyLabel = this.getLabel(file); + this.cd.markForCheck(); + }; + } + } + public selectOptions(list, key, select?) { let filter = key === 'endpoints' ? list.map(el => el.name) : list; this.projectForm.controls[key].setValue(select ? filter : []); @@ -111,6 +133,7 @@ export class ProjectFormComponent implements OnInit { public editSpecificProject(item: Project) { this.projectForm = this._fb.group({ + 'key': [''], 'name': [item.name, Validators.required], 'endpoints': [item.endpoints], 'tag': [item.tag, Validators.required], @@ -118,6 +141,15 @@ export class ProjectFormComponent implements OnInit { }); } + private getLabel(file: File): string { + debugger; + return file ? !this.accessKeyValid ? 'Public key is required.' : file.name : ''; + } + + private isValidKey(value): boolean { + return value.toLowerCase().endsWith('.pub'); + } + private getGroupsData() { this.rolesService.getGroupsData().subscribe( (list: any) => this.groupsList = list.map(el => el.group), --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@dlab.apache.org For additional commands, e-mail: commits-h...@dlab.apache.org