You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datalab.apache.org by dg...@apache.org on 2020/11/20 15:34:49 UTC

[incubator-datalab] branch develop updated: [DATALAB-2160]: Fixed disabled gear icon if Notebook contains Data Engine (#986)

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

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


The following commit(s) were added to refs/heads/develop by this push:
     new 66ec0eb  [DATALAB-2160]: Fixed disabled gear icon if Notebook contains Data Engine (#986)
66ec0eb is described below

commit 66ec0eb47c785adefd5d551fa634f480f89faeaf
Author: Dmytro Gnatyshyn <42...@users.noreply.github.com>
AuthorDate: Fri Nov 20 17:34:41 2020 +0200

    [DATALAB-2160]: Fixed disabled gear icon if Notebook contains Data Engine (#986)
    
    [DATALAB-2160]: Fixed disabled gear icon if Notebook contains Data Engine
---
 .../management-grid/management-grid.component.html |  6 +--
 .../management-grid/management-grid.component.ts   | 57 ++++++++++++++--------
 2 files changed, 40 insertions(+), 23 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 d14d7f3..523cd59 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
@@ -191,7 +191,7 @@
             <span #settings class="actions" (click)="actions.toggle($event, settings)" *ngIf="element.type !== 'edge node'"
               [ngClass]="{
                 'disabled' : (element.status !== 'running' && element.status !== 'stopped' && element.status !== 'stopping' && element.status !== 'failed')
-                 || selected?.length || isActiveResources(element)}">
+                 || selected?.length || inProgress(element.resources)}">
 
             </span>
           </span>
@@ -306,7 +306,7 @@
 
       <ng-container matColumnDef="scrollButtons">
           <td mat-footer-cell *matFooterCellDef colspan="9" class="buttons-wrap">
-            <div class="buttons" [ngStyle]="{'width.px': wrapper.offsetWidth}" [hidden]="!tableEl['offsetWidth']">
+            <div class="buttons" [ngStyle]="{'width.px': tableWrapperWidth }" [hidden]="!tableWrapperWidth">
               <div class="button-container">
                 <button mat-mini-fab aria-label="Scroll left"
                         (click)="sctollTo('left')"
@@ -335,7 +335,7 @@
 
 
       <tr [hidden]="allFilteredEnvironmentData?.length" mat-footer-row *matFooterRowDef="['placeholder']" class="info"></tr>
-      <tr [hidden]="!tableEl['offsetWidth'] || tableWrapper.offsetWidth - tableEl['offsetWidth'] > -1 || !allFilteredEnvironmentData?.length" mat-footer-row *matFooterRowDef="['scrollButtons']; sticky: true" class="info"></tr>
+      <tr [hidden]="!tableEl || !tableEl['offsetWidth'] || tableWrapper.offsetWidth - tableEl['offsetWidth'] > -16 || !allFilteredEnvironmentData?.length" mat-footer-row *matFooterRowDef="['scrollButtons']; sticky: true" class="info"></tr>
     </table>
 
     </div>
diff --git a/services/self-service/src/main/resources/webapp/src/app/administration/management/management-grid/management-grid.component.ts b/services/self-service/src/main/resources/webapp/src/app/administration/management/management-grid/management-grid.component.ts
index cf7bf0c..b97ddf8 100644
--- a/services/self-service/src/main/resources/webapp/src/app/administration/management/management-grid/management-grid.component.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/administration/management/management-grid/management-grid.component.ts
@@ -17,19 +17,30 @@
  * under the License.
  */
 
-import {Component, OnInit, ViewChild, Input, Output, EventEmitter, Inject, HostListener} from '@angular/core';
+import {
+  Component,
+  OnInit,
+  ViewChild,
+  Input,
+  Output,
+  EventEmitter,
+  Inject,
+  HostListener,
+  AfterViewInit,
+  AfterViewChecked,
+  ApplicationRef
+} from '@angular/core';
 import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
 import { ToastrService } from 'ngx-toastr';
 
 import { HealthStatusService } from '../../../core/services';
 import { SortUtils } from '../../../core/util';
-import { ConfirmationDialogType } from '../../../shared';
-import { ConfirmationDialogComponent } from '../../../shared/modal-dialog/confirmation-dialog';
 import { EnvironmentsDataService } from '../management-data.service';
 import { EnvironmentModel, ManagementConfigModel } from '../management.model';
 import {ProgressBarService} from '../../../core/services/progress-bar.service';
 import {DetailDialogComponent} from '../../../resources/exploratory/detail-dialog';
 import {BehaviorSubject, Subject, timer} from 'rxjs';
+import { ChangeDetectorRef } from '@angular/core';
 
 export interface ManageAction {
   action: string;
@@ -46,7 +57,7 @@ export interface ManageAction {
     '../../../resources/computational/computational-resources-list/computational-resources-list.component.scss'
   ]
 })
