From 54bf4cbc09b16506525e7fbf163607a0df4efd8c Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Tue, 28 Jun 2022 16:47:27 +0300 Subject: [PATCH 01/28] RED-3842: Show progress bar when downloading file --- .../file-preview-screen.component.ts | 3 +- .../services/file-preview-state.service.ts | 56 ++++++++++++++++++- .../file-actions/file-actions.component.ts | 4 +- .../services/file-upload.service.ts | 8 +-- .../services/files/file-management.service.ts | 18 +++--- libs/common-ui | 2 +- libs/red-domain/src/lib/files/file.model.ts | 2 + libs/red-domain/src/lib/files/file.ts | 1 + 8 files changed, 71 insertions(+), 23 deletions(-) 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 cf8b02fd6..27baa47d8 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 @@ -92,7 +92,6 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni private readonly _router: Router, private readonly _ngZone: NgZone, private readonly _logger: NGXLogger, - private readonly _filesService: FilesService, private readonly _annotationManager: REDAnnotationManager, private readonly _errorService: ErrorService, private readonly _filterService: FilterService, @@ -347,7 +346,7 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni async downloadOriginalFile({ cacheIdentifier, dossierId, fileId, filename }: File) { const fileManagementService = this._injector.get(FileManagementService); - const originalFile = fileManagementService.downloadOriginalFile(dossierId, fileId, 'response', cacheIdentifier); + const originalFile = fileManagementService.downloadOriginal(dossierId, fileId, 'response', cacheIdentifier); download(await firstValueFrom(originalFile), filename); } 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 2f0e883c9..4f138b3c1 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 @@ -4,7 +4,7 @@ import { Dictionary, Dossier, DOSSIER_ID, File, FILE_ID } from '@red/domain'; import { ActivatedRoute, Router } from '@angular/router'; import { FilesMapService } from '@services/files/files-map.service'; import { PermissionsService } from '@services/permissions.service'; -import { boolFactory } from '@iqser/common-ui'; +import { boolFactory, LoadingService } from '@iqser/common-ui'; import { filter, map, startWith, tap, withLatestFrom } from 'rxjs/operators'; import { FileManagementService } from '@services/files/file-management.service'; import { dossiersServiceResolver } from '@services/entity-services/dossiers.service.provider'; @@ -12,6 +12,28 @@ import { wipeFilesCache } from '@red/cache'; import { DossiersService } from '@services/dossiers/dossiers.service'; import { FilesService } from '@services/files/files.service'; import { DictionaryService } from '@services/entity-services/dictionary.service'; +import { HttpEvent, HttpEventType, HttpProgressEvent, HttpResponse } from '@angular/common/http'; + +const ONE_MEGABYTE = 1024 * 1024; + +function getRemainingTime(event: HttpProgressEvent, startTime: number) { + const currTime = new Date().getTime(); + const remaining = event.total - event.loaded; + const speed = event.loaded / ((currTime - startTime) / 1000); + return Math.round(remaining / speed); +} + +function getRemainingTimeVerbose(event: HttpProgressEvent, startTime: number) { + const remainingTime = getRemainingTime(event, startTime); + if (remainingTime > 60) { + return `${Math.round(remainingTime / 60)} minutes`; + } + return `${remainingTime} seconds`; +} + +function isDownload(event: HttpEvent): event is HttpProgressEvent { + return event.type === HttpEventType.DownloadProgress && event.total > ONE_MEGABYTE; +} @Injectable() export class FilePreviewStateService { @@ -40,6 +62,7 @@ export class FilePreviewStateService { private readonly _dossiersService: DossiersService, private readonly _fileManagementService: FileManagementService, private readonly _dictionaryService: DictionaryService, + private readonly _loadingService: LoadingService, ) { const dossiersService = dossiersServiceResolver(_injector, router); @@ -97,8 +120,35 @@ export class FilePreviewStateService { } #downloadOriginalFile(cacheIdentifier: string, wipeCaches = true): Observable { - const downloadFile = this._fileManagementService.downloadOriginalFile(this.dossierId, this.fileId, 'body', cacheIdentifier); + const downloadFile$ = this.#getFileToDownload(cacheIdentifier); const obs = wipeCaches ? from(wipeFilesCache()) : of({}); - return obs.pipe(switchMap(() => downloadFile)); + return obs.pipe(switchMap(() => downloadFile$)); + } + + #getFileToDownload(cacheIdentifier: string): Observable { + const downloadFile$ = this._fileManagementService.downloadOriginal(this.dossierId, this.fileId, 'events', cacheIdentifier); + let start; + return downloadFile$.pipe( + tap(() => (start ? undefined : (start = new Date().getTime()))), + tap(event => this.#showLoadingIfIsDownloadEvent(event, start)), + filter(event => event.type === HttpEventType.Response), + map((event: HttpResponse) => event.body), + ); + } + + #showLoadingIfIsDownloadEvent(event: HttpEvent, start) { + if (isDownload(event)) { + this.#updateDownloadProgress(event, start); + } + } + + #updateDownloadProgress(event: HttpProgressEvent, startTime: number) { + const progress = Math.round((event.loaded / event.total) * 100); + this._loadingService.update({ + title: 'Loading ' + this.file.filename, + type: 'progress-bar', + value: progress, + remainingTime: getRemainingTimeVerbose(event, startTime), + }); } } diff --git a/apps/red-ui/src/app/modules/shared-dossiers/components/file-actions/file-actions.component.ts b/apps/red-ui/src/app/modules/shared-dossiers/components/file-actions/file-actions.component.ts index de8bee50e..de12143e1 100644 --- a/apps/red-ui/src/app/modules/shared-dossiers/components/file-actions/file-actions.component.ts +++ b/apps/red-ui/src/app/modules/shared-dossiers/components/file-actions/file-actions.component.ts @@ -10,7 +10,7 @@ import { ViewChild, } from '@angular/core'; import { PermissionsService } from '@services/permissions.service'; -import { Action, ActionTypes, Dossier, File } from '@red/domain'; +import { Action, ActionTypes, Dossier, File, User } from '@red/domain'; import { DossiersDialogService } from '../../services/dossiers-dialog.service'; import { CircleButtonType, @@ -46,7 +46,7 @@ import { ROTATION_ACTION_BUTTONS } from '../../../pdf-viewer/utils/constants'; }) export class FileActionsComponent implements OnChanges { readonly circleButtonTypes = CircleButtonTypes; - readonly currentUser; + readonly currentUser: User; @Input() file: File; @Input() dossier: Dossier; diff --git a/apps/red-ui/src/app/modules/upload-download/services/file-upload.service.ts b/apps/red-ui/src/app/modules/upload-download/services/file-upload.service.ts index 242c54047..f3ca4fbac 100644 --- a/apps/red-ui/src/app/modules/upload-download/services/file-upload.service.ts +++ b/apps/red-ui/src/app/modules/upload-download/services/file-upload.service.ts @@ -215,8 +215,8 @@ export class FileUploadService extends GenericService impleme private _createSubscription(uploadFile: FileUploadModel) { this.activeUploads++; const obs = this.uploadFileForm(uploadFile.dossierId, uploadFile.keepManualRedactions, uploadFile.file); - return obs.subscribe( - event => { + return obs.subscribe({ + next: event => { if (event.type === HttpEventType.UploadProgress) { uploadFile.progress = Math.round((event.loaded / (event.total || event.loaded)) * 100); this._applicationRef.tick(); @@ -234,7 +234,7 @@ export class FileUploadService extends GenericService impleme this._removeUpload(uploadFile); } }, - (err: HttpErrorResponse) => { + error: (err: HttpErrorResponse) => { uploadFile.completed = true; uploadFile.error = { // Extract error message @@ -246,7 +246,7 @@ export class FileUploadService extends GenericService impleme this.scheduleUpload(uploadFile); } }, - ); + }); } private _removeUpload(fileUploadModel: FileUploadModel) { diff --git a/apps/red-ui/src/app/services/files/file-management.service.ts b/apps/red-ui/src/app/services/files/file-management.service.ts index 4d1d1ec9f..1797710bf 100644 --- a/apps/red-ui/src/app/services/files/file-management.service.ts +++ b/apps/red-ui/src/app/services/files/file-management.service.ts @@ -1,21 +1,16 @@ import { GenericService, HeadersConfiguration, List, QueryParam, RequiredParam, Validate } from '@iqser/common-ui'; import { Injectable, Injector } from '@angular/core'; -import { HttpHeaders, HttpResponse } from '@angular/common/http'; +import { HttpEvent, HttpHeaders, HttpResponse } from '@angular/common/http'; import { Observable } from 'rxjs'; import { switchMap } from 'rxjs/operators'; import { FilesService } from './files.service'; -import { DossierStatsService } from '../dossiers/dossier-stats.service'; import { File, IPageRotationRequest } from '@red/domain'; @Injectable({ providedIn: 'root', }) export class FileManagementService extends GenericService { - constructor( - protected readonly _injector: Injector, - private readonly _filesService: FilesService, - private readonly _dossierStatsService: DossierStatsService, - ) { + constructor(protected readonly _injector: Injector, private readonly _filesService: FilesService) { super(_injector, ''); } @@ -30,13 +25,13 @@ export class FileManagementService extends GenericService { return this._post(body, `rotate/${dossierId}/${fileId}`); } - downloadOriginalFile(dossierId: string, fileId: string, observe?: 'body', indicator?: string): Observable; - downloadOriginalFile(dossierId: string, fileId: string, observe?: 'response', indicator?: string): Observable>; + downloadOriginal(dossierId: string, fileId: string, observe?: 'events', indicator?: string): Observable>; + downloadOriginal(dossierId: string, fileId: string, observe?: 'response', indicator?: string): Observable>; @Validate() - downloadOriginalFile( + downloadOriginal( @RequiredParam() dossierId: string, @RequiredParam() fileId: string, - observe: 'body' | 'response' = 'body', + observe: 'events' | 'response' = 'events', indicator?: string, ) { const queryParams: QueryParam[] = [{ key: 'inline', value: true }]; @@ -56,6 +51,7 @@ export class FileManagementService extends GenericService { params: this._queryParams(queryParams), headers: headers, observe: observe, + reportProgress: observe === 'events', }); } } diff --git a/libs/common-ui b/libs/common-ui index f9e248833..d5ded3615 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit f9e24883381ddbf93df5074ec1c176973db44ed1 +Subproject commit d5ded3615fdf420ca42c21826654013165279462 diff --git a/libs/red-domain/src/lib/files/file.model.ts b/libs/red-domain/src/lib/files/file.model.ts index 54f4ad208..7d3886e83 100644 --- a/libs/red-domain/src/lib/files/file.model.ts +++ b/libs/red-domain/src/lib/files/file.model.ts @@ -31,6 +31,7 @@ export class File extends Entity implements IFile { readonly fileAttributes: FileAttributes; readonly fileId: string; readonly filename: string; + readonly fileSize: number; readonly hasAnnotationComments: boolean; readonly hasHints: boolean; readonly hasImages: boolean; @@ -94,6 +95,7 @@ export class File extends Entity implements IFile { this.excludedFromAutomaticAnalysis = !!file.excludedFromAutomaticAnalysis; this.fileId = file.fileId; this.filename = file.filename; + this.fileSize = file.fileSize; this.hasAnnotationComments = !!file.hasAnnotationComments; this.hasHints = !!file.hasHints; this.hasImages = !!file.hasImages; diff --git a/libs/red-domain/src/lib/files/file.ts b/libs/red-domain/src/lib/files/file.ts index 59ba00cd8..0d0155445 100644 --- a/libs/red-domain/src/lib/files/file.ts +++ b/libs/red-domain/src/lib/files/file.ts @@ -62,6 +62,7 @@ export interface IFile { * The file's name. */ readonly filename: string; + readonly fileSize: number; /** * Shows if this file has comments on annotations. */ From 895990d7ae65c2eb2712a9575081b7e542aff3da Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Tue, 28 Jun 2022 15:50:07 +0200 Subject: [PATCH 02/28] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3290 -> 3293 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 08b5253a5..9570f33f2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.570.0", + "version": "3.571.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index 89a9974b1c419c931dd589712f1a942a775ee381..a484c1bbb0b7e700fd05181ab070375ed18917ca 100644 GIT binary patch delta 3206 zcmV;140-d~8QmF>c7L#1*`BlZp4pBaIQBCX{3zHAN>ejjA@oyB_1{>Qy8Puw&F(W& ze=Kcyy!<`S_RsSFDauj#S0u&}lWohWu0L!JF5s0vC4bL#LD-%Ay>$TcUj=^f4A~!- zRCD=1m;b9M#Z^rhy8QFEUs;>W7ZAtt!Fj!<3}=hGUCLhB3(vM+*b86$2I6-me%Io61HX>w zYmK;BvSt-FWsnFjq5PE0PJSK0q$aw)@ zDWNd`7Wsi)zJGmj@h}*%-G(G7Dk4UPIJ(_cMU%%?RAfc9MW47E&-I=0IFveK2xo>> z(|2TxRz9CVR^7>IIYm&H(VSQvDw}oNagVDV%`H}xFnFWYg#}~99sHsSX8GS=e!+&13Pb;A$i^WWG7RR*Uj8@)Q8kQkys8!> zp{ED%Tz{O-q`X)K%e%xC$=M4d{ZUiZys9i{&PZj@1)FPw_;1f6VVf3jB)<&`6vuuX z2uK&N_9Uhl6?t}#>Zl?lM>vnsm9j+Ee7#)@Smt%DNziv&KA6|`K(c{c-46;;HSjbe zR@sCZjW8F%1Q`RqN^ITDzzi7Ry+pW$sdL#sIe&1ed{{J^L`~)JG9j2X5E4Kmh!=R0 z;gDp~5FM=0tMlWfeOAYBvpODaZ;Mi$$-}O^* zFaS~cAuDTr?QyK6X*SwF;u4?SC<5$krH0j%6*SB6Fi~FQWY((ev?mz20~yMm0!&?^R}x-zK!G znH8l}dRom4*^eU(z-8D3Z4}qdr%%_=&VLx|k;cjpX}JF5r!uJBVZx82cBzlRROR!R z2k=yl)ny{knZplYrNTIxr=+56#Jj#8oYnKs(3dpN2xU#aL!UjrSOR1VNFbTzsF?L$ z=JIceZLcr8(SI$f+axRQ24mgHv74YD`xjt#Q$ud{4km|qMhD?dfpF}b9>fzZ$Ff+{&kK8%}i;z@F_Wt`QB~V|Zuf@*AA8?L$q^bw=tf%I2{Y^j5*F~1WJe+4= zkcvzay_puJ-vj$?QP&jE1zZ^E;eWz%yTch9fxMXnxsDW&x6Pi1G$@2{IRq8uT-l>9 zW6FwZsH^s*wgk}#OGp%=G^6DGza*ltAQ~P#We_b7k#(lmfpbvAucXB5_dkH7YOX^= zIMZvw!#$keWq>0dkvF**Y&SmO@S8vV`ycn~syi8K5GAAP8KCaewZUf%Y)79nbPH;wn>ks?SpAv@8kJ7{+6QHnN%?EtSa% zE69PPs@aFN(f2D_m=pyQ!EFs}l3!~6DOBRPOtiGWg>VeI-Zl!+`h_y+*XD!+M5hwP z!%7khY2|mkn;m4CCWqYoGcy9vps!#9PrAO#s3`BnUX2;npkk#~oyoPRgOVQgy%+@&zz7Kw)jD+5!(DTaqypS4;t>R%HuBAD?-2JFCB zuDb$uxEszBV2r)IxmLTsZfJCCLCD60;cE@KvfJAA+g0QqVp26%)S6sQl;3)yL6Zkf z7~?4PMoqqveWEFtMq_2 z!7JNN65G(mnH5ANxX}n`)m;osl8xCaw@s z5PL)$Rnq*n<$sFf2C*iilw{?;h{?e$3GPcT#jRaUV-n)Y{ojMC*HH!WI&|&Y-r(x$ z$P&8NILiTC2hH<@6Q_BM?M1TY2SHvJI_LO}HCm2Z9MuOn^OOF#OO#>cCpt|pkr7nt8i3h~3%giCC<8&_8%plPH5#>Jdne;z)Q9eO zeXf99)cuB?y5?f4qrWKhbl?op#liiH-BY^n%bRvOYQIXXzc0B2%xu$vy}Xga28z! z_NT}a2j5`lZa=tWQg5`;qc5pRV{hDP8i{nH^B0vJcBO_~so+*h z)LOOCCz}oaIz;rPDX7fAotGg6#S>$B$>gECtVj& z;m^1eqIRFW_@Q^2ce`USX66-+0Xk20l;B*~p6%Ux}8Xi_nDk`k(&%EO*$V;6C5-&@5lT~hC<#ttGU*&aGeqZHxRY6}BbXBXq zY9*`6?pcjI!d%w1xX;|@oqy>1xb59ZARoM|JL3M(A3XB!A|A%V8$#^vW1oZ=Xb=_I z4Id%= delta 3203 zcmV-}41Dw58QK|;c7G6ffn$5lGuyEPs6xSyg3X{bHNzD`KgCr4jb*9JUw+i=J|p$V z(uT*&-*eagS^hsoIV%5(#5iKIZ5h?|ht0tSyz-~y@42q+_wsjLALPG+*JsH7xTKoP z|GE5MMJcXo!qDZPzx~SET)wz?MfYV)yrK`>@tE&S}&tw z{~Q#;{dI!(G`s)&k0r@}^$pJJEoC@c-0f2K%3gT3{lZ@O;x`b#EAhJ)zZ>{$TyG70m_(}5wxS{{sxA7&-FU9=jK`tW5kojLteUQLFN+m3r&?PzYXqJ+U4tu8DWEB1i35oy$Y)&y5kDiGP@ zx7HnvSqiXhTLrd7xM2nVE{mEnT0l)jGR){3avJuseScaBC0Q(HlCwCr{V4|;78U0s za>}=;E;1UUPhu|)Vti<{Djd_M2FhE!417+KV zc(o@n#i+=$dsIgiAvwZ%jINX=vgYgUTEH@|YfXZ_+w#G@wg-|8gz$<$uGX(IjdrhnES#tbvdK8bQ3klMII> zlZNPE)m*9ijJ#zQ4<|tNBGM{^3Ctvbfmv)dW;A+9^IU33XZnPMz5~Zjll!ipih}`& z$`4st>uZl=B~7!@{t=h>{t&w9Xy# z&VTb6k@|<8jIxX@W)B5x7Ks{GMD5t2sGfiZ!cRg38}0a$@M-PU)38!(-q^;9RTYz{ zsBml5K@~{FjnQK;pOA`T{@l&Xz{XoiYcq4|CL6ESevv&&9Wtsx@_Vl`d;B(`Rn4p@ zrP9-CX2^aVVE`_}CTOF$Za#gwhIYnSkAE~)hDgKpA3v2r?G6)u9JNb*1g0vVzdV4a zYOF33fzBL$04o*7(L5y;Wh378_28_Ye}=xKc}6H}@*Vo@`Na|-TR;NIEJwwx_cE7% zOKf|6*^T~dQQan4aW@$2PLACK{n)<%vzr=nvv)8##4|bwZwiEC-}E59AbG>yk$-AW z^7lV*nIWsJiiBnZVE!Ch02q$aibg4;I}=L5B$UMKp?uRsY0~7kA`a2VuconZ`|)3f zB!`)4j(FtO5m@;3

d5Ekty$+m%B7P+$UcdhVBvo@A8p4@g z6CUp2{4N6=@rb<1#bCSf0f*oG>EHkOXN|7X_un@O-4XOv1?rJs51~!3hJQd(q-QEt zMd~JFQ!#WBz`u1nP7dHeG40}3>Hd00;n>ns9GRzgnLJH^=+16^-$j$jIoiIpk{?Wj ztB(yyRUhfOEuy1YJ3>>isTsGciuL7ti`;})dz=ZJGpdaSP2TGgI;Ukxn8q+36SR@l^k}I}R#-s} z997Letc|{3(ZZxCm~al zSV$|s+*88vZ*h=SN7 z+NhG|w=Gv3H-CsV8KopE_eD$&W=U{gdMR%0Y8sOePwxL7RK1QWh}WTO*Y*ZiS4Wo6 zwbr3sAlEt|X-rv4bKU>}-UB)Z(yi4{+3T3GFljUzp!&sZKl0 zX;B{KKaLV3pQKI+S*6rZAaeXnsdFVpAUNU&s1U*p>H1(m`VOB=ytL$ipN1QOyyV+j z9fXdD8GlLC&~$20lN}r0rFAog9|z?3i7YE3wA^L)W!fJ%2^|RJOuStJQhEDwI7n4H z{{Xz`4P{uowdxed#ogi5W8 zU1vxQ`6lK_<2>7_#$EM*cM?duQWx4M-;$qk&S1LfvNCL3I5*1quh=w6iV6^G%92zO zu7Al8yV;v9$}y;6^F^buKZhI8sVMz16@SF_2X&t$N=bB^(VFqi6#{IkFeiHEJq#gL z35jQ+z#kw0@?L)2+DD8FzE#<9NbtsJIo1o;tQYP;FNBhbbs*kWCqkp1>C&<*!B(#> z6Za4#F>+T`(scOhNjp?Y3J(=PsJDzHCA zmN+oKRtZ3+K=#Mi8fOZ>i6QoWe0u?L#{#Va zzVYMu*Q3cma;3(6gGn|kx4PNR?_|eo@8Wieaotd zNDSI7vcF}`NO|IV_C#ptm;#b9?{xO}TO6+&Qun!qG5P9yyhJP>xk7Q)XnzZ@f(-pf z9PH9$8UOW0Gof$!I+yvZ%#T`!jJ6CWBdmvPJf-eLcp=l&b0b2*oD pIhS)emvcFnb2*oDIhS)emvcFnb2*oDIhX&%@*ggckQM+?002SsM->17 From e6167509aec88229d9918b4ffb716e439ef5ce5f Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Tue, 28 Jun 2022 17:16:27 +0300 Subject: [PATCH 03/28] RED-4418: show change language only on dev --- .../user-profile-screen.component.html | 4 ++- .../user-profile-screen.component.ts | 30 +++++++++---------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.html b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.html index e984688de..5291221dd 100644 --- a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.html +++ b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.html @@ -15,7 +15,8 @@ -

+ +
@@ -23,6 +24,7 @@
+ diff --git a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.ts b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.ts index 6d904d8e0..e835758e3 100644 --- a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.ts +++ b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.ts @@ -10,6 +10,7 @@ import { UserService } from '@services/user.service'; import { ConfigService } from '@services/config.service'; import { LanguageService } from '../../../../../i18n/language.service'; import { firstValueFrom } from 'rxjs'; +import { UserPreferenceService } from '../../../../../services/user-preference.service'; @Component({ selector: 'redaction-user-profile-screen', @@ -18,30 +19,29 @@ import { firstValueFrom } from 'rxjs'; changeDetection: ChangeDetectionStrategy.OnPush, }) export class UserProfileScreenComponent extends BaseFormComponent implements OnInit { - changePasswordUrl: SafeResourceUrl; - translations = languagesTranslations; + readonly changePasswordUrl: SafeResourceUrl; + readonly translations = languagesTranslations; - private _profileModel: IProfile; + #profileModel: IProfile; constructor( - readonly permissionsService: PermissionsService, - private readonly _formBuilder: UntypedFormBuilder, + domSanitizer: DomSanitizer, + configService: ConfigService, private readonly _userService: UserService, - private readonly _configService: ConfigService, - private readonly _languageService: LanguageService, - private readonly _domSanitizer: DomSanitizer, + readonly permissionsService: PermissionsService, + readonly userPreferences: UserPreferenceService, private readonly _loadingService: LoadingService, + private readonly _formBuilder: UntypedFormBuilder, + private readonly _languageService: LanguageService, protected readonly _translateService: TranslateService, ) { super(); this._loadingService.start(); - this.changePasswordUrl = this._domSanitizer.bypassSecurityTrustResourceUrl( - `${this._configService.values.OAUTH_URL}/account/password`, - ); + this.changePasswordUrl = domSanitizer.bypassSecurityTrustResourceUrl(`${configService.values.OAUTH_URL}/account/password`); } get languageChanged(): boolean { - return this._profileModel['language'] !== this.form.get('language').value; + return this.#profileModel['language'] !== this.form.get('language').value; } get profileChanged(): boolean { @@ -49,7 +49,7 @@ export class UserProfileScreenComponent extends BaseFormComponent implements OnI keys.splice(keys.indexOf('language'), 1); for (const key of keys) { - if (this._profileModel[key] !== this.form.get(key).value) { + if (this.#profileModel[key] !== this.form.get(key).value) { return true; } } @@ -101,7 +101,7 @@ export class UserProfileScreenComponent extends BaseFormComponent implements OnI private _initializeForm(): void { try { this.form = this._getForm(); - this._profileModel = { + this.#profileModel = { email: this._userService.currentUser.email, firstName: this._userService.currentUser.firstName, lastName: this._userService.currentUser.lastName, @@ -111,7 +111,7 @@ export class UserProfileScreenComponent extends BaseFormComponent implements OnI // disable email if it's already set this.form.get('email').disable(); } - this.form.patchValue(this._profileModel, { emitEvent: false }); + this.form.patchValue(this.#profileModel, { emitEvent: false }); this.initialFormValue = this.form.getRawValue(); } catch (e) { } finally { From eb2b3f42802edadf493ee111906fb74efd5859bf Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Tue, 28 Jun 2022 16:19:00 +0200 Subject: [PATCH 04/28] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3293 -> 3292 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9570f33f2..f3a6c008c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.571.0", + "version": "3.572.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index a484c1bbb0b7e700fd05181ab070375ed18917ca..547e8afc5e9b1e90ba7d8f79c92531e10d596fba 100644 GIT binary patch delta 3172 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�UgO`~Vd~ zxFKC13`pPMlZls>9Pra{BaoMTTdRZ6@h~Ha8k$ZGYO-U)yR>e`@Z*5|K9OZbgqFMP zzD)b$CZPj?oQbzfKq_xv4hMg!YUdw-7rmhji?>#t;<&gwoSGcWFt-sC=SzWtE1$pL zQ9NWwgS=hC#qJ527(C1bkE*m$1ExVwo@5*u@|6AFX|O7{a`5d_IprSMh;YSdq@4(< zr+vc|=|Ub_434$cYYlxDu0=fkF7b}YS1t3C{pgxk7+V73P0L&%B2rq$(ltEEMB|V9w~Dir{Eu)JT?O{1$Px$U*D3)h^(6A`TaS4ADUp9}Ke%L4Z?w^)FR4jm zZ`^4biFBj$7nL1$rG{Lo;8sf1TD8$9neczAB`kF_<@VNdDYniHx0NRKVz{UuIvDK( zh>Y(CGadrOEtoyFoncdg z5y<}dTH{RNH!*+2-j8oDAnsV8RlqlX9RGSW8Az_wm~Sx2X605l+xeYL8V%4B&MN0R zFk}IkNN~(J>wq>nShIuMF0w`YGCa%I{Gf8h;ODGY*B+!$L?5%HE6%mO+yG8c5tQjd!T+f~e4INWJGUlDm{(g(&bwlbt zw=gDOeUF!j#UocJ&KhmuRgj_oh=X04EaSi4XeRV6U*|HPmHAQYkkOXGWQ6sQji=O| z2rq;;G_QaBBWKi-`1Vr&7G3gd{fJ-dzg(ai9#%~%Dy;0!yyGg!OPvK0FH3lnRc>G9 zc2!ohMOy!I9>TLcGVN2omBrQat8-#1OLw z>l$aL&65C Date: Tue, 28 Jun 2022 17:39:48 +0300 Subject: [PATCH 05/28] RED-4403: Enable add to dictionary for hint entities --- .../add-edit-entity.component.ts | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/apps/red-ui/src/app/modules/admin/shared/components/add-edit-entity/add-edit-entity.component.ts b/apps/red-ui/src/app/modules/admin/shared/components/add-edit-entity/add-edit-entity.component.ts index 88e8bdd58..3addc970e 100644 --- a/apps/red-ui/src/app/modules/admin/shared/components/add-edit-entity/add-edit-entity.component.ts +++ b/apps/red-ui/src/app/modules/admin/shared/components/add-edit-entity/add-edit-entity.component.ts @@ -10,7 +10,7 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { DictionaryService } from '@services/entity-services/dictionary.service'; import { BaseFormComponent, LoadingService, Toaster } from '@iqser/common-ui'; -const REDACTION_FIELDS = ['defaultReason', 'addToDictionaryAction']; +const REDACTION_FIELDS = ['defaultReason']; @Component({ selector: 'redaction-add-edit-entity [entity] [dossierTemplateId]', @@ -94,13 +94,14 @@ export class AddEditEntityComponent extends BaseFormComponent implements OnInit Object.assign(controlsConfig, { defaultReason: [{ value: null, disabled: true }], }); - - if (this.entity?.hasDictionary) { - Object.assign(controlsConfig, { - addToDictionaryAction: [this.#addToDictionaryActionControl], - }); - } } + + if (this.entity?.hasDictionary) { + Object.assign(controlsConfig, { + addToDictionaryAction: [this.#addToDictionaryActionControl], + }); + } + const form = this._formBuilder.group(controlsConfig); this.hasHexColor$ = this._colorEmpty$(form, 'hexColor'); @@ -112,15 +113,11 @@ export class AddEditEntityComponent extends BaseFormComponent implements OnInit REDACTION_FIELDS.forEach(field => form.removeControl(field)); } else { form.addControl('defaultReason', new UntypedFormControl({ value: null, disabled: true })); - - if (form.get('hasDictionary').value) { - form.addControl('addToDictionaryAction', new UntypedFormControl(this.#addToDictionaryActionControl)); - } } }); form.get('hasDictionary').valueChanges.subscribe(hasDictionary => { - if (hasDictionary && !form.get('hint').value) { + if (hasDictionary) { form.addControl('addToDictionaryAction', new UntypedFormControl(this.#addToDictionaryActionControl)); } else { form.removeControl('addToDictionaryAction'); From b367a4b5ceb929bcda42d793984d2a323ff75029 Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Tue, 28 Jun 2022 16:42:17 +0200 Subject: [PATCH 06/28] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3292 -> 3293 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f3a6c008c..58fad641a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.572.0", + "version": "3.573.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index 547e8afc5e9b1e90ba7d8f79c92531e10d596fba..08fa7db892b3ffd39ba85d451000e6c5494366ee 100644 GIT binary patch delta 3204 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 Date: Tue, 28 Jun 2022 18:04:01 +0300 Subject: [PATCH 07/28] RED-3842: fix translations --- .../services/file-preview-state.service.ts | 25 +++++++++++-------- apps/red-ui/src/assets/i18n/de.json | 3 +++ apps/red-ui/src/assets/i18n/en.json | 3 +++ 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/apps/red-ui/src/app/modules/file-preview/services/file-preview-state.service.ts b/apps/red-ui/src/app/modules/file-preview/services/file-preview-state.service.ts index 4f138b3c1..4cc249c90 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 @@ -13,6 +13,7 @@ import { DossiersService } from '@services/dossiers/dossiers.service'; import { FilesService } from '@services/files/files.service'; import { DictionaryService } from '@services/entity-services/dictionary.service'; import { HttpEvent, HttpEventType, HttpProgressEvent, HttpResponse } from '@angular/common/http'; +import { TranslateService } from '@ngx-translate/core'; const ONE_MEGABYTE = 1024 * 1024; @@ -23,14 +24,6 @@ function getRemainingTime(event: HttpProgressEvent, startTime: number) { return Math.round(remaining / speed); } -function getRemainingTimeVerbose(event: HttpProgressEvent, startTime: number) { - const remainingTime = getRemainingTime(event, startTime); - if (remainingTime > 60) { - return `${Math.round(remainingTime / 60)} minutes`; - } - return `${remainingTime} seconds`; -} - function isDownload(event: HttpEvent): event is HttpProgressEvent { return event.type === HttpEventType.DownloadProgress && event.total > ONE_MEGABYTE; } @@ -62,6 +55,7 @@ export class FilePreviewStateService { private readonly _dossiersService: DossiersService, private readonly _fileManagementService: FileManagementService, private readonly _dictionaryService: DictionaryService, + private readonly _translateService: TranslateService, private readonly _loadingService: LoadingService, ) { const dossiersService = dossiersServiceResolver(_injector, router); @@ -112,6 +106,16 @@ export class FilePreviewStateService { this.#reloadBlob$.next(true); } + #getRemainingTimeVerbose(event: HttpProgressEvent, startTime: number) { + const remainingTime = getRemainingTime(event, startTime); + if (remainingTime > 60) { + const minutes: string = this._translateService.instant('minutes'); + return `${Math.round(remainingTime / 60)} ${minutes}`; + } + const seconds: string = this._translateService.instant('seconds'); + return `${remainingTime} ${seconds}`; + } + #dossierFilesChange$() { return this._dossiersService.dossierFileChanges$.pipe( filter(dossierId => dossierId === this.dossierId), @@ -144,11 +148,12 @@ export class FilePreviewStateService { #updateDownloadProgress(event: HttpProgressEvent, startTime: number) { const progress = Math.round((event.loaded / event.total) * 100); + const loading: string = this._translateService.instant('loading'); this._loadingService.update({ - title: 'Loading ' + this.file.filename, + title: loading + ' ' + this.file.filename, type: 'progress-bar', value: progress, - remainingTime: getRemainingTimeVerbose(event, startTime), + remainingTime: this.#getRemainingTimeVerbose(event, startTime), }); } } diff --git a/apps/red-ui/src/assets/i18n/de.json b/apps/red-ui/src/assets/i18n/de.json index 906a12370..4b61665dd 100644 --- a/apps/red-ui/src/assets/i18n/de.json +++ b/apps/red-ui/src/assets/i18n/de.json @@ -1598,6 +1598,7 @@ "usage-details": "Nutzungsdetails" }, "license-information": "Lizenzinformationen", + "loading": "", "manual-annotation": { "dialog": { "actions": { @@ -1631,6 +1632,7 @@ } } }, + "minutes": "", "notification": { "assign-approver": "Sie wurden dem Dokument {fileHref, select, null{{fileName}} other{{fileName}}} im Dossier {dossierHref, select, null{{dossierName}} other{{dossierName}}} als Genehmiger zugewiesen!", "assign-reviewer": "Sie wurden dem Dokument {fileHref, select, null{{fileName}} other{{fileName}}} im Dossier {dossierHref, select, null{{dossierName}} other{{dossierName}}} als Reviewer zugewiesen!", @@ -1925,6 +1927,7 @@ "placeholder": "Nach Dokumenten oder Dokumenteninhalt suchen", "this-dossier": "in diesem Dossier" }, + "seconds": "", "size": "", "smtp-auth-config": { "actions": { diff --git a/apps/red-ui/src/assets/i18n/en.json b/apps/red-ui/src/assets/i18n/en.json index 252ae9d1f..0ecc66a23 100644 --- a/apps/red-ui/src/assets/i18n/en.json +++ b/apps/red-ui/src/assets/i18n/en.json @@ -1598,6 +1598,7 @@ "usage-details": "Usage Details" }, "license-information": "License Information", + "loading": "Loading", "manual-annotation": { "dialog": { "actions": { @@ -1631,6 +1632,7 @@ } } }, + "minutes": "minutes", "notification": { "assign-approver": "You have been assigned as approver for {fileHref, select, null{{fileName}} other{{fileName}}} in dossier: {dossierHref, select, null{{dossierName}} other{{dossierName}}}!", "assign-reviewer": "You have been assigned as reviewer for {fileHref, select, null{{fileName}} other{{fileName}}} in dossier: {dossierHref, select, null{{dossierName}} other{{dossierName}}}!", @@ -1925,6 +1927,7 @@ "placeholder": "Search documents...", "this-dossier": "in this dossier" }, + "seconds": "seconds", "size": "Size", "smtp-auth-config": { "actions": { From 28b9d93846832320c7dae7274e57697d92a1eacd Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Tue, 28 Jun 2022 17:06:43 +0200 Subject: [PATCH 08/28] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3293 -> 3293 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 58fad641a..6cddde73e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.573.0", + "version": "3.574.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index 08fa7db892b3ffd39ba85d451000e6c5494366ee..9b6b32329cffece1de05ed99630ed22d607721f6 100644 GIT binary patch delta 103 zcmV-t0GR*X8QmF>c~iac~g$NUOlrNJ8-;bDELvZ8I-1GxI*ZsnCic=EOq(IkDA?Qr2bgi z@Ob%qp1nTH|EDNN Date: Tue, 28 Jun 2022 18:09:32 +0300 Subject: [PATCH 09/28] RED-4416: Customize skipped entity color --- .../src/app/models/file/annotation.wrapper.ts | 2 +- .../add-edit-entity.component.html | 43 +++++-------------- .../add-edit-entity.component.ts | 34 ++++++++++++--- .../type-annotation-icon.component.ts | 7 ++- .../services/annotation-draw.service.ts | 2 +- .../dictionaries-map.service.ts | 4 +- apps/red-ui/src/assets/i18n/de.json | 2 + apps/red-ui/src/assets/i18n/en.json | 2 + .../src/lib/dictionaries/dictionary.model.ts | 2 + .../src/lib/dictionaries/dictionary.ts | 2 + 10 files changed, 58 insertions(+), 42 deletions(-) diff --git a/apps/red-ui/src/app/models/file/annotation.wrapper.ts b/apps/red-ui/src/app/models/file/annotation.wrapper.ts index 25196da0e..196dda22d 100644 --- a/apps/red-ui/src/app/models/file/annotation.wrapper.ts +++ b/apps/red-ui/src/app/models/file/annotation.wrapper.ts @@ -88,7 +88,7 @@ export class AnnotationWrapper implements IListable, Record { } get isSuperTypeBasedColor() { - return this.isSkipped || this.isSuggestion || this.isDeclinedSuggestion || this.isIgnoredHint; + return this.isSuggestion || this.isDeclinedSuggestion || this.isIgnoredHint; } get isSkipped() { diff --git a/apps/red-ui/src/app/modules/admin/shared/components/add-edit-entity/add-edit-entity.component.html b/apps/red-ui/src/app/modules/admin/shared/components/add-edit-entity/add-edit-entity.component.html index 4803ea9b6..29236f29d 100644 --- a/apps/red-ui/src/app/modules/admin/shared/components/add-edit-entity/add-edit-entity.component.html +++ b/apps/red-ui/src/app/modules/admin/shared/components/add-edit-entity/add-edit-entity.component.html @@ -1,4 +1,4 @@ -
+
@@ -12,45 +12,24 @@
-
- +
+
- -
-
- -
- - -
- +
diff --git a/apps/red-ui/src/app/modules/admin/shared/components/add-edit-entity/add-edit-entity.component.ts b/apps/red-ui/src/app/modules/admin/shared/components/add-edit-entity/add-edit-entity.component.ts index 3addc970e..8f1e3277c 100644 --- a/apps/red-ui/src/app/modules/admin/shared/components/add-edit-entity/add-edit-entity.component.ts +++ b/apps/red-ui/src/app/modules/admin/shared/components/add-edit-entity/add-edit-entity.component.ts @@ -1,6 +1,6 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit } from '@angular/core'; import { Dictionary, IDictionary } from '@red/domain'; -import { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms'; +import { FormGroup, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms'; import { map, startWith } from 'rxjs/operators'; import { firstValueFrom, Observable } from 'rxjs'; import { toSnakeCase } from '@utils/functions'; @@ -22,10 +22,10 @@ export class AddEditEntityComponent extends BaseFormComponent implements OnInit @Input() dossierTemplateId: string; @Input() entity: Dictionary; - hasHexColor$: Observable; - hasRecommendationHexColor$: Observable; technicalName$: Observable; + colors: { label: string; placeholder: string; controlName: string; hasColor$: Observable }[]; + constructor( private readonly _dictionariesMapService: DictionariesMapService, private readonly _permissionsService: PermissionsService, @@ -77,6 +77,29 @@ export class AddEditEntityComponent extends BaseFormComponent implements OnInit } } + #initializeColors(form: FormGroup): void { + this.colors = [ + { + label: _('add-edit-entity.form.color'), + placeholder: _('add-edit-entity.form.color-placeholder'), + controlName: 'hexColor', + hasColor$: this._colorEmpty$(form, 'hexColor'), + }, + { + label: _('add-edit-entity.form.recommendation-color'), + placeholder: _('add-edit-entity.form.recommendation-color-placeholder'), + controlName: 'recommendationHexColor', + hasColor$: this._colorEmpty$(form, 'recommendationHexColor'), + }, + { + label: _('add-edit-entity.form.skipped-color'), + placeholder: _('add-edit-entity.form.skipped-color-placeholder'), + controlName: 'skippedHexColor', + hasColor$: this._colorEmpty$(form, 'skippedHexColor'), + }, + ]; + } + private _initializeForm(): void { const controlsConfig = { type: [this.entity?.type], @@ -85,6 +108,7 @@ export class AddEditEntityComponent extends BaseFormComponent implements OnInit rank: [{ value: this.entity?.rank, disabled: this.#isSystemManaged }, Validators.required], hexColor: [this.entity?.hexColor, [Validators.required, Validators.minLength(7)]], recommendationHexColor: [this.entity?.recommendationHexColor, [Validators.required, Validators.minLength(7)]], + skippedHexColor: [this.entity?.skippedHexColor, [Validators.required, Validators.minLength(7)]], hint: [{ value: !!this.entity?.hint, disabled: this.#isSystemManaged }], hasDictionary: [{ value: !!this.entity?.hasDictionary, disabled: this.#isSystemManaged }], caseSensitive: [{ value: this.entity ? !this.entity.caseInsensitive : false, disabled: this.#isSystemManaged }], @@ -104,8 +128,7 @@ export class AddEditEntityComponent extends BaseFormComponent implements OnInit const form = this._formBuilder.group(controlsConfig); - this.hasHexColor$ = this._colorEmpty$(form, 'hexColor'); - this.hasRecommendationHexColor$ = this._colorEmpty$(form, 'recommendationHexColor'); + this.#initializeColors(form); this.technicalName$ = form.get('label').valueChanges.pipe(map((value: string) => this._toTechnicalName(value))); form.get('hint').valueChanges.subscribe(isHint => { @@ -168,6 +191,7 @@ export class AddEditEntityComponent extends BaseFormComponent implements OnInit description: this.form.get('description').value, hexColor: this.form.get('hexColor').value, recommendationHexColor: this.form.get('recommendationHexColor').value, + skippedHexColor: this.form.get('skippedHexColor').value, hint: this.form.get('hint').value, rank: this.form.get('rank').value, dossierTemplateId: this.dossierTemplateId, diff --git a/apps/red-ui/src/app/modules/file-preview/components/type-annotation-icon/type-annotation-icon.component.ts b/apps/red-ui/src/app/modules/file-preview/components/type-annotation-icon/type-annotation-icon.component.ts index 0bc6e7af0..e81375668 100644 --- a/apps/red-ui/src/app/modules/file-preview/components/type-annotation-icon/type-annotation-icon.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/components/type-annotation-icon/type-annotation-icon.component.ts @@ -32,7 +32,12 @@ export class TypeAnnotationIconComponent implements OnChanges { this.color = this.annotation.color; } else { const type = this.annotation.isSuperTypeBasedColor ? this.annotation.superType : this.annotation.type; - this.color = this._dictionariesMapService.getDictionaryColor(type, this._dossierTemplateId, this.annotation.isRecommendation); + this.color = this._dictionariesMapService.getDictionaryColor( + type, + this._dossierTemplateId, + this.annotation.isRecommendation, + this.annotation.isSkipped, + ); } this.type = diff --git a/apps/red-ui/src/app/modules/pdf-viewer/services/annotation-draw.service.ts b/apps/red-ui/src/app/modules/pdf-viewer/services/annotation-draw.service.ts index a27bb65b0..bf692cd1e 100644 --- a/apps/red-ui/src/app/modules/pdf-viewer/services/annotation-draw.service.ts +++ b/apps/red-ui/src/app/modules/pdf-viewer/services/annotation-draw.service.ts @@ -75,7 +75,7 @@ export class AnnotationDrawService { color = this._dictionariesMapService.getDictionaryColor(dictionary, dossierTemplateId, true); break; case SuperTypes.Skipped: - color = this._dictionariesMapService.getDictionaryColor(superType, dossierTemplateId); + color = this._dictionariesMapService.getDictionaryColor(dictionary, dossierTemplateId, false, true); break; default: color = this._dictionariesMapService.getDictionaryColor(superType, dossierTemplateId); 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 248ee722d..a7f3aa9dc 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 @@ -13,14 +13,14 @@ export class DictionariesMapService extends EntitiesMapService implements IDictionary { readonly dossierTemplateId?: string; readonly hexColor?: string; readonly recommendationHexColor?: string; + readonly skippedHexColor?: string; readonly hint: boolean; readonly label: string; readonly rank?: number; @@ -33,6 +34,7 @@ export class Dictionary extends Entity implements IDictionary { this.falseRecommendationEntries = entity.falseRecommendationEntries ?? []; this.hexColor = entity.hexColor; this.recommendationHexColor = entity.recommendationHexColor; + this.skippedHexColor = entity.skippedHexColor; this.hint = !!entity.hint; this.label = entity.label ?? entity.type; this.rank = entity.rank; diff --git a/libs/red-domain/src/lib/dictionaries/dictionary.ts b/libs/red-domain/src/lib/dictionaries/dictionary.ts index 899216bb2..8cf003a69 100644 --- a/libs/red-domain/src/lib/dictionaries/dictionary.ts +++ b/libs/red-domain/src/lib/dictionaries/dictionary.ts @@ -54,6 +54,8 @@ export interface IDictionary { readonly recommendationHexColor?: string; + readonly skippedHexColor?: string; + readonly hasDictionary?: boolean; readonly systemManaged?: boolean; From 7ed1c2dbbdc9b6f80a301919d6dcce370f862e81 Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Tue, 28 Jun 2022 17:12:02 +0200 Subject: [PATCH 10/28] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3293 -> 3294 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6cddde73e..cfd8acb35 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.574.0", + "version": "3.575.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index 9b6b32329cffece1de05ed99630ed22d607721f6..37edfcc5e2afe148af501d49263b843023dcefcb 100644 GIT binary patch delta 3204 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 Date: Tue, 28 Jun 2022 20:07:58 +0300 Subject: [PATCH 11/28] RED-3800: quick fix for last visited page --- .../file-preview-screen.component.ts | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) 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 27baa47d8..5a6f28793 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 @@ -6,7 +6,6 @@ import { bool, CircleButtonTypes, CustomError, - Debounce, ErrorService, FilterService, List, @@ -306,14 +305,7 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni } } - viewerPageChanged(page: number) { - // this.multiSelectService.deactivate(); - return this.#updateQueryParamsPage(page); - } - - @Debounce(100) async viewerReady() { - // Go to initial page from query params const pageNumber: string = this._activatedRoute.snapshot.queryParams.page; if (pageNumber) { const file = this.state.file; @@ -326,7 +318,9 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni page = file.numberOfPages; } - this.pdf.navigateTo(page); + setTimeout(() => { + this.pdf.navigateTo(page); + }, 300); } this._loadingService.stop(); @@ -450,6 +444,7 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni } async #updateQueryParamsPage(page: number): Promise { + console.log('updateQueryParamsPage: ', page); const extras: NavigationExtras = { queryParams: { page }, queryParamsHandling: 'merge', @@ -557,7 +552,10 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni }); this.addActiveScreenSubscription = this.pdfProxyService.pageChanged$.subscribe(page => - this._ngZone.run(() => this.viewerPageChanged(page)), + this._ngZone.run(() => { + console.log('viewerPageChanged', page); + return this.#updateQueryParamsPage(page); + }), ); this.addActiveScreenSubscription = this.pdfProxyService.annotationSelected$.subscribe(); } From 1bd943fad81f3802b956294b6070c5d9fba46470 Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Tue, 28 Jun 2022 19:10:28 +0200 Subject: [PATCH 12/28] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3294 -> 3293 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index cfd8acb35..de4906d9d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.575.0", + "version": "3.576.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index 37edfcc5e2afe148af501d49263b843023dcefcb..e44491f226062f12f3c9622c351e957021f853e4 100644 GIT binary patch delta 3204 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 delta 3205 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 r&gERr Date: Tue, 28 Jun 2022 21:09:22 +0300 Subject: [PATCH 13/28] RED-3800: fix highlights multiple load --- .../file-preview-screen.component.ts | 25 ++++++++++--------- .../services/annotation-processing.service.ts | 25 +++++++++++-------- .../services/document-viewer.service.ts | 18 +++++++------ 3 files changed, 38 insertions(+), 30 deletions(-) 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 5a6f28793..ac04657ff 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 @@ -361,21 +361,24 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni pairwise(), tap(annotations => this.deleteAnnotations(...annotations)), ); - const currentPageAnnotations$ = combineLatest([this.pdf.currentPage$, annotations$]).pipe( + + const currentPageIfNotHighlightsView$ = combineLatest([this.pdf.currentPage$, this._viewModeService.viewMode$]).pipe( + filter(([, viewMode]) => viewMode !== ViewModes.TEXT_HIGHLIGHTS), + map(([page]) => page), + ); + + const currentPageAnnotations$ = combineLatest([currentPageIfNotHighlightsView$, annotations$]).pipe( map( ([page, [oldAnnotations, newAnnotations]]) => [oldAnnotations.filter(byPage(page)), newAnnotations.filter(byPage(page))] as const, ), ); - let start; return combineLatest([currentPageAnnotations$, documentLoaded$]).pipe( filter(([, loaded]) => loaded), - tap(() => (start = new Date().getTime())), map(([annotations]) => annotations), switchMap(annotations => this.drawChangedAnnotations(...annotations)), tap(([, newAnnotations]) => this.#highlightSelectedAnnotations(newAnnotations)), - tap(() => this._logger.info(`[ANNOTATIONS] Processing time: ${new Date().getTime() - start}`)), tap(() => this.updateViewMode()), ); } @@ -423,7 +426,7 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni #rebuildFilters() { const startTime = new Date().getTime(); - const annotationFilters = this._annotationProcessingService.getAnnotationFilter(this._fileDataService.all); + const annotationFilters = this._annotationProcessingService.getAnnotationFilter(); const primaryFilters = this._filterService.getGroup('primaryFilters')?.filters; this._filterService.addFilterGroup({ slug: 'primaryFilters', @@ -584,30 +587,28 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni if (!newAnnotations.length) { return; } + const currentFilters = this._filterService.getGroup('primaryFilters')?.filters || []; this.#rebuildFilters(); - const startTime = new Date().getTime(); - if (currentFilters) { - this._handleDeltaAnnotationFilters(currentFilters, this._fileDataService.all); + this._handleDeltaAnnotationFilters(currentFilters); } await this._annotationDrawService.draw(newAnnotations, this.state.dossierTemplateId, this._skippedService.hideSkipped); - this._logger.info(`[ANNOTATIONS] Redraw time: ${new Date().getTime() - startTime} ms for ${newAnnotations.length} annotations`); } - private _handleDeltaAnnotationFilters(currentFilters: NestedFilter[], newAnnotations: AnnotationWrapper[]) { + private _handleDeltaAnnotationFilters(currentFilters: NestedFilter[]) { const primaryFilterGroup = this._filterService.getGroup('primaryFilters'); const primaryFilters = primaryFilterGroup.filters; const secondaryFilters = this._filterService.getGroup('secondaryFilters').filters; - const hasAnyFilterSet = [...primaryFilters, ...secondaryFilters].find(f => f.checked || f.indeterminate); + const hasAnyFilterSet = [...primaryFilters, ...secondaryFilters].some(f => f.checked || f.indeterminate); if (!hasAnyFilterSet) { return; } - const newPageSpecificFilters = this._annotationProcessingService.getAnnotationFilter(newAnnotations); + const newPageSpecificFilters = this._annotationProcessingService.getAnnotationFilter(); handleFilterDelta(currentFilters, newPageSpecificFilters, primaryFilters); this._filterService.addFilterGroup({ diff --git a/apps/red-ui/src/app/modules/file-preview/services/annotation-processing.service.ts b/apps/red-ui/src/app/modules/file-preview/services/annotation-processing.service.ts index 4bda12b80..4850ad44d 100644 --- a/apps/red-ui/src/app/modules/file-preview/services/annotation-processing.service.ts +++ b/apps/red-ui/src/app/modules/file-preview/services/annotation-processing.service.ts @@ -1,4 +1,4 @@ -import { Injectable } from '@angular/core'; +import { inject, Injectable } from '@angular/core'; import { AnnotationWrapper } from '@models/file/annotation.wrapper'; import { SuperTypeSorter } from '../../../utils'; import { Filter, handleCheckedValue, IFilter, INestedFilter, NestedFilter } from '@iqser/common-ui'; @@ -7,10 +7,13 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { IViewedPage } from '@red/domain'; import { DictionariesMapService } from '@services/entity-services/dictionaries-map.service'; import { FilePreviewStateService } from './file-preview-state.service'; +import { FileDataService } from './file-data.service'; @Injectable() export class AnnotationProcessingService { - constructor(private readonly _state: FilePreviewStateService, private readonly _dictionariesMapService: DictionariesMapService) {} + readonly #fileDataService = inject(FileDataService); + readonly #state = inject(FilePreviewStateService); + readonly #dictionariesMapService = inject(DictionariesMapService); static secondaryAnnotationFilters(viewedPages?: IViewedPage[]): INestedFilter[] { const _viewedPages = viewedPages ? viewedPages.map(page => page.page) : []; @@ -50,11 +53,11 @@ export class AnnotationProcessingService { ].map(item => new NestedFilter(item)); } - getAnnotationFilter(annotations: AnnotationWrapper[]): INestedFilter[] { + getAnnotationFilter(): INestedFilter[] { const filterMap = new Map(); const filters: INestedFilter[] = []; - annotations?.forEach(a => { + this.#fileDataService.all?.forEach(a => { const topLevelFilter = a.topLevelFilter; const filter = filterMap.get(a.filterKey); if (filter) { @@ -76,8 +79,8 @@ export class AnnotationProcessingService { } const dictionary = a.type === 'dossier_redaction' - ? this._state.dossierDictionary - : this._dictionariesMapService.getDictionary(a.type, this._state.dossierTemplateId); + ? this.#state.dossierDictionary + : this.#dictionariesMapService.getDictionary(a.type, this.#state.dossierTemplateId); const childFilter: IFilter = { id: a.filterKey, label: dictionary.label, @@ -212,11 +215,13 @@ export class AnnotationProcessingService { if (first.pageNumber === second.pageNumber) { if (first.y > second.y) { return -1; - } else if (first.y < second.y) { - return 1; - } else { - return first.x < second.x ? -1 : 1; } + + if (first.y < second.y) { + return 1; + } + + return first.x < second.x ? -1 : 1; } return first.pageNumber < second.pageNumber ? -1 : 1; }); diff --git a/apps/red-ui/src/app/modules/pdf-viewer/services/document-viewer.service.ts b/apps/red-ui/src/app/modules/pdf-viewer/services/document-viewer.service.ts index 75b09d978..f837a286f 100644 --- a/apps/red-ui/src/app/modules/pdf-viewer/services/document-viewer.service.ts +++ b/apps/red-ui/src/app/modules/pdf-viewer/services/document-viewer.service.ts @@ -73,13 +73,7 @@ export class REDDocumentViewer { get #textSelected$(): Observable { return fromEvent<[Quad, string, number]>(this.#document, 'textSelected').pipe( tap(([, selectedText]) => (this.selectedText = selectedText)), - tap(([, , pageNumber]) => { - if (this._pdf.isCompare && pageNumber % 2 === 0) { - this._pdf.disable('textPopup'); - } else { - this._pdf.enable('textPopup'); - } - }), + tap(([, , pageNumber]) => this.#disableTextPopupIfCompareMode(pageNumber)), map(([, selectedText]) => selectedText), ); } @@ -164,9 +158,17 @@ export class REDDocumentViewer { } } + #disableTextPopupIfCompareMode(pageNumber) { + if (this._pdf.isCompare && pageNumber % 2 === 0) { + return this._pdf.disable('textPopup'); + } + + this._pdf.enable('textPopup'); + } + #setCurrentPage() { const currentDocPage = this._activatedRoute.snapshot.queryParamMap.get('page'); - this.#document.setCurrentPage(Number(currentDocPage ?? '1'), false); + this._pdf.navigateTo(currentDocPage ?? 1); } #setInitialDisplayMode() { From ab586cf639301901098e5a13b26af5ee6650b7c4 Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Tue, 28 Jun 2022 20:11:49 +0200 Subject: [PATCH 14/28] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3293 -> 3293 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index de4906d9d..fd9b069d7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.576.0", + "version": "3.577.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index e44491f226062f12f3c9622c351e957021f853e4..e9e596ebaf001664cfbeefd280c9e75b1c183b68 100644 GIT binary patch delta 3138 zcmV-I488N+8QmF>cm(;*+VhcoMt_sP>$oeB|0?j^XUP7zq?*hBx%^*6DXwb5(B+@M z{mR;0zPNZr_hnHr)KuBkWy)AtZ=XL;ik#KUT~X{Zf=gO2qhkLY6vF*=g7-AL|NM_7 z$$#|?&g(5@I9uH9QufMTc((n*UijiS5Wg$&yB5D2_;o}dNAz(-A4l|YM1LQL_xWW^ z>oUXlpVxP|yu5yKvE=yS%t{H4NrnD?fzUgP<}rD@Ma~QON(qJex5y9d^6iU@hrx*L zHY7<=5iv5v(e17(nmo3mA}gvb`o!IMuJ4S;q0|vWI5Vu8z9U<-^7#a^>P}9}DT2C; z=EUky*{s`+dtB{kZn2_-!G9aAE-V-;_JFk!Y1Dnz1Xoci5ZU9m)*X#m3b1Tj1-3=F zVFmv#i<&Z8Kutw5%;+0(8uqe%S_vgtEM}6kIJW&M2O1U?=Oc2;x2P^M8lz8QFAidS zXtXLE)20T>Tf7W>PLkx2xNNte2oXt(tP^}u;)t^QEwY#EM*>?sZGYyWwrG0cNWIW> zz}d_Z?3no_j$@kd0DuepcGk0?ge-3d_wvUfh^k?P<5jg72|Yc4=i+oG<;5yk-X*R` z&R!VlkD99HRb@eQMk<3Y*jyXLe|sJY+q8Hi`E5|3IQHW}K)QIfCo#pS$g_J?M-?GC z!g-9YlqIs}>+M>=GJmgYO@hAL^1-~e2a*ls>V8m&s)45&vC1aQXoR^4Cde4@RbuOI z24=tj?ba9te{zjhl%ncC$m;%r#->I9oWbT0NG!(&K>j4^BIx)hn|eGj4Wmk z1#1?G8dgN@*rBMNfCj=(LIfM__>=Hy?bXw;Qf%JX#)?%Hlc=b0Yt=y&NX3oOV=$kP ziemoU&CI~YTYpJwGjr-D8?V)Vkv&QsGO9uHd#^Hk{5GLg&8#S;($i{Y$bKAQ04~EO zXrs7pK7G1|cE(tbG**U4!}T9Ol|k(e6Mh`EOML{UDxbeRfTwD#E)#*y9DV>R6~@s# zB^6~O-u3n1te$^{zNC3ZC~NW^`t13|5+GYZ0?8~##eb~#GM9f#YdU z99jSvj?#)oDWf|RO2H(Q#OtAa(?n^~u>sbzAmy1=HWd1f>dOZ=*_e!{T|qFi@K(O zF5tpQ4;Pl(9nRPYXBa$p-r!bKvJYA5YUqggvb zQ-83j8Mmv7_2qku+=N$qoC%yWs*MIs-s>@foTtaAXOxMao-=$9+H{;8&Hxn|1VP|B zjB}q1w1=7Pc$SY5SDC_7eU>_>Wl5OEFdh@Mk=68QsZ3T_K@J>M%|5J+zF*P8q$rpO zZfjtZ{8IBzp%TYsqNV*Ugk#Y4wo!=IFMpIlzcwcvAUc&O9#)cANGreN-RvOCG&$tv zpP3PW27Lt^c+&M=RAFG#V=- zXGPQ6C|uFBG0IXj-6(E!NU{xWp5w(n8MkqMkch;|a5j<)UfFh%*oHRFtRN!6jYdGL z?qXn)Y-~p({2t=E;!ZY(8!t38x<rp%c!uL>37Og=z<)X`XXWd9 z*|fO&oArQkqRACa(T$;rD?||9tmAOh#1+C@`_aZ3HF1TAg4iS4sFLQlEms^jh&36d zBrEqtOb%vAa9?^UZtZFslMqkt{~lDmjw*=Pp=;On23J={me94 z00HE;6`;U_Me+4}oX6nb;eYdCfbB9Xc7C~Sg&Aj1Ct)l;Xr3pW zIL%{hFOoGs2=cnnImd6T(Q?${ux<}<)N={#Gy-3k-)gB&JIrZO9)IOOjuIoEq)rK0 zrPNO#a{NrGb0tO~IN}GW5W)@V`d~o%4xdcCwB&%Fh8uyrT>?^h`*Ju)RXhIxyyy*OSiH6B6vxHg z;nd_{hPjQHIA01BTz~oe{f^=xLmK4m8ZLHE$i(1bCU{h(jT$fwdh#UW$dIS(_fCUV zxs`)&pUNrsz(#~CMkDP+NImTvrbrj^&|+|`tzK*ByKpVy>34~DM80a7pY+FFq6{NH z(P?^#jG$820L)fg*u@e;83+>JP;w`((Wo8UI~fn7K6Jku=YQ{AXGjhCCgw=vJlm+o zUG;!>5=gsJ7uqM^lAm$TV7lqDGHhHpH_G|1*fdFs3J`0`l2j3{$q>8Qn=Q&QsA2O( zqp&}R8_=mJ{V^4P#PtVtpCn32beqwd@y!(iY^pFPdgeV0Ayo;9XQ99!AOP}Se%#te zj0?V1*>Fhk#(!uz)(h9H7w$kWgp!GMAl_CdLZhDP(y}YTRv z+fRvf`@toXdZUdVeMwCkd*e>iNTeH`zo_i6D>dXw1%J0vqSmU7KFNgtQ!Qbsn<=-q zo=dTHZn&*9sTadV{m{W^A3$V$KbY|lAa?PIal{sQa3zm+i^O90CAl7lto_EYxHwdV z-vN=+XTWNw&RQSa9`6jB5{y9h$JZKX3craV_I`YO0ddCytpdLBNf*?-ROWYTDWo^Vz<*MT7mz(j&$##sln$-$Z(+;)*I+Lz&3zUBv&D+WLRO_~QC zAJc^vwSCsDm7@TKlRW`)GHN>kxp!`-;6LRi$qaTp>AHvtf5x2qq=r|K$SJ@UUu9QDJ3& z=6@YmL0;-Cka$_bo2+vCDz~fh`YNxh^7|^ks|xz6psQN-RV!IlcF$_$5$3Y4#eL>J z??l(fZSPJ3`QTmM5%-7w;E{h9@h}$N5Mp;9`y|9bgQ&=U2+^Ah(f3q{it0Ss3yw5z z6yiNDMUW83k>WAuBZingSl2i^ZJq>>6f;pXb;020{u`)sIhS)emvcFnb2*oDIhS)e cmvcFnb2*oDIhS)em;c4`A8tVib^uTS0BwUI>i_@% delta 3138 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 From 5b720c2c3dcb228f2c0475d8e5227ba9998d5cc3 Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Wed, 29 Jun 2022 13:29:27 +0300 Subject: [PATCH 15/28] RED-4305: check if document loaded before drawing annotations --- .../file-preview-screen.component.ts | 4 +- .../services/annotation-draw.service.ts | 13 ++++-- .../services/document-viewer.service.ts | 42 +++++++++---------- .../pdf-viewer/services/pdf-viewer.service.ts | 4 +- libs/common-ui | 2 +- libs/red-domain/src/lib/files/file.ts | 32 +------------- 6 files changed, 35 insertions(+), 62 deletions(-) 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 ac04657ff..61d85c707 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 @@ -546,7 +546,7 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni .pipe( switchMap(blob => from(this._documentViewer.lock()).pipe(map(() => blob))), tap(() => this._errorService.clear()), - tap(blob => this.pdf.loadDocument(blob, this.state.file)), + tap(blob => this.pdf.loadDocument(blob, this.state.file, () => this.state.reloadBlob())), ) .subscribe(); @@ -624,7 +624,7 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni } } - private _setAnnotationsOpacity(annotations: Annotation[], restoreToOriginal: boolean = false) { + private _setAnnotationsOpacity(annotations: Annotation[], restoreToOriginal = false) { annotations.forEach(annotation => { annotation['Opacity'] = restoreToOriginal ? parseFloat(annotation.getCustomData('opacity')) : 1; }); diff --git a/apps/red-ui/src/app/modules/pdf-viewer/services/annotation-draw.service.ts b/apps/red-ui/src/app/modules/pdf-viewer/services/annotation-draw.service.ts index bf692cd1e..ee998df83 100644 --- a/apps/red-ui/src/app/modules/pdf-viewer/services/annotation-draw.service.ts +++ b/apps/red-ui/src/app/modules/pdf-viewer/services/annotation-draw.service.ts @@ -85,9 +85,14 @@ export class AnnotationDrawService { } private async _draw(annotationWrappers: List, dossierTemplateId: string, hideSkipped: boolean) { + const totalPages = await firstValueFrom(this._pdf.totalPages$); const annotations = annotationWrappers - .map(annotation => this._computeAnnotation(annotation, dossierTemplateId, hideSkipped)) - .filter(a => !!a); + .map(annotation => this._computeAnnotation(annotation, dossierTemplateId, hideSkipped, totalPages)) + .filterTruthy(); + const documentLoaded = await firstValueFrom(this._documentViewer.loaded$); + if (!documentLoaded) { + return; + } await this._annotationManager.add(annotations); if (this._userPreferenceService.areDevFeaturesEnabled) { @@ -130,9 +135,9 @@ export class AnnotationDrawService { return rectangleAnnot; } - private _computeAnnotation(annotationWrapper: AnnotationWrapper, dossierTemplateId: string, hideSkipped: boolean) { + private _computeAnnotation(annotationWrapper: AnnotationWrapper, dossierTemplateId: string, hideSkipped: boolean, totalPages: number) { const pageNumber = this._pdf.isCompare ? annotationWrapper.pageNumber * 2 - 1 : annotationWrapper.pageNumber; - if (pageNumber > this._pdf.pageCount) { + if (pageNumber > totalPages) { // skip imported annotations from files that have more pages than the current one return; } diff --git a/apps/red-ui/src/app/modules/pdf-viewer/services/document-viewer.service.ts b/apps/red-ui/src/app/modules/pdf-viewer/services/document-viewer.service.ts index f837a286f..22042bfe0 100644 --- a/apps/red-ui/src/app/modules/pdf-viewer/services/document-viewer.service.ts +++ b/apps/red-ui/src/app/modules/pdf-viewer/services/document-viewer.service.ts @@ -1,4 +1,4 @@ -import { Injectable } from '@angular/core'; +import { inject, Injectable } from '@angular/core'; import { Core } from '@pdftron/webviewer'; import { NGXLogger } from 'ngx-logger'; import { fromEvent, merge, Observable } from 'rxjs'; @@ -22,12 +22,10 @@ export class REDDocumentViewer { selectedText = ''; #document: DocumentViewer; - constructor( - private readonly _logger: NGXLogger, - private readonly _userPreferenceService: UserPreferenceService, - private readonly _pdf: PdfViewer, - private readonly _activatedRoute: ActivatedRoute, - ) {} + readonly #logger = inject(NGXLogger); + readonly #userPreferenceService = inject(UserPreferenceService); + readonly #pdf = inject(PdfViewer); + readonly #activatedRoute = inject(ActivatedRoute); get PDFDoc() { return this.document?.getPDFDoc(); @@ -41,7 +39,7 @@ export class REDDocumentViewer { const event$ = fromEvent(this.#document, 'documentUnloaded'); const toBool$ = event$.pipe(map(() => false)); - return toBool$.pipe(tap(() => this._logger.info('[PDF] Document unloaded'))); + return toBool$.pipe(tap(() => this.#logger.info('[PDF] Document unloaded'))); } get #documentLoaded$() { @@ -52,7 +50,7 @@ export class REDDocumentViewer { tap(() => this.#setCurrentPage()), tap(() => this.#setInitialDisplayMode()), tap(() => this.updateTooltipsVisibility()), - tap(() => this._logger.info('[PDF] Document loaded')), + tap(() => this.#logger.info('[PDF] Document loaded')), ); } @@ -83,14 +81,14 @@ export class REDDocumentViewer { } close() { - this._logger.info('[PDF] Closing document'); + this.#logger.info('[PDF] Closing document'); this.#document.closeDocument(); - this._pdf.closeCompareMode(); + this.#pdf.closeCompareMode(); } updateTooltipsVisibility(): void { - const current = this._userPreferenceService.getFilePreviewTooltipsPreference(); - this._pdf.instance.UI.setAnnotationContentOverlayHandler(() => (current ? undefined : false)); + const current = this.#userPreferenceService.getFilePreviewTooltipsPreference(); + this.#pdf.instance.UI.setAnnotationContentOverlayHandler(() => (current ? undefined : false)); } init(document: DocumentViewer) { @@ -108,7 +106,7 @@ export class REDDocumentViewer { } await document.lock(); - this._logger.info('[PDF] Locked'); + this.#logger.info('[PDF] Locked'); return true; } @@ -150,7 +148,7 @@ export class REDDocumentViewer { pages.forEach(page => this.#document.setRotation(0, Number(page))); } - rotate(rotation: RotationType, page = this._pdf.currentPage) { + rotate(rotation: RotationType, page = this.#pdf.currentPage) { if (rotation === RotationTypes.LEFT) { this.#document.rotateCounterClockwise(page); } else { @@ -159,23 +157,23 @@ export class REDDocumentViewer { } #disableTextPopupIfCompareMode(pageNumber) { - if (this._pdf.isCompare && pageNumber % 2 === 0) { - return this._pdf.disable('textPopup'); + if (this.#pdf.isCompare && pageNumber % 2 === 0) { + return this.#pdf.disable('textPopup'); } - this._pdf.enable('textPopup'); + this.#pdf.enable('textPopup'); } #setCurrentPage() { - const currentDocPage = this._activatedRoute.snapshot.queryParamMap.get('page'); - this._pdf.navigateTo(currentDocPage ?? 1); + const currentDocPage = this.#activatedRoute.snapshot.queryParamMap.get('page'); + this.#pdf.navigateTo(currentDocPage ?? 1); } #setInitialDisplayMode() { - this._pdf.instance.UI.setFitMode('FitPage'); + this.#pdf.instance.UI.setFitMode('FitPage'); const displayModeManager = this.#document.getDisplayModeManager(); const instanceDisplayMode = displayModeManager.getDisplayMode(); - instanceDisplayMode.mode = this._pdf.isCompare ? 'Facing' : 'Single'; + instanceDisplayMode.mode = this.#pdf.isCompare ? 'Facing' : 'Single'; displayModeManager.setDisplayMode(instanceDisplayMode); } } diff --git a/apps/red-ui/src/app/modules/pdf-viewer/services/pdf-viewer.service.ts b/apps/red-ui/src/app/modules/pdf-viewer/services/pdf-viewer.service.ts index 8f4e2d850..b35624d90 100644 --- a/apps/red-ui/src/app/modules/pdf-viewer/services/pdf-viewer.service.ts +++ b/apps/red-ui/src/app/modules/pdf-viewer/services/pdf-viewer.service.ts @@ -166,11 +166,11 @@ export class PdfViewer { this.#compareMode$.next(false); } - async loadDocument(blob: Blob, file: File) { + async loadDocument(blob: Blob, file: File, actionOnError: () => void = () => {}) { const onError = () => { this._injector.get(ErrorService).set(DOCUMENT_LOADING_ERROR); this._logger.error('[PDF] Error while loading document'); - // this.stateService.reloadBlob(); + actionOnError(); }; const document = await this.PDFNet.PDFDoc.createFromBuffer(await blob.arrayBuffer()); diff --git a/libs/common-ui b/libs/common-ui index d5ded3615..45dc0f0f1 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit d5ded3615fdf420ca42c21826654013165279462 +Subproject commit 45dc0f0f1199bc510d477b1e132e098c4c605e3f diff --git a/libs/red-domain/src/lib/files/file.ts b/libs/red-domain/src/lib/files/file.ts index 0d0155445..b7a2efcec 100644 --- a/libs/red-domain/src/lib/files/file.ts +++ b/libs/red-domain/src/lib/files/file.ts @@ -13,17 +13,8 @@ export interface IFile { * Shows if all manual changes have been applied by a reanalysis. */ readonly allManualRedactionsApplied?: boolean; - /** - * Shows how long the last analysis took - */ readonly analysisDuration?: number; - /** - * Shows if the file requires reanalysis. - */ readonly analysisRequired?: boolean; - /** - * Shows the date of approval, if approved. - */ readonly approvalDate?: string; /** * The current reviewer's (if any) user id. @@ -37,35 +28,17 @@ export interface IFile { * Shows which dossier dictionary versions was used during the analysis. */ readonly dossierDictionaryVersion?: number; - /** - * The ID of the dossier the file belongs to. - */ readonly dossierId: string; /** * Shows if the file was excluded from analysis. */ readonly excluded?: boolean; - /** - * Shows if the file was excluded from automatic analysis. - */ readonly excludedFromAutomaticAnalysis?: boolean; - /** - * Set of excluded pages for this file. - */ - readonly excludedPages?: Array; + readonly excludedPages?: number[]; fileAttributes?: FileAttributes; - /** - * The ID of the file. - */ readonly fileId: string; - /** - * The file's name. - */ readonly filename: string; readonly fileSize: number; - /** - * Shows if this file has comments on annotations. - */ readonly hasAnnotationComments?: boolean; /** * Shows if any hints were found during the analysis. @@ -83,9 +56,6 @@ export interface IFile { * Shows if any requests were found during the analysis. */ readonly hasRequests?: boolean; - /** - * Shows if there are any Suggestions in this file. - */ readonly hasSuggestions?: boolean; /** * Shows if there is any change between the previous and current analysis. From 59d4ad300a3458b5a458c2b3f90210599c4c6c26 Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Wed, 29 Jun 2022 12:32:01 +0200 Subject: [PATCH 16/28] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3293 -> 3291 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fd9b069d7..064b1ebee 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.577.0", + "version": "3.578.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index e9e596ebaf001664cfbeefd280c9e75b1c183b68..6e4cfc8063d97851e601f09dda3a66cdbe12b674 100644 GIT binary patch delta 3173 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 N@*i$N2zCHa008K-HE{p{ From ae796c082ee3c18524d94d7620e354b56c792161 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Wed, 29 Jun 2022 18:27:00 +0300 Subject: [PATCH 17/28] RED-4446: Fix reject suggestion for "Remove from Dictionary" for hint --- apps/red-ui/src/app/models/file/annotation.wrapper.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/red-ui/src/app/models/file/annotation.wrapper.ts b/apps/red-ui/src/app/models/file/annotation.wrapper.ts index 196dda22d..297fbf913 100644 --- a/apps/red-ui/src/app/models/file/annotation.wrapper.ts +++ b/apps/red-ui/src/app/models/file/annotation.wrapper.ts @@ -429,7 +429,7 @@ export class AnnotationWrapper implements IListable, Record { case LogEntryStatus.APPROVED: return SuperTypes.Redaction; case LogEntryStatus.DECLINED: - return SuperTypes.Skipped; + return isHintDictionary ? SuperTypes.Hint : SuperTypes.Skipped; case LogEntryStatus.REQUESTED: return SuperTypes.SuggestionRemoveDictionary; } From 24a5346ef60b2524e6598eab9627100d008d8c0a Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Wed, 29 Jun 2022 17:29:36 +0200 Subject: [PATCH 18/28] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3291 -> 3293 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 064b1ebee..c143ffa47 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.578.0", + "version": "3.579.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index 6e4cfc8063d97851e601f09dda3a66cdbe12b674..6dc856f0e7e29a144878192aab022fb072928ce2 100644 GIT binary patch delta 3181 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 delta 3202 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 Date: Wed, 29 Jun 2022 18:46:06 +0300 Subject: [PATCH 19/28] RED-4417: Add 'removed by manual override' to ignored hints reason --- apps/red-ui/src/app/models/file/annotation.wrapper.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/apps/red-ui/src/app/models/file/annotation.wrapper.ts b/apps/red-ui/src/app/models/file/annotation.wrapper.ts index 297fbf913..198f90aaa 100644 --- a/apps/red-ui/src/app/models/file/annotation.wrapper.ts +++ b/apps/red-ui/src/app/models/file/annotation.wrapper.ts @@ -359,8 +359,16 @@ export class AnnotationWrapper implements IListable, Record { content += 'Legal basis: ' + annotationWrapper.legalBasis + '\n\n'; } + if (annotationWrapper.hasBeenRemovedByManualOverride) { + content += 'Removed by manual override'; + } + if (entry.section) { - content += 'In section: "' + entry.section + '"'; + let prefix = 'In section: '; + if (content.length) { + prefix = ` ${prefix.toLowerCase()}`; + } + content += `${prefix} "${entry.section}"`; } annotationWrapper.shortContent = this._getShortContent(annotationWrapper, entry) || content; From a2779a4d65b857c3c85b0c895c184924fc50088a Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Wed, 29 Jun 2022 17:48:40 +0200 Subject: [PATCH 20/28] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3293 -> 3293 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c143ffa47..c91ddba8a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.579.0", + "version": "3.580.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index 6dc856f0e7e29a144878192aab022fb072928ce2..aff84b3fd2febcea6ce86a4e6c761308a9109bda 100644 GIT binary patch delta 3174 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 Date: Mon, 27 Jun 2022 21:04:35 +0300 Subject: [PATCH 21/28] RED-4397: Dark theme WIP --- apps/red-ui/src/app/app.component.ts | 6 ++- .../notifications.component.scss | 2 +- .../spotlight-search.component.scss | 4 +- ...ttributes-csv-import-dialog.component.scss | 6 +-- .../dossiers-listing-details.component.scss | 2 +- .../dossier-state.component.scss | 2 +- apps/red-ui/src/assets/styles/_variables.scss | 6 --- apps/red-ui/src/styles.scss | 47 +++++++++++++++---- libs/common-ui | 2 +- paligo-styles/search.scss | 2 +- paligo-styles/style.scss | 35 +++++++++----- 11 files changed, 77 insertions(+), 37 deletions(-) diff --git a/apps/red-ui/src/app/app.component.ts b/apps/red-ui/src/app/app.component.ts index 10eefc848..68361d897 100644 --- a/apps/red-ui/src/app/app.component.ts +++ b/apps/red-ui/src/app/app.component.ts @@ -1,8 +1,9 @@ -import { Component, ViewContainerRef } from '@angular/core'; +import { Component, Inject, Renderer2, ViewContainerRef } from '@angular/core'; import { RouterHistoryService } from '@services/router-history.service'; import { UserService } from '@services/user.service'; import { REDDocumentViewer } from './modules/pdf-viewer/services/document-viewer.service'; import { DossiersChangesService } from '@services/dossiers/dossier-changes.service'; +import { DOCUMENT } from '@angular/common'; @Component({ selector: 'redaction-root', @@ -18,7 +19,10 @@ export class AppComponent { private readonly _userService: UserService, readonly documentViewer: REDDocumentViewer, private readonly _dossierChangesService: DossiersChangesService, + @Inject(DOCUMENT) private document: Document, + private renderer: Renderer2, ) { + this.renderer.addClass(this.document.body, 'dark'); // TODO: Find a better place to initialize dossiers refresh if (_userService.currentUser?.isUser) { _dossierChangesService.initializeRefresh(); diff --git a/apps/red-ui/src/app/components/notifications/notifications.component.scss b/apps/red-ui/src/app/components/notifications/notifications.component.scss index b0c2303ea..6f896c93a 100644 --- a/apps/red-ui/src/app/components/notifications/notifications.component.scss +++ b/apps/red-ui/src/app/components/notifications/notifications.component.scss @@ -41,7 +41,7 @@ white-space: normal; a { - color: var(--iqser-accent); + color: var(--iqser-text); font-weight: bold; } } diff --git a/apps/red-ui/src/app/components/spotlight-search/spotlight-search.component.scss b/apps/red-ui/src/app/components/spotlight-search/spotlight-search.component.scss index d725c9d04..b5de9680c 100644 --- a/apps/red-ui/src/app/components/spotlight-search/spotlight-search.component.scss +++ b/apps/red-ui/src/app/components/spotlight-search/spotlight-search.component.scss @@ -7,8 +7,8 @@ font-size: 13px; border: none; outline: none; - color: var(--iqser-accent); - background-color: var(--iqser-white); + color: var(--iqser-text); + background-color: var(--iqser-background); } .highlight { diff --git a/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component.scss b/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component.scss index 2e6df1245..bad6fc2da 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component.scss +++ b/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component.scss @@ -54,7 +54,7 @@ .csv-part-header { min-height: 50px; box-sizing: border-box; - background: var(--iqser-white); + background: var(--iqser-background); border-top: 1px solid var(--iqser-separator); border-bottom: 1px solid var(--iqser-separator); display: flex; @@ -82,7 +82,7 @@ } .search-input-container { - background-color: var(--iqser-white); + background-color: var(--iqser-background); border-bottom: 1px solid var(--iqser-separator); padding: 8px 16px; } @@ -133,7 +133,7 @@ min-height: 32px; border-radius: 8px; padding: 10px; - background: var(--iqser-white); + background: var(--iqser-background); cursor: pointer; display: flex; flex-direction: column; diff --git a/apps/red-ui/src/app/modules/dossiers-listing/components/dossiers-listing-details/dossiers-listing-details.component.scss b/apps/red-ui/src/app/modules/dossiers-listing/components/dossiers-listing-details/dossiers-listing-details.component.scss index b5a1b4580..522416718 100644 --- a/apps/red-ui/src/app/modules/dossiers-listing/components/dossiers-listing-details/dossiers-listing-details.component.scss +++ b/apps/red-ui/src/app/modules/dossiers-listing/components/dossiers-listing-details/dossiers-listing-details.component.scss @@ -31,5 +31,5 @@ } .right-chart { - border-left: 1px solid rgba(226, 228, 233, 0.9); + border-left: 1px solid var(--iqser-separator); } diff --git a/apps/red-ui/src/app/modules/shared/components/dossier-state/dossier-state.component.scss b/apps/red-ui/src/app/modules/shared/components/dossier-state/dossier-state.component.scss index ce8a15efc..9290cb1ca 100644 --- a/apps/red-ui/src/app/modules/shared/components/dossier-state/dossier-state.component.scss +++ b/apps/red-ui/src/app/modules/shared/components/dossier-state/dossier-state.component.scss @@ -10,5 +10,5 @@ redaction-small-chip { .dossier-state-text { font-size: 13px; line-height: 16px; - color: var(--iqser-grey-1); + color: var(--iqser-text); } diff --git a/apps/red-ui/src/assets/styles/_variables.scss b/apps/red-ui/src/assets/styles/_variables.scss index be6a0f8ce..91b1a3ee9 100644 --- a/apps/red-ui/src/assets/styles/_variables.scss +++ b/apps/red-ui/src/assets/styles/_variables.scss @@ -9,9 +9,7 @@ $grey-5: #d3d5da; $grey-6: #f0f1f4; $grey-7: #9398a0; $grey-8: #f9fafb; -$grey-9: #f5f5f7; $grey-10: #313d4e; -$grey-11: #ecedf0; $blue-1: #4875f7; $blue-2: #48c9f7; @@ -34,8 +32,4 @@ $warn: $yellow-2; $light: $white; $dark: $black; -$btn-bg-hover: $grey-4; -$btn-bg: $grey-6; -$quick-filter-border: $grey-5; - $separator: rgba(226, 228, 233, 0.9); diff --git a/apps/red-ui/src/styles.scss b/apps/red-ui/src/styles.scss index 4b83d585b..6ee1dc0e1 100644 --- a/apps/red-ui/src/styles.scss +++ b/apps/red-ui/src/styles.scss @@ -4,22 +4,22 @@ @use 'common-variables'; @use 'assets/styles/red-theme'; -@include common-variables.configure( +@include common-variables.configureLight( $iqser-primary: vars.$primary, $iqser-primary-rgb: common-functions.hexToRgb(vars.$primary), $iqser-primary-2: vars.$primary-2, $iqser-accent: vars.$accent, $iqser-accent-rgb: common-functions.hexToRgb(vars.$accent), + $iqser-background: vars.$white, + $iqser-text: vars.$accent, + $iqser-text-rgb: common-functions.hexToRgb(vars.$accent), $iqser-disabled: vars.$grey-7, $iqser-not-disabled-table-item: vars.$grey-8, - $iqser-btn-bg-hover: vars.$btn-bg-hover, - $iqser-btn-bg: vars.$btn-bg, + $iqser-btn-bg-hover: vars.$grey-4, + $iqser-btn-bg: vars.$grey-6, + $iqser-side-nav: vars.$grey-2, $iqser-warn: vars.$warn, - $iqser-white: vars.$white, - $iqser-black: vars.$black, - $iqser-light: vars.$light, $iqser-separator: vars.$separator, - $iqser-quick-filter-border: vars.$quick-filter-border, $iqser-grey-2: vars.$grey-2, $iqser-grey-3: vars.$grey-3, $iqser-grey-4: vars.$grey-4, @@ -30,5 +30,36 @@ $iqser-green-2: vars.$green-2, $iqser-yellow-1: vars.$yellow-1, $iqser-yellow-2: vars.$yellow-2, - $iqser-helpmode-primary: vars.$green-2 + $iqser-helpmode-primary: vars.$green-2, + $iqser-inputs-border: vars.$grey-5 +); + +@include common-variables.configureDark( + $iqser-primary: vars.$primary, + $iqser-primary-rgb: common-functions.hexToRgb(vars.$primary), + $iqser-primary-2: vars.$primary-2, + $iqser-accent: vars.$accent, + $iqser-accent-rgb: common-functions.hexToRgb(vars.$accent), + $iqser-background: darken(vars.$accent, 10%), + $iqser-text: vars.$white, + $iqser-text-rgb: common-functions.hexToRgb(vars.$white), + $iqser-disabled: vars.$grey-7, + $iqser-not-disabled-table-item: darken(vars.$accent, 5%), + $iqser-btn-bg-hover: darken(vars.$accent, 5%), + $iqser-btn-bg: darken(vars.$accent, 5%), + $iqser-side-nav: darken(vars.$accent, 8%), + $iqser-warn: vars.$warn, + $iqser-separator: vars.$accent, + $iqser-grey-2: vars.$grey-2, + $iqser-grey-3: vars.$grey-3, + $iqser-grey-4: vars.$grey-4, + $iqser-grey-5: vars.$grey-5, + $iqser-grey-6: vars.$grey-6, + $iqser-grey-7: vars.$grey-7, + $iqser-green-1: vars.$green-1, + $iqser-green-2: vars.$green-2, + $iqser-yellow-1: vars.$yellow-1, + $iqser-yellow-2: vars.$yellow-2, + $iqser-helpmode-primary: vars.$green-2, + $iqser-inputs-border: lighten(vars.$accent, 10%) ); diff --git a/libs/common-ui b/libs/common-ui index 45dc0f0f1..f12e9a209 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit 45dc0f0f1199bc510d477b1e132e098c4c605e3f +Subproject commit f12e9a20943a8c6cffd1b5c1c2e1ed38e0ab022a diff --git a/paligo-styles/search.scss b/paligo-styles/search.scss index a6789b7f3..920690119 100644 --- a/paligo-styles/search.scss +++ b/paligo-styles/search.scss @@ -2,7 +2,7 @@ @use 'mixin'; .portal-search-result { - background-color: variables.$grey-9; + background-color: variables.$grey-2; } .search-container { diff --git a/paligo-styles/style.scss b/paligo-styles/style.scss index 60bf3b494..f71b6d57f 100644 --- a/paligo-styles/style.scss +++ b/paligo-styles/style.scss @@ -11,15 +11,21 @@ body { color: variables.$accent; - background-color: variables.$grey-9; + background-color: variables.$grey-2; font-family: 'Open Sans', sans-serif; - h1, .h1, - h2, .h2, - h3, .h3, - h4, .h4, - h5, .h5, - h6, .h6, + h1, + .h1, + h2, + .h2, + h3, + .h3, + h4, + .h4, + h5, + .h5, + h6, + .h6, p, pre { margin: 0; @@ -28,23 +34,28 @@ body { @include common-mixins.scroll-bar; - h1, .h1 { + h1, + .h1 { @include mixin.heading-1; } - h2, .h2 { + h2, + .h2 { @include mixin.heading-2; } - h3, .h3 { + h3, + .h3 { @include mixin.heading-3; } - h4, .h4 { + h4, + .h4 { @include mixin.heading-4; } - h5, .h5 { + h5, + .h5 { @include mixin.heading-5; } From c072ec2e27534996165f6f466d35d99255b577d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Tue, 28 Jun 2022 12:02:57 +0300 Subject: [PATCH 22/28] RED-4397: Dark theme WIP --- .../base-screen/base-screen.component.html | 2 +- .../base-account-screen-component.scss | 2 +- .../user-profile-screen.component.scss | 2 +- .../entities/screens/info/info.component.scss | 2 +- .../general-config-screen.component.scss | 2 +- .../dashboard-screen.component.scss | 2 +- .../donut-chart/donut-chart.component.scss | 2 +- .../upload-status-overlay.component.scss | 2 +- apps/red-ui/src/assets/styles/red-editor.scss | 5 +++-- apps/red-ui/src/styles.scss | 14 ++++++++++---- 10 files changed, 21 insertions(+), 14 deletions(-) diff --git a/apps/red-ui/src/app/components/base-screen/base-screen.component.html b/apps/red-ui/src/app/components/base-screen/base-screen.component.html index 006247efa..187f411d6 100644 --- a/apps/red-ui/src/app/components/base-screen/base-screen.component.html +++ b/apps/red-ui/src/app/components/base-screen/base-screen.component.html @@ -22,7 +22,7 @@ [placeholder]="'search.placeholder' | translate" iqserHelpMode="search_in_entire_application" > - +

diff --git a/apps/red-ui/src/app/modules/account/base-account-screen/base-account-screen-component.scss b/apps/red-ui/src/app/modules/account/base-account-screen/base-account-screen-component.scss index b8778a2b1..d94a3f70d 100644 --- a/apps/red-ui/src/app/modules/account/base-account-screen/base-account-screen-component.scss +++ b/apps/red-ui/src/app/modules/account/base-account-screen/base-account-screen-component.scss @@ -1,7 +1,7 @@ @use 'common-mixins'; .content-container { - background-color: var(--iqser-grey-2); + background-color: var(--iqser-alt-background); justify-content: center; @include common-mixins.scroll-bar; overflow: auto; diff --git a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.scss b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.scss index e1573c569..0c1bd8a5f 100644 --- a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.scss +++ b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.scss @@ -1,3 +1,3 @@ a { - color: black; + color: var(--iqser-text); } diff --git a/apps/red-ui/src/app/modules/admin/screens/entities/screens/info/info.component.scss b/apps/red-ui/src/app/modules/admin/screens/entities/screens/info/info.component.scss index 6e7689711..5226a6f9e 100644 --- a/apps/red-ui/src/app/modules/admin/screens/entities/screens/info/info.component.scss +++ b/apps/red-ui/src/app/modules/admin/screens/entities/screens/info/info.component.scss @@ -18,7 +18,7 @@ padding: 30px; overflow: auto; @include common-mixins.scroll-bar; - background-color: var(--iqser-grey-2); + background-color: var(--iqser-alt-background); justify-content: center; .dialog { diff --git a/apps/red-ui/src/app/modules/admin/screens/general-config/general-config-screen.component.scss b/apps/red-ui/src/app/modules/admin/screens/general-config/general-config-screen.component.scss index fc571e7bc..3a1c27dab 100644 --- a/apps/red-ui/src/app/modules/admin/screens/general-config/general-config-screen.component.scss +++ b/apps/red-ui/src/app/modules/admin/screens/general-config/general-config-screen.component.scss @@ -1,7 +1,7 @@ @use 'common-mixins'; .content-container { - background-color: var(--iqser-grey-2); + background-color: var(--iqser-alt-background); display: flex; flex-direction: column; align-items: center; diff --git a/apps/red-ui/src/app/modules/dashboard/dashboard-screen/dashboard-screen.component.scss b/apps/red-ui/src/app/modules/dashboard/dashboard-screen/dashboard-screen.component.scss index f646df137..b782d561c 100644 --- a/apps/red-ui/src/app/modules/dashboard/dashboard-screen/dashboard-screen.component.scss +++ b/apps/red-ui/src/app/modules/dashboard/dashboard-screen/dashboard-screen.component.scss @@ -1,6 +1,6 @@ :host { align-items: center; - background-color: var(--iqser-grey-2); + background-color: var(--iqser-alt-background); .container { padding: 32px; diff --git a/apps/red-ui/src/app/modules/shared/components/donut-chart/donut-chart.component.scss b/apps/red-ui/src/app/modules/shared/components/donut-chart/donut-chart.component.scss index 773493760..1bfd8851a 100644 --- a/apps/red-ui/src/app/modules/shared/components/donut-chart/donut-chart.component.scss +++ b/apps/red-ui/src/app/modules/shared/components/donut-chart/donut-chart.component.scss @@ -62,7 +62,7 @@ } &:hover:not(.active):not(.filter-disabled) { - background-color: var(--iqser-grey-6); + background-color: var(--iqser-btn-bg); } &.active { diff --git a/apps/red-ui/src/app/modules/upload-download/upload-status-overlay/upload-status-overlay.component.scss b/apps/red-ui/src/app/modules/upload-download/upload-status-overlay/upload-status-overlay.component.scss index c2569c204..16a2aaf46 100644 --- a/apps/red-ui/src/app/modules/upload-download/upload-status-overlay/upload-status-overlay.component.scss +++ b/apps/red-ui/src/app/modules/upload-download/upload-status-overlay/upload-status-overlay.component.scss @@ -6,7 +6,7 @@ position: fixed; bottom: 20px; right: 20px; - box-shadow: 0 3px 12px 5px rgba(40, 50, 65, 0.14); + box-shadow: 0 3px 12px 5px rgba(var(--iqser-accent-rgb), 0.14); border-radius: 8px; overflow: hidden; width: 400px; diff --git a/apps/red-ui/src/assets/styles/red-editor.scss b/apps/red-ui/src/assets/styles/red-editor.scss index 4f1a692d1..5c8c49ba6 100644 --- a/apps/red-ui/src/assets/styles/red-editor.scss +++ b/apps/red-ui/src/assets/styles/red-editor.scss @@ -1,4 +1,5 @@ @use 'variables'; +@use 'common-mixins'; .monaco-diff-editor { .editor.original { @@ -60,9 +61,9 @@ right: 40px; border-radius: 8px; padding: 16px 32px 16px 16px; - background-color: var(--iqser-white); - box-shadow: 0 2px 6px 0 rgba(40, 50, 65, 0.3); + background-color: var(--iqser-background); z-index: 5000; + @include common-mixins.drop-shadow; > *:not(:last-child) { margin-right: 24px; diff --git a/apps/red-ui/src/styles.scss b/apps/red-ui/src/styles.scss index 6ee1dc0e1..f08dc7461 100644 --- a/apps/red-ui/src/styles.scss +++ b/apps/red-ui/src/styles.scss @@ -11,6 +11,7 @@ $iqser-accent: vars.$accent, $iqser-accent-rgb: common-functions.hexToRgb(vars.$accent), $iqser-background: vars.$white, + $iqser-alt-background: vars.$grey-2, $iqser-text: vars.$accent, $iqser-text-rgb: common-functions.hexToRgb(vars.$accent), $iqser-disabled: vars.$grey-7, @@ -31,7 +32,9 @@ $iqser-yellow-1: vars.$yellow-1, $iqser-yellow-2: vars.$yellow-2, $iqser-helpmode-primary: vars.$green-2, - $iqser-inputs-border: vars.$grey-5 + $iqser-inputs-border: vars.$grey-5, + $iqser-popup-background: vars.$white, + $iqser-shadow: vars.$grey-4 ); @include common-variables.configureDark( @@ -41,12 +44,13 @@ $iqser-accent: vars.$accent, $iqser-accent-rgb: common-functions.hexToRgb(vars.$accent), $iqser-background: darken(vars.$accent, 10%), + $iqser-alt-background: darken(vars.$accent, 5%), $iqser-text: vars.$white, $iqser-text-rgb: common-functions.hexToRgb(vars.$white), $iqser-disabled: vars.$grey-7, $iqser-not-disabled-table-item: darken(vars.$accent, 5%), - $iqser-btn-bg-hover: darken(vars.$accent, 5%), - $iqser-btn-bg: darken(vars.$accent, 5%), + $iqser-btn-bg-hover: vars.$accent, + $iqser-btn-bg: darken(vars.$accent, 8%), $iqser-side-nav: darken(vars.$accent, 8%), $iqser-warn: vars.$warn, $iqser-separator: vars.$accent, @@ -61,5 +65,7 @@ $iqser-yellow-1: vars.$yellow-1, $iqser-yellow-2: vars.$yellow-2, $iqser-helpmode-primary: vars.$green-2, - $iqser-inputs-border: lighten(vars.$accent, 10%) + $iqser-inputs-border: lighten(vars.$accent, 10%), + $iqser-popup-background: darken(vars.$accent, 5%), + $iqser-shadow: #00000060 ); From 22501aadc5c90fce79485c58d15698c214abff7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Tue, 28 Jun 2022 23:25:47 +0300 Subject: [PATCH 23/28] RED-4397: Dark theme WIP --- .../spotlight-search.component.scss | 4 +-- .../notifications-screen.component.scss | 4 +-- .../screens/audit/audit-screen.component.html | 4 +-- ...r-attributes-listing-screen.component.html | 8 ++--- ...ssier-states-listing-screen.component.html | 8 ++--- ...ssier-states-listing-screen.component.scss | 2 +- ...e-attributes-listing-screen.component.html | 8 +++-- .../combo-chart/combo-chart.component.scss | 16 +++++++++- .../license-screen.component.scss | 2 +- .../user-listing-screen.component.html | 8 +++-- .../table-item/table-item.component.html | 4 ++- .../template-stats.component.scss | 2 +- .../file-actions/file-actions.component.scss | 4 +-- .../edit-dossier-team.component.html | 25 ++++++++-------- .../edit-dossier-team.component.scss | 2 +- .../expandable-file-actions.component.scss | 2 +- .../components/select/select.component.scss | 8 ++--- apps/red-ui/src/styles.scss | 29 +++++++++++++------ 18 files changed, 86 insertions(+), 54 deletions(-) diff --git a/apps/red-ui/src/app/components/spotlight-search/spotlight-search.component.scss b/apps/red-ui/src/app/components/spotlight-search/spotlight-search.component.scss index b5de9680c..1f1e8b80c 100644 --- a/apps/red-ui/src/app/components/spotlight-search/spotlight-search.component.scss +++ b/apps/red-ui/src/app/components/spotlight-search/spotlight-search.component.scss @@ -8,12 +8,12 @@ border: none; outline: none; color: var(--iqser-text); - background-color: var(--iqser-background); + background-color: transparent; } .highlight { border-radius: 4px; - background-color: var(--iqser-grey-2); + background-color: var(--iqser-side-nav); } .wrapper { diff --git a/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.scss b/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.scss index 5bfd95db4..9f7f3fbe9 100644 --- a/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.scss +++ b/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.scss @@ -16,7 +16,7 @@ .statement { opacity: 0.7; - color: var(--iqser-grey-1); + color: var(--iqser-text); font-weight: 500; padding: 10px 0; } @@ -40,7 +40,7 @@ padding: 10px 0; .group-title { - color: var(--iqser-grey-1); + color: var(--iqser-text); font-weight: 600; } diff --git a/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.html index 50380cbea..25e652fcc 100644 --- a/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.html @@ -102,8 +102,8 @@ {{ log.message }}
-
- {{ log.recordDate | date: 'd MMM yyyy, hh:mm a' }} +
+ {{ log.recordDate | date: 'd MMM yyyy, hh:mm a' }}
diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing-screen.component.html index 166bf5f5e..1340ee764 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing-screen.component.html @@ -77,12 +77,12 @@ {{ attribute.label }}
-
- {{ attribute.placeholder }} +
+ {{ attribute.placeholder }}
-
- {{ translations[attribute.type] | translate }} +
+ {{ translations[attribute.type] | translate }}
diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-listing-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-listing-screen.component.html index 8fc488463..7b1e32582 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-listing-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-listing-screen.component.html @@ -70,12 +70,12 @@
-
- {{ state.rank }} +
+ {{ state.rank }}
-
- {{ state.dossierCount }} +
+ {{ state.dossierCount }}
diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-listing-screen.component.scss b/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-listing-screen.component.scss index 1c40bf617..8e05e5883 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-listing-screen.component.scss +++ b/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-listing-screen.component.scss @@ -9,7 +9,7 @@ font-size: 16px; font-weight: 600; line-height: 20px; - color: var(--iqser-grey-1); + color: var(--iqser-text); } .right-container { diff --git a/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.html index 355f56117..c592ddb1a 100644 --- a/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.html @@ -96,7 +96,9 @@ {{ attribute.label }}
-
+
+ +
-
- {{ attribute.csvColumnHeader }} +
+ {{ attribute.csvColumnHeader }}
diff --git a/apps/red-ui/src/app/modules/admin/screens/license/combo-chart/combo-chart.component.scss b/apps/red-ui/src/app/modules/admin/screens/license/combo-chart/combo-chart.component.scss index 7ee754487..c2ef9aba1 100644 --- a/apps/red-ui/src/app/modules/admin/screens/license/combo-chart/combo-chart.component.scss +++ b/apps/red-ui/src/app/modules/admin/screens/license/combo-chart/combo-chart.component.scss @@ -66,7 +66,7 @@ } .tooltip-anchor { - fill: rgb(0, 0, 0); + fill: var(--iqser-text); } .gridline-path { @@ -86,4 +86,18 @@ } } } + + fill: var(--iqser-text); +} + +.chart-legend .legend-labels { + background: var(--iqser-alt-background) !important; + + .legend-label .legend-label-text { + color: var(--iqser-text) !important; + + &:hover { + color: rgba(var(--iqser-text-rgb), 0.8) !important; + } + } } diff --git a/apps/red-ui/src/app/modules/admin/screens/license/license-screen/license-screen.component.scss b/apps/red-ui/src/app/modules/admin/screens/license/license-screen/license-screen.component.scss index 5302874b3..9912f1c10 100644 --- a/apps/red-ui/src/app/modules/admin/screens/license/license-screen/license-screen.component.scss +++ b/apps/red-ui/src/app/modules/admin/screens/license/license-screen/license-screen.component.scss @@ -27,7 +27,7 @@ &:hover { > div { - background-color: var(--iqser-grey-2); + background-color: var(--iqser-alt-background); } } } diff --git a/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.html index 2ad031f25..fa2b709a3 100644 --- a/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.html @@ -74,7 +74,9 @@
-
{{ user.email || '-' }}
+
+ {{ user.email || '-' }} +
-
{{ getDisplayRoles(user) }}
+
+ {{ getDisplayRoles(user) }} +
diff --git a/apps/red-ui/src/app/modules/archive/components/table-item/table-item.component.html b/apps/red-ui/src/app/modules/archive/components/table-item/table-item.component.html index d94dbc95f..ee66ff76b 100644 --- a/apps/red-ui/src/app/modules/archive/components/table-item/table-item.component.html +++ b/apps/red-ui/src/app/modules/archive/components/table-item/table-item.component.html @@ -2,7 +2,9 @@
-
{{ dossier.archivedTime | date: 'd MMM yyyy' }}
+
+ {{ dossier.archivedTime | date: 'd MMM yyyy' }} +
diff --git a/apps/red-ui/src/app/modules/dashboard/components/template-stats/template-stats.component.scss b/apps/red-ui/src/app/modules/dashboard/components/template-stats/template-stats.component.scss index 4160bf43b..e544be4f2 100644 --- a/apps/red-ui/src/app/modules/dashboard/components/template-stats/template-stats.component.scss +++ b/apps/red-ui/src/app/modules/dashboard/components/template-stats/template-stats.component.scss @@ -17,7 +17,7 @@ &:not(.empty) { &:hover { - background-color: var(--iqser-grey-2); + background-color: var(--iqser-side-nav); .heading { text-decoration: underline; diff --git a/apps/red-ui/src/app/modules/shared-dossiers/components/file-actions/file-actions.component.scss b/apps/red-ui/src/app/modules/shared-dossiers/components/file-actions/file-actions.component.scss index 593f3c7ae..091142726 100644 --- a/apps/red-ui/src/app/modules/shared-dossiers/components/file-actions/file-actions.component.scss +++ b/apps/red-ui/src/app/modules/shared-dossiers/components/file-actions/file-actions.component.scss @@ -1,8 +1,8 @@ -@use 'libs/common-ui/src/assets/styles/common-mixins'; +@use 'common-mixins'; .file-actions { display: flex; - color: var(--iqser-grey-1); + color: var(--iqser-text); > *:not(:last-child) { margin-right: 2px; diff --git a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component.html b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component.html index c446cf066..a2faa635d 100644 --- a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component.html +++ b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component.html @@ -24,19 +24,18 @@ > - -
- -
+
+ +
{{ 'assign-dossier-owner.dialog.no-reviewers' | translate }}
diff --git a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component.scss b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component.scss index 0d427a120..51ce0bbb6 100644 --- a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component.scss +++ b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component.scss @@ -54,7 +54,7 @@ redaction-team-members { &.selected, &:hover { - background-color: var(--iqser-grey-2); + background-color: var(--iqser-alt-background); .actions { display: flex; diff --git a/apps/red-ui/src/app/modules/shared/components/expandable-file-actions/expandable-file-actions.component.scss b/apps/red-ui/src/app/modules/shared/components/expandable-file-actions/expandable-file-actions.component.scss index 822b7dc96..aec40dc04 100644 --- a/apps/red-ui/src/app/modules/shared/components/expandable-file-actions/expandable-file-actions.component.scss +++ b/apps/red-ui/src/app/modules/shared/components/expandable-file-actions/expandable-file-actions.component.scss @@ -18,6 +18,6 @@ mat-slide-toggle { } &[disabled] { - color: rgba(var(--iqser-accent-rgb), 0.3); + color: rgba(var(--iqser-text-rgb), 0.3); } } diff --git a/apps/red-ui/src/app/modules/shared/components/select/select.component.scss b/apps/red-ui/src/app/modules/shared/components/select/select.component.scss index afcada18e..1897536ec 100644 --- a/apps/red-ui/src/app/modules/shared/components/select/select.component.scss +++ b/apps/red-ui/src/app/modules/shared/components/select/select.component.scss @@ -65,13 +65,13 @@ mat-chip { } .mat-chip.mat-standard-chip.mat-chip-selected.mat-primary { - background-color: var(--iqser-grey-6); - color: var(--iqser-accent); + background-color: var(--iqser-btn-bg); + color: var(--iqser-text); } .mat-chip.mat-standard-chip { - background-color: var(--iqser-white); - color: var(--iqser-accent); + background-color: var(--iqser-background); + color: var(--iqser-text); margin: 0 0 2px 0; transition: background-color 0.2s; diff --git a/apps/red-ui/src/styles.scss b/apps/red-ui/src/styles.scss index f08dc7461..f7dffeb7d 100644 --- a/apps/red-ui/src/styles.scss +++ b/apps/red-ui/src/styles.scss @@ -34,24 +34,33 @@ $iqser-helpmode-primary: vars.$green-2, $iqser-inputs-border: vars.$grey-5, $iqser-popup-background: vars.$white, - $iqser-shadow: vars.$grey-4 + $iqser-shadow: vars.$grey-4, + $iqser-toggle-bg: vars.$grey-4, + $iqser-file-drop-drag-over: #e2eefd ); +$light-accent-5: lighten(vars.$accent, 5%); +$light-accent-10: lighten(vars.$accent, 10%); + +$dark-accent-5: darken(vars.$accent, 5%); +$dark-accent-8: darken(vars.$accent, 8%); +$dark-accent-10: darken(vars.$accent, 10%); + @include common-variables.configureDark( $iqser-primary: vars.$primary, $iqser-primary-rgb: common-functions.hexToRgb(vars.$primary), $iqser-primary-2: vars.$primary-2, $iqser-accent: vars.$accent, $iqser-accent-rgb: common-functions.hexToRgb(vars.$accent), - $iqser-background: darken(vars.$accent, 10%), - $iqser-alt-background: darken(vars.$accent, 5%), + $iqser-background: $dark-accent-10, + $iqser-alt-background: $dark-accent-5, $iqser-text: vars.$white, $iqser-text-rgb: common-functions.hexToRgb(vars.$white), $iqser-disabled: vars.$grey-7, - $iqser-not-disabled-table-item: darken(vars.$accent, 5%), + $iqser-not-disabled-table-item: $dark-accent-5, $iqser-btn-bg-hover: vars.$accent, - $iqser-btn-bg: darken(vars.$accent, 8%), - $iqser-side-nav: darken(vars.$accent, 8%), + $iqser-btn-bg: $dark-accent-8, + $iqser-side-nav: $dark-accent-8, $iqser-warn: vars.$warn, $iqser-separator: vars.$accent, $iqser-grey-2: vars.$grey-2, @@ -65,7 +74,9 @@ $iqser-yellow-1: vars.$yellow-1, $iqser-yellow-2: vars.$yellow-2, $iqser-helpmode-primary: vars.$green-2, - $iqser-inputs-border: lighten(vars.$accent, 10%), - $iqser-popup-background: darken(vars.$accent, 5%), - $iqser-shadow: #00000060 + $iqser-inputs-border: $light-accent-10, + $iqser-popup-background: $dark-accent-5, + $iqser-shadow: rgba(0, 0, 0, 0.4), + $iqser-toggle-bg: $light-accent-5, + $iqser-file-drop-drag-over: $light-accent-10 ); From 9207eb0454718e9a0c5d7a57bede6c8ff8af9546 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Wed, 29 Jun 2022 00:22:11 +0300 Subject: [PATCH 24/28] RED-4397: Dark theme WIP --- apps/red-ui/src/app/app.component.ts | 4 +- .../entities-listing-screen.component.html | 4 +- .../rules-screen/rules-screen.component.ts | 15 ++--- .../components/editor/editor.component.scss | 2 +- .../components/editor/editor.component.ts | 29 +++------ .../src/app/services/editor-theme.service.ts | 62 +++++++++++++++++++ .../app/services/user-preference.service.ts | 11 +++- apps/red-ui/src/styles.scss | 8 ++- 8 files changed, 98 insertions(+), 37 deletions(-) create mode 100644 apps/red-ui/src/app/services/editor-theme.service.ts diff --git a/apps/red-ui/src/app/app.component.ts b/apps/red-ui/src/app/app.component.ts index 68361d897..2c7c8b6f4 100644 --- a/apps/red-ui/src/app/app.component.ts +++ b/apps/red-ui/src/app/app.component.ts @@ -4,6 +4,7 @@ import { UserService } from '@services/user.service'; import { REDDocumentViewer } from './modules/pdf-viewer/services/document-viewer.service'; import { DossiersChangesService } from '@services/dossiers/dossier-changes.service'; import { DOCUMENT } from '@angular/common'; +import { UserPreferenceService } from '@services/user-preference.service'; @Component({ selector: 'redaction-root', @@ -17,12 +18,13 @@ export class AppComponent { readonly viewContainerRef: ViewContainerRef, private readonly _routerHistoryService: RouterHistoryService, private readonly _userService: UserService, + private readonly _userPreferenceService: UserPreferenceService, readonly documentViewer: REDDocumentViewer, private readonly _dossierChangesService: DossiersChangesService, @Inject(DOCUMENT) private document: Document, private renderer: Renderer2, ) { - this.renderer.addClass(this.document.body, 'dark'); + this.renderer.addClass(this.document.body, _userPreferenceService.getTheme()); // TODO: Find a better place to initialize dossiers refresh if (_userService.currentUser?.isUser) { _dossierChangesService.initializeRefresh(); diff --git a/apps/red-ui/src/app/modules/admin/screens/entities-listing/entities-listing-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/entities-listing/entities-listing-screen.component.html index e72abf4cf..985cde3c9 100644 --- a/apps/red-ui/src/app/modules/admin/screens/entities-listing/entities-listing-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/entities-listing/entities-listing-screen.component.html @@ -78,8 +78,8 @@
-
- {{ dict.rank }} +
+ {{ dict.rank }}
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 24ffb9c9b..5e810dc17 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 @@ -7,6 +7,7 @@ import { RulesService } from '../../../services/rules.service'; import { firstValueFrom } from 'rxjs'; import { ActivatedRoute } from '@angular/router'; import { DOSSIER_TEMPLATE_ID } from '@red/domain'; +import { EditorThemeService } from '@services/editor-theme.service'; import ICodeEditor = monaco.editor.ICodeEditor; import IModelDeltaDecoration = monaco.editor.IModelDeltaDecoration; import IStandaloneEditorConstructionOptions = monaco.editor.IStandaloneEditorConstructionOptions; @@ -44,6 +45,7 @@ export class RulesScreenComponent implements OnInit { private readonly _changeDetectorRef: ChangeDetectorRef, private readonly _toaster: Toaster, private readonly _loadingService: LoadingService, + private readonly _editorThemeService: EditorThemeService, route: ActivatedRoute, ) { this.#dossierTemplateId = route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID); @@ -73,15 +75,10 @@ export class RulesScreenComponent implements OnInit { onCodeEditorInit(editor: ICodeEditor) { this._codeEditor = editor; - (window as any).monaco.editor.defineTheme('redaction', { - base: 'vs', - inherit: true, - rules: [], - colors: { - 'editor.lineHighlightBackground': '#f4f5f7', - }, - }); - (window as any).monaco.editor.setTheme('redaction'); + for (const theme of this._editorThemeService.themes) { + (window as any).monaco.editor.defineTheme(theme, this._editorThemeService.configurations[theme]); + } + (window as any).monaco.editor.setTheme(this._editorThemeService.getTheme(true)); this._changeDetectorRef.detectChanges(); } diff --git a/apps/red-ui/src/app/modules/shared/components/editor/editor.component.scss b/apps/red-ui/src/app/modules/shared/components/editor/editor.component.scss index 862b53102..9afd86ac7 100644 --- a/apps/red-ui/src/app/modules/shared/components/editor/editor.component.scss +++ b/apps/red-ui/src/app/modules/shared/components/editor/editor.component.scss @@ -6,7 +6,7 @@ ngx-monaco-editor { } %arrow { - border: solid var(--iqser-grey-1); + border: solid var(--iqser-text); border-width: 2px 0 0 2px; height: 4px !important; width: 4px !important; diff --git a/apps/red-ui/src/app/modules/shared/components/editor/editor.component.ts b/apps/red-ui/src/app/modules/shared/components/editor/editor.component.ts index f2cdbe2f2..f70b83f7b 100644 --- a/apps/red-ui/src/app/modules/shared/components/editor/editor.component.ts +++ b/apps/red-ui/src/app/modules/shared/components/editor/editor.component.ts @@ -1,5 +1,7 @@ import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core'; import { Debounce, List, OnChange } from '@iqser/common-ui'; +import { UserPreferenceService } from '@services/user-preference.service'; +import { EditorThemeService } from '@services/editor-theme.service'; import IStandaloneEditorConstructionOptions = monaco.editor.IStandaloneEditorConstructionOptions; import ICodeEditor = monaco.editor.ICodeEditor; import IDiffEditor = monaco.editor.IDiffEditor; @@ -41,6 +43,8 @@ export class EditorComponent implements OnInit, OnChanges { private _diffEditor: IDiffEditor; private _decorations: string[] = []; + constructor(private readonly _userPreferenceService: UserPreferenceService, private readonly _editorThemeService: EditorThemeService) {} + get currentEntries(): string[] { return this.value.split('\n'); } @@ -102,31 +106,14 @@ export class EditorComponent implements OnInit, OnChanges { } private _defineThemes(): void { - (window as any).monaco.editor.defineTheme('redaction', { - base: 'vs', - inherit: true, - rules: [], - colors: { - 'editor.lineHighlightBackground': '#f4f5f7', - }, - }); - (window as any).monaco.editor.defineTheme('redaction-disabled', { - base: 'vs', - inherit: true, - rules: [], - colors: { - 'editor.background': '#f4f5f7', - 'editor.foreground': '#9398a0', - 'editor.lineHighlightBackground': '#f4f5f7', - 'editorLineNumber.foreground': '#9398a0', - 'editorActiveLineNumber.foreground': '#9398a0', - }, - }); + for (const theme of this._editorThemeService.themes) { + (window as any).monaco.editor.defineTheme(theme, this._editorThemeService.configurations[theme]); + } } private _setTheme(): void { this._defineThemes(); - (window as any).monaco.editor.setTheme(this.canEdit ? 'redaction' : 'redaction-disabled'); + (window as any).monaco.editor.setTheme(this._editorThemeService.getTheme(this.canEdit)); } private _handleMarginButtonClick(event: IEditorMouseEvent) { diff --git a/apps/red-ui/src/app/services/editor-theme.service.ts b/apps/red-ui/src/app/services/editor-theme.service.ts new file mode 100644 index 000000000..8033eeef0 --- /dev/null +++ b/apps/red-ui/src/app/services/editor-theme.service.ts @@ -0,0 +1,62 @@ +import { Injectable } from '@angular/core'; +import { UserPreferenceService } from './user-preference.service'; +import { editor } from 'monaco-editor'; +import IStandaloneThemeData = editor.IStandaloneThemeData; + +@Injectable({ + providedIn: 'root', +}) +export class EditorThemeService { + readonly themes = ['redaction', 'redaction-disabled', 'redaction-dark', 'redaction-disabled-dark']; + readonly configurations: Record = { + redaction: { + base: 'vs', + inherit: true, + rules: [], + colors: { + 'editor.lineHighlightBackground': '#f4f5f7', + }, + }, + 'redaction-disabled': { + base: 'vs', + inherit: true, + rules: [], + colors: { + 'editor.background': '#f4f5f7', + 'editor.foreground': '#9398a0', + 'editor.lineHighlightBackground': '#f4f5f7', + 'editorLineNumber.foreground': '#9398a0', + 'editorActiveLineNumber.foreground': '#9398a0', + }, + }, + 'redaction-dark': { + base: 'vs-dark', + inherit: true, + rules: [], + colors: { + 'editor.background': '#151a21', + 'editor.lineHighlightBackground': '#283241', + }, + }, + 'redaction-disabled-dark': { + base: 'vs-dark', + inherit: true, + rules: [], + colors: { + 'editor.background': '#151a21', + 'editor.foreground': '#9398a0', + 'editor.lineHighlightBackground': '#283241', + 'editorLineNumber.foreground': '#9398a0', + 'editorActiveLineNumber.foreground': '#9398a0', + }, + }, + }; + + constructor(private readonly _userPreferenceService: UserPreferenceService) {} + + getTheme(canEdit: boolean): string { + const isDarkTheme = this._userPreferenceService.getTheme() === 'dark'; + const editorTheme = canEdit ? 'redaction' : 'redaction-disabled'; + return `${editorTheme}${isDarkTheme ? '-dark' : ''}`; + } +} diff --git a/apps/red-ui/src/app/services/user-preference.service.ts b/apps/red-ui/src/app/services/user-preference.service.ts index 5df934cac..e12759a5d 100644 --- a/apps/red-ui/src/app/services/user-preference.service.ts +++ b/apps/red-ui/src/app/services/user-preference.service.ts @@ -9,6 +9,7 @@ const KEYS = { dossierRecent: 'Dossier-Recent', filePreviewTooltips: 'File-Preview-Tooltips', lastDossierTemplate: 'Last-Dossier-Template', + theme: 'Theme', } as const; @Injectable({ @@ -46,6 +47,14 @@ export class UserPreferenceService extends GenericService { await this._save(KEYS.lastDossierTemplate, dossierTemplateId); } + getTheme(): string { + return this._getAttribute(KEYS.theme, 'dark'); + } + + async saveTheme(theme: 'light' | 'dark'): Promise { + await this._save(KEYS.theme, theme); + } + getLanguage(): string { return this._getAttribute(KEYS.language); } @@ -64,7 +73,7 @@ export class UserPreferenceService extends GenericService { } toggleDevFeatures(): void { - sessionStorage.setItem('redaction.enable-dev-features', `${!this.areDevFeaturesEnabled}`); + sessionStorage.setItem('redaction.enable-dev-features', String(!this.areDevFeaturesEnabled)); window.location.reload(); } diff --git a/apps/red-ui/src/styles.scss b/apps/red-ui/src/styles.scss index f7dffeb7d..665f6cbe4 100644 --- a/apps/red-ui/src/styles.scss +++ b/apps/red-ui/src/styles.scss @@ -36,7 +36,9 @@ $iqser-popup-background: vars.$white, $iqser-shadow: vars.$grey-4, $iqser-toggle-bg: vars.$grey-4, - $iqser-file-drop-drag-over: #e2eefd + $iqser-file-drop-drag-over: #e2eefd, + $iqser-user-avatar-1: vars.$grey-6, + $iqser-user-avatar-2: vars.$grey-4 ); $light-accent-5: lighten(vars.$accent, 5%); @@ -78,5 +80,7 @@ $dark-accent-10: darken(vars.$accent, 10%); $iqser-popup-background: $dark-accent-5, $iqser-shadow: rgba(0, 0, 0, 0.4), $iqser-toggle-bg: $light-accent-5, - $iqser-file-drop-drag-over: $light-accent-10 + $iqser-file-drop-drag-over: $light-accent-10, + $iqser-user-avatar-1: $light-accent-5, + $iqser-user-avatar-2: $light-accent-10 ); From e25b59fca7f19843925df8473ffde0808325af5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Wed, 29 Jun 2022 00:39:58 +0300 Subject: [PATCH 25/28] RED-4397: Dark theme WIP --- .../user-profile-screen.component.html | 12 +++++++++++- .../user-profile-screen.component.ts | 14 +++++++++++++- .../watermark-screen.component.scss | 4 ++-- .../watermark-screen/watermark-screen.component.ts | 6 +++++- .../pdf-viewer/services/pdf-viewer.service.ts | 3 +++ .../src/app/services/user-preference.service.ts | 3 ++- apps/red-ui/src/assets/i18n/de.json | 1 + apps/red-ui/src/assets/i18n/en.json | 1 + libs/red-domain/src/lib/users/profile.ts | 1 + 9 files changed, 39 insertions(+), 6 deletions(-) diff --git a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.html b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.html index 5291221dd..4d6c2172c 100644 --- a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.html +++ b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.html @@ -28,11 +28,21 @@ +
+ + {{ 'user-profile-screen.form.dark-theme' | translate }} + +
-
diff --git a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.ts b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.ts index e835758e3..941c9ff75 100644 --- a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.ts +++ b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.ts @@ -10,7 +10,7 @@ import { UserService } from '@services/user.service'; import { ConfigService } from '@services/config.service'; import { LanguageService } from '../../../../../i18n/language.service'; import { firstValueFrom } from 'rxjs'; -import { UserPreferenceService } from '../../../../../services/user-preference.service'; +import { UserPreferenceService } from '@services/user-preference.service'; @Component({ selector: 'redaction-user-profile-screen', @@ -34,6 +34,7 @@ export class UserProfileScreenComponent extends BaseFormComponent implements OnI private readonly _formBuilder: UntypedFormBuilder, private readonly _languageService: LanguageService, protected readonly _translateService: TranslateService, + protected readonly _userPreferenceService: UserPreferenceService, ) { super(); this._loadingService.start(); @@ -44,9 +45,14 @@ export class UserProfileScreenComponent extends BaseFormComponent implements OnI return this.#profileModel['language'] !== this.form.get('language').value; } + get themeChanged(): boolean { + return this._profileModel['darkTheme'] !== this.form.get('darkTheme').value; + } + get profileChanged(): boolean { const keys = Object.keys(this.form.getRawValue()); keys.splice(keys.indexOf('language'), 1); + keys.splice(keys.indexOf('darkTheme'), 1); for (const key of keys) { if (this.#profileModel[key] !== this.form.get(key).value) { @@ -86,6 +92,10 @@ export class UserProfileScreenComponent extends BaseFormComponent implements OnI await firstValueFrom(this._userService.loadAll()); } + if (this.themeChanged) { + await this._userPreferenceService.saveTheme(this.form.get('darkTheme').value ? 'dark' : 'light'); + } + this._initializeForm(); } @@ -95,6 +105,7 @@ export class UserProfileScreenComponent extends BaseFormComponent implements OnI firstName: [undefined], lastName: [undefined], language: [undefined], + darkTheme: [false], }); } @@ -106,6 +117,7 @@ export class UserProfileScreenComponent extends BaseFormComponent implements OnI firstName: this._userService.currentUser.firstName, lastName: this._userService.currentUser.lastName, language: this._languageService.currentLanguage, + darkTheme: this._userPreferenceService.getTheme() === 'dark', }; if (this._userService.currentUser.email) { // disable email if it's already set 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 bbdca01c2..18550f5ed 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 @@ -39,7 +39,7 @@ width: 60px; height: 60px; border-radius: 8px; - background-color: var(--iqser-grey-6); + background-color: var(--iqser-btn-bg); color: var(--iqser-grey-7); align-items: center; justify-content: center; @@ -53,7 +53,7 @@ } &:not(.disabled):not(.active):hover { - background-color: darken(variables.$grey-6, 2); + background-color: var(--iqser-btn-bg-hover); } &:not(:last-child) { 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 a1facac72..61fd8a519 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 @@ -12,7 +12,8 @@ import { WatermarkService } from '@services/entity-services/watermark.service'; import { firstValueFrom, Observable, of, switchMap } from 'rxjs'; import { catchError, tap } from 'rxjs/operators'; import { ActivatedRoute } from '@angular/router'; -import { LicenseService } from '../../../../../services/license.service'; +import { LicenseService } from '@services/license.service'; +import { UserPreferenceService } from '@services/user-preference.service'; export const DEFAULT_WATERMARK: IWatermark = { text: null, @@ -48,6 +49,7 @@ export class WatermarkScreenComponent implements OnInit { @Inject(BASE_HREF_FN) private readonly _convertPath: BaseHrefFn, private readonly _watermarkService: WatermarkService, private readonly _changeDetectorRef: ChangeDetectorRef, + private readonly _userPreferenceService: UserPreferenceService, ) { this._loadingService.start(); this.#dossierTemplateId = route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID); @@ -137,6 +139,8 @@ export class WatermarkScreenComponent implements OnInit { ).then(instance => { this._instance = instance; + instance.UI.setTheme(this._userPreferenceService.getTheme()); + instance.Core.documentViewer.on('documentLoaded', async () => { this._loadingService.stop(); await this._drawWatermark(); diff --git a/apps/red-ui/src/app/modules/pdf-viewer/services/pdf-viewer.service.ts b/apps/red-ui/src/app/modules/pdf-viewer/services/pdf-viewer.service.ts index b35624d90..6adad4f0a 100644 --- a/apps/red-ui/src/app/modules/pdf-viewer/services/pdf-viewer.service.ts +++ b/apps/red-ui/src/app/modules/pdf-viewer/services/pdf-viewer.service.ts @@ -13,6 +13,7 @@ import { Rgb } from '../utils/types'; import { asList } from '../utils/functions'; import { TranslateService } from '@ngx-translate/core'; import { LicenseService } from '@services/license.service'; +import { UserPreferenceService } from '@services/user-preference.service'; import TextTool = Core.Tools.TextTool; import Annotation = Core.Annotations.Annotation; import TextHighlightAnnotation = Core.Annotations.TextHighlightAnnotation; @@ -53,6 +54,7 @@ export class PdfViewer { private readonly _activatedRoute: ActivatedRoute, private readonly _licenseService: LicenseService, private readonly _translateService: TranslateService, + private readonly _userPreferenceService: UserPreferenceService, @Inject(BASE_HREF_FN) private readonly _convertPath: BaseHrefFn, ) {} @@ -133,6 +135,7 @@ export class PdfViewer { this.#instance = await this.#getInstance(htmlElement); await this.PDFNet.initialize(this._licenseService.activeLicenseKey); + this.#instance.UI.setTheme(this._userPreferenceService.getTheme()); this._logger.info('[PDF] Initialized'); this.documentViewer = this.#instance.Core.documentViewer; diff --git a/apps/red-ui/src/app/services/user-preference.service.ts b/apps/red-ui/src/app/services/user-preference.service.ts index e12759a5d..d426b3349 100644 --- a/apps/red-ui/src/app/services/user-preference.service.ts +++ b/apps/red-ui/src/app/services/user-preference.service.ts @@ -48,11 +48,12 @@ export class UserPreferenceService extends GenericService { } getTheme(): string { - return this._getAttribute(KEYS.theme, 'dark'); + return this._getAttribute(KEYS.theme, 'light'); } async saveTheme(theme: 'light' | 'dark'): Promise { await this._save(KEYS.theme, theme); + window.location.reload(); } getLanguage(): string { diff --git a/apps/red-ui/src/assets/i18n/de.json b/apps/red-ui/src/assets/i18n/de.json index a71f6718d..86e26ec43 100644 --- a/apps/red-ui/src/assets/i18n/de.json +++ b/apps/red-ui/src/assets/i18n/de.json @@ -2058,6 +2058,7 @@ "save": "Änderungen speichern" }, "form": { + "dark-theme": "", "email": "Email", "first-name": "Vorname", "last-name": "Nachname" diff --git a/apps/red-ui/src/assets/i18n/en.json b/apps/red-ui/src/assets/i18n/en.json index 5eca70ac2..f67ea9c87 100644 --- a/apps/red-ui/src/assets/i18n/en.json +++ b/apps/red-ui/src/assets/i18n/en.json @@ -2058,6 +2058,7 @@ "save": "Save Changes" }, "form": { + "dark-theme": "Dark Theme", "email": "Email", "first-name": "First name", "last-name": "Last name" diff --git a/libs/red-domain/src/lib/users/profile.ts b/libs/red-domain/src/lib/users/profile.ts index d45a837bd..e53543392 100644 --- a/libs/red-domain/src/lib/users/profile.ts +++ b/libs/red-domain/src/lib/users/profile.ts @@ -4,4 +4,5 @@ export interface IProfile { firstName: string; lastName: string; language: string; + darkTheme: boolean; } From e53a54c0d2d18f39adef1a51a0e65706e065deb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Wed, 29 Jun 2022 03:20:11 +0300 Subject: [PATCH 26/28] RED-4397: Dark theme WIP --- .../dossier-details.component.scss | 2 +- .../annotation-details.component.scss | 2 +- .../annotation-wrapper.component.scss | 4 ++-- .../file-workload.component.scss | 4 ++-- .../page-indicator.component.scss | 8 ++++---- .../file-preview-screen.component.scss | 2 +- .../paginator/paginator.component.scss | 5 +++-- .../src/assets/icons/general/reference.svg | 10 ++++++---- apps/red-ui/src/assets/pdftron/stylesheet.css | 5 +++++ apps/red-ui/src/assets/styles/_variables.scss | 2 -- .../src/assets/styles/red-components.scss | 2 +- apps/red-ui/src/styles.scss | 20 +++++++++++++------ 12 files changed, 40 insertions(+), 26 deletions(-) diff --git a/apps/red-ui/src/app/modules/dossier-overview/components/dossier-details/dossier-details.component.scss b/apps/red-ui/src/app/modules/dossier-overview/components/dossier-details/dossier-details.component.scss index 73039cfb8..e415ad1bc 100644 --- a/apps/red-ui/src/app/modules/dossier-overview/components/dossier-details/dossier-details.component.scss +++ b/apps/red-ui/src/app/modules/dossier-overview/components/dossier-details/dossier-details.component.scss @@ -29,7 +29,7 @@ padding: 3px 8px; &:hover { - background-color: var(--iqser-grey-6); + background-color: var(--iqser-tab-hover); } &.active { diff --git a/apps/red-ui/src/app/modules/file-preview/components/annotation-details/annotation-details.component.scss b/apps/red-ui/src/app/modules/file-preview/components/annotation-details/annotation-details.component.scss index a3b6a8184..1110e38ca 100644 --- a/apps/red-ui/src/app/modules/file-preview/components/annotation-details/annotation-details.component.scss +++ b/apps/red-ui/src/app/modules/file-preview/components/annotation-details/annotation-details.component.scss @@ -28,7 +28,7 @@ height: 24px; &:hover { - background-color: var(--iqser-grey-6); + background-color: var(--iqser-tab-hover); border-radius: 12px; mat-icon { diff --git a/apps/red-ui/src/app/modules/file-preview/components/annotation-wrapper/annotation-wrapper.component.scss b/apps/red-ui/src/app/modules/file-preview/components/annotation-wrapper/annotation-wrapper.component.scss index a6653f9b5..6817bb6ea 100644 --- a/apps/red-ui/src/app/modules/file-preview/components/annotation-wrapper/annotation-wrapper.component.scss +++ b/apps/red-ui/src/app/modules/file-preview/components/annotation-wrapper/annotation-wrapper.component.scss @@ -52,7 +52,7 @@ } &:hover { - background-color: var(--iqser-grey-4); + background-color: var(--iqser-annotation-comments-hover); } } } @@ -60,7 +60,7 @@ &:hover, &.help-mode { - background-color: var(--iqser-grey-8); + background-color: var(--iqser-annotation-hover); ::ng-deep .annotation-actions { display: flex; diff --git a/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.scss b/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.scss index c7ddef779..855230586 100644 --- a/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.scss +++ b/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.scss @@ -78,7 +78,7 @@ outline: none; &.active-panel { - background-color: #fafafa; + background-color: var(--iqser-workload-pages-bg); } } @@ -98,7 +98,7 @@ transition: background-color 0.25s; &:not(.disabled):hover { - background-color: var(--iqser-grey-6); + background-color: var(--iqser-tab-hover); } mat-icon { diff --git a/apps/red-ui/src/app/modules/file-preview/components/page-indicator/page-indicator.component.scss b/apps/red-ui/src/app/modules/file-preview/components/page-indicator/page-indicator.component.scss index 818da8a29..e248fd1fa 100644 --- a/apps/red-ui/src/app/modules/file-preview/components/page-indicator/page-indicator.component.scss +++ b/apps/red-ui/src/app/modules/file-preview/components/page-indicator/page-indicator.component.scss @@ -1,12 +1,12 @@ .page-wrapper { - color: var(--iqser-accent); + color: var(--iqser-text); position: relative; padding: 12px 14px 12px 8px; cursor: pointer; border-left: 4px solid transparent; &:hover { - background-color: var(--iqser-grey-2); + background-color: var(--iqser-alt-background); } &.active { @@ -33,10 +33,10 @@ } &.read { - color: var(--iqser-grey-5); + color: var(--iqser-inputs-outline); .text { - color: var(--iqser-accent); + color: var(--iqser-text); } } diff --git a/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.scss b/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.scss index f149bcbab..e658d2b05 100644 --- a/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.scss +++ b/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.scss @@ -1,7 +1,7 @@ .vertical-line { width: 1px; height: 30px; - background-color: var(--iqser-grey-4); + background-color: var(--iqser-separator); margin: 0 16px; } diff --git a/apps/red-ui/src/app/modules/pdf-viewer/components/paginator/paginator.component.scss b/apps/red-ui/src/app/modules/pdf-viewer/components/paginator/paginator.component.scss index 21be9c450..7a34c7e8e 100644 --- a/apps/red-ui/src/app/modules/pdf-viewer/components/paginator/paginator.component.scss +++ b/apps/red-ui/src/app/modules/pdf-viewer/components/paginator/paginator.component.scss @@ -4,7 +4,7 @@ bottom: 20px; left: calc(50% - (var(--workload-width) / 2)); transform: translate(-50%); - background: var(--iqser-white); + background: var(--iqser-background); color: var(--iqser-grey-7); border: 1px solid var(--iqser-grey-7); border-radius: 8px; @@ -32,6 +32,7 @@ margin: 0; } + background-color: var(--iqser-background); color: var(--iqser-grey-7); text-decoration: none; outline: none; @@ -55,7 +56,7 @@ padding-right: 4px; &:hover { - color: var(--iqser-accent); + color: var(--iqser-text); } } } diff --git a/apps/red-ui/src/assets/icons/general/reference.svg b/apps/red-ui/src/assets/icons/general/reference.svg index 77e985170..1b88e7b29 100644 --- a/apps/red-ui/src/assets/icons/general/reference.svg +++ b/apps/red-ui/src/assets/icons/general/reference.svg @@ -1,10 +1,12 @@ - - - + + + - + diff --git a/apps/red-ui/src/assets/pdftron/stylesheet.css b/apps/red-ui/src/assets/pdftron/stylesheet.css index 65408fd9a..1003f8cc9 100644 --- a/apps/red-ui/src/assets/pdftron/stylesheet.css +++ b/apps/red-ui/src/assets/pdftron/stylesheet.css @@ -37,3 +37,8 @@ .excluded-page { border: 2px solid #dd4d5080; } + +.AnnotationPopup { + --component-background: white; + --popup-button-hover: #e7edf3; +} diff --git a/apps/red-ui/src/assets/styles/_variables.scss b/apps/red-ui/src/assets/styles/_variables.scss index 91b1a3ee9..41fec2923 100644 --- a/apps/red-ui/src/assets/styles/_variables.scss +++ b/apps/red-ui/src/assets/styles/_variables.scss @@ -31,5 +31,3 @@ $accent: $grey-1; $warn: $yellow-2; $light: $white; $dark: $black; - -$separator: rgba(226, 228, 233, 0.9); diff --git a/apps/red-ui/src/assets/styles/red-components.scss b/apps/red-ui/src/assets/styles/red-components.scss index 78d3c5e9e..e4155f00d 100644 --- a/apps/red-ui/src/assets/styles/red-components.scss +++ b/apps/red-ui/src/assets/styles/red-components.scss @@ -88,7 +88,7 @@ display: flex; align-items: center; justify-content: space-between; - background-color: var(--iqser-grey-6); + background-color: var(--iqser-btn-bg); > div { display: flex; diff --git a/apps/red-ui/src/styles.scss b/apps/red-ui/src/styles.scss index 665f6cbe4..850c8b220 100644 --- a/apps/red-ui/src/styles.scss +++ b/apps/red-ui/src/styles.scss @@ -20,7 +20,7 @@ $iqser-btn-bg: vars.$grey-6, $iqser-side-nav: vars.$grey-2, $iqser-warn: vars.$warn, - $iqser-separator: vars.$separator, + $iqser-separator: rgba(vars.$grey-4, 0.9), $iqser-grey-2: vars.$grey-2, $iqser-grey-3: vars.$grey-3, $iqser-grey-4: vars.$grey-4, @@ -32,13 +32,17 @@ $iqser-yellow-1: vars.$yellow-1, $iqser-yellow-2: vars.$yellow-2, $iqser-helpmode-primary: vars.$green-2, - $iqser-inputs-border: vars.$grey-5, + $iqser-inputs-outline: vars.$grey-5, $iqser-popup-background: vars.$white, $iqser-shadow: vars.$grey-4, $iqser-toggle-bg: vars.$grey-4, $iqser-file-drop-drag-over: #e2eefd, $iqser-user-avatar-1: vars.$grey-6, - $iqser-user-avatar-2: vars.$grey-4 + $iqser-user-avatar-2: vars.$grey-4, + $iqser-annotation-hover: vars.$grey-8, + $iqser-annotation-comments-hover: vars.$grey-4, + $iqser-workload-pages-bg: vars.$grey-8, + $iqser-tab-hover: vars.$grey-6 ); $light-accent-5: lighten(vars.$accent, 5%); @@ -61,7 +65,7 @@ $dark-accent-10: darken(vars.$accent, 10%); $iqser-disabled: vars.$grey-7, $iqser-not-disabled-table-item: $dark-accent-5, $iqser-btn-bg-hover: vars.$accent, - $iqser-btn-bg: $dark-accent-8, + $iqser-btn-bg: $dark-accent-5, $iqser-side-nav: $dark-accent-8, $iqser-warn: vars.$warn, $iqser-separator: vars.$accent, @@ -76,11 +80,15 @@ $dark-accent-10: darken(vars.$accent, 10%); $iqser-yellow-1: vars.$yellow-1, $iqser-yellow-2: vars.$yellow-2, $iqser-helpmode-primary: vars.$green-2, - $iqser-inputs-border: $light-accent-10, + $iqser-inputs-outline: $light-accent-10, $iqser-popup-background: $dark-accent-5, $iqser-shadow: rgba(0, 0, 0, 0.4), $iqser-toggle-bg: $light-accent-5, $iqser-file-drop-drag-over: $light-accent-10, $iqser-user-avatar-1: $light-accent-5, - $iqser-user-avatar-2: $light-accent-10 + $iqser-user-avatar-2: $light-accent-10, + $iqser-annotation-hover: $dark-accent-5, + $iqser-annotation-comments-hover: $light-accent-5, + $iqser-workload-pages-bg: $dark-accent-8, + $iqser-tab-hover: vars.$accent ); From 23425d865383bc08ec83213c143602c3b83ef83d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Wed, 29 Jun 2022 19:56:16 +0300 Subject: [PATCH 27/28] RED-4397: Dark theme --- .../notifications/notifications.component.scss | 2 +- .../user-profile-screen.component.html | 3 ++- .../user-profile-screen.component.ts | 5 +++-- ...-attributes-csv-import-dialog.component.scss | 8 ++++---- .../reports-screen.component.scss | 4 ++-- .../dossier-details-stats.component.scss | 2 +- .../components/select/select.component.scss | 5 ++--- .../upload-status-overlay.component.scss | 17 ++++++++--------- apps/red-ui/src/styles.scss | 6 ++++-- 9 files changed, 27 insertions(+), 25 deletions(-) diff --git a/apps/red-ui/src/app/components/notifications/notifications.component.scss b/apps/red-ui/src/app/components/notifications/notifications.component.scss index 6f896c93a..23a290b31 100644 --- a/apps/red-ui/src/app/components/notifications/notifications.component.scss +++ b/apps/red-ui/src/app/components/notifications/notifications.component.scss @@ -55,7 +55,7 @@ } &:hover { - background-color: var(--iqser-grey-6); + background-color: var(--iqser-tab-hover); .dot { background-color: var(--iqser-grey-5); diff --git a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.html b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.html index 4d6c2172c..250f76949 100644 --- a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.html +++ b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.html @@ -28,7 +28,8 @@ -
+ +
{{ 'user-profile-screen.form.dark-theme' | translate }} diff --git a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.ts b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.ts index 941c9ff75..af9648942 100644 --- a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.ts +++ b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.ts @@ -19,8 +19,9 @@ import { UserPreferenceService } from '@services/user-preference.service'; changeDetection: ChangeDetectionStrategy.OnPush, }) export class UserProfileScreenComponent extends BaseFormComponent implements OnInit { - readonly changePasswordUrl: SafeResourceUrl; readonly translations = languagesTranslations; + readonly devMode = this._userPreferenceService.areDevFeaturesEnabled; + readonly changePasswordUrl: SafeResourceUrl; #profileModel: IProfile; @@ -46,7 +47,7 @@ export class UserProfileScreenComponent extends BaseFormComponent implements OnI } get themeChanged(): boolean { - return this._profileModel['darkTheme'] !== this.form.get('darkTheme').value; + return this.#profileModel['darkTheme'] !== this.form.get('darkTheme').value; } get profileChanged(): boolean { diff --git a/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component.scss b/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component.scss index bad6fc2da..79ddc9f17 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component.scss +++ b/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component.scss @@ -100,7 +100,7 @@ align-items: center; justify-content: center; text-align: center; - color: var(--iqser-grey-7); + color: var(--iqser-btn-bg); line-height: 15px; font-weight: 500; } @@ -116,14 +116,14 @@ > .left { width: 375px; min-width: 375px; - background: var(--iqser-grey-2); + background: var(--iqser-alt-background); display: flex; flex-direction: column; .csv-header-pill-content { overflow: auto; padding: 7px 0; - background: var(--iqser-grey-2); + background: var(--iqser-alt-background); @include common-mixins.no-scroll-bar; .csv-header-pill-wrapper { @@ -169,7 +169,7 @@ min-width: 150px; display: flex; flex-direction: column; - background: var(--iqser-grey-2); + background: var(--iqser-alt-background); border-right: 1px solid var(--iqser-separator); &:not(.collapsed) iqser-circle-button { diff --git a/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen/reports-screen.component.scss b/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen/reports-screen.component.scss index f73496ca2..ee5df8933 100644 --- a/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen/reports-screen.component.scss +++ b/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen/reports-screen.component.scss @@ -24,7 +24,7 @@ .template { padding: 8px 10px; - background-color: var(--iqser-grey-6); + background-color: var(--iqser-btn-bg); border-radius: 4px; transition: background-color 0.2s; position: relative; @@ -51,7 +51,7 @@ } &:hover { - background-color: var(--iqser-grey-4); + background-color: var(--iqser-btn-bg-hover); .actions { display: flex; diff --git a/apps/red-ui/src/app/modules/dossier-overview/components/dossier-details-stats/dossier-details-stats.component.scss b/apps/red-ui/src/app/modules/dossier-overview/components/dossier-details-stats/dossier-details-stats.component.scss index aa6d3e1a6..42741d8ec 100644 --- a/apps/red-ui/src/app/modules/dossier-overview/components/dossier-details-stats/dossier-details-stats.component.scss +++ b/apps/red-ui/src/app/modules/dossier-overview/components/dossier-details-stats/dossier-details-stats.component.scss @@ -21,7 +21,7 @@ transition: background-color 0.2s; &:hover { - background-color: var(--iqser-grey-6); + background-color: var(--iqser-btn-bg); } } } diff --git a/apps/red-ui/src/app/modules/shared/components/select/select.component.scss b/apps/red-ui/src/app/modules/shared/components/select/select.component.scss index 1897536ec..97bfc982c 100644 --- a/apps/red-ui/src/app/modules/shared/components/select/select.component.scss +++ b/apps/red-ui/src/app/modules/shared/components/select/select.component.scss @@ -12,7 +12,6 @@ } } -// https://stackoverflow.com/questions/34641281/how-to-add-class-to-host-element :host(.fixed-height) { height: var(--height); overflow: hidden; @@ -76,12 +75,12 @@ mat-chip { transition: background-color 0.2s; &:hover { - background-color: var(--iqser-grey-8); + background-color: var(--iqser-not-disabled-table-item); } } .mat-chip.mat-standard-chip::after { - background: var(--iqser-grey-8); + background: transparent; } .mat-standard-chip:focus::after { diff --git a/apps/red-ui/src/app/modules/upload-download/upload-status-overlay/upload-status-overlay.component.scss b/apps/red-ui/src/app/modules/upload-download/upload-status-overlay/upload-status-overlay.component.scss index 16a2aaf46..02647eb80 100644 --- a/apps/red-ui/src/app/modules/upload-download/upload-status-overlay/upload-status-overlay.component.scss +++ b/apps/red-ui/src/app/modules/upload-download/upload-status-overlay/upload-status-overlay.component.scss @@ -1,15 +1,14 @@ @use 'common-mixins'; -@use 'variables'; .red-upload-download-overlay { - background: var(--iqser-white); + background: var(--iqser-background); position: fixed; bottom: 20px; right: 20px; - box-shadow: 0 3px 12px 5px rgba(var(--iqser-accent-rgb), 0.14); border-radius: 8px; overflow: hidden; width: 400px; + @include common-mixins.drop-shadow; .red-upload-download-header { display: flex; @@ -19,14 +18,14 @@ padding: 16px 14px 16px 16px; cursor: pointer; - color: var(--iqser-accent); + color: var(--iqser-text); font-size: 13px; font-weight: 600; line-height: 16px; mat-icon { height: 13px; - color: var(--iqser-accent); + color: var(--iqser-text); &.collapse-icon { height: 15px; @@ -52,7 +51,7 @@ .dossier-name-wrapper { display: flex; padding: 4px 16px; - background-color: var(--iqser-grey-2); + background-color: var(--iqser-alt-background); > span { @include common-mixins.line-clamp(1); @@ -90,7 +89,7 @@ } &.error { - background-color: rgba(variables.$primary, 0.1); + background-color: rgba(var(--iqser-primary-rgb), 0.1); padding-right: 100px; .error-message { @@ -113,13 +112,13 @@ } &:not(.error) { - background: linear-gradient(to right, rgba(244, 245, 247, 0) 0%, variables.$grey-2 35%); + background: linear-gradient(to right, rgba(244, 245, 247, 0) 0%, var(--iqser-alt-background) 35%); padding-left: 60px; } } &:not(.error):hover { - background-color: var(--iqser-grey-2); + background-color: var(--iqser-alt-background); .actions { display: flex; diff --git a/apps/red-ui/src/styles.scss b/apps/red-ui/src/styles.scss index 850c8b220..83465af66 100644 --- a/apps/red-ui/src/styles.scss +++ b/apps/red-ui/src/styles.scss @@ -42,7 +42,8 @@ $iqser-annotation-hover: vars.$grey-8, $iqser-annotation-comments-hover: vars.$grey-4, $iqser-workload-pages-bg: vars.$grey-8, - $iqser-tab-hover: vars.$grey-6 + $iqser-tab-hover: vars.$grey-6, + $iqser-loading-progress: vars.$grey-7 ); $light-accent-5: lighten(vars.$accent, 5%); @@ -90,5 +91,6 @@ $dark-accent-10: darken(vars.$accent, 10%); $iqser-annotation-hover: $dark-accent-5, $iqser-annotation-comments-hover: $light-accent-5, $iqser-workload-pages-bg: $dark-accent-8, - $iqser-tab-hover: vars.$accent + $iqser-tab-hover: vars.$accent, + $iqser-loading-progress: $light-accent-10 ); From d2bfe0cee7eb0d9e22f6a61209f24a8d6b5ead90 Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Wed, 29 Jun 2022 19:05:33 +0200 Subject: [PATCH 28/28] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3293 -> 3296 bytes paligo-theme/paligo-styles/redacto-theme.css | 76 +++++++++++-------- 3 files changed, 47 insertions(+), 31 deletions(-) diff --git a/package.json b/package.json index c91ddba8a..46a941e4f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.580.0", + "version": "3.581.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index aff84b3fd2febcea6ce86a4e6c761308a9109bda..0e6920eb35297afefcfe49a30a7a8e98116a28ab 100644 GIT binary patch delta 3260 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 delta 3254 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