You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dlab.apache.org by dg...@apache.org on 2020/01/06 12:56:36 UTC

[incubator-dlab] 01/02: [DLAB-1417]: Fixed error message is not appeared if project quota is more than total one

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 <di...@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-unsubscribe@dlab.apache.org
For additional commands, e-mail: commits-help@dlab.apache.org