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/08/05 07:21:21 UTC

[incubator-dlab] branch develop updated: [DLAB-1970]: Changed validation for folder creation an other small changes (#843)

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-dlab.git


The following commit(s) were added to refs/heads/develop by this push:
     new 401da28  [DLAB-1970]: Changed validation for folder creation an other small changes (#843)
401da28 is described below

commit 401da288a17352daf7cce679e142501837450c6e
Author: Dmytro Gnatyshyn <42...@users.noreply.github.com>
AuthorDate: Wed Aug 5 10:21:12 2020 +0300

    [DLAB-1970]: Changed validation for folder creation an other small changes (#843)
---
 .../manage-environment-dilog.component.html        |  5 ++++-
 .../manage-environment-dilog.component.ts          |  5 +++--
 .../resources/webapp/src/app/core/util/patterns.ts |  2 +-
 .../reporting-grid/reporting-grid.component.html   |  2 +-
 .../reporting-grid/reporting-grid.component.scss   |  5 +++++
 .../bucket-browser/bucket-browser.component.scss   |  9 +++++++--
 .../buckets-tree/bucket-tree.component.scss        |  2 +-
 .../folder-tree/folder-tree.component.html         |  2 +-
 .../install-libraries.component.html               |  6 +++---
 .../resources-grid/resources-grid.component.ts     | 22 +++++++++++++++++++++-
 .../src/app/resources/resources.component.html     | 16 ++++++++--------
 .../src/app/resources/resources.component.ts       | 10 ++++++++--
 12 files changed, 63 insertions(+), 23 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 ed3cc91..591cdee 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
@@ -70,7 +70,10 @@
                 <div class="quotes">
                   <input type="number" (keypress)="CheckUtils.numberOnly($event)" formControlName="total"
                          placeholder="Enter total budget, in USD">
-                  <span class="error" *ngIf="manageUsersForm?.controls['total'].hasError('overrun')">Total budget cannot be lower than a sum of projects quotes</span>
+                  <span class="error" *ngIf="manageUsersForm?.controls['total'].hasError('overrun')
+                  && !manageUsersForm?.controls['total'].hasError('max')">Total budget cannot be lower than a sum of projects quotes</span>
+                  <span class="error"
+                        *ngIf="manageUsersForm?.controls['total'].hasError('max')">Total budget cannot be higher than 1000000000</span>
                 </div>
               </mat-list-item>
             </div>
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 f2f1cf7..4aa2871 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
@@ -64,7 +64,8 @@ export class ManageEnvironmentComponent implements OnInit {
             'max' in v.controls['budget'].errors ? null : v.controls['budget'].setErrors(null);
         }
         );
-        this.manageUsersForm.controls['total'].setErrors(null);
+        this.manageUsersForm.controls['total'].errors &&
+        this.manageUsersForm.controls['total'].errors ? null : this.manageUsersForm.controls['total'].setErrors(null);
       }
     });
   }
