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

dgnatyshyn pushed a commit to branch DLAB-1945
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git

commit 6f77a5afccdfc514d9a0d5c8f698a6b633ecb480
Author: Dmytro_Gnatyshyn <di1...@ukr.net>
AuthorDate: Wed Jul 15 17:13:07 2020 +0300

    [DLAB-1945]: Allowed only one cluster for notebook
---
 .../management-grid/management-grid.component.html |  4 +-
 .../cluster-details/cluster-details.component.html | 14 ++++--
 .../cluster-details/cluster-details.component.ts   |  2 +-
 ...utational-resource-create-dialog.component.html |  6 +--
 ...mputational-resource-create-dialog.component.ts |  5 --
 .../detail-dialog/detail-dialog.component.html     |  2 +-
 .../resources-grid/resources-grid.component.html   | 56 +++++++++++++++-------
 .../resources-grid/resources-grid.component.scss   |  9 ++--
 .../resources-grid/resources-grid.component.ts     |  7 ++-
 .../resources-grid/resources-grid.model.ts         |  6 ++-
 .../notification-dialog.component.ts               |  3 +-
 11 files changed, 71 insertions(+), 43 deletions(-)

diff --git 
a/services/self-service/src/main/resources/webapp/src/app/administration/management/management-grid/management-grid.component.html
 
b/services/self-service/src/main/resources/webapp/src/app/administration/management/management-grid/management-grid.component.html
index 6182843..bf3ef16 100644
--- 
a/services/self-service/src/main/resources/webapp/src/app/administration/management/management-grid/management-grid.component.html
+++ 
b/services/self-service/src/main/resources/webapp/src/app/administration/management/management-grid/management-grid.component.html
@@ -129,7 +129,7 @@
 
     <ng-container matColumnDef="resources">
       <th mat-header-cell *matHeaderCellDef class="resources label-header">
-        <span class="label">Computational resources</span>
+        <span class="label">Compute</span>
         <button mat-icon-button aria-label="More" class="ar" 
(click)="toggleFilterRow()">
           <i class="material-icons">
             <span *ngIf="filtering && filterForm.resources.length > 0 && 
!collapsedFilterRow">filter_list</span>
@@ -195,7 +195,7 @@
               </div>
             </li>
             <li *ngIf="element.name !== 'edge node'"
-              matTooltip="Unable to terminate notebook because at least one 
computational resource is in progress"
+              matTooltip="Unable to terminate notebook because at least one 
compute is in progress"
               matTooltipPosition="above" 
[matTooltipDisabled]="!isResourcesInProgress(element)">
               <div (click)="toggleResourceAction(element, 'terminate')"
                 [ngClass]="{'not-allowed' : element.status !== 'running' && 
element.status !== 'stopped' || isResourcesInProgress(element)}">
diff --git 
a/services/self-service/src/main/resources/webapp/src/app/resources/computational/cluster-details/cluster-details.component.html
 
b/services/self-service/src/main/resources/webapp/src/app/resources/computational/cluster-details/cluster-details.component.html
index 2d7fd60..1680a74 100644
--- 
a/services/self-service/src/main/resources/webapp/src/app/resources/computational/cluster-details/cluster-details.component.html
+++ 
b/services/self-service/src/main/resources/webapp/src/app/resources/computational/cluster-details/cluster-details.component.html
@@ -109,13 +109,17 @@
                  matTooltip="{{item.url}}"
                  matTooltipPosition="above"
                  (mouseover)="showCopyIcon(item.description)"
-                 class="spark-url none-select"
+                 class="spark-url"
                  (contextmenu)="false"
               >{{ item.url }}</a>
-              <span (click)="logAction(resource, environment, 
'copy');$event.stopPropagation()" *ngIf="isCopyIconVissible[item.description]" 
[matTooltip]="isCopied ? 'Copy bucket name' : 'Copied'" 
matTooltipPosition="above" class="copy-icon-wrapper">
-                  <span  class="link-icon" (click)="copyBucketName(item.url)" >
-                    <span _ngcontent-xpv-c19="" class="material-icons" 
(click)="this.isCopied = false">content_copy</span>
-                   </span>
+              <span
+                (click)="logAction(resource, environment, 
'copy');$event.stopPropagation()"
+                *ngIf="isCopyIconVissible[item.description]"
+                [matTooltip]="isCopied ? 'Copy ' + item.description : 
'Copied'" matTooltipPosition="above" class="copy-icon-wrapper"
+              >
+                <span  class="link-icon" (click)="copyBucketName(item.url)" >
+                  <span _ngcontent-xpv-c19="" class="material-icons" 
(click)="this.isCopied = false">content_copy</span>
+                 </span>
               </span>
             </p>
           </div>
