From c7658527d5f94c6ed720a10f6e527dee5e72b425 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Thu, 16 May 2024 23:38:32 +0300 Subject: [PATCH] RED-6143: Redo dossier template settings / dialogs --- .../src/app/modules/admin/admin.module.ts | 4 +- ...one-dossier-template-dialog.component.html | 53 ++++++ ...one-dossier-template-dialog.component.scss | 0 ...clone-dossier-template-dialog.component.ts | 101 ++++++++++ ...one-dossier-template-dialog.component.html | 162 ---------------- ...one-dossier-template-dialog.component.scss | 58 ------ ...clone-dossier-template-dialog.component.ts | 173 ----------------- ...sier-templates-listing-screen.component.ts | 2 +- .../dossier-template-details.component.html | 54 ++++++ .../dossier-template-details.component.scss | 20 ++ .../dossier-template-details.component.ts | 36 ++++ ...ossier-template-info-screen.component.html | 150 +++++++++++++++ ...ossier-template-info-screen.component.scss | 44 +++++ .../dossier-template-info-screen.component.ts | 139 ++++++++++++++ .../info/dossier-template-info.module.ts | 11 +- ...ossier-template-info-screen.component.html | 46 ----- ...ossier-template-info-screen.component.scss | 33 ---- .../dossier-template-info-screen.component.ts | 34 ---- .../admin/services/admin-dialog.service.ts | 10 +- .../dossier-template-actions.component.html | 4 +- .../dossier-template-actions.component.ts | 12 +- .../add-dossier-dialog.component.html | 4 +- .../add-dossier-dialog.component.ts | 2 +- .../dossier-templates.service.ts | 10 +- apps/red-ui/src/assets/i18n/redact/de.json | 176 ++++++++++-------- apps/red-ui/src/assets/i18n/redact/en.json | 11 +- apps/red-ui/src/assets/i18n/scm/de.json | 176 ++++++++++-------- apps/red-ui/src/assets/i18n/scm/en.json | 11 +- libs/common-ui | 2 +- .../dossier-template.model.ts | 4 - 30 files changed, 848 insertions(+), 694 deletions(-) create mode 100644 apps/red-ui/src/app/modules/admin/dialogs/add-clone-dossier-template-dialog/add-clone-dossier-template-dialog.component.html create mode 100644 apps/red-ui/src/app/modules/admin/dialogs/add-clone-dossier-template-dialog/add-clone-dossier-template-dialog.component.scss create mode 100644 apps/red-ui/src/app/modules/admin/dialogs/add-clone-dossier-template-dialog/add-clone-dossier-template-dialog.component.ts delete mode 100644 apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-clone-dossier-template-dialog.component.html delete mode 100644 apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-clone-dossier-template-dialog.component.scss delete mode 100644 apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-clone-dossier-template-dialog.component.ts create mode 100644 apps/red-ui/src/app/modules/admin/screens/info/dossier-template-details/dossier-template-details.component.html create mode 100644 apps/red-ui/src/app/modules/admin/screens/info/dossier-template-details/dossier-template-details.component.scss create mode 100644 apps/red-ui/src/app/modules/admin/screens/info/dossier-template-details/dossier-template-details.component.ts create mode 100644 apps/red-ui/src/app/modules/admin/screens/info/dossier-template-info-screen/dossier-template-info-screen.component.html create mode 100644 apps/red-ui/src/app/modules/admin/screens/info/dossier-template-info-screen/dossier-template-info-screen.component.scss create mode 100644 apps/red-ui/src/app/modules/admin/screens/info/dossier-template-info-screen/dossier-template-info-screen.component.ts delete mode 100644 apps/red-ui/src/app/modules/admin/screens/info/info-screen/dossier-template-info-screen.component.html delete mode 100644 apps/red-ui/src/app/modules/admin/screens/info/info-screen/dossier-template-info-screen.component.scss delete mode 100644 apps/red-ui/src/app/modules/admin/screens/info/info-screen/dossier-template-info-screen.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 b0f171a0f..f34a45611 100644 --- a/apps/red-ui/src/app/modules/admin/admin.module.ts +++ b/apps/red-ui/src/app/modules/admin/admin.module.ts @@ -8,7 +8,6 @@ import { EntitiesListingScreenComponent } from './screens/entities-listing/entit import { DigitalSignatureScreenComponent } from './screens/digital-signature/digital-signature-screen.component'; import { UserListingScreenComponent } from './screens/user-listing/user-listing-screen.component'; import { DossierTemplateBreadcrumbsComponent } from './shared/components/dossier-template-breadcrumbs/dossier-template-breadcrumbs.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'; @@ -57,9 +56,10 @@ import { DossierTemplateActionsComponent } from './shared/components/dossier-tem import { IqserUsersModule } from '@iqser/common-ui/lib/users'; import { SelectComponent } from '@shared/components/select/select.component'; import { PaginationComponent } from '@common-ui/pagination/pagination.component'; +import { AddCloneDossierTemplateDialogComponent } from './dialogs/add-clone-dossier-template-dialog/add-clone-dossier-template-dialog.component'; const dialogs = [ - AddEditCloneDossierTemplateDialogComponent, + AddCloneDossierTemplateDialogComponent, AddEntityDialogComponent, EditColorDialogComponent, SmtpAuthDialogComponent, diff --git a/apps/red-ui/src/app/modules/admin/dialogs/add-clone-dossier-template-dialog/add-clone-dossier-template-dialog.component.html b/apps/red-ui/src/app/modules/admin/dialogs/add-clone-dossier-template-dialog/add-clone-dossier-template-dialog.component.html new file mode 100644 index 000000000..622e8ed32 --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/dialogs/add-clone-dossier-template-dialog/add-clone-dossier-template-dialog.component.html @@ -0,0 +1,53 @@ +
+
+ +
+
+
+ + +
+ +
+ + +
+
+ +
+ + + + + +
+
+ + +
diff --git a/apps/red-ui/src/app/modules/admin/dialogs/add-clone-dossier-template-dialog/add-clone-dossier-template-dialog.component.scss b/apps/red-ui/src/app/modules/admin/dialogs/add-clone-dossier-template-dialog/add-clone-dossier-template-dialog.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/apps/red-ui/src/app/modules/admin/dialogs/add-clone-dossier-template-dialog/add-clone-dossier-template-dialog.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/add-clone-dossier-template-dialog/add-clone-dossier-template-dialog.component.ts new file mode 100644 index 000000000..f3805d392 --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/dialogs/add-clone-dossier-template-dialog/add-clone-dossier-template-dialog.component.ts @@ -0,0 +1,101 @@ +import { HttpStatusCode } from '@angular/common/http'; +import { Component, Inject } from '@angular/core'; +import { Validators } from '@angular/forms'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; +import { BaseDialogComponent, getConfig, SaveOptions } from '@iqser/common-ui'; +import { DossierTemplate } from '@red/domain'; +import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service'; +import { Router } from '@angular/router'; + +export interface CloneTemplateData { + dossierTemplateId?: string; +} + +@Component({ + templateUrl: './add-clone-dossier-template-dialog.component.html', + styleUrls: ['./add-clone-dossier-template-dialog.component.scss'], +}) +export class AddCloneDossierTemplateDialogComponent extends BaseDialogComponent { + readonly dossierTemplate?: DossierTemplate; + readonly isDocumine = getConfig().IS_DOCUMINE; + readonly translateParams: { type: string; dossierTemplateName?: string }; + + constructor( + private readonly _dossierTemplatesService: DossierTemplatesService, + private readonly _router: Router, + protected readonly _dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) readonly data: CloneTemplateData, + ) { + super(_dialogRef); + this.dossierTemplate = this._dossierTemplatesService.find(this.data.dossierTemplateId); + + this.translateParams = { + type: this.dossierTemplate ? 'clone' : 'create', + dossierTemplateName: this.dossierTemplate?.name, + }; + + this.form = this.#getForm(); + this.initialFormValue = this.form.getRawValue(); + } + + override get disabled(): boolean { + // Ignore 'changed' value, doesn't make sense in this context + return !this.valid || this._hasErrors(); + } + + async save(options?: SaveOptions): Promise { + let dossierTemplate: DossierTemplate; + this._loadingService.start(); + const body = { + ...this.dossierTemplate, + ...this.form.getRawValue(), + }; + try { + if (this.dossierTemplate) { + dossierTemplate = await this._dossierTemplatesService.clone(this.dossierTemplate.id, body); + } else { + dossierTemplate = await this._dossierTemplatesService.createOrUpdate(body); + } + if (options?.nextAction) { + await this._router.navigate([dossierTemplate.routerLink]); + } + this._dialogRef.close(true); + } catch (error) { + if (error.status === HttpStatusCode.Conflict) { + this._toaster.error(_('add-edit-clone-dossier-template.error.conflict'), { error }); + } else { + this._toaster.rawError(error.error.message); + } + } + this._loadingService.stop(); + } + + #getForm() { + return this._formBuilder.group({ + name: [this.dossierTemplate ? this.#getCloneName(this.dossierTemplate) : undefined, Validators.required], + description: [this.dossierTemplate?.description], + }); + } + + #getCloneName(initialTemplate: DossierTemplate): string { + const templateName = initialTemplate.name.trim(); + let nameOfClonedTemplate: string = templateName.split('Copy of ').filter(n => n)[0]; + nameOfClonedTemplate = nameOfClonedTemplate.split(/\(\s*\d+\s*\)$/)[0].trim(); + const allTemplatesNames = this._dossierTemplatesService.all.map(t => t.name); + + let clonesCount = 0; + for (const name of allTemplatesNames) { + const splitName = name.split(nameOfClonedTemplate); + const suffixRegExp = new RegExp(/^\(\s*\d+\s*\)$/); + if (splitName[0] === 'Copy of ' && (splitName[1].trim().match(suffixRegExp) || splitName[1] === '')) { + clonesCount++; + } + } + + if (clonesCount >= 1) { + return `Copy of ${nameOfClonedTemplate} (${clonesCount})`; + } + return `Copy of ${nameOfClonedTemplate}`; + } +} diff --git a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-clone-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 deleted file mode 100644 index e48d987f3..000000000 --- a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-clone-dossier-template-dialog.component.html +++ /dev/null @@ -1,162 +0,0 @@ -
-
- -
-
-
- - -
- -
- - -
- -
-
- - {{ 'add-edit-clone-dossier-template.form.valid-from' | translate }} - - - - {{ 'add-edit-clone-dossier-template.form.valid-to' | translate }} - -
- -
-
- - - - - - - -
- -
- - - - - - - -
-
-
- -
-

