This is an automated email from the ASF dual-hosted git repository. dgnatyshyn pushed a commit to branch DLAB-1451 in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git
commit 1269d9ead836399af02c47b9dc7d4a86b25e8f30 Author: Dmytro Gnatyshyn <di1...@ukr.net> AuthorDate: Thu Jan 16 18:30:43 2020 +0200 Default Changelist --- .../management/endpoints/endpoints.component.html | 12 +++++++++--- .../management/endpoints/endpoints.component.ts | 18 ++++++++++++++++-- .../resources/webapp/src/app/core/util/patterns.ts | 5 +++-- 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/services/self-service/src/main/resources/webapp/src/app/administration/management/endpoints/endpoints.component.html b/services/self-service/src/main/resources/webapp/src/app/administration/management/endpoints/endpoints.component.html index c1171dd..58da8cd 100644 --- a/services/self-service/src/main/resources/webapp/src/app/administration/management/endpoints/endpoints.component.html +++ b/services/self-service/src/main/resources/webapp/src/app/administration/management/endpoints/endpoints.component.html @@ -34,20 +34,26 @@ <div class="control"> <input type="text" formControlName="name" placeholder="Enter endpoint name" (blur)="generateEndpointTag($event)"> + <!--<span class="error" *ngIf="manageUsersForm?.controls['total'].hasError('overrun')">Total budget cannot be lower than a sum of users quotes</span>--> <span class="error" - *ngIf="!createEndpointForm?.controls.name.valid && createEndpointForm?.controls.name.touched"> + *ngIf="!createEndpointForm?.controls.name.valid && createEndpointForm?.controls.name.touched && !createEndpointForm?.controls['name'].hasError('isDuplicate')"> Endpoint name can only contain letters, numbers, hyphens and '_' but can not end with special characters </span> + <span class="error" + *ngIf="createEndpointForm?.controls['name'].hasError('isDuplicate')"> + This endpoint name already exists. + </span> </div> </div> <div class="control-group"> <label class="label">Endpoint url</label> <div class="control"> <input type="text" formControlName="url" placeholder="Enter endpoint url"> + <span class="error" *ngIf="createEndpointForm?.controls['url'].hasError('isDuplicate')">This endpoint url already exists.</span> <span class="error" - *ngIf="!createEndpointForm?.controls.url.valid && createEndpointForm.controls.url.touched"> - Endpoint url should end with slash + *ngIf="!createEndpointForm?.controls.url.valid && createEndpointForm.controls.url.touched && !createEndpointForm?.controls['url'].hasError('isDuplicate')"> + Please provide a valid endpoint url with slash on the end </span> </div> </div> diff --git a/services/self-service/src/main/resources/webapp/src/app/administration/management/endpoints/endpoints.component.ts b/services/self-service/src/main/resources/webapp/src/app/administration/management/endpoints/endpoints.component.ts index e263edc..d29a5d0 100644 --- a/services/self-service/src/main/resources/webapp/src/app/administration/management/endpoints/endpoints.component.ts +++ b/services/self-service/src/main/resources/webapp/src/app/administration/management/endpoints/endpoints.component.ts @@ -97,8 +97,8 @@ export class EndpointsComponent implements OnInit { private initFormModel(): void { this.createEndpointForm = this._fb.group({ - name: ['', Validators.compose([Validators.required, Validators.pattern(PATTERNS.namePattern)])], - url: ['', Validators.compose([Validators.required, Validators.pattern(PATTERNS.url)])], + name: ['', Validators.compose([Validators.required, Validators.pattern(PATTERNS.namePattern), this.validateName.bind(this)])], + url: ['', Validators.compose([Validators.required, Validators.pattern(PATTERNS.fullUrl), this.validateUrl.bind(this)])], account: ['', Validators.compose([Validators.required, Validators.pattern(PATTERNS.namePattern)])], endpoint_tag: ['', Validators.compose([Validators.required, Validators.pattern(PATTERNS.namePattern)])] }); @@ -114,6 +114,20 @@ export class EndpointsComponent implements OnInit { private getEndpointList() : void{ this.endpointService.getEndpointsData().subscribe((endpoints: any) => this.endpoints = endpoints); } + + private validateUrl(control) { + if (control && control.value){ + const isDublicat = this.endpoints.some(endpoint => endpoint['url'].toLocaleLowerCase() === control.value.toLowerCase()); + return isDublicat ? { isDuplicate: true } : null; + } + } + + private validateName(control) { + if (control && control.value){ + const isDublicat = this.endpoints.some(endpoint => endpoint['name'].toLocaleLowerCase() === control.value.toLowerCase()); + return isDublicat ? { isDuplicate: true } : null; + } + } } @Component({ diff --git a/services/self-service/src/main/resources/webapp/src/app/core/util/patterns.ts b/services/self-service/src/main/resources/webapp/src/app/core/util/patterns.ts index 52e2670..be14887 100644 --- a/services/self-service/src/main/resources/webapp/src/app/core/util/patterns.ts +++ b/services/self-service/src/main/resources/webapp/src/app/core/util/patterns.ts @@ -23,5 +23,6 @@ export const PATTERNS = { delimitersRegex: '[-_]?', url: '[a-zA-Z0-9.://%#&\\.@:%-_\+~#=]*\.[^\s]*[a-zA-Z0-9]/+', nodeCountPattern: '^[1-9]\\d*$', - integerRegex: '^[0-9]*$' -} + integerRegex: '^[0-9]*$', + fullUrl: /^(http?|ftp|https):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/, +}; --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@dlab.apache.org For additional commands, e-mail: commits-h...@dlab.apache.org