diff --git a/apps/red-ui/src/app/screens/project-overview-screen/bulk-actions/bulk-actions.component.html b/apps/red-ui/src/app/screens/project-overview-screen/bulk-actions/bulk-actions.component.html index 200c95b30..66aa96c0b 100644 --- a/apps/red-ui/src/app/screens/project-overview-screen/bulk-actions/bulk-actions.component.html +++ b/apps/red-ui/src/app/screens/project-overview-screen/bulk-actions/bulk-actions.component.html @@ -1,4 +1,4 @@ - + + + + + diff --git a/apps/red-ui/src/app/screens/project-overview-screen/bulk-actions/bulk-actions.component.ts b/apps/red-ui/src/app/screens/project-overview-screen/bulk-actions/bulk-actions.component.ts index a4cf3fba0..0070038be 100644 --- a/apps/red-ui/src/app/screens/project-overview-screen/bulk-actions/bulk-actions.component.ts +++ b/apps/red-ui/src/app/screens/project-overview-screen/bulk-actions/bulk-actions.component.ts @@ -17,6 +17,7 @@ import { computerize } from '../../../utils/functions'; export class BulkActionsComponent { @Input() selectedFileIds: string[]; @Output() private reload = new EventEmitter(); + public loading = false; constructor( private readonly _appStateService: AppStateService, @@ -57,23 +58,29 @@ export class BulkActionsComponent { } public delete() { + this.loading = true; this._dialogService.openDeleteFilesDialog(null, this._appStateService.activeProject.project.projectId, this.selectedFileIds, () => { this.reload.emit(); + this.loading = false; this.selectedFileIds.splice(0, this.selectedFileIds.length); }); } public assign() { + this.loading = true; this._dialogService.openBulkAssignFileReviewerDialog(this.selectedFileIds, () => { this.reload.emit(); + this.loading = false; }); } public async reanalyse() { + this.loading = true; const fileIds = this.selectedFiles.filter((file) => this._permissionsService.fileRequiresReanalysis(file)).map((file) => file.fileId); await this._reanalysisControllerService.reanalyzeFilesForProject(fileIds, this._appStateService.activeProject.projectId).toPromise(); this.reload.emit(); + this.loading = false; } // Under review @@ -82,10 +89,13 @@ export class BulkActionsComponent { } public setToUnderReview() { + this.loading = true; + const promises = this.selectedFiles.map((file) => this._fileActionService.setFileUnderReview(file).toPromise()); Promise.all(promises).then(() => { this.reload.emit(); + this.loading = false; }); } @@ -95,10 +105,12 @@ export class BulkActionsComponent { } public setToUnderApproval() { + this.loading = true; const promises = this.selectedFiles.map((file) => this._fileActionService.setFileUnderApproval(file).toPromise()); Promise.all(promises).then(() => { this.reload.emit(); + this.loading = false; }); } @@ -108,10 +120,12 @@ export class BulkActionsComponent { } public approveDocuments() { + this.loading = true; const promises = this.selectedFiles.map((file) => this._fileActionService.setFileApproved(file).toPromise()); Promise.all(promises).then(() => { this.reload.emit(); + this.loading = false; }); } @@ -122,10 +136,12 @@ export class BulkActionsComponent { // Bulk Download downloadRedactedFiles() { + this.loading = true; this._fileManagementControllerService .downloadRedactedFiles({ fileIds: this.selectedFiles.map((file) => file.fileId) }, this._appStateService.activeProjectId, false, 'response') .subscribe((data) => { download(data, 'redacted_files_' + computerize(this._appStateService.activeProject.name) + '.zip'); + this.loading = false; }); }