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