From 1a3779bc62ca92cb1f9355bb70e1d2a2a537fb27 Mon Sep 17 00:00:00 2001 From: Timo Date: Tue, 15 Dec 2020 19:21:22 +0200 Subject: [PATCH] file drop rework --- .../project-overview-screen.component.ts | 28 +++++++------- .../upload/file-drop/file-drop.component.html | 8 ++-- .../upload/file-drop/file-drop.component.scss | 15 +++++--- .../upload/file-drop/file-drop.component.ts | 32 ++++++++-------- apps/red-ui/src/app/utils/file-drop-utils.ts | 37 +++++++++++++++++++ apps/red-ui/src/assets/i18n/en.json | 2 +- 6 files changed, 83 insertions(+), 39 deletions(-) create mode 100644 apps/red-ui/src/app/utils/file-drop-utils.ts diff --git a/apps/red-ui/src/app/screens/project-overview-screen/project-overview-screen.component.ts b/apps/red-ui/src/app/screens/project-overview-screen/project-overview-screen.component.ts index d1e5298be..fbada9f2a 100644 --- a/apps/red-ui/src/app/screens/project-overview-screen/project-overview-screen.component.ts +++ b/apps/red-ui/src/app/screens/project-overview-screen/project-overview-screen.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild } from '@angular/core'; +import { ChangeDetectorRef, Component, HostListener, OnDestroy, OnInit, ViewChild } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; import { NotificationService } from '../../notification/notification.service'; import { AppStateService } from '../../state/app-state.service'; @@ -26,6 +26,7 @@ import { StatusSorter } from '../../common/sorters/status-sorter'; import { FormBuilder, FormGroup } from '@angular/forms'; import { debounce } from '../../utils/debounce'; import { download } from '../../utils/file-download-utils'; +import { handleFileDrop } from '../../utils/file-drop-utils'; @Component({ selector: 'redaction-project-overview-screen', @@ -182,20 +183,19 @@ export class ProjectOverviewScreenComponent implements OnInit, OnDestroy { return item.fileId; } - uploadFiles(files: FileList | File[]) { - const uploadFiles: FileUploadModel[] = []; - for (let i = 0; i < files.length; i++) { - const file = files[i]; - uploadFiles.push({ - file: file, - progress: 0, - completed: false, - error: null, - retryCount: 0 - }); - } + @HostListener('drop', ['$event']) + onDrop(event: DragEvent) { + handleFileDrop(event, this.uploadFiles.bind(this)); + } - this._fileUploadService.uploadFiles(uploadFiles); + @HostListener('dragover', ['$event']) + onDragOver(event) { + event.stopPropagation(); + event.preventDefault(); + } + + uploadFiles(files: FileUploadModel[]) { + this._fileUploadService.uploadFiles(files); this._uploadStatusOverlayService.openStatusOverlay(); this._changeDetectorRef.detectChanges(); } diff --git a/apps/red-ui/src/app/upload/file-drop/file-drop.component.html b/apps/red-ui/src/app/upload/file-drop/file-drop.component.html index 314216e94..90505d92b 100644 --- a/apps/red-ui/src/app/upload/file-drop/file-drop.component.html +++ b/apps/red-ui/src/app/upload/file-drop/file-drop.component.html @@ -1,8 +1,8 @@
- - {{ 'project-overview.upload-files' | translate }} - - + +
+ {{ 'project-overview.upload-files' | translate }} +