- {{ 'add-edit-clone-dossier-template.form.apply-updates-default.heading' | translate }} -

-
- - {{ 'add-edit-clone-dossier-template.form.apply-updates-default.description' | translate }} - -
-
- -
-
-

{{ 'download-includes' | translate }}

- -
- -
-
- -
-

- {{ 'add-edit-clone-dossier-template.form.upload-settings.heading' | translate }} -

-
- - {{ 'add-edit-clone-dossier-template.form.upload-settings.ocr-by-default' | translate }} - -
-
- - {{ 'add-edit-clone-dossier-template.form.upload-settings.remove-watermark' | translate }} - -
-
-
- -
-

{{ 'add-edit-clone-dossier-template.form.hidden-text.heading' | translate }}

-
-
- - {{ 'add-edit-clone-dossier-template.form.hidden-text.title' | translate }} - -
{{ 'add-edit-clone-dossier-template.form.hidden-text.description' | translate }}
-
-
- - {{ 'add-edit-clone-dossier-template.form.image-metadata.title' | translate }} - -
{{ 'add-edit-clone-dossier-template.form.image-metadata.description' | translate }}
-
-
- - {{ 'add-edit-clone-dossier-template.form.overlapping-elements.title' | translate }} - -
- {{ 'add-edit-clone-dossier-template.form.overlapping-elements.description' | translate }} -
-
-
-
-
- -
- - - -
-
- - -
diff --git a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-clone-dossier-template-dialog.component.scss b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-clone-dossier-template-dialog.component.scss deleted file mode 100644 index fc21cb238..000000000 --- a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-clone-dossier-template-dialog.component.scss +++ /dev/null @@ -1,58 +0,0 @@ -.validity { - width: 230px; - display: flex; - - > div { - display: flex; - flex-direction: column; - margin-top: 16px; - - mat-checkbox { - margin-right: 16px; - height: 100%; - align-items: center; - display: flex; - min-height: 42px; - } - - .iqser-input-group { - min-height: 42px; - justify-content: center; - } - } -} - -redaction-select { - flex: 1; -} - -.download-includes { - margin: 16px 0 10px; - font-weight: 500; -} - -.hidden-elements { - display: flex; - gap: 40px; - - .iqser-input-group { - margin-top: 0; - flex: 1; - - mat-checkbox { - font-weight: 500; - } - - .info { - margin-left: 24px; - } - } -} - -.half-flex-basis { - flex-basis: 50%; -} - -.pl-75 { - padding: 0 0 0 75px; -} diff --git a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-clone-dossier-template-dialog.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-clone-dossier-template-dialog.component.ts deleted file mode 100644 index d7b154c2c..000000000 --- a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-clone-dossier-template-dialog.component.ts +++ /dev/null @@ -1,173 +0,0 @@ -import { HttpStatusCode } from '@angular/common/http'; -import { Component, Inject } from '@angular/core'; -import { AbstractControl, Validators } from '@angular/forms'; -import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; -import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; -import { BaseDialogComponent, getConfig } from '@iqser/common-ui'; -import { DossierTemplate, IDossierTemplate } from '@red/domain'; -import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service'; -import { downloadTypesTranslations } from '@translations/download-types-translations'; -import { applyIntervalConstraints } from '@utils/date-inputs-utils'; -import dayjs, { Dayjs } from 'dayjs'; - -interface EditCloneTemplateData { - dossierTemplateId: string; - clone?: boolean; -} - -const downloadTypes = ['ORIGINAL', 'PREVIEW', 'DELTA_PREVIEW', 'REDACTED'].map(type => ({ - key: type, - label: downloadTypesTranslations[type], -})); - -@Component({ - templateUrl: './add-edit-clone-dossier-template-dialog.component.html', - styleUrls: ['./add-edit-clone-dossier-template-dialog.component.scss'], -}) -export class AddEditCloneDossierTemplateDialogComponent extends BaseDialogComponent { - readonly isDocumine = getConfig().IS_DOCUMINE; - hasValidFrom: boolean; - hasValidTo: boolean; - readonly downloadTypes = downloadTypes; - readonly dossierTemplate: DossierTemplate; - private _previousValidFrom: Dayjs; - private _previousValidTo: Dayjs; - private _lastValidFrom: Dayjs; - private _lastValidTo: Dayjs; - - get disabled(): boolean { - if (!this.data?.clone) { - return super.disabled; - } - return !this.valid; - } - - get translateParams() { - return { - type: this.dossierTemplate ? (this.data.clone ? 'clone' : 'edit') : 'create', - name: this.dossierTemplate?.name, - }; - } - - constructor( - private readonly _dossierTemplatesService: DossierTemplatesService, - protected readonly _dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) readonly data: EditCloneTemplateData, - ) { - super(_dialogRef, !!data && !data.clone); - this.dossierTemplate = this._dossierTemplatesService.find(this.data?.dossierTemplateId); - this.form = this.#getForm(); - this.initialFormValue = this.form.getRawValue(); - this.hasValidFrom = !!this.dossierTemplate?.validFrom; - this.hasValidTo = !!this.dossierTemplate?.validTo; - - this._previousValidFrom = this._lastValidFrom = this.form.get('validFrom').value; - this._previousValidTo = this._lastValidTo = this.form.get('validTo').value; - } - - toggleHasValid(extremity: string) { - if (extremity === 'from') { - this.hasValidFrom = !this.hasValidFrom; - this.form.controls['validFrom'].setValue(this.hasValidFrom ? this._lastValidFrom : null); - } else { - this.hasValidTo = !this.hasValidTo; - this.form.controls['validTo'].setValue(this.hasValidTo ? this._lastValidTo : null); - } - this.applyValidityIntervalConstraints(); - } - - async save() { - this._loadingService.start(); - const dossierTemplate = { - dossierTemplateId: this.dossierTemplate?.dossierTemplateId, - ...this.form.getRawValue(), - validFrom: this.hasValidFrom ? this.form.get('validFrom').value : null, - validTo: this.hasValidTo ? this.form.get('validTo').value : null, - } as IDossierTemplate; - - try { - if (this.data?.clone) { - await this._dossierTemplatesService.clone(this.dossierTemplate.id, dossierTemplate); - } else { - await this._dossierTemplatesService.createOrUpdate(dossierTemplate); - } - this._dialogRef.close(true); - } catch (error) { - if (error.status === HttpStatusCode.Conflict) { - this._toaster.error(_('add-edit-clone-dossier-template.error.conflict'), { error }); - } else { - this._toaster.rawError(error.error.message); - } - } - this._loadingService.stop(); - } - - applyValidityIntervalConstraints(): void { - const formValue = this.form.value; - applyIntervalConstraints(formValue, this._previousValidFrom, this._previousValidTo, this.form, 'validFrom', 'validTo'); - - this._previousValidFrom = this.form.get('validFrom').value; - this._previousValidTo = this.form.get('validTo').value; - this._lastValidFrom = this._previousValidFrom || this._lastValidFrom; - this._lastValidTo = this._previousValidTo || this._lastValidTo; - } - - #getForm() { - return this._formBuilder.group({ - name: [this.#getCloneName(), Validators.required], - description: [this.dossierTemplate?.description], - validFrom: [ - this.dossierTemplate?.validFrom ? dayjs(this.dossierTemplate?.validFrom) : null, - this.#requiredIfValidator(() => this.hasValidFrom), - ], - validTo: [ - this.dossierTemplate?.validTo ? dayjs(this.dossierTemplate?.validTo) : null, - this.#requiredIfValidator(() => this.hasValidTo), - ], - applyDictionaryUpdatesToAllDossiersByDefault: [this.dossierTemplate?.applyDictionaryUpdatesToAllDossiersByDefault], - ocrByDefault: [this.dossierTemplate?.ocrByDefault], - removeWatermark: [this.dossierTemplate?.removeWatermark], - downloadFileTypes: [this.dossierTemplate?.downloadFileTypes || ['PREVIEW', 'REDACTED']], - keepHiddenText: [this.dossierTemplate?.keepHiddenText], - keepImageMetadata: [this.dossierTemplate?.keepImageMetadata], - keepOverlappingObjects: [this.dossierTemplate?.keepOverlappingObjects], - }); - } - - #getCloneName(): string { - if (!this.data?.clone) { - return this.dossierTemplate?.name; - } - - const templateName = this.dossierTemplate.name.trim(); - let nameOfClonedTemplate: string = templateName.split('Copy of ').filter(n => n)[0]; - nameOfClonedTemplate = nameOfClonedTemplate.split(/\(\s*\d+\s*\)$/)[0].trim(); - const allTemplatesNames = this._dossierTemplatesService.all.map(t => t.name); - - let clonesCount = 0; - for (const name of allTemplatesNames) { - const splitName = name.split(nameOfClonedTemplate); - const suffixRegExp = new RegExp(/^\(\s*\d+\s*\)$/); - if (splitName[0] === 'Copy of ' && (splitName[1].trim().match(suffixRegExp) || splitName[1] === '')) { - clonesCount++; - } - } - - if (clonesCount >= 1) { - return `Copy of ${nameOfClonedTemplate} (${clonesCount})`; - } - return `Copy of ${nameOfClonedTemplate}`; - } - - #requiredIfValidator(predicate) { - return (formControl: AbstractControl) => { - if (!formControl.parent) { - return null; - } - if (predicate()) { - return Validators.required(formControl); - } - return null; - }; - } -} diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/dossier-templates-listing-screen/dossier-templates-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/dossier-templates-listing-screen/dossier-templates-listing-screen.component.ts index 40c043d22..fa61c02bf 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/dossier-templates-listing-screen/dossier-templates-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/dossier-templates-listing-screen/dossier-templates-listing-screen.component.ts @@ -63,7 +63,7 @@ export class DossierTemplatesListingScreenComponent extends ListingComponent d.dossierTemplateId)) { diff --git a/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-details/dossier-template-details.component.html b/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-details/dossier-template-details.component.html new file mode 100644 index 000000000..0e328765d --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-details/dossier-template-details.component.html @@ -0,0 +1,54 @@ +
+ +
{{ ctx.dossierTemplate.name }}
+ +
+
+
+ + +
+ +
+
+ + {{ translations[ctx.dossierTemplate.dossierTemplateStatus] | translate }} +
+ +
+ + {{ 'dossier-template-info-screen.entities' | translate: { count: ctx.stats.numberOfDictionaries } }} +
+ +
+ + +
+ +
+ + +
+ +
+ + {{ 'dossier-template-info-screen.entries' | translate: { count: ctx.stats.numberOfEntries } }} +
+ +
+ + +
+ +
+ + +
+
+
+
+
diff --git a/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-details/dossier-template-details.component.scss b/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-details/dossier-template-details.component.scss new file mode 100644 index 000000000..dd00e21c8 --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-details/dossier-template-details.component.scss @@ -0,0 +1,20 @@ +@use 'common-mixins'; + +.stats-subtitle { + display: grid; + grid-template-columns: repeat(3, max-content); + grid-row-gap: 8px; + grid-column-gap: 8px; + height: fit-content; +} + +.info-wrapper { + display: flex; + align-items: center; +} + +.created-by-wrapper { + border-right: 1px solid var(--iqser-separator); + padding-right: 24px; + margin-right: 24px; +} diff --git a/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-details/dossier-template-details.component.ts b/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-details/dossier-template-details.component.ts new file mode 100644 index 000000000..2ddbd44f7 --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-details/dossier-template-details.component.ts @@ -0,0 +1,36 @@ +import { Component, Input, OnInit } from '@angular/core'; +import { ContextComponent } from '@iqser/common-ui/lib/utils'; +import { type DossierTemplate, type DossierTemplateStats } from '@red/domain'; +import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service'; +import { DossierTemplateStatsService } from '@services/entity-services/dossier-template-stats.service'; +import { dossierTemplateStatusTranslations } from '@translations/dossier-template-status-translations'; + +interface Context { + readonly dossierTemplate: DossierTemplate; + readonly stats: DossierTemplateStats; +} + +@Component({ + selector: 'redaction-dossier-template-details', + templateUrl: './dossier-template-details.component.html', + styleUrls: ['./dossier-template-details.component.scss'], +}) +export class DossierTemplateDetailsComponent extends ContextComponent implements OnInit { + readonly translations = dossierTemplateStatusTranslations; + + @Input({ required: true }) dossierTemplateId: string; + + constructor( + private readonly _dossierTemplatesService: DossierTemplatesService, + private readonly _dossierTemplateStatsService: DossierTemplateStatsService, + ) { + super(); + } + + ngOnInit() { + super._initContext({ + dossierTemplate: this._dossierTemplatesService.getEntityChanged$(this.dossierTemplateId), + stats: this._dossierTemplateStatsService.watch$(this.dossierTemplateId), + }); + } +} diff --git a/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-info-screen/dossier-template-info-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-info-screen/dossier-template-info-screen.component.html new file mode 100644 index 000000000..94e7dc00a --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-info-screen/dossier-template-info-screen.component.html @@ -0,0 +1,150 @@ +
+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+
+ + {{ 'add-edit-clone-dossier-template.form.valid-from' | translate }} + + +
+ + + + + + + +
+
+ +
+ + {{ 'add-edit-clone-dossier-template.form.valid-to' | translate }} + +
+ + + + + + + +
+
+
+ +
+
+ {{ 'add-edit-clone-dossier-template.form.apply-updates-default.heading' | translate }} +
+
+ + {{ 'add-edit-clone-dossier-template.form.apply-updates-default.description' | translate }} + +
+
+ +
+
{{ 'download-includes' | translate }}
+ + +
+ +
+
+ {{ 'add-edit-clone-dossier-template.form.upload-settings.heading' | translate }} +
+
+ + {{ 'add-edit-clone-dossier-template.form.upload-settings.ocr-by-default' | translate }} + +
+
+ + {{ 'add-edit-clone-dossier-template.form.upload-settings.remove-watermark' | translate }} + +
+
+ +
+
{{ 'add-edit-clone-dossier-template.form.hidden-text.heading' | translate }}
+
+ + {{ 'add-edit-clone-dossier-template.form.hidden-text.title' | translate }} + +
{{ 'add-edit-clone-dossier-template.form.hidden-text.description' | translate }}
+
+
+ + {{ 'add-edit-clone-dossier-template.form.image-metadata.title' | translate }} + +
{{ 'add-edit-clone-dossier-template.form.image-metadata.description' | translate }}
+
+
+ + {{ 'add-edit-clone-dossier-template.form.overlapping-elements.title' | translate }} + +
+ {{ 'add-edit-clone-dossier-template.form.overlapping-elements.description' | translate }} +
+
+
+
+ +
+ +
+
+
diff --git a/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-info-screen/dossier-template-info-screen.component.scss b/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-info-screen/dossier-template-info-screen.component.scss new file mode 100644 index 000000000..a18ca9b6d --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-info-screen/dossier-template-info-screen.component.scss @@ -0,0 +1,44 @@ +@use 'common-mixins'; + +//:host { +// display: flex; +// flex-grow: 1; +// overflow: hidden; +//} + +.content-container { + display: flex; + justify-content: center; + background-color: var(--iqser-alt-background); + overflow: auto; + @include common-mixins.scroll-bar; +} + +.stats-subtitle { + margin-top: 16px; + display: grid; + grid-template-columns: repeat(3, max-content); + grid-row-gap: 8px; + grid-column-gap: 40px; +} + +.validity { + display: flex; + min-height: 42px; + gap: 40px; + + > div { + display: flex; + align-items: center; + gap: 8px; + } +} + +redaction-select { + flex: 1; +} + +.hidden-elements .info { + margin-left: 24px; + margin-top: 4px; +} diff --git a/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-info-screen/dossier-template-info-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-info-screen/dossier-template-info-screen.component.ts new file mode 100644 index 000000000..3cf61bb37 --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-info-screen/dossier-template-info-screen.component.ts @@ -0,0 +1,139 @@ +import { Component, OnInit, signal, untracked, WritableSignal } from '@angular/core'; +import { BaseFormComponent, getConfig, IconButtonTypes, LoadingService, Toaster } from '@iqser/common-ui'; +import { getParam } from '@iqser/common-ui/lib/utils'; +import { DOSSIER_TEMPLATE_ID, type DossierTemplate, IDossierTemplate } from '@red/domain'; +import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service'; +import { dossierTemplateStatusTranslations } from '@translations/dossier-template-status-translations'; +import dayjs, { Dayjs } from 'dayjs'; +import { HttpStatusCode } from '@angular/common/http'; +import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; +import { applyIntervalConstraints } from '@utils/date-inputs-utils'; +import { AbstractControl, UntypedFormBuilder, Validators } from '@angular/forms'; +import { downloadTypesTranslations } from '@translations/download-types-translations'; +import { Observable } from 'rxjs'; + +const downloadTypes = ['ORIGINAL', 'PREVIEW', 'DELTA_PREVIEW', 'REDACTED'].map(type => ({ + key: type, + label: downloadTypesTranslations[type], +})); + +@Component({ + templateUrl: './dossier-template-info-screen.component.html', + styleUrls: ['./dossier-template-info-screen.component.scss'], +}) +export class DossierTemplateInfoScreenComponent extends BaseFormComponent implements OnInit { + readonly translations = dossierTemplateStatusTranslations; + readonly iconButtonTypes = IconButtonTypes; + readonly isDocumine = getConfig().IS_DOCUMINE; + readonly downloadTypes = downloadTypes; + + readonly dossierTemplate$: Observable; + readonly dossierTemplateId = getParam(DOSSIER_TEMPLATE_ID); + readonly hasValidFrom: WritableSignal; + readonly hasValidTo: WritableSignal; + private _previousValidFrom: Dayjs; + private _previousValidTo: Dayjs; + private _lastValidFrom: Dayjs; + private _lastValidTo: Dayjs; + + constructor( + private readonly _dossierTemplatesService: DossierTemplatesService, + private readonly _loadingService: LoadingService, + private readonly _toaster: Toaster, + private readonly _formBuilder: UntypedFormBuilder, + ) { + super(); + this.dossierTemplate$ = this._dossierTemplatesService.get(this.dossierTemplateId); + this.form = this.#getForm(this._dossierTemplatesService.find(this.dossierTemplateId)); + this.initialFormValue = this.form.getRawValue(); + + this.hasValidFrom = signal(!!this.form.get('validFrom').value); + this.hasValidTo = signal(!!this.form.get('validTo').value); + + this._previousValidFrom = this._lastValidFrom = this.form.get('validFrom').value; + this._previousValidTo = this._lastValidTo = this.form.get('validTo').value; + } + + ngOnInit() { + this._loadingService.stop(); + } + + toggleHasValid(extremity: 'from' | 'to') { + if (extremity === 'from') { + const prevValue = untracked(this.hasValidFrom); + this.hasValidFrom.set(!prevValue); + this.form.controls['validFrom'].setValue(!prevValue ? this._lastValidFrom : null); + } else { + const prevValue = untracked(this.hasValidTo); + this.hasValidTo.set(!prevValue); + this.form.controls['validTo'].setValue(!prevValue ? this._lastValidTo : null); + } + this.applyValidityIntervalConstraints(); + } + + async save() { + this._loadingService.start(); + const dossierTemplate = { + dossierTemplateId: this.dossierTemplateId, + ...this.form.getRawValue(), + validFrom: this.hasValidFrom() ? this.form.get('validFrom').value : null, + validTo: this.hasValidTo() ? this.form.get('validTo').value : null, + } as IDossierTemplate; + + try { + await this._dossierTemplatesService.createOrUpdate(dossierTemplate); + this.initialFormValue = this.form.getRawValue(); + } catch (error) { + if (error.status === HttpStatusCode.Conflict) { + this._toaster.error(_('add-edit-clone-dossier-template.error.conflict'), { error }); + } else { + this._toaster.rawError(error.error.message); + } + } + this._loadingService.stop(); + } + + applyValidityIntervalConstraints(): void { + const formValue = this.form.value; + applyIntervalConstraints(formValue, this._previousValidFrom, this._previousValidTo, this.form, 'validFrom', 'validTo'); + + this._previousValidFrom = this.form.get('validFrom').value; + this._previousValidTo = this.form.get('validTo').value; + this._lastValidFrom = this._previousValidFrom || this._lastValidFrom; + this._lastValidTo = this._previousValidTo || this._lastValidTo; + } + + #getForm(dossierTemplate: DossierTemplate) { + return this._formBuilder.group({ + name: [dossierTemplate.name, Validators.required], + description: [dossierTemplate?.description], + validFrom: [ + dossierTemplate?.validFrom ? dayjs(dossierTemplate?.validFrom) : null, + this.#requiredIfValidator(() => this.hasValidFrom()), + ], + validTo: [ + dossierTemplate?.validTo ? dayjs(dossierTemplate?.validTo) : null, + this.#requiredIfValidator(() => this.hasValidTo()), + ], + applyDictionaryUpdatesToAllDossiersByDefault: [dossierTemplate?.applyDictionaryUpdatesToAllDossiersByDefault], + ocrByDefault: [dossierTemplate?.ocrByDefault], + removeWatermark: [dossierTemplate?.removeWatermark], + downloadFileTypes: [dossierTemplate?.downloadFileTypes || ['PREVIEW', 'REDACTED']], + keepHiddenText: [dossierTemplate?.keepHiddenText], + keepImageMetadata: [dossierTemplate?.keepImageMetadata], + keepOverlappingObjects: [dossierTemplate?.keepOverlappingObjects], + }); + } + + #requiredIfValidator(predicate: () => boolean) { + return (formControl: AbstractControl) => { + if (!formControl.parent) { + return null; + } + if (predicate()) { + return Validators.required(formControl); + } + return null; + }; + } +} diff --git a/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-info.module.ts b/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-info.module.ts index 6c2f49351..adb906247 100644 --- a/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-info.module.ts +++ b/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-info.module.ts @@ -1,16 +1,18 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; -import { DossierTemplateInfoScreenComponent } from './info-screen/dossier-template-info-screen.component'; +import { DossierTemplateInfoScreenComponent } from './dossier-template-info-screen/dossier-template-info-screen.component'; import { RouterModule } from '@angular/router'; import { SharedModule } from '@shared/shared.module'; -import { HasScrollbarDirective, IqserHelpModeModule } from '@iqser/common-ui'; +import { CircleButtonComponent, HasScrollbarDirective, IconButtonComponent, IqserHelpModeModule } from '@iqser/common-ui'; import { TranslateModule } from '@ngx-translate/core'; import { IqserUsersModule } from '@iqser/common-ui/lib/users'; +import { SelectComponent } from '@shared/components/select/select.component'; +import { DossierTemplateDetailsComponent } from './dossier-template-details/dossier-template-details.component'; const routes = [{ path: '', component: DossierTemplateInfoScreenComponent }]; @NgModule({ - declarations: [DossierTemplateInfoScreenComponent], + declarations: [DossierTemplateInfoScreenComponent, DossierTemplateDetailsComponent], imports: [ RouterModule.forChild(routes), CommonModule, @@ -19,6 +21,9 @@ const routes = [{ path: '', component: DossierTemplateInfoScreenComponent }]; TranslateModule, IqserHelpModeModule, HasScrollbarDirective, + CircleButtonComponent, + IconButtonComponent, + SelectComponent, ], }) export class DossierTemplateInfoModule {} diff --git a/apps/red-ui/src/app/modules/admin/screens/info/info-screen/dossier-template-info-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/info/info-screen/dossier-template-info-screen.component.html deleted file mode 100644 index ab6d52248..000000000 --- a/apps/red-ui/src/app/modules/admin/screens/info/info-screen/dossier-template-info-screen.component.html +++ /dev/null @@ -1,46 +0,0 @@ -
-
{{ ctx.dossierTemplate.name }}
- -
- - - -
-
- - {{ translations[ctx.dossierTemplate.dossierTemplateStatus] | translate }} -
- -
- - {{ 'dossier-template-info-screen.entities' | translate : { count: ctx.stats.numberOfDictionaries } }} -
- -
- - -
- -
- - -
- -
- - {{ 'dossier-template-info-screen.entries' | translate : { count: ctx.stats.numberOfEntries } }} -
- -
- - -
- -
- - -
-
- -
{{ ctx.dossierTemplate.description }}
-
diff --git a/apps/red-ui/src/app/modules/admin/screens/info/info-screen/dossier-template-info-screen.component.scss b/apps/red-ui/src/app/modules/admin/screens/info/info-screen/dossier-template-info-screen.component.scss deleted file mode 100644 index 857abc06a..000000000 --- a/apps/red-ui/src/app/modules/admin/screens/info/info-screen/dossier-template-info-screen.component.scss +++ /dev/null @@ -1,33 +0,0 @@ -@use 'common-mixins'; - -:host { - display: flex; - flex-grow: 1; - overflow: hidden; -} - -.content-container { - flex: 1; - padding: 30px; - overflow: auto; - @include common-mixins.scroll-bar; -} - -.heading { - display: flex; - align-items: center; - margin-top: 40px; - margin-bottom: 8px; -} - -.stats-subtitle { - margin-top: 16px; - display: grid; - grid-template-columns: repeat(3, max-content); - grid-row-gap: 8px; - grid-column-gap: 40px; -} - -.template-description { - margin-top: 10px; -} diff --git a/apps/red-ui/src/app/modules/admin/screens/info/info-screen/dossier-template-info-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/info/info-screen/dossier-template-info-screen.component.ts deleted file mode 100644 index bf9ccf1cd..000000000 --- a/apps/red-ui/src/app/modules/admin/screens/info/info-screen/dossier-template-info-screen.component.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { Component, inject, OnInit } from '@angular/core'; -import { LoadingService } from '@iqser/common-ui'; -import { ContextComponent, getParam } from '@iqser/common-ui/lib/utils'; -import { DOSSIER_TEMPLATE_ID, type DossierTemplate, type DossierTemplateStats } from '@red/domain'; -import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service'; -import { DossierTemplateStatsService } from '@services/entity-services/dossier-template-stats.service'; -import { dossierTemplateStatusTranslations } from '@translations/dossier-template-status-translations'; - -interface Context { - readonly dossierTemplate: DossierTemplate; - readonly stats: DossierTemplateStats; -} - -@Component({ - templateUrl: './dossier-template-info-screen.component.html', - styleUrls: ['./dossier-template-info-screen.component.scss'], -}) -export class DossierTemplateInfoScreenComponent extends ContextComponent implements OnInit { - readonly #loadingService = inject(LoadingService); - readonly translations = dossierTemplateStatusTranslations; - - constructor(dossierTemplatesService: DossierTemplatesService, dossierTemplateStatsService: DossierTemplateStatsService) { - super(); - const dossierTemplateId = getParam(DOSSIER_TEMPLATE_ID); - super._initContext({ - dossierTemplate: dossierTemplatesService.getEntityChanged$(dossierTemplateId), - stats: dossierTemplateStatsService.watch$(dossierTemplateId), - }); - } - - ngOnInit() { - this.#loadingService.stop(); - } -} diff --git a/apps/red-ui/src/app/modules/admin/services/admin-dialog.service.ts b/apps/red-ui/src/app/modules/admin/services/admin-dialog.service.ts index 36f0984b6..f627f6b78 100644 --- a/apps/red-ui/src/app/modules/admin/services/admin-dialog.service.ts +++ b/apps/red-ui/src/app/modules/admin/services/admin-dialog.service.ts @@ -1,7 +1,6 @@ import { Injectable, TemplateRef } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { AddEntityDialogComponent } from '../dialogs/add-entity-dialog/add-entity-dialog.component'; -import { AddEditCloneDossierTemplateDialogComponent } from '../dialogs/add-edit-dossier-template-dialog/add-edit-clone-dossier-template-dialog.component'; import { EditColorDialogComponent } from '../dialogs/edit-color-dialog/edit-color-dialog.component'; import { SmtpAuthDialogComponent } from '../dialogs/smtp-auth-dialog/smtp-auth-dialog.component'; import { AddEditUserDialogComponent } from '../dialogs/add-edit-user-dialog/add-edit-user-dialog.component'; @@ -23,6 +22,7 @@ import { IDossierAttributeConfig, IFileAttributeConfig, IReportTemplate } from ' import { ReportTemplateService } from '@services/report-template.service'; import { ConfigureCertificateDialogComponent } from '../dialogs/configure-digital-signature-dialog/configure-certificate-dialog.component'; import { AuditInfoDialogComponent } from '../dialogs/audit-info-dialog/audit-info-dialog.component'; +import { AddCloneDossierTemplateDialogComponent } from '../dialogs/add-clone-dossier-template-dialog/add-clone-dossier-template-dialog.component'; type DialogType = | 'confirm' @@ -30,7 +30,7 @@ type DialogType = | 'editColor' | 'addEditUser' | 'smtpAuthConfig' - | 'addEditCloneDossierTemplate' + | 'addCloneDossierTemplate' | 'auditInfo' | 'uploadDictionary' | 'configureCertificate'; @@ -58,9 +58,9 @@ export class AdminDialogService extends DialogService { component: SmtpAuthDialogComponent, dialogConfig: { autoFocus: true }, }, - addEditCloneDossierTemplate: { - component: AddEditCloneDossierTemplateDialogComponent, - dialogConfig: { width: '950px', autoFocus: true }, + addCloneDossierTemplate: { + component: AddCloneDossierTemplateDialogComponent, + dialogConfig: { autoFocus: true }, }, uploadDictionary: { component: UploadDictionaryDialogComponent, diff --git a/apps/red-ui/src/app/modules/admin/shared/components/dossier-template-actions/dossier-template-actions.component.html b/apps/red-ui/src/app/modules/admin/shared/components/dossier-template-actions/dossier-template-actions.component.html index 14e22b2bb..c20f6e637 100644 --- a/apps/red-ui/src/app/modules/admin/shared/components/dossier-template-actions/dossier-template-actions.component.html +++ b/apps/red-ui/src/app/modules/admin/shared/components/dossier-template-actions/dossier-template-actions.component.html @@ -8,15 +8,15 @@ > diff --git a/apps/red-ui/src/app/modules/admin/shared/components/dossier-template-actions/dossier-template-actions.component.ts b/apps/red-ui/src/app/modules/admin/shared/components/dossier-template-actions/dossier-template-actions.component.ts index 468cb8e48..266e53a0c 100644 --- a/apps/red-ui/src/app/modules/admin/shared/components/dossier-template-actions/dossier-template-actions.component.ts +++ b/apps/red-ui/src/app/modules/admin/shared/components/dossier-template-actions/dossier-template-actions.component.ts @@ -1,10 +1,10 @@ import { NgIf } from '@angular/common'; import { Component, Input, OnInit } from '@angular/core'; -import { ActivatedRoute, Router } from '@angular/router'; +import { ActivatedRoute, Router, RouterLink } from '@angular/router'; import { CircleButtonComponent, IqserHelpModeModule, LoadingService } from '@iqser/common-ui'; import { getCurrentUser } from '@iqser/common-ui/lib/users'; import { TranslateModule } from '@ngx-translate/core'; -import { DOSSIER_TEMPLATE_ID, type User } from '@red/domain'; +import { DOSSIER_TEMPLATE_ID, DossierTemplate, type User } from '@red/domain'; import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service'; import { firstValueFrom } from 'rxjs'; import { AdminDialogService } from '../../../services/admin-dialog.service'; @@ -14,12 +14,13 @@ import { AdminDialogService } from '../../../services/admin-dialog.service'; templateUrl: './dossier-template-actions.component.html', styleUrls: ['./dossier-template-actions.component.scss'], standalone: true, - imports: [NgIf, IqserHelpModeModule, CircleButtonComponent, TranslateModule], + imports: [NgIf, IqserHelpModeModule, CircleButtonComponent, TranslateModule, RouterLink], }) export class DossierTemplateActionsComponent implements OnInit { @Input() dossierTemplateId: string; readonly currentUser = getCurrentUser(); + dossierTemplate: DossierTemplate; constructor( private readonly _router: Router, @@ -31,10 +32,11 @@ export class DossierTemplateActionsComponent implements OnInit { ngOnInit() { this.dossierTemplateId ??= this._route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID); + this.dossierTemplate = this._dossierTemplatesService.find(this.dossierTemplateId); } - openEditCloneDossierTemplateDialog(clone: boolean = false) { - this._dialogService.openDialog('addEditCloneDossierTemplate', { dossierTemplateId: this.dossierTemplateId, clone }); + openCloneDossierTemplateDialog() { + this._dialogService.openDialog('addCloneDossierTemplate', { dossierTemplateId: this.dossierTemplateId }); } openDeleteDossierTemplateDialog() { diff --git a/apps/red-ui/src/app/modules/shared/dialogs/add-dossier-dialog/add-dossier-dialog.component.html b/apps/red-ui/src/app/modules/shared/dialogs/add-dossier-dialog/add-dossier-dialog.component.html index 4b42e518a..42a33d4dd 100644 --- a/apps/red-ui/src/app/modules/shared/dialogs/add-dossier-dialog/add-dossier-dialog.component.html +++ b/apps/red-ui/src/app/modules/shared/dialogs/add-dossier-dialog/add-dossier-dialog.component.html @@ -106,14 +106,14 @@
{ diff --git a/apps/red-ui/src/assets/i18n/redact/de.json b/apps/red-ui/src/assets/i18n/redact/de.json index 73336c0c0..6786efd13 100644 --- a/apps/red-ui/src/assets/i18n/redact/de.json +++ b/apps/red-ui/src/assets/i18n/redact/de.json @@ -26,6 +26,11 @@ "title": "Add annotation" } }, + "add-clone-dossier-template": { + "save": "", + "save-and-edit": "", + "title": "" + }, "add-dossier-dialog": { "actions": { "save": "Speichern", @@ -87,8 +92,7 @@ "valid-from": "Gültig ab", "valid-to": "Gültig bis" }, - "save": "Dossier-Vorlage speichern", - "title": "{type, select, edit{Dossier-Vorlage {name} bearbeiten} create{Dossier-Vorlage erstellen} clone{} other{}}" + "save": "Dossier-Vorlage speichern" }, "add-edit-dossier-attribute": { "error": { @@ -250,9 +254,6 @@ "watermarks": "Watermarks" }, "analysis-disabled": "", - "annotation": { - "pending": "(Pending analysis)" - }, "annotation-actions": { "accept-recommendation": { "label": "Empfehlung annehmen" @@ -307,14 +308,14 @@ "error": "Rekategorisierung des Bildes gescheitert: {error}", "success": "Bild wurde einer neuen Kategorie zugeordnet." }, - "remove": { - "error": "Fehler beim Entfernen der Schwärzung: {error}", - "success": "Schwärzung entfernt!" - }, "remove-hint": { "error": "Failed to remove hint: {error}", "success": "Hint removed!" }, + "remove": { + "error": "Fehler beim Entfernen der Schwärzung: {error}", + "success": "Schwärzung entfernt!" + }, "undo": { "error": "Die Aktion konnte nicht rückgängig gemacht werden. Fehler: {error}", "success": "erfolgreich Rückgängig gemacht" @@ -327,15 +328,15 @@ "remove-highlights": { "label": "Remove selected earmarks" }, - "resize": { - "label": "Größe ändern" - }, "resize-accept": { "label": "Größe speichern" }, "resize-cancel": { "label": "Größenänderung abbrechen" }, + "resize": { + "label": "Größe ändern" + }, "see-references": { "label": "See references" }, @@ -367,6 +368,9 @@ "skipped": "Übersprungen", "text-highlight": "Earmark" }, + "annotation": { + "pending": "(Pending analysis)" + }, "archived-dossiers-listing": { "no-data": { "title": "No archived dossiers." @@ -572,18 +576,14 @@ "warning": "Achtung: Diese Aktion kann nicht rückgängig gemacht werden!" }, "confirmation-dialog": { - "approve-file": { - "question": "Dieses Dokument enthält ungesehene Änderungen. Möchten Sie es trotzdem genehmigen?", - "title": "Warnung!" - }, "approve-file-without-analysis": { "confirmationText": "Approve without analysis", "denyText": "Cancel", "question": "Analysis required to detect new redactions.", "title": "Warning!" }, - "approve-multiple-files": { - "question": "Mindestens eine der ausgewählten Dateien enthält ungesehene Änderungen. Möchten Sie sie trotzdem genehmigen?", + "approve-file": { + "question": "Dieses Dokument enthält ungesehene Änderungen. Möchten Sie es trotzdem genehmigen?", "title": "Warnung!" }, "approve-multiple-files-without-analysis": { @@ -592,6 +592,10 @@ "question": "Analysis required to detect new redactions for at least one file.", "title": "Warning" }, + "approve-multiple-files": { + "question": "Mindestens eine der ausgewählten Dateien enthält ungesehene Änderungen. Möchten Sie sie trotzdem genehmigen?", + "title": "Warnung!" + }, "assign-file-to-me": { "question": { "multiple": "Dieses Dokument wird gerade von einer anderen Person geprüft. Möchten Sie Reviewer werden und sich selbst dem Dokument zuweisen?", @@ -681,6 +685,25 @@ } }, "dev-mode": "DEV", + "dialog-defaults-form": { + "extra-option-label": "", + "hint": { + "add-dialog": "", + "remove-dialog": "", + "title": "" + }, + "recommendation": { + "remove-dialog": "", + "title": "" + }, + "redaction": { + "add-dialog": "", + "remove-dialog": "", + "title": "" + }, + "system-default": "", + "title": "" + }, "dictionary": "Wörterbuch", "dictionary-overview": { "compare": { @@ -936,13 +959,13 @@ "recent": "Neu ({hours} h)", "unassigned": "Niemandem zugewiesen" }, - "reanalyse": { - "action": "Datei analysieren" - }, "reanalyse-dossier": { "error": "Die Dateien konnten nicht für eine Reanalyse eingeplant werden. Bitte versuchen Sie es erneut.", "success": "Dateien für Reanalyse vorgesehen." }, + "reanalyse": { + "action": "Datei analysieren" + }, "start-auto-analysis": "Enable auto-analysis", "stop-auto-analysis": "Stop auto-analysis", "table-col-names": { @@ -1000,6 +1023,7 @@ "entities": "{count} {count, plural, one{entity} other{entities}}", "entries": "{count} {count, plural, one{entry} other{entries}}", "modified-on": "Modified on: {date}", + "title": "", "valid-from": "Valid from: {date}", "valid-to": "Valid to: {date}" }, @@ -1011,14 +1035,6 @@ "total-documents": "Anzahl der Dokumente", "total-people": "{count} {count, plural, one{user} other {users}}" }, - "dossier-templates": { - "label": "Dossier-Vorlagen", - "status": { - "active": "Active", - "inactive": "Inactive", - "incomplete": "Incomplete" - } - }, "dossier-templates-listing": { "action": { "clone": "Clone template", @@ -1054,6 +1070,14 @@ "title": "{length} {length, plural, one{Dossier-Vorlage} other{Dossier-Vorlagen}}" } }, + "dossier-templates": { + "label": "Dossier-Vorlagen", + "status": { + "active": "Active", + "inactive": "Inactive", + "incomplete": "Incomplete" + } + }, "dossier-watermark-selector": { "heading": "Watermarks on documents", "no-watermark": "There is no watermark defined for the dossier template.
Contact your app admin to define one.", @@ -1249,15 +1273,6 @@ "title": "{length} {length, plural, one{Wörterbuch} other{Wörterbücher}}" } }, - "entity": { - "info": { - "actions": { - "revert": "Revert", - "save": "Save changes" - }, - "heading": "Edit entity" - } - }, "entity-rules-screen": { "error": { "generic": "Something went wrong... Entity rules update failed!" @@ -1272,19 +1287,28 @@ "warning-text": "Warning: experimental feature!", "warnings-found": "{warnings, plural, one{A warning} other{{warnings} warnings}} found in rules" }, + "entity": { + "info": { + "actions": { + "revert": "Revert", + "save": "Save changes" + }, + "heading": "Edit entity" + } + }, "error": { "deleted-entity": { "dossier": { "action": "Zurück zur Übersicht", "label": "Dieses Dossier wurde gelöscht!" }, - "file": { - "action": "Zurück zum Dossier", - "label": "Diese Datei wurde gelöscht!" - }, "file-dossier": { "action": "Zurück zur Übersicht", "label": "Das Dossier dieser Datei wurde gelöscht!" + }, + "file": { + "action": "Zurück zum Dossier", + "label": "Diese Datei wurde gelöscht!" } }, "file-preview": { @@ -1302,12 +1326,6 @@ }, "exact-date": "{day} {month} {year} um {hour}:{minute} Uhr", "file": "Datei", - "file-attribute": { - "update": { - "error": "Failed to update file attribute value!", - "success": "File attribute value has been updated successfully!" - } - }, "file-attribute-encoding-types": { "ascii": "ASCII", "iso": "ISO-8859-1", @@ -1318,6 +1336,12 @@ "number": "Nummer", "text": "Freier Text" }, + "file-attribute": { + "update": { + "error": "Failed to update file attribute value!", + "success": "File attribute value has been updated successfully!" + } + }, "file-attributes-configurations": { "cancel": "Cancel", "form": { @@ -1536,15 +1560,6 @@ "csv": "File attributes were imported successfully from uploaded CSV file." } }, - "filter": { - "analysis": "Analyse erforderlich", - "comment": "Kommentare", - "hint": "Nut Hinweise", - "image": "Bilder", - "none": "Keine Anmerkungen", - "redaction": "Geschwärzt", - "updated": "Aktualisiert" - }, "filter-menu": { "filter-options": "Filteroptionen", "filter-types": "Filter", @@ -1554,6 +1569,15 @@ "unseen-pages": "Nur Anmerkungen auf unsichtbaren Seiten", "with-comments": "Nur Anmerkungen mit Kommentaren" }, + "filter": { + "analysis": "Analyse erforderlich", + "comment": "Kommentare", + "hint": "Nut Hinweise", + "image": "Bilder", + "none": "Keine Anmerkungen", + "redaction": "Geschwärzt", + "updated": "Aktualisiert" + }, "filters": { "assigned-people": "Beauftragt", "documents-status": "Documents state", @@ -1824,13 +1848,6 @@ "user-promoted-to-approver": "{user} wurde im Dossier {dossierHref, select, null{{dossierName}} other{{dossierName}}} zum Genehmiger ernannt!", "user-removed-as-dossier-member": "{user} wurde als Mitglied von: {dossierHref, select, null{{dossierName}} other{{dossierName}}} entfernt!" }, - "notifications": { - "button-text": "Notifications", - "deleted-dossier": "Deleted dossier", - "label": "Benachrichtigungen", - "mark-all-as-read": "Alle als gelesen markieren", - "mark-as": "Mark as {type, select, read{read} unread{unread} other{}}" - }, "notifications-screen": { "category": { "email-notifications": "E-Mail Benachrichtigungen", @@ -1844,6 +1861,7 @@ "dossier": "Dossierbezogene Benachrichtigungen", "other": "Andere Benachrichtigungen" }, + "options-title": "Wählen Sie aus, in welcher Kategorie Sie benachrichtigt werden möchten", "options": { "ASSIGN_APPROVER": "Wenn ich einem Dokument als Genehmiger zugewiesen bin", "ASSIGN_REVIEWER": "Wenn ich einem Dokument als Überprüfer zugewiesen bin", @@ -1861,7 +1879,6 @@ "USER_PROMOTED_TO_APPROVER": "Wenn ich Genehmiger in einem Dossier werde", "USER_REMOVED_AS_DOSSIER_MEMBER": "Wenn ich die Dossier-Mitgliedschaft verliere" }, - "options-title": "Wählen Sie aus, in welcher Kategorie Sie benachrichtigt werden möchten", "schedule": { "daily": "Tägliche Zusammenfassung", "instant": "Sofortig", @@ -1869,6 +1886,13 @@ }, "title": "Benachrichtigungseinstellungen" }, + "notifications": { + "button-text": "Notifications", + "deleted-dossier": "Deleted dossier", + "label": "Benachrichtigungen", + "mark-all-as-read": "Alle als gelesen markieren", + "mark-as": "Mark as {type, select, read{read} unread{unread} other{}}" + }, "ocr": { "confirmation-dialog": { "cancel": "Cancel", @@ -1960,16 +1984,16 @@ "warnings-subtitle": "Do not show again options", "warnings-title": "Prompts and dialogs settings" }, - "processing": { - "basic": "Processing", - "ocr": "OCR" - }, "processing-status": { "ocr": "OCR", "pending": "Pending", "processed": "processed", "processing": "Processing" }, + "processing": { + "basic": "Processing", + "ocr": "OCR" + }, "readonly": "Lesemodus", "readonly-archived": "Read only (archived)", "redact-text": { @@ -2193,12 +2217,6 @@ "red-user-admin": "Benutzer-Admin", "regular": "Regulär" }, - "search": { - "active-dossiers": "ganze Plattform", - "all-dossiers": "all documents", - "placeholder": "Nach Dokumenten oder Dokumenteninhalt suchen", - "this-dossier": "in diesem Dossier" - }, "search-screen": { "cols": { "assignee": "Bevollmächtigter", @@ -2222,6 +2240,12 @@ "no-match": "Keine Dokumente entsprechen Ihren aktuellen Filtern.", "table-header": "{length} {length, plural, one{Suchergebnis} other{Suchergebnisse}}" }, + "search": { + "active-dossiers": "ganze Plattform", + "all-dossiers": "all documents", + "placeholder": "Nach Dokumenten oder Dokumenteninhalt suchen", + "this-dossier": "in diesem Dossier" + }, "seconds": "seconds", "size": "Size", "smtp-auth-config": { @@ -2473,4 +2497,4 @@ } }, "yesterday": "Gestern" -} \ No newline at end of file +} diff --git a/apps/red-ui/src/assets/i18n/redact/en.json b/apps/red-ui/src/assets/i18n/redact/en.json index 432c2b6b6..dc4bfcdd2 100644 --- a/apps/red-ui/src/assets/i18n/redact/en.json +++ b/apps/red-ui/src/assets/i18n/redact/en.json @@ -26,6 +26,11 @@ "title": "Add annotation" } }, + "add-clone-dossier-template": { + "save": "{type, select, clone{Clone} other{Save}}", + "save-and-edit": "{type, select, clone{Clone} other{Save}} and edit", + "title": "{type, select, clone{Clone {dossierTemplateName}} other{Create dossier template}}" + }, "add-dossier-dialog": { "actions": { "save": "Save", @@ -87,8 +92,7 @@ "valid-from": "Valid from", "valid-to": "Valid to" }, - "save": "Save dossier template", - "title": "{type, select, edit{Edit {name}} create{Create} clone{Clone} other{}} dossier template" + "save": "Save dossier template" }, "add-edit-dossier-attribute": { "error": { @@ -1019,6 +1023,7 @@ "entities": "{count} {count, plural, one{entity} other{entities}}", "entries": "{count} {count, plural, one{entry} other{entries}}", "modified-on": "Modified on: {date}", + "title": "Edit dossier template", "valid-from": "Valid from: {date}", "valid-to": "Valid to: {date}" }, @@ -2492,4 +2497,4 @@ } }, "yesterday": "Yesterday" -} \ No newline at end of file +} diff --git a/apps/red-ui/src/assets/i18n/scm/de.json b/apps/red-ui/src/assets/i18n/scm/de.json index 42aa67419..5619b23b8 100644 --- a/apps/red-ui/src/assets/i18n/scm/de.json +++ b/apps/red-ui/src/assets/i18n/scm/de.json @@ -26,6 +26,11 @@ "title": "Add annotation" } }, + "add-clone-dossier-template": { + "save": "", + "save-and-edit": "", + "title": "" + }, "add-dossier-dialog": { "actions": { "save": "Speichern", @@ -87,8 +92,7 @@ "valid-from": "Gültig ab", "valid-to": "Gültig bis" }, - "save": "Dossier-Vorlage speichern", - "title": "{type, select, edit{Dossier-Vorlage {name} bearbeiten} create{Dossier-Vorlage erstellen} clone{} other{}}" + "save": "Dossier-Vorlage speichern" }, "add-edit-dossier-attribute": { "error": { @@ -250,9 +254,6 @@ "watermarks": "Watermarks" }, "analysis-disabled": "Analysis disabled", - "annotation": { - "pending": "(Pending analysis)" - }, "annotation-actions": { "accept-recommendation": { "label": "Empfehlung annehmen" @@ -307,14 +308,14 @@ "error": "Rekategorisierung des Bildes gescheitert: {error}", "success": "Bild wurde einer neuen Kategorie zugeordnet." }, - "remove": { - "error": "Fehler beim Entfernen der Schwärzung: {error}", - "success": "Schwärzung entfernt!" - }, "remove-hint": { "error": "Failed to remove hint: {error}", "success": "Hint removed!" }, + "remove": { + "error": "Fehler beim Entfernen der Schwärzung: {error}", + "success": "Schwärzung entfernt!" + }, "undo": { "error": "Die Aktion konnte nicht rückgängig gemacht werden. Fehler: {error}", "success": "erfolgreich Rückgängig gemacht" @@ -327,15 +328,15 @@ "remove-highlights": { "label": "Remove selected earmarks" }, - "resize": { - "label": "Größe ändern" - }, "resize-accept": { "label": "Größe speichern" }, "resize-cancel": { "label": "Größenänderung abbrechen" }, + "resize": { + "label": "Größe ändern" + }, "see-references": { "label": "See references" }, @@ -367,6 +368,9 @@ "skipped": "Übersprungen", "text-highlight": "Earmark" }, + "annotation": { + "pending": "(Pending analysis)" + }, "archived-dossiers-listing": { "no-data": { "title": "No archived dossiers." @@ -572,18 +576,14 @@ "warning": "Achtung: Diese Aktion kann nicht rückgängig gemacht werden!" }, "confirmation-dialog": { - "approve-file": { - "question": "Dieses Dokument enthält ungesehene Änderungen. Möchten Sie es trotzdem genehmigen?", - "title": "Warnung!" - }, "approve-file-without-analysis": { "confirmationText": "Approve without analysis", "denyText": "Cancel", "question": "Analysis required to detect new components.", "title": "Warning!" }, - "approve-multiple-files": { - "question": "Mindestens eine der ausgewählten Dateien enthält ungesehene Änderungen. Möchten Sie sie trotzdem genehmigen?", + "approve-file": { + "question": "Dieses Dokument enthält ungesehene Änderungen. Möchten Sie es trotzdem genehmigen?", "title": "Warnung!" }, "approve-multiple-files-without-analysis": { @@ -592,6 +592,10 @@ "question": "Analysis required to detect new components for at least one file.", "title": "Warning" }, + "approve-multiple-files": { + "question": "Mindestens eine der ausgewählten Dateien enthält ungesehene Änderungen. Möchten Sie sie trotzdem genehmigen?", + "title": "Warnung!" + }, "assign-file-to-me": { "question": { "multiple": "Dieses Dokument wird gerade von einer anderen Person geprüft. Möchten Sie Reviewer werden und sich selbst dem Dokument zuweisen?", @@ -681,6 +685,25 @@ } }, "dev-mode": "DEV", + "dialog-defaults-form": { + "extra-option-label": "", + "hint": { + "add-dialog": "", + "remove-dialog": "", + "title": "" + }, + "recommendation": { + "remove-dialog": "", + "title": "" + }, + "redaction": { + "add-dialog": "", + "remove-dialog": "", + "title": "" + }, + "system-default": "", + "title": "" + }, "dictionary": "Wörterbuch", "dictionary-overview": { "compare": { @@ -936,13 +959,13 @@ "recent": "Neu ({hours} h)", "unassigned": "Niemandem zugewiesen" }, - "reanalyse": { - "action": "Datei analysieren" - }, "reanalyse-dossier": { "error": "Die Dateien konnten nicht für eine Reanalyse eingeplant werden. Bitte versuchen Sie es erneut.", "success": "Dateien für Reanalyse vorgesehen." }, + "reanalyse": { + "action": "Datei analysieren" + }, "start-auto-analysis": "Enable auto-analysis", "stop-auto-analysis": "Stop auto-analysis", "table-col-names": { @@ -1000,6 +1023,7 @@ "entities": "{count} {count, plural, one{entity} other{entities}}", "entries": "{count} {count, plural, one{entry} other{entries}}", "modified-on": "Modified on: {date}", + "title": "", "valid-from": "Valid from: {date}", "valid-to": "Valid to: {date}" }, @@ -1011,14 +1035,6 @@ "total-documents": "Anzahl der Dokumente", "total-people": "{count} {count, plural, one{user} other {users}}" }, - "dossier-templates": { - "label": "Dossier-Vorlagen", - "status": { - "active": "Active", - "inactive": "Inactive", - "incomplete": "Incomplete" - } - }, "dossier-templates-listing": { "action": { "clone": "Clone template", @@ -1054,6 +1070,14 @@ "title": "{length} dossier {length, plural, one{template} other{templates}}" } }, + "dossier-templates": { + "label": "Dossier-Vorlagen", + "status": { + "active": "Active", + "inactive": "Inactive", + "incomplete": "Incomplete" + } + }, "dossier-watermark-selector": { "heading": "Watermarks on documents", "no-watermark": "There is no watermark defined for the dossier template.
Contact your app admin to define one.", @@ -1249,15 +1273,6 @@ "title": "{length} {length, plural, one{entity} other{entities}}" } }, - "entity": { - "info": { - "actions": { - "revert": "Revert", - "save": "Save changes" - }, - "heading": "Edit entity" - } - }, "entity-rules-screen": { "error": { "generic": "Something went wrong... Entity rules update failed!" @@ -1272,19 +1287,28 @@ "warning-text": "Warning: experimental feature!", "warnings-found": "{warnings, plural, one{A warning} other{{warnings} warnings}} found in rules" }, + "entity": { + "info": { + "actions": { + "revert": "Revert", + "save": "Save changes" + }, + "heading": "Edit entity" + } + }, "error": { "deleted-entity": { "dossier": { "action": "Zurück zur Übersicht", "label": "Dieses Dossier wurde gelöscht!" }, - "file": { - "action": "Zurück zum Dossier", - "label": "Diese Datei wurde gelöscht!" - }, "file-dossier": { "action": "Zurück zur Übersicht", "label": "Das Dossier dieser Datei wurde gelöscht!" + }, + "file": { + "action": "Zurück zum Dossier", + "label": "Diese Datei wurde gelöscht!" } }, "file-preview": { @@ -1302,12 +1326,6 @@ }, "exact-date": "{day} {month} {year} um {hour}:{minute} Uhr", "file": "Datei", - "file-attribute": { - "update": { - "error": "Failed to update file attribute value!", - "success": "File attribute value has been updated successfully!" - } - }, "file-attribute-encoding-types": { "ascii": "ASCII", "iso": "ISO-8859-1", @@ -1318,6 +1336,12 @@ "number": "Nummer", "text": "Freier Text" }, + "file-attribute": { + "update": { + "error": "Failed to update file attribute value!", + "success": "File attribute value has been updated successfully!" + } + }, "file-attributes-configurations": { "cancel": "Cancel", "form": { @@ -1536,15 +1560,6 @@ "csv": "File attributes were imported successfully from uploaded CSV file." } }, - "filter": { - "analysis": "Analyse erforderlich", - "comment": "Kommentare", - "hint": "Nut Hinweise", - "image": "Bilder", - "none": "Keine Anmerkungen", - "redaction": "Geschwärzt", - "updated": "Aktualisiert" - }, "filter-menu": { "filter-options": "Filteroptionen", "filter-types": "Filter", @@ -1554,6 +1569,15 @@ "unseen-pages": "Nur Anmerkungen auf unsichtbaren Seiten", "with-comments": "Nur Anmerkungen mit Kommentaren" }, + "filter": { + "analysis": "Analyse erforderlich", + "comment": "Kommentare", + "hint": "Nut Hinweise", + "image": "Bilder", + "none": "Keine Anmerkungen", + "redaction": "Geschwärzt", + "updated": "Aktualisiert" + }, "filters": { "assigned-people": "Beauftragt", "documents-status": "Documents state", @@ -1824,13 +1848,6 @@ "user-promoted-to-approver": "{user} wurde im Dossier {dossierHref, select, null{{dossierName}} other{{dossierName}}} zum Genehmiger ernannt!", "user-removed-as-dossier-member": "{user} wurde als Mitglied von: {dossierHref, select, null{{dossierName}} other{{dossierName}}} entfernt!" }, - "notifications": { - "button-text": "Notifications", - "deleted-dossier": "Deleted dossier", - "label": "Benachrichtigungen", - "mark-all-as-read": "Alle als gelesen markieren", - "mark-as": "Mark as {type, select, read{read} unread{unread} other{}}" - }, "notifications-screen": { "category": { "email-notifications": "E-Mail Benachrichtigungen", @@ -1844,6 +1861,7 @@ "dossier": "Dossierbezogene Benachrichtigungen", "other": "Andere Benachrichtigungen" }, + "options-title": "Wählen Sie aus, in welcher Kategorie Sie benachrichtigt werden möchten", "options": { "ASSIGN_APPROVER": "Wenn ich einem Dokument als Genehmiger zugewiesen bin", "ASSIGN_REVIEWER": "Wenn ich einem Dokument als Überprüfer zugewiesen bin", @@ -1861,7 +1879,6 @@ "USER_PROMOTED_TO_APPROVER": "Wenn ich Genehmiger in einem Dossier werde", "USER_REMOVED_AS_DOSSIER_MEMBER": "Wenn ich die Dossier-Mitgliedschaft verliere" }, - "options-title": "Wählen Sie aus, in welcher Kategorie Sie benachrichtigt werden möchten", "schedule": { "daily": "Tägliche Zusammenfassung", "instant": "Sofortig", @@ -1869,6 +1886,13 @@ }, "title": "Benachrichtigungseinstellungen" }, + "notifications": { + "button-text": "Notifications", + "deleted-dossier": "Deleted dossier", + "label": "Benachrichtigungen", + "mark-all-as-read": "Alle als gelesen markieren", + "mark-as": "Mark as {type, select, read{read} unread{unread} other{}}" + }, "ocr": { "confirmation-dialog": { "cancel": "Cancel", @@ -1960,16 +1984,16 @@ "warnings-subtitle": "Do not show again options", "warnings-title": "Prompts and dialogs settings" }, - "processing": { - "basic": "Processing", - "ocr": "OCR" - }, "processing-status": { "ocr": "OCR", "pending": "Pending", "processed": "Processed", "processing": "Processing" }, + "processing": { + "basic": "Processing", + "ocr": "OCR" + }, "readonly": "Lesemodus", "readonly-archived": "Read only (archived)", "redact-text": { @@ -2193,12 +2217,6 @@ "red-user-admin": "Benutzer-Admin", "regular": "Regulär" }, - "search": { - "active-dossiers": "ganze Plattform", - "all-dossiers": "all documents", - "placeholder": "Nach Dokumenten oder Dokumenteninhalt suchen", - "this-dossier": "in diesem Dossier" - }, "search-screen": { "cols": { "assignee": "Bevollmächtigter", @@ -2222,6 +2240,12 @@ "no-match": "Keine Dokumente entsprechen Ihren aktuellen Filtern.", "table-header": "{length} search {length, plural, one{result} other{results}}" }, + "search": { + "active-dossiers": "ganze Plattform", + "all-dossiers": "all documents", + "placeholder": "Nach Dokumenten oder Dokumenteninhalt suchen", + "this-dossier": "in diesem Dossier" + }, "seconds": "seconds", "size": "Size", "smtp-auth-config": { @@ -2473,4 +2497,4 @@ } }, "yesterday": "Gestern" -} \ No newline at end of file +} diff --git a/apps/red-ui/src/assets/i18n/scm/en.json b/apps/red-ui/src/assets/i18n/scm/en.json index 35d3fb5d2..8a1bde077 100644 --- a/apps/red-ui/src/assets/i18n/scm/en.json +++ b/apps/red-ui/src/assets/i18n/scm/en.json @@ -26,6 +26,11 @@ "title": "Add annotation" } }, + "add-clone-dossier-template": { + "save": "{type, select, clone{Clone} other{Save}}", + "save-and-edit": "{type, select, clone{Clone} other{Save}} and edit", + "title": "{type, select, clone{Clone {dossierTemplateName}} other{Create dossier template}}" + }, "add-dossier-dialog": { "actions": { "save": "Save", @@ -87,8 +92,7 @@ "valid-from": "Valid from", "valid-to": "Valid to" }, - "save": "Save dossier template", - "title": "{type, select, edit{Edit {name}} create{Create} clone{Clone} other{}} dossier template" + "save": "Save dossier template" }, "add-edit-dossier-attribute": { "error": { @@ -1019,6 +1023,7 @@ "entities": "{count} {count, plural, one{entity} other{entities}}", "entries": "{count} {count, plural, one{entry} other{entries}}", "modified-on": "Modified on: {date}", + "title": "Edit dossier template", "valid-from": "Valid from: {date}", "valid-to": "Valid to: {date}" }, @@ -2492,4 +2497,4 @@ } }, "yesterday": "Yesterday" -} \ No newline at end of file +} diff --git a/libs/common-ui b/libs/common-ui index e737d134a..6f288516e 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit e737d134ad76d247570ed06e7bd21c4d4225c318 +Subproject commit 6f288516e3efa36ec9f1f9eb02d0374c988d3432 diff --git a/libs/red-domain/src/lib/dossier-templates/dossier-template.model.ts b/libs/red-domain/src/lib/dossier-templates/dossier-template.model.ts index 24403da76..b3e249e92 100644 --- a/libs/red-domain/src/lib/dossier-templates/dossier-template.model.ts +++ b/libs/red-domain/src/lib/dossier-templates/dossier-template.model.ts @@ -60,8 +60,4 @@ export class DossierTemplate implements IDossierTemplate, IListable { get routerLink(): string { return `/main/admin/dossier-templates/${this.dossierTemplateId}`; } - - get dossiersRouterLink(): string { - return `/main/${this.dossierTemplateId}/dossiers`; - } }