diff --git a/apps/red-ui/src/app/modules/dossiers-listing/components/dossier-workload-column/dossier-workload-column.component.ts b/apps/red-ui/src/app/modules/dossiers-listing/components/dossier-workload-column/dossier-workload-column.component.ts
index 21c3b881f..1ea343253 100644
--- a/apps/red-ui/src/app/modules/dossiers-listing/components/dossier-workload-column/dossier-workload-column.component.ts
+++ b/apps/red-ui/src/app/modules/dossiers-listing/components/dossier-workload-column/dossier-workload-column.component.ts
@@ -1,6 +1,7 @@
-import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
-import { Dossier, DossierStats } from '@red/domain';
+import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core';
+import { DefaultColorType, Dossier, DossierStats } from '@red/domain';
import { DefaultColorsService } from '@services/entity-services/default-colors.service';
+import { BehaviorSubject, Observable, switchMap } from 'rxjs';
@Component({
selector: 'redaction-dossier-workload-column',
@@ -8,21 +9,33 @@ import { DefaultColorsService } from '@services/entity-services/default-colors.s
styleUrls: ['./dossier-workload-column.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
})
-export class DossierWorkloadColumnComponent {
+export class DossierWorkloadColumnComponent implements OnChanges {
@Input() dossier: Dossier;
@Input() dossierStats: DossierStats;
- constructor(private readonly _colorsService: DefaultColorsService) {}
+ readonly suggestionColor$: Observable
;
+ readonly hintColor$: Observable;
+ readonly redactionColor$: Observable;
- get suggestionColor() {
- return this._colorsService.getColor(this.dossier.dossierTemplateId, 'requestAddColor');
+ readonly #dossierTemplateId$ = new BehaviorSubject(null);
+
+ constructor(private readonly _defaultColorsService: DefaultColorsService) {
+ this.suggestionColor$ = this.#dossierTemplateId$.pipe(
+ switchMap(dossierTemplateId => this.#getColor$(dossierTemplateId, 'requestAddColor')),
+ );
+ this.hintColor$ = this.#dossierTemplateId$.pipe(switchMap(dossierTemplateId => this.#getColor$(dossierTemplateId, 'hintColor')));
+ this.redactionColor$ = this.#dossierTemplateId$.pipe(
+ switchMap(dossierTemplateId => this.#getColor$(dossierTemplateId, 'redactionColor')),
+ );
}
- get hintColor() {
- return this._colorsService.getColor(this.dossier.dossierTemplateId, 'hintColor');
+ ngOnChanges(changes: SimpleChanges): void {
+ if (changes.dossier) {
+ this.#dossierTemplateId$.next(this.dossier.dossierTemplateId);
+ }
}
- get redactionColor() {
- return this._colorsService.getColor(this.dossier.dossierTemplateId, 'redactionColor');
+ #getColor$(dossierTemplateId: string, colorType: DefaultColorType): Observable {
+ return this._defaultColorsService.getColor$(dossierTemplateId, colorType);
}
}
diff --git a/apps/red-ui/src/app/modules/dossiers-listing/components/dossiers-listing-actions/dossiers-listing-actions.component.scss b/apps/red-ui/src/app/modules/dossiers-listing/components/dossiers-listing-actions/dossiers-listing-actions.component.scss
deleted file mode 100644
index e69de29bb..000000000
diff --git a/apps/red-ui/src/app/modules/dossiers-listing/components/dossiers-listing-actions/dossiers-listing-actions.component.ts b/apps/red-ui/src/app/modules/dossiers-listing/components/dossiers-listing-actions/dossiers-listing-actions.component.ts
index c82be5443..6a339460b 100644
--- a/apps/red-ui/src/app/modules/dossiers-listing/components/dossiers-listing-actions/dossiers-listing-actions.component.ts
+++ b/apps/red-ui/src/app/modules/dossiers-listing/components/dossiers-listing-actions/dossiers-listing-actions.component.ts
@@ -14,7 +14,6 @@ import { firstValueFrom } from 'rxjs';
@Component({
selector: 'redaction-dossiers-listing-actions',
templateUrl: './dossiers-listing-actions.component.html',
- styleUrls: ['./dossiers-listing-actions.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class DossiersListingActionsComponent implements OnChanges {
diff --git a/apps/red-ui/src/app/modules/dossiers-listing/config.service.ts b/apps/red-ui/src/app/modules/dossiers-listing/config.service.ts
index ebd20c3e8..f04aedf47 100644
--- a/apps/red-ui/src/app/modules/dossiers-listing/config.service.ts
+++ b/apps/red-ui/src/app/modules/dossiers-listing/config.service.ts
@@ -1,6 +1,14 @@
import { Injectable, TemplateRef } from '@angular/core';
import { ButtonConfig, IFilterGroup, INestedFilter, keyChecker, NestedFilter, TableColumnConfig } from '@iqser/common-ui';
-import { AnnotationShapeMap, Dossier, DossierTemplate, StatusSorter, User, WorkflowFileStatus } from '@red/domain';
+import {
+ annotationDefaultColorConfig,
+ AnnotationShapeMap,
+ Dossier,
+ DossierTemplate,
+ StatusSorter,
+ User,
+ WorkflowFileStatus,
+} from '@red/domain';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { TranslateService } from '@ngx-translate/core';
import { UserPreferenceService } from '@services/user-preference.service';
@@ -12,6 +20,7 @@ import { DossierStatsService } from '@services/dossiers/dossier-stats.service';
import { DossierStatesMapService } from '@services/entity-services/dossier-states-map.service';
import { PermissionsService } from '@services/permissions.service';
import { SharedDialogService } from '@shared/services/dialog.service';
+import { DefaultColorsService } from '@services/entity-services/default-colors.service';
@Injectable()
export class ConfigService {
@@ -23,6 +32,7 @@ export class ConfigService {
private readonly _dossierStatesMapService: DossierStatesMapService,
private readonly _dialogService: SharedDialogService,
private readonly _permissionsService: PermissionsService,
+ private readonly _defaultColorsService: DefaultColorsService,
) {}
get tableConfig(): TableColumnConfig[] {
@@ -53,7 +63,7 @@ export class ConfigService {
];
}
- filterGroups(entities: Dossier[], needsWorkFilterTemplate: TemplateRef) {
+ filterGroups(entities: Dossier[], needsWorkFilterTemplate: TemplateRef, dossierTemplateId: string) {
const allDistinctFileStatus = new Set();
const allDistinctPeople = new Set();
const allDistinctNeedsWork = new Set();
@@ -145,7 +155,10 @@ export class ConfigService {
new NestedFilter({
id: type,
label: workloadTranslations[type],
- metadata: { shape: AnnotationShapeMap[type] },
+ metadata: {
+ shape: AnnotationShapeMap[type],
+ color$: this._defaultColorsService.getColor$(dossierTemplateId, annotationDefaultColorConfig[type]),
+ },
}),
);
diff --git a/apps/red-ui/src/app/modules/dossiers-listing/screen/dossiers-listing-screen.component.ts b/apps/red-ui/src/app/modules/dossiers-listing/screen/dossiers-listing-screen.component.ts
index 989dd30be..65868968a 100644
--- a/apps/red-ui/src/app/modules/dossiers-listing/screen/dossiers-listing-screen.component.ts
+++ b/apps/red-ui/src/app/modules/dossiers-listing/screen/dossiers-listing-screen.component.ts
@@ -62,7 +62,11 @@ export class DossiersListingScreenComponent extends ListingComponent im
}
private _computeAllFilters() {
- const filterGroups = this._configService.filterGroups(this.entitiesService.all, this._needsWorkFilterTemplate);
+ const filterGroups = this._configService.filterGroups(
+ this.entitiesService.all,
+ this._needsWorkFilterTemplate,
+ this.dossierTemplate.id,
+ );
this.filterService.addFilterGroups(filterGroups);
}
}
diff --git a/apps/red-ui/src/app/modules/file-preview/components/annotation-reference/annotation-reference.component.scss b/apps/red-ui/src/app/modules/file-preview/components/annotation-reference/annotation-reference.component.scss
deleted file mode 100644
index e69de29bb..000000000
diff --git a/apps/red-ui/src/app/modules/file-preview/components/annotation-reference/annotation-reference.component.ts b/apps/red-ui/src/app/modules/file-preview/components/annotation-reference/annotation-reference.component.ts
index d53922c6d..3b050659c 100644
--- a/apps/red-ui/src/app/modules/file-preview/components/annotation-reference/annotation-reference.component.ts
+++ b/apps/red-ui/src/app/modules/file-preview/components/annotation-reference/annotation-reference.component.ts
@@ -9,7 +9,6 @@ import { AnnotationsListingService } from '../../services/annotations-listing.se
@Component({
selector: 'redaction-annotation-reference [annotation]',
templateUrl: './annotation-reference.component.html',
- styleUrls: ['./annotation-reference.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class AnnotationReferenceComponent implements OnChanges {
diff --git a/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.ts b/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.ts
index 2c1970eff..8bdc43a74 100644
--- a/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.ts
+++ b/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.ts
@@ -166,7 +166,7 @@ export class FileWorkloadComponent extends AutoUnsubscribe implements OnDestroy
}
get #allPages() {
- return Array.from({ length: this.file?.numberOfPages }, (x, i) => i + 1);
+ return Array.from({ length: this.file?.numberOfPages }, (_x, i) => i + 1);
}
private static _scrollToFirstElement(elements: HTMLElement[], mode: 'always' | 'if-needed' = 'if-needed') {
diff --git a/apps/red-ui/src/app/modules/file-preview/components/user-management/user-management.component.html b/apps/red-ui/src/app/modules/file-preview/components/user-management/user-management.component.html
index 1d761a465..b7c3de488 100644
--- a/apps/red-ui/src/app/modules/file-preview/components/user-management/user-management.component.html
+++ b/apps/red-ui/src/app/modules/file-preview/components/user-management/user-management.component.html
@@ -10,6 +10,7 @@
*ngIf="(editingReviewer$ | async) === false"
[user]="file.assignee"
[withName]="!!file.assignee"
+ id="assignee"
tooltipPosition="below"
>
@@ -34,8 +35,9 @@
*ngIf="(canAssignOrUnassign$ | async) && !!file.assignee"
[tooltip]="assignTooltip$ | async"
icon="iqser:edit"
- tooltipPosition="below"
+ id="change-assignee"
iqserHelpMode="document_features_in_editor"
+ tooltipPosition="below"
>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/apps/red-ui/src/app/modules/file-preview/services/annotation-actions.service.ts b/apps/red-ui/src/app/modules/file-preview/services/annotation-actions.service.ts
index 5742f1896..3c401d655 100644
--- a/apps/red-ui/src/app/modules/file-preview/services/annotation-actions.service.ts
+++ b/apps/red-ui/src/app/modules/file-preview/services/annotation-actions.service.ts
@@ -211,7 +211,8 @@ export class AnnotationActionsService {
return this.convertRecommendationToAnnotation($event, [recommendation]);
}
- const text = annotation.rectangle ? annotation.value : annotation.isImage ? 'Image' : textAndPositions.text;
+ const isImageText = annotation.isImage ? 'Image' : textAndPositions.text;
+ const text = annotation.rectangle ? annotation.value : isImageText;
const data = { annotation, text };
this._dialogService.openDialog('resizeAnnotation', $event, data, (result: { comment: string; updateDictionary: boolean }) => {
diff --git a/apps/red-ui/src/app/modules/file-preview/services/annotation-processing.service.ts b/apps/red-ui/src/app/modules/file-preview/services/annotation-processing.service.ts
index f5f91a700..4c60c8cc9 100644
--- a/apps/red-ui/src/app/modules/file-preview/services/annotation-processing.service.ts
+++ b/apps/red-ui/src/app/modules/file-preview/services/annotation-processing.service.ts
@@ -8,6 +8,7 @@ import { annotationDefaultColorConfig, IViewedPage } from '@red/domain';
import { FilePreviewStateService } from './file-preview-state.service';
import { FileDataService } from './file-data.service';
import { DefaultColorsService } from '@services/entity-services/default-colors.service';
+import { of } from 'rxjs';
@Injectable()
export class AnnotationProcessingService {
@@ -68,7 +69,7 @@ export class AnnotationProcessingService {
// top level filter
if (topLevelFilter) {
this._createParentFilter(a.isHighlight ? a.filterKey : a.superType, filterMap, filters, a.isHighlight, {
- color: a.color,
+ color$: of(a.color),
shortLabel: a.isHighlight ? '' : null,
shape: a.iconShape,
});
@@ -78,7 +79,7 @@ export class AnnotationProcessingService {
if (!parentFilter) {
parentFilter = this._createParentFilter(a.superType, filterMap, filters, false, {
shape: a.iconShape,
- color: this._defaultColorsService.getColor(
+ color$: this._defaultColorsService.getColor$(
this._state.dossierTemplateId,
annotationDefaultColorConfig[a.superType],
),
@@ -90,7 +91,7 @@ export class AnnotationProcessingService {
checked: false,
matches: 1,
metadata: {
- color: a.color,
+ color$: of(a.color),
shape: a.iconShape,
},
skipTranslation: true,
diff --git a/apps/red-ui/src/app/modules/file-preview/services/file-data.service.ts b/apps/red-ui/src/app/modules/file-preview/services/file-data.service.ts
index 3040b94b6..e4704916e 100644
--- a/apps/red-ui/src/app/modules/file-preview/services/file-data.service.ts
+++ b/apps/red-ui/src/app/modules/file-preview/services/file-data.service.ts
@@ -19,6 +19,7 @@ import { NGXLogger } from 'ngx-logger';
import { MultiSelectService } from './multi-select.service';
import { FilesService } from '@services/files/files.service';
import { DefaultColorsService } from '@services/entity-services/default-colors.service';
+import { DossierDictionariesMapService } from '@services/entity-services/dossier-dictionaries-map.service';
const DELTA_VIEW_TIME = 10 * 60 * 1000; // 10 minutes;
@@ -38,6 +39,7 @@ export class FileDataService extends EntitiesService
{
private readonly _viewModeService: ViewModeService,
private readonly _userPreferenceService: UserPreferenceService,
private readonly _dictionariesMapService: DictionariesMapService,
+ private readonly _dossierDictionariesMapService: DossierDictionariesMapService,
private readonly _permissionsService: PermissionsService,
private readonly _redactionLogService: RedactionLogService,
private readonly _textHighlightsService: TextHighlightService,
@@ -69,7 +71,11 @@ export class FileDataService extends EntitiesService {
get #annotations$() {
return this.#redactionLog$.pipe(
- withLatestFrom(this._state.file$),
+ withLatestFrom(
+ this._state.file$,
+ this._dictionariesMapService.get$(this._state.dossierTemplateId),
+ this._dossierDictionariesMapService.get$(this._state.dossierId),
+ ),
map(([redactionLog, file]) => this.#buildAnnotations(redactionLog, file)),
tap(() => this.#checkMissingTypes()),
map(annotations =>
diff --git a/apps/red-ui/src/app/modules/file-preview/services/file-preview-state.service.ts b/apps/red-ui/src/app/modules/file-preview/services/file-preview-state.service.ts
index d2869b0cf..6be628d8d 100644
--- a/apps/red-ui/src/app/modules/file-preview/services/file-preview-state.service.ts
+++ b/apps/red-ui/src/app/modules/file-preview/services/file-preview-state.service.ts
@@ -1,6 +1,6 @@
import { Injectable, Injector } from '@angular/core';
import { combineLatest, firstValueFrom, from, merge, Observable, of, pairwise, Subject, switchMap } from 'rxjs';
-import { Dictionary, Dossier, DOSSIER_ID, File, FILE_ID } from '@red/domain';
+import { Dictionary, Dossier, DOSSIER_ID, DOSSIER_TEMPLATE_ID, File, FILE_ID } from '@red/domain';
import { Router } from '@angular/router';
import { FilesMapService } from '@services/files/files-map.service';
import { PermissionsService } from '@services/permissions.service';
@@ -11,11 +11,11 @@ import { dossiersServiceResolver } from '@services/entity-services/dossiers.serv
import { wipeFilesCache } from '@iqser/cache';
import { DossiersService } from '@services/dossiers/dossiers.service';
import { FilesService } from '@services/files/files.service';
-import { DictionaryService } from '@services/entity-services/dictionary.service';
import { HttpEvent, HttpEventType, HttpProgressEvent, HttpResponse } from '@angular/common/http';
import { TranslateService } from '@ngx-translate/core';
import { DictionariesMapService } from '../../../services/entity-services/dictionaries-map.service';
import { MatDialogRef } from '@angular/material/dialog';
+import { DossierDictionariesMapService } from '@services/entity-services/dossier-dictionaries-map.service';
const ONE_MEGABYTE = 1024 * 1024;
@@ -40,7 +40,7 @@ export class FilePreviewStateService {
readonly isWritable$: Observable;
readonly dossierId: string = getParam(DOSSIER_ID);
- readonly dossierTemplateId: string;
+ readonly dossierTemplateId: string = getParam(DOSSIER_TEMPLATE_ID);
readonly fileId: string = getParam(FILE_ID);
dossier: Dossier;
dialogRef: MatDialogRef;
@@ -56,15 +56,12 @@ export class FilePreviewStateService {
private readonly _filesService: FilesService,
private readonly _dossiersService: DossiersService,
private readonly _fileManagementService: FileManagementService,
- private readonly _dictionaryService: DictionaryService,
+ private readonly _dossierDictionariesMapService: DossierDictionariesMapService,
private readonly _dictionariesMapService: DictionariesMapService,
private readonly _translateService: TranslateService,
private readonly _loadingService: LoadingService,
) {
const dossiersService = dossiersServiceResolver(_injector, router);
-
- this.dossierTemplateId = dossiersService.find(this.dossierId).dossierTemplateId;
-
this.dossier$ = dossiersService.getEntityChanged$(this.dossierId).pipe(tap(dossier => (this.dossier = dossier)));
this.file$ = filesMapService.watch$(this.dossierId, this.fileId).pipe(tap(file => (this.file = file)));
[this.isReadonly$, this.isWritable$] = boolFactory(
@@ -75,8 +72,8 @@ export class FilePreviewStateService {
this.blob$ = this.#blob$;
this.dossierFileChange$ = this.#dossierFilesChange$();
- this._dictionaryService
- .getDossierDictionary(this.dossierTemplateId, this.dossierId)
+ this._dossierDictionariesMapService
+ .watch$(this.dossierId, 'dossier_redaction')
.subscribe(dictionary => (this.#dossierDictionary = dictionary));
}
diff --git a/apps/red-ui/src/app/modules/file-preview/services/manual-redaction.service.ts b/apps/red-ui/src/app/modules/file-preview/services/manual-redaction.service.ts
index 051596419..e69f7dc7e 100644
--- a/apps/red-ui/src/app/modules/file-preview/services/manual-redaction.service.ts
+++ b/apps/red-ui/src/app/modules/file-preview/services/manual-redaction.service.ts
@@ -22,7 +22,8 @@ import { type ManualRedactionEntryType } from '@models/file/manual-redaction-ent
import { NGXLogger } from 'ngx-logger';
function getResponseType(error: boolean, isConflict: boolean) {
- return error ? (isConflict ? 'conflictError' : 'error') : 'success';
+ const isConflictError = isConflict ? 'conflictError' : 'error';
+ return error ? isConflictError : 'success';
}
function getDictionaryMessage(action: DictionaryActions, error = false, isConflict = false): string {
diff --git a/apps/red-ui/src/app/modules/file-preview/services/stamp.service.ts b/apps/red-ui/src/app/modules/file-preview/services/stamp.service.ts
index 91a7617e3..d1ced1889 100644
--- a/apps/red-ui/src/app/modules/file-preview/services/stamp.service.ts
+++ b/apps/red-ui/src/app/modules/file-preview/services/stamp.service.ts
@@ -5,11 +5,10 @@ import { NGXLogger } from 'ngx-logger';
import { ViewModeService } from './view-mode.service';
import { TranslateService } from '@ngx-translate/core';
import { Core } from '@pdftron/webviewer';
-import { firstValueFrom } from 'rxjs';
-import { WatermarkService } from '@services/entity-services/watermark.service';
import { PdfViewer } from '../../pdf-viewer/services/pdf-viewer.service';
import { REDDocumentViewer } from '../../pdf-viewer/services/document-viewer.service';
-import { LicenseService } from '../../../services/license.service';
+import { LicenseService } from '@services/license.service';
+import { WatermarksMapService } from '@services/entity-services/watermarks-map.service';
import PDFNet = Core.PDFNet;
@Injectable()
@@ -21,7 +20,7 @@ export class StampService {
private readonly _logger: NGXLogger,
private readonly _viewModeService: ViewModeService,
private readonly _translateService: TranslateService,
- private readonly _watermarkService: WatermarkService,
+ private readonly _watermarksMapService: WatermarksMapService,
private readonly _licenseService: LicenseService,
) {}
@@ -44,7 +43,7 @@ export class StampService {
if (this._viewModeService.isRedacted) {
const dossier = this._state.dossier;
if (dossier.previewWatermarkId) {
- await this._stampPreview(pdfDoc, dossier.dossierTemplateId);
+ await this._stampPreview(pdfDoc, dossier.dossierTemplateId, dossier.previewWatermarkId);
}
} else {
await this._stampExcludedPages(pdfDoc, file.excludedPages);
@@ -70,8 +69,8 @@ export class StampService {
}
}
- private async _stampPreview(document: PDFNet.PDFDoc, dossierTemplateId: string): Promise {
- const watermark = await firstValueFrom(this._watermarkService.getWatermark(dossierTemplateId));
+ private async _stampPreview(document: PDFNet.PDFDoc, dossierTemplateId: string, watermarkId: string): Promise {
+ const watermark = this._watermarksMapService.get(dossierTemplateId, watermarkId);
await stampPDFPage(
document,
this._pdf.PDFNet,
@@ -81,7 +80,7 @@ export class StampService {
watermark.orientation,
watermark.opacity,
watermark.hexColor,
- Array.from({ length: await document.getPageCount() }, (x, i) => i + 1),
+ Array.from({ length: await document.getPageCount() }, (_x, i) => i + 1),
this._licenseService.activeLicenseKey,
);
}
diff --git a/apps/red-ui/src/app/modules/shared-dossiers/components/date-column/date-column.component.scss b/apps/red-ui/src/app/modules/shared-dossiers/components/date-column/date-column.component.scss
deleted file mode 100644
index e69de29bb..000000000
diff --git a/apps/red-ui/src/app/modules/shared-dossiers/components/date-column/date-column.component.ts b/apps/red-ui/src/app/modules/shared-dossiers/components/date-column/date-column.component.ts
index 75b421297..732d72251 100644
--- a/apps/red-ui/src/app/modules/shared-dossiers/components/date-column/date-column.component.ts
+++ b/apps/red-ui/src/app/modules/shared-dossiers/components/date-column/date-column.component.ts
@@ -3,7 +3,6 @@ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
@Component({
selector: 'redaction-date-column [date]',
templateUrl: './date-column.component.html',
- styleUrls: ['./date-column.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class DateColumnComponent {
diff --git a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.scss b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.scss
deleted file mode 100644
index e69de29bb..000000000
diff --git a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts
index b85d196d7..98f91a0f0 100644
--- a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts
+++ b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts
@@ -20,7 +20,6 @@ class DialogData {
@Component({
templateUrl: './assign-reviewer-approver-dialog.component.html',
- styleUrls: ['./assign-reviewer-approver-dialog.component.scss'],
})
export class AssignReviewerApproverDialogComponent {
readonly form: UntypedFormGroup;
diff --git a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/dictionary/dictionary-details-dialog/dictionary-details-dialog.component.html b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/dictionary/dictionary-details-dialog/dictionary-details-dialog.component.html
index 354b4577d..2ed511642 100644
--- a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/dictionary/dictionary-details-dialog/dictionary-details-dialog.component.html
+++ b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/dictionary/dictionary-details-dialog/dictionary-details-dialog.component.html
@@ -1,5 +1,5 @@
-
+
-
-
+
+
+
+
diff --git a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component.ts b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component.ts
index ca6fb0fd6..1db6d6a20 100644
--- a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component.ts
+++ b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component.ts
@@ -7,7 +7,6 @@ import { ReportTemplateService } from '@services/report-template.service';
import { PermissionsService } from '@services/permissions.service';
import { firstValueFrom } from 'rxjs';
import { DossiersService } from '@services/dossiers/dossiers.service';
-import { UpdateWatermarkIdsEvent } from '@components/dossier-watermark-selector/dossier-watermark-selector.component';
@Component({
selector: 'redaction-edit-dossier-download-package',
@@ -47,7 +46,7 @@ export class EditDossierDownloadPackageComponent implements OnInit, EditDossierS
}
for (const key of Object.keys(this.form.getRawValue())) {
- if (key.startsWith('watermark') || key.startsWith('previewWatermark')) {
+ if (key.toLowerCase().includes('watermark')) {
if (this.dossier[key] !== this.form.get(key).value) {
return true;
}
@@ -107,8 +106,8 @@ export class EditDossierDownloadPackageComponent implements OnInit, EditDossierS
this.form.reset({
downloadFileTypes: this.dossier.downloadFileTypes,
reportTemplateIds: this.dossier.reportTemplateIds,
- watermarkId: [this.dossier.watermarkId],
- previewWatermarkId: [this.dossier.previewWatermarkId],
+ watermarkId: this.dossier.watermarkId,
+ previewWatermarkId: this.dossier.previewWatermarkId,
});
}
@@ -128,9 +127,4 @@ export class EditDossierDownloadPackageComponent implements OnInit, EditDossierS
},
);
}
-
- updateWatermarkIds(event: UpdateWatermarkIdsEvent) {
- this.form.get('watermarkId').setValue(event.watermarkId);
- this.form.get('previewWatermarkId').setValue(event.previewWatermarkId);
- }
}
diff --git a/apps/red-ui/src/app/modules/shared/components/add-edit-entity/add-edit-entity.component.ts b/apps/red-ui/src/app/modules/shared/components/add-edit-entity/add-edit-entity.component.ts
index 57535c4da..bb51d83a3 100644
--- a/apps/red-ui/src/app/modules/shared/components/add-edit-entity/add-edit-entity.component.ts
+++ b/apps/red-ui/src/app/modules/shared/components/add-edit-entity/add-edit-entity.component.ts
@@ -77,7 +77,6 @@ export class AddEditEntityComponent extends BaseFormComponent implements OnInit
try {
if (this.entity) {
// edit mode
- console.log({ dossierId: this.dossierId });
await firstValueFrom(
this._dictionaryService.updateDictionary(dictionary, this.dossierTemplateId, dictionary.type, this.dossierId),
);
@@ -148,7 +147,7 @@ export class AddEditEntityComponent extends BaseFormComponent implements OnInit
});
}
- if (this.entity?.hasDictionary) {
+ if (this.entity?.hasDictionary || this.#isDossierRedaction) {
Object.assign(controlsConfig, {
addToDictionaryAction: [this.#addToDictionaryActionControl],
});
diff --git a/apps/red-ui/src/app/modules/shared/components/assign-user-dropdown/assign-user-dropdown.component.html b/apps/red-ui/src/app/modules/shared/components/assign-user-dropdown/assign-user-dropdown.component.html
index 4db38fa1d..3a352737c 100644
--- a/apps/red-ui/src/app/modules/shared/components/assign-user-dropdown/assign-user-dropdown.component.html
+++ b/apps/red-ui/src/app/modules/shared/components/assign-user-dropdown/assign-user-dropdown.component.html
@@ -1,10 +1,10 @@
-
+
-
+
@@ -16,6 +16,7 @@
[tooltip]="'assign-user.save' | translate"
class="pl-1"
icon="iqser:check"
+ id="save-assignee"
tooltipPosition="below"
>
diff --git a/apps/red-ui/src/app/modules/shared/components/buttons/file-download-btn/file-download-btn.component.scss b/apps/red-ui/src/app/modules/shared/components/buttons/file-download-btn/file-download-btn.component.scss
deleted file mode 100644
index e69de29bb..000000000
diff --git a/apps/red-ui/src/app/modules/shared/components/buttons/file-download-btn/file-download-btn.component.ts b/apps/red-ui/src/app/modules/shared/components/buttons/file-download-btn/file-download-btn.component.ts
index 66912c469..0c9f3f8d9 100644
--- a/apps/red-ui/src/app/modules/shared/components/buttons/file-download-btn/file-download-btn.component.ts
+++ b/apps/red-ui/src/app/modules/shared/components/buttons/file-download-btn/file-download-btn.component.ts
@@ -9,7 +9,6 @@ import { firstValueFrom } from 'rxjs';
@Component({
selector: 'redaction-file-download-btn [files] [dossier]',
templateUrl: './file-download-btn.component.html',
- styleUrls: ['./file-download-btn.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class FileDownloadBtnComponent implements OnChanges {
diff --git a/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.html b/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.html
index cadf3b027..b7990b39f 100644
--- a/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.html
+++ b/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.html
@@ -16,9 +16,7 @@
0" class="with-input">
-
- {{ currentMatch + '/' + findMatches.length }}
-
+ {{ currentMatch + '/' + findMatches.length }}
diff --git a/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.scss b/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.scss
index 59033e579..33e59516e 100644
--- a/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.scss
+++ b/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.scss
@@ -72,9 +72,6 @@ form {
display: flex;
justify-content: center;
align-items: center;
-
- .search-match-text {
- }
}
mat-icon {
diff --git a/apps/red-ui/src/app/modules/shared/components/dossier-name-column/dossier-name-column.component.scss b/apps/red-ui/src/app/modules/shared/components/dossier-name-column/dossier-name-column.component.scss
deleted file mode 100644
index e69de29bb..000000000
diff --git a/apps/red-ui/src/app/modules/shared/components/dossier-name-column/dossier-name-column.component.ts b/apps/red-ui/src/app/modules/shared/components/dossier-name-column/dossier-name-column.component.ts
index b49421747..9f36a5c89 100644
--- a/apps/red-ui/src/app/modules/shared/components/dossier-name-column/dossier-name-column.component.ts
+++ b/apps/red-ui/src/app/modules/shared/components/dossier-name-column/dossier-name-column.component.ts
@@ -19,7 +19,6 @@ interface PartialDossier extends Partial
{
@Component({
selector: 'redaction-dossier-name-column',
templateUrl: './dossier-name-column.component.html',
- styleUrls: ['./dossier-name-column.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class DossierNameColumnComponent {
diff --git a/apps/red-ui/src/app/modules/shared/components/dossier-watermark-selector/watermark-selector.component.html b/apps/red-ui/src/app/modules/shared/components/dossier-watermark-selector/watermark-selector.component.html
new file mode 100644
index 000000000..87c95f517
--- /dev/null
+++ b/apps/red-ui/src/app/modules/shared/components/dossier-watermark-selector/watermark-selector.component.html
@@ -0,0 +1,19 @@
+
+
+
+ {{ label }}
+
+
+
+
+
+ {{ watermarksMap.get(value)?.name }}
+
+
+
+
+ {{ watermark.name }}
+
+
+
+
diff --git a/apps/red-ui/src/app/components/dossier-watermark-selector/dossier-watermark-selector.component.scss b/apps/red-ui/src/app/modules/shared/components/dossier-watermark-selector/watermark-selector.component.scss
similarity index 100%
rename from apps/red-ui/src/app/components/dossier-watermark-selector/dossier-watermark-selector.component.scss
rename to apps/red-ui/src/app/modules/shared/components/dossier-watermark-selector/watermark-selector.component.scss
diff --git a/apps/red-ui/src/app/modules/shared/components/dossier-watermark-selector/watermark-selector.component.ts b/apps/red-ui/src/app/modules/shared/components/dossier-watermark-selector/watermark-selector.component.ts
new file mode 100644
index 000000000..85bb4a7f3
--- /dev/null
+++ b/apps/red-ui/src/app/modules/shared/components/dossier-watermark-selector/watermark-selector.component.ts
@@ -0,0 +1,81 @@
+import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core';
+import { BehaviorSubject, Observable } from 'rxjs';
+import { FormFieldComponent, shareLast } from '@iqser/common-ui';
+import { filter, map, tap } from 'rxjs/operators';
+import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
+import { Watermark } from '@red/domain';
+import { WatermarksMapService } from '@services/entity-services/watermarks-map.service';
+import { MatCheckboxChange } from '@angular/material/checkbox';
+
+@Component({
+ selector: 'redaction-watermark-selector [dossierTemplateId] [label]',
+ templateUrl: './watermark-selector.component.html',
+ styleUrls: ['./watermark-selector.component.scss'],
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ providers: [
+ {
+ provide: NG_VALUE_ACCESSOR,
+ multi: true,
+ useExisting: WatermarkSelectorComponent,
+ },
+ {
+ provide: NG_VALIDATORS,
+ multi: true,
+ useExisting: WatermarkSelectorComponent,
+ },
+ ],
+})
+export class WatermarkSelectorComponent extends FormFieldComponent implements OnChanges {
+ @Input() dossierTemplateId: string;
+ @Input() label: string;
+ readonly watermarks$: Observable;
+ watermarksMap = new Map();
+ #watermarks: Watermark[] = [];
+ readonly #dossierTemplateId$ = new BehaviorSubject(null);
+
+ constructor(private readonly _watermarksMapService: WatermarksMapService) {
+ super();
+ this.watermarks$ = this.#dossierTemplateId$.pipe(
+ filter(dossierTemplateId => !!dossierTemplateId),
+ map(dossierTemplateId => this._watermarksMapService.get(dossierTemplateId)),
+ tap(watermarks => {
+ this.#watermarks = watermarks;
+ this.watermarksMap.clear();
+ watermarks.forEach(watermark => this.watermarksMap.set(watermark.id, watermark));
+ }),
+ tap(watermarks => {
+ if (!watermarks.length) {
+ this.selectWatermark(null);
+ this.setDisabledState(true);
+ } else {
+ this.setDisabledState(false);
+ if (this.value && this.touched) {
+ this.selectWatermark(watermarks[0].id);
+ }
+ }
+ }),
+ shareLast(),
+ );
+ }
+
+ changeChecked($event: MatCheckboxChange): void {
+ const { checked } = $event;
+ if (!checked || this.#watermarks.length === 0) {
+ this.selectWatermark(null);
+ } else {
+ this.selectWatermark(this.#watermarks[0].id);
+ }
+ }
+
+ selectWatermark(watermarkId: string): void {
+ this.markAsTouched();
+ this._value = watermarkId;
+ this.onChange(this._value);
+ }
+
+ ngOnChanges(changes: SimpleChanges) {
+ if (changes.dossierTemplateId) {
+ this.#dossierTemplateId$.next(this.dossierTemplateId);
+ }
+ }
+}
diff --git a/apps/red-ui/src/app/modules/shared/components/file-stats/file-stats.component.scss b/apps/red-ui/src/app/modules/shared/components/file-stats/file-stats.component.scss
deleted file mode 100644
index e69de29bb..000000000
diff --git a/apps/red-ui/src/app/modules/shared/components/file-stats/file-stats.component.ts b/apps/red-ui/src/app/modules/shared/components/file-stats/file-stats.component.ts
index e2cd30c5d..a17a7c2ca 100644
--- a/apps/red-ui/src/app/modules/shared/components/file-stats/file-stats.component.ts
+++ b/apps/red-ui/src/app/modules/shared/components/file-stats/file-stats.component.ts
@@ -3,7 +3,6 @@ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
@Component({
selector: 'redaction-file-stats',
templateUrl: './file-stats.component.html',
- styleUrls: ['./file-stats.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class FileStatsComponent {
diff --git a/apps/red-ui/src/app/modules/shared/components/type-filter/type-filter.component.html b/apps/red-ui/src/app/modules/shared/components/type-filter/type-filter.component.html
index 2d115f3fb..0340c18b2 100644
--- a/apps/red-ui/src/app/modules/shared/components/type-filter/type-filter.component.html
+++ b/apps/red-ui/src/app/modules/shared/components/type-filter/type-filter.component.html
@@ -5,9 +5,9 @@
diff --git a/apps/red-ui/src/app/modules/shared/components/type-filter/type-filter.component.ts b/apps/red-ui/src/app/modules/shared/components/type-filter/type-filter.component.ts
index 5fd9241df..57f947df7 100644
--- a/apps/red-ui/src/app/modules/shared/components/type-filter/type-filter.component.ts
+++ b/apps/red-ui/src/app/modules/shared/components/type-filter/type-filter.component.ts
@@ -14,7 +14,6 @@ export class TypeFilterComponent implements OnChanges {
@Input() dossierId: string;
label: string;
- color: string;
private _suggestionsKeys: string[] = [
SuperTypes.SuggestionRemove,
@@ -40,7 +39,5 @@ export class TypeFilterComponent implements OnChanges {
: this._suggestionsKeys.includes(this.filter.id)
? 'S'
: this.filter.id.charAt(0);
-
- this.color = this.filter.metadata?.color || 'transparent';
}
}
diff --git a/apps/red-ui/src/app/modules/shared/dialogs/add-dossier-dialog/add-dossier-dialog.component.html b/apps/red-ui/src/app/modules/shared/dialogs/add-dossier-dialog/add-dossier-dialog.component.html
index 7a661dc1c..5c1e3844e 100644
--- a/apps/red-ui/src/app/modules/shared/dialogs/add-dossier-dialog/add-dossier-dialog.component.html
+++ b/apps/red-ui/src/app/modules/shared/dialogs/add-dossier-dialog/add-dossier-dialog.component.html
@@ -47,8 +47,19 @@
>
-
-
+
+
+
+
+