From eae067f67c38c341027de20496819fc05afc649e Mon Sep 17 00:00:00 2001 From: Valentin Mihai Date: Fri, 15 Jul 2022 16:22:48 +0300 Subject: [PATCH 01/25] RED-4247 - added new route path for watermark creation instead of using '0' value as param --- .../app/modules/admin/admin-routing.module.ts | 9 ++++++++ .../watermark-screen.component.html | 1 - .../watermark-screen.component.ts | 22 +++++++++++-------- .../watermarks-listing-screen.component.ts | 2 +- 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/apps/red-ui/src/app/modules/admin/admin-routing.module.ts b/apps/red-ui/src/app/modules/admin/admin-routing.module.ts index 4836ff31e..6004dd990 100644 --- a/apps/red-ui/src/app/modules/admin/admin-routing.module.ts +++ b/apps/red-ui/src/app/modules/admin/admin-routing.module.ts @@ -81,6 +81,15 @@ const dossierTemplateIdRoutes: Routes = [ routeGuards: [AuthGuard, RedRoleGuard], }, }, + { + path: 'create', + component: BaseWatermarkScreenComponent, + canActivate: [CompositeRouteGuard], + loadChildren: () => import('./screens/watermark/watermark.module').then(m => m.WatermarkModule), + data: { + routeGuards: [AuthGuard, RedRoleGuard], + }, + }, { path: `:${WATERMARK_ID}`, component: BaseWatermarkScreenComponent, diff --git a/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen/watermark-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen/watermark-screen.component.html index 9a05c9caa..15765c39a 100644 --- a/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen/watermark-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen/watermark-screen.component.html @@ -22,7 +22,6 @@
- - + + + + +
@@ -92,10 +103,10 @@ diff --git a/apps/red-ui/src/app/modules/shared/dialogs/add-dossier-dialog/add-dossier-dialog.component.ts b/apps/red-ui/src/app/modules/shared/dialogs/add-dossier-dialog/add-dossier-dialog.component.ts index 3ae34e23b..5d3435e9d 100644 --- a/apps/red-ui/src/app/modules/shared/dialogs/add-dossier-dialog/add-dossier-dialog.component.ts +++ b/apps/red-ui/src/app/modules/shared/dialogs/add-dossier-dialog/add-dossier-dialog.component.ts @@ -11,7 +11,6 @@ import { firstValueFrom } from 'rxjs'; import dayjs from 'dayjs'; import { Router } from '@angular/router'; import { DossiersDialogService } from '../../../shared-dossiers/services/dossiers-dialog.service'; -import { UpdateWatermarkIdsEvent } from '@components/dossier-watermark-selector/dossier-watermark-selector.component'; interface DialogData { readonly dossierTemplateId?: string; @@ -67,17 +66,11 @@ export class AddDossierDialogComponent extends BaseDialogComponent implements On } async ngOnInit(): Promise { - this.dossierTemplateId = this.form.get('dossierTemplateId').value; - await this.dossierTemplateChanged(this.dossierTemplateId); + await this.dossierTemplateChanged(this.form.get('dossierTemplateId').value); } reportTemplateValueMapper = (reportTemplate: IReportTemplate) => reportTemplate.templateId; - updateWatermarkIds(event: UpdateWatermarkIdsEvent) { - this.form.get('watermarkId').setValue(event.watermarkId); - this.form.get('previewWatermarkId').setValue(event.previewWatermarkId); - } - async save(options?: SaveOptions) { this._loadingService.start(); const savedDossier = await firstValueFrom(this._activeDossiersService.createOrUpdate(this._formToObject())); @@ -94,7 +87,9 @@ export class AddDossierDialogComponent extends BaseDialogComponent implements On this._loadingService.stop(); } - async dossierTemplateChanged(dossierTemplateId) { + async dossierTemplateChanged(dossierTemplateId: string) { + this.dossierTemplateId = dossierTemplateId; + // get current selected dossierTemplate const dossierTemplate = this.dossierTemplates.find(r => r.dossierTemplateId === dossierTemplateId); diff --git a/apps/red-ui/src/app/modules/shared/shared.module.ts b/apps/red-ui/src/app/modules/shared/shared.module.ts index 787a6f98d..02f0b6fa5 100644 --- a/apps/red-ui/src/app/modules/shared/shared.module.ts +++ b/apps/red-ui/src/app/modules/shared/shared.module.ts @@ -23,20 +23,20 @@ import { TypeFilterComponent } from './components/type-filter/type-filter.compon import { TeamMembersComponent } from './components/team-members/team-members.component'; import { EditorComponent } from './components/editor/editor.component'; import { ExpandableFileActionsComponent } from './components/expandable-file-actions/expandable-file-actions.component'; -import { ProcessingIndicatorComponent } from '@shared/components/processing-indicator/processing-indicator.component'; -import { DossierStateComponent } from '@shared/components/dossier-state/dossier-state.component'; +import { ProcessingIndicatorComponent } from './components/processing-indicator/processing-indicator.component'; +import { DossierStateComponent } from './components/dossier-state/dossier-state.component'; import { FileStatsComponent } from './components/file-stats/file-stats.component'; -import { FileNameColumnComponent } from '@shared/components/file-name-column/file-name-column.component'; -import { DossierNameColumnComponent } from '@shared/components/dossier-name-column/dossier-name-column.component'; +import { FileNameColumnComponent } from './components/file-name-column/file-name-column.component'; +import { DossierNameColumnComponent } from './components/dossier-name-column/dossier-name-column.component'; import { MAT_DATE_FORMATS } from '@angular/material/core'; -import { DossiersTypeSwitchComponent } from '@shared/components/dossiers-type-switch/dossiers-type-switch.component'; +import { DossiersTypeSwitchComponent } from './components/dossiers-type-switch/dossiers-type-switch.component'; import { TranslateModule } from '@ngx-translate/core'; import { RouterModule } from '@angular/router'; -import { AddDossierDialogComponent } from '@shared/dialogs/add-dossier-dialog/add-dossier-dialog.component'; -import { SharedDialogService } from '@shared/services/dialog.service'; -import { DossierWatermarkSelectorComponent } from '@components/dossier-watermark-selector/dossier-watermark-selector.component'; -import { AddEditEntityComponent } from '@shared/components/add-edit-entity/add-edit-entity.component'; +import { AddDossierDialogComponent } from './dialogs/add-dossier-dialog/add-dossier-dialog.component'; +import { SharedDialogService } from './services/dialog.service'; +import { AddEditEntityComponent } from './components/add-edit-entity/add-edit-entity.component'; import { ColorPickerModule } from 'ngx-color-picker'; +import { WatermarkSelectorComponent } from './components/dossier-watermark-selector/watermark-selector.component'; const buttons = [FileDownloadBtnComponent, UserButtonComponent]; @@ -58,7 +58,7 @@ const components = [ FileNameColumnComponent, DossiersTypeSwitchComponent, AddDossierDialogComponent, - DossierWatermarkSelectorComponent, + WatermarkSelectorComponent, AddEditEntityComponent, ...buttons, diff --git a/apps/red-ui/src/app/services/dossier-templates/dossier-templates.service.ts b/apps/red-ui/src/app/services/dossier-templates/dossier-templates.service.ts index 2b019a522..2922875c4 100644 --- a/apps/red-ui/src/app/services/dossier-templates/dossier-templates.service.ts +++ b/apps/red-ui/src/app/services/dossier-templates/dossier-templates.service.ts @@ -9,6 +9,7 @@ import { HttpErrorResponse, HttpStatusCode } from '@angular/common/http'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { DictionaryService } from '../entity-services/dictionary.service'; import { DefaultColorsService } from '@services/entity-services/default-colors.service'; +import { WatermarkService } from '@services/entity-services/watermark.service'; const DOSSIER_TEMPLATE_CONFLICT_MSG = _('dossier-templates-listing.error.conflict'); const GENERIC_MSG = _('dossier-templates-listing.error.generic'); @@ -26,6 +27,7 @@ export class DossierTemplatesService extends EntitiesService templates)); } return of(templates); diff --git a/apps/red-ui/src/app/services/entity-services/watermark.service.ts b/apps/red-ui/src/app/services/entity-services/watermark.service.ts index 1f2af26c3..5d296d215 100644 --- a/apps/red-ui/src/app/services/entity-services/watermark.service.ts +++ b/apps/red-ui/src/app/services/entity-services/watermark.service.ts @@ -1,8 +1,9 @@ import { Injectable } from '@angular/core'; -import { GenericService, QueryParam, RequiredParam, Validate } from '@iqser/common-ui'; -import { IWatermark } from '@red/domain'; -import { Observable } from 'rxjs'; -import { map } from 'rxjs/operators'; +import { GenericService, mapEach, QueryParam, RequiredParam, Validate } from '@iqser/common-ui'; +import { IWatermark, Watermark } from '@red/domain'; +import { forkJoin, Observable } from 'rxjs'; +import { map, switchMap, tap } from 'rxjs/operators'; +import { WatermarksMapService } from '@services/entity-services/watermarks-map.service'; interface IsUsedResponse { value: boolean; @@ -14,25 +15,40 @@ interface IsUsedResponse { export class WatermarkService extends GenericService { protected readonly _defaultModelPath = 'watermark'; - @Validate() - saveWatermark(@RequiredParam() body: IWatermark) { - return this._post(body, `${this._defaultModelPath}`); + constructor(private readonly _watermarksMapService: WatermarksMapService) { + super(); } @Validate() - deleteWatermark(@RequiredParam() watermarkId: string) { - return super.delete({}, `${this._defaultModelPath}/${watermarkId}`); + deleteWatermark(@RequiredParam() dossierTemplateId: string, @RequiredParam() watermarkId: string): Observable { + return super + .delete(null, `${this._defaultModelPath}/${watermarkId}`) + .pipe(switchMap(() => this.loadForDossierTemplate(dossierTemplateId))); } @Validate() - getWatermark(@RequiredParam() watermarkId: string) { - return this._getOne([watermarkId]); + saveWatermark(@RequiredParam() body: IWatermark): Observable { + return this._post(body, `${this._defaultModelPath}`).pipe( + switchMap(watermark => + this.loadForDossierTemplate(watermark.dossierTemplateId).pipe( + map(() => this._watermarksMapService.get(watermark.dossierTemplateId, watermark.id.toString())), + ), + ), + ); } @Validate() - getWatermarks(@RequiredParam() dossierTemplateId: string): Observable { + loadForDossierTemplate(@RequiredParam() dossierTemplateId: string): Observable { const queryParams: QueryParam[] = [{ key: 'dossierTemplateId', value: dossierTemplateId }]; - return this.getAll(this._defaultModelPath, queryParams); + return this.getAll(this._defaultModelPath, queryParams).pipe( + mapEach(entity => new Watermark(entity)), + tap(entities => this._watermarksMapService.set(dossierTemplateId, entities.sort(this.sortByStatusFn))), + ); + } + + @Validate() + loadAll(@RequiredParam() dossierTemplateIds: string[]): Observable { + return forkJoin(dossierTemplateIds.map(id => this.loadForDossierTemplate(id))).pipe(map(arrays => [].concat(...arrays))); } @Validate() @@ -40,4 +56,11 @@ export class WatermarkService extends GenericService { const queryParams: QueryParam[] = [{ key: 'watermarkId', value: watermarkId }]; return this.getAll(`${this._defaultModelPath}/used`, queryParams).pipe(map(result => result.value)); } + + sortByStatusFn = (a: Watermark, b: Watermark) => { + if (a.enabled === b.enabled) { + return a.name.toLowerCase() < b.name.toLowerCase() ? -1 : 1; + } + return a.enabled ? -1 : 1; + }; } diff --git a/apps/red-ui/src/app/services/entity-services/watermarks-map.service.ts b/apps/red-ui/src/app/services/entity-services/watermarks-map.service.ts new file mode 100644 index 000000000..ed55b3931 --- /dev/null +++ b/apps/red-ui/src/app/services/entity-services/watermarks-map.service.ts @@ -0,0 +1,8 @@ +import { Injectable } from '@angular/core'; +import { DOSSIER_TEMPLATE_ID, IWatermark, Watermark } from '@red/domain'; +import { EntitiesMapService } from '@iqser/common-ui'; + +@Injectable({ providedIn: 'root' }) +export class WatermarksMapService extends EntitiesMapService { + protected readonly _primaryKey = DOSSIER_TEMPLATE_ID; +} diff --git a/libs/common-ui b/libs/common-ui index 345454be9..477e8ea5a 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit 345454be9d260a3fbb27e9e5b57902dda2e350e0 +Subproject commit 477e8ea5ae97244703dbfe04a4ee98daa8d5f185 diff --git a/libs/red-domain/src/lib/dossiers/dossier.model.ts b/libs/red-domain/src/lib/dossiers/dossier.model.ts index 78edaac1d..939cdb268 100644 --- a/libs/red-domain/src/lib/dossiers/dossier.model.ts +++ b/libs/red-domain/src/lib/dossiers/dossier.model.ts @@ -19,8 +19,8 @@ export class Dossier implements IDossier, IListable { readonly hardDeletedTime?: string; readonly softDeletedTime?: string; readonly startDate?: string; - readonly watermarkId: number; - readonly previewWatermarkId: number; + readonly watermarkId: string; + readonly previewWatermarkId: string; readonly archivedTime: string; readonly hasReviewers: boolean; readonly routerLink: string; diff --git a/libs/red-domain/src/lib/dossiers/dossier.request.ts b/libs/red-domain/src/lib/dossiers/dossier.request.ts index d31e01c90..2e65c95ba 100644 --- a/libs/red-domain/src/lib/dossiers/dossier.request.ts +++ b/libs/red-domain/src/lib/dossiers/dossier.request.ts @@ -56,9 +56,9 @@ export interface IDossierRequest { /** * Watermark id that will be applied to the redacted files. */ - readonly watermarkId?: number; + readonly watermarkId?: string; /** * Watermark id that will be applied to the preview files. */ - readonly previewWatermarkId?: number; + readonly previewWatermarkId?: string; } diff --git a/libs/red-domain/src/lib/dossiers/dossier.ts b/libs/red-domain/src/lib/dossiers/dossier.ts index 04c081e33..d8ebe113b 100644 --- a/libs/red-domain/src/lib/dossiers/dossier.ts +++ b/libs/red-domain/src/lib/dossiers/dossier.ts @@ -17,7 +17,7 @@ export interface IDossier { readonly reportTemplateIds: List; readonly softDeletedTime?: string; readonly startDate?: string; - readonly watermarkId: number; - readonly previewWatermarkId: number; + readonly watermarkId: string; + readonly previewWatermarkId: string; readonly archivedTime: string; } diff --git a/libs/red-domain/src/lib/watermarks/watermark.model.ts b/libs/red-domain/src/lib/watermarks/watermark.model.ts index 7cc6100dc..e63a8072c 100644 --- a/libs/red-domain/src/lib/watermarks/watermark.model.ts +++ b/libs/red-domain/src/lib/watermarks/watermark.model.ts @@ -1,10 +1,10 @@ import { IWatermark, WatermarkOrientation } from './watermark'; -import { IListable } from '@iqser/common-ui'; +import { Entity } from '@iqser/common-ui'; -export class Watermark implements IListable, IWatermark { +export class Watermark extends Entity { readonly id: string; readonly dossierTemplateId: string; - enabled: boolean; + readonly enabled: boolean; readonly fontSize: number; readonly fontType: string; readonly hexColor: string; @@ -16,12 +16,15 @@ export class Watermark implements IListable, IWatermark { readonly dateAdded?: string; readonly dateModified?: string; + readonly routerLink = undefined; + constructor(watermark: IWatermark) { - this.id = watermark.id; + super(watermark); + this.id = watermark.id.toString(); this.dossierTemplateId = watermark.dossierTemplateId; this.enabled = watermark.enabled; this.fontSize = watermark.fontSize; - this.fontType = watermark.fontType; + this.fontType = watermark.fontType === 'arial' ? 'helvetica' : watermark.fontType; this.hexColor = watermark.hexColor; this.opacity = watermark.opacity; this.orientation = watermark.orientation; From 97c6e331e244e845588d7d20f2c0ede44d7767d6 Mon Sep 17 00:00:00 2001 From: Valentin Mihai Date: Mon, 18 Jul 2022 16:34:55 +0300 Subject: [PATCH 08/25] RED-4590 - sonar fixes --- .../digital-signature-screen.component.scss | 2 +- .../combo-chart/combo-series-vertical.component.ts | 2 +- .../app/modules/dossier-overview/config.service.ts | 2 -- .../file-workload/file-workload.component.ts | 2 +- .../import-redactions-dialog.html | 14 -------------- .../services/annotation-actions.service.ts | 3 ++- .../services/manual-redaction.service.ts | 3 ++- .../modules/file-preview/services/stamp.service.ts | 2 +- .../dictionary-manager.component.html | 4 +--- .../dictionary-manager.component.scss | 3 --- .../src/app/modules/shared/pipes/name.pipe.ts | 2 +- .../trash/trash-screen/trash-screen.component.scss | 0 .../trash/trash-screen/trash-screen.component.ts | 1 - .../file-drop/file-drop.component.scss | 0 .../file-drop/file-drop.component.ts | 1 - .../src/app/utils/missing-translations-handler.ts | 1 - libs/common-ui | 2 +- 17 files changed, 11 insertions(+), 33 deletions(-) delete mode 100644 apps/red-ui/src/app/modules/trash/trash-screen/trash-screen.component.scss delete mode 100644 apps/red-ui/src/app/modules/upload-download/file-drop/file-drop.component.scss diff --git a/apps/red-ui/src/app/modules/admin/screens/digital-signature/digital-signature-screen.component.scss b/apps/red-ui/src/app/modules/admin/screens/digital-signature/digital-signature-screen.component.scss index 4526cdf81..d309c5343 100644 --- a/apps/red-ui/src/app/modules/admin/screens/digital-signature/digital-signature-screen.component.scss +++ b/apps/red-ui/src/app/modules/admin/screens/digital-signature/digital-signature-screen.component.scss @@ -18,5 +18,5 @@ form { /* target the input field inexplicably to throw Chrome's AI off. * feel free to use a more complicated selector */ input[name='keySecret']:not(:placeholder-shown) { - font-family: 'secret'; + font-family: 'secret', serif; } diff --git a/apps/red-ui/src/app/modules/admin/screens/license/combo-chart/combo-series-vertical.component.ts b/apps/red-ui/src/app/modules/admin/screens/license/combo-chart/combo-series-vertical.component.ts index ee6c92cb5..b8d9fe052 100644 --- a/apps/red-ui/src/app/modules/admin/screens/license/combo-chart/combo-series-vertical.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/license/combo-chart/combo-series-vertical.component.ts @@ -193,7 +193,7 @@ export class ComboSeriesVerticalComponent implements OnChanges { return item !== undefined; } - trackBy(index, bar): string { + trackBy(_index, bar): string { return bar.label; } } diff --git a/apps/red-ui/src/app/modules/dossier-overview/config.service.ts b/apps/red-ui/src/app/modules/dossier-overview/config.service.ts index f7431de14..bad395ced 100644 --- a/apps/red-ui/src/app/modules/dossier-overview/config.service.ts +++ b/apps/red-ui/src/app/modules/dossier-overview/config.service.ts @@ -181,7 +181,6 @@ export class ConfigService { ) { const allDistinctWorkflowFileStatuses = new Set(); const allDistinctPeople = new Set(); - const allDistinctAddedDates = new Set(); const allDistinctNeedsWork = new Set(); const allDistinctProcessingTypes = new Set(); @@ -192,7 +191,6 @@ export class ConfigService { entities.forEach(file => { allDistinctPeople.add(file.assignee); allDistinctWorkflowFileStatuses.add(file.workflowStatus); - allDistinctAddedDates.add(dayjs(file.added).format('DD/MM/YYYY')); if (file.analysisRequired) { allDistinctNeedsWork.add('analysis'); 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/dialogs/import-redactions-dialog/import-redactions-dialog.html b/apps/red-ui/src/app/modules/file-preview/dialogs/import-redactions-dialog/import-redactions-dialog.html index d027d32c3..a17b8e19f 100644 --- a/apps/red-ui/src/app/modules/file-preview/dialogs/import-redactions-dialog/import-redactions-dialog.html +++ b/apps/red-ui/src/app/modules/file-preview/dialogs/import-redactions-dialog/import-redactions-dialog.html @@ -4,20 +4,6 @@
- - - - - - - - - - - - - -
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/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 b1ad58a52..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 @@ -80,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/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 @@
-
- {{ 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/pipes/name.pipe.ts b/apps/red-ui/src/app/modules/shared/pipes/name.pipe.ts index aba1521d5..fd4c06bb3 100644 --- a/apps/red-ui/src/app/modules/shared/pipes/name.pipe.ts +++ b/apps/red-ui/src/app/modules/shared/pipes/name.pipe.ts @@ -10,7 +10,7 @@ function getInitials(name: string) { const splittedName = name.split(' ').filter(value => value !== ' ' && value !== ''); return splittedName - .filter((value, index) => index < 2) + .filter((_value, index) => index < 2) .map(str => str[0]) .join(''); } diff --git a/apps/red-ui/src/app/modules/trash/trash-screen/trash-screen.component.scss b/apps/red-ui/src/app/modules/trash/trash-screen/trash-screen.component.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/apps/red-ui/src/app/modules/trash/trash-screen/trash-screen.component.ts b/apps/red-ui/src/app/modules/trash/trash-screen/trash-screen.component.ts index a5b277f3e..2a4b16926 100644 --- a/apps/red-ui/src/app/modules/trash/trash-screen/trash-screen.component.ts +++ b/apps/red-ui/src/app/modules/trash/trash-screen/trash-screen.component.ts @@ -17,7 +17,6 @@ import { TrashDialogService } from '../services/trash-dialog.service'; @Component({ templateUrl: './trash-screen.component.html', - styleUrls: ['./trash-screen.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, providers: listingProvidersFactory({ entitiesService: TrashService, diff --git a/apps/red-ui/src/app/modules/upload-download/file-drop/file-drop.component.scss b/apps/red-ui/src/app/modules/upload-download/file-drop/file-drop.component.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/apps/red-ui/src/app/modules/upload-download/file-drop/file-drop.component.ts b/apps/red-ui/src/app/modules/upload-download/file-drop/file-drop.component.ts index 29b4dc609..aa5f4f56a 100644 --- a/apps/red-ui/src/app/modules/upload-download/file-drop/file-drop.component.ts +++ b/apps/red-ui/src/app/modules/upload-download/file-drop/file-drop.component.ts @@ -9,7 +9,6 @@ import { DOSSIER_ID } from '../../../tokens'; @Component({ templateUrl: './file-drop.component.html', - styleUrls: ['./file-drop.component.scss'], }) export class FileDropComponent { constructor( diff --git a/apps/red-ui/src/app/utils/missing-translations-handler.ts b/apps/red-ui/src/app/utils/missing-translations-handler.ts index 0e642ca73..ebeb631a9 100644 --- a/apps/red-ui/src/app/utils/missing-translations-handler.ts +++ b/apps/red-ui/src/app/utils/missing-translations-handler.ts @@ -3,7 +3,6 @@ import { MissingTranslationHandler, MissingTranslationHandlerParams } from '@ngx export class REDMissingTranslationHandler implements MissingTranslationHandler { handle(params: MissingTranslationHandlerParams): any { const missingKey = params.key; - // console.error('Missing translation: ' + missingKey); return `?${missingKey}?`; } } diff --git a/libs/common-ui b/libs/common-ui index 477e8ea5a..d3e45f5c9 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit 477e8ea5ae97244703dbfe04a4ee98daa8d5f185 +Subproject commit d3e45f5c9868f5ada0af084d93b42f9e92d68c5e From 16b781318c0b8fb4eff8275f8d8a3cbd7442a26f Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Mon, 18 Jul 2022 15:37:27 +0200 Subject: [PATCH 09/25] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3331 -> 3331 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7f12586e8..05b0328f4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.632.0", + "version": "3.633.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index b066e760af8b1217d11669d93d3cb6f35a575a3c..183bd7f4d604eae44c130c602ee915ea850a8df0 100644 GIT binary patch delta 3243 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 From 2a72f3a4d99c1722e34a014c2d6a6b49f4b6e80e Mon Sep 17 00:00:00 2001 From: Valentin Mihai Date: Mon, 18 Jul 2022 19:20:22 +0300 Subject: [PATCH 10/25] RED-4661 - RED_USER_ADMIN should not be able to delete RED_ADMINs --- .../user-listing-screen.component.html | 2 +- .../user-listing-screen.component.ts | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.html index aabf5e7e7..09310f37b 100644 --- a/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.html @@ -73,7 +73,7 @@ implement readonly translations = rolesTranslations; readonly iconButtonTypes = IconButtonTypes; readonly circleButtonTypes = CircleButtonTypes; - readonly currentUser = this.userService.currentUser; + readonly currentUser = this._userService.currentUser; readonly canDeleteSelected$ = this.#canDeleteSelected$; readonly tableHeaderLabel = _('user-listing.table-header.title'); readonly tableColumnConfigs: TableColumnConfig[] = [ @@ -58,14 +58,14 @@ export class UserListingScreenComponent extends ListingComponent implement action: (): void => this.openAddEditUserDialog(), type: IconButtonTypes.primary, icon: 'iqser:plus', - disabled$: this.userService.currentUser$.pipe(map(user => !user.isAdmin)), + disabled$: this._userService.currentUser$.pipe(map(user => !user.isAdmin)), }, ]; collapsedDetails = false; chartConfig: DonutChartConfig[] = []; constructor( - readonly userService: UserService, + private readonly _userService: UserService, private readonly _loadingService: LoadingService, private readonly _dialogService: AdminDialogService, private readonly _translateService: TranslateService, @@ -110,7 +110,7 @@ export class UserListingScreenComponent extends ListingComponent implement async toggleActive(user: User) { this._loadingService.start(); const requestBody = { ...user, roles: user.isActive ? [] : ['RED_USER'] }; - await firstValueFrom(this.userService.updateProfile(requestBody, user.id)); + await firstValueFrom(this._userService.updateProfile(requestBody, user.id)); await this.#loadData(); } @@ -119,7 +119,7 @@ export class UserListingScreenComponent extends ListingComponent implement } async #loadData() { - await firstValueFrom(this.userService.loadAll()); + await firstValueFrom(this._userService.loadAll()); this.#computeStats(); this._loadingService.stop(); } @@ -145,4 +145,10 @@ export class UserListingScreenComponent extends ListingComponent implement }; this.filterService.addFilterGroups([roleFiltersGroup]); } + + deleteDisabled(user: User): boolean { + const userAdmin = user.roles.includes('RED_ADMIN'); + const currentUserAdmin = this._userService.currentUser.roles.includes('RED_ADMIN'); + return user.id === this._userService.currentUser.id || (userAdmin && !currentUserAdmin); + } } From 408d40ad1609cf9093cb74a8aaefbad5dc67e4f2 Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Mon, 18 Jul 2022 18:22:50 +0200 Subject: [PATCH 11/25] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3331 -> 3331 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 05b0328f4..7130789bf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.633.0", + "version": "3.634.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index 183bd7f4d604eae44c130c602ee915ea850a8df0..442272af910ec78b2221850f16aab284ca49371c 100644 GIT binary patch delta 1001 zcmV?}_Zg`_ zmNqKWq&y;FUimf6ra54)XUL59GfJeCG+WKQ5`} z_J1z_mr;tVnlNxeOq z7~_aBju_*JF%BQ|%b3<>hVMVC?{Il}_55PV@xz&w5*(8X{o?|mw-(J~@@9*i=kS&i z3hQr?AK2xa=YJRP1~azXkR(M##LN&!x4Wun^4N-stf;o=sk`x9-x<$CsUxOvW>__S zOSWj`^9AImJGm^U2)<=BCsv2bX59|l<7!89ixnkI-e}*#g0W%`SR0W>-D^#76{P}^ zJ$_@|(U_$G%eGZuTZ9`{@b|K)DWe5^sYr$yeN9foUVpZ~RzgV@iGem+cl5AtGs!b%HNS98q?^MfP(2 zKwyim6VGrz=fO!FN8aDm^>dKQ$Bh)sum-m zrw8y{oPW-wyjTU>yTldA*>fZPQB&3YQ(4fQk;CNlY;+^6VbfQAJ3Oa2}&)$`)Dk{dOf_nfJ9OLEmlpVBXsU$p&(Fzf*{+fu|X< z$|lTcgt-VN$QbZdV(V@OX21aN1;Q;%oy-2oiGNGw#iG$9YAT193Bjy^kN`SCyugzT zha{7R=wQ`csrrn(VHOW3K=mThDufBlB!GcgY&B*ydr9+LYDj1LgoM5U$4-;`Zk&pP z0f@>E`LWjb9>+?WW~2QhF7e5YBEZg8YFJHKL9+}G3*|*lX6?#OdxC*Gu#po0vcG7Z zJAdYb=QASp4?}_Zg`_ zmNqKWq&y;FUimf6ra5digt`DIot<;CoMy{c%Y( zxBqkbzl>5`)r6tTzkL0LwYhwL@sjS#qGG72vS*hmV`aU)zJE@NoYl)+QS35;OIk0Z zVt)+^;r=?odz#&U_NS8MzxoR2^_DW6E$((HducCV8$Y)fzW5u6zbo-~E&gucuOr4d zVvHlkIAV+=#yEV;FJoGl8NUClzQg6^)$@xb#}8*#N^ndn^p6XK-dZ$|$(t>5p2J&8 zD6GFleqfhxo_}Aw8_d{lLy{B~5i>&^-R`QQ$zv-jvZC6er|!mceP=umrH+`wnPJuR zE!m=#&lixN?&PwZBKVfkoLC(yn{_*IkEQwr6L(-^ffsRdw<#fS_vgtELM`M!1nxv0}YFc z^AS1a8&nq=jnUKCi-Q;+I;{%Fw5fse7B2&zlO%Z{F54|ALPXLc>jYnvIHK%+i|pn4 zfxs4zTY0E0nqD|kFEkx+Hgg0!W`2p|nC3eG-~zv$^(-hM%iGDl{Ba1PY8c^oRV_wB zPY>X^IDefx{ql%Cm;XFpqlr6I6`|V1=GVg0mg1+1G!MwKzk`3hUey0#s15Yzz zl}(t@2y+okkTKw^#Ma#m%zy#j3xr#kI+y*E6MvV=i$$YJ)Km^H6M|U-ApvxPc!4Jw z4oM~r(ZQ;@QuP^m!z><7fa*o0RR|N9NdN=0*lNsZ_LAng)R4~f2?>1zj-4j=-8dBo z0}z!T@?)*W7Rrm9%-WTm_5=fWU?V30WPi~* zcYn+W&u2vHA4W3DGP0OG6|7k#zOW){=MF{n2s99W6e8GY#~+1HYp))Mm16V8HdgGa zm_$W|TdNMLKq_vG9)kIVR21{)Ze|8H-bz}VnM*g>c(3-G>_O^~Q4NycdzIPqw+XFk zW<@ELo>ntM_QMDRa2Ym18^v|=>C-i|GgQWUq_HwY8m|BFr3`9!Sn%VhUFst+Rr&nw z0X$V>b(sis=I{epsW6V_DXAzM@vi?4&g%M8^or&gp{&Vw=+o^fidpYv XF8`iD3VX9e1h)tXmuIjp08jt`v|#Al From 5f883941ccb6f18b11d74507d4f6f1ebc9396ff0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Mon, 18 Jul 2022 20:38:25 +0300 Subject: [PATCH 12/25] RED-4639: Refactor colors - refresh after changes --- .../src/app/guards/dossier-files-guard.ts | 4 ++ .../file-workload.component.html | 27 +++++++--- .../file-workload/file-workload.component.ts | 49 +++++++++---------- .../dossier-overview/config.service.ts | 2 +- .../dossier-workload-column.component.html | 6 +-- .../dossier-workload-column.component.ts | 33 +++++++++---- .../dossiers-listing/config.service.ts | 19 +++++-- .../dossiers-listing-screen.component.ts | 6 ++- .../services/annotation-processing.service.ts | 7 +-- .../services/file-data.service.ts | 8 ++- .../services/file-preview-state.service.ts | 8 +-- .../edit-dossier-dictionary.component.ts | 2 +- .../type-filter/type-filter.component.html | 4 +- .../type-filter/type-filter.component.ts | 3 -- .../entity-services/default-colors.service.ts | 7 +++ .../entity-services/dictionary.service.ts | 11 +++-- .../dossier-dictionaries-map.service.ts | 8 +++ .../src/lib/dictionaries/dictionary.model.ts | 2 - .../src/lib/dictionaries/dictionary.ts | 1 - 19 files changed, 136 insertions(+), 71 deletions(-) create mode 100644 apps/red-ui/src/app/services/entity-services/dossier-dictionaries-map.service.ts diff --git a/apps/red-ui/src/app/guards/dossier-files-guard.ts b/apps/red-ui/src/app/guards/dossier-files-guard.ts index 2b065449e..6a035632a 100644 --- a/apps/red-ui/src/app/guards/dossier-files-guard.ts +++ b/apps/red-ui/src/app/guards/dossier-files-guard.ts @@ -5,6 +5,7 @@ import { FilesService } from '@services/files/files.service'; import { firstValueFrom } from 'rxjs'; import { DOSSIER_ID, DOSSIER_TEMPLATE_ID } from '@red/domain'; import { DossiersService } from '@services/dossiers/dossiers.service'; +import { DictionaryService } from '@services/entity-services/dictionary.service'; @Injectable({ providedIn: 'root' }) export class DossierFilesGuard implements CanActivate { @@ -12,6 +13,7 @@ export class DossierFilesGuard implements CanActivate { private readonly _injector: Injector, private readonly _filesMapService: FilesMapService, private readonly _filesService: FilesService, + private readonly _dictionaryService: DictionaryService, private readonly _router: Router, ) {} @@ -21,6 +23,8 @@ export class DossierFilesGuard implements CanActivate { const token: ProviderToken = route.data.dossiersService; const dossiersService: DossiersService = this._injector.get(token); + await firstValueFrom(this._dictionaryService.loadDossierDictionary(dossierTemplateId, dossierId)); + if (!dossiersService.has(dossierId)) { await this._router.navigate(['/main', dossierTemplateId]); return false; diff --git a/apps/red-ui/src/app/modules/dossier-overview/components/table-item/file-workload/file-workload.component.html b/apps/red-ui/src/app/modules/dossier-overview/components/table-item/file-workload/file-workload.component.html index d53cd243f..72230dec4 100644 --- a/apps/red-ui/src/app/modules/dossier-overview/components/table-item/file-workload/file-workload.component.html +++ b/apps/red-ui/src/app/modules/dossier-overview/components/table-item/file-workload/file-workload.component.html @@ -1,14 +1,29 @@
- + - - - - + + + +
diff --git a/apps/red-ui/src/app/modules/dossier-overview/components/table-item/file-workload/file-workload.component.ts b/apps/red-ui/src/app/modules/dossier-overview/components/table-item/file-workload/file-workload.component.ts index 8e0f9cc1a..aba3ac2d1 100644 --- a/apps/red-ui/src/app/modules/dossier-overview/components/table-item/file-workload/file-workload.component.ts +++ b/apps/red-ui/src/app/modules/dossier-overview/components/table-item/file-workload/file-workload.component.ts @@ -1,8 +1,9 @@ -import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; +import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core'; import { annotationDefaultColorConfig, DefaultBasedColorType, File } from '@red/domain'; import { UserService } from '@services/user.service'; import { DossiersService } from '@services/dossiers/dossiers.service'; import { DefaultColorsService } from '@services/entity-services/default-colors.service'; +import { Observable } from 'rxjs'; @Component({ selector: 'redaction-file-workload', @@ -10,41 +11,35 @@ import { DefaultColorsService } from '@services/entity-services/default-colors.s styleUrls: ['./file-workload.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, }) -export class FileWorkloadComponent { +export class FileWorkloadComponent implements OnInit { @Input() file: File; + suggestionColor$: Observable; + imageColor$: Observable; + updatedColor$: Observable; + analysisColor$: Observable; + hintColor$: Observable; + redactionColor$: Observable; + + #dossierTemplateId: string; + constructor( readonly userService: UserService, private readonly _defaultColorsService: DefaultColorsService, private readonly _dossiersService: DossiersService, ) {} - get suggestionColor() { - return this._getDefaultColor('suggestion'); + ngOnInit() { + this.#dossierTemplateId = this._dossiersService.find(this.file.dossierId).dossierTemplateId; + this.suggestionColor$ = this.#getDefaultColor$('suggestion'); + this.imageColor$ = this.#getDefaultColor$('recommendation'); + this.updatedColor$ = this.#getDefaultColor$('updated'); + this.analysisColor$ = this.#getDefaultColor$('analysis'); + this.hintColor$ = this.#getDefaultColor$('hint'); + this.redactionColor$ = this.#getDefaultColor$('redaction'); } - get imageColor() { - return this._getDefaultColor('recommendation'); - } - - get updatedColor() { - return this._getDefaultColor('updated'); - } - - get analysisColor() { - return this._getDefaultColor('analysis'); - } - - get hintColor() { - return this._getDefaultColor('hint'); - } - - get redactionColor() { - return this._getDefaultColor('redaction'); - } - - private _getDefaultColor(type: DefaultBasedColorType) { - const dossierTemplateId = this._dossiersService.find(this.file.dossierId).dossierTemplateId; - return this._defaultColorsService.getColor(dossierTemplateId, annotationDefaultColorConfig[type]); + #getDefaultColor$(type: DefaultBasedColorType): Observable { + return this._defaultColorsService.getColor$(this.#dossierTemplateId, annotationDefaultColorConfig[type]); } } diff --git a/apps/red-ui/src/app/modules/dossier-overview/config.service.ts b/apps/red-ui/src/app/modules/dossier-overview/config.service.ts index bad395ced..41ad273fb 100644 --- a/apps/red-ui/src/app/modules/dossier-overview/config.service.ts +++ b/apps/red-ui/src/app/modules/dossier-overview/config.service.ts @@ -289,8 +289,8 @@ export class ConfigService { id: item, label: workloadTranslations[item], metadata: { - color: this._defaultColorsService.getColor(dossierTemplateId, annotationDefaultColorConfig[item]), shape: AnnotationShapeMap[item], + color$: this._defaultColorsService.getColor$(dossierTemplateId, annotationDefaultColorConfig[item]), }, }), ); diff --git a/apps/red-ui/src/app/modules/dossiers-listing/components/dossier-workload-column/dossier-workload-column.component.html b/apps/red-ui/src/app/modules/dossiers-listing/components/dossier-workload-column/dossier-workload-column.component.html index 361790fd9..7866b4a7d 100644 --- a/apps/red-ui/src/app/modules/dossiers-listing/components/dossier-workload-column/dossier-workload-column.component.html +++ b/apps/red-ui/src/app/modules/dossiers-listing/components/dossier-workload-column/dossier-workload-column.component.html @@ -1,21 +1,21 @@
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/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/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..6e029e6a5 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 @@ -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; @@ -56,7 +56,7 @@ 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, @@ -75,8 +75,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/shared-dossiers/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.ts b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.ts index 2e3fb7f4d..ab3266f45 100644 --- a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.ts +++ b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.ts @@ -83,6 +83,6 @@ export class EditDossierDictionaryComponent implements EditDossierSectionInterfa private async _updateDossierDictionary() { const { dossierId, dossierTemplateId } = this.dossier; - this.dossierDictionary = await firstValueFrom(this._dictionaryService.getDossierDictionary(dossierTemplateId, dossierId)); + this.dossierDictionary = await firstValueFrom(this._dictionaryService.loadDossierDictionary(dossierTemplateId, dossierId)); } } 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/services/entity-services/default-colors.service.ts b/apps/red-ui/src/app/services/entity-services/default-colors.service.ts index 89bf9d835..de87a6b04 100644 --- a/apps/red-ui/src/app/services/entity-services/default-colors.service.ts +++ b/apps/red-ui/src/app/services/entity-services/default-colors.service.ts @@ -15,6 +15,13 @@ export class DefaultColorsService extends EntitiesService { + return this.getEntityChanged$(dossierTemplateId).pipe( + map(c => c[colorType]), + map(c => c || fallback), + ); + } + loadAll(dossierTemplateIds: string[]): Observable { return forkJoin(dossierTemplateIds.map(id => super.getFor(id))).pipe( mapEach(defaultColors => new DefaultColors(defaultColors)), diff --git a/apps/red-ui/src/app/services/entity-services/dictionary.service.ts b/apps/red-ui/src/app/services/entity-services/dictionary.service.ts index aaf0ab737..1899e9db9 100644 --- a/apps/red-ui/src/app/services/entity-services/dictionary.service.ts +++ b/apps/red-ui/src/app/services/entity-services/dictionary.service.ts @@ -1,5 +1,5 @@ import { Injectable } from '@angular/core'; -import { firstValueFrom, forkJoin, Observable, throwError } from 'rxjs'; +import { forkJoin, Observable, throwError } from 'rxjs'; import { EntitiesService, List, QueryParam, RequiredParam, Toaster, Validate } from '@iqser/common-ui'; import { Dictionary, DictionaryEntryType, DictionaryEntryTypes, IDictionary, IUpdateDictionary, SuperTypes } from '@red/domain'; import { catchError, map, switchMap, tap } from 'rxjs/operators'; @@ -8,6 +8,7 @@ import { DossierTemplateStatsService } from './dossier-template-stats.service'; import { DictionariesMapService } from './dictionaries-map.service'; import { HttpErrorResponse, HttpStatusCode } from '@angular/common/http'; import { FALLBACK_COLOR } from '@utils/constants'; +import { DossierDictionariesMapService } from '@services/entity-services/dossier-dictionaries-map.service'; const MIN_WORD_LENGTH = 2; @@ -22,6 +23,7 @@ export class DictionaryService extends EntitiesService private readonly _toaster: Toaster, private readonly _dossierTemplateStatsService: DossierTemplateStatsService, private readonly _dictionariesMapService: DictionariesMapService, + private readonly _dossierDictionariesMapService: DossierDictionariesMapService, ) { super(); } @@ -144,7 +146,7 @@ export class DictionaryService extends EntitiesService async getDictionariesOptions(dossierTemplateId: string, dossierId: string): Promise { const possibleDictionaries: Dictionary[] = []; - const dossierDictionary: Dictionary = await firstValueFrom(this.getDossierDictionary(dossierTemplateId, dossierId)); + const dossierDictionary: Dictionary = this._dossierDictionariesMapService.get(dossierId, 'dossier_redaction'); for (const dictionary of this._dictionariesMapService.get(dossierTemplateId)) { if (!dictionary.virtual && dictionary.addToDictionaryAction) { @@ -161,7 +163,7 @@ export class DictionaryService extends EntitiesService return possibleDictionaries; } - getDossierDictionary(dossierTemplateId: string, dossierId: string): Observable { + loadDossierDictionary(dossierTemplateId: string, dossierId: string): Observable { return this.getForType(dossierTemplateId, 'dossier_redaction', dossierId).pipe( map( dictionary => @@ -170,6 +172,9 @@ export class DictionaryService extends EntitiesService type: 'dossier_redaction', }), ), + tap(dictionary => { + this._dossierDictionariesMapService.set(dossierId, [dictionary]); + }), ); } diff --git a/apps/red-ui/src/app/services/entity-services/dossier-dictionaries-map.service.ts b/apps/red-ui/src/app/services/entity-services/dossier-dictionaries-map.service.ts new file mode 100644 index 000000000..a4f605e87 --- /dev/null +++ b/apps/red-ui/src/app/services/entity-services/dossier-dictionaries-map.service.ts @@ -0,0 +1,8 @@ +import { Injectable } from '@angular/core'; +import { Dictionary, DOSSIER_ID, IDictionary } from '@red/domain'; +import { EntitiesMapService } from '@iqser/common-ui'; + +@Injectable({ providedIn: 'root' }) +export class DossierDictionariesMapService extends EntitiesMapService { + protected readonly _primaryKey = DOSSIER_ID; +} diff --git a/libs/red-domain/src/lib/dictionaries/dictionary.model.ts b/libs/red-domain/src/lib/dictionaries/dictionary.model.ts index 821bbf702..8c5e2e5c1 100644 --- a/libs/red-domain/src/lib/dictionaries/dictionary.model.ts +++ b/libs/red-domain/src/lib/dictionaries/dictionary.model.ts @@ -15,7 +15,6 @@ export class Dictionary extends Entity implements IDictionary { readonly rank?: number; readonly recommendation: boolean; readonly type: string; - readonly typeId?: string; readonly hasDictionary?: boolean; readonly systemManaged?: boolean; @@ -40,7 +39,6 @@ export class Dictionary extends Entity implements IDictionary { this.rank = entity.rank; this.recommendation = !!entity.recommendation; this.type = entity.type; - this.typeId = entity.typeId; this.hasDictionary = entity.hasDictionary; this.systemManaged = entity.systemManaged; } diff --git a/libs/red-domain/src/lib/dictionaries/dictionary.ts b/libs/red-domain/src/lib/dictionaries/dictionary.ts index 8cf003a69..bb525afe2 100644 --- a/libs/red-domain/src/lib/dictionaries/dictionary.ts +++ b/libs/red-domain/src/lib/dictionaries/dictionary.ts @@ -24,7 +24,6 @@ export interface IDictionary { * The nonnull entry type. */ readonly type: string; - readonly typeId?: string; /** * The list of dictionary entries of an entry type. */ From 759fba077a0cfb042d9ac15623e3566b6f000bcf Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Mon, 18 Jul 2022 19:43:04 +0200 Subject: [PATCH 13/25] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3331 -> 3331 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7130789bf..f3a012c1c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.634.0", + "version": "3.635.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index 442272af910ec78b2221850f16aab284ca49371c..0bb0cc17144b7dccdccfec78e3316a9512f6fb33 100644 GIT binary patch delta 3243 zcmV;c3{>-j8iN{;cz>M0_kt(3V+W4&1O-0`HiOpG3|9#K7)$*e+ftXme5u)eM(U5H z4G)*U=h?wo{y#=LD*uYaIAXGI8P)ZNt-%Gn@~7nQxvSMd{wvP``L6Aox~hMFpSc9}9(*4yjrq<_d+z1$VWE+e?4^)f2< z*PsyYuM@nd+5KmKDoOsUuW(*(DZ|;~ZkMu`_QJF6=k~%Ee*^J%CH}6(-wphA#2816 zal{x$jB&&mhmZMXOzSek_n*~wxV*f2ezD~E;mk@2j!A|7ae>fVi{>$TvqjExcuNU| z^|#0m?DEa?i+^{68QX10lAXN z19&b@XMa*&tb*-b;)>+#xsm>;scQbIENIS1WzYqiYlHY_&m&=*7Oy404GI*;ejEr$ z7cciDrWh4@c8}_)A|yvRkI^$_i>yArU>`&yHr@3wp}@9lwP1G&53DMZ!4(~MYU z6J|8RTm%zj4EQRsbvFYuV1V}m;TEROW&h;FrGN5b(P$DimBY(~VAeoL0G%LS;7Nu< zl1W2!uxhSUeMa6ei-!}SdJ$S%!y&@**d*c4enM!N48Z$O!=1U$o90 z^MAqf8Ik&jk&Lp8EM`vyYZi$wtccpVLs2~f4TK+s2sYaBN8!`jtH)ub*u1fg6}u`X zQBmR6s)H(!iW{ScU_K!g#r(OOnSqVBlGbMC(oHtrtNkW>kUC^kgXH&KW%m4SLaUlt zQA(w!)y$CnFv0*_hE32$aov3SbPer{v40+EtPGKc>py%cgW4Sy{5Wct`Up%_K7V@v zPt{mmCIX!~`~X%ejH7u%W7uy8aZsqIpIrYw{iX^!j26kS!pAWR|01)_a-D zzbCf6zU*fIt*CC3thgJ@btmU;f`0B_f!R$Bx!GG-9O4-rgf|7kv2S`1pOd^{Z+}U( zC;9vDxy+DNRz*Uy0Wg0KEdUHhX+@)y(VYpUU=m8=^-#WQqBLppTM>uo^H$bp#e6sgmsdcTq~(9Pda~57t>vt>gNeew{CiEQ578&psy= znIw8MElR%!_S>SaDWD6uFw(M*i;Oi_(_ng+j(*V2a0JIw@UZdI||2^p5n+lz02fj0z`Lq>-#R6Os>(6t(E*> zB3ylFNUHis&utMMt=bWqf=$i1T~(|vuPt&DUhQ!vaL%YU8#H;Z#|Uzr9;2R7CVG0# z@JVRXadNlO$`qdJtJFCyOTsjU@tB~Etfps6WwOEw za^R?H_F--G{fZVQMZrXHTLYWqo0@+Ll{hXFE$we19D}a+jY713qYTEiIpF}&sYLOx zlf*_^`5o_O2U(`YAvgcji~w}#JJ`UJZtOBD%6n0(F~d6at5v#yCx4zGx3Gxs#dpi1 z-_{_YvZ6pb#7|;NhFK$W%0aJH?Lr{VwHL_s#2?=@%H1M}PrxCnoj8hwtsH`GzqgPb z*AqY&$Z;HX&|%AM(OpWJ27w2l94?GeKSM-_!;HX;r#Ifs2HR?9Ua)?E#rTiK_cu3i zHwjKcZE*&H`pyzD@PAfSU3~zbYbQ>kvE&X{Iq!(W*wzpbR2Ya6WEiN)TE!ZTuL;;4 z%=o?p7UE~Fy8;%v8_q{yroFtmQityEN8ba~K)F^)oS z)D>*i0#UrWuPaW|;_7eK z1Kx-(S9C=;hAu9>AiP<};i!v?$Xol-#u;^S!A3#s5p7mU^V^myjvK_95~U<7_eD$& zwnlJY9irM*uYa|x{hAFp_Plqh&f3_08bI$veZ5=EY)`DV=np)kU7#A=I_$8DCel4} zGh5S`gm|*>eArlZR6(KuL%Y7$xO&ztNAt2_wN*5XJB}-@4|Ct!L%z~sNkh(3DmVwh z>(>>G<${B?e-WpM2@r$u>`);UV( zf08;S5`ULcKY_^cqq5H38-d`6p9@1|I;87^0qKQHnNMmt4?pBL0(rr!bsdC`hZ#xK zhMlO3DhWver$9|z?3`8g{hwA^L)W!j&j2^|RJO1xhJQhEDgI7wAI{{Xz`ZDm-z zvFa4Z#oggB=wRWwjhHw#3lv=W`hB7FkoXPC5q}ykc2CH}bv|OWlbb}$|<+a(7 z#(#OXQH{IL1Kvp>?M_{2ul%H8#_@^i0?*1&k8y64V{K6jN{R{)Ys!*T5w6J)yV*4) z<#g9jQ_?8xj~54YDoTG$#UF61LoNSADT!_~S~FfVBEY5!bE0QnFA-9eka(sH`~dJJ5A%B!i>;v(%IuRQ6OqZ5j3ATE5nYdmdiIK%( zNz>u2C++Y_Qh4|PgzB~Cp{91n`BMA)(vv-X#{%?Lah8(*5zeA#f&B@x#65s3l>n4_ z68ZM2N4$NNNVhLsGO0JJU+G(F(%2gdXd{tsbpE2U!>-hjD;3;IiCU{R`XUqlPk*(9 zrEaF&-g+*@iGbk})}&qxH}$&?M*Cxlnw-AkAwcZn6XT36@Zgy|u`Uve-IwHQ9J2QH zZgC%~2)_X$r;oPPL7lZeR`u@;n-YvbV#)U!X9~YyBI;AVy@0r5fmQ)8PC5S7Xfcpn zsWIPRlFiDko+0q7rZgI$C!AHzb$?*U0x*%_m~qwtZE~r{F*4g3JtdJn9yV3V+5`7j^jLeHMMt zyh|&CIWupj4A6P>^^+mI#{}oP_H-9X26P_3E%E?HIwpahWMprB%c_V-41d}!vcF}` zNO|Jc`9x^wm;#b9?{xO}C5~?!Qun!qG5P98yg)1-xk7P-Y74J|4C6-}?9yZz|Mf;Q zp>Oy;m-(#Bk6MR}whR^{tcPqoeD6efIMW*M{3A#2lK8Ijd&&Q|0^v{v7JL zg2L2Uv=7VvDRui#-4hSV!sIfc30lemApDl!K* zvv@o)^uub#lfXWtR6LUB(8)aT|B$>JtHTgtcX$0H#6W|nXwwj)Hy5JssSp)qe6(vF z>GCLUd|2KgA&$e(V;)URF}uaCb9OF12_Pw=X6iD=PyPSJ&h6aJ?IhgJ?cC1o+|KRX d&h6aJ?cC1o+|KRX&h3Av{THW4*+T$O0087lVVnQ} delta 3243 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 Date: Mon, 18 Jul 2022 20:49:14 +0300 Subject: [PATCH 14/25] RED-4650: Dossier dictionary dialog updates --- .../dictionary-details-dialog.component.html | 2 +- .../components/add-edit-entity/add-edit-entity.component.ts | 3 +-- apps/red-ui/src/assets/i18n/en.json | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) 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 @@
-
{{ 'dictionary-details.title' | translate }}
+
{{ 'dictionary-details.title' | translate: { readOnly: data.readOnly } }}
Date: Mon, 18 Jul 2022 19:52:29 +0200 Subject: [PATCH 15/25] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3331 -> 3330 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f3a012c1c..1c9940ae2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.635.0", + "version": "3.636.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index 0bb0cc17144b7dccdccfec78e3316a9512f6fb33..a040a53f45fd4852647a4cf3d961d8895b4c343f 100644 GIT binary patch delta 3241 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 bZs&Gx=XP%Ac5dhPztjE;wP~AW08jt`2`NXQ delta 3242 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 Date: Tue, 19 Jul 2022 11:27:37 +0300 Subject: [PATCH 16/25] RED-3800: ids for tests --- .../user-management/user-management.component.html | 4 +++- .../assign-user-dropdown/assign-user-dropdown.component.html | 5 +++-- apps/red-ui/src/assets/config/config.json | 4 ++-- 3 files changed, 8 insertions(+), 5 deletions(-) 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" >
- + - + @@ -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/assets/config/config.json b/apps/red-ui/src/assets/config/config.json index 8e7d077a8..62578148a 100644 --- a/apps/red-ui/src/assets/config/config.json +++ b/apps/red-ui/src/assets/config/config.json @@ -1,7 +1,7 @@ { "ADMIN_CONTACT_NAME": null, "ADMIN_CONTACT_URL": null, - "API_URL": "https://dev-05.iqser.cloud/redaction-gateway-v1", + "API_URL": "https://dev-08.iqser.cloud/redaction-gateway-v1", "APP_NAME": "RedactManager", "AUTO_READ_TIME": 3, "BACKEND_APP_VERSION": "4.4.40", @@ -11,7 +11,7 @@ "MAX_RETRIES_ON_SERVER_ERROR": 3, "OAUTH_CLIENT_ID": "redaction", "OAUTH_IDP_HINT": null, - "OAUTH_URL": "https://dev-05.iqser.cloud/auth/realms/redaction", + "OAUTH_URL": "https://dev-08.iqser.cloud/auth/realms/redaction", "RECENT_PERIOD_IN_HOURS": 24, "SELECTION_MODE": "structural", "MANUAL_BASE_URL": "https://docs.redactmanager.com/preview" From b6aa7d0f46c89522d2f254d4bbd4e02474eefeb9 Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Tue, 19 Jul 2022 10:30:12 +0200 Subject: [PATCH 17/25] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3330 -> 3328 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1c9940ae2..dc6622075 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.636.0", + "version": "3.637.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index a040a53f45fd4852647a4cf3d961d8895b4c343f..c4eff61145cd103d2345f1b49b5707011f17ef9a 100644 GIT binary patch delta 3281 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 delta 3260 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 From f9cf3c2662feb5183e2f8b81b77fdbe5045917fc Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Tue, 19 Jul 2022 11:45:56 +0300 Subject: [PATCH 18/25] RED-4683: fix --- .../red-ui/src/app/modules/dossier-overview/config.service.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/red-ui/src/app/modules/dossier-overview/config.service.ts b/apps/red-ui/src/app/modules/dossier-overview/config.service.ts index 41ad273fb..e3eb608f4 100644 --- a/apps/red-ui/src/app/modules/dossier-overview/config.service.ts +++ b/apps/red-ui/src/app/modules/dossier-overview/config.service.ts @@ -323,8 +323,8 @@ export class ConfigService { filters: [...filterValue].map( (value: string) => new NestedFilter({ - id: value, - label: value === undefined ? this._translateService.instant('filters.empty') : value, + id: value ?? 'empty', + label: value ?? this._translateService.instant('filters.empty'), }), ), checker: (input: File, filter: INestedFilter) => filter.id === input.fileAttributes.attributeIdToValue[id], From ca37e50d4e9fb9105539b569cfbea5d4058504e6 Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Tue, 19 Jul 2022 10:48:24 +0200 Subject: [PATCH 19/25] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3328 -> 3331 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index dc6622075..6b245f73d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.637.0", + "version": "3.638.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index c4eff61145cd103d2345f1b49b5707011f17ef9a..148c0e6687b2b75487f737a99b976f385f62aefb 100644 GIT binary patch delta 3197 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 delta 3196 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 From 2313d98cb66fb12611bc86bfd781b1609631652c Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Tue, 19 Jul 2022 12:05:31 +0300 Subject: [PATCH 20/25] RED-4638: rename document status to document state --- .../file-preview/services/file-preview-state.service.ts | 7 ++----- apps/red-ui/src/assets/i18n/en.json | 4 ++-- 2 files changed, 4 insertions(+), 7 deletions(-) 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 6e029e6a5..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'; @@ -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; @@ -62,9 +62,6 @@ export class FilePreviewStateService { 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( diff --git a/apps/red-ui/src/assets/i18n/en.json b/apps/red-ui/src/assets/i18n/en.json index 7cd5252d6..876f57998 100644 --- a/apps/red-ui/src/assets/i18n/en.json +++ b/apps/red-ui/src/assets/i18n/en.json @@ -799,7 +799,7 @@ "total-people": "Total users" }, "table-col-names": { - "documents-status": "Documents Status", + "documents-status": "Documents State", "dossier-state": "Dossier State", "last-modified": "Last modified", "name": "Name", @@ -1413,7 +1413,7 @@ }, "filters": { "assigned-people": "Assignee(s)", - "documents-status": "Documents Status", + "documents-status": "Documents State", "dossier-state": "Dossier State", "dossier-templates": "Dossier Templates", "empty": "Empty", From c313185a362d7f471ec32b0874b3bfd676e99a74 Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Tue, 19 Jul 2022 11:08:06 +0200 Subject: [PATCH 21/25] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3331 -> 3331 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6b245f73d..48dc373cb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.638.0", + "version": "3.639.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index 148c0e6687b2b75487f737a99b976f385f62aefb..bd31d5d82deb68d89030df164f17d5e8502852ad 100644 GIT binary patch delta 3243 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 delta 3243 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 Date: Tue, 19 Jul 2022 13:30:49 +0300 Subject: [PATCH 22/25] RED-4661 - RED_USER_ADMIN should not be able to delete RED_ADMINs --- .../user-details/user-details.component.html | 2 +- .../user-details/user-details.component.ts | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-user-dialog/user-details/user-details.component.html b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-user-dialog/user-details/user-details.component.html index 2eeaa6155..24bb4ea3d 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-user-dialog/user-details/user-details.component.html +++ b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-user-dialog/user-details/user-details.component.html @@ -52,7 +52,7 @@ value || (role === this._ROLE_REQUIREMENTS[key] && this.user?.roles.includes(key)), false, @@ -86,7 +86,7 @@ export class UserDetailsComponent extends BaseFormComponent implements OnChanges const userData: IProfileUpdateRequest = { ...this.form.getRawValue(), roles: this.activeRoles }; if (!this.user) { - await firstValueFrom(this.userService.create(userData)) + await firstValueFrom(this._userService.create(userData)) .then(() => { this.closeDialog.emit(true); }) @@ -99,7 +99,7 @@ export class UserDetailsComponent extends BaseFormComponent implements OnChanges this._loadingService.stop(); }); } else { - await firstValueFrom(this.userService.updateProfile(userData, this.user.id)); + await firstValueFrom(this._userService.updateProfile(userData, this.user.id)); this.closeDialog.emit(true); } } @@ -119,6 +119,12 @@ export class UserDetailsComponent extends BaseFormComponent implements OnChanges } } + disabledDelete(user: User): boolean { + const userAdmin = user.roles.includes('RED_ADMIN'); + const currentUserAdmin = this._userService.currentUser.roles.includes('RED_ADMIN'); + return user.id === this._userService.currentUser.id || (userAdmin && !currentUserAdmin); + } + private _getForm(): UntypedFormGroup { return this._formBuilder.group({ firstName: [this.user?.firstName, Validators.required], From d35c45dd4e0a6aeb3b572c4c989d25a190192fa8 Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Tue, 19 Jul 2022 12:33:16 +0200 Subject: [PATCH 23/25] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3331 -> 3331 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 48dc373cb..3d4e383d6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.639.0", + "version": "3.640.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index bd31d5d82deb68d89030df164f17d5e8502852ad..b472a2558b43f458e2d584d892e7e473e691aa0e 100644 GIT binary patch delta 3244 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 From 666c404fc74f52ff9785de85d04f67ce527f9b3c Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Tue, 19 Jul 2022 13:43:17 +0300 Subject: [PATCH 24/25] RED-4638: fix again --- .../src/app/modules/dossier-overview/config.service.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/red-ui/src/app/modules/dossier-overview/config.service.ts b/apps/red-ui/src/app/modules/dossier-overview/config.service.ts index e3eb608f4..e7d7116f8 100644 --- a/apps/red-ui/src/app/modules/dossier-overview/config.service.ts +++ b/apps/red-ui/src/app/modules/dossier-overview/config.service.ts @@ -321,13 +321,14 @@ export class ConfigService { label: key, icon: 'red:template', filters: [...filterValue].map( - (value: string) => + (value?: string) => new NestedFilter({ + // id shouldn't be undefined to work correctly id: value ?? 'empty', label: value ?? this._translateService.instant('filters.empty'), }), ), - checker: (input: File, filter: INestedFilter) => filter.id === input.fileAttributes.attributeIdToValue[id], + checker: (input: File, filter: INestedFilter) => filter.id === (input.fileAttributes.attributeIdToValue[id] ?? 'empty'), }); }); From 756f8542c246421173a817a2f93013f52f1c0932 Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Tue, 19 Jul 2022 12:45:44 +0200 Subject: [PATCH 25/25] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3331 -> 3330 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3d4e383d6..b6b298e27 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.640.0", + "version": "3.641.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index b472a2558b43f458e2d584d892e7e473e691aa0e..4b520c951b31dfe7e598790e4d3174578e5b01f9 100644 GIT binary patch delta 3242 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