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 <di1...@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-unsubscr...@dlab.apache.org For additional commands, e-mail: commits-h...@dlab.apache.org