@@ -107,7 +108,7 @@ export class ManageEnvironmentComponent implements OnInit {
 
   private initForm(): void {
     this.manageUsersForm = this._fb.group({
-      total: [null, [Validators.min(0), this.totalValidityCheck.bind(this)]],
+      total: [null, [Validators.min(0), this.totalValidityCheck.bind(this), Validators.max(1000000000)]],
       projects: this._fb.array([this._fb.group({ project: '', budget: null, status: '' })])
     });
   }
diff --git a/services/self-service/src/main/resources/webapp/src/app/core/util/patterns.ts b/services/self-service/src/main/resources/webapp/src/app/core/util/patterns.ts
index 8246bba..981e661 100644
--- a/services/self-service/src/main/resources/webapp/src/app/core/util/patterns.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/core/util/patterns.ts
@@ -24,6 +24,6 @@ export const PATTERNS = {
   url: '[a-zA-Z0-9.://%#&\\.@:%-_\+~#=]*\.[^\s]*[a-zA-Z0-9]/+',
   nodeCountPattern: '^[1-9]\\d*$',
   integerRegex: '^[0-9]*$',
-  folderRegex: /^[a-zA-Z0-9!@$%^&*()_+\-=\[\]{};':|,.<>~` ]*$/,
+  folderRegex: /^[a-zA-Z0-9!@$^&*()_+\-=\[\]{};':|,.<>~` ]*$/,
   fullUrl: /^(http?|ftp|https):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+([.:])(\d{4}|com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*\/$/
 };
diff --git a/services/self-service/src/main/resources/webapp/src/app/reports/reporting/reporting-grid/reporting-grid.component.html b/services/self-service/src/main/resources/webapp/src/app/reports/reporting/reporting-grid/reporting-grid.component.html
index 3e354a3..1481d53 100644
--- a/services/self-service/src/main/resources/webapp/src/app/reports/reporting/reporting-grid/reporting-grid.component.html
+++ b/services/self-service/src/main/resources/webapp/src/app/reports/reporting/reporting-grid/reporting-grid.component.html
@@ -279,7 +279,7 @@
     <tr [hidden]="reportData?.length" mat-footer-row *matFooterRowDef="['placeholder']"></tr>
   </table>
 </section>
-  <div class="buttons" *ngIf="isScrollButtonsVisible">
+  <div class="buttons" *ngIf="isScrollButtonsVisible && reportData?.length">
     <div class="button-container">
       <button mat-mini-fab aria-label="Scroll left" (click)="sctollTo('left')" [ngClass]="{'not-allowed': tableWrapper.scrollLeft === 0 }">
         <mat-icon [ngClass]="{'highlight': tableWrapper.scrollLeft !== 0}">keyboard_arrow_left</mat-icon>
diff --git a/services/self-service/src/main/resources/webapp/src/app/reports/reporting/reporting-grid/reporting-grid.component.scss b/services/self-service/src/main/resources/webapp/src/app/reports/reporting/reporting-grid/reporting-grid.component.scss
index b92962d..253d354 100644
--- a/services/self-service/src/main/resources/webapp/src/app/reports/reporting/reporting-grid/reporting-grid.component.scss
+++ b/services/self-service/src/main/resources/webapp/src/app/reports/reporting/reporting-grid/reporting-grid.component.scss
@@ -211,6 +211,11 @@
       .label {
         padding-top: 10px;
       }
+
+      &.label-header{
+        box-shadow: none;
+        border-bottom: 1px solid lightgrey !important;
+      }
     }
 
     .label {
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/bucket-browser.component.scss b/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/bucket-browser.component.scss
index fbdf05b..2cf6731 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/bucket-browser.component.scss
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/bucket-browser.component.scss
@@ -105,15 +105,20 @@
       direction: rtl;
 
      &-folder{
-       padding-left: 5px;
+       padding-left: 20px;
        padding-right: 5px;
        color: #00bcd4;
        cursor: pointer;
+
+       &:first-of-type{
+         padding-left: 5px;
+       }
      }
 
       &-icon i{
-        transform: translateY(2px);
+        transform: translateY(1px);
         font-size: 15px;
+        position: absolute;
       }
     }
   }
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/buckets-tree/bucket-tree.component.scss b/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/buckets-tree/bucket-tree.component.scss
index 5bd774a..736c6ee 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/buckets-tree/bucket-tree.component.scss
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/buckets-tree/bucket-tree.component.scss
@@ -18,7 +18,7 @@
  */
 .folder{
   padding-left: 5px;
-  max-width: 350px;
+  max-width: 310px;
   white-space: nowrap;
   text-overflow: ellipsis;
   overflow: hidden;
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/folder-tree/folder-tree.component.html b/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/folder-tree/folder-tree.component.html
index 6f24500..6879271 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/folder-tree/folder-tree.component.html
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/folder-tree/folder-tree.component.html
@@ -35,7 +35,7 @@
         <mat-label>New folder</mat-label>
         <input matInput #itemValue [formControl]="folderFormControl" [errorStateMatcher]="matcher">
         <mat-error *ngIf="!folderFormControl.hasError('required') && !folderFormControl.hasError('isDuplicate')">
-          The folder name can only contain Latin letters, numbers and special characters except for #, ?, /, \, "
+          The folder name can only contain Latin letters, numbers and special characters except for #, ?, /, \, %"
         </mat-error>
         <mat-error *ngIf="folderFormControl.hasError('required')">
           Folder name is <strong>required</strong>
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/install-libraries/install-libraries.component.html b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/install-libraries/install-libraries.component.html
index e37bb0c..654f29b 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/install-libraries/install-libraries.component.html
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/install-libraries/install-libraries.component.html
@@ -280,7 +280,7 @@
                  </button>
 
                  <button mat-icon-button class="btn apply" (click)="filterLibs()">
-                   <i class="material-icons"  [ngClass]="{'not-allowed': filterModel.length === 0}">done</i>
+                   <i class="material-icons"  [ngClass]="{'not-allowed': filterModel['length'] === 0}">done</i>
                  </button>
                </div>
              </th>
@@ -312,9 +312,9 @@
                         <span *ngIf="!installingInProgress && item.status === 'installation_error'" (click)="reinstallLibrary(item, lib)" matTooltip="Retry installation" matTooltipPosition="above">
                           <i class="material-icons">replay</i>
                         </span>
-                        <span class="not-allowed" *ngIf="installingInProgress && item.status === 'installation_error'" matTooltip="Please wait until lib installation completes"
+                        <span class="not-allow" *ngIf="installingInProgress && item.status === 'installation_error'" matTooltip="Please wait until lib installation completes"
                           matTooltipPosition="above">
-                          <i class="material-icons">replay</i>
+                          <i class="material-icons not-allowed">replay</i>
                         </span>
                       </div>
                       <div *ngIf="item.status === 'installation_error' && item.error" class="lib-error" (click)="showErrorMessage(item)" matTooltip="Show error message" matTooltipPosition="above">
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 69e8b02..c984a6f 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
@@ -18,7 +18,7 @@
  */
 
 import {Project} from '../../administration/project/project.component';
-import {Component, Input, OnInit} from '@angular/core';
+import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';
 import { animate, state, style, transition, trigger } from '@angular/animations';
 import { ToastrService } from 'ngx-toastr';
 import { MatDialog } from '@angular/material/dialog';
@@ -91,6 +91,7 @@ export class ResourcesGridComponent implements OnInit {
   readonly DICTIONARY = DICTIONARY;
 
   @Input() projects: Array<any>;
+  @Output() getEnvironments: EventEmitter<any> = new EventEmitter();
 
   environments: Exploratory[];
 
@@ -146,6 +147,7 @@ export class ResourcesGridComponent implements OnInit {
     this.userResourceService.getUserProvisionedResources()
       .subscribe((result: any) => {
         this.environments = ExploratoryModel.loadEnvironments(result);
+        this.getEnvironments.emit(this.environments);
         this.getBuckets();
         this.getDefaultFilterConfiguration();
         (this.environments.length) ? this.getUserPreferences() : this.filteredEnvironments = [];
@@ -283,6 +285,24 @@ export class ResourcesGridComponent implements OnInit {
     });
 
     this.bucketsList = SortUtils.flatDeep(bucketsList, 1).filter(v => v.children.length);
+    // this.bucketsList = [
+    //   {
+    //     children: [{name: 'SERVICE_BASE_NAME-${EDGE_USER_NAME}-bucket.SERVICE_BASE_NAME-${EDGE_USER_NAME}-bucket', endpoint: 'local'}],
+    //     cloud: 'GCP',
+    //     name: 'Proj1 (local)'
+    //   },
+    //   {
+    //     children: [{name: 'SERVICE_BASE_NAME-${EDGE_USER_NAME}-bucket.SERVICE_BASE_NAME-${EDGE_USER_NAME}-bucket', endpoint: 'local'}],
+    //     cloud: 'GCP',
+    //     name: 'Proj1 (local)'
+    //   },
+    //   {
+    //     children: [{name: 'SERVICE_BASE_NAME-${EDGE_USER_NAME}-bucket.SERVICE_BASE_NAME-${EDGE_USER_NAME}-bucket', endpoint: 'local'}],
+    //     cloud: 'GCP',
+    //     name: 'Proj1 (local)'
+    //   },
+    // ],
+    // console.log(this.bucketsList);
   }
 
 
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/resources.component.html b/services/self-service/src/main/resources/webapp/src/app/resources/resources.component.html
index d6b9616..ad6fc53 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/resources.component.html
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/resources.component.html
@@ -32,15 +32,15 @@
       </button>
       </span>
       <div class="mat-reset">
-        <div class="control selector-wrapper" *ngIf="resourcesGrid.activeProjectsList?.length">
+        <div class="control selector-wrapper" *ngIf="projects?.length">
           <mat-form-field>
-            <mat-label>Select active project</mat-label>
+            <mat-label>Select project</mat-label>
             <mat-select [(value)]="resourcesGrid.activeProject">
-              <mat-option *ngIf="resourcesGrid.activeProjectsList?.length > 1" (click)="setActiveProject('')">Show all</mat-option>
-              <mat-option *ngFor="let project of resourcesGrid.activeProjectsList" [value]="project.name"
-                (click)="setActiveProject(project.name)">
-                {{ project.name }}</mat-option>
-              <mat-option *ngIf="!resourcesGrid.activeProjectsList?.length" class="multiple-select ml-10" disabled>Projects list is empty
+              <mat-option *ngIf="projects?.length > 1" (click)="setActiveProject('')">Show all</mat-option>
+              <mat-option *ngFor="let project of projects" [value]="project"
+                (click)="setActiveProject(project)">
+                {{ project }}</mat-option>
+              <mat-option *ngIf="!projects?.length" class="multiple-select ml-10" disabled>Projects list is empty
               </mat-option>
             </mat-select>
             <button class="caret">
@@ -85,5 +85,5 @@
     </div>
   </div>
   <mat-divider></mat-divider>
-  <resources-grid></resources-grid>
+  <resources-grid (getEnvironments)="getEnvironments($event)" ></resources-grid>
 </div>
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/resources.component.ts b/services/self-service/src/main/resources/webapp/src/app/resources/resources.component.ts
index f5af0e9..3dadd70 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/resources.component.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/resources.component.ts
@@ -52,12 +52,11 @@ export class ResourcesComponent implements OnInit, AfterViewInit {
 
   ngOnInit() {
     this.getEnvironmentHealthStatus();
-    this.exploratoryEnvironments = this.resourcesGrid.environments;
     this.projects = this.resourcesGrid.activeProjectsList;
   }
 
   ngAfterViewInit() {
-    console.log(this.resourcesGrid);
+
   }
 
   public createEnvironment(): void {
@@ -87,6 +86,7 @@ export class ResourcesComponent implements OnInit, AfterViewInit {
   }
 
   public bucketBrowser(permition): void {
+    console.log(this.exploratoryEnvironments);
     const defaultBucket = this.resourcesGrid.bucketsList[0].children[0];
       permition && this.dialog.open(BucketBrowserComponent, { data:
         {
@@ -117,6 +117,12 @@ export class ResourcesComponent implements OnInit, AfterViewInit {
   }
 
 
+  public getEnvironments(environment) {
+    this.exploratoryEnvironments = environment;
+    this.projects = environment.map(env => env.project);
+  }
+
+
   private getEnvironmentHealthStatus() {
     this.healthStatusService.getEnvironmentHealthStatus().subscribe(
       (result: any) => {


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