This is an automated email from the ASF dual-hosted git repository. dgnatyshyn pushed a commit to branch DLAB-1417 in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git
commit 956fbacc51069524d2cd54142ba3d0fa0ee3f19e Author: Dmytro Gnatyshyn <di1...@ukr.net> AuthorDate: Mon Jan 6 14:45:31 2020 +0200 [DLAB-1417]: Fixed error message is not appeared if project quota is more than total one --- .../manage-environment-dilog.component.html | 25 +++++++++---------- .../manage-environment-dilog.component.scss | 2 +- .../manage-environment-dilog.component.ts | 28 +++++++++++++++------- .../webapp/src/app/core/util/checkUtils.ts | 2 +- 4 files changed, 32 insertions(+), 25 deletions(-) diff --git a/services/self-service/src/main/resources/webapp/src/app/administration/management/manage-environment/manage-environment-dilog.component.html b/services/self-service/src/main/resources/webapp/src/app/administration/management/manage-environment/manage-environment-dilog.component.html index 91c3e1e..d4380ba 100644 --- a/services/self-service/src/main/resources/webapp/src/app/administration/management/manage-environment/manage-environment-dilog.component.html +++ b/services/self-service/src/main/resources/webapp/src/app/administration/management/manage-environment/manage-environment-dilog.component.html @@ -35,22 +35,22 @@ <div class="scrolling-content" id="scrolling" formArrayName="projects"> <mat-list-item *ngFor="let item of usersEnvironments.controls; let i=index" [formGroupName]="i" class="list-item"> - <div class="username ellipsis" - matTooltip="{{ manageUsersForm.controls['projects'].controls[i].value['project'] }}" - matTooltipPosition="above">{{ manageUsersForm.controls['projects'].controls[i].value['project'] }} + <div class="username ellipsis"> + <span class="ellipsis" + matTooltip="{{ manageUsersForm.controls['projects']['controls'][i].value['project'] }}" + matTooltipPosition="above">{{ manageUsersForm.controls['projects']['controls'][i].value['project'] }} + </span> </div> <div class="quotes"> - <input type="text" (keypress)="CheckUtils.numberOnly($event)" min="0" + <input type="number" (keypress)="CheckUtils.numberOnly($event)" min="0" placeholder="Enter limit, in USD" formControlName="budget"> <span class="error" - *ngIf="!manageUsersForm?.controls['projects'].controls[i].controls['budget'].valid && !manageUsersForm?.controls['projects'].controls[i].controls['budget'].hasError('overrun')">Budget can contain only integer value</span> - <span class="error" - *ngIf="manageUsersForm?.controls['projects'].controls[i].controls['budget'].hasError('overrun')">Per-user + *ngIf="manageUsersForm?.controls['projects']['controls'][i].controls['budget'].hasError('overrun')">Per-user quotes cannot be greater than total budget</span> </div> <div class="action"> <span - *ngIf="manageUsersForm?.controls['projects'].controls[i].controls['canBeStopped'].value; else not_allowed_stop" + *ngIf="manageUsersForm?.controls['projects']['controls'][i].controls['canBeStopped'].value; else not_allowed_stop" matTooltip="Stop" matTooltipPosition="above" (click)="applyAction('stop', item)"> <i class="material-icons">pause_circle_outline</i> </span> @@ -62,7 +62,7 @@ </ng-template> <span - *ngIf="manageUsersForm?.controls['projects'].controls[i].controls['canBeTerminated'].value; else not_allowed_terminate" + *ngIf="manageUsersForm?.controls['projects']['controls'][i].controls['canBeTerminated'].value; else not_allowed_terminate" matTooltip="Terminate" matTooltipPosition="above" (click)="applyAction('terminate', item)"> <i class="material-icons">phonelink_off</i> </span> @@ -79,12 +79,9 @@ <div class="control-group total-budget"> <label class="label">Total budget</label> <div class="control"> - <input type="text" (keypress)="CheckUtils.numberOnly($event)" formControlName="total" + <input type="number" (keypress)="CheckUtils.numberOnly($event)" formControlName="total" placeholder="Enter total budget, in USD"> - <span class="error" *ngIf="manageUsersForm?.controls['total'].hasError('overrun')">Budget can contain only integer value</span> - <span class="error" - *ngIf="!manageUsersForm?.controls['total'].valid && !manageUsersForm?.controls['total'].hasError('overrun')">Only - positive integers are allowed</span> + <span class="error" *ngIf="manageUsersForm?.controls['total'].hasError('overrun')">Total budget cannot be lower than a sum of users quotes</span> </div> </div> <div class="text-center m-top-30"> diff --git a/services/self-service/src/main/resources/webapp/src/app/administration/management/manage-environment/manage-environment-dilog.component.scss b/services/self-service/src/main/resources/webapp/src/app/administration/management/manage-environment/manage-environment-dilog.component.scss index cb18ac1..fabd480 100644 --- a/services/self-service/src/main/resources/webapp/src/app/administration/management/manage-environment/manage-environment-dilog.component.scss +++ b/services/self-service/src/main/resources/webapp/src/app/administration/management/manage-environment/manage-environment-dilog.component.scss @@ -50,7 +50,7 @@ .error { position: absolute; left: 0; - top: 35px; + top: 34px; } } diff --git a/services/self-service/src/main/resources/webapp/src/app/administration/management/manage-environment/manage-environment-dilog.component.ts b/services/self-service/src/main/resources/webapp/src/app/administration/management/manage-environment/manage-environment-dilog.component.ts index 39f598e..c9bc231 100644 --- a/services/self-service/src/main/resources/webapp/src/app/administration/management/manage-environment/manage-environment-dilog.component.ts +++ b/services/self-service/src/main/resources/webapp/src/app/administration/management/manage-environment/manage-environment-dilog.component.ts @@ -48,8 +48,20 @@ export class ManageEnvironmentComponent implements OnInit { ngOnInit() { !this.manageUsersForm && this.initForm(); this.setProjectsControl(); + this.manageUsersForm.controls['total'].setValue(this.data.total.conf_max_budget || ''); + this.onFormChange() + } - this.manageUsersForm.controls['total'].setValue(this.data.total.conf_max_budget || null); + public onFormChange() { + this.manageUsersForm.valueChanges.subscribe(value => { + if((this.getCurrentTotalValue() && this.getCurrentTotalValue() >= this.getCurrentUsersTotal())) { + this.manageUsersForm.controls['projects']['controls'].forEach(v => { + v.controls['budget'].setErrors(null); + } + ); + this.manageUsersForm.controls['total'].setErrors(null) + } + }) } get usersEnvironments(): FormArray { @@ -57,7 +69,11 @@ export class ManageEnvironmentComponent implements OnInit { } public setBudgetLimits(value) { - this.dialogRef.close(value); + if(this.getCurrentTotalValue() >= this.getCurrentUsersTotal()){ + this.dialogRef.close(value); + }else{ + this.manageUsersForm.controls['total'].setErrors({ overrun: true }) + } } public applyAction(action, project) { @@ -73,7 +89,7 @@ export class ManageEnvironmentComponent implements OnInit { this.manageUsersForm.setControl('projects', this._fb.array((this.data.projectsList || []).map((x: any) => this._fb.group({ project: x.name, - budget: [x.budget, [Validators.min(0), this.userValidityCheck.bind(this)]], + budget: [x.budget, [ this.userValidityCheck.bind(this)]], canBeStopped: x.canBeStopped, canBeTerminated: x.canBeTerminated })))); @@ -95,18 +111,12 @@ export class ManageEnvironmentComponent implements OnInit { } private totalValidityCheck(control) { - if(control && control.value === null && control.dirty){ - return { integerError: true } - } return (control && control.value) ? (control.value >= this.getCurrentUsersTotal() ? null : { overrun: true }) : null; } private userValidityCheck(control) { - if(control && isNaN(control.value)){ - return { budget: true } - } if (control && control.value) { return (this.getCurrentTotalValue() && this.getCurrentTotalValue() < this.getCurrentUsersTotal()) ? { overrun: true } : null; } diff --git a/services/self-service/src/main/resources/webapp/src/app/core/util/checkUtils.ts b/services/self-service/src/main/resources/webapp/src/app/core/util/checkUtils.ts index 7994030..4cd39c3 100644 --- a/services/self-service/src/main/resources/webapp/src/app/core/util/checkUtils.ts +++ b/services/self-service/src/main/resources/webapp/src/app/core/util/checkUtils.ts @@ -42,7 +42,7 @@ export class CheckUtils { public static numberOnly(event): boolean { const charCode = (event.which) ? event.which : event.keyCode; - if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode !== 46 && charCode !== 44) { + if (charCode > 31 && (charCode < 48 || charCode > 57)) { return false; } return true; --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@dlab.apache.org For additional commands, e-mail: commits-h...@dlab.apache.org