This is an automated email from the ASF dual-hosted git repository.

ankovalyshyn pushed a commit to branch v2.1-RC2-manage-roles-bugfix
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git

commit 800594ed5987d8f14157fe8ecb265af90b9b9223
Author: Andriana Kovalyshyn <[email protected]>
AuthorDate: Tue Mar 19 21:59:42 2019 +0200

    [DLAB-573]: fixed preemptible node validation
---
 .../manage-roles-groups/group-name-validarion.directive.ts  |  4 ++--
 .../manage-roles-groups/manage-roles-groups.component.html  |  1 -
 .../computational-resource-create-dialog.component.html     |  8 ++++++--
 .../computational-resource-create-dialog.component.scss     |  3 +++
 .../computational-resource-create-dialog.component.ts       | 13 +++++++++++--
 5 files changed, 22 insertions(+), 7 deletions(-)

diff --git 
a/services/self-service/src/main/resources/webapp/src/app/health-status/manage-roles-groups/group-name-validarion.directive.ts
 
b/services/self-service/src/main/resources/webapp/src/app/health-status/manage-roles-groups/group-name-validarion.directive.ts
index cb19b94..879e3e2 100644
--- 
a/services/self-service/src/main/resources/webapp/src/app/health-status/manage-roles-groups/group-name-validarion.directive.ts
+++ 
b/services/self-service/src/main/resources/webapp/src/app/health-status/manage-roles-groups/group-name-validarion.directive.ts
@@ -25,14 +25,14 @@ import { AbstractControl, NG_VALIDATORS, Validator } from 
'@angular/forms';
   selector: '[validator][ngModel],[group-dir][ngFormControl]',
   providers: [{
     multi: true,
-    provide: NG_VALIDATORS, 
+    provide: NG_VALIDATORS,
     useExisting: forwardRef(() => GroupNameValidationDirective)
   }]
 })
 export class GroupNameValidationDirective implements Validator {
   @Input() validator: Function;
 
-  validate(control: AbstractControl):{ [key: string]: any; } {
+  validate(control: AbstractControl): { [key: string]: any; } {
     return this.validator(control);
   }
 }
diff --git 
a/services/self-service/src/main/resources/webapp/src/app/health-status/manage-roles-groups/manage-roles-groups.component.html
 
b/services/self-service/src/main/resources/webapp/src/app/health-status/manage-roles-groups/manage-roles-groups.component.html
index 85b751b..d977662 100644
--- 
a/services/self-service/src/main/resources/webapp/src/app/health-status/manage-roles-groups/manage-roles-groups.component.html
+++ 
b/services/self-service/src/main/resources/webapp/src/app/health-status/manage-roles-groups/manage-roles-groups.component.html
@@ -151,4 +151,3 @@
     </div>
   </modal-content>
 </modal-dialog>
-
diff --git 
a/services/self-service/src/main/resources/webapp/src/app/resources/computational/computational-resource-create-dialog/computational-resource-create-dialog.component.html
 
b/services/self-service/src/main/resources/webapp/src/app/resources/computational/computational-resource-create-dialog/computational-resource-create-dialog.component.html
index e92d45a..d51eea3 100644
--- 
a/services/self-service/src/main/resources/webapp/src/app/resources/computational/computational-resource-create-dialog/computational-resource-create-dialog.component.html
+++ 
b/services/self-service/src/main/resources/webapp/src/app/resources/computational/computational-resource-create-dialog/computational-resource-create-dialog.component.html
@@ -91,7 +91,7 @@
           </div>
         </div>
 
-        <div class="checkbox-group m-top-30" *ngIf="PROVIDER === 'gcp' && 
model.selectedImage?.image === 'docker.dlab-dataengine-service'">
+        <div class="checkbox-group m-top-30 m-bott-10" *ngIf="PROVIDER === 
'gcp' && model.selectedImage?.image === 'docker.dlab-dataengine-service'">
           <label>
             <input #preemptibleNode type="checkbox" 
(change)="selectPreemptibleNodes($event)" /> Preemptible nodes
           </label>
@@ -99,7 +99,11 @@
             <div *ngIf="preemptible?.nativeElement['checked']" 
class="control-group">
               <label class="label">Preemptible node count</label>
               <div class="control">
-                <input type="number" class="form-control" 
min="{{minPreemptibleInstanceNumber}}" max="{{maxPreemptibleInstanceNumber}}" 
formControlName="preemptible_instance_number" (keypress)="isNumberKey($event)" 
/>
+                <input type="text" class="form-control"
+                  formControlName="preemptible_instance_number"
+                  (keypress)="isNumberKey($event)"
+                  (keydown.arrowup)="preemptibleCounter($event, 'increment')"
+                  (keydown.arrowdown)="preemptibleCounter($event, 
'decrement')" />
                 <span class="danger_color" 
