From 67acba2fde2ecd1033ba8fbad96ff9675aa184f7 Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Wed, 11 May 2022 18:00:06 +0200 Subject: [PATCH 1/7] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3262 -> 3261 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a27b30f54..551386021 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.468.0", + "version": "3.469.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index 88c551af15aa5ffc9f1de5e3d9394e65123dff94..4a55d7266e2d277046e524a8eceb599d469bc0ba 100644 GIT binary patch delta 3173 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 delta 3174 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 From 0f45ea88ff862e6d31d31ac2193d97c99dae4d51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Thu, 12 May 2022 00:17:52 +0300 Subject: [PATCH 2/7] RED-3953: Only owners can hard delete dossiers --- ...sign-reviewer-approver-dialog.component.ts | 4 - .../src/app/services/permissions.service.ts | 83 +++++++++---------- 2 files changed, 38 insertions(+), 49 deletions(-) diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts index 2f7bc49bb..00fefd5c1 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts @@ -94,10 +94,6 @@ export class AssignReviewerApproverDialogComponent { return user; } - isOwner(userId: string): boolean { - return userId === this.selectedUser; - } - async save() { this._loadingService.start(); try { diff --git a/apps/red-ui/src/app/services/permissions.service.ts b/apps/red-ui/src/app/services/permissions.service.ts index ecd0da266..cde00d67a 100644 --- a/apps/red-ui/src/app/services/permissions.service.ts +++ b/apps/red-ui/src/app/services/permissions.service.ts @@ -12,19 +12,21 @@ export class PermissionsService { private readonly _featuresService: FeaturesService, ) {} - canEditEntities(user = this._userService.currentUser): boolean { - return user.isAdmin; + get #userId(): string { + return this._userService.currentUser.id; } - canDeleteEntities(entity: Dictionary | Dictionary[], user = this._userService.currentUser): boolean { + canEditEntities(): boolean { + return this.isAdmin(); + } + + canDeleteEntities(entity: Dictionary | Dictionary[]): boolean { const entities = entity instanceof Dictionary ? [entity] : entity; - return ( - entities.length && this.canEditEntities(user) && entities.reduce((acc, _entity) => this._canDeleteEntity(_entity) && acc, true) - ); + return entities.length && this.canEditEntities() && entities.reduce((acc, _entity) => this._canDeleteEntity(_entity) && acc, true); } - canPerformDossierStatesActions(user = this._userService.currentUser): boolean { - return user.isAdmin; + canPerformDossierStatesActions(): boolean { + return this.isAdmin(); } isReviewerOrApprover(file: File, dossier: Dossier): boolean { @@ -74,7 +76,7 @@ export class PermissionsService { } isFileAssignee(file: File): boolean { - return file.assignee === this._userService.currentUser.id; + return file.assignee === this.#userId; } canDeleteFile(file: File | File[], dossier: Dossier): boolean { @@ -130,16 +132,16 @@ export class PermissionsService { return files.reduce((acc, _file) => this._canSetUnderApproval(_file, dossier) && acc, true); } - isOwner(dossier: Dossier, user = this._userService.currentUser): boolean { - return dossier.ownerId === user.id; + isOwner(dossier: IDossier): boolean { + return dossier.ownerId === this.#userId; } - isApprover(dossier: Dossier, user = this._userService.currentUser): boolean { - return dossier.approverIds.indexOf(user.id) >= 0; + isApprover(dossier: Dossier): boolean { + return dossier.approverIds.indexOf(this.#userId) >= 0; } - isDossierMember(dossier: Dossier, user = this._userService.currentUser): boolean { - return dossier.memberIds.includes(user.id); + isDossierMember(dossier: Dossier): boolean { + return dossier.memberIds.includes(this.#userId); } canPerformAnnotationActions(file: File, dossier: Dossier): boolean { @@ -172,53 +174,51 @@ export class PermissionsService { } canDeleteDossier(dossier: IDossier): boolean { - return dossier.ownerId === this._userService.currentUser.id; + return this.isOwner(dossier); } canHardDeleteDossier(dossier: IDossier): boolean { - return this._userService.currentUser.isManager; + return this.isOwner(dossier); } canRestoreDossier(dossier: IDossier): boolean { - return this._userService.currentUser.isManager; + return this.isManager(); } canArchiveDossier(dossier: Dossier): boolean { - return ( - this._featuresService.isEnabled(DOSSIERS_ARCHIVE) && dossier.isActive && dossier.ownerId === this._userService.currentUser.id - ); + return this._featuresService.isEnabled(DOSSIERS_ARCHIVE) && dossier.isActive && this.isOwner(dossier); } - canEditDossier(dossier: Dossier, user = this._userService.currentUser): boolean { - return user.isManager && !!dossier?.ownerId; + canEditDossier(dossier: Dossier): boolean { + return this.isManager() && !!dossier?.ownerId; } - canEditDossierDictionary(dossier: Dossier, user = this._userService.currentUser): boolean { - return dossier.isActive && this.isDossierMember(dossier, user); + canEditDossierDictionary(dossier: Dossier): boolean { + return dossier.isActive && this.isDossierMember(dossier); } - canEditDossierDictionaryDisplayName(dossier: Dossier, user = this._userService.currentUser): boolean { - return dossier.isActive && this.isOwner(dossier, user); + canEditDossierDictionaryDisplayName(dossier: Dossier): boolean { + return dossier.isActive && this.isOwner(dossier); } - canEditDossierDictionaryAddAction(dossier: Dossier, user = this._userService.currentUser): boolean { - return dossier.isActive && this.isOwner(dossier, user); + canEditDossierDictionaryAddAction(dossier: Dossier): boolean { + return dossier.isActive && this.isOwner(dossier); } - canEditDossierAttributes(dossier: Dossier, user = this._userService.currentUser): boolean { - return dossier.isActive && this.isOwner(dossier, user); + canEditDossierAttributes(dossier: Dossier): boolean { + return dossier.isActive && this.isOwner(dossier); } canEditTeamMembers(): boolean { return this.isManager(); } - isAdmin(user = this._userService.currentUser): boolean { - return user.isAdmin; + isAdmin(): boolean { + return this._userService.currentUser.isAdmin; } - isManager(user = this._userService.currentUser): boolean { - return user.isManager; + isManager(): boolean { + return this._userService.currentUser.isManager; } canAddComment(file: File, dossier: Dossier): boolean { @@ -230,7 +230,7 @@ export class PermissionsService { } canDeleteComment(comment: IComment, file: File, dossier: Dossier) { - return (comment.user === this._userService.currentUser.id || this.isApprover(dossier)) && !file.isApproved; + return (comment.user === this.#userId || this.isApprover(dossier)) && !file.isApproved; } canImportRedactions(file: File, dossier: Dossier) { @@ -265,18 +265,11 @@ export class PermissionsService { } private _canEnableAutoAnalysis(file: File, dossier: Dossier): boolean { - return ( - dossier.isActive && file.excludedFromAutomaticAnalysis && file.assignee === this._userService.currentUser.id && !file.isApproved - ); + return dossier.isActive && file.excludedFromAutomaticAnalysis && this.isFileAssignee(file) && !file.isApproved; } private _canDisableAutoAnalysis(file: File, dossier: Dossier): boolean { - return ( - dossier.isActive && - !file.excludedFromAutomaticAnalysis && - file.assignee === this._userService.currentUser.id && - !file.isApproved - ); + return dossier.isActive && !file.excludedFromAutomaticAnalysis && this.isFileAssignee(file) && !file.isApproved; } private _canAssignToSelf(file: File, dossier: Dossier): boolean { From 1f76733a5113cdb510f36ed92081aa04933bed3c Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Wed, 11 May 2022 23:20:17 +0200 Subject: [PATCH 3/7] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3261 -> 3260 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 551386021..04bfb2c1f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.469.0", + "version": "3.470.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index 4a55d7266e2d277046e524a8eceb599d469bc0ba..0cd5bce8fc351c98da8e8136545749def5be6195 100644 GIT binary patch delta 105 zcmV-v0G9u~8N3;gc2%YA`nI!pVLNsJT`2fjuo<+bX1GG=V{G-m*yg(Y<&T;@W~Ba5 z+Hku3J$LD!<^M6-Uinuf#u1Za^Qf-hZx1fug+C>K&sqA5UjDA_gZvkP@4i5>%;^gV LjnQSopU0!glPy@m`?dXTfIBnwsGXp^vfE|6-f#@|Qnq_L!0S zLute5^7lM@d6xgjXnW;fkr+ozj?JUGe!o4qfI+Ym^7ovjzv$&3ETP|71PeI-vCHWT M2p==*y8uuC07Y>-kpKVy From 01ea48b49a45d0b5a070ba25d333d0157efdcd51 Mon Sep 17 00:00:00 2001 From: Valentin Mihai Date: Thu, 12 May 2022 12:58:02 +0300 Subject: [PATCH 4/7] RED-3401 -> fixed latest comments --- .../file-workload.component.html | 4 ++-- .../view-switch/view-switch.component.html | 8 ++++---- .../file-preview-screen.component.ts | 2 +- apps/red-ui/src/assets/help-mode/links.json | 20 ++++--------------- 4 files changed, 11 insertions(+), 23 deletions(-) diff --git a/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.html b/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.html index 55cbdb3e3..2ba09b6b5 100644 --- a/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.html +++ b/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.html @@ -17,7 +17,7 @@ (click)="multiSelectService.activate()" *ngIf="(multiSelectService.enabled$ | async) && (multiSelectInactive$ | async)" class="all-caps-label primary pointer" - iqserHelpMode="bulk_select_annotations" + iqserHelpMode="workload_in_editor" translate="file-preview.tabs.annotations.select" > @@ -25,7 +25,7 @@ [actionsTemplate]="annotationFilterActionTemplate" [primaryFiltersSlug]="'primaryFilters'" [secondaryFiltersSlug]="'secondaryFilters'" - iqserHelpMode="workload_filter" + iqserHelpMode="workload_in_editor" > diff --git a/apps/red-ui/src/app/modules/file-preview/components/view-switch/view-switch.component.html b/apps/red-ui/src/app/modules/file-preview/components/view-switch/view-switch.component.html index 330c24b2c..d581379e8 100644 --- a/apps/red-ui/src/app/modules/file-preview/components/view-switch/view-switch.component.html +++ b/apps/red-ui/src/app/modules/file-preview/components/view-switch/view-switch.component.html @@ -4,7 +4,7 @@ [class.active]="viewModeService.isStandard" [matTooltip]="'file-preview.standard-tooltip' | translate" class="red-tab" - iqserHelpMode="view" + iqserHelpMode="views" > {{ 'file-preview.standard' | translate }} @@ -15,7 +15,7 @@ [disabled]="(canSwitchToDeltaView$ | async) === false" [matTooltip]="'file-preview.delta-tooltip' | translate" class="red-tab" - iqserHelpMode="view" + iqserHelpMode="views" > {{ 'file-preview.delta' | translate }} @@ -26,7 +26,7 @@ [disabled]="(canSwitchToRedactedView$ | async) === false" [matTooltip]="'file-preview.redacted-tooltip' | translate" class="red-tab" - iqserHelpMode="view" + iqserHelpMode="views" > {{ 'file-preview.redacted' | translate }} @@ -37,7 +37,7 @@ [disabled]="(canSwitchToHighlightsView$ | async) === false" [matTooltip]="'file-preview.text-highlights-tooltip' | translate" class="red-tab" - iqserHelpMode="view" + iqserHelpMode="views" > {{ 'file-preview.text-highlights' | translate }} diff --git a/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts b/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts index c3b681167..9d5845fcc 100644 --- a/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts @@ -62,7 +62,7 @@ const HelpModeKeys = { hint: 'hint_text', 'hint-ocr': 'hint_picture', 'hint-formula': 'picture', - 'hint-image': 'image', + 'hint-image': 'picture', }; @Component({ diff --git a/apps/red-ui/src/assets/help-mode/links.json b/apps/red-ui/src/assets/help-mode/links.json index b77c4b8c3..0f6d5a053 100644 --- a/apps/red-ui/src/assets/help-mode/links.json +++ b/apps/red-ui/src/assets/help-mode/links.json @@ -1,10 +1,4 @@ { - "bulk_select_annotations": { - "en": "/en/index-en.html?contextId=bulk_select_annotations", - "de": "", - "it": "", - "fr": "" - }, "document_features_in_dossier": { "en": "/en/index-en.html?contextId=document_features_in_dossier", "de": "", @@ -71,8 +65,8 @@ "it": "", "fr": "" }, - "view": { - "en": "/en/index-en.html?contextId=view", + "views": { + "en": "/en/index-en.html?contextId=views", "de": "", "it": "", "fr": "" @@ -89,12 +83,6 @@ "it": "", "fr": "" }, - "workload_filter": { - "en": "/en/index-en.html?contextId=workload_filter", - "de": "", - "it": "", - "fr": "" - }, "dossiers_quickfilter_my_dossiers": { "en": "/en/index-en.html?contextId=dossiers_quickfilter_my_dossiers", "de": "", @@ -263,8 +251,8 @@ "it": "", "fr": "" }, - "image": { - "en": "/en/index-en.html?contextId=image", + "workload_in_editor": { + "en": "/en/index-en.html?contextId=workload_in_editor", "de": "", "it": "", "fr": "" From 9577fbf07ee162bcf038b4bc2c5953c17e0d7b96 Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Thu, 12 May 2022 12:00:50 +0200 Subject: [PATCH 5/7] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3260 -> 3261 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 04bfb2c1f..ce73f1bec 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.470.0", + "version": "3.471.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index 0cd5bce8fc351c98da8e8136545749def5be6195..1822802c12ab2bd986f59f5d9cff10b0eef489ec 100644 GIT binary patch delta 3173 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 LL0}?208jt`dx9cW delta 3172 zcmV-q44d=48N3;gcYp2rwzGI)J9YqFDEL{h8MLNmxI*Y-Z1um`=DPglkD5JZr2bIa zaJu|Gcj=$y|1sKL`Bx;y5tC!{sIK2{4=&(^KP7+9S^A4!{;utV{1<`mzCiYeCDq*i z&*lF*N^w;ahA#i|-PhLY^5w;Ax-E-}p{B~NE>p(JdVO<~6n{CZ=bNI~WCWMAo=3&@ z1{A{mZGyKnd;I)QCCPvDEzavTWjLGNZ&LQ!o_V(Y(w_O^Zy^3I#NVa(yMn)tnB#~! zj+oo~mzUQsFXkLSoLMQsF{#i$E)aTa(L5#(YvjCyUn!xm z{~Gy$T|T_Lcz+tKSg%8p6crIGLmb_0s-nqbD=M<0TBA?gmFN1-cpXX|v4k_js_9#@ zMhl;BAiM76wwxm9%Ve&Wl>W`3+Smxh8cZB4#S?epMO?DNfwKp zlZI$#)m*9ij65)lhZCTB5or~|1ZEPzz$~^JGg>{Tc`h}iGkror--BbP$zwN9#lZkX z<%jI7^|QyZlBU^c|AY0wN( zaochV<`Ys;teLwyGEVUp(s&%Xb(4*cUVmmzQiqIcko?|B9KC*>(5hxulv3$9HLGHu zMi_w0unF2IOgo-FT|+zDss|1WL*U^0r+;r{P`llRA4cs`AA#S>k3Sy3Q#JIKas3+Q z#c3P&tW+3B^ORJSjd<7hgYUWd41GoOj8N9(8}!-D#T+18Kmy4uN5!mn8kc`h+~xAJ zTm849x=XU+ez4Y^T5Cs6zxJ=d?52iP>n&^!;fW5yn*!n3w>^k2N#3xxq}r1F-G5J9 zX2>e5BB9v;m_Lb+y;OnWD6MFeGP*IL6ih-%ydKK8O_U~0ekZ~Tef?q@3%6hYRY-E! zndXQGVjY1+NU9`z_hXb2=&#W?q7d;%oZ}6t>cKwCNy+)EexGlOEQ5VG&%PuTnIw8O ziS)|vf&H$iYYONBE{ybW;ke!7jDL+l-cEvCMheKgX3HZK6hibHf{JpkY|&RSWkogA zReMrff@p*##Qjm4QS$EJ5>Yr14UdH~2!4miI+N$Xc6N&RwUl`M?kA8`&2?x9XZlQd zxQFxm3~m7w-OHZ+9pWbEis2`#`yY+n+O(yqf=hjNNKM{SN z8eytF(sNrxN4s`}reISuZdVoS%S(magjZXf37j*ktp-ir>M?@cr^l#gl!>06Gkg(R zb(|dT038_wLEt)!dmqfYhJT6bc$W_mSDC_7eV00?Wl5OEFdh@Mk=68SsZ3T_K}s7{ z%{Hu!zF*P8q$rpOZfjtZ{H3OoLM8UgM9bn^2>YPxW1|qQKPZEFZHhNQbSm%Log{IP z7JkROqk}Bd=8$TCW<~%8^b>60NjG;M73HHSy_jL`#?_)*!1G9u+kd)($zs5==npkW zsH`Z^4gr)nlVR3~+Rk9qsx~1|=h`#mdg707n&qw$1SsGU)j=FZ!dMPLxBV?-$Mpoz z8FCy)odn?>4l@#i_T757D{QNSdBOS#7ULflKdjtZ-6l8*)wv;qsC#3HfOf6wp+14H zwG$`N$h*f?&IjT!wtqDQ?o-%rjl_orD+5!(DTWWVKWnvQG`}WbL@?ur4A_CMTz3KN za95lsz!-aed#z6Yp`p>81tA*~hOaf`O7XOtx2eb@#H4Djs13QCD8KbYgCP%wFvd~n zjfQ+9`@~Q%jmE;rSuwOU3ReuRjItC%w~8Abl5E46=XkMC#(!g+A0#4iGTe>if>*Yk zB(`CUGb@NlaH|o}s=HX2BrDs|2!DjQuDF+j;mQjQgRW7r7;?o>bZZ#m3K4|2%QzejafR@fezbB%LtG)EAohs1 zs-*c{%N55BVt-9WDap!h5tE%+65N+wid(yy#w5g(<=maB*HH!WI!x`x-r(wL&k?%T zCbS3SS_dSJDNAY22Oxm_t^yQzuqb~00p~IJclh}P$o5D~GggB-R)&^BLb@6%) zQ9*b|!Si&OX!j|O^f?FCSWMum^KES=`WR>_#0Pt!nSXdZ7NmL?wex>FPimU`k?)oc zqHx5O(m@!r_uA(f7f8o3win5g-|Ki?=$zv>*628DaadOa9L=1=IE}y;=671E(=Kyb zlt=lGqr}JusZ&B$DfI)0?7t%FT!|3~j`)2jgm6Q;-W!l!;ggA%mK^ZQZ6lCZysXth z=y;fsM1KuUrxrEYzU5t7cf|7jfc!p@WkrPMo9wYn``aU-1A*L$k4r!*Z(j`;scPr% zfET@?42uV=PH|k^cV$A=409VXaa|NBxbpq`isCLq8szO7E_P4I#NuHlxL2i(8ZZrd z@+M=?lIPTWr@^Y+%E7l!<&;}sBf=G!h>o zvS3*GiH`6qWCWGE24J@0pDyMQr$7YwhLU^nzMps+&7s@PI63boL*BS4q8fp3hKV`;i(X}SYx z3e^zWE50obL@Pb3q_I`vpI*olH~o?rS?H8B?SA#7?Ybm|yAB{!uage-tGkMpI@^~` z?CI-%&^EHpPmv|=u&-4DP=D%4mcyt$}m8{Pv=>c#LVK6NnK44US z0iF9_I-I~r$0X2$jO?v%Srrk9LAymlHm?~e4?KXL2cyRM+`3c9XE-?flkW%pT)Ji@W8YjHoa^g1#1w2JE_koPXMj<`Sc2Pgi^ zgQv0Zh7h|K&j%p}8bn3*LtTj8u@HSvg{Y{`v%TO*^F|@wX(@t)IF1zeIUlja?7_Oh zqm$i907(%wQ+NKq^uIDXw{ttUb33-Tn)X Kvt@(;Pyhf98%L4= From 2db7e522b1d8540ed37ae6d8739d2a71c544a19c Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Thu, 12 May 2022 14:43:13 +0300 Subject: [PATCH 6/7] RED-3800: move constants, fix watermark screen --- apps/red-ui/src/app/app-routing.module.ts | 3 +- .../src/app/guards/dossier-files-guard.ts | 3 +- .../guards/dossier-template-exists.guard.ts | 2 +- .../app/guards/entity-exists-guard.service.ts | 6 +- .../app/modules/admin/admin-routing.module.ts | 2 +- .../admin-side-nav.component.ts | 3 +- .../base-entity-screen.component.html | 2 +- .../base-entity-screen.component.ts | 19 ++--- .../dossier-template-breadcrumbs.component.ts | 17 ++-- .../default-colors-screen.component.ts | 21 +++-- ...ier-attributes-listing-screen.component.ts | 3 +- ...sier-templates-listing-screen.component.ts | 2 - .../entities-listing-screen.component.ts | 3 +- .../dictionary/dictionary-screen.component.ts | 21 +++-- .../entities/screens/info/info.component.ts | 18 ++--- ...ile-attributes-listing-screen.component.ts | 22 +++-- .../dossier-template-info-screen.component.ts | 17 ++-- .../justifications-screen.component.ts | 11 ++- .../table-item/table-item.component.html | 28 +++---- .../table-item/table-item.component.ts | 18 ++--- .../reports-screen.component.ts | 3 +- .../rules-screen/rules-screen.component.ts | 8 +- .../watermark-screen.component.scss | 1 + .../watermark-screen.component.ts | 15 ++-- .../dossier-template-actions.component.ts | 7 +- .../modules/archive/archive-routing.module.ts | 3 +- .../archived-dossiers-screen.component.ts | 3 +- .../add-dossier-dialog.component.ts | 3 +- .../edit-dossier-general-info.component.ts | 3 +- .../dossier/dossiers-routing.module.ts | 3 +- .../dossiers-listing-details.component.ts | 5 +- .../dossiers-listing-screen.component.ts | 13 ++- .../file-preview-screen.component.ts | 81 +++++++------------ .../services/annotation-actions.service.ts | 2 +- .../services/annotation-draw.service.ts | 13 ++- .../services/file-preview-state.service.ts | 3 +- .../file-preview/services/skipped.service.ts | 26 ++++-- .../modules/file-preview/shared/constants.ts | 17 +++- .../src/app/services/breadcrumbs.service.ts | 19 +++-- .../dictionaries-map.service.ts | 3 +- .../dossier-states-map.service.ts | 3 +- .../dossier-template-stats.service.ts | 3 +- apps/red-ui/src/app/utils/constants.ts | 3 - apps/red-ui/src/assets/config/config.json | 4 +- .../{types.ts => constants.ts} | 3 + .../dossier-template.model.ts | 2 +- .../lib/dossier-templates/dossier-template.ts | 2 +- .../src/lib/dossier-templates/index.ts | 2 +- libs/red-domain/src/lib/files/types.ts | 2 + 49 files changed, 222 insertions(+), 254 deletions(-) rename libs/red-domain/src/lib/dossier-templates/{types.ts => constants.ts} (68%) diff --git a/apps/red-ui/src/app/app-routing.module.ts b/apps/red-ui/src/app/app-routing.module.ts index 6c5b7a67a..6b0bd93ac 100644 --- a/apps/red-ui/src/app/app-routing.module.ts +++ b/apps/red-ui/src/app/app-routing.module.ts @@ -9,11 +9,10 @@ import { DownloadsListScreenComponent } from '@components/downloads-list-screen/ import { DossiersGuard } from '@guards/dossiers.guard'; import { ACTIVE_DOSSIERS_SERVICE, ARCHIVED_DOSSIERS_SERVICE } from './tokens'; import { FeaturesGuard } from '@guards/features-guard.service'; -import { DOSSIER_TEMPLATE_ID } from '@utils/constants'; +import { ARCHIVE_ROUTE, DOSSIER_TEMPLATE_ID, DOSSIERS_ARCHIVE, DOSSIERS_ROUTE } from '@red/domain'; import { DossierTemplatesGuard } from '@guards/dossier-templates.guard'; import { DossierTemplateExistsGuard } from '@guards/dossier-template-exists.guard'; import { DashboardGuard } from '@guards/dashboard-guard.service'; -import { ARCHIVE_ROUTE, DOSSIERS_ARCHIVE, DOSSIERS_ROUTE } from '@red/domain'; const routes: Routes = [ { diff --git a/apps/red-ui/src/app/guards/dossier-files-guard.ts b/apps/red-ui/src/app/guards/dossier-files-guard.ts index 63d9948dd..4b0e5bd68 100644 --- a/apps/red-ui/src/app/guards/dossier-files-guard.ts +++ b/apps/red-ui/src/app/guards/dossier-files-guard.ts @@ -3,9 +3,8 @@ import { ActivatedRouteSnapshot, CanActivate, Router } from '@angular/router'; import { FilesMapService } from '@services/entity-services/files-map.service'; import { FilesService } from '@services/entity-services/files.service'; import { firstValueFrom } from 'rxjs'; -import { DOSSIER_TEMPLATE_ID } from '@utils/constants'; +import { DOSSIER_ID, DOSSIER_TEMPLATE_ID } from '@red/domain'; import { DossiersService } from '@services/dossiers/dossiers.service'; -import { DOSSIER_ID } from '@red/domain'; @Injectable({ providedIn: 'root' }) export class DossierFilesGuard implements CanActivate { diff --git a/apps/red-ui/src/app/guards/dossier-template-exists.guard.ts b/apps/red-ui/src/app/guards/dossier-template-exists.guard.ts index b53592a16..4099bc313 100644 --- a/apps/red-ui/src/app/guards/dossier-template-exists.guard.ts +++ b/apps/red-ui/src/app/guards/dossier-template-exists.guard.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { ActivatedRouteSnapshot, CanActivate, Router } from '@angular/router'; -import { DOSSIER_TEMPLATE_ID } from '@utils/constants'; +import { DOSSIER_TEMPLATE_ID } from '@red/domain'; import { DashboardStatsService } from '@services/dossier-templates/dashboard-stats.service'; @Injectable({ providedIn: 'root' }) diff --git a/apps/red-ui/src/app/guards/entity-exists-guard.service.ts b/apps/red-ui/src/app/guards/entity-exists-guard.service.ts index 012583808..7d6e379d7 100644 --- a/apps/red-ui/src/app/guards/entity-exists-guard.service.ts +++ b/apps/red-ui/src/app/guards/entity-exists-guard.service.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { ActivatedRouteSnapshot, CanActivate, Router } from '@angular/router'; -import { DOSSIER_TEMPLATE_ID, ENTITY_TYPE } from '@utils/constants'; +import { DOSSIER_TEMPLATE_ID, ENTITY_TYPE } from '@red/domain'; import { DictionariesMapService } from '@services/entity-services/dictionaries-map.service'; import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service'; @@ -13,8 +13,8 @@ export class EntityExistsGuard implements CanActivate { ) {} async canActivate(route: ActivatedRouteSnapshot): Promise { - const dossierTemplateId: string = route.paramMap.get(DOSSIER_TEMPLATE_ID); - const type: string = route.paramMap.get(ENTITY_TYPE); + const dossierTemplateId = route.paramMap.get(DOSSIER_TEMPLATE_ID); + const type = route.paramMap.get(ENTITY_TYPE); if (!this._dictionariesMapService.get(dossierTemplateId, type)) { const dossierTemplate = this._dossierTemplatesService.find(dossierTemplateId); 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 2fcbb5317..4110b1284 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 @@ -16,7 +16,7 @@ import { GeneralConfigScreenComponent } from './screens/general-config/general-c import { BaseAdminScreenComponent } from './base-admin-screen/base-admin-screen.component'; import { BaseDossierTemplateScreenComponent } from './base-dossier-templates-screen/base-dossier-template-screen.component'; import { DossierTemplatesGuard } from '@guards/dossier-templates.guard'; -import { DOSSIER_TEMPLATE_ID, ENTITY_TYPE } from '@utils/constants'; +import { DOSSIER_TEMPLATE_ID, ENTITY_TYPE } from '@red/domain'; import { DossierTemplateExistsGuard } from '@guards/dossier-template-exists.guard'; import { EntityExistsGuard } from '@guards/entity-exists-guard.service'; import { DossierStatesListingScreenComponent } from './screens/dossier-states-listing/dossier-states-listing-screen.component'; diff --git a/apps/red-ui/src/app/modules/admin/admin-side-nav/admin-side-nav.component.ts b/apps/red-ui/src/app/modules/admin/admin-side-nav/admin-side-nav.component.ts index b5a1672de..e8b16024c 100644 --- a/apps/red-ui/src/app/modules/admin/admin-side-nav/admin-side-nav.component.ts +++ b/apps/red-ui/src/app/modules/admin/admin-side-nav/admin-side-nav.component.ts @@ -4,8 +4,7 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { adminSideNavTranslations } from '../translations/admin-side-nav-translations'; import { UserService } from '@services/user.service'; import { ActivatedRoute } from '@angular/router'; -import { ENTITY_TYPE } from '@utils/constants'; -import { AdminSideNavType, AdminSideNavTypes } from '@red/domain'; +import { AdminSideNavType, AdminSideNavTypes, ENTITY_TYPE } from '@red/domain'; interface NavItem { readonly label: string; diff --git a/apps/red-ui/src/app/modules/admin/base-entity-screen/base-entity-screen.component.html b/apps/red-ui/src/app/modules/admin/base-entity-screen/base-entity-screen.component.html index 119abe9e6..df042e323 100644 --- a/apps/red-ui/src/app/modules/admin/base-entity-screen/base-entity-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/base-entity-screen/base-entity-screen.component.html @@ -5,7 +5,7 @@
diff --git a/apps/red-ui/src/app/modules/admin/base-entity-screen/base-entity-screen.component.ts b/apps/red-ui/src/app/modules/admin/base-entity-screen/base-entity-screen.component.ts index e76e6980e..654906fa3 100644 --- a/apps/red-ui/src/app/modules/admin/base-entity-screen/base-entity-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/base-entity-screen/base-entity-screen.component.ts @@ -1,10 +1,9 @@ import { ChangeDetectionStrategy, Component } from '@angular/core'; -import { DOSSIER_TEMPLATE_ID, ENTITY_TYPE } from '@utils/constants'; +import { DOSSIER_TEMPLATE_ID, ENTITY_TYPE } from '@red/domain'; import { ActivatedRoute, Router } from '@angular/router'; import { firstValueFrom, Observable } from 'rxjs'; import { AdminDialogService } from '../services/admin-dialog.service'; import { DictionaryService } from '@services/entity-services/dictionary.service'; -import { UserService } from '@services/user.service'; import { LoadingService } from '@iqser/common-ui'; import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service'; import { DictionariesMapService } from '@services/entity-services/dictionaries-map.service'; @@ -16,26 +15,24 @@ import { PermissionsService } from '@services/permissions.service'; changeDetection: ChangeDetectionStrategy.OnPush, }) export class BaseEntityScreenComponent { - readonly currentUser = this._userService.currentUser; readonly disabledItems$: Observable; readonly canDeleteEntity$: Observable; readonly #dossierTemplateId: string; readonly #entityType: string; constructor( - private readonly _route: ActivatedRoute, - private readonly _userService: UserService, + route: ActivatedRoute, + private readonly _router: Router, + dictionaryMapService: DictionariesMapService, private readonly _loadingService: LoadingService, private readonly _dialogService: AdminDialogService, private readonly _dictionaryService: DictionaryService, - private readonly _dictionaryMapService: DictionariesMapService, - private readonly _dossierTemplatesService: DossierTemplatesService, private readonly _permissionsService: PermissionsService, - private readonly _router: Router, + private readonly _dossierTemplatesService: DossierTemplatesService, ) { - this.#dossierTemplateId = this._route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID); - this.#entityType = this._route.snapshot.paramMap.get(ENTITY_TYPE); - const entity$ = this._dictionaryMapService.watch$(this.#dossierTemplateId, this.#entityType); + this.#dossierTemplateId = route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID); + this.#entityType = route.snapshot.paramMap.get(ENTITY_TYPE); + const entity$ = dictionaryMapService.watch$(this.#dossierTemplateId, this.#entityType); this.canDeleteEntity$ = entity$.pipe(map(entity => this._permissionsService.canDeleteEntities(entity))); this.disabledItems$ = entity$.pipe( map(entity => (entity.hasDictionary ? [] : ['dictionary', 'false-positive', 'false-recommendations'])), diff --git a/apps/red-ui/src/app/modules/admin/components/dossier-template-breadcrumbs/dossier-template-breadcrumbs.component.ts b/apps/red-ui/src/app/modules/admin/components/dossier-template-breadcrumbs/dossier-template-breadcrumbs.component.ts index b5108a29e..44e499a80 100644 --- a/apps/red-ui/src/app/modules/admin/components/dossier-template-breadcrumbs/dossier-template-breadcrumbs.component.ts +++ b/apps/red-ui/src/app/modules/admin/components/dossier-template-breadcrumbs/dossier-template-breadcrumbs.component.ts @@ -3,9 +3,8 @@ import { DossierTemplatesService } from '@services/dossier-templates/dossier-tem import { Observable, of } from 'rxjs'; import { map, switchMap } from 'rxjs/operators'; import { ActivatedRoute } from '@angular/router'; -import { Dictionary, DossierTemplate } from '@red/domain'; +import { Dictionary, DOSSIER_TEMPLATE_ID, DossierTemplate, ENTITY_TYPE } from '@red/domain'; import { DictionariesMapService } from '@services/entity-services/dictionaries-map.service'; -import { DOSSIER_TEMPLATE_ID, ENTITY_TYPE } from '@utils/constants'; @Component({ selector: 'redaction-dossier-template-breadcrumbs', @@ -20,16 +19,16 @@ export class DossierTemplateBreadcrumbsComponent { constructor( private readonly _dossierTemplatesService: DossierTemplatesService, private readonly _dictionariesMapService: DictionariesMapService, - private readonly _route: ActivatedRoute, + route: ActivatedRoute, ) { - this.dossierTemplate$ = _route.paramMap.pipe( + this.dossierTemplate$ = route.paramMap.pipe( map(params => params.get(DOSSIER_TEMPLATE_ID)), - switchMap((dossierTemplateId: string) => this._dossierTemplatesService.getEntityChanged$(dossierTemplateId)), + switchMap(dossierTemplateId => _dossierTemplatesService.getEntityChanged$(dossierTemplateId)), ); - this.activeDictionary$ = _route.paramMap.pipe( - map(params => [params.get(DOSSIER_TEMPLATE_ID), params.get(ENTITY_TYPE)]), - switchMap(([dossierTemplateId, dictionary]: [string, string]) => - dictionary ? this._dictionariesMapService.watch$(dossierTemplateId, dictionary) : of(undefined), + this.activeDictionary$ = route.paramMap.pipe( + map(params => [params.get(DOSSIER_TEMPLATE_ID), params.get(ENTITY_TYPE)] as const), + switchMap(([dossierTemplateId, dictionary]) => + dictionary ? _dictionariesMapService.watch$(dossierTemplateId, dictionary) : of(undefined), ), ); } 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 97643322c..a53a3774f 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 @@ -1,5 +1,5 @@ import { ChangeDetectionStrategy, Component, forwardRef, Injector, OnInit } from '@angular/core'; -import { DefaultColorType, IColors } from '@red/domain'; +import { DefaultColorType, DOSSIER_TEMPLATE_ID, IColors, User } from '@red/domain'; import { AdminDialogService } from '../../services/admin-dialog.service'; import { CircleButtonTypes, @@ -13,10 +13,8 @@ import { defaultColorsTranslations } from '../../translations/default-colors-tra import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { UserService } from '@services/user.service'; import { DictionaryService } from '@services/entity-services/dictionary.service'; -import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service'; import { firstValueFrom } from 'rxjs'; import { ActivatedRoute } from '@angular/router'; -import { DOSSIER_TEMPLATE_ID } from '@utils/constants'; interface ListItem extends IListable { readonly key: string; @@ -31,27 +29,28 @@ interface ListItem extends IListable { }) export class DefaultColorsScreenComponent extends ListingComponent implements OnInit { readonly circleButtonTypes = CircleButtonTypes; - readonly currentUser = this._userService.currentUser; + readonly currentUser: User; readonly translations = defaultColorsTranslations; readonly tableHeaderLabel = _('default-colors-screen.table-header.title'); readonly tableColumnConfigs: TableColumnConfig[] = [ { label: _('default-colors-screen.table-col-names.key'), sortByKey: 'searchKey', width: '2fr' }, { label: _('default-colors-screen.table-col-names.color'), class: 'flex-center' }, ]; - private _colorsObj: IColors; + + #colorsObj: IColors; readonly #dossierTemplateId: string; constructor( + route: ActivatedRoute, + userService: UserService, protected readonly _injector: Injector, - private readonly _userService: UserService, private readonly _loadingService: LoadingService, - private readonly _dossierTemplatesService: DossierTemplatesService, private readonly _dialogService: AdminDialogService, private readonly _dictionaryService: DictionaryService, - private readonly _route: ActivatedRoute, ) { super(_injector); - this.#dossierTemplateId = _route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID); + this.currentUser = userService.currentUser; + this.#dossierTemplateId = route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID); } openEditColorDialog($event: MouseEvent, color: { key: DefaultColorType | string; value: string }) { @@ -59,7 +58,7 @@ export class DefaultColorsScreenComponent extends ListingComponent imp 'editColor', $event, { - colors: this._colorsObj, + colors: this.#colorsObj, colorKey: color.key, dossierTemplateId: this.#dossierTemplateId, }, @@ -76,7 +75,7 @@ export class DefaultColorsScreenComponent extends ListingComponent imp private async _loadColors() { this._loadingService.start(); const data = await firstValueFrom(this._dictionaryService.getColors(this.#dossierTemplateId)); - this._colorsObj = data; + this.#colorsObj = data; const entities = Object.keys(data) .map(key => ({ id: key, diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing-screen.component.ts index 2a09f4108..c22cf5c3e 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing-screen.component.ts @@ -13,11 +13,10 @@ import { DossierAttributesService } from '@shared/services/controller-wrappers/d import { dossierAttributeTypesTranslations } from '../../translations/dossier-attribute-types-translations'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { UserService } from '@services/user.service'; -import { DossierAttributeConfig, IDossierAttributeConfig } from '@red/domain'; +import { DOSSIER_TEMPLATE_ID, DossierAttributeConfig, IDossierAttributeConfig } from '@red/domain'; import { firstValueFrom } from 'rxjs'; import { ReportTemplateService } from '../../../../services/report-template.service'; import { ActivatedRoute } from '@angular/router'; -import { DOSSIER_TEMPLATE_ID } from '@utils/constants'; @Component({ templateUrl: './dossier-attributes-listing-screen.component.html', diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/dossier-templates-listing-screen/dossier-templates-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/dossier-templates-listing-screen/dossier-templates-listing-screen.component.ts index 1059bbc20..c5a28286e 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/dossier-templates-listing-screen/dossier-templates-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/dossier-templates-listing-screen/dossier-templates-listing-screen.component.ts @@ -10,7 +10,6 @@ import { ListingComponent, LoadingService, TableColumnConfig, - Toaster, } from '@iqser/common-ui'; import { UserService } from '@services/user.service'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; @@ -44,7 +43,6 @@ export class DossierTemplatesListingScreenComponent extends ListingComponent([]); + readonly currentUser: User; + readonly initialEntries$ = new BehaviorSubject([]); isLeavingPage = false; readonly type: DictionaryType; readonly #dossierTemplateId: string; readonly #entityType: string; @ViewChild('dictionaryManager', { static: false }) private readonly _dictionaryManager: DictionaryManagerComponent; - @ViewChild('fileInput') private readonly _fileInput: ElementRef; constructor( - private readonly _userService: UserService, + route: ActivatedRoute, + userService: UserService, private readonly _loadingService: LoadingService, private readonly _dictionaryService: DictionaryService, - private readonly _route: ActivatedRoute, ) { - this.#dossierTemplateId = _route.parent.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID); - this.#entityType = _route.parent.snapshot.paramMap.get(ENTITY_TYPE); - this.type = this._route.snapshot.routeConfig.path as DictionaryType; + this.currentUser = userService.currentUser; + this.#dossierTemplateId = route.parent.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID); + this.#entityType = route.parent.snapshot.paramMap.get(ENTITY_TYPE); + this.type = route.snapshot.routeConfig.path as DictionaryType; } get changed() { diff --git a/apps/red-ui/src/app/modules/admin/screens/entities/screens/info/info.component.ts b/apps/red-ui/src/app/modules/admin/screens/entities/screens/info/info.component.ts index dd78827cb..b551a6be2 100644 --- a/apps/red-ui/src/app/modules/admin/screens/entities/screens/info/info.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/entities/screens/info/info.component.ts @@ -1,7 +1,6 @@ import { ChangeDetectionStrategy, Component, HostListener, ViewChild } from '@angular/core'; -import { Dictionary } from '@red/domain'; +import { Dictionary, DOSSIER_TEMPLATE_ID, ENTITY_TYPE, User } from '@red/domain'; import { DictionariesMapService } from '@services/entity-services/dictionaries-map.service'; -import { DOSSIER_TEMPLATE_ID, ENTITY_TYPE } from '@utils/constants'; import { ActivatedRoute } from '@angular/router'; import { UserService } from '@services/user.service'; import { PermissionsService } from '@services/permissions.service'; @@ -16,20 +15,21 @@ import { Observable } from 'rxjs'; changeDetection: ChangeDetectionStrategy.OnPush, }) export class InfoComponent { - readonly currentUser = this._userService.currentUser; + readonly currentUser: User; readonly entity$: Observable; readonly dossierTemplateId: string; @ViewChild(AddEditEntityComponent) private readonly _addEditEntityComponent: AddEditEntityComponent; constructor( - private readonly _dictionariesMapService: DictionariesMapService, - private readonly _route: ActivatedRoute, - private readonly _userService: UserService, + route: ActivatedRoute, + userService: UserService, + dictionariesMapService: DictionariesMapService, readonly permissionsService: PermissionsService, ) { - this.dossierTemplateId = this._route.parent.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID); - const entityType = this._route.parent.snapshot.paramMap.get(ENTITY_TYPE); - this.entity$ = this._dictionariesMapService.watch$(this.dossierTemplateId, entityType); + this.currentUser = userService.currentUser; + this.dossierTemplateId = route.parent.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID); + const entityType = route.parent.snapshot.paramMap.get(ENTITY_TYPE); + this.entity$ = dictionariesMapService.watch$(this.dossierTemplateId, entityType); } get disabled(): boolean { diff --git a/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.ts index 36f8ee278..86985fe3a 100644 --- a/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.ts @@ -22,14 +22,12 @@ import { import { fileAttributeTypesTranslations } from '../../translations/file-attribute-types-translations'; import { UserService } from '@services/user.service'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; -import { FileAttributeConfig, IFileAttributeConfig, IFileAttributesConfig } from '@red/domain'; +import { DOSSIER_TEMPLATE_ID, FileAttributeConfig, IFileAttributeConfig, IFileAttributesConfig, User } from '@red/domain'; import { FileAttributesService } from '@services/entity-services/file-attributes.service'; import { HttpStatusCode } from '@angular/common/http'; import { firstValueFrom } from 'rxjs'; -import { ReportTemplateService } from '../../../../services/report-template.service'; import { ActivatedRoute } from '@angular/router'; import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service'; -import { DOSSIER_TEMPLATE_ID } from '@utils/constants'; @Component({ templateUrl: './file-attributes-listing-screen.component.html', @@ -43,7 +41,7 @@ import { DOSSIER_TEMPLATE_ID } from '@utils/constants'; export class FileAttributesListingScreenComponent extends ListingComponent implements OnInit, OnDestroy { readonly iconButtonTypes = IconButtonTypes; readonly circleButtonTypes = CircleButtonTypes; - readonly currentUser = this._userService.currentUser; + readonly currentUser: User; readonly translations = fileAttributeTypesTranslations; readonly tableHeaderLabel = _('file-attributes-listing.table-header.title'); readonly tableColumnConfigs: TableColumnConfig[] = [ @@ -60,24 +58,24 @@ export class FileAttributesListingScreenComponent extends ListingComponent; + @ViewChild('impactedTemplates') private readonly _impactedTemplatesRef: TemplateRef; private _existingConfiguration: IFileAttributesConfig; @ViewChild('fileInput') private _fileInput: ElementRef; readonly #dossierTemplateId: string; constructor( - protected readonly _injector: Injector, + route: ActivatedRoute, + userService: UserService, private readonly _toaster: Toaster, - private readonly _userService: UserService, + protected readonly _injector: Injector, private readonly _loadingService: LoadingService, - private readonly _dossierTemplatesService: DossierTemplatesService, private readonly _dialogService: AdminDialogService, private readonly _fileAttributesService: FileAttributesService, - private readonly _reportTemplateService: ReportTemplateService, - private readonly _route: ActivatedRoute, + private readonly _dossierTemplatesService: DossierTemplatesService, ) { super(_injector); - this.#dossierTemplateId = _route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID); + this.currentUser = userService.currentUser; + this.#dossierTemplateId = route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID); } private get _numberOfDisplayedAttrs(): number { @@ -111,7 +109,7 @@ export class FileAttributesListingScreenComponent extends ListingComponent { diff --git a/apps/red-ui/src/app/modules/admin/screens/info/info-screen/dossier-template-info-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/info/info-screen/dossier-template-info-screen.component.ts index c953e8a70..701d41570 100644 --- a/apps/red-ui/src/app/modules/admin/screens/info/info-screen/dossier-template-info-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/info/info-screen/dossier-template-info-screen.component.ts @@ -2,11 +2,10 @@ import { ChangeDetectionStrategy, Component } from '@angular/core'; import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service'; import { ActivatedRoute } from '@angular/router'; import { Observable } from 'rxjs'; -import { DossierTemplate, DossierTemplateStats } from '@red/domain'; +import { DOSSIER_TEMPLATE_ID, DossierTemplate, DossierTemplateStats } from '@red/domain'; import { DossierTemplateStatsService } from '@services/entity-services/dossier-template-stats.service'; import { AdminDialogService } from '../../../services/admin-dialog.service'; import { PermissionsService } from '@services/permissions.service'; -import { DOSSIER_TEMPLATE_ID } from '@utils/constants'; import { dossierTemplateStatusTranslations } from '../../../translations/dossier-template-status-translations'; @Component({ @@ -20,15 +19,15 @@ export class DossierTemplateInfoScreenComponent { readonly translations = dossierTemplateStatusTranslations; constructor( - private readonly _dossierTemplatesService: DossierTemplatesService, - private readonly _dossierTemplateStatsService: DossierTemplateStatsService, - private readonly _dialogService: AdminDialogService, - private readonly _route: ActivatedRoute, + route: ActivatedRoute, readonly permissionsService: PermissionsService, + dossierTemplatesService: DossierTemplatesService, + private readonly _dialogService: AdminDialogService, + dossierTemplateStatsService: DossierTemplateStatsService, ) { - const dossierTemplateId = _route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID); - this.dossierTemplate$ = this._dossierTemplatesService.getEntityChanged$(dossierTemplateId); - this.dossierTemplateStats$ = this._dossierTemplateStatsService.watch$(dossierTemplateId); + const dossierTemplateId = route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID); + this.dossierTemplate$ = dossierTemplatesService.getEntityChanged$(dossierTemplateId); + this.dossierTemplateStats$ = dossierTemplateStatsService.watch$(dossierTemplateId); } openEditDossierTemplateDialog($event: MouseEvent, dossierTemplate: DossierTemplate) { diff --git a/apps/red-ui/src/app/modules/admin/screens/justifications/justifications-screen/justifications-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/justifications/justifications-screen/justifications-screen.component.ts index aad1a6d2e..518c1a533 100644 --- a/apps/red-ui/src/app/modules/admin/screens/justifications/justifications-screen/justifications-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/justifications/justifications-screen/justifications-screen.component.ts @@ -9,14 +9,13 @@ import { LoadingService, TableColumnConfig, } from '@iqser/common-ui'; -import { Justification } from '@red/domain'; +import { DOSSIER_TEMPLATE_ID, Justification } from '@red/domain'; import { JustificationsService } from '@services/entity-services/justifications.service'; import { JustificationsDialogService } from '../justifications-dialog.service'; import { UserService } from '@services/user.service'; import { UserPreferenceService } from '@services/user-preference.service'; import { firstValueFrom } from 'rxjs'; import { ActivatedRoute } from '@angular/router'; -import { DOSSIER_TEMPLATE_ID } from '@utils/constants'; @Component({ selector: 'redaction-justifications-screen', @@ -54,6 +53,10 @@ export class JustificationsScreenComponent extends ListingComponent { this._loadingService.start(); await firstValueFrom(this._justificationService.loadAll(this.#dossierTemplateId)); @@ -67,8 +70,4 @@ export class JustificationsScreenComponent extends ListingComponent
- + + - + +
diff --git a/apps/red-ui/src/app/modules/admin/screens/justifications/table-item/table-item.component.ts b/apps/red-ui/src/app/modules/admin/screens/justifications/table-item/table-item.component.ts index a03b711f2..2b715e2ab 100644 --- a/apps/red-ui/src/app/modules/admin/screens/justifications/table-item/table-item.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/justifications/table-item/table-item.component.ts @@ -1,11 +1,11 @@ import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; -import { Justification } from '@red/domain'; -import { CircleButtonTypes, ListingService, LoadingService } from '@iqser/common-ui'; +import { DOSSIER_TEMPLATE_ID, Justification, User } from '@red/domain'; +import { CircleButtonTypes } from '@iqser/common-ui'; import { JustificationsDialogService } from '../justifications-dialog.service'; import { UserService } from '@services/user.service'; import { UserPreferenceService } from '@services/user-preference.service'; import { ActivatedRoute } from '@angular/router'; -import { DOSSIER_TEMPLATE_ID } from '@utils/constants'; +import { Observable } from 'rxjs'; @Component({ selector: 'redaction-table-item', @@ -16,17 +16,17 @@ import { DOSSIER_TEMPLATE_ID } from '@utils/constants'; export class TableItemComponent { readonly circleButtonTypes = CircleButtonTypes; @Input() justification: Justification; + readonly currentUser$: Observable; readonly #dossierTemplateId: string; constructor( - private readonly _dialogService: JustificationsDialogService, - private readonly _loadingService: LoadingService, - private readonly _listingService: ListingService, + route: ActivatedRoute, + userService: UserService, readonly userPreferenceService: UserPreferenceService, - readonly userService: UserService, - private readonly _route: ActivatedRoute, + private readonly _dialogService: JustificationsDialogService, ) { - this.#dossierTemplateId = _route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID); + this.currentUser$ = userService.currentUser$; + this.#dossierTemplateId = route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID); } openEditJustificationDialog() { diff --git a/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen/reports-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen/reports-screen.component.ts index 1742a103a..13860af28 100644 --- a/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen/reports-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen/reports-screen.component.ts @@ -1,5 +1,5 @@ import { ChangeDetectionStrategy, Component, ElementRef, OnInit, ViewChild } from '@angular/core'; -import { IPlaceholdersResponse, IReportTemplate } from '@red/domain'; +import { DOSSIER_TEMPLATE_ID, IPlaceholdersResponse, IReportTemplate } from '@red/domain'; import { download } from '@utils/file-download-utils'; import { ConfirmationDialogInput, LoadingService, Toaster } from '@iqser/common-ui'; import { PermissionsService } from '@services/permissions.service'; @@ -14,7 +14,6 @@ import { DossierTemplatesService } from '@services/dossier-templates/dossier-tem import { ReportTemplateService } from '@services/report-template.service'; import { BehaviorSubject, firstValueFrom } from 'rxjs'; import { ActivatedRoute } from '@angular/router'; -import { DOSSIER_TEMPLATE_ID } from '@utils/constants'; interface Placeholder { placeholder: string; diff --git a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.ts index 5551bfb1d..24ffb9c9b 100644 --- a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.ts @@ -1,13 +1,12 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, OnInit, ViewChild } from '@angular/core'; import { PermissionsService } from '@services/permissions.service'; import { Debounce, IconButtonTypes, LoadingService, Toaster } from '@iqser/common-ui'; -import { TranslateService } from '@ngx-translate/core'; import { saveAs } from 'file-saver'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { RulesService } from '../../../services/rules.service'; import { firstValueFrom } from 'rxjs'; import { ActivatedRoute } from '@angular/router'; -import { DOSSIER_TEMPLATE_ID } from '@utils/constants'; +import { DOSSIER_TEMPLATE_ID } from '@red/domain'; import ICodeEditor = monaco.editor.ICodeEditor; import IModelDeltaDecoration = monaco.editor.IModelDeltaDecoration; import IStandaloneEditorConstructionOptions = monaco.editor.IStandaloneEditorConstructionOptions; @@ -44,11 +43,10 @@ export class RulesScreenComponent implements OnInit { private readonly _rulesService: RulesService, private readonly _changeDetectorRef: ChangeDetectorRef, private readonly _toaster: Toaster, - protected readonly _translateService: TranslateService, private readonly _loadingService: LoadingService, - private readonly _route: ActivatedRoute, + route: ActivatedRoute, ) { - this.#dossierTemplateId = _route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID); + this.#dossierTemplateId = route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID); } set isLeavingPage(isLeaving: boolean) { 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 74143cc02..bbdca01c2 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 @@ -2,6 +2,7 @@ :host { display: flex; + flex-direction: row; flex-grow: 1; overflow: hidden; } diff --git a/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen/watermark-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen/watermark-screen.component.ts index 28c15e08d..ce7d07ecc 100644 --- a/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen/watermark-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen/watermark-screen.component.ts @@ -5,7 +5,7 @@ import { environment } from '@environments/environment'; 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 { DOSSIER_TEMPLATE_ID, IWatermark, WatermarkOrientation, WatermarkOrientations } from '@red/domain'; import { BASE_HREF } from '../../../../../tokens'; import { stampPDFPage } from '@utils/page-stamper'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; @@ -13,7 +13,6 @@ import { WatermarkService } from '@shared/services/watermark.service'; import { firstValueFrom, Observable, of, switchMap } from 'rxjs'; import { catchError, tap } from 'rxjs/operators'; import { ActivatedRoute } from '@angular/router'; -import { DOSSIER_TEMPLATE_ID } from '@utils/constants'; export const DEFAULT_WATERMARK: IWatermark = { text: null, @@ -39,18 +38,18 @@ export class WatermarkScreenComponent implements OnInit { private _viewer: ElementRef; constructor( + route: ActivatedRoute, + private readonly _http: HttpClient, + private readonly _toaster: Toaster, + private readonly _formBuilder: FormBuilder, readonly permissionsService: PermissionsService, + private readonly _loadingService: LoadingService, @Inject(BASE_HREF) private readonly _baseHref: string, private readonly _watermarkService: WatermarkService, - private readonly _toaster: Toaster, - private readonly _http: HttpClient, private readonly _changeDetectorRef: ChangeDetectorRef, - private readonly _formBuilder: FormBuilder, - private readonly _loadingService: LoadingService, - private readonly _route: ActivatedRoute, ) { this._loadingService.start(); - this.#dossierTemplateId = this._route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID); + this.#dossierTemplateId = route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID); } get changed(): boolean { diff --git a/apps/red-ui/src/app/modules/admin/shared/components/dossier-template-actions/dossier-template-actions.component.ts b/apps/red-ui/src/app/modules/admin/shared/components/dossier-template-actions/dossier-template-actions.component.ts index 172e66f72..99156b63e 100644 --- a/apps/red-ui/src/app/modules/admin/shared/components/dossier-template-actions/dossier-template-actions.component.ts +++ b/apps/red-ui/src/app/modules/admin/shared/components/dossier-template-actions/dossier-template-actions.component.ts @@ -1,12 +1,11 @@ import { Component, Input, OnInit } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; import { AdminDialogService } from '../../../services/admin-dialog.service'; -import { CircleButtonTypes, LoadingService, Toaster } from '@iqser/common-ui'; +import { CircleButtonTypes, LoadingService } from '@iqser/common-ui'; import { UserService } from '@services/user.service'; import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service'; import { firstValueFrom } from 'rxjs'; -import { DictionaryService } from '@services/entity-services/dictionary.service'; -import { DOSSIER_TEMPLATE_ID } from '@utils/constants'; +import { DOSSIER_TEMPLATE_ID } from '@red/domain'; @Component({ selector: 'redaction-dossier-template-actions', @@ -22,10 +21,8 @@ export class DossierTemplateActionsComponent implements OnInit { constructor( private readonly _router: Router, private readonly _route: ActivatedRoute, - private readonly _toaster: Toaster, private readonly _userService: UserService, private readonly _loadingService: LoadingService, - private readonly _dictionaryService: DictionaryService, private readonly _dialogService: AdminDialogService, private readonly _dossierTemplatesService: DossierTemplatesService, ) {} diff --git a/apps/red-ui/src/app/modules/archive/archive-routing.module.ts b/apps/red-ui/src/app/modules/archive/archive-routing.module.ts index 1eb531bf3..905d3924a 100644 --- a/apps/red-ui/src/app/modules/archive/archive-routing.module.ts +++ b/apps/red-ui/src/app/modules/archive/archive-routing.module.ts @@ -1,8 +1,7 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; -import { BreadcrumbTypes, DOSSIER_ID } from '@red/domain'; +import { BreadcrumbTypes, DOSSIER_ID, FILE_ID } from '@red/domain'; import { ArchivedDossiersScreenComponent } from './screens/archived-dossiers-screen/archived-dossiers-screen.component'; -import { FILE_ID } from '@utils/constants'; import { CompositeRouteGuard } from '@iqser/common-ui'; import { ARCHIVED_DOSSIERS_SERVICE } from '../../tokens'; import { DossierFilesGuard } from '@guards/dossier-files-guard'; diff --git a/apps/red-ui/src/app/modules/archive/screens/archived-dossiers-screen/archived-dossiers-screen.component.ts b/apps/red-ui/src/app/modules/archive/screens/archived-dossiers-screen/archived-dossiers-screen.component.ts index 3fe2d2c26..307642038 100644 --- a/apps/red-ui/src/app/modules/archive/screens/archived-dossiers-screen/archived-dossiers-screen.component.ts +++ b/apps/red-ui/src/app/modules/archive/screens/archived-dossiers-screen/archived-dossiers-screen.component.ts @@ -1,11 +1,10 @@ import { ChangeDetectionStrategy, Component, forwardRef, Injector, OnInit } from '@angular/core'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { DefaultListingServices, ListingComponent } from '@iqser/common-ui'; -import { Dossier } from '@red/domain'; +import { Dossier, DOSSIER_TEMPLATE_ID } from '@red/domain'; import { ConfigService } from '../../services/config.service'; import { tap } from 'rxjs/operators'; import { ArchivedDossiersService } from '@services/dossiers/archived-dossiers.service'; -import { DOSSIER_TEMPLATE_ID } from '@utils/constants'; import { Router } from '@angular/router'; @Component({ diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/add-dossier-dialog/add-dossier-dialog.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/add-dossier-dialog/add-dossier-dialog.component.ts index c8d84feeb..78d4443e0 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/add-dossier-dialog/add-dossier-dialog.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/add-dossier-dialog/add-dossier-dialog.component.ts @@ -1,6 +1,6 @@ import { Component, Inject, Injector, OnInit } from '@angular/core'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; -import { DownloadFileType, IDossierRequest, IDossierTemplate, IReportTemplate } from '@red/domain'; +import { DOSSIER_TEMPLATE_ID, DownloadFileType, IDossierRequest, IDossierTemplate, IReportTemplate } from '@red/domain'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { downloadTypesTranslations } from '../../../../translations/download-types-translations'; import { BaseDialogComponent, IconButtonTypes, LoadingService, SaveOptions } from '@iqser/common-ui'; @@ -8,7 +8,6 @@ import { ActiveDossiersService } from '@services/dossiers/active-dossiers.servic import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service'; import { ReportTemplateService } from '@services/report-template.service'; import { firstValueFrom } from 'rxjs'; -import { DOSSIER_TEMPLATE_ID } from '@utils/constants'; import dayjs from 'dayjs'; import { Router } from '@angular/router'; import { DossiersDialogService } from '../../shared/services/dossiers-dialog.service'; diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts index e8c2e4592..407a1d3d6 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts @@ -1,6 +1,6 @@ import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; -import { Dossier, IDossierRequest, IDossierTemplate } from '@red/domain'; +import { Dossier, DOSSIER_TEMPLATE_ID, IDossierRequest, IDossierTemplate } from '@red/domain'; import { EditDossierSaveResult, EditDossierSectionInterface } from '../edit-dossier-section.interface'; import { DossiersDialogService } from '../../../shared/services/dossiers-dialog.service'; import { PermissionsService } from '@services/permissions.service'; @@ -12,7 +12,6 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service'; import { DossierStatsService } from '@services/dossiers/dossier-stats.service'; import { firstValueFrom } from 'rxjs'; -import { DOSSIER_TEMPLATE_ID } from '@utils/constants'; import { TranslateService } from '@ngx-translate/core'; import { DossiersService } from '@services/dossiers/dossiers.service'; import { TrashService } from '@services/entity-services/trash.service'; diff --git a/apps/red-ui/src/app/modules/dossier/dossiers-routing.module.ts b/apps/red-ui/src/app/modules/dossier/dossiers-routing.module.ts index bc1178c3f..18045c9ad 100644 --- a/apps/red-ui/src/app/modules/dossier/dossiers-routing.module.ts +++ b/apps/red-ui/src/app/modules/dossier/dossiers-routing.module.ts @@ -2,8 +2,7 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; import { DossierFilesGuard } from '@guards/dossier-files-guard'; import { CompositeRouteGuard } from '@iqser/common-ui'; -import { BreadcrumbTypes, DOSSIER_ID } from '@red/domain'; -import { FILE_ID } from '@utils/constants'; +import { BreadcrumbTypes, DOSSIER_ID, FILE_ID } from '@red/domain'; import { ACTIVE_DOSSIERS_SERVICE } from '../../tokens'; const routes: Routes = [ diff --git a/apps/red-ui/src/app/modules/dossiers-listing/components/dossiers-listing-details/dossiers-listing-details.component.ts b/apps/red-ui/src/app/modules/dossiers-listing/components/dossiers-listing-details/dossiers-listing-details.component.ts index b8f747e2f..f8620c3d1 100644 --- a/apps/red-ui/src/app/modules/dossiers-listing/components/dossiers-listing-details/dossiers-listing-details.component.ts +++ b/apps/red-ui/src/app/modules/dossiers-listing/components/dossiers-listing-details/dossiers-listing-details.component.ts @@ -1,11 +1,10 @@ import { ChangeDetectionStrategy, Component } from '@angular/core'; -import { DashboardStats, DonutChartConfig } from '@red/domain'; +import { DashboardStats, DonutChartConfig, DOSSIER_TEMPLATE_ID } from '@red/domain'; import { Observable } from 'rxjs'; import { TranslateChartService } from '@services/translate-chart.service'; import { map } from 'rxjs/operators'; import { DashboardStatsService } from '@services/dossier-templates/dashboard-stats.service'; import { ActivatedRoute } from '@angular/router'; -import { DOSSIER_TEMPLATE_ID } from '@utils/constants'; @Component({ selector: 'redaction-dossiers-listing-details', @@ -23,7 +22,7 @@ export class DossiersListingDetailsComponent { dashboardStatsService: DashboardStatsService, private readonly _translateChartService: TranslateChartService, ) { - const dossierTemplateId: string = route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID); + const dossierTemplateId = route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID); this.stats$ = dashboardStatsService.getEntityChanged$(dossierTemplateId); this.dossiersChartConfig$ = this.stats$.pipe( diff --git a/apps/red-ui/src/app/modules/dossiers-listing/screen/dossiers-listing-screen.component.ts b/apps/red-ui/src/app/modules/dossiers-listing/screen/dossiers-listing-screen.component.ts index 895ac8c2a..8c218bb7a 100644 --- a/apps/red-ui/src/app/modules/dossiers-listing/screen/dossiers-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/dossiers-listing/screen/dossiers-listing-screen.component.ts @@ -1,5 +1,5 @@ import { ChangeDetectionStrategy, Component, forwardRef, Injector, OnInit, TemplateRef, ViewChild } from '@angular/core'; -import { Dossier } from '@red/domain'; +import { Dossier, DOSSIER_TEMPLATE_ID } from '@red/domain'; import { UserService } from '@services/user.service'; import { PermissionsService } from '@services/permissions.service'; import { ButtonConfig, DefaultListingServices, ListingComponent, OnAttach, TableComponent } from '@iqser/common-ui'; @@ -9,7 +9,6 @@ import { ActiveDossiersService } from '@services/dossiers/active-dossiers.servic import { tap } from 'rxjs/operators'; import { DossiersDialogService } from '../../dossier/shared/services/dossiers-dialog.service'; import { Router } from '@angular/router'; -import { DOSSIER_TEMPLATE_ID } from '@utils/constants'; import { UserPreferenceService } from '@services/user-preference.service'; @Component({ @@ -32,18 +31,18 @@ export class DossiersListingScreenComponent extends ListingComponent im @ViewChild(TableComponent) private readonly _tableComponent: TableComponent; constructor( + router: Router, protected readonly _injector: Injector, private readonly _userService: UserService, - readonly permissionsService: PermissionsService, - private readonly _activeDossiersService: ActiveDossiersService, private readonly _configService: ConfigService, + readonly permissionsService: PermissionsService, private readonly _dialogService: DossiersDialogService, - private readonly _router: Router, + private readonly _activeDossiersService: ActiveDossiersService, private readonly _userPreferenceService: UserPreferenceService, ) { super(_injector); - this.dossierTemplateId = this._router.routerState.snapshot.root.firstChild.firstChild.paramMap.get(DOSSIER_TEMPLATE_ID); - this._router.routeReuseStrategy.shouldReuseRoute = () => false; + this.dossierTemplateId = router.routerState.snapshot.root.firstChild.firstChild.paramMap.get(DOSSIER_TEMPLATE_ID); + router.routeReuseStrategy.shouldReuseRoute = () => false; this.buttonConfigs = this._configService.buttonsConfig(this.dossierTemplateId); } diff --git a/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts b/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts index 9d5845fcc..9307aad26 100644 --- a/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectorRef, Component, HostListener, NgZone, OnDestroy, OnInit, TemplateRef, ViewChild } from '@angular/core'; +import { ChangeDetectorRef, Component, HostListener, Injector, NgZone, OnDestroy, OnInit, TemplateRef, ViewChild } from '@angular/core'; import { ActivatedRoute, ActivatedRouteSnapshot, NavigationExtras, Router } from '@angular/router'; import { Core } from '@pdftron/webviewer'; import { @@ -39,7 +39,6 @@ import { MultiSelectService } from './services/multi-select.service'; import { DocumentInfoService } from './services/document-info.service'; import { ReanalysisService } from '@services/reanalysis.service'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; -import { SkippedService } from './services/skipped.service'; import { FilePreviewStateService } from './services/file-preview-state.service'; import { filePreviewScreenProviders } from './file-preview-providers'; import { ManualRedactionService } from './services/manual-redaction.service'; @@ -49,22 +48,11 @@ import { ComponentCanDeactivate } from '@guards/can-deactivate.guard'; import { PdfViewer } from './services/pdf-viewer.service'; import { FilePreviewDialogService } from './services/file-preview-dialog.service'; import { FileDataService } from './services/file-data.service'; -import { ALL_HOTKEYS } from './shared/constants'; +import { ActionsHelpModeKeys, ALL_HOTKEYS } from './shared/constants'; import { NGXLogger } from 'ngx-logger'; import { StampService } from './services/stamp.service'; import Annotation = Core.Annotations.Annotation; -const HelpModeKeys = { - redaction: 'redaction_text', - 'manual-redaction': 'redaction_text', - recommendation: 'recommendation', - skipped: 'skipped', - hint: 'hint_text', - 'hint-ocr': 'hint_picture', - 'hint-formula': 'picture', - 'hint-image': 'picture', -}; - @Component({ templateUrl: './file-preview-screen.component.html', styleUrls: ['./file-preview-screen.component.scss'], @@ -107,20 +95,17 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni private readonly _filterService: FilterService, private readonly _activatedRoute: ActivatedRoute, private readonly _loadingService: LoadingService, - private readonly _skippedService: SkippedService, private readonly _filesMapService: FilesMapService, private readonly _dossiersService: DossiersService, private readonly _fileDataService: FileDataService, private readonly _viewModeService: ViewModeService, private readonly _changeDetectorRef: ChangeDetectorRef, - private readonly _reanalysisService: ReanalysisService, private readonly _dialogService: FilePreviewDialogService, private readonly _pageRotationService: PageRotationService, private readonly _annotationDrawService: AnnotationDrawService, - private readonly _fileManagementService: FileManagementService, - private readonly _manualRedactionService: ManualRedactionService, private readonly _annotationProcessingService: AnnotationProcessingService, private readonly _stampService: StampService, + private readonly _injector: Injector, ) { super(); this.canPerformAnnotationActions$ = this._canPerformAnnotationActions$; @@ -197,7 +182,7 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni this._loadingService.start(); this.pdf.hideAnnotations(annotations); const highlights = await this._fileDataService.loadTextHighlights(); - await this._annotationDrawService.drawAnnotations(highlights); + await this._annotationDrawService.draw(highlights); this._loadingService.stop(); } } @@ -240,7 +225,8 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni this._subscribeToFileUpdates(); if (file?.analysisRequired && !file.excludedFromAutomaticAnalysis) { - const reanalyzeFiles = this._reanalysisService.reanalyzeFilesForDossier([file], this.dossierId, { force: true }); + const reanalysisService = this._injector.get(ReanalysisService); + const reanalyzeFiles = reanalysisService.reanalyzeFilesForDossier([file], this.dossierId, { force: true }); await firstValueFrom(reanalyzeFiles); } @@ -275,12 +261,14 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni if (selectedAnnotations.length > 0) { this.pdf.deleteAnnotations([selectedAnnotations[0].Id]); } - const add$ = this._manualRedactionService.addAnnotation( + const manualRedactionService = this._injector.get(ManualRedactionService); + const add$ = manualRedactionService.addAnnotation( wrappers.map(w => w.manualRedactionEntry).filter(e => e.positions[0].page <= file.numberOfPages), this.dossierId, this.fileId, ); - const addAndReload$ = add$.pipe(switchMap(() => this._filesService.reload(this.dossierId, file))); + const filesService = this._injector.get(FilesService); + const addAndReload$ = add$.pipe(switchMap(() => filesService.reload(this.dossierId, file))); return firstValueFrom(addAndReload$.pipe(catchError(() => of(undefined)))); }, ); @@ -382,14 +370,10 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni this._scrollViews(); } - async downloadOriginalFile(file: File) { - const originalFile = this._fileManagementService.downloadOriginalFile( - this.dossierId, - this.fileId, - 'response', - file.cacheIdentifier, - ); - download(await firstValueFrom(originalFile), file.filename); + async downloadOriginalFile({ cacheIdentifier, dossierId, fileId, filename }: File) { + const fileManagementService = this._injector.get(FileManagementService); + const originalFile = fileManagementService.downloadOriginalFile(dossierId, fileId, 'response', cacheIdentifier); + download(await firstValueFrom(originalFile), filename); } loadAnnotations() { @@ -443,9 +427,9 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni const type = annotation?.typeLabel?.split('.')[1]; const typeValue = annotation?.typeValue; if (type === 'hint' && (typeValue === 'ocr' || typeValue === 'formula' || typeValue === 'image')) { - return HelpModeKeys[`${type}-${typeValue}`]; + return ActionsHelpModeKeys[`${type}-${typeValue}`]; } - return HelpModeKeys[type]; + return ActionsHelpModeKeys[type]; } #rebuildFilters() { @@ -492,19 +476,23 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni const changed = JSON.stringify(oldAnnotation) !== JSON.stringify(newAnnotation); if (changed && this.userPreferenceService.areDevFeaturesEnabled) { - import('@iqser/common-ui').then(commonUi => { - this._logger.info('[ANNOTATIONS] Changed annotation: ', { - value: oldAnnotation.value, - before: commonUi.deepDiffObj(newAnnotation, oldAnnotation), - after: commonUi.deepDiffObj(oldAnnotation, newAnnotation), - }); - }); + this.#logDiff(oldAnnotation, newAnnotation); } return changed; }); } + #logDiff(oldAnnotation: AnnotationWrapper, newAnnotation: AnnotationWrapper) { + import('@iqser/common-ui').then(commonUi => { + this._logger.info('[ANNOTATIONS] Changed annotation: ', { + value: oldAnnotation.value, + before: commonUi.deepDiffObj(newAnnotation, oldAnnotation), + after: commonUi.deepDiffObj(oldAnnotation, newAnnotation), + }); + }); + } + #deactivateMultiSelect() { this.multiSelectService.deactivate(); this.pdf.deselectAllAnnotations(); @@ -539,10 +527,6 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni .pipe(tap(() => this._handleDeletedFile())) .subscribe(); - this.addActiveScreenSubscription = this._skippedService.hideSkipped$ - .pipe(tap(hideSkipped => this._handleIgnoreAnnotationsDrawing(hideSkipped))) - .subscribe(); - this.addActiveScreenSubscription = combineLatest([this._viewModeService.viewMode$, this.state.file$]) .pipe( tap(([viewMode, file]) => { @@ -590,7 +574,7 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni this._handleDeltaAnnotationFilters(currentFilters, this._fileDataService.all); } - await this._annotationDrawService.drawAnnotations(newAnnotations); + await this._annotationDrawService.draw(newAnnotations); this._logger.info(`[ANNOTATIONS] Redraw time: ${new Date().getTime() - startTime} ms for ${newAnnotations.length} annotations`); } @@ -620,15 +604,6 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni } } - private _handleIgnoreAnnotationsDrawing(hideSkipped: boolean): void { - const ignored = this.pdf.getAnnotations(a => a.getCustomData('skipped')); - if (hideSkipped) { - this.pdf.hideAnnotations(ignored); - } else { - this.pdf.showAnnotations(ignored); - } - } - private _setAnnotationsOpacity(annotations: Annotation[], restoreToOriginal: boolean = false) { annotations.forEach(annotation => { annotation['Opacity'] = restoreToOriginal ? parseFloat(annotation.getCustomData('opacity')) : 1; diff --git a/apps/red-ui/src/app/modules/file-preview/services/annotation-actions.service.ts b/apps/red-ui/src/app/modules/file-preview/services/annotation-actions.service.ts index 8a3ee9bc8..60d0a648b 100644 --- a/apps/red-ui/src/app/modules/file-preview/services/annotation-actions.service.ts +++ b/apps/red-ui/src/app/modules/file-preview/services/annotation-actions.service.ts @@ -437,7 +437,7 @@ export class AnnotationActionsService { annotationWrapper.resizing = false; this._pdf.deleteAnnotations([annotationWrapper.id]); - await this._annotationDrawService.drawAnnotations([annotationWrapper]); + await this._annotationDrawService.draw([annotationWrapper]); this._pdf.annotationManager.deselectAllAnnotations(); await this._fileDataService.annotationsChanged(); } diff --git a/apps/red-ui/src/app/modules/file-preview/services/annotation-draw.service.ts b/apps/red-ui/src/app/modules/file-preview/services/annotation-draw.service.ts index 5e6679f44..3cfb56abf 100644 --- a/apps/red-ui/src/app/modules/file-preview/services/annotation-draw.service.ts +++ b/apps/red-ui/src/app/modules/file-preview/services/annotation-draw.service.ts @@ -10,13 +10,13 @@ import { IRectangle, ISectionGrid, ISectionRectangle } from '@red/domain'; import { SkippedService } from './skipped.service'; import { firstValueFrom } from 'rxjs'; import { DictionariesMapService } from '@services/entity-services/dictionaries-map.service'; -import { DossiersService } from '@services/dossiers/dossiers.service'; import { PdfViewer } from './pdf-viewer.service'; import { FilePreviewStateService } from './file-preview-state.service'; import { ViewModeService } from './view-mode.service'; import { FileDataService } from './file-data.service'; import { SuperTypes } from '@models/file/super-types'; import Annotation = Core.Annotations.Annotation; +import Quad = Core.Math.Quad; const DEFAULT_TEXT_ANNOTATION_OPACITY = 1; const DEFAULT_REMOVED_ANNOTATION_OPACITY = 0.2; @@ -25,7 +25,6 @@ const DEFAULT_REMOVED_ANNOTATION_OPACITY = 0.2; export class AnnotationDrawService { constructor( private readonly _dictionariesMapService: DictionariesMapService, - private readonly _dossiersService: DossiersService, private readonly _redactionLogService: RedactionLogService, private readonly _userPreferenceService: UserPreferenceService, private readonly _skippedService: SkippedService, @@ -35,9 +34,9 @@ export class AnnotationDrawService { private readonly _fileDataService: FileDataService, ) {} - drawAnnotations(annotationWrappers: readonly AnnotationWrapper[]) { + draw(annotations: readonly AnnotationWrapper[]) { const licenseKey = environment.licenseKey ? atob(environment.licenseKey) : null; - return this._pdf.PDFNet.runWithCleanup(() => this._drawAnnotations(annotationWrappers), licenseKey); + return this._pdf.PDFNet.runWithCleanup(() => this._draw(annotations), licenseKey); } getColor(superType: string, dictionary?: string) { @@ -85,7 +84,7 @@ export class AnnotationDrawService { return new this._pdf.instance.Core.Math.Quad(x1, y1, x2, y2, x3, y3, x4, y4); } - private async _drawAnnotations(annotationWrappers: readonly AnnotationWrapper[]) { + private async _draw(annotationWrappers: readonly AnnotationWrapper[]) { const annotations = annotationWrappers.map(annotation => this._computeAnnotation(annotation)).filter(a => !!a); this._pdf.annotationManager.addAnnotations(annotations, { imported: true }); await this._pdf.annotationManager.drawAnnotationsFromList(annotations); @@ -185,12 +184,12 @@ export class AnnotationDrawService { return annotation; } - private _rectanglesToQuads(positions: IRectangle[], pageNumber: number): any[] { + private _rectanglesToQuads(positions: IRectangle[], pageNumber: number): Quad[] { const pageHeight = this._pdf.documentViewer.getPageHeight(pageNumber); return positions.map(p => this._rectangleToQuad(p, pageHeight)); } - private _rectangleToQuad(rectangle: IRectangle, pageHeight: number): any { + private _rectangleToQuad(rectangle: IRectangle, pageHeight: number): Quad { const x1 = rectangle.topLeft.x; const y1 = pageHeight - (rectangle.topLeft.y + rectangle.height); diff --git a/apps/red-ui/src/app/modules/file-preview/services/file-preview-state.service.ts b/apps/red-ui/src/app/modules/file-preview/services/file-preview-state.service.ts index b3be2a8bd..ba8aec14d 100644 --- a/apps/red-ui/src/app/modules/file-preview/services/file-preview-state.service.ts +++ b/apps/red-ui/src/app/modules/file-preview/services/file-preview-state.service.ts @@ -1,13 +1,12 @@ import { Injectable, Injector } from '@angular/core'; import { combineLatest, firstValueFrom, from, merge, Observable, of, pairwise, Subject, switchMap } from 'rxjs'; -import { Dossier, DOSSIER_ID, File } from '@red/domain'; +import { Dossier, DOSSIER_ID, File, FILE_ID } from '@red/domain'; import { ActivatedRoute, Router } 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, startWith, tap, withLatestFrom } from 'rxjs/operators'; import { FileManagementService } from '@services/entity-services/file-management.service'; -import { FILE_ID } from '@utils/constants'; import { dossiersServiceResolver } from '@services/entity-services/dossiers.service.provider'; import { wipeFilesCache } from '@red/cache'; import { DossiersService } from '@services/dossiers/dossiers.service'; diff --git a/apps/red-ui/src/app/modules/file-preview/services/skipped.service.ts b/apps/red-ui/src/app/modules/file-preview/services/skipped.service.ts index 9f1f6238f..a56db21ce 100644 --- a/apps/red-ui/src/app/modules/file-preview/services/skipped.service.ts +++ b/apps/red-ui/src/app/modules/file-preview/services/skipped.service.ts @@ -1,24 +1,38 @@ import { Injectable } from '@angular/core'; import { BehaviorSubject, Observable } from 'rxjs'; -import { skip } from 'rxjs/operators'; +import { skip, tap } from 'rxjs/operators'; import { shareDistinctLast } from '@iqser/common-ui'; +import { PdfViewer } from './pdf-viewer.service'; @Injectable() export class SkippedService { readonly hideSkipped$: Observable; - private readonly _hideSkipped$ = new BehaviorSubject(false); + readonly #hideSkipped$ = new BehaviorSubject(false); - constructor() { - this.hideSkipped$ = this._hideSkipped$.pipe(shareDistinctLast(), skip(1)); + constructor(private readonly _pdf: PdfViewer) { + this.hideSkipped$ = this.#hideSkipped$.pipe( + tap(hideSkipped => this._handleIgnoreAnnotationsDrawing(hideSkipped)), + shareDistinctLast(), + skip(1), + ); } get hideSkipped(): boolean { - return this._hideSkipped$.value; + return this.#hideSkipped$.value; } toggleSkipped($event): void { $event.stopPropagation(); $event.preventDefault(); - this._hideSkipped$.next(!this.hideSkipped); + this.#hideSkipped$.next(!this.hideSkipped); + } + + private _handleIgnoreAnnotationsDrawing(hideSkipped: boolean): void { + const ignored = this._pdf.getAnnotations(a => a.getCustomData('skipped')); + if (hideSkipped) { + this._pdf.hideAnnotations(ignored); + } else { + this._pdf.showAnnotations(ignored); + } } } diff --git a/apps/red-ui/src/app/modules/file-preview/shared/constants.ts b/apps/red-ui/src/app/modules/file-preview/shared/constants.ts index 75e87885e..a61d3f581 100644 --- a/apps/red-ui/src/app/modules/file-preview/shared/constants.ts +++ b/apps/red-ui/src/app/modules/file-preview/shared/constants.ts @@ -1,6 +1,19 @@ -export const ALLOWED_KEYBOARD_SHORTCUTS: readonly string[] = ['+', '-', 'p', 'r', 'Escape'] as const; +import { List } from '@iqser/common-ui'; -export const ALL_HOTKEYS = ['Escape', 'F', 'f', 'ArrowUp', 'ArrowDown']; +export const ActionsHelpModeKeys = { + redaction: 'redaction_text', + 'manual-redaction': 'redaction_text', + recommendation: 'recommendation', + skipped: 'skipped', + hint: 'hint_text', + 'hint-ocr': 'hint_picture', + 'hint-formula': 'picture', + 'hint-image': 'picture', +} as const; + +export const ALLOWED_KEYBOARD_SHORTCUTS: List = ['+', '-', 'p', 'r', 'Escape'] as const; + +export const ALL_HOTKEYS: List = ['Escape', 'F', 'f', 'ArrowUp', 'ArrowDown'] as const; export type HeaderElementType = | 'SHAPE_TOOL_GROUP_BUTTON' diff --git a/apps/red-ui/src/app/services/breadcrumbs.service.ts b/apps/red-ui/src/app/services/breadcrumbs.service.ts index b570170f9..60d56a594 100644 --- a/apps/red-ui/src/app/services/breadcrumbs.service.ts +++ b/apps/red-ui/src/app/services/breadcrumbs.service.ts @@ -5,8 +5,7 @@ import { BehaviorSubject, Observable, of } from 'rxjs'; import { filter, pluck } from 'rxjs/operators'; import { FilesMapService } from '@services/entity-services/files-map.service'; import { TranslateService } from '@ngx-translate/core'; -import { BreadcrumbTypes, DOSSIER_ID, DOSSIERS_ARCHIVE } from '@red/domain'; -import { DOSSIER_TEMPLATE_ID, FILE_ID } from '@utils/constants'; +import { BreadcrumbTypes, DOSSIER_ID, DOSSIER_TEMPLATE_ID, DOSSIERS_ARCHIVE, FILE_ID } from '@red/domain'; import { DossiersService } from '@services/dossiers/dossiers.service'; import { dossiersServiceResolver } from '@services/entity-services/dossiers.service.provider'; import { FeaturesService } from '@services/features.service'; @@ -34,7 +33,7 @@ export type Breadcrumbs = List; }) export class BreadcrumbsService { readonly breadcrumbs$: Observable; - private readonly _store$ = new BehaviorSubject([]); + readonly #store$ = new BehaviorSubject([]); constructor( private readonly _injector: Injector, @@ -44,17 +43,17 @@ export class BreadcrumbsService { private readonly _dashboardStatsService: DashboardStatsService, private readonly _featuresService: FeaturesService, ) { - this.breadcrumbs$ = this._store$.asObservable(); + this.breadcrumbs$ = this.#store$.asObservable(); - this._router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe(() => { - const root = this._router.routerState.snapshot.root; + _router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe(() => { + const root = _router.routerState.snapshot.root; this._clear(); this._addBreadcrumbs(root); }); } get breadcrumbs() { - return this._store$.value; + return this.#store$.value; } private get _dossiersService(): DossiersService { @@ -73,11 +72,11 @@ export class BreadcrumbsService { } private _append(breadcrumb: Breadcrumb) { - this._store$.next([...this._store$.value, breadcrumb]); + this.#store$.next([...this.#store$.value, breadcrumb]); } private _clear() { - this._store$.next([]); + this.#store$.next([]); } private _addBreadcrumbs(route: ActivatedRouteSnapshot, params: Record = {}) { @@ -132,7 +131,7 @@ export class BreadcrumbsService { } private _dossierTemplateBreadcrumb(params: Record): Breadcrumb { - const dossierTemplateId: string = params[DOSSIER_TEMPLATE_ID]; + const dossierTemplateId = params[DOSSIER_TEMPLATE_ID]; return { name$: this._dashboardStatsService.getEntityChanged$(dossierTemplateId).pipe(pluck('name')), type: 'text' as BreadcrumbDisplayType, diff --git a/apps/red-ui/src/app/services/entity-services/dictionaries-map.service.ts b/apps/red-ui/src/app/services/entity-services/dictionaries-map.service.ts index f828d0326..248ee722d 100644 --- a/apps/red-ui/src/app/services/entity-services/dictionaries-map.service.ts +++ b/apps/red-ui/src/app/services/entity-services/dictionaries-map.service.ts @@ -1,7 +1,6 @@ import { Injectable } from '@angular/core'; -import { Dictionary, IDictionary } from '@red/domain'; +import { Dictionary, DOSSIER_TEMPLATE_ID, IDictionary } from '@red/domain'; import { EntitiesMapService } from '@iqser/common-ui'; -import { DOSSIER_TEMPLATE_ID } from '@utils/constants'; @Injectable({ providedIn: 'root' }) export class DictionariesMapService extends EntitiesMapService { diff --git a/apps/red-ui/src/app/services/entity-services/dossier-states-map.service.ts b/apps/red-ui/src/app/services/entity-services/dossier-states-map.service.ts index dfdcd7287..1c6083cae 100644 --- a/apps/red-ui/src/app/services/entity-services/dossier-states-map.service.ts +++ b/apps/red-ui/src/app/services/entity-services/dossier-states-map.service.ts @@ -1,7 +1,6 @@ import { Injectable } from '@angular/core'; -import { DonutChartConfig, DossierState, IDossierState } from '@red/domain'; +import { DonutChartConfig, DOSSIER_TEMPLATE_ID, DossierState, IDossierState } from '@red/domain'; import { EntitiesMapService } from '@iqser/common-ui'; -import { DOSSIER_TEMPLATE_ID } from '@utils/constants'; import { flatMap } from 'lodash-es'; @Injectable({ providedIn: 'root' }) diff --git a/apps/red-ui/src/app/services/entity-services/dossier-template-stats.service.ts b/apps/red-ui/src/app/services/entity-services/dossier-template-stats.service.ts index c368cf2db..b323ea579 100644 --- a/apps/red-ui/src/app/services/entity-services/dossier-template-stats.service.ts +++ b/apps/red-ui/src/app/services/entity-services/dossier-template-stats.service.ts @@ -1,7 +1,6 @@ import { Injectable, Injector } from '@angular/core'; import { StatsService } from '@iqser/common-ui'; -import { DossierTemplateStats, IDossierTemplateStats } from '@red/domain'; -import { DOSSIER_TEMPLATE_ID } from '@utils/constants'; +import { DOSSIER_TEMPLATE_ID, DossierTemplateStats, IDossierTemplateStats } from '@red/domain'; @Injectable({ providedIn: 'root', diff --git a/apps/red-ui/src/app/utils/constants.ts b/apps/red-ui/src/app/utils/constants.ts index 49a1379a1..7f912541c 100644 --- a/apps/red-ui/src/app/utils/constants.ts +++ b/apps/red-ui/src/app/utils/constants.ts @@ -1,5 +1,2 @@ export const CHANGED_CHECK_INTERVAL = 5000; export const FALLBACK_COLOR = '#CCCCCC'; -export const FILE_ID = 'fileId'; -export const DOSSIER_TEMPLATE_ID = 'dossierTemplateId'; -export const ENTITY_TYPE = 'entity'; diff --git a/apps/red-ui/src/assets/config/config.json b/apps/red-ui/src/assets/config/config.json index 684210fa7..d8966dc0b 100644 --- a/apps/red-ui/src/assets/config/config.json +++ b/apps/red-ui/src/assets/config/config.json @@ -1,7 +1,7 @@ { "ADMIN_CONTACT_NAME": null, "ADMIN_CONTACT_URL": null, - "API_URL": "https://dev-08.iqser.cloud/redaction-gateway-v1", + "API_URL": "https://dev-05.iqser.cloud/redaction-gateway-v1", "APP_NAME": "RedactManager", "AUTO_READ_TIME": 3, "BACKEND_APP_VERSION": "4.4.40", @@ -17,7 +17,7 @@ "MAX_RETRIES_ON_SERVER_ERROR": 3, "OAUTH_CLIENT_ID": "redaction", "OAUTH_IDP_HINT": null, - "OAUTH_URL": "https://dev-08.iqser.cloud/auth/realms/redaction", + "OAUTH_URL": "https://dev-05.iqser.cloud/auth/realms/redaction", "RECENT_PERIOD_IN_HOURS": 24, "SELECTION_MODE": "structural", "MANUAL_BASE_URL": "https://docs.redactmanager.com/preview" diff --git a/libs/red-domain/src/lib/dossier-templates/types.ts b/libs/red-domain/src/lib/dossier-templates/constants.ts similarity index 68% rename from libs/red-domain/src/lib/dossier-templates/types.ts rename to libs/red-domain/src/lib/dossier-templates/constants.ts index 02c37c06f..aa890151f 100644 --- a/libs/red-domain/src/lib/dossier-templates/types.ts +++ b/libs/red-domain/src/lib/dossier-templates/constants.ts @@ -5,3 +5,6 @@ export const DossierTemplateStatuses = { } as const; export type DossierTemplateStatus = keyof typeof DossierTemplateStatuses; + +export const DOSSIER_TEMPLATE_ID = 'dossierTemplateId'; +export const ENTITY_TYPE = 'entity'; diff --git a/libs/red-domain/src/lib/dossier-templates/dossier-template.model.ts b/libs/red-domain/src/lib/dossier-templates/dossier-template.model.ts index 82f5cc5d3..1fc314d9b 100644 --- a/libs/red-domain/src/lib/dossier-templates/dossier-template.model.ts +++ b/libs/red-domain/src/lib/dossier-templates/dossier-template.model.ts @@ -1,7 +1,7 @@ import { IListable, List } from '@iqser/common-ui'; import { IDossierTemplate } from './dossier-template'; import { DownloadFileType } from '../shared'; -import { DossierTemplateStatus, DossierTemplateStatuses } from './types'; +import { DossierTemplateStatus, DossierTemplateStatuses } from './constants'; export class DossierTemplate implements IDossierTemplate, IListable { readonly createdBy: string; diff --git a/libs/red-domain/src/lib/dossier-templates/dossier-template.ts b/libs/red-domain/src/lib/dossier-templates/dossier-template.ts index f05c44084..054a7ab30 100644 --- a/libs/red-domain/src/lib/dossier-templates/dossier-template.ts +++ b/libs/red-domain/src/lib/dossier-templates/dossier-template.ts @@ -1,6 +1,6 @@ import { List } from '@iqser/common-ui'; import { DownloadFileType } from '../shared'; -import { DossierTemplateStatus } from './types'; +import { DossierTemplateStatus } from './constants'; export interface IDossierTemplate { /** diff --git a/libs/red-domain/src/lib/dossier-templates/index.ts b/libs/red-domain/src/lib/dossier-templates/index.ts index 8af5fc988..62ffeeea4 100644 --- a/libs/red-domain/src/lib/dossier-templates/index.ts +++ b/libs/red-domain/src/lib/dossier-templates/index.ts @@ -4,4 +4,4 @@ export * from './dossier-template-stats'; export * from './dossier-template-stats.model'; export * from './dashboard-stats'; export * from './dashboard-stats.model'; -export * from './types'; +export * from './constants'; diff --git a/libs/red-domain/src/lib/files/types.ts b/libs/red-domain/src/lib/files/types.ts index b5d702ffe..cde71691a 100644 --- a/libs/red-domain/src/lib/files/types.ts +++ b/libs/red-domain/src/lib/files/types.ts @@ -1,5 +1,7 @@ import { List } from '@iqser/common-ui'; +export const FILE_ID = 'fileId'; + export const WorkflowFileStatuses = { APPROVED: 'APPROVED', NEW: 'NEW', From 845f39c18369b9a286d30efce798535fd651a215 Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Thu, 12 May 2022 13:45:33 +0200 Subject: [PATCH 7/7] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3261 -> 3261 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ce73f1bec..7a3f0422a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.471.0", + "version": "3.472.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index 1822802c12ab2bd986f59f5d9cff10b0eef489ec..5da5dca364427b0a7cf1b6f0e722f868c193a331 100644 GIT binary patch delta 73 zcmV-P0Ji_V8NC^hcM7v~JkNV!J9c0Pk%1#8oaO&9+FtorB*qbwWAmu4-)|2t;DtXW ff6rO^i(dYLvjq7sg1~>V%jydVpxstQ08jt`356n& delta 73 zcmV-P0Ji_V8NC^hcM1~(_R@P{J9gmMk%1#8pXL8C+FtorB*qbwWAmu4-)|2t;DtXW ff6rO^i(dYoy#V