UNPKG

@hmcts/media-viewer

Version:
50 lines 6.73 kB
import { Injectable } from '@angular/core'; import { BehaviorSubject, Subject } from 'rxjs'; import * as i0 from "@angular/core"; // TODO: replace by NgRx export class CommentService { constructor() { this.unsavedChanges = new Subject(); this.marginToCommentEmitter = new BehaviorSubject(false); } setCommentSet(commentSetComponent) { this.commentSetComponent = commentSetComponent; } onCommentChange(changes) { this.unsavedChanges.next(changes); } getUnsavedChanges() { return this.unsavedChanges.asObservable(); } hasUnsavedComments(annotation) { if (annotation.comments.length > 0) { const comment = this.getComment(annotation); return comment.hasUnsavedChanges; } return false; } updateUnsavedCommentsStatus(annotation, hasUnsavedChanges) { const comment = this.getComment(annotation); comment.hasUnsavedChanges = hasUnsavedChanges; this.allCommentsSaved(); } getComment(annotation) { return this.commentSetComponent.commentComponents .find(c => c.comment.annotationId === annotation.comments[0].annotationId); } resetCommentSet() { this.commentSetComponent = null; } allCommentsSaved() { this.onCommentChange(this.commentSetComponent.commentComponents.some(comment => comment.hasUnsavedChanges === true)); } createMarginToCommentEvent(margin) { this.marginToCommentEmitter.next(margin); } /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CommentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); } /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CommentService }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CommentService, decorators: [{ type: Injectable }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvYW5ub3RhdGlvbnMvY29tbWVudC1zZXQvY29tbWVudC9jb21tZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFLNUQsd0JBQXdCO0FBRXhCLE1BQU0sT0FBTyxjQUFjO0lBRDNCO1FBR2tCLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUN4QywyQkFBc0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztLQTZDOUU7SUExQ0MsYUFBYSxDQUFDLG1CQUFtQjtRQUMvQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsbUJBQW1CLENBQUM7SUFDakQsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUFnQjtRQUM5QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxVQUFzQjtRQUN2QyxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ25DLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUMsT0FBTyxPQUFPLENBQUMsaUJBQWlCLENBQUM7UUFDbkMsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELDJCQUEyQixDQUFDLFVBQXNCLEVBQUUsaUJBQTBCO1FBQzVFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUMsT0FBTyxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO1FBQzlDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxVQUFVLENBQUMsVUFBc0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCO2FBQzlDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxLQUFLLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2SCxDQUFDO0lBRUQsMEJBQTBCLENBQUMsTUFBZTtRQUN4QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLENBQUM7a0lBL0NVLGNBQWM7c0lBQWQsY0FBYzs7NEZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHR5cGUgeyBDb21tZW50U2V0Q29tcG9uZW50IH0gZnJvbSAnLi4vY29tbWVudC1zZXQuY29tcG9uZW50JztcbmltcG9ydCB7IEFubm90YXRpb24gfSBmcm9tICcuLi8uLi9hbm5vdGF0aW9uLXNldC9hbm5vdGF0aW9uLXZpZXcvYW5ub3RhdGlvbi5tb2RlbCc7XG5pbXBvcnQgdHlwZSB7IENvbW1lbnRDb21wb25lbnQgfSBmcm9tICcuL2NvbW1lbnQuY29tcG9uZW50JztcblxuLy8gVE9ETzogcmVwbGFjZSBieSBOZ1J4XG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29tbWVudFNlcnZpY2Uge1xuXG4gIHB1YmxpYyByZWFkb25seSB1bnNhdmVkQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHB1YmxpYyByZWFkb25seSBtYXJnaW5Ub0NvbW1lbnRFbWl0dGVyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIGNvbW1lbnRTZXRDb21wb25lbnQ6IENvbW1lbnRTZXRDb21wb25lbnQ7XG5cbiAgc2V0Q29tbWVudFNldChjb21tZW50U2V0Q29tcG9uZW50KSB7XG4gICAgdGhpcy5jb21tZW50U2V0Q29tcG9uZW50ID0gY29tbWVudFNldENvbXBvbmVudDtcbiAgfVxuXG4gIG9uQ29tbWVudENoYW5nZShjaGFuZ2VzOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy51bnNhdmVkQ2hhbmdlcy5uZXh0KGNoYW5nZXMpO1xuICB9XG5cbiAgZ2V0VW5zYXZlZENoYW5nZXMoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMudW5zYXZlZENoYW5nZXMuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBoYXNVbnNhdmVkQ29tbWVudHMoYW5ub3RhdGlvbjogQW5ub3RhdGlvbik6IGJvb2xlYW4ge1xuICAgIGlmIChhbm5vdGF0aW9uLmNvbW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGNvbW1lbnQgPSB0aGlzLmdldENvbW1lbnQoYW5ub3RhdGlvbik7XG4gICAgICByZXR1cm4gY29tbWVudC5oYXNVbnNhdmVkQ2hhbmdlcztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdXBkYXRlVW5zYXZlZENvbW1lbnRzU3RhdHVzKGFubm90YXRpb246IEFubm90YXRpb24sIGhhc1Vuc2F2ZWRDaGFuZ2VzOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgY29tbWVudCA9IHRoaXMuZ2V0Q29tbWVudChhbm5vdGF0aW9uKTtcbiAgICBjb21tZW50Lmhhc1Vuc2F2ZWRDaGFuZ2VzID0gaGFzVW5zYXZlZENoYW5nZXM7XG4gICAgdGhpcy5hbGxDb21tZW50c1NhdmVkKCk7XG4gIH1cblxuICBnZXRDb21tZW50KGFubm90YXRpb246IEFubm90YXRpb24pOiBDb21tZW50Q29tcG9uZW50IHtcbiAgICByZXR1cm4gdGhpcy5jb21tZW50U2V0Q29tcG9uZW50LmNvbW1lbnRDb21wb25lbnRzXG4gICAgICAuZmluZChjID0+IGMuY29tbWVudC5hbm5vdGF0aW9uSWQgPT09IGFubm90YXRpb24uY29tbWVudHNbMF0uYW5ub3RhdGlvbklkKTtcbiAgfVxuXG4gIHJlc2V0Q29tbWVudFNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbW1lbnRTZXRDb21wb25lbnQgPSBudWxsO1xuICB9XG5cbiAgYWxsQ29tbWVudHNTYXZlZCgpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ29tbWVudENoYW5nZSh0aGlzLmNvbW1lbnRTZXRDb21wb25lbnQuY29tbWVudENvbXBvbmVudHMuc29tZShjb21tZW50ID0+IGNvbW1lbnQuaGFzVW5zYXZlZENoYW5nZXMgPT09IHRydWUpKTtcbiAgfVxuXG4gIGNyZWF0ZU1hcmdpblRvQ29tbWVudEV2ZW50KG1hcmdpbjogYm9vbGVhbikge1xuICAgIHRoaXMubWFyZ2luVG9Db21tZW50RW1pdHRlci5uZXh0KG1hcmdpbik7XG4gIH1cbn1cbiJdfQ==