*ngIf="!resourceForm?.controls.preemptible_instance_number.valid">
                   <span *ngIf="minPreemptibleInstanceNumber !== 
maxPreemptibleInstanceNumber; else equal">
                     Only integer values greater than or equal to {{ 
minPreemptibleInstanceNumber }} and less than {{ maxPreemptibleInstanceNumber 
}} are allowed
diff --git 
a/services/self-service/src/main/resources/webapp/src/app/resources/computational/computational-resource-create-dialog/computational-resource-create-dialog.component.scss
 
b/services/self-service/src/main/resources/webapp/src/app/resources/computational/computational-resource-create-dialog/computational-resource-create-dialog.component.scss
index 5eef8c3..52135e5 100644
--- 
a/services/self-service/src/main/resources/webapp/src/app/resources/computational/computational-resource-create-dialog/computational-resource-create-dialog.component.scss
+++ 
b/services/self-service/src/main/resources/webapp/src/app/resources/computational/computational-resource-create-dialog/computational-resource-create-dialog.component.scss
@@ -73,6 +73,9 @@
     }
   }
   .preemptible-details {
+    .label {
+      padding-left: 10px;
+    }
     .control {
       position: relative;
     }
diff --git 
a/services/self-service/src/main/resources/webapp/src/app/resources/computational/computational-resource-create-dialog/computational-resource-create-dialog.component.ts
 
b/services/self-service/src/main/resources/webapp/src/app/resources/computational/computational-resource-create-dialog/computational-resource-create-dialog.component.ts
index c5635e7..f6b3cf4 100644
--- 
a/services/self-service/src/main/resources/webapp/src/app/resources/computational/computational-resource-create-dialog/computational-resource-create-dialog.component.ts
+++ 
b/services/self-service/src/main/resources/webapp/src/app/resources/computational/computational-resource-create-dialog/computational-resource-create-dialog.component.ts
@@ -48,6 +48,7 @@ export class ComputationalResourceCreateDialogComponent 
implements OnInit {
   clusterNamePattern: string = '[-_a-zA-Z0-9]*[_-]*[a-zA-Z0-9]+';
   nodeCountPattern: string = '^[1-9]\\d*$';
   delimitersRegex = /[-_]?/g;
+  integerRegex = '^[0-9]*$';
 
   public minInstanceNumber: number;
   public maxInstanceNumber: number;
@@ -179,7 +180,7 @@ export class ComputationalResourceCreateDialogComponent 
implements OnInit {
   }
 
   public selectConfiguration() {
-    if (this.configuration.nativeElement.checked) {
+    if (this.configuration && this.configuration.nativeElement.checked) {
       const template = (this.model.selectedImage.image === 
'docker.dlab-dataengine-service')
         ? CLUSTER_CONFIGURATION.EMR
         : CLUSTER_CONFIGURATION.SPARK;
@@ -235,6 +236,14 @@ export class ComputationalResourceCreateDialogComponent 
implements OnInit {
     }
   }
 
+  public preemptibleCounter($event, action): void {
+    $event.preventDefault();
+
+    const value = 
this.resourceForm.controls['preemptible_instance_number'].value;
+    const newValue = (action === 'increment' ? Number(value) + 1 : 
Number(value) - 1);
+    this.resourceForm.controls.preemptible_instance_number.setValue(newValue);
+  }
+
   public close(): void {
     if (this.bindDialog.isOpened)
       this.bindDialog.close();
@@ -245,7 +254,7 @@ export class ComputationalResourceCreateDialogComponent 
implements OnInit {
       cluster_alias_name: ['', [Validators.required, 
Validators.pattern(this.clusterNamePattern),
                                 this.providerMaxLength, 
this.checkDuplication.bind(this)]],
       instance_number: ['', [Validators.required, 
Validators.pattern(this.nodeCountPattern), 
this.validInstanceNumberRange.bind(this)]],
-      preemptible_instance_number: [0, 
[this.validPreemptibleRange.bind(this)]],
+      preemptible_instance_number: [0, 
Validators.compose([Validators.pattern(this.integerRegex), 
this.validPreemptibleRange.bind(this)])],
       instance_price: [0, [this.validInstanceSpotRange.bind(this)]],
       configuration_parameters: ['', [this.validConfiguration.bind(this)]]
     });


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to