-export class ManagementGridComponent implements OnInit {
+export class ManagementGridComponent implements OnInit, AfterViewInit, AfterViewChecked {
   allEnvironmentData: Array<any>;
   allFilteredEnvironmentData: Array<any>;
   loading: boolean = false;
@@ -69,10 +80,10 @@ export class ManagementGridComponent implements OnInit {
   @ViewChild('wrapper') wrapper;
   @ViewChild('pageWrapper') pageWrapper;
   @ViewChild('table') table;
+  private tableWrapperWidth: number;
 
   @HostListener('window:resize', ['$event'])
   onResize(event) {
-    this.isScrollButtonsVisible = this.tableWrapper.nativeElement.offsetWidth - this.table._elementRef.nativeElement.offsetWidth < 0;
     this.checkMaxRight();
   }
 
@@ -88,7 +99,6 @@ export class ManagementGridComponent implements OnInit {
   private cashedFilterForm: ManagementConfigModel = new ManagementConfigModel([], '', [], [], [], [], []);
   public isFilterSelected: boolean;
   public isFilterChanged: boolean;
-  private isScrollButtonsVisible: boolean;
 
   constructor(
     private healthStatusService: HealthStatusService,
@@ -96,16 +106,28 @@ export class ManagementGridComponent implements OnInit {
     public toastr: ToastrService,
     public dialog: MatDialog,
     private progressBarService: ProgressBarService,
+    private cdRef: ChangeDetectorRef,
+    private applicationRef: ApplicationRef,
   ) { }
 
   ngOnInit() {
-  this.getEnvironmentData();
-    timer(1000)
-      .subscribe(() => {
-      this.isScrollButtonsVisible = this.tableWrapper.nativeElement.offsetWidth - this.table._elementRef.nativeElement.offsetWidth < 0;
-      this.checkMaxRight();
-      this.tableEl = this.table._elementRef.nativeElement;
-    });
+    this.getEnvironmentData();
+  }
+
+
+  ngAfterViewInit() {
+    this.tableEl = this.table._elementRef.nativeElement;
+    this.checkMaxRight();
+  }
+
+  ngAfterViewChecked() {
+    if (this.tableWrapperWidth !== this.wrapper.nativeElement.offsetWidth) {
+      this.tableWrapperWidth = this.wrapper.nativeElement.offsetWidth;
+      timer(100).subscribe(_ => {
+        this.applicationRef.tick();
+      });
+    }
+    this.cdRef.detectChanges();
   }
 
   getEnvironmentData() {
@@ -217,18 +239,13 @@ export class ManagementGridComponent implements OnInit {
   }
 
   public inProgress(resources) {
-    return resources.filter(resource => (
+    return resources.some(resource => (
       resource.status !== 'failed'
       && resource.status !== 'terminated'
       && resource.status !== 'running'
-      && resource.status !== 'stopped')).length > 0;
+      && resource.status !== 'stopped'));
   }
 
-  public isActiveResources(item) {
-    if (item.resources.length) return item.resources.some(e => e.status !== 'terminated');
-  }
-
-
   private getDefaultFilterConfiguration(data): void {
     const users = [], projects = [], shapes = [], statuses = [], resources = [], endpoints = [];
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datalab.apache.org
For additional commands, e-mail: commits-help@datalab.apache.org