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:20:20 UTC

[incubator-dlab] branch DLAB-1970 created (now 580ce18)

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

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


      at 580ce18  [DLAB-1970]: Changed validation for folder creation an other small changes

This branch includes the following new commits:

     new 580ce18  [DLAB-1970]: Changed validation for folder creation an other small changes

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



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


[incubator-dlab] 01/01: [DLAB-1970]: Changed validation for folder creation an other small changes

Posted by dg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 580ce18374bd36a034da50819c95eb8d4a123b83
Author: Dmytro_Gnatyshyn <di...@ukr.net>
AuthorDate: Wed Aug 5 10:19:50 2020 +0300

    [DLAB-1970]: Changed validation for folder creation an other small changes
---
 .../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