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/06/01 06:28:45 UTC

[incubator-dlab] 01/01: [DLAB-1844]: Fixed set of issues with folder creation

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

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

commit 1822ad08b15abe6ca17c5c399d40dfe4cf92b094
Author: Dmytro Gnatyshyn <di...@ukr.net>
AuthorDate: Sun May 31 19:43:10 2020 +0300

    [DLAB-1844]: Fixed set of issues with folder creation
---
 .../reporting/reporting-grid/reporting-grid.component.ts |  8 ++++----
 .../bucket-browser/bucket-browser.component.html         | 16 ++++++++--------
 .../app/resources/bucket-browser/bucket-data.service.ts  | 16 +++++++++++-----
 .../folder-tree/folder-tree.component.html               |  8 ++++----
 .../folder-tree/folder-tree.component.scss               |  3 +++
 .../bucket-browser/folder-tree/folder-tree.component.ts  |  1 +
 .../src/main/resources/webapp/src/styles.scss            |  4 ++++
 7 files changed, 35 insertions(+), 21 deletions(-)

diff --git a/services/self-service/src/main/resources/webapp/src/app/reporting/reporting-grid/reporting-grid.component.ts b/services/self-service/src/main/resources/webapp/src/app/reporting/reporting-grid/reporting-grid.component.ts
index d4e0076..625ba08 100644
--- a/services/self-service/src/main/resources/webapp/src/app/reporting/reporting-grid/reporting-grid.component.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/reporting/reporting-grid/reporting-grid.component.ts
@@ -67,15 +67,15 @@ export class ReportingGridComponent implements OnInit {
   let report: Array<object>;
   if (direction === 'down') {
     report = this.reportData.sort((a, b) => {
-      if (a[sortItem] === null) a = '';
-      if (b[sortItem] === null) b = '';
+      if (a[sortItem] === null) a[sortItem] = '';
+      if (b[sortItem] === null) b[sortItem] = '';
      return (a[sortItem] > b[sortItem]) ? 1 : -1;
     });
   }
   if (direction === 'up') {
     report = this.reportData.sort((a, b) => {
-      if (a[sortItem] === null) a = '';
-      if (b[sortItem] === null) b = '';
+      if (a[sortItem] === null) a[sortItem] = '';
+      if (b[sortItem] === null) b[sortItem] = '';
       return (a[sortItem] < b[sortItem]) ? 1 : -1 ;
     });
   }
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/bucket-browser.component.html b/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/bucket-browser.component.html
index 8dcf4bd..ce1feeb 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/bucket-browser.component.html
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/bucket-browser.component.html
@@ -99,19 +99,19 @@
       </button>
     </div>
     <p class="path"><span>Bucket path:</span>
-      <span class="url ellipsis">
+      <span class="url ellipsis"  [ngClass]="{'cursor-not-allow': bucketDataService.emptyFolder}">
        <span *ngFor="let folder of this.objectPath">
          <span class="url-icon" *ngIf="this.objectPath.indexOf(folder) !== 0"> <i class="material-icons">
                chevron_right
             </i> </span>
-         <span class="url-folder" (click)="folderTreeComponent.showItem(folder);">{{folder.item}}</span>
+         <span class="url-folder" (click)="folderTreeComponent.showItem(folder);" [ngClass]="{'not-allowed': bucketDataService.emptyFolder}">{{folder.item}}</span>
        </span>
       </span>
     </p>
     <div class="bucket-wrapper" [ngClass]="{'added-upload': addedFiles.length}" id="scrolling">
       <div class="backet-selection" [ngClass]="{'opened': isSelectionOpened}">
-        <div class="button-wrapper">
-          <i (click)="toggleBucketSelection()" class="material-icons close" *ngIf="!isSelectionOpened">chevron_right</i>
+        <div class="button-wrapper" [ngClass]="{'cursor-not-allow': bucketDataService.emptyFolder}">
+          <i (click)="toggleBucketSelection()" class="material-icons close" *ngIf="!isSelectionOpened" [ngClass]="{'not-allowed': bucketDataService.emptyFolder}">chevron_right</i>
         </div>
         <dlab-bucket-tree
           [hidden] = "!isSelectionOpened"
@@ -132,8 +132,8 @@
       <div class="directory" [ngClass]="{'selection-opened': isSelectionOpened}" [hidden]="!path">
         <div class="folder-item t_header">
           <div class="folder-item-wrapper header-wrapper folder-tree header-item">
-            <div class="name">
-              <span class="th_name" (click)="isFilterVisible = true" *ngIf="!isFilterVisible">Name</span>
+            <div class="name" [ngClass]="{'cursor-not-allow': bucketDataService.emptyFolder}">
+              <span class="th_name" (click)="isFilterVisible = true" *ngIf="!isFilterVisible" [ngClass]="{'not-allowed': bucketDataService.emptyFolder}">Name</span>
               <div class="filter-files"  *ngIf="isFilterVisible">
                 <input _ngcontent-yns-c13=""
                        [(ngModel)]="searchValue"
@@ -149,8 +149,8 @@
             <div class="date"><span class="th_date">Last modified</span></div>
           </div>
         </div>
-        <ul class="folder-tree">
-          <li *ngFor="let file of folderItems" class="folder-item" >
+        <ul class="folder-tree" [ngClass]="{'cursor-not-allow': bucketDataService.emptyFolder}">
+          <li *ngFor="let file of folderItems" class="folder-item" [ngClass]="{'not-allowed': bucketDataService.emptyFolder}">
             <div class="folder-item-wrapper" *ngIf="file.children && file.item" (click)="showItem(file)">
               <div class="name name-folder">
 <!--                <span *ngIf="this.bucketStatus.delete" class="empty-checkbox" [ngClass]="{'checked': file.isFolderSelected}" (click)="toggleSelectedFile(file, 'folder');$event.stopPropagation()" >-->
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/bucket-data.service.ts b/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/bucket-data.service.ts
index 003e615..d9ce1de 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/bucket-data.service.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/bucket-data.service.ts
@@ -84,13 +84,19 @@ export class BucketDataService {
     }
 
   public insertItem(parent: TodoItemNode, name, isFile, emptyFolderObj?) {
-      if (parent.children) {
+    if (parent.children) {
         if (isFile) {
-          parent.children.push(name as TodoItemNode);
+          parent.children.unshift(name as TodoItemNode);
         } else {
-          parent.children.push({item: '', children: [], object: {}} as TodoItemNode);
-          this.emptyFolder = emptyFolderObj;
-          this._bucketData.next(this.data);
+          if (name) {
+            const child = {item: name, children: [], object: JSON.parse(JSON.stringify(parent.object))};
+            child.object.object = child.object.object.slice(0, -1) + child.item + '/';
+            parent.children.unshift(child as TodoItemNode);
+          } else {
+            parent.children.unshift({item: '', children: [], object: {}} as TodoItemNode);
+            this.emptyFolder = emptyFolderObj;
+            this._bucketData.next(this.data);
+          }
         }
       }
     }
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 b67d4b3..dab723d 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
@@ -38,17 +38,17 @@
     </form>
   </mat-tree-node>
 
-  <mat-tree-node *matTreeNodeDef="let node; when: hasChild" matTreeNodePadding  matTreeNodePaddingIndent="17">
+  <mat-tree-node *matTreeNodeDef="let node; when: hasChild" matTreeNodePadding  matTreeNodePaddingIndent="17"  [ngClass]="{'cursor-not-allow': bucketDataService.emptyFolder}">
     <button mat-icon-button matTreeNodeToggle
-            [attr.aria-label]="'toggle ' + node.filename">
-      <mat-icon class="mat-icon-rtl-mirror" [ngClass]="{'active-item': selectedFolder === node}">
+            [attr.aria-label]="'toggle ' + node.filename" [ngClass]="{'not-allowed': bucketDataService.emptyFolder}">
+      <mat-icon class="mat-icon-rtl-mirror" [ngClass]="{'active-item': (selectedFolder === node && !bucketDataService.emptyFolder)}">
         {{treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'}}
       </mat-icon>
     </button>
     <div
       (click)="showItem(node)"
       class="folder-item-line"
-      [ngClass]="{'active-item': selectedFolder === node}"
+      [ngClass]="{'active-item': (selectedFolder === node && !bucketDataService.emptyFolder), 'not-allowed': bucketDataService.emptyFolder}"
     >
       <i class="material-icons folder-icon">folder</i>
       <span
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/folder-tree/folder-tree.component.scss b/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/folder-tree/folder-tree.component.scss
index 9fb1e42..22c36d0 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/folder-tree/folder-tree.component.scss
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/folder-tree/folder-tree.component.scss
@@ -46,6 +46,9 @@
     height: 25px;
     line-height: 28px;
   }
+}
+
+.mat-tree-node:not(.input-node):not(.cursor-not-allow){
   &:hover{
     color: #00bcd4;
     i{
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/folder-tree/folder-tree.component.ts b/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/folder-tree/folder-tree.component.ts
index 93dabb7..ef94e33 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/folder-tree/folder-tree.component.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/bucket-browser/folder-tree/folder-tree.component.ts
@@ -105,6 +105,7 @@ export class FolderTreeComponent implements OnDestroy {
   ngOnDestroy() {
     this.bucketDataService._bucketData.next([]);
     this.subscriptions.unsubscribe();
+    this.bucketDataService.emptyFolder = null;
   }
 
   folderFormControl = new FormControl('', [
diff --git a/services/self-service/src/main/resources/webapp/src/styles.scss b/services/self-service/src/main/resources/webapp/src/styles.scss
index 426541d..bf22293 100644
--- a/services/self-service/src/main/resources/webapp/src/styles.scss
+++ b/services/self-service/src/main/resources/webapp/src/styles.scss
@@ -155,6 +155,10 @@ mat-chip.mat-chip strong {
   pointer-events: none;
 }
 
+.cursor-not-allow{
+  cursor: not-allowed !important;
+}
+
 .not-active {
   cursor: not-allowed !important;
   opacity: .6;


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