diff --git 
a/services/self-service/src/main/resources/webapp/src/app/resources/computational/cluster-details/cluster-details.component.ts
 
b/services/self-service/src/main/resources/webapp/src/app/resources/computational/cluster-details/cluster-details.component.ts
index 46198bc..e2892b5 100644
--- 
a/services/self-service/src/main/resources/webapp/src/app/resources/computational/cluster-details/cluster-details.component.ts
+++ 
b/services/self-service/src/main/resources/webapp/src/app/resources/computational/cluster-details/cluster-details.component.ts
@@ -49,7 +49,7 @@ export class DetailComputationalResourcesComponent implements 
OnInit {
   config: Array<{}> = [];
   public configurationForm: FormGroup;
   isCopyIconVissible: any = {};
-  isCopied: boolean;
+  isCopied: boolean = true;
 
   constructor(
     @Inject(MAT_DIALOG_DATA) public data: any,
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 1591221..94265fd 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
@@ -19,7 +19,7 @@
 
 <div class="create-cluster" id="dialog-box">
   <header class="dialog-header">
-    <h4 class="modal-title">Add computational resources</h4>
+    <h4 class="modal-title">Add compute</h4>
     <button type="button" class="close" 
(click)="dialogRef.close()">&times;</button>
   </header>
   <div class="dialog-content selection">
@@ -233,9 +233,9 @@
     </div>
     <ng-template #placeholder>
       <div *ngIf="!loading && !clusterTypes?.length" class="info message">
-        Computational resource creations are not available.<br>Please, check 
your permissions.</div>
+        Compute creations are not available.<br>Please, check your 
permissions.</div>
       <div *ngIf="loading" class="info message">
-        Computational resource data is processing
+        Compute data is processing
         <mat-progress-bar mode="indeterminate"></mat-progress-bar>
       </div>
     </ng-template>
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 189d6ff..8968a3a 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
@@ -248,11 +248,6 @@ export class ComputationalResourceCreateDialogComponent 
implements OnInit {
     this.userResourceService.getComputationalTemplates(project, endpoint, 
provider).subscribe(
       clusterTypes => {
         this.clusterTypes = clusterTypes.templates;
-        if (this.notebook_instance.resources.some(v => v.image === 
'docker.dlab-dataengine-service'
-          && v.status !== 'terminated'
-          && v.status !== 'failed')) {
-          this.clusterTypes = this.clusterTypes.filter(v => v.image !== 
'docker.dlab-dataengine-service');
-        }
         this.userComputations = clusterTypes.user_computations;
         this.projectComputations = clusterTypes.project_computations;
 
diff --git 
a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/detail-dialog/detail-dialog.component.html
 
b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/detail-dialog/detail-dialog.component.html
index 7aa8a50..b408d98 100644
--- 
a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/detail-dialog/detail-dialog.component.html
+++ 
b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/detail-dialog/detail-dialog.component.html
@@ -71,7 +71,7 @@
                 >
                   &nbsp;{{item.url}}
                 </a>
-                <span (click)="logAction(notebook.name, item.description, 
'Copy');$event.stopPropagation()" *ngIf="isCopyIconVissible[item.description]" 
[matTooltip]="isCopied ? 'Copy bucket name' : 'Copied'" 
matTooltipPosition="above" class="copy-icon-wrapper">
+                <span (click)="logAction(notebook.name, item.description, 
'Copy');$event.stopPropagation()" *ngIf="isCopyIconVissible[item.description]" 
[matTooltip]="isCopied ? 'Copy ' + item.description + ' url': 'Copied'" 
matTooltipPosition="above" class="copy-icon-wrapper">
                   <span  class="link-icon" (click)="copyBucketName(item.url)" >
                     <span _ngcontent-xpv-c19="" class="material-icons" 
(click)="this.isCopied = false">content_copy</span>
                    </span>
diff --git 
a/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.html
 
b/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.html
index 0edb5e7..d45e10b 100644
--- 
a/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.html
+++ 
b/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.html
@@ -159,7 +159,7 @@
                 && element.status !== 'creating image'">
                   <li
                     *ngIf="element.status !== 'stopped' && element.status !== 
'stopping' && element.status !== 'starting' && element.status !== 'creating 
image' && element.status.toLowerCase() !== 'reconfiguring'"
-                    matTooltip="Unable to stop notebook because at least one 
computational resource is in progress"
+                    matTooltip="Unable to stop notebook because at least one 
compute is in progress"
                     matTooltipPosition="above" 
[matTooltipDisabled]="!isResourcesInProgress(element)">
                     <div (click)="exploratoryAction(element, 'stop')"
                       [ngClass]="{'not-allowed': 
isResourcesInProgress(element) }">
@@ -179,7 +179,7 @@
                     </div>
                   </li>
                   <li *ngIf="element.status.toLowerCase() === 'running' || 
element.status.toLowerCase() === 'stopped'"
-                    matTooltip="Unable to terminate notebook because at least 
one computational resource is in progress"
+                    matTooltip="Unable to terminate notebook because at least 
one compute is in progress"
                     matTooltipPosition="above" 
[matTooltipDisabled]="!isResourcesInProgress(element)">
                     <div (click)="exploratoryAction(element, 'terminate')"
                       [ngClass]="{'not-allowed': 
isResourcesInProgress(element) }">
@@ -187,33 +187,55 @@
                       <span>Terminate</span>
                     </div>
                   </li>
-                  <li (click)="exploratoryAction(element, 'deploy')"
-                    *ngIf="element.status === 'running' && element.image !== 
'docker.dlab-superset' && element.image !== 'docker.dlab-jupyterlab'">
-                    <i class="material-icons">memory</i>
-                    <span>Add compute</span>
+                  <li
+                    *ngIf="element.status === 'running' && element.image !== 
'docker.dlab-superset' && element.image !== 'docker.dlab-jupyterlab'"
+                    matTooltip="Only one compute can be associated with 
analytical tool at a time"
+                    matTooltipPosition="above" 
[matTooltipDisabled]="!element.activeCompute"
+                    [matTooltipClass]="'bucket-item-tooltip'"
+                    [ngClass]="{'not-allow': element.activeCompute }"
+                  >
+                    <div
+                      (click)="exploratoryAction(element, 'deploy')"
+                      [ngClass]="{'not-allowed': element.activeCompute }"
+                    >
+                      <i class="material-icons">memory</i>
+                      <span>Add compute</span>
+                    </div>
                   </li>
                   <li (click)="exploratoryAction(element, 'schedule')" 
*ngIf="element.status.toLowerCase() === 'running'
                 || element.status.toLowerCase() === 'stopped'">
-                    <i class="material-icons">schedule</i>
-                    <span>Scheduler</span>
+                    <div>
+                      <i class="material-icons">schedule</i>
+                      <span>Scheduler</span>
+                    </div>
                   </li>
                 </div>
                 <li (click)="exploratoryAction(element, 'ami')"
                   *ngIf="element.status === 'running'  && element.image !== 
'docker.dlab-superset' && element.image !== 'docker.dlab-jupyterlab'">
-                  <i class="material-icons">view_module</i>
-                  <span>Create AMI</span>
+                  <div>
+                    <i class="material-icons">view_module</i>
+                    <span>Create AMI</span>
+                  </div>
                 </li>
                 <li (click)="exploratoryAction(element, 'install')"
                   *ngIf="element.image !== 'docker.dlab-superset' && 
element.image !== 'docker.dlab-jupyterlab'">
-                  <i class="material-icons">developer_board</i>
-                  <span>Manage libraries</span>
+                  <div>
+                    <i class="material-icons">developer_board</i>
+                    <span>Manage libraries</span>
+                  </div>
                 </li>
                 <li *ngIf="element.status === 'running'" 
(click)="logAction(element.name)">
-                  <a target="_blank" [attr.href]="'/#/terminal/' + 
element.private_ip + '/' + element.endpoint"
-                    class="navigate">
-                    <i class="material-icons">laptop</i>
-                    <span>Open terminal</span>
-                  </a>
+                  <div>
+                    <a
+                      target="_blank"
+                      [attr.href]="'/#/terminal/' + element.private_ip + '/' + 
element.endpoint"
+                      class="navigate"
+                      (contextmenu)="false"
+                    >
+                      <i class="material-icons">laptop</i>
+                      <span>Open terminal</span>
+                    </a>
+                  </div>
                 </li>
               </ul>
             </bubble-up>
diff --git 
a/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.scss
 
b/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.scss
index b65e3e4..9f8d9f9 100644
--- 
a/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.scss
+++ 
b/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.scss
@@ -330,11 +330,14 @@ tr.detail-row {
 .data-grid .list-menu li {
   font-size: 14px;
   border-bottom: 1px solid #edf1f5;
-  padding: 8px 15px;
+  padding-bottom: 5px;
   cursor: pointer;
   margin: 5px -5px;
   color: #577289;
   transition: all 0.45s ease-in-out;
+  div{
+    padding: 8px 15px;
+  }
 }
 
 .data-grid .list-menu a.navigate {
@@ -349,8 +352,8 @@ tr.detail-row {
   vertical-align: bottom;
 }
 
-.data-grid .list-menu li:hover,
-.data-grid .list-menu li:hover a {
+.data-grid .list-menu li:not(.not-allow):hover,
+.data-grid .list-menu li:not(.not-allow):hover a {
   background: none !important;
   color: #36afd5;
 }
diff --git 
a/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.ts
 
b/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.ts
index 2136151..e299d04 100644
--- 
a/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.ts
+++ 
b/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.ts
@@ -416,7 +416,10 @@ export class ResourcesGridComponent implements OnInit {
         (error) => console.log('UPDATE USER PREFERENCES ERROR ', error));
   }
 
-  logAction(name) {
-    this.auditService.sendDataToAudit({resource_name: name, info: `Open 
terminal, requested for notebook`, type: 'WEB_TERMINAL'}).subscribe();
+  private logAction(name) {
+    this.auditService.sendDataToAudit({
+      resource_name: name, info: `Open terminal, requested for notebook`, 
type: 'WEB_TERMINAL'
+    }).subscribe();
   }
+
 }
diff --git 
a/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.model.ts
 
b/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.model.ts
index c4ad5800..e1b1360 100644
--- 
a/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.model.ts
+++ 
b/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.model.ts
@@ -50,7 +50,8 @@ export class ExploratoryModel {
     public project: string,
     public endpoint: string,
     public tags: any,
-    public edgeNodeStatus: string
+    public edgeNodeStatus: string,
+    public activeCompute: boolean
   ) { }
 
   public static loadEnvironments(data: Array<any>) {
@@ -92,7 +93,8 @@ export class ExploratoryModel {
               el.project,
               el.endpoint,
               el.tags,
-              value.shared[el.endpoint].status
+              value.shared[el.endpoint].status,
+              !!el.computational_resources.filter(resource => resource.status 
!== 'terminated' && resource.status !== 'failed').length
             );
           })
         };
diff --git 
a/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/notification-dialog/notification-dialog.component.ts
 
b/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/notification-dialog/notification-dialog.component.ts
index 232eab1..6bec677 100644
--- 
a/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/notification-dialog/notification-dialog.component.ts
+++ 
b/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/notification-dialog/notification-dialog.component.ts
@@ -32,8 +32,7 @@ import {Endpoint} from 
'../../../administration/project/project.component';
           <div mat-dialog-content class="content message">
             <div *ngIf="data.type === 'terminateNode'" class="table-header">
               <div *ngIf="data.item.action.endpoint.length > 0">
-                Edge node<span 
*ngIf="data.item.action.endpoint.length>1">s</span>
-                        <span class="strong">{{ 
data.item.action.endpoint.join(', ') }}</span> in project
+                Edge node<span 
*ngIf="data.item.action.endpoint.length>1">s</span>&nbsp;<span 
class="strong">{{ data.item.action.endpoint.join(', ') }}</span> in project
                 <span class="strong">{{ data.item.action.project_name 
}}</span> will be terminated.
               </div>
             </div>


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@dlab.apache.org
For additional commands, e-mail: commits-h...@dlab.apache.org

Reply via email to