Merge pull request #1219 from apache/DATALAB-2442

[DATALAB-2442] added t-shirt size for gpu types, hid the option for recreate node
diff --git a/services/self-service/src/main/resources/webapp/src/app/administration/project/project-list/project-list.component.html b/services/self-service/src/main/resources/webapp/src/app/administration/project/project-list/project-list.component.html
index 56e0719..e407d30 100644
--- a/services/self-service/src/main/resources/webapp/src/app/administration/project/project-list/project-list.component.html
+++ b/services/self-service/src/main/resources/webapp/src/app/administration/project/project-list/project-list.component.html
@@ -91,12 +91,12 @@
               Stop edge node
             </a>
           </li>
-          <li class="project-seting-item " *ngIf="element.areTerminatedNode" (click)="openEdgeDialog('recreate', element)">
+          <!-- <li class="project-seting-item " *ngIf="element.areTerminatedNode" (click)="openEdgeDialog('recreate', element)">
             <i class="material-icons">refresh</i>
             <a class="action">
               Recreate edge node
             </a>
-          </li>
+          </li> -->
           <li class="project-seting-item " *ngIf="element.areStoppedNode || element.areRunningNode" (click)="openEdgeDialog('terminate', element)">
             <i class="material-icons">phonelink_off</i>
             <a class="action">
diff --git a/services/self-service/src/main/resources/webapp/src/app/core/util/helpUtils.ts b/services/self-service/src/main/resources/webapp/src/app/core/util/helpUtils.ts
index 68178d5..1ebed41 100644
--- a/services/self-service/src/main/resources/webapp/src/app/core/util/helpUtils.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/core/util/helpUtils.ts
@@ -35,4 +35,28 @@
         return;
     }
   }
+
+  public static sortGpuTypes(gpuType: Array<string>): Array<string> {
+    let sortedTypes = [];
+
+    gpuType.forEach(type => checkType(type));
+
+    function checkType(type) {
+      switch (type) {
+        case 'nvidia-tesla-t4':
+          sortedTypes[0] = type;
+          return;
+  
+        case 'nvidia-tesla-p100':
+          sortedTypes[1] = type;
+          return;
+  
+        case 'nvidia-tesla-v100':
+          sortedTypes[2] = type;
+          return;
+      }
+    }
+
+    return sortedTypes;
+  }
 }
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/create-environment/create-environment.component.html b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/create-environment/create-environment.component.html
index 289403e..aaa633c 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/create-environment/create-environment.component.html
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/create-environment/create-environment.component.html
@@ -232,7 +232,7 @@
                   <mat-select formControlName="gpu_type" disableOptionCentering [disabled]="!createExploratoryForm.controls['shape'].value"
                               panelClass="create-resources-dialog" placeholder="GPU type">
                       <mat-option *ngFor="let list_item of gpuTypes" [value]="list_item" (click)="setCount('', list_item)">
-                        {{ list_item}}
+                        <strong class="highlight icon-label">{{ addSizeToGpuType(list_item) }}</strong> {{ list_item }}
                       </mat-option>
                       <mat-option *ngIf="!gpuTypes.length" class="multiple-select ml-10" disabled>
                         GPU list is empty
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/create-environment/create-environment.component.ts b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/create-environment/create-environment.component.ts
index 7399018..7e4a90e 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/create-environment/create-environment.component.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/create-environment/create-environment.component.ts
@@ -24,7 +24,7 @@
 
 import { Project } from '../../../administration/project/project.component';
 import { UserResourceService, ProjectService } from '../../../core/services';
-import {CheckUtils, SortUtils, HTTP_STATUS_CODES, PATTERNS} from '../../../core/util';
+import {CheckUtils, SortUtils, HTTP_STATUS_CODES, PATTERNS, HelpUtils} from '../../../core/util';
 import { DICTIONARY } from '../../../../dictionary/global.dictionary';
 import { CLUSTER_CONFIGURATION } from '../../computational/computational-resource-create-dialog/cluster-configuration-templates';
 import {tap} from 'rxjs/operators';
@@ -150,6 +150,19 @@
 
   }
 
+  public addSizeToGpuType(gpuType: string): string {
+    switch (gpuType) {
+      case 'nvidia-tesla-t4':
+        return 'S';
+
+      case 'nvidia-tesla-p100':
+        return 'M';
+
+      case 'nvidia-tesla-v100':
+        return 'L';
+    }
+  }
+
   public getShapes(template) {
     this.selectedImage = null;
     const controls = ['notebook_image_name', 'shape', 'gpu_type', 'gpu_count'];
@@ -176,7 +189,8 @@
         (template?.image === 'docker.datalab-jupyter' ||
         template?.image === 'docker.datalab-deeplearning' ||
         template?.image === 'docker.datalab-tensor')) {
-      this.gpuTypes = template?.computationGPU ? template.computationGPU : [];
+          
+      this.gpuTypes = template?.computationGPU ? HelpUtils.sortGpuTypes(template.computationGPU) : [];
 
       if(template?.image === 'docker.datalab-tensor' || template?.image === 'docker.datalab-deeplearning') {
         this.addGpuFields();
diff --git a/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/edge-action-dialog/edge-action-dialog.component.ts b/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/edge-action-dialog/edge-action-dialog.component.ts
index 1fe8e66..244493d 100644
--- a/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/edge-action-dialog/edge-action-dialog.component.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/edge-action-dialog/edge-action-dialog.component.ts
@@ -56,7 +56,7 @@
           </ul>
         </div>
         <ng-template #oneNode>
-          Edge node <span class="strong">{{data.item[0].name}}</span> wil be {{data.type === 'stop' ? 'stopped' : 'recreated'}}
+          Edge node <span class="strong">{{data.item[0].name}}</span> wil be {{data.type === 'stop' ? 'stopped' : data.type === 'start' ? 'started' : 'recreated'}}
         </ng-template>
 
       <p class="m-top-20 action-text"><span class="strong">Do you want to proceed?</span></p>