Fixed confirm dialog actions - run in ngZone
This commit is contained in:
parent
b8a89fb14f
commit
6c86d0aaee
@ -1,5 +1,5 @@
|
|||||||
import {ChangeDetectorRef, Component, ElementRef, OnInit, ViewChild} from '@angular/core';
|
import { ChangeDetectorRef, Component, ElementRef, NgZone, OnInit, ViewChild } from '@angular/core';
|
||||||
import {ActivatedRoute, Router} from '@angular/router';
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
import {
|
import {
|
||||||
AddRedactionRequest,
|
AddRedactionRequest,
|
||||||
FileUploadControllerService,
|
FileUploadControllerService,
|
||||||
@ -8,25 +8,25 @@ import {
|
|||||||
ProjectControllerService,
|
ProjectControllerService,
|
||||||
StatusControllerService
|
StatusControllerService
|
||||||
} from '@redaction/red-ui-http';
|
} from '@redaction/red-ui-http';
|
||||||
import {TranslateService} from '@ngx-translate/core';
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
import {NotificationService, NotificationType} from '../../../notification/notification.service';
|
import { NotificationService } from '../../../notification/notification.service';
|
||||||
import {MatDialog} from '@angular/material/dialog';
|
import { MatDialog } from '@angular/material/dialog';
|
||||||
import {AppStateService} from '../../../state/app-state.service';
|
import { AppStateService } from '../../../state/app-state.service';
|
||||||
import {FileDetailsDialogComponent} from './file-details-dialog/file-details-dialog.component';
|
import { FileDetailsDialogComponent } from './file-details-dialog/file-details-dialog.component';
|
||||||
import {ViewerSyncService} from '../service/viewer-sync.service';
|
import { ViewerSyncService } from '../service/viewer-sync.service';
|
||||||
import {Annotations} from '@pdftron/webviewer';
|
import { Annotations } from '@pdftron/webviewer';
|
||||||
import {PdfViewerComponent} from '../pdf-viewer/pdf-viewer.component';
|
import { PdfViewerComponent } from '../pdf-viewer/pdf-viewer.component';
|
||||||
import {AnnotationUtils} from '../../../utils/annotation-utils';
|
import { AnnotationUtils } from '../../../utils/annotation-utils';
|
||||||
import {ManualRedactionDialogComponent} from '../manual-redaction-dialog/manual-redaction-dialog.component';
|
import { ManualRedactionDialogComponent } from '../manual-redaction-dialog/manual-redaction-dialog.component';
|
||||||
import {UserService} from '../../../user/user.service';
|
import { UserService } from '../../../user/user.service';
|
||||||
import {debounce} from '../../../utils/debounce';
|
import { debounce } from '../../../utils/debounce';
|
||||||
import scrollIntoView from 'scroll-into-view-if-needed';
|
import scrollIntoView from 'scroll-into-view-if-needed';
|
||||||
import {AnnotationFilters} from '../../../utils/types';
|
import { AnnotationFilters } from '../../../utils/types';
|
||||||
import {FiltersService} from '../service/filters.service';
|
import { FiltersService } from '../service/filters.service';
|
||||||
import {FileDownloadService} from '../service/file-download.service';
|
import { FileDownloadService } from '../service/file-download.service';
|
||||||
import {saveAs} from 'file-saver';
|
import { saveAs } from 'file-saver';
|
||||||
import {FileType} from '../model/file-type';
|
import { FileType } from '../model/file-type';
|
||||||
import {ConfirmationDialogComponent} from '../../../common/confirmation-dialog/confirmation-dialog.component';
|
import { ConfirmationDialogComponent } from '../../../common/confirmation-dialog/confirmation-dialog.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'redaction-file-preview-screen',
|
selector: 'redaction-file-preview-screen',
|
||||||
@ -48,7 +48,7 @@ export class FilePreviewScreenComponent implements OnInit {
|
|||||||
public displayedAnnotations: { [key: number]: { annotations: Annotations.Annotation[] } } = {};
|
public displayedAnnotations: { [key: number]: { annotations: Annotations.Annotation[] } } = {};
|
||||||
public selectedAnnotation: Annotations.Annotation;
|
public selectedAnnotation: Annotations.Annotation;
|
||||||
public filters: AnnotationFilters;
|
public filters: AnnotationFilters;
|
||||||
public expandedFilters: AnnotationFilters = {hint: false};
|
public expandedFilters: AnnotationFilters = { hint: false };
|
||||||
public activeViewerPage: number;
|
public activeViewerPage: number;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
@ -66,7 +66,8 @@ export class FilePreviewScreenComponent implements OnInit {
|
|||||||
private readonly _fileDownloadService: FileDownloadService,
|
private readonly _fileDownloadService: FileDownloadService,
|
||||||
private readonly _fileUploadControllerService: FileUploadControllerService,
|
private readonly _fileUploadControllerService: FileUploadControllerService,
|
||||||
private readonly _projectControllerService: ProjectControllerService,
|
private readonly _projectControllerService: ProjectControllerService,
|
||||||
private readonly _filtersService: FiltersService) {
|
private readonly _filtersService: FiltersService,
|
||||||
|
private ngZone: NgZone) {
|
||||||
this._activatedRoute.params.subscribe(params => {
|
this._activatedRoute.params.subscribe(params => {
|
||||||
this.projectId = params.projectId;
|
this.projectId = params.projectId;
|
||||||
this.fileId = params.fileId;
|
this.fileId = params.fileId;
|
||||||
@ -230,44 +231,49 @@ export class FilePreviewScreenComponent implements OnInit {
|
|||||||
|
|
||||||
acceptSuggestionAnnotation($event: MouseEvent, annotation: Annotations.Annotation) {
|
acceptSuggestionAnnotation($event: MouseEvent, annotation: Annotations.Annotation) {
|
||||||
$event.stopPropagation();
|
$event.stopPropagation();
|
||||||
const dialogRef = this._dialog.open(ConfirmationDialogComponent, {
|
this.ngZone.run(() => {
|
||||||
width: '400px',
|
const dialogRef = this._dialog.open(ConfirmationDialogComponent, {
|
||||||
maxWidth: '90vw'
|
width: '400px',
|
||||||
});
|
maxWidth: '90vw'
|
||||||
|
});
|
||||||
|
|
||||||
const parts = annotation.Id.split(':');
|
const parts = annotation.Id.split(':');
|
||||||
const annotationId = parts[parts.length - 1];
|
const annotationId = parts[parts.length - 1];
|
||||||
|
|
||||||
dialogRef.afterClosed().subscribe(result => {
|
dialogRef.afterClosed().subscribe(result => {
|
||||||
if (result) {
|
if (result) {
|
||||||
this._manualRedactionControllerService.approveRequest(this.appStateService.activeProjectId, this.appStateService.activeFile.fileId, annotationId).subscribe(ok => {
|
this._manualRedactionControllerService.approveRequest(this.appStateService.activeProjectId, this.appStateService.activeFile.fileId, annotationId).subscribe(ok => {
|
||||||
this._notificationService.showToastNotification(this._translateService.instant('manual-redaction.confirm-annotation.success.label'), null, NotificationType.SUCCESS);
|
this._notificationService.showToastNotification(this._translateService.instant('manual-redaction.confirm-annotation.success.label'), null, NotificationType.SUCCESS);
|
||||||
}, (err) => {
|
}, (err) => {
|
||||||
this._notificationService.showToastNotification(this._translateService.instant('manual-redaction.confirm-annotation.failed.label', err), null, NotificationType.ERROR);
|
this._notificationService.showToastNotification(this._translateService.instant('manual-redaction.confirm-annotation.failed.label', err), null, NotificationType.ERROR);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
suggestRemoveAnnotation($event: MouseEvent, annotation: Annotations.Annotation) {
|
suggestRemoveAnnotation($event: MouseEvent, annotation: Annotations.Annotation) {
|
||||||
$event.stopPropagation();
|
$event.stopPropagation();
|
||||||
const dialogRef = this._dialog.open(ConfirmationDialogComponent, {
|
this.ngZone.run(() => {
|
||||||
width: '400px',
|
const dialogRef = this._dialog.open(ConfirmationDialogComponent, {
|
||||||
maxWidth: '90vw'
|
width: '400px',
|
||||||
|
maxWidth: '90vw'
|
||||||
|
});
|
||||||
|
|
||||||
|
const parts = annotation.Id.split(':');
|
||||||
|
const annotationId = parts[parts.length - 1];
|
||||||
|
|
||||||
|
dialogRef.afterClosed().subscribe(result => {
|
||||||
|
if (result) {
|
||||||
|
this._manualRedactionControllerService.undo(this.appStateService.activeProjectId, this.appStateService.activeFile.fileId, annotationId).subscribe(ok => {
|
||||||
|
this._notificationService.showToastNotification(this._translateService.instant('manual-redaction.remove-annotation.success.label'), null, NotificationType.SUCCESS);
|
||||||
|
}, (err) => {
|
||||||
|
this._notificationService.showToastNotification(this._translateService.instant('manual-redaction.remove-annotation.failed.label', err), null, NotificationType.ERROR);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
const parts = annotation.Id.split(':');
|
|
||||||
const annotationId = parts[parts.length - 1];
|
|
||||||
|
|
||||||
dialogRef.afterClosed().subscribe(result => {
|
|
||||||
if (result) {
|
|
||||||
this._manualRedactionControllerService.undo(this.appStateService.activeProjectId, this.appStateService.activeFile.fileId, annotationId).subscribe(ok => {
|
|
||||||
this._notificationService.showToastNotification(this._translateService.instant('manual-redaction.remove-annotation.success.label'), null, NotificationType.SUCCESS);
|
|
||||||
}, (err) => {
|
|
||||||
this._notificationService.showToastNotification(this._translateService.instant('manual-redaction.remove-annotation.failed.label', err), null, NotificationType.ERROR);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public downloadFile(type: FileType | string) {
|
public downloadFile(type: FileType | string) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user