From 313d101c419d8c7640270a96a66879336f3f244c Mon Sep 17 00:00:00 2001 From: Valentin Mihai Date: Fri, 27 May 2022 22:13:10 +0300 Subject: [PATCH 01/18] RED-3977 - Scroll button help mode key improvements --- .../archived-dossiers-screen.component.html | 2 ++ .../screen/dossier-overview-screen.component.html | 2 +- .../screen/dossiers-listing-screen.component.html | 1 + apps/red-ui/src/assets/help-mode/links.json | 10 ++-------- libs/common-ui | 2 +- 5 files changed, 7 insertions(+), 10 deletions(-) diff --git a/apps/red-ui/src/app/modules/archive/screens/archived-dossiers-screen/archived-dossiers-screen.component.html b/apps/red-ui/src/app/modules/archive/screens/archived-dossiers-screen/archived-dossiers-screen.component.html index 520f31b7f..9a6716673 100644 --- a/apps/red-ui/src/app/modules/archive/screens/archived-dossiers-screen/archived-dossiers-screen.component.html +++ b/apps/red-ui/src/app/modules/archive/screens/archived-dossiers-screen/archived-dossiers-screen.component.html @@ -14,6 +14,8 @@ [noDataText]="'archived-dossiers-listing.no-data.title' | translate" [noMatchText]="'archived-dossiers-listing.no-match.title' | translate" [tableColumnConfigs]="tableColumnConfigs" + [hasScrollButton]="true" + [helpModeKey]="'dossier'" noDataIcon="red:folder" > diff --git a/apps/red-ui/src/app/modules/dossier-overview/screen/dossier-overview-screen.component.html b/apps/red-ui/src/app/modules/dossier-overview/screen/dossier-overview-screen.component.html index 7fbeff696..a5a8475d7 100644 --- a/apps/red-ui/src/app/modules/dossier-overview/screen/dossier-overview-screen.component.html +++ b/apps/red-ui/src/app/modules/dossier-overview/screen/dossier-overview-screen.component.html @@ -24,7 +24,7 @@ [showNoDataButton]="permissionsService.canUploadFiles(dossier)" [tableColumnConfigs]="tableColumnConfigs" [tableItemClasses]="{ disabled: disabledFn, 'last-opened': lastOpenedFn }" - iqserHelpMode="document-list" + [helpModeKey]="'documents'" > diff --git a/apps/red-ui/src/assets/help-mode/links.json b/apps/red-ui/src/assets/help-mode/links.json index 88b38f24c..d0d8aeda6 100644 --- a/apps/red-ui/src/assets/help-mode/links.json +++ b/apps/red-ui/src/assets/help-mode/links.json @@ -125,14 +125,8 @@ "it": "", "fr": "" }, - "documents_scroll_up_button": { - "en": "/en/index-en.html?contextId=documents_scroll_up_and_down", - "de": "", - "it": "", - "fr": "" - }, - "documents_scroll_down_button": { - "en": "/en/index-en.html?contextId=documents_scroll_up_and_down", + "scroll_documents_list": { + "en": "/en/index-en.html?contextId=scroll_documents_list", "de": "", "it": "", "fr": "" diff --git a/libs/common-ui b/libs/common-ui index c8b26771c..463e32916 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit c8b26771c217c82fdbc77c4f7b174ad4b348409e +Subproject commit 463e329163b9401a71cbe7734765d1f29cf333bb From 01a73565fc3a2c4f664689c0d6e9c6bb129260f8 Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Fri, 27 May 2022 21:15:36 +0200 Subject: [PATCH 02/18] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3295 -> 3296 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8e1d71729..62139061d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.506.0", + "version": "3.507.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index b0565e08b1aee64fb21da771e5b520c4378b527e..b66d1f9f9981d466d8d4927c4b23ea82065e942f 100644 GIT binary patch delta 3178 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 PUo8Ita)y}(08jt`FJLM% From c5465b8fb35999b29f4121af55352d81b7b97792 Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Tue, 31 May 2022 11:36:37 +0300 Subject: [PATCH 03/18] RED-3800 VW Load Guard adaptation and new processing states --- apps/red-ui/src/app/app-routing.module.ts | 4 ++-- apps/red-ui/src/app/translations/file-status-translations.ts | 3 +++ apps/red-ui/src/assets/config/config.json | 4 ++-- libs/red-domain/src/lib/files/file.model.ts | 4 +++- libs/red-domain/src/lib/files/types.ts | 5 +++++ 5 files changed, 15 insertions(+), 5 deletions(-) diff --git a/apps/red-ui/src/app/app-routing.module.ts b/apps/red-ui/src/app/app-routing.module.ts index 1ce33d29d..54a4e122b 100644 --- a/apps/red-ui/src/app/app-routing.module.ts +++ b/apps/red-ui/src/app/app-routing.module.ts @@ -95,9 +95,9 @@ const routes: Routes = [ }, { path: `:${DOSSIER_ID}/file/:${FILE_ID}`, - canActivate: [CompositeRouteGuard, WebViewerLoadedGuard], + canActivate: [CompositeRouteGuard], data: { - routeGuards: [DossierFilesGuard], + routeGuards: [DossierFilesGuard, WebViewerLoadedGuard], breadcrumbs: [BreadcrumbTypes.dossierTemplate, BreadcrumbTypes.dossier, BreadcrumbTypes.file], dossiersService: ACTIVE_DOSSIERS_SERVICE, }, diff --git a/apps/red-ui/src/app/translations/file-status-translations.ts b/apps/red-ui/src/app/translations/file-status-translations.ts index af4f7b0ac..1d3e07d00 100644 --- a/apps/red-ui/src/app/translations/file-status-translations.ts +++ b/apps/red-ui/src/app/translations/file-status-translations.ts @@ -24,4 +24,7 @@ export const processingFileStatusTranslations: { [key in ProcessingFileStatus]: REPROCESS: _('file-status.reprocess'), SURROUNDING_TEXT_PROCESSING: _('file-status.processing'), UNPROCESSED: _('file-status.unprocessed'), + PRE_PROCESSING: _('file-status.full-processing'), + PRE_PROCESSED: _('file-status.processed'), + PRE_PROCESSING_FAILED: _('file-status.error'), }; diff --git a/apps/red-ui/src/assets/config/config.json b/apps/red-ui/src/assets/config/config.json index f9a12cdad..322276d2f 100644 --- a/apps/red-ui/src/assets/config/config.json +++ b/apps/red-ui/src/assets/config/config.json @@ -1,7 +1,7 @@ { "ADMIN_CONTACT_NAME": null, "ADMIN_CONTACT_URL": null, - "API_URL": "https://dev-05.iqser.cloud/redaction-gateway-v1", + "API_URL": "https://dev-08.iqser.cloud/redaction-gateway-v1", "APP_NAME": "RedactManager", "AUTO_READ_TIME": 3, "BACKEND_APP_VERSION": "4.4.40", @@ -16,7 +16,7 @@ "MAX_RETRIES_ON_SERVER_ERROR": 3, "OAUTH_CLIENT_ID": "redaction", "OAUTH_IDP_HINT": null, - "OAUTH_URL": "https://dev-05.iqser.cloud/auth/realms/redaction", + "OAUTH_URL": "https://dev-08.iqser.cloud/auth/realms/redaction", "RECENT_PERIOD_IN_HOURS": 24, "SELECTION_MODE": "structural", "MANUAL_BASE_URL": "https://docs.redactmanager.com/preview" diff --git a/libs/red-domain/src/lib/files/file.model.ts b/libs/red-domain/src/lib/files/file.model.ts index 54d13b6d3..30d02bb63 100644 --- a/libs/red-domain/src/lib/files/file.model.ts +++ b/libs/red-domain/src/lib/files/file.model.ts @@ -104,7 +104,9 @@ export class File extends Entity implements IFile { this.numberOfAnalyses = file.numberOfAnalyses; this.processingStatus = file.processingStatus; this.workflowStatus = file.workflowStatus; - this.isError = this.processingStatus === ProcessingFileStatuses.ERROR; + this.isError = + this.processingStatus === ProcessingFileStatuses.ERROR || + this.processingStatus === ProcessingFileStatuses.PRE_PROCESSING_FAILED; this.isUnprocessed = this.processingStatus === ProcessingFileStatuses.UNPROCESSED; this.numberOfPages = this.isError ? 0 : file.numberOfPages ?? 0; this.rulesVersion = file.rulesVersion; diff --git a/libs/red-domain/src/lib/files/types.ts b/libs/red-domain/src/lib/files/types.ts index cde71691a..11b758caa 100644 --- a/libs/red-domain/src/lib/files/types.ts +++ b/libs/red-domain/src/lib/files/types.ts @@ -27,6 +27,9 @@ export const ProcessingFileStatuses = { REPROCESS: 'REPROCESS', SURROUNDING_TEXT_PROCESSING: 'SURROUNDING_TEXT_PROCESSING', UNPROCESSED: 'UNPROCESSED', + PRE_PROCESSING: 'PRE_PROCESSING', + PRE_PROCESSED: 'PRE_PROCESSED', + PRE_PROCESSING_FAILED: 'PRE_PROCESSING_FAILED', } as const; export type ProcessingFileStatus = keyof typeof ProcessingFileStatuses; @@ -42,6 +45,7 @@ export const isProcessingStatuses: List = [ ProcessingFileStatuses.PROCESSING, ProcessingFileStatuses.ANALYSE, ProcessingFileStatuses.FULL_PROCESSING, + ProcessingFileStatuses.PRE_PROCESSING, ] as const; export const isFullProcessingStatuses: List = [ @@ -53,6 +57,7 @@ export const isFullProcessingStatuses: List = [ ProcessingFileStatuses.NER_ANALYZING, ProcessingFileStatuses.OCR_PROCESSING, ProcessingFileStatuses.FULL_PROCESSING, + ProcessingFileStatuses.PRE_PROCESSING, ] as const; export interface StatusBarConfig { From acc1049fe7741f818fc8e7f0a9632f9652ffe682 Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Tue, 31 May 2022 10:39:44 +0200 Subject: [PATCH 04/18] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3296 -> 3297 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 62139061d..3c3e57929 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.507.0", + "version": "3.508.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index b66d1f9f9981d466d8d4927c4b23ea82065e942f..7b1a2e843e8ec16eb2df3341e2ead7f59df24d4d 100644 GIT binary patch delta 3211 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°{NOp8>0#I%|Dwd%QDjN-zT1A75*nDf}je*!%JA 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

;;mJuI4S^CFMY@oO7K3AL^;$#U zg=-N{ze~I$@>R?Hq(ANwWf=L1PSZ6A&hS<&CY*CIu4Vy0-h5b3)fKEl}kE!@0u0N>zBvDGD+l|tvQ-wLv zGw)#tsY*yZ3kCiF0g(6dRhC_lkM$55YxMsa@2YMltOsoU(wmK0S^-PzR zT?w{&b(y$_Ac>K?s*X^J0DnUDP1&KQcIVzw`};i_d-^g0=&j-`CI2Iw zMOT6SDYC?Y`L#*_NmMS|0y>~X0YQ) z*F{wLGwy__-6t=8=$+=>?ih@jd4*$u&XezH4BhYevcw*Rv-=L&p@5jCrTCzu)3`-H^J^EsV)m-{U1>@qfq_inB&r zcok&mKjL7QCd>G*H<}53%h$QgXJvlWI%KqEFd1PzWaBAyC&CNi4b3b6$QiXHzP;4H zMVI_qKjPQ=FBhnWhgFk`3M>0F@3;!`QfGn0%M#vXmD^XjU6t2Yd0my?SNUC4&{qXr z)vB*r$*Qt@RwIuvmvt@fGk^DaC%Qgvdv_AZ2k+{RxIgpCm{wJ zL`C*Ph~8X?zNbP|ROiWFaHM&o5btp*f`mAZ6puL{F~sb_y2jaQ^CW Date: Tue, 31 May 2022 16:03:57 +0300 Subject: [PATCH 05/18] RED-3765: use license endpoint --- apps/red-ui/src/app/app.module.ts | 2 + .../license-chart/license-chart.component.ts | 12 ++- .../license-screen.component.html | 4 +- .../license-screen.component.ts | 14 +-- .../license-select.component.html | 6 +- .../license-select.component.ts | 18 ++-- .../admin/screens/license/license.module.ts | 2 +- .../license/services/license.service.ts | 81 ----------------- .../admin/screens/license/utils/functions.ts | 9 +- .../admin/screens/license/utils/license.ts | 69 --------------- .../watermark-screen.component.ts | 20 ++++- .../file-preview/services/stamp.service.ts | 6 +- .../file-preview/utils/compare-mode.utils.ts | 16 +++- .../compare-file-input.component.ts | 6 +- .../pdf-viewer/services/pdf-viewer.service.ts | 8 +- .../src/app/services/license.service.ts | 88 +++++++++++++++++++ .../app/utils/configuration.initializer.ts | 3 + apps/red-ui/src/app/utils/page-stamper.ts | 80 ++++++++--------- libs/red-domain/src/index.ts | 1 + .../red-domain/src/lib/license}/date-range.ts | 0 libs/red-domain/src/lib/license/index.ts | 2 + libs/red-domain/src/lib/license/license.ts | 21 +++++ 22 files changed, 230 insertions(+), 238 deletions(-) delete mode 100644 apps/red-ui/src/app/modules/admin/screens/license/services/license.service.ts delete mode 100644 apps/red-ui/src/app/modules/admin/screens/license/utils/license.ts create mode 100644 apps/red-ui/src/app/services/license.service.ts rename {apps/red-ui/src/app/modules/admin/screens/license/utils => libs/red-domain/src/lib/license}/date-range.ts (100%) create mode 100644 libs/red-domain/src/lib/license/index.ts create mode 100644 libs/red-domain/src/lib/license/license.ts diff --git a/apps/red-ui/src/app/app.module.ts b/apps/red-ui/src/app/app.module.ts index 0e923f032..67aa30345 100644 --- a/apps/red-ui/src/app/app.module.ts +++ b/apps/red-ui/src/app/app.module.ts @@ -53,6 +53,7 @@ import { LoggerRulesService } from '@services/logger-rules.service'; import { ILoggerConfig } from '@red/domain'; import { SystemPreferencesService } from '@services/system-preferences.service'; import { PdfViewerModule } from './modules/pdf-viewer/pdf-viewer.module'; +import { LicenseService } from '@services/license.service'; export function httpLoaderFactory(httpClient: HttpClient, configService: ConfigService): PruningTranslationLoader { return new PruningTranslationLoader(httpClient, '/assets/i18n/', `.json?version=${configService.values.FRONTEND_APP_VERSION}`); @@ -181,6 +182,7 @@ const components = [AppComponent, AuthErrorComponent, NotificationsComponent, Sp LanguageService, UserService, UserPreferenceService, + LicenseService, ], }, { diff --git a/apps/red-ui/src/app/modules/admin/screens/license/license-chart/license-chart.component.ts b/apps/red-ui/src/app/modules/admin/screens/license/license-chart/license-chart.component.ts index 7be6657de..fcf188256 100644 --- a/apps/red-ui/src/app/modules/admin/screens/license/license-chart/license-chart.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/license/license-chart/license-chart.component.ts @@ -1,10 +1,8 @@ import { ChangeDetectionStrategy, Component } from '@angular/core'; import { LICENSE_STORAGE_KEY } from '../utils/constants'; import dayjs from 'dayjs'; -import { ILicenseReport } from '@red/domain'; -import { LicenseService } from '../services/license.service'; -import { IDateRange } from '../utils/date-range'; -import { ILicense } from '../utils/license'; +import { IDateRange, ILicense, ILicenseReport } from '@red/domain'; +import { LicenseService } from '../../../../../services/license.service'; import { switchMap, tap } from 'rxjs/operators'; import { List, LoadingService } from '@iqser/common-ui'; import { generateDateRanges, isCurrentMonth, toDate, verboseDate } from '../utils/functions'; @@ -35,7 +33,7 @@ export class LicenseChartComponent { const startYear: number = startDate.year(); const dateRanges = generateDateRanges(startMonth, startYear, endDate.month() as number, endDate.year() as number); - const reports = await this.#getReports(dateRanges); + const reports = await this.#getReports(dateRanges, license.id); return this.#mapRangesToReports(dateRanges, reports); } @@ -52,12 +50,12 @@ export class LicenseChartComponent { ]); } - #getReports(dateRanges: List) { + #getReports(dateRanges: List, id: string) { const reports = dateRanges.map(range => { const startMonth = range.startMonth + 1; const endMonth = range.endMonth + 1; - const key = `${startMonth}.${range.startYear}-${endMonth}.${range.endYear}`; + const key = `${id}-${startMonth}.${range.startYear}-${endMonth}.${range.endYear}`; const existingReport = this._licenseService.storedReports[key]; if (existingReport) { return existingReport; diff --git a/apps/red-ui/src/app/modules/admin/screens/license/license-screen/license-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/license/license-screen/license-screen.component.html index 5b18cfd15..046e5e489 100644 --- a/apps/red-ui/src/app/modules/admin/screens/license/license-screen/license-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/license/license-screen/license-screen.component.html @@ -9,7 +9,7 @@

