From 14619a59563b91f1637a44ca3442618bab686163 Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Mon, 7 Feb 2022 12:54:03 +0200 Subject: [PATCH 01/24] show engine icons when not multi select --- .../dossier-templates-listing-screen.component.html | 2 +- .../annotation-details.component.html | 10 ++++++++-- .../annotation-details/annotation-details.component.ts | 3 ++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/dossier-templates-listing-screen/dossier-templates-listing-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/dossier-templates-listing-screen/dossier-templates-listing-screen.component.html index 3ee132dc1..40f2241dd 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/dossier-templates-listing-screen/dossier-templates-listing-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/dossier-templates-listing-screen/dossier-templates-listing-screen.component.html @@ -1,6 +1,6 @@ diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/annotation-details/annotation-details.component.html b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/annotation-details/annotation-details.component.html index 3c16dd91c..1d611f7f2 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/annotation-details/annotation-details.component.html +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/annotation-details/annotation-details.component.html @@ -1,8 +1,14 @@ -
+
- +
diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/annotation-details/annotation-details.component.ts b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/annotation-details/annotation-details.component.ts index b293a2d58..faecb80ad 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/annotation-details/annotation-details.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/annotation-details/annotation-details.component.ts @@ -3,6 +3,7 @@ import { AnnotationWrapper } from '@models/file/annotation.wrapper'; import { TranslateService } from '@ngx-translate/core'; import { annotationChangesTranslations } from '../../../../../../translations/annotation-changes-translations'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; +import { MultiSelectService } from '../../services/multi-select.service'; interface Engine { readonly icon: string; @@ -35,7 +36,7 @@ export class AnnotationDetailsComponent implements OnChanges { hasChangesToShow: boolean; changesTooltip: string; - constructor(private readonly _translateService: TranslateService) {} + constructor(private readonly _translateService: TranslateService, readonly multiSelectService: MultiSelectService) {} ngOnChanges(changes: SimpleChanges) { if (changes.annotation) { From 49628f9a40c51bc258b990c27d3be65a27d1d178 Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Mon, 7 Feb 2022 11:57:57 +0100 Subject: [PATCH 02/24] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3213 -> 3212 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index da8c108e2..a644e6439 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.205.0", + "version": "3.206.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index 0b87eb3741a08c7d3f9109236327725c54b322d3..0daeb150ec0e28d3e93b5286901495281af82e30 100644 GIT binary patch delta 2903 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 Date: Mon, 7 Feb 2022 13:17:56 +0200 Subject: [PATCH 03/24] Rules module --- .../app/modules/admin/admin-routing.module.ts | 4 +-- .../src/app/modules/admin/admin.module.ts | 2 -- .../screens/rules/rules-screen.component.html | 35 ------------------- .../screens/rules/rules-screen.component.scss | 10 ------ .../rules-screen/rules-screen.component.html | 11 ++++++ .../rules-screen/rules-screen.component.scss | 10 ++++++ .../rules-screen.component.ts | 2 +- .../admin/screens/rules/rules.module.ts | 14 ++++++++ 8 files changed, 38 insertions(+), 50 deletions(-) delete mode 100644 apps/red-ui/src/app/modules/admin/screens/rules/rules-screen.component.html delete mode 100644 apps/red-ui/src/app/modules/admin/screens/rules/rules-screen.component.scss create mode 100644 apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.html create mode 100644 apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.scss rename apps/red-ui/src/app/modules/admin/screens/rules/{ => rules-screen}/rules-screen.component.ts (98%) create mode 100644 apps/red-ui/src/app/modules/admin/screens/rules/rules.module.ts 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 4593549ea..70483cc45 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 @@ -6,7 +6,6 @@ import { AppStateGuard } from '@state/app-state.guard'; import { DictionaryListingScreenComponent } from './screens/dictionary-listing/dictionary-listing-screen.component'; import { DictionaryOverviewScreenComponent } from './screens/dictionary-overview/dictionary-overview-screen.component'; import { PendingChangesGuard } from '@guards/can-deactivate.guard'; -import { RulesScreenComponent } from './screens/rules/rules-screen.component'; import { FileAttributesListingScreenComponent } from './screens/file-attributes-listing/file-attributes-listing-screen.component'; import { WatermarkScreenComponent } from './screens/watermark/watermark-screen.component'; import { DefaultColorsScreenComponent } from './screens/default-colors/default-colors-screen.component'; @@ -72,12 +71,13 @@ const routes: Routes = [ }, { path: 'rules', - component: RulesScreenComponent, + component: BaseDossierTemplateScreenComponent, canActivate: [CompositeRouteGuard], canDeactivate: [PendingChangesGuard], data: { routeGuards: [AuthGuard, RedRoleGuard, AppStateGuard], }, + loadChildren: () => import('./screens/rules/rules.module').then(m => m.RulesModule), }, { path: 'file-attributes', diff --git a/apps/red-ui/src/app/modules/admin/admin.module.ts b/apps/red-ui/src/app/modules/admin/admin.module.ts index aee060360..b8a1d2616 100644 --- a/apps/red-ui/src/app/modules/admin/admin.module.ts +++ b/apps/red-ui/src/app/modules/admin/admin.module.ts @@ -1,7 +1,6 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { AdminRoutingModule } from './admin-routing.module'; -import { RulesScreenComponent } from './screens/rules/rules-screen.component'; import { SharedModule } from '@shared/shared.module'; import { AuditScreenComponent } from './screens/audit/audit-screen.component'; import { DefaultColorsScreenComponent } from './screens/default-colors/default-colors-screen.component'; @@ -66,7 +65,6 @@ const dialogs = [ ]; const screens = [ - RulesScreenComponent, AuditScreenComponent, DefaultColorsScreenComponent, DictionaryListingScreenComponent, diff --git a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen.component.html deleted file mode 100644 index 8f63c3a6d..000000000 --- a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen.component.html +++ /dev/null @@ -1,35 +0,0 @@ -
- - -
-
- - - -
- -
-
- -
-
-
-
diff --git a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen.component.scss b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen.component.scss deleted file mode 100644 index 2a5860784..000000000 --- a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen.component.scss +++ /dev/null @@ -1,10 +0,0 @@ -.editor-container { - width: 100%; - padding-top: 15px; - padding-left: 15px; -} - -ngx-monaco-editor { - height: 100%; - width: 100%; -} diff --git a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.html new file mode 100644 index 000000000..91cb6eac3 --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.html @@ -0,0 +1,11 @@ + + +
+ +
+
diff --git a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.scss b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.scss new file mode 100644 index 000000000..72374e679 --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.scss @@ -0,0 +1,10 @@ +:host { + flex-grow: 1; + overflow: hidden; + padding: 15px 0 0 15px; +} + +ngx-monaco-editor { + height: 100%; + width: 100%; +} diff --git a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.ts similarity index 98% rename from apps/red-ui/src/app/modules/admin/screens/rules/rules-screen.component.ts rename to apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.ts index 56592d0f0..17daa1aa7 100644 --- a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.ts @@ -5,7 +5,7 @@ import { TranslateService } from '@ngx-translate/core'; import { saveAs } from 'file-saver'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service'; -import { RulesService } from '../../services/rules.service'; +import { RulesService } from '../../../services/rules.service'; import { firstValueFrom } from 'rxjs'; import ICodeEditor = monaco.editor.ICodeEditor; import IModelDeltaDecoration = monaco.editor.IModelDeltaDecoration; diff --git a/apps/red-ui/src/app/modules/admin/screens/rules/rules.module.ts b/apps/red-ui/src/app/modules/admin/screens/rules/rules.module.ts new file mode 100644 index 000000000..e2824d79e --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/screens/rules/rules.module.ts @@ -0,0 +1,14 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { RouterModule } from '@angular/router'; +import { SharedModule } from '../../../shared/shared.module'; +import { RulesScreenComponent } from './rules-screen/rules-screen.component'; +import { MonacoEditorModule } from '@materia-ui/ngx-monaco-editor'; + +const routes = [{ path: '', component: RulesScreenComponent }]; + +@NgModule({ + declarations: [RulesScreenComponent], + imports: [RouterModule.forChild(routes), CommonModule, SharedModule, MonacoEditorModule], +}) +export class RulesModule {} From 7d818cb9964ae8c99654f5535571e81fb4f121dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Mon, 7 Feb 2022 14:51:48 +0200 Subject: [PATCH 04/24] Watermark module --- .../app/modules/admin/admin-routing.module.ts | 4 +- .../src/app/modules/admin/admin.module.ts | 2 - .../watermark/watermark-screen.component.html | 127 ------------------ .../watermark-screen.component.html | 104 ++++++++++++++ .../watermark-screen.component.scss | 8 +- .../watermark-screen.component.ts | 2 +- .../screens/watermark/watermark.module.ts | 14 ++ 7 files changed, 128 insertions(+), 133 deletions(-) delete mode 100644 apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen.component.html create mode 100644 apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen/watermark-screen.component.html rename apps/red-ui/src/app/modules/admin/screens/watermark/{ => watermark-screen}/watermark-screen.component.scss (93%) rename apps/red-ui/src/app/modules/admin/screens/watermark/{ => watermark-screen}/watermark-screen.component.ts (99%) create mode 100644 apps/red-ui/src/app/modules/admin/screens/watermark/watermark.module.ts 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 70483cc45..0db6c0412 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 @@ -7,7 +7,6 @@ import { DictionaryListingScreenComponent } from './screens/dictionary-listing/d import { DictionaryOverviewScreenComponent } from './screens/dictionary-overview/dictionary-overview-screen.component'; import { PendingChangesGuard } from '@guards/can-deactivate.guard'; import { FileAttributesListingScreenComponent } from './screens/file-attributes-listing/file-attributes-listing-screen.component'; -import { WatermarkScreenComponent } from './screens/watermark/watermark-screen.component'; import { DefaultColorsScreenComponent } from './screens/default-colors/default-colors-screen.component'; import { UserListingScreenComponent } from './screens/user-listing/user-listing-screen.component'; import { LicenseInformationScreenComponent } from './screens/license-information/license-information-screen.component'; @@ -89,11 +88,12 @@ const routes: Routes = [ }, { path: 'watermark', - component: WatermarkScreenComponent, + component: BaseDossierTemplateScreenComponent, canActivate: [CompositeRouteGuard], data: { routeGuards: [AuthGuard, RedRoleGuard, AppStateGuard], }, + loadChildren: () => import('./screens/watermark/watermark.module').then(m => m.WatermarkModule), }, { path: 'reports', diff --git a/apps/red-ui/src/app/modules/admin/admin.module.ts b/apps/red-ui/src/app/modules/admin/admin.module.ts index b8a1d2616..a3092e347 100644 --- a/apps/red-ui/src/app/modules/admin/admin.module.ts +++ b/apps/red-ui/src/app/modules/admin/admin.module.ts @@ -10,7 +10,6 @@ import { DigitalSignatureScreenComponent } from './screens/digital-signature/dig import { FileAttributesListingScreenComponent } from './screens/file-attributes-listing/file-attributes-listing-screen.component'; import { LicenseInformationScreenComponent } from './screens/license-information/license-information-screen.component'; import { UserListingScreenComponent } from './screens/user-listing/user-listing-screen.component'; -import { WatermarkScreenComponent } from './screens/watermark/watermark-screen.component'; import { DossierTemplateBreadcrumbsComponent } from './components/dossier-template-breadcrumbs/dossier-template-breadcrumbs.component'; import { ColorPickerModule } from 'ngx-color-picker'; import { AddEditFileAttributeDialogComponent } from './dialogs/add-edit-file-attribute-dialog/add-edit-file-attribute-dialog.component'; @@ -73,7 +72,6 @@ const screens = [ FileAttributesListingScreenComponent, LicenseInformationScreenComponent, UserListingScreenComponent, - WatermarkScreenComponent, GeneralConfigScreenComponent, ReportsScreenComponent, DossierAttributesListingScreenComponent, diff --git a/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen.component.html deleted file mode 100644 index b279ead7e..000000000 --- a/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen.component.html +++ /dev/null @@ -1,127 +0,0 @@ -
- - -
-
- - - -
-
-
- -
-
-
- -
-
-
-
- -
- -
- -
-
- ABC -
-
-
- -
- - -
- -
- - -
- -
- - -
- -
-
- -
- -
-
- {{ option.display }} -
-
-
-
-
-
-
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 new file mode 100644 index 000000000..549beee22 --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen/watermark-screen.component.html @@ -0,0 +1,104 @@ +
+
+
+ +
+
+
+ +
+
+
+
+ +
+ +
+ +
+
+ ABC +
+
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+
+ +
+ +
+
+ {{ option.display }} +
+
+
+
+
diff --git a/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen.component.scss b/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen/watermark-screen.component.scss similarity index 93% rename from apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen.component.scss rename to apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen/watermark-screen.component.scss index 9e316aa55..a6b99d8d3 100644 --- a/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen.component.scss +++ b/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen/watermark-screen.component.scss @@ -1,4 +1,10 @@ -@use 'variables'; +@use 'apps/red-ui/src/assets/styles/variables'; + +:host { + display: flex; + flex-grow: 1; + overflow: hidden; +} .content-container { order: 1; diff --git a/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen/watermark-screen.component.ts similarity index 99% rename from apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen.component.ts rename to apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen/watermark-screen.component.ts index 607ef3ca4..19b0b63e5 100644 --- a/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen/watermark-screen.component.ts @@ -6,7 +6,7 @@ import { HttpClient } from '@angular/common/http'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { Debounce, IconButtonTypes, LoadingService, Toaster } from '@iqser/common-ui'; import { IWatermark, WatermarkOrientation, WatermarkOrientations } from '@red/domain'; -import { BASE_HREF } from '../../../../tokens'; +import { BASE_HREF } from '../../../../../tokens'; import { stampPDFPage } from '@utils/page-stamper'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service'; diff --git a/apps/red-ui/src/app/modules/admin/screens/watermark/watermark.module.ts b/apps/red-ui/src/app/modules/admin/screens/watermark/watermark.module.ts new file mode 100644 index 000000000..019258112 --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/screens/watermark/watermark.module.ts @@ -0,0 +1,14 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { RouterModule } from '@angular/router'; +import { SharedModule } from '@shared/shared.module'; +import { WatermarkScreenComponent } from './watermark-screen/watermark-screen.component'; +import { ColorPickerModule } from 'ngx-color-picker'; + +const routes = [{ path: '', component: WatermarkScreenComponent }]; + +@NgModule({ + declarations: [WatermarkScreenComponent], + imports: [RouterModule.forChild(routes), CommonModule, SharedModule, ColorPickerModule], +}) +export class WatermarkModule {} From d3bd8484b27ef6c93d1fc2b585c319e6d398f0d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Mon, 7 Feb 2022 15:02:55 +0200 Subject: [PATCH 05/24] Reports module --- .../base-account-screen-component.scss | 4 +- .../notifications-screen.component.scss | 2 +- .../app/modules/admin/admin-routing.module.ts | 4 +- .../src/app/modules/admin/admin.module.ts | 2 - .../reports/reports-screen.component.html | 88 ------------------- .../reports-screen.component.html | 60 +++++++++++++ .../reports-screen.component.scss | 6 ++ .../reports-screen.component.ts | 37 ++++---- .../admin/screens/reports/reports.module.ts | 13 +++ .../watermark-screen.component.scss | 2 +- .../edit-dossier-team.component.scss | 4 +- .../view-mode-selection.component.scss | 2 +- .../annotation-actions.component.scss | 2 +- .../document-info.component.scss | 4 +- .../file-workload.component.scss | 4 +- .../page-exclusion.component.scss | 4 +- .../page-indicator.component.scss | 2 +- .../pdf-viewer/pdf-viewer.component.scss | 2 +- 18 files changed, 118 insertions(+), 124 deletions(-) delete mode 100644 apps/red-ui/src/app/modules/admin/screens/reports/reports-screen.component.html create mode 100644 apps/red-ui/src/app/modules/admin/screens/reports/reports-screen/reports-screen.component.html rename apps/red-ui/src/app/modules/admin/screens/reports/{ => reports-screen}/reports-screen.component.scss (96%) rename apps/red-ui/src/app/modules/admin/screens/reports/{ => reports-screen}/reports-screen.component.ts (84%) create mode 100644 apps/red-ui/src/app/modules/admin/screens/reports/reports.module.ts diff --git a/apps/red-ui/src/app/modules/account/base-account-screen/base-account-screen-component.scss b/apps/red-ui/src/app/modules/account/base-account-screen/base-account-screen-component.scss index fd508d3c9..787f8c31e 100644 --- a/apps/red-ui/src/app/modules/account/base-account-screen/base-account-screen-component.scss +++ b/apps/red-ui/src/app/modules/account/base-account-screen/base-account-screen-component.scss @@ -1,5 +1,5 @@ -@use 'apps/red-ui/src/assets/styles/variables'; -@use 'libs/common-ui/src/assets/styles/common-mixins'; +@use 'variables'; +@use 'common-mixins'; .content-container { background-color: variables.$grey-2; diff --git a/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.scss b/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.scss index 82f2afa68..4e0c1ce0b 100644 --- a/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.scss +++ b/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.scss @@ -1,5 +1,5 @@ @use 'variables'; -@use 'libs/common-ui/src/assets/styles/common-mixins'; +@use 'common-mixins'; .dialog-content { flex-direction: column; 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 0db6c0412..33215e35e 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 @@ -13,7 +13,6 @@ import { LicenseInformationScreenComponent } from './screens/license-information import { DigitalSignatureScreenComponent } from './screens/digital-signature/digital-signature-screen.component'; import { AuditScreenComponent } from './screens/audit/audit-screen.component'; import { RouterModule, Routes } from '@angular/router'; -import { ReportsScreenComponent } from './screens/reports/reports-screen.component'; import { DossierAttributesListingScreenComponent } from './screens/dossier-attributes-listing/dossier-attributes-listing-screen.component'; import { TrashScreenComponent } from './screens/trash/trash-screen.component'; import { GeneralConfigScreenComponent } from './screens/general-config/general-config-screen.component'; @@ -97,11 +96,12 @@ const routes: Routes = [ }, { path: 'reports', - component: ReportsScreenComponent, + component: BaseDossierTemplateScreenComponent, canActivate: [CompositeRouteGuard], data: { routeGuards: [AuthGuard, RedRoleGuard, AppStateGuard], }, + loadChildren: () => import('./screens/reports/reports.module').then(m => m.ReportsModule), }, { path: 'dossier-attributes', diff --git a/apps/red-ui/src/app/modules/admin/admin.module.ts b/apps/red-ui/src/app/modules/admin/admin.module.ts index a3092e347..c36811d81 100644 --- a/apps/red-ui/src/app/modules/admin/admin.module.ts +++ b/apps/red-ui/src/app/modules/admin/admin.module.ts @@ -29,7 +29,6 @@ import { FileAttributesCsvImportDialogComponent } from './dialogs/file-attribute import { ActiveFieldsListingComponent } from './dialogs/file-attributes-csv-import-dialog/active-fields-listing/active-fields-listing.component'; import { AdminSideNavComponent } from './admin-side-nav/admin-side-nav.component'; import { MonacoEditorModule } from '@materia-ui/ngx-monaco-editor'; -import { ReportsScreenComponent } from './screens/reports/reports-screen.component'; import { ResetPasswordComponent } from './dialogs/add-edit-user-dialog/reset-password/reset-password.component'; import { UserDetailsComponent } from './dialogs/add-edit-user-dialog/user-details/user-details.component'; import { AddEditDossierAttributeDialogComponent } from './dialogs/add-edit-dossier-attribute-dialog/add-edit-dossier-attribute-dialog.component'; @@ -73,7 +72,6 @@ const screens = [ LicenseInformationScreenComponent, UserListingScreenComponent, GeneralConfigScreenComponent, - ReportsScreenComponent, DossierAttributesListingScreenComponent, TrashScreenComponent, ]; diff --git a/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen.component.html deleted file mode 100644 index e676105d7..000000000 --- a/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen.component.html +++ /dev/null @@ -1,88 +0,0 @@ -
- - -
-
- - - -
-
- -
- -
-
-
-
- -
-
-
- -
{{ placeholder.placeholder }}
-
-
-
-
- -
-
-
- -
- -
- -
-
- {{ template.fileName }} {{ template.multiFileReport ? ('reports-screen.multi-file-report' | translate) : '' }} -
- -
- - -
-
-
-
-
- - diff --git a/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen/reports-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen/reports-screen.component.html new file mode 100644 index 000000000..bffe195a8 --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen/reports-screen.component.html @@ -0,0 +1,60 @@ +
+
+ +
+ +
+
+
+
+ +
+
+
+ +
{{ placeholder.placeholder }}
+
+
+
+
+ +
+
+
+ +
+ +
+ +
+
+ {{ template.fileName }} {{ template.multiFileReport ? ('reports-screen.multi-file-report' | translate) : '' }} +
+ +
+ + +
+
+
+ + diff --git a/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen.component.scss b/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen/reports-screen.component.scss similarity index 96% rename from apps/red-ui/src/app/modules/admin/screens/reports/reports-screen.component.scss rename to apps/red-ui/src/app/modules/admin/screens/reports/reports-screen/reports-screen.component.scss index 82bf1b1f7..19aac0ebd 100644 --- a/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen.component.scss +++ b/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen/reports-screen.component.scss @@ -1,6 +1,12 @@ @use 'variables'; @use 'common-mixins'; +:host { + flex-grow: 1; + overflow: hidden; + display: flex; +} + .content-container, .right-container { flex: 1; diff --git a/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen/reports-screen.component.ts similarity index 84% rename from apps/red-ui/src/app/modules/admin/screens/reports/reports-screen.component.ts rename to apps/red-ui/src/app/modules/admin/screens/reports/reports-screen/reports-screen.component.ts index a78562025..c18dd22c4 100644 --- a/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen/reports-screen.component.ts @@ -1,4 +1,4 @@ -import { Component, ElementRef, OnInit, ViewChild } from '@angular/core'; +import { ChangeDetectionStrategy, Component, ElementRef, OnInit, ViewChild } from '@angular/core'; import { IPlaceholdersResponse, IReportTemplate } from '@red/domain'; import { download } from '@utils/file-download-utils'; import { ConfirmationDialogInput, LoadingService, Toaster } from '@iqser/common-ui'; @@ -6,13 +6,13 @@ import { PermissionsService } from '@services/permissions.service'; import { generalPlaceholdersDescriptionsTranslations, placeholdersDescriptionsTranslations, -} from '../../translations/placeholders-descriptions-translations'; +} from '../../../translations/placeholders-descriptions-translations'; import { removeBraces } from '@utils/functions'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; -import { AdminDialogService } from '../../services/admin-dialog.service'; +import { AdminDialogService } from '../../../services/admin-dialog.service'; import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service'; import { ReportTemplateService } from '@services/report-template.service'; -import { firstValueFrom } from 'rxjs'; +import { BehaviorSubject, firstValueFrom } from 'rxjs'; interface Placeholder { placeholder: string; @@ -27,10 +27,11 @@ const placeholderTypes: PlaceholderType[] = ['generalPlaceholders', 'fileAttribu selector: 'redaction-reports-screen', templateUrl: './reports-screen.component.html', styleUrls: ['./reports-screen.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, }) export class ReportsScreenComponent implements OnInit { - placeholders: Placeholder[]; - availableTemplates: IReportTemplate[]; + placeholders$ = new BehaviorSubject([]); + availableTemplates$ = new BehaviorSubject([]); @ViewChild('fileInput') private _fileInput: ElementRef; @@ -85,7 +86,7 @@ export class ReportsScreenComponent implements OnInit { } private async _uploadTemplate($event) { - const file = $event.target.files[0]; + const file: File = $event.target.files[0]; if (!this._isValidFile(file)) { this._toaster.error(_('reports-screen.invalid-upload')); @@ -94,7 +95,7 @@ export class ReportsScreenComponent implements OnInit { const dossierTemplateId = this._dossierTemplatesService.activeDossierTemplateId; - if (this.availableTemplates.some(template => template.fileName === file.name)) { + if (this.availableTemplates$.value.some(template => template.fileName === file.name)) { const data = new ConfirmationDialogInput({ title: _('confirmation-dialog.report-template-same-name.title'), question: _('confirmation-dialog.report-template-same-name.question'), @@ -147,8 +148,10 @@ export class ReportsScreenComponent implements OnInit { } private async _loadReportTemplates() { - this.availableTemplates = await firstValueFrom( - this._reportTemplateService.getAvailableReportTemplates(this._dossierTemplatesService.activeDossierTemplateId), + this.availableTemplates$.next( + await firstValueFrom( + this._reportTemplateService.getAvailableReportTemplates(this._dossierTemplatesService.activeDossierTemplateId), + ), ); } @@ -156,12 +159,14 @@ export class ReportsScreenComponent implements OnInit { const placeholdersResponse: IPlaceholdersResponse = await firstValueFrom( this._reportTemplateService.getAvailablePlaceholders(this._dossierTemplatesService.activeDossierTemplateId), ); - this.placeholders = placeholderTypes.flatMap(type => - placeholdersResponse[type].map(placeholder => ({ - placeholder, - descriptionTranslation: this._getPlaceholderDescriptionTranslation(type, placeholder), - attributeName: this._getAttributeName(placeholder), - })), + this.placeholders$.next( + placeholderTypes.flatMap(type => + placeholdersResponse[type].map(placeholder => ({ + placeholder, + descriptionTranslation: this._getPlaceholderDescriptionTranslation(type, placeholder), + attributeName: this._getAttributeName(placeholder), + })), + ), ); } diff --git a/apps/red-ui/src/app/modules/admin/screens/reports/reports.module.ts b/apps/red-ui/src/app/modules/admin/screens/reports/reports.module.ts new file mode 100644 index 000000000..a7632e4ee --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/screens/reports/reports.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { RouterModule } from '@angular/router'; +import { SharedModule } from '../../../shared/shared.module'; +import { ReportsScreenComponent } from './reports-screen/reports-screen.component'; + +const routes = [{ path: '', component: ReportsScreenComponent }]; + +@NgModule({ + declarations: [ReportsScreenComponent], + imports: [RouterModule.forChild(routes), CommonModule, SharedModule], +}) +export class ReportsModule {} diff --git a/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen/watermark-screen.component.scss b/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen/watermark-screen.component.scss index a6b99d8d3..7b0777c44 100644 --- a/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen/watermark-screen.component.scss +++ b/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen/watermark-screen.component.scss @@ -1,4 +1,4 @@ -@use 'apps/red-ui/src/assets/styles/variables'; +@use 'variables'; :host { display: flex; diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component.scss b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component.scss index 8dcbfe2fc..0458946c1 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component.scss +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component.scss @@ -1,5 +1,5 @@ -@use 'libs/common-ui/src/assets/styles/common-mixins'; -@use 'apps/red-ui/src/assets/styles/variables'; +@use 'common-mixins'; +@use 'variables'; .search-container { margin-top: 16px; diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/view-mode-selection/view-mode-selection.component.scss b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/view-mode-selection/view-mode-selection.component.scss index 85b2b0d54..7e96bbb4e 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/view-mode-selection/view-mode-selection.component.scss +++ b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/view-mode-selection/view-mode-selection.component.scss @@ -1,4 +1,4 @@ -@use 'apps/red-ui/src/assets/styles/variables'; +@use 'variables'; .view-mode-selection { border-right: 1px solid variables.$separator; diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/annotation-actions/annotation-actions.component.scss b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/annotation-actions/annotation-actions.component.scss index 72e8cf4bf..79ed0f815 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/annotation-actions/annotation-actions.component.scss +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/annotation-actions/annotation-actions.component.scss @@ -1,4 +1,4 @@ -@use 'apps/red-ui/src/assets/styles/variables'; +@use 'variables'; .annotation-actions { display: none; diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/document-info/document-info.component.scss b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/document-info/document-info.component.scss index 95072ae97..4ff5ff6c0 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/document-info/document-info.component.scss +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/document-info/document-info.component.scss @@ -1,5 +1,5 @@ -@use 'apps/red-ui/src/assets/styles/variables'; -@use 'libs/common-ui/src/assets/styles/common-mixins'; +@use 'variables'; +@use 'common-mixins'; :host { display: block; diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/file-workload/file-workload.component.scss b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/file-workload/file-workload.component.scss index 78609b428..a3ced2806 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/file-workload/file-workload.component.scss +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/file-workload/file-workload.component.scss @@ -1,5 +1,5 @@ -@use 'apps/red-ui/src/assets/styles/variables'; -@use 'libs/common-ui/src/assets/styles/common-mixins'; +@use 'variables'; +@use 'common-mixins'; .read-only { padding: 13px 16px; diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/page-exclusion/page-exclusion.component.scss b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/page-exclusion/page-exclusion.component.scss index b2259ed40..7d6774afd 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/page-exclusion/page-exclusion.component.scss +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/page-exclusion/page-exclusion.component.scss @@ -1,5 +1,5 @@ -@use 'apps/red-ui/src/assets/styles/variables'; -@use 'libs/common-ui/src/assets/styles/common-mixins'; +@use 'variables'; +@use 'common-mixins'; :host { height: 100%; diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/page-indicator/page-indicator.component.scss b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/page-indicator/page-indicator.component.scss index 61cbb5943..9f97ddf1b 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/page-indicator/page-indicator.component.scss +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/page-indicator/page-indicator.component.scss @@ -1,4 +1,4 @@ -@use 'apps/red-ui/src/assets/styles/variables'; +@use 'variables'; .page-wrapper { color: variables.$accent; diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/pdf-viewer/pdf-viewer.component.scss b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/pdf-viewer/pdf-viewer.component.scss index a65dcf6ab..40e50e4c7 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/pdf-viewer/pdf-viewer.component.scss +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/pdf-viewer/pdf-viewer.component.scss @@ -1,4 +1,4 @@ -@use 'apps/red-ui/src/assets/styles/variables'; +@use 'variables'; .page { display: flex; From bf7f3f1923e6f100bae1ef38dacb755d631b5f0e Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Mon, 7 Feb 2022 14:07:29 +0100 Subject: [PATCH 06/24] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3212 -> 3215 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a644e6439..12d60c6ca 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.206.0", + "version": "3.207.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index 0daeb150ec0e28d3e93b5286901495281af82e30..ef7aca227f461be4b0ba837265ac1278b57760db 100644 GIT binary patch delta 3103 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 delta 3126 zcmV-649WA48H^c_b$_DQSwO#I`^(@J3Vsl32CbmqyL8U_|1sKL{Z}N$5tC!{sIEV34X)sYKc#=qaXhcrzwbMs|3%>0uaN!yvTAO> zaQ(lDQe4%9q07I1{e`ui^QhR~ zfI+ywOYoLvPoMm`B>8W@!g;->3}>^4P0HTbGtai~?3pkA2IB8R{9TH_EBNb(IgXg) zh&hg!#uS1d)6%mjjj_x;A(d4le6jUEEp@cK(&!*)cvdpuA)>Bvc-?q z1C3b3~oj@jt z0bny6l1!{1J=q%NMK1Q?c=pu1PBx&aj96t8W`8uoT(J|v(X{ov5B@d6Ee>5*zHVj) zz`63nqR}KNs-8M@lG|GPv7J+NbVt^EMa^J(=sC@EX&;^A6Z+`|xT$E&JNT!?$QF7T z;e<6?h*ii*D*j(TV}pSNcfk5!H7$I|F-=p7R5UjGjm8&{Zrnx+fKv%`{a_Hr^e* zA?}e}Mm0Ep=d;bTM~0+sYS-Rlf*d%*CV$v*Ml?aGuBgu4=n;8gh{*1~tsxK_^sz(# zA^J#t#P`&cO@J&^_c9Iy9~S6L4s)MVY=fCVaE#L!xQ#CN94w}<~cBsr{1bHtOMj=>@%Rg%5`HcAQf*XT=8{Qn8(ctfgsu+DN) zbN;Gd=gT6?U>z>A&qzfknO;p2y?^q1WWO)!ngY2%3nM*V*qaYHVa(9jd;Y~M*i-_U1n_U!!bt#*6w}U^$%xiR44FmlU8j$NE1L&5 z{!c(OnOvitTPw-&M3#11CZ>l*&us}Et=ch~La54kxKi>ZemuuxLbb)2pgE%&G+6Rh z5BqYRo}yk*CVqO!a3HkmB!4+v0Xj0sU?ANwu6?kA92SS;Rlc7*ah$;EtJFCyOTsjP z@pPe0mZqVlFOzg=pYs7iVVAQHMA#mr~Gvs>Wk8hggt`Q_C5E0cu z97V!e4pF!LEoR5{1kxFD97ml5`63Q85`*>KdbcZVtAlyL`Uw`}9~R%N+*{oyI0@Cc zA%paLV~Ol{t=geJfq%o=iIZsTJ>V+m192GJ8UYU}thYwuL&KGUtKb~NhuWXDRx+Aj z6L2D!@l6Kez*nxj0CBi0E)x)pJ-@wHr+?GX=-z^qjS0usI&$T}vYWT5$P?tGYQ?1u zxtuA#jYNYX4~8(tQRt0^e53fpP%ur#!YElWv@|ML46Tg1+<)*YK`>_9Nn#JdV2pDX zL?pP?R(paxt9THANfNHS&@kv46)gwbT@ZjuoYn0NX;XNW>}b{0&KepbL=y$EN3=y# zl9k&cCc9lI=$B5JZ|<7LB*c>^hC9td?F8v5OzpT6?(G5lP>{QkwGt z$d|sZfCQc!iGN>zghCC%8T@=6P&?0xO<_1Ag0S7@CckPgWw1QVQ-RlO2!i1~1xMRa zq8-^g(#0Ntv6!G$m)qLR^fA~{2#0&InPfaxqi+_jim`!!V+()>2-PT!MpwPQWy{M$KRq~%+$rG1{k{NlfCwbca>RH=$Ne*`%z^HyKIJ7UBrn%B)`%?m2 zF(Ljy4Yb2+;r5Av8oy+Sh;SBNK?#p6{k0!;XSP}jcn4G?RR3~*lcHaSQ z=Z=*8017g`*SJu?u-elH-=0A#Fhh%gA3Zq!^=L8BT&W4);7HBJtseLChjla>kbfsa zOwMg!C<1V75G!%kA#L)Suw5iAvRV6OctNa1FXe{%XYqtVq348`3n~|;2Mg->5B^SJ zFEJt*A0THkbvuB$4}ypAzvK;qiu;JC2kP|67YF*J;~p9eV2*rWFd*l}&kBb4UXnrU z+U*_@4EWspcHk62_67P$g6#cqS$`D~iNX3ri8ikpDG$85ok;N~i}q zx9jryF0bqI`!2uh3i_^~>ss_(3)xk6pA{Lqtm8!2(thM&?8Ma5&R{2zeDKlhNczLj zcj9yR=dtpJ7`tb-2Qda3Mn(5SjNY*reNV-xn9d6W{`1)KMoHgkMT5jR&K>s!9|2;H zVBO%+ Date: Wed, 2 Feb 2022 14:27:42 +0200 Subject: [PATCH 07/24] add readonly to state service --- .../annotation-actions.component.ts | 5 +- .../annotations-list.component.ts | 13 +- .../file-workload.component.html | 9 +- .../file-workload/file-workload.component.ts | 10 +- .../file-preview-screen.component.html | 242 +++++++++--------- .../services/file-preview-state.service.ts | 28 +- .../services/multi-select.service.ts | 16 +- libs/common-ui | 2 +- 8 files changed, 167 insertions(+), 158 deletions(-) diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/annotation-actions/annotation-actions.component.ts b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/annotation-actions/annotation-actions.component.ts index b147cfcec..faf87375c 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/annotation-actions/annotation-actions.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/annotation-actions/annotation-actions.component.ts @@ -8,7 +8,6 @@ import { UserService } from '@services/user.service'; import { AnnotationReferencesService } from '../../services/annotation-references.service'; import { MultiSelectService } from '../../services/multi-select.service'; import { FilePreviewStateService } from '../../services/file-preview-state.service'; -import { firstValueFrom } from 'rxjs'; export const AnnotationButtonTypes = { dark: 'dark', @@ -34,9 +33,9 @@ export class AnnotationActionsComponent implements OnChanges { constructor( private readonly _userService: UserService, readonly multiSelectService: MultiSelectService, + private readonly _state: FilePreviewStateService, private readonly _permissionsService: PermissionsService, readonly annotationActionsService: AnnotationActionsService, - private readonly _screenStateService: FilePreviewStateService, readonly annotationReferencesService: AnnotationReferencesService, ) {} @@ -115,7 +114,7 @@ export class AnnotationActionsComponent implements OnChanges { } private async _setPermissions() { - const dossier = await firstValueFrom(this._screenStateService.dossier$); + const dossier = await this._state.dossier; this.annotationPermissions = AnnotationPermissions.forUser( this._permissionsService.isApprover(dossier), this._userService.currentUser, diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/annotations-list/annotations-list.component.ts b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/annotations-list/annotations-list.component.ts index d812af678..526eb3624 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/annotations-list/annotations-list.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/annotations-list/annotations-list.component.ts @@ -4,6 +4,8 @@ import { FilterService, HelpModeService, IqserEventTarget } from '@iqser/common- import { MultiSelectService } from '../../services/multi-select.service'; import { AnnotationReferencesService } from '../../services/annotation-references.service'; import { ViewModeService } from '../../services/view-mode.service'; +import { FilePreviewStateService } from '../../services/file-preview-state.service'; +import { firstValueFrom } from 'rxjs'; @Component({ selector: 'redaction-annotations-list', @@ -16,7 +18,6 @@ export class AnnotationsListComponent implements OnChanges { @Input() selectedAnnotations: AnnotationWrapper[]; @Input() annotationActionsTemplate: TemplateRef; @Input() activeViewerPage: number; - @Input() canMultiSelect = true; @Output() readonly pagesPanelActive = new EventEmitter(); @Output() readonly selectAnnotations = new EventEmitter(); @@ -28,6 +29,7 @@ export class AnnotationsListComponent implements OnChanges { readonly helpModeService: HelpModeService, readonly annotationReferencesService: AnnotationReferencesService, private readonly _filterService: FilterService, + private readonly _state: FilePreviewStateService, ) {} ngOnChanges(changes: SimpleChanges): void { @@ -36,7 +38,7 @@ export class AnnotationsListComponent implements OnChanges { } } - annotationClicked(annotation: AnnotationWrapper, $event: MouseEvent): void { + async annotationClicked(annotation: AnnotationWrapper, $event: MouseEvent): Promise { if (($event?.target as IqserEventTarget)?.localName === 'input') { return; } @@ -50,15 +52,16 @@ export class AnnotationsListComponent implements OnChanges { if (this.isSelected(annotation.annotationId)) { this.deselectAnnotations.emit([annotation]); } else { - if (this.canMultiSelect && ($event?.ctrlKey || $event?.metaKey) && this.selectedAnnotations.length > 0) { + const canMultiSelect = await firstValueFrom(this._state.isWritable$); + if (canMultiSelect && ($event?.ctrlKey || $event?.metaKey) && this.selectedAnnotations.length > 0) { this.multiSelectService.activate(); } this.selectAnnotations.emit([annotation]); } } - referenceClicked(annotation: AnnotationWrapper): void { - this.annotationClicked(annotation, null); + async referenceClicked(annotation: AnnotationWrapper): Promise { + await this.annotationClicked(annotation, null); if (this._filterService.filtersEnabled('primaryFilters')) { this._filterService.toggleFilter('primaryFilters', annotation.superType, true); } diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/file-workload/file-workload.component.html b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/file-workload/file-workload.component.html index e36aef21a..80384739b 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/file-workload/file-workload.component.html +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/file-workload/file-workload.component.html @@ -14,7 +14,7 @@
-
+
@@ -53,7 +53,7 @@ *ngIf="selectedAnnotations?.length > 0" [alwaysVisible]="true" [annotations]="selectedAnnotations" - [canPerformAnnotationActions]="!isReadOnly" + [canPerformAnnotationActions]="state.isWritable$ | async" [viewer]="viewer" buttonType="primary" tooltipPosition="above" @@ -67,7 +67,7 @@ >
-
+
diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/file-workload/file-workload.component.ts b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/file-workload/file-workload.component.ts index 584a25e84..c3fd3396e 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/file-workload/file-workload.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/file-workload/file-workload.component.ts @@ -33,6 +33,7 @@ import { ExcludedPagesService } from '../../services/excluded-pages.service'; import { MultiSelectService } from '../../services/multi-select.service'; import { DocumentInfoService } from '../../services/document-info.service'; import { SkippedService } from '../../services/skipped.service'; +import { FilePreviewStateService } from '../../services/file-preview-state.service'; const COMMAND_KEY_ARRAY = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Escape']; const ALL_HOTKEY_ARRAY = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown']; @@ -75,6 +76,7 @@ export class FileWorkloadComponent { readonly multiSelectService: MultiSelectService, readonly documentInfoService: DocumentInfoService, readonly skippedService: SkippedService, + readonly state: FilePreviewStateService, private readonly _permissionsService: PermissionsService, private readonly _changeDetectorRef: ChangeDetectorRef, private readonly _filterService: FilterService, @@ -95,10 +97,6 @@ export class FileWorkloadComponent { return this.displayedAnnotations.get(this.activeViewerPage); } - get isReadOnly(): boolean { - return !this._permissionsService.canPerformAnnotationActions(this.file); - } - get currentPageIsExcluded(): boolean { return this.file?.excludedPages?.includes(this.activeViewerPage); } @@ -252,8 +250,8 @@ export class FileWorkloadComponent { this.selectPage.emit(1); } - scrollQuickNavLast(): void { - this.selectPage.emit(this.file.numberOfPages); + scrollQuickNavLast(): Promise { + return this.state.file.then(file => this.selectPage.emit(file.numberOfPages)); } pageSelectedByClick($event: number): void { diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.html b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.html index aaf57ede5..c4a535d67 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.html +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.html @@ -1,135 +1,137 @@ - -
-
+ + + + + + + + + + + + {{ filter.label | humanize: false }} + + diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/file-preview-state.service.ts b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/file-preview-state.service.ts index c698ce8a4..5ba0e6889 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/file-preview-state.service.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/file-preview-state.service.ts @@ -5,40 +5,50 @@ import { Dossier, File } from '@red/domain'; import { DossiersService } from '../../../../../services/entity-services/dossiers.service'; import { ActivatedRoute } from '@angular/router'; import { FilesMapService } from '../../../../../services/entity-services/files-map.service'; +import { PermissionsService } from '../../../../../services/permissions.service'; +import { boolFactory } from '@iqser/common-ui'; @Injectable() export class FilePreviewStateService { readonly fileData$: Observable; readonly file$: Observable; readonly dossier$: Observable; + readonly isReadonly$: Observable; + readonly isWritable$: Observable; readonly dossierId: string; readonly dossierTemplateId: string; readonly fileId: string; - private readonly _fileData$ = new BehaviorSubject(undefined); + readonly #fileData$ = new BehaviorSubject(undefined); constructor( - private readonly _dossiersService: DossiersService, - private readonly _filesMapService: FilesMapService, + dossiersService: DossiersService, + filesMapService: FilesMapService, + permissionsService: PermissionsService, activatedRoute: ActivatedRoute, ) { this.dossierId = activatedRoute.snapshot.paramMap.get('dossierId'); - this.dossierTemplateId = this._dossiersService.find(this.dossierId).dossierTemplateId; - this.dossier$ = _dossiersService.getEntityChanged$(this.dossierId); + this.dossierTemplateId = dossiersService.find(this.dossierId).dossierTemplateId; + this.dossier$ = dossiersService.getEntityChanged$(this.dossierId); this.fileId = activatedRoute.snapshot.paramMap.get('fileId'); - this.fileData$ = this._fileData$.asObservable(); - this.file$ = _filesMapService.watch$(this.dossierId, this.fileId); + this.fileData$ = this.#fileData$.asObservable(); + this.file$ = filesMapService.watch$(this.dossierId, this.fileId); + [this.isReadonly$, this.isWritable$] = boolFactory(this.file$, file => !permissionsService.canPerformAnnotationActions(file)); } get fileData(): FileDataModel { - return this._fileData$.value; + return this.#fileData$.value; } set fileData(fileDataModel: FileDataModel) { - this._fileData$.next(fileDataModel); + this.#fileData$.next(fileDataModel); } get file(): Promise { return firstValueFrom(this.file$); } + + get dossier(): Promise { + return firstValueFrom(this.dossier$); + } } diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/multi-select.service.ts b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/multi-select.service.ts index 60e990157..71455608d 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/multi-select.service.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/multi-select.service.ts @@ -1,32 +1,30 @@ import { Injectable } from '@angular/core'; import { BehaviorSubject, Observable } from 'rxjs'; -import { shareDistinctLast } from '@iqser/common-ui'; -import { map } from 'rxjs/operators'; +import { boolFactory } from '@iqser/common-ui'; @Injectable() export class MultiSelectService { readonly active$: Observable; readonly inactive$: Observable; - private readonly _active$ = new BehaviorSubject(false); + readonly #active$ = new BehaviorSubject(false); constructor() { - this.active$ = this._active$.asObservable().pipe(shareDistinctLast()); - this.inactive$ = this.active$.pipe(map(value => !value)); + [this.active$, this.inactive$] = boolFactory(this.#active$.asObservable()); } get isActive() { - return this._active$.value; + return this.#active$.value; } activate() { - this._active$.next(true); + this.#active$.next(true); } deactivate() { - this._active$.next(false); + this.#active$.next(false); } toggle() { - this._active$.next(!this._active$.value); + this.#active$.next(!this.#active$.value); } } diff --git a/libs/common-ui b/libs/common-ui index 31b60ff11..b808e4661 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit 31b60ff117a8d8ecb9617be3b0c9e1822d437034 +Subproject commit b808e4661e56aa93baca96c57f910443437112d4 From f5c613974be87956da30f7eb1a9e6acf0583eb0d Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Thu, 3 Feb 2022 14:11:04 +0200 Subject: [PATCH 08/24] remove blob from file data --- .../src/app/models/file/file-data.model.ts | 7 +--- .../pdf-viewer/pdf-viewer.component.ts | 14 +++---- .../file-preview-screen.component.ts | 1 + .../services/file-preview-state.service.ts | 42 ++++++++++++++++--- .../services/pdf-viewer-data.service.ts | 26 +++--------- 5 files changed, 49 insertions(+), 41 deletions(-) diff --git a/apps/red-ui/src/app/models/file/file-data.model.ts b/apps/red-ui/src/app/models/file/file-data.model.ts index 7b73d7228..36b1a7870 100644 --- a/apps/red-ui/src/app/models/file/file-data.model.ts +++ b/apps/red-ui/src/app/models/file/file-data.model.ts @@ -16,19 +16,16 @@ import { RedactionLogEntry } from './redaction-log.entry'; export class FileDataModel { static readonly DELTA_VIEW_TIME = 10 * 60 * 1000; // 10 minutes; - allAnnotations: AnnotationWrapper[]; + allAnnotations: AnnotationWrapper[] = []; readonly hasChangeLog$ = new BehaviorSubject(false); - readonly blob$ = new BehaviorSubject(undefined); constructor( private readonly _file: File, - private readonly _blob: Blob, private _redactionLog: IRedactionLog, public viewedPages?: IViewedPage[], private _dictionaryData?: { [p: string]: Dictionary }, private _areDevFeaturesEnabled?: boolean, ) { - this.blob$.next(_blob); this._buildAllAnnotations(); } @@ -56,7 +53,7 @@ export class FileDataModel { private _buildAllAnnotations() { const entries: RedactionLogEntry[] = this._convertData(); - const previousAnnotations = this.allAnnotations || []; + const previousAnnotations = [...this.allAnnotations]; this.allAnnotations = entries .map(entry => AnnotationWrapper.fromData(entry)) .filter(ann => ann.manual || !this._file.excludedPages.includes(ann.pageNumber)); diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/pdf-viewer/pdf-viewer.component.ts b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/pdf-viewer/pdf-viewer.component.ts index b9f9e816b..c95791eb1 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/pdf-viewer/pdf-viewer.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/pdf-viewer/pdf-viewer.component.ts @@ -27,7 +27,7 @@ import { AnnotationActionsService } from '../../services/annotation-actions.serv import { UserPreferenceService } from '@services/user-preference.service'; import { BASE_HREF } from '../../../../../../tokens'; import { ConfigService } from '@services/config.service'; -import { AutoUnsubscribe, ConfirmationDialogInput, LoadingService, shareDistinctLast } from '@iqser/common-ui'; +import { AutoUnsubscribe, ConfirmationDialogInput, LoadingService } from '@iqser/common-ui'; import { DossiersDialogService } from '../../../../services/dossiers-dialog.service'; import { loadCompareDocumentWrapper } from '../../../../utils/compare-mode.utils'; import { PdfViewerUtils } from '../../../../utils/pdf-viewer.utils'; @@ -37,7 +37,7 @@ import { toPosition } from '../../../../utils/pdf-calculation.utils'; import { ViewModeService } from '../../services/view-mode.service'; import { MultiSelectService } from '../../services/multi-select.service'; import { FilePreviewStateService } from '../../services/file-preview-state.service'; -import { filter, switchMap, tap, withLatestFrom } from 'rxjs/operators'; +import { tap, withLatestFrom } from 'rxjs/operators'; import Tools = Core.Tools; import TextTool = Tools.TextTool; import Annotation = Core.Annotations.Annotation; @@ -120,12 +120,8 @@ export class PdfViewerComponent extends AutoUnsubscribe implements OnInit, OnCha this._setReadyAndInitialState = this._setReadyAndInitialState.bind(this); await this._loadViewer(); - this.addActiveScreenSubscription = this.stateService.fileData$ + this.addActiveScreenSubscription = this.stateService.blob$ .pipe( - filter(fileData => !!fileData), - switchMap(fileData => fileData.blob$), - // Skip document reload if file content hasn't changed - shareDistinctLast(), withLatestFrom(this.stateService.file$), tap(([blob, file]) => this._loadDocument(blob, file)), ) @@ -158,7 +154,7 @@ export class PdfViewerComponent extends AutoUnsubscribe implements OnInit, OnCha await pdfNet.initialize(environment.licenseKey ? atob(environment.licenseKey) : null); const compareDocument = await pdfNet.PDFDoc.createFromBuffer(fileReader.result as ArrayBuffer); - const currentDocument = await pdfNet.PDFDoc.createFromBuffer(await this.stateService.fileData.blob$.value.arrayBuffer()); + const currentDocument = await pdfNet.PDFDoc.createFromBuffer(await this.stateService.blob.arrayBuffer()); const loadCompareDocument = async () => { this._loadingService.start(); @@ -212,7 +208,7 @@ export class PdfViewerComponent extends AutoUnsubscribe implements OnInit, OnCha this.viewModeService.compareMode = false; const pdfNet = this.instance.Core.PDFNet; await pdfNet.initialize(environment.licenseKey ? atob(environment.licenseKey) : null); - const currentDocument = await pdfNet.PDFDoc.createFromBuffer(await this.stateService.fileData.blob$.value.arrayBuffer()); + const currentDocument = await pdfNet.PDFDoc.createFromBuffer(await this.stateService.blob.arrayBuffer()); const filename = (await this.stateService.file).filename ?? 'document.pdf'; this.instance.UI.loadDocument(currentDocument, { filename }); diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.ts b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.ts index 145405297..47343684d 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.ts @@ -561,6 +561,7 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni return; } + await this.stateService.loadBlob(file); this.stateService.fileData = await firstValueFrom(this._pdfViewerDataService.loadDataFor(file)); } diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/file-preview-state.service.ts b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/file-preview-state.service.ts index 5ba0e6889..14a3148e0 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/file-preview-state.service.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/file-preview-state.service.ts @@ -1,5 +1,5 @@ import { Injectable } from '@angular/core'; -import { BehaviorSubject, firstValueFrom, Observable } from 'rxjs'; +import { BehaviorSubject, firstValueFrom, Observable, switchMap } from 'rxjs'; import { FileDataModel } from '@models/file/file-data.model'; import { Dossier, File } from '@red/domain'; import { DossiersService } from '../../../../../services/entity-services/dossiers.service'; @@ -7,33 +7,42 @@ import { ActivatedRoute } from '@angular/router'; import { FilesMapService } from '../../../../../services/entity-services/files-map.service'; import { PermissionsService } from '../../../../../services/permissions.service'; import { boolFactory } from '@iqser/common-ui'; +import { filter, map, tap } from 'rxjs/operators'; +import { FileManagementService } from '../../../../../services/entity-services/file-management.service'; @Injectable() export class FilePreviewStateService { - readonly fileData$: Observable; readonly file$: Observable; + readonly blob$: Observable; readonly dossier$: Observable; readonly isReadonly$: Observable; readonly isWritable$: Observable; + readonly fileData$: Observable; + readonly dossierId: string; readonly dossierTemplateId: string; readonly fileId: string; - readonly #fileData$ = new BehaviorSubject(undefined); + + readonly #blob$ = new BehaviorSubject(undefined); + readonly #fileData$ = new BehaviorSubject(undefined); constructor( dossiersService: DossiersService, filesMapService: FilesMapService, permissionsService: PermissionsService, activatedRoute: ActivatedRoute, + private readonly _fileManagementService: FileManagementService, ) { + this.fileId = activatedRoute.snapshot.paramMap.get('fileId'); this.dossierId = activatedRoute.snapshot.paramMap.get('dossierId'); this.dossierTemplateId = dossiersService.find(this.dossierId).dossierTemplateId; - this.dossier$ = dossiersService.getEntityChanged$(this.dossierId); - this.fileId = activatedRoute.snapshot.paramMap.get('fileId'); - this.fileData$ = this.#fileData$.asObservable(); + this.dossier$ = dossiersService.getEntityChanged$(this.dossierId); this.file$ = filesMapService.watch$(this.dossierId, this.fileId); [this.isReadonly$, this.isWritable$] = boolFactory(this.file$, file => !permissionsService.canPerformAnnotationActions(file)); + + this.fileData$ = this.#fileData$.asObservable().pipe(filter(value => !!value)); + this.blob$ = this.#blob$.asObservable().pipe(filter(value => !!value)); } get fileData(): FileDataModel { @@ -51,4 +60,25 @@ export class FilePreviewStateService { get dossier(): Promise { return firstValueFrom(this.dossier$); } + + get blob(): Blob | undefined { + return this.#blob$.value; + } + + loadBlob(newFile: File) { + const newBlob$ = this.#downloadOriginalFile(newFile).pipe( + tap(blob => this.#blob$.next(blob)), + tap(() => console.log('new')), + ); + const blob$ = this.file$.pipe( + map(file => file.cacheIdentifier === newFile.cacheIdentifier && this.blob), + switchMap(isSame => (isSame ? this.blob$ : newBlob$)), + ); + + return firstValueFrom(blob$); + } + + #downloadOriginalFile(file: File): Observable { + return this._fileManagementService.downloadOriginalFile(file.dossierId, file.fileId, 'body', true, file.cacheIdentifier); + } } diff --git a/apps/red-ui/src/app/modules/dossier/services/pdf-viewer-data.service.ts b/apps/red-ui/src/app/modules/dossier/services/pdf-viewer-data.service.ts index 0a0313f4b..b4430c3df 100644 --- a/apps/red-ui/src/app/modules/dossier/services/pdf-viewer-data.service.ts +++ b/apps/red-ui/src/app/modules/dossier/services/pdf-viewer-data.service.ts @@ -1,23 +1,19 @@ import { Injectable } from '@angular/core'; -import { forkJoin, Observable, of, switchMap } from 'rxjs'; -import { catchError, map, take, tap } from 'rxjs/operators'; +import { forkJoin, Observable, of } from 'rxjs'; +import { catchError, map, tap } from 'rxjs/operators'; import { FileDataModel } from '@models/file/file-data.model'; import { PermissionsService } from '@services/permissions.service'; import { File, IRedactionLog, IViewedPage } from '@red/domain'; -import { FileManagementService } from '@services/entity-services/file-management.service'; import { RedactionLogService } from './redaction-log.service'; import { ViewedPagesService } from '@services/entity-services/viewed-pages.service'; import { AppStateService } from '../../../state/app-state.service'; -import { DossiersService } from '../../../services/entity-services/dossiers.service'; import { UserPreferenceService } from '../../../services/user-preference.service'; import { FilePreviewStateService } from '../screens/file-preview-screen/services/file-preview-state.service'; @Injectable() export class PdfViewerDataService { constructor( - private readonly _dossiersService: DossiersService, private readonly _permissionsService: PermissionsService, - private readonly _fileManagementService: FileManagementService, private readonly _redactionLogService: RedactionLogService, private readonly _viewedPagesService: ViewedPagesService, private readonly _appStateService: AppStateService, @@ -33,24 +29,16 @@ export class PdfViewerDataService { } loadDataFor(newFile: File): Observable { - const oldBlob$ = this._stateService.fileData?.blob$; - const blob$ = this._stateService.file$.pipe( - map(file => file.cacheIdentifier === newFile.cacheIdentifier && oldBlob$), - switchMap(isSame => (isSame ? oldBlob$ : this.downloadOriginalFile(newFile))), - take(1), - ); const redactionLog$ = this.loadRedactionLogFor(newFile.dossierId, newFile.fileId); const viewedPages$ = this.getViewedPagesFor(newFile); - const dossier = this._dossiersService.find(newFile.dossierId); - - return forkJoin([blob$, redactionLog$, viewedPages$]).pipe( + return forkJoin([redactionLog$, viewedPages$]).pipe( map( - (data: [blob: Blob, redactionLog: IRedactionLog, viewedPages: IViewedPage[]]) => + (data: [redactionLog: IRedactionLog, viewedPages: IViewedPage[]]) => new FileDataModel( newFile, ...data, - this._appStateService.dictionaryData[dossier.dossierTemplateId], + this._appStateService.dictionaryData[this._stateService.dossierTemplateId], this._userPreferenceService.areDevFeaturesEnabled, ), ), @@ -63,8 +51,4 @@ export class PdfViewerDataService { } return of([]); } - - downloadOriginalFile(file: File): Observable { - return this._fileManagementService.downloadOriginalFile(file.dossierId, file.fileId, 'body', true, file.cacheIdentifier); - } } From f68d342ee440bfa659aee62a774e2e64178539b6 Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Fri, 4 Feb 2022 10:52:14 +0200 Subject: [PATCH 09/24] load blobs based on cache identifier --- .../pdf-viewer/pdf-viewer.component.ts | 6 ++-- .../file-preview-screen.component.ts | 3 +- .../services/annotation-draw.service.ts | 10 +++--- .../services/file-preview-state.service.ts | 31 ++++++++----------- 4 files changed, 23 insertions(+), 27 deletions(-) diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/pdf-viewer/pdf-viewer.component.ts b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/pdf-viewer/pdf-viewer.component.ts index c95791eb1..ef8e78f10 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/pdf-viewer/pdf-viewer.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/pdf-viewer/pdf-viewer.component.ts @@ -154,7 +154,8 @@ export class PdfViewerComponent extends AutoUnsubscribe implements OnInit, OnCha await pdfNet.initialize(environment.licenseKey ? atob(environment.licenseKey) : null); const compareDocument = await pdfNet.PDFDoc.createFromBuffer(fileReader.result as ArrayBuffer); - const currentDocument = await pdfNet.PDFDoc.createFromBuffer(await this.stateService.blob.arrayBuffer()); + const blob = await this.stateService.blob; + const currentDocument = await pdfNet.PDFDoc.createFromBuffer(await blob.arrayBuffer()); const loadCompareDocument = async () => { this._loadingService.start(); @@ -208,7 +209,8 @@ export class PdfViewerComponent extends AutoUnsubscribe implements OnInit, OnCha this.viewModeService.compareMode = false; const pdfNet = this.instance.Core.PDFNet; await pdfNet.initialize(environment.licenseKey ? atob(environment.licenseKey) : null); - const currentDocument = await pdfNet.PDFDoc.createFromBuffer(await this.stateService.blob.arrayBuffer()); + const blob = await this.stateService.blob; + const currentDocument = await pdfNet.PDFDoc.createFromBuffer(await blob.arrayBuffer()); const filename = (await this.stateService.file).filename ?? 'document.pdf'; this.instance.UI.loadDocument(currentDocument, { filename }); diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.ts b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.ts index 47343684d..109c1958d 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.ts @@ -561,7 +561,6 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni return; } - await this.stateService.loadBlob(file); this.stateService.fileData = await firstValueFrom(this._pdfViewerDataService.loadDataFor(file)); } @@ -694,7 +693,7 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni this._instance.Core.annotationManager.showAnnotations(annotations); } - private async _setAnnotationsColor(annotations: Annotation[], customData: string) { + private _setAnnotationsColor(annotations: Annotation[], customData: string) { annotations.forEach(annotation => { annotation['StrokeColor'] = this._annotationDrawService.convertColor(this._instance, annotation.getCustomData(customData)); }); diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/annotation-draw.service.ts b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/annotation-draw.service.ts index 304972eb5..35ca9d421 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/annotation-draw.service.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/annotation-draw.service.ts @@ -45,7 +45,7 @@ export class AnnotationDrawService { } getColor(activeViewer: WebViewerInstance, dossierTemplateId: string, superType: string, dictionary?: string) { - let color; + let color: string; switch (superType) { case 'hint': case 'redaction': @@ -62,11 +62,11 @@ export class AnnotationDrawService { return color; } - public getAndConvertColor(activeViewer: WebViewerInstance, dossierTemplateId: string, superType: string, dictionary?: string) { + getAndConvertColor(activeViewer: WebViewerInstance, dossierTemplateId: string, superType: string, dictionary?: string) { return this.convertColor(activeViewer, this.getColor(activeViewer, dossierTemplateId, superType, dictionary)); } - public convertColor(activeViewer: WebViewerInstance, hexColor: string) { + convertColor(activeViewer: WebViewerInstance, hexColor: string) { const rgbColor = hexToRgb(hexColor); return new activeViewer.Core.Annotations.Color(rgbColor.r, rgbColor.g, rgbColor.b); } @@ -108,7 +108,7 @@ export class AnnotationDrawService { } private async _drawSections(activeViewer: WebViewerInstance, sectionGrid: ISectionGrid, dossierId: string) { - const sections = []; + const sections: Core.Annotations.RectangleAnnotation[] = []; for (const page of Object.keys(sectionGrid.rectanglesPerPage)) { const sectionRectangles = sectionGrid.rectanglesPerPage[page]; sectionRectangles.forEach(sectionRectangle => { @@ -154,7 +154,7 @@ export class AnnotationDrawService { const pageNumber = compareMode ? annotationWrapper.pageNumber * 2 - 1 : annotationWrapper.pageNumber; const dossierTemplateId = this._dossiersService.find(dossierId).dossierTemplateId; - let annotation; + let annotation: Core.Annotations.RectangleAnnotation | Core.Annotations.TextHighlightAnnotation; if (annotationWrapper.rectangle || annotationWrapper.isImage) { annotation = new activeViewer.Core.Annotations.RectangleAnnotation(); const pageHeight = activeViewer.Core.documentViewer.getPageHeight(pageNumber); diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/file-preview-state.service.ts b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/file-preview-state.service.ts index 14a3148e0..6d569c03b 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/file-preview-state.service.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/file-preview-state.service.ts @@ -1,5 +1,5 @@ import { Injectable } from '@angular/core'; -import { BehaviorSubject, firstValueFrom, Observable, switchMap } from 'rxjs'; +import { BehaviorSubject, firstValueFrom, Observable, pairwise, switchMap } from 'rxjs'; import { FileDataModel } from '@models/file/file-data.model'; import { Dossier, File } from '@red/domain'; import { DossiersService } from '../../../../../services/entity-services/dossiers.service'; @@ -7,7 +7,7 @@ import { ActivatedRoute } from '@angular/router'; import { FilesMapService } from '../../../../../services/entity-services/files-map.service'; import { PermissionsService } from '../../../../../services/permissions.service'; import { boolFactory } from '@iqser/common-ui'; -import { filter, map, tap } from 'rxjs/operators'; +import { filter, startWith } from 'rxjs/operators'; import { FileManagementService } from '../../../../../services/entity-services/file-management.service'; @Injectable() @@ -23,7 +23,6 @@ export class FilePreviewStateService { readonly dossierTemplateId: string; readonly fileId: string; - readonly #blob$ = new BehaviorSubject(undefined); readonly #fileData$ = new BehaviorSubject(undefined); constructor( @@ -42,7 +41,7 @@ export class FilePreviewStateService { [this.isReadonly$, this.isWritable$] = boolFactory(this.file$, file => !permissionsService.canPerformAnnotationActions(file)); this.fileData$ = this.#fileData$.asObservable().pipe(filter(value => !!value)); - this.blob$ = this.#blob$.asObservable().pipe(filter(value => !!value)); + this.blob$ = this.#blob$; } get fileData(): FileDataModel { @@ -61,24 +60,20 @@ export class FilePreviewStateService { return firstValueFrom(this.dossier$); } - get blob(): Blob | undefined { - return this.#blob$.value; + get blob(): Promise { + return firstValueFrom(this.blob$); } - loadBlob(newFile: File) { - const newBlob$ = this.#downloadOriginalFile(newFile).pipe( - tap(blob => this.#blob$.next(blob)), - tap(() => console.log('new')), + get #blob$() { + return this.file$.pipe( + startWith(undefined), + pairwise(), + filter(([oldFile, newFile]) => oldFile?.cacheIdentifier !== newFile.cacheIdentifier), + switchMap(([, newFile]) => this.#downloadOriginalFile(newFile.cacheIdentifier)), ); - const blob$ = this.file$.pipe( - map(file => file.cacheIdentifier === newFile.cacheIdentifier && this.blob), - switchMap(isSame => (isSame ? this.blob$ : newBlob$)), - ); - - return firstValueFrom(blob$); } - #downloadOriginalFile(file: File): Observable { - return this._fileManagementService.downloadOriginalFile(file.dossierId, file.fileId, 'body', true, file.cacheIdentifier); + #downloadOriginalFile(cacheIdentifier: string): Observable { + return this._fileManagementService.downloadOriginalFile(this.dossierId, this.fileId, 'body', true, cacheIdentifier); } } From f4601c066caba88614760d8670b0dd8060fd711b Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Fri, 4 Feb 2022 12:17:55 +0200 Subject: [PATCH 10/24] remove redundant code --- .../app/models/file/redaction-log.entry.ts | 20 +++++-------------- .../file-preview-screen.component.ts | 2 +- .../services/file-preview-state.service.ts | 2 +- .../file-management.service.ts | 16 +++------------ 4 files changed, 10 insertions(+), 30 deletions(-) diff --git a/apps/red-ui/src/app/models/file/redaction-log.entry.ts b/apps/red-ui/src/app/models/file/redaction-log.entry.ts index e53e6e570..1a82a09fe 100644 --- a/apps/red-ui/src/app/models/file/redaction-log.entry.ts +++ b/apps/red-ui/src/app/models/file/redaction-log.entry.ts @@ -28,21 +28,16 @@ export class RedactionLogEntry implements IRedactionLogEntry { readonly textBefore?: string; readonly type?: string; readonly value?: string; - readonly changeLogType?: 'ADDED' | 'REMOVED' | 'CHANGED'; - readonly isChangeLogEntry?: boolean; - readonly hidden?: boolean; - readonly legalBasisList: ILegalBasis[]; - readonly hintDictionary: boolean; reason?: string; constructor( redactionLogEntry: IRedactionLogEntry, - changeLogType: 'ADDED' | 'REMOVED' | 'CHANGED', - isChangeLogEntry: boolean, - hidden: boolean, - hintDictionary: boolean, - legalBasisList: ILegalBasis[], + readonly changeLogType: 'ADDED' | 'REMOVED' | 'CHANGED', + readonly isChangeLogEntry: boolean, + readonly hidden: boolean, + readonly hintDictionary: boolean, + readonly legalBasisList: ILegalBasis[], ) { this.changes = redactionLogEntry.changes; this.manualChanges = redactionLogEntry.manualChanges; @@ -72,10 +67,5 @@ export class RedactionLogEntry implements IRedactionLogEntry { this.textBefore = redactionLogEntry.textBefore; this.type = redactionLogEntry.type; this.value = redactionLogEntry.value; - this.changeLogType = changeLogType; - this.isChangeLogEntry = isChangeLogEntry; - this.hidden = hidden; - this.hintDictionary = hintDictionary; - this.legalBasisList = legalBasisList; } } diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.ts b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.ts index 109c1958d..d532853c8 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.ts @@ -421,7 +421,7 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni async downloadOriginalFile(file: File) { const data = await this._fileManagementService - .downloadOriginalFile(this.dossierId, this.fileId, 'response', true, file.cacheIdentifier) + .downloadOriginalFile(this.dossierId, this.fileId, 'response', file.cacheIdentifier) .toPromise(); download(data, file.filename); } diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/file-preview-state.service.ts b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/file-preview-state.service.ts index 6d569c03b..91060677d 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/file-preview-state.service.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/file-preview-state.service.ts @@ -74,6 +74,6 @@ export class FilePreviewStateService { } #downloadOriginalFile(cacheIdentifier: string): Observable { - return this._fileManagementService.downloadOriginalFile(this.dossierId, this.fileId, 'body', true, cacheIdentifier); + return this._fileManagementService.downloadOriginalFile(this.dossierId, this.fileId, 'body', cacheIdentifier); } } diff --git a/apps/red-ui/src/app/services/entity-services/file-management.service.ts b/apps/red-ui/src/app/services/entity-services/file-management.service.ts index cc5dfa525..a2187df9c 100644 --- a/apps/red-ui/src/app/services/entity-services/file-management.service.ts +++ b/apps/red-ui/src/app/services/entity-services/file-management.service.ts @@ -36,26 +36,16 @@ export class FileManagementService extends GenericService { return this._post(body, `delete/restore/${dossierId}`).pipe(switchMap(() => this._filesService.loadAll(dossierId))); } - downloadOriginalFile(dossierId: string, fileId: string, observe?: 'body', inline?: boolean, indicator?: string): Observable; - downloadOriginalFile( - dossierId: string, - fileId: string, - observe?: 'response', - inline?: boolean, - indicator?: string, - ): Observable>; + downloadOriginalFile(dossierId: string, fileId: string, observe?: 'body', indicator?: string): Observable; + downloadOriginalFile(dossierId: string, fileId: string, observe?: 'response', indicator?: string): Observable>; @Validate() downloadOriginalFile( @RequiredParam() dossierId: string, @RequiredParam() fileId: string, observe: 'body' | 'response' = 'body', - inline?: boolean, indicator?: string, ) { - const queryParams: QueryParam[] = []; - if (inline) { - queryParams.push({ key: 'inline', value: inline }); - } + const queryParams: QueryParam[] = [{ key: 'inline', value: true }]; if (indicator) { queryParams.push({ key: 'indicator', value: indicator }); From 009033b8db3e0f7deda8ec51a96a494ac25a28b7 Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Mon, 7 Feb 2022 17:29:08 +0200 Subject: [PATCH 11/24] fix redirect to first page after OCR --- .../screens/file-preview-screen/file-preview-screen.component.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.ts b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.ts index d532853c8..cdc3da485 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.ts @@ -277,6 +277,7 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni selectPage(pageNumber: number) { this.viewerComponent.utils.navigateToPage(pageNumber); this._workloadComponent?.scrollAnnotationsToPage(pageNumber, 'always'); + this._lastPage = pageNumber.toString(); } openManualAnnotationDialog(manualRedactionEntryWrapper: ManualRedactionEntryWrapper) { From 9281df5766c22bebc6714f7be385c457a7f329b6 Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Mon, 7 Feb 2022 17:40:58 +0200 Subject: [PATCH 12/24] share last blob --- .../file-preview-screen/services/file-preview-state.service.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/file-preview-state.service.ts b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/file-preview-state.service.ts index 91060677d..da0460b68 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/file-preview-state.service.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/file-preview-state.service.ts @@ -6,7 +6,7 @@ import { DossiersService } from '../../../../../services/entity-services/dossier import { ActivatedRoute } from '@angular/router'; import { FilesMapService } from '../../../../../services/entity-services/files-map.service'; import { PermissionsService } from '../../../../../services/permissions.service'; -import { boolFactory } from '@iqser/common-ui'; +import { boolFactory, shareLast } from '@iqser/common-ui'; import { filter, startWith } from 'rxjs/operators'; import { FileManagementService } from '../../../../../services/entity-services/file-management.service'; @@ -70,6 +70,7 @@ export class FilePreviewStateService { pairwise(), filter(([oldFile, newFile]) => oldFile?.cacheIdentifier !== newFile.cacheIdentifier), switchMap(([, newFile]) => this.#downloadOriginalFile(newFile.cacheIdentifier)), + shareLast(), ); } From 21c9c83064ea050c2d6b7dddae95b4f8239ce524 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Mon, 7 Feb 2022 17:52:47 +0200 Subject: [PATCH 13/24] Changes on redaction colors --- .../default-colors/default-colors-screen.component.ts | 2 +- .../table-item/file-workload/file-workload.component.ts | 2 +- .../dossier-workload-column.component.ts | 2 +- apps/red-ui/src/assets/i18n/en.json | 2 +- .../lib/dossier-templates/dossier-template-stats.model.ts | 7 ++++++- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/apps/red-ui/src/app/modules/admin/screens/default-colors/default-colors-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/default-colors/default-colors-screen.component.ts index a81508f20..5bfcba4ce 100644 --- a/apps/red-ui/src/app/modules/admin/screens/default-colors/default-colors-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/default-colors/default-colors-screen.component.ts @@ -55,7 +55,7 @@ export class DefaultColorsScreenComponent extends ListingComponent imp await this._loadColors(); } - openEditColorDialog($event: any, color: { key: DefaultColorType | string; value: string }) { + openEditColorDialog($event: MouseEvent, color: { key: DefaultColorType | string; value: string }) { this._dialogService.openDialog( 'editColor', $event, diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/table-item/file-workload/file-workload.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/table-item/file-workload/file-workload.component.ts index cd7ceaddc..ab3b664e1 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/table-item/file-workload/file-workload.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/table-item/file-workload/file-workload.component.ts @@ -40,7 +40,7 @@ export class FileWorkloadComponent { } get redactionColor() { - return this._getDictionaryColor('redaction'); + return this._getDictionaryColor('dossier_redaction'); } private _getDictionaryColor(type: string) { diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossier-workload-column/dossier-workload-column.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossier-workload-column/dossier-workload-column.component.ts index 4989a0a84..a78074fe6 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossier-workload-column/dossier-workload-column.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossier-workload-column/dossier-workload-column.component.ts @@ -23,6 +23,6 @@ export class DossierWorkloadColumnComponent { } get redactionColor() { - return this._appStateService.getDictionaryColor('redaction', this.dossier.dossierTemplateId); + return this._appStateService.getDictionaryColor('dossier_redaction', this.dossier.dossierTemplateId); } } diff --git a/apps/red-ui/src/assets/i18n/en.json b/apps/red-ui/src/assets/i18n/en.json index 2771a953f..4cfab2283 100644 --- a/apps/red-ui/src/assets/i18n/en.json +++ b/apps/red-ui/src/assets/i18n/en.json @@ -498,7 +498,7 @@ "defaultColor": "Default Color", "dictionaryRequestColor": "Dictionary Request", "ignoredHintColor": "Ignored Hint", - "manualRedactionColor": "Manual Redaction", + "manualRedactionColor": "Redaction Color", "notRedacted": "Skipped", "previewColor": "Preview", "requestAdd": "Request Add", diff --git a/libs/red-domain/src/lib/dossier-templates/dossier-template-stats.model.ts b/libs/red-domain/src/lib/dossier-templates/dossier-template-stats.model.ts index ad19e2a82..50bb0b7d9 100644 --- a/libs/red-domain/src/lib/dossier-templates/dossier-template-stats.model.ts +++ b/libs/red-domain/src/lib/dossier-templates/dossier-template-stats.model.ts @@ -18,6 +18,11 @@ export class DossierTemplateStats implements IDossierTemplateStats { } dictionarySummary(type: string): DictionarySummary | undefined { - return this._dictionarySummaryMap.get(type); + const defaultValue: DictionarySummary = { entriesCount: 0, id: type, name: type, type }; + if (!this._dictionarySummaryMap.get(type)) { + // TODO + console.error(`Missing type ${type}`); + } + return this._dictionarySummaryMap.get(type) || defaultValue; } } From 39c7e8ab288b79ab4dcd15b5f10724555c3c39c9 Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Mon, 7 Feb 2022 17:03:57 +0100 Subject: [PATCH 14/24] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3215 -> 3214 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 12d60c6ca..27047f709 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.207.0", + "version": "3.208.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index ef7aca227f461be4b0ba837265ac1278b57760db..a43f27bd918965363d88f08550183e7ed034f242 100644 GIT binary patch literal 3214 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 A%>V!Z literal 3215 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 Date: Mon, 7 Feb 2022 18:21:10 +0200 Subject: [PATCH 15/24] RED-3369: Set base URL for manual by env variable --- apps/red-ui/src/app/app.module.ts | 14 ++++++++++++- apps/red-ui/src/assets/config/config.json | 3 ++- apps/red-ui/src/assets/help-mode/links.json | 22 ++++++++++----------- docker/red-ui/docker-entrypoint.sh | 2 ++ libs/common-ui | 2 +- 5 files changed, 29 insertions(+), 14 deletions(-) diff --git a/apps/red-ui/src/app/app.module.ts b/apps/red-ui/src/app/app.module.ts index a455d9832..460e10808 100644 --- a/apps/red-ui/src/app/app.module.ts +++ b/apps/red-ui/src/app/app.module.ts @@ -31,7 +31,14 @@ import { SpotlightSearchComponent } from '@components/spotlight-search/spotlight import { PruningTranslationLoader } from '@utils/pruning-translation-loader'; import { DatePipe } from '@shared/pipes/date.pipe'; import * as links from '../assets/help-mode/links.json'; -import { HELP_DOCS, IqserHelpModeModule, MAX_RETRIES_ON_SERVER_ERROR, ServerErrorInterceptor, ToastComponent } from '@iqser/common-ui'; +import { + HELP_DOCS, + IqserHelpModeModule, + MANUAL_BASE_URL, + MAX_RETRIES_ON_SERVER_ERROR, + ServerErrorInterceptor, + ToastComponent, +} from '@iqser/common-ui'; import { KeycloakService } from 'keycloak-angular'; import { GeneralSettingsService } from '@services/general-settings.service'; import { BreadcrumbsComponent } from '@components/breadcrumbs/breadcrumbs.component'; @@ -127,6 +134,11 @@ const components = [AppComponent, AuthErrorComponent, NotificationsComponent, Sp provide: HELP_DOCS, useValue: links, }, + { + provide: MANUAL_BASE_URL, + useFactory: (configService: ConfigService) => configService.values.MANUAL_BASE_URL, + deps: [ConfigService], + }, { provide: MAX_RETRIES_ON_SERVER_ERROR, useFactory: (configService: ConfigService) => configService.values.MAX_RETRIES_ON_SERVER_ERROR, diff --git a/apps/red-ui/src/assets/config/config.json b/apps/red-ui/src/assets/config/config.json index 0de263316..82924c3df 100644 --- a/apps/red-ui/src/assets/config/config.json +++ b/apps/red-ui/src/assets/config/config.json @@ -19,5 +19,6 @@ "OAUTH_IDP_HINT": null, "OAUTH_URL": "https://dev-05.iqser.cloud/auth/realms/redaction", "RECENT_PERIOD_IN_HOURS": 24, - "SELECTION_MODE": "structural" + "SELECTION_MODE": "structural", + "MANUAL_BASE_URL": "https://docs.redactmanager.com/3.0" } diff --git a/apps/red-ui/src/assets/help-mode/links.json b/apps/red-ui/src/assets/help-mode/links.json index 8feb115f8..01003c465 100644 --- a/apps/red-ui/src/assets/help-mode/links.json +++ b/apps/red-ui/src/assets/help-mode/links.json @@ -1,42 +1,42 @@ { "open-usermenu": { - "en": "https://docs.redactmanager.com/2.2/en/user-menu-and-profile.html", + "en": "/en/23200-user-menu-and-account.html", "de": "", "it": "", "fr": "" }, "filter-dossier-list": { - "en": "https://docs.redactmanager.com/2.2/en/creating-and-managing-dossiers/dossier-overview/dossier-list.html#UUID-e5177955-3e92-8627-0732-af8d4a2036e2", + "en": "/en/26024-features-and-actions-in-the-dossier-overview.html", "de": "", "it": "", "fr": "" }, "filter-document-list": { - "en": "https://docs.redactmanager.com/preview/en/create-and-manage-dossier/dossier-overview/dossier-list.html", + "en": "/en/create-and-manage-dossier/dossier-overview/dossier-list.html", "de": "", "it": "", "fr": "" }, "dossiers-quickfilter-my-dossiers": { - "en": "https://docs.redactmanager.com/preview/en/create-and-manage-dossier/dossier-overview/dossier-list.html", + "en": "/en/create-and-manage-dossier/dossier-overview/dossier-list.html", "de": "", "it": "", "fr": "" }, "search-in-entire-application": { - "en": "https://docs.redactmanager.com/2.2/en/searching-the-application.html", + "en": "/en/15632-searching-the-application.html", "de": "", "it": "", "fr": "" }, "open-notifications": { - "en": "https://docs.redactmanager.com/2.2/en/notifications.html", + "en": "/en/15471-notifications.html", "de": "", "it": "", "fr": "" }, "dossier-list": { - "en": "https://docs.redactmanager.com/2.2/en/20941-dossier-liste.html", + "en": "/en/20941-dossier-liste.html", "de": "", "it": "", "fr": "" @@ -48,7 +48,7 @@ "fr": "" }, "new-dossier-button": { - "en": "https://docs.redactmanager.com/2.2/en/creating-and-managing-dossiers/dossier-overview/creating-a-new-dossier.html", + "en": "/en/creating-and-managing-dossiers/dossier-overview/creating-a-new-dossier.html", "de": "", "it": "", "fr": "" @@ -90,19 +90,19 @@ "fr": "" }, "standard-view": { - "en": "https://docs.redactmanager.com/2.2/en/editing-documents-in-the-editor/views-in-the-editor/standard-view.html", + "en": "/en/editing-documents-in-the-editor/views-in-the-editor/standard-view.html", "de": "", "it": "", "fr": "" }, "delta-view": { - "en": "https://docs.redactmanager.com/2.2/en/editing-documents-in-the-editor/views-in-the-editor/delta-view.html", + "en": "/en/editing-documents-in-the-editor/views-in-the-editor/delta-view.html", "de": "", "it": "", "fr": "" }, "preview-view": { - "en": "https://docs.redactmanager.com/2.2/en/editing-documents-in-the-editor/views-in-the-editor/preview.html", + "en": "/en/editing-documents-in-the-editor/views-in-the-editor/preview.html", "de": "", "it": "", "fr": "" diff --git a/docker/red-ui/docker-entrypoint.sh b/docker/red-ui/docker-entrypoint.sh index afc21cb06..960624def 100755 --- a/docker/red-ui/docker-entrypoint.sh +++ b/docker/red-ui/docker-entrypoint.sh @@ -23,6 +23,7 @@ OAUTH_IDP_HINT="${OAUTH_IDP_HINT:-}" OAUTH_URL="${OAUTH_URL:-/auth}" RECENT_PERIOD_IN_HOURS="${RECENT_PERIOD_IN_HOURS:-24}" SELECTION_MODE="${SELECTION_MODE:-structural}" +MANUAL_BASE_URL="${MANUAL_BASE_URL:-https://docs.redactmanager.com/3.0}" @@ -47,6 +48,7 @@ echo '{ "OAUTH_URL":"'"$OAUTH_URL"'", "RECENT_PERIOD_IN_HOURS":'"$RECENT_PERIOD_IN_HOURS"', "SELECTION_MODE":"'"$SELECTION_MODE"'" + "MANUAL_BASE_URL":"'"$MANUAL_BASE_URL"'" }' > /usr/share/nginx/html/ui/assets/config/config.json echo 'Env variables: ' diff --git a/libs/common-ui b/libs/common-ui index b808e4661..e5794fd77 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit b808e4661e56aa93baca96c57f910443437112d4 +Subproject commit e5794fd7728e30655e7259eedd5d98bec518e22d From cf956106bcf2c446035aee733bf46e6e98f9dca7 Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Mon, 7 Feb 2022 17:26:53 +0100 Subject: [PATCH 16/24] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3214 -> 3216 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 27047f709..7059b8c8c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.208.0", + "version": "3.209.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index a43f27bd918965363d88f08550183e7ed034f242..ed68312805494d55e979a62861e3cb359b8a4bb4 100644 GIT binary patch delta 3137 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 H08jt`Ma%&S From ae2f70567e09eca95c6f32da8cbe112f0d51b17a Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Mon, 7 Feb 2022 17:37:06 +0100 Subject: [PATCH 17/24] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3216 -> 3215 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7059b8c8c..aaf32b8b3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.209.0", + "version": "3.210.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index ed68312805494d55e979a62861e3cb359b8a4bb4..a37cbe74e3028080d557e29eb7e1250b01c16028 100644 GIT binary patch delta 3097 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 Date: Mon, 7 Feb 2022 18:37:56 +0200 Subject: [PATCH 18/24] RED-3372: Show edit icon for justifications only in dev mode --- .../screens/justifications/table-item/table-item.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/red-ui/src/app/modules/admin/screens/justifications/table-item/table-item.component.html b/apps/red-ui/src/app/modules/admin/screens/justifications/table-item/table-item.component.html index 8424e1c7d..84974898f 100644 --- a/apps/red-ui/src/app/modules/admin/screens/justifications/table-item/table-item.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/justifications/table-item/table-item.component.html @@ -16,7 +16,7 @@
Date: Mon, 7 Feb 2022 17:41:56 +0100 Subject: [PATCH 19/24] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3215 -> 3215 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index aaf32b8b3..5101db61e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.210.0", + "version": "3.211.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index a37cbe74e3028080d557e29eb7e1250b01c16028..34b57c45ee161b488a69739580e5da4302e3294f 100644 GIT binary patch delta 3042 zcmV<83mx>28IKu|cvFGzEMD1;?Jt+FQ1F9LGiXiCaD~v1vDDA8&2|0DA2oZ*Nd0|T z!|D3>+@*Kc|Buo3>c1i}j+h*qM|J&SYj6cG{3-o=j^lZ~{+D12wzCLa|B=gAf9Bct zojvo#-$49bh`&qmcLjePF~<>e95Kfca~v_p;d6cy)4I&?(nmo3mA}gvj z`p8{*uJ4TDQ0fQ}E)1)t@5mZ0e|)}x?0S&Pa*m)cqdBoUQdY}$;ucpMnp>d08?E%Z=lpFkeMClH8@j{bzTTK9Fzii*PAUdDmof5QTu$zkquifu3x2##?Y z1GmxTo;)1he2hM)c}6H}@(ud<=3)-WERX=nEXU|cFaMFa%jKou7NGxLRQE|%JPcsn zDOfvldf2~#W||txn|H7{NJ>ZHO`&k?+aASdByZR|Qf*28{yVNpDZRy0Z(f8Cf!3MR26UXSIgCQ6egzZXGRhhI!n;r8&Kha`uUX^wdE(=k|tq)M{) z-$p5c{u+HLivK_19B)Wf57t>uYR+Hv>wH;c8LY!)_8F>; zVWh_kd-DNjY=rW566G>dP~JD7Rz^?=8D|J4%B8YJf1k&c71hvI?MZ71q7jvlYe#8D z$@~9GLQ_&TJSol~;T#g{Ozs2Q*%{&&Qsede??6*Ex1k}P={@1$9?u^#pb?MQo7@bx z8}DfN^e_MW_kU`1mA?PBN$7^4FDfvP{CbFOdN%};BR$!-DpEHYn@S*)0RAmoI0?X! zV%qsKe;LvGh#|Acz3cQ*aAou0#{UV3CX;Klb896zp2*Tp%f$51=(#PSqg6XbQwUWV z4_8XQ#E<8AOsKXv6EtU3g9c09>S155(^J$7%EV7E84iS2og{}VKt~1{45T~8wGUR1 z!{Ttf%J-8ejuSY2l{%+oNth-uo-VY>(loR*e+<8=#PvW@4jB7Wp9&`n~-U7X?E0`<>EQ@|qgNDkA0`HKKi9H!+jW|ykj9S$u ze+2Gadxl(3{P9h*+%hy0K8r@rv zvN7TKT1T!NSa$O^6?uZ3RIRwQA(u1dw~=TtYUf$8DGX;s5VqUg zv^D)4#@K`^|h;AlHaf3zceN4nSpFcuTE>T+9~nLY+v3gK`sHj|9Uid3&V zcJ6)`I81YYP2fbU1-_jMa9A~fG*Pi5L)EeIP3 z$(Smkx1HYIMaTL8y~Zd4YoKof4iZ5-nJ8keTV~q zq^N+f21@QK!ZjIEcl5!*Znv5a5;P8X_b@u2ibe0U-xF@b)taBzLBJI(3zZkY80(X` z89yv*_&V^7(Q>R!*Q`xFX87}bvjhxR4Ye>7LxY=25%D<;GrsDXBPE!;jaP~(>j5fRR!D=6WSg&YVM*D3=j z^(67_x1R9!rzE=l!8Mb5qoW3WBTV{V<5|Z@r7K;&sO+dKHR4Kzwo;PTnvK55L`YKo zSE)M}xA%E-ad>NZax!Tb!>#z-;b=dA$@poo;x1?FQU)W$e;Q3z?c9-)A3#CI_Zk-p7*>1w;M+4u1!iaw@S_LEzaA|H znkzNo8yu?KA7;{)VOrfvr?_d)Ow{+GN#P;npe^gx|H`QkvI zblgLO0nCx_3kKx8_*uaa-%B!RUAx^Qf&rg<-wvE2$i6^7NszriE~_FUF<74{(dIQH z<$+hX6Dgi!N>RqL)5YJPLwwVax_={QtdRN{uMvw!f5B1Qf7v3=AjABT1iM;RKCkTE zXhI+PK9ohLEMnRajn)hnBdo`~|8<#&kLI1Z=iXE@-@eseqf7o;8}ZlLmorquhgFk` z3cvdkABzh1QfG$5mpOcsU2fmyc3ocI<#kH(fh|xP1qwlF071McP zz<(ZF-YDrit!R)K$GPLa;3GiH5v&_Ly8N9)kQ7lfb?N<6|F13Qc5df(Zs&Gx=XP%A kc5df(Zs&Gx=XP%Ac5df(Zs&Gxzu5MF6@<5_1OQL~09=~g$p8QV delta 3042 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 Date: Mon, 7 Feb 2022 19:00:33 +0200 Subject: [PATCH 20/24] RED-2881: Handle deleted users display --- apps/red-ui/src/app/services/user.service.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/red-ui/src/app/services/user.service.ts b/apps/red-ui/src/app/services/user.service.ts index 21bcd5fc4..99b70a1a4 100644 --- a/apps/red-ui/src/app/services/user.service.ts +++ b/apps/red-ui/src/app/services/user.service.ts @@ -113,8 +113,8 @@ export class UserService extends EntitiesService { find(id: string): User | undefined { if (id?.toLowerCase() === 'system') { - return new User({ email: 'System' }, [], 'system'); + return new User({ username: 'System' }, [], 'system'); } - return super.find(id); + return super.find(id) || new User({ username: 'Deleted User' }, [], 'deleted'); } } From 03b11780ffd48574351a068eaafbe9fa5f4e5052 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Tue, 8 Feb 2022 12:21:01 +0200 Subject: [PATCH 21/24] RED-3358: Select list items with ctrl + left click --- libs/common-ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/common-ui b/libs/common-ui index e5794fd77..6b4fe281c 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit e5794fd7728e30655e7259eedd5d98bec518e22d +Subproject commit 6b4fe281cb6e23fb541ce75ead740a5678c968b8 From f4f02bac87b1ed4be145542d4a8af11a2369498b Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Tue, 8 Feb 2022 11:26:02 +0100 Subject: [PATCH 22/24] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3215 -> 3214 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5101db61e..4ffdf370e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.211.0", + "version": "3.212.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index 34b57c45ee161b488a69739580e5da4302e3294f..6e2d05391ee3267e8340a1e86d06de53de9269b5 100644 GIT binary patch delta 2921 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 To!hznV%z@#ydRV308jt`Y)QbL delta 2921 zcmV-v3zqbb8IKu|PXfe}kx?8J(;0kr?Um!Zw(a_X?<`)~j_og(k$@t9rFYiio&b^T#$a0M^?DgAqn<9WUQmtYIFvj|-O6|%oyR?Y1fuKzbtimRG1botk> zzpz%9cNcHywk#@!nku`xOc^Wd_03IEeuh*2}Z1%88*&BO*=Gpe0J@duiK>S^Zzf19V1%Dke#}RWJF~<>e95Kh?bAA)k zy3Fv?C-nm^FR$+|=A1s9St-FWsnEYJ5PE0PJSLB8Ie`n46CN^$Qmtwe7=C}dXURQQQ;`fa`j#BVJ#Rm)gpw>4E6G(H+x|628Wt6oBXY_|R2LbI(MPct2Ql6a zS{06IQv>HMT?RRSCrNT5E$cNHLPXLc>l9y{Hh6UYQH0BnXsl8F_hCtIVu z$i+S!&z_ps$p$o)5vy#%j7FF%c0xFswx0LFzec#lq3g=m&CCEeSAJMDnj}TlQ-@A+ zTT4H-bBd0C?#Ozts2NNTJ*Rmt?W1#iLO;C#Hx-R}2miDf*+MTPoUmpKu?jg!#sBMP zY%q}E4p<+oriBkVrfEu%ipFNY(f9(=%^Q6wafwfE@5X*t<8jKPPHWOY*gBzA&8#S; z(%A?xwDN&@xkOODf1Ut@%CMeYv)wvrzA}`=kcH}A z#)05}!vdYjVeWH^Z7>rEj&T|Tx6$REJRIJ9j6SD%Mks6Y4f^=zVh+eGkO0Xn$LL8f z|B<-M<)z>jp#NS}_eoYf3}D?USUYlh*uQ~hni|TRcd$4}N=M;Mp>XWm9>r%QZ`eCh zZAt$AJFZ}4l~s|@Y=F$4q{m*W$Z(WaG)ftN-Iz!UCb1-5kL9Z-N|PqP7eQEuUrbZs z_VAyFB!`u0j(GCZF<6A8O0xIgMk#^*8ht5>|3BdzZ%9=S)>%$!&R_NGd|6}}tixsY z8L7x5)2m6MSALJ|_eEV(AQxz1q{j<;^8sgUgz|P0J>lUV&mS_N5s%oL+zhrG?`Zh+FaP`Ze`<7-14@W%J<1{|SgDlWVkdYb80J z$kI;B#PrbUxhnB!??NM+O-Tq&vp74_1)F;&8mm_md}%6F7a9I;Ukxm?kiuF0{$gG_*8-CM&F< zjEt&g8`j1|L9xQ5D40kHp(rQvms)(aCD2}-XoXOVVIOvVY^vNEVw8EpfY7OGYqyic zMq2ot?2gaB42wfy`mvb+7|?gHK_=bYc~q27;<&?%Yd5YQbOpTL0==y(m@Eb?i+)ps zhRTWp?~sv+JsD<=I8PajTGb|h1nyjWhFnkl@lCVbHG%{MBBDBoqewW*A?mij#q7AA zKsrN?>(J8an6E>1h?91PmpI74+1br z!j%^q23@0~x+XV9C2%L5XbC;)_K7l#c_h|RkGw) z2VR#c=J>5O+KyV}Mn8D=C=GqEY4Cff(zRWV0^ z??>eKbsH-pG~Z-TW!hgY2pb6GN_<=*Qf2#k2&9^wze8U1jxsDBtvbbV@z5Q!scxA2 z2v@J$I;#s5TKW3j4bFU55DdyxjTXCSWCD0t`0O=lqXkTVqn2|C<65+v3}p^KkQyx+{KP+qbI`ECra;#0)tW9^IO<@|sdd0WJfo!E0m2|dB z{?jXY;_^^3BhU3DPrF||Yr8JV;jRN1)sF>-_9fGQG*{Yee@b90Cd418fp&N;+&(c- zB=POHp78dkB)a{* z?5Ha>;!1_KQj*r1jlRf4NK*Y*sXG_9_jz-1cx!laGHDmXt@zyGXg`3-_-U}>E@$gf z1|!6O8f0)K@0p6kVoxQx9%qsL(WJN(E5d&Qlhc=v>ZH!c?mM9E+>w$WKtaa$8W#!} zR(ty3+cQW7W@r)cqX);o9xVo%D>dO89I4s3)#G0Nu#QFp@ Date: Tue, 8 Feb 2022 13:24:36 +0200 Subject: [PATCH 23/24] - updated dossier dictionary entries to not be editable when there is no owner set; - updated members selection list to appear only after the owner is set and saved; --- .../edit-dossier-dictionary.component.ts | 2 +- .../edit-dossier-team.component.html | 6 ++--- .../edit-dossier-team.component.ts | 22 +++++++++++++++---- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.ts index 6944b4683..1adf41aa0 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.ts @@ -57,7 +57,7 @@ export class EditDossierDictionaryComponent implements EditDossierSectionInterfa async ngOnInit() { this._loadingService.start(); - this.canEdit = this._permissionsService.isDossierMember(this.dossier); + this.canEdit = this._permissionsService.canEditDossier(this.dossier); await this._updateDossierDictionary(); this.form = this._getForm(); this._loadingService.stop(); diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component.html b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component.html index 5d2053801..bb9c665dc 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component.html +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component.html @@ -15,7 +15,7 @@ {{ 'assign-dossier-owner.dialog.no-reviewers' | translate }}
- + { - if (!this.isApprover(owner)) { - this.toggleApprover(owner); + if (this.hasOwner) { + if (!this.isApprover(owner)) { + this.toggleApprover(owner); + } + // If it is an approver, it is already a member, no need to check + this._updateLists(); } - // If it is an approver, it is already a member, no need to check - this._updateLists(); }); this._updateLists(); } From 7f7b28c4982d44aefea9e3b7efb7acfb3fb3ac2c Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Tue, 8 Feb 2022 12:28:47 +0100 Subject: [PATCH 24/24] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3214 -> 3214 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4ffdf370e..858c13e93 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.212.0", + "version": "3.213.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index 6e2d05391ee3267e8340a1e86d06de53de9269b5..72e06b3ffcf7eefbac990b766432040f682fd67b 100644 GIT binary patch delta 2489 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 DcklI1