-
+
{{ configService.values.BACKEND_APP_VERSION || '-' }}
@@ -34,7 +34,7 @@
-
+
diff --git a/apps/red-ui/src/app/modules/admin/screens/license/license-screen/license-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/license/license-screen/license-screen.component.ts index 1d749b7c5..68ab95b66 100644 --- a/apps/red-ui/src/app/modules/admin/screens/license/license-screen/license-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/license/license-screen/license-screen.component.ts @@ -5,11 +5,11 @@ import { ButtonConfig, IconButtonTypes, LoadingService } from '@iqser/common-ui' import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { UserService } from '@services/user.service'; import { RouterHistoryService } from '@services/router-history.service'; -import { LicenseService } from '../services/license.service'; -import { ILicenseReport } from '@red/domain'; +import { LicenseService } from '../../../../../services/license.service'; +import { ILicense, ILicenseReport } from '@red/domain'; import dayjs from 'dayjs'; -import { ILicense } from '../utils/license'; import { UserPreferenceService } from '@services/user-preference.service'; +import { firstValueFrom } from 'rxjs'; @Component({ templateUrl: './license-screen.component.html', @@ -30,7 +30,7 @@ export class LicenseScreenComponent implements OnInit { totalInfo: ILicenseReport = {}; unlicensedInfo: ILicenseReport = {}; analysisPercentageOfLicense = 100; - totalLicensedNumberOfPages = this.licenseService.processingPages; + totalLicensedNumberOfPages: number; constructor( readonly configService: ConfigService, @@ -44,8 +44,10 @@ export class LicenseScreenComponent implements OnInit { _loadingService.start(); } - ngOnInit() { - return this.loadLicenseData(this.licenseService.selectedLicense); + async ngOnInit() { + await firstValueFrom(this.licenseService.loadLicense()); + this.totalLicensedNumberOfPages = this.licenseService.processingPages; + await this.loadLicenseData(this.licenseService.selectedLicense); } async loadLicenseData(license: ILicense) { diff --git a/apps/red-ui/src/app/modules/admin/screens/license/license-select/license-select.component.html b/apps/red-ui/src/app/modules/admin/screens/license/license-select/license-select.component.html index 8e0ee84ac..1f258ddf8 100644 --- a/apps/red-ui/src/app/modules/admin/screens/license/license-select/license-select.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/license/license-select/license-select.component.html @@ -1,10 +1,10 @@ -
- +
+ - + diff --git a/apps/red-ui/src/app/modules/admin/screens/license/license-select/license-select.component.ts b/apps/red-ui/src/app/modules/admin/screens/license/license-select/license-select.component.ts index 6c088558d..ba71aa5a4 100644 --- a/apps/red-ui/src/app/modules/admin/screens/license/license-select/license-select.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/license/license-select/license-select.component.ts @@ -1,7 +1,8 @@ import { Component, EventEmitter, Output } from '@angular/core'; -import { LicenseService } from '../services/license.service'; -import { ILicense } from '../utils/license'; +import { LicenseService } from '../../../../../services/license.service'; +import { ILicense } from '@red/domain'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; +import { map, tap } from 'rxjs/operators'; const translations = { active: _('license-info-screen.status.active'), @@ -15,8 +16,15 @@ const translations = { }) export class LicenseSelectComponent { @Output() readonly valueChanges = new EventEmitter(); - - value = this.licenseService.getActiveLicense(); + value: ILicense; + licenses$ = this.licenseService.licenseData$.pipe( + map(data => data.licenses), + tap(() => { + if (!this.value) { + this.value = this.licenseService.activeLicense; + } + }), + ); constructor(readonly licenseService: LicenseService) {} @@ -26,6 +34,6 @@ export class LicenseSelectComponent { licenseChanged($event: ILicense) { this.valueChanges.emit($event); - this.licenseService.selectedLicense$.next($event); + this.licenseService.setSelectedLicense($event); } } diff --git a/apps/red-ui/src/app/modules/admin/screens/license/license.module.ts b/apps/red-ui/src/app/modules/admin/screens/license/license.module.ts index 8960051f5..998a40851 100644 --- a/apps/red-ui/src/app/modules/admin/screens/license/license.module.ts +++ b/apps/red-ui/src/app/modules/admin/screens/license/license.module.ts @@ -2,7 +2,7 @@ import { NgModule } from '@angular/core'; import { LicenseScreenComponent } from './license-screen/license-screen.component'; import { LicenseSelectComponent } from './license-select/license-select.component'; import { LicenseChartComponent } from './license-chart/license-chart.component'; -import { LicenseService } from './services/license.service'; +import { LicenseService } from '../../../../services/license.service'; import { RouterModule, Routes } from '@angular/router'; import { TranslateModule } from '@ngx-translate/core'; import { MatSelectModule } from '@angular/material/select'; diff --git a/apps/red-ui/src/app/modules/admin/screens/license/services/license.service.ts b/apps/red-ui/src/app/modules/admin/screens/license/services/license.service.ts deleted file mode 100644 index 047497f4e..000000000 --- a/apps/red-ui/src/app/modules/admin/screens/license/services/license.service.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { Injectable, Injector } from '@angular/core'; -import { GenericService, QueryParam, RequiredParam, Validate } from '@iqser/common-ui'; -import { ILicenseReport, ILicenseReportRequest } from '@red/domain'; -import { BehaviorSubject, firstValueFrom } from 'rxjs'; -import { ILicense, ILicenses, LICENSE_DATA } from '../utils/license'; -import { ConfigService } from '../../../../../services/config.service'; -import dayjs from 'dayjs'; -import { getStoredReports } from '../utils/functions'; - -@Injectable() -export class LicenseService extends GenericService { - storedReports = getStoredReports(); - readonly licenseData = this.#licenseData; - readonly activeLicenseId = this.licenseData.activeLicense; - readonly selectedLicense$ = new BehaviorSubject(this.getActiveLicense()); - - constructor(protected readonly _injector: Injector, private readonly _configService: ConfigService) { - super(_injector, 'report'); - } - - get selectedLicense() { - return this.selectedLicense$.value; - } - - get processingPages() { - const processingPagesFeature = this.selectedLicense$.value.features.find(f => f.name === 'processingPages'); - return Number(processingPagesFeature.value ?? '0'); - } - - get #licenseData(): ILicenses { - return { - ...LICENSE_DATA, - licenses: [ - ...LICENSE_DATA.licenses, - { - id: 'guid-0', - name: this._configService.values.LICENSE_CUSTOMER, - product: 'RedactManager', - licensedTo: this._configService.values.LICENSE_CUSTOMER, - licensedToEmail: this._configService.values.LICENSE_EMAIL, - validFrom: dayjs(this._configService.values.LICENSE_START, 'DD-MM-YYYY').toISOString(), - validUntil: dayjs(this._configService.values.LICENSE_END, 'DD-MM-YYYY').toISOString(), - features: [ - { - name: 'pdftron', - type: 'STRING', - value: 'base64 encoded pdftron webviewer license key', - }, - { - name: 'processingPages', - type: 'NUMBER', - value: this._configService.values.LICENSE_PAGE_COUNT.toString(), - }, - ], - }, - ], - }; - } - - getActiveLicense() { - return this.licenseData.licenses.find(license => license.id === this.activeLicenseId); - } - - @Validate() - getReport$(@RequiredParam() body: ILicenseReportRequest, limit?: number, offset?: number) { - const queryParams: QueryParam[] = []; - if (limit) { - queryParams.push({ key: 'limit', value: limit }); - } - - if (offset) { - queryParams.push({ key: 'offset', value: offset }); - } - - return this._post(body, `${this._defaultModelPath}/license`, queryParams); - } - - getReport(body: ILicenseReportRequest, limit?: number, offset?: number) { - return firstValueFrom(this.getReport$(body, limit, offset)); - } -} diff --git a/apps/red-ui/src/app/modules/admin/screens/license/utils/functions.ts b/apps/red-ui/src/app/modules/admin/screens/license/utils/functions.ts index ea346cb6c..bf8a7829d 100644 --- a/apps/red-ui/src/app/modules/admin/screens/license/utils/functions.ts +++ b/apps/red-ui/src/app/modules/admin/screens/license/utils/functions.ts @@ -1,7 +1,5 @@ import dayjs from 'dayjs'; -import { IDateRange } from './date-range'; -import { LICENSE_STORAGE_KEY } from './constants'; -import { ILicenseReport } from '@red/domain'; +import { IDateRange } from '@red/domain'; export function toDate(month: number, year: number) { return dayjs(`01-${month}-${year}`, 'DD-M-YYYY').toDate(); @@ -27,11 +25,6 @@ export function generateDateRanges(month: number, year: number, endMonth: number return dates; } -export function getStoredReports() { - const rawStoredReports = localStorage.getItem(LICENSE_STORAGE_KEY); - return JSON.parse(rawStoredReports ?? '{}') as Record; -} - export function isCurrentMonth(month: number, year: number) { const now = dayjs(); const currentMonth = now.month() + 1; diff --git a/apps/red-ui/src/app/modules/admin/screens/license/utils/license.ts b/apps/red-ui/src/app/modules/admin/screens/license/utils/license.ts deleted file mode 100644 index 5d525ee42..000000000 --- a/apps/red-ui/src/app/modules/admin/screens/license/utils/license.ts +++ /dev/null @@ -1,69 +0,0 @@ -export interface ILicenseFeature { - readonly name: string; - readonly type: string; - readonly value: string; -} - -export interface ILicense { - readonly id: string; - readonly name: string; - readonly product: string; - readonly licensedTo: string; - readonly licensedToEmail: string; - readonly validFrom: string; - readonly validUntil: string; - readonly features: readonly ILicenseFeature[]; -} - -export interface ILicenses { - readonly activeLicense: string; - readonly licenses: readonly ILicense[]; -} - -export const LICENSE_DATA: ILicenses = { - activeLicense: 'guid-0', - licenses: [ - { - id: 'guid-1', - name: '1 Year cumulative (2022)', - product: 'RedactManager', - licensedTo: 'Customer company name 1', - licensedToEmail: 'customer@example.com', - validFrom: '2022-01-01T00:00:00.000Z', - validUntil: '2022-12-31T23:59:59.999Z', - features: [ - { - name: 'pdftron', - type: 'STRING', - value: 'base64 encoded pdftron webviewer license key', - }, - { - name: 'processingPages', - type: 'NUMBER', - value: '200000', - }, - ], - }, - { - id: 'guid-2', - name: '2 Year cumulative (2021)', - product: 'RedactManager', - licensedTo: 'Customer company name 2', - licensedToEmail: 'customer@example.com', - validFrom: '2021-01-01T00:00:00.000Z', - validUntil: '2021-12-31T23:59:59.999Z', - features: [ - { - name: 'pdftron', - type: 'STRING', - value: 'base64 encoded pdftron webviewer license key', - }, - { - name: 'processingPages', - type: 'NUMBER', - value: '100000', - }, - ], - }, - ], -}; 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 26ff136f2..d79206942 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 @@ -1,18 +1,18 @@ import { ChangeDetectorRef, Component, ElementRef, Inject, OnInit, ViewChild } from '@angular/core'; import { PermissionsService } from '@services/permissions.service'; import WebViewer, { WebViewerInstance } from '@pdftron/webviewer'; -import { environment } from '@environments/environment'; import { HttpClient } from '@angular/common/http'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { Debounce, IconButtonTypes, LoadingService, Toaster } from '@iqser/common-ui'; import { DOSSIER_TEMPLATE_ID, IWatermark, WatermarkOrientation, WatermarkOrientations } from '@red/domain'; -import { BASE_HREF, BASE_HREF_FN, BaseHrefFn } from '../../../../../tokens'; +import { BASE_HREF_FN, BaseHrefFn } from '../../../../../tokens'; import { stampPDFPage } from '@utils/page-stamper'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; 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'; export const DEFAULT_WATERMARK: IWatermark = { text: null, @@ -44,6 +44,7 @@ export class WatermarkScreenComponent implements OnInit { private readonly _formBuilder: FormBuilder, readonly permissionsService: PermissionsService, private readonly _loadingService: LoadingService, + private readonly _licenseService: LicenseService, @Inject(BASE_HREF_FN) private readonly _convertPath: BaseHrefFn, private readonly _watermarkService: WatermarkService, private readonly _changeDetectorRef: ChangeDetectorRef, @@ -125,7 +126,7 @@ export class WatermarkScreenComponent implements OnInit { if (!this._instance) { WebViewer( { - licenseKey: environment.licenseKey ? atob(environment.licenseKey) : null, + licenseKey: this._licenseService.activeLicenseKey, path: this._convertPath('/assets/wv-resources'), css: this._convertPath('/assets/pdftron/stylesheet.css'), fullAPI: true, @@ -169,7 +170,18 @@ export class WatermarkScreenComponent implements OnInit { const opacity: number = this.form.get('opacity').value; const color: string = this.form.get('hexColor').value; - await stampPDFPage(document, pdfNet, text, fontSize, fontType, orientation, opacity, color, [1]); + await stampPDFPage( + document, + pdfNet, + text, + fontSize, + fontType, + orientation, + opacity, + color, + [1], + this._licenseService.activeLicenseKey, + ); this._instance.Core.documentViewer.refreshAll(); this._instance.Core.documentViewer.updateView([0], 0); this._changeDetectorRef.detectChanges(); diff --git a/apps/red-ui/src/app/modules/file-preview/services/stamp.service.ts b/apps/red-ui/src/app/modules/file-preview/services/stamp.service.ts index 82f7805c1..5f629fd30 100644 --- a/apps/red-ui/src/app/modules/file-preview/services/stamp.service.ts +++ b/apps/red-ui/src/app/modules/file-preview/services/stamp.service.ts @@ -9,6 +9,7 @@ import { firstValueFrom } from 'rxjs'; import { WatermarkService } from '@services/entity-services/watermark.service'; import { PdfViewer } from '../../pdf-viewer/services/pdf-viewer.service'; import { REDDocumentViewer } from '../../pdf-viewer/services/document-viewer.service'; +import { LicenseService } from '../../../services/license.service'; import PDFNet = Core.PDFNet; @Injectable() @@ -21,6 +22,7 @@ export class StampService { private readonly _viewModeService: ViewModeService, private readonly _translateService: TranslateService, private readonly _watermarkService: WatermarkService, + private readonly _licenseService: LicenseService, ) {} async stampPDF(): Promise { @@ -33,7 +35,7 @@ export class StampService { const allPages = [...Array(file.numberOfPages).keys()].map(page => page + 1); try { - await clearStamps(pdfDoc, this._pdf.PDFNet, allPages); + await clearStamps(pdfDoc, this._pdf.PDFNet, allPages, this._licenseService.activeLicenseKey); } catch (e) { console.error('Error clearing stamps: ', e); return; @@ -63,6 +65,7 @@ export class StampService { 50, '#dd4d50', excludedPages, + this._licenseService.activeLicenseKey, ); } } @@ -79,6 +82,7 @@ export class StampService { watermark.opacity, watermark.hexColor, Array.from({ length: await document.getPageCount() }, (x, i) => i + 1), + this._licenseService.activeLicenseKey, ); } } diff --git a/apps/red-ui/src/app/modules/file-preview/utils/compare-mode.utils.ts b/apps/red-ui/src/app/modules/file-preview/utils/compare-mode.utils.ts index ea5d62117..61bdeccda 100644 --- a/apps/red-ui/src/app/modules/file-preview/utils/compare-mode.utils.ts +++ b/apps/red-ui/src/app/modules/file-preview/utils/compare-mode.utils.ts @@ -7,6 +7,7 @@ export const processPage = async ( document2: Core.PDFNet.PDFDoc, mergedDocument: Core.PDFNet.PDFDoc, pdfNet: typeof Core.PDFNet, + licenseKey: string, ) => { const document1PageCount = await document1.getPageCount(); @@ -19,7 +20,16 @@ export const processPage = async ( const blankPage = await mergedDocument.pageCreate(await pageToCopy.getCropBox()); await blankPage.setRotation(await pageToCopy.getRotation()); await mergedDocument.pagePushBack(blankPage); - await stampPDFPage(mergedDocument, pdfNet, '<< Compare Placeholder Page >>', 20, 'courier', 'DIAGONAL', 33, '#ffb83b', [ - await mergedDocument.getPageCount(), - ]); + await stampPDFPage( + mergedDocument, + pdfNet, + '<< Compare Placeholder Page >>', + 20, + 'courier', + 'DIAGONAL', + 33, + '#ffb83b', + [await mergedDocument.getPageCount()], + licenseKey, + ); }; diff --git a/apps/red-ui/src/app/modules/pdf-viewer/components/compare-file-input/compare-file-input.component.ts b/apps/red-ui/src/app/modules/pdf-viewer/components/compare-file-input/compare-file-input.component.ts index 99e3e961e..59f9ab9b0 100644 --- a/apps/red-ui/src/app/modules/pdf-viewer/components/compare-file-input/compare-file-input.component.ts +++ b/apps/red-ui/src/app/modules/pdf-viewer/components/compare-file-input/compare-file-input.component.ts @@ -12,6 +12,7 @@ import { firstValueFrom } from 'rxjs'; import { MatDialogRef } from '@angular/material/dialog'; import { processPage } from '../../../file-preview/utils/compare-mode.utils'; import { NGXLogger } from 'ngx-logger'; +import { LicenseService } from '@services/license.service'; import PDFDoc = Core.PDFNet.PDFDoc; @Component({ @@ -28,6 +29,7 @@ export class CompareFileInputComponent { private readonly _loadingService: LoadingService, private readonly _documentViewer: REDDocumentViewer, private readonly _filesMapService: FilesMapService, + private readonly _licenseService: LicenseService, private readonly _dialogService: SharedDialogService, private readonly _viewerHeaderService: ViewerHeaderService, ) {} @@ -113,8 +115,8 @@ export class CompareFileInputComponent { const maxPageCount = Math.max(await current.getPageCount(), await compare.getPageCount()); for (let idx = 1; idx <= maxPageCount; idx++) { - await processPage(idx, current, compare, merged, pdfNet); - await processPage(idx, compare, current, merged, pdfNet); + await processPage(idx, current, compare, merged, pdfNet, this._licenseService.activeLicenseKey); + await processPage(idx, compare, current, merged, pdfNet, this._licenseService.activeLicenseKey); } const buffer = await merged.saveMemoryBuffer(pdfNet.SDFDoc.SaveOptions.e_linearized); 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 4927ea785..b27acefef 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 @@ -1,6 +1,5 @@ import { Inject, Injectable, Injector } from '@angular/core'; import WebViewer, { Core, WebViewerInstance, WebViewerOptions } from '@pdftron/webviewer'; -import { environment } from '@environments/environment'; import { BASE_HREF_FN, BaseHrefFn } from '../../../tokens'; import { File, IHeaderElement } from '@red/domain'; import { ErrorService, shareDistinctLast } from '@iqser/common-ui'; @@ -14,6 +13,7 @@ import { Rgb } from '../utils/types'; import { asList } from '../utils/functions'; import { REDAnnotationManager } from './annotation-manager.service'; import { TranslateService } from '@ngx-translate/core'; +import { LicenseService } from '@services/license.service'; import TextTool = Core.Tools.TextTool; import Annotation = Core.Annotations.Annotation; import TextHighlightAnnotation = Core.Annotations.TextHighlightAnnotation; @@ -52,6 +52,7 @@ export class PdfViewer { private readonly _logger: NGXLogger, private readonly _injector: Injector, private readonly _activatedRoute: ActivatedRoute, + private readonly _licenseService: LicenseService, private readonly _translateService: TranslateService, private readonly _annotationManager: REDAnnotationManager, @Inject(BASE_HREF_FN) private readonly _convertPath: BaseHrefFn, @@ -127,7 +128,8 @@ export class PdfViewer { async init(htmlElement: HTMLElement) { this.#instance = await this.#getInstance(htmlElement); - await this.PDFNet.initialize(environment.licenseKey ? window.atob(environment.licenseKey) : null); + + await this.PDFNet.initialize(this._licenseService.activeLicenseKey); this._logger.info('[PDF] Initialized'); this.documentViewer = this.#instance.Core.documentViewer; @@ -271,7 +273,7 @@ export class PdfViewer { #getInstance(htmlElement: HTMLElement) { const options: WebViewerOptions = { - licenseKey: environment.licenseKey ? window.atob(environment.licenseKey) : null, + licenseKey: this._licenseService.activeLicenseKey, fullAPI: true, path: this._convertPath('/assets/wv-resources'), css: this._convertPath('/assets/pdftron/stylesheet.css'), diff --git a/apps/red-ui/src/app/services/license.service.ts b/apps/red-ui/src/app/services/license.service.ts new file mode 100644 index 000000000..bbc30a2db --- /dev/null +++ b/apps/red-ui/src/app/services/license.service.ts @@ -0,0 +1,88 @@ +import { Injectable, Injector } from '@angular/core'; +import { GenericService, QueryParam, RequiredParam, Validate } from '@iqser/common-ui'; +import { ILicense, ILicenseReport, ILicenseReportRequest, ILicenses } from '@red/domain'; +import { BehaviorSubject, firstValueFrom, Observable } from 'rxjs'; +import { ConfigService } from './config.service'; +import { filter, tap } from 'rxjs/operators'; +import { LICENSE_STORAGE_KEY } from '../modules/admin/screens/license/utils/constants'; + +export function getStoredReports() { + const rawStoredReports = localStorage.getItem(LICENSE_STORAGE_KEY); + return JSON.parse(rawStoredReports ?? '{}') as Record; +} + +@Injectable({ + providedIn: 'root', +}) +export class LicenseService extends GenericService { + storedReports = getStoredReports(); + readonly licenseData$: Observable; + readonly selectedLicense$: Observable; + activeLicenseId: string; + readonly #licenseData$ = new BehaviorSubject(undefined); + readonly #selectedLicense$ = new BehaviorSubject(undefined); + + constructor(protected readonly _injector: Injector, private readonly _configService: ConfigService) { + super(_injector, 'report'); + this.selectedLicense$ = this.#selectedLicense$.pipe(filter(license => !!license)); + this.licenseData$ = this.#licenseData$.pipe( + filter(licenses => !!licenses), + tap(data => (this.activeLicenseId = data.activeLicense)), + ); + } + + get selectedLicense() { + return this.#selectedLicense$.value; + } + + get processingPages() { + const processingPagesFeature = this.#selectedLicense$.value?.features?.find(f => f.name === 'processingPages'); + return Number(processingPagesFeature?.value ?? '0'); + } + + get activeLicense() { + if (!this.#licenseData$.value) { + return undefined; + } + + const { licenses, activeLicense: activeLicenseId } = this.#licenseData$.value; + return licenses.find(license => license.id === activeLicenseId); + } + + get activeLicenseKey(): string { + return this.activeLicense.features.find(f => f.name === 'pdftron').value; + } + + setDefaultSelectedLicense() { + this.setSelectedLicense(this.activeLicense); + } + + @Validate() + getReport$(@RequiredParam() body: ILicenseReportRequest, limit?: number, offset?: number) { + const queryParams: QueryParam[] = []; + if (limit) { + queryParams.push({ key: 'limit', value: limit }); + } + + if (offset) { + queryParams.push({ key: 'offset', value: offset }); + } + + return this._post(body, `${this._defaultModelPath}/license`, queryParams); + } + + getReport(body: ILicenseReportRequest, limit?: number, offset?: number) { + return firstValueFrom(this.getReport$(body, limit, offset)); + } + + loadLicense() { + return this._http.get('/license').pipe( + tap(licenses => this.#licenseData$.next(licenses)), + tap(() => this.setDefaultSelectedLicense()), + ); + } + + setSelectedLicense($event: ILicense) { + this.#selectedLicense$.next($event); + } +} diff --git a/apps/red-ui/src/app/utils/configuration.initializer.ts b/apps/red-ui/src/app/utils/configuration.initializer.ts index e60a1cdf6..1710b8e14 100644 --- a/apps/red-ui/src/app/utils/configuration.initializer.ts +++ b/apps/red-ui/src/app/utils/configuration.initializer.ts @@ -9,6 +9,7 @@ import { UserPreferenceService } from '@services/user-preference.service'; import { UserService } from '@services/user.service'; import { FeaturesService } from '@services/features.service'; import { SystemPreferencesService } from '@services/system-preferences.service'; +import { LicenseService } from '@services/license.service'; function lastDossierTemplateRedirect(baseHref: string, userPreferenceService: UserPreferenceService) { const url = window.location.href.split('/').filter(s => s.length > 0); @@ -29,6 +30,7 @@ export function configurationInitializer( languageService: LanguageService, userService: UserService, userPreferenceService: UserPreferenceService, + licenseService: LicenseService, ) { return () => firstValueFrom( @@ -53,6 +55,7 @@ export function configurationInitializer( }), switchMap(() => languageService.chooseAndSetInitialLanguage()), tap(() => userService.initialize()), + switchMap(() => licenseService.loadLicense()), take(1), ), ); diff --git a/apps/red-ui/src/app/utils/page-stamper.ts b/apps/red-ui/src/app/utils/page-stamper.ts index b139afe00..0efc57e5f 100644 --- a/apps/red-ui/src/app/utils/page-stamper.ts +++ b/apps/red-ui/src/app/utils/page-stamper.ts @@ -1,5 +1,4 @@ import { hexToRgb } from './functions'; -import { environment } from '@environments/environment'; import { Core } from '@pdftron/webviewer'; import PDFDoc = Core.PDFNet.PDFDoc; @@ -25,15 +24,12 @@ function convertFont(type: string): number { return 4; } -export async function clearStamps(document: PDFDoc, pdfNet: typeof Core.PDFNet, pages: number[]) { - await pdfNet.runWithCleanup( - async () => { - await document.lock(); - const pageSet = await createPageSet(pdfNet, pages); - await pdfNet.Stamper.deleteStamps(document, pageSet); - }, - environment.licenseKey ? atob(environment.licenseKey) : null, - ); +export async function clearStamps(document: PDFDoc, pdfNet: typeof Core.PDFNet, pages: number[], licenseKey: string) { + await pdfNet.runWithCleanup(async () => { + await document.lock(); + const pageSet = await createPageSet(pdfNet, pages); + await pdfNet.Stamper.deleteStamps(document, pageSet); + }, licenseKey); } export async function stampPDFPage( @@ -46,43 +42,41 @@ export async function stampPDFPage( opacity: number, color: string, pages: number[], + licenseKey: string, ) { - await pdfNet.runWithCleanup( - async () => { - await document.lock(); + await pdfNet.runWithCleanup(async () => { + await document.lock(); - const pageSet = await createPageSet(pdfNet, pages); - await pdfNet.Stamper.deleteStamps(document, pageSet); + const pageSet = await createPageSet(pdfNet, pages); + await pdfNet.Stamper.deleteStamps(document, pageSet); - const rgbColor = hexToRgb(color); + const rgbColor = hexToRgb(color); - const stamper = await pdfNet.Stamper.create(3, fontSize, 0); - await stamper.setFontColor(await pdfNet.ColorPt.init(rgbColor.r / 255, rgbColor.g / 255, rgbColor.b / 255)); - await stamper.setOpacity(opacity / 100); + const stamper = await pdfNet.Stamper.create(3, fontSize, 0); + await stamper.setFontColor(await pdfNet.ColorPt.init(rgbColor.r / 255, rgbColor.g / 255, rgbColor.b / 255)); + await stamper.setOpacity(opacity / 100); - switch (orientation) { - case 'VERTICAL': - await stamper.setAlignment(0, 0); - await stamper.setRotation(-90); - break; - case 'HORIZONTAL': - break; - case 'TOP_LEFT': - await stamper.setAlignment(-1, 1); - await stamper.setRotation(90); - await stamper.setPosition(20, 20); - break; - case 'DIAGONAL': - default: - await stamper.setAlignment(0, 0); - await stamper.setRotation(-45); - } + switch (orientation) { + case 'VERTICAL': + await stamper.setAlignment(0, 0); + await stamper.setRotation(-90); + break; + case 'HORIZONTAL': + break; + case 'TOP_LEFT': + await stamper.setAlignment(-1, 1); + await stamper.setRotation(90); + await stamper.setPosition(20, 20); + break; + case 'DIAGONAL': + default: + await stamper.setAlignment(0, 0); + await stamper.setRotation(-45); + } - const font = await pdfNet.Font.createAndEmbed(document, convertFont(fontType)); - await stamper.setFont(font); - await stamper.setTextAlignment(0); - await stamper.stampText(document, text, pageSet); - }, - environment.licenseKey ? atob(environment.licenseKey) : null, - ); + const font = await pdfNet.Font.createAndEmbed(document, convertFont(fontType)); + await stamper.setFont(font); + await stamper.setTextAlignment(0); + await stamper.stampText(document, text, pageSet); + }, licenseKey); } diff --git a/libs/red-domain/src/index.ts b/libs/red-domain/src/index.ts index bd2f2a0df..31a7e92e8 100644 --- a/libs/red-domain/src/index.ts +++ b/libs/red-domain/src/index.ts @@ -24,3 +24,4 @@ export * from './lib/dossier-state'; export * from './lib/trash'; export * from './lib/text-highlight'; export * from './lib/permissions'; +export * from './lib/license'; diff --git a/apps/red-ui/src/app/modules/admin/screens/license/utils/date-range.ts b/libs/red-domain/src/lib/license/date-range.ts similarity index 100% rename from apps/red-ui/src/app/modules/admin/screens/license/utils/date-range.ts rename to libs/red-domain/src/lib/license/date-range.ts diff --git a/libs/red-domain/src/lib/license/index.ts b/libs/red-domain/src/lib/license/index.ts new file mode 100644 index 000000000..3a4eb8ba2 --- /dev/null +++ b/libs/red-domain/src/lib/license/index.ts @@ -0,0 +1,2 @@ +export * from './date-range'; +export * from './license'; diff --git a/libs/red-domain/src/lib/license/license.ts b/libs/red-domain/src/lib/license/license.ts new file mode 100644 index 000000000..add1048c9 --- /dev/null +++ b/libs/red-domain/src/lib/license/license.ts @@ -0,0 +1,21 @@ +export interface ILicenseFeature { + readonly name: string; + readonly type: string; + readonly value: string; +} + +export interface ILicense { + readonly id: string; + readonly name: string; + readonly product: string; + readonly licensedTo: string; + readonly licensedToEmail: string; + readonly validFrom: string; + readonly validUntil: string; + readonly features: readonly ILicenseFeature[]; +} + +export interface ILicenses { + readonly activeLicense: string; + readonly licenses: readonly ILicense[]; +} From e36e813ec9a0720b8ffd58e6bdb7eecfd57499ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Tue, 31 May 2022 16:07:15 +0300 Subject: [PATCH 06/18] RED-4074: Archived dossiers flag in search --- .../modules/search/search-screen/search-screen.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/red-ui/src/app/modules/search/search-screen/search-screen.component.html b/apps/red-ui/src/app/modules/search/search-screen/search-screen.component.html index d365cacf3..89d1de2b1 100644 --- a/apps/red-ui/src/app/modules/search/search-screen/search-screen.component.html +++ b/apps/red-ui/src/app/modules/search/search-screen/search-screen.component.html @@ -76,7 +76,7 @@
- + {{ item.dossierName }}
From d267880f1dd2574d85d269a3306b0f9217dfcd49 Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Tue, 31 May 2022 15:09:39 +0200 Subject: [PATCH 07/18] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3297 -> 3294 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3c3e57929..3f4ad4722 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.508.0", + "version": "3.509.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index 7b1a2e843e8ec16eb2df3341e2ead7f59df24d4d..3f6aa282933a58ce260a2ff95266b7278875631b 100644 GIT binary patch delta 3206 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 wpw8u7&gERr Date: Tue, 31 May 2022 16:21:26 +0300 Subject: [PATCH 08/18] RED-4070: Save router history in local storage --- apps/red-ui/src/app/services/router-history.service.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/red-ui/src/app/services/router-history.service.ts b/apps/red-ui/src/app/services/router-history.service.ts index 62fc4177a..7da5297b0 100644 --- a/apps/red-ui/src/app/services/router-history.service.ts +++ b/apps/red-ui/src/app/services/router-history.service.ts @@ -2,16 +2,19 @@ import { Injectable } from '@angular/core'; import { NavigationEnd, Router } from '@angular/router'; import { filter } from 'rxjs/operators'; +const LAST_DOSSIERS_SCREEN = 'routerHistory_lastDossiersScreen'; + @Injectable({ providedIn: 'root', }) export class RouterHistoryService { - private _lastDossiersScreen = '/'; + private _lastDossiersScreen = localStorage.getItem(LAST_DOSSIERS_SCREEN); constructor(private readonly _router: Router) { this._router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe((event: NavigationEnd) => { if (event.url.includes('/dossiers') || event.url.includes('/archive')) { this._lastDossiersScreen = event.url; + localStorage.setItem(LAST_DOSSIERS_SCREEN, this._lastDossiersScreen); } }); } From ad94d227a8d5ad80985061fd262daaa8810126ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Tue, 31 May 2022 16:23:21 +0300 Subject: [PATCH 09/18] RED-4081: Manual icon change --- paligo-styles/homepage.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/paligo-styles/homepage.scss b/paligo-styles/homepage.scss index 3d7614e88..29009b95d 100644 --- a/paligo-styles/homepage.scss +++ b/paligo-styles/homepage.scss @@ -49,12 +49,12 @@ /* Einleitung */ .cat-panel-1:before { - content: '\f277'; + content: '\f007'; } /* Workflow */ .cat-panel-2:before { - content: '\f0c1'; + content: '\f085'; } /* Voraussetzungen */ From e856ec1eb352562633f9c33994a9dd25d3a140f1 Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Tue, 31 May 2022 15:25:41 +0200 Subject: [PATCH 10/18] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3294 -> 3292 bytes paligo-theme/paligo-styles/redacto-theme.css | 4 ++-- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 3f4ad4722..b04bbd0f5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.509.0", + "version": "3.510.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index 3f6aa282933a58ce260a2ff95266b7278875631b..10a81505fae5c4e3e390def5c0fb23c2759222da 100644 GIT binary patch delta 3145 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 Date: Tue, 31 May 2022 17:30:15 +0300 Subject: [PATCH 11/18] RED-4086: Keep manual redactions flag --- .../file-name-column.component.html | 21 ------------------- .../file-name-column.component.scss | 18 ---------------- .../file-name-column.component.ts | 21 ------------------- .../file-name-column.component.ts | 1 + .../model/file-upload.model.ts | 1 + .../services/file-upload.service.ts | 14 +++++++++++-- .../upload-download-dialog.service.ts | 15 +++++++++++++ apps/red-ui/src/assets/i18n/de.json | 8 +++++++ apps/red-ui/src/assets/i18n/en.json | 14 +++++++++---- 9 files changed, 47 insertions(+), 66 deletions(-) delete mode 100644 apps/red-ui/src/app/modules/dossier-overview/components/table-item/file-name-column/file-name-column.component.html delete mode 100644 apps/red-ui/src/app/modules/dossier-overview/components/table-item/file-name-column/file-name-column.component.scss delete mode 100644 apps/red-ui/src/app/modules/dossier-overview/components/table-item/file-name-column/file-name-column.component.ts diff --git a/apps/red-ui/src/app/modules/dossier-overview/components/table-item/file-name-column/file-name-column.component.html b/apps/red-ui/src/app/modules/dossier-overview/components/table-item/file-name-column/file-name-column.component.html deleted file mode 100644 index f6b15ff1b..000000000 --- a/apps/red-ui/src/app/modules/dossier-overview/components/table-item/file-name-column/file-name-column.component.html +++ /dev/null @@ -1,21 +0,0 @@ -
-
- {{ file.filename }} -
-
- -
-
- - {{ primaryAttribute }} - -
-
- - diff --git a/apps/red-ui/src/app/modules/dossier-overview/components/table-item/file-name-column/file-name-column.component.scss b/apps/red-ui/src/app/modules/dossier-overview/components/table-item/file-name-column/file-name-column.component.scss deleted file mode 100644 index 6d6ea372d..000000000 --- a/apps/red-ui/src/app/modules/dossier-overview/components/table-item/file-name-column/file-name-column.component.scss +++ /dev/null @@ -1,18 +0,0 @@ -@use 'common-mixins'; - -.table-item-title { - max-width: 25vw; - - &.error { - color: var(--iqser-red-1); - } - - &.initial-processing { - color: var(--iqser-disabled); - } -} - -.primary-attribute { - padding-top: 6px; - @include common-mixins.line-clamp(1); -} diff --git a/apps/red-ui/src/app/modules/dossier-overview/components/table-item/file-name-column/file-name-column.component.ts b/apps/red-ui/src/app/modules/dossier-overview/components/table-item/file-name-column/file-name-column.component.ts deleted file mode 100644 index 742dfbe9f..000000000 --- a/apps/red-ui/src/app/modules/dossier-overview/components/table-item/file-name-column/file-name-column.component.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { ChangeDetectionStrategy, Component, Input, OnChanges } from '@angular/core'; -import { File } from '@red/domain'; -import { PrimaryFileAttributeService } from '@services/primary-file-attribute.service'; - -@Component({ - selector: 'redaction-file-name-column', - templateUrl: './file-name-column.component.html', - styleUrls: ['./file-name-column.component.scss'], - changeDetection: ChangeDetectionStrategy.OnPush, -}) -export class FileNameColumnComponent implements OnChanges { - @Input() file: File; - @Input() dossierTemplateId: string; - primaryAttribute: string; - - constructor(private readonly _primaryFileAttributeService: PrimaryFileAttributeService) {} - - ngOnChanges() { - this.primaryAttribute = this._primaryFileAttributeService.getPrimaryFileAttributeValue(this.file, this.dossierTemplateId); - } -} diff --git a/apps/red-ui/src/app/modules/shared/components/file-name-column/file-name-column.component.ts b/apps/red-ui/src/app/modules/shared/components/file-name-column/file-name-column.component.ts index c2e92358e..3e25b142e 100644 --- a/apps/red-ui/src/app/modules/shared/components/file-name-column/file-name-column.component.ts +++ b/apps/red-ui/src/app/modules/shared/components/file-name-column/file-name-column.component.ts @@ -10,6 +10,7 @@ interface PartialFile { readonly excludedPages: number[]; readonly lastOCRTime?: string; readonly fileAttributes: FileAttributes; + readonly lastManualChangeDate?: string; } @Component({ diff --git a/apps/red-ui/src/app/modules/upload-download/model/file-upload.model.ts b/apps/red-ui/src/app/modules/upload-download/model/file-upload.model.ts index 0c8d4bc9b..561e892a8 100644 --- a/apps/red-ui/src/app/modules/upload-download/model/file-upload.model.ts +++ b/apps/red-ui/src/app/modules/upload-download/model/file-upload.model.ts @@ -9,4 +9,5 @@ export interface FileUploadModel { typeError: boolean; dossierId?: string; dossierName?: string; + keepManualRedactions?: boolean; } 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 27a4dc1b3..b9cb5c432 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 @@ -106,6 +106,14 @@ export class FileUploadService extends GenericService impleme file.sizeError = true; } } + + let keepManualRedactions = false; + const manualChangesFiles = files.filter(f => dossierFiles.find(pf => pf.filename === f.file.name && !!pf.lastManualChangeDate)); + if (manualChangesFiles.length > 0) { + keepManualRedactions = await this._dialogService.keepManualRedactions(); + manualChangesFiles.forEach(f => (f.keepManualRedactions = keepManualRedactions)); + } + this.files.push(...files); files.forEach(newFile => { this._addFileToGroup(newFile); @@ -139,9 +147,11 @@ export class FileUploadService extends GenericService impleme } @Validate() - uploadFileForm(@RequiredParam() dossierId: string, file?: Blob) { + uploadFileForm(@RequiredParam() dossierId: string, keepManualRedactions = false, file?: Blob) { const formParams = new FormData(); + formParams.append('keepManualRedactions', keepManualRedactions.toString()); + if (file !== undefined) { formParams.append('file', file); } @@ -190,7 +200,7 @@ export class FileUploadService extends GenericService impleme private _createSubscription(uploadFile: FileUploadModel) { this.activeUploads++; - const obs = this.uploadFileForm(uploadFile.dossierId, uploadFile.file); + const obs = this.uploadFileForm(uploadFile.dossierId, uploadFile.keepManualRedactions, uploadFile.file); return obs.subscribe( event => { if (event.type === HttpEventType.UploadProgress) { diff --git a/apps/red-ui/src/app/modules/upload-download/services/upload-download-dialog.service.ts b/apps/red-ui/src/app/modules/upload-download/services/upload-download-dialog.service.ts index dfde1956a..ac272ac5e 100644 --- a/apps/red-ui/src/app/modules/upload-download/services/upload-download-dialog.service.ts +++ b/apps/red-ui/src/app/modules/upload-download/services/upload-download-dialog.service.ts @@ -2,6 +2,8 @@ import { Injectable } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { OverwriteFilesDialogComponent } from '../dialogs/overwrite-files-dialog/overwrite-files-dialog.component'; import { firstValueFrom } from 'rxjs'; +import { ConfirmationDialogComponent, ConfirmationDialogInput } from '@iqser/common-ui'; +import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; const dialogConfig = { width: '662px', @@ -21,4 +23,17 @@ export class UploadDownloadDialogService { return firstValueFrom(ref.afterClosed()).then(res => res || { cancel: true }); } + + keepManualRedactions(): Promise { + const data = new ConfirmationDialogInput({ + title: _('confirmation-dialog.keep-manual-redactions.title'), + question: _('confirmation-dialog.keep-manual-redactions.question'), + confirmationText: _('confirmation-dialog.keep-manual-redactions.confirmation-text'), + denyText: _('confirmation-dialog.keep-manual-redactions.deny-text'), + }); + + const ref = this._dialog.open(ConfirmationDialogComponent, { ...dialogConfig, data }); + + return firstValueFrom(ref.afterClosed()); + } } diff --git a/apps/red-ui/src/assets/i18n/de.json b/apps/red-ui/src/assets/i18n/de.json index d61b6a10a..0fe59eedb 100644 --- a/apps/red-ui/src/assets/i18n/de.json +++ b/apps/red-ui/src/assets/i18n/de.json @@ -577,6 +577,12 @@ "title": "{count, plural, one{{justificationName}} other{ausgewählte Begründungen}} löschen" }, "input-label": "Bitte geben Sie unten Folgendes ein, um fortzufahren", + "keep-manual-redactions": { + "confirmation-text": "", + "deny-text": "", + "question": "", + "title": "" + }, "report-template-same-name": { "confirmation-text": "Ja. Hochladen fortsetzen", "deny-text": "Nein. Hochladen abbrechen", @@ -1448,11 +1454,13 @@ "labels": { "download-cleanup-download-files-hours": "", "download-cleanup-not-download-files-hours": "", + "remove-digital-signature-on-upload": "", "soft-delete-cleanup-time": "" }, "placeholders": { "download-cleanup-download-files-hours": "", "download-cleanup-not-download-files-hours": "", + "remove-digital-signature-on-upload": "", "soft-delete-cleanup-time": "" }, "title": "" diff --git a/apps/red-ui/src/assets/i18n/en.json b/apps/red-ui/src/assets/i18n/en.json index c459ef314..4c475d256 100644 --- a/apps/red-ui/src/assets/i18n/en.json +++ b/apps/red-ui/src/assets/i18n/en.json @@ -577,6 +577,12 @@ "title": "Delete {count, plural, one{{justificationName}} other{Selected Justifications}}" }, "input-label": "To proceed please type below", + "keep-manual-redactions": { + "confirmation-text": "Keep", + "deny-text": "Clear", + "question": "At least one of the files you're overwriting has manual changes, do you wish to keep them?", + "title": "Keep Manual Redactions?" + }, "report-template-same-name": { "confirmation-text": "Yes. Continue upload", "deny-text": "No. Cancel Upload", @@ -1448,14 +1454,14 @@ "labels": { "download-cleanup-download-files-hours": "Cleanup time for downloaded files (hours)", "download-cleanup-not-download-files-hours": "Cleanup time for not downloaded files (hours)", - "soft-delete-cleanup-time": "Soft delete cleanup time (hours)", - "remove-digital-signature-on-upload": "Remove Digital Signature on Upload" + "remove-digital-signature-on-upload": "Remove Digital Signature on Upload", + "soft-delete-cleanup-time": "Soft delete cleanup time (hours)" }, "placeholders": { "download-cleanup-download-files-hours": "(hours)", "download-cleanup-not-download-files-hours": "(hours)", - "soft-delete-cleanup-time": "(hours)", - "remove-digital-signature-on-upload": "True / False" + "remove-digital-signature-on-upload": "True / False", + "soft-delete-cleanup-time": "(hours)" }, "title": "System Preferences" }, From cb87f57721187a5badbc4251823a44bdbb78b60f Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Tue, 31 May 2022 16:32:35 +0200 Subject: [PATCH 12/18] chore(release) --- package.json | 2 +- paligo-theme.tar.gz | Bin 3292 -> 3292 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b04bbd0f5..73c84809b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.510.0", + "version": "3.511.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index 10a81505fae5c4e3e390def5c0fb23c2759222da..75639ce4b3bb976943aa08c1ce8c8992c61958e6 100644 GIT binary patch delta 3203 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 Date: Tue, 31 May 2022 17:35:30 +0300 Subject: [PATCH 13/18] RED-3800: fix license load --- apps/red-ui/src/app/utils/configuration.initializer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/red-ui/src/app/utils/configuration.initializer.ts b/apps/red-ui/src/app/utils/configuration.initializer.ts index 1710b8e14..cbdaea949 100644 --- a/apps/red-ui/src/app/utils/configuration.initializer.ts +++ b/apps/red-ui/src/app/utils/configuration.initializer.ts @@ -55,7 +55,7 @@ export function configurationInitializer( }), switchMap(() => languageService.chooseAndSetInitialLanguage()), tap(() => userService.initialize()), - switchMap(() => licenseService.loadLicense()), + tap(() => firstValueFrom(licenseService.loadLicense())), take(1), ), ); From 4a6acc130d950e0c6b63dee59d4ba7227ddd1c31 Mon Sep 17 00:00:00 2001 From: Atlassian Bamboo Date: Tue, 31 May 2022 16:37:50 +0200 Subject: [PATCH 14/18] 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 73c84809b..64c3b7d5a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redaction", - "version": "3.511.0", + "version": "3.512.0", "private": true, "license": "MIT", "scripts": { diff --git a/paligo-theme.tar.gz b/paligo-theme.tar.gz index 75639ce4b3bb976943aa08c1ce8c8992c61958e6..6eadd3e5cfd86d138d5dd3a41773f909e7fafe67 100644 GIT binary patch delta 3203 zcmV-}41Dw48QmF>d4IQBub$bC9XP9JDELvZ8I-1GxI*ZsnCic=EOq(IkDA?Qr2bgi z@Ob%qp5vb7|5KEs@~=pYBPQFHQC)x799+OFe@gzI>)L)Nf8P$)Apce1JI|2)aY;3o z|8x1jic(zFgrUnnfBTiSxqNZ)itfvzVyLOItIL$Jvfe&_o_`cMtCzc?*kuHlv|dKV z{y8Xw`|AYnX?FklA4`(|>KmNbTgq^@xZ9=dmA&w6`-Q#m#cv>fSK@aqemC&zh(3|f5!-D@lA57R3Ng) zZ>>8TvlL+2whC;EaKj4zT^2QEw1Aq5WSG%643ADBiJ$XOB}~E-vIy@`0cD`K?zyj4({cTLl9NN2*;~xF%o)u z0MEtgOn=IYRj|BET#=l;Fw!42Rn4o)g651=23@eZHi-ZBJQB8P@ka97pg?i#$AN%! z@oG7cyJ|Pvw{JEQ%fsMD4)@J6^O*USu{UUpmI%HIX_V{f=tD0F+ zN~NdO%#i&!!T?-`P0&Vh-F*6V4egAv9)D@943UQGKYl8M+8rkRIBJ*r2uxKze|Z2; z)mU970-ZVh09GoDqj^dy%0|5F>%mz){|tRe^Ndi|Js&ct@&wFwc5w9@pRW^L$-o8O+0Z_64cP zB+;8`QTjcw-xhUE0bRg_ksdBAw|_gFu@T6dNs#ME0eRc(c}Rmo2$w@pQO=b;`ZA`h zsD`>~PijjLjj)77Axbk!-v3J?3Jap)!BYm&@(@{PdL1|iMf^%iyng=!NUG*KG=wv~ zCOq83`CSG$;t_e1i@|o|0}j9W)4%`m&l+8&@4s&nx+CbT3e+RN9zvU54S#{8NY7NP ziquWUref$MfPd?DoE*S`V%o*6(*5<0!m*{NI5JP~GI^Q+(VgA;zKbT4bF_VHB|n%5 zS05Xasy@CsY|tgwO{ zII5a`SQ~x6qJ>FOFcI9=z$W>n=AS|(j>|+#`&$UdpzCd;5UpP*gMMvJI6!nNQ9P_9 zv5;1N$Gh1>Z3Uf0gJsdz zHAtweD9{c8lvtBt)`+BX&}vn?5U6wQ1#&&{J$5A^$c!$G`#GrjQ-pvNvYGYoozJta1!{UpTTdSJ{C!yLmWDs@lED_LdRXx-@ z@UeE{BpP{lxXO7$9Dl~PhQM74^KFrMXs|Lc6`W#tsP$Q^C8Pc|0V9GLUu3`zeC4_; zV28WmJOReo%bRPp`|E~Aw-$tKOc=h_kSn{bUB6vL?ja^sb49Jm-RX1!N0@j!vNc5R_qGH?jgi6ZLl`jg;NJ_ zw-6PCw-h{2hlzFo<4B)#VvNNEt~%egW}@dnOCdfu3V+SSfb;J9tu4-=Fv} z>Ldy?&Y(`hSbWetPdIU!$JkyZYkm;qb)j>P-&mvNsKsI39^k0w65445zA(SlQk`~~ z)1o}ee;g%7K1rPtvP!9+K;-zDQs+vHKybtlP$7gH()GcB^c_B#cxlN2KMgkmdC9l6 zItU#PGk=n(q3P71CObB~OY3F~KMu(66IoV7Xt~So%d|gk5;_pbnRvSdr1JLVaFD8Y z{sDN=8_KYFYt<=^i@U?A$-xYB8!>Ud6ezgz`THHkLxwcS+cjM5o{)*b!%Xm~N*gs` z8ua8z#*raU+3%eOt8yy`-#(R7?tzU6SBys5iGPrK+BZy*F65!b;8Y1Bca;z7wSufmyUI--<>p;A%PJ~81)1_rsf~{U% zChj3fV&tx>r0MY0lXj?*6do#oP<>N&sDG*5xwq8*evihUzKj5Rt2j%^{|IN%RbYRL zEOB6dtrCDzPa@yG^@z8h66yAXOD6S38$J4xnl$#tou-jUH#&b&*Z#|b{>)dc#X;LqSi~6C1(LR94_jbU+ds0hCUBB#%Q)lQwYKDIsH88#&tf$Wd3HO>@%6GQC%`1S(gjs;o; zeB;OQuSb)Czm+)lxN%1x3P?0C|35f%Q7 zJ0WWK$%`L)r+K$K24iMk;TWLvVxmr0#PIWAfGac!^j%a)sio(SH_R1sVE} zIM}7hGXCq0W z__hAa1*+j;)uf`r%Kpqdu7bSOSs?MUgg05`_Em0I<@HrwSLOFrepeOrRY6y^>Z?|= zs_dTC$Ro^UU5oq7ecp+#k9^zSodoj1ySgLp5BPv~yv57F=OjrUiOY5iiV%^s$U4CnC5|Y&-y(atek8EP z(`FuOi>4Qj)C)}qoXs4;j+tNLIHvgy0Jy+!XFUr_$nth@FMk|@s2WB%UR8^c(9;8W zE>34sUVp5D6+RN?9UnzTU0{Ec3e7BAIxieAlX2!?gxda8hDx!t8BuI zMwp9Wf{X!QCARKnU@A|1Y7=Wn! zkd?K*_BdA3G#l+7afwfE6ajX&Qp0M>3Yukjm?$rDGHX?K+7k@ifsLF1ko`sL+%fMw zpMMdlf9T05%gAE(P_Sl^s9{Cajvb2X31}evBt)>$jz0;X)?PggE5+uGZLC;TF^P%_ zw^kigfmGZWJqGg$sVL^p-OLPZyp^;zGpBB{@mlQ{*`w4UqZ%Z?_bRi;ZxdS8%!*Pf zJ*{Sj?8gxX;4*B2Hj3-!)2C}_XN>hoV}E6cG+h7jQyJ9mFyY5hyVOTus`B~E19+;& z>M{}N%;5*HQehm;Q&Lej;$2@4&g%JR=u4Vsgt8{zq0gRQECI3wB#_K4=)V@#ZITstgR$=9*iF!n{R=R=sUbIe2a`iQql56KKsfeI58?}wH|!m$_J1UQ z{{xp9vdXGRXf^=m&!Gi?;V7+Wlrp+Ap%hF)NxUA)H%*i#O@1rl5Pke=8Vk1{|7A#W zn3?8?M{XT~MM$b7d;fiu5~#1y*J9`54>-p=Qq_Zb)>HGi{-&Sj>mtiw9?r8bNJS=z z-b{E^d|XuXhxVEj`7Nd3u-0(*%g_?AG^PG?|>E?OQAP!9=+F z*pO89k)GQkI-0d3GzFWQal5KmU%t1739EC z)$GIC==&8dOp1bu;I;-f$uBkk6e@9CCR*CxLO2FpZySYZ{X!Y^YjeT@qEm_DVI_%$ zwDLRN%?`3mlS6L)nHd3S&{wd5CtcrVRFwB(uf`1P(5~*%1w8Qtxqodd=qws6i@vTw zLS;pPb_k%vnhdi>B$b0!tJ;M?oog?U>xm!V)XUu>2vEQys*N~`gs~igZtGjfj_V1a z3*YE3RD%5Ocn_Ry3`R!WB&$qbx0W3}+*`;FWDB ziEU`(%nBkB+-L-}>MjN*$;Ngx!tWujEAC`txbZ?mqia+w+1ReS093%)+$@mRg=aX9 zmXN6}0<5!gR=%#6O^d6)Sq~T|nq1Ko-58pIu1uoTp_%*A8njb6IX~Rh&`f> zDrtV(a>a3jSbvjIO0sfa#N=R>1ox$v;?}OFF$wYH{_jE6>!^Zw9lCaHZ*X;WWC>ks z9ohwQtpk$Al%+K14G=(nTLB6@SQKBs$9W9?9X=lh*eXeXGO8o>P$Ip~HS7HQ$BYuDiA>5Fz4+f;~@X5qWOAh#HxDm)pzOB_k z=y;fsM1KuUrv^3IvEf}>H)Hs5Kz^UdvLZsuU3Ool{c)4ffk4j0+a(~Cw=ai-RJHRD zz>D5chQ(W}PH|k^9ZpRSW|-TEiSwmE!IjV7?ht40+0a?=)DITRHglshn~TY(%(XG}2Cl)PK{yVTyDi4=o1A+Um82z6;kPo_?2j zN93!P`AL7=CCV`J6P>1)$OtNR4Zv*0gO=RtasJ+Q zhSZR6VvaPy>QKX;STgdD4AFX;%#*zH0qfyExQtI_3AQl z4?z+mcU2`#hp(QrLzSfPPyvMMo3cYq?SIa_rS|uGH1_mm1khW>SxWv#IE$_V`%`3z z1M_Q@0F-(X`Sz_xy#16&w;xa6v#?eWgADZvP2e|)WRrtq5>V(-Vd7Z7(W&??{? zKaPJrnhYdYYRos7WV3Rso9+BgCXEK@31^ja9T>6zOe8pFoOM8(9IV;FZ5P?1eHotR zYkp9(pIaD{ufE4i#Nv@F6laaL@P8`E(0|0i zE=`v4UvD%M`j)SAna|4nsCCF_%V09XddS98>Q00g!W)`b{*g0kNql>$e~T{pwSL5} z^D4qhY-EF z5PeUDsHo19z2HdmMj_tgQUnQc94Q`iK4OU3gLRFw)8 Date: Tue, 31 May 2022 21:36:47 +0300 Subject: [PATCH 15/18] RED-4084 - Finish the clone dossier template UI --- .../src/app/modules/admin/admin.module.ts | 6 +- ...ne-dossier-template-dialog.component.html} | 18 ++--- ...ne-dossier-template-dialog.component.scss} | 0 ...lone-dossier-template-dialog.component.ts} | 64 ++++++++++++++---- ...one-dossier-template-dialog.component.html | 23 ------- ...one-dossier-template-dialog.component.scss | 0 ...clone-dossier-template-dialog.component.ts | 66 ------------------- ...sier-templates-listing-screen.component.ts | 2 +- .../dossier-template-info-screen.component.ts | 2 +- .../admin/services/admin-dialog.service.ts | 14 ++-- .../dossier-template-actions.component.html | 4 +- .../dossier-template-actions.component.ts | 8 +-- apps/red-ui/src/assets/i18n/de.json | 32 ++++----- apps/red-ui/src/assets/i18n/en.json | 32 ++++----- 14 files changed, 106 insertions(+), 165 deletions(-) rename apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/{add-edit-dossier-template-dialog.component.html => add-edit-clone-dossier-template-dialog.component.html} (81%) rename apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/{add-edit-dossier-template-dialog.component.scss => add-edit-clone-dossier-template-dialog.component.scss} (100%) rename apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/{add-edit-dossier-template-dialog.component.ts => add-edit-clone-dossier-template-dialog.component.ts} (69%) delete mode 100644 apps/red-ui/src/app/modules/admin/dialogs/clone-dossier-template-dialog/clone-dossier-template-dialog.component.html delete mode 100644 apps/red-ui/src/app/modules/admin/dialogs/clone-dossier-template-dialog/clone-dossier-template-dialog.component.scss delete mode 100644 apps/red-ui/src/app/modules/admin/dialogs/clone-dossier-template-dialog/clone-dossier-template-dialog.component.ts diff --git a/apps/red-ui/src/app/modules/admin/admin.module.ts b/apps/red-ui/src/app/modules/admin/admin.module.ts index 89a4a2435..cd31df82a 100644 --- a/apps/red-ui/src/app/modules/admin/admin.module.ts +++ b/apps/red-ui/src/app/modules/admin/admin.module.ts @@ -11,7 +11,7 @@ import { UserListingScreenComponent } from './screens/user-listing/user-listing- import { DossierTemplateBreadcrumbsComponent } from './components/dossier-template-breadcrumbs/dossier-template-breadcrumbs.component'; import { ColorPickerModule } from 'ngx-color-picker'; import { AddEditFileAttributeDialogComponent } from './dialogs/add-edit-file-attribute-dialog/add-edit-file-attribute-dialog.component'; -import { AddEditDossierTemplateDialogComponent } from './dialogs/add-edit-dossier-template-dialog/add-edit-dossier-template-dialog.component'; +import { AddEditCloneDossierTemplateDialogComponent } from './dialogs/add-edit-dossier-template-dialog/add-edit-clone-dossier-template-dialog.component'; import { AddEntityDialogComponent } from './dialogs/add-entity-dialog/add-entity-dialog.component'; import { EditColorDialogComponent } from './dialogs/edit-color-dialog/edit-color-dialog.component'; import { AdminDialogService } from './services/admin-dialog.service'; @@ -41,15 +41,13 @@ import { AddEditDossierStateDialogComponent } from './dialogs/add-edit-dossier-s import { A11yModule } from '@angular/cdk/a11y'; import { ConfirmDeleteDossierStateDialogComponent } from './dialogs/confirm-delete-dossier-state-dialog/confirm-delete-dossier-state-dialog.component'; import { BaseEntityScreenComponent } from './base-entity-screen/base-entity-screen.component'; -import { CloneDossierTemplateDialogComponent } from './dialogs/clone-dossier-template-dialog/clone-dossier-template-dialog.component'; import { AdminSideNavComponent } from './admin-side-nav/admin-side-nav.component'; import { SystemPreferencesFormComponent } from './screens/general-config/system-preferences-form/system-preferences-form.component'; const dialogs = [ - AddEditDossierTemplateDialogComponent, + AddEditCloneDossierTemplateDialogComponent, AddEntityDialogComponent, AddEditFileAttributeDialogComponent, - CloneDossierTemplateDialogComponent, EditColorDialogComponent, SmtpAuthDialogComponent, AddEditUserDialogComponent, diff --git a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-dossier-template-dialog.component.html b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-clone-dossier-template-dialog.component.html similarity index 81% rename from apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-dossier-template-dialog.component.html rename to apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-clone-dossier-template-dialog.component.html index a5d11d920..149a08ad1 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-dossier-template-dialog.component.html +++ b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-clone-dossier-template-dialog.component.html @@ -1,19 +1,19 @@
- +
- +